[
  {
    "path": ".gitignore",
    "content": "node_modules\n.env\nsecret.json\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/.babelrc",
    "content": "{\n  \"presets\": [\n    \"@babel/preset-env\",\n    [\"@babel/preset-react\", { \"runtime\": \"automatic\" }],\n    \"@babel/preset-typescript\"\n  ]\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/.editorconfig",
    "content": "root = true\n\n[*]\nindent_style = spaces\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/.eslintrc",
    "content": "{\n  \"env\": {\n    \"browser\": true,\n    \"es2020\": true,\n    \"jest\": true,\n    \"node\": true\n  },\n  \"settings\": {\n    \"react\": {\n      \"version\": \"detect\"\n    }\n  },\n  \"extends\": [\n    \"eslint:recommended\",\n    \"plugin:react/recommended\",\n    \"plugin:@typescript-eslint/eslint-recommended\",\n    \"plugin:@typescript-eslint/recommended\",\n    \"plugin:prettier/recommended\",\n    \"plugin:tailwindcss/recommended\"\n  ],\n  \"parser\": \"@typescript-eslint/parser\",\n  \"parserOptions\": {\n    \"ecmaFeatures\": {\n      \"jsx\": true\n    },\n    \"ecmaVersion\": 11,\n    \"sourceType\": \"module\"\n  },\n  \"plugins\": [\"react\", \"react-hooks\", \"@typescript-eslint\", \"tailwindcss\"],\n  \"rules\": {\n    \"react-hooks/rules-of-hooks\": \"error\",\n    \"react-hooks/exhaustive-deps\": \"warn\",\n    \"react/prop-types\": \"off\",\n    \"react/react-in-jsx-scope\": \"off\",\n    \"@typescript-eslint/explicit-module-boundary-types\": \"off\",\n    \"@typescript-eslint/no-non-null-assertion\": \"off\",\n    \"tailwindcss/classnames-order\": \"warn\",\n    \"tailwindcss/no-custom-classname\": \"warn\",\n    \"tailwindcss/no-contradicting-classname\": \"error\"\n  }\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/.gitignore",
    "content": "dist\ndist-ssr\n*.local\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# local env files\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# vercel\n.vercel\n.vscode\n\npackage-lock.json\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/.jest/setup.ts",
    "content": "import '@testing-library/jest-dom'\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/.prettierrc",
    "content": "{\n  \"trailingComma\": \"none\",\n  \"semi\": false,\n  \"singleQuote\": true\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/README.md",
    "content": "# Simple Storage dApp on Core\nDecentralized applications (dApps) use a blockchain or on-chain smart contracts to store and reference data, rather than relying on traditional centralized databases. A common, simple dApp structure generally consists of a React.js or Vue.js front-end using Web3.js or Ethers.js to interact with smart contracts deployed to an EVM-compatible blockchain.\n\n## What Are We Building\nIn this tutorial, we'll develop a simple dApp using React.js and Ethers.js that stores data in a smart contract on the Core blockchain and displays it to users. It also has the functionality to retrieve the stored number and display it to the user.\n\n## Learning Takeaways\nThis tutorial will help you gain knowledge on the following learning points:\n\n* MetaMask Wallet connectivity to Core Testnet;\n* Smart contract development and deployment on Core Testnet;\n* Front-end integration with the smart contract using Ethers.js library;\n* Read data from a smart contract;\n* Write data to a smart contract;\n\n## Software Prerequisites\n* [Git](https://git-scm.com/) v2.44.0\n* [Node.js](https://nodejs.org/en) v20.11.1\n* [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) v10.2.4\n* [Hardhat](https://hardhat.org/hardhat-runner/docs/getting-started#installation) v10.2.4\n* [MetaMask Web Wallet Extension](https://metamask.io/download/)\n\n## Setting up the development environment\n\n1. Create a new directory for the project and navigate into it\n\n```bash\nmkdir dapp-\ncd dapp-tutorial\n```\n2. Install [Hardhat](https://hardhat.org/) and [Waffle](https://getwaffle.io/)\n\n```bash\nnpm init --yes\nnpm install --save-dev hardhat\nnpm install --save-dev chai @nomiclabs/hardhat-waffle\n```\n3. Initialize Hardhat project by running the following command\n\n```bash\nnpx hardhat\n```\n![dapp-tutorial-1](https://github.com/coredao-org/dapp-tutorial/assets/35759187/60930a6b-6e7a-49fc-a748-d1fd20930837)\n\n:::note\nAs we will using Waffle for this project and make sure to select **No** for the option \"_Do you want to install this sample project's dependencies with npm (@nomicfoundation/hardhat-toolbox)? (Y/n)_\"\n:::\n\n4. Once this project is initialized, you'll find the following project structure:\n\n```bash\ndapp-tutorial.\n|   .gitignore\n|   hardhat-config.js   (HardHat configuration file.)\n|   package-lock.json\n|   package.json\n|   README.md\n| \n+---contracts (For Solidity Smart Contracts)\n|       Lock.sol\n|       \n+---ignition (Scripts in previous versions, contains config files that specify how smart contracts should be deployed)\n|   \\---modules\n|           Lock.js\n|                 \n+---node_modules\n|  \n+---test (For writing and Running Tests)\n|       Lock.js       \n|       \n```\n\n5. Install and configure MetaMask Chrome Extension to use with Core Testnet. Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config) for a detailed guide.\n\n6. Create a secret.json file in the root folder and store the private key of your MetaMask wallet in it. Refer [here](https://metamask.zendesk.com/hc/en-us/articles/360015290032-How-to-reveal-your-Secret-Recovery-Phrase) for details on how to get MetaMask account's private key.\n\n```json\n{\"PrivateKey\":\"you private key, do not leak this file, do keep it absolutely safe\"}\n```\n\n:::caution\nDo not forget to add this file to the `.gitignore` file in the root folder of your project so that you don't accidentally check your private keys/secret phrases into a public repository. Make sure you keep this file in an absolutely safe place!\n:::\n\n\n7. Copy the following into your `hardhat.config.js` file\n\n```js\n/**\n * @type import('hardhat/config').HardhatUserConfig\n */\n\n require('@nomiclabs/hardhat-ethers');\n require(\"@nomiclabs/hardhat-waffle\");\n\n const { PrivateKey } = require('./secret.json');\n\n module.exports = {\n    defaultNetwork: 'testnet',\n \n    networks: {\n       hardhat: {\n       },\n       testnet: {\n          url: 'https://rpc.test.btcs.network',\n          accounts: [PrivateKey],\n          chainId: 1115,\n       }\n    },\n    solidity: {\n       compilers: [\n         {\n            version: '0.8.9',\n            settings: {\n               evmVersion: 'paris',\n               optimizer: {\n                  enabled: true,\n                  runs: 200,\n               },\n            },\n         },\n       ],\n    },\n    paths: {\n       sources: './contracts',\n       cache: './cache',\n       artifacts: './artifacts',\n    },\n    mocha: {\n       timeout: 20000,\n    },\n };\n \n```\n\n## Writing Smart Contract\n\n1. Navigate to the `contracts` folder in the root directory of your project.\n2. Delete the `Lock.sol` file; create a new file `Storage.sol` and paste the following contents into it.\n\n```javascript\n// SPDX-License-Identifier: GPL-3.0\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @title Storage\n * @dev Store & retrieve value in a variable\n */\ncontract Storage {\n\n    uint256 number;\n\n    /**\n     * @dev Store value in variable\n     * @param num value to store\n     */\n    function store(uint256 num) public {\n        number = num;\n    }\n\n    /**\n     * @dev Return value \n     * @return value of 'number'\n     */\n    function retrieve() public view returns (uint256){\n        return number;\n    }\n}\n```\n### Explanation\nThe `Storage` contract is a simple example that demonstrates how to store and retrieve a value using a Solidity smart contract. It consists of a state variable to hold the value and two functions to update and read this value. The `store` function allows any user to set the value, while the `retrieve` function allows any user to read the current value. This contract can be useful for understanding the basics of state variables and function visibility in Solidity. This Solidity smart contract, named `Storage`, is a simple contract that allows storing and retrieving a single `uint256` value. Here’s a detailed breakdown of its components and functionality:\n\n#### Contract Components\n\n1. **State Variable**:\n   - `number`: A `uint256` variable that is used to store the value.\n\n#### Contract Functions\n\n1. **Store Function**:\n   - `store(uint256 num) public`: A function that allows users to store a new value in the `number` variable. This function takes a single parameter, `num`, which is the value to be stored. The function updates the `number` variable with the provided value.\n   - **Visibility**: The function is marked as `public`, meaning it can be called by any user or contract.\n   - **State Change**: This function modifies the state of the contract by updating the `number` variable.\n\n2. **Retrieve Function**:\n   - `retrieve() public view returns (uint256)`: A function that returns the current value stored in the `number` variable. This function does not take any parameters and returns a `uint256` value.\n   - **Visibility**: The function is marked as `public`, meaning it can be called by any user or contract.\n   - **View**: The function is marked as `view`, indicating that it does not modify the state of the contract. It only reads the state.\n   - **Return Value**: The function returns the value of the `number` variable.\n\n\n## Compiling Smart Contract\n\n1. To compile the `Storage` smart contract defined in the `Storage.sol`, from the root directory run the following command\n\n```bash\nnpx hardhat compile\n```\n\n## Deploy and Interact with Smart Contract\n\n1. Before deploying your smart contract on the Core Chain, it is best adviced to first run a series of tests making sure that the smart contract is working as desired. Refer to the detailed guide [here](https://docs.coredao.org/docs/Dev-Guide/hardhat#contract-testing) for more details.\n\n2. Create a `scripts` folder in the root directory of your project. Inside this folder, create a file `deploy-and-call.js`; paste the following script into it.\n\n```javascript\nconst hre = require(\"hardhat\");\n\nasync function main() {\n  const Storage = await hre.ethers.getContractFactory(\"Storage\");\n  const storage = await Storage.deploy();\n\n  await storage.deployed();\n  console.log(\"Storage contract deployed to:\", storage.address);\n\n  console.log(\"call retrieve():\", await storage.retrieve())\n\n  console.log(\"call store(), set value to 100\")\n  const tx = await storage.store(100)\n  await tx.wait()\n  \n  console.log(\"call retrieve() again:\", await storage.retrieve())\n}\n\n// We recommend this pattern to be able to use async/await everywhere\n// and properly handle errors.\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n```\n3. Make sure your MetaMask wallet has tCORE test tokens for the Core Testnet. Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-faucet) for details on how to get tCORE tokens from Core Faucet. \n\n4. Run the following command from the root directory of your project, to deploy your smart contract on the Core Chain.\n\n```bash\nnpx hardhat run scripts/deploy-and-call.js\n```\n\nIf succesfully deployed, you will get the following output\n\n```bash\n>npx hardhat run scripts/deploy-and-call.js\nStorage contract deployed to: 0x9e1326fB351FbC4efaa88F0040708F0C0d315109\ncall retrieve(): BigNumber { value: \"0\" }\ncall store(), set value to 100\ncall retrieve() again: BigNumber { value: \"100\" }\n```\n5. Make sure to save the Address of Storage Contract at which is deployed, as obtained above, this will be used for interacting with smart contract from the dApp's frontend.\n\n🎉 Congratulations! You have successfully learned how to create, compile, and deploy a smart contract on the Core Chain Testnet using the Hardhat. \n\n## Interacting with Smart Contract through Frontend\n\n⚡️ Let's create a frontend interface for interacting with the smart contract.\n\n### Setting up Frontend\n\n1. Clone the `dApp-tutorial` repository from GitHub using the following command.\n\n```bash\ngit clone https://github.com/coredao-org/dapp-tutorial.git\n```\n\n2. Navigate into the folder `01-Basic Full Stack Dapp on Core` in the cloned `dapp-tutorial` repo.\n\n```bash\ncd dapp-tutorial\ncd \"01-Basic Full Stack Dapp on Core\"\n```\n\n3. Install all the dependencies, i.e., node modules.\n\n```bash\nnpm install\n```\n\n4. To test if things are working fine, run the application by using the following command. This will serve applciation with hot reload feature at [http://localhost:5173](http://localhost:5173/)\n\n```bash\nnpm run dev\n```\n\n### Key Implementations\nThe application's key blockchain logic is implemented in [App.tsx](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/App.tsx)\n\n\n1. [App.tsx (Wallet)](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/App.tsx#L20): logic for connecting the application to MetaMask wallet.\n2. [App.tsx (Store)](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/App.tsx#L58): logic to write data to the Storage smart contract.\n3. [App.tsx (Retrieve)](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/App.tsx#L87): logic to read data from the Storage smart contract.\n\n\n### Adding Smart Contract Details \n1. Copy the `Storage.sol` file from the `contracts` folder in the root of oyur project and paste it into the `frontend/src/contracts` folder. \n2. Copy the address of the Storage smart contract as obtained in the section [above](#deploy-and-interact-with-smart-contract).\n3. Paste this into [Line 10 of App.tsx](https://github.com/coredao-org/dapp-tutorial/blob/master/01-Simple%20Storage%20Full%20Stack%20Dapp/src/components/App.tsx#L10). \n\n```javascript\nconst contractAddress = '0x48F68BF4A1b1fE6589B9D0a5ad0dF0520582edA2'\n```\n\n4. Additionally, we'll need the ABI metadata to interact with the contract from our dApp. From the `artifacts/contracts` folder in the root of your project. Copy the `Storage.json` file and save it to the `/src/contracts` folder.\n\n## Test Locally Using MetaMask\n\n1. Run the command `npm run dev` from teh root of the project to start the application. This will serve applciation with at [http://localhost:5173](http://localhost:5173/)\n\n2. Make sure that your MetaMask wallet is correctly installed and switched to Core Testnet as described in our [Core Testnet user guide](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config). You'll also need to connect your MetaMask wallet to the local site.\n\n![dapp-1](https://github.com/coredao-org/dapp-tutorial/assets/35759187/1c493569-1899-4cfe-a051-02579549f916)\n\n3. Enter a number in the input field and click the **store** button to save it to the contract. A write action on the smart contract invokes the MetaMask wallet. Click the **Confirm** button to sign the transaction and wait for confirmation on the blockchain.\n\n![dapp-2](https://github.com/coredao-org/dapp-tutorial/assets/35759187/21aeeb00-a2b7-402d-9909-a2d3cdb36a5d)\n\n4. After the transaction is confirmed on the blockchain, click the **retrieve** button to read the value from the smart contract. You will notice the value has been updated.\n\n![dapp-3](https://github.com/coredao-org/dapp-tutorial/assets/35759187/f284a64d-16dd-44ef-9f24-cd9175465e0a)\n\n🎉 Congratulations! You've just interacted with your newly-deployed contract using your dApp's front end! You can build on the codebase by deploying and interacting with different contracts, and by adding new UI components to the website for your users.\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/src/public/favicon.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Core DAO Dapp tutorial</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/index.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/jest.config.js",
    "content": "module.exports = {\n  testEnvironment: 'jsdom',\n  testPathIgnorePatterns: ['/node_modules/'],\n  collectCoverage: true,\n  collectCoverageFrom: ['src/**/*.ts(x)'],\n  setupFilesAfterEnv: ['<rootDir>/.jest/setup.ts'],\n  modulePaths: ['<rootDir>/src/', '<rootDir>/.jest']\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/package.json",
    "content": "{\n  \"name\": \"Tutorial\",\n  \"description\": \"This tutorial provides a step-by-step guide on how to store and retrieve data from the Core blockchain.\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"tsc && vite build\",\n    \"serve\": \"vite preview\",\n    \"test\": \"jest\",\n    \"lint\": \"eslint src --max-warnings=0\",\n    \"typecheck\": \"tsc --project tsconfig.json --noEmit\"\n  },\n  \"dependencies\": {\n    \"ethers\": \"5.6.9\",\n    \"react\": \"18.2.0\",\n    \"react-dom\": \"18.2.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"7.18.6\",\n    \"@babel/preset-env\": \"7.18.6\",\n    \"@babel/preset-react\": \"7.18.6\",\n    \"@babel/preset-typescript\": \"7.18.6\",\n    \"@testing-library/jest-dom\": \"5.16.4\",\n    \"@testing-library/react\": \"13.3.0\",\n    \"@types/jest\": \"28.1.6\",\n    \"@types/node\": \"18.0.5\",\n    \"@typescript-eslint/eslint-plugin\": \"5.30.6\",\n    \"@typescript-eslint/parser\": \"5.30.6\",\n    \"@vitejs/plugin-react\": \"2.0.0\",\n    \"autoprefixer\": \"10.4.7\",\n    \"babel-jest\": \"28.1.3\",\n    \"eslint\": \"8.20.0\",\n    \"eslint-config-prettier\": \"8.5.0\",\n    \"eslint-plugin-prettier\": \"4.2.1\",\n    \"eslint-plugin-react\": \"7.30.1\",\n    \"eslint-plugin-react-hooks\": \"4.6.0\",\n    \"eslint-plugin-tailwindcss\": \"3.6.0\",\n    \"jest\": \"28.1.3\",\n    \"jest-environment-jsdom\": \"28.1.3\",\n    \"postcss\": \"8.4.14\",\n    \"prettier\": \"2.7.1\",\n    \"tailwindcss\": \"3.1.6\",\n    \"typescript\": \"4.7.4\",\n    \"vite\": \"3.0.0\",\n    \"vite-tsconfig-paths\": \"3.5.0\"\n  }\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {}\n  }\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/src/components/App.tsx",
    "content": "/* eslint-disable tailwindcss/no-custom-classname */\n/* eslint-disable tailwindcss/classnames-order */\n/* eslint-disable react/no-unescaped-entities */\n\nimport { useEffect, useState } from 'react'\nimport { ethers } from 'ethers'\nimport storage from '../contract/Storage.json'\n\n// Contract information\nconst contractAddress = '0x9e1326fB351FbC4efaa88F0040708F0C0d315109'\nconst abi = storage.abi\n\n// Constants\nconst CORESCAN_BASE_URL = 'https://scan.test2.btcs.network/address/'\n\nfunction App() {\n  const [currentAccount, setCurrentAccount] = useState(null)\n  const [storeNumber, setStoreNumber] = useState('')\n  const [retrievedNumber, setRetrievedNumber] = useState('')\n  const checkWalletIsConnected = async () => {\n    const { ethereum } = window\n\n    if (!ethereum) {\n      console.log('Make sure you have Metamask installed!')\n      return\n    } else {\n      console.log(\"Wallet exists! We're ready to go!\")\n    }\n\n    const accounts = await ethereum.request({ method: 'eth_accounts' })\n\n    if (accounts.length !== 0) {\n      const account = accounts[0]\n      console.log('Found an authorized account: ', account)\n      setCurrentAccount(account)\n    } else {\n      console.log('No authorized account found')\n    }\n  }\n\n  const connectWalletHandler = async () => {\n    const { ethereum } = window\n\n    if (!ethereum) {\n      alert('Please install Metamask!')\n    }\n\n    try {\n      const accounts = await ethereum.request({ method: 'eth_requestAccounts' })\n      console.log(accounts[0])\n      console.log('Found an account! Address: ', accounts[0])\n      setCurrentAccount(accounts[0])\n    } catch (err) {\n      console.log(err)\n    }\n  }\n\n  const store = async () => {\n    try {\n      const { ethereum } = window\n\n      if (ethereum) {\n        const provider = new ethers.providers.Web3Provider(ethereum)\n        const signer = provider.getSigner()\n        const storageContract = new ethers.Contract(\n          contractAddress,\n          abi,\n          signer\n        )\n\n        console.log('Write to contract')\n        const tx = await storageContract.store(storeNumber)\n\n        console.log('Wait for the transaction to be confirmed')\n        await tx.wait()\n\n        console.log(\n          `Transaction confirmed: https://scan.test2.btcs.network/tx/${tx.hash}`\n        )\n      } else {\n        console.log('Ethereum object does not exist')\n      }\n    } catch (err) {\n      console.log(err)\n    }\n  }\n  const retrieve = async () => {\n    try {\n      const { ethereum } = window\n\n      if (!ethereum) {\n        console.log('Ethereum object does not exist')\n        alert('Please install MetaMask!')\n        return\n      }\n\n      // Check if wallet is connected\n      if (!currentAccount) {\n        alert('Please connect your wallet first!')\n        return\n      }\n\n      const provider = new ethers.providers.Web3Provider(ethereum)\n      \n      // Check if we're on the correct network\n      const network = await provider.getNetwork()\n      console.log('Connected to network:', network)\n      \n      // Verify we're on Core Testnet (Chain ID: 1115)\n      if (network.chainId !== 1114) {\n        alert('Please switch to Core Testnet in MetaMask!')\n        return\n      }\n\n      // Check if contract exists at the address\n      const code = await provider.getCode(contractAddress)\n      if (code === '0x') {\n        throw new Error(`No contract found at address ${contractAddress}`)\n      }\n\n      // For view functions, use provider instead of signer\n      const storageContract = new ethers.Contract(\n        contractAddress,\n        abi,\n        provider\n      )\n\n      console.log('Reading from contract...')\n      setRetrievedNumber('Loading...')\n      \n      const res = await storageContract.retrieve()\n      const retrievedValue = res.toString()\n      \n      console.log('Retrieved value:', retrievedValue)\n      setRetrievedNumber(retrievedValue)\n      \n    } catch (err) {\n      console.error('Error retrieving data:', err)\n      setRetrievedNumber('Error')\n      \n      if ((err as Error).message.includes('No contract found')) {\n        alert('Contract not found! Please check the contract address.')\n      } else if ((err as Error).message.includes('network')) {\n        alert('Network error! Please check your connection.')\n      } else {\n        alert(`Error: ${(err as Error).message}`)\n      }\n    }\n  }\n\n  const connectWalletButton = () => {\n    return (\n      <button\n        onClick={connectWalletHandler}\n        className=\"btn-primary w-40 rounded mt-10\"\n      >\n        Connect Wallet\n      </button>\n    )\n  }\n\n  const storageButton = () => {\n    return (\n      <div>\n        <p className=\"text-xl text-gray-400\">\n          Click \"write\" or \"read\" to call the smart contract\n        </p>\n        <div className=\"mt-8 inline-block text-left\">\n          <div className=\"text-left\">\n            <button onClick={store} className=\"btn-primary w-40 rounded-r-none\">\n              Write number\n            </button>\n            <input\n              value={storeNumber}\n              onChange={(e) => setStoreNumber(e.target.value)}\n              className=\"rounded-l-none border-2 border-solid border-orange-500 caret-orange-500 focus:caret-indigo-500 py-1 px-2 h-10\"\n            />\n          </div>\n          <div>\n            <button\n              onClick={retrieve}\n              className=\"btn-primary w-40 mt-8 w-40 rounded-r-none\"\n            >\n              Read number\n            </button>\n            <input\n              placeholder=\"Retrieved number\"\n              disabled\n              value={retrievedNumber}\n              className=\"text-center rounded-l-none border-2 border-solid border-disabled-500 caret-orange-500 focus:caret-indigo-500 py-1 px-2 h-10\"\n            />\n          </div>\n        </div>\n        <div className=\"mt-8 text-center\">\n          <span className=\"text-mm\">Contract address:</span>\n          <a\n            target=\"_blank\"\n            className=\"ml-2 text-mm  text-orange-400 hover:text-orange-600\"\n            href={CORESCAN_BASE_URL.concat(contractAddress)}\n            rel=\"noreferrer\"\n          >\n            {contractAddress}\n          </a>\n        </div>\n      </div>\n    )\n  }\n\n  useEffect(() => {\n    checkWalletIsConnected()\n  }, [])\n\n  return (\n    <div className=\"bg-white\">\n      <div className=\"mx-auto max-w-screen-xl py-16 px-4 sm:py-24 sm:px-6 lg:px-8\">\n        <div className=\"text-center\">\n          <div className=\"mb-12\">\n            <div className=\"flex items-center justify-center\">\n              <div className=\"flex items-center justify-center px-2\">\n                <img className=\"w-12 mx-1\" src=\"src/public/logo.png\" />\n                <p className=\"my-3 mx-1 text-4xl font-bold text-gray-900 sm:text-5xl sm:tracking-tight lg:text-6xl\">\n                  Core\n                </p>\n              </div>\n              <p className=\"my-3 text-4xl font-bold text-gray-900 sm:text-5xl sm:tracking-tight lg:text-6xl\">\n                Dapp Starter\n              </p>\n            </div>\n          </div>\n          {currentAccount ? storageButton() : connectWalletButton()}\n        </div>\n      </div>\n      <div className=\"mt-8 text-center\">\n        <div>\n          <span className=\"text-mm\">Fund your account:</span>\n          <a\n            target=\"_blank\"\n            className=\"ml-2 text-mm  text-orange-400 hover:text-orange-600\"\n            href=\"https://scan.test2.btcs.network/faucet\"\n            rel=\"noreferrer\"\n          >\n            tCORE faucet\n          </a>\n        </div>\n        <div>\n          <span className=\"text-mm\">How to connect</span>\n          <a\n            target=\"_blank\"\n            className=\"ml-2 text-mm  text-orange-400 hover:text-orange-600\"\n            href=\"https://docs.coredao.org/docs/Dev-Guide/core-wallet-config\"\n            rel=\"noreferrer\"\n          >\n            MetaMask to Core Testnet\n          </a>\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default App\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/src/contract/Storage.json",
    "content": "{\n\t\"abi\": [\n\t\t{\n\t\t\t\"inputs\": [],\n\t\t\t\"name\": \"retrieve\",\n\t\t\t\"outputs\": [\n\t\t\t\t{\n\t\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\t\"name\": \"\",\n\t\t\t\t\t\"type\": \"uint256\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"stateMutability\": \"view\",\n\t\t\t\"type\": \"function\"\n\t\t},\n\t\t{\n\t\t\t\"inputs\": [\n\t\t\t\t{\n\t\t\t\t\t\"internalType\": \"uint256\",\n\t\t\t\t\t\"name\": \"num\",\n\t\t\t\t\t\"type\": \"uint256\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"name\": \"store\",\n\t\t\t\"outputs\": [],\n\t\t\t\"stateMutability\": \"nonpayable\",\n\t\t\t\"type\": \"function\"\n\t\t}\n\t]\n}"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/src/contract/Storage.sol",
    "content": "// SPDX-License-Identifier: GPL-3.0\n\npragma solidity ^0.8.7;\n\n/**\n * @title Storage\n * @dev Store & retrieve value in a variable\n * @custom:dev-run-script ./scripts/deploy_with_ethers.ts\n */\ncontract Storage {\n\n    uint256 number;\n\n    /**\n     * @dev Store value in variable\n     * @param num value to store\n     */\n    function store(uint256 num) public {\n        number = num;\n    }\n\n    /**\n     * @dev Return value \n     * @return value of 'number'\n     */\n    function retrieve() public view returns (uint256){\n        return number;\n    }\n}"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/src/index.tsx",
    "content": "import { createRoot } from 'react-dom/client'\nimport 'tailwindcss/tailwind.css'\nimport './style/index.css'\nimport App from 'components/App'\n\nconst container = document.getElementById('root') as HTMLDivElement\nconst root = createRoot(container)\n\nroot.render(<App />)\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/src/style/index.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer components {\n\t:root{\n\n\t}\n  .btn-primary {\n    @apply py-2 px-4 bg-orange-500 text-white font-semibold rounded-lg shadow-md hover:bg-orange-700 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75;\n  }\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/src/utils/index.ts",
    "content": "export function classNames(...classes: unknown[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/src/vite-env.d.ts",
    "content": "/* eslint-disable @typescript-eslint/no-explicit-any */\n/// <reference types=\"vite/client\" />\n\n/// <reference types=\"react-scripts\" />\ninterface Window {\n  ethereum: any\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\n\nmodule.exports = {\n  content: ['./src/**/*.{js,ts,jsx,tsx}'],\n  theme: {\n    extend: {},\n\n  },\n  plugins: []\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \"./src\",\n    \"target\": \"esnext\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\"\n  },\n  \"include\": [\"src\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "01-Simple Storage Full Stack Dapp/vite.config.ts",
    "content": "import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport tsconfigPaths from 'vite-tsconfig-paths'\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [react(), tsconfigPaths()]\n})\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/.gitignore",
    "content": "node_modules\n.env\nsecret.json\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n\n\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/README.md",
    "content": "# Building a Staking Dapp on Core \n\n## What are we building\nWelcome to this tutorial on building a simple staking dApp on the Core blockchain. In this guide, we'll walk through the process of creating a basic staking dApp that allows users to stake, unstake, and claim rewards. By the end of this tutorial, you'll have a functional dApp that interacts with smart contracts on the Core Testnet. \nIn this staking dapp, 2 custom ERC20 tokens are used namely, `Staking Token - STK` and `Reward Token - RTK`. While, `STK` is used for staking, the `RTK` token is used for rewarding the users for staking their `STK` tokens.\n\n## Learning Takeaways\n* Smart Contract Development and deployment\n* Building a frontend for integration with smart contracts\n* Using Ethers.js library for communicating with smart contracts\n* Integrating Metamask for secure user transactions and interactions\n* Read and Write data to/from smart contracts\n\n## Software Prerequisites \n* [Git](https://git-scm.com/) v2.44.0\n* [Node.js](https://nodejs.org/en) v20.11.1\n* [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) v10.2.4\n* [Hardhat](https://hardhat.org/hardhat-runner/docs/getting-started#installation) v2.22.6\n* [MetaMask Web Wallet Extension](https://metamask.io/download/)Git v2.44.0\n* **Core Testnet Configuration:** Configure MetaMask to connect to the Core Testnet. Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config#adding-core-testnet-to-metamask) for more details.\n    * **Network Name:** Core Testnet\n    * **New RPC URL:** https://rpc.test.btcs.network\n    * **Chain ID:** 1115\n    * **Currency Symbol:** CORE\n* **Core Faucet:** To get test CORE tokens for transactions, visit the [Core Faucet](https://scan.test.btcs.network/faucet), refer [here]\n(https://docs.coredao.org/docs/Dev-Guide/core-faucet) for more details.\n\n## Setting up Dev Environment\n\n### 1. Initialize the Project\n\n```\nmkdir staking-dapp\ncd staking-dapp\nnpm init -y\nnpm install --save-dev hardhat\nnpx hardhat init \n```\n![img](./assets/hardhat-init.png)\n\n### 2. Install and Configure MetaMask \n* Install and configure MetaMask Chrome Extension to use with Core Testnet. \n* Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config) for a detailed guide.\n\n### 3. Create a Secret File\n* Create a `secret.json` file in the root folder and store the private key of your MetaMask wallet in it. \n* Refer [here](https://metamask.zendesk.com/hc/en-us/articles/360015290032-How-to-reveal-your-Secret-Recovery-Phrase) for details on how to get MetaMask account's private key.\n\n```json\n{\"PrivateKey\":\"you private key, do not leak this file, do keep it absolutely safe\"}\n```\n\n> _Do not forget to add this file to the `.gitignore` file in the root folder of your project so that you don't accidentally check your private keys/secret phrases into a public repository. Make sure you keep this file in an absolutely safe place!_\n\n\n### 4. Update .gitignore \n* Update your .gitignore file to ensure that your secret.json file and other sensitive files are not committed to version control.\n* Make sure to add `secret.json` to the `.gitignore` file. \n\n```\nnode_modules\n.env\nsecret.json\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n```\n\n### 5. Update Hardhat.config \n\nReplace the contents of `hardhat.config.js` with the following configuration. Ensure that the network settings are configured correctly for Core Testnet.\n\n```\n/**\n * @type import('hardhat/config').HardhatUserConfig\n */\n\nrequire('@nomiclabs/hardhat-ethers');\nrequire(\"@nomiclabs/hardhat-waffle\");\n\nconst { PrivateKey } = require('./secret.json');\n\nmodule.exports = {\n   defaultNetwork: 'core_testnet',\n\n   networks: {\n      hardhat: {\n      },\n      core_testnet: {\n         url: 'https://rpc.test2.btcs.network',\n         accounts: [PRIVATE_KEY],\n         chainId: 1115,\n      }\n   },\n   solidity: {\n      compilers: [\n        {\n           version: '0.8.24',\n           settings: {\n            evmVersion: 'paris',\n            optimizer: {\n                 enabled: true,\n                 runs: 200,\n              },\n           },\n        },\n      ],\n   },\n   paths: {\n      sources: './contracts',\n      cache: './cache',\n      artifacts: './artifacts',\n   },\n   mocha: {\n      timeout: 20000,\n   },\n};\n```\n\n## Writing Smart Contracts\nIn the `contracts` folder, create the following smart contracts.\n\n### Staking Token Contract\n* For this dapp, we create a custom ERC20 token, named as `Staking Token - STK`. Users will stake their `STK` tokens to earn rewards.\n* Create a `StakingToken.sol` file and udpate its contents with the following.\n\n```js\n// SPDX-License-Identifier: MIT\n// Compatible with OpenZeppelin Contracts ^5.0.0\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\";\n\ncontract StakingToken is ERC20, Ownable, ERC20Permit {\n    constructor(string memory name, string memory symbol)\n        ERC20(name, symbol)\n        Ownable(msg.sender)\n        ERC20Permit(name)\n    {}\n\n    function mint(address to, uint256 amount) public {\n        require(amount <= 100 * 10 ** 18, \"amount must be less than 100\");\n        _mint(to, amount);\n    }\n}\n```\n\n### Reward Token Contract\n* For this dapp, we create a custom ERC20 token, named as `Reward Token - RTK`. Users will earn rewards as `RTK` tokens for staking their `STK` tokens.\n* Create a `RewardToken.sol` file and udpate its contents with the following.\n\n```js\n// SPDX-License-Identifier: MIT\n// Compatible with OpenZeppelin Contracts ^5.0.0\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\";\n\ncontract RewardToken is ERC20, Ownable, ERC20Permit {\n    constructor(string memory name, string memory symbol)\n        ERC20(name, symbol)\n        Ownable(msg.sender)\n        ERC20Permit(name)\n    {}\n\n    function mint(address to, uint256 amount) public {\n        _mint(to, amount);\n    }\n}\n```\n\n### Staking Dapp Contract \n* Create a `StakingDapp.sol` file and udpate its contents with the following.\n\n```js \n// SPDX-License-Identifier: MIT\npragma solidity 0.8.24;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\ninterface IRewardToken is IERC20 {\n    function mint(address to, uint256 amount) external;\n}\n\ncontract StakingDapp is Ownable {\n    using SafeERC20 for IERC20;\n\n    IERC20 public stakingToken;\n    IRewardToken public rewardToken;\n\n    struct Stake {\n        uint256 amount;\n        uint256 lastRewardTime; // Track the last time rewards were calculated\n    }\n\n    mapping(address => Stake) public stakes;\n    mapping(address => uint256) public rewardBalance;\n\n    uint256 public constant REWARD_AMOUNT = 5; // Reward tokens per interval\n    uint256 public constant REWARD_INTERVAL = 10; // 10 seconds per reward interval\n\n    event Staked(address indexed user, uint256 amount);\n    event Unstaked(address indexed user, uint256 amount);\n    event RewardClaimed(address indexed user, uint256 amount);\n\n    constructor(address _stakingToken, address _rewardToken) Ownable(msg.sender) {\n        require(_stakingToken != address(0) && _rewardToken != address(0), \"Invalid token addresses\");\n        stakingToken = IERC20(_stakingToken);\n        rewardToken = IRewardToken(_rewardToken);\n    }\n\n    function getStakedAmount(address user) external view returns (uint256) {\n        return stakes[user].amount;\n    }\n\n\n    function stake(uint256 amount) external {\n        require(amount > 0, \"Amount must be greater than 0\");\n        \n        if (stakes[msg.sender].amount > 0) {\n            // Calculate and update reward balance before changing the stake\n            uint256 pendingReward = calculateReward(msg.sender);\n            rewardBalance[msg.sender] += pendingReward;\n        }\n        \n        stakingToken.safeTransferFrom(msg.sender, address(this), amount);\n        \n        // Update the stake amount and last reward time\n        stakes[msg.sender].amount += amount;\n        stakes[msg.sender].lastRewardTime = block.timestamp;\n        \n        emit Staked(msg.sender, amount);\n    }\n\n    function unstake(uint256 amount) external {\n        require(stakes[msg.sender].amount >= amount, \"Insufficient balance\");\n        \n        uint256 pendingReward = calculateReward(msg.sender);\n        rewardBalance[msg.sender] += pendingReward;\n\n        // Update the stake amount and last reward time\n        stakes[msg.sender].amount -= amount;\n        stakes[msg.sender].lastRewardTime = block.timestamp;\n        \n        stakingToken.safeTransfer(msg.sender, amount);\n        \n        emit Unstaked(msg.sender, amount);\n    }\n\n    function claimReward() external {\n        uint256 reward = calculateReward(msg.sender) + rewardBalance[msg.sender];\n        require(reward > 0, \"No reward available\");\n\n        // Reset reward data\n        rewardBalance[msg.sender] = 0;\n        stakes[msg.sender].lastRewardTime = block.timestamp;\n        \n        // Mint reward tokens\n        rewardToken.mint(msg.sender, reward);\n        \n        emit RewardClaimed(msg.sender, reward);\n    }\n\n    function calculateReward(address user) internal view returns (uint256) {\n        Stake memory userStake = stakes[user];\n        if (userStake.amount == 0) {\n            return 0;\n        }\n\n        uint256 currentTime = block.timestamp;\n        uint256 timeSinceLastReward = currentTime - userStake.lastRewardTime;\n        uint256 intervalsPassed = timeSinceLastReward / REWARD_INTERVAL;\n        // Calculate reward based on intervals passed and staked amount\n        return intervalsPassed * REWARD_AMOUNT * userStake.amount; // 1e18; // Assumes REWARD_AMOUNT and staked amount are in the same decimal place\n    }\n    function getRewardAmount(address user) external view returns (uint256) {\n        uint256 reward = calculateReward(user);\n        return reward;\n    }\n\n}\n```\n#### Explanation\nThe StakingDapp contract is a basic implementation of a staking mechanism in Solidity. It allows users to stake an ERC20 token (stakingToken), earn rewards in another ERC20 token (rewardToken), and claim those rewards.\n\n##### State Variables\n* **stakingToken:** The ERC-20 token that users will stake.\n* **rewardToken:** The ERC-20 token used to distribute rewards.\n* **stakes:** A mapping from user addresses to their staking details, including the amount staked and the last time rewards were calculated.\n* **rewardBalance:** A mapping to keep track of the reward balance for each user that they have accumulated but not yet claimed.\n* **REWARD_AMOUNT:** The amount of reward tokens distributed per reward interval.\n* **REWARD_INTERVAL:** The time interval (in seconds) between reward distributions.\n\n##### Functions\n1. **getStakedAmount(address user)**: Returns the amount of STK tokens staked by a user.\n\n2. **stake(uint256 amount)**: Allows users to stake a specified amount of staking tokens.\n    * Updates the user's reward balance before modifying the stake.\n    * Transfers the tokens from the user to the contract.\n    * Updates the staking details and the last reward calculation time.\n    * Emits the Staked event.\n\n3. **unstake(uint256 amount)**: Allows users to unstake a specified amount of stakingToken.\n    * Ensures the user has sufficient staked tokens.\n    * Updates the reward balance before modifying the stake.\n    * Transfers the STK tokens back to the user.\n    * Updates the staking details and the last reward calculation time.\n    * Emits the Unstaked event.\n\n4. **claimReward()**: Allows users to claim their accumulated rewards.\n    * Calculates the total reward available for the user.\n    * Mints the reward tokens and transfers them to the user.\n    * Resets the user's reward balance.\n    * Updates the last reward calculation time.\n    * Emits the RewardClaimed event.\n\n5. **calculateReward(address user)**: Calculates the reward amount for a user based on the time elapsed since the last reward calculation and the amount staked.\n    * Uses the REWARD_AMOUNT and REWARD_INTERVAL to compute how many reward intervals have passed.\n    * Calculates the total reward based on the number of intervals and the amount staked.\n    * Visibility: Internal, used by other functions within the contract.\n\n6. **getRewardAmount(address user)**: Allows anyone to query the amount of reward available for a specific user.\n\n## Compile and Deploy Smart Contracts\n\n### Compiling Smart Contracts\nTo compile the smart contracts, run the command `npx hardhat compile`\n\n### Deploying Smart Contracts\n* Create a `scritps` folder in the root of your project.\n* Create a file `deploy.js` in the `scripts` folder.\n* Update the contents of the `deploy.js` file with the following:\n\n```js\nconst { ethers } = require(\"hardhat\");\n\nasync function main() {\n    const [deployer] = await ethers.getSigners();\n\n    console.log(\"Deploying contracts with the account:\", deployer.address);\n\n    const StakingToken = await ethers.getContractFactory(\"StakingToken\");\n    const stakingToken = await StakingToken.deploy(\"Staking Token\", \"STK\");\n\n    const RewardToken = await ethers.getContractFactory(\"RewardToken\");\n    const rewardToken = await RewardToken.deploy(\"Reward Token\", \"RTK\");\n\n    const StakingDapp = await ethers.getContractFactory(\"StakingDapp\");\n    const stakingDapp = await StakingDapp.deploy(stakingToken.address, rewardToken.address);\n\n    console.log(\"Contracts deployed:\");\n    console.log(\"Staking Token:\", stakingToken.address);\n    console.log(\"Reward Token:\", rewardToken.address);\n    console.log(\"Staking Dapp:\", stakingDapp.address);\n}\n\nmain()\n    .then(() => process.exit(0))\n    .catch((error) => {\n        console.error(error);\n        process.exit(1);\n    });\n\n```\n* Make sure your MetaMask wallet has tCORE test tokens for the Core Testnet. Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-faucet) for details on how to get tCORE tokens from Core Faucet. \n\n* Run the following command from the root directory of your project, to deploy smart contracts on the Core blockchain.\n\n```bash\nnpx hardhat run scripts/deploy.js\n```\n\n* If succesfully deployed, you will get the following output\n\n![img](./assets/deploy-contracts.png)\n\n* Save the addresses for the deploed contracts for use with the frontend.\n\n## Interacting with Smart Contract through Frontend\n\n⚡️ Let's create a frontend interface for interacting with the smart contract.\n\n### Setting up frontend \n\n* Create a simple react application using the following command\n\n```bash\nnpx create-react-app frontend\ncd frontend\n```\n\n* Install Dependencies, the Ethers.js library for communicating with the deployed smart contracts.\n\n```bash\n  npm install --save-dev ethers@5.6.9\n```\n\n* Create a `contracts` folder inside the `frontend/src` folder.\n\n```bash\nmkdir components \nmkdir contracts \n```\n\nCopy the ABIs in the form of `.json` files, of your deployed smart contracts, from `artifacts/contracts/RewardToken.sol` `artifacts/contracts/StakingToken.sol` and `artifacts/contracts/RewardToken.sol` directories into the `frontend/src/contracts` directory.\n\n\n* Create a `components` folder in the `frontend/src` directory. \n```bash \nmkdir components\ncd components\n```\n\n### Adding Frontend Fuctionality\n* Update the `App.js` with the contents of the [App.js](./frontend/src/App.js) in the boilerplate repo.\n* Update the `App.css` with the contents of the [App.css](./frontend/src/App.css) in the boilerplate repo.\n* Create a `Modal.js` file inside the `components` directory. Update the file with the contents of the [Modal.js](./frontend/src/components/Modal.js) in the boilerplate repo.\n* Create a `Modal.css` file in the `components` directory. Update the file with the contents of the [Modal.csss](./frontend/src/components/Modal.css) in the boilerplate repo.\n\n### Key Implementation\nThe application's key blockchain logic is implemented in [App.js](./frontend/src/App.js)\n\n1. **App.js (Wallet):** Line#31 onwards is the logic for connecting the application to MetaMask wallet.\n2. **App.js (Stake):** Line#180 is the logic to stake the STK tokens.\n3. **App.js (Unstake):** Line#211 is the logic to unstake the STK tokens.\n4. **App.js (Claim Reward):** Line#275 is the logic to claim the rewards as the RTK tokens.\n5. **App.js (STK Faucet):** Line#311 is the logic for the faucet to get STK tokens.\n\n### Adding Smart Contract Details \n* Paste this into Lines 12, 13, and 14 the addresses of the deployed contracts of StakingToken, RewardToken and StakingDapp.\n\n```js\nconst stakingDappAddress = '0xAddress_of_Staking_Dapp_Contract';\nconst stakingTokenAddress = '0xAddreess_of_Staking_Token_Contract';\nconst rewardTokenAddress = '0xAddreess_of_Reward_Token_Contract'; \n```\n\n### Testing Locally\n* From the `frontend` directory, run the command `npm run start`\n* Make sure that your MetaMask wallet is correctly installed and switched to Core Testnet as described in our [Core Testnet user guide](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config). You'll also need to connect your MetaMask wallet to the local site.\n* Navigate to `http://localhost:3000/` in your browser.\n\n![dapp-ui](./assets/dapp-ui-1.png)\n\n* Enter an amount less than 100 and click on the `STK Faucet` to get STK tokens.\n![dapp-ui](./assets/dapp-ui-2.png)\n\n* Enter an amount greater than 0 and less than or equal to your STK balance and click `Stake` to stake tokens. \n![dapp-ui](./assets/dapp-ui-3.png)\n\n* On clicking the `Stake` button, Metamask notification will pop up, allow the stakingdapp contract to spend your STK tokens, then click next and on the next notificxation click on `Edit` and give a higher gas limiti value, say 6000000, then click save and approve the transaction.\n![metamask-approve](./assets/dapp-metamask-approve-STK-1.png)\n* Enter an amount greater than 0 and less than or equal to your staked balance and click `Unstake` to unstake tokens. \n![dapp-ui](./assets/dapp-ui-4.png)\n\n\n## 🎉 **Congratulations!** \nYou've just interacted with your deployed contract using your dApp's front end! You can build on the codebase by adding new UI components or more functionality to the staking dapp.\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/contracts/RewardToken.sol",
    "content": "// SPDX-License-Identifier: MIT\n// Compatible with OpenZeppelin Contracts ^5.0.0\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\";\n\ncontract RewardToken is ERC20, Ownable, ERC20Permit {\n    constructor(string memory name, string memory symbol)\n        ERC20(name, symbol)\n        Ownable(msg.sender)\n        ERC20Permit(name)\n    {}\n\n    function mint(address to, uint256 amount) public {\n        _mint(to, amount);\n    }\n}"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/contracts/StakingDapp.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.24;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\ninterface IRewardToken is IERC20 {\n    function mint(address to, uint256 amount) external;\n}\n\ncontract StakingDapp is Ownable {\n    using SafeERC20 for IERC20;\n\n    IERC20 public stakingToken;\n    IRewardToken public rewardToken;\n\n    struct Stake {\n        uint256 amount;\n        uint256 lastRewardTime; // Track the last time rewards were calculated\n    }\n\n    mapping(address => Stake) public stakes;\n    mapping(address => uint256) public rewardBalance;\n\n    uint256 public constant REWARD_AMOUNT = 5; // Reward tokens per interval\n    uint256 public constant REWARD_INTERVAL = 10; // 10 seconds per reward interval\n\n    event Staked(address indexed user, uint256 amount);\n    event Unstaked(address indexed user, uint256 amount);\n    event RewardClaimed(address indexed user, uint256 amount);\n\n    constructor(address _stakingToken, address _rewardToken) Ownable(msg.sender) {\n        require(_stakingToken != address(0) && _rewardToken != address(0), \"Invalid token addresses\");\n        stakingToken = IERC20(_stakingToken);\n        rewardToken = IRewardToken(_rewardToken);\n    }\n\n    function getStakedAmount(address user) external view returns (uint256) {\n        return stakes[user].amount;\n    }\n\n\n    function stake(uint256 amount) external {\n        require(amount > 0, \"Amount must be greater than 0\");\n        \n        if (stakes[msg.sender].amount > 0) {\n            // Calculate and update reward balance before changing the stake\n            uint256 pendingReward = calculateReward(msg.sender);\n            rewardBalance[msg.sender] += pendingReward;\n        }\n        \n        stakingToken.safeTransferFrom(msg.sender, address(this), amount);\n        \n        // Update the stake amount and last reward time\n        stakes[msg.sender].amount += amount;\n        stakes[msg.sender].lastRewardTime = block.timestamp;\n        \n        emit Staked(msg.sender, amount);\n    }\n\n    function unstake(uint256 amount) external {\n        require(stakes[msg.sender].amount >= amount, \"Insufficient balance\");\n        \n        uint256 pendingReward = calculateReward(msg.sender);\n        rewardBalance[msg.sender] += pendingReward;\n\n        // Update the stake amount and last reward time\n        stakes[msg.sender].amount -= amount;\n        stakes[msg.sender].lastRewardTime = block.timestamp;\n        \n        stakingToken.safeTransfer(msg.sender, amount);\n        \n        emit Unstaked(msg.sender, amount);\n    }\n\n    function claimReward() external {\n        uint256 reward = calculateReward(msg.sender) + rewardBalance[msg.sender];\n        require(reward > 0, \"No reward available\");\n\n        // Reset reward data\n        rewardBalance[msg.sender] = 0;\n        stakes[msg.sender].lastRewardTime = block.timestamp;\n        \n        // Mint reward tokens\n        rewardToken.mint(msg.sender, reward);\n        \n        emit RewardClaimed(msg.sender, reward);\n    }\n\n    function calculateReward(address user) internal view returns (uint256) {\n        Stake memory userStake = stakes[user];\n        if (userStake.amount == 0) {\n            return 0;\n        }\n\n        uint256 currentTime = block.timestamp;\n        uint256 timeSinceLastReward = currentTime - userStake.lastRewardTime;\n        uint256 intervalsPassed = timeSinceLastReward / REWARD_INTERVAL;\n        // Calculate reward based on intervals passed and staked amount\n        return intervalsPassed * REWARD_AMOUNT * userStake.amount; // 1e18; // Assumes REWARD_AMOUNT and staked amount are in the same decimal place\n    }\n    function getRewardAmount(address user) external view returns (uint256) {\n        uint256 reward = calculateReward(user);\n        return reward;\n    }\n\n}\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/contracts/StakingToken.sol",
    "content": "// SPDX-License-Identifier: MIT\n// Compatible with OpenZeppelin Contracts ^5.0.0\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\";\n\ncontract StakingToken is ERC20, Ownable, ERC20Permit {\n    constructor(string memory name, string memory symbol)\n        ERC20(name, symbol)\n        Ownable(msg.sender)\n        ERC20Permit(name)\n    {}\n\n    function mint(address to, uint256 amount) public {\n        require(amount <= 100 * 10 ** 18, \"amount must be less than 100\");\n        _mint(to, amount);\n    }\n}"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/README.md",
    "content": "# Getting Started with Create React App\n\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n### `npm start`\n\nRuns the app in the development mode.\\\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\n\nThe page will reload when you make changes.\\\nYou may also see any lint errors in the console.\n\n### `npm test`\n\nLaunches the test runner in the interactive watch mode.\\\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\n\n### `npm run build`\n\nBuilds the app for production to the `build` folder.\\\nIt correctly bundles React in production mode and optimizes the build for the best performance.\n\nThe build is minified and the filenames include the hashes.\\\nYour app is ready to be deployed!\n\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\n\n### `npm run eject`\n\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\n\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\n\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\n\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\n\n## Learn More\n\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\n\nTo learn React, check out the [React documentation](https://reactjs.org/).\n\n### Code Splitting\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\n\n### Analyzing the Bundle Size\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\n\n### Making a Progressive Web App\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\n\n### Advanced Configuration\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\n\n### Deployment\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\n\n### `npm run build` fails to minify\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/package.json",
    "content": "{\n  \"name\": \"frontend_ui\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@testing-library/jest-dom\": \"5.17.0\",\n    \"@testing-library/react\": \"13.4.0\",\n    \"@testing-library/user-event\": \"13.5.0\",\n    \"bootstrap\": \"5.2.3\",\n    \"react\": \"18.3.1\",\n    \"react-dom\": \"18.3.1\",\n    \"react-scripts\": \"5.0.1\",\n    \"react-toastify\": \"10.0.5\",\n    \"web-vitals\": \"2.1.4\"\n  },\n  \"scripts\": {\n    \"start\": \"react-scripts start\",\n    \"build\": \"react-scripts build\",\n    \"test\": \"react-scripts test\",\n    \"eject\": \"react-scripts eject\"\n  },\n  \"eslintConfig\": {\n    \"extends\": [\n      \"react-app\",\n      \"react-app/jest\"\n    ]\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  },\n  \"devDependencies\": {\n    \"ethers\": \"^5.6.9\"\n  }\n}\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <meta\n      name=\"description\"\n      content=\"Web site created using create-react-app\"\n    />\n    <link rel=\"apple-touch-icon\" href=\"%PUBLIC_URL%/logo192.png\" />\n    <!--\n      manifest.json provides metadata used when your web app is installed on a\n      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <!--\n      Notice the use of %PUBLIC_URL% in the tags above.\n      It will be replaced with the URL of the `public` folder during the build.\n      Only files inside the `public` folder can be referenced from the HTML.\n\n      Unlike \"/favicon.ico\" or \"favicon.ico\", \"%PUBLIC_URL%/favicon.ico\" will\n      work correctly both with client-side routing and a non-root public URL.\n      Learn how to configure a non-root public URL by running `npm run build`.\n    -->\n    <title>React App</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"root\"></div>\n    <!--\n      This HTML file is a template.\n      If you open it directly in the browser, you will see an empty page.\n\n      You can add webfonts, meta tags, or analytics to this file.\n      The build step will place the bundled scripts into the <body> tag.\n\n      To begin the development, run `npm start` or `yarn start`.\n      To create a production bundle, use `npm run build` or `yarn build`.\n    -->\n  </body>\n</html>\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/public/manifest.json",
    "content": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"logo192.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"192x192\"\n    },\n    {\n      \"src\": \"logo512.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/App.css",
    "content": "@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');\n\n:root {\n  /* Light Mode Colors */\n  --light-bg: #f5f7fa;\n  --light-card: #ffffff;\n  --light-text: #2d3748;\n  --light-text-secondary: #4a5568;\n  --light-border: #e2e8f0;\n  --light-primary: #ff9211;\n  --light-primary-hover: #ed6a2e;\n  \n  /* Dark Mode Colors */\n  --dark-bg: #1a202c;\n  --dark-card: #2d3748;\n  --dark-text: #f7fafc;\n  --dark-text-secondary: #cbd5e0;\n  --dark-border: #ff9501;\n  --dark-primary: #ff9211;\n  --dark-primary-hover: #ed6a2e;\n}\n\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n  transition: background-color 0.3s, color 0.3s;\n}\n\nbody {\n  font-family: 'Inter', sans-serif;\n}\n\n.App {\n  min-height: 100vh;\n  padding: 0 2rem;\n}\n\n/* Theme Styles */\n.light-mode {\n  background-color: var(--light-bg);\n  color: var(--light-text);\n}\n\n.dark-mode {\n  background-color: var(--dark-bg);\n  color: var(--dark-text);\n}\n\n/* Header Styles */\n.App-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 1.5rem 0;\n  border-bottom: 1px solid;\n}\n\n.light-mode .App-header {\n  border-color: var(--light-border);\n}\n\n.dark-mode .App-header {\n  border-color: var(--dark-border);\n}\n\n.logo-container img {\n  height: 40px;\n}\n\n.header-right {\n  display: flex;\n  align-items: center;\n  gap: 1rem;\n}\n\n.theme-toggle {\n  background: transparent;\n  border: none;\n  font-size: 1.5rem;\n  cursor: pointer;\n  padding: 0.5rem;\n  border-radius: 50%;\n}\n\n.light-mode .theme-toggle  {\n  background-color: rgba(0, 0, 0, 0.05);\n      width: 45px;\n    height: 45px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n}\n\n.dark-mode .theme-toggle {\n  background-color: rgba(255, 255, 255, 0.05);\n      width: 45px;\n    height: 45px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n}\n\n/* Button Styles */\n.btn-wallet {\n  padding: 0.75rem 1.5rem;\n  border-radius: 0.5rem;\n  font-weight: 600;\n  cursor: pointer;\n  border: none;\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n}\n\n.light-mode .btn-wallet {\n  background-color: var(--light-primary);\n  color: white;\n}\n\n.dark-mode .btn-wallet {\n  background-color: var(--dark-primary);\n  color: white;\n}\n\n.btn-wallet:hover {\n  transform: translateY(-1px);\n}\n\n.light-mode .btn-wallet:hover {\n  background-color: var(--light-primary-hover);\n}\n\n.dark-mode .btn-wallet:hover {\n  background-color: var(--dark-primary-hover);\n}\n\n.btn-wallet.large {\n  padding: 1rem 2rem;\n  font-size: 1.1rem;\n}\n\n/* Main Content Styles */\nmain {\n  padding: 2rem 0;\n}\n\n.main-title {\n  font-size: 2rem;\n  margin-bottom: 2rem;\n  font-weight: 700;\n}\n\n/* Connect Prompt Styles */\n.connect-prompt {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n  padding: 3rem 0;\n}\n\n.connect-illustration {\n  margin-bottom: 2rem;\n}\n\n.connect-illustration img {\n  max-width: 100%;\n  border-radius: 1rem;\n}\n\n.connect-prompt p {\n  margin-bottom: 2rem;\n  font-size: 1.2rem;\n  max-width: 600px;\n  line-height: 1.6;\n}\n\n.light-mode .connect-prompt p {\n  color: var(--light-text-secondary);\n}\n\n.dark-mode .connect-prompt p {\n  color: var(--dark-text-secondary);\n}\n\n/* Dashboard Styles */\n.dashboard {\n  max-width: 1200px;\n  margin: 0 auto;\n}\n\n.wallet-info {\n  display: flex;\n  justify-content: flex-end;\n  margin-bottom: 1.5rem;\n}\n\n.wallet-address {\n  padding: 0.5rem 1rem;\n  border-radius: 0.5rem;\n  font-family: monospace;\n  font-size: 0.9rem;\n}\n\n.light-mode .wallet-address {\n  background-color: rgba(0, 0, 0, 0.05);\n}\n\n.dark-mode .wallet-address {\n  background-color: rgba(255, 255, 255, 0.05);\n}\n\n/* Stats Grid Styles */\n.stats-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n  gap: 1.5rem;\n  margin-bottom: 2rem;\n}\n\n.stat-card {\n  padding: 1.5rem;\n  border-radius: 1rem;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  text-align: center;\n}\n\n.light-mode .stat-card {\n  background-color: var(--light-card);\n  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n}\n\n.dark-mode .stat-card {\n  background-color: var(--dark-card);\n}\n\n.stat-card.highlight {\n  border: 2px solid;\n}\n\n.light-mode .stat-card.highlight {\n  border-color: var(--light-primary);\n}\n\n.dark-mode .stat-card.highlight {\n  border-color: var(--dark-primary);\n}\n\n.stat-icon {\n  font-size: 2rem;\n  margin-bottom: 1rem;\n}\n\n.stat-card h3 {\n  font-size: 1.1rem;\n  margin-bottom: 0.5rem;\n  font-weight: 600;\n}\n\n.stat-value {\n  font-size: 1.5rem;\n  font-weight: 700;\n  margin-bottom: 1rem;\n}\n\n.light-mode .stat-value {\n  color: var(--light-primary);\n}\n\n.dark-mode .stat-value {\n  color: var(--dark-primary);\n}\n\n.claim-btn {\n  padding: 0.5rem 1rem;\n  border-radius: 0.5rem;\n  font-weight: 600;\n  cursor: pointer;\n  border: none;\n  width: 100%;\n}\n\n.light-mode .claim-btn {\n  background-color: var(--light-primary);\n  color: white;\n}\n\n.dark-mode .claim-btn {\n  background-color: var(--dark-primary);\n  color: white;\n}\n\n.claim-btn:hover {\n  transform: translateY(-1px);\n}\n\n.light-mode .claim-btn:hover {\n  background-color: var(--light-primary-hover);\n}\n\n.dark-mode .claim-btn:hover {\n  background-color: var(--dark-primary-hover);\n}\n\n/* Action Cards css */\n.action-cards {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n  gap: 1.5rem;\n}\n\n.action-card {\n  padding: 1.5rem;\n  border-radius: 1rem;\n}\n\n.light-mode .action-card {\n  background-color: var(--light-card);\n  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n}\n\n.dark-mode .action-card {\n  background-color: var(--dark-card);\n}\n\n.action-card h3 {\n  font-size: 1.1rem;\n  margin-bottom: 1rem;\n  font-weight: 600;\n}\n\n.input-group {\n  display: flex;\n  gap: 0.5rem;\n}\n\n.input-field {\n  flex: 1;\n  padding: 0.75rem 1rem;\n  border-radius: 0.5rem;\n  border: 1px solid;\n  font-size: 1rem;\n}\n\n.light-mode .input-field {\n  border-color: var(--light-border);\n  background-color: white;\n  color: var(--light-text);\n}\n\n.dark-mode .input-field {\n  border-color: var(--dark-border);\n  background-color: #1a202c;\n  color: var(--dark-text);\n}\n\n.input-field:focus {\n  outline: none;\n  border-width: 2px;\n}\n\n.light-mode .input-field:focus {\n  border-color: var(--light-primary);\n}\n\n.dark-mode .input-field:focus {\n  border-color: var(--dark-primary);\n}\n\n.btn-action {\n  padding: 0.75rem 1.5rem;\n  border-radius: 0.5rem;\n  font-weight: 600;\n  cursor: pointer;\n  border: none;\n  white-space: nowrap;\n}\n\n.light-mode .btn-action {\n  background-color: var(--light-primary);\n  color: white;\n}\n\n.dark-mode .btn-action {\n  background-color: var(--dark-primary);\n  color: white;\n}\n\n.btn-action:hover {\n  transform: translateY(-1px);\n}\n\n.light-mode .btn-action:hover {\n  background-color: var(--light-primary-hover);\n}\n\n.dark-mode .btn-action:hover {\n  background-color: var(--dark-primary-hover);\n}\n\n/* Responsive css */\n@media (max-width: 768px) {\n  .App {\n    padding: 0 1rem;\n  }\n  \n  .stats-grid, .action-cards {\n    grid-template-columns: 1fr;\n  }\n  \n  .input-group {\n    flex-direction: column;\n  }\n  \n  .btn-action {\n    width: 100%;\n  }\n}"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/App.js",
    "content": "import { useEffect, useState, useCallback } from \"react\";\nimport { ethers } from \"ethers\";\nimport StakingToken from \"./contracts/StakingToken.json\";\nimport StakingDapp from \"./contracts/StakingDapp.json\";\nimport RewardToken from \"./contracts/RewardToken.json\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport Modal from \"./components/Modal\";\nimport \"./App.css\";\nimport darkLogo from \"./assets/dark_logo.webp\";\nimport lightLogo from \"./assets/light_logo.webp\";\nimport \"../node_modules/bootstrap/dist/css/bootstrap.min.css\";\n\nconst stakingDappAddress = \"0x341B5aC2189e73d444883CB608FfF7d8e8AC4F93\";\nconst stakingTokenAddress = \"0x9Ba37DAA676B30599B67093FACDA8b3B7BD0Fb44\";\nconst rewardTokenAddress = \"0xDa0bBC600188Bf2C995de241Cb3B50f62Da925B5\";\n\nfunction App() {\n  const [stakingAmount, setStakingAmount] = useState(\"\");\n  const [unstakingAmount, setUnstakingAmount] = useState(\"\");\n  const [currentAccount, setCurrentAccount] = useState(null);\n  const [stakedAmount, setStakedAmount] = useState(\"0\");\n  const [rewardAmount, setRewardAmount] = useState(\"0\");\n  const [totalStkBalance, setTotalStkBalance] = useState(\"0\");\n  const [network, setNetwork] = useState(\"\");\n  const [faucetAmount, setFaucetAmount] = useState(\"\");\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [stakingTokenDecimals, setStakingTokenDecimals] = useState(18);\n  const [rewardTokenDecimals, setRewardTokenDecimals] = useState(18);\n const [darkMode, setDarkMode] = useState(true);\n  // Check if wallet is connected\n  const checkWalletIsConnected = async () => {\n    const { ethereum } = window;\n\n    if (!ethereum) {\n      console.log(\"Make sure you have Metamask installed!\");\n      return;\n    }\n\n    try {\n      const accounts = await ethereum.request({ method: \"eth_accounts\" });\n\n      if (accounts.length !== 0) {\n        const account = accounts[0];\n        setCurrentAccount(account);\n      } else {\n        console.log(\"No authorized account found ...\");\n      }\n    } catch (error) {\n      console.error(\"Error fetching accounts:\", error);\n    }\n  };\n\n  // Check network\n  const checkNetwork = async () => {\n    const { ethereum } = window;\n\n    if (!ethereum) {\n      console.log(\"Ethereum object does not exist\");\n      return;\n    }\n\n    try {\n      const provider = new ethers.providers.Web3Provider(ethereum);\n      const { chainId } = await provider.getNetwork();\n\n      if (chainId !== 1115) {\n        console.log(\"Please connect to the Core Testnet\");\n      } else {\n        setNetwork(\"Core Testnet\");\n      }\n    } catch (error) {\n      console.error(\"Error fetching network:\", error);\n    }\n  };\n\n  // Connect wallet\n  const connectWalletHandler = async () => {\n    const { ethereum } = window;\n\n    if (!ethereum) {\n      alert(\"Please install Metamask!\");\n      return;\n    }\n\n    try {\n      const accounts = await ethereum.request({\n        method: \"eth_requestAccounts\",\n      });\n      setCurrentAccount(accounts[0]);\n    } catch (error) {\n      console.error(\"Error connecting wallet:\", error);\n    }\n  };\n\n  // Disconnect wallet\n  const disconnectWalletHandler = () => {\n    setCurrentAccount(null);\n    setStakedAmount(\"0\");\n    setRewardAmount(\"0\");\n    setTotalStkBalance(\"0\");\n    setNetwork(\"\");\n  };\n\n  // Fetch staked and reward amounts\n  const fetchStakedAndRewardAmounts = useCallback(async () => {\n    try {\n      const { ethereum } = window;\n\n      if (ethereum) {\n        const provider = new ethers.providers.Web3Provider(ethereum);\n        const signer = provider.getSigner();\n        const stakingDappContract = new ethers.Contract(\n          stakingDappAddress,\n          StakingDapp.abi,\n          signer\n        );\n\n        const stakedAmount = await stakingDappContract.getStakedAmount(\n          currentAccount\n        );\n        const rewardAmount = await stakingDappContract.getRewardAmount(\n          currentAccount\n        );\n\n        setStakedAmount(\n          ethers.utils.formatUnits(stakedAmount, stakingTokenDecimals)\n        );\n        setRewardAmount(\n          ethers.utils.formatUnits(rewardAmount, rewardTokenDecimals)\n        );\n      } else {\n        console.log(\"Ethereum object does not exist\");\n      }\n    } catch (error) {\n      console.error(\"Error fetching staked and reward amounts:\", error);\n    }\n  }, [currentAccount, stakingTokenDecimals, rewardTokenDecimals]);\n\n  // Fetch staking token balance\n  const fetchStkBalance = useCallback(async () => {\n    try {\n      const { ethereum } = window;\n\n      if (ethereum) {\n        const provider = new ethers.providers.Web3Provider(ethereum);\n        const stakingTokenContract = new ethers.Contract(\n          stakingTokenAddress,\n          StakingToken.abi,\n          provider\n        );\n\n        const balance = await stakingTokenContract.balanceOf(currentAccount);\n        const decimals = await stakingTokenContract.decimals();\n        setStakingTokenDecimals(decimals);\n        setTotalStkBalance(ethers.utils.formatUnits(balance, decimals));\n        console.log('balance',balance)\n      } else {\n        console.log(\"Ethereum object does not exist\");\n      }\n    } catch (error) {\n      console.error(\"Error fetching token balance:\", error);\n    }\n  }, [currentAccount]);\n\n  // Fetch reward token decimals\n  const fetchRewardTokenDecimals = useCallback(async () => {\n    try {\n      const { ethereum } = window;\n\n      if (ethereum) {\n        const provider = new ethers.providers.Web3Provider(ethereum);\n        const rewardTokenContract = new ethers.Contract(\n          rewardTokenAddress,\n          RewardToken.abi,\n          provider\n        );\n\n        const decimals = await rewardTokenContract.decimals();\n        setRewardTokenDecimals(decimals);\n      } else {\n        console.log(\"Ethereum object does not exist\");\n      }\n    } catch (error) {\n      console.error(\"Error fetching reward token decimals:\", error);\n    }\n  }, []);\n\n  useEffect(() => {\n    checkWalletIsConnected();\n  }, []);\n\n  useEffect(() => {\n    if (currentAccount) {\n      checkNetwork();\n      fetchStakedAndRewardAmounts();\n      fetchStkBalance();\n      fetchRewardTokenDecimals();\n    }\n  }, [\n    currentAccount,\n    fetchStakedAndRewardAmounts,\n    fetchStkBalance,\n    fetchRewardTokenDecimals,\n  ]);\n\n  // Stake tokens\n  const stakeTokens = async () => {\n    try {\n      if (!isValidAmount(stakingAmount)) {\n        toast.error(\"Invalid staking amount. Please enter a positive number.\");\n        return;\n      }\n\n      const { ethereum } = window;\n\n      if (ethereum) {\n        const provider = new ethers.providers.Web3Provider(ethereum);\n        const signer = provider.getSigner();\n        const stakingDappContract = new ethers.Contract(\n          stakingDappAddress,\n          StakingDapp.abi,\n          signer\n        );\n        const tokenContract = new ethers.Contract(\n          stakingTokenAddress,\n          StakingToken.abi,\n          signer\n        );\n\n        await tokenContract.approve(\n          stakingDappAddress,\n          ethers.utils.parseUnits(stakingAmount, stakingTokenDecimals)\n        );\n        const tx = await stakingDappContract.stake(\n          ethers.utils.parseUnits(stakingAmount, stakingTokenDecimals)\n        );\n        await tx.wait();\n        toast.success(\"Staked successfully\");\n        fetchStakedAndRewardAmounts();\n        fetchStkBalance();\n      } else {\n        console.log(\"Ethereum object does not exist\");\n      }\n    } catch (error) {\n      console.error(\"Error staking tokens:\", error);\n      toast.error(\"Error staking tokens\");\n    }\n  };\n\n  // Unstake tokens\n  const unstakeTokens = async () => {\n    try {\n      if (!isValidAmount(unstakingAmount)) {\n        toast.error(\n          \"Invalid unstaking amount. Please enter a positive number.\"\n        );\n        return;\n      }\n\n      // Check if unstaking amount is greater than the staked amount\n      if (parseFloat(unstakingAmount) > parseFloat(stakedAmount)) {\n        toast.error(\"Enter value equal to or less than the Staked STK.\");\n        return;\n      }\n\n      const { ethereum } = window;\n\n      if (ethereum) {\n        const provider = new ethers.providers.Web3Provider(ethereum);\n        const signer = provider.getSigner();\n        const stakingDappContract = new ethers.Contract(\n          stakingDappAddress,\n          StakingDapp.abi,\n          signer\n        );\n\n        const amount = ethers.utils.parseUnits(\n          unstakingAmount,\n          stakingTokenDecimals\n        );\n        const tx = await stakingDappContract.unstake(amount);\n        await tx.wait();\n        toast.success(\"Unstaked successfully\");\n        fetchStakedAndRewardAmounts();\n        fetchStkBalance();\n      } else {\n        console.log(\"Ethereum object does not exist\");\n      }\n    } catch (error) {\n      console.error(\"Error unstaking tokens:\", error);\n      toast.error(\"Error unstaking tokens\");\n    }\n  };\n\n  // Open reward modal\n  const openRewardModal = async () => {\n    try {\n      const { ethereum } = window;\n\n      if (ethereum) {\n        const provider = new ethers.providers.Web3Provider(ethereum);\n        const signer = provider.getSigner();\n        const stakingDappContract = new ethers.Contract(\n          stakingDappAddress,\n          StakingDapp.abi,\n          signer\n        );\n\n        const reward = await stakingDappContract.getRewardAmount(\n          currentAccount\n        );\n        const formattedReward = ethers.utils.formatUnits(\n          reward,\n          rewardTokenDecimals\n        );\n        console.log(formattedReward);\n        if (parseFloat(formattedReward) > 0) {\n          setRewardAmount(formattedReward);\n          setIsModalOpen(true);\n        } else {\n          toast.info(\"No rewards available to claim.\");\n        }\n      } else {\n        console.log(\"Ethereum object does not exist\");\n      }\n    } catch (error) {\n      console.error(\"Error fetching reward amount:\", error);\n      toast.error(\"Error fetching reward amount\");\n    }\n  };\n\n  // Claim reward\n  const claimReward = async () => {\n    try {\n      if (parseFloat(rewardAmount) <= 0) {\n        toast.error(\"Cannot claim reward. Amount must be greater than zero.\");\n        return;\n      }\n\n      const { ethereum } = window;\n\n      if (ethereum) {\n        const provider = new ethers.providers.Web3Provider(ethereum);\n        const signer = provider.getSigner();\n        const stakingDappContract = new ethers.Contract(\n          stakingDappAddress,\n          StakingDapp.abi,\n          signer\n        );\n\n        // Set a high manual gas limit\n        const gasLimit = 5000000; // Higher limit to ensure success\n\n        // Try sending the transaction with a higher gas limit\n        const tx = await stakingDappContract.claimReward({\n          gasLimit: gasLimit,\n        });\n        await tx.wait();\n        toast.success(\"Reward claimed successfully\");\n        setIsModalOpen(false);\n        fetchStakedAndRewardAmounts();\n        fetchStkBalance();\n      } else {\n        console.log(\"Ethereum object does not exist\");\n      }\n    } catch (error) {\n      console.error(\"Error claiming reward:\", error);\n      toast.error(\n        \"Error claiming reward. Please check the console for details.\"\n      );\n    }\n  };\n\n  // Faucet tokens\n  const faucetTokens = async (amount) => {\n    try {\n      if (!isValidAmount(amount)) {\n        toast.error(\n          \"Invalid faucet amount. Please enter a positive number less than 100.\"\n        );\n        return;\n      }\n\n      const parsedAmount = parseFloat(amount);\n      if (parsedAmount >= 100) {\n        toast.error(\"Request amount must be less than 100.\");\n        return;\n      }\n\n      const { ethereum } = window;\n\n      if (ethereum) {\n        const provider = new ethers.providers.Web3Provider(ethereum);\n        const signer = provider.getSigner();\n        const stakingTokenContract = new ethers.Contract(\n          stakingTokenAddress,\n          StakingToken.abi,\n          signer\n        );\n\n        const gasLimit = 600000;\n\n        const tx = await stakingTokenContract.mint(\n          currentAccount,\n          ethers.utils.parseUnits(amount, stakingTokenDecimals),\n          {\n            gasLimit: gasLimit,\n          }\n        );\n        await tx.wait();\n        toast.success(\"Tokens minted successfully\");\n        fetchStkBalance();\n      } else {\n        console.log(\"Ethereum object does not exist\");\n      }\n    } catch (error) {\n      console.error(\"Error minting tokens:\", error);\n      toast.error(\"Error minting tokens\");\n    }\n  };\n\n  // Validate amount\n  const isValidAmount = (amount) => {\n    return !isNaN(Number(amount)) && parseFloat(amount) > 0;\n  };\n // Toggle dark/light mode\n  const toggleTheme = () => {\n    setDarkMode(!darkMode);\n  };\n\n  return (\n    <div className={`App ${darkMode ? 'dark-mode' : 'light-mode'}`}>\n      <header className=\"App-header\">\n        <div className=\"logo-container\">\n          <img src={darkMode ? darkLogo : lightLogo} alt=\"Core Logo\" />\n        </div>\n        \n        <div className=\"header-right\">\n          <button onClick={toggleTheme} className=\"theme-toggle\">\n            {darkMode ? <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"white\" class=\"bi bi-brightness-high\" viewBox=\"0 0 16 16\">\n  <path d=\"M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708\"/>\n</svg> : \n            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-moon\" viewBox=\"0 0 16 16\">\n  <path d=\"M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278M4.858 1.311A7.27 7.27 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.32 7.32 0 0 0 5.205-2.162q-.506.063-1.029.063c-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286\"/>\n</svg>}\n          </button>\n          {currentAccount ? (\n            <button onClick={disconnectWalletHandler} className=\"btn-wallet\">\n              Disconnect Wallet\n            </button>            \n          ) : ( \n            <button onClick={connectWalletHandler} className=\"btn-wallet\">\n              Connect Wallet\n            </button>\n          )}\n        </div>\n      </header>\n      \n      <main>\n        <h1 className=\"main-title\">Staking Dashboard</h1>\n        \n        {!currentAccount ? (\n          <div className=\"connect-prompt\">\n            <p>Please connect your wallet to access the staking dashboard</p>\n            <button onClick={connectWalletHandler} className=\"btn-wallet large\">\n              Connect Wallet\n            </button>\n          </div>\n        ) : (\n          <div className=\"dashboard\">\n            <div className=\"wallet-info\">\n              <span className=\"wallet-address\">\n                Wallet Connected: {currentAccount.slice(0, 6)}...{currentAccount.slice(-4)}\n              </span>\n            </div>\n            \n            <div className=\"stats-grid\">\n              <div className=\"stat-card\">\n                <div className=\"stat-icon\">💰</div>\n                <h3>STK Balance</h3>\n                <p className=\"stat-value\">{totalStkBalance} STK</p>\n              </div>\n              \n              <div className=\"stat-card\">\n                <div className=\"stat-icon\">🔒</div>\n                <h3>Staked Amount</h3>\n                <p className=\"stat-value\">{stakedAmount} STK</p>\n              </div>\n              \n              <div className=\"stat-card highlight\">\n                <div className=\"stat-icon\">🎁</div>\n                <h3>Rewards</h3>\n                <p className=\"stat-value\">{rewardAmount} RTK</p>\n                <button onClick={openRewardModal} className=\"claim-btn\">\n                  Claim Now\n                </button>\n              </div>\n            </div>\n            \n            <div className=\"action-cards\">\n              <div className=\"action-card\">\n                <h3>Stake Tokens</h3>\n                <div className=\"input-group\">\n                  <input\n                    type=\"number\"\n                    placeholder=\"Amount to stake\"\n                    value={stakingAmount}\n                    onChange={(e) => setStakingAmount(e.target.value)}\n                    className=\"input-field\"\n                  />\n                  <button onClick={stakeTokens} className=\"btn-action\">\n                    Stake\n                  </button>\n                </div>\n              </div>\n              \n              <div className=\"action-card\">\n                <h3>Unstake Tokens</h3>\n                <div className=\"input-group\">\n                  <input\n                    type=\"number\"\n                    placeholder=\"Amount to unstake\"\n                    value={unstakingAmount}\n                    onChange={(e) => setUnstakingAmount(e.target.value)}\n                    className=\"input-field\"\n                  />\n                  <button onClick={unstakeTokens} className=\"btn-action\">\n                    Unstake\n                  </button>\n                </div>\n              </div>\n              \n              <div className=\"action-card\">\n                <h3>Get Test Tokens</h3>\n                <div className=\"input-group\">\n                  <input\n                    type=\"number\"\n                    placeholder=\"Faucet amount\"\n                    value={faucetAmount}\n                    onChange={(e) => setFaucetAmount(e.target.value)}\n                    className=\"input-field\"\n                  />\n                  <button onClick={faucetTokens} className=\"btn-action\">\n                    Get STK\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        )}\n      </main>\n\n      <ToastContainer />\n      <Modal\n        isOpen={isModalOpen}\n        onClose={() => setIsModalOpen(false)}\n        onClaim={claimReward}\n        rewardAmount={rewardAmount}\n      />\n    </div>\n  );\n}\n\nexport default App;\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/App.test.js",
    "content": "import { render, screen } from '@testing-library/react';\nimport App from './App';\n\ntest('renders learn react link', () => {\n  render(<App />);\n  const linkElement = screen.getByText(/learn react/i);\n  expect(linkElement).toBeInTheDocument();\n});\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/components/Modal.css",
    "content": "/* components/Modal.module.css */\n.modalOverlay {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    background: rgba(0, 0, 0, 0.5);\n    display: flex;\n    justify-content: center;\n    align-items: center;\n  }\n  \n  .modalContent {\n    background: white;\n    padding: 20px;\n    border-radius: 8px;\n    width: 400px;\n    text-align: center;\n  }\n  \n  .inputField {\n    width: 100%;\n    padding: 10px;\n    margin-top: 10px;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n  }\n  \n  .btnPrimary {\n    background-color: #007bff;\n    color: white;\n    border: none;\n    padding: 10px 20px;\n    margin: 10px;\n    border-radius: 4px;\n    cursor: pointer;\n  }\n  \n  .btnSecondary {\n    background-color: #6c757d;\n    color: white;\n    border: none;\n    padding: 10px 20px;\n    margin: 10px;\n    border-radius: 4px;\n    cursor: pointer;\n  }\n  \n  .errorMessage {\n    color: red;\n    margin-top: 10px;\n  }\n  "
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/components/Modal.js",
    "content": "import React from 'react';\n\nconst Modal = ({ isOpen, onClose, onClaim, rewardAmount }) => {\n  if (!isOpen) return null;\n\n  return (\n    <div className=\"modal-overlay\">\n      <div className=\"modal-content\">\n        <h2>Claim Reward</h2>\n        <p>Your reward amount is: {rewardAmount} REWARD</p>\n        <button onClick={onClaim} className=\"btn-primary\">\n          Claim\n        </button>\n        <button onClick={onClose} className=\"btn-secondary\">\n          Close\n        </button>\n      </div>\n    </div>\n  );\n};\n\nexport default Modal;\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/contracts/IRewardToken.json",
    "content": "{\n  \"_format\": \"hh-sol-artifact-1\",\n  \"contractName\": \"IRewardToken\",\n  \"sourceName\": \"contracts/StakingDapp.sol\",\n  \"abi\": [\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Approval\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Transfer\",\n      \"type\": \"event\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"allowance\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"approve\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bool\",\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"balanceOf\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"mint\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"totalSupply\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transfer\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bool\",\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transferFrom\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bool\",\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"bytecode\": \"0x\",\n  \"deployedBytecode\": \"0x\",\n  \"linkReferences\": {},\n  \"deployedLinkReferences\": {}\n}\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/contracts/RewardToken.json",
    "content": "{\n  \"_format\": \"hh-sol-artifact-1\",\n  \"contractName\": \"RewardToken\",\n  \"sourceName\": \"contracts/RewardToken.sol\",\n  \"abi\": [\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"internalType\": \"string\",\n          \"name\": \"symbol\",\n          \"type\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"ECDSAInvalidSignature\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"length\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"ECDSAInvalidSignatureLength\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"s\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"ECDSAInvalidSignatureS\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"allowance\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"needed\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"ERC20InsufficientAllowance\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"balance\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"needed\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"ERC20InsufficientBalance\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"approver\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC20InvalidApprover\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"receiver\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC20InvalidReceiver\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC20InvalidSender\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC20InvalidSpender\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"deadline\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"ERC2612ExpiredSignature\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"signer\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC2612InvalidSigner\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"currentNonce\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"InvalidAccountNonce\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"InvalidShortString\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnableInvalidOwner\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"str\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"StringTooLong\",\n      \"type\": \"error\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Approval\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [],\n      \"name\": \"EIP712DomainChanged\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Transfer\",\n      \"type\": \"event\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"DOMAIN_SEPARATOR\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"allowance\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"approve\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bool\",\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"balanceOf\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"decimals\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint8\",\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"eip712Domain\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bytes1\",\n          \"name\": \"fields\",\n          \"type\": \"bytes1\"\n        },\n        {\n          \"internalType\": \"string\",\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"internalType\": \"string\",\n          \"name\": \"version\",\n          \"type\": \"string\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"chainId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"verifyingContract\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"salt\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"internalType\": \"uint256[]\",\n          \"name\": \"extensions\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"mint\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"name\",\n      \"outputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"nonces\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"deadline\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"uint8\",\n          \"name\": \"v\",\n          \"type\": \"uint8\"\n        },\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"r\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"s\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"permit\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"symbol\",\n      \"outputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"totalSupply\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transfer\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bool\",\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transferFrom\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bool\",\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"bytecode\": \"0x6101606040523480156200001257600080fd5b506040516200161b3803806200161b83398101604081905262000035916200030a565b6040805180820190915260018152603160f81b602082015282908190338285600362000062838262000405565b50600462000071828262000405565b5050506001600160a01b038116620000a457604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000af816200016f565b50620000bd826006620001c1565b61012052620000ce816007620001c1565b61014052815160208084019190912060e052815190820120610100524660a0526200015c60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506200052b915050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602083511015620001e157620001d983620001fa565b9050620001f4565b81620001ee848262000405565b5060ff90505b92915050565b600080829050601f8151111562000228578260405163305a27a960e01b81526004016200009b9190620004d1565b8051620002358262000506565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200027057818101518382015260200162000256565b50506000910152565b600082601f8301126200028b57600080fd5b81516001600160401b0380821115620002a857620002a86200023d565b604051601f8301601f19908116603f01168101908282118183101715620002d357620002d36200023d565b81604052838152866020858801011115620002ed57600080fd5b6200030084602083016020890162000253565b9695505050505050565b600080604083850312156200031e57600080fd5b82516001600160401b03808211156200033657600080fd5b620003448683870162000279565b935060208501519150808211156200035b57600080fd5b506200036a8582860162000279565b9150509250929050565b600181811c908216806200038957607f821691505b602082108103620003aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000400576000816000526020600020601f850160051c81016020861015620003db5750805b601f850160051c820191505b81811015620003fc57828155600101620003e7565b5050505b505050565b81516001600160401b038111156200042157620004216200023d565b620004398162000432845462000374565b84620003b0565b602080601f831160018114620004715760008415620004585750858301515b600019600386901b1c1916600185901b178555620003fc565b600085815260208120601f198616915b82811015620004a25788860151825594840194600190910190840162000481565b5085821015620004c15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620004f281604085016020870162000253565b601f01601f19169190910160400192915050565b80516020808301519190811015620003aa5760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516110956200058660003960006108980152600061086b0152600061075e0152600061073601526000610691015260006106bb015260006106e501526110956000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a257806395d89b411161007157806395d89b411461021c578063a9059cbb14610224578063d505accf14610237578063dd62ed3e1461024a578063f2fde38b1461028357600080fd5b8063715018a6146101cb5780637ecebe00146101d357806384b0196e146101e65780638da5cb5b1461020157600080fd5b8063313ce567116100de578063313ce567146101765780633644e5151461018557806340c10f191461018d57806370a08231146101a257600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b610118610296565b6040516101259190610df8565b60405180910390f35b61014161013c366004610e2e565b610328565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610e58565b610342565b60405160128152602001610125565b610155610366565b6101a061019b366004610e2e565b610375565b005b6101556101b0366004610e94565b6001600160a01b031660009081526020819052604090205490565b6101a0610383565b6101556101e1366004610e94565b610397565b6101ee6103b5565b6040516101259796959493929190610eaf565b6005546040516001600160a01b039091168152602001610125565b6101186103fb565b610141610232366004610e2e565b61040a565b6101a0610245366004610f48565b610418565b610155610258366004610fbb565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101a0610291366004610e94565b610557565b6060600380546102a590610fee565b80601f01602080910402602001604051908101604052809291908181526020018280546102d190610fee565b801561031e5780601f106102f35761010080835404028352916020019161031e565b820191906000526020600020905b81548152906001019060200180831161030157829003601f168201915b5050505050905090565b600033610336818585610595565b60019150505b92915050565b6000336103508582856105a7565b61035b858585610625565b506001949350505050565b6000610370610684565b905090565b61037f82826107af565b5050565b61038b6107e5565b6103956000610812565b565b6001600160a01b03811660009081526008602052604081205461033c565b6000606080600080600060606103c9610864565b6103d1610891565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102a590610fee565b600033610336818585610625565b834211156104415760405163313c898160e11b8152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861048e8c6001600160a01b0316600090815260086020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006104e9826108be565b905060006104f9828787876108eb565b9050896001600160a01b0316816001600160a01b031614610540576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610438565b61054b8a8a8a610595565b50505050505050505050565b61055f6107e5565b6001600160a01b03811661058957604051631e4fbdf760e01b815260006004820152602401610438565b61059281610812565b50565b6105a28383836001610919565b505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461061f578181101561061057604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610438565b61061f84848484036000610919565b50505050565b6001600160a01b03831661064f57604051634b637e8f60e11b815260006004820152602401610438565b6001600160a01b0382166106795760405163ec442f0560e01b815260006004820152602401610438565b6105a28383836109ee565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156106dd57507f000000000000000000000000000000000000000000000000000000000000000046145b1561070757507f000000000000000000000000000000000000000000000000000000000000000090565b610370604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166107d95760405163ec442f0560e01b815260006004820152602401610438565b61037f600083836109ee565b6005546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610438565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606103707f00000000000000000000000000000000000000000000000000000000000000006006610b18565b60606103707f00000000000000000000000000000000000000000000000000000000000000006007610b18565b600061033c6108cb610684565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000806108fd88888888610bc3565b92509250925061090d8282610c92565b50909695505050505050565b6001600160a01b0384166109435760405163e602df0560e01b815260006004820152602401610438565b6001600160a01b03831661096d57604051634a1406b160e11b815260006004820152602401610438565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561061f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109e091815260200190565b60405180910390a350505050565b6001600160a01b038316610a19578060026000828254610a0e9190611028565b90915550610a8b9050565b6001600160a01b03831660009081526020819052604090205481811015610a6c5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610438565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610aa757600280548290039055610ac6565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0b91815260200190565b60405180910390a3505050565b606060ff8314610b3257610b2b83610d4b565b905061033c565b818054610b3e90610fee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6a90610fee565b8015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b820191906000526020600020905b815481529060010190602001808311610b9a57829003601f168201915b5050505050905061033c565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bfe5750600091506003905082610c88565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c52573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c7e57506000925060019150829050610c88565b9250600091508190505b9450945094915050565b6000826003811115610ca657610ca6611049565b03610caf575050565b6001826003811115610cc357610cc3611049565b03610ce15760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610cf557610cf5611049565b03610d165760405163fce698f760e01b815260048101829052602401610438565b6003826003811115610d2a57610d2a611049565b0361037f576040516335e2f38360e21b815260048101829052602401610438565b60606000610d5883610d8a565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561033c57604051632cd44ac360e21b815260040160405180910390fd5b6000815180845260005b81811015610dd857602081850181015186830182015201610dbc565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610db2565b9392505050565b80356001600160a01b0381168114610e2957600080fd5b919050565b60008060408385031215610e4157600080fd5b610e4a83610e12565b946020939093013593505050565b600080600060608486031215610e6d57600080fd5b610e7684610e12565b9250610e8460208501610e12565b9150604084013590509250925092565b600060208284031215610ea657600080fd5b610e0b82610e12565b60ff60f81b881681526000602060e06020840152610ed060e084018a610db2565b8381036040850152610ee2818a610db2565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015610f3657835183529284019291840191600101610f1a565b50909c9b505050505050505050505050565b600080600080600080600060e0888a031215610f6357600080fd5b610f6c88610e12565b9650610f7a60208901610e12565b95506040880135945060608801359350608088013560ff81168114610f9e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610fce57600080fd5b610fd783610e12565b9150610fe560208401610e12565b90509250929050565b600181811c9082168061100257607f821691505b60208210810361102257634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561033c57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea264697066735822122058aceb15c5f9ab16678b7846629c6034bcc6687b7db72fb51fda48bc4787f5b464736f6c63430008180033\",\n  \"deployedBytecode\": \"0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a257806395d89b411161007157806395d89b411461021c578063a9059cbb14610224578063d505accf14610237578063dd62ed3e1461024a578063f2fde38b1461028357600080fd5b8063715018a6146101cb5780637ecebe00146101d357806384b0196e146101e65780638da5cb5b1461020157600080fd5b8063313ce567116100de578063313ce567146101765780633644e5151461018557806340c10f191461018d57806370a08231146101a257600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b610118610296565b6040516101259190610df8565b60405180910390f35b61014161013c366004610e2e565b610328565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610e58565b610342565b60405160128152602001610125565b610155610366565b6101a061019b366004610e2e565b610375565b005b6101556101b0366004610e94565b6001600160a01b031660009081526020819052604090205490565b6101a0610383565b6101556101e1366004610e94565b610397565b6101ee6103b5565b6040516101259796959493929190610eaf565b6005546040516001600160a01b039091168152602001610125565b6101186103fb565b610141610232366004610e2e565b61040a565b6101a0610245366004610f48565b610418565b610155610258366004610fbb565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101a0610291366004610e94565b610557565b6060600380546102a590610fee565b80601f01602080910402602001604051908101604052809291908181526020018280546102d190610fee565b801561031e5780601f106102f35761010080835404028352916020019161031e565b820191906000526020600020905b81548152906001019060200180831161030157829003601f168201915b5050505050905090565b600033610336818585610595565b60019150505b92915050565b6000336103508582856105a7565b61035b858585610625565b506001949350505050565b6000610370610684565b905090565b61037f82826107af565b5050565b61038b6107e5565b6103956000610812565b565b6001600160a01b03811660009081526008602052604081205461033c565b6000606080600080600060606103c9610864565b6103d1610891565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102a590610fee565b600033610336818585610625565b834211156104415760405163313c898160e11b8152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861048e8c6001600160a01b0316600090815260086020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006104e9826108be565b905060006104f9828787876108eb565b9050896001600160a01b0316816001600160a01b031614610540576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610438565b61054b8a8a8a610595565b50505050505050505050565b61055f6107e5565b6001600160a01b03811661058957604051631e4fbdf760e01b815260006004820152602401610438565b61059281610812565b50565b6105a28383836001610919565b505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461061f578181101561061057604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610438565b61061f84848484036000610919565b50505050565b6001600160a01b03831661064f57604051634b637e8f60e11b815260006004820152602401610438565b6001600160a01b0382166106795760405163ec442f0560e01b815260006004820152602401610438565b6105a28383836109ee565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156106dd57507f000000000000000000000000000000000000000000000000000000000000000046145b1561070757507f000000000000000000000000000000000000000000000000000000000000000090565b610370604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166107d95760405163ec442f0560e01b815260006004820152602401610438565b61037f600083836109ee565b6005546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610438565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606103707f00000000000000000000000000000000000000000000000000000000000000006006610b18565b60606103707f00000000000000000000000000000000000000000000000000000000000000006007610b18565b600061033c6108cb610684565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000806108fd88888888610bc3565b92509250925061090d8282610c92565b50909695505050505050565b6001600160a01b0384166109435760405163e602df0560e01b815260006004820152602401610438565b6001600160a01b03831661096d57604051634a1406b160e11b815260006004820152602401610438565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561061f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109e091815260200190565b60405180910390a350505050565b6001600160a01b038316610a19578060026000828254610a0e9190611028565b90915550610a8b9050565b6001600160a01b03831660009081526020819052604090205481811015610a6c5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610438565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610aa757600280548290039055610ac6565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0b91815260200190565b60405180910390a3505050565b606060ff8314610b3257610b2b83610d4b565b905061033c565b818054610b3e90610fee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6a90610fee565b8015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b820191906000526020600020905b815481529060010190602001808311610b9a57829003601f168201915b5050505050905061033c565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bfe5750600091506003905082610c88565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c52573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c7e57506000925060019150829050610c88565b9250600091508190505b9450945094915050565b6000826003811115610ca657610ca6611049565b03610caf575050565b6001826003811115610cc357610cc3611049565b03610ce15760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610cf557610cf5611049565b03610d165760405163fce698f760e01b815260048101829052602401610438565b6003826003811115610d2a57610d2a611049565b0361037f576040516335e2f38360e21b815260048101829052602401610438565b60606000610d5883610d8a565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561033c57604051632cd44ac360e21b815260040160405180910390fd5b6000815180845260005b81811015610dd857602081850181015186830182015201610dbc565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e0b6020830184610db2565b9392505050565b80356001600160a01b0381168114610e2957600080fd5b919050565b60008060408385031215610e4157600080fd5b610e4a83610e12565b946020939093013593505050565b600080600060608486031215610e6d57600080fd5b610e7684610e12565b9250610e8460208501610e12565b9150604084013590509250925092565b600060208284031215610ea657600080fd5b610e0b82610e12565b60ff60f81b881681526000602060e06020840152610ed060e084018a610db2565b8381036040850152610ee2818a610db2565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015610f3657835183529284019291840191600101610f1a565b50909c9b505050505050505050505050565b600080600080600080600060e0888a031215610f6357600080fd5b610f6c88610e12565b9650610f7a60208901610e12565b95506040880135945060608801359350608088013560ff81168114610f9e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610fce57600080fd5b610fd783610e12565b9150610fe560208401610e12565b90509250929050565b600181811c9082168061100257607f821691505b60208210810361102257634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561033c57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea264697066735822122058aceb15c5f9ab16678b7846629c6034bcc6687b7db72fb51fda48bc4787f5b464736f6c63430008180033\",\n  \"linkReferences\": {},\n  \"deployedLinkReferences\": {}\n}\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/contracts/StakingDapp.json",
    "content": "{\n  \"_format\": \"hh-sol-artifact-1\",\n  \"contractName\": \"StakingDapp\",\n  \"sourceName\": \"contracts/StakingDapp.sol\",\n  \"abi\": [\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"_stakingToken\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"_rewardToken\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"target\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"AddressEmptyCode\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"AddressInsufficientBalance\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"FailedInnerCall\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnableInvalidOwner\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"token\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"SafeERC20FailedOperation\",\n      \"type\": \"error\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"user\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"RewardClaimed\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"user\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Staked\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"user\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Unstaked\",\n      \"type\": \"event\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"REWARD_AMOUNT\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"REWARD_INTERVAL\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"claimReward\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"user\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getRewardAmount\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"user\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getStakedAmount\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"rewardBalance\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"rewardToken\",\n      \"outputs\": [\n        {\n          \"internalType\": \"contract IRewardToken\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"stake\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"stakes\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"lastRewardTime\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"stakingToken\",\n      \"outputs\": [\n        {\n          \"internalType\": \"contract IERC20\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"unstake\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"bytecode\": \"0x608060405234801561001057600080fd5b50604051610c34380380610c3483398101604081905261002f91610169565b338061005657604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61005f816100fd565b506001600160a01b0382161580159061008057506001600160a01b03811615155b6100cc5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420746f6b656e20616464726573736573000000000000000000604482015260640161004d565b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905561019c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461016457600080fd5b919050565b6000806040838503121561017c57600080fd5b6101858361014d565b91506101936020840161014d565b90509250929050565b610a89806101ab6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806372f702f31161008c578063b88a802f11610066578063b88a802f1461020e578063cf84944214610216578063f2fde38b1461021e578063f7c618c11461023157600080fd5b806372f702f3146101bf5780638da5cb5b146101ea578063a694fc3a146101fb57600080fd5b80634da6a556116100c85780634da6a556146101665780635dbdda691461018f57806367b40cf714610197578063715018a6146101b757600080fd5b806316934fc4146100ef5780632e17de781461013057806344a040f514610145575b600080fd5b6101166100fd36600461094b565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61014361013e366004610974565b610244565b005b61015861015336600461094b565b61035d565b604051908152602001610127565b61015861017436600461094b565b6001600160a01b031660009081526003602052604090205490565b610158600a81565b6101586101a536600461094b565b60046020526000908152604090205481565b610143610370565b6001546101d2906001600160a01b031681565b6040516001600160a01b039091168152602001610127565b6000546001600160a01b03166101d2565b610143610209366004610974565b610384565b6101436104ae565b610158600581565b61014361022c36600461094b565b6105d4565b6002546101d2906001600160a01b031681565b3360009081526003602052604090205481111561029f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064015b60405180910390fd5b60006102aa33610612565b336000908152600460205260408120805492935083929091906102ce9084906109a3565b909155505033600090815260036020526040812080548492906102f29084906109b6565b90915550503360008181526003602052604090204260019182015554610324916001600160a01b03909116908461069e565b60405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a25050565b60008061036983610612565b9392505050565b610378610702565b610382600061072f565b565b600081116103d45760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610296565b336000908152600360205260409020541561041f5760006103f433610612565b336000908152600460205260408120805492935083929091906104189084906109a3565b9091555050505b600154610437906001600160a01b031633308461077f565b33600090815260036020526040812080548392906104569084906109a3565b9091555050336000818152600360205260409081902042600190910155517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d906104a39084815260200190565b60405180910390a250565b3360008181526004602052604081205490916104c990610612565b6104d391906109a3565b90506000811161051b5760405162461bcd60e51b81526020600482015260136024820152724e6f2072657761726420617661696c61626c6560681b6044820152606401610296565b3360008181526004602081815260408084208490556003909152918290204260019091015560025491516340c10f1960e01b815290810192909252602482018390526001600160a01b0316906340c10f1990604401600060405180830381600087803b15801561058a57600080fd5b505af115801561059e573d6000803e3d6000fd5b50506040518381523392507f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724191506020016104a3565b6105dc610702565b6001600160a01b03811661060657604051631e4fbdf760e01b815260006004820152602401610296565b61060f8161072f565b50565b6001600160a01b038116600090815260036020908152604080832081518083019092528054808352600190910154928201929092529082036106575750600092915050565b6020810151429060009061066b90836109b6565b9050600061067a600a836109c9565b845190915061068a6005836109eb565b61069491906109eb565b9695505050505050565b6040516001600160a01b038381166024830152604482018390526106fd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506107be565b505050565b6000546001600160a01b031633146103825760405163118cdaa760e01b8152336004820152602401610296565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0384811660248301528381166044830152606482018390526107b89186918216906323b872dd906084016106cb565b50505050565b60006107d36001600160a01b03841683610821565b905080516000141580156107f85750808060200190518101906107f69190610a02565b155b156106fd57604051635274afe760e01b81526001600160a01b0384166004820152602401610296565b606061082f83836000610838565b90505b92915050565b60608147101561085d5760405163cd78605960e01b8152306004820152602401610296565b600080856001600160a01b031684866040516108799190610a24565b60006040518083038185875af1925050503d80600081146108b6576040519150601f19603f3d011682016040523d82523d6000602084013e6108bb565b606091505b50915091506106948683836060826108db576108d682610922565b610369565b81511580156108f257506001600160a01b0384163b155b1561091b57604051639996b31560e01b81526001600160a01b0385166004820152602401610296565b5080610369565b8051156109325780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006020828403121561095d57600080fd5b81356001600160a01b038116811461036957600080fd5b60006020828403121561098657600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108325761083261098d565b818103818111156108325761083261098d565b6000826109e657634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108325761083261098d565b600060208284031215610a1457600080fd5b8151801515811461036957600080fd5b6000825160005b81811015610a455760208186018101518583015201610a2b565b50600092019182525091905056fea2646970667358221220f3921a408b8e35be31fb9b731a00916ad51e7bbebbd2b498e54d7d7e78acab0d64736f6c63430008180033\",\n  \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806372f702f31161008c578063b88a802f11610066578063b88a802f1461020e578063cf84944214610216578063f2fde38b1461021e578063f7c618c11461023157600080fd5b806372f702f3146101bf5780638da5cb5b146101ea578063a694fc3a146101fb57600080fd5b80634da6a556116100c85780634da6a556146101665780635dbdda691461018f57806367b40cf714610197578063715018a6146101b757600080fd5b806316934fc4146100ef5780632e17de781461013057806344a040f514610145575b600080fd5b6101166100fd36600461094b565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61014361013e366004610974565b610244565b005b61015861015336600461094b565b61035d565b604051908152602001610127565b61015861017436600461094b565b6001600160a01b031660009081526003602052604090205490565b610158600a81565b6101586101a536600461094b565b60046020526000908152604090205481565b610143610370565b6001546101d2906001600160a01b031681565b6040516001600160a01b039091168152602001610127565b6000546001600160a01b03166101d2565b610143610209366004610974565b610384565b6101436104ae565b610158600581565b61014361022c36600461094b565b6105d4565b6002546101d2906001600160a01b031681565b3360009081526003602052604090205481111561029f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064015b60405180910390fd5b60006102aa33610612565b336000908152600460205260408120805492935083929091906102ce9084906109a3565b909155505033600090815260036020526040812080548492906102f29084906109b6565b90915550503360008181526003602052604090204260019182015554610324916001600160a01b03909116908461069e565b60405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a25050565b60008061036983610612565b9392505050565b610378610702565b610382600061072f565b565b600081116103d45760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610296565b336000908152600360205260409020541561041f5760006103f433610612565b336000908152600460205260408120805492935083929091906104189084906109a3565b9091555050505b600154610437906001600160a01b031633308461077f565b33600090815260036020526040812080548392906104569084906109a3565b9091555050336000818152600360205260409081902042600190910155517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d906104a39084815260200190565b60405180910390a250565b3360008181526004602052604081205490916104c990610612565b6104d391906109a3565b90506000811161051b5760405162461bcd60e51b81526020600482015260136024820152724e6f2072657761726420617661696c61626c6560681b6044820152606401610296565b3360008181526004602081815260408084208490556003909152918290204260019091015560025491516340c10f1960e01b815290810192909252602482018390526001600160a01b0316906340c10f1990604401600060405180830381600087803b15801561058a57600080fd5b505af115801561059e573d6000803e3d6000fd5b50506040518381523392507f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724191506020016104a3565b6105dc610702565b6001600160a01b03811661060657604051631e4fbdf760e01b815260006004820152602401610296565b61060f8161072f565b50565b6001600160a01b038116600090815260036020908152604080832081518083019092528054808352600190910154928201929092529082036106575750600092915050565b6020810151429060009061066b90836109b6565b9050600061067a600a836109c9565b845190915061068a6005836109eb565b61069491906109eb565b9695505050505050565b6040516001600160a01b038381166024830152604482018390526106fd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506107be565b505050565b6000546001600160a01b031633146103825760405163118cdaa760e01b8152336004820152602401610296565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0384811660248301528381166044830152606482018390526107b89186918216906323b872dd906084016106cb565b50505050565b60006107d36001600160a01b03841683610821565b905080516000141580156107f85750808060200190518101906107f69190610a02565b155b156106fd57604051635274afe760e01b81526001600160a01b0384166004820152602401610296565b606061082f83836000610838565b90505b92915050565b60608147101561085d5760405163cd78605960e01b8152306004820152602401610296565b600080856001600160a01b031684866040516108799190610a24565b60006040518083038185875af1925050503d80600081146108b6576040519150601f19603f3d011682016040523d82523d6000602084013e6108bb565b606091505b50915091506106948683836060826108db576108d682610922565b610369565b81511580156108f257506001600160a01b0384163b155b1561091b57604051639996b31560e01b81526001600160a01b0385166004820152602401610296565b5080610369565b8051156109325780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006020828403121561095d57600080fd5b81356001600160a01b038116811461036957600080fd5b60006020828403121561098657600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108325761083261098d565b818103818111156108325761083261098d565b6000826109e657634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108325761083261098d565b600060208284031215610a1457600080fd5b8151801515811461036957600080fd5b6000825160005b81811015610a455760208186018101518583015201610a2b565b50600092019182525091905056fea2646970667358221220f3921a408b8e35be31fb9b731a00916ad51e7bbebbd2b498e54d7d7e78acab0d64736f6c63430008180033\",\n  \"linkReferences\": {},\n  \"deployedLinkReferences\": {}\n}\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/contracts/StakingToken.json",
    "content": "{\n  \"_format\": \"hh-sol-artifact-1\",\n  \"contractName\": \"StakingToken\",\n  \"sourceName\": \"contracts/StakingToken.sol\",\n  \"abi\": [\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"internalType\": \"string\",\n          \"name\": \"symbol\",\n          \"type\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"ECDSAInvalidSignature\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"length\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"ECDSAInvalidSignatureLength\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"s\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"ECDSAInvalidSignatureS\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"allowance\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"needed\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"ERC20InsufficientAllowance\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"balance\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"needed\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"ERC20InsufficientBalance\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"approver\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC20InvalidApprover\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"receiver\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC20InvalidReceiver\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"sender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC20InvalidSender\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC20InvalidSpender\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"deadline\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"ERC2612ExpiredSignature\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"signer\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"ERC2612InvalidSigner\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"currentNonce\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"InvalidAccountNonce\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"InvalidShortString\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnableInvalidOwner\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"str\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"StringTooLong\",\n      \"type\": \"error\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Approval\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [],\n      \"name\": \"EIP712DomainChanged\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"Transfer\",\n      \"type\": \"event\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"DOMAIN_SEPARATOR\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"allowance\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"approve\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bool\",\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"balanceOf\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"decimals\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint8\",\n          \"name\": \"\",\n          \"type\": \"uint8\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"eip712Domain\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bytes1\",\n          \"name\": \"fields\",\n          \"type\": \"bytes1\"\n        },\n        {\n          \"internalType\": \"string\",\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"internalType\": \"string\",\n          \"name\": \"version\",\n          \"type\": \"string\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"chainId\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"verifyingContract\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"salt\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"internalType\": \"uint256[]\",\n          \"name\": \"extensions\",\n          \"type\": \"uint256[]\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"mint\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"name\",\n      \"outputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"nonces\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"spender\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"deadline\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"internalType\": \"uint8\",\n          \"name\": \"v\",\n          \"type\": \"uint8\"\n        },\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"r\",\n          \"type\": \"bytes32\"\n        },\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"s\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"permit\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"symbol\",\n      \"outputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"totalSupply\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transfer\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bool\",\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"from\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"address\",\n          \"name\": \"to\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"value\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"transferFrom\",\n      \"outputs\": [\n        {\n          \"internalType\": \"bool\",\n          \"name\": \"\",\n          \"type\": \"bool\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"bytecode\": \"0x6101606040523480156200001257600080fd5b50604051620016743803806200167483398101604081905262000035916200030a565b6040805180820190915260018152603160f81b602082015282908190338285600362000062838262000405565b50600462000071828262000405565b5050506001600160a01b038116620000a457604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000af816200016f565b50620000bd826006620001c1565b61012052620000ce816007620001c1565b61014052815160208084019190912060e052815190820120610100524660a0526200015c60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506200052b915050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602083511015620001e157620001d983620001fa565b9050620001f4565b81620001ee848262000405565b5060ff90505b92915050565b600080829050601f8151111562000228578260405163305a27a960e01b81526004016200009b9190620004d1565b8051620002358262000506565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200027057818101518382015260200162000256565b50506000910152565b600082601f8301126200028b57600080fd5b81516001600160401b0380821115620002a857620002a86200023d565b604051601f8301601f19908116603f01168101908282118183101715620002d357620002d36200023d565b81604052838152866020858801011115620002ed57600080fd5b6200030084602083016020890162000253565b9695505050505050565b600080604083850312156200031e57600080fd5b82516001600160401b03808211156200033657600080fd5b620003448683870162000279565b935060208501519150808211156200035b57600080fd5b506200036a8582860162000279565b9150509250929050565b600181811c908216806200038957607f821691505b602082108103620003aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000400576000816000526020600020601f850160051c81016020861015620003db5750805b601f850160051c820191505b81811015620003fc57828155600101620003e7565b5050505b505050565b81516001600160401b038111156200042157620004216200023d565b620004398162000432845462000374565b84620003b0565b602080601f831160018114620004715760008415620004585750858301515b600019600386901b1c1916600185901b178555620003fc565b600085815260208120601f198616915b82811015620004a25788860151825594840194600190910190840162000481565b5085821015620004c15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620004f281604085016020870162000253565b601f01601f19169190910160400192915050565b80516020808301519190811015620003aa5760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516110ee6200058660003960006108f1015260006108c4015260006107b70152600061078f015260006106ea015260006107140152600061073e01526110ee6000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a257806395d89b411161007157806395d89b411461021c578063a9059cbb14610224578063d505accf14610237578063dd62ed3e1461024a578063f2fde38b1461028357600080fd5b8063715018a6146101cb5780637ecebe00146101d357806384b0196e146101e65780638da5cb5b1461020157600080fd5b8063313ce567116100de578063313ce567146101765780633644e5151461018557806340c10f191461018d57806370a08231146101a257600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b610118610296565b6040516101259190610e51565b60405180910390f35b61014161013c366004610e87565b610328565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610eb1565b610342565b60405160128152602001610125565b610155610366565b6101a061019b366004610e87565b610375565b005b6101556101b0366004610eed565b6001600160a01b031660009081526020819052604090205490565b6101a06103e1565b6101556101e1366004610eed565b6103f5565b6101ee610413565b6040516101259796959493929190610f08565b6005546040516001600160a01b039091168152602001610125565b610118610459565b610141610232366004610e87565b610468565b6101a0610245366004610fa1565b610476565b610155610258366004611014565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101a0610291366004610eed565b6105b0565b6060600380546102a590611047565b80601f01602080910402602001604051908101604052809291908181526020018280546102d190611047565b801561031e5780601f106102f35761010080835404028352916020019161031e565b820191906000526020600020905b81548152906001019060200180831161030157829003601f168201915b5050505050905090565b6000336103368185856105ee565b60019150505b92915050565b600033610350858285610600565b61035b85858561067e565b506001949350505050565b60006103706106dd565b905090565b68056bc75e2d631000008111156103d35760405162461bcd60e51b815260206004820152601c60248201527f616d6f756e74206d757374206265206c657373207468616e203130300000000060448201526064015b60405180910390fd5b6103dd8282610808565b5050565b6103e961083e565b6103f3600061086b565b565b6001600160a01b03811660009081526008602052604081205461033c565b6000606080600080600060606104276108bd565b61042f6108ea565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102a590611047565b60003361033681858561067e565b8342111561049a5760405163313c898160e11b8152600481018590526024016103ca565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886104e78c6001600160a01b0316600090815260086020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061054282610917565b9050600061055282878787610944565b9050896001600160a01b0316816001600160a01b031614610599576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103ca565b6105a48a8a8a6105ee565b50505050505050505050565b6105b861083e565b6001600160a01b0381166105e257604051631e4fbdf760e01b8152600060048201526024016103ca565b6105eb8161086b565b50565b6105fb8383836001610972565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610678578181101561066957604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103ca565b61067884848484036000610972565b50505050565b6001600160a01b0383166106a857604051634b637e8f60e11b8152600060048201526024016103ca565b6001600160a01b0382166106d25760405163ec442f0560e01b8152600060048201526024016103ca565b6105fb838383610a47565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561073657507f000000000000000000000000000000000000000000000000000000000000000046145b1561076057507f000000000000000000000000000000000000000000000000000000000000000090565b610370604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108325760405163ec442f0560e01b8152600060048201526024016103ca565b6103dd60008383610a47565b6005546001600160a01b031633146103f35760405163118cdaa760e01b81523360048201526024016103ca565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606103707f00000000000000000000000000000000000000000000000000000000000000006006610b71565b60606103707f00000000000000000000000000000000000000000000000000000000000000006007610b71565b600061033c6109246106dd565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061095688888888610c1c565b9250925092506109668282610ceb565b50909695505050505050565b6001600160a01b03841661099c5760405163e602df0560e01b8152600060048201526024016103ca565b6001600160a01b0383166109c657604051634a1406b160e11b8152600060048201526024016103ca565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561067857826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3991815260200190565b60405180910390a350505050565b6001600160a01b038316610a72578060026000828254610a679190611081565b90915550610ae49050565b6001600160a01b03831660009081526020819052604090205481811015610ac55760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103ca565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610b0057600280548290039055610b1f565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b6491815260200190565b60405180910390a3505050565b606060ff8314610b8b57610b8483610da4565b905061033c565b818054610b9790611047565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc390611047565b8015610c105780601f10610be557610100808354040283529160200191610c10565b820191906000526020600020905b815481529060010190602001808311610bf357829003601f168201915b5050505050905061033c565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610c575750600091506003905082610ce1565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610cab573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610cd757506000925060019150829050610ce1565b9250600091508190505b9450945094915050565b6000826003811115610cff57610cff6110a2565b03610d08575050565b6001826003811115610d1c57610d1c6110a2565b03610d3a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610d4e57610d4e6110a2565b03610d6f5760405163fce698f760e01b8152600481018290526024016103ca565b6003826003811115610d8357610d836110a2565b036103dd576040516335e2f38360e21b8152600481018290526024016103ca565b60606000610db183610de3565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561033c57604051632cd44ac360e21b815260040160405180910390fd5b6000815180845260005b81811015610e3157602081850181015186830182015201610e15565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e646020830184610e0b565b9392505050565b80356001600160a01b0381168114610e8257600080fd5b919050565b60008060408385031215610e9a57600080fd5b610ea383610e6b565b946020939093013593505050565b600080600060608486031215610ec657600080fd5b610ecf84610e6b565b9250610edd60208501610e6b565b9150604084013590509250925092565b600060208284031215610eff57600080fd5b610e6482610e6b565b60ff60f81b881681526000602060e06020840152610f2960e084018a610e0b565b8381036040850152610f3b818a610e0b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015610f8f57835183529284019291840191600101610f73565b50909c9b505050505050505050505050565b600080600080600080600060e0888a031215610fbc57600080fd5b610fc588610e6b565b9650610fd360208901610e6b565b95506040880135945060608801359350608088013560ff81168114610ff757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561102757600080fd5b61103083610e6b565b915061103e60208401610e6b565b90509250929050565b600181811c9082168061105b57607f821691505b60208210810361107b57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561033c57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c76c3d894040a933b0e7fa69e5a0f9e25228b0d3cfde796f6163abfc9f1aae1764736f6c63430008180033\",\n  \"deployedBytecode\": \"0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a257806395d89b411161007157806395d89b411461021c578063a9059cbb14610224578063d505accf14610237578063dd62ed3e1461024a578063f2fde38b1461028357600080fd5b8063715018a6146101cb5780637ecebe00146101d357806384b0196e146101e65780638da5cb5b1461020157600080fd5b8063313ce567116100de578063313ce567146101765780633644e5151461018557806340c10f191461018d57806370a08231146101a257600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b610118610296565b6040516101259190610e51565b60405180910390f35b61014161013c366004610e87565b610328565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610eb1565b610342565b60405160128152602001610125565b610155610366565b6101a061019b366004610e87565b610375565b005b6101556101b0366004610eed565b6001600160a01b031660009081526020819052604090205490565b6101a06103e1565b6101556101e1366004610eed565b6103f5565b6101ee610413565b6040516101259796959493929190610f08565b6005546040516001600160a01b039091168152602001610125565b610118610459565b610141610232366004610e87565b610468565b6101a0610245366004610fa1565b610476565b610155610258366004611014565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101a0610291366004610eed565b6105b0565b6060600380546102a590611047565b80601f01602080910402602001604051908101604052809291908181526020018280546102d190611047565b801561031e5780601f106102f35761010080835404028352916020019161031e565b820191906000526020600020905b81548152906001019060200180831161030157829003601f168201915b5050505050905090565b6000336103368185856105ee565b60019150505b92915050565b600033610350858285610600565b61035b85858561067e565b506001949350505050565b60006103706106dd565b905090565b68056bc75e2d631000008111156103d35760405162461bcd60e51b815260206004820152601c60248201527f616d6f756e74206d757374206265206c657373207468616e203130300000000060448201526064015b60405180910390fd5b6103dd8282610808565b5050565b6103e961083e565b6103f3600061086b565b565b6001600160a01b03811660009081526008602052604081205461033c565b6000606080600080600060606104276108bd565b61042f6108ea565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102a590611047565b60003361033681858561067e565b8342111561049a5760405163313c898160e11b8152600481018590526024016103ca565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886104e78c6001600160a01b0316600090815260086020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061054282610917565b9050600061055282878787610944565b9050896001600160a01b0316816001600160a01b031614610599576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103ca565b6105a48a8a8a6105ee565b50505050505050505050565b6105b861083e565b6001600160a01b0381166105e257604051631e4fbdf760e01b8152600060048201526024016103ca565b6105eb8161086b565b50565b6105fb8383836001610972565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610678578181101561066957604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103ca565b61067884848484036000610972565b50505050565b6001600160a01b0383166106a857604051634b637e8f60e11b8152600060048201526024016103ca565b6001600160a01b0382166106d25760405163ec442f0560e01b8152600060048201526024016103ca565b6105fb838383610a47565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561073657507f000000000000000000000000000000000000000000000000000000000000000046145b1561076057507f000000000000000000000000000000000000000000000000000000000000000090565b610370604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108325760405163ec442f0560e01b8152600060048201526024016103ca565b6103dd60008383610a47565b6005546001600160a01b031633146103f35760405163118cdaa760e01b81523360048201526024016103ca565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606103707f00000000000000000000000000000000000000000000000000000000000000006006610b71565b60606103707f00000000000000000000000000000000000000000000000000000000000000006007610b71565b600061033c6109246106dd565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061095688888888610c1c565b9250925092506109668282610ceb565b50909695505050505050565b6001600160a01b03841661099c5760405163e602df0560e01b8152600060048201526024016103ca565b6001600160a01b0383166109c657604051634a1406b160e11b8152600060048201526024016103ca565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561067857826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3991815260200190565b60405180910390a350505050565b6001600160a01b038316610a72578060026000828254610a679190611081565b90915550610ae49050565b6001600160a01b03831660009081526020819052604090205481811015610ac55760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103ca565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610b0057600280548290039055610b1f565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b6491815260200190565b60405180910390a3505050565b606060ff8314610b8b57610b8483610da4565b905061033c565b818054610b9790611047565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc390611047565b8015610c105780601f10610be557610100808354040283529160200191610c10565b820191906000526020600020905b815481529060010190602001808311610bf357829003601f168201915b5050505050905061033c565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610c575750600091506003905082610ce1565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610cab573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610cd757506000925060019150829050610ce1565b9250600091508190505b9450945094915050565b6000826003811115610cff57610cff6110a2565b03610d08575050565b6001826003811115610d1c57610d1c6110a2565b03610d3a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610d4e57610d4e6110a2565b03610d6f5760405163fce698f760e01b8152600481018290526024016103ca565b6003826003811115610d8357610d836110a2565b036103dd576040516335e2f38360e21b8152600481018290526024016103ca565b60606000610db183610de3565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f81111561033c57604051632cd44ac360e21b815260040160405180910390fd5b6000815180845260005b81811015610e3157602081850181015186830182015201610e15565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e646020830184610e0b565b9392505050565b80356001600160a01b0381168114610e8257600080fd5b919050565b60008060408385031215610e9a57600080fd5b610ea383610e6b565b946020939093013593505050565b600080600060608486031215610ec657600080fd5b610ecf84610e6b565b9250610edd60208501610e6b565b9150604084013590509250925092565b600060208284031215610eff57600080fd5b610e6482610e6b565b60ff60f81b881681526000602060e06020840152610f2960e084018a610e0b565b8381036040850152610f3b818a610e0b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015610f8f57835183529284019291840191600101610f73565b50909c9b505050505050505050505050565b600080600080600080600060e0888a031215610fbc57600080fd5b610fc588610e6b565b9650610fd360208901610e6b565b95506040880135945060608801359350608088013560ff81168114610ff757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561102757600080fd5b61103083610e6b565b915061103e60208401610e6b565b90509250929050565b600181811c9082168061105b57607f821691505b60208210810361107b57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561033c57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220c76c3d894040a933b0e7fa69e5a0f9e25228b0d3cfde796f6163abfc9f1aae1764736f6c63430008180033\",\n  \"linkReferences\": {},\n  \"deployedLinkReferences\": {}\n}\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/index.css",
    "content": ""
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/index.js",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/reportWebVitals.js",
    "content": "const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/frontend/src/setupTests.js",
    "content": "// jest-dom adds custom jest matchers for asserting on DOM nodes.\n// allows you to do things like:\n// expect(element).toHaveTextContent(/react/i)\n// learn more: https://github.com/testing-library/jest-dom\nimport '@testing-library/jest-dom';\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/hardhat.config.js",
    "content": "/**\n * @type import('hardhat/config').HardhatUserConfig\n */\n\nrequire('@nomiclabs/hardhat-ethers');\nrequire(\"@nomiclabs/hardhat-waffle\");\nrequire(\"dotenv\").config();\n\n\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n   defaultNetwork: 'core_testnet',\n\n   networks: {\n      hardhat: {\n      },\n      core_testnet: {\n         url: 'https://rpc.test2.btcs.network',\n         accounts: [PRIVATE_KEY],\n         chainId: 1114,\n      }\n   },\n   solidity: {\n      compilers: [\n        {\n           version: '0.8.24',\n           settings: {\n            evmVersion: 'shanghai',\n            optimizer: {\n                 enabled: true,\n                 runs: 200,\n              },\n           },\n        },\n      ],\n   },\n   paths: {\n      sources: './contracts',\n      cache: './cache',\n      artifacts: './artifacts',\n   },\n   mocha: {\n      timeout: 20000,\n   },\n};"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/ignition/modules/Lock.js",
    "content": "const { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/package.json",
    "content": "{\n  \"name\": \"staking-dapp\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@nomiclabs/hardhat-ethers\": \"^2.2.3\",\n    \"@nomiclabs/hardhat-waffle\": \"^2.0.6\",\n    \"@rainbow-me/rainbowkit\": \"^2.1.3\",\n    \"@web3-react/core\": \"^8.2.3\",\n    \"@web3-react/injected-connector\": \"^6.0.7\",\n    \"chai\": \"^5.1.1\",\n    \"dotenv\": \"^16.5.0\",\n    \"ethereum-waffle\": \"^4.0.10\",\n    \"ethers\": \"^5.7.2\"\n  },\n  \"devDependencies\": {\n    \"@openzeppelin/contracts\": \"^5.0.2\",\n    \"hardhat\": \"^2.22.6\"\n  }\n}\n"
  },
  {
    "path": "02-Basic Staking Full Stack Dapp/scripts/deploy.js",
    "content": "const { ethers } = require(\"hardhat\");\n\nasync function main() {\n    const [deployer] = await ethers.getSigners();\n\n    console.log(\"Deploying contracts with the account:\", deployer.address);\n\n    const StakingToken = await ethers.getContractFactory(\"StakingToken\");\n    const stakingToken = await StakingToken.deploy(\"Staking Token\", \"STK\");\n\n    const RewardToken = await ethers.getContractFactory(\"RewardToken\");\n    const rewardToken = await RewardToken.deploy(\"Reward Token\", \"RTK\");\n\n    const StakingDapp = await ethers.getContractFactory(\"StakingDapp\");\n    const stakingDapp = await StakingDapp.deploy(stakingToken.address, rewardToken.address);\n\n    console.log(\"Contracts deployed:\");\n    console.log(\"Staking Token:\", stakingToken.address);\n    console.log(\"Reward Token:\", rewardToken.address);\n    console.log(\"Staking Dapp:\", stakingDapp.address);\n}\n\nmain()\n    .then(() => process.exit(0))\n    .catch((error) => {\n        console.error(error);\n        process.exit(1);\n    });\n"
  },
  {
    "path": "03-Decentralized Guestbook/.gitignore",
    "content": "# Node.js dependencies\n/node_modules\n\n# Hardhat artifacts\n/artifacts\n/cache\n\n# Environment and secret files\n.env\n.secret.json\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Ignore build output\n/build\n\n# Miscellaneous\n.DS_Store"
  },
  {
    "path": "03-Decentralized Guestbook/README.md",
    "content": "# Guestbook dApp Tutorial / Boilerplate\n\n## Overview\n\nThis guide will walk you through creating a decentralized guestbook application using Hardhat for development, Solidity for smart contracts, and React for the frontend. This setup is tailored for the Core network.\n\nBy following this tutorial, you'll learn how to:\n\n- Develop and deploy smart contracts on the Core Testnet.\n- Build a React frontend to interact with your smart contracts.\n- Integrate MetaMask for secure user interactions and transactions.\n\n## Why Use This Boilerplate?\n\n- **Decentralization**: Store guestbook entries on the blockchain, ensuring data integrity and transparency.\n- **Security**: Immutable and tamper-proof records stored on the blockchain.\n- **Transparency**: All entries and transactions are publicly visible and verifiable.\n- **Real-World Applications**: Ideal for creating transparent feedback systems, community engagement tools, or personal guestbooks.\n\n## Prerequisites\n\nBefore getting started, ensure you have the following:\n\n- **Node.js**: Install Node.js from [nodejs.org](https://nodejs.org/).\n- **npm**: Node.js includes npm (Node Package Manager).\n- **MetaMask**: Install the MetaMask browser extension from [metamask.io](https://metamask.io/).\n- **Core Testnet Configuration**: Configure MetaMask to connect to the Core Testnet.\n  - **Network Name**: Core Testnet\n  - **New RPC URL**: `https://rpc.test.btcs.network`\n  - **Chain ID**: `1115`\n  - **Currency Symbol**: `CORE`\n- **Text Editor**: Use a text editor like Visual Studio Code.\n- **Core Faucet**: To get test CORE tokens for transactions, visit the [Core Faucet](https://scan.test.btcs.network/faucet) and refer to the [instructions for use](https://docs.coredao.org/docs/Dev-Guide/core-faucet).\n\n## Project Setup\n\n### 1. Initialize the Project\nCreate a new directory for your project and navigate into it:\n\n```sh\nmkdir guestbook-dapp\ncd guestbook-dapp\nnpm init --yes\n```\n<img width=\"1512\" alt=\"gdscreenshot1\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/10da1acb-f824-4014-a058-fa4e85d6515f\">\n\n\n## 2. Install Dependencies\nInstall Hardhat and other necessary dependencies:\n\n```\nnpm install --save-dev hardhat @nomiclabs/hardhat-ethers ethers\nnpm install --save-dev chai @nomiclabs/hardhat-waffle\nnpm install react react-dom\n```\n\n<img width=\"1512\" alt=\"gdscreenshot2\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/36812823-d36d-4c65-9ff2-700d5010edad\">\n\n3. Set Up Hardhat\nInitialize a new Hardhat project:\n\n```\nnpx hardhat\n```\n\n<img width=\"1512\" alt=\"gdscreenshot3\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/9e95a66e-16eb-475f-8036-ba43385f6272\">\n\nSelect \"Create a Javascript Project\" and \"no\" for installing the project's sample dependencies.\n\nWe will now open up our newly created hardhat project in a code editor, for this guide, we will be using Visual Studio Code.\nnavigate to the root of your directory in the terminal and type `code .` and hit enter\n\n## 4. Create secret.json File\nCreate a secret.json file in the root directory of your project to store your private key securely. Replace YOUR_PRIVATE_KEY with your actual private key.\n```\n{\n  \"PrivateKey\": \"YOUR_PRIVATE_KEY\"\n}\n```\n<img width=\"1512\" alt=\"gdscreenshot5\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/3b6b1921-e5c0-471c-ae7e-d4cad79f7fa0\">\n\n\n> [Refer to this guide](https://support.metamask.io/managing-my-wallet/secret-recovery-phrase-and-private-keys/how-to-export-an-accounts-private-key/) for instructions on how to export your account's private key via Metamask.\n\n## 5. Update .gitignore File\nUpdate your .gitignore file to ensure that your secret.json file and other sensitive files are not committed to version control.\n\nCreate or update the .gitignore file in your root directory with the following content:\n\n```\n# Node.js dependencies\n/node_modules\n\n# Hardhat artifacts\n/artifacts\n/cache\n\n# Environment and secret files\n.env\n.secret.json\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Ignore build output\n/build\n\n# Miscellaneous\n.DS_Store\n```\n\n## 6. Update hardhat.config.js\nReplace the contents of hardhat.config.js with the following configuration:\n\nEnsure that the network settings are configured correctly for [Core Testnet](https://docs.coredao.org/docs/Dev-Guide/contract-verify#hardhat-verification)\n\n```\n/**\n * @type import('hardhat/config').HardhatUserConfig\n */\n\nrequire('@nomiclabs/hardhat-ethers');\nrequire(\"@nomiclabs/hardhat-waffle\");\n\nconst { PrivateKey } = require('./secret.json');\n\nmodule.exports = {\n   defaultNetwork: 'testnet',\n\n   networks: {\n      hardhat: {\n      },\n      testnet: {\n         url: 'https://rpc.test2.btcs.network',\n         accounts: [PRIVATE_KEY],\n         chainId: 1115,  // Ensure this matches the Core testnet chain ID\n      }\n   },\n   solidity: {\n      compilers: [\n        {\n           version: '0.8.21',  // Update to at least 0.8.20 to support the 'paris' EVM\n           settings: {\n              evmVersion: 'paris',  // Specify 'paris' EVM version\n              optimizer: {\n                 enabled: true,\n                 runs: 200,\n              },\n           },\n        },\n      ],\n   },\n   paths: {\n      sources: './contracts',\n      cache: './cache',\n      artifacts: './artifacts',\n   },\n   mocha: {\n      timeout: 20000,  // You can adjust the timeout as needed\n   },\n};\n```\n<img width=\"1512\" alt=\"gdscreenshot5 1\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/d78ae0d4-c9dc-4ba0-9e96-99c38c0a7c89\">\n\n\n## Writing the Smart Contract\n\n1. Create the Guestbook Smart Contract\n\nDelete the `lock.sol` file in `Contracts`\nCreate a file `contracts/Guestbook.sol` with the following content:\n\n```\n// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.7.0 <0.9.0;\n\n/// @title Guestbook\ncontract Guestbook {\n    struct Entry {\n        string name;\n        string message;\n    }\n\n    Entry[] public entries;\n\n    function signGuestbook(string memory _name, string memory _message) public {\n        entries.push(Entry(_name, _message));\n    }\n\n    function getEntries() public view returns (Entry[] memory) {\n        return entries;\n    }\n}\n```\n<img width=\"1512\" alt=\"gdscreenshot6\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/61243ee5-8e24-4dd2-97fb-7e5bb301f220\">\n\n\n## Deploying the Smart Contract\n\n1. Create Deployment Script\nCreate a file scripts/deploy.js with the following content:\n\n```\nconst hre = require(\"hardhat\");\n\nasync function main() {\n  await hre.run('compile'); // Ensure the contracts are compiled\n\n  const Guestbook = await hre.ethers.getContractFactory(\"Guestbook\");\n  const guestbook = await Guestbook.deploy();\n\n  await guestbook.deployed();\n  console.log(\"Guestbook contract deployed to:\", guestbook.address);\n}\n\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n```\n\n<img width=\"1512\" alt=\"gdscreenshot7\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/7520ccdc-c78d-4e14-8fc8-5c2d6d619573\">\n\n\n2. Deploy the Contract\n\nDeploy the contract to the Core network:\n\n```\nnpx hardhat run scripts/deploy.js --network testnet\n```\n\n<img width=\"1512\" alt=\"gdscreenshot8\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/67c484f2-fd49-4bca-8688-f35be8361839\">\n\n\n## Setting Up the React Frontend\n\n1. Create the React App\nCreate the basic structure for a React frontend:\n\n```\nnpx create-react-app frontend\ncd frontend\n```\n\n<img width=\"1512\" alt=\"gdscreenshot9\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/31cfed96-9abf-4d2e-8bda-1fa2a8f1efa3\">\n\n<img width=\"1512\" alt=\"gdscreenshot10\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/02027836-e117-4b1c-8324-e81194277b83\">\n\n\n3. Add GuestbookAbi.json\n\nCopy the Guestbook.json file from artifacts/contracts/Guestbook.sol/ to the frontend/src directory and rename it to GuestbookAbi.json.\n\nEnsure you replace placeholders like `YOUR_CONTRACT_ADDRESS` with actual values from your deployment.\n\n<img width=\"1512\" alt=\"gdscreenshot11\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/1bf2a0c9-647c-49b9-90b5-011c354e2484\">\n\n<img width=\"1512\" alt=\"gdscreenshot12\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/b6f4e0e2-e31b-4495-9738-f94586ee14e2\">\n\n\n5. Update frontend/src/App.js\nCreate or update the src/App.js file with the following content:\n\n```\nimport React, { useState, useEffect } from 'react';\nimport { ethers } from 'ethers';\nimport GuestbookArtifact from './GuestbookAbi.json'; // Import the entire JSON artifact\n\nconst contractAddress = 'YOUR_CONTRACT_ADDRESS'; // Replace with your deployed contract address\nconst GuestbookAbi = GuestbookArtifact.abi; // Extract the ABI\n\nfunction App() {\n  const [contract, setContract] = useState(null);\n  const [entries, setEntries] = useState([]);\n  const [name, setName] = useState(\"\");\n  const [message, setMessage] = useState(\"\");\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(\"\");\n\n  useEffect(() => {\n    const init = async () => {\n      if (window.ethereum) {\n        try {\n          console.log(\"Connecting to MetaMask...\");\n          const provider = new ethers.providers.Web3Provider(window.ethereum);\n          \n          await provider.send(\"eth_requestAccounts\", []); // Request account access if needed\n\n          const network = await provider.getNetwork();\n          if (network.chainId !== 1115) {\n            throw new Error(\"Please switch to the Core Testnet in MetaMask.\");\n          }\n\n          const signer = provider.getSigner();\n          console.log(\"Signer obtained:\", signer);\n          const tempContract = new ethers.Contract(contractAddress, GuestbookAbi, signer);\n          setContract(tempContract);\n          console.log(\"Contract initialized:\", tempContract);\n\n          const entries = await tempContract.getEntries();\n          setEntries(entries);\n          console.log(\"Entries loaded:\", entries);\n        } catch (error) {\n          console.error(\"Error connecting to contract:\", error);\n          setError(error.message);\n        } finally {\n          setLoading(false);\n        }\n      } else {\n        console.error(\"Please install MetaMask!\");\n        setError(\"Please install MetaMask!\");\n        setLoading(false);\n      }\n    };\n    init();\n  }, []);\n\n  const signGuestbook = async () => {\n    if (!contract) {\n      console.error(\"Contract is not initialized!\");\n      setError(\"Contract is not initialized!\");\n      return;\n    }\n\n    try {\n      console.log(\"Signing guestbook with:\", name, message);\n      const tx = await contract.signGuestbook(name, message, {\n        gasLimit: 300000, // Adjust gas limit as necessary\n      });\n      console.log(\"Transaction sent:\", tx);\n      await tx.wait(); // Wait for the transaction to be mined\n      console.log(\"Transaction mined:\", tx);\n\n      const updatedEntries = await contract.getEntries();\n      setEntries(updatedEntries);\n      console.log(\"Updated entries:\", updatedEntries);\n    } catch (error) {\n      console.error(\"Error signing guestbook:\", error);\n      setError(\"Error signing guestbook. Please try again.\");\n    }\n  };\n\n  return (\n    <div>\n      <h1>Guestbook DApp</h1>\n      {loading ? (\n        <p>Loading contract...</p>\n      ) : (\n        <>\n          {error && <p style={{ color: 'red' }}>{error}</p>}\n          <input \n            type=\"text\" \n            placeholder=\"Your Name\" \n            value={name} \n            onChange={(e) => setName(e.target.value)} \n          />\n          <input \n            type=\"text\" \n            placeholder=\"Your Message\" \n            value={message} \n            onChange={(e) => setMessage(e.target.value)} \n          />\n          <button onClick={signGuestbook}>Sign Guestbook</button>\n          <ul>\n            {entries.map((entry, index) => (\n              <li key={index}>\n                <strong>{entry.name}:</strong> {entry.message}\n              </li>\n            ))}\n          </ul>\n        </>\n      )}\n    </div>\n  );\n}\n\nexport default App;\n```\n<img width=\"1512\" alt=\"gdscreenshot13\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/e656f122-9cf5-4635-b28b-30d4b09cdb0b\">\n\nStart the React app:\n\n>Ensure you are in /frontend within your repository (`cd frontend`)\n\n```\nnpm start\n```\nYou will be redirected to the development server\n\n<img width=\"1512\" alt=\"gdscreenshot14\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/c74e0b38-4c86-4af9-bfa2-f3aa9b9b52b3\">\n\n> In this example, we've already submitted our response, so we will navigate to the [Core Explorer](scan.coredao.org).\n\nHere you can see, the transaction has been submitted successfully.\n\n<img width=\"1512\" alt=\"gdscreenshot16\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/c07daf36-b48e-4e69-9e29-ab367fec2764\">\n\nThe dapp webpage will update, and you will notice the feed on the UI has been updated with your your name and message.\n\n<img width=\"1512\" alt=\"gdscreenshot15\" src=\"https://github.com/Camnaz/guestbook-dapp/assets/32852637/97167eff-e307-41af-9d87-42ea1ea0b57d\">\n\n## Deploying the Frontend\nIf you want your DApp to be accessible even when your local server is not running, consider deploying your frontend to a hosting service. Here are some common options:\n\nGitHub Pages: Free hosting for static sites directly from your GitHub repository.\nNetlify: A popular choice for deploying static sites with easy CI/CD integration.\nVercel: Another popular choice, especially for React applications.\nAWS S3 + CloudFront: For more control over hosting and scaling.\n\nBy deploying your frontend to one of these services, users can access your DApp from anywhere without needing your local development server to be running.\n\n## Conclusion\nBy following these steps, you should have a basic decentralized guestbook application deployed on the Core Test network with a React frontend to interact with it. \n\nYou can clone this repository to use as a boilerplate, or an educational resource.\n\n\n"
  },
  {
    "path": "03-Decentralized Guestbook/contracts/Guestbook.sol",
    "content": "// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.7.0 <0.9.0;\n\n/// @title Guestbook\ncontract Guestbook {\n    struct Entry {\n        string name;\n        string message;\n    }\n\n    Entry[] public entries;\n\n    // Define an event to log new entries\n    event EntrySigned(string name, string message);\n\n    function signGuestbook(string memory _name, string memory _message) public {\n        entries.push(Entry(_name, _message));\n        // Emit the event when a new entry is added\n        emit EntrySigned(_name, _message);\n    }\n\n    function getEntries() public view returns (Entry[] memory) {\n        return entries;\n    }\n}\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/README.md",
    "content": "# Getting Started with Create React App\n\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n### `npm start`\n\nRuns the app in the development mode.\\\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\n\nThe page will reload when you make changes.\\\nYou may also see any lint errors in the console.\n\n### `npm test`\n\nLaunches the test runner in the interactive watch mode.\\\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\n\n### `npm run build`\n\nBuilds the app for production to the `build` folder.\\\nIt correctly bundles React in production mode and optimizes the build for the best performance.\n\nThe build is minified and the filenames include the hashes.\\\nYour app is ready to be deployed!\n\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\n\n### `npm run eject`\n\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\n\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\n\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\n\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\n\n## Learn More\n\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\n\nTo learn React, check out the [React documentation](https://reactjs.org/).\n\n### Code Splitting\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\n\n### Analyzing the Bundle Size\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\n\n### Making a Progressive Web App\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\n\n### Advanced Configuration\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\n\n### Deployment\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\n\n### `npm run build` fails to minify\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/package.json",
    "content": "{\n  \"name\": \"frontend\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@testing-library/jest-dom\": \"5.17.0\",\n    \"@testing-library/react\": \"13.4.0\",\n    \"@testing-library/user-event\": \"13.5.0\",\n    \"ethers\": \"5.6.9\",\n    \"react\": \"18.3.1\",\n    \"react-dom\": \"18.3.1\",\n    \"react-scripts\": \"5.0.1\",\n    \"web-vitals\": \"2.1.4\"\n  },\n  \"scripts\": {\n    \"start\": \"react-scripts start\",\n    \"build\": \"react-scripts build\",\n    \"test\": \"react-scripts test\",\n    \"eject\": \"react-scripts eject\"\n  },\n  \"eslintConfig\": {\n    \"extends\": [\n      \"react-app\",\n      \"react-app/jest\"\n    ]\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  }\n}\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <meta\n      name=\"description\"\n      content=\"Web site created using create-react-app\"\n    />\n    <link rel=\"apple-touch-icon\" href=\"%PUBLIC_URL%/logo192.png\" />\n    <!--\n      manifest.json provides metadata used when your web app is installed on a\n      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <!--\n      Notice the use of %PUBLIC_URL% in the tags above.\n      It will be replaced with the URL of the `public` folder during the build.\n      Only files inside the `public` folder can be referenced from the HTML.\n\n      Unlike \"/favicon.ico\" or \"favicon.ico\", \"%PUBLIC_URL%/favicon.ico\" will\n      work correctly both with client-side routing and a non-root public URL.\n      Learn how to configure a non-root public URL by running `npm run build`.\n    -->\n    <title>React App</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"root\"></div>\n    <!--\n      This HTML file is a template.\n      If you open it directly in the browser, you will see an empty page.\n\n      You can add webfonts, meta tags, or analytics to this file.\n      The build step will place the bundled scripts into the <body> tag.\n\n      To begin the development, run `npm start` or `yarn start`.\n      To create a production bundle, use `npm run build` or `yarn build`.\n    -->\n  </body>\n</html>\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/public/manifest.json",
    "content": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"logo192.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"192x192\"\n    },\n    {\n      \"src\": \"logo512.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/src/App.css",
    "content": ".App {\n  text-align: center;\n}\n\n.App-logo {\n  height: 40vmin;\n  pointer-events: none;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  .App-logo {\n    animation: App-logo-spin infinite 20s linear;\n  }\n}\n\n.App-header {\n  background-color: #282c34;\n  min-height: 100vh;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  font-size: calc(10px + 2vmin);\n  color: white;\n}\n\n.App-link {\n  color: #61dafb;\n}\n\n@keyframes App-logo-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/src/App.js",
    "content": "import React, { useState, useEffect } from 'react';\nimport { ethers } from 'ethers'; // Updated import for Web3Provider\nimport { Contract } from 'ethers';\nimport GuestbookArtifact from './GuestbookAbi.json';\n\nconst contractAddress = '0x2e8EDe4E6A5Fd2d93072dBcF1BBe324Ff1677302';\nconst GuestbookAbi = GuestbookArtifact.abi;\n\nfunction App() {\n  const [contract, setContract] = useState(null);\n  const [entries, setEntries] = useState([]);\n  const [name, setName] = useState(\"\");\n  const [message, setMessage] = useState(\"\");\n  const [loading, setLoading] = useState(true);\n  const [error, setError] = useState(\"\");\n\n  useEffect(() => {\n    const init = async () => {\n      if (window.ethereum) {\n        try {\n          console.log(\"Connecting to MetaMask...\");\n          const provider = new ethers.providers.Web3Provider(window.ethereum); // Updated to Web3Provider\n          \n          await provider.send(\"eth_requestAccounts\", []);\n\n          const network = await provider.getNetwork();\n          if (network.chainId !== 1114) {\n            throw new Error(\"Please switch to the Core Testnet in MetaMask.\");\n          }\n\n          const signer = provider.getSigner();\n          console.log(\"Signer obtained:\", signer);\n          const tempContract = new Contract(contractAddress, GuestbookAbi, signer);\n          setContract(tempContract);\n          console.log(\"Contract initialized:\", tempContract);\n\n          const entries = await tempContract.getEntries();\n          setEntries(entries);\n          console.log(\"Entries loaded:\", entries);\n        } catch (error) {\n          console.error(\"Error connecting to contract:\", error);\n          setError(error.message);\n        } finally {\n          setLoading(false);\n        }\n      } else {\n        console.error(\"Please install MetaMask!\");\n        setError(\"Please install MetaMask!\");\n        setLoading(false);\n      }\n    };\n    init();\n  }, []);\n\n  const signGuestbook = async () => {\n    if (!contract) {\n      console.error(\"Contract is not initialized!\");\n      setError(\"Contract is not initialized!\");\n      return;\n    }\n\n    try {\n      console.log(\"Signing guestbook with:\", name, message);\n      const tx = await contract.signGuestbook(name, message, {\n        gasLimit: 300000, \n      });\n      console.log(\"Transaction sent:\", tx);\n      await tx.wait(); \n\n      const updatedEntries = await contract.getEntries();\n      setEntries(updatedEntries);\n      console.log(\"Updated entries:\", updatedEntries);\n    } catch (error) {\n      console.error(\"Error signing guestbook:\", error);\n      setError(\"Error signing guestbook. Please try again.\");\n    }\n  };\n\n  return (\n    <div>\n      <h1>Guestbook DApp</h1>\n      {loading ? (\n        <p>Loading contract...</p>\n      ) : (\n        <>\n          {error && <p style={{ color: 'red' }}>{error}</p>}\n          <input \n            type=\"text\" \n            placeholder=\"Your Name\" \n            value={name} \n            onChange={(e) => setName(e.target.value)} \n          />\n          <input \n            type=\"text\" \n            placeholder=\"Your Message\" \n            value={message} \n            onChange={(e) => setMessage(e.target.value)} \n          />\n          <button onClick={signGuestbook}>Sign Guestbook</button>\n          <ul>\n            {entries.map((entry, index) => (\n              <li key={index}>\n                <strong>{entry.name}:</strong> {entry.message}\n              </li>\n            ))}\n          </ul>\n        </>\n      )}\n    </div>\n  );\n}\n\nexport default App;\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/src/GuestbookAbi.json",
    "content": "{\n  \"_format\": \"hh-sol-artifact-1\",\n  \"contractName\": \"Guestbook\",\n  \"sourceName\": \"contracts/Guestbook.sol\",\n  \"abi\": [\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"internalType\": \"string\",\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"string\",\n          \"name\": \"message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"EntrySigned\",\n      \"type\": \"event\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"entries\",\n      \"outputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"name\",\n          \"type\": \"string\"\n        },\n        {\n          \"internalType\": \"string\",\n          \"name\": \"message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"getEntries\",\n      \"outputs\": [\n        {\n          \"components\": [\n            {\n              \"internalType\": \"string\",\n              \"name\": \"name\",\n              \"type\": \"string\"\n            },\n            {\n              \"internalType\": \"string\",\n              \"name\": \"message\",\n              \"type\": \"string\"\n            }\n          ],\n          \"internalType\": \"struct Guestbook.Entry[]\",\n          \"name\": \"\",\n          \"type\": \"tuple[]\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"_name\",\n          \"type\": \"string\"\n        },\n        {\n          \"internalType\": \"string\",\n          \"name\": \"_message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"signGuestbook\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"bytecode\": \"0x608060405234801561001057600080fd5b50610741806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630ffcb0701461004657806317be85c31461005b578063b30906d414610079575b600080fd5b610059610054366004610553565b61009a565b005b610063610150565b6040516100709190610604565b60405180910390f35b61008c610087366004610689565b6102d3565b6040516100709291906106a2565b604080518082019091528281526020808201839052600080546001810182559080528251805160029092027f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301926100f792849290910190610417565b5060208281015180516101109260018501920190610417565b5050507f0e8857b20aec2f13bb24d8ba5def534d3e73aa79fec2bcfd038c4d55e482deaa82826040516101449291906106a2565b60405180910390a15050565b60606000805480602002602001604051908101604052809291908181526020016000905b828210156102ca57838290600052602060002090600202016040518060400160405290816000820180546101a7906106d0565b80601f01602080910402602001604051908101604052809291908181526020018280546101d3906106d0565b80156102205780601f106101f557610100808354040283529160200191610220565b820191906000526020600020905b81548152906001019060200180831161020357829003601f168201915b50505050508152602001600182018054610239906106d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610265906106d0565b80156102b25780601f10610287576101008083540402835291602001916102b2565b820191906000526020600020905b81548152906001019060200180831161029557829003601f168201915b50505050508152505081526020019060010190610174565b50505050905090565b600081815481106102e357600080fd5b9060005260206000209060020201600091509050806000018054610306906106d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610332906106d0565b801561037f5780601f106103545761010080835404028352916020019161037f565b820191906000526020600020905b81548152906001019060200180831161036257829003601f168201915b505050505090806001018054610394906106d0565b80601f01602080910402602001604051908101604052809291908181526020018280546103c0906106d0565b801561040d5780601f106103e25761010080835404028352916020019161040d565b820191906000526020600020905b8154815290600101906020018083116103f057829003601f168201915b5050505050905082565b828054610423906106d0565b90600052602060002090601f016020900481019282610445576000855561048b565b82601f1061045e57805160ff191683800117855561048b565b8280016001018555821561048b579182015b8281111561048b578251825591602001919060010190610470565b5061049792915061049b565b5090565b5b80821115610497576000815560010161049c565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126104d757600080fd5b813567ffffffffffffffff808211156104f2576104f26104b0565b604051601f8301601f19908116603f0116810190828211818310171561051a5761051a6104b0565b8160405283815286602085880101111561053357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561056657600080fd5b823567ffffffffffffffff8082111561057e57600080fd5b61058a868387016104c6565b935060208501359150808211156105a057600080fd5b506105ad858286016104c6565b9150509250929050565b6000815180845260005b818110156105dd576020818501810151868301820152016105c1565b818111156105ef576000602083870101525b50601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561067b57888303603f190185528151805187855261064f888601826105b7565b91890151858303868b015291905061066781836105b7565b96890196945050509086019060010161062b565b509098975050505050505050565b60006020828403121561069b57600080fd5b5035919050565b6040815260006106b560408301856105b7565b82810360208401526106c781856105b7565b95945050505050565b600181811c908216806106e457607f821691505b6020821081141561070557634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220de103d949600ba48036fe9ffaeb124297b28761f8942a55ba1c54f20c27d399964736f6c63430008090033\",\n  \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630ffcb0701461004657806317be85c31461005b578063b30906d414610079575b600080fd5b610059610054366004610553565b61009a565b005b610063610150565b6040516100709190610604565b60405180910390f35b61008c610087366004610689565b6102d3565b6040516100709291906106a2565b604080518082019091528281526020808201839052600080546001810182559080528251805160029092027f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301926100f792849290910190610417565b5060208281015180516101109260018501920190610417565b5050507f0e8857b20aec2f13bb24d8ba5def534d3e73aa79fec2bcfd038c4d55e482deaa82826040516101449291906106a2565b60405180910390a15050565b60606000805480602002602001604051908101604052809291908181526020016000905b828210156102ca57838290600052602060002090600202016040518060400160405290816000820180546101a7906106d0565b80601f01602080910402602001604051908101604052809291908181526020018280546101d3906106d0565b80156102205780601f106101f557610100808354040283529160200191610220565b820191906000526020600020905b81548152906001019060200180831161020357829003601f168201915b50505050508152602001600182018054610239906106d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610265906106d0565b80156102b25780601f10610287576101008083540402835291602001916102b2565b820191906000526020600020905b81548152906001019060200180831161029557829003601f168201915b50505050508152505081526020019060010190610174565b50505050905090565b600081815481106102e357600080fd5b9060005260206000209060020201600091509050806000018054610306906106d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610332906106d0565b801561037f5780601f106103545761010080835404028352916020019161037f565b820191906000526020600020905b81548152906001019060200180831161036257829003601f168201915b505050505090806001018054610394906106d0565b80601f01602080910402602001604051908101604052809291908181526020018280546103c0906106d0565b801561040d5780601f106103e25761010080835404028352916020019161040d565b820191906000526020600020905b8154815290600101906020018083116103f057829003601f168201915b5050505050905082565b828054610423906106d0565b90600052602060002090601f016020900481019282610445576000855561048b565b82601f1061045e57805160ff191683800117855561048b565b8280016001018555821561048b579182015b8281111561048b578251825591602001919060010190610470565b5061049792915061049b565b5090565b5b80821115610497576000815560010161049c565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126104d757600080fd5b813567ffffffffffffffff808211156104f2576104f26104b0565b604051601f8301601f19908116603f0116810190828211818310171561051a5761051a6104b0565b8160405283815286602085880101111561053357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561056657600080fd5b823567ffffffffffffffff8082111561057e57600080fd5b61058a868387016104c6565b935060208501359150808211156105a057600080fd5b506105ad858286016104c6565b9150509250929050565b6000815180845260005b818110156105dd576020818501810151868301820152016105c1565b818111156105ef576000602083870101525b50601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561067b57888303603f190185528151805187855261064f888601826105b7565b91890151858303868b015291905061066781836105b7565b96890196945050509086019060010161062b565b509098975050505050505050565b60006020828403121561069b57600080fd5b5035919050565b6040815260006106b560408301856105b7565b82810360208401526106c781856105b7565b95945050505050565b600181811c908216806106e457607f821691505b6020821081141561070557634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220de103d949600ba48036fe9ffaeb124297b28761f8942a55ba1c54f20c27d399964736f6c63430008090033\",\n  \"linkReferences\": {},\n  \"deployedLinkReferences\": {}\n}\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/src/index.css",
    "content": "body {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n    sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n    monospace;\n}\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/src/index.js",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/src/reportWebVitals.js",
    "content": "const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n"
  },
  {
    "path": "03-Decentralized Guestbook/frontend/src/setupTests.js",
    "content": "// jest-dom adds custom jest matchers for asserting on DOM nodes.\n// allows you to do things like:\n// expect(element).toHaveTextContent(/react/i)\n// learn more: https://github.com/testing-library/jest-dom\nimport '@testing-library/jest-dom';\n"
  },
  {
    "path": "03-Decentralized Guestbook/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.28\",\n\n  networks: {\n    localhost: {\n      url: \"http://127.0.0.1:8545/\",\n      // accounts: Thanks hardhat!\n      chainId: 31337,\n      allowUnlimitedContractSize: true,\n    },\n    core: {\n      url: 'https://rpc.test2.btcs.network',\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    },\n  },\n};\n"
  },
  {
    "path": "03-Decentralized Guestbook/package.json",
    "content": "{\n  \"name\": \"guestbook-dapp\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-chai-matchers\": \"^2.0.8\",\n    \"@nomicfoundation/hardhat-ethers\": \"^3.0.8\",\n    \"@nomicfoundation/hardhat-ignition\": \"^0.15.11\",\n    \"@nomicfoundation/hardhat-ignition-ethers\": \"^0.15.11\",\n    \"@nomicfoundation/hardhat-network-helpers\": \"^1.0.12\",\n    \"@nomicfoundation/hardhat-toolbox\": \"^5.0.0\",\n    \"@nomicfoundation/hardhat-verify\": \"^2.0.14\",\n    \"@nomiclabs/hardhat-ethers\": \"^2.2.3\",\n    \"@nomiclabs/hardhat-waffle\": \"^2.0.6\",\n    \"@typechain/ethers-v6\": \"^0.5.1\",\n    \"@typechain/hardhat\": \"^9.1.0\",\n    \"chai\": \"^4.5.0\",\n    \"ethers\": \"^6.14.3\",\n    \"hardhat\": \"^2.22.8\",\n    \"hardhat-gas-reporter\": \"^1.0.10\",\n    \"solidity-coverage\": \"^0.8.16\",\n    \"typechain\": \"^8.3.2\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^16.5.0\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\"\n  }\n}\n"
  },
  {
    "path": "03-Decentralized Guestbook/scripts/deploy.js",
    "content": "const hre = require(\"hardhat\");\n\nasync function main() {\n\n  const Guestbook = await hre.ethers.getContractFactory(\"Guestbook\");\n  const guestbook = await Guestbook.deploy();\n\n\n  console.log(\"Guestbook contract deployed to:\", guestbook.target);\n}\n\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});"
  },
  {
    "path": "04-Pyth Pull Oracles/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n"
  },
  {
    "path": "04-Pyth Pull Oracles/README.md",
    "content": "# Core Pyth Feed Boilerplate\n\nPyth Feed Boilerplate is a React-based dApp for fetching and displaying real-time price feeds from the Pyth Network. This boilerplate provides a quickstart template for developers to quickly create similar applications on the Core blockchain.\n\nPurpose: The quickstart guide helps developers rapidly set up a functional dApp with essential setup instructions and code snippets. For detailed instructions and advanced configurations, refer to the full-length guide further down.\n\n## Quickstart\n\nProject Setup: Clone the repository and install dependencies.\nConfiguration: Set up the Pyth price feed smart contract and integrate it with the React app.\nRunning the Application: Start the app and view real-time price feeds.\n\n### Prerequisites\n\nBefore setting up the project, ensure you have the following installed:\n\n- [Node.js and npm](https://nodejs.org/en/download/)\n- [MetaMask](https://metamask.io/download.html) browser extension\n- [Git](https://git-scm.com/downloads)\n\n### Setup\n\n### 1. Clone the Repository\n\nClone the repository to your local machine using GitHub Desktop or Git:\n\n```zsh\ngh repo clone Camnaz/Core-Pyth-Feed-Boiler\ncd Core-Pyth-Feed-Boiler\n```\n\n### 2. Install Dependencies\nNavigate to the project directory and install the necessary dependencies:\n\n```\nnpm install\n```\nNavigate to the frontend directory and install the dependencies:\n\n```zsh\ncd frontend\nnpm install\ncd ..\n```\n\n### 3. Configure the Project\n\n- Add **Private Key**: Create a '**secret.json**' file in the project root and add your private key.\n\n```json\n{\n  \"PrivateKey\": \"your-private-key-here\"\n}\n```\n### 3.1 Compile Hardhat\n\n```\nnpx hardhat compile\n```\n\n>Once deployed, update Smart Contract Address: Open src/App.js and replace `0xYourContractAddress` with your deployed contract address on the Core blockchain.\n\n### 4. Install Babel Plugin\nInstall the Babel plugin to avoid dependency issues:\n\n```zsh\nnpm install --save-dev @babel/plugin-proposal-private-property-in-object\n```\n### 4.1 Navigate to frontend of project\n\n```\ncd frontend\n```\n\n### 5. Run the Application\nStart the React application:\n\n```zsh\nnpm start\n```\n\n### 6. Access the Application\nOpen your browser and navigate to if it has not already:\n\n```arduino\nhttp://localhost:3000\n```\n### 7. Conclusion\n\nCongratulations, you now have a Pyth data feed for CORE/USD, and are able to view the Core price live which is updated every few seconds. \nYou are able to use this boilerplate to imbed Pyth price feeds for Core into different Dapps, or as a learning resource.\n\n### Troubleshooting\nError: One of your dependencies, babel-preset-react-app, is importing the \"@babel/plugin-proposal-private-property-in-object\" package without declaring it in its dependencies.\nSolution: Install the Babel plugin manually:\n\n```zsh\nnpm install --save-dev @babel/plugin-proposal-private-property-in-object\n```\n\n**Error**: MetaMask - RPC Error: Request of type 'wallet_requestPermissions' already pending.\n\n**Solution**: Open MetaMask and approve or reject the pending permission request.\n\n**Error**: no matching function (argument=\"name\", value=\"updatePrice\", code=INVALID_ARGUMENT, version=abi/5.7.0)\n\n**Solution**: Ensure the ABI file is up-to-date and contains the correct function names.\n"
  },
  {
    "path": "04-Pyth Pull Oracles/contracts/PythFeedBoilerplate.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport \"@pythnetwork/pyth-sdk-solidity/IPyth.sol\";\nimport \"@pythnetwork/pyth-sdk-solidity/PythStructs.sol\";\n\ncontract PythFeedBoilerplate {\n  IPyth public pyth;\n\n  constructor(address pythContract) {\n    pyth = IPyth(pythContract);\n  }\n\n  function updatePrice(bytes[] calldata priceUpdate) public payable {\n    uint fee = pyth.getUpdateFee(priceUpdate);\n    pyth.updatePriceFeeds{ value: fee }(priceUpdate);\n  }\n\n  function getPrice(bytes32 priceFeedId) public view returns (PythStructs.Price memory) {\n    return pyth.getPrice(priceFeedId);\n  }\n\n  function getPriceWithoutUpdate(bytes32 priceFeedId) public view returns (int64, int32) {\n    PythStructs.Price memory price = pyth.getPrice(priceFeedId);\n    return (price.price, price.expo);\n  }\n}\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/README.md",
    "content": "# Getting Started with Create React App\n\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n### `npm start`\n\nRuns the app in the development mode.\\\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\n\nThe page will reload when you make changes.\\\nYou may also see any lint errors in the console.\n\n### `npm test`\n\nLaunches the test runner in the interactive watch mode.\\\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\n\n### `npm run build`\n\nBuilds the app for production to the `build` folder.\\\nIt correctly bundles React in production mode and optimizes the build for the best performance.\n\nThe build is minified and the filenames include the hashes.\\\nYour app is ready to be deployed!\n\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\n\n### `npm run eject`\n\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\n\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\n\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\n\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\n\n## Learn More\n\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\n\nTo learn React, check out the [React documentation](https://reactjs.org/).\n\n### Code Splitting\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\n\n### Analyzing the Bundle Size\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\n\n### Making a Progressive Web App\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\n\n### Advanced Configuration\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\n\n### Deployment\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\n\n### `npm run build` fails to minify\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/package.json",
    "content": "{\n  \"name\": \"frontend\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@pythnetwork/pyth-sdk-solidity\": \"^4.2.0\",\n    \"@testing-library/jest-dom\": \"5.17.0\",\n    \"@testing-library/react\": \"13.4.0\",\n    \"@testing-library/user-event\": \"13.5.0\",\n    \"ethers\": \"^6.15.0\",\n    \"react\": \"18.3.1\",\n    \"react-dom\": \"18.3.1\",\n    \"react-scripts\": \"5.0.1\",\n    \"web-vitals\": \"^2.1.4\"\n  },\n  \"scripts\": {\n    \"start\": \"react-scripts start\",\n    \"build\": \"react-scripts build\",\n    \"test\": \"react-scripts test\",\n    \"eject\": \"react-scripts eject\"\n  },\n  \"eslintConfig\": {\n    \"extends\": [\n      \"react-app\",\n      \"react-app/jest\"\n    ]\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  }\n}\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <meta\n      name=\"description\"\n      content=\"Web site created using create-react-app\"\n    />\n    <link rel=\"apple-touch-icon\" href=\"%PUBLIC_URL%/logo192.png\" />\n    <!--\n      manifest.json provides metadata used when your web app is installed on a\n      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <!--\n      Notice the use of %PUBLIC_URL% in the tags above.\n      It will be replaced with the URL of the `public` folder during the build.\n      Only files inside the `public` folder can be referenced from the HTML.\n\n      Unlike \"/favicon.ico\" or \"favicon.ico\", \"%PUBLIC_URL%/favicon.ico\" will\n      work correctly both with client-side routing and a non-root public URL.\n      Learn how to configure a non-root public URL by running `npm run build`.\n    -->\n    <title>React App</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"root\"></div>\n    <!--\n      This HTML file is a template.\n      If you open it directly in the browser, you will see an empty page.\n\n      You can add webfonts, meta tags, or analytics to this file.\n      The build step will place the bundled scripts into the <body> tag.\n\n      To begin the development, run `npm start` or `yarn start`.\n      To create a production bundle, use `npm run build` or `yarn build`.\n    -->\n  </body>\n</html>\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/public/manifest.json",
    "content": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"logo192.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"192x192\"\n    },\n    {\n      \"src\": \"logo512.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/src/App.css",
    "content": "@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@400;600&display=swap');\n\nbody {\n  background-color: #121212;\n  color: #292D32;\n  font-family: 'Lexend', sans-serif;\n  margin: 0;\n  padding: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  height: 100vh;\n}\n\n.App {\n  text-align: center;\n}\n\n.App-header {\n  background-color: #292D32;\n  padding: 20px;\n  border-radius: 10px;\n  margin-bottom: 20px;\n  color: #FBFCFC;\n}\n\n.App-title {\n  margin: 0;\n  text-align: left;\n  color: #FFFFFF;\n}\n\n.price-container {\n  background-color: #292D32;\n  padding: 20px;\n  border-radius: 10px;\n  color: #FBFCFC;\n  display: inline-block;\n  margin-top: 20px;\n}\n\n.price {\n  font-size: 1.5em;\n  margin-top: 10px;\n  color: #FFFFFF;\n}\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/src/App.js",
    "content": "import React, { useEffect, useState } from 'react';\nimport { ethers } from 'ethers';\nimport './App.css';\n\n// Import Pyth ABI - we'll use require for JSON files\nconst PythAbi = require('@pythnetwork/pyth-sdk-solidity/abis/IPyth.json');\n\n// Core Mainnet\nconst contractAddress = '0xA2aa501b19aff244D90cc15a4Cf739D2725B5729';\nconst provider = new ethers.JsonRpcProvider('https://rpc.coredao.org');\nconst contract = new ethers.Contract(contractAddress, PythAbi, provider);\n\nconst priceId = '0x9b4503710cc8c53f75c30e6e4fda1a7064680ef2e0ee97acd2e3a7c37b3c830c'; // CORE/USD\nconst age = '60';\n\n\n\nfunction App() {\n  const [price, setPrice] = useState(null);\n\n  useEffect(() => {\n    let intervalId;\n\n    const fetchPrice = async () => {\n      try {\n        console.log('Fetching price...');\n        \n        // Use your new code to fetch price data\n        const [price, conf, expo, timestamp] = await contract.getPriceNoOlderThan(priceId, age);\n        \n        console.log('Raw price data:', { price, conf, expo, timestamp });\n        \n        // Convert BigInt to Number for calculation\n        const expoNumber = Number(expo);\n        console.log('Exponent:', expoNumber);\n        \n        // Adjust the price based on the exponent\n        // The price comes with a specific decimal precision, we need to adjust it\n        const adjustedPrice = parseFloat(ethers.formatUnits(price, -expoNumber));\n        setPrice(adjustedPrice.toFixed(5)); // Format to 5 decimal places\n        console.log('Price fetched:', adjustedPrice);\n      } catch (error) {\n        console.error('Error fetching price:', error);\n      }\n    };\n\n    // Fetch the price immediately when the component mounts\n    fetchPrice();\n\n    // Set up an interval to fetch the price every 2 minutes (120000 milliseconds)\n    intervalId = setInterval(fetchPrice, 120000);\n\n    // Clear the interval when the component unmounts\n    return () => clearInterval(intervalId);\n  }, []);\n\n  return (\n    <div className=\"App\">\n      <header className=\"App-header\">\n        <h1 className=\"App-title\">Pyth Feed Boilerplate</h1>\n      </header>\n      <div className=\"price-container\">\n        <p>CORE / USD</p>\n        <p className=\"price\">Price: {price !== null ? `$${price}` : 'Loading...'}</p>\n      </div>\n    </div>\n  );\n}\n\nexport default App;\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/src/App.test.js",
    "content": "import { render, screen } from '@testing-library/react';\nimport App from './App';\n\ntest('renders learn react link', () => {\n  render(<App />);\n  const linkElement = screen.getByText(/learn react/i);\n  expect(linkElement).toBeInTheDocument();\n});\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/src/PythFeedBoilerplateAbi.json",
    "content": "{\n  \"_format\": \"hh-sol-artifact-1\",\n  \"contractName\": \"PythFeedBoilerplate\",\n  \"sourceName\": \"contracts/PythFeedBoilerplate.sol\",\n  \"abi\": [\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"pythContract\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"priceFeedId\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"getPrice\",\n      \"outputs\": [\n        {\n          \"components\": [\n            {\n              \"internalType\": \"int64\",\n              \"name\": \"price\",\n              \"type\": \"int64\"\n            },\n            {\n              \"internalType\": \"uint64\",\n              \"name\": \"conf\",\n              \"type\": \"uint64\"\n            },\n            {\n              \"internalType\": \"int32\",\n              \"name\": \"expo\",\n              \"type\": \"int32\"\n            },\n            {\n              \"internalType\": \"uint256\",\n              \"name\": \"publishTime\",\n              \"type\": \"uint256\"\n            }\n          ],\n          \"internalType\": \"struct PythStructs.Price\",\n          \"name\": \"\",\n          \"type\": \"tuple\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"bytes32\",\n          \"name\": \"priceFeedId\",\n          \"type\": \"bytes32\"\n        }\n      ],\n      \"name\": \"getPriceWithoutUpdate\",\n      \"outputs\": [\n        {\n          \"internalType\": \"int64\",\n          \"name\": \"\",\n          \"type\": \"int64\"\n        },\n        {\n          \"internalType\": \"int32\",\n          \"name\": \"\",\n          \"type\": \"int32\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"pyth\",\n      \"outputs\": [\n        {\n          \"internalType\": \"contract IPyth\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"bytes[]\",\n          \"name\": \"priceUpdate\",\n          \"type\": \"bytes[]\"\n        }\n      ],\n      \"name\": \"updatePrice\",\n      \"outputs\": [],\n      \"stateMutability\": \"payable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"bytecode\": \"0x608060405234801561001057600080fd5b5060405161064e38038061064e83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6105bb806100936000396000f3fe60806040526004361061003f5760003560e01c8063083a816b146100445780632592c0bf1461008657806331d98b3f1461009b578063f98d06f0146100fe575b600080fd5b34801561005057600080fd5b5061006461005f36600461035b565b610136565b6040805160079390930b835260039190910b6020830152015b60405180910390f35b610099610094366004610374565b6101ca565b005b3480156100a757600080fd5b506100bb6100b636600461035b565b6102b9565b60405161007d9190815160070b815260208083015167ffffffffffffffff169082015260408083015160030b908201526060918201519181019190915260800190565b34801561010a57600080fd5b5060005461011e906001600160a01b031681565b6040516001600160a01b03909116815260200161007d565b600080546040516331d98b3f60e01b815260048101849052829182916001600160a01b03909116906331d98b3f9060240160806040518083038186803b15801561017f57600080fd5b505afa158015610193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b79190610418565b8051604090910151909590945092505050565b6000805460405163d47eed4560e01b81526001600160a01b039091169063d47eed45906101fd90869086906004016104d1565b60206040518083038186803b15801561021557600080fd5b505afa158015610229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024d919061056c565b600054604051631df3cbc560e31b81529192506001600160a01b03169063ef9e5e2890839061028290879087906004016104d1565b6000604051808303818588803b15801561029b57600080fd5b505af11580156102af573d6000803e3d6000fd5b5050505050505050565b60408051608081018252600080825260208201819052818301819052606082018190525491516331d98b3f60e01b81526004810184905290916001600160a01b0316906331d98b3f9060240160806040518083038186803b15801561031d57600080fd5b505afa158015610331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103559190610418565b92915050565b60006020828403121561036d57600080fd5b5035919050565b6000806020838503121561038757600080fd5b823567ffffffffffffffff8082111561039f57600080fd5b818501915085601f8301126103b357600080fd5b8135818111156103c257600080fd5b8660208260051b85010111156103d757600080fd5b60209290920196919550909350505050565b805167ffffffffffffffff8116811461040157600080fd5b919050565b8051600381900b811461040157600080fd5b60006080828403121561042a57600080fd5b6040516080810181811067ffffffffffffffff8211171561045b57634e487b7160e01b600052604160045260246000fd5b6040528251600781900b811461047057600080fd5b815261047e602084016103e9565b602082015261048f60408401610406565b6040820152606083015160608201528091505092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b8781101561055f57868403603f190183528135368a9003601e1901811261051657600080fd5b8901803567ffffffffffffffff81111561052f57600080fd5b8036038b131561053e57600080fd5b61054b86828985016104a8565b9550505091840191908401906001016104f0565b5091979650505050505050565b60006020828403121561057e57600080fd5b505191905056fea26469706673582212205d7a5e1856ba7a5ac5f0471280bd41bd8f274c6e9ad3dfe64a8057b660635c4564736f6c63430008090033\",\n  \"deployedBytecode\": \"0x60806040526004361061003f5760003560e01c8063083a816b146100445780632592c0bf1461008657806331d98b3f1461009b578063f98d06f0146100fe575b600080fd5b34801561005057600080fd5b5061006461005f36600461035b565b610136565b6040805160079390930b835260039190910b6020830152015b60405180910390f35b610099610094366004610374565b6101ca565b005b3480156100a757600080fd5b506100bb6100b636600461035b565b6102b9565b60405161007d9190815160070b815260208083015167ffffffffffffffff169082015260408083015160030b908201526060918201519181019190915260800190565b34801561010a57600080fd5b5060005461011e906001600160a01b031681565b6040516001600160a01b03909116815260200161007d565b600080546040516331d98b3f60e01b815260048101849052829182916001600160a01b03909116906331d98b3f9060240160806040518083038186803b15801561017f57600080fd5b505afa158015610193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b79190610418565b8051604090910151909590945092505050565b6000805460405163d47eed4560e01b81526001600160a01b039091169063d47eed45906101fd90869086906004016104d1565b60206040518083038186803b15801561021557600080fd5b505afa158015610229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024d919061056c565b600054604051631df3cbc560e31b81529192506001600160a01b03169063ef9e5e2890839061028290879087906004016104d1565b6000604051808303818588803b15801561029b57600080fd5b505af11580156102af573d6000803e3d6000fd5b5050505050505050565b60408051608081018252600080825260208201819052818301819052606082018190525491516331d98b3f60e01b81526004810184905290916001600160a01b0316906331d98b3f9060240160806040518083038186803b15801561031d57600080fd5b505afa158015610331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103559190610418565b92915050565b60006020828403121561036d57600080fd5b5035919050565b6000806020838503121561038757600080fd5b823567ffffffffffffffff8082111561039f57600080fd5b818501915085601f8301126103b357600080fd5b8135818111156103c257600080fd5b8660208260051b85010111156103d757600080fd5b60209290920196919550909350505050565b805167ffffffffffffffff8116811461040157600080fd5b919050565b8051600381900b811461040157600080fd5b60006080828403121561042a57600080fd5b6040516080810181811067ffffffffffffffff8211171561045b57634e487b7160e01b600052604160045260246000fd5b6040528251600781900b811461047057600080fd5b815261047e602084016103e9565b602082015261048f60408401610406565b6040820152606083015160608201528091505092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b8781101561055f57868403603f190183528135368a9003601e1901811261051657600080fd5b8901803567ffffffffffffffff81111561052f57600080fd5b8036038b131561053e57600080fd5b61054b86828985016104a8565b9550505091840191908401906001016104f0565b5091979650505050505050565b60006020828403121561057e57600080fd5b505191905056fea26469706673582212205d7a5e1856ba7a5ac5f0471280bd41bd8f274c6e9ad3dfe64a8057b660635c4564736f6c63430008090033\",\n  \"linkReferences\": {},\n  \"deployedLinkReferences\": {}\n}\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/src/index.css",
    "content": "body {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n    sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n    monospace;\n}\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/src/index.js",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/src/reportWebVitals.js",
    "content": "const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n"
  },
  {
    "path": "04-Pyth Pull Oracles/frontend/src/setupTests.js",
    "content": "// jest-dom adds custom jest matchers for asserting on DOM nodes.\n// allows you to do things like:\n// expect(element).toHaveTextContent(/react/i)\n// learn more: https://github.com/testing-library/jest-dom\nimport '@testing-library/jest-dom';\n"
  },
  {
    "path": "04-Pyth Pull Oracles/hardhat.config.js",
    "content": "require('@nomiclabs/hardhat-ethers');\nrequire(\"@nomiclabs/hardhat-waffle\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n    defaultNetwork: 'hardhat',\n\n    networks: {\n       hardhat: {},\n       core_testnet: {\n         url: 'https://rpc.test2.btcs.network',\n         accounts: [PRIVATE_KEY],\n         chainId: 1114,\n       },\n    },\n    solidity: {\n       compilers: [\n         {\n            version: '0.8.9',\n            settings: {\n               evmVersion: 'london',\n               optimizer: {\n                  enabled: true,\n                  runs: 200,\n               },\n            },\n         },\n       ],\n    },\n    paths: {\n       sources: './contracts',\n       cache: './cache',\n       artifacts: './artifacts',\n    },\n    mocha: {\n       timeout: 20000,\n    },\n};\n"
  },
  {
    "path": "04-Pyth Pull Oracles/package.json",
    "content": "{\n  \"name\": \"pyth-feed-boilerplate\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\",\n  \"devDependencies\": {\n    \"@babel/plugin-proposal-private-property-in-object\": \"^7.21.11\",\n    \"hardhat\": \"^2.22.6\"\n  },\n  \"dependencies\": {\n    \"@nomiclabs/hardhat-ethers\": \"^2.2.3\",\n    \"@nomiclabs/hardhat-waffle\": \"^2.0.6\",\n    \"@pythnetwork/pyth-sdk-solidity\": \"^3.1.0\",\n    \"dotenv\": \"^16.5.0\",\n    \"ethers\": \"^5.7.2\"\n  }\n}\n"
  },
  {
    "path": "04-Pyth Pull Oracles/scripts/deploy.js",
    "content": "async function main() {\n    const [deployer] = await ethers.getSigners();\n    console.log(\"Deploying contracts with the account:\", deployer.address);\n\n    // Replace with the actual Pyth contract address for CoreDAO testnet\n    const pythContractAddress = \"0xA2aa501b19aff244D90cc15a4Cf739D2725B5729\";  // Replace with actual address\n\n    const PythFeedBoilerplate = await ethers.getContractFactory(\"PythFeedBoilerplate\");\n    const pythFeedBoilerplate = await PythFeedBoilerplate.deploy(pythContractAddress);\n\n    console.log(\"PythFeedBoilerplate deployed to:\", pythFeedBoilerplate.address);\n}\n\nmain()\n    .then(() => process.exit(0))\n    .catch(error => {\n        console.error(error);\n        process.exit(1);\n    });\n"
  },
  {
    "path": "05-Hello-World-Dapp/.gitignore",
    "content": "node_modules\n.env\nsecret.json\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n"
  },
  {
    "path": "05-Hello-World-Dapp/README.md",
    "content": "# Simple Hello World dApp on Core\nIn this tutorial, you'll learn how to build a simple decentralized application (dApp) using the Core blockchain TestNet. The focus will be on creating a \"Hello World\" dApp that interacts with a smart contract. This dApp will allow users to store, retrieve, and update a message on the blockchain. By following the steps in this guide, you will gain hands-on experience with MetaMask wallet integration, smart contract development, and front-end interaction using the Ethers.js library.\n\n## What Are We Building\nIn this tutorial, we'll develop a simple Hello World decentralized application (dApp) that stores a message in a smart contract deployed on the Core blockchain TestNet. The dApp also has the functionality to retrieve and display the stored message.\n\n## Learning Takeaways\nThis tutorial will help you gain knowledge on the following learning points:\n\n* MetaMask Wallet connectivity to Core Testnet;\n* Smart contract development and deployment on Core Testnet;\n* Front-end integration with the smart contract using Ethers.js library;\n* Read data from a smart contract;\n* Write data to a smart contract;\n\n## Software Prerequisites\n* [Git](https://git-scm.com/) v2.44.0\n* [Node.js](https://nodejs.org/en) v20.11.1\n* [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) v10.2.4\n* [Hardhat](https://hardhat.org/hardhat-runner/docs/getting-started#installation) v2.22.7\n* [MetaMask Web Wallet Extension](https://metamask.io/download/)\n\n## Setting up the development environment\n\n1. Create a new directory for the project and navigate into it\n\n```bash\nmkdir hello-world-dapp\ncd hello-world-dapp\n```\n2. Install Hardhat\n\n```bash\nnpm init --yes\nnpm install --save-dev hardhat\n```\n3. Initialize Hardhat project by running the following command\n\n```bash\nnpx hardhat init\n```\n![dapp-tutorial-1](./assets/hardhat-init.png)\n\n\n4. Once this project is initialized, you'll find the following project structure:\n\n```bash\ndapp-tutorial.\n|   .gitignore\n|   hardhat-config.js \n|   package-lock.json\n|   package.json\n|   README.md\n| \n+---contracts \n|       Lock.sol\n|       \n+---ignition \n|   \\---modules\n|           Lock.js\n|                 \n+---node_modules\n|  \n+---test \n|       Lock.js       \n|       \n```\n\n5. Install and configure MetaMask Chrome Extension to use with Core Testnet. Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config) for a detailed guide.\n\n6. Create a secret.json file in the root folder and store the private key of your MetaMask wallet in it. Refer [here](https://metamask.zendesk.com/hc/en-us/articles/360015290032-How-to-reveal-your-Secret-Recovery-Phrase) for details on how to get MetaMask account's private key.\n\n```json\n{\"PrivateKey\":\"you private key, do not leak this file, do keep it absolutely safe\"}\n```\n\n> Do not forget to add this file to the `.gitignore` file in the root folder of your project so that you don't accidentally check your private keys/secret phrases into a public repository. Make sure you keep this file in an absolutely safe place!\n\n7. Copy the following into your `hardhat.config.js` file\n\n```js\nrequire(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\n\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  defaultNetwork: 'core_testnet',\n\n  networks: {\n     hardhat: {\n     },\n     core_testnet: {\n        url: 'https://rpc.test2.btcs.network',\n        accounts: [PRIVATE_KEY],\n        chainId: 1115,\n     }\n  },\n  solidity: {\n     compilers: [\n       {\n          version: '0.8.26',\n          settings: {\n             evmVersion: 'paris',\n             optimizer: {\n                enabled: true,\n                runs: 200,\n             },\n          },\n       },\n     ],\n  },\n  paths: {\n     sources: './contracts',\n     cache: './cache',\n     artifacts: './artifacts',\n  },\n  mocha: {\n     timeout: 60000,\n  },\n};\n```\n\n## Writing HelloWorld Smart Contract\n\n1. Navigate to the `contracts` folder in the root directory of your project.\n2. Delete the `Lock.sol` file; create a new file `HelloWorld.sol` and paste the following contents into it.\n\n```javascript\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\ncontract HelloWorld {\n    string public message;\n\n    constructor(string memory _message) {\n        message = _message;\n    }\n\n    function setMessage(string memory _message) public {\n        message = _message;\n    }\n}\n\n```\n### Explanation\nThe `HelloWorld` Solidity contract stores a message in a public string variable. It initializes this message through the constructor when the contract is deployed. The `setMessage` function allows anyone to update the stored message. The `public` keyword makes the `message` variable readable by anyone.\n\n#### State Variable\n* `string public message`: Public string variable to store and read a message.\n#### Constructor\n* `constructor(string memory _message) { message = _message; }`: Initializes the message state variable with a value provided during deployment.\n#### Function\n* `function setMessage(string memory _message) public { message = _message; }`: Allows updating the message state variable.\n\n## Compiling Smart Contract\n\n1. To compile the `HelloWorld` smart contract defined in the `HelloWorld.sol`, from the root directory run the following command\n\n```bash\nnpx hardhat compile\n```\n\n## Testing HelloWorld Smart Contracts\n\n1. Before deploying your smart contract on the Core blockchain, it is best adviced to first run a series of tests making sure that the smart contract is working as desired. \n\n2. Inside the `test` folder, delete the `Lock.js` file, create a new file `HelloWorld.js` and update it with the following:\n\n```javascript\nconst { expect } = require(\"chai\");\n\ndescribe(\"HelloWorld contract\", function () {\n  let HelloWorld;\n  let helloWorld;\n  let owner;\n\n  beforeEach(async function () {\n    HelloWorld = await ethers.getContractFactory(\"HelloWorld\");\n    [owner] = await ethers.getSigners();\n    helloWorld = await HelloWorld.deploy(\"Hello, world!\");\n    await helloWorld.waitForDeployment(); \n  });\n\n  it(\"Should return the initial message\", async function () {\n    expect(await helloWorld.message()).to.equal(\"Hello, world!\");\n  });\n\n  it(\"Should update the message\", async function () {\n    const tx =await helloWorld.setMessage(\"Hello, Hardhat!\");\n    await tx.wait(); // Wait for the transaction to be mined\n    expect(await helloWorld.message()).to.equal(\"Hello, Hardhat!\");\n  });\n});\n```\n\n### Explanation\nThis test script is designed to validate the behavior of the HelloWorld smart contract. In the setup phase (beforeEach), it deploys a new instance of the contract with the initial message \"Hello, world!\" and waits for the deployment to complete.\n\nThe first test, \"Should return the initial message,\" checks that the contract correctly returns the initial message stored during deployment. It ensures that the message is set to \"Hello, world!\" as expected.\n\nThe second test, \"Should update the message,\" updates the message to \"Hello, Hardhat!\" and then verifies that the message has been updated successfully by checking its new value. This ensures that the setMessage function works correctly and the contract's state is updated as intended.\n\nThis test script checks the functionality of the HelloWorld contract:\n\n* **Setup:** It deploys the HelloWorld contract with the initial message \"Hello, world!\" before each test.\n* **Test Initial Message:** It verifies that the contract's initial message is correctly set to \"Hello, world!\".\n* **Test Update Message:** It updates the message to \"Hello, Hardhat!\" and confirms that the change is successfully reflected.\n\nOverall, these tests confirm that the contract's functionality for setting and retrieving messages operates correctly.\n\n3. Run the test scripts using the command `npx hardhat test` \n\n![running-hardhat-test-scripts](./assets/hardhat-test.png)\n\n## Deploying HelloWorld Smart Contract \n\n1. Create a `scripts` folder in the root directory of your project. Inside this folder, create a file `deploy.js`; paste the following script into it.\n\n```javascript\nconst { ethers } = require(\"hardhat\");\n\nasync function main() {\n  const [deployer] = await ethers.getSigners();\n\n  console.log(\"Deploying contract with the account:\", deployer.address);\n\n  const HelloWorld = await ethers.getContractFactory(\"HelloWorld\");\n  const helloWorld = await HelloWorld.deploy(\"Hello, World\");\n\n  console.log(\"HelloWorld Contract Address:\", await helloWorld.getAddress());\n}\n\nmain()\n  .then(() => process.exit(0))\n  .catch((error) => {\n    console.error(error);\n    process.exit(1);\n  });\n```\n3. Make sure your MetaMask wallet has tCORE test tokens for the Core Testnet. Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-faucet) for details on how to get tCORE tokens from Core Faucet. \n\n4. Run the following command from the root directory of your project, to deploy your smart contract on the Core Chain.\n\n```bash\nnpx hardhat run scripts/deploy.js\n```\n\nIf succesfully deployed, you will get the following output\n\n![hardhat-deploy-result](./assets/hardhat-deploy.png)\n\n5. Make sure to save the Address of HelloWorld Contract at which is deployed, as obtained above, this will be used for interacting with smart contract from the dApp's frontend.\n\n🎉 Congratulations! You have successfully learned how to create, compile, and deploy a smart contract on the Core Chain Testnet using the Hardhat. \n\n## Interacting with Smart Contract through Frontend\n\n⚡️ Let's create a frontend interface for interacting with the `HelloWorld` smart contract.\n\n### Set Up React Project\n1. Run the following commands to create a react project and install the required depencendy of `ethers.js` to communicate with the HelloWorld smart contract.\n\n```bash\nnpx create-react-app frontend\ncd frontend\nnpm install ethers\n``` \n### Getting HelloWorld Contract ABI\n* Copy the `HelloWorld.json` file from `artifacts/contracts/HelloWorld.sol/` to the `frontend/src/Contract-ABI` directory.\n\n### Create the React Components\n\n* Inside `src`, create a file named `HelloWorld.js`. Ensure you replace placeholders like `YOUR_CONTRACT_ADDRESS` with actual values from your deployment.\n```javascript\nimport React, { useState, useEffect } from 'react';\nimport { ethers } from 'ethers';\nimport { toast, ToastContainer } from 'react-toastify'; // Import ToastContainer and toast\nimport 'react-toastify/dist/ReactToastify.css'; // Import the CSS for toast notifications\nimport './HelloWorld.css'; // Import the CSS file\n\n// Import ABI from JSON file\nimport HelloWorldABI from './Contract-ABI/HelloWorld.json';\n\n// Import the logo image\nimport logo from './core-dao-logo.png'; // Adjust the path as needed\n\n// Replace with your contract's address\nconst contractAddress = \"0xBF46BAA6210Ae6c9050F5453B996070209f69830\";\n\nfunction HelloWorld() {\n    const [message, setMessage] = useState('');\n    const [newMessage, setNewMessage] = useState('');\n    const [provider, setProvider] = useState(null);\n    const [contract, setContract] = useState(null);\n    const [showMessage, setShowMessage] = useState(false); // State to control message visibility\n\n    useEffect(() => {\n        async function init() {\n            if (!window.ethereum) {\n                toast.error(\"No crypto wallet found. Please install MetaMask.\");\n                return;\n            }\n\n            try {\n                // Prompt user to connect MetaMask\n                await window.ethereum.request({ method: 'eth_requestAccounts' });\n\n                const provider = new ethers.BrowserProvider(window.ethereum);\n                const signer = await provider.getSigner();\n                const contract = new ethers.Contract(contractAddress, HelloWorldABI.abi, signer);\n                setProvider(provider);\n                setContract(contract);\n            } catch (error) {\n                toast.error(\"Failed to connect to MetaMask. Please try again.\");\n                console.error(\"Error initializing MetaMask:\", error);\n            }\n        }\n\n        init();\n    }, []);\n\n    const updateMessage = async () => {\n        if (!contract) return;\n        try {\n            const tx = await contract.setMessage(newMessage);\n            await tx.wait();\n            setNewMessage(''); // Clear the input field after updating\n            toast.success(\"Message updated successfully!\");\n        } catch (error) {\n            toast.error(\"Failed to update message. Please try again.\");\n            console.error(\"Error updating message:\", error);\n        }\n    };\n\n    const retrieveMessage = async () => {\n        if (!contract) return;\n        try {\n            const currentMessage = await contract.message();\n            setMessage(currentMessage);\n            setShowMessage(true); // Show the message after retrieval\n            toast.success(\"Message retrieved successfully!\");\n        } catch (error) {\n            toast.error(\"Failed to retrieve message. Please try again.\");\n            console.error(\"Error retrieving message:\", error);\n        }\n    };\n\n    return (\n        <div className=\"container\">\n            <ToastContainer /> {/* Add ToastContainer to display notifications */}\n            <img src={logo} alt=\"Core DAO Logo\" className=\"logo\" />\n            {showMessage && (\n                <div className=\"message-display\">{message}</div>\n            )}\n            <button className=\"retrieve-button\" onClick={retrieveMessage}>Retrieve Current Message</button>\n            <br/>\n            <input\n                type=\"text\"\n                value={newMessage}\n                onChange={(e) => setNewMessage(e.target.value)}\n                className=\"input-field\"\n                placeholder=\"Enter new message\"\n            />\n            <button className=\"update-button\" onClick={updateMessage}>Set New Message</button>\n        </div>\n    );\n}\n\nexport default HelloWorld;\n```\n\n### Create HelloWorld.css\n\n* Inside `src`, create a file named `HelloWorld.css`\n\n```css\n.container {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    height: 100vh;\n    width: 100vw;\n    background-color: #2e2e2e;\n    color: #e0e0e0;\n    padding: 20px;\n    box-sizing: border-box;\n}\n\n.logo {\n    width: 200px;\n    margin-bottom: 40px;\n    border-radius: 10px;\n    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5);\n}\n\n.retrieve-button, .update-button {\n    background-color: #ff920f;\n    color: white;\n    border: none;\n    padding: 14px 28px;\n    margin: 10px;\n    cursor: pointer;\n    border-radius: 8px;\n    font-size: 18px;\n    transition: background-color 0.3s ease, transform 0.2s ease;\n}\n\n.retrieve-button:hover, .update-button:hover {\n    background-color: #e67e22;\n    transform: scale(1.05);\n}\n\n.message-display {\n    font-size: 28px;\n    margin-bottom: 20px;\n    font-weight: bold;\n    color: #ffd54f;\n}\n\n.input-field {\n    padding: 14px;\n    border: 1px solid #555;\n    border-radius: 8px;\n    width: 80%;\n    max-width: 500px;\n    margin-bottom: 20px;\n    font-size: 18px;\n    background-color: #424242;\n    color: #fff;\n    transition: background-color 0.3s ease, border-color 0.3s ease;\n}\n\n.retrieve-button {\n    margin-top: 20px;\n}\n\n.input-field:focus {\n    background-color: #616161;\n    border-color: #ff920f;\n    outline: none;\n}\n```\n\n### Update App.js \n\n* Replace the contents of App.js with the following\n\n```jsx\nimport React from 'react';\nimport './App.css';\nimport HelloWorld from './HelloWorld';\n\nfunction App() {\n    return (\n        <div className=\"App\">\n            <header className=\"App-header\">\n                <HelloWorld />\n            </header>\n        </div>\n    );\n}\n\nexport default App;\n```\n\n## Running Your Application\n* Start the React Development Server using the command `npm run start`\n\n```bash\nnpm start\nYour application should now be accessible at http://localhost:3000.\n```\n\n## Interact with the dApp\n\nOpen your React app in the browser. You should be able to retrieve and set messages using your deployed contract.\n![frontend](./assets/frontend-ui.png)\n\n🎉 Congratulations! You've just interacted with your newly-deployed contract using your dApp's front end! You can build on the codebase by deploying and interacting with different contracts, and by adding new UI components to the website for your users.\n"
  },
  {
    "path": "05-Hello-World-Dapp/contracts/HelloWorld.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\ncontract HelloWorld {\n    string public message;\n\n    constructor(string memory _message) {\n        message = _message;\n    }\n\n    function setMessage(string memory _message) public {\n        message = _message;\n    }\n}\n"
  },
  {
    "path": "05-Hello-World-Dapp/contracts/Lock.sol",
    "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.24;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\ncontract Lock {\n    uint public unlockTime;\n    address payable public owner;\n\n    event Withdrawal(uint amount, uint when);\n\n    constructor(uint _unlockTime) payable {\n        require(\n            block.timestamp < _unlockTime,\n            \"Unlock time should be in the future\"\n        );\n\n        unlockTime = _unlockTime;\n        owner = payable(msg.sender);\n    }\n\n    function withdraw() public {\n        // Uncomment this line, and the import of \"hardhat/console.sol\", to print a log in your terminal\n        // console.log(\"Unlock time is %o and block timestamp is %o\", unlockTime, block.timestamp);\n\n        require(block.timestamp >= unlockTime, \"You can't withdraw yet\");\n        require(msg.sender == owner, \"You aren't the owner\");\n\n        emit Withdrawal(address(this).balance, block.timestamp);\n\n        owner.transfer(address(this).balance);\n    }\n}\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/README.md",
    "content": "# Getting Started with Create React App\n\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n### `npm start`\n\nRuns the app in the development mode.\\\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\n\nThe page will reload when you make changes.\\\nYou may also see any lint errors in the console.\n\n### `npm test`\n\nLaunches the test runner in the interactive watch mode.\\\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\n\n### `npm run build`\n\nBuilds the app for production to the `build` folder.\\\nIt correctly bundles React in production mode and optimizes the build for the best performance.\n\nThe build is minified and the filenames include the hashes.\\\nYour app is ready to be deployed!\n\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\n\n### `npm run eject`\n\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\n\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\n\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\n\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\n\n## Learn More\n\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\n\nTo learn React, check out the [React documentation](https://reactjs.org/).\n\n### Code Splitting\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\n\n### Analyzing the Bundle Size\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\n\n### Making a Progressive Web App\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\n\n### Advanced Configuration\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\n\n### Deployment\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\n\n### `npm run build` fails to minify\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/package.json",
    "content": "{\n  \"name\": \"frontend\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@testing-library/jest-dom\": \"5.17.0\",\n    \"@testing-library/react\": \"13.4.0\",\n    \"@testing-library/user-event\": \"13.5.0\",\n    \"ethers\": \"6.13.2\",\n    \"react\": \"18.3.1\",\n    \"react-dom\": \"18.3.1\",\n    \"react-scripts\": \"5.0.1\",\n    \"web-vitals\": \"^2.1.4\"\n  },\n  \"scripts\": {\n    \"start\": \"react-scripts start\",\n    \"build\": \"react-scripts build\",\n    \"test\": \"react-scripts test\",\n    \"eject\": \"react-scripts eject\"\n  },\n  \"eslintConfig\": {\n    \"extends\": [\n      \"react-app\",\n      \"react-app/jest\"\n    ]\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  },\n  \"devDependencies\": {\n    \"react-toastify\": \"^10.0.5\"\n  }\n}\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <meta\n      name=\"description\"\n      content=\"Web site created using create-react-app\"\n    />\n    <link rel=\"apple-touch-icon\" href=\"%PUBLIC_URL%/logo192.png\" />\n    <!--\n      manifest.json provides metadata used when your web app is installed on a\n      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <!--\n      Notice the use of %PUBLIC_URL% in the tags above.\n      It will be replaced with the URL of the `public` folder during the build.\n      Only files inside the `public` folder can be referenced from the HTML.\n\n      Unlike \"/favicon.ico\" or \"favicon.ico\", \"%PUBLIC_URL%/favicon.ico\" will\n      work correctly both with client-side routing and a non-root public URL.\n      Learn how to configure a non-root public URL by running `npm run build`.\n    -->\n    <title>React App</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"root\"></div>\n    <!--\n      This HTML file is a template.\n      If you open it directly in the browser, you will see an empty page.\n\n      You can add webfonts, meta tags, or analytics to this file.\n      The build step will place the bundled scripts into the <body> tag.\n\n      To begin the development, run `npm start` or `yarn start`.\n      To create a production bundle, use `npm run build` or `yarn build`.\n    -->\n  </body>\n</html>\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/public/manifest.json",
    "content": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"logo192.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"192x192\"\n    },\n    {\n      \"src\": \"logo512.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/App.css",
    "content": ".App {\n  text-align: center;\n}\n\n.App-logo {\n  height: 40vmin;\n  pointer-events: none;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  .App-logo {\n    animation: App-logo-spin infinite 20s linear;\n  }\n}\n\n.App-header {\n  background-color: #282c34;\n  min-height: 100vh;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  font-size: calc(10px + 2vmin);\n  color: white;\n}\n\n.App-link {\n  color: #61dafb;\n}\n\n@keyframes App-logo-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/App.js",
    "content": "import React from 'react';\nimport './App.css';\nimport HelloWorld from './HelloWorld';\n\nfunction App() {\n    return (\n        <div className=\"App\">\n            <header className=\"App-header\">\n                <HelloWorld />\n            </header>\n        </div>\n    );\n}\n\nexport default App;\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/App.test.js",
    "content": "import { render, screen } from '@testing-library/react';\nimport App from './App';\n\ntest('renders learn react link', () => {\n  render(<App />);\n  const linkElement = screen.getByText(/learn react/i);\n  expect(linkElement).toBeInTheDocument();\n});\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/Contract-ABI/HelloWorld.json",
    "content": "{\n  \"_format\": \"hh-sol-artifact-1\",\n  \"contractName\": \"HelloWorld\",\n  \"sourceName\": \"contracts/HelloWorld.sol\",\n  \"abi\": [\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"_message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"message\",\n      \"outputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"\",\n          \"type\": \"string\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"string\",\n          \"name\": \"_message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"setMessage\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ],\n  \"bytecode\": \"0x608060405234801561001057600080fd5b5060405161062138038061062183398101604081905261002f91610058565b600061003b82826101ad565b505061026b565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561006a57600080fd5b81516001600160401b0381111561008057600080fd5b8201601f8101841361009157600080fd5b80516001600160401b038111156100aa576100aa610042565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d8576100d8610042565b6040528181528282016020018610156100f057600080fd5b60005b8281101561010f576020818501810151838301820152016100f3565b50600091810160200191909152949350505050565b600181811c9082168061013857607f821691505b60208210810361015857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101a857806000526020600020601f840160051c810160208510156101855750805b601f840160051c820191505b818110156101a55760008155600101610191565b50505b505050565b81516001600160401b038111156101c6576101c6610042565b6101da816101d48454610124565b8461015e565b6020601f82116001811461020e57600083156101f65750848201515b600019600385901b1c1916600184901b1784556101a5565b600084815260208120601f198516915b8281101561023e578785015182556020948501946001909201910161021e565b508482101561025c5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6103a78061027a6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063368b87721461003b578063e21f37ce14610050575b600080fd5b61004e610049366004610122565b61006e565b005b61005861007e565b60405161006591906101db565b60405180910390f35b600061007a82826102b2565b5050565b6000805461008b90610229565b80601f01602080910402602001604051908101604052809291908181526020018280546100b790610229565b80156101045780601f106100d957610100808354040283529160200191610104565b820191906000526020600020905b8154815290600101906020018083116100e757829003601f168201915b505050505081565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561013457600080fd5b813567ffffffffffffffff81111561014b57600080fd5b8201601f8101841361015c57600080fd5b803567ffffffffffffffff8111156101765761017661010c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156101a5576101a561010c565b6040528181528282016020018610156101bd57600080fd5b81602084016020830137600091810160200191909152949350505050565b602081526000825180602084015260005b8181101561020957602081860181015160408684010152016101ec565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061023d57607f821691505b60208210810361025d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102ad57806000526020600020601f840160051c8101602085101561028a5750805b601f840160051c820191505b818110156102aa5760008155600101610296565b50505b505050565b815167ffffffffffffffff8111156102cc576102cc61010c565b6102e0816102da8454610229565b84610263565b6020601f82116001811461031457600083156102fc5750848201515b600019600385901b1c1916600184901b1784556102aa565b600084815260208120601f198516915b828110156103445787850151825560209485019460019092019101610324565b50848210156103625786840151600019600387901b60f8161c191681555b50505050600190811b0190555056fea26469706673582212200901b2e271d38e15a461cb148f993399b3ccb61d788adadb0e62f7d9526a4ff764736f6c634300081a0033\",\n  \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063368b87721461003b578063e21f37ce14610050575b600080fd5b61004e610049366004610122565b61006e565b005b61005861007e565b60405161006591906101db565b60405180910390f35b600061007a82826102b2565b5050565b6000805461008b90610229565b80601f01602080910402602001604051908101604052809291908181526020018280546100b790610229565b80156101045780601f106100d957610100808354040283529160200191610104565b820191906000526020600020905b8154815290600101906020018083116100e757829003601f168201915b505050505081565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561013457600080fd5b813567ffffffffffffffff81111561014b57600080fd5b8201601f8101841361015c57600080fd5b803567ffffffffffffffff8111156101765761017661010c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156101a5576101a561010c565b6040528181528282016020018610156101bd57600080fd5b81602084016020830137600091810160200191909152949350505050565b602081526000825180602084015260005b8181101561020957602081860181015160408684010152016101ec565b506000604082850101526040601f19601f83011684010191505092915050565b600181811c9082168061023d57607f821691505b60208210810361025d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102ad57806000526020600020601f840160051c8101602085101561028a5750805b601f840160051c820191505b818110156102aa5760008155600101610296565b50505b505050565b815167ffffffffffffffff8111156102cc576102cc61010c565b6102e0816102da8454610229565b84610263565b6020601f82116001811461031457600083156102fc5750848201515b600019600385901b1c1916600184901b1784556102aa565b600084815260208120601f198516915b828110156103445787850151825560209485019460019092019101610324565b50848210156103625786840151600019600387901b60f8161c191681555b50505050600190811b0190555056fea26469706673582212200901b2e271d38e15a461cb148f993399b3ccb61d788adadb0e62f7d9526a4ff764736f6c634300081a0033\",\n  \"linkReferences\": {},\n  \"deployedLinkReferences\": {}\n}\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/HelloWorld.css",
    "content": "/* Container for the entire component */\n.container {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    height: 100vh; /* Full viewport height */\n    width: 100vw; /* Full viewport width */\n    background-color: #2e2e2e; /* Darker gray background */\n    color: #e0e0e0; /* Light gray text for better readability */\n    padding: 20px;\n    box-sizing: border-box; /* Ensure padding is included in height and width */\n}\n\n/* Style for the logo */\n.logo {\n    width: 200px; /* Larger size for visibility */\n    margin-bottom: 40px;\n    border-radius: 10px; /* Rounded corners for the logo */\n    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5); /* Shadow for depth */\n}\n\n/* Style for the retrieve button and update button */\n.retrieve-button, .update-button {\n    background-color: #ff920f; /* Updated orange color */\n    color: white;\n    border: none;\n    padding: 14px 28px; /* Slightly larger padding */\n    margin: 10px;\n    cursor: pointer;\n    border-radius: 8px;\n    font-size: 18px;\n    transition: background-color 0.3s ease, transform 0.2s ease;\n}\n\n.retrieve-button:hover, .update-button:hover {\n    background-color: #e67e22; /* Darker orange for hover effect */\n    transform: scale(1.05); /* Slightly enlarge button on hover */\n}\n\n/* Style for the message display */\n.message-display {\n    font-size: 28px; /* Larger font size for better visibility */\n    margin-bottom: 20px; /* Space below the message */\n    font-weight: bold;\n    color: #ffd54f; /* Bright yellow color for contrast */\n}\n\n/* Style for the input field */\n.input-field {\n    padding: 14px;\n    border: 1px solid #555; /* Darker border for visibility */\n    border-radius: 8px;\n    width: 80%;\n    max-width: 500px; /* Increased max-width for larger screens */\n    margin-bottom: 20px; /* Space below the input field */\n    font-size: 18px;\n    background-color: #424242; /* Slightly lighter gray for input background */\n    color: #fff; /* White text color for the input field */\n    transition: background-color 0.3s ease, border-color 0.3s ease;\n}\n\n/* Adding gap specifically between input field and retrieve button */\n.retrieve-button {\n    margin-top: 20px; /* Adjust the gap as needed */\n}\n\n.input-field:focus {\n    background-color: #616161; /* Lighter gray on focus */\n    border-color: #ff920f; /* Orange border on focus */\n    outline: none;\n}\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/HelloWorld.js",
    "content": "import React, { useState, useEffect } from 'react';\nimport { ethers } from 'ethers';\nimport { toast, ToastContainer } from 'react-toastify'; // Import ToastContainer and toast\nimport 'react-toastify/dist/ReactToastify.css'; // Import the CSS for toast notifications\nimport './HelloWorld.css'; // Import the CSS file\n\n// Import ABI from JSON file\nimport HelloWorldABI from './Contract-ABI/HelloWorld.json';\n\n// Import the logo image\nimport logo from './core-dao-logo.png'; // Adjust the path as needed\n\n// Replace with your contract's address\nconst contractAddress = \"0xf5d9Dd0f6EAa91802979707b91407d8448136DD0\";\n\nfunction HelloWorld() {\n    const [message, setMessage] = useState('');\n    const [newMessage, setNewMessage] = useState('');\n    //const [provider, setProvider] = useState(null);\n    const [contract, setContract] = useState(null);\n    const [showMessage, setShowMessage] = useState(false); // State to control message visibility\n\n    useEffect(() => {\n        async function init() {\n            if (!window.ethereum) {\n                toast.error(\"No crypto wallet found. Please install MetaMask.\");\n                return;\n            }\n\n            try {\n                // Prompt user to connect MetaMask\n                await window.ethereum.request({ method: 'eth_requestAccounts' });\n\n                const provider = new ethers.BrowserProvider(window.ethereum);\n                const signer = await provider.getSigner();\n                const contract = new ethers.Contract(contractAddress, HelloWorldABI.abi, signer);\n                //setProvider(provider);\n                setContract(contract);\n            } catch (error) {\n                toast.error(\"Failed to connect to MetaMask. Please try again.\");\n                console.error(\"Error initializing MetaMask:\", error);\n            }\n        }\n\n        init();\n    }, []);\n\n    const updateMessage = async () => {\n        if (!contract) return;\n        try {\n            const tx = await contract.setMessage(newMessage);\n            await tx.wait();\n            setNewMessage(''); // Clear the input field after updating\n            toast.success(\"Message updated successfully!\");\n        } catch (error) {\n            toast.error(\"Failed to update message. Please try again.\");\n            console.error(\"Error updating message:\", error);\n        }\n    };\n\n    const retrieveMessage = async () => {\n        if (!contract) return;\n        try {\n            const currentMessage = await contract.message();\n            setMessage(currentMessage);\n            setShowMessage(true); // Show the message after retrieval\n            toast.success(\"Message retrieved successfully!\");\n        } catch (error) {\n            toast.error(\"Failed to retrieve message. Please try again.\");\n            console.error(\"Error retrieving message:\", error);\n        }\n    };\n\n    return (\n        <div className=\"container\">\n            <ToastContainer /> {/* Add ToastContainer to display notifications */}\n            <img src={logo} alt=\"Core DAO Logo\" className=\"logo\" />\n            {showMessage && (\n                <div className=\"message-display\">{message}</div>\n            )}\n            <button className=\"retrieve-button\" onClick={retrieveMessage}>Retrieve Current Message</button>\n            <br/>\n            <input\n                type=\"text\"\n                value={newMessage}\n                onChange={(e) => setNewMessage(e.target.value)}\n                className=\"input-field\"\n                placeholder=\"Enter new message\"\n            />\n            <button className=\"update-button\" onClick={updateMessage}>Set New Message</button>\n        </div>\n    );\n}\n\nexport default HelloWorld;\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/index.css",
    "content": "body {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n    sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n    monospace;\n}\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/index.js",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/reportWebVitals.js",
    "content": "const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n"
  },
  {
    "path": "05-Hello-World-Dapp/frontend/src/setupTests.js",
    "content": "// jest-dom adds custom jest matchers for asserting on DOM nodes.\n// allows you to do things like:\n// expect(element).toHaveTextContent(/react/i)\n// learn more: https://github.com/testing-library/jest-dom\nimport '@testing-library/jest-dom';\n"
  },
  {
    "path": "05-Hello-World-Dapp/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\n\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  defaultNetwork: 'hardhat',\n\n  networks: {\n     hardhat: {\n     },\n     core_testnet: {\n        url: 'https://rpc.test2.btcs.network',\n        accounts: [PRIVATE_KEY],\n        chainId: 1114,\n     }\n  },\n  solidity: {\n     compilers: [\n       {\n          version: '0.8.26',\n          settings: {\n             evmVersion: 'shanghai',\n             optimizer: {\n                enabled: true,\n                runs: 200,\n             },\n          },\n       },\n     ],\n  },\n  paths: {\n     sources: './contracts',\n     cache: './cache',\n     artifacts: './artifacts',\n  },\n  mocha: {\n     timeout: 60000,\n  },\n};\n"
  },
  {
    "path": "05-Hello-World-Dapp/ignition/modules/Lock.js",
    "content": "const { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "05-Hello-World-Dapp/npx",
    "content": ""
  },
  {
    "path": "05-Hello-World-Dapp/package.json",
    "content": "{\n  \"name\": \"hardhat-project\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-toolbox\": \"^5.0.0\",\n    \"hardhat\": \"^2.22.7\"\n  },\n  \"description\": \"This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a Hardhat Ignition module that deploys that contract.\",\n  \"version\": \"1.0.0\",\n  \"main\": \"hardhat.config.js\",\n  \"directories\": {\n    \"test\": \"test\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^16.5.0\"\n  },\n  \"scripts\": {\n    \"test\": \"mocha\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\"\n}\n"
  },
  {
    "path": "05-Hello-World-Dapp/scripts/deploy.js",
    "content": "const { ethers } = require(\"hardhat\");\n\nasync function main() {\n  const [deployer] = await ethers.getSigners();\n\n  console.log(\"Deploying contract with the account:\", deployer.address);\n\n  const HelloWorld = await ethers.getContractFactory(\"HelloWorld\");\n  const helloWorld = await HelloWorld.deploy(\"Hello, World\");\n\n  console.log(\"HelloWorld Contract Address:\", await helloWorld.getAddress());\n}\n\nmain()\n  .then(() => process.exit(0))\n  .catch((error) => {\n    console.error(error);\n    process.exit(1);\n  });"
  },
  {
    "path": "05-Hello-World-Dapp/test/HelloWorld.js",
    "content": "const { expect } = require(\"chai\");\n\ndescribe(\"HelloWorld contract\", function () {\n  let HelloWorld;\n  let helloWorld;\n  let owner;\n\n  beforeEach(async function () {\n    HelloWorld = await ethers.getContractFactory(\"HelloWorld\");\n    [owner] = await ethers.getSigners();\n    helloWorld = await HelloWorld.deploy(\"Hello, world!\");\n    await helloWorld.waitForDeployment(); \n  });\n\n  it(\"Should return the initial message\", async function () {\n    expect(await helloWorld.message()).to.equal(\"Hello, world!\");\n  });\n\n  it(\"Should update the message\", async function () {\n    const tx =await helloWorld.setMessage(\"Hello, Hardhat!\");\n    await tx.wait(); // Wait for the transaction to be mined\n    expect(await helloWorld.message()).to.equal(\"Hello, Hardhat!\");\n  });\n});\n"
  },
  {
    "path": "06-Subgraphs-on-Core/README.md",
    "content": "# Guestbook Subgraph\n\nThis repository contains the subgraph for the Guestbook application on the Core Network. The subgraph indexes events and data from the Guestbook smart contract, allowing for easy querying using GraphQL.\n\n## Table of Contents\n\n- [Prerequisites](#prerequisites)\n- [Clone the Repository](#clone-the-repository)\n- [Configuration](#configuration)\n- [Install Dependencies](#install-dependencies)\n- [Deploying with Docker](#deploying-with-docker)\n- [Deploying the Subgraph](#deploying-the-subgraph)\n- [Interacting with the Subgraph](#interacting-with-the-subgraph)\n- [Troubleshooting](#troubleshooting)\n\n## Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n- [Node.js](https://nodejs.org/en/) (v14 or later)\n- [npm](https://www.npmjs.com/)\n- [Docker](https://www.docker.com/)\n- [Git](https://git-scm.com/)\n\n## Clone the Repository\n\nTo clone the repository locally, run the following commands:\n\n```bash\ngit clone https://github.com/coredao-org/dapp-tutorial.git\ncd dapp-tutorial/06-Subgraphs-on-Core\n```\n\n## Configuration\n\n### Environment Variables\n\nYou need to set up the following environment variables to configure deployment:\n\nCreate a .env file in the root directory:\n\n```bash\ntouch.env\n```\n\n2. Add the necessary environment variables to the .env file:\n\n```env\nGRAPH_NODE=https://thegraph-node.test.btcs.network/\nIPFS_NODE=https://thegraph-ipfs.test.btcs.network/\nGRAPH_ACCESS_TOKEN=your_access_token_here\n```\n\n### Subgraph Configuration\n\nEnsure your subgraph.yaml file is correctly set up with the necessary contract addresses and start blocks.\n\n```zsh\nnpm install\n```\n\nThis will install all required packages including @graphprotocol/graph-cli and @graphprotocol/graph-ts.\n\n## Deploying with Docker\n\nYou can deploy your subgraph using Docker to simulate a local environment.\n\n1. <b>Build and Start Docker Containers:</b>\n\n```zsh\ndocker-compose up -d\n```\n\n2. <b>Check Docker Containers:</b>\n\n```zsh\ndocker ps\n```\n\nEnsure all necessary containers are running.\n\n## Deploying the Subgraph\n\n### Authenticate with Graph Node\n\nIf not already authenticated, authenticate your deployment key:\n\n```zsh\nexport GRAPH_ACCESS_TOKEN=08e38ec0513b40fd9b6a4428923d06ac\n```\n\n\n### Generate code and build the subgraph:\n\n```bash\ngraph codegen\ngraph build\n```\n\n### Create and Deploy Subgraph\n\n```\ngraph create \\\n  --node $GRAPH_NODE \\\n  --access-token $GRAPH_ACCESS_TOKEN \\\n  your-subgraph-name\n```\n\n```\ngraph deploy \\\n  --node $GRAPH_NODE \\\n  --ipfs $IPFS_NODE \\\n  --access-token $GRAPH_ACCESS_TOKEN \\\n  your-subgraph-name\n```\n\nReplace your-subgraph-name with your deployment target.\n\n### Query the Subgraph\nAfter deployment, your subgraph will be available at the query endpoint (e.g., https://thegraph.test2.btcs.network/subgraphs/name/guestbook-subgraph).\n\nExample query:\n\n```\n{\n  entrySigneds(first: 10, orderBy: blockTimestamp, orderDirection: desc) {\n    id\n    name\n    message\n    blockNumber\n    blockTimestamp\n    transactionHash\n  }\n}\n```\n\nYou can use GraphQL, Apollo Client, or any GraphQL tool to query your data.\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "06-Subgraphs-on-Core/abis/Guestbook.json",
    "content": "[\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"string\",\n        \"name\": \"name\",\n        \"type\": \"string\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"string\",\n        \"name\": \"message\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"EntrySigned\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [{ \"internalType\": \"uint256\", \"name\": \"\", \"type\": \"uint256\" }],\n    \"name\": \"entries\",\n    \"outputs\": [\n      { \"internalType\": \"string\", \"name\": \"name\", \"type\": \"string\" },\n      { \"internalType\": \"string\", \"name\": \"message\", \"type\": \"string\" }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getEntries\",\n    \"outputs\": [\n      {\n        \"components\": [\n          { \"internalType\": \"string\", \"name\": \"name\", \"type\": \"string\" },\n          { \"internalType\": \"string\", \"name\": \"message\", \"type\": \"string\" }\n        ],\n        \"internalType\": \"struct Guestbook.Entry[]\",\n        \"name\": \"\",\n        \"type\": \"tuple[]\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      { \"internalType\": \"string\", \"name\": \"_name\", \"type\": \"string\" },\n      { \"internalType\": \"string\", \"name\": \"_message\", \"type\": \"string\" }\n    ],\n    \"name\": \"signGuestbook\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "06-Subgraphs-on-Core/build/Guestbook/Guestbook.json",
    "content": "[\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"string\",\n        \"name\": \"name\",\n        \"type\": \"string\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"string\",\n        \"name\": \"message\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"EntrySigned\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"entries\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"name\",\n        \"type\": \"string\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"message\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getEntries\",\n    \"outputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"string\",\n            \"name\": \"name\",\n            \"type\": \"string\"\n          },\n          {\n            \"internalType\": \"string\",\n            \"name\": \"message\",\n            \"type\": \"string\"\n          }\n        ],\n        \"internalType\": \"struct Guestbook.Entry[]\",\n        \"name\": \"\",\n        \"type\": \"tuple[]\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"_name\",\n        \"type\": \"string\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"_message\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"signGuestbook\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]"
  },
  {
    "path": "06-Subgraphs-on-Core/build/schema.graphql",
    "content": "type EntrySigned @entity(immutable: true) {\n  id: Bytes!\n  name: String! # string\n  message: String! # string\n  blockNumber: BigInt!\n  blockTimestamp: BigInt!\n  transactionHash: Bytes!\n}\n"
  },
  {
    "path": "06-Subgraphs-on-Core/build/subgraph.yaml",
    "content": "specVersion: 1.0.0\nindexerHints:\n  prune: auto\nschema:\n  file: schema.graphql\ndataSources:\n  - kind: ethereum\n    name: Guestbook\n    network: core\n    source:\n      address: \"0x0D0b3bAc514d53AafC95c74294Bb1B613D1862c2\"\n      abi: Guestbook\n      startBlock: 22122890\n    mapping:\n      kind: ethereum/events\n      apiVersion: 0.0.7\n      language: wasm/assemblyscript\n      entities:\n        - EntrySigned\n      abis:\n        - name: Guestbook\n          file: Guestbook/Guestbook.json\n      eventHandlers:\n        - event: EntrySigned(string,string)\n          handler: handleEntrySigned\n      file: Guestbook/Guestbook.wasm\n"
  },
  {
    "path": "06-Subgraphs-on-Core/docker-compose.yml",
    "content": "version: \"3\"\nservices:\n  graph-node:\n    image: graphprotocol/graph-node\n    ports:\n      - \"8000:8000\"\n      - \"8001:8001\"\n      - \"8020:8020\"\n      - \"8030:8030\"\n      - \"8040:8040\"\n    depends_on:\n      - ipfs\n      - postgres\n    extra_hosts:\n      - host.docker.internal:host-gateway\n    environment:\n      postgres_host: postgres\n      postgres_user: graph-node\n      postgres_pass: let-me-in\n      postgres_db: graph-node\n      ipfs: \"ipfs:5001\"\n      ethereum: \"core-testnet:https://rpc.test.btcs.network\"\n      GRAPH_LOG: info\n  ipfs:\n    image: ipfs/kubo:v0.17.0\n    ports:\n      - \"5001:5001\"\n    volumes:\n      - ./data/ipfs:/data/ipfs\n  postgres:\n    image: postgres:14\n    ports:\n      - \"5432:5432\"\n    command:\n      [\n        \"postgres\",\n        \"-cshared_preload_libraries=pg_stat_statements\",\n        \"-cmax_connections=200\",\n      ]\n    environment:\n      POSTGRES_USER: graph-node\n      POSTGRES_PASSWORD: let-me-in\n      POSTGRES_DB: graph-node\n      # FIXME: remove this env. var. which we shouldn't need. Introduced by\n      # <https://github.com/graphprotocol/graph-node/pull/3511>, maybe as a\n      # workaround for https://github.com/docker/for-mac/issues/6270?\n      PGDATA: \"/var/lib/postgresql/data\"\n      POSTGRES_INITDB_ARGS: \"-E UTF8 --locale=C\"\n    volumes:\n      - ./data/postgres:/var/lib/postgresql/data\n"
  },
  {
    "path": "06-Subgraphs-on-Core/generated/Guestbook/Guestbook.ts",
    "content": "// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n\nimport {\n  ethereum,\n  JSONValue,\n  TypedMap,\n  Entity,\n  Bytes,\n  Address,\n  BigInt,\n} from \"@graphprotocol/graph-ts\";\n\nexport class EntrySigned extends ethereum.Event {\n  get params(): EntrySigned__Params {\n    return new EntrySigned__Params(this);\n  }\n}\n\nexport class EntrySigned__Params {\n  _event: EntrySigned;\n\n  constructor(event: EntrySigned) {\n    this._event = event;\n  }\n\n  get name(): string {\n    return this._event.parameters[0].value.toString();\n  }\n\n  get message(): string {\n    return this._event.parameters[1].value.toString();\n  }\n}\n\nexport class Guestbook__entriesResult {\n  value0: string;\n  value1: string;\n\n  constructor(value0: string, value1: string) {\n    this.value0 = value0;\n    this.value1 = value1;\n  }\n\n  toMap(): TypedMap<string, ethereum.Value> {\n    let map = new TypedMap<string, ethereum.Value>();\n    map.set(\"value0\", ethereum.Value.fromString(this.value0));\n    map.set(\"value1\", ethereum.Value.fromString(this.value1));\n    return map;\n  }\n\n  getName(): string {\n    return this.value0;\n  }\n\n  getMessage(): string {\n    return this.value1;\n  }\n}\n\nexport class Guestbook__getEntriesResultValue0Struct extends ethereum.Tuple {\n  get name(): string {\n    return this[0].toString();\n  }\n\n  get message(): string {\n    return this[1].toString();\n  }\n}\n\nexport class Guestbook extends ethereum.SmartContract {\n  static bind(address: Address): Guestbook {\n    return new Guestbook(\"Guestbook\", address);\n  }\n\n  entries(param0: BigInt): Guestbook__entriesResult {\n    let result = super.call(\"entries\", \"entries(uint256):(string,string)\", [\n      ethereum.Value.fromUnsignedBigInt(param0),\n    ]);\n\n    return new Guestbook__entriesResult(\n      result[0].toString(),\n      result[1].toString(),\n    );\n  }\n\n  try_entries(param0: BigInt): ethereum.CallResult<Guestbook__entriesResult> {\n    let result = super.tryCall(\"entries\", \"entries(uint256):(string,string)\", [\n      ethereum.Value.fromUnsignedBigInt(param0),\n    ]);\n    if (result.reverted) {\n      return new ethereum.CallResult();\n    }\n    let value = result.value;\n    return ethereum.CallResult.fromValue(\n      new Guestbook__entriesResult(value[0].toString(), value[1].toString()),\n    );\n  }\n\n  getEntries(): Array<Guestbook__getEntriesResultValue0Struct> {\n    let result = super.call(\n      \"getEntries\",\n      \"getEntries():((string,string)[])\",\n      [],\n    );\n\n    return result[0].toTupleArray<Guestbook__getEntriesResultValue0Struct>();\n  }\n\n  try_getEntries(): ethereum.CallResult<\n    Array<Guestbook__getEntriesResultValue0Struct>\n  > {\n    let result = super.tryCall(\n      \"getEntries\",\n      \"getEntries():((string,string)[])\",\n      [],\n    );\n    if (result.reverted) {\n      return new ethereum.CallResult();\n    }\n    let value = result.value;\n    return ethereum.CallResult.fromValue(\n      value[0].toTupleArray<Guestbook__getEntriesResultValue0Struct>(),\n    );\n  }\n}\n\nexport class SignGuestbookCall extends ethereum.Call {\n  get inputs(): SignGuestbookCall__Inputs {\n    return new SignGuestbookCall__Inputs(this);\n  }\n\n  get outputs(): SignGuestbookCall__Outputs {\n    return new SignGuestbookCall__Outputs(this);\n  }\n}\n\nexport class SignGuestbookCall__Inputs {\n  _call: SignGuestbookCall;\n\n  constructor(call: SignGuestbookCall) {\n    this._call = call;\n  }\n\n  get _name(): string {\n    return this._call.inputValues[0].value.toString();\n  }\n\n  get _message(): string {\n    return this._call.inputValues[1].value.toString();\n  }\n}\n\nexport class SignGuestbookCall__Outputs {\n  _call: SignGuestbookCall;\n\n  constructor(call: SignGuestbookCall) {\n    this._call = call;\n  }\n}\n"
  },
  {
    "path": "06-Subgraphs-on-Core/generated/schema.ts",
    "content": "// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n\nimport {\n  TypedMap,\n  Entity,\n  Value,\n  ValueKind,\n  store,\n  Bytes,\n  BigInt,\n  BigDecimal,\n} from \"@graphprotocol/graph-ts\";\n\nexport class EntrySigned extends Entity {\n  constructor(id: Bytes) {\n    super();\n    this.set(\"id\", Value.fromBytes(id));\n  }\n\n  save(): void {\n    let id = this.get(\"id\");\n    assert(id != null, \"Cannot save EntrySigned entity without an ID\");\n    if (id) {\n      assert(\n        id.kind == ValueKind.BYTES,\n        `Entities of type EntrySigned must have an ID of type Bytes but the id '${id.displayData()}' is of type ${id.displayKind()}`,\n      );\n      store.set(\"EntrySigned\", id.toBytes().toHexString(), this);\n    }\n  }\n\n  static loadInBlock(id: Bytes): EntrySigned | null {\n    return changetype<EntrySigned | null>(\n      store.get_in_block(\"EntrySigned\", id.toHexString()),\n    );\n  }\n\n  static load(id: Bytes): EntrySigned | null {\n    return changetype<EntrySigned | null>(\n      store.get(\"EntrySigned\", id.toHexString()),\n    );\n  }\n\n  get id(): Bytes {\n    let value = this.get(\"id\");\n    if (!value || value.kind == ValueKind.NULL) {\n      throw new Error(\"Cannot return null for a required field.\");\n    } else {\n      return value.toBytes();\n    }\n  }\n\n  set id(value: Bytes) {\n    this.set(\"id\", Value.fromBytes(value));\n  }\n\n  get name(): string {\n    let value = this.get(\"name\");\n    if (!value || value.kind == ValueKind.NULL) {\n      throw new Error(\"Cannot return null for a required field.\");\n    } else {\n      return value.toString();\n    }\n  }\n\n  set name(value: string) {\n    this.set(\"name\", Value.fromString(value));\n  }\n\n  get message(): string {\n    let value = this.get(\"message\");\n    if (!value || value.kind == ValueKind.NULL) {\n      throw new Error(\"Cannot return null for a required field.\");\n    } else {\n      return value.toString();\n    }\n  }\n\n  set message(value: string) {\n    this.set(\"message\", Value.fromString(value));\n  }\n\n  get blockNumber(): BigInt {\n    let value = this.get(\"blockNumber\");\n    if (!value || value.kind == ValueKind.NULL) {\n      throw new Error(\"Cannot return null for a required field.\");\n    } else {\n      return value.toBigInt();\n    }\n  }\n\n  set blockNumber(value: BigInt) {\n    this.set(\"blockNumber\", Value.fromBigInt(value));\n  }\n\n  get blockTimestamp(): BigInt {\n    let value = this.get(\"blockTimestamp\");\n    if (!value || value.kind == ValueKind.NULL) {\n      throw new Error(\"Cannot return null for a required field.\");\n    } else {\n      return value.toBigInt();\n    }\n  }\n\n  set blockTimestamp(value: BigInt) {\n    this.set(\"blockTimestamp\", Value.fromBigInt(value));\n  }\n\n  get transactionHash(): Bytes {\n    let value = this.get(\"transactionHash\");\n    if (!value || value.kind == ValueKind.NULL) {\n      throw new Error(\"Cannot return null for a required field.\");\n    } else {\n      return value.toBytes();\n    }\n  }\n\n  set transactionHash(value: Bytes) {\n    this.set(\"transactionHash\", Value.fromBytes(value));\n  }\n}\n"
  },
  {
    "path": "06-Subgraphs-on-Core/networks.json",
    "content": "{\n  \"core\": {\n    \"Guestbook\": {\n      \"address\": \"0x0D0b3bAc514d53AafC95c74294Bb1B613D1862c2\",\n      \"startBlock\": 22122890\n    }\n  }\n}"
  },
  {
    "path": "06-Subgraphs-on-Core/package.json",
    "content": "{\n  \"name\": \"guestbook-subgraph\",\n  \"license\": \"UNLICENSED\",\n  \"scripts\": {\n    \"codegen\": \"graph codegen\",\n    \"build\": \"graph build\",\n    \"deploy\": \"graph deploy --node https://api.studio.thegraph.com/deploy/ guestbook-subgraph\",\n    \"create-local\": \"graph create --node http://localhost:8020/ guestbook-subgraph\",\n    \"remove-local\": \"graph remove --node http://localhost:8020/ guestbook-subgraph\",\n    \"deploy-local\": \"graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 guestbook-subgraph\",\n    \"test\": \"graph test\"\n  },\n  \"dependencies\": {\n    \"@graphprotocol/graph-cli\": \"0.80.0\",\n    \"@graphprotocol/graph-ts\": \"0.32.0\"\n  },\n  \"devDependencies\": { \"matchstick-as\": \"0.5.0\" }\n}\n"
  },
  {
    "path": "06-Subgraphs-on-Core/schema.graphql",
    "content": "type EntrySigned @entity(immutable: true) {\n  id: Bytes!\n  name: String! # string\n  message: String! # string\n  blockNumber: BigInt!\n  blockTimestamp: BigInt!\n  transactionHash: Bytes!\n}\n"
  },
  {
    "path": "06-Subgraphs-on-Core/src/guestbook.ts",
    "content": "import { EntrySigned as EntrySignedEvent } from \"../generated/Guestbook/Guestbook\"\nimport { EntrySigned } from \"../generated/schema\"\n\nexport function handleEntrySigned(event: EntrySignedEvent): void {\n  let entity = new EntrySigned(\n    event.transaction.hash.concatI32(event.logIndex.toI32())\n  )\n  entity.name = event.params.name\n  entity.message = event.params.message\n\n  entity.blockNumber = event.block.number\n  entity.blockTimestamp = event.block.timestamp\n  entity.transactionHash = event.transaction.hash\n\n  entity.save()\n}\n"
  },
  {
    "path": "06-Subgraphs-on-Core/subgraph.yaml",
    "content": "specVersion: 1.0.0\nindexerHints:\n  prune: auto\nschema:\n  file: ./schema.graphql\ndataSources:\n  - kind: ethereum\n    name: Guestbook\n    network: core\n    source:\n      address: \"0x0D0b3bAc514d53AafC95c74294Bb1B613D1862c2\"\n      abi: Guestbook\n      startBlock: 22122890\n    mapping:\n      kind: ethereum/events\n      apiVersion: 0.0.7\n      language: wasm/assemblyscript\n      entities:\n        - EntrySigned\n      abis:\n        - name: Guestbook\n          file: ./abis/Guestbook.json\n      eventHandlers:\n        - event: EntrySigned(string,string)\n          handler: handleEntrySigned\n      file: ./src/guestbook.ts\n"
  },
  {
    "path": "06-Subgraphs-on-Core/tests/guestbook-utils.ts",
    "content": "import { newMockEvent } from \"matchstick-as\"\nimport { ethereum } from \"@graphprotocol/graph-ts\"\nimport { EntrySigned } from \"../generated/Guestbook/Guestbook\"\n\nexport function createEntrySignedEvent(\n  name: string,\n  message: string\n): EntrySigned {\n  let entrySignedEvent = changetype<EntrySigned>(newMockEvent())\n\n  entrySignedEvent.parameters = new Array()\n\n  entrySignedEvent.parameters.push(\n    new ethereum.EventParam(\"name\", ethereum.Value.fromString(name))\n  )\n  entrySignedEvent.parameters.push(\n    new ethereum.EventParam(\"message\", ethereum.Value.fromString(message))\n  )\n\n  return entrySignedEvent\n}\n"
  },
  {
    "path": "06-Subgraphs-on-Core/tests/guestbook.test.ts",
    "content": "import {\n  assert,\n  describe,\n  test,\n  clearStore,\n  beforeAll,\n  afterAll\n} from \"matchstick-as/assembly/index\"\nimport {} from \"@graphprotocol/graph-ts\"\nimport { EntrySigned } from \"../generated/schema\"\nimport { EntrySigned as EntrySignedEvent } from \"../generated/Guestbook/Guestbook\"\nimport { handleEntrySigned } from \"../src/guestbook\"\nimport { createEntrySignedEvent } from \"./guestbook-utils\"\n\n// Tests structure (matchstick-as >=0.5.0)\n// https://thegraph.com/docs/en/developer/matchstick/#tests-structure-0-5-0\n\ndescribe(\"Describe entity assertions\", () => {\n  beforeAll(() => {\n    let name = \"Example string value\"\n    let message = \"Example string value\"\n    let newEntrySignedEvent = createEntrySignedEvent(name, message)\n    handleEntrySigned(newEntrySignedEvent)\n  })\n\n  afterAll(() => {\n    clearStore()\n  })\n\n  // For more test scenarios, see:\n  // https://thegraph.com/docs/en/developer/matchstick/#write-a-unit-test\n\n  test(\"EntrySigned created and stored\", () => {\n    assert.entityCount(\"EntrySigned\", 1)\n\n    // 0xa16081f360e3847006db660bae1c6d1b2e17ec2a is the default address used in newMockEvent() function\n    assert.fieldEquals(\n      \"EntrySigned\",\n      \"0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1\",\n      \"name\",\n      \"Example string value\"\n    )\n    assert.fieldEquals(\n      \"EntrySigned\",\n      \"0xa16081f360e3847006db660bae1c6d1b2e17ec2a-1\",\n      \"message\",\n      \"Example string value\"\n    )\n\n    // More assert options:\n    // https://thegraph.com/docs/en/developer/matchstick/#asserts\n  })\n})\n"
  },
  {
    "path": "06-Subgraphs-on-Core/tsconfig.json",
    "content": "{\n  \"extends\": \"@graphprotocol/graph-ts/types/tsconfig.base.json\",\n  \"include\": [\"src\", \"tests\"]\n}\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n\nsecret.json"
  },
  {
    "path": "07-NFT Minitng dApp on Core/README.md",
    "content": "# Building NFT Minting DApp on Core\n\nWelcome to this tutorial where we will build a simple NFT Minting DApp on Core Blockchain from scratch. We will make a basic DApp where you will be able to mint NFTs from the frontend app. By the end of the tutorial, we will have a functional dapp that interacts with smart contracts on the Core Blockchain Testnet. Let’s start🙌\n\n## Learning Takeaways\n\n- Smart Contract Development in Solidity programming language\n- Building frontend using React.js\n- Using Ethers.js library for interaction of frontend with smart contracts\n- Integrating Metamask wallet for secure user transactions\n- Read and write data to/from smart contracts\n\n## Software Prerequisites\n\n- [Git](https://git-scm.com/)\n- [Node.js](https://nodejs.org/en) v20.13.1\n- [Yarn](https://yarnpkg.com/) v1.22.21\n- [Hardhat](https://hardhat.org/) v2.20.1\n- [Metamask Wallet](https://metamask.io/download/)\n- **Core Testnet Configuration**: Configure MetaMask to connect to the Core Testnet. Refer here for more details.\n  - **Network Name**: Core Testnet\n  - **New RPC URL**: [https://rpc.test2.btcs.network](https://rpc.test2.btcs.network)\n  - **Chain ID**: 1114\n  - **Currency Symbol**: TCORE2\n- **Core Faucet**: To get test CORE tokens for transactions, visit the Core Faucet, refer [here](https://docs.coredao.org/docs/Dev-Guide/core-faucet) for more details.\n\n## Setting up Dev Environment\n\n### 1. Initialize the project\n\nWe will create a new director `NFT_Minting` and initialize our project using `yarn`.\n\n```bash\nmkdir NFT_Minting\ncd NFT_Minting\nyarn init -y\nyarn add --dev hardhat\nyard hardhat init\n```\n\n![img](./assets/pic1.png)\n\nSelect the `Create a Javascript project`\nSelect the default project root directory\nSelect yes adding a `.gitignore` and installing additional packages\n\n### 2. Install and Configure MetaMask\n\n- Install and configure MetaMask Chrome Extension to use with Core Testnet.\n- Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config) for a detailed guide.\n\n### 3. Create a Secret File\n\n- Create a `.env` file in the root folder and store the private key of your MetaMask wallet in it.\n\n```bash\n  PRIVATE_KEY = <YOUR PRIVATE KEY>\n```\n\n### 4. Update .gitignore\n\n- Update your .gitignore file to ensure that your secret.json file and other sensitive files are not committed to version control.\n- Make sure to add `secret.json` to the `.gitignore` file.\n\n### 5. Update the `hardhat.config.js` file\n\nReplace the contents of `hardhat.config.js` file with the following code. Make sure that the configuration for Core Testnet are set correctly.\n\n```javascript\nrequire(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.24\",\n  defaultNetwork: \"core_testnet\",\n\n  networks: {\n    hardhat: {},\n    core_testnet: {\n      url: \"https://rpc.test.btcs.network\",\n      accounts: [PRIVATE_KEY],\n      chainId: 1115,\n    },\n  },\n  solidity: {\n    compilers: [\n      {\n        version: \"0.8.24\",\n        settings: {\n          evmVersion: \"shanghai\",\n          optimizer: {\n            enabled: true,\n            runs: 200,\n          },\n        },\n      },\n    ],\n  },\n  paths: {\n    sources: \"./contracts\",\n    cache: \"./cache\",\n    artifacts: \"./artifacts\",\n  },\n  mocha: {\n    timeout: 20000,\n  },\n};\n```\n\nYour folder structure should look something like this.\n\n![img](./assets/pic2.png)\n\n## Writing smart contracts\n\nAwsome! Now lets jump in the exciting stuff and start writing our smart contracts. Go to the `contracts` folder and create a new file with the name `MyNFT.sol`.\nBut before writing any code, we need to install the `@openzeppelin/contracts` library to implement our NFT smart contracts. Download it by running this command:\n\n```bash\nyarn add @openzeppelin/contracts\n```\n\nAfter the download completes we can write our smart contract:\n\n```js\n// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.24;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract Nft is ERC721, ERC721URIStorage, Ownable {\n    uint256 private _nextTokenId;\n\n    constructor() ERC721(\"MyNFT\", \"MYN\") Ownable(msg.sender) {}\n\n    function safeMint(address to, string memory uri) public  {\n        uint256 tokenId = _nextTokenId++;\n        _safeMint(to, tokenId);\n        _setTokenURI(tokenId, uri);\n    }\n\n    // The following functions are overrides required by Solidity.\n\n    function tokenURI(\n        uint256 tokenId\n    ) public view override(ERC721, ERC721URIStorage) returns (string memory) {\n        return super.tokenURI(tokenId);\n    }\n\n    function supportsInterface(\n        bytes4 interfaceId\n    ) public view override(ERC721, ERC721URIStorage) returns (bool) {\n        return super.supportsInterface(interfaceId);\n    }\n}\n```\n\nIn this code, we\n\n- Import the `ERC721`, `ERC721URIStorage`, and `Ownable` classes from the openzeppelin/contracts library for creating a new NFT smart contract.\n- Initialize a private state variable `_nextTokenId` to store the ID of the NFT.\n- The constructor initializes the ERC721 contract with a name and symbol, and sets up the `Ownable` contract with the owner's address to restrict NFT minting to the owner.\n- The `safeMint` function mints a new NFT, taking the recipient's address and the NFT's URI as arguments.\n- The `tokenURI` and `supportsInterface` functions override required methods from `ERC721` and `ERC721URIStorage`.\n\nIn the `safeMint` function, we\n\n- Increment the `_nextTokenId` variable to get the next token ID.\n- Mint the NFT to the user using the `_safeMint` function.\n- Set the URI of the NFT using the `_setTokenURI` function. The uri is the metadata of the NFT, which holds the image, name, and other details of the NFT.\n\n## Compiling and Deploying the Smart Contract\n\nGreat, Now run the following command to complie the contract\n\n```bash\nyarn hardhat compile\n```\n\nIf the compilation is successful, you should see something like this:\n\n![img](./assets/image.png)\n\nNow let us deploy the smart contract to the Core Testnet. For this, create a new folder in your root directory and name it `scripts`. Inside the `scripts` folder, create a new file named `deploy.js` and write the following code:\n\n```js\nconst { ethers } = require(\"hardhat\");\n\nasync function main() {\n  const [deployer] = await ethers.getSigners();\n\n  console.log(\"Deploying contracts with the account:\", deployer.address);\n\n  const MyNFT = await ethers.getContractFactory(\"MyNFT\");\n  const myNft = await MyNFT.deploy();\n\n  console.log(\"Token address:\", await myNft.getAddress());\n}\n\nmain()\n  .then(() => process.exit(0))\n  .catch((error) => {\n    console.error(error);\n    process.exit(1);\n  });\n```\n\nMake sure your metamask wallet has tCORE testnet tokens to deploy the contract. If not, visit the [Core Faucet](https://scan.test2.btcs.network/faucet) to get some testnet CORE tokens.\n\nGreat! Now run the following command in the root directory of your project to deploy the smart contract:\n\n```bash\nyarn hardhat run scripts/deploy.js\n```\n\nIf the deployment is successful, you should see the address of the deployed contract in the console.\n\n![img](./assets/pic3.png)\n\nMake sure to save this address as we will need it later to interact with the smart contract.\n\n## Building the Frontend\n\nAwsome! We have deployed our smart contract to the Core Testnet. Now let's build the frontend of our DApp. We will use **Vite** and **React** to build our frontend. Go to the root directory of your project and run the following command:\n\n```bash\nyarn create vite frontend\n```\n\n![img](./assets/pic4.png)\n\nSelect **React** from the `Select a framework` option and **Javascript** from `Select a variant` option.\n\nNow we will use the **Ethers.js** library to interact with our smart contracts. Install it in the frontend directory.\n\n```bash\nyarn add ethers\n```\n\nTo interact with the smart contract, we also need the ABI (Application Binary Interface) along with address of the deployed contract. We can get the ABI from the `artifacts` folder in the root directory of the project. Create a new directory in the `src` folder, name it `abis` and create a new file `MyNFTAbi.json` . Now copy the ABI of the `MyNFT` contract and paste it in the `MyNFTAbi.json` file.\n\nExcellent, now let's write code to connect our metamask wallet in the `App.jsx` file.\n\n```javascript\nimport { useEffect, useState } from \"react\";\nimport { ethers } from \"ethers\";\nimport MyNFTAbi from \"./abis/MyNFTAbi.json\";\nimport \"./App.css\";\n\nfunction App() {\n  const [walletAddress, setWalletAddress] = useState();\n  const [provider, setProvider] = useState();\n  const [signer, setSigner] = useState();\n\n  const contractAddress = \"0x984eE96FE316006533c0BB78c97e3A02E41c7759\"; // Replace contract address\n  const abi = MyNFTAbi.abi;\n\n  async function connectWallet() {\n    const { ethereum } = window;\n    if (!ethereum) {\n      alert(\"Please install MetaMask!\");\n      return;\n    }\n\n    try {\n      const provider = new ethers.BrowserProvider(ethereum);\n      const [account] = await ethereum.request({\n        method: \"eth_requestAccounts\",\n      });\n      const signer = provider.getSigner();\n\n      setProvider(provider);\n      setSigner(signer);\n      setWalletAddress(account);\n    } catch (error) {\n      console.log(\"Error fetching network:\", error);\n    }\n  }\n  useEffect(() => {\n    connectWallet();\n  }, []);\n\n  return (\n    <>\n      <h1>NFT Minting Dapp</h1>\n      {walletAddress ? (\n        <p>\n          Connected Address: <strong>{walletAddress}</strong>\n        </p>\n      ) : (\n        <button onClick={connectWallet}>Connect Wallet</button>\n      )}\n    </>\n  );\n}\n\nexport default App;\n```\n\nNow run `yarn dev` command in the frontend directory, open the app in your browser on `http://localhost:5173`. You should see your metamaks wallet prompt you to connect to the website.\n\n![img](./assets/pic5.png)\n\nMake sure to connect that account only which you have used to deploy the contract. Since we have used the `Ownable` class in our contract, we will face errors if we try to mint the NFT in other accounts. By clicking `Next` and `Confirm`, our wallet will be connected to the website and we will see our address on the screen.\n\n![img](./assets/pic6.png)\n\nWonderful! Now we will write code to show the nft image and mint it in our wallet.\nWe will also add code to show our NFT image and button to mint in our wallet\n\n```javascript\nconst nftImage = \"https://raw.githubusercontent.com/GM-11/NFT_Minting_Tutorial_Core/main/assets/nft.png\"\n\nconst nftUri = \"https://raw.githubusercontent.com/GM-11/NFT_Minting_Tutorial_Core/main/assets/metadata.json\"\n\n```\n\nFor this tutorial, you can copy these links as it is.\n\n```javascript\n<h1>NFT Minting Dapp</h1>;\n{\n  walletAddress ? (\n    <section className=\"nft-section\">\n      <p>\n        Connected Address: <strong>{walletAddress}</strong>\n      </p>\n\n      <img src={nftImage} alt=\"\" />\n      <br />\n      <button>Mint this NFT</button>\n    </section>\n  ) : (\n    <button onClick={connectWallet}>Connect Wallet</button>\n  );\n}\n```\n\nNow our app will look something like this\n\n![img](./assets/pic7.png)\n\nNow let's make a function to mint our NFT in our MetaMask wallet.\n\n```javascript\nasync function mintNFT() {\n  try {\n    const contract = new ethers.Contract(contractAddress, abi, signer);\n    const tx = await contract.safeMint(walletAddress, nftUri);\n    await tx.wait();\n  } catch (error) {\n    console.log(\"Error minting NFT:\", error);\n  }\n}\n```\n\nIn this function, we are\n\n- Creating a new instance of the contract using the contract address and ABI.\n- Calling the `safeMint` function of the contract to mint the NFT. The `safeMint` function takes two arguments, the address of the user to whom the NFT will be minted and the URI of the NFT.\n- Waiting for the transaction to be confirmed and then showing an alert that the NFT has been minted successfully.\n\nNow let's call this function when the user clicks the mint button.\n\n```javascript\n<button onClick={mintNFT}>Mint this NFT</button>\n```\n\nWhen we click the `**Mint this NFT** button, our wallet should prompt us to sign the transaction\n\n![img](./assets/pic9.png)\n\nClick on **Confirm** to confirm the transaction.\n\nAwsome! We have minted our first NFT on the Core Blockchain!🥳\n\nBut wait, why can't we see it?🤔\n\n![img](./assets/pic10.png)\n\nWell since this NFT is on the testnet, metamask automatically does not detect them. We need to import our NFT into our wallet.\n\nCick on `Import NFT` at the bottom. Add your contract address in the **Address** input field and 0 in the **Token Id** input field and click on **Import**.\n\n![img](./assets/pic11.png)\n\nWonderful, now we can see our nft in the wallet!\n\n## Conclusion\n\n🎉🙌Congratulations, you have created a basic NFT Minting DApp on the Core Testnet.\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/assets/metadata.json",
    "content": "{\n    \"name\": \"Bored Ape\",\n    \"image\" : \"https://raw.githubusercontent.com/GM-11/NFT_Minting_Tutorial_Core/master/assets/nft.png\",\n    \"description\": \"A bored ape\"\n}"
  },
  {
    "path": "07-NFT Minitng dApp on Core/contracts/Lock.sol",
    "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.24;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\ncontract Lock {\n    uint public unlockTime;\n    address payable public owner;\n\n    event Withdrawal(uint amount, uint when);\n\n    constructor(uint _unlockTime) payable {\n        require(\n            block.timestamp < _unlockTime,\n            \"Unlock time should be in the future\"\n        );\n\n        unlockTime = _unlockTime;\n        owner = payable(msg.sender);\n    }\n\n    function withdraw() public {\n        // Uncomment this line, and the import of \"hardhat/console.sol\", to print a log in your terminal\n        // console.log(\"Unlock time is %o and block timestamp is %o\", unlockTime, block.timestamp);\n\n        require(block.timestamp >= unlockTime, \"You can't withdraw yet\");\n        require(msg.sender == owner, \"You aren't the owner\");\n\n        emit Withdrawal(address(this).balance, block.timestamp);\n\n        owner.transfer(address(this).balance);\n    }\n}\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/contracts/MyNFT.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MyNFT is ERC721, ERC721URIStorage, Ownable {\n    uint256 private _nextTokenId;\n\n    constructor() ERC721(\"MyNFT\", \"MYN\") Ownable(msg.sender) {}\n\n    function safeMint(address to, string memory uri) public  {\n        uint256 tokenId = _nextTokenId++;\n        _safeMint(to, tokenId);\n        _setTokenURI(tokenId, uri);\n    }\n\n    // The following functions are overrides required by Solidity.\n    function tokenURI(\n        uint256 tokenId\n    ) public view override(ERC721, ERC721URIStorage) returns (string memory) {\n        return super.tokenURI(tokenId);\n    }\n\n    function supportsInterface(\n        bytes4 interfaceId\n    ) public view override(ERC721, ERC721URIStorage) returns (bool) {\n        return super.supportsInterface(interfaceId);\n    }\n}\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/README.md",
    "content": "# React + Vite\n\nThis template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.\n\nCurrently, two official plugins are available:\n\n- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh\n- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/vite.svg\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Vite + React</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.jsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/package.json",
    "content": "{\n  \"name\": \"frontend\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"vite build\",\n    \"lint\": \"eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"ethers\": \"6.13.2\",\n    \"react\": \"18.3.1\",\n    \"react-dom\": \"18.3.1\"\n  },\n  \"devDependencies\": {\n    \"@types/react\": \"18.3.3\",\n    \"@types/react-dom\": \"18.3.0\",\n    \"@vitejs/plugin-react\": \"4.3.1\",\n    \"eslint\": \"8.57.0\",\n    \"eslint-plugin-react\": \"7.34.3\",\n    \"eslint-plugin-react-hooks\": \"4.6.2\",\n    \"eslint-plugin-react-refresh\": \"0.4.7\",\n    \"vite\": \"5.3.4\"\n  }\n}\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/src/App.css",
    "content": ""
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/src/App.jsx",
    "content": "import { useEffect, useState } from \"react\";\nimport { ethers } from \"ethers\";\nimport MyNFTAbi from \"./abis/MyNFTAbi.json\";\nimport core_logo from \"./assets/core-logo.png\";\nimport \"./App.css\";\n\nfunction App() {\n  const [walletAddress, setWalletAddress] = useState();\n  const [provider, setProvider] = useState();\n  const [signer, setSigner] = useState();\n\n  const contractAddress = \"0x8c546a571Ed23c32B7355E5C814589B6F627737D\";\n  const abi = MyNFTAbi.abi;\n  const nftImage =\n    \"https://raw.githubusercontent.com/GM-11/NFT_Minting_Tutorial/master/assets/nft.png\";\n  const nftUri =\n    \"https://raw.githubusercontent.com/GM-11/NFT_Minting_Tutorial/master/assets/metadata.json\";\n\n  async function connectWallet() {\n    const { ethereum } = window;\n    if (!ethereum) {\n      alert(\"Please install MetaMask!\");\n      return;\n    }\n\n    try {\n      const provider = new ethers.BrowserProvider(ethereum);\n      const [account] = await ethereum.request({\n        method: \"eth_requestAccounts\",\n      });\n      const signer = await provider.getSigner();\n\n      setProvider(provider);\n      setSigner(signer);\n      setWalletAddress(account);\n    } catch (error) {\n      console.log(\"Error fetching network:\", error);\n    }\n  }\n  useEffect(() => {\n    connectWallet();\n  }, []);\n\n  async function mintNFT() {\n    try {\n      const contract = new ethers.Contract(contractAddress, abi, signer);\n      const tx = await contract.safeMint(walletAddress, nftUri);\n      await tx.wait();\n      alert(\"NFT has been minted successfully\")\n    } catch (error) {\n      console.log(\"Error minting NFT:\", error);\n    }\n  }\n\n  return (\n    <main>\n      <img src={core_logo} alt=\"akldfj\" width={500}/>\n      <h1>NFT Minting Dapp</h1>\n\n      {walletAddress ? (\n        <section className=\"nft-section\">\n          <p>\n            Connected Address: <strong>{walletAddress}</strong>\n          </p>\n\n          <img src={nftImage} alt=\"\" />\n          <br />\n          <button onClick={mintNFT}>Mint this NFT</button>\n        </section>\n      ) : (\n        <button onClick={connectWallet}>Connect Wallet</button>\n      )}\n    </main>\n  );\n}\n\nexport default App;\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/src/abis/MyNFTAbi.json",
    "content": "{\n    \"_format\": \"hh-sol-artifact-1\",\n    \"contractName\": \"Nft\",\n    \"sourceName\": \"contracts/MyNFT.sol\",\n    \"abi\": [\n      {\n        \"inputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"constructor\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"sender\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"ERC721IncorrectOwner\",\n        \"type\": \"error\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"operator\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"ERC721InsufficientApproval\",\n        \"type\": \"error\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"approver\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"ERC721InvalidApprover\",\n        \"type\": \"error\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"operator\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"ERC721InvalidOperator\",\n        \"type\": \"error\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"ERC721InvalidOwner\",\n        \"type\": \"error\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"receiver\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"ERC721InvalidReceiver\",\n        \"type\": \"error\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"sender\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"ERC721InvalidSender\",\n        \"type\": \"error\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"ERC721NonexistentToken\",\n        \"type\": \"error\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"OwnableInvalidOwner\",\n        \"type\": \"error\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"account\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"OwnableUnauthorizedAccount\",\n        \"type\": \"error\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": true,\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          },\n          {\n            \"indexed\": true,\n            \"internalType\": \"address\",\n            \"name\": \"approved\",\n            \"type\": \"address\"\n          },\n          {\n            \"indexed\": true,\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"Approval\",\n        \"type\": \"event\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": true,\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          },\n          {\n            \"indexed\": true,\n            \"internalType\": \"address\",\n            \"name\": \"operator\",\n            \"type\": \"address\"\n          },\n          {\n            \"indexed\": false,\n            \"internalType\": \"bool\",\n            \"name\": \"approved\",\n            \"type\": \"bool\"\n          }\n        ],\n        \"name\": \"ApprovalForAll\",\n        \"type\": \"event\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": false,\n            \"internalType\": \"uint256\",\n            \"name\": \"_fromTokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"indexed\": false,\n            \"internalType\": \"uint256\",\n            \"name\": \"_toTokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"BatchMetadataUpdate\",\n        \"type\": \"event\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": false,\n            \"internalType\": \"uint256\",\n            \"name\": \"_tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"MetadataUpdate\",\n        \"type\": \"event\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": true,\n            \"internalType\": \"address\",\n            \"name\": \"previousOwner\",\n            \"type\": \"address\"\n          },\n          {\n            \"indexed\": true,\n            \"internalType\": \"address\",\n            \"name\": \"newOwner\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"OwnershipTransferred\",\n        \"type\": \"event\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": true,\n            \"internalType\": \"address\",\n            \"name\": \"from\",\n            \"type\": \"address\"\n          },\n          {\n            \"indexed\": true,\n            \"internalType\": \"address\",\n            \"name\": \"to\",\n            \"type\": \"address\"\n          },\n          {\n            \"indexed\": true,\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"Transfer\",\n        \"type\": \"event\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"to\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"approve\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"balanceOf\",\n        \"outputs\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"getApproved\",\n        \"outputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"\",\n            \"type\": \"address\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"operator\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"isApprovedForAll\",\n        \"outputs\": [\n          {\n            \"internalType\": \"bool\",\n            \"name\": \"\",\n            \"type\": \"bool\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [],\n        \"name\": \"name\",\n        \"outputs\": [\n          {\n            \"internalType\": \"string\",\n            \"name\": \"\",\n            \"type\": \"string\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [],\n        \"name\": \"owner\",\n        \"outputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"\",\n            \"type\": \"address\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"ownerOf\",\n        \"outputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"\",\n            \"type\": \"address\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [],\n        \"name\": \"renounceOwnership\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"to\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"string\",\n            \"name\": \"uri\",\n            \"type\": \"string\"\n          }\n        ],\n        \"name\": \"safeMint\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"from\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"to\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"safeTransferFrom\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"from\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"to\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"bytes\",\n            \"name\": \"data\",\n            \"type\": \"bytes\"\n          }\n        ],\n        \"name\": \"safeTransferFrom\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"operator\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"bool\",\n            \"name\": \"approved\",\n            \"type\": \"bool\"\n          }\n        ],\n        \"name\": \"setApprovalForAll\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"bytes4\",\n            \"name\": \"interfaceId\",\n            \"type\": \"bytes4\"\n          }\n        ],\n        \"name\": \"supportsInterface\",\n        \"outputs\": [\n          {\n            \"internalType\": \"bool\",\n            \"name\": \"\",\n            \"type\": \"bool\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [],\n        \"name\": \"symbol\",\n        \"outputs\": [\n          {\n            \"internalType\": \"string\",\n            \"name\": \"\",\n            \"type\": \"string\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"tokenURI\",\n        \"outputs\": [\n          {\n            \"internalType\": \"string\",\n            \"name\": \"\",\n            \"type\": \"string\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"from\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"to\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"tokenId\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"transferFrom\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"newOwner\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"transferOwnership\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      }\n    ],\n    \"bytecode\": \"0x60806040523480156200001157600080fd5b503360405180604001604052806005815260200164135e53919560da1b8152506040518060400160405280600381526020016226aca760e91b81525081600090816200005e9190620001aa565b5060016200006d8282620001aa565b5050506001600160a01b0381166200009f57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000aa81620000b1565b5062000276565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200012e57607f821691505b6020821081036200014f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001a5576000816000526020600020601f850160051c81016020861015620001805750805b601f850160051c820191505b81811015620001a1578281556001016200018c565b5050505b505050565b81516001600160401b03811115620001c657620001c662000103565b620001de81620001d7845462000119565b8462000155565b602080601f831160018114620002165760008415620001fd5750858301515b600019600386901b1c1916600185901b178555620001a1565b600085815260208120601f198616915b82811015620002475788860151825594840194600190910190840162000226565b5085821015620002665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61143b80620002866000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde1461021b578063c87b56dd1461022e578063d204c45e14610241578063e985e9c514610254578063f2fde38b1461026757600080fd5b8063715018a6146101e75780638da5cb5b146101ef57806395d89b4114610200578063a22cb4651461020857600080fd5b806323b872dd116100de57806323b872dd1461018d57806342842e0e146101a05780636352211e146101b357806370a08231146101c657600080fd5b806301ffc9a71461011057806306fdde0314610138578063081812fc1461014d578063095ea7b314610178575b600080fd5b61012361011e366004610efc565b61027a565b60405190151581526020015b60405180910390f35b61014061028b565b60405161012f9190610f69565b61016061015b366004610f7c565b61031d565b6040516001600160a01b03909116815260200161012f565b61018b610186366004610fb1565b610346565b005b61018b61019b366004610fdb565b610355565b61018b6101ae366004610fdb565b6103e5565b6101606101c1366004610f7c565b610405565b6101d96101d4366004611017565b610410565b60405190815260200161012f565b61018b610458565b6007546001600160a01b0316610160565b61014061046c565b61018b610216366004611032565b61047b565b61018b6102293660046110fa565b610486565b61014061023c366004610f7c565b61049d565b61018b61024f366004611176565b6104a8565b6101236102623660046111d8565b6104db565b61018b610275366004611017565b610509565b600061028582610547565b92915050565b60606000805461029a9061120b565b80601f01602080910402602001604051908101604052809291908181526020018280546102c69061120b565b80156103135780601f106102e857610100808354040283529160200191610313565b820191906000526020600020905b8154815290600101906020018083116102f657829003601f168201915b5050505050905090565b60006103288261056c565b506000828152600460205260409020546001600160a01b0316610285565b6103518282336105a5565b5050565b6001600160a01b03821661038457604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103918383336105b2565b9050836001600160a01b0316816001600160a01b0316146103df576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161037b565b50505050565b61040083838360405180602001604052806000815250610486565b505050565b60006102858261056c565b60006001600160a01b03821661043c576040516322718ad960e21b81526000600482015260240161037b565b506001600160a01b031660009081526003602052604090205490565b6104606106ab565b61046a60006106d8565b565b60606001805461029a9061120b565b61035133838361072a565b610491848484610355565b6103df848484846107c9565b6060610285826108f2565b6104b06106ab565b60088054600091826104c183611245565b9190505590506104d18382610a03565b6104008183610a1d565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6105116106ab565b6001600160a01b03811661053b57604051631e4fbdf760e01b81526000600482015260240161037b565b610544816106d8565b50565b60006001600160e01b03198216632483248360e11b1480610285575061028582610a6d565b6000818152600260205260408120546001600160a01b03168061028557604051637e27328960e01b81526004810184905260240161037b565b6104008383836001610abd565b6000828152600260205260408120546001600160a01b03908116908316156105df576105df818486610bc3565b6001600160a01b0381161561061d576105fc600085600080610abd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561064c576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6007546001600160a01b0316331461046a5760405163118cdaa760e01b815233600482015260240161037b565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661075c57604051630b61174360e31b81526001600160a01b038316600482015260240161037b565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156103df57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061080b90339088908790879060040161126c565b6020604051808303816000875af1925050508015610846575060408051601f3d908101601f19168201909252610843918101906112a9565b60015b6108af573d808015610874576040519150601f19603f3d011682016040523d82523d6000602084013e610879565b606091505b5080516000036108a757604051633250574960e11b81526001600160a01b038516600482015260240161037b565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146108eb57604051633250574960e11b81526001600160a01b038516600482015260240161037b565b5050505050565b60606108fd8261056c565b50600082815260066020526040812080546109179061120b565b80601f01602080910402602001604051908101604052809291908181526020018280546109439061120b565b80156109905780601f1061096557610100808354040283529160200191610990565b820191906000526020600020905b81548152906001019060200180831161097357829003601f168201915b5050505050905060006109ae60408051602081019091526000815290565b905080516000036109c0575092915050565b8151156109f25780826040516020016109da9291906112c6565b60405160208183030381529060405292505050919050565b6109fb84610c27565b949350505050565b610351828260405180602001604052806000815250610c9c565b6000828152600660205260409020610a358282611345565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60006001600160e01b031982166380ac58cd60e01b1480610a9e57506001600160e01b03198216635b5e139f60e01b145b8061028557506301ffc9a760e01b6001600160e01b0319831614610285565b8080610ad157506001600160a01b03821615155b15610b93576000610ae18461056c565b90506001600160a01b03831615801590610b0d5750826001600160a01b0316816001600160a01b031614155b8015610b205750610b1e81846104db565b155b15610b495760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161037b565b8115610b915783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bce838383610cb3565b610400576001600160a01b038316610bfc57604051637e27328960e01b81526004810182905260240161037b565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161037b565b6060610c328261056c565b506000610c4a60408051602081019091526000815290565b90506000815111610c6a5760405180602001604052806000815250610c95565b80610c7484610d16565b604051602001610c859291906112c6565b6040516020818303038152906040525b9392505050565b610ca68383610da9565b61040060008484846107c9565b60006001600160a01b038316158015906109fb5750826001600160a01b0316846001600160a01b03161480610ced5750610ced84846104db565b806109fb5750506000908152600460205260409020546001600160a01b03908116911614919050565b60606000610d2383610e0e565b600101905060008167ffffffffffffffff811115610d4357610d4361106e565b6040519080825280601f01601f191660200182016040528015610d6d576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610d7757509392505050565b6001600160a01b038216610dd357604051633250574960e11b81526000600482015260240161037b565b6000610de1838360006105b2565b90506001600160a01b03811615610400576040516339e3563760e11b81526000600482015260240161037b565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610e4d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610e79576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e9757662386f26fc10000830492506010015b6305f5e1008310610eaf576305f5e100830492506008015b6127108310610ec357612710830492506004015b60648310610ed5576064830492506002015b600a83106102855760010192915050565b6001600160e01b03198116811461054457600080fd5b600060208284031215610f0e57600080fd5b8135610c9581610ee6565b60005b83811015610f34578181015183820152602001610f1c565b50506000910152565b60008151808452610f55816020860160208601610f19565b601f01601f19169290920160200192915050565b602081526000610c956020830184610f3d565b600060208284031215610f8e57600080fd5b5035919050565b80356001600160a01b0381168114610fac57600080fd5b919050565b60008060408385031215610fc457600080fd5b610fcd83610f95565b946020939093013593505050565b600080600060608486031215610ff057600080fd5b610ff984610f95565b925061100760208501610f95565b9150604084013590509250925092565b60006020828403121561102957600080fd5b610c9582610f95565b6000806040838503121561104557600080fd5b61104e83610f95565b91506020830135801515811461106357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561109f5761109f61106e565b604051601f8501601f19908116603f011681019082821181831017156110c7576110c761106e565b816040528093508581528686860111156110e057600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561111057600080fd5b61111985610f95565b935061112760208601610f95565b925060408501359150606085013567ffffffffffffffff81111561114a57600080fd5b8501601f8101871361115b57600080fd5b61116a87823560208401611084565b91505092959194509250565b6000806040838503121561118957600080fd5b61119283610f95565b9150602083013567ffffffffffffffff8111156111ae57600080fd5b8301601f810185136111bf57600080fd5b6111ce85823560208401611084565b9150509250929050565b600080604083850312156111eb57600080fd5b6111f483610f95565b915061120260208401610f95565b90509250929050565b600181811c9082168061121f57607f821691505b60208210810361123f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161126557634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061129f90830184610f3d565b9695505050505050565b6000602082840312156112bb57600080fd5b8151610c9581610ee6565b600083516112d8818460208801610f19565b8351908301906112ec818360208801610f19565b01949350505050565b601f821115610400576000816000526020600020601f850160051c8101602086101561131e5750805b601f850160051c820191505b8181101561133d5782815560010161132a565b505050505050565b815167ffffffffffffffff81111561135f5761135f61106e565b6113738161136d845461120b565b846112f5565b602080601f8311600181146113a857600084156113905750858301515b600019600386901b1c1916600185901b17855561133d565b600085815260208120601f198616915b828110156113d7578886015182559484019460019091019084016113b8565b50858210156113f55787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220c82add76c7b3647a1f7efd517f753c1d111704531523b024f30f22176bd20d2a64736f6c63430008180033\",\n    \"deployedBytecode\": \"0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde1461021b578063c87b56dd1461022e578063d204c45e14610241578063e985e9c514610254578063f2fde38b1461026757600080fd5b8063715018a6146101e75780638da5cb5b146101ef57806395d89b4114610200578063a22cb4651461020857600080fd5b806323b872dd116100de57806323b872dd1461018d57806342842e0e146101a05780636352211e146101b357806370a08231146101c657600080fd5b806301ffc9a71461011057806306fdde0314610138578063081812fc1461014d578063095ea7b314610178575b600080fd5b61012361011e366004610efc565b61027a565b60405190151581526020015b60405180910390f35b61014061028b565b60405161012f9190610f69565b61016061015b366004610f7c565b61031d565b6040516001600160a01b03909116815260200161012f565b61018b610186366004610fb1565b610346565b005b61018b61019b366004610fdb565b610355565b61018b6101ae366004610fdb565b6103e5565b6101606101c1366004610f7c565b610405565b6101d96101d4366004611017565b610410565b60405190815260200161012f565b61018b610458565b6007546001600160a01b0316610160565b61014061046c565b61018b610216366004611032565b61047b565b61018b6102293660046110fa565b610486565b61014061023c366004610f7c565b61049d565b61018b61024f366004611176565b6104a8565b6101236102623660046111d8565b6104db565b61018b610275366004611017565b610509565b600061028582610547565b92915050565b60606000805461029a9061120b565b80601f01602080910402602001604051908101604052809291908181526020018280546102c69061120b565b80156103135780601f106102e857610100808354040283529160200191610313565b820191906000526020600020905b8154815290600101906020018083116102f657829003601f168201915b5050505050905090565b60006103288261056c565b506000828152600460205260409020546001600160a01b0316610285565b6103518282336105a5565b5050565b6001600160a01b03821661038457604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103918383336105b2565b9050836001600160a01b0316816001600160a01b0316146103df576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161037b565b50505050565b61040083838360405180602001604052806000815250610486565b505050565b60006102858261056c565b60006001600160a01b03821661043c576040516322718ad960e21b81526000600482015260240161037b565b506001600160a01b031660009081526003602052604090205490565b6104606106ab565b61046a60006106d8565b565b60606001805461029a9061120b565b61035133838361072a565b610491848484610355565b6103df848484846107c9565b6060610285826108f2565b6104b06106ab565b60088054600091826104c183611245565b9190505590506104d18382610a03565b6104008183610a1d565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6105116106ab565b6001600160a01b03811661053b57604051631e4fbdf760e01b81526000600482015260240161037b565b610544816106d8565b50565b60006001600160e01b03198216632483248360e11b1480610285575061028582610a6d565b6000818152600260205260408120546001600160a01b03168061028557604051637e27328960e01b81526004810184905260240161037b565b6104008383836001610abd565b6000828152600260205260408120546001600160a01b03908116908316156105df576105df818486610bc3565b6001600160a01b0381161561061d576105fc600085600080610abd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561064c576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6007546001600160a01b0316331461046a5760405163118cdaa760e01b815233600482015260240161037b565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661075c57604051630b61174360e31b81526001600160a01b038316600482015260240161037b565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156103df57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061080b90339088908790879060040161126c565b6020604051808303816000875af1925050508015610846575060408051601f3d908101601f19168201909252610843918101906112a9565b60015b6108af573d808015610874576040519150601f19603f3d011682016040523d82523d6000602084013e610879565b606091505b5080516000036108a757604051633250574960e11b81526001600160a01b038516600482015260240161037b565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146108eb57604051633250574960e11b81526001600160a01b038516600482015260240161037b565b5050505050565b60606108fd8261056c565b50600082815260066020526040812080546109179061120b565b80601f01602080910402602001604051908101604052809291908181526020018280546109439061120b565b80156109905780601f1061096557610100808354040283529160200191610990565b820191906000526020600020905b81548152906001019060200180831161097357829003601f168201915b5050505050905060006109ae60408051602081019091526000815290565b905080516000036109c0575092915050565b8151156109f25780826040516020016109da9291906112c6565b60405160208183030381529060405292505050919050565b6109fb84610c27565b949350505050565b610351828260405180602001604052806000815250610c9c565b6000828152600660205260409020610a358282611345565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60006001600160e01b031982166380ac58cd60e01b1480610a9e57506001600160e01b03198216635b5e139f60e01b145b8061028557506301ffc9a760e01b6001600160e01b0319831614610285565b8080610ad157506001600160a01b03821615155b15610b93576000610ae18461056c565b90506001600160a01b03831615801590610b0d5750826001600160a01b0316816001600160a01b031614155b8015610b205750610b1e81846104db565b155b15610b495760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161037b565b8115610b915783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bce838383610cb3565b610400576001600160a01b038316610bfc57604051637e27328960e01b81526004810182905260240161037b565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161037b565b6060610c328261056c565b506000610c4a60408051602081019091526000815290565b90506000815111610c6a5760405180602001604052806000815250610c95565b80610c7484610d16565b604051602001610c859291906112c6565b6040516020818303038152906040525b9392505050565b610ca68383610da9565b61040060008484846107c9565b60006001600160a01b038316158015906109fb5750826001600160a01b0316846001600160a01b03161480610ced5750610ced84846104db565b806109fb5750506000908152600460205260409020546001600160a01b03908116911614919050565b60606000610d2383610e0e565b600101905060008167ffffffffffffffff811115610d4357610d4361106e565b6040519080825280601f01601f191660200182016040528015610d6d576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610d7757509392505050565b6001600160a01b038216610dd357604051633250574960e11b81526000600482015260240161037b565b6000610de1838360006105b2565b90506001600160a01b03811615610400576040516339e3563760e11b81526000600482015260240161037b565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610e4d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610e79576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e9757662386f26fc10000830492506010015b6305f5e1008310610eaf576305f5e100830492506008015b6127108310610ec357612710830492506004015b60648310610ed5576064830492506002015b600a83106102855760010192915050565b6001600160e01b03198116811461054457600080fd5b600060208284031215610f0e57600080fd5b8135610c9581610ee6565b60005b83811015610f34578181015183820152602001610f1c565b50506000910152565b60008151808452610f55816020860160208601610f19565b601f01601f19169290920160200192915050565b602081526000610c956020830184610f3d565b600060208284031215610f8e57600080fd5b5035919050565b80356001600160a01b0381168114610fac57600080fd5b919050565b60008060408385031215610fc457600080fd5b610fcd83610f95565b946020939093013593505050565b600080600060608486031215610ff057600080fd5b610ff984610f95565b925061100760208501610f95565b9150604084013590509250925092565b60006020828403121561102957600080fd5b610c9582610f95565b6000806040838503121561104557600080fd5b61104e83610f95565b91506020830135801515811461106357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561109f5761109f61106e565b604051601f8501601f19908116603f011681019082821181831017156110c7576110c761106e565b816040528093508581528686860111156110e057600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561111057600080fd5b61111985610f95565b935061112760208601610f95565b925060408501359150606085013567ffffffffffffffff81111561114a57600080fd5b8501601f8101871361115b57600080fd5b61116a87823560208401611084565b91505092959194509250565b6000806040838503121561118957600080fd5b61119283610f95565b9150602083013567ffffffffffffffff8111156111ae57600080fd5b8301601f810185136111bf57600080fd5b6111ce85823560208401611084565b9150509250929050565b600080604083850312156111eb57600080fd5b6111f483610f95565b915061120260208401610f95565b90509250929050565b600181811c9082168061121f57607f821691505b60208210810361123f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161126557634e487b7160e01b600052601160045260246000fd5b5060010190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061129f90830184610f3d565b9695505050505050565b6000602082840312156112bb57600080fd5b8151610c9581610ee6565b600083516112d8818460208801610f19565b8351908301906112ec818360208801610f19565b01949350505050565b601f821115610400576000816000526020600020601f850160051c8101602086101561131e5750805b601f850160051c820191505b8181101561133d5782815560010161132a565b505050505050565b815167ffffffffffffffff81111561135f5761135f61106e565b6113738161136d845461120b565b846112f5565b602080601f8311600181146113a857600084156113905750858301515b600019600386901b1c1916600185901b17855561133d565b600085815260208120601f198616915b828110156113d7578886015182559484019460019091019084016113b8565b50858210156113f55787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220c82add76c7b3647a1f7efd517f753c1d111704531523b024f30f22176bd20d2a64736f6c63430008180033\",\n    \"linkReferences\": {},\n    \"deployedLinkReferences\": {}\n  }\n  "
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/src/index.css",
    "content": ":root {\n  font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;\n  line-height: 1.5;\n  font-weight: 400;\n\n  color: #213547;\n  background-color: #ffffff;\n\n  font-synthesis: none;\n  text-rendering: optimizeLegibility;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\na {\n  font-weight: 500;\n  color: #646cff;\n  text-decoration: inherit;\n}\na:hover {\n  color: #535bf2;\n}\n\nmain {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n\n.nft-section {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n\nh1 {\n  font-size: 3.2em;\n  line-height: 1.1;\n}\n\nbutton {\n  border-radius: 8px;\n  border: 1px solid transparent;\n  padding: 0.6em 1.2em;\n  font-size: 1em;\n  font-weight: 500;\n  font-family: inherit;\n  background-color: #d6d3d3;\n  cursor: pointer;\n  transition: border-color 0.25s;\n}\nbutton:hover {\n  border-color: #646cff;\n}\nbutton:focus,\nbutton:focus-visible {\n  outline: 4px auto -webkit-focus-ring-color;\n}\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/src/main.jsx",
    "content": "import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport App from './App.jsx'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')).render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>,\n)\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/frontend/vite.config.js",
    "content": "import { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [react()],\n})\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.24\",\n  defaultNetwork: \"hardhat\",\n\n  networks: {\n    hardhat: {},\n    core_testnet: {\n      url: \"https://rpc.test2.btcs.network\",\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    },\n  },\n  solidity: {\n    compilers: [\n      {\n        version: \"0.8.24\",\n        settings: {\n          evmVersion: \"shanghai\",\n          optimizer: {\n            enabled: true,\n            runs: 200,\n          },\n        },\n      },\n    ],\n  },\n  paths: {\n    sources: \"./contracts\",\n    cache: \"./cache\",\n    artifacts: \"./artifacts\",\n  },\n  mocha: {\n    timeout: 20000,\n  },\n};\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/ignition/modules/Lock.js",
    "content": "const { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/package.json",
    "content": "{\n  \"name\": \"NFT_Collection_Tutorial\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-chai-matchers\": \"^2.0.0\",\n    \"@nomicfoundation/hardhat-ethers\": \"^3.0.0\",\n    \"@nomicfoundation/hardhat-ignition\": \"^0.15.0\",\n    \"@nomicfoundation/hardhat-ignition-ethers\": \"^0.15.0\",\n    \"@nomicfoundation/hardhat-network-helpers\": \"^1.0.0\",\n    \"@nomicfoundation/hardhat-toolbox\": \"^5.0.0\",\n    \"@nomicfoundation/hardhat-verify\": \"^2.0.0\",\n    \"@typechain/ethers-v6\": \"^0.5.0\",\n    \"@typechain/hardhat\": \"^9.0.0\",\n    \"chai\": \"^4.2.0\",\n    \"ethers\": \"^6.4.0\",\n    \"hardhat\": \"^2.22.6\",\n    \"hardhat-gas-reporter\": \"^1.0.8\",\n    \"solidity-coverage\": \"^0.8.0\",\n    \"typechain\": \"^8.3.0\"\n  },\n  \"dependencies\": {\n    \"@openzeppelin/contracts\": \"^5.0.2\",\n    \"dotenv\": \"^16.5.0\"\n  }\n}\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/scripts/deploy.js",
    "content": "const { ethers } = require(\"hardhat\");\n\nasync function main() {\n  const [deployer] = await ethers.getSigners();\n\n  console.log(\"Deploying contract with the account:\", deployer.address);\n\n  const MyNFT = await ethers.getContractFactory(\"MyNFT\");\n  const myNft = await MyNFT.deploy();\n\n  console.log(\"Contract address:\", await myNft.getAddress());\n}\n\nmain()\n  .then(() => process.exit(0))\n  .catch((error) => {\n    console.error(error);\n    process.exit(1);\n  });\n"
  },
  {
    "path": "07-NFT Minitng dApp on Core/test/Lock.js",
    "content": "const {\n  time,\n  loadFixture,\n} = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\nconst { anyValue } = require(\"@nomicfoundation/hardhat-chai-matchers/withArgs\");\nconst { expect } = require(\"chai\");\n\ndescribe(\"Lock\", function () {\n  // We define a fixture to reuse the same setup in every test.\n  // We use loadFixture to run this setup once, snapshot that state,\n  // and reset Hardhat Network to that snapshot in every test.\n  async function deployOneYearLockFixture() {\n    const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;\n    const ONE_GWEI = 1_000_000_000;\n\n    const lockedAmount = ONE_GWEI;\n    const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS;\n\n    // Contracts are deployed using the first signer/account by default\n    const [owner, otherAccount] = await ethers.getSigners();\n\n    const Lock = await ethers.getContractFactory(\"Lock\");\n    const lock = await Lock.deploy(unlockTime, { value: lockedAmount });\n\n    return { lock, unlockTime, lockedAmount, owner, otherAccount };\n  }\n\n  describe(\"Deployment\", function () {\n    it(\"Should set the right unlockTime\", async function () {\n      const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.unlockTime()).to.equal(unlockTime);\n    });\n\n    it(\"Should set the right owner\", async function () {\n      const { lock, owner } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.owner()).to.equal(owner.address);\n    });\n\n    it(\"Should receive and store the funds to lock\", async function () {\n      const { lock, lockedAmount } = await loadFixture(\n        deployOneYearLockFixture\n      );\n\n      expect(await ethers.provider.getBalance(lock.target)).to.equal(\n        lockedAmount\n      );\n    });\n\n    it(\"Should fail if the unlockTime is not in the future\", async function () {\n      // We don't use the fixture here because we want a different deployment\n      const latestTime = await time.latest();\n      const Lock = await ethers.getContractFactory(\"Lock\");\n      await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith(\n        \"Unlock time should be in the future\"\n      );\n    });\n  });\n\n  describe(\"Withdrawals\", function () {\n    describe(\"Validations\", function () {\n      it(\"Should revert with the right error if called too soon\", async function () {\n        const { lock } = await loadFixture(deployOneYearLockFixture);\n\n        await expect(lock.withdraw()).to.be.revertedWith(\n          \"You can't withdraw yet\"\n        );\n      });\n\n      it(\"Should revert with the right error if called from another account\", async function () {\n        const { lock, unlockTime, otherAccount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // We can increase the time in Hardhat Network\n        await time.increaseTo(unlockTime);\n\n        // We use lock.connect() to send a transaction from another account\n        await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith(\n          \"You aren't the owner\"\n        );\n      });\n\n      it(\"Shouldn't fail if the unlockTime has arrived and the owner calls it\", async function () {\n        const { lock, unlockTime } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // Transactions are sent using the first signer by default\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).not.to.be.reverted;\n      });\n    });\n\n    describe(\"Events\", function () {\n      it(\"Should emit an event on withdrawals\", async function () {\n        const { lock, unlockTime, lockedAmount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw())\n          .to.emit(lock, \"Withdrawal\")\n          .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg\n      });\n    });\n\n    describe(\"Transfers\", function () {\n      it(\"Should transfer the funds to the owner\", async function () {\n        const { lock, unlockTime, lockedAmount, owner } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).to.changeEtherBalances(\n          [owner, lock],\n          [lockedAmount, -lockedAmount]\n        );\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "08-Guess-Game/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n"
  },
  {
    "path": "08-Guess-Game/Frontend/.eslintrc.json",
    "content": "{\n  \"extends\": [\"next/core-web-vitals\", \"next/typescript\"]\n}\n"
  },
  {
    "path": "08-Guess-Game/Frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# env files (can opt-in for commiting if needed)\n.env*\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "08-Guess-Game/Frontend/README.md",
    "content": "This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n"
  },
  {
    "path": "08-Guess-Game/Frontend/app/components/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2\",\n        sm: \"h-8 rounded-md px-3 text-xs\",\n        lg: \"h-10 rounded-md px-8\",\n        icon: \"h-9 w-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\"\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "08-Guess-Game/Frontend/app/components/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-xl border bg-card text-card-foreground shadow\",\n      className\n    )}\n    {...props}\n  />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"font-semibold leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"
  },
  {
    "path": "08-Guess-Game/Frontend/app/components/ui/input.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"
  },
  {
    "path": "08-Guess-Game/Frontend/app/constants/config.json",
    "content": "{\n    \"31337\": {\n        \"guessGame\": {\n            \"address\": \"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512\"\n        },\n        \"guessToken\": {\n            \"address\": \"0x5FbDB2315678afecb367f032d93F642f64180aa3\" \n        }\n    },\n\n    \"1114\": {\n        \"guessGame\": {\n            \"address\": \"0x10a7E98342529668665aC3B51d4125FD4498f119\" \n        },\n        \"guessToken\": {\n            \"address\": \"0xb4AadCf437b9EaD160D821E564ffc58EaDbDE642\" \n        }\n    }\n}"
  },
  {
    "path": "08-Guess-Game/Frontend/app/constants/solidityABI.json",
    "content": "[\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"_rewardToken\",\n          \"type\": \"address\"\n        },\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"_rewardAmount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"constructor\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"owner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnableInvalidOwner\",\n      \"type\": \"error\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"account\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnableUnauthorizedAccount\",\n      \"type\": \"error\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"blockNumber\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"GameStarted\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"winner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"attempts\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"reward\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"GameWon\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"player\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"uint256\",\n          \"name\": \"guess\",\n          \"type\": \"uint256\"\n        },\n        {\n          \"indexed\": false,\n          \"internalType\": \"string\",\n          \"name\": \"message\",\n          \"type\": \"string\"\n        }\n      ],\n      \"name\": \"GuessMade\",\n      \"type\": \"event\"\n    },\n    {\n      \"anonymous\": false,\n      \"inputs\": [\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"previousOwner\",\n          \"type\": \"address\"\n        },\n        {\n          \"indexed\": true,\n          \"internalType\": \"address\",\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"OwnershipTransferred\",\n      \"type\": \"event\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"attempts\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"depositRewards\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"_playerAddress\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"getAttempts\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"lastWinner\",\n      \"outputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"_guess\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"makeGuess\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"owner\",\n      \"outputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"renounceOwnership\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"resetGame\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"rewardAmount\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"rewardToken\",\n      \"outputs\": [\n        {\n          \"internalType\": \"contract IERC20\",\n          \"name\": \"\",\n          \"type\": \"address\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"secret\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [],\n      \"name\": \"secretNumber\",\n      \"outputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"stateMutability\": \"view\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"_newAmount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"setReward\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"address\",\n          \"name\": \"newOwner\",\n          \"type\": \"address\"\n        }\n      ],\n      \"name\": \"transferOwnership\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    },\n    {\n      \"inputs\": [\n        {\n          \"internalType\": \"uint256\",\n          \"name\": \"amount\",\n          \"type\": \"uint256\"\n        }\n      ],\n      \"name\": \"withdrawTokens\",\n      \"outputs\": [],\n      \"stateMutability\": \"nonpayable\",\n      \"type\": \"function\"\n    }\n  ]"
  },
  {
    "path": "08-Guess-Game/Frontend/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\nbody {\n  font-family: Arial, Helvetica, sans-serif;\n}\n\n@layer base {\n  :root {\n    --background: 0 0% 100%;\n    --foreground: 240 10% 3.9%;\n    --card: 0 0% 100%;\n    --card-foreground: 240 10% 3.9%;\n    --popover: 0 0% 100%;\n    --popover-foreground: 240 10% 3.9%;\n    --primary: 240 5.9% 10%;\n    --primary-foreground: 0 0% 98%;\n    --secondary: 240 4.8% 95.9%;\n    --secondary-foreground: 240 5.9% 10%;\n    --muted: 240 4.8% 95.9%;\n    --muted-foreground: 240 3.8% 46.1%;\n    --accent: 240 4.8% 95.9%;\n    --accent-foreground: 240 5.9% 10%;\n    --destructive: 0 84.2% 60.2%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 5.9% 90%;\n    --input: 240 5.9% 90%;\n    --ring: 240 10% 3.9%;\n    --chart-1: 12 76% 61%;\n    --chart-2: 173 58% 39%;\n    --chart-3: 197 37% 24%;\n    --chart-4: 43 74% 66%;\n    --chart-5: 27 87% 67%;\n    --radius: 0.5rem;\n  }\n  .dark {\n    --background: 240 10% 3.9%;\n    --foreground: 0 0% 98%;\n    --card: 240 10% 3.9%;\n    --card-foreground: 0 0% 98%;\n    --popover: 240 10% 3.9%;\n    --popover-foreground: 0 0% 98%;\n    --primary: 0 0% 98%;\n    --primary-foreground: 240 5.9% 10%;\n    --secondary: 240 3.7% 15.9%;\n    --secondary-foreground: 0 0% 98%;\n    --muted: 240 3.7% 15.9%;\n    --muted-foreground: 240 5% 64.9%;\n    --accent: 240 3.7% 15.9%;\n    --accent-foreground: 0 0% 98%;\n    --destructive: 0 62.8% 30.6%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 3.7% 15.9%;\n    --input: 240 3.7% 15.9%;\n    --ring: 240 4.9% 83.9%;\n    --chart-1: 220 70% 50%;\n    --chart-2: 160 60% 45%;\n    --chart-3: 30 80% 55%;\n    --chart-4: 280 65% 60%;\n    --chart-5: 340 75% 55%;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "08-Guess-Game/Frontend/app/layout.tsx",
    "content": "import type { Metadata } from \"next\";\nimport localFont from \"next/font/local\";\nimport \"./globals.css\";\n\nconst geistSans = localFont({\n  src: \"./fonts/GeistVF.woff\",\n  variable: \"--font-geist-sans\",\n  weight: \"100 900\",\n});\nconst geistMono = localFont({\n  src: \"./fonts/GeistMonoVF.woff\",\n  variable: \"--font-geist-mono\",\n  weight: \"100 900\",\n});\n\nexport const metadata: Metadata = {\n  title: \"Create Next App\",\n  description: \"Generated by create next app\",\n};\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode;\n}>) {\n  return (\n    <html lang=\"en\">\n      <body\n        className={`${geistSans.variable} ${geistMono.variable} antialiased`}\n      >\n        {children}\n      </body>\n    </html>\n  );\n}\n"
  },
  {
    "path": "08-Guess-Game/Frontend/app/page.tsx",
    "content": "\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { Button } from \"@/app/components/ui/button\"\nimport { Input } from \"@/app/components/ui/input\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/app/components/ui/card\"\nimport { ethers } from \"ethers\"\n\n// ABIs & Configs\nimport solidityABI from \"./constants/solidityABI.json\";\nimport config from \"./constants/config.json\";\n\nexport default function GuessTheNumber() {\n  const [guess, setGuess] = useState(\"\")\n  const [message, setMessage] = useState(\"Connect your wallet to play!\")\n  const [attempts, setAttempts] = useState(0)\n  const [isConnected, setIsConnected] = useState(false)\n  const [account, setAccount] = useState(\"\")\n  const [factory, setFactory] = useState<ethers.Contract | undefined>(undefined);\n  const [provider, setProvider] = useState<ethers.BrowserProvider | undefined>(undefined);\n  const [targetNumber, setTargetNumber] = useState<number>(0)\n  const [isSupportedNetwork, setIsSupportedNetwork] = useState<boolean>(true)\n\n  useEffect(() => {\n    loadBlockchainData()\n    \n    // Listen for network changes\n    if (typeof (window as any).ethereum !== \"undefined\") {\n      (window as any).ethereum.on('chainChanged', () => {\n        window.location.reload(); // Reload the page when network changes\n      });\n      \n      (window as any).ethereum.on('accountsChanged', () => {\n        window.location.reload(); // Reload the page when account changes\n      });\n    }\n  }, [])\n\n  async function loadBlockchainData() {\n    if (typeof (window as any).ethereum !== \"undefined\") {\n      const provider = new ethers.BrowserProvider((window as any).ethereum);\n      setProvider(provider);\n\n      const network = await provider.getNetwork();\n      const chainId = network.chainId.toString();\n      console.log(\"Current chain ID:\", chainId);\n      console.log(\"Available config keys:\", Object.keys(config));\n      \n      // Check if the chainId exists in config\n      if (!config[chainId as keyof typeof config]) {\n        console.error(`Chain ID ${chainId} not found in config. Available chain IDs:`, Object.keys(config));\n        setMessage(`Unsupported network. Please switch to Core Testnet or localhost.`);\n        setIsSupportedNetwork(false);\n        return;\n      }\n      \n      setIsSupportedNetwork(true);\n      \n      const address = config[chainId as keyof typeof config].guessGame.address as string;\n\n      const contractFactory = new ethers.Contract(address, solidityABI, provider);\n      setFactory(contractFactory);\n\n      const target = await contractFactory.secret();\n      console.log(target);\n      setTargetNumber(Number(target)); // Ensure it's stored as a number\n    } else {\n      console.error(\"Ethereum provider not found\");\n    }\n  }\n\n  async function connectWallet() {\n    if (typeof (window as any).ethereum !== \"undefined\") {\n      try {\n        const accounts = await (window as any).ethereum.request({ method: 'eth_requestAccounts' });\n        setAccount(accounts[0]);\n        setIsConnected(true);\n        setMessage(\"Guess a number between 1 and 100!\");\n        \n        // Reload blockchain data after connecting\n        await loadBlockchainData();\n      } catch (error) {\n        console.error(\"Failed to connect wallet:\", error);\n      }\n    } else {\n      setMessage(\"Please install MetaMask!\");\n    }\n  }\n\n  async function switchToSupportedNetwork() {\n    if (typeof (window as any).ethereum !== \"undefined\") {\n      try {\n        // Try to switch to Core testnet (chainId: 1114)\n        await (window as any).ethereum.request({\n          method: 'wallet_switchEthereumChain',\n          params: [{ chainId: '0x45A' }], // 1114 in hex\n        });\n        // Reload blockchain data after switching\n        await loadBlockchainData();\n      } catch (switchError: any) {\n        // If the network doesn't exist, try to add it\n        if (switchError.code === 4902) {\n          try {\n            await (window as any).ethereum.request({\n              method: 'wallet_addEthereumChain',\n              params: [{\n                chainId: '0x45A',\n                chainName: 'Core Testnet',\n                rpcUrls: ['https://rpc.test2.btcs.network/'],\n                nativeCurrency: {\n                  name: 'TCore2',\n                  symbol: 'TCORE2',\n                  decimals: 18,\n                },\n                blockExplorerUrls: ['https://scan.test2.btcs.network/'],\n              }],\n            });\n            await loadBlockchainData();\n          } catch (addError) {\n            console.error(\"Failed to add network:\", addError);\n          }\n        } else {\n          console.error(\"Failed to switch network:\", switchError);\n        }\n      }\n    }\n  }\n\n  async function handleGuess(providerr: any, factoryy: any) {\n\n    try {\n      const signer = await providerr.getSigner();\n      const userGuess = Number.parseInt(guess);\n\n      const transaction = await factoryy.connect(signer).makeGuess(userGuess);\n      await transaction.wait();\n\n      const tries = await factoryy.getAttempts(signer.address);\n      setAttempts(Number(tries));\n\n      // Fetch secret number again to ensure it's the latest\n      const updatedTarget = await factoryy.secret();\n      setTargetNumber(Number(updatedTarget));\n\n      if (userGuess === targetNumber) {\n        setMessage(`🎉 Congratulations! You guessed the number in ${Number(tries)} attempts!`);\n      } else if (userGuess < targetNumber) {\n        setMessage(\"📉 Too low! Try a higher number.\");\n      } else {\n        setMessage(\"📈 Too high! Try a lower number.\");\n      }\n\n      setGuess(\"\");\n    } catch (error) {\n      \n      alert(\"Guess should be between 1 - 100\");\n      setMessage(\"⚠️ Error submitting guess, try again.\");\n    }\n  }\n\n  async function resetGame(providerr: any, factoryy: any) {\n\n    try {\n      const signer = await providerr.getSigner();\n      const transaction = await factoryy.connect(signer).resetGame();\n      await transaction.wait();\n\n      // Reset state\n      setGuess(\"\");\n      setMessage(\"Guess a number between 1 and 100!\");\n      setAttempts(0);\n\n      // Fetch new secret number\n      const updatedTarget = await factoryy.secret();\n      setTargetNumber(Number(updatedTarget));\n\n      alert(\"Game Reset\");\n    } catch (error) {\n      console.error(\"Error resetting game:\", error);\n      setMessage(\"⚠️ Error resetting game.\");\n    }\n  }\n\n  return (\n    <Card className=\"w-full max-w-md mx-auto\">\n      <CardHeader>\n        <CardTitle className=\"text-2xl font-bold text-center\">Guess the Number</CardTitle>\n      </CardHeader>\n      <CardContent>\n        <p className=\"text-center mb-4\">{message}</p>\n        {!isConnected ? (\n          <Button onClick={connectWallet} className=\"w-full mb-4\">\n            Connect Wallet\n          </Button>\n        ) : !isSupportedNetwork ? (\n          <Button onClick={switchToSupportedNetwork} className=\"w-full mb-4\">\n            Switch to Core Testnet\n          </Button>\n        ) : (\n          <>\n            <p className=\"text-center mb-2 text-sm\">\n              Connected: {account.slice(0, 6)}...{account.slice(-4)}\n            </p>\n            <p className=\"text-center mb-4 text-sm\">Attempts: {attempts}</p>\n            <div className=\"flex space-x-2 mb-4\">\n              <Input\n                type=\"number\"\n                value={guess}\n                onChange={(e) => setGuess(e.target.value)}\n                placeholder=\"Enter your guess\"\n                className=\"flex-grow\"\n              />\n              <Button onClick={async() => {\n                await handleGuess(provider, factory);\n              }} disabled={!isConnected}>\n                Guess\n              </Button>\n            </div>\n            <Button onClick={async() => {\n              await resetGame(provider, factory)\n            }} variant=\"outline\" className=\"w-full\" disabled={!isConnected}>\n              New Game\n            </Button>\n          </>\n        )}\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "08-Guess-Game/Frontend/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "08-Guess-Game/Frontend/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "08-Guess-Game/Frontend/next.config.ts",
    "content": "import type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n  /* config options here */\n};\n\nexport default nextConfig;\n"
  },
  {
    "path": "08-Guess-Game/Frontend/package.json",
    "content": "{\n  \"name\": \"reusable\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-slot\": \"1.1.2\",\n    \"class-variance-authority\": \"0.7.0\",\n    \"clsx\": \"2.1.1\",\n    \"ethers\": \"6.13.5\",\n    \"lucide-react\": \"0.454.0\",\n    \"next\": \"15.0.2\",\n    \"react\": \"18.3.1\",\n    \"react-dom\": \"18.3.1\",\n    \"tailwind-merge\": \"2.5.4\",\n    \"tailwindcss-animate\": \"1.0.7\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"18.3.3\",\n    \"@types/react-dom\": \"18.3.0\",\n    \"eslint\": \"8.57.0\",\n    \"eslint-config-next\": \"15.0.2\",\n    \"postcss\": \"^8\",\n    \"tailwindcss\": \"^3.4.1\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "08-Guess-Game/Frontend/postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n  plugins: {\n    tailwindcss: {},\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "08-Guess-Game/Frontend/tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\";\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tcolors: {\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t},\n  \t\t\tpopover: {\n  \t\t\t\tDEFAULT: 'hsl(var(--popover))',\n  \t\t\t\tforeground: 'hsl(var(--popover-foreground))'\n  \t\t\t},\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tsecondary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--secondary))',\n  \t\t\t\tforeground: 'hsl(var(--secondary-foreground))'\n  \t\t\t},\n  \t\t\tmuted: {\n  \t\t\t\tDEFAULT: 'hsl(var(--muted))',\n  \t\t\t\tforeground: 'hsl(var(--muted-foreground))'\n  \t\t\t},\n  \t\t\taccent: {\n  \t\t\t\tDEFAULT: 'hsl(var(--accent))',\n  \t\t\t\tforeground: 'hsl(var(--accent-foreground))'\n  \t\t\t},\n  \t\t\tdestructive: {\n  \t\t\t\tDEFAULT: 'hsl(var(--destructive))',\n  \t\t\t\tforeground: 'hsl(var(--destructive-foreground))'\n  \t\t\t},\n  \t\t\tborder: 'hsl(var(--border))',\n  \t\t\tinput: 'hsl(var(--input))',\n  \t\t\tring: 'hsl(var(--ring))',\n  \t\t\tchart: {\n  \t\t\t\t'1': 'hsl(var(--chart-1))',\n  \t\t\t\t'2': 'hsl(var(--chart-2))',\n  \t\t\t\t'3': 'hsl(var(--chart-3))',\n  \t\t\t\t'4': 'hsl(var(--chart-4))',\n  \t\t\t\t'5': 'hsl(var(--chart-5))'\n  \t\t\t}\n  \t\t},\n  \t\tborderRadius: {\n  \t\t\tlg: 'var(--radius)',\n  \t\t\tmd: 'calc(var(--radius) - 2px)',\n  \t\t\tsm: 'calc(var(--radius) - 4px)'\n  \t\t}\n  \t}\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n};\nexport default config;\n"
  },
  {
    "path": "08-Guess-Game/Frontend/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "08-Guess-Game/README.md",
    "content": "# Guess the Number Game on Core Blockchain\n\nWelcome to the \"Guess the Number\" game! This decentralized application (dApp) allows players to guess a secret number on the Core blockchain. The first player to guess the correct number is rewarded with tokens.\n\n## Table of Contents\n\n- [Prerequisites](#prerequisites)\n- [Project Structure](#project-structure)\n- [Setup Instructions](#setup-instructions)\n- [Running the Application](#running-the-application)\n- [Interacting with the dApp](#interacting-with-the-dapp)\n- [Smart Contract Overview](#smart-contract-overview)\n- [Frontend Overview](#frontend-overview)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n- [Node.js](https://nodejs.org/) (v14 or later)\n- [npm](https://www.npmjs.com/) or [Yarn](https://yarnpkg.com/)\n- [MetaMask](https://metamask.io/) browser extension\n- Basic understanding of Ethereum smart contracts and React\n\n## Project Structure\n\nThe repository is organized as follows:\n\n- `contracts/`: Contains the Solidity smart contract.\n- `scripts/`: Deployment scripts for the smart contract.\n- `test/`: Test scripts for the smart contract.\n- `frontend/`: React application for the game's frontend.\n- `hardhat.config.js`: Configuration file for Hardhat.\n\n## Setup Instructions\n\n1. **Clone the Repository**\n\n   ```bash\n   git clone https://github.com/coredao-org/dapp-tutorial.git\n   cd dapp-tutorial/08-Guess-Game\n   ```\n\n2. **Install Dependencies**\n\n   Navigate to the root directory and install the necessary packages:\n\n   ```bash\n   npm install\n   ```\n\n   Then, navigate to the `frontend` directory and install its dependencies:\n\n   ```bash\n   cd frontend\n   npm install\n   ```\n\n## Running the Application\n\n1. **Compile the Smart Contract**\n\n   Return to the root directory and compile the contract:\n\n   ```bash\n   cd ..\n   npx hardhat compile\n   ```\n\n2. **Deploy the Smart Contract**\n\n   Deploy the contract to the Core blockchain testnet:\n\n   ```bash\n   npx hardhat run scripts/deploy.js --network coreTestnet\n   ```\n\n   Ensure you have configured the `coreTestnet` network in your `hardhat.config.js` with the appropriate RPC URL and account details.\n\n3. **Start the Frontend Application**\n\n   Navigate back to the `frontend` directory and start the React application:\n\n   ```bash\n   cd frontend\n   npm run dev\n   ```\n\n   The application will be available at `http://localhost:3000`.\n\n## Interacting with the dApp\n\n1. **Connect Wallet**\n\n   - Open the application in your browser.\n   - Click on the \"Connect Wallet\" button.\n   - Approve the connection in your MetaMask extension.\n\n2. **Make a Guess**\n\n   - Enter a number between 1 and 100 in the input field.\n   - Click the \"Guess\" button.\n   - The application will inform you if your guess is too high, too low, or correct.\n   - Your number of attempts will be displayed.\n\n3. **Reset the Game**\n\n   - Click the \"New Game\" button to reset the game and start over.\n\n## Smart Contract Overview\n\nThe smart contract is written in Solidity and is located in the `contracts` directory. It manages the game's logic, including:\n\n- Storing the secret number.\n- Tracking the number of attempts by each player.\n- Rewarding the first player who guesses the correct number.\n\n## Frontend Overview\n\nThe frontend is built with React and is located in the `frontend` directory. It interacts with the smart contract using the ethers.js library and provides a user-friendly interface for players.\n\n## Contributing\n\nContributions are welcome! Please fork the repository and submit a pull request with your changes.\n"
  },
  {
    "path": "08-Guess-Game/contracts/GuessTheNumber.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ncontract GuessTheNumber is Ownable {\n    uint256 public secretNumber;\n    address public lastWinner;\n    mapping(address => uint256) public attempts;\n    IERC20 public rewardToken;\n    uint256 public rewardAmount;\n\n    event GameStarted(uint256 blockNumber);\n    event GuessMade(address indexed player, uint256 guess, string message);\n    event GameWon(address indexed winner, uint256 attempts, uint256 reward);\n\n    constructor(address _rewardToken, uint256 _rewardAmount) Ownable(msg.sender) {\n        rewardToken = IERC20(_rewardToken);\n        rewardAmount = _rewardAmount;\n        resetGame();\n    }\n\n    function resetGame() public {\n        // Generate random number using blockhash and timestamp\n        secretNumber = uint256(keccak256(abi.encodePacked(blockhash(block.number - 1), block.timestamp))) % 100 + 1;\n        attempts[msg.sender] = 0;\n        emit GameStarted(block.number);\n    }\n\n    function makeGuess(uint256 _guess) public {\n        require(_guess >= 1 && _guess <= 100, \"Guess must be between 1 and 100\");\n        attempts[msg.sender]++;\n\n        if (_guess == secretNumber) {\n            lastWinner = msg.sender;\n            \n            // Reward the winner (if the contract has enough tokens)\n            if (rewardToken.balanceOf(address(this)) >= rewardAmount) {\n                rewardToken.transfer(msg.sender, rewardAmount);\n            }\n\n            emit GameWon(msg.sender, attempts[msg.sender], rewardAmount);\n            resetGame();\n        } else if (_guess < secretNumber) {\n            emit GuessMade(msg.sender, _guess, \"Too low! Try a higher number.\");\n        } else {\n            emit GuessMade(msg.sender, _guess, \"Too high! Try a lower number.\");\n        }\n    }\n\n    // Owner can set new reward amount\n    function setReward(uint256 _newAmount) external onlyOwner {\n        rewardAmount = _newAmount;\n    }\n\n    // Deposit ERC-20 tokens to fund rewards\n    function depositRewards(uint256 amount) external {\n        require(rewardToken.transferFrom(msg.sender, address(this), amount), \"Transfer failed\");\n    }\n\n    // Withdraw ERC-20 tokens (only owner)\n    function withdrawTokens(uint256 amount) external onlyOwner {\n        require(rewardToken.transfer(msg.sender, amount), \"Transfer failed\");\n    }\n\n    function secret() public view returns (uint256) {\n        return secretNumber;\n    }\n\n    function getAttempts(address _playerAddress) public view returns (uint256) {\n        return attempts[_playerAddress];\n    }\n}\n"
  },
  {
    "path": "08-Guess-Game/contracts/GuessToken.sol",
    "content": "// SPDX-License-Identifier: MIT\n// Compatible with OpenZeppelin Contracts ^5.0.0\npragma solidity ^0.8.22;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract GuessToken is ERC20 {\n    constructor() ERC20(\"GuessToken\", \"GTK\") {}\n\n\n    function mint(address gameAddress) public {\n        _mint(gameAddress, 100000 * 10 ** 18);\n    }\n}\n"
  },
  {
    "path": "08-Guess-Game/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.24\",\n\n  networks: {\n    localhost: {\n      url: \"http://127.0.0.1:8545/\",\n      // accounts: Thanks hardhat!\n      chainId: 31337,\n      allowUnlimitedContractSize: true,\n    },\n    coreTestnet: {\n      url: 'https://rpc.test2.btcs.network/',\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    },\n  },\n};\n"
  },
  {
    "path": "08-Guess-Game/ignition/modules/Lock.js",
    "content": "// This setup uses Hardhat Ignition to manage smart contract deployments.\n// Learn more about it at https://hardhat.org/ignition\n\nconst { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "08-Guess-Game/package.json",
    "content": "{\n  \"name\": \"reuse\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-toolbox\": \"5.0.0\",\n    \"hardhat\": \"2.22.15\"\n  },\n  \"dependencies\": {\n    \"@openzeppelin/contracts\": \"5.2.0\",\n    \"dotenv\": \"16.4.7\"\n  }\n}\n"
  },
  {
    "path": "08-Guess-Game/scripts/deploy-guess-game.js",
    "content": "const hre = require(\"hardhat\");\n\nasync function main() {\n\n  const GuessTokenContract = await hre.ethers.getContractFactory(\"GuessToken\");\n  const guessTokenContract = await GuessTokenContract.deploy();\n    \n  const GuessGameContract = await hre.ethers.getContractFactory(\"GuessTheNumber\");\n  const guessGameContract  = await GuessGameContract.deploy(guessTokenContract.target, ethers.parseEther(\"2\"));\n\n\n  await guessTokenContract.mint(guessGameContract.target)\n\n  const balance = await guessTokenContract.balanceOf(guessGameContract.target);\n\n  console.log(balance);\n\n  console.log(\"Guess Token contract deployed to:\", guessTokenContract.target);\n\n  console.log(\"Guess game contract deployed to:\", guessGameContract.target);\n\n\n}\n\n// We recommend this pattern to be able to use async/await everywhere\n// and properly handle errors.\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n\n\n\n// Telos: Support contract deployed to: 0x5Ac64F5DA22B25559C7D7522b4B2BB7e2012F382"
  },
  {
    "path": "08-Guess-Game/test/Lock.js",
    "content": "const {\n  time,\n  loadFixture,\n} = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\nconst { anyValue } = require(\"@nomicfoundation/hardhat-chai-matchers/withArgs\");\nconst { expect } = require(\"chai\");\n\ndescribe(\"Lock\", function () {\n  // We define a fixture to reuse the same setup in every test.\n  // We use loadFixture to run this setup once, snapshot that state,\n  // and reset Hardhat Network to that snapshot in every test.\n  async function deployOneYearLockFixture() {\n    const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;\n    const ONE_GWEI = 1_000_000_000;\n\n    const lockedAmount = ONE_GWEI;\n    const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS;\n\n    // Contracts are deployed using the first signer/account by default\n    const [owner, otherAccount] = await ethers.getSigners();\n\n    const Lock = await ethers.getContractFactory(\"Lock\");\n    const lock = await Lock.deploy(unlockTime, { value: lockedAmount });\n\n    return { lock, unlockTime, lockedAmount, owner, otherAccount };\n  }\n\n  describe(\"Deployment\", function () {\n    it(\"Should set the right unlockTime\", async function () {\n      const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.unlockTime()).to.equal(unlockTime);\n    });\n\n    it(\"Should set the right owner\", async function () {\n      const { lock, owner } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.owner()).to.equal(owner.address);\n    });\n\n    it(\"Should receive and store the funds to lock\", async function () {\n      const { lock, lockedAmount } = await loadFixture(\n        deployOneYearLockFixture\n      );\n\n      expect(await ethers.provider.getBalance(lock.target)).to.equal(\n        lockedAmount\n      );\n    });\n\n    it(\"Should fail if the unlockTime is not in the future\", async function () {\n      // We don't use the fixture here because we want a different deployment\n      const latestTime = await time.latest();\n      const Lock = await ethers.getContractFactory(\"Lock\");\n      await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith(\n        \"Unlock time should be in the future\"\n      );\n    });\n  });\n\n  describe(\"Withdrawals\", function () {\n    describe(\"Validations\", function () {\n      it(\"Should revert with the right error if called too soon\", async function () {\n        const { lock } = await loadFixture(deployOneYearLockFixture);\n\n        await expect(lock.withdraw()).to.be.revertedWith(\n          \"You can't withdraw yet\"\n        );\n      });\n\n      it(\"Should revert with the right error if called from another account\", async function () {\n        const { lock, unlockTime, otherAccount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // We can increase the time in Hardhat Network\n        await time.increaseTo(unlockTime);\n\n        // We use lock.connect() to send a transaction from another account\n        await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith(\n          \"You aren't the owner\"\n        );\n      });\n\n      it(\"Shouldn't fail if the unlockTime has arrived and the owner calls it\", async function () {\n        const { lock, unlockTime } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // Transactions are sent using the first signer by default\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).not.to.be.reverted;\n      });\n    });\n\n    describe(\"Events\", function () {\n      it(\"Should emit an event on withdrawals\", async function () {\n        const { lock, unlockTime, lockedAmount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw())\n          .to.emit(lock, \"Withdrawal\")\n          .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg\n      });\n    });\n\n    describe(\"Transfers\", function () {\n      it(\"Should transfer the funds to the owner\", async function () {\n        const { lock, unlockTime, lockedAmount, owner } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).to.changeEtherBalances(\n          [owner, lock],\n          [lockedAmount, -lockedAmount]\n        );\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "09-Token-swap-Dapp/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/modules/*\n"
  },
  {
    "path": "09-Token-swap-Dapp/README.md",
    "content": "# Building a Token Swapping Dapp on Core\n\n## What are we building\n\nIn this tutorial, we will guide you through building a simple token swapping decentralized application (dApp) on the Core blockchain. By the end of this guide, you will have a fully functional dApp that allows users to seamlessly swap between native tokens and ERC20 tokens directly on the Core Testnet.\n\nThis dApp will provide functionality for two types of swaps:\n\nERC20-to-ERC20 swaps: Users will be able to exchange custom ERC20 tokens, such as `Token A (USDC)` for `Token B (USDT)` and vice versa.\nNative-to-ERC20 swaps: Users will also have the ability to swap `Core's native token (CORE)` with ERC20 tokens like `USDT` or `USDC`.\n\n## Learning Takeaways\n\n- Smart Contract Development and deployment\n- Building a frontend for integration with smart contracts\n- Using Ethers.js library for communicating with smart contracts\n- Integrating Metamask for secure user transactions and interactions\n- Read and Write data to/from smart contracts\n\n## Software Prerequisites\n\n- [Git](https://git-scm.com/) v2.44.0\n- [Node.js](https://nodejs.org/en) v20.11.1\n- [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) v10.2.4\n- [Hardhat](https://hardhat.org/hardhat-runner/docs/getting-started#installation) v2.22.6\n- [MetaMask Web Wallet Extension](https://metamask.io/download/)Git v2.44.0\n- **Core Testnet Configuration:** Configure MetaMask to connect to the Core Testnet. Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config#adding-core-testnet-to-metamask) for more details.\n  - **Network Name:** Core Testnet\n  - **New RPC URL:** https://rpc.test2.btcs.network\n  - **Chain ID:** 1115\n  - **Currency Symbol:** CORE\n- **Core Faucet:** To get test CORE tokens for transactions, visit the [Core Faucet](https://scan.test2.btcs.network/faucet), refer [here]\n  (https://docs.coredao.org/docs/Dev-Guide/core-faucet) for more details.\n\n## Setting up Dev Environment\n\n### 1. Initialize the Project\n\n```\nmkdir swap-token\ncd swap-token\nnpm init -y\nnpm install --save-dev hardhat\nnpx hardhat init\n```\n\n![img](./frontend/src/assets/hardhat-init.png)\n\n### 2. Install and Configure MetaMask\n\n- Install and configure MetaMask Chrome Extension to use with Core Testnet.\n- Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config) for a detailed guide.\n\n### 3. Create a Secret File\n\n- Create a `.env` file in the root folder and store the private key of your MetaMask wallet in it.\n\n```bash\n  PRIVATE_KEY = <YOUR PRIVATE KEY>\n```\n\n> _Do not forget to add this file to the `.gitignore` file in the root folder of your project so that you don't accidentally check your private keys/secret phrases into a public repository. Make sure you keep this file in an absolutely safe place!_\n\n### 4. Update .gitignore\n\n- Update your .gitignore file to ensure that your secret.json file and other sensitive files are not committed to version control.\n- Make sure to add `secret.json` to the `.gitignore` file.\n\n```\nnode_modules\n.env\nsecret.json\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n```\n\n### 5. Update Hardhat.config\n\nReplace the contents of `hardhat.config.js` with the following configuration. Ensure that the network settings are configured correctly for Core Testnet.\n\n```\nrequire(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  defaultNetwork: \"hardhat\",\n\n  networks: {\n    hardhat: {},\n    core_testnet: {\n      url: \"https://rpc.test2.btcs.network\",\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n     },\n   },\n   solidity: {\n      compilers: [\n        {\n           version: '0.8.24',\n           settings: {\n            evmVersion: 'paris',\n            optimizer: {\n                 enabled: true,\n                 runs: 200,\n              },\n           },\n        },\n      ],\n   },\n   paths: {\n      sources: './contracts',\n      cache: './cache',\n      artifacts: './artifacts',\n   },\n   mocha: {\n      timeout: 20000,\n   },\n};\n```\n\n## Writing Smart Contracts\n\nIn the `contracts` folder, create the following smart contracts.\n\n### ERC20 Token Contract\n\n- For this dapp, we create a custom ERC20 Token contract\n- Create a `Token.sol` file in contracts folder and udpate its contents with the following.\n\n```js\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract Token is ERC20, Ownable {\n    constructor(string memory _name, string memory _symbol)\n        ERC20(_name, _symbol)\n        Ownable(msg.sender)\n    {\n        _mint(msg.sender, 500 ether);\n    }\n\n    function mint(address to, uint256 amount) public onlyOwner {\n        _mint(to, amount);\n    }\n}\n```\n\n### Swap Contract\n\n- Create a `Swap.sol` file in contracts folder and udpate its contents with the following.\n\n```js\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract Swap is Ownable {\n    address public feeCollector; // Address to collect fees\n    uint32 public feePercent; // Fee percentage (in basis points, e.g., 50 = 0.5%)\n\n    event TokensSwapped(\n        address indexed user,\n        address indexed tokenA,\n        address indexed tokenB,\n        uint256 amountIn,\n        uint256 amountOut,\n        uint256 fee\n    );\n\n    constructor(uint32 _feePercent) Ownable(msg.sender){\n        require(_feePercent <= 10000, \"Fee too high\");\n        feeCollector = msg.sender;\n        feePercent = _feePercent;\n    }\n\n    // Swap ERC20 tokens\n    function swapTokens(\n        address tokenA,\n        address tokenB,\n        uint256 amountIn\n    ) external {\n        require(amountIn > 0, \"AmountIn must be greater than 0\");\n        // Calculate fee\n        uint256 fee = (amountIn * feePercent) / 10000;\n        uint256 amountOut = amountIn - fee;\n\n        require(IERC20(tokenB).balanceOf(address(this)) >= amountOut, \"Insufficient tokenB for swap\");\n\n        // Transfer tokenA from sender to this contract\n        IERC20(tokenA).transferFrom(msg.sender, address(this), amountIn);\n\n        // Send fee to fee collector\n        if (fee > 0) {\n            IERC20(tokenA).transfer(feeCollector, fee);\n        }\n\n        // Transfer tokenB to the receiver\n        IERC20(tokenB).transfer(msg.sender, amountOut);\n\n        // Emit event for transparency\n        emit TokensSwapped(msg.sender, tokenA, tokenB, amountIn, amountOut, fee);\n    }\n\n    // Swap native token (ETH) for ERC20 token\n    function swapNativeForToken(address tokenB) external payable {\n        require(msg.value > 0, \"Amount must be greater than 0\");\n        uint256 amountIn = msg.value;\n        uint256 fee = (amountIn * feePercent) / 10000;\n        uint256 amountOut = amountIn - fee;\n\n        require(IERC20(tokenB).balanceOf(address(this)) >= amountOut, \"Insufficient token for swap\");\n\n        // Send fee to fee collector in native tokens\n        if (fee > 0) {\n            payable(feeCollector).transfer(fee);\n        }\n\n        // Transfer tokenB to the user\n        IERC20(tokenB).transfer(msg.sender, amountOut);\n\n        // Emit event for transparency\n        emit TokensSwapped(msg.sender, address(0), tokenB, amountIn, amountOut, fee);\n    }\n\n    // Withdraw ERC20 tokens from the contract\n    function withdrawTokens(address token, uint256 amount) external onlyOwner {\n        require(IERC20(token).balanceOf(address(this)) >= amount, \"Insufficient token balance\");\n        IERC20(token).transfer(msg.sender, amount);\n    }\n\n    // Withdraw native tokens from the contract\n    function withdrawNative(uint256 amount) external onlyOwner {\n        require(address(this).balance >= amount, \"Insufficient ETH balance\");\n        payable(msg.sender).transfer(amount);\n    }\n\n    // Updates the fee percentage\n    function updateFee(uint32 newFeePercent) public onlyOwner {\n        require(newFeePercent <= 10000, \"Fee too high\");\n        feePercent = newFeePercent;\n    }\n}\n\n```\n\n#### Explanation\n\nThe Swap.sol contract handles the swapping of tokens between ERC20 tokens and the native token (CORE) on the Core blockchain. Here's how it works:\n\n##### State Variables\n\n- **feeCollector:** This stores the address where the swap fees will be sent.\n- **feePercent:** This determines the percentage of the fee deducted during each swap (e.g., 50 = 0.5%).\n\n##### Functions\n\n1. **swapTokens(address tokenA, address tokenB, uint256 amountIn)**:\n\n   - Allows users to swap one ERC20 token (tokenA) for another ERC20 token (tokenB).\n   - Fee is deducted from amountIn, and the remaining amount is transferred to the user.\n   - Emits the TokensSwapped event.\n\n2. **swapNativeForToken(address tokenB)**:\n\n   - Allows users to swap the native blockchain token (CORE) for an ERC20 token (tokenB).\n   - Accepts a msg.value in native tokens, deducts a fee, and transfers the remaining tokenB to the user.\n   - Emits a TokensSwapped event.\n\n3. **withdrawTokens(address token, uint256 amount)**: Allows the contract owner to withdraw any ERC20 tokens stored in the contract.\n\n4. **withdrawNative(uint256 amount)**: Allows the owner to withdraw native tokens stored in the contract.\n\n5. **updateFee(uint32 newFeePercent)**: Updates the fee percentage for the swaps, limited to a maximum of 10000 basis points (i.e., 100%).\n\n## How the Swap Works:\n\n1. Users provide the input token (tokenA) they want to swap and specify the token they want to receive (tokenB).\n\n2. The contract calculates the fee, deducts it from the input amount, and transfers the output token (tokenB) to the user.\n\n3. The fee is transferred to the fee collector (the contract owner by default).\n\n## Compile and Deploy Smart Contracts\n\n### Compiling Smart Contracts\n\nTo compile the smart contracts, run the command `npx hardhat compile`\n\n### Deploying Smart Contracts\n\n- Create a `scritps` folder in the root of your project.\n- Create a file `deploy.js` in the `scripts` folder.\n- Update the contents of the `deploy.js` file with the following:\n\n```js\nconst { ethers } = require(\"hardhat\");\n\nasync function main() {\n  const [deployer] = await ethers.getSigners();\n\n  console.log(\"Deploying contracts with the account:\", deployer.address);\n\n  const ERC20 = await ethers.getContractFactory(\"Token\");\n  const usdt = await ERC20.deploy(\"usdt\", \"USDT\");\n  const usdc = await ERC20.deploy(\"usdc\", \"USDC\");\n\n  const fee = 10;\n\n  const Swap = await ethers.getContractFactory(\"Swap\");\n  const swap = await Swap.deploy(fee);\n\n  console.log(\"Contracts deployed:\");\n  console.log(\"Swap Contract:\", await swap.getAddress());\n  console.log(\"usdt Token:\", await usdt.getAddress());\n  console.log(\"usdc Token:\", await usdc.getAddress());\n\n  const swapContractAddr = await swap.getAddress();\n\n  await usdt.approve(swapContractAddr, ethers.parseEther(\"100\"));\n  await usdt.transfer(swapContractAddr, ethers.parseEther(\"100\"));\n  await usdc.approve(swapContractAddr, ethers.parseEther(\"100\"));\n  await usdc.transfer(swapContractAddr, ethers.parseEther(\"100\"));\n}\n\nmain()\n  .then(() => process.exit(0))\n  .catch((error) => {\n    console.error(error);\n    process.exit(1);\n  });\n```\n\n- Make sure your MetaMask wallet has tCORE test tokens for the Core Testnet. Refer [here](https://docs.coredao.org/docs/Dev-Guide/core-faucet) for details on how to get tCORE tokens from Core Faucet.\n\n- Run the following command from the root directory of your project, to deploy smart contracts on the Core blockchain.\n\n```bash\nnpx hardhat run scripts/deploy.js\n```\n\n- If succesfully deployed, you will get the following output\n\n![img](./frontend/src/assets/deploy.png)\n\n- Save the addresses for the deployed contracts for use with the frontend.\n\n## Interacting with Smart Contract through Frontend\n\n⚡️ Let's create a frontend interface for interacting with the smart contract.\n\n### Setting up frontend\n\n- Create a simple react application using the following command\n\n```bash\nnpx create-react-app frontend\ncd frontend\n```\n\n- Install Dependencies, the Ethers.js library for communicating with the deployed smart contracts.\n\n```bash\n  npm install --save-dev ethers@5.7.2\n```\n\n- Create a `contracts` folder inside the `frontend/src` folder.\n\n```bash\nmkdir contracts\n```\n\nCopy the ABIs in the form of `.json` files, of your deployed smart contracts, from `artifacts/contracts/Token.sol` and `artifacts/contracts/Swap.sol` directories into the `frontend/src/contracts` directory.\n\n### Adding Frontend Fuctionality\n\n- Update the `App.js` with the contents of the [App.js](./frontend/src/App.js) in the boilerplate repo.\n- Update the `App.css` with the contents of the [App.css](./frontend/src/App.css) in the boilerplate repo.\n\n### Key Implementation\n\nThe application's key blockchain logic is implemented in [App.js](./frontend/src/App.js)\n\n1. **App.js (Connect Wallet)**: Line #41 onwards is the logic for connecting the application to the MetaMask wallet, allowing users to interact with the blockchain.\n\n2. **App.js (Check Network)**: Line #28 is the logic for checking if the user is connected to the Core Testnet. It alerts the user if they are connected to the wrong network.\n\n3. **App.js (Calculate Output Amount)** : Line #62 is the logic for calculating the output amount based on the input amount and the fee percentage applied during the token swap.\n\n4. **App.js (Swap Tokens)**: Line #150 is the logic for executing the token swap. It handles both native token swaps and ERC-20 token swaps, including approval of tokens and transaction handling.\n\n### Adding Smart Contract Details\n\n- Paste this into Lines 11, 12, and 15 the addresses of the deployed contracts of USDT, USDC and Swap Contract Address.\n\n```js\nconst tokenAddresses = {\n  CORE: \"0x0000000000000000000000000000000000000000\",\n  USDT: \"0xdBb5e35236536d38239102596adcaA5626e27bE2\",\n  USDC: \"0x82fa6E5EDCE48bA4EBcA82dCDdec08d124d7Eed3\",\n};\n\nconst swapContractAddress = \"0x8ac209ee5dfaC9c2D915f24edD34d4072059558b\";\n```\n\n### Testing Locally\n\n- From the `frontend` directory, run the command `npm run start`\n- Make sure that your MetaMask wallet is correctly installed and switched to Core Testnet as described in our [Core Testnet user guide](https://docs.coredao.org/docs/Dev-Guide/core-testnet-wallet-config). You'll also need to connect your MetaMask wallet to the local site.\n- Navigate to `http://localhost:3000/` in your browser.\n\n![dapp-ui](./frontend/src/assets/dapp_ui.png)\n\n#### Native to ERC-20 Token Transfer\n\n- Click on `CORE` Input token and choose the output token `USDT` or `USDC`\n- The Dapp automatically calculates the expected output amount based on the input amount, applying the defined fee percentage.\n  ![dapp-ui](./frontend/src/assets/init_swap.png)\n\n- After reviwing the swap Details, click on Swap and you need to confirm the transaction\n  ![dapp-ui](./frontend/src/assets/native_swap.png)\n\n- Once the transaction confirmed, you will see the swap successfull message and the balance has been updated\n  ![dapp-ui](./frontend/src/assets/native_swap_success.png)\n\n#### ERC20 to ERC-20 Token Transfer\n\n- Click on `USDT` Input token and by default the output Amount will show `USDC`\n- The Dapp automatically calculates the expected output amount based on the input amount, applying the defined fee percentage.\n  ![dapp-ui](./frontend/src/assets/usdt_usdc.png)\n\n- After reviwing the swap Details, click on Swap and First you need to Approve and then confirm the transaction\n  ![dapp-ui](./frontend/src/assets/approve.png)\n  ![dapp-ui](./frontend/src/assets/usdt_swap_confirm.png)\n\n- Once the transaction confirmed, you will see the swap successfull message\n\n## 🎉 **Congratulations!**\n\nYou've just interacted with your deployed contract using your dApp's front end! You can build on the codebase by adding new UI components or more functionality to the Token Swap dapp.\n"
  },
  {
    "path": "09-Token-swap-Dapp/contracts/Swap.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract Swap is Ownable {\n    address public feeCollector; // Address to collect fees\n    uint32 public feePercent; // Fee percentage (in basis points, e.g., 50 = 0.5%)\n\n    event TokensSwapped(\n        address indexed user,\n        address indexed tokenA,\n        address indexed tokenB,\n        uint256 amountIn,\n        uint256 amountOut,\n        uint256 fee\n    );\n\n    constructor(uint32 _feePercent) Ownable(msg.sender){\n        require(_feePercent <= 10000, \"Fee too high\");\n        feeCollector = msg.sender;\n        feePercent = _feePercent;\n    }\n\n    // Swap ERC20 tokens\n    function swapTokens(\n        address tokenA,\n        address tokenB,\n        uint256 amountIn\n    ) external {\n        require(amountIn > 0, \"AmountIn must be greater than 0\");\n        // Calculate fee\n        uint256 fee = (amountIn * feePercent) / 10000;\n        uint256 amountOut = amountIn - fee;\n\n        require(IERC20(tokenB).balanceOf(address(this)) >= amountOut, \"Insufficient tokenB for swap\");\n\n        // Transfer tokenA from sender to this contract\n        IERC20(tokenA).transferFrom(msg.sender, address(this), amountIn);\n\n        // Send fee to fee collector\n        if (fee > 0) {\n            IERC20(tokenA).transfer(feeCollector, fee);\n        }\n\n        // Transfer tokenB to the receiver\n        IERC20(tokenB).transfer(msg.sender, amountOut);\n\n        // Emit event for transparency\n        emit TokensSwapped(msg.sender, tokenA, tokenB, amountIn, amountOut, fee);\n    }\n\n    // Swap native token (ETH) for ERC20 token\n    function swapNativeForToken(address tokenB) external payable {\n        require(msg.value > 0, \"Amount must be greater than 0\");\n        uint256 amountIn = msg.value;\n        uint256 fee = (amountIn * feePercent) / 10000;\n        uint256 amountOut = amountIn - fee;\n\n        require(IERC20(tokenB).balanceOf(address(this)) >= amountOut, \"Insufficient token for swap\");\n\n        // Send fee to fee collector in native tokens\n        if (fee > 0) {\n            payable(feeCollector).transfer(fee);\n        }\n\n        // Transfer tokenB to the user\n        IERC20(tokenB).transfer(msg.sender, amountOut);\n\n        // Emit event for transparency\n        emit TokensSwapped(msg.sender, address(0), tokenB, amountIn, amountOut, fee);\n    }\n\n    // Withdraw ERC20 tokens from the contract\n    function withdrawTokens(address token, uint256 amount) external onlyOwner {\n        require(IERC20(token).balanceOf(address(this)) >= amount, \"Insufficient token balance\");\n        IERC20(token).transfer(msg.sender, amount);\n    }\n\n    // Withdraw native tokens from the contract\n    function withdrawNative(uint256 amount) external onlyOwner {\n        require(address(this).balance >= amount, \"Insufficient ETH balance\");\n        payable(msg.sender).transfer(amount);\n    }\n\n    // Updates the fee percentage\n    function updateFee(uint32 newFeePercent) public onlyOwner {\n        require(newFeePercent <= 10000, \"Fee too high\");\n        feePercent = newFeePercent;\n    }\n}\n"
  },
  {
    "path": "09-Token-swap-Dapp/contracts/Token.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract Token is ERC20, Ownable {\n    constructor(string memory _name, string memory _symbol)\n        ERC20(_name, _symbol)\n        Ownable(msg.sender)\n    {\n        _mint(msg.sender, 500 ether);\n    }\n\n    function mint(address to, uint256 amount) public onlyOwner {\n        _mint(to, amount);\n    }\n}"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/README.md",
    "content": "# Getting Started with Create React App\n\nThis project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n### `npm start`\n\nRuns the app in the development mode.\\\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\n\nThe page will reload when you make changes.\\\nYou may also see any lint errors in the console.\n\n### `npm test`\n\nLaunches the test runner in the interactive watch mode.\\\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\n\n### `npm run build`\n\nBuilds the app for production to the `build` folder.\\\nIt correctly bundles React in production mode and optimizes the build for the best performance.\n\nThe build is minified and the filenames include the hashes.\\\nYour app is ready to be deployed!\n\nSee the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.\n\n### `npm run eject`\n\n**Note: this is a one-way operation. Once you `eject`, you can't go back!**\n\nIf you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.\n\nInstead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.\n\nYou don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.\n\n## Learn More\n\nYou can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).\n\nTo learn React, check out the [React documentation](https://reactjs.org/).\n\n### Code Splitting\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)\n\n### Analyzing the Bundle Size\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)\n\n### Making a Progressive Web App\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)\n\n### Advanced Configuration\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)\n\n### Deployment\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)\n\n### `npm run build` fails to minify\n\nThis section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/package.json",
    "content": "{\n  \"name\": \"frontend\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@testing-library/jest-dom\": \"5.17.0\",\n    \"@testing-library/react\": \"13.4.0\",\n    \"@testing-library/user-event\": \"13.5.0\",\n    \"ethers\": \"5.7.2\",\n    \"lucide-react\": \"0.453.0\",\n    \"react\": \"18.3.1\",\n    \"react-dom\": \"18.3.1\",\n    \"react-scripts\": \"5.0.1\",\n    \"web-vitals\": \"2.1.4\"\n  },\n  \"scripts\": {\n    \"start\": \"react-scripts start\",\n    \"build\": \"react-scripts build\",\n    \"test\": \"react-scripts test\",\n    \"eject\": \"react-scripts eject\"\n  },\n  \"eslintConfig\": {\n    \"extends\": [\n      \"react-app\",\n      \"react-app/jest\"\n    ]\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  }\n}\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <meta\n      name=\"description\"\n      content=\"Web site created using create-react-app\"\n    />\n    <link rel=\"apple-touch-icon\" href=\"%PUBLIC_URL%/logo192.png\" />\n    <!--\n      manifest.json provides metadata used when your web app is installed on a\n      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/\n    -->\n    <link rel=\"manifest\" href=\"%PUBLIC_URL%/manifest.json\" />\n    <!--\n      Notice the use of %PUBLIC_URL% in the tags above.\n      It will be replaced with the URL of the `public` folder during the build.\n      Only files inside the `public` folder can be referenced from the HTML.\n\n      Unlike \"/favicon.ico\" or \"favicon.ico\", \"%PUBLIC_URL%/favicon.ico\" will\n      work correctly both with client-side routing and a non-root public URL.\n      Learn how to configure a non-root public URL by running `npm run build`.\n    -->\n    <title>React App</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"root\"></div>\n    <!--\n      This HTML file is a template.\n      If you open it directly in the browser, you will see an empty page.\n\n      You can add webfonts, meta tags, or analytics to this file.\n      The build step will place the bundled scripts into the <body> tag.\n\n      To begin the development, run `npm start` or `yarn start`.\n      To create a production bundle, use `npm run build` or `yarn build`.\n    -->\n  </body>\n</html>\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/public/manifest.json",
    "content": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n      \"sizes\": \"64x64 32x32 24x24 16x16\",\n      \"type\": \"image/x-icon\"\n    },\n    {\n      \"src\": \"logo192.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"192x192\"\n    },\n    {\n      \"src\": \"logo512.png\",\n      \"type\": \"image/png\",\n      \"sizes\": \"512x512\"\n    }\n  ],\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#ffffff\"\n}\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/src/App.css",
    "content": "/* App.css */\nbody {\n  margin: 0;\n  font-family: Arial, sans-serif;\n  background-color: #f4f4f9;\n  color: #333;\n}\n\n.App {\n  text-align: center;\n  padding: 20px;\n  position: relative; /* Ensure the App container is positioned relatively for absolute children */\n}\n\n.logo-container {\n  text-align: center;\n  margin-bottom: 20px;\n}\n\n.logo {\n  max-width: 150px; /* Adjust as needed for logo size */\n}\n\n.App-header {\n  background-color: #f8f9fa;\n  padding: 20px;\n  border-bottom: 2px solid #eaeaea;\n  position: relative; /* To position elements inside it */\n  margin-bottom: 100px; /* Space between header and content */\n}\n\n.App-header h1 {\n  margin: 0;\n  color: #ff6f00; /* Core Chain orange color */\n}\n\n.btn-primary {\n  background-color: #ff6f00; /* Core Chain orange color */\n  color: white;\n  border: none;\n  padding: 12px 20px;\n  font-size: 16px;\n  cursor: pointer;\n  border-radius: 5px;\n  width: 200px; /* Set a consistent width for all buttons */\n  height: 40px; /* Set a consistent height for all buttons */\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n  margin: 10px; /* Add margin to separate buttons */\n}\n\n.btn-primary:hover {\n  background-color: #e65c00; /* Darker orange for hover effect */\n}\n\n.input-field {\n  padding: 10px;\n  font-size: 16px;\n  border: 1px solid #ccc;\n  border-radius: 5px;\n  width: 200px;\n  margin: 5px;\n}\n\n.input-field:focus {\n  border-color: #ff6f00;\n  outline: none;\n}\n\n.amount-ticker {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 20px;\n}\n\n.amount-ticker p {\n  margin: 5px 20px;\n  font-size: 18px;\n}\n\n.stake-container,\n.unstake-container {\n  margin: 20px 0;\n}\n\n.stake-container input,\n.unstake-container input {\n  width: 200px;\n}\n\n.modal-btns {\n  display: flex;\n  justify-content: center;\n  gap: 10px;\n}\n\n.disconnect-btn {\n  position: absolute;\n  top: 20px;\n  right: 20px;\n}\n\n.swap-container {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  padding: 20px;\n}\n\n.swap-box {\n  width: 350px;\n  padding: 20px;\n  border-radius: 10px;\n  border: 1px solid #ffa31a;\n}\n\n.swap-input {\n  margin-bottom: 20px;\n}\n\n.swap-options {\n  padding: 10px;\n  font-size: 16px;\n  border: 1px solid #ccc;\n  border-radius: 5px;\n  width: 100px;\n  margin: 5px;\n}\n\n.input-row {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n\n.input-row select {\n  width: 40%;\n  padding: 10px;\n  margin-right: 10px;\n  background: #333;\n  color: white;\n  border: none;\n  border-radius: 5px;\n}\n\n.input-row input {\n  width: 60%;\n  padding: 10px;\n  background: #333;\n  color: white;\n  border: none;\n  border-radius: 5px;\n}\n\n.swap-arrow {\n  width: 20%;\n  padding: 10px;\n  background: #333;\n  color: white;\n  border: none;\n  border-radius: 5px;\n  cursor: pointer;\n  margin-bottom: 20px;\n}\n\n.swap-subtitle {\n  text-align: left;\n  color: #696868;\n  padding-bottom: 20px;\n}\n\n@media (max-width: 768px) {\n  .amount-ticker {\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  .amount-ticker p {\n    margin: 5px 0;\n  }\n\n  .disconnect-btn {\n    position: relative;\n    top: auto;\n    right: auto;\n  }\n}\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/src/App.js",
    "content": "import { useEffect, useState, useCallback } from \"react\";\nimport { ethers } from \"ethers\";\nimport \"./App.css\";\nimport TokenABI from \"./contracts/Token.json\";\nimport SwapABI from \"./contracts/Swap.json\";\nimport coreLogo from \"./assets/core-logo.png\";\n\n// Replace these addresses with your actual token and swap contract addresses\nconst tokenAddresses = {\n  CORE: \"0x0000000000000000000000000000000000000000\",\n  USDT: \"0xdBb5e35236536d38239102596adcaA5626e27bE2\",\n  USDC: \"0x82fa6E5EDCE48bA4EBcA82dCDdec08d124d7Eed3\",\n};\n\nconst swapContractAddress = \"0x8ac209ee5dfaC9c2D915f24edD34d4072059558b\"; // Add your swap contract address here\n\nconst tokens = [\"CORE\", \"USDT\", \"USDC\"];\nconst feePercentage = 0.5;\n\nfunction App() {\n  const [inputToken, setInputToken] = useState(\"CORE\");\n  const [outputToken, setOutputToken] = useState(\"USDT\");\n  const [inputAmount, setInputAmount] = useState(\"\");\n  const [outputAmount, setOutputAmount] = useState(\"0\");\n  const [currentAccount, setCurrentAccount] = useState(null);\n  const [network, setNetwork] = useState(\"\");\n  const [isSwapping, setIsSwapping] = useState(false);\n\n  // Check network\n  const checkNetwork = async () => {\n    const { ethereum } = window;\n\n    if (!ethereum) {\n      console.log(\"Ethereum object does not exist\");\n      return;\n    }\n\n    try {\n      const provider = new ethers.providers.Web3Provider(ethereum);\n      const { chainId } = await provider.getNetwork();\n\n      if (chainId !== 1114) {\n        alert(\"Please connect to the Core Testnet\");\n      } else {\n        setNetwork(\"Core Testnet\");\n      }\n    } catch (error) {\n      console.error(\"Error fetching network:\", error);\n    }\n  };\n\n  const connectWalletHandler = async () => {\n    const { ethereum } = window;\n    if (!ethereum) return alert(\"Please install MetaMask!\");\n\n    const accounts = await ethereum.request({ method: \"eth_requestAccounts\" });\n    setCurrentAccount(accounts[0]);\n  };\n\n  // Calculate the output amount based on the input and fee\n  const calculateOutputAmount = useCallback(() => {\n    if (!inputAmount) {\n      setOutputAmount(\"0\");\n      return;\n    }\n\n    const input = parseFloat(inputAmount);\n    const fee = (input * feePercentage) / 100;\n    const finalOutput = input - fee;\n\n    setOutputAmount(finalOutput.toFixed(6));\n  }, [inputAmount]);\n\n  const getOutputTokenOptions = () => {\n    const tokenPairs = {\n      USDT: [\"USDC\"],\n      USDC: [\"USDT\"],\n    };\n\n    return (\n      tokenPairs[inputToken] || tokens.filter((token) => token !== inputToken)\n    );\n  };\n\n  useEffect(() => {\n    checkNetwork();\n    calculateOutputAmount();\n  }, [inputToken, outputToken, inputAmount, calculateOutputAmount]);\n\n  const handleInputChange = (value) => {\n    if (/^\\d*\\.?\\d*$/.test(value)) setInputAmount(value);\n  };\n\n  const handleTokenSwap = async () => {\n    if (!currentAccount) return alert(\"Please connect your wallet.\");\n\n    try {\n      const { ethereum } = window;\n      if (!ethereum) return alert(\"Ethereum object doesn't exist!\");\n\n      setIsSwapping(true);\n      const provider = new ethers.providers.Web3Provider(ethereum);\n      const signer = provider.getSigner();\n\n      const parsedInputAmount = ethers.utils.parseUnits(inputAmount, 18);\n\n      const swapContract = new ethers.Contract(\n        swapContractAddress,\n        SwapABI,\n        signer\n      );\n\n      if (inputToken === \"CORE\") {\n        // If input token is CORE (native token swap)\n        const txSwapNative = await swapContract.swapNativeForToken(\n          tokenAddresses[outputToken],\n          { value: parsedInputAmount }\n        );\n        await txSwapNative.wait();\n      } else {\n        // Approve tokens for swap contract\n        const inputTokenAddress = tokenAddresses[inputToken];\n        const tokenContract = new ethers.Contract(\n          inputTokenAddress,\n          TokenABI,\n          signer\n        );\n\n        const txApprove = await tokenContract.approve(\n          swapContractAddress,\n          parsedInputAmount\n        );\n        await txApprove.wait();\n\n        // Perform the swap\n        const txSwap = await swapContract.swapTokens(\n          inputTokenAddress,\n          tokenAddresses[outputToken],\n          parsedInputAmount\n        );\n\n        await txSwap.wait();\n      }\n      alert(\"Swap successful!\");\n    } catch (error) {\n      console.error(\"Swap failed:\", error);\n      alert(\"Swap failed, check the console for details.\");\n    } finally {\n      setIsSwapping(false);\n      setInputAmount(\"\");\n      setOutputAmount(\"0\");\n    }\n  };\n\n  const switchTokens = () => {\n    setInputToken(outputToken);\n    setOutputToken(inputToken);\n    setInputAmount(\"\");\n    setOutputAmount(\"0\");\n  };\n\n  return (\n    <div className=\"App\">\n      <header className=\"App-header\">\n        <div className=\"logo-container\">\n          <img src={coreLogo} alt=\"Core Logo\" className=\"logo\" />\n        </div>\n        <h1>Swap Tokens</h1>\n        {currentAccount ? (\n          <button\n            onClick={() => setCurrentAccount(null)}\n            className=\"btn-primary disconnect-btn\"\n          >\n            Disconnect Wallet\n          </button>\n        ) : (\n          <button onClick={connectWalletHandler} className=\"btn-primary\">\n            Connect Wallet\n          </button>\n        )}\n      </header>\n      <main>\n        {currentAccount && (\n          <div className=\"swap-container\">\n            <div className=\"swap-box\">\n              <div>\n                <label>You will pay</label>\n              </div>\n              <div className=\"swap-input\">\n                <select\n                  className=\"swap-options\"\n                  value={inputToken}\n                  onChange={(e) => setInputToken(e.target.value)}\n                >\n                  {tokens.map((token) => (\n                    <option key={token} value={token}>\n                      {token}\n                    </option>\n                  ))}\n                </select>\n                <input\n                  type=\"text\"\n                  className=\"input-field\"\n                  value={inputAmount}\n                  onChange={(e) => handleInputChange(e.target.value)}\n                  placeholder=\"0.0\"\n                />\n              </div>\n              <button onClick={switchTokens} className=\"swap-arrow\">\n                ⇅\n              </button>\n              <div>\n                <label>To receive</label>\n                <div className=\"swap-input\">\n                  <select\n                    className=\"swap-options\"\n                    value={outputToken}\n                    onChange={(e) => setOutputToken(e.target.value)}\n                  >\n                    {getOutputTokenOptions().map((token) => (\n                      <option key={token} value={token}>\n                        {token}\n                      </option>\n                    ))}\n                  </select>\n                  <input\n                    type=\"text\"\n                    className=\"input-field\"\n                    value={outputAmount}\n                    readOnly\n                    placeholder=\"0.0\"\n                  />\n                </div>\n                <p className=\"swap-subtitle\">\n                  Exchange your tokens with a 0.5% fee\n                </p>\n              </div>\n              <button\n                onClick={handleTokenSwap}\n                className=\"btn-primary swap-btn\"\n                disabled={isSwapping}\n              >\n                {isSwapping ? \"Swapping...\" : \"Swap\"}\n              </button>\n            </div>\n          </div>\n        )}\n      </main>\n    </div>\n  );\n}\n\nexport default App;\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/src/App.test.js",
    "content": "import { render, screen } from '@testing-library/react';\nimport App from './App';\n\ntest('renders learn react link', () => {\n  render(<App />);\n  const linkElement = screen.getByText(/learn react/i);\n  expect(linkElement).toBeInTheDocument();\n});\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/src/contracts/Swap.json",
    "content": "[\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint32\",\n        \"name\": \"_feePercent\",\n        \"type\": \"uint32\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnableInvalidOwner\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"account\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnableUnauthorizedAccount\",\n    \"type\": \"error\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"previousOwner\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnershipTransferred\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"tokenA\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"tokenB\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"amountIn\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"amountOut\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"fee\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"TokensSwapped\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"feeCollector\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"feePercent\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint32\",\n        \"name\": \"\",\n        \"type\": \"uint32\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"owner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"renounceOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"tokenB\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"swapNativeForToken\",\n    \"outputs\": [],\n    \"stateMutability\": \"payable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"tokenA\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"tokenB\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amountIn\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"swapTokens\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"transferOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint32\",\n        \"name\": \"newFeePercent\",\n        \"type\": \"uint32\"\n      }\n    ],\n    \"name\": \"updateFee\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"withdrawNative\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"token\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"withdrawTokens\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/src/contracts/Token.json",
    "content": "[\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"_name\",\n        \"type\": \"string\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"_symbol\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"allowance\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"needed\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ERC20InsufficientAllowance\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"balance\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"needed\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ERC20InsufficientBalance\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"approver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidApprover\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"receiver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidReceiver\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidSender\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidSpender\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnableInvalidOwner\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"account\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnableUnauthorizedAccount\",\n    \"type\": \"error\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Approval\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"previousOwner\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnershipTransferred\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Transfer\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"allowance\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"approve\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"account\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"balanceOf\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"decimals\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint8\",\n        \"name\": \"\",\n        \"type\": \"uint8\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"mint\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"name\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"owner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"renounceOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"symbol\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"totalSupply\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transfer\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transferFrom\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"transferOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/src/index.css",
    "content": "body {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n    sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n    monospace;\n}\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/src/index.js",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/src/reportWebVitals.js",
    "content": "const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n"
  },
  {
    "path": "09-Token-swap-Dapp/frontend/src/setupTests.js",
    "content": "// jest-dom adds custom jest matchers for asserting on DOM nodes.\n// allows you to do things like:\n// expect(element).toHaveTextContent(/react/i)\n// learn more: https://github.com/testing-library/jest-dom\nimport '@testing-library/jest-dom';\n"
  },
  {
    "path": "09-Token-swap-Dapp/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  defaultNetwork: \"hardhat\",\n\n  networks: {\n    hardhat: {},\n    core_testnet: {\n      url: \"https://rpc.test2.btcs.network\",\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    },\n  },\n  solidity: {\n    compilers: [\n      {\n        version: \"0.8.26\",\n        settings: {\n          evmVersion: \"shanghai\",\n          optimizer: {\n            enabled: true,\n            runs: 200,\n          },\n        },\n      },\n    ],\n  },\n  paths: {\n    sources: \"./contracts\",\n    cache: \"./cache\",\n    artifacts: \"./artifacts\",\n  },\n  mocha: {\n    timeout: 60000,\n  },\n};\n"
  },
  {
    "path": "09-Token-swap-Dapp/package.json",
    "content": "{\n  \"name\": \"09-Token-swap-Dapp\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-chai-matchers\": \"2.0.0\",\n    \"@nomicfoundation/hardhat-ethers\": \"3.0.0\",\n    \"@nomicfoundation/hardhat-ignition\": \"0.15.0\",\n    \"@nomicfoundation/hardhat-ignition-ethers\": \"0.15.0\",\n    \"@nomicfoundation/hardhat-network-helpers\": \"1.0.0\",\n    \"@nomicfoundation/hardhat-toolbox\": \"5.0.0\",\n    \"@nomicfoundation/hardhat-verify\": \"2.0.0\",\n    \"@typechain/ethers-v6\": \"0.5.0\",\n    \"@typechain/hardhat\": \"9.0.0\",\n    \"chai\": \"4.2.0\",\n    \"ethers\": \"6.4.0\",\n    \"hardhat\": \"2.22.13\",\n    \"hardhat-gas-reporter\": \"1.0.8\",\n    \"solidity-coverage\": \"0.8.0\",\n    \"typechain\": \"8.3.0\"\n  },\n  \"dependencies\": {\n    \"@openzeppelin/contracts\": \"5.1.0\",\n    \"dotenv\": \"16.5.0\"\n  }\n}\n"
  },
  {
    "path": "09-Token-swap-Dapp/scripts/deploy.js",
    "content": "const { ethers } = require(\"hardhat\");\n\nasync function main() {\n  const [deployer] = await ethers.getSigners();\n\n  console.log(\"Deploying contracts with the account:\", deployer.address);\n\n  const ERC20 = await ethers.getContractFactory(\"Token\");\n  const usdt = await ERC20.deploy(\"usdt\", \"USDT\");\n  const usdc = await ERC20.deploy(\"usdc\", \"USDC\");\n\n  const fee = 10;\n\n  const Swap = await ethers.getContractFactory(\"Swap\");\n  const swap = await Swap.deploy(fee);\n\n  console.log(\"Contracts deployed:\");\n  console.log(\"Swap Contract:\", await swap.getAddress());\n  console.log(\"usdt Token:\", await usdt.getAddress());\n  console.log(\"usdc Token:\", await usdc.getAddress());\n\n  const swapContractAddr = await swap.getAddress();\n\n  await usdt.approve(swapContractAddr, ethers.parseEther(\"100\"));\n  await usdt.transfer(swapContractAddr, ethers.parseEther(\"100\"));\n  await usdc.approve(swapContractAddr, ethers.parseEther(\"100\"));\n  await usdc.transfer(swapContractAddr, ethers.parseEther(\"100\"));\n}\n\nmain()\n  .then(() => process.exit(0))\n  .catch((error) => {\n    console.error(error);\n    process.exit(1);\n  });\n"
  },
  {
    "path": "09-Token-swap-Dapp/test/Swap.js",
    "content": ""
  },
  {
    "path": "10-Advanced-Stake-Dapp/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/.eslintrc.json",
    "content": "{\n  \"extends\": [\"next/core-web-vitals\", \"next/typescript\"]\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# env files (can opt-in for commiting if needed)\n.env*\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/README.md",
    "content": "This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n  :root {\n    /* Cream-based color palette for light mode */\n    --background: 48 33% 94%; /* Cream background #F5F2E3 */\n    --foreground: 240 10% 3.9%;\n    --card: 48 30% 96%; /* Slightly lighter cream for cards #F8F6EA */\n    --card-foreground: 240 10% 3.9%;\n    --popover: 48 30% 96%;\n    --popover-foreground: 240 10% 3.9%;\n    --primary: 240 5.9% 10%;\n    --primary-foreground: 0 0% 98%;\n    --secondary: 48 16% 90%; /* Muted cream for secondary elements #EBE7D9 */\n    --secondary-foreground: 240 5.9% 10%;\n    --muted: 48 16% 90%;\n    --muted-foreground: 240 3.8% 46.1%;\n    --accent: 43 74% 49%; /* Gold accent #DAA520 */\n    --accent-foreground: 0 0% 98%;\n    --destructive: 0 84.2% 60.2%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 48 16% 85%; /* Cream border #E5E0CE */\n    --input: 48 16% 85%;\n    --ring: 43 74% 49%; /* Gold ring */\n    --radius: 0.5rem;\n  }\n\n  .dark {\n    --background: 240 10% 3.9%; /* Keep dark mode as is */\n    --foreground: 0 0% 98%;\n    --card: 240 10% 3.9%;\n    --card-foreground: 0 0% 98%;\n    --popover: 240 10% 3.9%;\n    --popover-foreground: 0 0% 98%;\n    --primary: 0 0% 98%;\n    --primary-foreground: 240 5.9% 10%;\n    --secondary: 240 3.7% 15.9%;\n    --secondary-foreground: 0 0% 98%;\n    --muted: 240 3.7% 15.9%;\n    --muted-foreground: 240 5% 64.9%;\n    --accent: 43 74% 49%; /* Keep gold accent in dark mode */\n    --accent-foreground: 0 0% 98%;\n    --destructive: 0 62.8% 30.6%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 3.7% 15.9%;\n    --input: 240 3.7% 15.9%;\n    --ring: 240 4.9% 83.9%;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/app/layout.tsx",
    "content": "import type React from \"react\"\nimport type { Metadata } from \"next\"\nimport { Inter } from \"next/font/google\"\nimport \"./globals.css\"\nimport { ThemeProvider } from \"@/components/theme-provider\"\nimport { WalletProvider } from \"@/components/wallet-provider\"\nimport { Toaster } from \"@/components/ui/toaster\"\n\nconst inter = Inter({ subsets: [\"latin\"] })\n\nexport const metadata: Metadata = {\n  title: \"Staking dApp\",\n  description: \"Stake your tokens and earn rewards\",\n}\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode\n}>) {\n  return (\n    <html lang=\"en\" suppressHydrationWarning>\n      <body className={inter.className}>\n        <ThemeProvider attribute=\"class\" defaultTheme=\"system\" enableSystem disableTransitionOnChange>\n          <WalletProvider>\n            {children}\n            <Toaster />\n          </WalletProvider>\n        </ThemeProvider>\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/app/page.tsx",
    "content": "import { StakingDashboard } from \"@/components/staking-dashboard\"\n\nexport default function Home() {\n  return (\n    <main className=\"min-h-screen bg-background text-foreground\">\n      <StakingDashboard />\n    </main>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/connect-wallet.tsx",
    "content": "\"use client\"\n\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { Button } from \"@/components/ui/button\"\nimport { Wallet, LogOut, Loader2 } from \"lucide-react\"\n\nexport const ConnectWallet = () => {\n  const { isConnected, isConnecting, connect, disconnect } = useWallet()\n\n  return isConnected ? (\n    <Button\n      variant=\"outline\"\n      size=\"sm\"\n      onClick={disconnect}\n      className=\"border-gray-300 dark:border-gray-700 hover:bg-gray-100 dark:hover:bg-gray-800\"\n    >\n      <LogOut className=\"h-4 w-4 mr-2\" />\n      Disconnect\n    </Button>\n  ) : (\n    <Button onClick={connect} disabled={isConnecting} className=\"bg-[#DAA520] hover:bg-[#B8860B] text-white\">\n      {isConnecting ? (\n        <>\n          <Loader2 className=\"h-4 w-4 mr-2 animate-spin\" />\n          Connecting...\n        </>\n      ) : (\n        <>\n          <Wallet className=\"h-4 w-4 mr-2\" />\n          Connect Wallet\n        </>\n      )}\n    </Button>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/global-overview.tsx",
    "content": "\"use client\"\n\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { InfoTooltip } from \"@/components/info-tooltip\"\nimport { TrendingUp, Users, Clock } from \"lucide-react\"\n\nexport const GlobalOverview = () => {\n  // In a real app, these would come from your contract or API\n  const totalStaked = \"1,245,678.45\"\n  const totalStakers = \"3,721\"\n  const apy = \"12.5\"\n  const lockupPeriod = \"30 days\"\n\n  return (\n    <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6 mt-8\">\n      <Card>\n        <CardHeader className=\"pb-2\">\n          <CardTitle className=\"text-lg flex items-center\">\n            Total Value Staked\n            <InfoTooltip content=\"The total amount of tokens staked across all users on the platform\" />\n          </CardTitle>\n          <CardDescription>Platform-wide staking</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <div className=\"flex items-center\">\n            <span className=\"text-3xl font-bold text-[#DAA520]\">{totalStaked}</span>\n            <span className=\"ml-2 text-muted-foreground\">ETH</span>\n          </div>\n          <div className=\"flex items-center mt-2 text-sm text-green-600 dark:text-green-400\">\n            <TrendingUp className=\"h-4 w-4 mr-1\" />\n            <span>+5.2% from last week</span>\n          </div>\n        </CardContent>\n      </Card>\n\n      <Card>\n        <CardHeader className=\"pb-2\">\n          <CardTitle className=\"text-lg flex items-center\">\n            Annual Percentage Yield\n            <InfoTooltip content=\"The annual rate of return on your staked tokens, expressed as a percentage\" />\n          </CardTitle>\n          <CardDescription>Current reward rate</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <div className=\"flex items-center\">\n            <span className=\"text-3xl font-bold text-[#DAA520]\">{apy}%</span>\n          </div>\n          <div className=\"mt-2 text-sm text-muted-foreground\">Rewards distributed daily</div>\n        </CardContent>\n      </Card>\n\n      <Card>\n        <CardHeader className=\"pb-2\">\n          <CardTitle className=\"text-lg flex items-center\">\n            Platform Statistics\n            <InfoTooltip content=\"Key metrics about the staking platform\" />\n          </CardTitle>\n          <CardDescription>Active stakers and lockup period</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <div className=\"grid grid-cols-2 gap-4\">\n            <div>\n              <div className=\"flex items-center text-sm text-muted-foreground\">\n                <Users className=\"h-4 w-4 mr-1\" />\n                <span>Total Stakers</span>\n              </div>\n              <div className=\"text-xl font-semibold mt-1\">{totalStakers}</div>\n            </div>\n            <div>\n              <div className=\"flex items-center text-sm text-muted-foreground\">\n                <Clock className=\"h-4 w-4 mr-1\" />\n                <span>Lockup Period</span>\n                <InfoTooltip content=\"The minimum time your tokens must remain staked before withdrawal without penalty\" />\n              </div>\n              <div className=\"text-xl font-semibold mt-1\">{lockupPeriod}</div>\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/header.tsx",
    "content": "\"use client\"\n\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { ConnectWallet } from \"@/components/connect-wallet\"\nimport { ModeToggle } from \"@/components/mode-toggle\"\nimport { Coins } from \"lucide-react\"\n\nexport const Header = () => {\n  const { isConnected, address, balance } = useWallet()\n\n  return (\n    <header className=\"flex flex-col sm:flex-row justify-between items-center py-6\">\n      <div className=\"flex items-center mb-4 sm:mb-0\">\n        <Coins className=\"h-8 w-8 text-[#DAA520] mr-2\" />\n        <h1 className=\"text-2xl font-bold\">Staking dApp</h1>\n      </div>\n\n      <div className=\"flex items-center space-x-4\">\n        {isConnected && (\n          <div className=\"hidden md:flex items-center px-4 py-2 bg-gray-100 dark:bg-gray-800 rounded-lg\">\n            <span className=\"text-sm font-medium mr-2\">\n              {address?.substring(0, 6)}...{address?.substring(38)}\n            </span>\n            <span className=\"text-sm text-gray-500 dark:text-gray-400\">\n              {Number.parseFloat(balance).toFixed(4)} ETH\n            </span>\n          </div>\n        )}\n\n        <ConnectWallet />\n        <ModeToggle />\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/info-tooltip.tsx",
    "content": "\"use client\"\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/ui/tooltip\"\nimport { Info } from \"lucide-react\"\n\ninterface InfoTooltipProps {\n  content: string\n}\n\nexport const InfoTooltip = ({ content }: InfoTooltipProps) => {\n  return (\n    <TooltipProvider>\n      <Tooltip delayDuration={300}>\n        <TooltipTrigger asChild>\n          <button className=\"ml-1.5 inline-flex items-center justify-center rounded-full p-1 text-gray-500 hover:bg-gray-100 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-50\">\n            <Info className=\"h-3.5 w-3.5\" />\n            <span className=\"sr-only\">Info</span>\n          </button>\n        </TooltipTrigger>\n        <TooltipContent className=\"max-w-xs text-sm\">{content}</TooltipContent>\n      </Tooltip>\n    </TooltipProvider>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/mode-toggle.tsx",
    "content": "\"use client\"\nimport { Moon, Sun } from \"lucide-react\"\nimport { useTheme } from \"next-themes\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"@/components/ui/dropdown-menu\"\n\nexport function ModeToggle() {\n  const { setTheme } = useTheme()\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\" size=\"icon\" className=\"border-gray-300 dark:border-gray-700\">\n          <Sun className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n          <Moon className=\"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n          <span className=\"sr-only\">Toggle theme</span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuItem onClick={() => setTheme(\"light\")}>Light</DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"dark\")}>Dark</DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"system\")}>System</DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/stake-form.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { InfoTooltip } from \"@/components/info-tooltip\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { ArrowRight, Loader2 } from \"lucide-react\"\nimport { useStakingContract } from \"@/hooks/use-staking-contract\"\n\nexport const StakeForm = () => {\n  const { balance } = useWallet()\n  const { toast } = useToast()\n  const [amount, setAmount] = useState(\"\")\n  const [isStaking, setIsStaking] = useState(false)\n  const [error, setError] = useState(\"\")\n  const {stake} = useStakingContract();\n\n  const handleAmountChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const value = e.target.value\n\n    // Allow only numbers and decimals\n    if (value === \"\" || /^\\d*\\.?\\d*$/.test(value)) {\n      setAmount(value)\n\n      // Validate amount\n      if (value !== \"\") {\n        const numValue = Number.parseFloat(value)\n        const numBalance = Number.parseFloat(balance)\n\n        if (numValue <= 0) {\n          setError(\"Amount must be greater than 0\")\n        } else if (numValue > numBalance) {\n          setError(\"Insufficient balance\")\n        } else {\n          setError(\"\")\n        }\n      } else {\n        setError(\"\")\n      }\n    }\n  }\n\n  const handleMaxClick = () => {\n    // Set to 95% of balance to account for gas fees\n    const maxAmount = (Number.parseFloat(balance) * 0.95).toFixed(6)\n    setAmount(maxAmount)\n    setError(\"\")\n  }\n\n  const handleStake = async () => {\n    if (!amount || Number.parseFloat(amount) <= 0) {\n      setError(\"Please enter a valid amount\")\n      return\n    }\n\n    try {\n      setIsStaking(true)\n\n      // Simulate staking delay\n      // await new Promise((resolve) => setTimeout(resolve, 2000))\n      await stake(amount);\n\n      // In a real app, you would call your staking contract here\n\n      toast({\n        title: \"Tokens staked successfully\",\n        description: `You have staked ${amount} ETH`,\n      })\n\n      setAmount(\"\")\n    } catch (error) {\n      console.error(\"Staking error:\", error)\n      toast({\n        title: \"Staking failed\",\n        description: \"There was an error while staking your tokens. Please try again.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsStaking(false)\n    }\n  }\n\n  return (\n    <Card className=\"max-w-md mx-auto\">\n      <CardHeader>\n        <CardTitle className=\"text-xl\">Stake Your Tokens</CardTitle>\n        <CardDescription>Stake your ETH to earn rewards at 12.5% APY</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <div className=\"space-y-4\">\n          <div>\n            <div className=\"flex justify-between mb-2\">\n              <label htmlFor=\"amount\" className=\"text-sm font-medium flex items-center\">\n                Amount to Stake\n                <InfoTooltip content=\"The amount of ETH you want to stake. You can stake any amount above 0.\" />\n              </label>\n              <span className=\"text-sm text-muted-foreground\">\n                Balance: {Number.parseFloat(balance).toFixed(4)} ETH\n              </span>\n            </div>\n            <div className=\"relative\">\n              <Input\n                id=\"amount\"\n                type=\"text\"\n                placeholder=\"0.0\"\n                value={amount}\n                onChange={handleAmountChange}\n                className={`pr-16 ${error ? \"border-red-500 focus-visible:ring-red-500\" : \"\"}`}\n                aria-invalid={!!error}\n                aria-describedby={error ? \"amount-error\" : undefined}\n              />\n              <Button\n                type=\"button\"\n                variant=\"ghost\"\n                size=\"sm\"\n                className=\"absolute right-1 top-1 h-8 text-[#DAA520] hover:text-[#B8860B] hover:bg-transparent\"\n                onClick={handleMaxClick}\n              >\n                MAX\n              </Button>\n            </div>\n            {error && (\n              <p id=\"amount-error\" className=\"mt-1 text-sm text-red-500\">\n                {error}\n              </p>\n            )}\n          </div>\n\n          <div className=\"bg-secondary p-4 rounded-lg\">\n            <h4 className=\"text-sm font-medium mb-2 flex items-center\">\n              Staking Summary\n              <InfoTooltip content=\"A summary of your staking transaction and expected rewards\" />\n            </h4>\n            <div className=\"space-y-2 text-sm\">\n              <div className=\"flex justify-between\">\n                <span className=\"text-muted-foreground\">You will stake:</span>\n                <span>{amount || \"0\"} ETH</span>\n              </div>\n              <div className=\"flex justify-between\">\n                <span className=\"text-muted-foreground\">Lockup period:</span>\n                <span>30 days</span>\n              </div>\n              <div className=\"flex justify-between\">\n                <span className=\"text-muted-foreground\">Estimated APY:</span>\n                <span className=\"text-[#DAA520]\">12.5%</span>\n              </div>\n              <div className=\"flex justify-between border-t border-border pt-2 mt-2\">\n                <span className=\"text-muted-foreground\">Estimated rewards (30 days):</span>\n                <span className=\"font-medium\">\n                  {amount ? ((Number.parseFloat(amount) * 0.125) / 12).toFixed(6) : \"0\"} ETH\n                </span>\n              </div>\n            </div>\n          </div>\n        </div>\n      </CardContent>\n      <CardFooter>\n        <Button\n          onClick={handleStake}\n          disabled={isStaking || !!error || !amount}\n          className=\"w-full bg-[#DAA520] hover:bg-[#B8860B] text-white transition-all duration-200\"\n        >\n          {isStaking ? (\n            <>\n              <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n              Staking...\n            </>\n          ) : (\n            <>\n              Stake Tokens\n              <ArrowRight className=\"ml-2 h-4 w-4\" />\n            </>\n          )}\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/staker-directory.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { InfoTooltip } from \"@/components/info-tooltip\"\nimport { Search, ArrowUpDown, ExternalLink } from \"lucide-react\"\n\n// Mock data for stakers\nconst MOCK_STAKERS = [\n  { address: \"0x1234...5678\", staked: \"125.45\", since: \"30 days ago\", rewards: \"4.21\" },\n  { address: \"0xabcd...efgh\", staked: \"78.32\", since: \"25 days ago\", rewards: \"2.61\" },\n  { address: \"0x7890...1234\", staked: \"256.78\", since: \"45 days ago\", rewards: \"9.63\" },\n  { address: \"0xijkl...mnop\", staked: \"42.19\", since: \"15 days ago\", rewards: \"1.05\" },\n  { address: \"0x5678...9012\", staked: \"189.67\", since: \"60 days ago\", rewards: \"7.89\" },\n  { address: \"0xqrst...uvwx\", staked: \"63.41\", since: \"20 days ago\", rewards: \"1.58\" },\n  { address: \"0x3456...7890\", staked: \"95.23\", since: \"35 days ago\", rewards: \"3.47\" },\n  { address: \"0xyzab...cdef\", staked: \"112.87\", since: \"40 days ago\", rewards: \"4.71\" },\n]\n\ntype SortField = \"staked\" | \"since\" | \"rewards\"\ntype SortDirection = \"asc\" | \"desc\"\n\nexport const StakerDirectory = () => {\n  const [searchTerm, setSearchTerm] = useState(\"\")\n  const [sortField, setSortField] = useState<SortField>(\"staked\")\n  const [sortDirection, setSortDirection] = useState<SortDirection>(\"desc\")\n\n  const handleSort = (field: SortField) => {\n    if (sortField === field) {\n      setSortDirection(sortDirection === \"asc\" ? \"desc\" : \"asc\")\n    } else {\n      setSortField(field)\n      setSortDirection(\"desc\")\n    }\n  }\n\n  const filteredStakers = MOCK_STAKERS.filter((staker) =>\n    staker.address.toLowerCase().includes(searchTerm.toLowerCase()),\n  )\n\n  const sortedStakers = [...filteredStakers].sort((a, b) => {\n    let comparison = 0\n\n    if (sortField === \"staked\") {\n      comparison = Number.parseFloat(a.staked) - Number.parseFloat(b.staked)\n    } else if (sortField === \"rewards\") {\n      comparison = Number.parseFloat(a.rewards) - Number.parseFloat(b.rewards)\n    } else if (sortField === \"since\") {\n      // Extract the number of days\n      const daysA = Number.parseInt(a.since.split(\" \")[0])\n      const daysB = Number.parseInt(b.since.split(\" \")[0])\n      comparison = daysA - daysB\n    }\n\n    return sortDirection === \"asc\" ? comparison : -comparison\n  })\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle className=\"text-xl flex items-center\">\n          Staker Directory\n          <InfoTooltip content=\"A list of all users who have staked tokens on the platform\" />\n        </CardTitle>\n        <CardDescription>View all stakers and their contributions</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <div className=\"flex flex-col sm:flex-row gap-4 mb-6\">\n          <div className=\"relative flex-1\">\n            <Search className=\"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground\" />\n            <Input\n              type=\"search\"\n              placeholder=\"Search by address...\"\n              className=\"pl-9\"\n              value={searchTerm}\n              onChange={(e) => setSearchTerm(e.target.value)}\n            />\n          </div>\n        </div>\n\n        <div className=\"rounded-md border\">\n          <div className=\"overflow-x-auto\">\n            <table className=\"w-full text-sm\">\n              <thead>\n                <tr className=\"bg-secondary border-b\">\n                  <th className=\"px-4 py-3 text-left font-medium\">Address</th>\n                  <th className=\"px-4 py-3 text-left font-medium cursor-pointer\" onClick={() => handleSort(\"staked\")}>\n                    <div className=\"flex items-center\">\n                      Amount Staked\n                      <ArrowUpDown className=\"ml-1 h-4 w-4\" />\n                    </div>\n                  </th>\n                  <th className=\"px-4 py-3 text-left font-medium cursor-pointer\" onClick={() => handleSort(\"since\")}>\n                    <div className=\"flex items-center\">\n                      Staking Since\n                      <ArrowUpDown className=\"ml-1 h-4 w-4\" />\n                    </div>\n                  </th>\n                  <th className=\"px-4 py-3 text-left font-medium cursor-pointer\" onClick={() => handleSort(\"rewards\")}>\n                    <div className=\"flex items-center\">\n                      Rewards Earned\n                      <ArrowUpDown className=\"ml-1 h-4 w-4\" />\n                    </div>\n                  </th>\n                  <th className=\"px-4 py-3 text-right font-medium\">Actions</th>\n                </tr>\n              </thead>\n              <tbody>\n                {sortedStakers.map((staker, index) => (\n                  <tr key={index} className=\"border-b last:border-0 hover:bg-secondary/50\">\n                    <td className=\"px-4 py-3 font-medium\">{staker.address}</td>\n                    <td className=\"px-4 py-3\">{staker.staked} ETH</td>\n                    <td className=\"px-4 py-3\">{staker.since}</td>\n                    <td className=\"px-4 py-3 text-[#DAA520]\">{staker.rewards} ETH</td>\n                    <td className=\"px-4 py-3 text-right\">\n                      <Button variant=\"ghost\" size=\"sm\" className=\"h-8 w-8 p-0\">\n                        <ExternalLink className=\"h-4 w-4\" />\n                        <span className=\"sr-only\">View on Explorer</span>\n                      </Button>\n                    </td>\n                  </tr>\n                ))}\n\n                {filteredStakers.length === 0 && (\n                  <tr>\n                    <td colSpan={5} className=\"px-4 py-8 text-center text-muted-foreground\">\n                      No stakers found matching your search.\n                    </td>\n                  </tr>\n                )}\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/staking-dashboard.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Header } from \"@/components/header\"\nimport { StakeForm } from \"@/components/stake-form\"\nimport { UserDashboard } from \"@/components/user-dashboard\"\nimport { GlobalOverview } from \"@/components/global-overview\"\nimport { StakerDirectory } from \"@/components/staker-directory\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { ConnectWallet } from \"@/components/connect-wallet\"\n\nexport const StakingDashboard = () => {\n  const { isConnected } = useWallet()\n  const [activeTab, setActiveTab] = useState<\"stake\" | \"dashboard\" | \"directory\">(\"stake\")\n\n  return (\n    <div className=\"container mx-auto px-4 py-8\">\n      <Header />\n\n      <GlobalOverview />\n\n      {!isConnected ? (\n        <div className=\"mt-10 flex flex-col items-center justify-center p-8 bg-gray-50 dark:bg-gray-900 rounded-xl\">\n          <h2 className=\"text-2xl font-bold mb-6\">Connect Your Wallet to Start Staking</h2>\n          <ConnectWallet />\n        </div>\n      ) : (\n        <>\n          <div className=\"flex border-b border-gray-200 dark:border-gray-800 mt-8\">\n            <button\n              className={`px-4 py-2 font-medium text-sm ${\n                activeTab === \"stake\"\n                  ? \"border-b-2 border-[#DAA520] text-[#DAA520]\"\n                  : \"text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200\"\n              }`}\n              onClick={() => setActiveTab(\"stake\")}\n            >\n              Stake Tokens\n            </button>\n            <button\n              className={`px-4 py-2 font-medium text-sm ${\n                activeTab === \"dashboard\"\n                  ? \"border-b-2 border-[#DAA520] text-[#DAA520]\"\n                  : \"text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200\"\n              }`}\n              onClick={() => setActiveTab(\"dashboard\")}\n            >\n              My Dashboard\n            </button>\n            <button\n              className={`px-4 py-2 font-medium text-sm ${\n                activeTab === \"directory\"\n                  ? \"border-b-2 border-[#DAA520] text-[#DAA520]\"\n                  : \"text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200\"\n              }`}\n              onClick={() => setActiveTab(\"directory\")}\n            >\n              Staker Directory\n            </button>\n          </div>\n\n          <div className=\"mt-6\">\n            {activeTab === \"stake\" && <StakeForm />}\n            {activeTab === \"dashboard\" && <UserDashboard />}\n            {activeTab === \"directory\" && <StakerDirectory />}\n          </div>\n        </>\n      )}\n    </div>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/staking-form.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Slider } from \"@/components/ui/slider\"\nimport { useToast } from \"@/components/ui/use-toast\"\nimport { InfoTooltip } from \"@/components/info-tooltip\"\nimport { Loader2 } from \"lucide-react\"\n\nexport function StakingForm() {\n  const { address, balance } = useWallet()\n  const [amount, setAmount] = useState(\"\")\n  const [isStaking, setIsStaking] = useState(false)\n  const { toast } = useToast()\n\n  const maxBalance = Number.parseFloat(balance || \"0\")\n  const amountValue = Number.parseFloat(amount || \"0\")\n  const isValidAmount = amountValue > 0 && amountValue <= maxBalance\n\n  const handleSliderChange = (value: number[]) => {\n    const percentage = value[0]\n    const calculatedAmount = ((maxBalance * percentage) / 100).toFixed(6)\n    setAmount(calculatedAmount)\n  }\n\n  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const value = e.target.value\n    // Allow only numbers and decimals\n    if (value === \"\" || /^\\d*\\.?\\d*$/.test(value)) {\n      setAmount(value)\n    }\n  }\n\n  const handleMaxClick = () => {\n    setAmount(maxBalance.toString())\n  }\n\n  const handleStake = async () => {\n    if (!isValidAmount) return\n\n    setIsStaking(true)\n\n    try {\n      // In a real app, this would call the staking contract\n      await new Promise((resolve) => setTimeout(resolve, 2000)) // Simulate transaction\n\n      toast({\n        title: \"Staking successful\",\n        description: `You have successfully staked ${amount} ETH`,\n      })\n\n      setAmount(\"\")\n    } catch (error) {\n      console.error(\"Staking error:\", error)\n      toast({\n        title: \"Staking failed\",\n        description: \"There was an error while staking your tokens. Please try again.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsStaking(false)\n    }\n  }\n\n  return (\n    <div className=\"space-y-4 pt-4\">\n      <div className=\"space-y-2\">\n        <div className=\"flex justify-between items-center\">\n          <Label htmlFor=\"stake-amount\" className=\"flex items-center\">\n            Amount to Stake\n            <InfoTooltip content=\"The amount of ETH you want to stake. This will be locked in the staking contract.\" />\n          </Label>\n          <span className=\"text-sm text-muted-foreground\">Balance: {maxBalance.toFixed(4)} ETH</span>\n        </div>\n\n        <div className=\"flex space-x-2\">\n          <Input\n            id=\"stake-amount\"\n            type=\"text\"\n            placeholder=\"0.0\"\n            value={amount}\n            onChange={handleInputChange}\n            className={`${!isValidAmount && amount ? \"border-red-500 focus-visible:ring-red-500\" : \"\"}`}\n          />\n          <Button variant=\"outline\" size=\"sm\" onClick={handleMaxClick} className=\"whitespace-nowrap\">\n            Max\n          </Button>\n        </div>\n\n        {!isValidAmount && amount && (\n          <p className=\"text-red-500 text-sm mt-1\">\n            {amountValue <= 0 ? \"Amount must be greater than 0\" : \"Amount exceeds your balance\"}\n          </p>\n        )}\n      </div>\n\n      <div className=\"space-y-2\">\n        <div className=\"flex justify-between text-sm\">\n          <span>0%</span>\n          <span>50%</span>\n          <span>100%</span>\n        </div>\n        <Slider defaultValue={[0]} max={100} step={1} onValueChange={handleSliderChange} className=\"[&>span]:bg-gold\" />\n      </div>\n\n      <div className=\"space-y-2\">\n        <div className=\"flex justify-between items-center\">\n          <Label className=\"flex items-center\">\n            Lockup Period\n            <InfoTooltip content=\"The period your tokens will be locked in the staking contract. You cannot withdraw before this period ends.\" />\n          </Label>\n          <span className=\"text-sm font-medium\">30 days</span>\n        </div>\n      </div>\n\n      <div className=\"pt-4\">\n        <Button\n          onClick={handleStake}\n          disabled={!isValidAmount || isStaking}\n          className=\"w-full bg-gold hover:bg-gold/90 text-white\"\n        >\n          {isStaking ? (\n            <>\n              <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n              Staking...\n            </>\n          ) : (\n            \"Stake\"\n          )}\n        </Button>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/theme-provider.tsx",
    "content": "\"use client\"\nimport { ThemeProvider as NextThemesProvider } from \"next-themes\"\nimport type { ThemeProviderProps } from \"next-themes/dist/types\"\n\nexport function ThemeProvider({ children, ...props }: ThemeProviderProps) {\n  return <NextThemesProvider {...props}>{children}</NextThemesProvider>\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/theme-toggle.tsx",
    "content": "\"use client\"\n\nimport { useTheme } from \"next-themes\"\nimport { Button } from \"@/components/ui/button\"\nimport { Moon, Sun } from \"lucide-react\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"@/components/ui/dropdown-menu\"\nimport { useEffect, useState } from \"react\"\n\nexport function ThemeToggle() {\n  const { setTheme, theme } = useTheme()\n  const [mounted, setMounted] = useState(false)\n\n  // Prevent hydration mismatch\n  useEffect(() => {\n    setMounted(true)\n  }, [])\n\n  if (!mounted) {\n    return (\n      <Button variant=\"outline\" size=\"icon\" className=\"w-9 h-9\">\n        <span className=\"sr-only\">Toggle theme</span>\n      </Button>\n    )\n  }\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\" size=\"icon\" className=\"w-9 h-9\">\n          <Sun className=\"h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n          <Moon className=\"absolute h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n          <span className=\"sr-only\">Toggle theme</span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuItem onClick={() => setTheme(\"light\")}>\n          <Sun className=\"mr-2 h-4 w-4\" />\n          <span>Light</span>\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"dark\")}>\n          <Moon className=\"mr-2 h-4 w-4\" />\n          <span>Dark</span>\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"system\")}>\n          <span className=\"mr-2\">💻</span>\n          <span>System</span>\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2\",\n        sm: \"h-8 rounded-md px-3 text-xs\",\n        lg: \"h-10 rounded-md px-8\",\n        icon: \"h-9 w-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\"\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-xl border bg-card text-card-foreground shadow\",\n      className\n    )}\n    {...props}\n  />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"font-semibold leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto\" />\n  </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n  DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuSubContent.displayName =\n  DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <DropdownMenuPrimitive.Portal>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n        className\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n  DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"px-2 py-1.5 text-sm font-semibold\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n      {...props}\n    />\n  )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/input.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n  \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n    VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn(labelVariants(), className)}\n    {...props}\n  />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/progress.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Progress = React.forwardRef<\n  React.ElementRef<typeof ProgressPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n  <ProgressPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\n      className\n    )}\n    {...props}\n  >\n    <ProgressPrimitive.Indicator\n      className=\"h-full w-full flex-1 bg-primary transition-all\"\n      style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n    />\n  </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Slider = React.forwardRef<\n  React.ElementRef<typeof SliderPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <SliderPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative flex w-full touch-none select-none items-center\",\n      className\n    )}\n    {...props}\n  >\n    <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n      <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n    </SliderPrimitive.Track>\n    <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n  </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cn(\n      \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n      className\n    )}\n    {...props}\n  />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\n      className\n    )}\n    {...props}\n  />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n      className\n    )}\n    {...props}\n  />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/toast.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Viewport>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Viewport\n    ref={ref}\n    className={cn(\n      \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n      className\n    )}\n    {...props}\n  />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n  \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n  {\n    variants: {\n      variant: {\n        default: \"border bg-background text-foreground\",\n        destructive:\n          \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nconst Toast = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Root>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n    VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n  return (\n    <ToastPrimitives.Root\n      ref={ref}\n      className={cn(toastVariants({ variant }), className)}\n      {...props}\n    />\n  )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Action>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Action\n    ref={ref}\n    className={cn(\n      \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n      className\n    )}\n    {...props}\n  />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Close>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Close\n    ref={ref}\n    className={cn(\n      \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n      className\n    )}\n    toast-close=\"\"\n    {...props}\n  >\n    <X className=\"h-4 w-4\" />\n  </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Title>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Title\n    ref={ref}\n    className={cn(\"text-sm font-semibold [&+div]:text-xs\", className)}\n    {...props}\n  />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Description>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Description\n    ref={ref}\n    className={cn(\"text-sm opacity-90\", className)}\n    {...props}\n  />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n  type ToastProps,\n  type ToastActionElement,\n  ToastProvider,\n  ToastViewport,\n  Toast,\n  ToastTitle,\n  ToastDescription,\n  ToastClose,\n  ToastAction,\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/toaster.tsx",
    "content": "\"use client\"\n\nimport { useToast } from \"@/hooks/use-toast\"\nimport {\n  Toast,\n  ToastClose,\n  ToastDescription,\n  ToastProvider,\n  ToastTitle,\n  ToastViewport,\n} from \"@/components/ui/toast\"\n\nexport function Toaster() {\n  const { toasts } = useToast()\n\n  return (\n    <ToastProvider>\n      {toasts.map(function ({ id, title, description, action, ...props }) {\n        return (\n          <Toast key={id} {...props}>\n            <div className=\"grid gap-1\">\n              {title && <ToastTitle>{title}</ToastTitle>}\n              {description && (\n                <ToastDescription>{description}</ToastDescription>\n              )}\n            </div>\n            {action}\n            <ToastClose />\n          </Toast>\n        )\n      })}\n      <ToastViewport />\n    </ToastProvider>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/ui/tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <TooltipPrimitive.Portal>\n    <TooltipPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]\",\n        className\n      )}\n      {...props}\n    />\n  </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/user-dashboard.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { InfoTooltip } from \"@/components/info-tooltip\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { Loader2, TrendingUp, Clock, Award, ArrowDownToLine } from \"lucide-react\"\nimport { Progress } from \"@/components/ui/progress\"\nimport { useStakingContract } from \"@/hooks/use-staking-contract\"\n\nexport const UserDashboard = () => {\n  const { toast } = useToast()\n  const [isWithdrawing, setIsWithdrawing] = useState(false)\n  const [isClaiming, setIsClaiming] = useState(false)\n  const [withdrawAmount, setWithdrawAmount] = useState(\"\")\n  const [withdrawError, setWithdrawError] = useState(\"\")\n  const {stakedBalance, rewards, withdraw, claimRewards} = useStakingContract()\n\n  // In a real app, these would come from your contract\n  // const stakedBalance = \"42.5\"\n  // const rewards = \"1.32\"\n  const stakingStartDate = \"2023-12-15\"\n  const lockupEndDate = \"2024-01-14\"\n  const daysRemaining = 5\n  const percentComplete = ((30 - daysRemaining) / 30) * 100\n\n  const handleWithdrawAmountChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const value = e.target.value\n\n    // Allow only numbers and decimals\n    if (value === \"\" || /^\\d*\\.?\\d*$/.test(value)) {\n      setWithdrawAmount(value)\n\n      // Validate amount\n      if (value !== \"\") {\n        const numValue = Number.parseFloat(value)\n        const numStaked = Number.parseFloat(stakedBalance)\n\n        if (numValue <= 0) {\n          setWithdrawError(\"Amount must be greater than 0\")\n        } else if (numValue > numStaked) {\n          setWithdrawError(\"Cannot withdraw more than staked amount\")\n        } else {\n          setWithdrawError(\"\")\n        }\n      } else {\n        setWithdrawError(\"\")\n      }\n    }\n  }\n\n  const handleMaxWithdraw = () => {\n    setWithdrawAmount(stakedBalance)\n    setWithdrawError(\"\")\n  }\n\n  const handleWithdraw = async () => {\n    if (!withdrawAmount || Number.parseFloat(withdrawAmount) <= 0) {\n      setWithdrawError(\"Please enter a valid amount\")\n      return\n    }\n\n    try {\n      setIsWithdrawing(true)\n      const withdrawValue = Number.parseFloat(withdrawAmount)\n\n      // Check if early withdrawal (before lockup period ends)\n      const isEarlyWithdrawal = daysRemaining > 0\n\n      if (isEarlyWithdrawal) {\n        // Calculate penalty (10% for early withdrawal)\n        const penalty = withdrawValue * 0.1\n        const amountAfterPenalty = withdrawValue - penalty\n\n        // Simulate withdrawal delay\n        // await new Promise((resolve) => setTimeout(resolve, 2000))\n        await withdraw(withdrawAmount)\n\n        // In a real app, you would call your staking contract here\n\n        toast({\n          title: \"Early withdrawal processed\",\n          description: `You have withdrawn ${amountAfterPenalty.toFixed(2)} ETH (10% penalty applied)`,\n        })\n      } else {\n\n        toast({\n          title: \"Withdrawal successful\",\n          description: `You have withdrawn ${withdrawAmount} ETH`,\n        })\n      }\n\n      window.dispatchEvent(new CustomEvent(\"withdraw\", {\n        detail: { withdrawAmount},\n      }));\n\n      // Reset the withdrawal amount after successful withdrawal\n      setWithdrawAmount(\"\")\n    } catch (error) {\n      console.error(\"Withdrawal error:\", error)\n      toast({\n        title: \"Withdrawal failed\",\n        description: \"There was an error while withdrawing your tokens. Please try again.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsWithdrawing(false)\n    }\n  }\n\n  const handleClaimRewards = async () => {\n    try {\n      setIsClaiming(true)\n\n      // Simulate claiming delay\n      // await new Promise((resolve) => setTimeout(resolve, 2000))\n\n      // In a real app, you would call your staking contract here\n\n      claimRewards()\n\n      toast({\n        title: \"Rewards claimed successfully\",\n        description: `You have claimed ${rewards} ETH in rewards`,\n      })\n    } catch (error) {\n      console.error(\"Claiming error:\", error)\n      toast({\n        title: \"Claiming failed\",\n        description: \"There was an error while claiming your rewards. Please try again.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsClaiming(false)\n    }\n  }\n\n  // Calculate the amount after penalty (if applicable)\n  const calculateAmountAfterPenalty = () => {\n    if (!withdrawAmount || Number.parseFloat(withdrawAmount) <= 0) return \"0\"\n\n    const withdrawValue = Number.parseFloat(withdrawAmount)\n    const isEarlyWithdrawal = daysRemaining > 0\n\n    if (isEarlyWithdrawal) {\n      const penalty = withdrawValue * 0.1\n      return (withdrawValue - penalty).toFixed(6)\n    }\n\n    return withdrawValue.toFixed(6)\n  }\n\n  return (\n    <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n      <Card>\n        <CardHeader>\n          <CardTitle className=\"text-xl flex items-center\">\n            My Staked Tokens\n            <InfoTooltip content=\"The total amount of tokens you have staked on the platform\" />\n          </CardTitle>\n          <CardDescription>Your active stake</CardDescription>\n        </CardHeader>\n        <CardContent className=\"pb-2\">\n          <div className=\"flex items-center\">\n            <span className=\"text-3xl font-bold text-[#DAA520]\">{stakedBalance}</span>\n            <span className=\"ml-2 text-muted-foreground\">ETH</span>\n          </div>\n\n          <div className=\"mt-4 space-y-3\">\n            <div>\n              <div className=\"flex justify-between text-sm mb-1\">\n                <span className=\"text-muted-foreground flex items-center\">\n                  <Clock className=\"h-4 w-4 mr-1\" />\n                  Lockup Period\n                </span>\n                <span>{daysRemaining} days remaining</span>\n              </div>\n              <Progress value={percentComplete} className=\"h-2\" />\n            </div>\n\n            <div className=\"grid grid-cols-2 gap-4 text-sm\">\n              <div>\n                <span className=\"text-muted-foreground\">Staked on</span>\n                <p>{stakingStartDate}</p>\n              </div>\n              <div>\n                <span className=\"text-muted-foreground\">Available on</span>\n                <p>{lockupEndDate}</p>\n              </div>\n            </div>\n\n            <div className=\"pt-4\">\n              <div className=\"flex justify-between mb-2\">\n                <label htmlFor=\"withdraw-amount\" className=\"text-sm font-medium flex items-center\">\n                  Withdrawal Amount\n                  <InfoTooltip content=\"The amount of ETH you want to withdraw from your staked tokens\" />\n                </label>\n                <span className=\"text-sm text-muted-foreground\">Available: {stakedBalance} ETH</span>\n              </div>\n              <div className=\"relative\">\n                <Input\n                  id=\"withdraw-amount\"\n                  type=\"text\"\n                  placeholder=\"0.0\"\n                  value={withdrawAmount}\n                  onChange={handleWithdrawAmountChange}\n                  className={`pr-16 ${withdrawError ? \"border-red-500 focus-visible:ring-red-500\" : \"\"}`}\n                  aria-invalid={!!withdrawError}\n                  aria-describedby={withdrawError ? \"withdraw-error\" : undefined}\n                />\n                <Button\n                  type=\"button\"\n                  variant=\"ghost\"\n                  size=\"sm\"\n                  className=\"absolute right-1 top-1 h-8 text-[#DAA520] hover:text-[#B8860B] hover:bg-transparent\"\n                  onClick={handleMaxWithdraw}\n                >\n                  MAX\n                </Button>\n              </div>\n              {withdrawError && (\n                <p id=\"withdraw-error\" className=\"mt-1 text-sm text-red-500\">\n                  {withdrawError}\n                </p>\n              )}\n\n              {daysRemaining > 0 && withdrawAmount && !withdrawError && (\n                <div className=\"mt-2 text-sm\">\n                  <div className=\"flex justify-between\">\n                    <span className=\"text-muted-foreground\">Withdrawal amount:</span>\n                    <span>{withdrawAmount} ETH</span>\n                  </div>\n                  <div className=\"flex justify-between\">\n                    <span className=\"text-muted-foreground\">Early withdrawal penalty (10%):</span>\n                    <span className=\"text-amber-600 dark:text-amber-400\">\n                      {(Number.parseFloat(withdrawAmount) * 0.1).toFixed(6)} ETH\n                    </span>\n                  </div>\n                  <div className=\"flex justify-between font-medium\">\n                    <span>You will receive:</span>\n                    <span>{calculateAmountAfterPenalty()} ETH</span>\n                  </div>\n                </div>\n              )}\n            </div>\n          </div>\n        </CardContent>\n        <CardFooter className=\"flex flex-col gap-4\">\n          <Button\n            onClick={handleWithdraw}\n            disabled={isWithdrawing || !!withdrawError || !withdrawAmount}\n            className=\"w-full bg-[#DAA520] hover:bg-[#B8860B] text-white\"\n          >\n            {isWithdrawing ? (\n              <>\n                <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                Withdrawing...\n              </>\n            ) : daysRemaining > 0 ? (\n              <>\n                <ArrowDownToLine className=\"mr-2 h-4 w-4\" />\n                Withdraw Early (10% Penalty)\n              </>\n            ) : (\n              <>\n                <ArrowDownToLine className=\"mr-2 h-4 w-4\" />\n                Withdraw Tokens\n              </>\n            )}\n          </Button>\n\n          {daysRemaining > 0 && (\n            <div className=\"text-sm text-amber-600 dark:text-amber-400 text-center\">\n              <InfoTooltip content=\"Early withdrawal incurs a 10% penalty on your withdrawn amount\" />\n              <span>Lockup period not complete. Early withdrawal will incur a 10% penalty.</span>\n            </div>\n          )}\n        </CardFooter>\n      </Card>\n\n      <Card>\n        <CardHeader>\n          <CardTitle className=\"text-xl flex items-center\">\n            My Rewards\n            <InfoTooltip content=\"The rewards you have earned from staking your tokens\" />\n          </CardTitle>\n          <CardDescription>Accumulated earnings</CardDescription>\n        </CardHeader>\n        <CardContent className=\"pb-2\">\n          <div className=\"flex items-center\">\n            <span className=\"text-3xl font-bold text-[#DAA520]\">{rewards}</span>\n            <span className=\"ml-2 text-muted-foreground\">ETH</span>\n          </div>\n\n          <div className=\"mt-4 space-y-4\">\n            <div className=\"flex items-center text-sm text-green-600 dark:text-green-400\">\n              <TrendingUp className=\"h-4 w-4 mr-1\" />\n              <span>+0.05 ETH earned today</span>\n            </div>\n\n            <div className=\"bg-secondary p-4 rounded-lg\">\n              <h4 className=\"text-sm font-medium mb-2\">Reward Statistics</h4>\n              <div className=\"grid grid-cols-2 gap-4 text-sm\">\n                <div>\n                  <span className=\"text-muted-foreground\">Daily rate</span>\n                  <p>0.05 ETH</p>\n                </div>\n                <div>\n                  <span className=\"text-muted-foreground\">Monthly estimate</span>\n                  <p>1.5 ETH</p>\n                </div>\n                <div>\n                  <span className=\"text-muted-foreground\">APY</span>\n                  <p className=\"text-[#DAA520]\">12.5%</p>\n                </div>\n                <div>\n                  <span className=\"text-muted-foreground\">Next reward</span>\n                  <p>In 24 hours</p>\n                </div>\n              </div>\n            </div>\n          </div>\n        </CardContent>\n        <CardFooter>\n          <Button\n            onClick={handleClaimRewards}\n            disabled={isClaiming || Number.parseFloat(rewards) <= 0}\n            className=\"w-full bg-[#DAA520] hover:bg-[#B8860B] text-white\"\n          >\n            {isClaiming ? (\n              <>\n                <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                Claiming...\n              </>\n            ) : (\n              <>\n                <Award className=\"mr-2 h-4 w-4\" />\n                Claim Rewards\n              </>\n            )}\n          </Button>\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/user-list.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { useState, useEffect } from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Search, ArrowUpDown } from \"lucide-react\"\n\ntype Staker = {\n  address: string\n  amount: number\n  since: string\n}\n\nexport function UserList() {\n  const [stakers, setStakers] = useState<Staker[]>([])\n  const [searchQuery, setSearchQuery] = useState(\"\")\n  const [sortOrder, setSortOrder] = useState<\"asc\" | \"desc\">(\"desc\")\n\n  // In a real app, this would fetch data from the blockchain\n  useEffect(() => {\n    // Mock data\n    const mockStakers: Staker[] = [\n      { address: \"0x1234...5678\", amount: 245.5, since: \"2 months ago\" },\n      { address: \"0xabcd...efgh\", amount: 120.3, since: \"1 month ago\" },\n      { address: \"0x9876...5432\", amount: 89.7, since: \"3 weeks ago\" },\n      { address: \"0xijkl...mnop\", amount: 56.2, since: \"2 weeks ago\" },\n      { address: \"0x2468...1357\", amount: 34.8, since: \"1 week ago\" },\n      { address: \"0xqrst...uvwx\", amount: 23.5, since: \"3 days ago\" },\n      { address: \"0x1357...2468\", amount: 12.1, since: \"1 day ago\" },\n    ]\n\n    setStakers(mockStakers)\n  }, [])\n\n  const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => {\n    setSearchQuery(e.target.value)\n  }\n\n  const toggleSortOrder = () => {\n    setSortOrder(sortOrder === \"asc\" ? \"desc\" : \"asc\")\n  }\n\n  const filteredStakers = stakers.filter((staker) => staker.address.toLowerCase().includes(searchQuery.toLowerCase()))\n\n  const sortedStakers = [...filteredStakers].sort((a, b) => {\n    return sortOrder === \"asc\" ? a.amount - b.amount : b.amount - a.amount\n  })\n\n  return (\n    <Card>\n      <CardHeader>\n        <CardTitle className=\"text-gold\">Top Stakers</CardTitle>\n        <CardDescription>Users with the highest stakes</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <div className=\"space-y-4\">\n          <div className=\"flex items-center space-x-2\">\n            <div className=\"relative flex-1\">\n              <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n              <Input placeholder=\"Search address\" value={searchQuery} onChange={handleSearch} className=\"pl-8\" />\n            </div>\n            <Button\n              variant=\"outline\"\n              size=\"icon\"\n              onClick={toggleSortOrder}\n              title={`Sort by amount ${sortOrder === \"asc\" ? \"ascending\" : \"descending\"}`}\n            >\n              <ArrowUpDown className=\"h-4 w-4\" />\n            </Button>\n          </div>\n\n          <div className=\"space-y-2\">\n            {sortedStakers.length > 0 ? (\n              sortedStakers.map((staker, index) => (\n                <div key={index} className=\"flex justify-between items-center p-2 rounded-md hover:bg-muted\">\n                  <div className=\"flex flex-col\">\n                    <span className=\"font-medium\">{staker.address}</span>\n                    <span className=\"text-xs text-muted-foreground\">{staker.since}</span>\n                  </div>\n                  <span className=\"font-medium text-gold\">{staker.amount.toFixed(2)} ETH</span>\n                </div>\n              ))\n            ) : (\n              <p className=\"text-center py-4 text-muted-foreground\">No stakers found</p>\n            )}\n          </div>\n        </div>\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/user-stats.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { Progress } from \"@/components/ui/progress\"\nimport { InfoTooltip } from \"@/components/info-tooltip\"\n\nexport function UserStats() {\n  // In a real app, these would come from the staking contract\n  const [stakedAmount, setStakedAmount] = useState(1.5)\n  const [rewards, setRewards] = useState(0.125)\n  const [timeRemaining, setTimeRemaining] = useState(18) // days\n  const totalLockupPeriod = 30 // days\n\n  // Simulate rewards accruing in real-time\n  useEffect(() => {\n    const interval = setInterval(() => {\n      setRewards((prev) => {\n        const increase = 0.000001 * Math.random()\n        return Number.parseFloat((prev + increase).toFixed(6))\n      })\n    }, 5000)\n\n    return () => clearInterval(interval)\n  }, [])\n\n  const lockupProgress = Math.min(100, ((totalLockupPeriod - timeRemaining) / totalLockupPeriod) * 100)\n\n  return (\n    <div className=\"space-y-6\">\n      <div className=\"space-y-2\">\n        <div className=\"flex justify-between\">\n          <span className=\"text-sm flex items-center\">\n            Your Stake\n            <InfoTooltip content=\"The total amount of tokens you have staked\" />\n          </span>\n          <span className=\"font-medium\">{stakedAmount.toFixed(4)} ETH</span>\n        </div>\n        <div className=\"flex justify-between\">\n          <span className=\"text-sm flex items-center\">\n            Earned Rewards\n            <InfoTooltip content=\"The rewards you have earned on your staked tokens\" />\n          </span>\n          <span className=\"font-medium text-gold\">{rewards.toFixed(6)} ETH</span>\n        </div>\n      </div>\n\n      <div className=\"space-y-2\">\n        <div className=\"flex justify-between\">\n          <span className=\"text-sm flex items-center\">\n            Lockup Period\n            <InfoTooltip content=\"The remaining time until you can withdraw your staked tokens\" />\n          </span>\n          <span className=\"font-medium\">{timeRemaining} days left</span>\n        </div>\n        <Progress value={lockupProgress} className=\"h-2 [&>div]:bg-gold\" />\n        <div className=\"flex justify-between text-xs text-muted-foreground\">\n          <span>0 days</span>\n          <span>{totalLockupPeriod} days</span>\n        </div>\n      </div>\n\n      <div className=\"pt-2\">\n        <div className=\"rounded-md bg-muted p-3\">\n          <div className=\"flex justify-between text-sm\">\n            <span>Estimated APY:</span>\n            <span className=\"font-medium text-gold\">12.5%</span>\n          </div>\n          <div className=\"flex justify-between text-sm mt-1\">\n            <span>Projected Annual Earnings:</span>\n            <span className=\"font-medium\">{(stakedAmount * 0.125).toFixed(4)} ETH</span>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/wallet-connect.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { Button } from \"@/components/ui/button\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"@/components/ui/dropdown-menu\"\nimport { Loader2, Wallet, LogOut, Copy, ExternalLink } from \"lucide-react\"\nimport { useToast } from \"@/components/ui/use-toast\"\n\nexport function WalletConnect() {\n  const { address, balance, chainId, isConnected, isConnecting, connectWallet, disconnectWallet } = useWallet()\n  const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n  const { toast } = useToast()\n\n  const truncateAddress = (address: string) => {\n    return `${address.slice(0, 6)}...${address.slice(-4)}`\n  }\n\n  const copyToClipboard = (text: string) => {\n    navigator.clipboard.writeText(text)\n    toast({\n      title: \"Address copied\",\n      description: \"Wallet address copied to clipboard\",\n    })\n  }\n\n  const openExplorer = (address: string) => {\n    // This would need to be updated based on the actual chain\n    const explorerUrl =\n      chainId === 1 ? `https://etherscan.io/address/${address}` : `https://testnet.etherscan.io/address/${address}`\n    window.open(explorerUrl, \"_blank\")\n  }\n\n  if (isConnected && address) {\n    return (\n      <DropdownMenu open={isDropdownOpen} onOpenChange={setIsDropdownOpen}>\n        <DropdownMenuTrigger asChild>\n          <Button\n            variant=\"outline\"\n            className=\"border-gold hover:border-gold/80 text-gold hover:text-gold/80 font-medium\"\n          >\n            <Wallet className=\"mr-2 h-4 w-4\" />\n            {truncateAddress(address)}\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\" className=\"w-56\">\n          <div className=\"p-2\">\n            <p className=\"text-sm font-medium\">Connected Wallet</p>\n            <p className=\"text-xs text-muted-foreground mt-1\">{address}</p>\n            <p className=\"text-xs mt-2\">\n              Balance: <span className=\"font-medium\">{Number.parseFloat(balance || \"0\").toFixed(4)} ETH</span>\n            </p>\n            <p className=\"text-xs mt-1\">\n              Network:{\" \"}\n              <span className=\"font-medium\">\n                {chainId === 1 ? \"Ethereum\" : chainId === 5 ? \"Goerli\" : `Chain ID: ${chainId}`}\n              </span>\n            </p>\n          </div>\n          <DropdownMenuItem onClick={() => copyToClipboard(address)}>\n            <Copy className=\"mr-2 h-4 w-4\" />\n            <span>Copy Address</span>\n          </DropdownMenuItem>\n          <DropdownMenuItem onClick={() => openExplorer(address)}>\n            <ExternalLink className=\"mr-2 h-4 w-4\" />\n            <span>View on Explorer</span>\n          </DropdownMenuItem>\n          <DropdownMenuItem onClick={disconnectWallet}>\n            <LogOut className=\"mr-2 h-4 w-4\" />\n            <span>Disconnect</span>\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    )\n  }\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button className=\"bg-gold hover:bg-gold/90 text-white\" disabled={isConnecting}>\n          {isConnecting ? (\n            <>\n              <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n              Connecting\n            </>\n          ) : (\n            <>\n              <Wallet className=\"mr-2 h-4 w-4\" />\n              Connect Wallet\n            </>\n          )}\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuItem onClick={() => connectWallet(\"metamask\")}>\n          <img src=\"/placeholder.svg?height=16&width=16\" alt=\"MetaMask\" className=\"mr-2 h-4 w-4\" />\n          MetaMask\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => connectWallet(\"walletconnect\")}>\n          <img src=\"/placeholder.svg?height=16&width=16\" alt=\"WalletConnect\" className=\"mr-2 h-4 w-4\" />\n          WalletConnect\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/wallet-provider.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\nimport { createContext, useContext, useState, useEffect } from \"react\"\nimport { ethers } from \"ethers\"\nimport { useToast } from \"@/hooks/use-toast\"\n\ntype WalletContextType = {\n  address: string | null\n  balance: string\n  isConnected: boolean\n  isConnecting: boolean\n  connect: () => Promise<void>\n  disconnect: () => void\n}\n\nconst WalletContext = createContext<WalletContextType>({\n  address: null,\n  balance: \"0\",\n  isConnected: false,\n  isConnecting: false,\n  connect: async () => {},\n  disconnect: () => {},\n})\n\nexport const useWallet = () => useContext(WalletContext)\n\nexport const WalletProvider = ({ children }: { children: React.ReactNode }) => {\n  const [address, setAddress] = useState<string | null>(null)\n  const [balance, setBalance] = useState(\"0\")\n  const [isConnected, setIsConnected] = useState(false)\n  const [isConnecting, setIsConnecting] = useState(false)\n  const { toast } = useToast()\n\n  const connect = async () => {\n    if (typeof window.ethereum === \"undefined\") {\n      toast({\n        title: \"MetaMask not found\",\n        description: \"Please install MetaMask to use this dApp\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      setIsConnecting(true)\n      const provider = new ethers.BrowserProvider(window.ethereum)\n      const accounts = await provider.send(\"eth_requestAccounts\", [])\n\n      if (accounts.length > 0) {\n        const address = accounts[0]\n        setAddress(address)\n        setIsConnected(true)\n\n        // Get balance\n        const balance = await provider.getBalance(address)\n        setBalance(ethers.formatEther(balance))\n\n        toast({\n          title: \"Wallet connected\",\n          description: `Connected to ${address.substring(0, 6)}...${address.substring(38)}`,\n        })\n      }\n    } catch (error) {\n      console.error(\"Error connecting wallet:\", error)\n      toast({\n        title: \"Connection failed\",\n        description: \"Failed to connect wallet. Please try again.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsConnecting(false)\n    }\n  }\n\n  const disconnect = () => {\n    setAddress(null)\n    setBalance(\"0\")\n    setIsConnected(false)\n    toast({\n      title: \"Wallet disconnected\",\n      description: \"Your wallet has been disconnected\",\n    })\n  }\n\n  // Listen for account changes\n  useEffect(() => {\n    if (typeof window.ethereum !== \"undefined\") {\n      const handleAccountsChanged = (accounts: string[]) => {\n        if (accounts.length === 0) {\n          // User disconnected their wallet\n          disconnect()\n        } else if (accounts[0] !== address) {\n          // User switched accounts\n          setAddress(accounts[0])\n          toast({\n            title: \"Account changed\",\n            description: `Switched to ${accounts[0].substring(0, 6)}...${accounts[0].substring(38)}`,\n          })\n        }\n      }\n\n      window.ethereum.on(\"accountsChanged\", handleAccountsChanged)\n\n      return () => {\n        window.ethereum.removeListener(\"accountsChanged\", handleAccountsChanged)\n      }\n    }\n  }, [address])\n\n  return (\n    <WalletContext.Provider\n      value={{\n        address,\n        balance,\n        isConnected,\n        isConnecting,\n        connect,\n        disconnect,\n      }}\n    >\n      {children}\n    </WalletContext.Provider>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components/withdraw-form.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Slider } from \"@/components/ui/slider\"\nimport { useToast } from \"@/components/ui/use-toast\"\nimport { InfoTooltip } from \"@/components/info-tooltip\"\nimport { Loader2 } from \"lucide-react\"\n\nexport function WithdrawForm() {\n  const [amount, setAmount] = useState(\"\")\n  const [isWithdrawing, setIsWithdrawing] = useState(false)\n  const { toast } = useToast()\n\n  // In a real app, this would come from the staking contract\n  const stakedBalance = 1.5\n  const amountValue = Number.parseFloat(amount || \"0\")\n  const isValidAmount = amountValue > 0 && amountValue <= stakedBalance\n\n  const handleSliderChange = (value: number[]) => {\n    const percentage = value[0]\n    const calculatedAmount = ((stakedBalance * percentage) / 100).toFixed(6)\n    setAmount(calculatedAmount)\n  }\n\n  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const value = e.target.value\n    // Allow only numbers and decimals\n    if (value === \"\" || /^\\d*\\.?\\d*$/.test(value)) {\n      setAmount(value)\n    }\n  }\n\n  const handleMaxClick = () => {\n    setAmount(stakedBalance.toString())\n  }\n\n  const handleWithdraw = async () => {\n    if (!isValidAmount) return\n\n    setIsWithdrawing(true)\n\n    try {\n      // In a real app, this would call the staking contract\n      await new Promise((resolve) => setTimeout(resolve, 2000)) // Simulate transaction\n\n      toast({\n        title: \"Withdrawal successful\",\n        description: `You have successfully withdrawn ${amount} ETH`,\n      })\n\n      setAmount(\"\")\n    } catch (error) {\n      console.error(\"Withdrawal error:\", error)\n      toast({\n        title: \"Withdrawal failed\",\n        description: \"There was an error while withdrawing your tokens. Please try again.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsWithdrawing(false)\n    }\n  }\n\n  return (\n    <div className=\"space-y-4 pt-4\">\n      <div className=\"space-y-2\">\n        <div className=\"flex justify-between items-center\">\n          <Label htmlFor=\"withdraw-amount\" className=\"flex items-center\">\n            Amount to Withdraw\n            <InfoTooltip content=\"The amount of ETH you want to withdraw from your staked balance.\" />\n          </Label>\n          <span className=\"text-sm text-muted-foreground\">Staked: {stakedBalance.toFixed(4)} ETH</span>\n        </div>\n\n        <div className=\"flex space-x-2\">\n          <Input\n            id=\"withdraw-amount\"\n            type=\"text\"\n            placeholder=\"0.0\"\n            value={amount}\n            onChange={handleInputChange}\n            className={`${!isValidAmount && amount ? \"border-red-500 focus-visible:ring-red-500\" : \"\"}`}\n          />\n          <Button variant=\"outline\" size=\"sm\" onClick={handleMaxClick} className=\"whitespace-nowrap\">\n            Max\n          </Button>\n        </div>\n\n        {!isValidAmount && amount && (\n          <p className=\"text-red-500 text-sm mt-1\">\n            {amountValue <= 0 ? \"Amount must be greater than 0\" : \"Amount exceeds your staked balance\"}\n          </p>\n        )}\n      </div>\n\n      <div className=\"space-y-2\">\n        <div className=\"flex justify-between text-sm\">\n          <span>0%</span>\n          <span>50%</span>\n          <span>100%</span>\n        </div>\n        <Slider defaultValue={[0]} max={100} step={1} onValueChange={handleSliderChange} className=\"[&>span]:bg-gold\" />\n      </div>\n\n      <div className=\"pt-4\">\n        <Button\n          onClick={handleWithdraw}\n          disabled={!isValidAmount || isWithdrawing}\n          className=\"w-full bg-gold hover:bg-gold/90 text-white\"\n        >\n          {isWithdrawing ? (\n            <>\n              <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n              Withdrawing...\n            </>\n          ) : (\n            \"Withdraw\"\n          )}\n        </Button>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/constants/constansts.tsx",
    "content": "const STAKING_CONTRACT_ADDRESS = \"0x652Ca0319df1b8ebe9220B4894DC38Da5C9575d3\"\n\nconst STAKING_CONTRACT_ABI = [\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_rewardToken\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_rewardRatePerSecond\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"reward\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"RewardPaid\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Staked\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Withdrawn\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"account\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"balanceOf\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"account\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"currentEarned\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"dailyRewardRate\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"stakeAmount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"estimateDailyEarningForStake\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"exit\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getReward\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"lastUpdateTime\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"rewardPerToken\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"rewardPerTokenStored\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"rewardRatePerSecond\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"rewardToken\",\n    \"outputs\": [\n      {\n        \"internalType\": \"contract IERC20\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"rewards\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"stake\",\n    \"outputs\": [],\n    \"stateMutability\": \"payable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"totalStaked\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"userRewardPerTokenPaid\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"withdraw\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"stateMutability\": \"payable\",\n    \"type\": \"receive\"\n  }\n]\n\n  export {STAKING_CONTRACT_ADDRESS, STAKING_CONTRACT_ABI}"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/hooks/use-staking-contract.tsx",
    "content": "\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { ethers } from \"ethers\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { STAKING_CONTRACT_ABI, STAKING_CONTRACT_ADDRESS } from \"@/constants/constansts\"\n\nexport const useStakingContract = () => {\n  const { address, isConnected } = useWallet()\n  const [contract, setContract] = useState<ethers.Contract | null>(null)\n  const [stakedBalance, setStakedBalance] = useState(\"0\")\n  const [rewards, setRewards] = useState(\"0\")\n  const [isLoading, setIsLoading] = useState(true)\n\n  useEffect(() => {\n    const initContract = async () => {\n      if (typeof window.ethereum !== \"undefined\" && isConnected && address) {\n        try {\n          const provider = new ethers.BrowserProvider(window.ethereum)\n          const signer = await provider.getSigner()\n\n          const stakingContract = new ethers.Contract(STAKING_CONTRACT_ADDRESS, STAKING_CONTRACT_ABI, signer)\n\n          setContract(stakingContract)\n          console.log(stakingContract)\n\n          // In a real app, you would fetch actual data from the contract\n          const balance = await stakingContract.balanceOf(address)\n          setStakedBalance(ethers.formatEther(balance))\n\n          const rewardsAmount = await stakingContract.currentEarned(address)\n          setRewards(ethers.formatEther(rewardsAmount))\n\n          // For demo purposes, we're setting mock values\n          // setStakedBalance(\"22.5\")\n          // setRewards(\"1.32\")\n\n          setIsLoading(false)\n        } catch (error) {\n          console.error(\"Error initializing contract:\", error)\n          setIsLoading(false)\n        }\n      } else {\n        setContract(null)\n        setStakedBalance(\"0\")\n        setRewards(\"0\")\n        setIsLoading(false)\n      }\n    }\n\n    initContract()\n\n    const onStake = () => {\n      initContract()\n    };\n\n    window.addEventListener(\"withdraw\", onStake);\n    return () => {\n      window.removeEventListener(\"withdraw\", onStake);\n    };\n  }, [address, isConnected])\n\n  const stake = async (amount: string) => {\n    if (!contract) return null\n\n    try {\n      console.log(\"Staking\");\n      const tx = await contract.stake({\n        value: ethers.parseEther(amount),\n      })\n\n      return await tx.wait()\n    } catch (error) {\n      console.error(\"Error staking:\", error)\n      throw error\n    }\n  }\n\n  const withdraw = async (amount: string) => {\n    if (!contract) return null\n\n    try {\n      console.log(\"Withdrawing....\")\n      const tx = await contract.withdraw(ethers.parseEther(amount))\n      return await tx.wait()\n    } catch (error) {\n      console.error(\"Error withdrawing:\", error)\n      throw error\n    }\n  }\n\n  const claimRewards = async () => {\n    if (!contract) return null\n\n    try {\n      const tx = await contract.getReward()\n      return await tx.wait()\n    } catch (error) {\n      console.error(\"Error claiming rewards:\", error)\n      throw error\n    }\n  }\n\n  return {\n    contract,\n    stakedBalance,\n    rewards,\n    isLoading,\n    stake,\n    withdraw,\n    claimRewards,\n  }\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/hooks/use-toast.ts",
    "content": "\"use client\"\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\"\n\nimport type {\n  ToastActionElement,\n  ToastProps,\n} from \"@/components/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n  id: string\n  title?: React.ReactNode\n  description?: React.ReactNode\n  action?: ToastActionElement\n}\n\nconst actionTypes = {\n  ADD_TOAST: \"ADD_TOAST\",\n  UPDATE_TOAST: \"UPDATE_TOAST\",\n  DISMISS_TOAST: \"DISMISS_TOAST\",\n  REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n  count = (count + 1) % Number.MAX_SAFE_INTEGER\n  return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n  | {\n      type: ActionType[\"ADD_TOAST\"]\n      toast: ToasterToast\n    }\n  | {\n      type: ActionType[\"UPDATE_TOAST\"]\n      toast: Partial<ToasterToast>\n    }\n  | {\n      type: ActionType[\"DISMISS_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n  | {\n      type: ActionType[\"REMOVE_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n\ninterface State {\n  toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n  if (toastTimeouts.has(toastId)) {\n    return\n  }\n\n  const timeout = setTimeout(() => {\n    toastTimeouts.delete(toastId)\n    dispatch({\n      type: \"REMOVE_TOAST\",\n      toastId: toastId,\n    })\n  }, TOAST_REMOVE_DELAY)\n\n  toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n  switch (action.type) {\n    case \"ADD_TOAST\":\n      return {\n        ...state,\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n      }\n\n    case \"UPDATE_TOAST\":\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\n        ),\n      }\n\n    case \"DISMISS_TOAST\": {\n      const { toastId } = action\n\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\n      // but I'll keep it here for simplicity\n      if (toastId) {\n        addToRemoveQueue(toastId)\n      } else {\n        state.toasts.forEach((toast) => {\n          addToRemoveQueue(toast.id)\n        })\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === toastId || toastId === undefined\n            ? {\n                ...t,\n                open: false,\n              }\n            : t\n        ),\n      }\n    }\n    case \"REMOVE_TOAST\":\n      if (action.toastId === undefined) {\n        return {\n          ...state,\n          toasts: [],\n        }\n      }\n      return {\n        ...state,\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\n      }\n  }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n  memoryState = reducer(memoryState, action)\n  listeners.forEach((listener) => {\n    listener(memoryState)\n  })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n  const id = genId()\n\n  const update = (props: ToasterToast) =>\n    dispatch({\n      type: \"UPDATE_TOAST\",\n      toast: { ...props, id },\n    })\n  const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n  dispatch({\n    type: \"ADD_TOAST\",\n    toast: {\n      ...props,\n      id,\n      open: true,\n      onOpenChange: (open) => {\n        if (!open) dismiss()\n      },\n    },\n  })\n\n  return {\n    id: id,\n    dismiss,\n    update,\n  }\n}\n\nfunction useToast() {\n  const [state, setState] = React.useState<State>(memoryState)\n\n  React.useEffect(() => {\n    listeners.push(setState)\n    return () => {\n      const index = listeners.indexOf(setState)\n      if (index > -1) {\n        listeners.splice(index, 1)\n      }\n    }\n  }, [state])\n\n  return {\n    ...state,\n    toast,\n    dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n  }\n}\n\nexport { useToast, toast }\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/lib/utils.ts",
    "content": "import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n\nexport function formatNumber(num: number): string {\n  return new Intl.NumberFormat().format(num)\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/next.config.ts",
    "content": "import type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n  /* config options here */\n};\n\nexport default nextConfig;\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/package.json",
    "content": "{\n  \"name\": \"Advanced-Stake-Dapp\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-dropdown-menu\": \"2.1.12\",\n    \"@radix-ui/react-label\": \"2.1.4\",\n    \"@radix-ui/react-progress\": \"1.1.4\",\n    \"@radix-ui/react-slider\": \"1.3.2\",\n    \"@radix-ui/react-slot\": \"1.2.0\",\n    \"@radix-ui/react-tabs\": \"1.1.8\",\n    \"@radix-ui/react-toast\": \"1.2.11\",\n    \"@radix-ui/react-tooltip\": \"1.2.4\",\n    \"class-variance-authority\": \"0.7.0\",\n    \"clsx\": \"^2.1.1\",\n    \"ethers\": \"^6.13.5\",\n    \"lucide-react\": \"^0.454.0\",\n    \"next\": \"15.0.2\",\n    \"next-themes\": \"^0.4.6\",\n    \"react\": \"19.0.0-rc-02c0e824-20241028\",\n    \"react-dom\": \"19.0.0-rc-02c0e824-20241028\",\n    \"tailwind-merge\": \"2.5.4\",\n    \"tailwindcss-animate\": \"1.0.7\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"^18\",\n    \"@types/react-dom\": \"^18\",\n    \"eslint\": \"^8\",\n    \"eslint-config-next\": \"15.0.2\",\n    \"postcss\": \"^8\",\n    \"tailwindcss\": \"^3.4.17\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n  plugins: {\n    tailwindcss: {},\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\"\n\nconst config = {\n  darkMode: [\"class\"],\n  content: [\n    \"./pages/**/*.{ts,tsx}\",\n    \"./components/**/*.{ts,tsx}\",\n    \"./app/**/*.{ts,tsx}\",\n    \"./src/**/*.{ts,tsx}\",\n    \"*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  prefix: \"\",\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      colors: {\n        border: \"hsl(var(--border))\",\n        input: \"hsl(var(--input))\",\n        ring: \"hsl(var(--ring))\",\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n        primary: {\n          DEFAULT: \"hsl(var(--primary))\",\n          foreground: \"hsl(var(--primary-foreground))\",\n        },\n        secondary: {\n          DEFAULT: \"hsl(var(--secondary))\",\n          foreground: \"hsl(var(--secondary-foreground))\",\n        },\n        destructive: {\n          DEFAULT: \"hsl(var(--destructive))\",\n          foreground: \"hsl(var(--destructive-foreground))\",\n        },\n        muted: {\n          DEFAULT: \"hsl(var(--muted))\",\n          foreground: \"hsl(var(--muted-foreground))\",\n        },\n        accent: {\n          DEFAULT: \"hsl(var(--accent))\",\n          foreground: \"hsl(var(--accent-foreground))\",\n        },\n        popover: {\n          DEFAULT: \"hsl(var(--popover))\",\n          foreground: \"hsl(var(--popover-foreground))\",\n        },\n        card: {\n          DEFAULT: \"hsl(var(--card))\",\n          foreground: \"hsl(var(--card-foreground))\",\n        },\n        gold: {\n          DEFAULT: \"#DAA520\",\n          hover: \"#B8860B\",\n        },\n        cream: {\n          DEFAULT: \"#F5F2E3\",\n          light: \"#F8F6EA\",\n          dark: \"#EBE7D9\",\n        },\n      },\n      borderRadius: {\n        lg: \"var(--radius)\",\n        md: \"calc(var(--radius) - 2px)\",\n        sm: \"calc(var(--radius) - 4px)\",\n      },\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: \"0\" },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: \"0\" },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config\n\nexport default config\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/Frontend/types/global.d.ts",
    "content": "interface Window {\n  ethereum?: any\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/README.md",
    "content": "# 💰 Staking DApp – Reward-Based Token Staking\n\nA fast, responsive, and developer-friendly staking DApp that allows users to stake tokens, view real-time rewards, and interact with the smart contract using a clean UI.\n\n> 🧠 **GitHub Repository:** [https://github.com/coredao-org/dapp-tutorial](https://github.com/coredao-org/dapp-tutorial)\n\n---\n\n## ✨ Features\n\n- 🖥️ **Modern UI:** Sleek, clean, and intuitive interface built for seamless user interaction.\n- ⛏️ **Staking System:** Users can stake and withdraw tokens with clear feedback and updates.\n- 💹 **Real-Time Rewards:** Users see their rewards update instantly without needing to reload or resync.\n- 🔄 **Claim Rewards:** Reward tokens can be claimed any time, with sufficient pre-minted supply in the contract.\n- 🧪 **Test Tokens:** Built-in faucet mechanism to withdraw test tokens for quick experimentation by running a mint.js script.\n\n---\n\n## 🔧 Getting Started\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/coredao-org/dapp-tutorial.git\ncd dapp-tutorial/10-Adavanced-Stake-Dapp\n```\n\n### 2. Setup Environment\n\nCreate a `.env` file in the root directory and add your private key:\n\n```bash\nPRIVATE_KEY=your_private_key_here\n```\n\n> **Note:** Never commit your `.env` file to version control. Keep your private key safe.\n\n### 3. Install Dependencies\n\nInstall smart contract dependencies:\n\n```bash\nnpm install\n```\n\nThen navigate to the frontend directory and install frontend dependencies:\n\n```bash\ncd ./Frontend\nnpm install\n```\n\n### 4. Run the DApp Locally\n\n```bash\nnpm run dev\n```\n\n> The DApp will be available at `http://localhost:3000`. You can now:\n>\n> - Stake tokens\n> - View your staked balance\n> - Claim your real-time rewards\n> - Withdraw test tokens for tinkering\n\n---\n\n## 🪙 Reward Token Minting (Optional)\n\nIf the **reward token balance** in the contract gets depleted and you can't claim rewards anymore, simply run the `mint.js` script to mint more tokens to the staking contract.\n\n### 📜 Steps to Mint:\n\n1. Open the `scripts/mint.js` file\n2. Ensure the contract address and amount are correct\n3. Run the script:\n\n```bash\nnpx hardhat run scripts/mint.js --network yourNetwork\n```\n\nReplace `yourNetwork` with the appropriate Hardhat network (e.g., `localhost`, `coreTestnet`).\n\n---\n\n## 👛 View Your Reward Tokens in Wallet\n\nTo view your reward token balance in your wallet, you need to **import the token manually**:\n\n- **Token Contract Address:** `0xe11B22597Fbc161e2B8502D5D101C989a62dD288`\n- **Token Symbol:** `RTN`\n- **Decimals:** `18`\n\n> After importing, you will be able to see your claimed rewards directly in your wallet.\n\n---\n\n## 🗂️ Project Structure\n\n```bash\n├── contracts/           # Smart contracts (RewardToken, NativeStaking)\n├── scripts/\n│   └── mint.js          # Script to mint additional reward tokens\n├── Frontend             # Frontend Next.js app\n├── hardhat.config.js    # Hardhat config for deployment\n├── .env                 # Store your private key here\n└── README.md\n```\n\n---\n\n## 📘 Tech Stack\n\n- **Next.js** – Frontend framework\n- **Tailwind CSS** – Responsive design\n- **Hardhat** – Smart contract development\n- **Ethers.js** – Blockchain interaction\n- **Solidity** – Smart contract language\n- **OpenZeppelin** – Secure ERC20 implementation\n\n---\n\n## 🤝 Contributions\n\nFeel free to fork the repo, tweak the staking logic, improve the UI, or submit a PR!\n\n---\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/contracts/RewardToken.sol",
    "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.22;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\nerror RewardToken__NotOwner();\n\ncontract RewardToken is ERC20 {\n\n    address public immutable i_owner;\n\n    constructor() ERC20(\"RewardToken\", \"RTN\") {\n        i_owner = msg.sender;\n    }\n\n    modifier onlyOwner() {\n        if(i_owner != msg.sender) revert RewardToken__NotOwner();\n        _;\n    }\n\n\n    function mint(address _receipient, uint256 _amount) public {\n        _mint(_receipient, _amount);\n    }\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/contracts/Stake.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title SimpleStaking\n * @notice Stake native ETH, earn rewards in an ERC20 token\n */\ncontract NativeStaking {\n    IERC20 public immutable rewardToken;\n    uint256 public rewardRatePerSecond;\n    uint256 public lastUpdateTime;\n    uint256 public rewardPerTokenStored;\n\n    uint256 private _totalStaked;\n    mapping(address => uint256) private _balances;\n\n    // reward accounting\n    mapping(address => uint256) public userRewardPerTokenPaid;\n    mapping(address => uint256) public rewards;\n\n    event Staked(address indexed user, uint256 amount);\n    event Withdrawn(address indexed user, uint256 amount);\n    event RewardPaid(address indexed user, uint256 reward);\n\n    constructor(address _rewardToken, uint256 _rewardRatePerSecond) {\n        rewardToken = IERC20(_rewardToken);\n        rewardRatePerSecond = _rewardRatePerSecond;\n        lastUpdateTime = block.timestamp;\n    }\n\n    modifier updateReward(address account) {\n        rewardPerTokenStored = rewardPerToken();\n        lastUpdateTime = block.timestamp;\n        if (account != address(0)) {\n            rewards[account] = earned(account);\n            userRewardPerTokenPaid[account] = rewardPerTokenStored;\n        }\n        _;\n    }\n\n    // view total staked\n    function totalStaked() external view returns (uint256) {\n        return _totalStaked;\n    }\n\n    // view user staked balance\n    function balanceOf(address account) external view returns (uint256) {\n        return _balances[account];\n    }\n\n    // view user current earned reward tokens\n    function currentEarned(address account) external view returns (uint256) {\n        return earned(account);\n    }\n\n    // calculate reward per token\n    function rewardPerToken() public view returns (uint256) {\n        if (_totalStaked == 0) {\n            return rewardPerTokenStored;\n        }\n        return\n            rewardPerTokenStored +\n            (block.timestamp - lastUpdateTime) * rewardRatePerSecond * 1e18 / _totalStaked;\n    }\n\n    // calculate earned rewards\n    function earned(address account) internal view returns (uint256) {\n        return\n            (_balances[account] * (rewardPerToken() - userRewardPerTokenPaid[account]) / 1e18)\n            + rewards[account];\n    }\n\n    // calculate daily reward rate per staked ETH\n    function dailyRewardRate() external view returns (uint256) {\n        return rewardRatePerSecond * 86400; // 86400 seconds in a day\n    }\n\n    // calculate total reward earned for a given stake amount\n    function estimateDailyEarningForStake(uint256 stakeAmount) external view returns (uint256) {\n        if (_totalStaked == 0) return 0;\n        uint256 dailyRewardPerToken = (rewardRatePerSecond * 86400 * 1e18) / _totalStaked;\n        return (stakeAmount * dailyRewardPerToken) / 1e18;\n    }\n\n    /**\n     * @notice Stake native ETH\n     */\n    function stake() public payable updateReward(msg.sender) {\n        require(msg.value > 0, \"Cannot stake 0\");\n        _totalStaked += msg.value;\n        _balances[msg.sender] += msg.value;\n        emit Staked(msg.sender, msg.value);\n    }\n\n    /**\n     * @notice Withdraw staked ETH\n     * @param amount Amount of ETH to withdraw\n     */\n    function withdraw(uint256 amount) public updateReward(msg.sender) {\n        require(amount > 0, \"Cannot withdraw 0\");\n        require(_balances[msg.sender] >= amount, \"Insufficient balance\");\n\n        _totalStaked -= amount;\n        _balances[msg.sender] -= amount;\n        payable(msg.sender).transfer(amount);\n        emit Withdrawn(msg.sender, amount);\n    }\n\n    /**\n     * @notice Claim accumulated reward tokens\n     */\n    function getReward() public updateReward(msg.sender) {\n        uint256 reward = rewards[msg.sender];\n        if (reward > 0) {\n            rewards[msg.sender] = 0;\n            require(rewardToken.transfer(msg.sender, reward), \"Reward transfer failed\");\n            emit RewardPaid(msg.sender, reward);\n        }\n    }\n\n    /**\n     * @notice Exit staking: withdraw all and claim rewards\n     */\n    function exit() external {\n        withdraw(_balances[msg.sender]);\n        getReward();\n    }\n\n    // allow contract to receive ETH\n    receive() external payable {\n        stake();\n    }\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.27\",\n\n  networks: {\n    localhost: {\n      url: \"http://127.0.0.1:8545/\",\n      // accounts: Thanks hardhat!\n      chainId: 31337,\n      allowUnlimitedContractSize: true,\n    },\n    coreTestnet: {\n      url: \"https://rpc.test2.btcs.network\",\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    }\n  },\n};\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/ignition/modules/Lock.js",
    "content": "// This setup uses Hardhat Ignition to manage smart contract deployments.\n// Learn more about it at https://hardhat.org/ignition\n\nconst { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/package.json",
    "content": "{\n  \"name\": \"reuse\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-toolbox\": \"^5.0.0\",\n    \"hardhat\": \"^2.22.15\"\n  },\n  \"dependencies\": {\n    \"@openzeppelin/contracts\": \"^5.3.0\",\n    \"dotenv\": \"^16.5.0\"\n  }\n}\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/scripts/deploy-stake.js",
    "content": "const hre = require(\"hardhat\");\n\nasync function main() {\n\n    const rate = ethers.parseUnits(\"0.01\", 18);\n\n\n    const RewardToken = await hre.ethers.getContractFactory(\"RewardToken\");\n    const rewardContract  = await RewardToken.deploy();\n\n  console.log(\"Storage contract deployed to:\", rewardContract.target);\n\n        \n    const NativeStaking = await hre.ethers.getContractFactory(\"NativeStaking\");\n    const stakingContract  = await NativeStaking.deploy(rewardContract.target, rate);\n\n  console.log(\"Storage contract deployed to:\", stakingContract.target);\n\n}\n\n// We recommend this pattern to be able to use async/await everywhere\n// and properly handle errors.\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n\n\n\n// Telos: Support contract deployed to: 0x5Ac64F5DA22B25559C7D7522b4B2BB7e2012F382"
  },
  {
    "path": "10-Advanced-Stake-Dapp/scripts/mint.js",
    "content": "const hre = require(\"hardhat\");\n\nasync function main() {\n  const rewardTokenAddress = \"0xe11B22597Fbc161e2B8502D5D101C989a62dD288\"; // deployed contract\n  const recipient = \"0x652Ca0319df1b8ebe9220B4894DC38Da5C9575d3\"; // replace with actual recipient\n  const amount = hre.ethers.parseUnits(\"9000000\", 18); // mint 1000 tokens (adjust if needed)\n\n  const RewardToken = await hre.ethers.getContractFactory(\"RewardToken\");\n  const rewardToken = await RewardToken.attach(rewardTokenAddress);\n\n  const tx = await rewardToken.mint(recipient, amount);\n  await tx.wait();\n  const balance = await rewardToken.balanceOf(recipient);\n  console.log(balance);\n\n  console.log(`✅ Minted ${amount} RTN to ${recipient}`);\n}\n\nmain().catch((error) => {\n  console.error(\"❌ Error:\", error);\n  process.exitCode = 1;\n});\n"
  },
  {
    "path": "10-Advanced-Stake-Dapp/test/Lock.js",
    "content": "const {\n  time,\n  loadFixture,\n} = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\nconst { anyValue } = require(\"@nomicfoundation/hardhat-chai-matchers/withArgs\");\nconst { expect } = require(\"chai\");\n\ndescribe(\"Lock\", function () {\n  // We define a fixture to reuse the same setup in every test.\n  // We use loadFixture to run this setup once, snapshot that state,\n  // and reset Hardhat Network to that snapshot in every test.\n  async function deployOneYearLockFixture() {\n    const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;\n    const ONE_GWEI = 1_000_000_000;\n\n    const lockedAmount = ONE_GWEI;\n    const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS;\n\n    // Contracts are deployed using the first signer/account by default\n    const [owner, otherAccount] = await ethers.getSigners();\n\n    const Lock = await ethers.getContractFactory(\"Lock\");\n    const lock = await Lock.deploy(unlockTime, { value: lockedAmount });\n\n    return { lock, unlockTime, lockedAmount, owner, otherAccount };\n  }\n\n  describe(\"Deployment\", function () {\n    it(\"Should set the right unlockTime\", async function () {\n      const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.unlockTime()).to.equal(unlockTime);\n    });\n\n    it(\"Should set the right owner\", async function () {\n      const { lock, owner } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.owner()).to.equal(owner.address);\n    });\n\n    it(\"Should receive and store the funds to lock\", async function () {\n      const { lock, lockedAmount } = await loadFixture(\n        deployOneYearLockFixture\n      );\n\n      expect(await ethers.provider.getBalance(lock.target)).to.equal(\n        lockedAmount\n      );\n    });\n\n    it(\"Should fail if the unlockTime is not in the future\", async function () {\n      // We don't use the fixture here because we want a different deployment\n      const latestTime = await time.latest();\n      const Lock = await ethers.getContractFactory(\"Lock\");\n      await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith(\n        \"Unlock time should be in the future\"\n      );\n    });\n  });\n\n  describe(\"Withdrawals\", function () {\n    describe(\"Validations\", function () {\n      it(\"Should revert with the right error if called too soon\", async function () {\n        const { lock } = await loadFixture(deployOneYearLockFixture);\n\n        await expect(lock.withdraw()).to.be.revertedWith(\n          \"You can't withdraw yet\"\n        );\n      });\n\n      it(\"Should revert with the right error if called from another account\", async function () {\n        const { lock, unlockTime, otherAccount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // We can increase the time in Hardhat Network\n        await time.increaseTo(unlockTime);\n\n        // We use lock.connect() to send a transaction from another account\n        await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith(\n          \"You aren't the owner\"\n        );\n      });\n\n      it(\"Shouldn't fail if the unlockTime has arrived and the owner calls it\", async function () {\n        const { lock, unlockTime } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // Transactions are sent using the first signer by default\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).not.to.be.reverted;\n      });\n    });\n\n    describe(\"Events\", function () {\n      it(\"Should emit an event on withdrawals\", async function () {\n        const { lock, unlockTime, lockedAmount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw())\n          .to.emit(lock, \"Withdrawal\")\n          .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg\n      });\n    });\n\n    describe(\"Transfers\", function () {\n      it(\"Should transfer the funds to the owner\", async function () {\n        const { lock, unlockTime, lockedAmount, owner } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).to.changeEtherBalances(\n          [owner, lock],\n          [lockedAmount, -lockedAmount]\n        );\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/License",
    "content": "MIT License\n\nCopyright (c) 2025\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/README.md",
    "content": "# Crosschain Bridge Example\n\nThis repository provides an example of a crosschain token bridge between **Core Testnet 2** and **Sepolia**. The project consists of two main components:\n\n1. **Foundry (Smart Contracts)** – Contains the Solidity smart contracts for the crosschain bridge.\n2. **Frontend (Next.js dApp)** – A frontend interface to interact with the bridge using Next.js, Viem, and Wagmi.\n\nThe smart contract addresses are on\nCore Testnet2 Network\n\n```\nhttps://scan.test2.btcs.network/address/0xfa2Bf83Eb2b6e16a469abD3a514b6626206b0c9A\n```\n\nEthereum Sepolia Network\n\n```\nhttps://sepolia.etherscan.io/address/0xa2024ba377ADc11388766d873406fd3C666f6d6A\n```\n\n## Project Structure\n\n```\n├── foundry/           # Contains the smart contracts\n│   ├── src\n|       ├── CrosschainBridge.sol   # Smart contract for crosschain bridging\n│       ├── USDC.sol             # Example tUSDC token contract\n│       └── ... (other Foundry setup files)\n├── frontend/         # Next.js dApp for interacting with the bridge\n│   ├── components/   # UI components\n│   ├── app/          # Next.js pages\n│   ├── lib/          # Utility functions\n│   ├── ... (other frontend setup files)\n└── README.md\n```\n\n## Setup & Installation\n\n### 1️⃣ **Clone the Repository**\n\n```sh\ngit clone https://github.com/coredao-org/dapp-tutorial.git\ncd dapp-tutorial/11-Bridge-Token-Using-Chainlink\n```\n\n### 2️⃣ **Smart Contracts (Foundry)**\n\nInstall Foundry if you haven’t already:\n\n```sh\ncurl -L https://foundry.paradigm.xyz | bash\nfoundryup\n```\n\nCompile and test the contracts:\n\n```sh\ncd foundry\nforge build\nforge test\n```\n\n### 3️⃣ **Frontend (Next.js)**\n\nNavigate to the frontend directory and install dependencies:\n\n```sh\ncd ../frontend\nnpm install\n```\n\nRun the Next.js development server:\n\n```sh\nnpm run dev\n```\n\n## How It Works\n\n1. **User selects a token amount to bridge** from **Core Testnet 2 → Sepolia** (or vice versa).\n2. **Approval transaction** is sent using **Viem**.\n3. **Bridge transaction** is sent using **Wagmi**.\n4. The contract **locks tUSDC on the source chain** and **mints an equivalent amount on the destination chain**.\n5. The transaction is **finalized** when the tokens appear on the destination chain.\n\n## ⚠️ Caution: This is an Example Project\n\n> **This project is for educational and demonstration purposes only.**\n> Do **NOT** use it in production or with real funds. The smart contracts are experimental and have not been audited.\n\n## 📜 License\n\nThis project is open-source under the [MIT License](LICENSE).\n\n## ✉️ Contact\n\nFor any questions or contributions, feel free to open an issue or reach out!\n\n---\n\n## Foundry (Smart Contracts) Deployment and Verification\n\n### 📍 **Deploying on Core Testnet 2 and Sepolia**\n\nIn this section, we’ll explain how to deploy the crosschain bridge contract on both **Core Testnet 2** and **Sepolia** using Foundry. The smart contract uses **LINK tokens** for bridging, and you'll need to mint **tUSDC** (a mintable token) to bridge between these networks.\n\n### **1. Configure the Deployment Script**\n\nYou will need to use a **Foundry script** to deploy the contract to the Core Testnet 2 and Sepolia. Here’s a breakdown of the deployment script you need to run:\n\n```bash\nforge script script/CrosschainBridge.s.sol --rpc-url https://rpc.test2.btcs.network --private-key <your_private_key> --broadcast\n```\n\n- **Core Testnet 2 RPC URL**: `https://rpc.test2.btcs.network`\n- **Private Key**: Replace `<your_private_key>` with your private key. Be sure to keep your private key secure and **never expose it in your public repositories**.\n\nThis script will deploy the `CrosschainBridge.sol` contract to Core Testnet 2. The same script can be used for Sepolia by updating the RPC URL accordingly:\n\n```bash\nforge script script/CrosschainBridge.s.sol --rpc-url https://rpc.sepolia.eth.link --private-key <your_private_key> --broadcast\n```\n\n### **2. Smart Contract Details**\n\nThe `CrosschainBridge.sol` contract facilitates bridging tokens between **Core Testnet 2** and **Sepolia**. Here’s a high-level overview of its functionality:\n\n- **Bridge Contract**: It locks `tUSDC` tokens on the source chain (either Core Testnet 2 or Sepolia) and mints an equivalent amount on the destination chain.\n- **LINK Token**: The contract utilizes **Chainlink’s oracles** and **automation services**, so you need to deposit a small amount of **LINK tokens** into the contract to allow it to use the Chainlink services for the bridging mechanism.\n\n### **3. Minting tUSDC for Bridging**\n\nWhen you deploy the CrossChainBridge contract. It also deployes tUSDC token and sends the to the deployer 100 tUSDC. To perform a bridge transaction, you will need to mint `tUSDC` tokens (a mintable token contract).\n\n### **4. Deposit LINK Token for Contract Usage**\n\nSince the contract uses Chainlink oracles for bridging, you will need to deposit a small amount of **LINK tokens** into the deployed contract. The LINK tokens are used for interacting with Chainlink’s services to finalize the bridge transactions.\n\n---\n\n### 🔧 **Verification via VS Code**\n\nAfter deploying the smart contract, it’s important to verify the contract on the respective blockchain explorers. To do this, you’ll use the verification script with the `--verifier custom` flag for verifying the contract manually.\n\n**Here’s the process to verify the contract via VS Code**:\n\n1. **Run the Verification Script**: Use the following script to verify the contract:\n\n   ```bash\n   forge verify-contract       --chain-id 1114       --num-of-optimizations 1000000       --watch       --constructor-args $(cast abi-encode \"constructor(address,address)\" 0xded0EE188Fe8F1706D9049e29C82081A5ebEcb2F 0x6C475841d1D7871940E93579E5DBaE01634e17aA)       --verifier custom       --verifier-url https://api.test2.btcs.network/api       --api-key <your_api_key>       --compiler-version v0.8.24       <YOUR_DEPLOYED_SMART_CONTRACT>       src/CrosschainBridge.sol:CrossChainBridge\n   ```\n\n   - Replace `<your_api_key>` with your API key for verification.\n   - The contract address should match the address where the contract was deployed.\n\n2. **Watch for Verification Confirmation**: After running the script, keep an eye on the output for verification confirmation. If successful, the contract will be marked as verified on the blockchain explorer.\n\n---\n\n### 📣 **Important Notes:**\n\n- **Use Only Testnet Tokens**: Ensure you are using testnet tokens (like tUSDC) for bridging and deploying on testnets. Never use real tokens or real funds.\n- **Contract Usage**: The contract locks tokens on the source chain and mints an equivalent amount on the destination chain. This feature is designed for demonstration purposes and is not suitable for production use.\n- **Chainlink Fees**: Make sure to deposit LINK tokens into the contract to use the Chainlink services for bridging.\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/.github/workflows/test.yml",
    "content": "name: CI\n\non:\n  push:\n  pull_request:\n  workflow_dispatch:\n\nenv:\n  FOUNDRY_PROFILE: ci\n\njobs:\n  check:\n    strategy:\n      fail-fast: true\n\n    name: Foundry project\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          submodules: recursive\n\n      - name: Install Foundry\n        uses: foundry-rs/foundry-toolchain@v1\n\n      - name: Show Forge version\n        run: |\n          forge --version\n\n      - name: Run Forge fmt\n        run: |\n          forge fmt --check\n        id: fmt\n\n      - name: Run Forge build\n        run: |\n          forge build --sizes\n        id: build\n\n      - name: Run Forge tests\n        run: |\n          forge test -vvv\n        id: test\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/.gitignore",
    "content": "# Compiler files\ncache/\nout/\n\n# Ignores development broadcast logs\n!/broadcast\n/broadcast/*/31337/\n/broadcast/**/dry-run/\n\n# Docs\ndocs/\n\n# Dotenv file\n.env\n\nlib/\ndependencies/"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/README.md",
    "content": "## Foundry (Smart Contracts) Deployment and Verification\n\n### 📍 **Deploying on Core Testnet 2 and Sepolia**\n\nIn this section, we’ll explain how to deploy the crosschain bridge contract on both **Core Testnet 2** and **Sepolia** using Foundry. The smart contract uses **LINK tokens** for bridging, and you'll need to mint **tUSDC** (a mintable token) to bridge between these networks.\n\n### **1. Configure the Deployment Script**\n\nYou will need to use a **Foundry script** to deploy the contract to the Core Testnet 2 and Sepolia. Here’s a breakdown of the deployment script you need to run:\n\n```bash\nforge script script/CrosschainBridge.s.sol --rpc-url https://rpc.test2.btcs.network --private-key <your_private_key> --broadcast\n```\n\n- **Core Testnet 2 RPC URL**: `https://rpc.test2.btcs.network`\n- **Private Key**: Replace `<your_private_key>` with your private key. Be sure to keep your private key secure and **never expose it in your public repositories**.\n\nThis script will deploy the `CrosschainBridge.sol` contract to Core Testnet 2. The same script can be used for Sepolia by updating the RPC URL accordingly:\n\n```bash\nforge script script/CrosschainBridge.s.sol --rpc-url https://rpc.sepolia.eth.link --private-key <your_private_key> --broadcast\n```\n\n### **2. Smart Contract Details**\n\nThe `CrosschainBridge.sol` contract facilitates bridging tokens between **Core Testnet 2** and **Sepolia**. Here’s a high-level overview of its functionality:\n\n- **Bridge Contract**: It locks `tUSDC` tokens on the source chain (either Core Testnet 2 or Sepolia) and mints an equivalent amount on the destination chain.\n- **LINK Token**: The contract utilizes **Chainlink’s oracles** and **automation services**, so you need to deposit a small amount of **LINK tokens** into the contract to allow it to use the Chainlink services for the bridging mechanism.\n\n### **3. Minting tUSDC for Bridging**\n\nWhen you deploy the CrossChainBridge contract. It also deployes tUSDC token and sends the to the deployer 100 tUSDC. To perform a bridge transaction, you will need to mint `tUSDC` tokens (a mintable token contract).\n\n### **4. Deposit LINK Token for Contract Usage**\n\nSince the contract uses Chainlink oracles for bridging, you will need to deposit a small amount of **LINK tokens** into the deployed contract. The LINK tokens are used for interacting with Chainlink’s services to finalize the bridge transactions.\n\n---\n\n### 🔧 **Verification via VS Code**\n\nAfter deploying the smart contract, it’s important to verify the contract on the respective blockchain explorers. To do this, you’ll use the verification script with the `--verifier custom` flag for verifying the contract manually.\n\n**Here’s the process to verify the contract via VS Code**:\n\n1. **Run the Verification Script**: Use the following script to verify the contract:\n\n   ```bash\n   forge verify-contract       --chain-id 1114       --num-of-optimizations 1000000       --watch       --constructor-args $(cast abi-encode \"constructor(address,address)\" 0xded0EE188Fe8F1706D9049e29C82081A5ebEcb2F 0x6C475841d1D7871940E93579E5DBaE01634e17aA)       --verifier custom       --verifier-url https://api.test2.btcs.network/api       --api-key <your_api_key>       --compiler-version v0.8.24       <YOUR_DEPLOYED_SMART_CONTRACT>       src/CrosschainBridge.sol:CrossChainBridge\n   ```\n\n   - Replace `<your_api_key>` with your API key for verification.\n   - The contract address should match the address where the contract was deployed.\n\n2. **Watch for Verification Confirmation**: After running the script, keep an eye on the output for verification confirmation. If successful, the contract will be marked as verified on the blockchain explorer.\n\n---\n\n### 📣 **Important Notes:**\n\n- **Use Only Testnet Tokens**: Ensure you are using testnet tokens (like tUSDC) for bridging and deploying on testnets. Never use real tokens or real funds.\n- **Contract Usage**: The contract locks tokens on the source chain and mints an equivalent amount on the destination chain. This feature is designed for demonstration purposes and is not suitable for production use.\n- **Chainlink Fees**: Make sure to deposit LINK tokens into the contract to use the Chainlink services for bridging.\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/foundry.toml",
    "content": "[profile.default]\nsrc = \"src\"\nout = \"out\"\nlibs = [\"lib\", \"dependencies\"]\nremappings = [\"@chainlink/contracts/=dependencies/smartcontractkit-ccip-2.5.0-ccip1.1.0/contracts\"]\nsolidity_version = \"0.8.24\"\nevm_version = \"shanghai\"\nsolc_version = \"0.8.24\"\n\n[dependencies]\nsmartcontractkit-ccip = \"2.5.0-ccip1.1.0\"\n\n\n\n\n\n\n\n# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/remappings.txt",
    "content": "smartcontractkit-ccip-2.5.0-ccip1.1.0/=dependencies/smartcontractkit-ccip-2.5.0-ccip1.1.0/\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/script/CrosschainBridge.s.sol",
    "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\nimport {Script, console} from \"forge-std/Script.sol\";\nimport {CrossChainBridge} from \"../src/CrosschainBridge.sol\";\nimport {HelperConfig} from \"./HelperConfig.s.sol\";\n\ncontract CrosschainBridgeScript is Script {\n    function run() public {\n        deployCrosschainBridge();\n    }\n\n    function deployCrosschainBridge()\n        public\n        returns (HelperConfig, CrossChainBridge)\n    {\n        HelperConfig helperConfig = new HelperConfig();\n        HelperConfig.NetworkConfig memory config = helperConfig.getConfig();\n\n        vm.startBroadcast();\n        CrossChainBridge crosschainBridge = new CrossChainBridge(\n            config.router,\n            config.linkToken\n        );\n        vm.stopBroadcast();\n        return (helperConfig, crosschainBridge);\n    }\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/script/HelperConfig.s.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport {Script, console2} from \"forge-std/Script.sol\";\n\ncontract HelperConfig is Script {\n    /*//////////////////////////////////////////////////////////////\n                                 ERRORS\n    //////////////////////////////////////////////////////////////*/\n    error HelperConfig__InvalidChainId();\n\n    /*//////////////////////////////////////////////////////////////\n                                 TYPES\n    //////////////////////////////////////////////////////////////*/\n    struct NetworkConfig {\n        address router;\n        address linkToken;\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                            STATE VARIABLES\n    //////////////////////////////////////////////////////////////*/\n\n    uint256 constant ETH_SEPOLIA_CHAIN_ID = 11155111;\n    uint256 constant CORE_TESTNET2_CHAIN_ID = 1114;\n\n    mapping(uint256 chainId => NetworkConfig) public networkConfigs;\n\n    /*//////////////////////////////////////////////////////////////\n                               FUNCTIONS\n    //////////////////////////////////////////////////////////////*/\n    constructor() {\n        networkConfigs[ETH_SEPOLIA_CHAIN_ID] = getEthSepoliaConfig();\n        networkConfigs[CORE_TESTNET2_CHAIN_ID] = getCoreTestnet2Config();\n    }\n\n    function getConfig() public view returns (NetworkConfig memory) {\n        return getConfigByChainId(block.chainid);\n    }\n\n    function getConfigByChainId(\n        uint256 chainId\n    ) public view returns (NetworkConfig memory) {\n        return networkConfigs[chainId];\n    }\n\n    /*//////////////////////////////////////////////////////////////\n                                CONFIGS\n    //////////////////////////////////////////////////////////////*/\n\n    function getEthSepoliaConfig() public pure returns (NetworkConfig memory) {\n        return\n            NetworkConfig({\n                router: 0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59,\n                linkToken: 0x779877A7B0D9E8603169DdbD7836e478b4624789\n            });\n    }\n\n    function getCoreTestnet2Config()\n        public\n        pure\n        returns (NetworkConfig memory)\n    {\n        return\n            NetworkConfig({\n                router: 0xded0EE188Fe8F1706D9049e29C82081A5ebEcb2F,\n                linkToken: 0x6C475841d1D7871940E93579E5DBaE01634e17aA\n            });\n    }\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/src/CrosschainBridge.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\nimport {CCIPReceiver} from \"@chainlink/contracts/src/v0.8/ccip/applications/CCIPReceiver.sol\";\nimport {Client} from \"@chainlink/contracts/src/v0.8/ccip/libraries/Client.sol\";\nimport {IRouterClient} from \"@chainlink/contracts/src/v0.8/ccip/interfaces/IRouterClient.sol\";\nimport {OwnerIsCreator} from \"@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol\";\nimport {IERC20} from \"@chainlink/contracts/src/v0.8/vendor/openzeppelin-solidity/v4.8.0/contracts/token/ERC20/IERC20.sol\";\nimport {LinkTokenInterface} from \"./LinkTokenInterface.sol\";\nimport {USDC} from \"./USDC.sol\";\n\n/**\n * @title A simple cross-chain bridge contract\n * @author Fraol Bereket\n * @notice The smart contract is built to show a simple example of USDC token bridge between Core network and Eth Sepolia. Currently there is no bridgeable token between Core and Sepolia so in the example usdc token is created.\n */\ncontract CrossChainBridge is CCIPReceiver, OwnerIsCreator {\n    event MessageSent(\n        bytes32 indexed messageId,\n        uint64 indexed destinationChainSelector,\n        address sender,\n        address receiver,\n        uint256 amount\n    );\n\n    event TokensReceived(\n        bytes32 indexed messageId,\n        uint64 indexed sourceChainSelector,\n        address sender,\n        address receiver,\n        uint256 amount\n    );\n\n    struct TransferData {\n        address sender;\n        uint256 amount;\n    }\n\n    USDC public usdcToken;\n    LinkTokenInterface public linkToken;\n    IRouterClient private s_router;\n\n    constructor(address _router, address _linkToken) CCIPReceiver(_router) {\n        s_router = IRouterClient(_router);\n        linkToken = LinkTokenInterface(_linkToken); // Fix: Pass LINK token address\n        usdcToken = new USDC();\n        usdcToken.mint(msg.sender, 100000000000000000000);\n    }\n\n    /// @notice Handles incoming CCIP messages\n    function _ccipReceive(\n        Client.Any2EVMMessage memory any2EvmMessage\n    ) internal override {\n        bytes32 messageId = any2EvmMessage.messageId;\n        uint64 sourceChainSelector = any2EvmMessage.sourceChainSelector;\n        address sender = abi.decode(any2EvmMessage.sender, (address));\n\n        // Decode the received data into TransferData struct\n        TransferData memory transferData = abi.decode(\n            any2EvmMessage.data,\n            (TransferData)\n        );\n\n        require(transferData.amount > 0, \"Invalid transfer amount\");\n\n        // Mint tokens to the sender (the original sender of the transaction)\n        usdcToken.mint(transferData.sender, transferData.amount);\n\n        emit TokensReceived(\n            messageId,\n            sourceChainSelector,\n            sender,\n            transferData.sender, // The original sender who should receive the tokens\n            transferData.amount\n        );\n    }\n\n    /// @notice Bridges tokens to another chain\n    function bridgeTokens(\n        uint64 destinationChainSelector,\n        address receiver,\n        uint256 amount\n    ) external {\n        require(\n            usdcToken.balanceOf(msg.sender) >= amount,\n            \"Insufficient balance\"\n        );\n        require(\n            usdcToken.transferFrom(msg.sender, address(this), amount),\n            \"Transfer failed\"\n        );\n\n        sendMessage(destinationChainSelector, receiver, amount);\n    }\n\n    function sendMessage(\n        uint64 destinationChainSelector,\n        address receiver,\n        uint256 transferAmount\n    ) internal returns (bytes32 messageId) {\n        address sender = msg.sender;\n\n        TransferData memory transferData = TransferData({\n            sender: sender,\n            amount: transferAmount\n        });\n\n        // Encode the struct for transmission\n        bytes memory encodedData = abi.encode(transferData);\n\n        Client.EVM2AnyMessage memory evm2AnyMessage = Client.EVM2AnyMessage({\n            receiver: abi.encode(receiver), // ABI-encoded receiver address\n            data: encodedData, // ABI-encoded string message\n            tokenAmounts: new Client.EVMTokenAmount[](0),\n            extraArgs: Client._argsToBytes(\n                Client.EVMExtraArgsV1({\n                    gasLimit: 200_000 // Gas limit for the callback on the destination chain\n                })\n            ),\n            feeToken: address(linkToken) // Setting feeToken to LinkToken address, indicating LINK will be used for fees\n        });\n\n        // Get the fee required to send the message\n        uint256 fees = s_router.getFee(\n            destinationChainSelector,\n            evm2AnyMessage\n        );\n\n        // approve the Router to send LINK tokens on contract's behalf. I will spend the fees in LINK\n        linkToken.approve(address(s_router), fees);\n\n        require(\n            IERC20(usdcToken).approve(address(s_router), transferAmount),\n            \"Failed to approve router\"\n        );\n\n        // Send the message through the router and store the returned message ID\n        messageId = s_router.ccipSend(destinationChainSelector, evm2AnyMessage);\n\n        // Emit an event with message details\n        emit MessageSent(\n            messageId,\n            destinationChainSelector,\n            sender,\n            receiver,\n            transferAmount\n        );\n\n        // Return the message ID\n        return messageId;\n    }\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/src/LinkTokenInterface.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n// solhint-disable-next-line interface-starts-with-i\ninterface LinkTokenInterface {\n    function allowance(\n        address owner,\n        address spender\n    ) external view returns (uint256 remaining);\n\n    function approve(\n        address spender,\n        uint256 value\n    ) external returns (bool success);\n\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    function decimals() external view returns (uint8 decimalPlaces);\n\n    function decreaseApproval(\n        address spender,\n        uint256 addedValue\n    ) external returns (bool success);\n\n    function increaseApproval(\n        address spender,\n        uint256 subtractedValue\n    ) external;\n\n    function name() external view returns (string memory tokenName);\n\n    function symbol() external view returns (string memory tokenSymbol);\n\n    function totalSupply() external view returns (uint256 totalTokensIssued);\n\n    function transfer(\n        address to,\n        uint256 value\n    ) external returns (bool success);\n\n    function transferAndCall(\n        address to,\n        uint256 value,\n        bytes calldata data\n    ) external returns (bool success);\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool success);\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/foundry/src/USDC.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\nimport {ERC20} from \"@chainlink/contracts/src/v0.8/vendor/openzeppelin-solidity/v4.8.0/contracts/token/ERC20/ERC20.sol\";\n\n/**\n * @title Mock USDC for testing\n * @author Fraol Bereket\n * @notice This token is for testing purpose only. the token can be minted by anyone.\n */\n\ncontract USDC is ERC20 {\n    constructor() ERC20(\"Test USDC\", \"tUSDC\") {\n        // Initial mint for deployer (optional)\n        _mint(msg.sender, 1000000 * 10 ** decimals());\n    }\n\n    /// @notice Allows anyone to mint test tokens (for testing only!)\n    function mint(address to, uint256 amount) public {\n        _mint(to, amount);\n    }\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# env files (can opt-in for committing if needed)\n.env*\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/ABI/CrosschainBridge.json",
    "content": "[\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_router\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_linkToken\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"router\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"InvalidRouter\",\n    \"type\": \"error\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"messageId\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"uint64\",\n        \"name\": \"destinationChainSelector\",\n        \"type\": \"uint64\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"receiver\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"MessageSent\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnershipTransferRequested\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnershipTransferred\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"bytes32\",\n        \"name\": \"messageId\",\n        \"type\": \"bytes32\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"uint64\",\n        \"name\": \"sourceChainSelector\",\n        \"type\": \"uint64\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"receiver\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"TokensReceived\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"acceptOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint64\",\n        \"name\": \"destinationChainSelector\",\n        \"type\": \"uint64\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"receiver\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"bridgeTokens\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bytes32\",\n        \"name\": \"messageId\",\n        \"type\": \"bytes32\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"bytes32\",\n            \"name\": \"messageId\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"internalType\": \"uint64\",\n            \"name\": \"sourceChainSelector\",\n            \"type\": \"uint64\"\n          },\n          {\n            \"internalType\": \"bytes\",\n            \"name\": \"sender\",\n            \"type\": \"bytes\"\n          },\n          {\n            \"internalType\": \"bytes\",\n            \"name\": \"data\",\n            \"type\": \"bytes\"\n          },\n          {\n            \"components\": [\n              {\n                \"internalType\": \"address\",\n                \"name\": \"token\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"amount\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct Client.EVMTokenAmount[]\",\n            \"name\": \"destTokenAmounts\",\n            \"type\": \"tuple[]\"\n          }\n        ],\n        \"internalType\": \"struct Client.Any2EVMMessage\",\n        \"name\": \"message\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"name\": \"ccipReceive\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getRouter\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"linkToken\",\n    \"outputs\": [\n      {\n        \"internalType\": \"contract LinkTokenInterface\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"owner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"bytes4\",\n        \"name\": \"interfaceId\",\n        \"type\": \"bytes4\"\n      }\n    ],\n    \"name\": \"supportsInterface\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"transferOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"usdcToken\",\n    \"outputs\": [\n      {\n        \"internalType\": \"contract USDC\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/ABI/USDC.json",
    "content": "[\n  {\n    \"inputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"allowance\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"needed\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ERC20InsufficientAllowance\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"balance\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"needed\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ERC20InsufficientBalance\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"approver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidApprover\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"receiver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidReceiver\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidSender\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidSpender\",\n    \"type\": \"error\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Approval\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Transfer\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"allowance\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"approve\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"account\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"balanceOf\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"decimals\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint8\",\n        \"name\": \"\",\n        \"type\": \"uint8\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"mint\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"name\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"symbol\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"totalSupply\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transfer\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transferFrom\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/README.md",
    "content": "## FRONTEND OF CROSSCHAIN BRIDGE\n\nThis is the frontend of the Crosschain Bridge project built with Next.js. It interacts with the smart contracts on **Core Testnet 2** and **Sepolia**. The frontend allows users to bridge tokens between the two networks and view relevant information.\n\n### Run the Development Server\n\nFirst, navigate to the `frontend` directory and install the required dependencies:\n\n```bash\nnpm install\n```\n\nOnce the dependencies are installed, run the development server:\n\n```bash\nnpm run dev\n```\n\nThis will start the Next.js development server. Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\n### Interacting with the Bridge\n\nOn the frontend, users can:\n\n1. Select the token and amount they want to bridge.\n2. Interact with the smart contracts to perform token approval and bridging transactions.\n3. View the status of their transactions on the selected network.\n\n### Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - Learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - An interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n### Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/WalletConfig.tsx",
    "content": "import \"@rainbow-me/rainbowkit/styles.css\";\nimport { getDefaultConfig } from \"@rainbow-me/rainbowkit\";\nimport { sepolia, type Chain } from \"wagmi/chains\";\nimport { Address } from \"viem\";\n\nexport const coreTestnet2: Chain = {\n  id: 1114,\n  name: \"Core Testnet 2\",\n  iconUrl: \"https://cryptologos.cc/logos/core-dao-core-logo.png?v=040\",\n  iconBackground: \"#fff\",\n  nativeCurrency: { name: \"CORE\", symbol: \"tCORE2\", decimals: 18 },\n  rpcUrls: {\n    default: { http: [\"https://rpc.test2.btcs.network\"] },\n  },\n  blockExplorers: {\n    default: { name: \"Core Explorer\", url: \"https://scan.test2.btcs.network/\" },\n  },\n  testnet: true,\n};\n\nexport const walletConfig = getDefaultConfig({\n  appName: \"Core DAO Token Bridge\",\n  projectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID,\n  chains: [sepolia, coreTestnet2],\n  ssr: true, // If your dApp uses server-side rendering (SSR)\n});\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/app/Provider.tsx",
    "content": "\"use client\";\n\nimport React from \"react\";\nimport { WagmiProvider } from \"wagmi\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { walletConfig } from \"@/WalletConfig\";\nimport { RainbowKitProvider } from \"@rainbow-me/rainbowkit\";\n\nconst queryClient = new QueryClient();\n\nexport default function Provider({ children }: { children: React.ReactNode }) {\n  return (\n    <WagmiProvider config={walletConfig}>\n      <QueryClientProvider client={queryClient}>\n        <RainbowKitProvider>{children}</RainbowKitProvider>\n      </QueryClientProvider>\n    </WagmiProvider>\n  );\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/app/globals.css",
    "content": "@import \"tailwindcss\";\n@import \"tw-animate-css\";\n\n@custom-variant dark (&:is(.dark *));\n\n@theme inline {\n  --color-background: var(--background);\n  --color-foreground: var(--foreground);\n  --font-sans: var(--font-geist-sans);\n  --font-mono: var(--font-geist-mono);\n  --color-sidebar-ring: var(--sidebar-ring);\n  --color-sidebar-border: var(--sidebar-border);\n  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n  --color-sidebar-accent: var(--sidebar-accent);\n  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n  --color-sidebar-primary: var(--sidebar-primary);\n  --color-sidebar-foreground: var(--sidebar-foreground);\n  --color-sidebar: var(--sidebar);\n  --color-chart-5: var(--chart-5);\n  --color-chart-4: var(--chart-4);\n  --color-chart-3: var(--chart-3);\n  --color-chart-2: var(--chart-2);\n  --color-chart-1: var(--chart-1);\n  --color-ring: var(--ring);\n  --color-input: var(--input);\n  --color-border: var(--border);\n  --color-destructive: var(--destructive);\n  --color-accent-foreground: var(--accent-foreground);\n  --color-accent: var(--accent);\n  --color-muted-foreground: var(--muted-foreground);\n  --color-muted: var(--muted);\n  --color-secondary-foreground: var(--secondary-foreground);\n  --color-secondary: var(--secondary);\n  --color-primary-foreground: var(--primary-foreground);\n  --color-primary: var(--primary);\n  --color-popover-foreground: var(--popover-foreground);\n  --color-popover: var(--popover);\n  --color-card-foreground: var(--card-foreground);\n  --color-card: var(--card);\n  --radius-sm: calc(var(--radius) - 4px);\n  --radius-md: calc(var(--radius) - 2px);\n  --radius-lg: var(--radius);\n  --radius-xl: calc(var(--radius) + 4px);\n}\n\n:root {\n  --radius: 0.625rem;\n  --background: oklch(1 0 0);\n  --foreground: oklch(0.145 0 0);\n  --card: oklch(1 0 0);\n  --card-foreground: oklch(0.145 0 0);\n  --popover: oklch(1 0 0);\n  --popover-foreground: oklch(0.145 0 0);\n  --primary: oklch(0.205 0 0);\n  --primary-foreground: oklch(0.985 0 0);\n  --secondary: oklch(0.97 0 0);\n  --secondary-foreground: oklch(0.205 0 0);\n  --muted: oklch(0.97 0 0);\n  --muted-foreground: oklch(0.556 0 0);\n  --accent: oklch(0.97 0 0);\n  --accent-foreground: oklch(0.205 0 0);\n  --destructive: oklch(0.577 0.245 27.325);\n  --border: oklch(0.922 0 0);\n  --input: oklch(0.922 0 0);\n  --ring: oklch(0.708 0 0);\n  --chart-1: oklch(0.646 0.222 41.116);\n  --chart-2: oklch(0.6 0.118 184.704);\n  --chart-3: oklch(0.398 0.07 227.392);\n  --chart-4: oklch(0.828 0.189 84.429);\n  --chart-5: oklch(0.769 0.188 70.08);\n  --sidebar: oklch(0.985 0 0);\n  --sidebar-foreground: oklch(0.145 0 0);\n  --sidebar-primary: oklch(0.205 0 0);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.97 0 0);\n  --sidebar-accent-foreground: oklch(0.205 0 0);\n  --sidebar-border: oklch(0.922 0 0);\n  --sidebar-ring: oklch(0.708 0 0);\n}\n\n.dark {\n  --background: oklch(0.145 0 0);\n  --foreground: oklch(0.985 0 0);\n  --card: oklch(0.205 0 0);\n  --card-foreground: oklch(0.985 0 0);\n  --popover: oklch(0.205 0 0);\n  --popover-foreground: oklch(0.985 0 0);\n  --primary: oklch(0.922 0 0);\n  --primary-foreground: oklch(0.205 0 0);\n  --secondary: oklch(0.269 0 0);\n  --secondary-foreground: oklch(0.985 0 0);\n  --muted: oklch(0.269 0 0);\n  --muted-foreground: oklch(0.708 0 0);\n  --accent: oklch(0.269 0 0);\n  --accent-foreground: oklch(0.985 0 0);\n  --destructive: oklch(0.704 0.191 22.216);\n  --border: oklch(1 0 0 / 10%);\n  --input: oklch(1 0 0 / 15%);\n  --ring: oklch(0.556 0 0);\n  --chart-1: oklch(0.488 0.243 264.376);\n  --chart-2: oklch(0.696 0.17 162.48);\n  --chart-3: oklch(0.769 0.188 70.08);\n  --chart-4: oklch(0.627 0.265 303.9);\n  --chart-5: oklch(0.645 0.246 16.439);\n  --sidebar: oklch(0.205 0 0);\n  --sidebar-foreground: oklch(0.985 0 0);\n  --sidebar-primary: oklch(0.488 0.243 264.376);\n  --sidebar-primary-foreground: oklch(0.985 0 0);\n  --sidebar-accent: oklch(0.269 0 0);\n  --sidebar-accent-foreground: oklch(0.985 0 0);\n  --sidebar-border: oklch(1 0 0 / 10%);\n  --sidebar-ring: oklch(0.556 0 0);\n}\n\n@layer base {\n  * {\n    @apply border-border outline-ring/50;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/app/layout.tsx",
    "content": "import type { Metadata } from \"next\";\nimport { Geist, Geist_Mono } from \"next/font/google\";\nimport \"./globals.css\";\nimport Provider from \"./Provider\";\n\nconst geistSans = Geist({\n  variable: \"--font-geist-sans\",\n  subsets: [\"latin\"],\n});\n\nconst geistMono = Geist_Mono({\n  variable: \"--font-geist-mono\",\n  subsets: [\"latin\"],\n});\n\nexport const metadata: Metadata = {\n  title: \"Bridge Token\",\n  description: \"Bridge Token from Core to Sepolia and vice versa\",\n};\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode;\n}>) {\n  return (\n    <html lang=\"en\">\n      <body\n        className={`${geistSans.variable} ${geistMono.variable} antialiased`}\n      >\n        <Provider>{children}</Provider>\n      </body>\n    </html>\n  );\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/app/page.tsx",
    "content": "\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport Image from \"next/image\";\nimport { ConnectButton } from \"@rainbow-me/rainbowkit\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { useAccount, useBalance, useWriteContract } from \"wagmi\";\nimport { waitForTransactionReceipt } from \"@wagmi/core\";\nimport { parseEther } from \"viem\";\nimport CrosschainABI from \"@/ABI/CrosschainBridge.json\";\nimport UsdcABI from \"@/ABI/USDC.json\";\nimport { walletConfig } from \"@/WalletConfig\";\n\ninterface notificationInterfact {\n  message: string;\n  type: string;\n}\n\nexport default function Home() {\n  const BridgeToken_CORE = \"0xfa2Bf83Eb2b6e16a469abD3a514b6626206b0c9A\";\n  const BridgeToken_SEPOLIA = \"0xa2024ba377ADc11388766d873406fd3C666f6d6A\";\n  const tUSDC_ADDRESS_CORE = \"0xb320c17e33cfb20d143db0f49e531c1762025d0f\";\n  const tUSDC_ADDRESS_SEPOLIA = \"0x58e5Daaa9af5849BB2f9F5C7679b84b9465fab0e\";\n  const Core_Chain_Selector = \"4264732132125536123\";\n  const Sepolia_Chain_Selector = \"16015286601757825753\";\n\n  const [amount, setAmount] = useState(\"0\");\n  const [loading, setLoading] = useState(false);\n  const [notification, setNotification] =\n    useState<notificationInterfact | null>();\n\n  const { writeContract } = useWriteContract();\n  const { address, isConnected, chain } = useAccount();\n  const {\n    data: balanceData,\n    isLoading,\n    isError,\n  } = useBalance({\n    address,\n    token: chain?.id == 11155111 ? tUSDC_ADDRESS_SEPOLIA : tUSDC_ADDRESS_CORE,\n  });\n\n  const handleBridge = async (amount: string) => {\n    console.log(\"handle bridge\");\n    if (!chain) return;\n\n    let chainSelector =\n      chain.id === 11155111 ? Core_Chain_Selector : Sepolia_Chain_Selector;\n    let Contract =\n      chain.id === 11155111 ? BridgeToken_SEPOLIA : BridgeToken_CORE;\n    let Receiver =\n      chain.id === 11155111 ? BridgeToken_CORE : BridgeToken_SEPOLIA;\n    let Token =\n      chain.id === 11155111 ? tUSDC_ADDRESS_SEPOLIA : tUSDC_ADDRESS_CORE;\n\n    try {\n      setLoading(true);\n\n      // Step 1: Approve the contract to spend the token\n      const approveTx = await new Promise<`0x${string}`>((resolve, reject) => {\n        writeContract(\n          {\n            abi: UsdcABI,\n            address: Token as `0x${string}`,\n            functionName: \"approve\",\n            args: [Contract, parseEther(amount)],\n          },\n          {\n            onSuccess: (hash) => resolve(hash),\n            onError: (error) => reject(error),\n          }\n        );\n      });\n\n      console.log(\"Approval transaction sent:\", approveTx);\n\n      // Step 2: Wait for confirmation\n      const receipt = await waitForTransactionReceipt(walletConfig, {\n        hash: approveTx,\n      });\n\n      if (receipt.status !== \"success\") throw new Error(\"Approval failed\");\n\n      // Step 3: Bridge the tokens using bridgeTokens\n      const transferTx = await new Promise<`0x${string}`>((resolve, reject) => {\n        writeContract(\n          {\n            abi: CrosschainABI,\n            address: Contract as `0x${string}`,\n            functionName: \"bridgeTokens\",\n            args: [chainSelector, Receiver, parseEther(amount)],\n          },\n          {\n            onSuccess: (hash) => resolve(hash),\n            onError: (error) => reject(error),\n          }\n        );\n      });\n\n      console.log(\"Transfer transaction sent:\", transferTx);\n\n      // Step 4: Wait for confirmation\n      const receipt2 = await waitForTransactionReceipt(walletConfig, {\n        hash: transferTx,\n      });\n\n      if (receipt2.status !== \"success\") throw new Error(\"Approval failed\");\n\n      setNotification({\n        message: \"Bridge tUSDC successfully!\",\n        type: \"success\",\n      });\n      setLoading(false);\n    } catch (error) {\n      console.error(\"Transaction failed:\", error);\n      setNotification({\n        message: \"Error happened while bridging!\",\n        type: \"error\",\n      });\n      setLoading(false);\n    }\n    setTimeout(() => setNotification(null), 5000);\n  };\n\n  return (\n    <div className=\"grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen p-8 pb-20 gap-16 sm:p-20 font-[family-name:var(--font-geist-sans)]\">\n      {notification && (\n        <div\n          className={`fixed top-4 left-1/2 transform -translate-x-1/2 p-4 w-full max-w-md rounded-md shadow-lg z-50 ${\n            notification.type === \"success\" ? \"bg-green-500\" : \"bg-red-500\"\n          } text-white text-center transition-all duration-300 animate-fade-in`}\n        >\n          {notification.message}\n        </div>\n      )}\n\n      <div className=\"w-full flex justify-between\">\n        <Image\n          className=\"dark:invert\"\n          src=\"/core-dao-core-logo.png\"\n          alt=\"Core Dao logo\"\n          width={40}\n          height={5}\n          priority\n        />\n        <ConnectButton />\n      </div>\n      <main className=\"flex flex-col gap-[32px] row-start-2 items-center sm:items-start\">\n        <div>\n          <Card className=\"w-[350px] m-4\">\n            <CardHeader>\n              <div className=\"flex justify-center\">\n                <Image\n                  className=\"dark:invert\"\n                  src=\"/core-dao-core-logo.png\"\n                  alt=\"Core Dao logo\"\n                  width={60}\n                  height={5}\n                  priority\n                />\n              </div>\n              <CardTitle className=\"text-center\">Bridge</CardTitle>\n              <CardDescription className=\"text-center\">\n                Bridge tUSDC Token from{\" \"}\n                {chain?.id == 11155111\n                  ? \"Sepolia to Core Testnet 2\"\n                  : \"Core Testnet2 to Sepolia\"}\n              </CardDescription>\n            </CardHeader>\n            <CardContent>\n              <form>\n                <div className=\"grid w-full items-center gap-4\">\n                  <div className=\"flex flex-col space-y-1.5\">\n                    <Label htmlFor=\"amount\">Amount</Label>\n                    <Input\n                      type=\"number\"\n                      id=\"amount\"\n                      value={amount}\n                      onChange={(e) => setAmount(e.target.value)}\n                      placeholder=\"Amount to bridge\"\n                    />\n                  </div>\n                </div>\n              </form>\n              <CardDescription className=\"text-end\">\n                tUSDC :{\" \"}\n                {isConnected && isLoading\n                  ? \"Loading...\"\n                  : isError\n                  ? \"Error fetching balance\"\n                  : balanceData?.formatted}\n              </CardDescription>\n            </CardContent>\n\n            <CardFooter className=\"w-full flex \">\n              <Button\n                onClick={() => handleBridge(amount)}\n                disabled={loading}\n                className=\"w-full cursor-pointer\"\n              >\n                {loading ? (\n                  <div className=\"flex items-center justify-center\">\n                    <svg\n                      className=\"animate-spin h-5 w-5 mr-3 text-white\"\n                      xmlns=\"http://www.w3.org/2000/svg\"\n                      fill=\"none\"\n                      viewBox=\"0 0 24 24\"\n                    >\n                      <circle\n                        className=\"opacity-25\"\n                        cx=\"12\"\n                        cy=\"12\"\n                        r=\"10\"\n                        stroke=\"currentColor\"\n                        strokeWidth=\"4\"\n                      ></circle>\n                      <path\n                        className=\"opacity-75\"\n                        fill=\"currentColor\"\n                        d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n                      ></path>\n                    </svg>\n                    Bridging...\n                  </div>\n                ) : (\n                  \" Bridge\"\n                )}\n              </Button>\n            </CardFooter>\n          </Card>\n        </div>\n      </main>\n      <footer className=\"row-start-3 flex gap-[24px] flex-wrap items-center justify-center\">\n        <a\n          className=\"flex items-center gap-2 hover:underline hover:underline-offset-4\"\n          href=\"https://docs.coredao.org/docs/intro\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <Image\n            aria-hidden\n            src=\"/file.svg\"\n            alt=\"File icon\"\n            width={16}\n            height={16}\n          />\n          Learn about Core\n        </a>\n        <a\n          className=\"flex items-center gap-2 hover:underline hover:underline-offset-4\"\n          href=\"https://github.com/coredao-org/dapp-tutorial\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <Image\n            aria-hidden\n            src=\"/window.svg\"\n            alt=\"Window icon\"\n            width={16}\n            height={16}\n          />\n          Examples\n        </a>\n        <a\n          className=\"flex items-center gap-2 hover:underline hover:underline-offset-4\"\n          href=\"https://coredao.org/\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <Image\n            aria-hidden\n            src=\"/globe.svg\"\n            alt=\"Globe icon\"\n            width={16}\n            height={16}\n          />\n          Go to coredao.org →\n        </a>\n      </footer>\n    </div>\n  );\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/components/ui/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n  \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-card text-card-foreground\",\n        destructive:\n          \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/components/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n        outline:\n          \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n        ghost:\n          \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n        sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n        lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n        icon: \"size-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant,\n  size,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/components/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card\"\n      className={cn(\n        \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-header\"\n      className={cn(\n        \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-title\"\n      className={cn(\"leading-none font-semibold\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-description\"\n      className={cn(\"text-muted-foreground text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-action\"\n      className={cn(\n        \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-content\"\n      className={cn(\"px-6\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"card-footer\"\n      className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Card,\n  CardHeader,\n  CardFooter,\n  CardTitle,\n  CardAction,\n  CardDescription,\n  CardContent,\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/components/ui/input.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <input\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n        \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n        \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/components/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n  className,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  return (\n    <LabelPrimitive.Root\n      data-slot=\"label\"\n      className={cn(\n        \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"neutral\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/eslint.config.mjs",
    "content": "import { dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { FlatCompat } from \"@eslint/eslintrc\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst compat = new FlatCompat({\n  baseDirectory: __dirname,\n});\n\nconst eslintConfig = [\n  ...compat.extends(\"next/core-web-vitals\", \"next/typescript\"),\n];\n\nexport default eslintConfig;\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/next.config.ts",
    "content": "import type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n  /* config options here */\n};\n\nexport default nextConfig;\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/package.json",
    "content": "{\n  \"name\": \"frontend\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev --turbopack\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-label\": \"2.1.2\",\n    \"@radix-ui/react-slot\": \"1.1.2\",\n    \"@rainbow-me/rainbowkit\": \"2.2.4\",\n    \"@tanstack/react-query\": \"5.70.0\",\n    \"class-variance-authority\": \"0.7.1\",\n    \"clsx\": \"2.1.1\",\n    \"lucide-react\": \"0.485.0\",\n    \"next\": \"15.2.4\",\n    \"react\": \"19.0.0\",\n    \"react-dom\": \"19.0.0\",\n    \"tailwind-merge\": \"3.0.2\",\n    \"tw-animate-css\": \"1.2.5\",\n    \"viem\": \"2.24.1\",\n    \"wagmi\": \"2.14.15\"\n  },\n  \"devDependencies\": {\n    \"@eslint/eslintrc\": \"3.3.1\",\n    \"@tailwindcss/postcss\": \"4.0.17\",\n    \"@types/node\": \"20.17.28\",\n    \"@types/react\": \"19.0.12\",\n    \"@types/react-dom\": \"19.0.4\",\n    \"eslint\": \"9.23.0\",\n    \"eslint-config-next\": \"15.2.4\",\n    \"tailwindcss\": \"4.0.17\",\n    \"typescript\": \"5.8.2\"\n  }\n}\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/postcss.config.mjs",
    "content": "const config = {\n  plugins: [\"@tailwindcss/postcss\"],\n};\n\nexport default config;\n"
  },
  {
    "path": "11-Bridge-Token-Using-Chainlink/frontend/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "12-Core-MultiSig/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/.eslintrc.json",
    "content": "{\n  \"extends\": [\"next/core-web-vitals\", \"next/typescript\"],\n  \"rules\": {\n    \"@typescript-eslint/no-explicit-any\": \"off\", // Allow `any` type\n    \"@typescript-eslint/no-unused-vars\": \"off\", // Disable unused variables check\n    \"@typescript-eslint/no-unused-expressions\": \"off\", // Disable unused expressions check\n    \"react-hooks/exhaustive-deps\": \"off\", // Suppress missing dependency warnings in useEffect\n    \"@next/next/no-img-element\": \"off\" // Allow the use of <img> instead of <Image />\n  }\n}\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# env files (can opt-in for commiting if needed)\n.env*\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/README.md",
    "content": "This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/client.ts",
    "content": "// src/client.ts\nimport { createThirdwebClient } from \"thirdweb\";\n\nexport const client = createThirdwebClient({\n  clientId: \"abf285902676f10739931719171a6b4c\", // For devs test\n});\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/constants/MultiSigFactory.json",
    "content": "[\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_feeReceiver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": false,\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"MultiSigCreated\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"Deposit\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_proposalIndex\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"confirmTransaction\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address[]\",\n        \"name\": \"_owners\",\n        \"type\": \"address[]\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_noOfConfirmations\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"createMultiSig\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"payable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_proposalIndex\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"executeTransaction\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"getAllDeployedMultiSigs\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address[]\",\n        \"name\": \"\",\n        \"type\": \"address[]\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"getAllProposals\",\n    \"outputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"proposer\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"to\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"value\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"string\",\n            \"name\": \"description\",\n            \"type\": \"string\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"noOfConfirmations\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"bool\",\n            \"name\": \"status\",\n            \"type\": \"bool\"\n          }\n        ],\n        \"internalType\": \"struct MultiSig.Transaction[]\",\n        \"name\": \"\",\n        \"type\": \"tuple[]\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"getDeployer\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"deployer\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"getDeployersWallets\",\n    \"outputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"walletAddress\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"timeCreated\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"balance\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct MultiSigFactory.Wallets[]\",\n        \"name\": \"\",\n        \"type\": \"tuple[]\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"getOwners\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address[]\",\n        \"name\": \"\",\n        \"type\": \"address[]\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"getTimeCreated\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_proposalIndex\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"revokeConfirmedTransaction\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"multisigAddress\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_value\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"_description\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"submitTransaction\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/constants/config.json",
    "content": "{\n    \"31337\": {\n        \"factory\": {\n            \"address\": \"0x9A676e781A523b5d0C0e43731313A708CB607508\"\n        }\n    },\n\n    \"1114\": {\n        \"factory\": {\n            \"address\": \"0xAA4CA018D432b66c65c85467FEb08036B860362d\"\n        }\n    }\n}"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/create/createmultisig.tsx",
    "content": "\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"@/components/ui/card\";\nimport { Loader2 } from \"lucide-react\";\nimport { ethers } from \"ethers\";\n\n// ABIs & Configs\nimport MultiSigFactory from \"../constants/MultiSigFactory.json\";\nimport config from \"../constants/config.json\";\n\n\nexport default function CreateMultiSigWallet(provider: any, factory: any) {\n  const [name, setName] = useState(\"\");\n  const [owners, setOwners] = useState([\"\"]);\n  const [requiredConfirmations, setRequiredConfirmations] = useState(1);\n  const [isCreating, setIsCreating] = useState(false);\n\n\n  const handleAddOwner = () => setOwners([...owners, \"\"]);\n\n  const handleOwnerChange = (index: number, value: string) => {\n    const newOwners = [...owners];\n    newOwners[index] = value;\n    setOwners(newOwners);\n  };\n\n  const handleRemoveOwner = (index: number) => {\n    const newOwners = owners.filter((_, i) => i !== index);\n    setOwners(newOwners);\n  };\n\n\n  async function createMultiSig(addresses: string[], amount: bigint) {\n    try {\n      if (typeof (window as any).ethereum !== \"undefined\") {\n        const provider = new ethers.BrowserProvider((window as any).ethereum);\n    \n        console.log(\"Creating multisig....\");\n    \n        const signer = await provider.getSigner();\n    \n        const network = await provider.getNetwork();\n        console.log(\"Network:\", network);\n    \n        const chainId = network.chainId.toString();\n        const configData = config[`${network.chainId}` as keyof typeof config];\n        \n        if (!configData) {\n          console.error(`No configuration found for chain ID: ${chainId}`);\n          return;\n        }\n\n        const address = configData.factory.address as string;\n        \n        if (!address || address === \"\") {\n          console.error(\"Factory address is empty or undefined\");\n          return;\n        }\n    \n        const contractFactory = new ethers.Contract(address, MultiSigFactory, signer);\n        console.log(contractFactory);\n    \n        const value = ethers.parseEther(\"0.01\");\n    \n        // Call the createMultiSig function\n        const transaction = await contractFactory.createMultiSig(addresses, amount, { value });\n        await transaction.wait();\n    \n        console.log(\"Done!\");\n      }\n    } catch (error) {\n      console.error(\"Error creating multisig:\", error);\n    }\n  }\n  \n\n\n\n  const handleSubmit = (e: React.FormEvent) => {\n    e.preventDefault();\n    setIsCreating(true);\n    setTimeout(() => {\n      console.log(\"Wallet created:\", { name, owners, requiredConfirmations });\n      setIsCreating(false);\n    }, 2000);\n  };\n\n  return (\n    <div className=\"max-h-screen overflow-y-auto px-4 py-4\">\n      <Card className=\"w-full max-w-2xl bg-blue-800 text-white mx-auto\">\n        <CardHeader>\n          <CardTitle className=\"text-2xl font-bold text-center\">\n            Create Multi-Signature Wallet\n          </CardTitle>\n          <CardDescription className=\"text-center text-gray-300\">\n            Set up a new multi-signature wallet by providing the required\n            information\n          </CardDescription>\n        </CardHeader>\n        <CardContent>\n          <form onSubmit={handleSubmit} className=\"space-y-6\">\n            <div>\n              <Label htmlFor=\"name\">Wallet Name</Label>\n              <Input\n                id=\"name\"\n                value={name}\n                onChange={(e) => setName(e.target.value)}\n                className=\"bg-blue-700 border-blue-600 text-white\"\n                required\n              />\n            </div>\n            <div>\n              <Label>Owners</Label>\n              {owners.map((owner, index) => (\n                <div key={index} className=\"flex items-center mt-2 space-x-2\">\n                  <Input\n                    value={owner}\n                    onChange={(e) => handleOwnerChange(index, e.target.value)}\n                    placeholder={`Owner ${index + 1} address`}\n                    className=\"bg-blue-700 border-blue-600 text-white flex-grow\"\n                    required\n                  />\n                  {index > 0 && (\n                    <Button\n                      type=\"button\"\n                      variant=\"destructive\"\n                      size=\"sm\"\n                      onClick={() => handleRemoveOwner(index)}\n                    >\n                      Remove\n                    </Button>\n                  )}\n                </div>\n              ))}\n              <Button\n                type=\"button\"\n                variant=\"outline\"\n                size=\"sm\"\n                onClick={handleAddOwner}\n                className=\"mt-4\"\n              >\n                Add Owner\n              </Button>\n            </div>\n            <div>\n              <Label htmlFor=\"requiredConfirmations\">\n                Required Confirmations\n              </Label>\n              <Input\n                id=\"requiredConfirmations\"\n                type=\"number\"\n                min={1}\n                max={owners.length}\n                value={requiredConfirmations}\n                onChange={(e) =>\n                  setRequiredConfirmations(parseInt(e.target.value))\n                }\n                className=\"bg-blue-700 border-blue-600 text-white\"\n                required\n              />\n            </div>\n            <Button\n              type=\"submit\"\n              className=\"w-full bg-neon-green text-blue-900 hover:bg-neon-green/90\"\n              disabled={isCreating}\n              onClick={async () => {\n                try {\n                  const success = await createMultiSig(\n                    owners,\n                    BigInt(requiredConfirmations)\n                  );\n                  alert(`Sucess: ${success}`)\n                } catch (e) {\n                  alert(e);\n                }\n              }}\n            >\n              {isCreating ? (\n                <>\n                  <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                  Creating...\n                </>\n              ) : (\n                \"Create Wallet\"\n              )}\n            </Button>\n          </form>\n        </CardContent>\n      </Card>\n    </div>\n  );\n}\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/create/multisigcreation.tsx",
    "content": "'use client'\n\nimport { useState } from 'react'\nimport { Button } from '@/components/ui/button'\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from '@/components/ui/dialog'\nimport CreateMultiSigWallet from './createmultisig'\nimport { Factory } from 'lucide-react'\n\nconst MultiSigCreationModal = ({isOpen, setIsOpen, provider, factory} : {isOpen: any, setIsOpen: any, provider: any, factory: any}) => {\n\n  return (\n    <div className=\"mb-8 space-x-4\">\n      <Dialog open={isOpen} onOpenChange={setIsOpen}>\n        <DialogTrigger asChild>\n          <Button className=\"flex items-center gap-2 px-4 py-2 text-xl font-bold text-white hover:bg-blue-800 rounded-lg\">\n            Create MultiSig\n          </Button>\n        </DialogTrigger>\n        <DialogContent\n          className=\"max-w-4xl max-h-screen overflow-y-auto bg-blue-900 text-white rounded-lg\"\n        >\n          <DialogHeader>\n            <DialogTitle className=\"text-2xl font-bold text-center\">\n              Create MultiSig\n            </DialogTitle>\n          </DialogHeader>\n          <CreateMultiSigWallet provider={provider} factory={factory} />\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n\nexport default MultiSigCreationModal\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/dashboard/page.tsx",
    "content": "\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { Search } from \"lucide-react\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { DashboardLayout } from \"@/components/DashboardLayout\";\nimport { client } from \"../client\";\nimport { useActiveAccount, ConnectButton} from \"thirdweb/react\";\nimport MultiSigCreationModal from \"../create/multisigcreation\";\nimport { ethers } from \"ethers\";\n\n// ABIs & Configs\nimport MultiSigFactory from \"../constants/MultiSigFactory.json\";\nimport config from \"../constants/config.json\";\n\n\nexport default function Dashboard() {\n  const [search, setSearch] = useState(\"\");\n  const [wallet, setWallet] = useState<{ walletAddress: string; timeCreated: bigint; balance: bigint; }[]>([]);\n\n  const [isOpen, setIsOpen] = useState(false)\n\n  const [factory, setFactory] = useState<ethers.Contract | undefined>(undefined);\n  const [provider, setProvider] = useState<ethers.BrowserProvider | undefined>(undefined);\n\n  const activeAccount = useActiveAccount();\n\n  async function loadBlockchainData() {\n    try {\n      if (typeof (window as any).ethereum !== \"undefined\") {\n        const provider = new ethers.BrowserProvider((window as any).ethereum);\n        setProvider(provider);\n        console.log(\"Ethereum provider detected\");\n\n        const signer = await provider.getSigner();\n\n        const network = await provider.getNetwork();\n        console.log(\"Network:\", network);\n\n        const chainId = network.chainId.toString();\n        const configData = config[`${network.chainId}` as keyof typeof config];\n        \n        if (!configData) {\n          console.error(`No configuration found for chain ID: ${chainId}`);\n          return;\n        }\n\n        const address = configData.factory.address as string;\n        \n        if (!address || address === \"\") {\n          console.error(\"Factory address is empty or undefined\");\n          return;\n        }\n\n        const contractFactory = new ethers.Contract(address, MultiSigFactory, provider);\n        console.log(contractFactory);\n\n        setFactory(contractFactory);\n\n        const smartWallet = await contractFactory.getDeployersWallets(signer.address);\n        console.log(`Deployer's wallets: ${smartWallet}`);\n\n        setWallet(smartWallet);\n\n      } else {\n        console.error(\"Ethereum provider not found!\")\n      }\n    } catch (error) {\n      console.error(\"Error loading blockchain data:\", error);\n    }\n  }\n\nuseEffect(() => {\n  loadBlockchainData();\n}, [isOpen]);\n\n  return (\n    <DashboardLayout>\n      <div className=\"flex items-center justify-between \">\n        <h1 className=\"text-3xl font-bold\">Wallet Dashboard</h1>\n        {/* <MultiSigCreationModal /> */}\n        {activeAccount?.address ? (\n          <MultiSigCreationModal isOpen={isOpen} setIsOpen={setIsOpen} provider={provider} factory={factory} />\n        ) : (\n          <ConnectButton client={client} />\n        )}\n      </div>\n\n      <div className=\"mb-8\">\n        <p className=\"text-lg mb-2\">Connected Wallet:</p>\n        <p className=\"text-neon-green\">\n          {activeAccount?.address || \"Not Connected\"}\n        </p>\n      </div>\n\n      <div className=\"mb-8\">\n        <div className=\"flex items-center mb-4\">\n          <Input\n            type=\"text\"\n            placeholder=\"Search wallets...\"\n            value={search}\n            onChange={(e) => setSearch(e.target.value)}\n            className=\"mr-4 bg-blue-800 border-blue-700 text-white placeholder-gray-400\"\n          />\n          <Button className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\">\n            <Search className=\"mr-2 h-4 w-4\" /> Search\n          </Button>\n        </div>\n        <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n  {wallet.map((wallet, index) => (\n    <Card\n      key={index}\n      className=\"bg-blue-800 border-blue-700 hover:shadow-lg transition-shadow\"\n    >\n      <CardHeader>\n        <CardTitle className=\"text-neon-green break-words text-sm\">\n          {wallet.walletAddress}\n        </CardTitle>\n      </CardHeader>\n      <CardContent>\n        <p className=\"mb-2\">Created on: {wallet.timeCreated}</p>\n        <p className=\"font-semibold\">Balance: {wallet.balance}</p>\n      </CardContent>\n    </Card>\n  ))}\n</div>\n\n      </div>\n    </DashboardLayout>\n  );\n}\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer utilities {\n  .border-border {\n  }\n  .bg-background {\n  }\n\n  .text-foreground{}\n}\n\n\n\n@layer base {\n  :root {\n    --background: 222.2 84% 4.9%;\n    --foreground: 210 40% 98%;\n    --card: 222.2 84% 4.9%;\n    --card-foreground: 210 40% 98%;\n    --popover: 222.2 84% 4.9%;\n    --popover-foreground: 210 40% 98%;\n    --primary: 217.2 91.2% 59.8%;\n    --primary-foreground: 222.2 47.4% 11.2%;\n    --secondary: 217.2 32.6% 17.5%;\n    --secondary-foreground: 210 40% 98%;\n    --muted: 217.2 32.6% 17.5%;\n    --muted-foreground: 215 20.2% 65.1%;\n    --accent: 217.2 32.6% 17.5%;\n    --accent-foreground: 210 40% 98%;\n    --destructive: 0 62.8% 30.6%;\n    --destructive-foreground: 210 40% 98%;\n    --border: 217.2 32.6% 17.5%;\n    --input: 217.2 32.6% 17.5%;\n    --ring: 224.3 76.3% 48%;\n    --radius: 0.5rem;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n\n.animate-fade-in {\n  animation: fadeIn 0.5s ease-out;\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n\n.animation-delay-200 {\n  animation-delay: 200ms;\n}\n\n.animation-delay-400 {\n  animation-delay: 400ms;\n}\n\n.animation-delay-600 {\n  animation-delay: 600ms;\n}\n\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/layout.tsx",
    "content": "import './globals.css'\nimport type { Metadata } from 'next'\nimport { Inter } from 'next/font/google'\nimport Link from 'next/link'\nimport { ThirdwebProvider } from 'thirdweb/react'\n\nconst inter = Inter({ subsets: ['latin'] })\n\nexport const metadata: Metadata = {\n  title: 'MultiSig Wallet',\n  description: 'Secure your digital assets with multi-signature protection',\n}\n\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <ThirdwebProvider>\n    <html lang=\"en\">\n      <body className={`${inter.className} bg-gray-900 text-white`}>\n        {children}\n      </body>\n    </html>\n    </ThirdwebProvider>\n  )\n}\n\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/linkdash.tsx",
    "content": "'use client'\n\nimport React from 'react'\nimport Link from 'next/link';\nimport { client } from \"./client\";\nimport {useActiveAccount } from \"thirdweb/react\";\n\nconst LinkDash = () => {\n\n    const activeAccount = useActiveAccount();\n  return (\n    <>\n    <div>\n        <Link\n                href={activeAccount?.address ? \"/dashboard\" : \"#\"}\n                className={`transition-colors ${\n                  activeAccount?.address\n                    ? \"hover:text-neon-green\"\n                    : \"text-gray-500 pointer-events-none\"\n                }`}\n              >\n                Dashboard\n              </Link>\n    </div>\n    </>\n  )\n}\n\nexport default LinkDash"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/owners/page.tsx",
    "content": "'use client'\n\nimport { useState } from 'react'\nimport { DashboardLayout } from '@/components/DashboardLayout'\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Label } from '@/components/ui/label'\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from '@/components/ui/table'\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from '@/components/ui/dialog'\n\n// Mock data for owners\nconst initialOwners = [\n  { address: '0x1234...5678', name: 'Alice' },\n  { address: '0xabcd...efgh', name: 'Bob' },\n  { address: '0x9876...5432', name: 'Charlie' },\n]\n\nexport default function OwnersPage() {\n  const [owners, setOwners] = useState(initialOwners)\n  const [isOpen, setIsOpen] = useState(false)\n  const [newOwnerAddress, setNewOwnerAddress] = useState('')\n  const [newOwnerName, setNewOwnerName] = useState('')\n\n  const handleAddOwner = (e: React.FormEvent) => {\n    e.preventDefault()\n    if (newOwnerAddress && newOwnerName) {\n      setOwners([...owners, { address: newOwnerAddress, name: newOwnerName }])\n      setNewOwnerAddress('')\n      setNewOwnerName('')\n      setIsOpen(false)\n    }\n  }\n\n  return (\n    <DashboardLayout>\n      <h1 className=\"text-3xl font-bold mb-8\">Manage Owners</h1>\n\n      <div className=\"mb-8\">\n        <Dialog open={isOpen} onOpenChange={setIsOpen}>\n          <DialogTrigger asChild>\n            <Button className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\">Add New Owner</Button>\n          </DialogTrigger>\n          <DialogContent className=\"bg-blue-900 text-white\">\n            <DialogHeader>\n              <DialogTitle>Add New Owner</DialogTitle>\n            </DialogHeader>\n            <form onSubmit={handleAddOwner} className=\"space-y-4\">\n              <div>\n                <Label htmlFor=\"address\">Owner Address</Label>\n                <Input\n                  id=\"address\"\n                  value={newOwnerAddress}\n                  onChange={(e) => setNewOwnerAddress(e.target.value)}\n                  className=\"bg-blue-800 border-blue-700 text-white\"\n                />\n              </div>\n              <div>\n                <Label htmlFor=\"name\">Owner Name</Label>\n                <Input\n                  id=\"name\"\n                  value={newOwnerName}\n                  onChange={(e) => setNewOwnerName(e.target.value)}\n                  className=\"bg-blue-800 border-blue-700 text-white\"\n                />\n              </div>\n              <Button type=\"submit\" className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\">Add Owner</Button>\n            </form>\n          </DialogContent>\n        </Dialog>\n      </div>\n\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Owner Address</TableHead>\n            <TableHead>Name</TableHead>\n            <TableHead>Actions</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {owners.map((owner, index) => (\n            <TableRow key={index} className=\"hover:bg-blue-800/50 transition-colors\">\n              <TableCell>{owner.address}</TableCell>\n              <TableCell>{owner.name}</TableCell>\n              <TableCell>\n                <Button variant=\"destructive\" size=\"sm\">Remove</Button>\n              </TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </DashboardLayout>\n  )\n}\n\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/page.tsx",
    "content": "'use cllient'\n\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport { Shield, FileText, Key } from \"lucide-react\";\nimport { client } from \"./client\";\nimport { ConnectButton } from \"thirdweb/react\";\nimport LinkDash from \"./linkdash\";\n\nimport { Button } from \"@/components/ui/button\";\n\nexport default function Home() {\n\n  return (\n    <div className=\"min-h-screen bg-gradient-to-b from-gray-900 to-blue-900 text-white\">\n      <header className=\"container mx-auto px-4 py-6\">\n        <nav className=\"flex items-center justify-between\">\n          <div className=\"text-2xl font-bold\">MultiSig Wallet</div>\n          <ul className=\"flex space-x-6\">\n            <li>\n              <Link\n                href=\"/\"\n                className=\"hover:text-neon-green transition-colors\"\n              >\n                Home\n              </Link>\n            </li>\n            <li> <LinkDash /> </li>\n            <li>\n              <ConnectButton client={client} />\n            </li>\n          </ul>\n        </nav>\n      </header>\n\n      <main>\n        <section className=\"hero container mx-auto px-4 py-24 text-center\">\n          <h1 className=\"text-5xl font-bold mb-6 animate-fade-in\">\n            Secure Your Digital Assets with Multi-Signature Protection\n          </h1>\n          <p className=\"text-xl mb-8 animate-fade-in animation-delay-200\">\n            Collaborate and safeguard your funds with a decentralized multi-sig\n            wallet.\n          </p>\n          <Button className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90 transition-colors animate-fade-in animation-delay-400\">\n            Get Started\n          </Button>\n          <div className=\"mt-12\">\n            <Image\n              src=\"/banner.jpg\"\n              alt=\"Secure Digital Vault\"\n              width={900}\n              height={500}\n              className=\"mx-auto rounded-lg shadow-lg animate-fade-in animation-delay-600\"\n            />\n          </div>\n        </section>\n\n        <section className=\"features container mx-auto px-4 py-24\">\n          <h2 className=\"text-3xl font-bold text-center mb-12\">Our Features</h2>\n          <div className=\"grid grid-cols-1 md:grid-cols-3 gap-8\">\n            <div className=\"feature-card bg-blue-800 p-6 rounded-lg shadow-lg transition-transform hover:scale-105\">\n              <Shield className=\"w-12 h-12 text-neon-green mb-4\" />\n              <h3 className=\"text-xl font-semibold mb-2\">\n                Create Multi-Sig Wallet\n              </h3>\n              <p>\n                Secure your assets with multiple signatures for enhanced\n                protection.\n              </p>\n            </div>\n            <div className=\"feature-card bg-blue-800 p-6 rounded-lg shadow-lg transition-transform hover:scale-105\">\n              <FileText className=\"w-12 h-12 text-neon-green mb-4\" />\n              <h3 className=\"text-xl font-semibold mb-2\">\n                Manage Transactions\n              </h3>\n              <p>\n                Easily submit, confirm, and track all your wallet transactions.\n              </p>\n            </div>\n            <div className=\"feature-card bg-blue-800 p-6 rounded-lg shadow-lg transition-transform hover:scale-105\">\n              <Key className=\"w-12 h-12 text-neon-green mb-4\" />\n              <h3 className=\"text-xl font-semibold mb-2\">Connect Securely</h3>\n              <p>Use your preferred wallet to connect and interact securely.</p>\n            </div>\n          </div>\n        </section>\n      </main>\n\n      <footer className=\"container mx-auto px-4 py-6 text-center\">\n        <p>&copy; 2025 MultiSig Wallet. All rights reserved.</p>\n      </footer>\n    </div>\n  );\n}\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/wallet/DialogBoxes/Confirm.tsx",
    "content": "import React, {useState} from 'react';\nimport {\n    Dialog,\n    DialogContent,\n    DialogHeader,\n    DialogTitle,\n    DialogTrigger,\n  } from '@/components/ui/dialog'\n  import { Input } from '@/components/ui/input'\n  import { Label } from '@/components/ui/label'\n  import { Button } from '@/components/ui/button'\n  import { ethers } from 'ethers';\n\nconst ConfirmTxn = ({factory, tempAddress} : {factory: ethers.Contract, tempAddress: string}) => {\n\n    const [isOpen, setIsOpen] = useState(false);\n    const [value, setValue] = useState(\"\");\n\n    async function confirmTxn(addressSig: string, amount: bigint) {\n\n        console.log(\"Confirming proposal....\")\n      \n        // Call the submitTransaction function\n        const transaction = await factory.confirmTransaction(addressSig, amount);\n        await transaction.wait();\n     }\n\n\n  return (\n    <Dialog open={isOpen} onOpenChange={setIsOpen}>\n    <DialogTrigger asChild>\n      <Button className=\"bg-blue-700 hover:bg-blue-600\">Confirm Proposal</Button>\n    </DialogTrigger>\n    <DialogContent className=\"bg-blue-900 text-white\">\n      <DialogHeader>\n        <DialogTitle>Confirm Transaction</DialogTitle>\n      </DialogHeader>\n      <form className=\"space-y-4\">\n        <div>\n          <Label htmlFor=\"value\">Proposal Index</Label>\n          <Input id=\"value\" type=\"number\" step=\"0.01\" className=\"bg-blue-800 border-blue-700 text-white\" value={value} onChange={(e) => setValue(e.target.value)}/>\n        </div>\n        \n      </form>\n      <Button type=\"submit\" className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\" onClick={async() => {\n        try {\n          \n          const success = await confirmTxn(tempAddress, BigInt(value));\n\n          alert(`Proposal Confirmed!`);\n\n        } catch(e) {\n          console.log(e);\n          alert(\"Already confirmed\")\n        }\n      }}>Confirm</Button>\n    </DialogContent>\n  </Dialog>\n  )\n}\n\nexport default ConfirmTxn\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/wallet/DialogBoxes/Execute.tsx",
    "content": "import React, {useState} from 'react';\nimport {\n    Dialog,\n    DialogContent,\n    DialogHeader,\n    DialogTitle,\n    DialogTrigger,\n  } from '@/components/ui/dialog'\n  import { Input } from '@/components/ui/input'\n  import { Label } from '@/components/ui/label'\n  import { Button } from '@/components/ui/button'\n  import { ethers } from 'ethers';\n\nconst ExecuteTxn = ({factory, tempAddress} : {factory: ethers.Contract, tempAddress: string}) => {\n\n    const [isOpen, setIsOpen] = useState(false);\n    const [value, setValue] = useState(\"\");\n\n    async function executeTxn(addressSig: string, amount: bigint) {\n\n        console.log(\"Executing proposal....\")\n      \n        // Call the executeTransaction function\n        const transaction = await factory.executeTransaction(addressSig, amount);\n        await transaction.wait();\n     }\n\n\n  return (\n    <Dialog open={isOpen} onOpenChange={setIsOpen}>\n    <DialogTrigger asChild>\n      <Button className=\"bg-red-700 hover:bg-red-600\">Execute Proposal</Button>\n    </DialogTrigger>\n    <DialogContent className=\"bg-blue-900 text-white\">\n      <DialogHeader>\n        <DialogTitle>Execute Transaction</DialogTitle>\n      </DialogHeader>\n      <form className=\"space-y-4\">\n        <div>\n          <Label htmlFor=\"value\">Proposal Index</Label>\n          <Input id=\"value\" type=\"number\" step=\"1\" className=\"bg-blue-800 border-blue-700 text-white\" value={value} onChange={(e) => setValue(e.target.value)}/>\n        </div>\n        \n      </form>\n      <Button type=\"submit\" className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\" onClick={async() => {\n        try {\n          \n          const success = await executeTxn(tempAddress, BigInt(value));\n\n          alert(`Proposal Execute!`);\n\n        } catch(e) {\n          console.log(e);\n          alert(\"No Proposal!\")\n        }\n      }}>Execute</Button>\n    </DialogContent>\n  </Dialog>\n  )\n}\n\nexport default ExecuteTxn\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/wallet/DialogBoxes/Revoke.tsx",
    "content": "import React, {useState} from 'react';\nimport {\n    Dialog,\n    DialogContent,\n    DialogHeader,\n    DialogTitle,\n    DialogTrigger,\n  } from '@/components/ui/dialog'\n  import { Input } from '@/components/ui/input'\n  import { Label } from '@/components/ui/label'\n  import { Button } from '@/components/ui/button'\n  import { ethers } from 'ethers';\n\nconst RevokeTxn = ({factory, tempAddress} : {factory: ethers.Contract, tempAddress: string}) => {\n\n    const [isOpen, setIsOpen] = useState(false);\n    const [value, setValue] = useState(\"\");\n\n    async function confirmTxn(addressSig: string, amount: bigint) {\n\n        console.log(\"Revoking proposal....\")\n      \n        // Call the submitTransaction function\n        const transaction = await factory. revokeConfirmedTransaction(addressSig, amount);\n        await transaction.wait();\n     }\n\n\n  return (\n    <Dialog open={isOpen} onOpenChange={setIsOpen}>\n    <DialogTrigger asChild>\n      <Button className=\"bg-red-700 hover:bg-red-600\">Revoke confirmed Proposal</Button>\n    </DialogTrigger>\n    <DialogContent className=\"bg-blue-900 text-white\">\n      <DialogHeader>\n        <DialogTitle>Revoke Transaction</DialogTitle>\n      </DialogHeader>\n      <form className=\"space-y-4\">\n        <div>\n          <Label htmlFor=\"value\">Proposal Index</Label>\n          <Input id=\"value\" type=\"number\" step=\"1\" className=\"bg-blue-800 border-blue-700 text-white\" value={value} onChange={(e) => setValue(e.target.value)}/>\n        </div>\n        \n      </form>\n      <Button type=\"submit\" className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\" onClick={async() => {\n        try {\n          \n          const success = await confirmTxn(tempAddress, BigInt(value));\n\n          alert(`Proposal Revoked!`);\n\n        } catch(e) {\n          console.log(e);\n          alert(\"No confirmation\")\n        }\n      }}>Revoke</Button>\n    </DialogContent>\n  </Dialog>\n  )\n}\n\nexport default RevokeTxn\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/wallet/DialogBoxes/Submit.tsx",
    "content": "import React, {useState} from 'react';\nimport {\n    Dialog,\n    DialogContent,\n    DialogHeader,\n    DialogTitle,\n    DialogTrigger,\n  } from '@/components/ui/dialog'\n  import { Input } from '@/components/ui/input'\n  import { Label } from '@/components/ui/label'\n  import { Button } from '@/components/ui/button'\n  import { ethers } from 'ethers';\n\nconst SubmitTxn = ({factory, tempAddress} : {factory: ethers.Contract, tempAddress: string}) => {\n\n    const [isOpen, setIsOpen] = useState(false);\n    const [recipient, setRecipient] = useState(\"\");\n    const [value, setValue] = useState(\"\");\n    const [description, setDescription] = useState(\"\");\n\n    async function submitTxn(addressSig: string, addressTo: string, amount: bigint, description: string) {\n        try {\n            console.log(\"Submitting proposals....\")\n            console.log(\"Wallet address (addressSig):\", addressSig);\n            console.log(\"Recipient address (addressTo):\", addressTo);\n            \n            // Validate inputs\n            if (!addressSig || addressSig === \"\" || addressSig.trim() === \"\") {\n                console.error(\"Wallet address is empty or invalid:\", addressSig);\n                throw new Error(\"Invalid wallet address: Please add a MultiSig wallet address first\");\n            }\n            \n            // Validate wallet address format\n            if (!ethers.isAddress(addressSig)) {\n                console.error(\"Wallet address format is invalid:\", addressSig);\n                throw new Error(`Invalid wallet address format: ${addressSig}`);\n            }\n            \n            if (!addressTo || addressTo === \"\") {\n                throw new Error(\"Recipient address is required\");\n            }\n            \n            if (!ethers.isAddress(addressTo)) {\n                throw new Error(\"Invalid recipient address format\");\n            }\n            \n            if (amount <= 0n) {\n                throw new Error(\"Amount must be greater than 0\");\n            }\n            \n            if (!description || description === \"\") {\n                throw new Error(\"Description is required\");\n            }\n          \n            // Call the submitTransaction function\n            const transaction = await factory.submitTransaction(addressSig, addressTo, amount, description);\n            await transaction.wait();\n            \n            console.log(\"Transaction submitted successfully!\");\n            return true;\n        } catch (error) {\n            console.error(\"Error submitting transaction:\", error);\n            throw error;\n        }\n     }\n\n\n  return (\n    <Dialog open={isOpen} onOpenChange={setIsOpen}>\n    <DialogTrigger asChild>\n      <Button className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\">Submit Transaction</Button>\n    </DialogTrigger>\n    <DialogContent className=\"bg-blue-900 text-white\">\n      <DialogHeader>\n        <DialogTitle>Submit Transaction</DialogTitle>\n      </DialogHeader>\n      <form className=\"space-y-4\">\n        <div>\n          <Label htmlFor=\"recipient\">Recipient Address</Label>\n          <Input id=\"recipient\" className=\"bg-blue-800 border-blue-700 text-white\" value={recipient} onChange={(e) => setRecipient(e.target.value)}/>\n        </div>\n        <div>\n          <Label htmlFor=\"value\">Value (Core)</Label>\n          <Input id=\"value\" type=\"number\" step=\"0.01\" className=\"bg-blue-800 border-blue-700 text-white\" value={value} onChange={(e) => setValue(e.target.value)}/>\n        </div>\n        <div>\n          <Label htmlFor=\"data\">Description</Label>\n          <Input id=\"data\" className=\"bg-blue-800 border-blue-700 text-white\" value={description} onChange={(e) => setDescription(e.target.value)} />\n        </div>\n        \n      </form>\n      <Button type=\"submit\" className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\" onClick={async() => {\n        try {\n          // Log the tempAddress value for debugging\n          console.log(\"tempAddress received:\", tempAddress);\n          console.log(\"tempAddress type:\", typeof tempAddress);\n          console.log(\"tempAddress length:\", tempAddress?.length);\n          \n          // Validate wallet address first\n          if (!tempAddress || tempAddress.trim() === \"\") {\n            alert(\"Please add a MultiSig wallet address first using the 'Add MultiSig' button\");\n            return;\n          }\n          \n          if (!ethers.isAddress(tempAddress)) {\n            alert(`Invalid MultiSig wallet address format: ${tempAddress}`);\n            return;\n          }\n          \n          // Validate form inputs\n          if (!recipient || recipient === \"\") {\n            alert(\"Please enter a recipient address\");\n            return;\n          }\n          \n          if (!ethers.isAddress(recipient)) {\n            alert(\"Invalid recipient address format\");\n            return;\n          }\n          \n          if (!value || value === \"\" || parseFloat(value) <= 0) {\n            alert(\"Please enter a valid amount\");\n            return;\n          }\n          \n          if (!description || description === \"\") {\n            alert(\"Please enter a description\");\n            return;\n          }\n          \n          // Convert value to wei (assuming Core uses 18 decimals like Ethereum)\n          const amountInWei = ethers.parseEther(value);\n          \n          console.log(\"Calling submitTxn with:\", {\n            walletAddress: tempAddress,\n            recipient: recipient,\n            amount: amountInWei.toString(),\n            description: description\n          });\n          \n          const success = await submitTxn(tempAddress, recipient, amountInWei, description);\n\n          if (success) {\n            alert(`Proposal submitted successfully!`);\n            setIsOpen(false);\n            // Reset form\n            setRecipient(\"\");\n            setValue(\"\");\n            setDescription(\"\");\n          }\n\n        } catch(e: any) {\n          console.error(\"Error:\", e);\n          alert(`Error: ${e.message || \"Failed to submit transaction\"}`);\n        }\n      }}>Submit</Button>\n    </DialogContent>\n  </Dialog>\n  )\n}\n\nexport default SubmitTxn\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/app/wallet/page.tsx",
    "content": "'use client'\n\nimport { useEffect, useState } from 'react'\nimport { Button } from '@/components/ui/button'\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from '@/components/ui/table'\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from '@/components/ui/dialog'\nimport { Input } from '@/components/ui/input'\nimport { Label } from '@/components/ui/label'\nimport { DashboardLayout } from '@/components/DashboardLayout'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { AlertCircle, CheckCircle, XCircle } from 'lucide-react'\nimport { client } from \"../client\"\nimport { useActiveAccount, ConnectButton } from \"thirdweb/react\";\nimport { ethers } from 'ethers';\nimport SubmitTxn from './DialogBoxes/Submit'\n\n// ABIs & Configs\nimport MultiSigFactory from \"../constants/MultiSigFactory.json\";\nimport config from \"../constants/config.json\";\nimport ConfirmTxn from './DialogBoxes/Confirm'\nimport RevokeTxn from './DialogBoxes/Revoke'\nimport ExecuteTxn from './DialogBoxes/Execute'\n\n// Mock data for transactions\nconst transactions = [\n  { id: '1', recipient: '0x1234...5678', value: '1.5', status: 'Pending', confirmations: 1 },\n  { id: '2', recipient: '0xabcd...efgh', value: '0.5', status: 'Executed', confirmations: 3 },\n  { id: '3', recipient: '0x9876...5432', value: '2.0', status: 'Rejected', confirmations: 2 },\n]\n\n\n\nexport default function WalletPage() {\n\n  const activeAccount = useActiveAccount();\n  \n  const [isOpen, setIsOpen] = useState(false);\n  const [isAdd, setIsAdd] = useState(false);\n  const [isWallet, setIsWallet] = useState(\"\");\n  const [tempAddress, setTempAddress] = useState(\"\"); // Temporary variable for input\n  const [factory, setFactory] = useState<ethers.Contract | any>();\n  const [provider, setProvider] = useState<ethers.BrowserProvider | undefined>(undefined);\n  const [proposals, setProposals] = useState<any[]>([])\n\n  async function loadBlockchainData() {\n    try {\n      if (typeof (window as any).ethereum !== \"undefined\") {\n        const provider = new ethers.BrowserProvider((window as any).ethereum);\n\n        console.log(\"Loading Blockchain data...\");\n    \n        const signer = await provider.getSigner();\n    \n        const network = await provider.getNetwork();\n        console.log(\"Network:\", network);\n    \n        const chainId = network.chainId.toString();\n        const configData = config[`${network.chainId}` as keyof typeof config];\n        \n        if (!configData) {\n          console.error(`No configuration found for chain ID: ${chainId}`);\n          return;\n        }\n\n        const address = configData.factory.address as string;\n        \n        if (!address || address === \"\") {\n          console.error(\"Factory address is empty or undefined\");\n          return;\n        }\n    \n        const contractFactory = new ethers.Contract(address, MultiSigFactory, signer);\n        console.log(contractFactory);\n        setFactory(contractFactory)\n    \n        console.log(\"Data loading done!\");\n      }\n    } catch (error) {\n      console.error(\"Error loading blockchain data:\", error);\n    }\n  }\n\n\n\n  useEffect(() => {\n    loadBlockchainData();\n  }, []);\n\n  const handleSubmit = () => {\n    // Validate address before setting\n    if (!tempAddress || tempAddress.trim() === \"\") {\n      alert(\"Please enter a MultiSig wallet address\");\n      return;\n    }\n    \n    if (!ethers.isAddress(tempAddress)) {\n      alert(`Invalid wallet address format: ${tempAddress}`);\n      return;\n    }\n    \n    setIsWallet(tempAddress); // Update isWallet only after submitting\n    console.log(\"Wallet Address Added:\", tempAddress);\n    setIsAdd(false); // Close the dialog after successful submission\n  };\n\n  const getStatusIcon = (status: string) => {\n    switch (status) {\n      case 'Pending':\n        return <AlertCircle className=\"h-5 w-5 text-yellow-500\" />\n      case 'Executed':\n        return <CheckCircle className=\"h-5 w-5 text-green-500\" />\n      case 'Rejected':\n        return <XCircle className=\"h-5 w-5 text-red-500\" />\n      default:\n        return null\n    }\n  }\n\n  return (\n    <DashboardLayout>\n      <div className=\"flex items-center justify-between mb-9\">\n        <div>\n            <h1 className=\"text-3xl font-bold\">\n            Wallet: \n          </h1>\n          <p>{activeAccount?.address || \"Not connected\"}</p>\n        </div>\n      \n      {activeAccount?.address ? (\n        <>\n        <Dialog open={isAdd} onOpenChange={setIsAdd}>\n        <DialogTrigger asChild>\n          <Button className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\">Add MultiSig</Button>\n        </DialogTrigger>\n        <DialogContent className=\"bg-blue-900 text-white\">\n          <DialogHeader>\n            <DialogTitle>Interact with MultiSig</DialogTitle>\n          </DialogHeader>\n          <form className=\"space-y-4\">\n            <div>\n              <Label htmlFor=\"address\">MultiSig Address</Label>\n              <Input\n                id=\"address\"\n                value={tempAddress}\n                onChange={(e) => setTempAddress(e.target.value)}\n                className=\"bg-blue-800 border-blue-700 text-white\"\n              />\n            </div>\n          </form>\n          <Button className=\"bg-neon-green text-blue-900 hover:bg-neon-green/90\" onClick={() => handleSubmit()}>Add Wallet</Button>\n        </DialogContent>\n      </Dialog>\n      <p>{isWallet}</p>\n      </>\n      ) : (\n        <ConnectButton client={client} />\n      )}\n    </div>\n      \n      \n      <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6 mb-8\">\n        <Card className=\"bg-blue-800 border-blue-700\">\n          <CardHeader>\n            <CardTitle>Balance</CardTitle>\n          </CardHeader>\n          <CardContent>\n            <p className=\"text-2xl font-bold text-neon-green\">25.5 ETH</p>\n          </CardContent>\n        </Card>\n        <Card className=\"bg-blue-800 border-blue-700\">\n          <CardHeader>\n            <CardTitle>Owners</CardTitle>\n          </CardHeader>\n          <CardContent>\n            <p className=\"text-2xl font-bold\">3/5</p>\n          </CardContent>\n        </Card>\n        <Card className=\"bg-blue-800 border-blue-700\">\n          <CardHeader>\n            <CardTitle>Confirmations</CardTitle>\n          </CardHeader>\n          <CardContent>\n            <p className=\"text-2xl font-bold\">2</p>\n          </CardContent>\n        </Card>\n      </div>\n\n      <div className=\"mb-8 space-x-4\">\n\n        <SubmitTxn factory={factory} tempAddress={isWallet || tempAddress} />\n\n        <ConfirmTxn factory={factory} tempAddress={isWallet || tempAddress} />\n\n        <RevokeTxn factory={factory} tempAddress={isWallet || tempAddress} />\n\n        <ExecuteTxn factory={factory} tempAddress={isWallet || tempAddress} />\n        \n      </div>\n\n      <Table>\n        <TableHeader>\n          <TableRow>\n            <TableHead>Transaction ID</TableHead>\n            <TableHead>Recipient Address</TableHead>\n            <TableHead>Value (ETH)</TableHead>\n            <TableHead>Status</TableHead>\n            <TableHead>Confirmations</TableHead>\n          </TableRow>\n        </TableHeader>\n        <TableBody>\n          {transactions.map((tx) => (\n            <TableRow key={tx.id} className=\"hover:bg-blue-800/50 transition-colors\">\n              <TableCell>{tx.id}</TableCell>\n              <TableCell>{tx.recipient}</TableCell>\n              <TableCell>{tx.value}</TableCell>\n              <TableCell className=\"flex items-center\">\n                {getStatusIcon(tx.status)}\n                <span className=\"ml-2\">{tx.status}</span>\n              </TableCell>\n              <TableCell>{tx.confirmations}</TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </DashboardLayout>\n  )\n}\n\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/components/DashboardLayout.tsx",
    "content": "import Link from 'next/link'\nimport { Home, FileText, Users, Settings } from 'lucide-react'\n\ninterface DashboardLayoutProps {\n  children: React.ReactNode\n}\n\nexport function DashboardLayout({ children }: DashboardLayoutProps) {\n  return (\n    <div className=\"flex h-screen bg-gray-900 text-white\">\n      <aside className=\"w-64 bg-blue-900 p-6\">\n        <div className=\"text-2xl font-bold mb-8\">MultiSig Wallet</div>\n        <nav>\n          <ul className=\"space-y-4\">\n            <li>\n              <Link href=\"/dashboard\" className=\"flex items-center py-2 px-4 hover:bg-blue-800 rounded transition-colors\">\n                <Home className=\"mr-2 h-4 w-4\" />\n                Dashboard\n              </Link>\n            </li>\n            <li>\n              <Link href=\"/wallet\" className=\"flex items-center py-2 px-4 hover:bg-blue-800 rounded transition-colors\">\n                <FileText className=\"mr-2 h-4 w-4\" />\n                Transactions\n              </Link>\n            </li>\n            <li>\n              <Link href=\"/owners\" className=\"flex items-center py-2 px-4 hover:bg-blue-800 rounded transition-colors\">\n                <Users className=\"mr-2 h-4 w-4\" />\n                Owners\n              </Link>\n            </li>\n            {/* <li>\n              <Link href=\"/settings\" className=\"flex items-center py-2 px-4 hover:bg-blue-800 rounded transition-colors\">\n                <Settings className=\"mr-2 h-4 w-4\" />\n                Settings\n              </Link>\n            </li> */}\n          </ul>\n        </nav>\n      </aside>\n      \n      <main className=\"flex-1 p-8 overflow-auto\">\n        {children}\n      </main>\n    </div>\n  )\n}\n\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/components/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2\",\n        sm: \"h-8 rounded-md px-3 text-xs\",\n        lg: \"h-10 rounded-md px-8\",\n        icon: \"h-9 w-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\"\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/components/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-xl border bg-card text-card-foreground shadow\",\n      className\n    )}\n    {...props}\n  />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"font-semibold leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/components/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-1.5 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\n      \"text-lg font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogTrigger,\n  DialogClose,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n}\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/components/ui/input.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/components/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n  \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n    VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn(labelVariants(), className)}\n    {...props}\n  />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/components/ui/table.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n  HTMLTableElement,\n  React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n  <div className=\"relative w-full overflow-auto\">\n    <table\n      ref={ref}\n      className={cn(\"w-full caption-bottom text-sm\", className)}\n      {...props}\n    />\n  </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tbody\n    ref={ref}\n    className={cn(\"[&_tr:last-child]:border-0\", className)}\n    {...props}\n  />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tfoot\n    ref={ref}\n    className={cn(\n      \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n      className\n    )}\n    {...props}\n  />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n  HTMLTableRowElement,\n  React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n  <tr\n    ref={ref}\n    className={cn(\n      \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n      className\n    )}\n    {...props}\n  />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n  HTMLTableCellElement,\n  React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <th\n    ref={ref}\n    className={cn(\n      \"h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n      className\n    )}\n    {...props}\n  />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n  HTMLTableCellElement,\n  React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <td\n    ref={ref}\n    className={cn(\n      \"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n      className\n    )}\n    {...props}\n  />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n  HTMLTableCaptionElement,\n  React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n  <caption\n    ref={ref}\n    className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "12-Core-MultiSig/Frontend/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/next.config.ts",
    "content": "import type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n  /* config options here */\n};\n\nexport default nextConfig;\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/package.json",
    "content": "{\n  \"name\": \"reusable\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-dialog\": \"1.1.4\",\n    \"@radix-ui/react-label\": \"2.1.1\",\n    \"@radix-ui/react-slot\": \"1.1.1\",\n    \"class-variance-authority\": \"0.7.0\",\n    \"clsx\": \"2.1.1\",\n    \"dotenv\": \"16.4.7\",\n    \"ethers\": \"6.13.5\",\n    \"lucide-react\": \"0.454.0\",\n    \"next\": \"15.0.2\",\n    \"react\": \"19.2.0\",\n    \"react-dom\": \"19.2.0\",\n    \"tailwind-merge\": \"2.5.4\",\n    \"tailwindcss-animate\": \"1.0.7\",\n    \"thirdweb\": \"5.86.2\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"^19\",\n    \"@types/react-dom\": \"^19\",\n    \"eslint\": \"^8\",\n    \"eslint-config-next\": \"15.0.2\",\n    \"postcss\": \"^8\",\n    \"tailwindcss\": \"^3.4.1\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n  plugins: {\n    tailwindcss: {},\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/tailwind.config.js",
    "content": "module.exports = {\n  darkMode: [\"class\"],\n  content: [\n    './pages/**/*.{ts,tsx}',\n    './components/**/*.{ts,tsx}',\n    './app/**/*.{ts,tsx}',\n    './src/**/*.{ts,tsx}',\n\t],\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      colors: {\n        'neon-green': '#39FF14',\n      },\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: 0 },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: 0 },\n        },\n        \"fade-in\": {\n          \"0%\": { opacity: 0 },\n          \"100%\": { opacity: 1 },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n        \"fade-in\": \"fade-in 1s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n}\n\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\";\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n\t\tborderColor: {\n\t\t\tborder: 'hsl(var(border-border))', // Explicitly add `border-border` as a utility\n\t\t  },\n  \t\tcolors: {\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t},\n  \t\t\tpopover: {\n  \t\t\t\tDEFAULT: 'hsl(var(--popover))',\n  \t\t\t\tforeground: 'hsl(var(--popover-foreground))'\n  \t\t\t},\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tsecondary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--secondary))',\n  \t\t\t\tforeground: 'hsl(var(--secondary-foreground))'\n  \t\t\t},\n  \t\t\tmuted: {\n  \t\t\t\tDEFAULT: 'hsl(var(--muted))',\n  \t\t\t\tforeground: 'hsl(var(--muted-foreground))'\n  \t\t\t},\n  \t\t\taccent: {\n  \t\t\t\tDEFAULT: 'hsl(var(--accent))',\n  \t\t\t\tforeground: 'hsl(var(--accent-foreground))'\n  \t\t\t},\n  \t\t\tdestructive: {\n  \t\t\t\tDEFAULT: 'hsl(var(--destructive))',\n  \t\t\t\tforeground: 'hsl(var(--destructive-foreground))'\n  \t\t\t},\n  \t\t\tborder: 'hsl(var(--border))',\n  \t\t\tinput: 'hsl(var(--input))',\n  \t\t\tring: 'hsl(var(--ring))',\n  \t\t\tchart: {\n  \t\t\t\t'1': 'hsl(var(--chart-1))',\n  \t\t\t\t'2': 'hsl(var(--chart-2))',\n  \t\t\t\t'3': 'hsl(var(--chart-3))',\n  \t\t\t\t'4': 'hsl(var(--chart-4))',\n  \t\t\t\t'5': 'hsl(var(--chart-5))'\n  \t\t\t}\n  \t\t},\n  \t\tborderRadius: {\n  \t\t\tlg: 'var(--radius)',\n  \t\t\tmd: 'calc(var(--radius) - 2px)',\n  \t\t\tsm: 'calc(var(--radius) - 4px)'\n  \t\t}\n  \t}\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n};\nexport default config;\n"
  },
  {
    "path": "12-Core-MultiSig/Frontend/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "12-Core-MultiSig/README.md",
    "content": "# MultiSig Wallet Factory\n\nWelcome to the MultiSig Wallet Factory project! This blockchain-based application enables users to easily deploy and manage multisignature (multisig) wallets for various use cases, enhancing security and collaborative control over assets.\n\n## Features\n\n- **Easy Deployment**: Deploy multisig wallets with a user-friendly interface.\n- **Customizable Ownership**: Define multiple owners for each wallet, specifying the number of required confirmations for transactions.\n- **Secure Transactions**: Ensure that transactions are executed only after the necessary approvals, enhancing security.\n- **Wallet Monitoring**: Track and monitor deployed wallets and their activities.\n\n## Getting Started\n\nFollow these instructions to set up and run the project locally.\n\n### Prerequisites\n\nEnsure you have the following installed:\n\n- [Node.js](https://nodejs.org/) (v16 LTS)\n- [Yarn](https://yarnpkg.com/)\n- [Git](https://git-scm.com/)\n\n### Installation\n\n1. **Clone the Repository**:\n\n   ```bash\n   git clone https://github.com/coredao-org/dapp-tutorial.git\n   cd dapp-tutorial/12-Core-MultiSig\n   ```\n\n2. **Install Dependencies**:\n\n   ```bash\n   npm install\n   ```\n\n### Running the Application\n\n1. **Start the Local Blockchain**:\n\n   ```bash\n   npx hardhat node\n   ```\n\n   This command starts a local Hardhat blockchain instance.\n\n2. **Deploy Contracts**:\n\n   ```bash\n   npx hardhat run scripts/deploy-multisig.js --network localhost \"For Local Blockchain\"\n   npx hardhat run scripts/deploy-multisig.js --network core \"For Core Blockchain\"\n   ```\n\n   This command deploys the multisig wallet contracts to the local or core blockchain.\n\n3. **Start the Frontend Application**:\n\n   ```bash\n   cd MultiSig-Wallet-Factory/Frontend\n   npm start\n   ```\n\n   This command starts the React frontend application.\n\n4. **Access the Application**:\n\n   Open your browser and navigate to `http://localhost:3000` to interact with the application.\n\n## Usage\n\n- **Create a Multisig Wallet**:\n\n  - Navigate to the \"Create Wallet\" section.\n  - Enter the addresses of the owners and specify the number of required confirmations.\n  - Click \"Create\" to deploy the wallet.\n\n- **Manage Wallets**:\n\n  - View a list of deployed wallets in the \"My Wallets\" section.\n  - Select a wallet to view details, propose transactions, and monitor activities.\n\n## Project Structure\n\n- **Frontend**: Located in the `Frontend` directory, built with React.\n- **Contracts**: Solidity contracts are in the `contracts` directory.\n- **Deployment Scripts**: Found in the `scripts` directory, used for deploying contracts.\n- **Tests**: Located in the `test` directory, containing test cases for the contracts.\n\n## Contributing\n\nContributions are welcome! Please follow these steps:\n\n1. Fork the repository.\n2. Create a new branch (`git checkout -b feature/YourFeature`).\n3. Commit your changes (`git commit -m 'Add YourFeature'`).\n4. Push to the branch (`git push origin feature/YourFeature`).\n5. Open a Pull Request.\n"
  },
  {
    "path": "12-Core-MultiSig/contracts/MultiSig.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.27;\n\n// import \"hardhat/console.sol\";\n\nerror MultiSig__OwnersRequired();\nerror MultiSig__InvalidAddress();\nerror MultiSig__NotConfirmed();\nerror MultiSig__AlreadyConfirmed();\nerror MultiSig__ProposalNotExists();\nerror MultiSig__AlreadyExecuted();\nerror MultiSig__NotEnoughConfirmations();\nerror MultiSig__NotOwner();\nerror MultiSig__TransferFailed();\n\ncontract MultiSig {\n    uint256 private deployedTime;\n    address private deployer;\n    address[] private owners;\n    uint private noOfConfirmationsNeeded;\n    address private immutable sigFactory;\n    uint256 public proposalIndex = 0;\n\n    // Making it more complex by adding time periods for when proposals expires\n    // enum Status {\n    //     success,\n    //     pending,\n    //     canceled\n    // }\n\n    // event Withdrawal(uint amount, uint when);\n\n    struct Transaction {\n        address proposer;\n        address to;\n        uint256 value;\n        // bytes data; TODO: Complex functions\n        string description;\n        uint256 noOfConfirmations;\n        bool status;\n    }\n\n    mapping(uint256 => Transaction) public proposalByIndex;\n    mapping(address => bool) private isOwner;\n    mapping(address => mapping(uint256 => bool)) private confirmedByIndex;\n\n    Transaction[] public transactions;\n\n    modifier onlyOwners() {\n        if(!isOwner[msg.sender]) revert MultiSig__NotOwner();\n        _;\n    }\n\n    modifier proposalAvailable(uint256 _proposalIndex) {\n        if(_proposalIndex >= transactions.length) revert MultiSig__ProposalNotExists();\n        _;\n    }\n\n    constructor() {\n        sigFactory = msg.sender;\n    }\n\n\n    // Init function to be called only once by factory\n\n    function init (address[] memory _owners, uint256 _noOfConfirmationsNeeded) external {\n\n        if(sigFactory != msg.sender) revert MultiSig__NotOwner();\n\n        // Include your address if needed to perform the functions before deploying!\n\n        if(_owners.length < 1) revert MultiSig__OwnersRequired();\n\n        deployedTime = block.timestamp;\n        deployer = msg.sender;\n        noOfConfirmationsNeeded = _noOfConfirmationsNeeded;\n\n        for(uint i = 0; i < _owners.length; i++) {\n            if(_owners[i] == address(0)) revert MultiSig__InvalidAddress();\n            owners.push(_owners[i]);\n            isOwner[_owners[i]] = true;\n        }\n    }\n\n    function submitProposal(address _to, uint256 _value, string memory _description) public returns (bool) {\n\n        Transaction memory transaction = Transaction(msg.sender, _to, _value, _description, 0, false);\n        transactions.push(transaction);\n\n        proposalByIndex[proposalIndex] = transaction;\n\n        proposalIndex += 1;\n\n        return true;\n\n        // emit ProposalSubmitted();\n    }\n\n    function confirmProposal(uint256 _proposalIndex) public /**onlyOwners*/  proposalAvailable(_proposalIndex) returns (bool) {\n        \n        if(confirmedByIndex[msg.sender][_proposalIndex]) revert MultiSig__AlreadyConfirmed();\n\n        Transaction storage transaction = proposalByIndex[_proposalIndex];\n        if(transaction.status) revert MultiSig__AlreadyExecuted();\n        transaction.noOfConfirmations = transaction.noOfConfirmations + 1;\n\n        transactions[_proposalIndex].noOfConfirmations += 1;\n\n        confirmedByIndex[msg.sender][_proposalIndex] = true;\n\n        // emit Confirmedproposal()\n    }\n\n    function revokeConfirmedProposal(uint256 _proposalIndex) public /**onlyOwners*/  proposalAvailable(_proposalIndex) returns (bool) {\n\n        //TODO: Require incase the proposal is executed, it should revert\n        if(!confirmedByIndex[msg.sender][_proposalIndex]) revert MultiSig__NotConfirmed();\n\n        Transaction storage transaction = proposalByIndex[_proposalIndex];\n        if(transaction.status) revert MultiSig__AlreadyExecuted();\n        transaction.noOfConfirmations = transaction.noOfConfirmations - 1;\n\n        confirmedByIndex[msg.sender][_proposalIndex] = false;\n\n        // emit RevokedProposal()\n    }\n\n    function executeProposal(uint _proposalIndex) public /**onlyOwners*/  proposalAvailable(_proposalIndex) returns (bool) {\n        \n        Transaction storage transaction = proposalByIndex[_proposalIndex];\n        if(transaction.noOfConfirmations < noOfConfirmationsNeeded) revert MultiSig__NotEnoughConfirmations();\n\n        if(transaction.status) revert MultiSig__AlreadyExecuted();\n\n        transaction.status = true;\n\n        //TODO: execute the proposal\n        (bool success, ) = transaction.to.call{value: transaction.value}(\"\"/**transaction.data*/);\n        if(!success) revert MultiSig__TransferFailed();\n    }\n\n    function fundWallet() public payable {}\n\n\n\n\n    ////// GETTER FUNCTIONS\n    function getDeployer() public view returns (address) {\n        return deployer;\n    }\n\n    function getOwners() public view returns (address[] memory) {\n        return owners;\n    }\n\n    function getTimeCreated() public view returns (uint256) {\n        return deployedTime;\n    }\n\n    function getAllProposals() public view returns (Transaction[] memory) {\n        return transactions;\n    }\n}\n"
  },
  {
    "path": "12-Core-MultiSig/contracts/MultiSigFactory.sol",
    "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.27;\n\nimport \"./MultiSig.sol\";\nimport \"./interfaces/IMultiSig.sol\";\n\ncontract MultiSigFactory {\n    address private feeReceiver; // TODO: implement token fee receivers for creating those smart wallets\n\n    address[] private allWallets;\n\n    struct Wallets {\n        address walletAddress;\n        uint256 timeCreated;\n        uint256 balance;\n    }\n\n    mapping(address => Wallets[]) private wallets;\n\n    event MultiSigCreated(address multisigAddress);\n\n    constructor(address _feeReceiver) {\n        feeReceiver = _feeReceiver;\n    }\n\n    function createMultiSig(address[] memory _owners, uint256 _noOfConfirmations) payable public returns (address multisigAddress) {\n\n        bytes memory bytecode = type(MultiSig).creationCode;\n        bytes32 salt = keccak256(abi.encodePacked(_owners, _noOfConfirmations));\n\n        //TODO: put the salt\n\n        assembly {\n            multisigAddress := create2(0, add(bytecode, 32), mload(bytecode), salt)\n        }\n\n        MultiSig(multisigAddress).init(_owners, _noOfConfirmations);\n\n        allWallets.push(multisigAddress);\n        Wallets memory wallet = Wallets(multisigAddress, block.timestamp, address(multisigAddress).balance);\n        wallets[msg.sender].push(wallet);\n\n        emit MultiSigCreated(multisigAddress);\n    }\n\n    //// ROUTING OR CONTROLLER SECTION\n    function submitTransaction(address multisigAddress, address _to, uint256 _value, string memory _description) public returns (bool) {\n        IMultiSig(multisigAddress).submitProposal(_to, _value, _description);\n\n        return true;\n    }\n\n    function confirmTransaction(address multisigAddress, uint256 _proposalIndex) public returns (bool) {\n        bool isConfirmed = IMultiSig(multisigAddress).confirmProposal(_proposalIndex);\n\n        return isConfirmed;\n    }\n\n    function revokeConfirmedTransaction(address multisigAddress, uint256 _proposalIndex) public returns (bool) {\n        bool isRevoked = IMultiSig(multisigAddress).revokeConfirmedProposal(_proposalIndex);\n\n        return isRevoked;\n    } \n\n    function executeTransaction(address multisigAddress, uint _proposalIndex) public returns (bool) {\n        bool isExecuted = IMultiSig(multisigAddress).executeProposal(_proposalIndex);\n\n        return isExecuted;\n    }\n\n    function Deposit(address multisigAddress) public {\n        IMultiSig(multisigAddress).fundWallet();\n    }\n\n    // rOUTER TO GETTER FUNCIONS FROM THE MULTISIGS\n    function getOwners(address multisigAddress) public view returns (address[] memory) {\n        address[] memory owners = MultiSig(multisigAddress).getOwners();\n        return owners;\n    }\n\n    function getDeployer(address multisigAddress) public view returns (address) {\n        return MultiSig(multisigAddress).getDeployer();\n    }\n\n    function getAllProposals(address multisigAddress) public view returns (MultiSig.Transaction[] memory) {\n        return MultiSig(multisigAddress).getAllProposals();\n    }\n\n    function getTimeCreated(address multisigAddress) public view returns (uint256) {\n        return MultiSig(multisigAddress).getTimeCreated();\n    }\n\n    function getDeployersWallets(address deployer) public view returns (Wallets[] memory) {\n        return wallets[deployer];\n    }\n\n\n    // GETTER FUNCTIONS\n\n\n    function getAllDeployedMultiSigs() public view returns (address[] memory) {\n        return allWallets;\n    }\n\n\n}"
  },
  {
    "path": "12-Core-MultiSig/contracts/interfaces/IMultiSig.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.27;\n\n// import \"hardhat/console.sol\";\n\n\ninterface IMultiSig {\n\n    struct Transaction {\n        address proposer;\n        address to;\n        uint256 value;\n        // bytes data; TODO: Complex functions\n        string description;\n        uint256 noOfConfirmations;\n        bool status;\n    }\n\n\n    function submitProposal(address _to, uint256 _value, string memory _description) external returns (bool);\n\n     function confirmProposal(uint256 _proposalIndex) external returns (bool);\n\n     function revokeConfirmedProposal(uint256 _proposalIndex) external returns (bool);\n\n     function executeProposal(uint _proposalIndex) external returns (bool);\n\n     function fundWallet() external payable;\n\n     function getAllProposals() external returns (Transaction[] memory);\n\n     function getOwners() external returns (address[] memory);\n\n     function getTimeCreated() external returns (uint256);\n\n     function getDeployer() external returns (address);\n}"
  },
  {
    "path": "12-Core-MultiSig/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.27\",\n\n  networks: {\n    localhost: {\n      url: \"http://127.0.0.1:8545/\",\n      // accounts: Thanks hardhat!\n      chainId: 31337,\n      allowUnlimitedContractSize: true,\n    },\n    core: {\n      url: 'https://rpc.test2.btcs.network',\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    },\n  },\n};\n"
  },
  {
    "path": "12-Core-MultiSig/ignition/modules/Lock.js",
    "content": "// This setup uses Hardhat Ignition to manage smart contract deployments.\n// Learn more about it at https://hardhat.org/ignition\n\nconst { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "12-Core-MultiSig/package.json",
    "content": "{\n  \"name\": \"reuse\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-chai-matchers\": \"^2.0.8\",\n    \"@nomicfoundation/hardhat-ethers\": \"^3.0.8\",\n    \"@nomicfoundation/hardhat-ignition-ethers\": \"^0.15.9\",\n    \"@nomicfoundation/hardhat-network-helpers\": \"^1.0.12\",\n    \"@nomicfoundation/hardhat-toolbox\": \"^5.0.0\",\n    \"@nomicfoundation/hardhat-verify\": \"^2.0.12\",\n    \"@typechain/ethers-v6\": \"^0.5.1\",\n    \"@typechain/hardhat\": \"^9.1.0\",\n    \"@types/chai\": \"^4.3.20\",\n    \"@types/mocha\": \"^10.0.10\",\n    \"chai\": \"^4.5.0\",\n    \"ethers\": \"^6.13.5\",\n    \"hardhat\": \"^2.22.15\",\n    \"hardhat-gas-reporter\": \"^1.0.10\",\n    \"install\": \"^0.13.0\",\n    \"npm\": \"^11.0.0\",\n    \"solidity-coverage\": \"^0.8.14\",\n    \"ts-node\": \"^10.9.2\",\n    \"typechain\": \"^8.3.2\",\n    \"typescript\": \"^5.7.3\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^16.4.7\"\n  }\n}\n"
  },
  {
    "path": "12-Core-MultiSig/scripts/deploy-multisig.js",
    "content": "const hre = require(\"hardhat\");\nconst {\n    loadFixture\n  } = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\n\nasync function main() {\n    \n  const FactoryContract = await hre.ethers.getContractFactory(\"MultiSigFactory\");\n  const factoryContract  = await FactoryContract.deploy(\"0x650ADf6aA8b4e5764273E7f2001B2A3f792859a5\");\n\n  console.log(\"Storage contract deployed to:\", factoryContract.target);\n\n  // const array = [\"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512\", \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\", \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\"]\n\n  //     const addresses = \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\";\n  //     const functionName = \"transfer\";\n\n  //     console.log(factoryContract.target)\n\n  //     await factoryContract.createMultiSig(array, 1);\n  //     console.log(\"here\");\n\n  //     const getAddress = await factoryContract.getAllDeployedMultiSigs();\n  //     console.log(\"here\");\n\n  //     const deployer = await factoryContract.getDeployer(getAddress[0]);\n\n  //     console.log(deployer);\n\n  //     // console.log(encodedData)\n  //     console.log(getAddress[0], array[1]);\n  //     // const value = await multiSigContract.connect(getAddress[0]).fundWallet({value: ethers.parseEther(\"3\")});\n  //     // console.log(value);\n  //     const address = await factoryContract.submitTransaction(getAddress[0], array[0], ethers.parseEther(\"2\"), \"Pay to Dave\");\n\n  //     const getProposals = await factoryContract.getAllProposals(getAddress[0]);\n  //     console.log(getProposals);\n  //     await factoryContract.confirmTransaction(getAddress[0], 0);\n  //     const wallets = await factoryContract.getDeployersWallets();\n  //     console.log(wallets)\n  //     const proposalExecuted1 = await factoryContract.getAllProposals(getAddress[0]);\n  //     console.log(proposalExecuted1)\n  //     // await factoryContract.executeTransaction(getAddress[0], 0);\n  //     // const proposalExecuted = await factoryContract.getAllProposals(getAddress[0]);\n  //     // console.log(proposalExecuted)\n\n\n}\n\n// We recommend this pattern to be able to use async/await everywhere\n// and properly handle errors.\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n\n\n\n// CORE: PoolFactory contract deployed to: 0x5Ac64F5DA22B25559C7D7522b4B2BB7e2012F382"
  },
  {
    "path": "12-Core-MultiSig/test/Lock.js",
    "content": "const {\n  time,\n  loadFixture,\n} = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\nconst { anyValue } = require(\"@nomicfoundation/hardhat-chai-matchers/withArgs\");\nconst { expect } = require(\"chai\");\n\ndescribe(\"Lock\", function () {\n  // We define a fixture to reuse the same setup in every test.\n  // We use loadFixture to run this setup once, snapshot that state,\n  // and reset Hardhat Network to that snapshot in every test.\n  async function deployDefi() {\n\n    // Contracts are deployed using the first signer/account by default\n    const [owner, otherAccount] = await ethers.getSigners();\n    console.log(\"Heyyyyyyy\");\n\n    // const Lock = await ethers.getContractFactory(\"Lock\");\n    // const lock = await Lock.deploy(unlockTime, { value: lockedAmount });\n\n    const array = [\"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\", \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\", \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\"]\n\n    // const multiSig = await ethers.getContractFactory(\"MultiSig\");\n    // const multiSigContract = await multiSig.deploy(array, 2);\n\n    const multiSigFactory = await ethers.getContractFactory(\"MultiSigFactory\");\n    const factoryContract = await multiSigFactory.deploy(\"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\");\n\n\n    return { factoryContract };\n  }\n\n  describe(\"Deployment\", function () {\n    it(\"Checks if it creates pair\", async function () {\n      const { factoryContract } = await loadFixture(deployDefi);\n\n      const array = [\"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\", \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\", \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\"]\n\n      const pair = await factoryContract.createMultiSig(array, 2);\n      const pairs = await factoryContract.createMultiSig(array, 2);\n      const getAddress = await factoryContract.getAllDeployedMultiSigs();\n      const address = await factoryContract.getOwners(getAddress[0]);\n      console.log(address);\n\n\n    });\n\n\n\n    it(\"Checks if it creates pair\", async function () {\n      const { multiSigContract } = await loadFixture(deployDefi);\n\n      // const getAddress = await multisigContract.getAllDeployedMultiSigs();\n      const address = await multiSigContract.submitProposal(\"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\", 20000000,\" 0x736f6d6520737472696e67\");\n      console.log(address);\n\n\n    });\n\n    it.only(\"Checks if it creates pair\", async function () {\n      const { factoryContract, multiSigContract } = await loadFixture(deployDefi);\n      const array = [\"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512\", \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\", \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\"]\n\n      const addresses = \"0xF5c87bFCE1999d3E48f0407E43F0Db10394A4B37\";\n      const functionName = \"transfer\";\n\n      console.log(factoryContract.target)\n\n      const pair = await factoryContract.createMultiSig(array, 1);\n      const pairs = await factoryContract.createMultiSig( array, 1);\n\n      const getAddress = await factoryContract.getAllDeployedMultiSigs();\n\n      const deployer = await factoryContract.getDeployer(getAddress[0]);\n\n      console.log(deployer);\n\n      // console.log(encodedData)\n      console.log(getAddress[0], array[1]);\n      // const value = await multiSigContract.connect(getAddress[0]).fundWallet({value: ethers.parseEther(\"3\")});\n      // console.log(value);\n      const address = await factoryContract.submitTransaction(getAddress[0], array[0], ethers.parseEther(\"2\"), \"Pay to Dave\");\n\n      const getProposals = await factoryContract.getAllProposals(getAddress[0]);\n      console.log(getProposals);\n      await factoryContract.confirmTransaction(getAddress[0], 0);\n      const wallets = await factoryContract.getDeployersWallets();\n      console.log(wallets)\n      const proposalExecuted1 = await factoryContract.getAllProposals(getAddress[0]);\n      console.log(proposalExecuted1)\n      // await factoryContract.executeTransaction(getAddress[0], 0);\n      // const proposalExecuted = await factoryContract.getAllProposals(getAddress[0]);\n      // console.log(proposalExecuted)\n\n\n    });\n\n    \n\n    // it(\"checks if its adds liquidity\", async function () {\n    //   const { factoryContract, cherryContract, appleContract, owner, liquidityContract} = await loadFixture(deployDefi);\n    //   console.log(\"heyy\");\n    //   await cherryContract.mint(owner.address, ethers.parseEther(\"10\"));\n    //   await appleContract.mint(owner.address, ethers.parseEther(\"10\"));\n    //   await cherryContract.approve(liquidityContract.target, ethers.parseEther(\"10\"));\n    //   await appleContract.approve(liquidityContract.target, ethers.parseEther(\"10\"));\n    //   console.log(await appleContract.balanceOf(owner.address));\n    //   console.log(await cherryContract.balanceOf(owner.address));\n    //   const pair = await liquidityContract.addLiquidity(\n    //     cherryContract.target,\n    //     appleContract.target,\n    //     ethers.parseEther(\"1.5\"),\n    //     ethers.parseEther(\"1\"),\n    //     ethers.parseEther(\".9\"),\n    //     ethers.parseEther(\"1.3\")\n    //   );\n    //   console.log(pair);\n    // });\n    // it(\"Should receive and store the funds to lock\", async function () {\n    //   const { lock, lockedAmount } = await loadFixture(\n    //     deployOneYearLockFixture\n    //   );\n\n    //   expect(await ethers.provider.getBalance(lock.target)).to.equal(\n    //     lockedAmount\n    //   );\n    // });\n\n\n  });\n});\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/.eslintrc.json",
    "content": "{\n  \"extends\": [\"next/core-web-vitals\", \"next/typescript\"],\n  \"rules\": {\n    \"@typescript-eslint/no-explicit-any\": \"off\", // Allow `any` type\n    \"@typescript-eslint/no-unused-vars\": \"off\", // Disable unused variables check\n    \"@typescript-eslint/no-unused-expressions\": \"off\", // Disable unused expressions check\n    \"react-hooks/exhaustive-deps\": \"off\", // Suppress missing dependency warnings in useEffect\n    \"@next/next/no-img-element\": \"off\", \n    \"react/no-unescaped-entities\": \"off\"\n\n  }\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# env files (can opt-in for commiting if needed)\n.env*\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/README.md",
    "content": "This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\nbody {\n  font-family: Arial, Helvetica, sans-serif;\n}\n\n@layer base {\n  :root {\n    --background: 0 0% 100%;\n    --foreground: 240 10% 3.9%;\n    --card: 0 0% 100%;\n    --card-foreground: 240 10% 3.9%;\n    --popover: 0 0% 100%;\n    --popover-foreground: 240 10% 3.9%;\n    --primary: 240 5.9% 10%;\n    --primary-foreground: 0 0% 98%;\n    --secondary: 240 4.8% 95.9%;\n    --secondary-foreground: 240 5.9% 10%;\n    --muted: 240 4.8% 95.9%;\n    --muted-foreground: 240 3.8% 46.1%;\n    --accent: 240 4.8% 95.9%;\n    --accent-foreground: 240 5.9% 10%;\n    --destructive: 0 84.2% 60.2%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 5.9% 90%;\n    --input: 240 5.9% 90%;\n    --ring: 240 10% 3.9%;\n    --chart-1: 12 76% 61%;\n    --chart-2: 173 58% 39%;\n    --chart-3: 197 37% 24%;\n    --chart-4: 43 74% 66%;\n    --chart-5: 27 87% 67%;\n    --radius: 0.5rem;\n  }\n  .dark {\n    --background: 240 10% 3.9%;\n    --foreground: 0 0% 98%;\n    --card: 240 10% 3.9%;\n    --card-foreground: 0 0% 98%;\n    --popover: 240 10% 3.9%;\n    --popover-foreground: 0 0% 98%;\n    --primary: 0 0% 98%;\n    --primary-foreground: 240 5.9% 10%;\n    --secondary: 240 3.7% 15.9%;\n    --secondary-foreground: 0 0% 98%;\n    --muted: 240 3.7% 15.9%;\n    --muted-foreground: 240 5% 64.9%;\n    --accent: 240 3.7% 15.9%;\n    --accent-foreground: 0 0% 98%;\n    --destructive: 0 62.8% 30.6%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 3.7% 15.9%;\n    --input: 240 3.7% 15.9%;\n    --ring: 240 4.9% 83.9%;\n    --chart-1: 220 70% 50%;\n    --chart-2: 160 60% 45%;\n    --chart-3: 30 80% 55%;\n    --chart-4: 280 65% 60%;\n    --chart-5: 340 75% 55%;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/app/layout.tsx",
    "content": "import type { Metadata } from \"next\";\nimport localFont from \"next/font/local\";\nimport \"./globals.css\";\n\nconst geistSans = localFont({\n  src: \"./fonts/GeistVF.woff\",\n  variable: \"--font-geist-sans\",\n  weight: \"100 900\",\n});\nconst geistMono = localFont({\n  src: \"./fonts/GeistMonoVF.woff\",\n  variable: \"--font-geist-mono\",\n  weight: \"100 900\",\n});\n\nexport const metadata: Metadata = {\n  title: \"Create Next App\",\n  description: \"Generated by create next app\",\n};\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode;\n}>) {\n  return (\n    <html lang=\"en\">\n      <body\n        className={`${geistSans.variable} ${geistMono.variable} antialiased`}\n      >\n        {children}\n      </body>\n    </html>\n  );\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/app/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Navbar } from \"@/components/navbar\"\nimport { NetworkModal } from \"@/components/network-modal\"\nimport { TokenSelector } from \"@/components/token-selector\"\nimport { Toaster } from \"@/components/ui/toaster\"\nimport { toast } from \"@/hooks/use-toast\"\nimport { ethers } from \"ethers\"\n\nexport default function FaucetPage() {\n  const [isConnected, setIsConnected] = useState(false)\n  const [walletAddress, setWalletAddress] = useState(\"\")\n  const [signer, setSigner] = useState<ethers.JsonRpcSigner | null>(null)\n  const [provider, setProvider] = useState<ethers.BrowserProvider | null>(null)\n  const [isCorrectNetwork, setIsCorrectNetwork] = useState(true)\n  const [showNetworkModal, setShowNetworkModal] = useState(false)\n\n  const handleWalletConnect = async () => {\n    try {\n      // Placeholder wallet connection logic\n      // In production, integrate with Wagmi or Ethers.js\n      if (!(window as any).ethereum) {\n        toast({\n          title: \"Wallet not found\",\n          description: \"Please install MetaMask or another Web3 wallet\",\n          variant: \"destructive\",\n        })\n        return\n      }\n\n      const provider = new ethers.BrowserProvider((window as any).ethereum)\n      const accounts = await provider.send(\"eth_requestAccounts\", [])\n      const network = await provider.getNetwork()\n      const signee = await provider.getSigner();\n\n      setProvider(provider)\n      // setAccount(accounts[0])\n      setSigner(signee)\n      // setChainId(Number(network.chainId))\n      // const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' })\n      setWalletAddress(accounts[0])\n\n      // setWalletAddress(\"0x1234567890123456789012345678901234567890\") // Placeholder\n      setIsConnected(true)\n\n      // Simulate network check\n      const isOnCoreTestnet = Number(network.chainId) == 1114 // Higher chance of correct network for demo\n      setIsCorrectNetwork(isOnCoreTestnet)\n      if (!isOnCoreTestnet) {\n        setShowNetworkModal(true)\n      }\n    } catch (error) {\n      console.error(\"Failed to connect wallet:\", error)\n    }\n  }\n\n  const handleWalletDisconnect = () => {\n    setWalletAddress(\"\")\n    setIsConnected(false)\n    setIsCorrectNetwork(true)\n  }\n\n  const handleNetworkSwitch = async () => {\n    try {\n      // Placeholder network switching logic\n      // In production: call wallet_switchEthereumChain or wallet_addEthereumChain\n      // await window.ethereum.request({\n      //   method: 'wallet_switchEthereumChain',\n      //   params: [{ chainId: '0x45a' }], // Core Testnet\n      // })\n\n      setIsCorrectNetwork(true)\n      setShowNetworkModal(false)\n    } catch (error) {\n      console.error(\"Failed to switch network:\", error)\n    }\n  }\n\n  return (\n    <div className=\"min-h-screen bg-gradient-to-br from-slate-50 to-slate-100\">\n      <Navbar\n        isConnected={isConnected}\n        walletAddress={walletAddress}\n        onConnect={handleWalletConnect}\n        onDisconnect={handleWalletDisconnect}\n        isCorrectNetwork={isCorrectNetwork}\n      />\n\n      <main className=\"container mx-auto px-4 py-8\">\n        <div className=\"text-center mb-12\">\n          <h1 className=\"text-4xl font-bold text-slate-900 mb-4\">Core Testnet Faucet</h1>\n          <p className=\"text-lg text-slate-600 max-w-2xl mx-auto\">\n            Connect your wallet and mint test tokens directly to your address on Core Testnet. Perfect for development\n            and testing.\n          </p>\n        </div>\n\n        {!isConnected ? (\n          <div className=\"text-center py-16\">\n            <div className=\"bg-white rounded-2xl shadow-lg p-8 max-w-md mx-auto\">\n              <div className=\"w-16 h-16 bg-yellow-100 rounded-full flex items-center justify-center mx-auto mb-4\">\n                <svg className=\"w-8 h-8 text-yellow-600\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                  <path\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    strokeWidth={2}\n                    d=\"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z\"\n                  />\n                </svg>\n              </div>\n              <h3 className=\"text-xl font-semibold text-slate-900 mb-2\">Connect Your Wallet</h3>\n              <p className=\"text-slate-600 mb-6\">\n                Connect your wallet to start minting test tokens directly to your address\n              </p>\n              <button\n                onClick={handleWalletConnect}\n                className=\"w-full bg-yellow-500 hover:bg-yellow-600 text-white font-semibold py-3 px-6 rounded-lg transition-colors\"\n              >\n                Connect Wallet\n              </button>\n            </div>\n          </div>\n        ) : !isCorrectNetwork ? (\n          <div className=\"text-center py-16\">\n            <div className=\"bg-white rounded-2xl shadow-lg p-8 max-w-md mx-auto\">\n              <div className=\"w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mx-auto mb-4\">\n                <svg className=\"w-8 h-8 text-red-600\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                  <path\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    strokeWidth={2}\n                    d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z\"\n                  />\n                </svg>\n              </div>\n              <h3 className=\"text-xl font-semibold text-slate-900 mb-2\">Wrong Network</h3>\n              <p className=\"text-slate-600 mb-6\">Please switch to Core Testnet to use the faucet</p>\n              <button\n                onClick={() => setShowNetworkModal(true)}\n                className=\"w-full bg-yellow-500 hover:bg-yellow-600 text-white font-semibold py-3 px-6 rounded-lg transition-colors\"\n              >\n                Switch Network\n              </button>\n            </div>\n          </div>\n        ) : (\n          <div className=\"max-w-2xl mx-auto\">\n            <TokenSelector walletAddress={walletAddress} signer={signer} />\n          </div>\n        )}\n\n        {/* Information section */}\n        <div className=\"mt-16 text-center\">\n          <div className=\"bg-white rounded-2xl shadow-lg p-8 max-w-2xl mx-auto\">\n            <h3 className=\"text-xl font-semibold text-slate-900 mb-4\">How it works</h3>\n            <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6 text-left\">\n              <div className=\"text-center\">\n                <div className=\"w-12 h-12 bg-yellow-100 rounded-full flex items-center justify-center mx-auto mb-3\">\n                  <span className=\"text-yellow-600 font-bold\">1</span>\n                </div>\n                <h4 className=\"font-semibold text-slate-900 mb-2\">Connect Wallet</h4>\n                <p className=\"text-sm text-slate-600\">Connect your wallet to Core Testnet</p>\n              </div>\n              <div className=\"text-center\">\n                <div className=\"w-12 h-12 bg-yellow-100 rounded-full flex items-center justify-center mx-auto mb-3\">\n                  <span className=\"text-yellow-600 font-bold\">2</span>\n                </div>\n                <h4 className=\"font-semibold text-slate-900 mb-2\">Select & Mint</h4>\n                <p className=\"text-sm text-slate-600\">Choose token and amount to mint</p>\n              </div>\n              <div className=\"text-center\">\n                <div className=\"w-12 h-12 bg-yellow-100 rounded-full flex items-center justify-center mx-auto mb-3\">\n                  <span className=\"text-yellow-600 font-bold\">3</span>\n                </div>\n                <h4 className=\"font-semibold text-slate-900 mb-2\">Receive Tokens</h4>\n                <p className=\"text-sm text-slate-600\">Tokens minted directly to your wallet</p>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {/* Additional info */}\n        <div className=\"mt-8 text-center\">\n          <div className=\"bg-white rounded-2xl shadow-lg p-8 max-w-2xl mx-auto\">\n            <h3 className=\"text-xl font-semibold text-slate-900 mb-2\">More Tokens Coming Soon</h3>\n            <p className=\"text-slate-600\">\n              We're constantly adding new test tokens to support your development needs. Stay tuned for more ERC20 test\n              tokens on Core Testnet.\n            </p>\n          </div>\n        </div>\n      </main>\n\n      <NetworkModal\n        isOpen={showNetworkModal}\n        onClose={() => setShowNetworkModal(false)}\n        onSwitch={handleNetworkSwitch}\n      />\n\n      <Toaster />\n    </div>\n  )\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/badge.tsx",
    "content": "import type * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n  \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n  {\n    variants: {\n      variant: {\n        default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n        secondary: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n        destructive: \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n        outline: \"text-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  },\n)\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n  return <div className={cn(badgeVariants({ variant }), className)} {...props} />\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className,\n    )}\n    {...props}\n  />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)} {...props} />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogClose,\n  DialogTrigger,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n      inset && \"pl-8\",\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto h-4 w-4\" />\n  </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n      className,\n    )}\n    {...props}\n  />\n))\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <DropdownMenuPrimitive.Portal>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n        className,\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      inset && \"pl-8\",\n      className,\n    )}\n    {...props}\n  />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className,\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className,\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\"px-2 py-1.5 text-sm font-semibold\", inset && \"pl-8\", className)}\n    {...props}\n  />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n  return <span className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)} {...props} />\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/navbar.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { ChevronDown, LogOut } from \"lucide-react\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\ninterface NavbarProps {\n  isConnected: boolean\n  walletAddress: string\n  onConnect: () => void\n  onDisconnect: () => void\n  isCorrectNetwork: boolean\n}\n\nexport function Navbar({ isConnected, walletAddress, onConnect, onDisconnect, isCorrectNetwork }: NavbarProps) {\n  const formatAddress = (address: string) => {\n    if (!address || address.length < 10) return address\n    return `${address.slice(0, 6)}...${address.slice(-4)}`\n  }\n\n  const copyAddress = async () => {\n    try {\n      await navigator.clipboard.writeText(walletAddress)\n    } catch (error) {\n      console.error(\"Failed to copy address:\", error)\n    }\n  }\n\n  return (\n    <nav className=\"bg-white shadow-sm border-b border-slate-200\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"flex items-center justify-between h-16\">\n          <div className=\"flex items-center space-x-3\">\n            <div className=\"w-8 h-8 bg-gradient-to-br from-yellow-400 to-yellow-600 rounded-lg flex items-center justify-center\">\n              <svg className=\"w-5 h-5 text-white\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n                <path d=\"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5\" />\n              </svg>\n            </div>\n            <div>\n              <h1 className=\"text-xl font-bold text-slate-900\">Core Faucet</h1>\n              <p className=\"text-xs text-slate-500\">Testnet Token Minting</p>\n            </div>\n          </div>\n\n          <div className=\"flex items-center space-x-4\">\n            {isConnected && (\n              <Badge\n                variant={isCorrectNetwork ? \"default\" : \"destructive\"}\n                className={isCorrectNetwork ? \"bg-green-100 text-green-800 hover:bg-green-100\" : \"\"}\n              >\n                {isCorrectNetwork ? \"Core Testnet\" : \"Wrong Network\"}\n              </Badge>\n            )}\n\n            {!isConnected ? (\n              <Button onClick={onConnect} className=\"bg-yellow-500 hover:bg-yellow-600 text-white font-semibold\">\n                Connect Wallet\n              </Button>\n            ) : (\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button variant=\"outline\" className=\"flex items-center space-x-2 bg-transparent\">\n                    <div className=\"w-2 h-2 bg-green-500 rounded-full\" />\n                    <span className=\"font-mono text-sm\">{formatAddress(walletAddress)}</span>\n                    <ChevronDown className=\"w-4 h-4\" />\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\" className=\"w-56\">\n                  <div className=\"px-3 py-2\">\n                    <p className=\"text-sm font-medium\">Connected Wallet</p>\n                    <p className=\"text-xs text-slate-500 font-mono\">{walletAddress}</p>\n                  </div>\n                  <DropdownMenuSeparator />\n                  <DropdownMenuItem onClick={copyAddress}>Copy Address</DropdownMenuItem>\n                  <DropdownMenuItem onClick={onDisconnect} className=\"text-red-600\">\n                    <LogOut className=\"w-4 h-4 mr-2\" />\n                    Disconnect\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            )}\n          </div>\n        </div>\n      </div>\n    </nav>\n  )\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/network-modal.tsx",
    "content": "\"use client\"\n\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\n\ninterface NetworkModalProps {\n  isOpen: boolean\n  onClose: () => void\n  onSwitch: () => void\n}\n\nexport function NetworkModal({ isOpen, onClose, onSwitch }: NetworkModalProps) {\n  return (\n    <Dialog open={isOpen} onOpenChange={onClose}>\n      <DialogContent className=\"sm:max-w-[425px]\">\n        <DialogHeader>\n          <DialogTitle>Wrong Network</DialogTitle>\n          <DialogDescription>Please switch to Core Testnet to use this faucet.</DialogDescription>\n        </DialogHeader>\n        <div className=\"grid gap-4 py-4\"></div>\n        <Button onClick={onSwitch}>Switch Network</Button>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <SelectPrimitive.Icon asChild>\n      <ChevronDown className=\"h-4 w-4 opacity-50\" />\n    </SelectPrimitive.Icon>\n  </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollUpButton\n    ref={ref}\n    className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n    {...props}\n  >\n    <ChevronUp className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollDownButton\n    ref={ref}\n    className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n    {...props}\n  >\n    <ChevronDown className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n  <SelectPrimitive.Portal>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n        position === \"popper\" &&\n          \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n        className,\n      )}\n      position={position}\n      {...props}\n    >\n      <SelectScrollUpButton />\n      <SelectPrimitive.Viewport\n        className={cn(\n          \"p-1\",\n          position === \"popper\" &&\n            \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n        )}\n      >\n        {children}\n      </SelectPrimitive.Viewport>\n      <SelectScrollDownButton />\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Label ref={ref} className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)} {...props} />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className,\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <SelectPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </SelectPrimitive.ItemIndicator>\n    </span>\n\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Separator ref={ref} className={cn(\"-mx-1 my-1 h-px bg-muted\", className)} {...props} />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n  Select,\n  SelectGroup,\n  SelectValue,\n  SelectTrigger,\n  SelectContent,\n  SelectLabel,\n  SelectItem,\n  SelectSeparator,\n  SelectScrollUpButton,\n  SelectScrollDownButton,\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/toast.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Viewport>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Viewport\n    ref={ref}\n    className={cn(\n      \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n      className,\n    )}\n    {...props}\n  />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n  \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n  {\n    variants: {\n      variant: {\n        default: \"border bg-background text-foreground\",\n        destructive: \"destructive border-destructive bg-destructive text-destructive-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  },\n)\n\nconst Toast = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Root>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> & VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n  return <ToastPrimitives.Root ref={ref} className={cn(toastVariants({ variant }), className)} {...props} />\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Action>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Action\n    ref={ref}\n    className={cn(\n      \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n      className,\n    )}\n    {...props}\n  />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Close>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Close\n    ref={ref}\n    className={cn(\n      \"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n      className,\n    )}\n    toast-close=\"\"\n    {...props}\n  >\n    <X className=\"h-4 w-4\" />\n  </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Title>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Title ref={ref} className={cn(\"text-sm font-semibold\", className)} {...props} />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Description>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Description ref={ref} className={cn(\"text-sm opacity-90\", className)} {...props} />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n  type ToastProps,\n  type ToastActionElement,\n  ToastProvider,\n  ToastViewport,\n  Toast,\n  ToastTitle,\n  ToastDescription,\n  ToastClose,\n  ToastAction,\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/toaster.tsx",
    "content": "\"use client\"\n\nimport { useToast } from \"@/hooks/use-toast\"\nimport { Toast, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport } from \"@/components/ui/toast\"\n\nexport function Toaster() {\n  const { toasts } = useToast()\n\n  return (\n    <ToastProvider>\n      {toasts.map(({ id, title, description, action, ...props }) => (\n        <Toast key={id} {...props}>\n          <div className=\"grid gap-1\">\n            {title && <ToastTitle>{title}</ToastTitle>}\n            {description && <ToastDescription>{description}</ToastDescription>}\n          </div>\n          {action}\n          <ToastClose />\n        </Toast>\n      ))}\n      <ToastViewport />\n    </ToastProvider>\n  )\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/token-selector.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Copy, Check, ExternalLink, Wallet } from \"lucide-react\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { tokens, type Token } from \"@/lib/tokens\"\nimport { CONTRACT_ABI } from \"@/lib/constants\"\nimport {ethers} from \"ethers\"\n\ninterface TokenSelectorProps {\n  walletAddress: string\n  signer: ethers.JsonRpcSigner | null\n}\n\nexport function TokenSelector({ walletAddress, signer }: TokenSelectorProps) {\n  const [selectedToken, setSelectedToken] = useState<Token | null>(null)\n  const [amount, setAmount] = useState(\"1000\")\n  const [isMinting, setIsMinting] = useState(false)\n  const [copied, setCopied] = useState(false)\n  const { toast } = useToast()\n\n  const handleTokenSelect = (tokenSymbol: string) => {\n    const token = tokens.find((t) => t.symbol === tokenSymbol)\n    if (token) {\n      setSelectedToken(token)\n    }\n  }\n\n  const handleCopyAddress = async () => {\n    if (!selectedToken) return\n\n    try {\n      await navigator.clipboard.writeText(selectedToken.address)\n      setCopied(true)\n      toast({\n        title: \"Address Copied! 📋\",\n        description: \"Contract address copied to clipboard\",\n        duration: 2000,\n      })\n      setTimeout(() => setCopied(false), 2000)\n    } catch (error) {\n      toast({\n        title: \"Copy Failed\",\n        description: \"Failed to copy address to clipboard\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  const handleMint = async () => {\n    if (!selectedToken || !amount || !walletAddress) return\n\n    setIsMinting(true)\n\n    try {\n      // Placeholder for smart contract interaction\n      // In production: call the mint function on the token contract\n      const contract = new ethers.Contract(selectedToken.address, CONTRACT_ABI, signer)\n      const tx = await contract.mint(walletAddress, ethers.parseUnits(amount, 18))\n      await tx.wait()\n\n\n      toast({\n        title: \"Mint Successful! 🎉\",\n        description: `Successfully minted ${amount} ${selectedToken.symbol} to your wallet`,\n        duration: 5000,\n      })\n\n      // Reset amount to default\n      setAmount(\"1000\")\n    } catch (error) {\n      toast({\n        title: \"Mint Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsMinting(false)\n    }\n  }\n\n  const formatAddress = (address: string) => {\n    return `${address.slice(0, 8)}...${address.slice(-8)}`\n  }\n\n  return (\n    <Card className=\"w-full shadow-xl border border-slate-200 bg-white\">\n      <CardHeader className=\"pb-6\">\n        <CardTitle className=\"text-2xl font-bold text-slate-900 text-center\">Mint Test Tokens</CardTitle>\n        <p className=\"text-slate-600 text-center\">\n          Select a token and amount to mint directly to your connected wallet\n        </p>\n      </CardHeader>\n\n      <CardContent className=\"space-y-6\">\n        {/* Connected Wallet Display */}\n        <div className=\"bg-green-50 border border-green-200 rounded-lg p-4\">\n          <div className=\"flex items-center space-x-3\">\n            <div className=\"w-10 h-10 bg-green-100 rounded-full flex items-center justify-center\">\n              <Wallet className=\"w-5 h-5 text-green-600\" />\n            </div>\n            <div className=\"flex-1\">\n              <h4 className=\"text-sm font-semibold text-green-900\">Connected Wallet</h4>\n              <p className=\"text-sm font-mono text-green-700\">{walletAddress}</p>\n            </div>\n          </div>\n        </div>\n\n        {/* Token Selector */}\n        <div className=\"space-y-2\">\n          <label className=\"text-sm font-medium text-slate-700\">Select Token</label>\n          <Select onValueChange={handleTokenSelect}>\n            <SelectTrigger className=\"w-full h-14 text-lg\">\n              <SelectValue placeholder=\"Choose a test token to mint...\" />\n            </SelectTrigger>\n            <SelectContent>\n              {tokens.map((token) => (\n                <SelectItem key={token.symbol} value={token.symbol} className=\"h-16\">\n                  <div className=\"flex items-center space-x-3 py-2\">\n                    <div\n                      className=\"w-10 h-10 rounded-full flex items-center justify-center text-white font-bold\"\n                      style={{ backgroundColor: token.color }}\n                    >\n                      {token.symbol.charAt(0)}\n                    </div>\n                    <div className=\"flex-1\">\n                      <div className=\"font-semibold text-slate-900\">{token.name}</div>\n                      <div className=\"text-sm text-slate-500\">{token.symbol} • ERC20</div>\n                    </div>\n                  </div>\n                </SelectItem>\n              ))}\n            </SelectContent>\n          </Select>\n        </div>\n\n        {/* Selected Token Details */}\n        {selectedToken && (\n          <div className=\"bg-slate-50 rounded-lg p-4 space-y-4\">\n            <div className=\"flex items-center space-x-3\">\n              <div\n                className=\"w-12 h-12 rounded-full flex items-center justify-center text-white font-bold text-lg\"\n                style={{ backgroundColor: selectedToken.color }}\n              >\n                {selectedToken.symbol.charAt(0)}\n              </div>\n              <div className=\"flex-1\">\n                <h3 className=\"font-semibold text-slate-900 text-lg\">{selectedToken.name}</h3>\n                <div className=\"flex items-center space-x-2\">\n                  <Badge variant=\"secondary\">{selectedToken.symbol}</Badge>\n                  <Badge variant=\"outline\" className=\"text-xs\">\n                    {selectedToken.decimals} decimals\n                  </Badge>\n                </div>\n              </div>\n            </div>\n\n            {/* Contract Address */}\n            <div className=\"space-y-2\">\n              <label className=\"text-sm font-medium text-slate-700\">Contract Address</label>\n              <div className=\"flex items-center space-x-2 bg-white rounded-lg border p-3\">\n                <code className=\"flex-1 text-sm font-mono text-slate-800 break-all\">{selectedToken.address}</code>\n                <div className=\"flex items-center space-x-1\">\n                  <Button\n                    variant=\"ghost\"\n                    size=\"sm\"\n                    onClick={handleCopyAddress}\n                    className=\"h-8 w-8 p-0 hover:bg-slate-100\"\n                  >\n                    {copied ? (\n                      <Check className=\"h-4 w-4 text-green-600\" />\n                    ) : (\n                      <Copy className=\"h-4 w-4 text-slate-600\" />\n                    )}\n                  </Button>\n                  <Button\n                    variant=\"ghost\"\n                    size=\"sm\"\n                    className=\"h-8 w-8 p-0 hover:bg-slate-100\"\n                    onClick={() => {\n                      // Open block explorer - placeholder for now\n                      toast({\n                        title: \"Block Explorer\",\n                        description: \"Would open contract in block explorer\",\n                      })\n                    }}\n                  >\n                    <ExternalLink className=\"h-4 w-4 text-slate-600\" />\n                  </Button>\n                </div>\n              </div>\n            </div>\n          </div>\n        )}\n\n        {/* Amount Input */}\n        {selectedToken && (\n          <div className=\"space-y-2\">\n            <label className=\"text-sm font-medium text-slate-700\">Amount to Mint</label>\n            <Input\n              type=\"number\"\n              value={amount}\n              onChange={(e) => setAmount(e.target.value)}\n              placeholder=\"Enter amount\"\n              className=\"text-lg font-semibold h-14\"\n              min=\"1\"\n              max={selectedToken.maxMint.toString()}\n            />\n            <div className=\"flex justify-between text-xs text-slate-500\">\n              <span>Minimum: 1 {selectedToken.symbol}</span>\n              <span>\n                Maximum: {selectedToken.maxMint.toLocaleString()} {selectedToken.symbol}\n              </span>\n            </div>\n          </div>\n        )}\n\n        {/* Quick Amount Buttons */}\n        {selectedToken && (\n          <div className=\"space-y-2\">\n            <label className=\"text-sm font-medium text-slate-700\">Quick Select</label>\n            <div className=\"grid grid-cols-4 gap-2\">\n              {[100, 1000, 5000, selectedToken.maxMint].map((quickAmount) => (\n                <Button\n                  key={quickAmount}\n                  variant=\"outline\"\n                  size=\"sm\"\n                  onClick={() => setAmount(quickAmount.toString())}\n                  className=\"text-xs hover:bg-yellow-50 hover:border-yellow-300\"\n                >\n                  {quickAmount >= 1000 ? `${quickAmount / 1000}K` : quickAmount}\n                </Button>\n              ))}\n            </div>\n          </div>\n        )}\n\n        {/* Mint Button */}\n        {selectedToken && (\n          <Button\n            onClick={handleMint}\n            disabled={\n              !selectedToken ||\n              !amount ||\n              !walletAddress ||\n              isMinting ||\n              Number.parseInt(amount) > selectedToken.maxMint\n            }\n            className=\"w-full bg-yellow-500 hover:bg-yellow-600 text-white font-semibold py-4 text-lg transition-all duration-200 disabled:opacity-50 h-14\"\n          >\n            {isMinting ? (\n              <div className=\"flex items-center space-x-2\">\n                <div className=\"w-5 h-5 border-2 border-white border-t-transparent rounded-full animate-spin\" />\n                <span>Minting {selectedToken.symbol}...</span>\n              </div>\n            ) : (\n              <div className=\"flex items-center space-x-2\">\n                <Wallet className=\"w-5 h-5\" />\n                <span>\n                  Mint {amount} {selectedToken.symbol}\n                </span>\n              </div>\n            )}\n          </Button>\n        )}\n\n        {/* Transaction Info */}\n        {selectedToken && (\n          <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n            <div className=\"flex items-start space-x-2\">\n              <div className=\"w-5 h-5 bg-blue-500 rounded-full flex items-center justify-center mt-0.5\">\n                <span className=\"text-white text-xs\">ℹ</span>\n              </div>\n              <div className=\"flex-1\">\n                <h4 className=\"text-sm font-semibold text-blue-900 mb-1\">Transaction Details</h4>\n                <p className=\"text-xs text-blue-700\">\n                  • Tokens will be minted directly to your connected wallet\n                  <br />• You'll need to confirm the transaction in your wallet\n                  <br />• Gas fees will be paid in tCORE (Core Testnet native token)\n                  <br />• Transaction will appear in your wallet after confirmation\n                </p>\n              </div>\n            </div>\n          </div>\n        )}\n      </CardContent>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/ui/badge.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n  \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n        secondary:\n          \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n        destructive:\n          \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n        outline: \"text-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nexport interface BadgeProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n  return (\n    <div className={cn(badgeVariants({ variant }), className)} {...props} />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2\",\n        sm: \"h-8 rounded-md px-3 text-xs\",\n        lg: \"h-10 rounded-md px-8\",\n        icon: \"h-9 w-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\"\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-xl border bg-card text-card-foreground shadow\",\n      className\n    )}\n    {...props}\n  />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"font-semibold leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-1.5 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\n      \"text-lg font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogTrigger,\n  DialogClose,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto\" />\n  </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n  DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuSubContent.displayName =\n  DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <DropdownMenuPrimitive.Portal>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n        className\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n  DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"px-2 py-1.5 text-sm font-semibold\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n      {...props}\n    />\n  )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/ui/input.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/ui/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <SelectPrimitive.Icon asChild>\n      <ChevronDown className=\"h-4 w-4 opacity-50\" />\n    </SelectPrimitive.Icon>\n  </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollUpButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronUp className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollDownButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronDown className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n  SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n  <SelectPrimitive.Portal>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]\",\n        position === \"popper\" &&\n          \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n        className\n      )}\n      position={position}\n      {...props}\n    >\n      <SelectScrollUpButton />\n      <SelectPrimitive.Viewport\n        className={cn(\n          \"p-1\",\n          position === \"popper\" &&\n            \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n        )}\n      >\n        {children}\n      </SelectPrimitive.Viewport>\n      <SelectScrollDownButton />\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n    {...props}\n  />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <SelectPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </SelectPrimitive.ItemIndicator>\n    </span>\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n  Select,\n  SelectGroup,\n  SelectValue,\n  SelectTrigger,\n  SelectContent,\n  SelectLabel,\n  SelectItem,\n  SelectSeparator,\n  SelectScrollUpButton,\n  SelectScrollDownButton,\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/ui/toast.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Viewport>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Viewport\n    ref={ref}\n    className={cn(\n      \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n      className\n    )}\n    {...props}\n  />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n  \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n  {\n    variants: {\n      variant: {\n        default: \"border bg-background text-foreground\",\n        destructive:\n          \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nconst Toast = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Root>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n    VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n  return (\n    <ToastPrimitives.Root\n      ref={ref}\n      className={cn(toastVariants({ variant }), className)}\n      {...props}\n    />\n  )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Action>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Action\n    ref={ref}\n    className={cn(\n      \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n      className\n    )}\n    {...props}\n  />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Close>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Close\n    ref={ref}\n    className={cn(\n      \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n      className\n    )}\n    toast-close=\"\"\n    {...props}\n  >\n    <X className=\"h-4 w-4\" />\n  </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Title>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Title\n    ref={ref}\n    className={cn(\"text-sm font-semibold [&+div]:text-xs\", className)}\n    {...props}\n  />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Description>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Description\n    ref={ref}\n    className={cn(\"text-sm opacity-90\", className)}\n    {...props}\n  />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n  type ToastProps,\n  type ToastActionElement,\n  ToastProvider,\n  ToastViewport,\n  Toast,\n  ToastTitle,\n  ToastDescription,\n  ToastClose,\n  ToastAction,\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components/ui/toaster.tsx",
    "content": "\"use client\"\n\nimport { useToast } from \"@/hooks/use-toast\"\nimport {\n  Toast,\n  ToastClose,\n  ToastDescription,\n  ToastProvider,\n  ToastTitle,\n  ToastViewport,\n} from \"@/components/ui/toast\"\n\nexport function Toaster() {\n  const { toasts } = useToast()\n\n  return (\n    <ToastProvider>\n      {toasts.map(function ({ id, title, description, action, ...props }) {\n        return (\n          <Toast key={id} {...props}>\n            <div className=\"grid gap-1\">\n              {title && <ToastTitle>{title}</ToastTitle>}\n              {description && (\n                <ToastDescription>{description}</ToastDescription>\n              )}\n            </div>\n            {action}\n            <ToastClose />\n          </Toast>\n        )\n      })}\n      <ToastViewport />\n    </ToastProvider>\n  )\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/hooks/use-toast.ts",
    "content": "\"use client\"\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\"\n\nimport type {\n  ToastActionElement,\n  ToastProps,\n} from \"@/components/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n  id: string\n  title?: React.ReactNode\n  description?: React.ReactNode\n  action?: ToastActionElement\n}\n\nconst actionTypes = {\n  ADD_TOAST: \"ADD_TOAST\",\n  UPDATE_TOAST: \"UPDATE_TOAST\",\n  DISMISS_TOAST: \"DISMISS_TOAST\",\n  REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n  count = (count + 1) % Number.MAX_SAFE_INTEGER\n  return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n  | {\n      type: ActionType[\"ADD_TOAST\"]\n      toast: ToasterToast\n    }\n  | {\n      type: ActionType[\"UPDATE_TOAST\"]\n      toast: Partial<ToasterToast>\n    }\n  | {\n      type: ActionType[\"DISMISS_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n  | {\n      type: ActionType[\"REMOVE_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n\ninterface State {\n  toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n  if (toastTimeouts.has(toastId)) {\n    return\n  }\n\n  const timeout = setTimeout(() => {\n    toastTimeouts.delete(toastId)\n    dispatch({\n      type: \"REMOVE_TOAST\",\n      toastId: toastId,\n    })\n  }, TOAST_REMOVE_DELAY)\n\n  toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n  switch (action.type) {\n    case \"ADD_TOAST\":\n      return {\n        ...state,\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n      }\n\n    case \"UPDATE_TOAST\":\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\n        ),\n      }\n\n    case \"DISMISS_TOAST\": {\n      const { toastId } = action\n\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\n      // but I'll keep it here for simplicity\n      if (toastId) {\n        addToRemoveQueue(toastId)\n      } else {\n        state.toasts.forEach((toast) => {\n          addToRemoveQueue(toast.id)\n        })\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === toastId || toastId === undefined\n            ? {\n                ...t,\n                open: false,\n              }\n            : t\n        ),\n      }\n    }\n    case \"REMOVE_TOAST\":\n      if (action.toastId === undefined) {\n        return {\n          ...state,\n          toasts: [],\n        }\n      }\n      return {\n        ...state,\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\n      }\n  }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n  memoryState = reducer(memoryState, action)\n  listeners.forEach((listener) => {\n    listener(memoryState)\n  })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n  const id = genId()\n\n  const update = (props: ToasterToast) =>\n    dispatch({\n      type: \"UPDATE_TOAST\",\n      toast: { ...props, id },\n    })\n  const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n  dispatch({\n    type: \"ADD_TOAST\",\n    toast: {\n      ...props,\n      id,\n      open: true,\n      onOpenChange: (open) => {\n        if (!open) dismiss()\n      },\n    },\n  })\n\n  return {\n    id: id,\n    dismiss,\n    update,\n  }\n}\n\nfunction useToast() {\n  const [state, setState] = React.useState<State>(memoryState)\n\n  React.useEffect(() => {\n    listeners.push(setState)\n    return () => {\n      const index = listeners.indexOf(setState)\n      if (index > -1) {\n        listeners.splice(index, 1)\n      }\n    }\n  }, [state])\n\n  return {\n    ...state,\n    toast,\n    dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n  }\n}\n\nexport { useToast, toast }\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/lib/constants.ts",
    "content": "export const CORE_TESTNET = {\n  chainId: \"0x45a\", // 1114 in hex\n  chainIdDecimal: 1114,\n  name: \"Core Testnet\",\n  nativeCurrency: {\n    name: \"tCORE\",\n    symbol: \"tCORE\",\n    decimals: 18,\n  },\n  rpcUrls: [\"https://rpc.test2.btcs.network\"],\n  blockExplorerUrls: [\"https://scan.test2.btcs.network\"],\n}\n\nexport const SUPPORTED_CHAINS = [CORE_TESTNET.chainIdDecimal]\n\n\nexport const CONTRACT_ABI = [\n  {\n    \"inputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"allowance\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"needed\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ERC20InsufficientAllowance\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"balance\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"needed\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ERC20InsufficientBalance\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"approver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidApprover\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"receiver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidReceiver\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidSender\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidSpender\",\n    \"type\": \"error\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Approval\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Transfer\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"allowance\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"approve\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"account\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"balanceOf\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"decimals\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint8\",\n        \"name\": \"\",\n        \"type\": \"uint8\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"i_owner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_receipient\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"mint\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"name\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"symbol\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"totalSupply\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transfer\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transferFrom\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/lib/tokens.ts",
    "content": "export interface Token {\n  name: string\n  symbol: string\n  address: string\n  decimals: number\n  color: string\n  maxMint: number\n}\n\nexport const tokens: Token[] = [\n  {\n    name: \"Test DAI\",\n    symbol: \"tDAI\",\n    address: \"0x7a8eF80C8136862fc7402E8Cfb9Cd1ea9c3BFB4B\", // Placeholder address\n    decimals: 18,\n    color: \"#F5AC37\",\n    maxMint: 10000,\n  },\n  {\n    name: \"Test USDC\",\n    symbol: \"tUSDC\",\n    address: \"0x2bE22845339D49E9b296AbA5462D78F2e929DB05\", // Placeholder address\n    decimals: 6,\n    color: \"#2775CA\",\n    maxMint: 10000,\n  },\n  {\n    name: \"Test USDT\",\n    symbol: \"tUSDT\",\n    address: \"0x367a5a4C14214BfE67d3C00A97F19Cecd2cf9e87\", // Placeholder address\n    decimals: 6,\n    color: \"#26A17B\",\n    maxMint: 10000,\n  },\n]\n\n// Easy to extend with more tokens:\n// {\n//   name: \"Test WETH\",\n//   symbol: \"tWETH\",\n//   address: \"0x4567890123456789012345678901234567890123\",\n//   decimals: 18,\n//   color: \"#627EEA\",\n//   maxMint: 100\n// }\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/next.config.js",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {\n};\n\nmodule.exports = nextConfig;\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/next.config.mjs",
    "content": "const nextConfig = {\n  reactStrictMode: true,\n  swcMinify: true,\n  eslint: {\n    ignoreDuringBuilds: true,\n  },\n  typescript: {\n    ignoreBuildErrors: true,\n  },\n  images: {\n    unoptimized: true,\n  },\n}\n\nexport default nextConfig\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/package.json",
    "content": "{\n  \"name\": \"reusable\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-dialog\": \"1.1.14\",\n    \"@radix-ui/react-dropdown-menu\": \"2.1.15\",\n    \"@radix-ui/react-select\": \"2.2.5\",\n    \"@radix-ui/react-slot\": \"1.2.3\",\n    \"@radix-ui/react-toast\": \"1.2.14\",\n    \"class-variance-authority\": \"0.7.0\",\n    \"clsx\": \"2.1.1\",\n    \"ethers\": \"6.15.0\",\n    \"lucide-react\": \"0.454.0\",\n    \"next\": \"15.0.2\",\n    \"react\": \"19.0.0-rc-02c0e824-20241028\",\n    \"react-dom\": \"19.0.0-rc-02c0e824-20241028\",\n    \"tailwind-merge\": \"2.5.4\",\n    \"tailwindcss-animate\": \"1.0.7\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"^18\",\n    \"@types/react-dom\": \"^18\",\n    \"eslint\": \"^8\",\n    \"eslint-config-next\": \"15.0.2\",\n    \"postcss\": \"^8\",\n    \"tailwindcss\": \"^3.4.1\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/postcss.config.js",
    "content": "// postcss.config.js\nmodule.exports = {\n    plugins: {\n      tailwindcss: {}\n    }\n  }\n  "
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n  plugins: {\n    tailwindcss: {},\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\";\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tcolors: {\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t},\n  \t\t\tpopover: {\n  \t\t\t\tDEFAULT: 'hsl(var(--popover))',\n  \t\t\t\tforeground: 'hsl(var(--popover-foreground))'\n  \t\t\t},\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tsecondary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--secondary))',\n  \t\t\t\tforeground: 'hsl(var(--secondary-foreground))'\n  \t\t\t},\n  \t\t\tmuted: {\n  \t\t\t\tDEFAULT: 'hsl(var(--muted))',\n  \t\t\t\tforeground: 'hsl(var(--muted-foreground))'\n  \t\t\t},\n  \t\t\taccent: {\n  \t\t\t\tDEFAULT: 'hsl(var(--accent))',\n  \t\t\t\tforeground: 'hsl(var(--accent-foreground))'\n  \t\t\t},\n  \t\t\tdestructive: {\n  \t\t\t\tDEFAULT: 'hsl(var(--destructive))',\n  \t\t\t\tforeground: 'hsl(var(--destructive-foreground))'\n  \t\t\t},\n  \t\t\tborder: 'hsl(var(--border))',\n  \t\t\tinput: 'hsl(var(--input))',\n  \t\t\tring: 'hsl(var(--ring))',\n  \t\t\tchart: {\n  \t\t\t\t'1': 'hsl(var(--chart-1))',\n  \t\t\t\t'2': 'hsl(var(--chart-2))',\n  \t\t\t\t'3': 'hsl(var(--chart-3))',\n  \t\t\t\t'4': 'hsl(var(--chart-4))',\n  \t\t\t\t'5': 'hsl(var(--chart-5))'\n  \t\t\t}\n  \t\t},\n  \t\tborderRadius: {\n  \t\t\tlg: 'var(--radius)',\n  \t\t\tmd: 'calc(var(--radius) - 2px)',\n  \t\t\tsm: 'calc(var(--radius) - 4px)'\n  \t\t}\n  \t}\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n};\nexport default config;\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/Frontend/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\", \"next.config.js\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/README.md",
    "content": "# 🪙 Core Token Test Faucet\n\nThis is a simple ERC-20 token faucet built to distribute testnet versions of tokens for various test dApps on the **Core Testnet**.\n\n## 📌 Deployed Token Addresses\n\n| Token                  | Contract Address                             |\n| ---------------------- | -------------------------------------------- |\n| **Lending DAI Token**  | `0x7a8eF80C8136862fc7402E8Cfb9Cd1ea9c3BFB4B` |\n| **Lending USDT Token** | `0x367a5a4C14214BfE67d3C00A97F19Cecd2cf9e87` |\n| **Lending USDC Token** | `0x2bE22845339D49E9b296AbA5462D78F2e929DB05` |\n\n> ⚠️ These tokens are for **Core Testnet** use only and have no real-world value.\n\n---\n\n## 💡 About the Project\n\nTokens available for request:\n\n- ✅ Lending DAI\n- ✅ Lending USDT\n- ✅ Lending USDC\n\n---\n\n## 🔗 Live Faucet Interface\n\n👉 [**https://token-faucet-sandy.vercel.app/**](https://token-faucet-sandy.vercel.app/)\n\n---\n\n## 🔧 How It Works\n\n1. Connect your wallet to the **Core Testnet**\n2. Visit the faucet interface\n3. Choose the token you want to receive\n4. Click **Request Tokens** and confirm the transaction\n\nEach wallet can request tokens based on optional rate limits (e.g., per hour/day) to prevent abuse.\n\n---\n\n## 🛠 Tech Stack\n\n- **Solidity** (`^0.8.x`)\n- **OpenZeppelin** ERC20 contracts\n- **Hardhat** for smart contract development\n- **Nextjs + Ethers.js** frontend _(optional)_\n- **Core Blockchain Testnet**\n\n---\n\n## 📁 Local Development\n\n### 1. Clone the repo\n\n```bash\ngit clone https://github.com/coredao-org/dapp-tutorial\ncd app-tutorial/13-Core-Test-Token-Faucet\n```\n\n### 2. Install dependencies\n\n```bash\nnpm install\n```\n\n### 3. Compile the contracts\n\n```bash\nnpx hardhat compile\n```\n\n### 4. Deploy to Core Testnet\n\n```bash\nnpx hardhat run scripts/deploy.js --network core\n```\n\n### 5. Launch the Frontend\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n---\n\n### ✅ Requesting Test Tokens\n\n1. Connect your wallet to the **Core Testnet**\n2. Visit your localhost link.\n3. Click on any token's **Request** button to receive test tokens directly to your wallet\n\n---\n\n## 🌐 Core Testnet Configuration\n\nYou can manually add Core Testnet to MetaMask using:\n\n```\nNetwork Name: Core Testnet\nChain ID: 1114\nCurrency Symbol: tCORE\nRPC URL: https://rpc.test2.btcs.network\nBlock Explorer: https://scan.test2.btcs.network\n```\n\n---\n\n## 🤝 Contributing\n\nFeel free to fork the repo, suggest features, and open pull requests and add your test tokens to the faucet. Every contribution helps improve the faucet!\n\n---\n\n## 📢 Disclaimer\n\nThis faucet is intended for **testing and development only**. Tokens dispensed have **no real monetary value** and should **not be used on mainnet**.\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/contracts/tDai.sol",
    "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.22;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\nerror LendingDAIToken__NotOwner();\n\ncontract LendingDAIToken is ERC20 {\n\n    address public immutable i_owner;\n\n    constructor() ERC20(\"LendingDAIToken\", \"DAI\") {\n        i_owner = msg.sender;\n    }\n\n    modifier onlyOwner() {\n        if(i_owner != msg.sender) revert LendingDAIToken__NotOwner();\n        _;\n    }\n\n\n    function mint(address _receipient, uint256 _amount) public {\n        _mint(_receipient, _amount);\n    }\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/contracts/tUSD.sol",
    "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.22;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\nerror LendingUSDToken__NotOwner();\n\ncontract LendingUSDToken is ERC20 {\n\n    address public immutable i_owner;\n\n    constructor() ERC20(\"LendingUSDToken\", \"USD\") {\n        i_owner = msg.sender;\n    }\n\n    modifier onlyOwner() {\n        if(i_owner != msg.sender) revert LendingUSDToken__NotOwner();\n        _;\n    }\n\n\n    function mint(address _receipient, uint256 _amount) public {\n        _mint(_receipient, _amount);\n    }\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/contracts/tUSDC.sol",
    "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.22;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\nerror LendingUSDCToken__NotOwner();\n\ncontract LendingUSDCToken is ERC20 {\n\n    address public immutable i_owner;\n\n    constructor() ERC20(\"LendingUSDCToken\", \"USDC\") {\n        i_owner = msg.sender;\n    }\n\n    modifier onlyOwner() {\n        if(i_owner != msg.sender) revert LendingUSDCToken__NotOwner();\n        _;\n    }\n\n\n    function mint(address _receipient, uint256 _amount) public {\n        _mint(_receipient, _amount);\n    }\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.27\",\n\n  networks: {\n    localhost: {\n      url: \"http://127.0.0.1:8545/\",\n      // accounts: Thanks hardhat!\n      chainId: 31337,\n      allowUnlimitedContractSize: true,\n    },\n    core: {\n      url: \"https://rpc.test2.btcs.network\",\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    },\n  },\n};\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/ignition/modules/Lock.js",
    "content": "// This setup uses Hardhat Ignition to manage smart contract deployments.\n// Learn more about it at https://hardhat.org/ignition\n\nconst { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/package.json",
    "content": "{\n  \"name\": \"reuse\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-toolbox\": \"^5.0.0\",\n    \"hardhat\": \"^2.22.15\"\n  },\n  \"dependencies\": {\n    \"@openzeppelin/contracts\": \"^5.3.0\",\n    \"dotenv\": \"^17.2.0\"\n  }\n}\n"
  },
  {
    "path": "13-Core-Test-Token-Faucet/scripts/deploy.js",
    "content": "const hre = require(\"hardhat\");\nconst {\n    loadFixture\n  } = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\n\nasync function main() {\n\n    const FEE = ethers.parseUnits(\"0.01\", 18);\n    \n  const LendingDAIToken = await hre.ethers.getContractFactory(\"LendingDAIToken\");\n  const LendingDAI  = await LendingDAIToken.deploy();\n\n  console.log(\"Lending Dai Token deployed to:\", LendingDAI.target);\n\n  const LendingUSDToken = await hre.ethers.getContractFactory(\"LendingUSDToken\");\n  const LendingUSD  = await LendingUSDToken.deploy();\n\n  console.log(\"Lending USDT oken deployed to:\", LendingUSD.target);\n\n  const LendingUSDCToken = await hre.ethers.getContractFactory(\"LendingUSDCToken\");\n  const LendingUSDC  = await LendingUSDCToken.deploy();\n\n  console.log(\"Lending USDC Token deployed to:\", LendingUSDC.target);\n\n\n}\n\n// We recommend this pattern to be able to use async/await everywhere\n// and properly handle errors.\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n\n\n\n// CORE: CoreLend contract deployed to: 0x5Ac64F5DA22B25559C7D7522b4B2BB7e2012F382"
  },
  {
    "path": "13-Core-Test-Token-Faucet/test/Lock.js",
    "content": "const {\n  time,\n  loadFixture,\n} = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\nconst { anyValue } = require(\"@nomicfoundation/hardhat-chai-matchers/withArgs\");\nconst { expect } = require(\"chai\");\n\ndescribe(\"Lock\", function () {\n  // We define a fixture to reuse the same setup in every test.\n  // We use loadFixture to run this setup once, snapshot that state,\n  // and reset Hardhat Network to that snapshot in every test.\n  async function deployOneYearLockFixture() {\n    const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;\n    const ONE_GWEI = 1_000_000_000;\n\n    const lockedAmount = ONE_GWEI;\n    const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS;\n\n    // Contracts are deployed using the first signer/account by default\n    const [owner, otherAccount] = await ethers.getSigners();\n\n    const Lock = await ethers.getContractFactory(\"Lock\");\n    const lock = await Lock.deploy(unlockTime, { value: lockedAmount });\n\n    return { lock, unlockTime, lockedAmount, owner, otherAccount };\n  }\n\n  describe(\"Deployment\", function () {\n    it(\"Should set the right unlockTime\", async function () {\n      const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.unlockTime()).to.equal(unlockTime);\n    });\n\n    it(\"Should set the right owner\", async function () {\n      const { lock, owner } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.owner()).to.equal(owner.address);\n    });\n\n    it(\"Should receive and store the funds to lock\", async function () {\n      const { lock, lockedAmount } = await loadFixture(\n        deployOneYearLockFixture\n      );\n\n      expect(await ethers.provider.getBalance(lock.target)).to.equal(\n        lockedAmount\n      );\n    });\n\n    it(\"Should fail if the unlockTime is not in the future\", async function () {\n      // We don't use the fixture here because we want a different deployment\n      const latestTime = await time.latest();\n      const Lock = await ethers.getContractFactory(\"Lock\");\n      await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith(\n        \"Unlock time should be in the future\"\n      );\n    });\n  });\n\n  describe(\"Withdrawals\", function () {\n    describe(\"Validations\", function () {\n      it(\"Should revert with the right error if called too soon\", async function () {\n        const { lock } = await loadFixture(deployOneYearLockFixture);\n\n        await expect(lock.withdraw()).to.be.revertedWith(\n          \"You can't withdraw yet\"\n        );\n      });\n\n      it(\"Should revert with the right error if called from another account\", async function () {\n        const { lock, unlockTime, otherAccount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // We can increase the time in Hardhat Network\n        await time.increaseTo(unlockTime);\n\n        // We use lock.connect() to send a transaction from another account\n        await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith(\n          \"You aren't the owner\"\n        );\n      });\n\n      it(\"Shouldn't fail if the unlockTime has arrived and the owner calls it\", async function () {\n        const { lock, unlockTime } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // Transactions are sent using the first signer by default\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).not.to.be.reverted;\n      });\n    });\n\n    describe(\"Events\", function () {\n      it(\"Should emit an event on withdrawals\", async function () {\n        const { lock, unlockTime, lockedAmount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw())\n          .to.emit(lock, \"Withdrawal\")\n          .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg\n      });\n    });\n\n    describe(\"Transfers\", function () {\n      it(\"Should transfer the funds to the owner\", async function () {\n        const { lock, unlockTime, lockedAmount, owner } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).to.changeEtherBalances(\n          [owner, lock],\n          [lockedAmount, -lockedAmount]\n        );\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "14-Corelend/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n"
  },
  {
    "path": "14-Corelend/Frontend/.eslintrc.json",
    "content": "{\n  \"extends\": [\"next/core-web-vitals\", \"next/typescript\"]\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# env files (can opt-in for commiting if needed)\n.env*\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "14-Corelend/Frontend/README.md",
    "content": "This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n"
  },
  {
    "path": "14-Corelend/Frontend/app/borrow/page.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { AlertTriangle, Calculator, TrendingDown } from \"lucide-react\"\nimport { CONTRACT_ABI, CONTRACT_ADDRESS, CONTRACT_TOKEN } from \"../constants/constants\"\nimport { ethers } from \"ethers\"\nimport { Value } from \"@radix-ui/react-select\"\n\nconst tokens = [\n  { symbol: \"USDT\", name: \"Tether USD\", logo: \"💵\", address: \"0x367a5a4C14214BfE67d3C00A97F19Cecd2cf9e87\" },\n  { symbol: \"DAI\", name: \"Dai Stablecoin\", logo: \"🟡\", address: \"0x7a8eF80C8136862fc7402E8Cfb9Cd1ea9c3BFB4B\" },\n  { symbol: \"USDC\", name: \"USD Coin\", logo: \"🔵\", address: \"0x2bE22845339D49E9b296AbA5462D78F2e929DB05\" },\n]\n\n\nexport default function BorrowPage() {\n  const { isConnected, isCorrectNetwork, signer } = useWallet()\n  const { toast } = useToast()\n  const [collateralToken, setCollateralToken] = useState(\"\")\n  const [borrowToken, setBorrowToken] = useState(\"\")\n  const [borrowAmount, setBorrowAmount] = useState(\"\")\n\n  const collateralRequired = borrowAmount ? (Number.parseFloat(borrowAmount) * 1.5).toFixed(2) : \"0.00\"\n  const liquidationPrice = borrowAmount ? (Number.parseFloat(borrowAmount) * 1.33).toFixed(2) : \"0.00\"\n\n  const handleBorrow = async () => {\n    if (!isConnected || !isCorrectNetwork) {\n      toast({\n        title: \"Wallet Not Connected\",\n        description: \"Please connect your wallet and switch to Core Testnet\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    if (!collateralToken || !borrowToken || !borrowAmount) {\n      toast({\n        title: \"Missing Information\",\n        description: \"Please fill in all required fields\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    if (Number.parseFloat(borrowAmount) <= 0) {\n      toast({\n        title: \"Invalid Amount\",\n        description: \"Please enter a valid borrow amount\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      // TODO: Implement contract interaction\n      const contract = new ethers.Contract(CONTRACT_ADDRESS, CONTRACT_ABI, signer)\n      const token_contract = new ethers.Contract(collateralToken, CONTRACT_TOKEN, signer)\n\n      console.log(collateralToken)\n      console.log(borrowToken)\n\n      const approval_tx = await token_contract.approve(CONTRACT_ADDRESS, ethers.parseUnits(collateralRequired, 18))\n      await approval_tx.wait();\n\n      const borrow_tx = await contract.borrow(\n        collateralToken,\n        borrowToken,\n        ethers.parseUnits(borrowAmount, 18)\n      )\n      await borrow_tx.wait()\n\n      toast({\n        title: \"Borrow Successful\",\n        description: `Successfully borrowed ${borrowAmount} ${borrowToken}`,\n      })\n\n      // Reset form\n      setCollateralToken(\"\")\n      setBorrowToken(\"\")\n      setBorrowAmount(\"\")\n    } catch (error) {\n      console.log(\"Borrow failed:\")\n      toast({\n        title: \"Borrow Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  return (\n    <div className=\"max-w-2xl mx-auto space-y-8\">\n      <div className=\"text-center space-y-4\">\n        <h1 className=\"text-3xl font-bold text-gray-900\">Borrow Tokens</h1>\n        <p className=\"text-gray-600\">\n          Borrow tokens by providing collateral. Maintain a healthy collateralization ratio to avoid liquidation.\n        </p>\n      </div>\n\n      <Card className=\"hover:shadow-lg transition-shadow\">\n        <CardHeader>\n          <CardTitle className=\"flex items-center space-x-2\">\n            <TrendingDown className=\"h-5 w-5 text-primary\" />\n            <span>Create Loan</span>\n          </CardTitle>\n          <CardDescription>\n            Select your collateral and borrow tokens, then specify the amount you want to borrow.\n          </CardDescription>\n        </CardHeader>\n\n        <CardContent className=\"space-y-6\">\n          {/* Collateral Token Selection */}\n          <div className=\"space-y-2\">\n            <label className=\"text-sm font-medium text-gray-700\">Collateral Token</label>\n            <Select onValueChange={(value) => setCollateralToken(value)}>\n              <SelectTrigger>\n                <SelectValue placeholder=\"Select collateral token\" />\n              </SelectTrigger>\n              <SelectContent>\n                {tokens.map((token) => (\n                  <SelectItem key={token.symbol} value={token.address} >\n                    <div className=\"flex items-center space-x-2\">\n                      <span>{token.logo}</span>\n                      <span>{token.symbol}</span>\n                      <span className=\"text-gray-500\">- {token.name}</span>\n                    </div>\n                  </SelectItem>\n                ))}\n              </SelectContent>\n            </Select>\n          </div>\n\n          {/* Borrow Token Selection */}\n          <div className=\"space-y-2\">\n            <label className=\"text-sm font-medium text-gray-700\">Borrow Token</label>\n            <Select onValueChange={(value) => setBorrowToken(value)}>\n              <SelectTrigger>\n                <SelectValue placeholder=\"Select token to borrow\" />\n              </SelectTrigger>\n              <SelectContent>\n                {tokens.map((token) => (\n                  <SelectItem key={token.symbol} value={token.address}>\n                    <div className=\"flex items-center space-x-2\">\n                      <span>{token.logo}</span>\n                      <span>{token.symbol}</span>\n                      <span className=\"text-gray-500\">- {token.name}</span>\n                    </div>\n                  </SelectItem>\n                ))}\n              </SelectContent>\n            </Select>\n          </div>\n\n          {/* Borrow Amount */}\n          <div className=\"space-y-2\">\n            <label className=\"text-sm font-medium text-gray-700\">Borrow Amount</label>\n            <Input\n              type=\"number\"\n              placeholder=\"0.00\"\n              value={borrowAmount}\n              onChange={(e) => setBorrowAmount(e.target.value)}\n            />\n          </div>\n\n          {/* Loan Details */}\n          {borrowAmount && collateralToken && borrowToken && (\n            <Card className=\"bg-gray-50\">\n              <CardHeader className=\"pb-3\">\n                <CardTitle className=\"text-lg flex items-center space-x-2\">\n                  <Calculator className=\"h-4 w-4\" />\n                  <span>Loan Details</span>\n                </CardTitle>\n              </CardHeader>\n              <CardContent className=\"space-y-3\">\n                <div className=\"flex justify-between items-center\">\n                  <span className=\"text-gray-600\">Collateral Required (150%)</span>\n                  <span className=\"font-medium\">\n                    {collateralRequired} {tokens.find(t => t.address === collateralToken)?.symbol}\n                  </span>\n                </div>\n                <div className=\"flex justify-between items-center\">\n                  <span className=\"text-gray-600\">Liquidation Threshold</span>\n                  <span className=\"font-medium\">\n                    {liquidationPrice} {tokens.find(t => t.address === collateralToken)?.symbol}\n                  </span>\n                </div>\n                <div className=\"flex justify-between items-center\">\n                  <span className=\"text-gray-600\">Interest Rate</span>\n                  <Badge variant=\"secondary\">12.5% APR</Badge>\n                </div>\n                <div className=\"flex justify-between items-center\">\n                  <span className=\"text-gray-600\">Loan-to-Value Ratio</span>\n                  <span className=\"font-medium\">66.67%</span>\n                </div>\n              </CardContent>\n            </Card>\n          )}\n\n          {/* Warning */}\n          <Card className=\"border-yellow-200 bg-yellow-50\">\n            <CardContent className=\"pt-4\">\n              <div className=\"flex items-start space-x-3\">\n                <AlertTriangle className=\"h-5 w-5 text-yellow-600 mt-0.5\" />\n                <div className=\"space-y-1\">\n                  <p className=\"text-yellow-800 font-medium text-sm\">Liquidation Risk Warning</p>\n                  <p className=\"text-yellow-700 text-sm\">\n                    If your collateral value falls below 133% of your borrowed amount, your position may be liquidated.\n                    Monitor your loan regularly.\n                  </p>\n                </div>\n              </div>\n            </CardContent>\n          </Card>\n\n          {/* Borrow Button */}\n          <Button\n            onClick={handleBorrow}\n            className=\"w-full bg-primary hover:bg-primary/90 text-black\"\n            disabled={!isConnected || !isCorrectNetwork || !collateralToken || !borrowToken || !borrowAmount}\n          >\n            {!isConnected ? \"Connect Wallet\" : !isCorrectNetwork ? \"Switch to Core Testnet\" : \"Borrow Tokens\"}\n          </Button>\n        </CardContent>\n      </Card>\n\n      {(!isConnected || !isCorrectNetwork) && (\n        <Card className=\"border-yellow-200 bg-yellow-50\">\n          <CardContent className=\"pt-6\">\n            <div className=\"text-center space-y-2\">\n              <p className=\"text-yellow-800 font-medium\">\n                {!isConnected ? \"Connect your wallet to start borrowing\" : \"Switch to Core Testnet to continue\"}\n              </p>\n              <p className=\"text-yellow-600 text-sm\">\n                Make sure you're connected to the Core Testnet to interact with the protocol.\n              </p>\n            </div>\n          </CardContent>\n        </Card>\n      )}\n    </div>\n  )\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/app/constants/constants.tsx",
    "content": "const CONTRACT_ADDRESS = \"0xd1022F7C4690458A3bB564710cE8f320aE940cB2\";\n\nconst CONTRACT_ABI = [\n  {\n    \"inputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnableInvalidOwner\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"account\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnableUnauthorizedAccount\",\n    \"type\": \"error\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"previousOwner\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"OwnershipTransferred\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"SECONDS_IN_YEAR\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"token\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"addSupportedToken\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"collateralToken\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"borrowToken\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"borrowAmount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"borrow\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"collateralFactor\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"borrowToken\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"currentDebt\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"token\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"deposit\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"tokenAddress\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"getLendersBalance\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"borrowToken\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"getLoanDetails\",\n    \"outputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"collateralToken\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"borrowToken\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"collateralAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"totalBorrowAmount\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"timestamp\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"internalType\": \"struct CoreLend.LoanPosition\",\n        \"name\": \"\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"interestRatePerYear\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"isSupportedToken\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"lenderBalances\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"user\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"borrowToken\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"liquidate\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"owner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"renounceOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"borrowToken\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"repay\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"newOwner\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"transferOwnership\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"userLoans\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"collateralToken\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"borrowToken\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"collateralAmount\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"totalBorrowAmount\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"timestamp\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"token\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"withdraw\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]\n\nconst CONTRACT_TOKEN = [\n  {\n    \"inputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"allowance\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"needed\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ERC20InsufficientAllowance\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"balance\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"needed\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"ERC20InsufficientBalance\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"approver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidApprover\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"receiver\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidReceiver\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"sender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidSender\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"ERC20InvalidSpender\",\n    \"type\": \"error\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Approval\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"Transfer\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"owner\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"allowance\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"spender\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"approve\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"account\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"balanceOf\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"decimals\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint8\",\n        \"name\": \"\",\n        \"type\": \"uint8\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"i_owner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_receipient\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"mint\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"name\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"symbol\",\n    \"outputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"\",\n        \"type\": \"string\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"totalSupply\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transfer\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"from\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"to\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"value\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"transferFrom\",\n    \"outputs\": [\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]\n\n  export {CONTRACT_ABI, CONTRACT_ADDRESS, CONTRACT_TOKEN}"
  },
  {
    "path": "14-Corelend/Frontend/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n  :root {\n    --background: 0 0% 100%;\n    --foreground: 222.2 84% 4.9%;\n    --card: 0 0% 100%;\n    --card-foreground: 222.2 84% 4.9%;\n    --popover: 0 0% 100%;\n    --popover-foreground: 222.2 84% 4.9%;\n    --primary: 45 93% 47%;\n    --primary-foreground: 222.2 84% 4.9%;\n    --secondary: 210 40% 96%;\n    --secondary-foreground: 222.2 84% 4.9%;\n    --muted: 210 40% 96%;\n    --muted-foreground: 215.4 16.3% 46.9%;\n    --accent: 210 40% 96%;\n    --accent-foreground: 222.2 84% 4.9%;\n    --destructive: 0 84.2% 60.2%;\n    --destructive-foreground: 210 40% 98%;\n    --border: 214.3 31.8% 91.4%;\n    --input: 214.3 31.8% 91.4%;\n    --ring: 45 93% 47%;\n    --radius: 0.5rem;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/app/layout.tsx",
    "content": "import type React from \"react\"\nimport type { Metadata } from \"next\"\nimport { Inter } from \"next/font/google\"\nimport \"./globals.css\"\nimport { Navbar } from \"@/components/navbar\"\nimport { WalletProvider } from \"@/components/wallet-provider\"\nimport { Toaster } from \"@/components/ui/toaster\"\n\nconst inter = Inter({ subsets: [\"latin\"] })\n\nexport const metadata: Metadata = {\n  title: \"Core DeFi - Multi-Token Lending & Borrowing\",\n  description: \"Decentralized lending and borrowing protocol on Core testnet\",\n}\n\nexport default function RootLayout({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\">\n      <body className={inter.className}>\n        <WalletProvider>\n          <div className=\"min-h-screen bg-gradient-to-br from-amber-50 to-yellow-50\">\n            <Navbar />\n            <main className=\"container mx-auto px-4 py-8\">{children}</main>\n          </div>\n          <Toaster />\n        </WalletProvider>\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/app/lend/page.tsx",
    "content": "\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { Coins, TrendingUp, Wallet } from \"lucide-react\"\nimport { CONTRACT_ABI, CONTRACT_ADDRESS, CONTRACT_TOKEN } from \"../constants/constants\"\nimport { ethers } from \"ethers\"\n\nconst supportedTokens = [\n  {\n    symbol: \"USDT\",\n    name: \"Tether USD\",\n    logo: \"💵\",\n    apy: \"8.5%\",\n    address: \"0x367a5a4C14214BfE67d3C00A97F19Cecd2cf9e87\",\n  },\n  {\n    symbol: \"DAI\",\n    name: \"Dai Stablecoin\",\n    logo: \"🟡\",\n    apy: \"7.8%\",\n    address: \"0x7a8eF80C8136862fc7402E8Cfb9Cd1ea9c3BFB4B\",\n  },\n  {\n    symbol: \"USDC\",\n    name: \"USD Coin\",\n    logo: \"🔵\",\n    apy: \"8.2%\",\n    address: \"0x2bE22845339D49E9b296AbA5462D78F2e929DB05\",\n  },\n]\n\nexport default function LendPage() {\n  const { isConnected, isCorrectNetwork, signer } = useWallet()\n  const { toast } = useToast()\n  const [depositAmounts, setDepositAmounts] = useState<{ [key: string]: string }>({})\n  const [withdrawAmounts, setWithdrawAmounts] = useState<{ [key: string]: string }>({})\n  const [balances, setBalances] = useState<{ [key: string]: string }>({})\n  const [deposits, setDeposits] = useState<{ [key: string]: string }>({})\n\n  const fetchBalances = async () => {\n    if (!signer) return\n\n    const updatedBalances: { [key: string]: string } = {};\n    const updatedDeposits: { [key: string]: string } = {};\n\n\n    for (const token of supportedTokens) {\n      const tokenContract = new ethers.Contract(token.address, CONTRACT_TOKEN, signer)\n      const mainContract = new ethers.Contract(CONTRACT_ADDRESS, CONTRACT_ABI, signer)\n\n      const [balance, deposited] = await Promise.all([\n        tokenContract.balanceOf(signer),\n        mainContract.getLendersBalance(signer, token.address),\n      ])\n\n      updatedBalances[token.symbol] = ethers.formatUnits(balance, 18)\n      updatedDeposits[token.symbol] = ethers.formatUnits(deposited, 18)\n    }\n\n    setBalances(updatedBalances)\n    setDeposits(updatedDeposits)\n  }\n\n  useEffect(() => {\n    if (isConnected && isCorrectNetwork) {\n      fetchBalances()\n    }\n  }, [isConnected, isCorrectNetwork])\n\n  const handleDeposit = async (token: string, amount: string) => {\n    if (!isConnected || !isCorrectNetwork) {\n      toast({\n        title: \"Wallet Not Connected\",\n        description: \"Please connect your wallet and switch to Core Testnet\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    if (!amount || Number.parseFloat(amount) <= 0) {\n      toast({\n        title: \"Invalid Amount\",\n        description: \"Please enter a valid deposit amount\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      // TODO: Implement contract interaction\n      const contract = new ethers.Contract(CONTRACT_ADDRESS, CONTRACT_ABI, signer)\n      const token_contract = new ethers.Contract(token, CONTRACT_TOKEN, signer)\n   \n      const approval_tx = await token_contract.approve(CONTRACT_ADDRESS, ethers.parseUnits(amount, 18))\n      await approval_tx.wait();\n\n      const deposit_tx = await contract.deposit(token, ethers.parseUnits(amount, 18))\n      await deposit_tx.wait();\n\n      toast({\n        title: \"Deposit Successful\",\n        description: `Successfully deposited ${amount} ${token}`,\n      })\n\n      setDepositAmounts((prev) => ({ ...prev, [token]: \"\" }))\n\n      await fetchBalances()\n\n    } catch (error) {\n      console.log(\"Deposit failed:\")\n      toast({\n        title: \"Deposit Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  const handleWithdraw = async (token: string, amount: string) => {\n    if (!isConnected || !isCorrectNetwork) {\n      toast({\n        title: \"Wallet Not Connected\",\n        description: \"Please connect your wallet and switch to Core Testnet\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    if (!amount || Number.parseFloat(amount) <= 0) {\n      toast({\n        title: \"Invalid Amount\",\n        description: \"Please enter a valid withdrawal amount\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      // TODO: Implement contract interaction\n      console.log(token)\n      const contract = new ethers.Contract(CONTRACT_ADDRESS, CONTRACT_ABI, signer)\n\n      const withdraw_tx = await contract.withdraw(token, ethers.parseUnits(amount, 18))\n      await withdraw_tx.wait();\n      toast({\n        title: \"Withdrawal Successful\",\n        description: `Successfully withdrew ${amount} ${token}`,\n      })\n\n      setWithdrawAmounts((prev) => ({ ...prev, [token]: \"\" }))\n\n      await fetchBalances()\n\n    } catch (error) {\n      console.log(\"Withdrawal failed:\")\n      toast({\n        title: \"Withdrawal Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  return (\n    <div className=\"space-y-8\">\n      <div className=\"text-center space-y-4\">\n        <h1 className=\"text-3xl font-bold text-gray-900\">Lend Tokens</h1>\n        <p className=\"text-gray-600 max-w-2xl mx-auto\">\n          Deposit your tokens to earn interest. Your deposits are secured by smart contracts and you can withdraw at any\n          time.\n        </p>\n      </div>\n\n      <div className=\"grid md:grid-cols-2 lg:grid-cols-3 gap-6\">\n        {supportedTokens.map((token) => (\n          <Card key={token.symbol} className=\"hover:shadow-lg transition-shadow\">\n            <CardHeader>\n              <div className=\"flex items-center justify-between\">\n                <div className=\"flex items-center space-x-3\">\n                  <div className=\"text-2xl\">{token.logo}</div>\n                  <div>\n                    <CardTitle className=\"text-lg\">{token.symbol}</CardTitle>\n                    <CardDescription>{token.name}</CardDescription>\n                  </div>\n                </div>\n                <Badge variant=\"secondary\" className=\"bg-green-100 text-green-800\">\n                  {token.apy} APY\n                </Badge>\n              </div>\n            </CardHeader>\n\n            <CardContent className=\"space-y-6\">\n              {/* Balance Info */}\n              <div className=\"space-y-2\">\n                <div className=\"flex items-center justify-between text-sm\">\n                  <span className=\"flex items-center text-gray-600\">\n                    <Wallet className=\"h-4 w-4 mr-1\" />\n                    Wallet Balance\n                  </span>\n                  <span className=\"font-medium\">\n                    {balances[token.symbol]} {token.symbol}\n                  </span>\n                </div>\n                <div className=\"flex items-center justify-between text-sm\">\n                  <span className=\"flex items-center text-gray-600\">\n                    <Coins className=\"h-4 w-4 mr-1\" />\n                    Deposited\n                  </span>\n                  <span className=\"font-medium\">\n                    {deposits[token.symbol]} {token.symbol}\n                  </span>\n                </div>\n              </div>\n\n              {/* Deposit Section */}\n              <div className=\"space-y-3\">\n                <h4 className=\"font-medium text-gray-900\">Deposit</h4>\n                <div className=\"flex space-x-2\">\n                  <Input\n                    type=\"number\"\n                    placeholder=\"0.00\"\n                    value={depositAmounts[token.symbol] || \"\"}\n                    onChange={(e) =>\n                      setDepositAmounts((prev) => ({\n                        ...prev,\n                        [token.symbol]: e.target.value,\n                      }))\n                    }\n                    className=\"flex-1\"\n                  />\n                  <Button\n                    onClick={() => handleDeposit(token.address, depositAmounts[token.symbol] || \"\")}\n                    className=\"bg-primary hover:bg-primary/90 text-black\"\n                    disabled={!isConnected || !isCorrectNetwork}\n                  >\n                    Deposit\n                  </Button>\n                </div>\n              </div>\n\n              {/* Withdraw Section */}\n              <div className=\"space-y-3\">\n                <h4 className=\"font-medium text-gray-900\">Withdraw</h4>\n                <div className=\"flex space-x-2\">\n                  <Input\n                    type=\"number\"\n                    placeholder=\"0.00\"\n                    value={withdrawAmounts[token.symbol] || \"\"}\n                    onChange={(e) =>\n                      setWithdrawAmounts((prev) => ({\n                        ...prev,\n                        [token.symbol]: e.target.value,\n                      }))\n                    }\n                    className=\"flex-1\"\n                  />\n                  <Button\n                    onClick={() => handleWithdraw(token.address, withdrawAmounts[token.symbol] || \"\")}\n                    variant=\"outline\"\n                    disabled={!isConnected || !isCorrectNetwork}\n                  >\n                    Withdraw\n                  </Button>\n                </div>\n              </div>\n\n              {/* Earnings Preview */}\n              <div className=\"bg-yellow-50 p-3 rounded-lg\">\n                <div className=\"flex items-center justify-between text-sm\">\n                  <span className=\"flex items-center text-gray-600\">\n                    <TrendingUp className=\"h-4 w-4 mr-1\" />\n                    Est. Annual Earnings\n                  </span>\n                  <span className=\"font-medium text-green-600\">\n                    {((Number.parseFloat(deposits[token.symbol]) * Number.parseFloat(token.apy)) / 100).toFixed(2)}{\" \"}\n                    {token.symbol}\n                  </span>\n                </div>\n              </div>\n            </CardContent>\n          </Card>\n        ))}\n      </div>\n\n      {(!isConnected || !isCorrectNetwork) && (\n        <Card className=\"border-yellow-200 bg-yellow-50\">\n          <CardContent className=\"pt-6\">\n            <div className=\"text-center space-y-2\">\n              <p className=\"text-yellow-800 font-medium\">\n                {!isConnected ? \"Connect your wallet to start lending\" : \"Switch to Core Testnet to continue\"}\n              </p>\n              <p className=\"text-yellow-600 text-sm\">\n                Make sure you're connected to the Core Testnet to interact with the protocol.\n              </p>\n            </div>\n          </CardContent>\n        </Card>\n      )}\n    </div>\n  )\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/app/loans/page.tsx",
    "content": "\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/ui/table\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { AlertTriangle, Clock, DollarSign, TrendingUp } from \"lucide-react\"\nimport { CONTRACT_ABI, CONTRACT_ADDRESS, CONTRACT_TOKEN } from \"../constants/constants\"\nimport { ethers } from \"ethers\"\n\n// Mock loan data - in real app, this would come from smart contract\nconst mockLoans = [\n  {\n    id: \"1\",\n    collateralToken: \"USDT\",\n    collateralAmount: \"1500.00\",\n    borrowToken: \"DAI\",\n    borrowAmount: \"1000.00\",\n    interestAccrued: \"45.67\",\n    totalRepayable: \"1045.67\",\n    timeBorrowed: \"2024-01-15\",\n    healthFactor: 1.85,\n    status: \"active\",\n  },\n  {\n    id: \"2\",\n    collateralToken: \"USDC\",\n    collateralAmount: \"750.00\",\n    borrowToken: \"USDT\",\n    borrowAmount: \"500.00\",\n    interestAccrued: \"23.45\",\n    totalRepayable: \"523.45\",\n    timeBorrowed: \"2024-01-20\",\n    healthFactor: 1.43,\n    status: \"active\",\n  },\n  {\n    id: \"3\",\n    collateralToken: \"DAI\",\n    collateralAmount: \"2250.00\",\n    borrowToken: \"USDC\",\n    borrowAmount: \"1500.00\",\n    interestAccrued: \"78.90\",\n    totalRepayable: \"1578.90\",\n    timeBorrowed: \"2024-01-10\",\n    healthFactor: 1.12,\n    status: \"at_risk\",\n  },\n]\n\nconst tokenMap = {\n    USDT: \"0x367a5a4C14214BfE67d3C00A97F19Cecd2cf9e87\",\n    DAI: \"0x7a8eF80C8136862fc7402E8Cfb9Cd1ea9c3BFB4B\",\n    USDC: \"0x2bE22845339D49E9b296AbA5462D78F2e929DB05\",\n  }\n  \n  interface Loans {\n    user: string\n    borrowToken: string\n    collateralToken: string\n    borrowedAmount: number\n    collateralAmount: number\n    totalRepayable: number\n    healthFactor: number\n  }\n\n  \n\nexport default function LoansPage() {\n  const { isConnected, isCorrectNetwork, provider, signer } = useWallet()\n  const { toast } = useToast()\n  const [loans, setLoans] = useState<Loans[]>([])\n\n  const tokenMap = {\n    USDT: \"0x367a5a4C14214BfE67d3C00A97F19Cecd2cf9e87\",\n    DAI: \"0x7a8eF80C8136862fc7402E8Cfb9Cd1ea9c3BFB4B\",\n    USDC: \"0x2bE22845339D49E9b296AbA5462D78F2e929DB05\",\n  };\n  \n  const symbolFromAddress = (address: string): string => {\n    for (const [symbol, tokenAddr] of Object.entries(tokenMap)) {\n      if (tokenAddr.toLowerCase() === address.toLowerCase()) {\n        return symbol;\n      }\n    }\n    return \"UNKNOWN\";\n  };\n  \n  const fetchLoans = async () => {\n    if (!provider || !signer) return;\n  \n    try {\n      const userAddress = await signer.getAddress();\n      const contract = new ethers.Contract(CONTRACT_ADDRESS, CONTRACT_ABI, signer);\n  \n      const symbols = Object.keys(tokenMap);\n      const allLoans: Loans[] = [];\n  \n      for (const borrowSymbol of symbols) {\n        const borrowTokenAddress = tokenMap[borrowSymbol as keyof typeof tokenMap];\n        const loan = await contract.getLoanDetails(userAddress, borrowTokenAddress);\n  \n        // Only add if there's an actual loan\n        if (\n          loan.collateralAmount > 0 &&\n          loan.totalBorrowAmount > 0\n        ) {\n          const borrowAmount = Number(loan.totalBorrowAmount) / 1e18;\n          const collateralAmount = Number(loan.collateralAmount) / 1e18;\n          const collateralSymbol = symbolFromAddress(loan.collateralToken);\n  \n          const totalRepayable = borrowAmount * 1.1; // 10% interest\n          const healthFactor = collateralAmount / totalRepayable;\n  \n          allLoans.push({\n            user: userAddress,\n            borrowToken: borrowSymbol,\n            collateralToken: collateralSymbol,\n            borrowedAmount: borrowAmount,\n            collateralAmount,\n            totalRepayable,\n            healthFactor,\n          });\n        }\n      }\n  \n      setLoans(allLoans);\n    } catch (err) {\n      console.log(\"Error fetching loans:\");\n    }\n  };\n  \n  \n  \n  \n  \n  \n  \n  \n\n  const handleRepay = async (borrowToken: string, collateralRequired: string, loanss: Loans) => {\n    if (!isConnected || !isCorrectNetwork) {\n      toast({\n        title: \"Wallet Not Connected\",\n        description: \"Please connect your wallet and switch to Core Testnet\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      // TODO: Implement contract interaction\n      console.log(\"In here!\")\n      console.log(borrowToken)\n      console.log(loanss)\n      const contract = new ethers.Contract(CONTRACT_ADDRESS, CONTRACT_ABI, signer);\n      const token_contract = new ethers.Contract(borrowToken, CONTRACT_TOKEN, signer)\n\n\n      const approval_tx = await token_contract.approve(CONTRACT_ADDRESS, ethers.parseUnits(collateralRequired, 18))\n      await approval_tx.wait();\n\n      const repay_tx = await contract.repay(borrowToken)\n      await repay_tx.wait();\n\n      toast({\n        title: \"Repayment Successful\",\n        description: `Successfully repaid loan`,\n      })\n    } catch (error) {\n    console.log(\"Repayment failed:\")\n      toast({\n        title: \"Repayment Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  const handleLiquidate = async (loanId: any) => {\n    if (!isConnected || !isCorrectNetwork) {\n      toast({\n        title: \"Wallet Not Connected\",\n        description: \"Please connect your wallet and switch to Core Testnet\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      // TODO: Implement contract interaction\n      // const contract = new ethers.Contract(contractAddress, abi, provider.getSigner())\n      // await contract.liquidate(loanId)\n\n      toast({\n        title: \"Liquidation Successful\",\n        description: `Successfully liquidated loan ${loanId}`,\n      })\n    } catch (error) {\n      console.log(\"Liquidation failed:\")\n      toast({\n        title: \"Liquidation Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  const getHealthFactorColor = (healthFactor: number) => {\n    if (healthFactor >= 1.5) return \"text-green-600\"\n    if (healthFactor >= 1.2) return \"text-yellow-600\"\n    return \"text-red-600\"\n  }\n\n  const getHealthFactorBadge = (healthFactor: number) => {\n    if (healthFactor >= 1.5) return <Badge className=\"bg-green-100 text-green-800\">Healthy</Badge>\n    if (healthFactor >= 1.2) return <Badge className=\"bg-yellow-100 text-yellow-800\">Warning</Badge>\n    return <Badge className=\"bg-red-100 text-red-800\">At Risk</Badge>\n  }\n\n  const formatDate = (dateString: string) => {\n    const date = new Date(dateString)\n    const now = new Date()\n    const diffTime = Math.abs(now.getTime() - date.getTime())\n    const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n    return `${diffDays} days ago`\n  }\n\n    useEffect(() => {\n      if (isConnected && isCorrectNetwork) fetchLoans()\n    }, [isConnected])\n\n  const totalBorrowed = loans.reduce((sum, loan) => sum + loan.borrowedAmount, 0)\n  const totalCollateral = loans.reduce((sum, loan) => sum + loan.collateralAmount, 0)\n  const totalInterest = loans.reduce((sum, loan) => sum + (loan.totalRepayable - loan.borrowedAmount), 0)\n\n  return (\n    <div className=\"space-y-8\">\n      <div className=\"text-center space-y-4\">\n        <h1 className=\"text-3xl font-bold text-gray-900\">My Loans</h1>\n        <p className=\"text-gray-600 max-w-2xl mx-auto\">\n          Monitor your active loans, track interest accrual, and manage repayments. Keep your health factor above 1.2 to\n          avoid liquidation.\n        </p>\n      </div>\n\n      {/* Summary Cards */}\n      <div className=\"grid md:grid-cols-3 gap-6\">\n        <Card>\n          <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n            <CardTitle className=\"text-sm font-medium\">Total Borrowed</CardTitle>\n            <DollarSign className=\"h-4 w-4 text-muted-foreground\" />\n          </CardHeader>\n          <CardContent>\n            <div className=\"text-2xl font-bold\">${totalBorrowed.toFixed(2)}</div>\n            <p className=\"text-xs text-muted-foreground\">Across {loans.length} active loans</p>\n          </CardContent>\n        </Card>\n\n        <Card>\n          <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n            <CardTitle className=\"text-sm font-medium\">Total Collateral</CardTitle>\n            <TrendingUp className=\"h-4 w-4 text-muted-foreground\" />\n          </CardHeader>\n          <CardContent>\n            <div className=\"text-2xl font-bold\">${totalCollateral.toFixed(2)}</div>\n            <p className=\"text-xs text-muted-foreground\">Locked as collateral</p>\n          </CardContent>\n        </Card>\n\n        <Card>\n          <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n            <CardTitle className=\"text-sm font-medium\">Total Interest</CardTitle>\n            <Clock className=\"h-4 w-4 text-muted-foreground\" />\n          </CardHeader>\n          <CardContent>\n            <div className=\"text-2xl font-bold\">${totalInterest.toFixed(2)}</div>\n            <p className=\"text-xs text-muted-foreground\">Accrued interest</p>\n          </CardContent>\n        </Card>\n      </div>\n\n      {/* Loans Table */}\n      <Card>\n        <CardHeader>\n          <CardTitle>Active Loans</CardTitle>\n          <CardDescription>Manage your borrowing positions and monitor health factors</CardDescription>\n        </CardHeader>\n        <CardContent>\n          {loans.length === 0 ? (\n            <div className=\"text-center py-8\">\n              <p className=\"text-gray-500\">No active loans found</p>\n              <p className=\"text-sm text-gray-400 mt-2\">Visit the Borrow page to create your first loan</p>\n            </div>\n          ) : (\n            <div className=\"overflow-x-auto\">\n              <Table>\n                <TableHeader>\n                  <TableRow>\n                    <TableHead>Collateral</TableHead>\n                    <TableHead>Borrowed</TableHead>\n                    <TableHead>Interest</TableHead>\n                    <TableHead>Total Repayable</TableHead>\n                    <TableHead>Health Factor</TableHead>\n                    <TableHead>Time</TableHead>\n                    <TableHead>Actions</TableHead>\n                  </TableRow>\n                </TableHeader>\n                <TableBody>\n                  {loans.map((loan, i) => (\n                    <TableRow key={i}>\n                      <TableCell>\n                        <div className=\"space-y-1\">\n                          <div className=\"font-medium\">\n                            {loan.collateralAmount} {loan.collateralToken}\n                          </div>\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"space-y-1\">\n                          <div className=\"font-medium\">\n                            {loan.borrowedAmount} {loan.borrowToken}\n                          </div>\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"font-medium text-red-600\">\n                          +{loan.totalRepayable - loan.borrowedAmount} {loan.borrowToken}\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"font-medium\">\n                          {loan.totalRepayable} {loan.borrowToken}\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"space-y-1\">\n                          <div className={`font-medium ${getHealthFactorColor(loan.healthFactor)}`}>\n                            {loan.healthFactor.toFixed(2)}\n                          </div>\n                          {getHealthFactorBadge(loan.healthFactor)}\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"text-sm text-gray-500\">{loan.borrowedAmount}</div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"flex space-x-2\">\n                          <Button\n                            size=\"sm\"\n                            onClick={() => handleRepay(tokenMap[loan.borrowToken as keyof typeof tokenMap], loan.totalRepayable.toString(), loan)}\n                            disabled={!isConnected || !isCorrectNetwork}\n                          >\n                            Repay\n                          </Button>\n                          {loan.healthFactor < 1.2 && (\n                            <Button\n                              size=\"sm\"\n                              variant=\"destructive\"\n                              onClick={() => handleLiquidate(1)}\n                              disabled={!isConnected || !isCorrectNetwork}\n                            >\n                              Liquidate\n                            </Button>\n                          )}\n                        </div>\n                      </TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n              </Table>\n            </div>\n          )}\n        </CardContent>\n      </Card>\n\n      {/* Risk Warning */}\n      <Card className=\"border-red-200 bg-red-50\">\n        <CardContent className=\"pt-6\">\n          <div className=\"flex items-start space-x-3\">\n            <AlertTriangle className=\"h-5 w-5 text-red-600 mt-0.5\" />\n            <div className=\"space-y-1\">\n              <p className=\"text-red-800 font-medium text-sm\">Liquidation Risk Management</p>\n              <p className=\"text-red-700 text-sm\">\n                Monitor your health factors closely. Loans with health factors below 1.2 are at risk of liquidation.\n                Consider adding more collateral or repaying part of your loan to maintain a healthy position.\n              </p>\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n\n      {(!isConnected || !isCorrectNetwork) && (\n        <Card className=\"border-yellow-200 bg-yellow-50\">\n          <CardContent className=\"pt-6\">\n            <div className=\"text-center space-y-2\">\n              <p className=\"text-yellow-800 font-medium\">\n                {!isConnected ? \"Connect your wallet to view your loans\" : \"Switch to Core Testnet to continue\"}\n              </p>\n              <p className=\"text-yellow-600 text-sm\">\n                Make sure you're connected to the Core Testnet to interact with the protocol.\n              </p>\n            </div>\n          </CardContent>\n        </Card>\n      )}\n    </div>\n  )\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/app/loans/store.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/ui/table\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { AlertTriangle, Clock, DollarSign, TrendingUp } from \"lucide-react\"\n\n// Mock loan data - in real app, this would come from smart contract\nconst mockLoans = [\n  {\n    id: \"1\",\n    collateralToken: \"USDT\",\n    collateralAmount: \"1500.00\",\n    borrowToken: \"DAI\",\n    borrowAmount: \"1000.00\",\n    interestAccrued: \"45.67\",\n    totalRepayable: \"1045.67\",\n    timeBorrowed: \"2024-01-15\",\n    healthFactor: 1.85,\n    status: \"active\",\n  },\n  {\n    id: \"2\",\n    collateralToken: \"USDC\",\n    collateralAmount: \"750.00\",\n    borrowToken: \"USDT\",\n    borrowAmount: \"500.00\",\n    interestAccrued: \"23.45\",\n    totalRepayable: \"523.45\",\n    timeBorrowed: \"2024-01-20\",\n    healthFactor: 1.43,\n    status: \"active\",\n  },\n  {\n    id: \"3\",\n    collateralToken: \"DAI\",\n    collateralAmount: \"2250.00\",\n    borrowToken: \"USDC\",\n    borrowAmount: \"1500.00\",\n    interestAccrued: \"78.90\",\n    totalRepayable: \"1578.90\",\n    timeBorrowed: \"2024-01-10\",\n    healthFactor: 1.12,\n    status: \"at_risk\",\n  },\n]\n\nexport default function LoansPage() {\n  const { isConnected, isCorrectNetwork } = useWallet()\n  const { toast } = useToast()\n  const [loans] = useState(mockLoans)\n\n  const handleRepay = async (loanId: string, amount: string) => {\n    if (!isConnected || !isCorrectNetwork) {\n      toast({\n        title: \"Wallet Not Connected\",\n        description: \"Please connect your wallet and switch to Core Testnet\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      // TODO: Implement contract interaction\n      // const contract = new ethers.Contract(contractAddress, abi, provider.getSigner())\n      // await contract.repay(loanId, ethers.parseUnits(amount, 18))\n\n      toast({\n        title: \"Repayment Successful\",\n        description: `Successfully repaid loan ${loanId}`,\n      })\n    } catch (error) {\n      console.error(\"Repayment failed:\", error)\n      toast({\n        title: \"Repayment Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  const handleLiquidate = async (loanId: string) => {\n    if (!isConnected || !isCorrectNetwork) {\n      toast({\n        title: \"Wallet Not Connected\",\n        description: \"Please connect your wallet and switch to Core Testnet\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      // TODO: Implement contract interaction\n      // const contract = new ethers.Contract(contractAddress, abi, provider.getSigner())\n      // await contract.liquidate(loanId)\n\n      toast({\n        title: \"Liquidation Successful\",\n        description: `Successfully liquidated loan ${loanId}`,\n      })\n    } catch (error) {\n      console.error(\"Liquidation failed:\", error)\n      toast({\n        title: \"Liquidation Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  const getHealthFactorColor = (healthFactor: number) => {\n    if (healthFactor >= 1.5) return \"text-green-600\"\n    if (healthFactor >= 1.2) return \"text-yellow-600\"\n    return \"text-red-600\"\n  }\n\n  const getHealthFactorBadge = (healthFactor: number) => {\n    if (healthFactor >= 1.5) return <Badge className=\"bg-green-100 text-green-800\">Healthy</Badge>\n    if (healthFactor >= 1.2) return <Badge className=\"bg-yellow-100 text-yellow-800\">Warning</Badge>\n    return <Badge className=\"bg-red-100 text-red-800\">At Risk</Badge>\n  }\n\n  const formatDate = (dateString: string) => {\n    const date = new Date(dateString)\n    const now = new Date()\n    const diffTime = Math.abs(now.getTime() - date.getTime())\n    const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n    return `${diffDays} days ago`\n  }\n\n  const totalBorrowed = loans.reduce((sum, loan) => sum + Number.parseFloat(loan.borrowAmount), 0)\n  const totalCollateral = loans.reduce((sum, loan) => sum + Number.parseFloat(loan.collateralAmount), 0)\n  const totalInterest = loans.reduce((sum, loan) => sum + Number.parseFloat(loan.interestAccrued), 0)\n\n  return (\n    <div className=\"space-y-8\">\n      <div className=\"text-center space-y-4\">\n        <h1 className=\"text-3xl font-bold text-gray-900\">My Loans</h1>\n        <p className=\"text-gray-600 max-w-2xl mx-auto\">\n          Monitor your active loans, track interest accrual, and manage repayments. Keep your health factor above 1.2 to\n          avoid liquidation.\n        </p>\n      </div>\n\n      {/* Summary Cards */}\n      <div className=\"grid md:grid-cols-3 gap-6\">\n        <Card>\n          <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n            <CardTitle className=\"text-sm font-medium\">Total Borrowed</CardTitle>\n            <DollarSign className=\"h-4 w-4 text-muted-foreground\" />\n          </CardHeader>\n          <CardContent>\n            <div className=\"text-2xl font-bold\">${totalBorrowed.toFixed(2)}</div>\n            <p className=\"text-xs text-muted-foreground\">Across {loans.length} active loans</p>\n          </CardContent>\n        </Card>\n\n        <Card>\n          <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n            <CardTitle className=\"text-sm font-medium\">Total Collateral</CardTitle>\n            <TrendingUp className=\"h-4 w-4 text-muted-foreground\" />\n          </CardHeader>\n          <CardContent>\n            <div className=\"text-2xl font-bold\">${totalCollateral.toFixed(2)}</div>\n            <p className=\"text-xs text-muted-foreground\">Locked as collateral</p>\n          </CardContent>\n        </Card>\n\n        <Card>\n          <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n            <CardTitle className=\"text-sm font-medium\">Total Interest</CardTitle>\n            <Clock className=\"h-4 w-4 text-muted-foreground\" />\n          </CardHeader>\n          <CardContent>\n            <div className=\"text-2xl font-bold\">${totalInterest.toFixed(2)}</div>\n            <p className=\"text-xs text-muted-foreground\">Accrued interest</p>\n          </CardContent>\n        </Card>\n      </div>\n\n      {/* Loans Table */}\n      <Card>\n        <CardHeader>\n          <CardTitle>Active Loans</CardTitle>\n          <CardDescription>Manage your borrowing positions and monitor health factors</CardDescription>\n        </CardHeader>\n        <CardContent>\n          {loans.length === 0 ? (\n            <div className=\"text-center py-8\">\n              <p className=\"text-gray-500\">No active loans found</p>\n              <p className=\"text-sm text-gray-400 mt-2\">Visit the Borrow page to create your first loan</p>\n            </div>\n          ) : (\n            <div className=\"overflow-x-auto\">\n              <Table>\n                <TableHeader>\n                  <TableRow>\n                    <TableHead>Collateral</TableHead>\n                    <TableHead>Borrowed</TableHead>\n                    <TableHead>Interest</TableHead>\n                    <TableHead>Total Repayable</TableHead>\n                    <TableHead>Health Factor</TableHead>\n                    <TableHead>Time</TableHead>\n                    <TableHead>Actions</TableHead>\n                  </TableRow>\n                </TableHeader>\n                <TableBody>\n                  {loans.map((loan) => (\n                    <TableRow key={loan.id}>\n                      <TableCell>\n                        <div className=\"space-y-1\">\n                          <div className=\"font-medium\">\n                            {loan.collateralAmount} {loan.collateralToken}\n                          </div>\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"space-y-1\">\n                          <div className=\"font-medium\">\n                            {loan.borrowAmount} {loan.borrowToken}\n                          </div>\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"font-medium text-red-600\">\n                          +{loan.interestAccrued} {loan.borrowToken}\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"font-medium\">\n                          {loan.totalRepayable} {loan.borrowToken}\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"space-y-1\">\n                          <div className={`font-medium ${getHealthFactorColor(loan.healthFactor)}`}>\n                            {loan.healthFactor.toFixed(2)}\n                          </div>\n                          {getHealthFactorBadge(loan.healthFactor)}\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"text-sm text-gray-500\">{formatDate(loan.timeBorrowed)}</div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"flex space-x-2\">\n                          <Button\n                            size=\"sm\"\n                            onClick={() => handleRepay(loan.id, loan.totalRepayable)}\n                            disabled={!isConnected || !isCorrectNetwork}\n                          >\n                            Repay\n                          </Button>\n                          {loan.healthFactor < 1.2 && (\n                            <Button\n                              size=\"sm\"\n                              variant=\"destructive\"\n                              onClick={() => handleLiquidate(loan.id)}\n                              disabled={!isConnected || !isCorrectNetwork}\n                            >\n                              Liquidate\n                            </Button>\n                          )}\n                        </div>\n                      </TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n              </Table>\n            </div>\n          )}\n        </CardContent>\n      </Card>\n\n      {/* Risk Warning */}\n      <Card className=\"border-red-200 bg-red-50\">\n        <CardContent className=\"pt-6\">\n          <div className=\"flex items-start space-x-3\">\n            <AlertTriangle className=\"h-5 w-5 text-red-600 mt-0.5\" />\n            <div className=\"space-y-1\">\n              <p className=\"text-red-800 font-medium text-sm\">Liquidation Risk Management</p>\n              <p className=\"text-red-700 text-sm\">\n                Monitor your health factors closely. Loans with health factors below 1.2 are at risk of liquidation.\n                Consider adding more collateral or repaying part of your loan to maintain a healthy position.\n              </p>\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n\n      {(!isConnected || !isCorrectNetwork) && (\n        <Card className=\"border-yellow-200 bg-yellow-50\">\n          <CardContent className=\"pt-6\">\n            <div className=\"text-center space-y-2\">\n              <p className=\"text-yellow-800 font-medium\">\n                {!isConnected ? \"Connect your wallet to view your loans\" : \"Switch to Core Testnet to continue\"}\n              </p>\n              <p className=\"text-yellow-600 text-sm\">\n                Make sure you're connected to the Core Testnet to interact with the protocol.\n              </p>\n            </div>\n          </CardContent>\n        </Card>\n      )}\n    </div>\n  )\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/app/loans/test.tsx",
    "content": "\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/ui/table\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { AlertTriangle, Clock, DollarSign, TrendingUp } from \"lucide-react\"\nimport { CONTRACT_ABI, CONTRACT_ADDRESS, CONTRACT_TOKEN } from \"../constants/constants\"\nimport { ethers } from \"ethers\"\n\n// Mock loan data - in real app, this would come from smart contract\nconst mockLoans = [\n  {\n    id: \"1\",\n    collateralToken: \"USDT\",\n    collateralAmount: \"1500.00\",\n    borrowToken: \"DAI\",\n    borrowAmount: \"1000.00\",\n    interestAccrued: \"45.67\",\n    totalRepayable: \"1045.67\",\n    timeBorrowed: \"2024-01-15\",\n    healthFactor: 1.85,\n    status: \"active\",\n  },\n  {\n    id: \"2\",\n    collateralToken: \"USDC\",\n    collateralAmount: \"750.00\",\n    borrowToken: \"USDT\",\n    borrowAmount: \"500.00\",\n    interestAccrued: \"23.45\",\n    totalRepayable: \"523.45\",\n    timeBorrowed: \"2024-01-20\",\n    healthFactor: 1.43,\n    status: \"active\",\n  },\n  {\n    id: \"3\",\n    collateralToken: \"DAI\",\n    collateralAmount: \"2250.00\",\n    borrowToken: \"USDC\",\n    borrowAmount: \"1500.00\",\n    interestAccrued: \"78.90\",\n    totalRepayable: \"1578.90\",\n    timeBorrowed: \"2024-01-10\",\n    healthFactor: 1.12,\n    status: \"at_risk\",\n  },\n]\n\nconst tokenMap = {\n    USDT: \"0x367a5a4C14214BfE67d3C00A97F19Cecd2cf9e87\",\n    DAI: \"0x7a8eF80C8136862fc7402E8Cfb9Cd1ea9c3BFB4B\",\n    USDC: \"0x2bE22845339D49E9b296AbA5462D78F2e929DB05\",\n  }\n  \n  interface Loans {\n    user: string\n    borrowToken: string\n    collateralToken: string\n    borrowedAmount: number\n    collateralAmount: number\n    totalRepayable: number\n    healthFactor: number\n  }\n\n  \n\nexport default function LoansPage() {\n  const { isConnected, isCorrectNetwork, provider, signer } = useWallet()\n  const { toast } = useToast()\n  const [loans, setLoans] = useState<Loans[]>([])\n\n  const fetchLoans = async () => {\n    if (!provider || !signer) return\n\n    try {\n      console.log(\"Yup\")\n      const userAddress = await signer.getAddress()\n      const contract = new ethers.Contract(CONTRACT_ADDRESS, CONTRACT_ABI, signer)\n      const allLoans = []\n\n      for (const symbol of Object.keys(tokenMap)) {\n        console.log(\"In here\")\n        const tokenAddress = tokenMap[symbol as keyof typeof tokenMap]\n        const loanData = await contract.getLoanDetails(userAddress, tokenAddress)\n        console.log(loanData)\n        if (loanData.collateralAmount > 0 || loanData.totalBorrowAmount > 0) {\n          const collateral = Number(loanData.collateralAmount) / 1e18\n          const borrowed = Number(loanData.totaltotalBorrowAmount) / 1e18\n          const totalRepayable = borrowed * 1.1\n          const healthFactor = collateral / totalRepayable\n\n          allLoans.push({\n            user: userAddress,\n            borrowToken: symbol,\n            collateralToken: symbol,\n            borrowedAmount: borrowed,\n            collateralAmount: collateral,\n            totalRepayable,\n            healthFactor,\n          })\n        }\n      }\n      setLoans(allLoans)\n    } catch (err) {\n      console.error(\"Loan fetch failed\", err)\n    }\n  }\n\n  const handleRepay = async (loanId: any, amount: any) => {\n    if (!isConnected || !isCorrectNetwork) {\n      toast({\n        title: \"Wallet Not Connected\",\n        description: \"Please connect your wallet and switch to Core Testnet\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      // TODO: Implement contract interaction\n      // const contract = new ethers.Contract(contractAddress, abi, provider.getSigner())\n      // await contract.repay(loanId, ethers.parseUnits(amount, 18))\n\n      toast({\n        title: \"Repayment Successful\",\n        description: `Successfully repaid loan ${loanId}`,\n      })\n    } catch (error) {\n      console.error(\"Repayment failed:\", error)\n      toast({\n        title: \"Repayment Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  const handleLiquidate = async (loanId: any) => {\n    if (!isConnected || !isCorrectNetwork) {\n      toast({\n        title: \"Wallet Not Connected\",\n        description: \"Please connect your wallet and switch to Core Testnet\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      // TODO: Implement contract interaction\n      // const contract = new ethers.Contract(contractAddress, abi, provider.getSigner())\n      // await contract.liquidate(loanId)\n\n      toast({\n        title: \"Liquidation Successful\",\n        description: `Successfully liquidated loan ${loanId}`,\n      })\n    } catch (error) {\n      console.error(\"Liquidation failed:\", error)\n      toast({\n        title: \"Liquidation Failed\",\n        description: \"Transaction failed. Please try again.\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  const getHealthFactorColor = (healthFactor: number) => {\n    if (healthFactor >= 1.5) return \"text-green-600\"\n    if (healthFactor >= 1.2) return \"text-yellow-600\"\n    return \"text-red-600\"\n  }\n\n  const getHealthFactorBadge = (healthFactor: number) => {\n    if (healthFactor >= 1.5) return <Badge className=\"bg-green-100 text-green-800\">Healthy</Badge>\n    if (healthFactor >= 1.2) return <Badge className=\"bg-yellow-100 text-yellow-800\">Warning</Badge>\n    return <Badge className=\"bg-red-100 text-red-800\">At Risk</Badge>\n  }\n\n  const formatDate = (dateString: string) => {\n    const date = new Date(dateString)\n    const now = new Date()\n    const diffTime = Math.abs(now.getTime() - date.getTime())\n    const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n    return `${diffDays} days ago`\n  }\n\n    useEffect(() => {\n      if (isConnected && isCorrectNetwork) fetchLoans()\n    }, [isConnected])\n\n  const totalBorrowed = loans.reduce((sum, loan) => sum + loan.borrowedAmount, 0)\n  const totalCollateral = loans.reduce((sum, loan) => sum + loan.collateralAmount, 0)\n  const totalInterest = loans.reduce((sum, loan) => sum + (loan.totalRepayable - loan.borrowedAmount), 0)\n\n  return (\n    <div className=\"space-y-8\">\n      <div className=\"text-center space-y-4\">\n        <h1 className=\"text-3xl font-bold text-gray-900\">My Loans</h1>\n        <p className=\"text-gray-600 max-w-2xl mx-auto\">\n          Monitor your active loans, track interest accrual, and manage repayments. Keep your health factor above 1.2 to\n          avoid liquidation.\n        </p>\n      </div>\n\n      {/* Summary Cards */}\n      <div className=\"grid md:grid-cols-3 gap-6\">\n        <Card>\n          <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n            <CardTitle className=\"text-sm font-medium\">Total Borrowed</CardTitle>\n            <DollarSign className=\"h-4 w-4 text-muted-foreground\" />\n          </CardHeader>\n          <CardContent>\n            <div className=\"text-2xl font-bold\">${totalBorrowed.toFixed(2)}</div>\n            <p className=\"text-xs text-muted-foreground\">Across {loans.length} active loans</p>\n          </CardContent>\n        </Card>\n\n        <Card>\n          <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n            <CardTitle className=\"text-sm font-medium\">Total Collateral</CardTitle>\n            <TrendingUp className=\"h-4 w-4 text-muted-foreground\" />\n          </CardHeader>\n          <CardContent>\n            <div className=\"text-2xl font-bold\">${totalCollateral.toFixed(2)}</div>\n            <p className=\"text-xs text-muted-foreground\">Locked as collateral</p>\n          </CardContent>\n        </Card>\n\n        <Card>\n          <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n            <CardTitle className=\"text-sm font-medium\">Total Interest</CardTitle>\n            <Clock className=\"h-4 w-4 text-muted-foreground\" />\n          </CardHeader>\n          <CardContent>\n            <div className=\"text-2xl font-bold\">${totalInterest.toFixed(2)}</div>\n            <p className=\"text-xs text-muted-foreground\">Accrued interest</p>\n          </CardContent>\n        </Card>\n      </div>\n\n      {/* Loans Table */}\n      <Card>\n        <CardHeader>\n          <CardTitle>Active Loans</CardTitle>\n          <CardDescription>Manage your borrowing positions and monitor health factors</CardDescription>\n        </CardHeader>\n        <CardContent>\n          {loans.length === 0 ? (\n            <div className=\"text-center py-8\">\n              <p className=\"text-gray-500\">No active loans found</p>\n              <p className=\"text-sm text-gray-400 mt-2\">Visit the Borrow page to create your first loan</p>\n            </div>\n          ) : (\n            <div className=\"overflow-x-auto\">\n              <Table>\n                <TableHeader>\n                  <TableRow>\n                    <TableHead>Collateral</TableHead>\n                    <TableHead>Borrowed</TableHead>\n                    <TableHead>Interest</TableHead>\n                    <TableHead>Total Repayable</TableHead>\n                    <TableHead>Health Factor</TableHead>\n                    <TableHead>Time</TableHead>\n                    <TableHead>Actions</TableHead>\n                  </TableRow>\n                </TableHeader>\n                <TableBody>\n                  {loans.map((loan, i) => (\n                    <TableRow key={i}>\n                      <TableCell>\n                        <div className=\"space-y-1\">\n                          <div className=\"font-medium\">\n                            {loan.collateralAmount} {loan.collateralToken}\n                          </div>\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"space-y-1\">\n                          <div className=\"font-medium\">\n                            {loan.borrowedAmount} {loan.borrowToken}\n                          </div>\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"font-medium text-red-600\">\n                          +{loan.totalRepayable - loan.borrowedAmount} {loan.borrowToken}\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"font-medium\">\n                          {loan.totalRepayable} {loan.borrowToken}\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"space-y-1\">\n                          <div className={`font-medium ${getHealthFactorColor(loan.healthFactor)}`}>\n                            {loan.healthFactor.toFixed(2)}\n                          </div>\n                          {getHealthFactorBadge(loan.healthFactor)}\n                        </div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"text-sm text-gray-500\">{loan.borrowedAmount}</div>\n                      </TableCell>\n                      <TableCell>\n                        <div className=\"flex space-x-2\">\n                          <Button\n                            size=\"sm\"\n                            onClick={() => handleRepay(1, 10)}\n                            disabled={!isConnected || !isCorrectNetwork}\n                          >\n                            Repay\n                          </Button>\n                          {loan.healthFactor < 1.2 && (\n                            <Button\n                              size=\"sm\"\n                              variant=\"destructive\"\n                              onClick={() => handleLiquidate(1)}\n                              disabled={!isConnected || !isCorrectNetwork}\n                            >\n                              Liquidate\n                            </Button>\n                          )}\n                        </div>\n                      </TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n              </Table>\n            </div>\n          )}\n        </CardContent>\n      </Card>\n\n      {/* Risk Warning */}\n      <Card className=\"border-red-200 bg-red-50\">\n        <CardContent className=\"pt-6\">\n          <div className=\"flex items-start space-x-3\">\n            <AlertTriangle className=\"h-5 w-5 text-red-600 mt-0.5\" />\n            <div className=\"space-y-1\">\n              <p className=\"text-red-800 font-medium text-sm\">Liquidation Risk Management</p>\n              <p className=\"text-red-700 text-sm\">\n                Monitor your health factors closely. Loans with health factors below 1.2 are at risk of liquidation.\n                Consider adding more collateral or repaying part of your loan to maintain a healthy position.\n              </p>\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n\n      {(!isConnected || !isCorrectNetwork) && (\n        <Card className=\"border-yellow-200 bg-yellow-50\">\n          <CardContent className=\"pt-6\">\n            <div className=\"text-center space-y-2\">\n              <p className=\"text-yellow-800 font-medium\">\n                {!isConnected ? \"Connect your wallet to view your loans\" : \"Switch to Core Testnet to continue\"}\n              </p>\n              <p className=\"text-yellow-600 text-sm\">\n                Make sure you're connected to the Core Testnet to interact with the protocol.\n              </p>\n            </div>\n          </CardContent>\n        </Card>\n      )}\n    </div>\n  )\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/app/page.tsx",
    "content": "import { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { TrendingUp, Users, DollarSign, Percent } from \"lucide-react\"\n\nexport default function HomePage() {\n  const stats = [\n    {\n      title: \"Total Value Locked\",\n      value: \"$2.4M\",\n      change: \"+12.5%\",\n      icon: DollarSign,\n      color: \"text-green-600\",\n    },\n    {\n      title: \"Average Interest Rate\",\n      value: \"8.2%\",\n      change: \"+0.3%\",\n      icon: Percent,\n      color: \"text-blue-600\",\n    },\n    {\n      title: \"Active Loans\",\n      value: \"1,247\",\n      change: \"+23\",\n      icon: TrendingUp,\n      color: \"text-purple-600\",\n    },\n    {\n      title: \"Total Users\",\n      value: \"3,891\",\n      change: \"+156\",\n      icon: Users,\n      color: \"text-orange-600\",\n    },\n  ]\n\n  return (\n    <div className=\"space-y-8\">\n      {/* Hero Section */}\n      <div className=\"text-center space-y-4 py-12\">\n        <Badge variant=\"secondary\" className=\"mb-4\">\n          Built on Core Testnet\n        </Badge>\n        <h1 className=\"text-4xl md:text-6xl font-bold text-gray-900\">\n          Multi-Token DeFi\n          <span className=\"text-primary block\">Lending & Borrowing</span>\n        </h1>\n        <p className=\"text-xl text-gray-600 max-w-2xl mx-auto\">\n          Secure, decentralized lending and borrowing protocol supporting multiple ERC20 tokens with competitive\n          interest rates and flexible collateral options.\n        </p>\n      </div>\n\n      {/* Stats Grid */}\n      <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6\">\n        {stats.map((stat) => {\n          const Icon = stat.icon\n          return (\n            <Card key={stat.title} className=\"hover:shadow-lg transition-shadow\">\n              <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n                <CardTitle className=\"text-sm font-medium text-gray-600\">{stat.title}</CardTitle>\n                <Icon className={`h-4 w-4 ${stat.color}`} />\n              </CardHeader>\n              <CardContent>\n                <div className=\"text-2xl font-bold\">{stat.value}</div>\n                <p className=\"text-xs text-green-600 flex items-center mt-1\">\n                  <TrendingUp className=\"h-3 w-3 mr-1\" />\n                  {stat.change} from last month\n                </p>\n              </CardContent>\n            </Card>\n          )\n        })}\n      </div>\n\n      {/* Features Section */}\n      <div className=\"grid md:grid-cols-3 gap-8 py-12\">\n        <Card className=\"text-center hover:shadow-lg transition-shadow\">\n          <CardHeader>\n            <div className=\"w-12 h-12 bg-primary/10 rounded-lg flex items-center justify-center mx-auto mb-4\">\n              <DollarSign className=\"h-6 w-6 text-primary\" />\n            </div>\n            <CardTitle>Multi-Token Support</CardTitle>\n            <CardDescription>Lend and borrow multiple ERC20 tokens including USDT, DAI, and USDC</CardDescription>\n          </CardHeader>\n        </Card>\n\n        <Card className=\"text-center hover:shadow-lg transition-shadow\">\n          <CardHeader>\n            <div className=\"w-12 h-12 bg-primary/10 rounded-lg flex items-center justify-center mx-auto mb-4\">\n              <Percent className=\"h-6 w-6 text-primary\" />\n            </div>\n            <CardTitle>Competitive Rates</CardTitle>\n            <CardDescription>Earn attractive yields on your deposits with dynamic interest rates</CardDescription>\n          </CardHeader>\n        </Card>\n\n        <Card className=\"text-center hover:shadow-lg transition-shadow\">\n          <CardHeader>\n            <div className=\"w-12 h-12 bg-primary/10 rounded-lg flex items-center justify-center mx-auto mb-4\">\n              <TrendingUp className=\"h-6 w-6 text-primary\" />\n            </div>\n            <CardTitle>Flexible Collateral</CardTitle>\n            <CardDescription>Use various tokens as collateral with 150% collateralization ratio</CardDescription>\n          </CardHeader>\n        </Card>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/components/navbar.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { usePathname } from \"next/navigation\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { useWallet } from \"@/components/wallet-provider\"\nimport { Coins, AlertTriangle } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\nconst navigation = [\n  { name: \"Dashboard\", href: \"/\" },\n  { name: \"Lend\", href: \"/lend\" },\n  { name: \"Borrow\", href: \"/borrow\" },\n  { name: \"My Loans\", href: \"/loans\" },\n]\n\nexport function Navbar() {\n  const pathname = usePathname()\n  const { account, isConnected, isCorrectNetwork, connectWallet, switchToCore } = useWallet()\n\n  const truncateAddress = (address: string) => {\n    return `${address.slice(0, 6)}...${address.slice(-4)}`\n  }\n\n  return (\n    <nav className=\"bg-white/80 backdrop-blur-md border-b border-yellow-200 sticky top-0 z-50\">\n      <div className=\"container mx-auto px-4\">\n        <div className=\"flex items-center justify-between h-16\">\n          {/* Logo */}\n          <Link href=\"/\" className=\"flex items-center space-x-2\">\n            <Coins className=\"h-8 w-8 text-primary\" />\n            <span className=\"text-xl font-bold text-gray-900\">Core DeFi</span>\n          </Link>\n\n          {/* Navigation */}\n          <div className=\"hidden md:flex items-center space-x-8\">\n            {navigation.map((item) => (\n              <Link\n                key={item.name}\n                href={item.href}\n                className={cn(\n                  \"text-sm font-medium transition-colors hover:text-primary\",\n                  pathname === item.href ? \"text-primary\" : \"text-gray-600\",\n                )}\n              >\n                {item.name}\n              </Link>\n            ))}\n          </div>\n\n          {/* Wallet Connection */}\n          <div className=\"flex items-center space-x-4\">\n            {isConnected && !isCorrectNetwork && (\n              <div className=\"flex items-center space-x-2\">\n                <AlertTriangle className=\"h-4 w-4 text-red-500\" />\n                <Button\n                  onClick={switchToCore}\n                  variant=\"outline\"\n                  size=\"sm\"\n                  className=\"text-red-600 border-red-200 hover:bg-red-50 bg-transparent\"\n                >\n                  Switch to Core\n                </Button>\n              </div>\n            )}\n\n            {isConnected && isCorrectNetwork && (\n              <Badge variant=\"secondary\" className=\"bg-green-100 text-green-800\">\n                Core Testnet\n              </Badge>\n            )}\n\n            {isConnected ? (\n              <div className=\"flex items-center space-x-2\">\n                <span className=\"text-sm text-gray-600\">{truncateAddress(account!)}</span>\n                <div className=\"w-2 h-2 bg-green-500 rounded-full\"></div>\n              </div>\n            ) : (\n              <Button onClick={connectWallet} className=\"bg-primary hover:bg-primary/90 text-black\">\n                Connect Wallet\n              </Button>\n            )}\n          </div>\n        </div>\n      </div>\n    </nav>\n  )\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/components/ui/badge.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n  \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n        secondary:\n          \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n        destructive:\n          \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n        outline: \"text-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nexport interface BadgeProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n  return (\n    <div className={cn(badgeVariants({ variant }), className)} {...props} />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "14-Corelend/Frontend/components/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2\",\n        sm: \"h-8 rounded-md px-3 text-xs\",\n        lg: \"h-10 rounded-md px-8\",\n        icon: \"h-9 w-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\"\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "14-Corelend/Frontend/components/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-xl border bg-card text-card-foreground shadow\",\n      className\n    )}\n    {...props}\n  />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"font-semibold leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"
  },
  {
    "path": "14-Corelend/Frontend/components/ui/input.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"
  },
  {
    "path": "14-Corelend/Frontend/components/ui/select.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <SelectPrimitive.Icon asChild>\n      <ChevronDown className=\"h-4 w-4 opacity-50\" />\n    </SelectPrimitive.Icon>\n  </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollUpButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronUp className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollDownButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronDown className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n  SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n  <SelectPrimitive.Portal>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]\",\n        position === \"popper\" &&\n          \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n        className\n      )}\n      position={position}\n      {...props}\n    >\n      <SelectScrollUpButton />\n      <SelectPrimitive.Viewport\n        className={cn(\n          \"p-1\",\n          position === \"popper\" &&\n            \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n        )}\n      >\n        {children}\n      </SelectPrimitive.Viewport>\n      <SelectScrollDownButton />\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n    {...props}\n  />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <SelectPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </SelectPrimitive.ItemIndicator>\n    </span>\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n  Select,\n  SelectGroup,\n  SelectValue,\n  SelectTrigger,\n  SelectContent,\n  SelectLabel,\n  SelectItem,\n  SelectSeparator,\n  SelectScrollUpButton,\n  SelectScrollDownButton,\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/components/ui/table.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n  HTMLTableElement,\n  React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n  <div className=\"relative w-full overflow-auto\">\n    <table\n      ref={ref}\n      className={cn(\"w-full caption-bottom text-sm\", className)}\n      {...props}\n    />\n  </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tbody\n    ref={ref}\n    className={cn(\"[&_tr:last-child]:border-0\", className)}\n    {...props}\n  />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tfoot\n    ref={ref}\n    className={cn(\n      \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n      className\n    )}\n    {...props}\n  />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n  HTMLTableRowElement,\n  React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n  <tr\n    ref={ref}\n    className={cn(\n      \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n      className\n    )}\n    {...props}\n  />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n  HTMLTableCellElement,\n  React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <th\n    ref={ref}\n    className={cn(\n      \"h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n      className\n    )}\n    {...props}\n  />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n  HTMLTableCellElement,\n  React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <td\n    ref={ref}\n    className={cn(\n      \"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n      className\n    )}\n    {...props}\n  />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n  HTMLTableCaptionElement,\n  React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n  <caption\n    ref={ref}\n    className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/components/ui/toast.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Viewport>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Viewport\n    ref={ref}\n    className={cn(\n      \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n      className\n    )}\n    {...props}\n  />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n  \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n  {\n    variants: {\n      variant: {\n        default: \"border bg-background text-foreground\",\n        destructive:\n          \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nconst Toast = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Root>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n    VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n  return (\n    <ToastPrimitives.Root\n      ref={ref}\n      className={cn(toastVariants({ variant }), className)}\n      {...props}\n    />\n  )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Action>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Action\n    ref={ref}\n    className={cn(\n      \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n      className\n    )}\n    {...props}\n  />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Close>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Close\n    ref={ref}\n    className={cn(\n      \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n      className\n    )}\n    toast-close=\"\"\n    {...props}\n  >\n    <X className=\"h-4 w-4\" />\n  </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Title>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Title\n    ref={ref}\n    className={cn(\"text-sm font-semibold [&+div]:text-xs\", className)}\n    {...props}\n  />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Description>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Description\n    ref={ref}\n    className={cn(\"text-sm opacity-90\", className)}\n    {...props}\n  />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n  type ToastProps,\n  type ToastActionElement,\n  ToastProvider,\n  ToastViewport,\n  Toast,\n  ToastTitle,\n  ToastDescription,\n  ToastClose,\n  ToastAction,\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/components/ui/toaster.tsx",
    "content": "\"use client\"\n\nimport { useToast } from \"@/hooks/use-toast\"\nimport {\n  Toast,\n  ToastClose,\n  ToastDescription,\n  ToastProvider,\n  ToastTitle,\n  ToastViewport,\n} from \"@/components/ui/toast\"\n\nexport function Toaster() {\n  const { toasts } = useToast()\n\n  return (\n    <ToastProvider>\n      {toasts.map(function ({ id, title, description, action, ...props }) {\n        return (\n          <Toast key={id} {...props}>\n            <div className=\"grid gap-1\">\n              {title && <ToastTitle>{title}</ToastTitle>}\n              {description && (\n                <ToastDescription>{description}</ToastDescription>\n              )}\n            </div>\n            {action}\n            <ToastClose />\n          </Toast>\n        )\n      })}\n      <ToastViewport />\n    </ToastProvider>\n  )\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/components/wallet-provider.tsx",
    "content": "\"use client\"\n\nimport { createContext, useContext, useState, useEffect, type ReactNode } from \"react\"\nimport { ethers } from \"ethers\"\nimport { useToast } from \"@/hooks/use-toast\"\n\ninterface WalletContextType {\n  account: string | null\n  provider: ethers.BrowserProvider | null\n  signer: ethers.JsonRpcSigner | null\n  chainId: number | null\n  isConnected: boolean\n  isCorrectNetwork: boolean\n  connectWallet: () => Promise<void>\n  disconnectWallet: () => void\n  switchToCore: () => Promise<void>\n}\n\nconst WalletContext = createContext<WalletContextType | undefined>(undefined)\n\nconst CORE_TESTNET = {\n  chainId: \"0x45A\", // 1114 in hex\n  chainName: \"Core Testnet\",\n  rpcUrls: [\"https://rpc.test2.btcs.network\"],\n  nativeCurrency: {\n    name: \"tCORE\",\n    symbol: \"tCORE\",\n    decimals: 18,\n  },\n  blockExplorerUrls: [\"https://scan.test2.btcs.network/\"],\n}\n\nexport function WalletProvider({ children }: { children: ReactNode }) {\n  const [account, setAccount] = useState<string | null>(null)\n  const [provider, setProvider] = useState<ethers.BrowserProvider | null>(null)\n  const [signer, setSigner] = useState<ethers.JsonRpcSigner | null>(null)\n  const [chainId, setChainId] = useState<number | null>(null)\n  const { toast } = useToast()\n\n  const isConnected = !!account\n  const isCorrectNetwork = chainId === 1114\n\n  const connectWallet = async () => {\n    try {\n      if (!window.ethereum) {\n        toast({\n          title: \"Wallet not found\",\n          description: \"Please install MetaMask or another Web3 wallet\",\n          variant: \"destructive\",\n        })\n        return\n      }\n\n      const provider = new ethers.BrowserProvider(window.ethereum)\n      const accounts = await provider.send(\"eth_requestAccounts\", [])\n      const network = await provider.getNetwork()\n      const signer = await provider.getSigner()\n\n      setProvider(provider)\n      setAccount(accounts[0])\n      setChainId(Number(network.chainId))\n      setSigner(signer)\n\n      if (Number(network.chainId) !== 1114) {\n        toast({\n          title: \"Wrong Network\",\n          description: \"Please switch to Core Testnet\",\n          variant: \"destructive\",\n        })\n      } else {\n        toast({\n          title: \"Wallet Connected\",\n          description: \"Successfully connected to Core Testnet\",\n        })\n      }\n    } catch (error) {\n      console.error(\"Failed to connect wallet:\", error)\n      toast({\n        title: \"Connection Failed\",\n        description: \"Failed to connect wallet\",\n        variant: \"destructive\",\n      })\n    }\n  }\n\n  const disconnectWallet = () => {\n    setAccount(null)\n    setProvider(null)\n    setChainId(null)\n    toast({\n      title: \"Wallet Disconnected\",\n      description: \"Your wallet has been disconnected\",\n    })\n  }\n\n  const switchToCore = async () => {\n    try {\n      if (!window.ethereum) return\n\n      await window.ethereum.request({\n        method: \"wallet_switchEthereumChain\",\n        params: [{ chainId: CORE_TESTNET.chainId }],\n      })\n    } catch (switchError: any) {\n      // This error code indicates that the chain has not been added to MetaMask\n      if (switchError.code === 4902) {\n        try {\n          await window.ethereum.request({\n            method: \"wallet_addEthereumChain\",\n            params: [CORE_TESTNET],\n          })\n        } catch (addError) {\n          console.error(\"Failed to add Core Testnet:\", addError)\n          toast({\n            title: \"Failed to Add Network\",\n            description: \"Could not add Core Testnet to your wallet\",\n            variant: \"destructive\",\n          })\n        }\n      } else {\n        console.error(\"Failed to switch to Core Testnet:\", switchError)\n        toast({\n          title: \"Failed to Switch Network\",\n          description: \"Could not switch to Core Testnet\",\n          variant: \"destructive\",\n        })\n      }\n    }\n  }\n\n  useEffect(() => {\n    if (window.ethereum) {\n      window.ethereum.on(\"accountsChanged\", (accounts: string[]) => {\n        if (accounts.length === 0) {\n          disconnectWallet()\n        } else {\n          setAccount(accounts[0])\n        }\n      })\n\n      window.ethereum.on(\"chainChanged\", (chainId: string) => {\n        setChainId(Number.parseInt(chainId, 16))\n        window.location.reload()\n      })\n    }\n\n    return () => {\n      if (window.ethereum) {\n        window.ethereum.removeAllListeners(\"accountsChanged\")\n        window.ethereum.removeAllListeners(\"chainChanged\")\n      }\n    }\n  }, [])\n\n  return (\n    <WalletContext.Provider\n      value={{\n        account,\n        provider,\n        signer,\n        chainId,\n        isConnected,\n        isCorrectNetwork,\n        connectWallet,\n        disconnectWallet,\n        switchToCore,\n      }}\n    >\n      {children}\n    </WalletContext.Provider>\n  )\n}\n\nexport function useWallet() {\n  const context = useContext(WalletContext)\n  if (context === undefined) {\n    throw new Error(\"useWallet must be used within a WalletProvider\")\n  }\n  return context\n}\n\ndeclare global {\n  interface Window {\n    ethereum?: any\n  }\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "14-Corelend/Frontend/hooks/use-toast.ts",
    "content": "\"use client\"\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\"\n\nimport type {\n  ToastActionElement,\n  ToastProps,\n} from \"@/components/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n  id: string\n  title?: React.ReactNode\n  description?: React.ReactNode\n  action?: ToastActionElement\n}\n\nconst actionTypes = {\n  ADD_TOAST: \"ADD_TOAST\",\n  UPDATE_TOAST: \"UPDATE_TOAST\",\n  DISMISS_TOAST: \"DISMISS_TOAST\",\n  REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n  count = (count + 1) % Number.MAX_SAFE_INTEGER\n  return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n  | {\n      type: ActionType[\"ADD_TOAST\"]\n      toast: ToasterToast\n    }\n  | {\n      type: ActionType[\"UPDATE_TOAST\"]\n      toast: Partial<ToasterToast>\n    }\n  | {\n      type: ActionType[\"DISMISS_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n  | {\n      type: ActionType[\"REMOVE_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n\ninterface State {\n  toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n  if (toastTimeouts.has(toastId)) {\n    return\n  }\n\n  const timeout = setTimeout(() => {\n    toastTimeouts.delete(toastId)\n    dispatch({\n      type: \"REMOVE_TOAST\",\n      toastId: toastId,\n    })\n  }, TOAST_REMOVE_DELAY)\n\n  toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n  switch (action.type) {\n    case \"ADD_TOAST\":\n      return {\n        ...state,\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n      }\n\n    case \"UPDATE_TOAST\":\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\n        ),\n      }\n\n    case \"DISMISS_TOAST\": {\n      const { toastId } = action\n\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\n      // but I'll keep it here for simplicity\n      if (toastId) {\n        addToRemoveQueue(toastId)\n      } else {\n        state.toasts.forEach((toast) => {\n          addToRemoveQueue(toast.id)\n        })\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === toastId || toastId === undefined\n            ? {\n                ...t,\n                open: false,\n              }\n            : t\n        ),\n      }\n    }\n    case \"REMOVE_TOAST\":\n      if (action.toastId === undefined) {\n        return {\n          ...state,\n          toasts: [],\n        }\n      }\n      return {\n        ...state,\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\n      }\n  }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n  memoryState = reducer(memoryState, action)\n  listeners.forEach((listener) => {\n    listener(memoryState)\n  })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n  const id = genId()\n\n  const update = (props: ToasterToast) =>\n    dispatch({\n      type: \"UPDATE_TOAST\",\n      toast: { ...props, id },\n    })\n  const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n  dispatch({\n    type: \"ADD_TOAST\",\n    toast: {\n      ...props,\n      id,\n      open: true,\n      onOpenChange: (open) => {\n        if (!open) dismiss()\n      },\n    },\n  })\n\n  return {\n    id: id,\n    dismiss,\n    update,\n  }\n}\n\nfunction useToast() {\n  const [state, setState] = React.useState<State>(memoryState)\n\n  React.useEffect(() => {\n    listeners.push(setState)\n    return () => {\n      const index = listeners.indexOf(setState)\n      if (index > -1) {\n        listeners.splice(index, 1)\n      }\n    }\n  }, [state])\n\n  return {\n    ...state,\n    toast,\n    dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n  }\n}\n\nexport { useToast, toast }\n"
  },
  {
    "path": "14-Corelend/Frontend/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/next.config.ts",
    "content": "import type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n  /* config options here */\n};\n\nexport default nextConfig;\n"
  },
  {
    "path": "14-Corelend/Frontend/package.json",
    "content": "{\n  \"name\": \"reusable\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-select\": \"2.2.5\",\n    \"@radix-ui/react-slot\": \"1.2.3\",\n    \"@radix-ui/react-toast\": \"1.2.14\",\n    \"class-variance-authority\": \"0.7.0\",\n    \"clsx\": \"2.1.1\",\n    \"ethers\": \"6.15.0\",\n    \"lucide-react\": \"0.454.0\",\n    \"next\": \"15.0.2\",\n    \"react\": \"19.0.0-rc-02c0e824-20241028\",\n    \"react-dom\": \"19.0.0-rc-02c0e824-20241028\",\n    \"tailwind-merge\": \"2.5.4\",\n    \"tailwindcss-animate\": \"1.0.7\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"^18\",\n    \"@types/react-dom\": \"^18\",\n    \"eslint\": \"^8\",\n    \"eslint-config-next\": \"15.0.2\",\n    \"postcss\": \"^8\",\n    \"tailwindcss\": \"3.4.17\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "14-Corelend/Frontend/postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n  plugins: {\n    tailwindcss: {},\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "14-Corelend/Frontend/tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\"\n\nconst config = {\n  darkMode: [\"class\"],\n  content: [\n    \"./pages/**/*.{ts,tsx}\",\n    \"./components/**/*.{ts,tsx}\",\n    \"./app/**/*.{ts,tsx}\",\n    \"./src/**/*.{ts,tsx}\",\n    \"*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  prefix: \"\",\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      colors: {\n        border: \"hsl(var(--border))\",\n        input: \"hsl(var(--input))\",\n        ring: \"hsl(var(--ring))\",\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n        primary: {\n          DEFAULT: \"#FFD700\",\n          foreground: \"hsl(var(--primary-foreground))\",\n        },\n        secondary: {\n          DEFAULT: \"hsl(var(--secondary))\",\n          foreground: \"hsl(var(--secondary-foreground))\",\n        },\n        destructive: {\n          DEFAULT: \"hsl(var(--destructive))\",\n          foreground: \"hsl(var(--destructive-foreground))\",\n        },\n        muted: {\n          DEFAULT: \"hsl(var(--muted))\",\n          foreground: \"hsl(var(--muted-foreground))\",\n        },\n        accent: {\n          DEFAULT: \"hsl(var(--accent))\",\n          foreground: \"hsl(var(--accent-foreground))\",\n        },\n        popover: {\n          DEFAULT: \"hsl(var(--popover))\",\n          foreground: \"hsl(var(--popover-foreground))\",\n        },\n        card: {\n          DEFAULT: \"hsl(var(--card))\",\n          foreground: \"hsl(var(--card-foreground))\",\n        },\n      },\n      borderRadius: {\n        lg: \"var(--radius)\",\n        md: \"calc(var(--radius) - 2px)\",\n        sm: \"calc(var(--radius) - 4px)\",\n      },\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: \"0\" },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: \"0\" },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config\n\nexport default config\n"
  },
  {
    "path": "14-Corelend/Frontend/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "14-Corelend/README.md",
    "content": "# 💸 CoreLend – Multi-Token Lending & Borrowing Protocol\n\nA powerful, gas-efficient, and modular decentralized finance (DeFi) protocol enabling users to borrow against collateral and repay loans seamlessly using multiple supported tokens on **Core Testnet**.\n\n> 🧠 **GitHub Repository:** [https://github.com/coredao-org/dapp-tutorial](https://github.com/coredao-org/dapp-tutorial)\n\n---\n\n## ✨ Features\n\n- 🏦 **Lend & Borrow**: Supply collateral and borrow from a selection of supported tokens.\n- 🔄 **Repay System**: Easily repay borrowed tokens with calculated interest.\n- 🔍 **Loan Viewer**: See real-time loan data per token pair.\n- 🧠 **ERC-20 Support**: Currently supports USDT, USDC, and DAI.\n- ⚙️ **Smart Contract Factory Pattern**: Optimized to manage lending pools and loan data per user.\n\n---\n\n## 🔧 Getting Started\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/coredao-org/dapp-tutorial.git\ncd dapp-tutorial/14-CoreLend\n```\n\n---\n\n## 📦 Setup & Installation\n\n### 2. Environment Setup\n\nCreate a `.env` file in the root directory and add your private key:\n\n```env\nPRIVATE_KEY=your_private_key_here\n```\n\n### 3. Install Smart Contract Dependencies\n\n```bash\nnpm install\n```\n\n---\n\n## 🚀 Deployment on Core Testnet\n\nYou can deploy the lending contract to **Core Testnet** using Hardhat.\n\n### ⚙️ Compile Contracts\n\n```bash\nnpx hardhat compile\n```\n\n### 🚀 Deploy to Core Testnet\n\nUpdate your `hardhat.config.ts` with Core Testnet RPC and run:\n\n```bash\nnpx hardhat run scripts/deploy.ts --network coreTestnet\n```\n\n> Make sure your `.env` contains a funded private key for the Core Testnet.\n\n---\n\n## 🧪 Test Tokens (Faucet)\n\nTo interact with the protocol using tUSDT, tDAI, or tUSDC test tokens, visit:\n\n> 🧴 **Token Faucet**: [https://token-faucet-sandy.vercel.app](https://token-faucet-sandy.vercel.app)\n\nYou’ll receive tokens compatible with CoreLend’s supported assets.\n\n---\n\n## 💻 Frontend\n\nNavigate into the frontend directory and run:\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n> The dApp will be live at `http://localhost:3000`\n\n---\n\n## 🗂️ Project Structure\n\n```\n├── contracts/           # Lending smart contracts (CoreLend.sol)\n├── frontend/            # Frontend application (Next.js + Ethers.js)\n├── scripts/             # Hardhat deployment scripts\n│   └── deploy.js        # Deploys the CoreLend contract\n├── hardhat.config.js    # Network configuration\n├── .env                 # Private key for deployment\n└── README.md\n```\n\n---\n\n## 🧠 Tech Stack\n\n- **Solidity** – Smart contract language\n- **Hardhat** – Smart contract dev environment\n- **Next.js** – React-based frontend framework\n- **Tailwind CSS** – Styling\n- **Ethers.js** – Web3 provider\n- **Core Blockchain** – Testnet deployment\n\n---\n\n## 🤝 Contributions\n\nGot an idea to improve the protocol? Feel free to:\n\n- Fork the repo\n- Submit issues\n- Propose pull requests\n\nWe welcome community contributions!\n"
  },
  {
    "path": "14-Corelend/contracts/CoreLend.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract CoreLend is Ownable {\n    uint256 public interestRatePerYear = 10; // 10%\n    uint256 public constant SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n    uint256 public collateralFactor = 150; // 150% (1.5x)\n\n    struct LoanPosition {\n        address collateralToken;\n        address borrowToken;\n        uint256 collateralAmount;\n        uint256 totalBorrowAmount;\n        uint256 timestamp;\n    }\n\n    mapping(address => bool) public isSupportedToken;\n    mapping(address => mapping(address => uint256)) public lenderBalances; // lender => token => balance\n    mapping(address => mapping(address => LoanPosition)) public userLoans; // user => borrowToken => LoanPosition\n\n    modifier onlySupported(address token) {\n        require(isSupportedToken[token], \"Unsupported token\");\n        _;\n    }\n\n    constructor() Ownable(msg.sender) {}\n\n    function addSupportedToken(address token) external onlyOwner {\n        isSupportedToken[token] = true;\n    }\n\n    function deposit(address token, uint256 amount) external /** onlySupported(token) */ {\n        require(amount > 0, \"Invalid amount\");\n        IERC20(token).transferFrom(msg.sender, address(this), amount);\n        lenderBalances[msg.sender][token] += amount;\n    }\n\n    function withdraw(address token, uint256 amount) external {\n        require(lenderBalances[msg.sender][token] >= amount, \"Insufficient balance\");\n        lenderBalances[msg.sender][token] -= amount;\n        IERC20(token).transfer(msg.sender, amount);\n    }\n\n    function borrow(address collateralToken, address borrowToken, uint256 borrowAmount) external /** onlySupported(collateralToken) onlySupported(borrowToken) */ {\n        require(borrowAmount > 0, \"Invalid borrow amount\");\n\n        uint256 requiredCollateral = (borrowAmount * collateralFactor) / 100;\n        IERC20(collateralToken).transferFrom(msg.sender, address(this), requiredCollateral);\n\n        LoanPosition storage loan = userLoans[msg.sender][borrowToken];\n\n        if (loan.totalBorrowAmount == 0) {\n            loan.collateralToken = collateralToken;\n            loan.borrowToken = borrowToken;\n            loan.timestamp = block.timestamp;\n        }\n\n        loan.collateralAmount += requiredCollateral;\n        loan.totalBorrowAmount += borrowAmount;\n        loan.timestamp = block.timestamp;\n\n        IERC20(borrowToken).transfer(msg.sender, borrowAmount);\n    }\n\n    function repay(address borrowToken) external {\n        LoanPosition storage loan = userLoans[msg.sender][borrowToken];\n        require(loan.totalBorrowAmount > 0, \"No loan\");\n\n        uint256 timeElapsed = block.timestamp - loan.timestamp;\n        uint256 interest = (loan.totalBorrowAmount * interestRatePerYear * timeElapsed) / (100 * SECONDS_IN_YEAR);\n        uint256 totalRepay = loan.totalBorrowAmount + interest;\n\n        IERC20(loan.borrowToken).transferFrom(msg.sender, address(this), totalRepay);\n        IERC20(loan.collateralToken).transfer(msg.sender, loan.collateralAmount);\n\n        delete userLoans[msg.sender][borrowToken];\n    }\n\n    function currentDebt(address user, address borrowToken) public view returns (uint256) {\n        LoanPosition memory loan = userLoans[user][borrowToken];\n        if (loan.totalBorrowAmount == 0) return 0;\n\n        uint256 timeElapsed = block.timestamp - loan.timestamp;\n        uint256 interest = (loan.totalBorrowAmount * interestRatePerYear * timeElapsed) / (100 * SECONDS_IN_YEAR);\n        return loan.totalBorrowAmount + interest;\n    }\n\n    function liquidate(address user, address borrowToken) external {\n        LoanPosition memory loan = userLoans[user][borrowToken];\n        require(loan.totalBorrowAmount > 0, \"No loan\");\n\n        uint256 debt = currentDebt(user, borrowToken);\n        require((loan.collateralAmount * 100) / debt < collateralFactor, \"Healthy loan\");\n\n        delete userLoans[user][borrowToken];\n        IERC20(loan.collateralToken).transfer(msg.sender, loan.collateralAmount);\n    }\n\n    function getLendersBalance(address user, address tokenAddress) external view returns (uint256) {\n        return lenderBalances[user][tokenAddress];\n    }\n\n    function getLoanDetails(address user, address borrowToken) external view returns (LoanPosition memory) {\n        return userLoans[user][borrowToken];\n    }\n}\n"
  },
  {
    "path": "14-Corelend/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.27\",\n\n  networks: {\n    localhost: {\n      url: \"http://127.0.0.1:8545/\",\n      // accounts: Thanks hardhat!\n      chainId: 31337,\n      allowUnlimitedContractSize: true,\n    },\n    coreTestnet: {\n      url: \"https://rpc.test2.btcs.network\",\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    },\n  },\n};\n"
  },
  {
    "path": "14-Corelend/ignition/modules/Lock.js",
    "content": "// This setup uses Hardhat Ignition to manage smart contract deployments.\n// Learn more about it at https://hardhat.org/ignition\n\nconst { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "14-Corelend/package.json",
    "content": "{\n  \"name\": \"reuse\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-toolbox\": \"^5.0.0\",\n    \"hardhat\": \"^2.22.15\"\n  },\n  \"dependencies\": {\n    \"@openzeppelin/contracts\": \"^5.3.0\",\n    \"dotenv\": \"^17.2.0\"\n  }\n}\n"
  },
  {
    "path": "14-Corelend/scripts/deploy.js",
    "content": "const hre = require(\"hardhat\");\nconst {\n    loadFixture\n  } = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\n\nasync function main() {\n\n    const FEE = ethers.parseUnits(\"0.01\", 18);\n    \n  const Corelend = await hre.ethers.getContractFactory(\"CoreLend\");\n  const corelend  = await Corelend.deploy();\n\n  console.log(\"CoreLend deployed to:\", corelend.target);\n\n\n}\n\n// We recommend this pattern to be able to use async/await everywhere\n// and properly handle errors.\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n\n\n\n// CORE: CoreLend contract deployed to: 0x5Ac64F5DA22B25559C7D7522b4B2BB7e2012F382"
  },
  {
    "path": "14-Corelend/test/Lock.js",
    "content": "const {\n  time,\n  loadFixture,\n} = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\nconst { anyValue } = require(\"@nomicfoundation/hardhat-chai-matchers/withArgs\");\nconst { expect } = require(\"chai\");\n\ndescribe(\"Lock\", function () {\n  // We define a fixture to reuse the same setup in every test.\n  // We use loadFixture to run this setup once, snapshot that state,\n  // and reset Hardhat Network to that snapshot in every test.\n  async function deployOneYearLockFixture() {\n    const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;\n    const ONE_GWEI = 1_000_000_000;\n\n    const lockedAmount = ONE_GWEI;\n    const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS;\n\n    // Contracts are deployed using the first signer/account by default\n    const [owner, otherAccount] = await ethers.getSigners();\n\n    const Lock = await ethers.getContractFactory(\"Lock\");\n    const lock = await Lock.deploy(unlockTime, { value: lockedAmount });\n\n    return { lock, unlockTime, lockedAmount, owner, otherAccount };\n  }\n\n  describe(\"Deployment\", function () {\n    it(\"Should set the right unlockTime\", async function () {\n      const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.unlockTime()).to.equal(unlockTime);\n    });\n\n    it(\"Should set the right owner\", async function () {\n      const { lock, owner } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.owner()).to.equal(owner.address);\n    });\n\n    it(\"Should receive and store the funds to lock\", async function () {\n      const { lock, lockedAmount } = await loadFixture(\n        deployOneYearLockFixture\n      );\n\n      expect(await ethers.provider.getBalance(lock.target)).to.equal(\n        lockedAmount\n      );\n    });\n\n    it(\"Should fail if the unlockTime is not in the future\", async function () {\n      // We don't use the fixture here because we want a different deployment\n      const latestTime = await time.latest();\n      const Lock = await ethers.getContractFactory(\"Lock\");\n      await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith(\n        \"Unlock time should be in the future\"\n      );\n    });\n  });\n\n  describe(\"Withdrawals\", function () {\n    describe(\"Validations\", function () {\n      it(\"Should revert with the right error if called too soon\", async function () {\n        const { lock } = await loadFixture(deployOneYearLockFixture);\n\n        await expect(lock.withdraw()).to.be.revertedWith(\n          \"You can't withdraw yet\"\n        );\n      });\n\n      it(\"Should revert with the right error if called from another account\", async function () {\n        const { lock, unlockTime, otherAccount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // We can increase the time in Hardhat Network\n        await time.increaseTo(unlockTime);\n\n        // We use lock.connect() to send a transaction from another account\n        await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith(\n          \"You aren't the owner\"\n        );\n      });\n\n      it(\"Shouldn't fail if the unlockTime has arrived and the owner calls it\", async function () {\n        const { lock, unlockTime } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // Transactions are sent using the first signer by default\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).not.to.be.reverted;\n      });\n    });\n\n    describe(\"Events\", function () {\n      it(\"Should emit an event on withdrawals\", async function () {\n        const { lock, unlockTime, lockedAmount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw())\n          .to.emit(lock, \"Withdrawal\")\n          .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg\n      });\n    });\n\n    describe(\"Transfers\", function () {\n      it(\"Should transfer the funds to the owner\", async function () {\n        const { lock, unlockTime, lockedAmount, owner } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).to.changeEtherBalances(\n          [owner, lock],\n          [lockedAmount, -lockedAmount]\n        );\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "15-dns-protocol/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n"
  },
  {
    "path": "15-dns-protocol/Frontend/.eslintrc.json",
    "content": "{\n  \"extends\": [\"next/core-web-vitals\", \"next/typescript\"],\n  \"rules\": {\n    \"@typescript-eslint/no-explicit-any\": \"off\", // Allow `any` type\n    \"@typescript-eslint/no-unused-vars\": \"off\", // Disable unused variables check\n    \"@typescript-eslint/no-unused-expressions\": \"off\", // Disable unused expressions check\n    \"react-hooks/exhaustive-deps\": \"off\", // Suppress missing dependency warnings in useEffect\n    \"@next/next/no-img-element\": \"off\" // Allow the use of <img> instead of <Image />\n  }\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# env files (can opt-in for commiting if needed)\n.env*\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "15-dns-protocol/Frontend/README.md",
    "content": "This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n"
  },
  {
    "path": "15-dns-protocol/Frontend/app/dashboard/page.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { useWallet } from \"@/hooks/use-wallet\"\nimport { DomainCard } from \"@/components/domain-card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport { useRouter } from \"next/navigation\"\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\"\nimport { AlertCircle } from \"lucide-react\"\nimport { ethers } from \"ethers\"\n\nexport default function Dashboard() {\n  const { address, isConnected, getContractOne } = useWallet()\n  const [domains, setDomains] = useState<string[]>([])\n  const [loading, setLoading] = useState(true)\n  const router = useRouter()\n\n  useEffect(() => {\n    if (!isConnected) {\n      return\n    }\n\n    const fetchUserDomains = async () => {\n      try {\n        setLoading(true)\n        // This would be replaced with actual contract call\n        // Example: const userDomains = await coreContract.getUserDomains(address)\n\n      const ensRegistry = getContractOne()\n      if (!ensRegistry) throw new Error(\"ENS Registry contract is not loaded\")\n      \n      // Call getSpecificRecord from the ENSRegistry contract\n      const domainHashes = await ensRegistry.getDomainsByOwner(address)\n      const domainNames = domainHashes.map((hash: any) => ethers.decodeBytes32String(hash));\n      // record: { owner, resolver, registration, expiration }\n      console.log(\"heyy\")\n\n      console.log(domainHashes);\n      console.log(domainNames)\n\n        // Mock data for demonstration\n        // const mockDomains = [\"mydomain.core\", \"coredeveloper.core\", \"blockchain.core\"]\n\n        setDomains(domainNames)\n      } catch (error) {\n        console.error(\"Error fetching user domains:\", error)\n      } finally {\n        setLoading(false)\n      }\n    }\n\n    fetchUserDomains()\n  }, [address, isConnected])\n\n  if (!isConnected) {\n    return (\n      <div className=\"container mx-auto px-4 py-12\">\n        <div className=\"flex flex-col items-center justify-center space-y-4 text-center\">\n          <h1 className=\"text-3xl font-bold\">Connect Your Wallet</h1>\n          <p className=\"text-muted-foreground\">Please connect your wallet to view your domains.</p>\n          <Button onClick={() => router.push(\"/\")}>Return to Home</Button>\n        </div>\n      </div>\n    )\n  }\n\n  return (\n    <div className=\"w-full px-4 md:px-8 py-12\">\n      <div className=\"space-y-6\">\n        <div>\n          <h1 className=\"text-3xl font-bold tracking-tight\">Your Domains</h1>\n          <p className=\"text-muted-foreground\">Manage your .core domains and their settings.</p>\n        </div>\n\n        {loading ? (\n          <div className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n            {[1, 2, 3].map((i) => (\n              <div key={i} className=\"rounded-lg border p-6\">\n                <Skeleton className=\"h-6 w-3/4 mb-4\" />\n                <Skeleton className=\"h-4 w-full mb-2\" />\n                <Skeleton className=\"h-4 w-2/3\" />\n              </div>\n            ))}\n          </div>\n        ) : domains.length > 0 ? (\n          <div className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5\">\n            {domains.map((domain) => (\n              <DomainCard key={domain} domain={domain} />\n            ))}\n          </div>\n        ) : (\n          <Alert>\n            <AlertCircle className=\"h-4 w-4\" />\n            <AlertTitle>No domains found</AlertTitle>\n            <AlertDescription>\n              You don&apos;t own any .core domains yet. Register your first domain now!\n            </AlertDescription>\n          </Alert>\n        )}\n\n        <div className=\"flex justify-center pt-6\">\n          <Button onClick={() => router.push(\"/\")}>Register New Domain</Button>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n  :root {\n    --background: 0 0% 100%;\n    --foreground: 240 10% 3.9%;\n    --card: 0 0% 100%;\n    --card-foreground: 240 10% 3.9%;\n    --popover: 0 0% 100%;\n    --popover-foreground: 240 10% 3.9%;\n    --primary: 24 95% 50%;\n    --primary-foreground: 0 0% 98%;\n    --secondary: 240 4.8% 95.9%;\n    --secondary-foreground: 240 5.9% 10%;\n    --muted: 240 4.8% 95.9%;\n    --muted-foreground: 240 3.8% 46.1%;\n    --accent: 240 4.8% 95.9%;\n    --accent-foreground: 240 5.9% 10%;\n    --destructive: 0 84.2% 60.2%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 5.9% 90%;\n    --input: 240 5.9% 90%;\n    --ring: 24 95% 50%;\n    --radius: 0.5rem;\n  }\n\n  .dark {\n    --background: 20 14.3% 4.1%;\n    --foreground: 0 0% 95%;\n    --card: 24 9.8% 10%;\n    --card-foreground: 0 0% 95%;\n    --popover: 0 0% 9%;\n    --popover-foreground: 0 0% 95%;\n    --primary: 24 95% 50%;\n    --primary-foreground: 0 0% 98%;\n    --secondary: 240 3.7% 15.9%;\n    --secondary-foreground: 0 0% 98%;\n    --muted: 0 0% 15%;\n    --muted-foreground: 240 5% 64.9%;\n    --accent: 12 6.5% 15.1%;\n    --accent-foreground: 0 0% 98%;\n    --destructive: 0 62.8% 30.6%;\n    --destructive-foreground: 0 85.7% 97.3%;\n    --border: 240 3.7% 15.9%;\n    --input: 240 3.7% 15.9%;\n    --ring: 24 95% 50%;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/app/layout.tsx",
    "content": "import type React from \"react\"\nimport type { Metadata } from \"next\"\nimport { Inter } from \"next/font/google\"\nimport \"./globals.css\"\nimport { ThemeProvider } from \"@/components/theme-provider\"\nimport { WalletProvider } from \"@/components/wallet-provider\"\nimport { Header } from \"@/components/header\"\n\nconst inter = Inter({ subsets: [\"latin\"] })\n\nexport const metadata: Metadata = {\n  title: \"CORE Domain Name Service\",\n  description: \"Register and manage your .core domain names\",\n}\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode\n}>) {\n  return (\n    <html lang=\"en\" suppressHydrationWarning>\n      <body className={inter.className}>\n        <ThemeProvider attribute=\"class\" defaultTheme=\"system\" enableSystem>\n          <WalletProvider>\n            <div className=\"flex min-h-screen w-full flex-col\">\n              <Header />\n              <main className=\"flex-1 w-full\">{children}</main>\n            </div>\n          </WalletProvider>\n        </ThemeProvider>\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/app/page.tsx",
    "content": "import { DomainSearch } from \"@/components/domain-search\"\nimport { Button } from \"@/components/ui/button\"\nimport Link from \"next/link\"\n\nexport default function Home() {\n  return (\n    <div className=\"w-full px-4 md:px-8 py-12\">\n      <section className=\"flex flex-col items-center justify-center space-y-8 py-12 md:py-24 lg:py-32\">\n        <div className=\"flex max-w-[980px] flex-col items-center text-center gap-4\">\n          <h1 className=\"text-4xl font-extrabold leading-tight tracking-tighter md:text-5xl lg:text-6xl lg:leading-[1.1]\">\n            Own your digital identity <br className=\"hidden sm:inline\" />\n            on the CORE blockchain\n          </h1>\n          <p className=\"max-w-[750px] text-lg text-muted-foreground sm:text-xl\">\n            Register your .core domain name and take control of your web3 presence. Simple, secure, and decentralized.\n          </p>\n        </div>\n\n        <div className=\"w-full max-w-2xl mx-auto mt-8\">\n          <DomainSearch />\n        </div>\n      </section>\n\n      <section className=\"space-y-10 py-12 md:py-24\">\n        <div className=\"w-full flex flex-col items-center space-y-4 text-center\">\n          <h2 className=\"font-heading text-3xl leading-[1.1] sm:text-3xl md:text-5xl\">Features</h2>\n          <p className=\"max-w-[85%] text-muted-foreground sm:text-lg\">\n            Everything you need to manage your digital identity on the CORE blockchain.\n          </p>\n        </div>\n        <div className=\"w-full grid justify-center gap-6 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-3\">\n          <div className=\"relative overflow-hidden rounded-lg border bg-background p-6\">\n            <div className=\"space-y-2\">\n              <h3 className=\"font-bold\">Secure Ownership</h3>\n              <p className=\"text-sm text-muted-foreground\">\n                Your domains are secured by the CORE blockchain, giving you full control.\n              </p>\n            </div>\n          </div>\n          <div className=\"relative overflow-hidden rounded-lg border bg-background p-6\">\n            <div className=\"space-y-2\">\n              <h3 className=\"font-bold\">Easy Management</h3>\n              <p className=\"text-sm text-muted-foreground\">\n                Manage all your domains from a simple, intuitive dashboard.\n              </p>\n            </div>\n          </div>\n          <div className=\"relative overflow-hidden rounded-lg border bg-background p-6\">\n            <div className=\"space-y-2\">\n              <h3 className=\"font-bold\">Public Registry</h3>\n              <p className=\"text-sm text-muted-foreground\">Browse all registered domains and find available names.</p>\n            </div>\n          </div>\n        </div>\n        <div className=\"w-full text-center mt-8\">\n          <p className=\"leading-normal text-muted-foreground sm:text-lg sm:leading-7\">Ready to explore the registry?</p>\n          <div className=\"mt-4 flex justify-center\">\n            <Button asChild>\n              <Link href=\"/registry\">View Public Registry</Link>\n            </Button>\n          </div>\n        </div>\n      </section>\n    </div>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/app/registry/loading.tsx",
    "content": "export default function Loading() {\n  return null\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/app/registry/page.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { useState, useEffect } from \"react\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport { DomainDetails } from \"@/components/domain-details\"\nimport { Search } from \"lucide-react\"\n\ninterface Domain {\n  name: string\n  owner: string\n  registrationDate: string\n}\n\nexport default function Registry() {\n  const [domains, setDomains] = useState<Domain[]>([])\n  const [filteredDomains, setFilteredDomains] = useState<Domain[]>([])\n  const [searchQuery, setSearchQuery] = useState(\"\")\n  const [loading, setLoading] = useState(true)\n  const [selectedDomain, setSelectedDomain] = useState<Domain | null>(null)\n\n  useEffect(() => {\n    const fetchAllDomains = async () => {\n      try {\n        setLoading(true)\n        // This would be replaced with actual contract call\n        // Example: const allDomains = await coreContract.getAllDomains()\n\n        // Simulating API call with timeout\n        await new Promise((resolve) => setTimeout(resolve, 1500))\n\n        // Mock data for demonstration\n        const mockDomains: Domain[] = [\n          {\n            name: \"example.core\",\n            owner: \"0x1234...5678\",\n            registrationDate: \"2023-01-15\",\n          },\n          {\n            name: \"blockchain.core\",\n            owner: \"0xabcd...ef01\",\n            registrationDate: \"2023-02-20\",\n          },\n          {\n            name: \"defi.core\",\n            owner: \"0x2468...1357\",\n            registrationDate: \"2023-03-10\",\n          },\n          {\n            name: \"nft.core\",\n            owner: \"0x9876...5432\",\n            registrationDate: \"2023-04-05\",\n          },\n          {\n            name: \"metaverse.core\",\n            owner: \"0xfedc...ba98\",\n            registrationDate: \"2023-05-12\",\n          },\n        ]\n\n        setDomains(mockDomains)\n        setFilteredDomains(mockDomains)\n      } catch (error) {\n        console.error(\"Error fetching domains:\", error)\n      } finally {\n        setLoading(false)\n      }\n    }\n\n    fetchAllDomains()\n  }, [])\n\n  const handleSearch = () => {\n    if (!searchQuery.trim()) {\n      setFilteredDomains(domains)\n      return\n    }\n\n    const query = searchQuery.toLowerCase()\n    const filtered = domains.filter(\n      (domain) => domain.name.toLowerCase().includes(query) || domain.owner.toLowerCase().includes(query),\n    )\n\n    setFilteredDomains(filtered)\n  }\n\n  const handleKeyDown = (e: React.KeyboardEvent) => {\n    if (e.key === \"Enter\") {\n      handleSearch()\n    }\n  }\n\n  return (\n    <div className=\"w-full flex justify-center px-4 md:px-8 py-12\">\n      <div className=\"w-full max-w-5xl space-y-8\">\n        <div className=\"text-center\">\n          <h1 className=\"text-3xl font-bold tracking-tight mb-2\">Public Domain Registry</h1>\n          <p className=\"text-muted-foreground\">Browse all registered .core domains and search for availability.</p>\n        </div>\n\n        <div className=\"flex w-full max-w-md mx-auto items-center space-x-2\">\n          <Input\n            placeholder=\"Search domains...\"\n            value={searchQuery}\n            onChange={(e) => setSearchQuery(e.target.value)}\n            onKeyDown={handleKeyDown}\n            className=\"h-10\"\n          />\n          <Button type=\"submit\" onClick={handleSearch} className=\"h-10\">\n            <Search className=\"h-4 w-4 mr-2\" />\n            Search\n          </Button>\n        </div>\n\n        <div className=\"grid gap-6 md:grid-cols-2\">\n          <div className=\"rounded-lg border\">\n            <div className=\"p-4 font-medium\">Registered Domains</div>\n            <div className=\"border-t\">\n              {loading ? (\n                <div className=\"p-4 space-y-4\">\n                  {[1, 2, 3, 4, 5].map((i) => (\n                    <Skeleton key={i} className=\"h-8 w-full\" />\n                  ))}\n                </div>\n              ) : filteredDomains.length > 0 ? (\n                <ul className=\"divide-y\">\n                  {filteredDomains.map((domain) => (\n                    <li\n                      key={domain.name}\n                      className=\"p-4 hover:bg-muted cursor-pointer\"\n                      onClick={() => setSelectedDomain(domain)}\n                    >\n                      <div className=\"font-medium\">{domain.name}</div>\n                      <div className=\"text-sm text-muted-foreground truncate\">Owner: {domain.owner}</div>\n                    </li>\n                  ))}\n                </ul>\n              ) : (\n                <div className=\"p-8 text-center text-muted-foreground\">No domains found matching your search.</div>\n              )}\n            </div>\n          </div>\n\n          <div className=\"rounded-lg border\">\n            <div className=\"p-4 font-medium\">Domain Details</div>\n            <div className=\"border-t p-4\">\n              {selectedDomain ? (\n                <DomainDetails domain={selectedDomain} />\n              ) : (\n                <div className=\"text-center text-muted-foreground p-8\">Select a domain to view details</div>\n              )}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/alert.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n  \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-background text-foreground\",\n        destructive: \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n        warning:\n          \"border-yellow-500/50 text-yellow-700 dark:text-yellow-400 dark:border-yellow-400 [&>svg]:text-yellow-500\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  },\n)\n\nconst Alert = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n  <div ref={ref} role=\"alert\" className={cn(alertVariants({ variant }), className)} {...props} />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(\n  ({ className, ...props }, ref) => (\n    <h5 ref={ref} className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)} {...props} />\n  ),\n)\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n  ({ className, ...props }, ref) => (\n    <div ref={ref} className={cn(\"text-sm [&_p]:leading-relaxed\", className)} {...props} />\n  ),\n)\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/domain-card.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Calendar, Globe } from \"lucide-react\"\nimport { useWallet } from \"@/hooks/use-wallet\"\nimport { ethers } from \"ethers\"\n\ninterface DomainCardProps {\n  domain: string\n}\n\nexport function DomainCard({ domain }: DomainCardProps) {\n\n  const { address, isConnected, getContractOne } = useWallet()\n  const [expiryDate, setExpiryDate] = useState<string>(\"\");\n\n  // Mock data - in a real app, you would fetch this from the blockchain\n  // const expiryDate = new Date()\n  // expiryDate.setFullYear(expiryDate.getFullYear() + 1)\n\n  useEffect(() => {\n    if (!isConnected) {\n      return\n    }\n\n    const fetchUserDomainDates = async () => {\n      try {\n\n        console.log(\"Hii\")\n\n      const ensRegistry = getContractOne()\n      if (!ensRegistry) throw new Error(\"ENS Registry contract is not loaded\")\n      \n      // Call getSpecificRecord from the ENSRegistry contract\n      const domainHash = ethers.encodeBytes32String(domain)\n      const datee = await ensRegistry.getSpecificRecord(domainHash)\n\n\n        setExpiryDate(datee.expiration)\n      } catch (error) {\n        console.error(\"Error fetching user domains:\", error)\n      }\n    }\n\n    fetchUserDomainDates()\n    \n  }, [address, isConnected])\n\n  return (\n    <Card>\n      <CardHeader>\n        <div className=\"flex items-center justify-between\">\n          <CardTitle className=\"truncate\">{domain}</CardTitle>\n          <Badge variant=\"outline\" className=\"ml-2\">\n            Active\n          </Badge>\n        </div>\n        <CardDescription className=\"flex items-center gap-1\">\n          <Calendar className=\"h-3 w-3\" />\n          Expires: {expiryDate}\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <div className=\"space-y-2\">\n          <div className=\"flex items-center gap-2\">\n            <Globe className=\"h-4 w-4 text-muted-foreground\" />\n            <span className=\"text-sm\">Primary Domain</span>\n          </div>\n        </div>\n      </CardContent>\n      <CardFooter className=\"flex justify-between\">\n        <Button variant=\"outline\" size=\"sm\">\n          Manage\n        </Button>\n        <Button variant=\"outline\" size=\"sm\">\n          Renew\n        </Button>\n      </CardFooter>\n    </Card>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/domain-details.tsx",
    "content": "import { Badge } from \"@/components/ui/badge\"\nimport { Calendar, User } from \"lucide-react\"\n\ninterface Domain {\n  name: string\n  owner: string\n  registrationDate: string\n}\n\ninterface DomainDetailsProps {\n  domain: Domain\n}\n\nexport function DomainDetails({ domain }: DomainDetailsProps) {\n  // Calculate expiry date (1 year from registration)\n  const registrationDate = new Date(domain.registrationDate)\n  const expiryDate = new Date(registrationDate)\n  expiryDate.setFullYear(expiryDate.getFullYear() + 1)\n\n  return (\n    <div className=\"space-y-6\">\n      <div className=\"space-y-2\">\n        <h3 className=\"text-2xl font-bold\">{domain.name}</h3>\n        <Badge className=\"bg-orange-500 hover:bg-orange-600\">Registered</Badge>\n      </div>\n\n      <div className=\"space-y-4\">\n        <div className=\"flex items-start gap-3\">\n          <User className=\"h-5 w-5 text-muted-foreground mt-0.5\" />\n          <div>\n            <p className=\"font-medium\">Owner</p>\n            <p className=\"text-sm text-muted-foreground break-all\">{domain.owner}</p>\n          </div>\n        </div>\n\n        <div className=\"flex items-start gap-3\">\n          <Calendar className=\"h-5 w-5 text-muted-foreground mt-0.5\" />\n          <div>\n            <p className=\"font-medium\">Registration Date</p>\n            <p className=\"text-sm text-muted-foreground\">{new Date(domain.registrationDate).toLocaleDateString()}</p>\n          </div>\n        </div>\n\n        <div className=\"flex items-start gap-3\">\n          <Calendar className=\"h-5 w-5 text-muted-foreground mt-0.5\" />\n          <div>\n            <p className=\"font-medium\">Expiry Date</p>\n            <p className=\"text-sm text-muted-foreground\">{expiryDate.toLocaleDateString()}</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/domain-search.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { useState, useEffect } from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport { useWallet } from \"@/hooks/use-wallet\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\"\nimport { AlertCircle, Check, Loader2, Network } from \"lucide-react\"\nimport { ethers } from \"ethers\"\n\nexport function DomainSearch() {\n  const [domainName, setDomainName] = useState(\"\")\n  const [isChecking, setIsChecking] = useState(false)\n  const [isRegistering, setIsRegistering] = useState(false)\n  const [isAvailable, setIsAvailable] = useState<boolean | null>(null)\n  const [owner, setOwner] = useState<string | null>(null)\n  const [showDialog, setShowDialog] = useState(false)\n  const [registrationSuccess, setRegistrationSuccess] = useState(false)\n  const [registrationError, setRegistrationError] = useState<string | null>(null)\n  const { isConnected, connect, networkStatus, switchNetwork, getContractOne, getContractTwo } = useWallet()\n  const { isCorrectNetwork, isSwitchingNetwork } = networkStatus\n  const router = useRouter()\n\n  // Reset registration error when network status changes\n  useEffect(() => {\n    if (isCorrectNetwork) {\n      setRegistrationError(null)\n    }\n  }, [isCorrectNetwork])\n\n  // Ensure domain name has .core suffix\n  const formatDomainName = (name: string) => {\n    if (!name) return \"\"\n\n    const trimmed = name.trim().toLowerCase()\n    if (trimmed.endsWith(\".core\")) return trimmed\n    return `${trimmed}.core`\n  }\n\n  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    setDomainName(e.target.value)\n    // Reset states when input changes\n    setIsAvailable(null)\n    setOwner(null)\n    setRegistrationError(null)\n  }\n\n  const checkAvailability = async () => {\n    if (!domainName.trim()) return\n\n    // Check if wallet is connected first\n    if (!isConnected) {\n      setRegistrationError(\"Please connect your wallet first.\")\n      return\n    }\n\n    const formattedName = formatDomainName(domainName)\n    setIsChecking(true)\n    setRegistrationError(null)\n\n    try {\n      console.log(\"Checking domain availability for:\", formattedName)\n      const domainHash = ethers.encodeBytes32String(formattedName)\n      console.log(\"Domain hash:\", domainHash)\n      \n      const ensRegistry = getContractOne()\n      if (!ensRegistry) {\n        throw new Error(\"ENS Registry contract is not loaded. Please ensure your wallet is connected and on the correct network.\")\n      }\n\n      console.log(\"Contract loaded successfully:\", ensRegistry)\n      const record = await ensRegistry.getSpecificRecord(domainHash)\n      console.log(\"Contract response:\", record)\n      \n      const zeroAddress = \"0x0000000000000000000000000000000000000000\"\n\n      // Check if domain is available (owner is zero address)\n      if (record.owner === zeroAddress) {\n        setIsAvailable(true)\n      } else {\n        setIsAvailable(false)\n        setOwner(record.owner)\n      }\n      setShowDialog(true)\n    } catch (error) {\n      console.error(\"Error checking domain availability:\", error)\n      setRegistrationError(`Failed to check domain availability: ${error instanceof Error ? error.message : 'Unknown error'}`)\n    } finally {\n      setIsChecking(false)\n    }\n  }\n\n  const handleConnectOrSwitch = async () => {\n    if (!isConnected) {\n      await connect()\n      return false\n    }\n\n    if (!isCorrectNetwork) {\n      await switchNetwork()\n      return false\n    }\n\n    return true\n  }\n\n  const registerDomain = async () => {\n    setRegistrationError(null)\n\n    const readyToProceed = await handleConnectOrSwitch()\n    if (!readyToProceed) return\n\n    if (!isAvailable) return\n\n    const formattedName = formatDomainName(domainName)\n    setIsRegistering(true)\n\n    try {\n      const domainHash = ethers.encodeBytes32String(formattedName)\n      const registrar = getContractTwo()\n      if (!registrar) throw new Error(\"Registrar contract is not loaded\")\n      const tx = await registrar.register(domainHash, {\n        value: ethers.parseEther(\"0.01\"),\n      })\n      await tx.wait()\n\n      setRegistrationSuccess(true)\n      setTimeout(() => {\n        setShowDialog(false)\n        router.push(\"/dashboard\")\n      }, 2000)\n    } catch (error: any) {\n      console.error(\"Error registering domain:\", error)\n      setRegistrationError(`Failed to register domain: ${error.message || \"Unknown error\"}`)\n    } finally {\n      setIsRegistering(false)\n    }\n  }\n\n  return (\n    <div className=\"w-full\">\n      <div className=\"flex flex-col sm:flex-row w-full items-center gap-3\">\n        <div className=\"relative w-full\">\n          <Input\n            type=\"text\"\n            placeholder=\"Enter domain name\"\n            value={domainName}\n            onChange={handleInputChange}\n            className=\"w-full h-12 text-lg px-4\"\n          />\n          <span className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none\">\n            {domainName && !domainName.endsWith(\".core\") ? \".core\" : \"\"}\n          </span>\n        </div>\n        <Button\n          onClick={checkAvailability}\n          disabled={!domainName.trim() || isChecking || !isConnected}\n          className=\"w-full sm:w-auto h-12 px-8 text-lg\"\n        >\n          {isChecking ? (\n            <>\n              <Loader2 className=\"mr-2 h-5 w-5 animate-spin\" />\n              Checking\n            </>\n          ) : !isConnected ? (\n            \"Connect Wallet First\"\n          ) : (\n            \"Check\"\n          )}\n        </Button>\n      </div>\n\n      <Dialog open={showDialog} onOpenChange={setShowDialog}>\n        <DialogContent className=\"sm:max-w-md\">\n          <DialogHeader>\n            <DialogTitle>Domain Registration</DialogTitle>\n            <DialogDescription>{formatDomainName(domainName)}</DialogDescription>\n          </DialogHeader>\n\n          <div className=\"py-4 space-y-4\">\n            {isAvailable === true && (\n              <Alert className=\"border-orange-500 bg-orange-50 dark:bg-orange-950\">\n                <Check className=\"h-4 w-4 text-orange-500\" />\n                <AlertTitle className=\"text-orange-500\">Available!</AlertTitle>\n                <AlertDescription>This domain is available for registration.</AlertDescription>\n              </Alert>\n            )}\n\n            {isAvailable === false && (\n              <Alert variant=\"destructive\">\n                <AlertCircle className=\"h-4 w-4\" />\n                <AlertTitle>Already Registered</AlertTitle>\n                <AlertDescription>This domain has already been registered by {owner}.</AlertDescription>\n              </Alert>\n            )}\n\n            {registrationSuccess && (\n              <Alert className=\"border-orange-500 bg-orange-50 dark:bg-orange-950\">\n                <Check className=\"h-4 w-4 text-orange-500\" />\n                <AlertTitle className=\"text-orange-500\">Success!</AlertTitle>\n                <AlertDescription>Domain successfully registered. Redirecting to your dashboard...</AlertDescription>\n              </Alert>\n            )}\n\n            {registrationError && (\n              <Alert variant=\"destructive\">\n                <AlertCircle className=\"h-4 w-4\" />\n                <AlertTitle>Registration Failed</AlertTitle>\n                <AlertDescription>{registrationError}</AlertDescription>\n              </Alert>\n            )}\n\n            {isConnected && !isCorrectNetwork && (\n              <Alert className=\"border-yellow-500 bg-yellow-50 dark:bg-yellow-950\">\n                <Network className=\"h-4 w-4 text-yellow-500\" />\n                <AlertTitle className=\"text-yellow-500\">Wrong Network</AlertTitle>\n                <AlertDescription>You need to switch to CoreTestnet2 to register domains.</AlertDescription>\n              </Alert>\n            )}\n          </div>\n\n          <DialogFooter>\n            {isAvailable && !registrationSuccess && (\n              <Button onClick={registerDomain} disabled={isRegistering || isSwitchingNetwork} className=\"w-full\">\n                {isRegistering ? (\n                  <>\n                    <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                    Registering...\n                  </>\n                ) : isSwitchingNetwork ? (\n                  <>\n                    <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                    Switching Network...\n                  </>\n                ) : !isConnected ? (\n                  \"Connect Wallet to Register\"\n                ) : !isCorrectNetwork ? (\n                  \"Switch to CoreTestnet2\"\n                ) : (\n                  \"Register Domain\"\n                )}\n              </Button>\n            )}\n\n            {!isAvailable && (\n              <Button variant=\"outline\" onClick={() => setShowDialog(false)} className=\"w-full\">\n                Close\n              </Button>\n            )}\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </div>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/header.tsx",
    "content": "\"use client\"\n\nimport Link from \"next/link\"\nimport { useWallet } from \"@/hooks/use-wallet\"\nimport { Button } from \"@/components/ui/button\"\nimport { ModeToggle } from \"@/components/mode-toggle\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"@/components/ui/dropdown-menu\"\nimport { AlertCircle, ChevronDown, Wallet } from \"lucide-react\"\nimport { usePathname } from \"next/navigation\"\nimport { Alert, AlertDescription } from \"./ui/alert\"\nimport { useState, useEffect } from \"react\"\nimport { NetworkSwitcher } from \"./network-switcher\"\n\nexport function Header() {\n  const { address, isConnected, networkStatus, connect, disconnect, switchNetwork } = useWallet()\n  const { isCorrectNetwork, currentNetworkName, networkError } = networkStatus\n  const pathname = usePathname()\n  const [showNetworkError, setShowNetworkError] = useState(!!networkError)\n\n  // Update network error visibility when error changes\n  useEffect(() => {\n    if (networkError) {\n      setShowNetworkError(true)\n    }\n  }, [networkError])\n\n  const truncateAddress = (address: string) => {\n    return `${address.slice(0, 6)}...${address.slice(-4)}`\n  }\n\n  return (\n    <>\n      <header className=\"sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60\">\n        <div className=\"w-full px-4 md:px-8 flex h-16 items-center justify-between\">\n          <div className=\"flex items-center gap-6 md:gap-10\">\n            <Link href=\"/\" className=\"flex items-center space-x-2\">\n              <span className=\"font-bold text-xl\">CORE DNS</span>\n            </Link>\n            <nav className=\"hidden gap-6 md:flex\">\n              <Link\n                href=\"/\"\n                className={`text-sm font-medium transition-colors hover:text-primary ${\n                  pathname === \"/\" ? \"text-foreground\" : \"text-muted-foreground\"\n                }`}\n              >\n                Home\n              </Link>\n              <Link\n                href=\"/dashboard\"\n                className={`text-sm font-medium transition-colors hover:text-primary ${\n                  pathname === \"/dashboard\" ? \"text-foreground\" : \"text-muted-foreground\"\n                }`}\n              >\n                Dashboard\n              </Link>\n              <Link\n                href=\"/registry\"\n                className={`text-sm font-medium transition-colors hover:text-primary ${\n                  pathname === \"/registry\" ? \"text-foreground\" : \"text-muted-foreground\"\n                }`}\n              >\n                Registry\n              </Link>\n            </nav>\n          </div>\n          <div className=\"flex items-center gap-2\">\n            <ModeToggle />\n            <NetworkSwitcher />\n            {isConnected ? (\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button variant=\"outline\" className=\"flex items-center gap-2\">\n                    <Wallet className=\"h-4 w-4\" />\n                    <span className=\"hidden sm:inline\">{truncateAddress(address || \"\")}</span>\n                    <ChevronDown className=\"h-4 w-4\" />\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem asChild>\n                    <Link href=\"/dashboard\">My Domains</Link>\n                  </DropdownMenuItem>\n                  <DropdownMenuItem onClick={disconnect}>Disconnect</DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            ) : (\n              <Button onClick={connect} className=\"flex items-center gap-2\">\n                <Wallet className=\"h-4 w-4\" />\n                <span>Connect Wallet</span>\n              </Button>\n            )}\n          </div>\n        </div>\n      </header>\n\n      {isConnected && !isCorrectNetwork && (\n        <div className=\"w-full px-4 py-3 bg-red-500/10\">\n          <div className=\"max-w-5xl mx-auto flex flex-col sm:flex-row items-center justify-between gap-3\">\n            <div className=\"flex items-center gap-2\">\n              <AlertCircle className=\"h-5 w-5 text-red-500\" />\n              <span className=\"font-medium text-red-700 dark:text-red-400\">\n                You are on {currentNetworkName || \"an unsupported network\"}\n              </span>\n            </div>\n            <Button onClick={switchNetwork} className=\"bg-red-500 hover:bg-red-600 text-white\">\n              Switch to CoreTestnet2\n            </Button>\n          </div>\n        </div>\n      )}\n\n      {networkError && showNetworkError && (\n        <div className=\"w-full px-4 py-2 bg-destructive/10\">\n          <Alert variant=\"destructive\" className=\"max-w-5xl mx-auto\">\n            <AlertCircle className=\"h-4 w-4\" />\n            <AlertDescription className=\"flex items-center justify-between\">\n              <span>{networkError}</span>\n              <Button variant=\"ghost\" size=\"sm\" onClick={() => setShowNetworkError(false)}>\n                Dismiss\n              </Button>\n            </AlertDescription>\n          </Alert>\n        </div>\n      )}\n    </>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/mode-toggle.tsx",
    "content": "\"use client\"\n\nimport { useContext } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"@/components/ui/dropdown-menu\"\nimport { Moon, Sun } from \"lucide-react\"\nimport { ThemeProviderContext } from \"./theme-provider\"\n\nexport function ModeToggle() {\n  const { theme, setTheme } = useContext(ThemeProviderContext)\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"outline\" size=\"icon\" className=\"relative\">\n          <Sun className=\"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:rotate-90 dark:scale-0\" />\n          <Moon className=\"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n          <span className=\"sr-only\">Toggle theme</span>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\">\n        <DropdownMenuItem onClick={() => setTheme(\"light\")}>Light</DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"dark\")}>Dark</DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setTheme(\"system\")}>System</DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/network-switcher.tsx",
    "content": "\"use client\"\n\nimport { useWallet } from \"@/hooks/use-wallet\"\nimport { Button } from \"@/components/ui/button\"\nimport { Loader2, Check, AlertCircle } from \"lucide-react\"\n\nexport function NetworkSwitcher() {\n  const { isConnected, networkStatus, switchNetwork } = useWallet()\n  const { isCorrectNetwork, currentNetworkName, isSwitchingNetwork } = networkStatus\n\n  // If not connected, don't show anything\n  if (!isConnected) {\n    return null\n  }\n\n  // If on correct network, show a simple success indicator\n  if (isCorrectNetwork) {\n    return (\n      <Button variant=\"outline\" className=\"flex items-center gap-2 border-orange-500 text-orange-500\" disabled>\n        <Check className=\"h-4 w-4\" />\n        <span>CoreTestnet2</span>\n      </Button>\n    )\n  }\n\n  // If switching network, show loading state\n  if (isSwitchingNetwork) {\n    return (\n      <Button variant=\"outline\" disabled className=\"flex items-center gap-2\">\n        <Loader2 className=\"h-4 w-4 animate-spin\" />\n        <span>Switching...</span>\n      </Button>\n    )\n  }\n\n  // If on wrong network, show a simple switch button\n  return (\n    <Button variant=\"destructive\" onClick={switchNetwork} className=\"flex items-center gap-2\">\n      <AlertCircle className=\"h-4 w-4\" />\n      <span>Switch to CoreTestnet2</span>\n    </Button>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/theme-provider.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { createContext, useEffect, useState } from \"react\"\n\ntype Theme = \"dark\" | \"light\" | \"system\"\n\ntype ThemeProviderProps = {\n  children: React.ReactNode\n  defaultTheme?: Theme\n  storageKey?: string\n}\n\ntype ThemeProviderState = {\n  theme: Theme\n  setTheme: (theme: Theme) => void\n}\n\nconst initialState: ThemeProviderState = {\n  theme: \"system\",\n  setTheme: () => null,\n}\n\nexport const ThemeProviderContext = createContext<ThemeProviderState>(initialState)\n\nexport function ThemeProvider({\n  children,\n  defaultTheme = \"system\",\n  storageKey = \"theme\",\n  ...props\n}: ThemeProviderProps) {\n  const [theme, setTheme] = useState<Theme>(defaultTheme)\n\n  useEffect(() => {\n    const root = window.document.documentElement\n    const savedTheme = localStorage.getItem(storageKey)\n\n    if (savedTheme && [\"dark\", \"light\", \"system\"].includes(savedTheme)) {\n      setTheme(savedTheme as Theme)\n    }\n  }, [storageKey])\n\n  useEffect(() => {\n    const root = window.document.documentElement\n\n    // Remove all theme classes\n    root.classList.remove(\"light\", \"dark\")\n\n    if (theme === \"system\") {\n      const systemTheme = window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\"\n      root.classList.add(systemTheme)\n      return\n    }\n\n    root.classList.add(theme)\n    localStorage.setItem(storageKey, theme)\n  }, [theme, storageKey])\n\n  const value = {\n    theme,\n    setTheme: (theme: Theme) => {\n      setTheme(theme)\n    },\n  }\n\n  return (\n    <ThemeProviderContext.Provider {...props} value={value}>\n      {children}\n    </ThemeProviderContext.Provider>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/tooltip.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <TooltipPrimitive.Content\n    ref={ref}\n    sideOffset={sideOffset}\n    className={cn(\n      \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n      className,\n    )}\n    {...props}\n  />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/ui/alert.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n  \"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-background text-foreground\",\n        destructive:\n          \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nconst Alert = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n  <div\n    ref={ref}\n    role=\"alert\"\n    className={cn(alertVariants({ variant }), className)}\n    {...props}\n  />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n  <h5\n    ref={ref}\n    className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n    {...props}\n  />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/ui/badge.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n  \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n        secondary:\n          \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n        destructive:\n          \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n        outline: \"text-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nexport interface BadgeProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n  return (\n    <div className={cn(badgeVariants({ variant }), className)} {...props} />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/ui/button.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2\",\n        sm: \"h-8 rounded-md px-3 text-xs\",\n        lg: \"h-10 rounded-md px-8\",\n        icon: \"h-9 w-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\"\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/ui/card.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-xl border bg-card text-card-foreground shadow\",\n      className\n    )}\n    {...props}\n  />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"font-semibold leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/ui/dialog.tsx",
    "content": "\"use client\"\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-1.5 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\n      \"text-lg font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogTrigger,\n  DialogClose,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto\" />\n  </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n  DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuSubContent.displayName =\n  DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <DropdownMenuPrimitive.Portal>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n        className\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n  DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"px-2 py-1.5 text-sm font-semibold\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n      {...props}\n    />\n  )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/ui/input.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/ui/skeleton.tsx",
    "content": "import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\"animate-pulse rounded-md bg-primary/10\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Skeleton }\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components/wallet-provider.tsx",
    "content": "// WalletProvider.tsx\n\"use client\"\n\nimport { createContext, useEffect, useState, useRef, ReactNode } from \"react\"\nimport { ethers } from \"ethers\"\nimport contractsData from \"../constants/config.json\"\n\n// CoreTestnet2 parameters\nconst CORE_TESTNET2 = {\n  chainId: \"0x45a\",           // 1114 decimal\n  chainName: \"CoreTestnet2\",\n  nativeCurrency: { name: \"tCORE2\", symbol: \"tCORE2\", decimals: 18 },\n  rpcUrls: [\"https://rpc.test2.btcs.network\"],\n  blockExplorerUrls: [\"https://scan.test2.btcs.network\"],\n}\n\ninterface NetworkStatus {\n  isCorrectNetwork: boolean\n  currentChainId: string | null\n  currentNetworkName: string | null\n  isCheckingNetwork: boolean\n  isSwitchingNetwork: boolean\n  networkError: string | null\n}\n\ninterface WalletContextType {\n  address: string | null\n  isConnected: boolean\n  networkStatus: NetworkStatus\n  connect: () => Promise<void>\n  disconnect: () => void\n  switchNetwork: () => Promise<void>\n  provider: ethers.BrowserProvider | null\n  signer: ethers.JsonRpcSigner | null\n  getContractOne: () => ethers.Contract | null\n  getContractTwo: () => ethers.Contract | null\n}\n\nconst initialNetworkStatus: NetworkStatus = {\n  isCorrectNetwork: false,\n  currentChainId: null,\n  currentNetworkName: null,\n  isCheckingNetwork: false,\n  isSwitchingNetwork: false,\n  networkError: null,\n}\n\nexport const WalletContext = createContext<WalletContextType>({\n  address: null,\n  isConnected: false,\n  networkStatus: initialNetworkStatus,\n  connect: async () => {},\n  disconnect: () => {},\n  switchNetwork: async () => {},\n  provider: null,\n  signer: null,\n  getContractOne: () => null,\n  getContractTwo: () => null\n})\n\n// Helper to map chainId → name\nconst getNetworkName = (chainId: string | null): string => {\n  if (!chainId) return \"Unknown Network\"\n  const id = chainId.startsWith(\"0x\") ? parseInt(chainId, 16) : parseInt(chainId)\n  const names: Record<number,string> = { 1114: \"CoreTestnet2\", 1: \"Ethereum Mainnet\", 5: \"Goerli\" }\n  return names[id] || `Chain ${id}`\n}\n\nexport function WalletProvider({ children }: { children: ReactNode }) {\n  const [address, setAddress] = useState<string|null>(null)\n  const [isConnected, setIsConnected] = useState(false)\n  const [networkStatus, setNetworkStatus] = useState<NetworkStatus>(initialNetworkStatus)\n  const [provider, setProvider] = useState<ethers.BrowserProvider|null>(null)\n  const [signer, setSigner] = useState<ethers.JsonRpcSigner|null>(null)\n  const [contractData, setContractData] = useState(contractsData)\n\n  const chainChangedRef = useRef<((chainId: string) => void)|null>(null)\n  const accountsChangedRef = useRef<((accounts: string[]) => void)|null>(null)\n  const disconnectRef = useRef<(() => void)|null>(null)\n  const pollRef = useRef<NodeJS.Timeout|null>(null)\n\n  // 1. Check network via RPC\n  const checkNetwork = async (): Promise<boolean> => {\n    if (!window.ethereum) return false\n    setNetworkStatus(ns => ({ ...ns, isCheckingNetwork: true }))\n    try {\n      const chainId: string = await window.ethereum.request({ method: \"eth_chainId\" })\n      const isCorrect = chainId === CORE_TESTNET2.chainId\n      setNetworkStatus(ns => ({\n        ...ns,\n        isCorrectNetwork: isCorrect,\n        currentChainId: chainId,\n        currentNetworkName: getNetworkName(chainId),\n        isCheckingNetwork: false,\n        networkError: isCorrect ? null : \"Please switch back to CoreTestnet2.\",\n      }))\n      return isCorrect\n    } catch {\n      setNetworkStatus(ns => ({ ...ns, isCheckingNetwork: false, networkError: \"Network check failed\" }))\n      return false\n    }\n  }\n\n  // 2. Setup chainChanged listener & polling\n  const setupNetworkMonitoring = () => {\n    if (!window.ethereum) return\n    cleanupNetworkMonitoring()\n\n    const onChainChanged = (chainId: string) => {\n      const isCorrect = chainId === CORE_TESTNET2.chainId\n      setNetworkStatus(ns => ({\n        ...ns,\n        isCorrectNetwork: isCorrect,\n        currentChainId: chainId,\n        currentNetworkName: getNetworkName(chainId),\n        isSwitchingNetwork: false,\n        networkError: isCorrect ? null : \"Please switch back to CoreTestnet2.\",\n      }))\n      // update provider/signer after network flips\n      if (isConnected) {\n        const bp = new ethers.BrowserProvider((window as any).ethereum)\n        setProvider(bp)\n        bp.getSigner().then(setSigner).catch(console.error)\n      }\n      // MetaMask recommends reload on chain change :contentReference[oaicite:6]{index=6}\n      window.location.reload()\n    }\n    chainChangedRef.current = onChainChanged\n    window.ethereum.on(\"chainChanged\", onChainChanged)\n\n    pollRef.current = setInterval(checkNetwork, 5000)  // fallback polling\n  }\n\n  const cleanupNetworkMonitoring = () => {\n    if (window.ethereum && chainChangedRef.current) {\n      window.ethereum.removeListener(\"chainChanged\", chainChangedRef.current)\n    }\n    if (pollRef.current) clearInterval(pollRef.current)\n  }\n\n  // 3. switchNetwork with add fallback :contentReference[oaicite:7]{index=7} :contentReference[oaicite:8]{index=8}\n  const switchNetwork = async () => {\n    if (!window.ethereum) {\n      setNetworkStatus(ns => ({ ...ns, networkError: \"Please install MetaMask.\" }))\n      return\n    }\n    setNetworkStatus(ns => ({ ...ns, isSwitchingNetwork: true, networkError: null }))\n    try {\n      await window.ethereum.request({\n        method: \"wallet_switchEthereumChain\",\n        params: [{ chainId: CORE_TESTNET2.chainId }],\n      })\n    } catch (err: any) {\n      // if not added or silent‐fail, force add → switch :contentReference[oaicite:9]{index=9}\n      await window.ethereum.request({ method: \"wallet_addEthereumChain\", params: [CORE_TESTNET2] })\n      await window.ethereum.request({\n        method: \"wallet_switchEthereumChain\",\n        params: [{ chainId: CORE_TESTNET2.chainId }],\n      })\n    } finally {\n      setTimeout(async () => {\n        setNetworkStatus(ns => ({ ...ns, isSwitchingNetwork: false }))\n        await checkNetwork()\n      }, 500)\n    }\n  }\n\n  // 4. connect wallet\n  const connect = async () => {\n    if (!window.ethereum) {\n      setNetworkStatus(ns => ({ ...ns, networkError: \"Please install MetaMask.\" }))\n      return\n    }\n    try {\n      const accounts: string[] = await window.ethereum.request({ method: \"eth_requestAccounts\" })\n      if (accounts.length === 0) throw new Error(\"No accounts\")\n      const bp = new ethers.BrowserProvider(window.ethereum)\n      const s = await bp.getSigner()\n      setProvider(bp); setSigner(s); setAddress(await s.getAddress()); setIsConnected(true)\n      localStorage.setItem(\"walletConnected\", \"true\")\n      await checkNetwork()\n      setupNetworkMonitoring()\n\n      // account/disconnect handlers\n      const onAccountsChanged = (accs: string[]) => accs.length ? setAddress(accs[0]) : disconnect()\n      const onDisconnect = () => disconnect()\n      accountsChangedRef.current = onAccountsChanged\n      disconnectRef.current = onDisconnect\n      window.ethereum.on(\"accountsChanged\", onAccountsChanged)\n      window.ethereum.on(\"disconnect\", onDisconnect)\n    } catch (err: any) {\n      setNetworkStatus(ns => ({ ...ns, networkError: `Connect failed: ${err.message}` }))\n    }\n  }\n\n  // 5. disconnect\n  const disconnect = () => {\n    setAddress(null); setIsConnected(false); setNetworkStatus(initialNetworkStatus)\n    setProvider(null); setSigner(null); localStorage.removeItem(\"walletConnected\")\n    if (window.ethereum) {\n      if (accountsChangedRef.current) window.ethereum.removeListener(\"accountsChanged\", accountsChangedRef.current)\n      if (disconnectRef.current) window.ethereum.removeListener(\"disconnect\", disconnectRef.current)\n    }\n    cleanupNetworkMonitoring()\n  }\n\n  // Helpers for creating contract instances using the signer\n  const getContractOne = () => {\n    if (signer) {\n\n      return new ethers.Contract(\n        contractData.ContractOne.address,\n        contractData.ContractOne.abi,\n        signer\n      )\n    }\n    return null\n  }\n\n  const getContractTwo = () => {\n    if (signer) {\n      return new ethers.Contract(\n        contractData.ContractTwo.address,\n        contractData.ContractTwo.abi,\n        signer\n      )\n    }\n    return null\n  }\n\n\n  // Auto-reconnect if previously connected\n  useEffect(() => {\n    if (window.ethereum && localStorage.getItem(\"walletConnected\") === \"true\") connect()\n    return cleanupNetworkMonitoring  // cleanup on unmount :contentReference[oaicite:10]{index=10}\n  }, [])\n\n  return (\n    <WalletContext.Provider value={{\n      address, isConnected, networkStatus,\n      connect, disconnect, switchNetwork,\n      provider, signer,  getContractOne,\n      getContractTwo,\n    }}>\n      {children}\n    </WalletContext.Provider>\n  )\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "15-dns-protocol/Frontend/constants/config.json",
    "content": "{\n  \"ContractOne\": {\n    \"address\": \"0x529694c7174467B72195A8680Dd7E2BD10f81be5\",\n    \"abi\": [\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": true,\n            \"internalType\": \"bytes32\",\n            \"name\": \"domain\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"indexed\": false,\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"NewDomain\",\n        \"type\": \"event\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": true,\n            \"internalType\": \"bytes32\",\n            \"name\": \"domain\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"indexed\": false,\n            \"internalType\": \"uint256\",\n            \"name\": \"expiration\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"RenewDomain\",\n        \"type\": \"event\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": true,\n            \"internalType\": \"bytes32\",\n            \"name\": \"domain\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"indexed\": false,\n            \"internalType\": \"address\",\n            \"name\": \"resolver\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"SetResolver\",\n        \"type\": \"event\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": true,\n            \"internalType\": \"bytes32\",\n            \"name\": \"domain\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"indexed\": false,\n            \"internalType\": \"address\",\n            \"name\": \"newOwner\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"Transfer\",\n        \"type\": \"event\"\n      },\n      {\n        \"inputs\": [],\n        \"name\": \"getAllRecords\",\n        \"outputs\": [\n          {\n            \"components\": [\n              {\n                \"internalType\": \"bytes32\",\n                \"name\": \"domainName\",\n                \"type\": \"bytes32\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"owner\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"resolver\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"registration\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"expiration\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct ENSRegistry.Record[]\",\n            \"name\": \"\",\n            \"type\": \"tuple[]\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"ownerAddress\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"getDomainsByOwner\",\n        \"outputs\": [\n          {\n            \"internalType\": \"bytes32[]\",\n            \"name\": \"\",\n            \"type\": \"bytes32[]\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"bytes32\",\n            \"name\": \"domainHash\",\n            \"type\": \"bytes32\"\n          }\n        ],\n        \"name\": \"getSpecificRecord\",\n        \"outputs\": [\n          {\n            \"components\": [\n              {\n                \"internalType\": \"bytes32\",\n                \"name\": \"domainName\",\n                \"type\": \"bytes32\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"owner\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"address\",\n                \"name\": \"resolver\",\n                \"type\": \"address\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"registration\",\n                \"type\": \"uint256\"\n              },\n              {\n                \"internalType\": \"uint256\",\n                \"name\": \"expiration\",\n                \"type\": \"uint256\"\n              }\n            ],\n            \"internalType\": \"struct ENSRegistry.Record\",\n            \"name\": \"\",\n            \"type\": \"tuple\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"bytes32\",\n            \"name\": \"\",\n            \"type\": \"bytes32\"\n          }\n        ],\n        \"name\": \"records\",\n        \"outputs\": [\n          {\n            \"internalType\": \"bytes32\",\n            \"name\": \"domainName\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"resolver\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"registration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"expiration\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"bytes32\",\n            \"name\": \"domainHash\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"resolver\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"registration\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"expiration\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"setRecord\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"bytes32\",\n            \"name\": \"domainHash\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"resolver\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"setResolver\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"bytes32\",\n            \"name\": \"domainHash\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"newOwner\",\n            \"type\": \"address\"\n          }\n        ],\n        \"name\": \"transferOwnership\",\n        \"outputs\": [],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"function\"\n      }\n    ]\n  },\n\"ContractTwo\": {\n    \"address\": \"0xd50E09199DB244cBA496857E4AC3E2300448cA50\",\n    \"abi\": [\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"_registry\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"_fee\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"stateMutability\": \"nonpayable\",\n        \"type\": \"constructor\"\n      },\n      {\n        \"anonymous\": false,\n        \"inputs\": [\n          {\n            \"indexed\": true,\n            \"internalType\": \"bytes32\",\n            \"name\": \"domainHash\",\n            \"type\": \"bytes32\"\n          },\n          {\n            \"indexed\": false,\n            \"internalType\": \"address\",\n            \"name\": \"owner\",\n            \"type\": \"address\"\n          },\n          {\n            \"indexed\": false,\n            \"internalType\": \"uint256\",\n            \"name\": \"expiration\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"name\": \"DomainRegistered\",\n        \"type\": \"event\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"bytes32\",\n            \"name\": \"domainHash\",\n            \"type\": \"bytes32\"\n          }\n        ],\n        \"name\": \"register\",\n        \"outputs\": [],\n        \"stateMutability\": \"payable\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [],\n        \"name\": \"registrationFee\",\n        \"outputs\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [],\n        \"name\": \"registrationPeriod\",\n        \"outputs\": [\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"\",\n            \"type\": \"uint256\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [],\n        \"name\": \"registry\",\n        \"outputs\": [\n          {\n            \"internalType\": \"contract ENSRegistry\",\n            \"name\": \"\",\n            \"type\": \"address\"\n          }\n        ],\n        \"stateMutability\": \"view\",\n        \"type\": \"function\"\n      },\n      {\n        \"inputs\": [\n          {\n            \"internalType\": \"bytes32\",\n            \"name\": \"domainHash\",\n            \"type\": \"bytes32\"\n          }\n        ],\n        \"name\": \"renew\",\n        \"outputs\": [],\n        \"stateMutability\": \"payable\",\n        \"type\": \"function\"\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/hooks/use-wallet.tsx",
    "content": "\"use client\"\n\nimport { useContext } from \"react\"\nimport { WalletContext } from \"@/components/wallet-provider\"\n\nexport function useWallet() {\n  const context = useContext(WalletContext)\n\n  if (context === undefined) {\n    throw new Error(\"useWallet must be used within a WalletProvider\")\n  }\n\n  return context\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/lib/core-contract.ts",
    "content": "import { ethers } from \"ethers\"\n\n// This is a placeholder for the actual contract ABI\n// In a real application, you would import the actual ABI from a JSON file\nconst CORE_DNS_ABI = [\n  // Example ABI entries\n  \"function registerDomain(string name) public\",\n  \"function getOwner(string name) public view returns (address)\",\n  \"function getUserDomains(address owner) public view returns (string[])\",\n  \"function getAllDomains() public view returns (string[])\",\n]\n\n// Contract address - replace with actual contract address\nconst CONTRACT_ADDRESS = \"0x1234567890123456789012345678901234567890\"\n\nexport class CoreContract {\n  private contract: ethers.Contract | null = null\n\n  constructor(provider: ethers.BrowserProvider, signer: ethers.JsonRpcSigner) {\n    this.contract = new ethers.Contract(CONTRACT_ADDRESS, CORE_DNS_ABI, signer)\n  }\n\n  async registerDomain(name: string): Promise<ethers.TransactionResponse> {\n    if (!this.contract) throw new Error(\"Contract not initialized\")\n\n    // Ensure domain has .core suffix\n    const formattedName = this.formatDomainName(name)\n\n    // Call the contract method\n    return await this.contract.registerDomain(formattedName)\n  }\n\n  async getOwner(name: string): Promise<string> {\n    if (!this.contract) throw new Error(\"Contract not initialized\")\n\n    // Ensure domain has .core suffix\n    const formattedName = this.formatDomainName(name)\n\n    // Call the contract method\n    return await this.contract.getOwner(formattedName)\n  }\n\n  async getUserDomains(owner: string): Promise<string[]> {\n    if (!this.contract) throw new Error(\"Contract not initialized\")\n\n    // Call the contract method\n    return await this.contract.getUserDomains(owner)\n  }\n\n  async getAllDomains(): Promise<string[]> {\n    if (!this.contract) throw new Error(\"Contract not initialized\")\n\n    // Call the contract method\n    return await this.contract.getAllDomains()\n  }\n\n  private formatDomainName(name: string): string {\n    if (!name) return \"\"\n\n    const trimmed = name.trim().toLowerCase()\n    if (trimmed.endsWith(\".core\")) return trimmed\n    return `${trimmed}.core`\n  }\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/lib/utils.ts",
    "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/next.config.js",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  /* config options here */\n};\n\nmodule.exports = nextConfig;\n"
  },
  {
    "path": "15-dns-protocol/Frontend/package.json",
    "content": "{\n  \"name\": \"core-dns\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-dialog\": \"1.1.15\",\n    \"@radix-ui/react-dropdown-menu\": \"2.0.0\",\n    \"@radix-ui/react-slot\": \"1.0.0\",\n    \"@radix-ui/react-tooltip\": \"1.0.0\",\n    \"class-variance-authority\": \"0.7.0\",\n    \"clsx\": \"2.0.0\",\n    \"ethers\": \"6.8.0\",\n    \"lucide-react\": \"0.292.0\",\n    \"next\": \"15.0.2\",\n    \"react\": \"^18\",\n    \"react-dom\": \"^18\",\n    \"tailwind-merge\": \"2.0.0\",\n    \"tailwindcss-animate\": \"1.0.7\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"^18\",\n    \"@types/react-dom\": \"^18\",\n    \"autoprefixer\": \"10.0.1\",\n    \"eslint\": \"^8\",\n    \"eslint-config-next\": \"14.0.3\",\n    \"postcss\": \"^8\",\n    \"tailwindcss\": \"3.3.0\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n  plugins: {\n    tailwindcss: {},\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "15-dns-protocol/Frontend/tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\";\n\nconst config: Config = {\n    darkMode: [\"class\"],\n    content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n  \textend: {\n  \t\tcolors: {\n  \t\t\tbackground: 'hsl(var(--background))',\n  \t\t\tforeground: 'hsl(var(--foreground))',\n  \t\t\tcard: {\n  \t\t\t\tDEFAULT: 'hsl(var(--card))',\n  \t\t\t\tforeground: 'hsl(var(--card-foreground))'\n  \t\t\t},\n  \t\t\tpopover: {\n  \t\t\t\tDEFAULT: 'hsl(var(--popover))',\n  \t\t\t\tforeground: 'hsl(var(--popover-foreground))'\n  \t\t\t},\n  \t\t\tprimary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--primary))',\n  \t\t\t\tforeground: 'hsl(var(--primary-foreground))'\n  \t\t\t},\n  \t\t\tsecondary: {\n  \t\t\t\tDEFAULT: 'hsl(var(--secondary))',\n  \t\t\t\tforeground: 'hsl(var(--secondary-foreground))'\n  \t\t\t},\n  \t\t\tmuted: {\n  \t\t\t\tDEFAULT: 'hsl(var(--muted))',\n  \t\t\t\tforeground: 'hsl(var(--muted-foreground))'\n  \t\t\t},\n  \t\t\taccent: {\n  \t\t\t\tDEFAULT: 'hsl(var(--accent))',\n  \t\t\t\tforeground: 'hsl(var(--accent-foreground))'\n  \t\t\t},\n  \t\t\tdestructive: {\n  \t\t\t\tDEFAULT: 'hsl(var(--destructive))',\n  \t\t\t\tforeground: 'hsl(var(--destructive-foreground))'\n  \t\t\t},\n  \t\t\tborder: 'hsl(var(--border))',\n  \t\t\tinput: 'hsl(var(--input))',\n  \t\t\tring: 'hsl(var(--ring))',\n  \t\t\tchart: {\n  \t\t\t\t'1': 'hsl(var(--chart-1))',\n  \t\t\t\t'2': 'hsl(var(--chart-2))',\n  \t\t\t\t'3': 'hsl(var(--chart-3))',\n  \t\t\t\t'4': 'hsl(var(--chart-4))',\n  \t\t\t\t'5': 'hsl(var(--chart-5))'\n  \t\t\t}\n  \t\t},\n  \t\tborderRadius: {\n  \t\t\tlg: 'var(--radius)',\n  \t\t\tmd: 'calc(var(--radius) - 2px)',\n  \t\t\tsm: 'calc(var(--radius) - 4px)'\n  \t\t}\n  \t}\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n};\nexport default config;\n"
  },
  {
    "path": "15-dns-protocol/Frontend/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "15-dns-protocol/Frontend/types/global.d.ts",
    "content": "declare global {\n  interface Window {\n    ethereum?: {\n      isMetaMask?: boolean\n      request: (request: { method: string; params?: any[] }) => Promise<any>\n      on: (event: string, listener: (...args: any[]) => void) => void\n      removeListener: (event: string, listener: (...args: any[]) => void) => void\n    }\n  }\n}\n\nexport {}\n"
  },
  {
    "path": "15-dns-protocol/README.md",
    "content": "# CORE DNS-Protocol\n\nA decentralized naming service (DNS) protocol on the CORE blockchain, inspired by Ethereum Name Service (ENS). This project lets users register human-readable `.core` domains, map them to on-chain and off-chain resources, and manage ownership through smart contracts.\n\n👉 Live App: [CoreDns](https://coredns.vercel.app/)\n\n## 🚀 Features\n\n- **Domain Registry**: Store and manage ownership, registration, and expiration of `.core` domains.\n- **Resolver**: Associate domains with detailed records (wallet address, IPFS hash, email, social media link).\n- **Registrar**: Handle domain registration and renewal with a configurable fee and period.\n- **Front-end dApp**: Next.js application for users to connect wallets, register domains, view public registry, and manage personal domains.\n\n## 📂 Project Structure\n\n```\ndns-protocol/\n├── contracts/              # Solidity smart contracts\n│   ├── ENS-Registry.sol    # Core registry contract\n│   ├── ResolverContract.sol# Enhanced resolver for domain records\n│   └── RegistrationContract.sol # Registrar for registration logic\n├── scripts/                # Deployment scripts\n│   └── deploy.js           # Deploy registry & registrar\n├── test/                   # Hardhat tests (sample Lock contract)\n│   └── Lock.js\n├── Frontend/               # Next.js front-end application\n├── hardhat.config.js       # Hardhat configuration (CORE testnet)\n├── package.json\n└── README.md               # This file\n```\n\n## 🔧 Tech Stack\n\n- **Blockchain**: EVM-compatible CORE chain (testnet RPC at `https://rpc.test2.btcs.network`).\n- **Smart Contracts**: Solidity 0.8.x, Hardhat, Ethers.js.\n- **Front-end**: Next.js, TypeScript, Tailwind CSS, Ethers.js.\n\n## 🛠 Prerequisites\n\n- [Node.js](https://nodejs.org/) (v16+)\n- [npm](https://www.npmjs.com/) or [Yarn](https://yarnpkg.com/)\n- [Hardhat CLI](https://hardhat.org/)\n- A CORE testnet wallet and a funded account private key\n\n## 🚀 Getting Started\n\n### 1. Clone the repository\n\n```bash\ngit clone https://github.com/coredao-org/dapp-tutorial.git\ncd dapp-tutorial/15-dns-protocol\n```\n\n### 2. Install dependencies (root)\n\n```bash\nnpm install\n```\n\n### 3. Configure environment\n\nCreate a `.env` file in the root folder with:\n\n```ini\nPRIVATE_KEY=your_core_testnet_private_key\nRPC_URL=https://rpc.test2.btcs.network\n```\n\n### 4. Compile & Deploy Contracts\n\nCompile contracts:\n\n```bash\nnpx hardhat compile\n```\n\nDeploy to CORE testnet:\n\n```bash\nnpx hardhat run scripts/deploy.js --network core\n```\n\n> _Note the deployed addresses printed in console._\n\n### 5. Configure Front-end\n\n1.  Navigate to the `Frontend` folder:\n    ```bash\n    cd Frontend\n    ```\n2.  Install front-end dependencies:\n    ```bash\n    npm install\n    ```\n3.  Open the config.json file located in the constants folder within the Frontend directory:\n\n    ```bash\n    Frontend/constants/config.json\n    ```\n\n    Update the contract addresses as follows:\n\n         Contract One Address: Replace with the deployed address of the ENS Registry contract.\n         Contract Two Address: Replace with the deployed address of the Registrar contract.\n         Ensure that the addresses are correctly formatted as strings. For example:\n\n    ```ini\n     {\n     \"contractOneAddress\": \"0xYourENSRegistryAddress\",\n     \"contractTwoAddress\": \"0xYourRegistrarAddress\"\n     }\n\n    ```\n\n### 6. Run the Front-end\n\n```bash\nnpm run dev\n```\n\nOpen your browser at `http://localhost:3000` to interact with the DNS dApp.\n\n## 🧑‍💻 Usage Overview\n\n1. **Public Registry Page**: View all registered `.core` domains and their owners.\n2. **Search**: Filter domains by name to see owner details.\n3. **Connect Wallet**: Use MetaMask or other EVM wallet to connect.\n4. **Register Domain**: Type your desired name (without `.core`), the suffix is added automatically. If available, confirm transaction. If taken, an error displays the current owner.\n5. **My Domains**: In your dashboard, view domains owned by your connected wallet.\n6. **Resolver Management**: (Optional) Update domain records (wallet, IPFS, email, social) via the resolver interface.\n\n## 📝 Testing\n\n> _The provided tests cover the sample Lock contract._\n\nRun Hardhat tests:\n\n```bash\nnpx hardhat test\n```\n\n## 🤝 Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repo\n2. Create a new branch (`git checkout -b feature/YourFeature`)\n3. Commit your changes (`git commit -m \"Add awesome feature\"`)\n4. Push to your branch (`git push origin feature/YourFeature`)\n5. Open a Pull Request\n"
  },
  {
    "path": "15-dns-protocol/contracts/ENS-Registry.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title ENSRegistry\n * @notice This contract acts as the primary directory for domain names.\n *         It stores ownership information, pointers to resolver contracts, and expiration times.\n */\ncontract ENSRegistry {\n    // A record for each domain name\n    struct Record {\n        bytes32 domainName;\n        address owner;    // The wallet address that owns the domain\n        address resolver; // Address of the resolver contract for this domain\n        uint256 registration; // When the domain was registered\n        uint256 expiration; // When the domain registration expires\n    }\n\n    // Mapping from a domain node (e.g., keccak256 hash of the domain name) to its record.\n    mapping(bytes32 => Record) public records;\n\n    // Array of all records for iteration purposes\n    Record[] private allRecords;\n\n    // Events to log changes in the registry.\n    event NewDomain(bytes32 indexed domain, address owner);\n    event Transfer(bytes32 indexed domain, address newOwner);\n    event SetResolver(bytes32 indexed domain, address resolver);\n    event RenewDomain(bytes32 indexed domain, uint256 expiration);\n\n    /**\n     * @notice Sets or updates the record for a domain.\n     * @param domainHash The unique identifier for the domain.\n     * @param owner The wallet address of the domain owner.\n     * @param resolver The resolver contract address associated with this domain.\n     * @param registration The timestamp when the domain was registered.\n     * @param expiration The timestamp when the registration expires.\n     */\n    function setRecord(\n        bytes32 domainHash,\n        address owner,\n        address resolver,\n        uint256 registration,\n        uint256 expiration\n    ) external {\n        // Allow update if the caller is the current owner or if the domain is unregistered.\n        require(\n            msg.sender == records[domainHash].owner || records[domainHash].owner == address(0),\n            \"Not authorized\"\n        );\n\n        Record memory record = Record(domainHash, owner, resolver, registration, expiration);\n        records[domainHash] = record;\n        allRecords.push(record);\n\n        emit NewDomain(domainHash, owner);\n    }\n\n    /**\n     * @notice Transfers domain ownership to a new address.\n     * @param domainHash The unique identifier for the domain.\n     * @param newOwner The wallet address of the new owner.\n     */\n    function transferOwnership(bytes32 domainHash, address newOwner) external {\n        require(msg.sender == records[domainHash].owner, \"Not authorized\");\n        records[domainHash].owner = newOwner;\n        emit Transfer(domainHash, newOwner);\n    }\n\n    /**\n     * @notice Sets or updates the resolver for a domain.\n     * @param domainHash The unique identifier for the domain.\n     * @param resolver The new resolver contract address.\n     */\n    function setResolver(bytes32 domainHash, address resolver) external {\n        require(msg.sender == records[domainHash].owner, \"Not authorized\");\n        records[domainHash].resolver = resolver;\n        emit SetResolver(domainHash, resolver);\n    }\n\n    /**\n     * @notice Retrieve a specific record by domain hash.\n     * @param domainHash The unique identifier for the domain.\n     * @return The Record struct for the domain.\n     */\n    function getSpecificRecord(bytes32 domainHash) external view returns (Record memory) {\n        return records[domainHash];\n    }\n\n\n    /**\n     * @notice Retrieve all recorded domains.\n     * @return An array of all Record structs.\n     */\n    function getAllRecords() external view returns (Record[] memory) {\n        return allRecords;\n    }\n\n    /**\n     * @notice Retrieve all domain names owned by a particular address.\n     * @param ownerAddress The address to query ownership for.\n     * @return An array of domain hashes owned by the specified address.\n     */\n    function getDomainsByOwner(address ownerAddress) external view returns (bytes32[] memory) {\n        uint256 total = allRecords.length;\n        uint256 count = 0;\n        // First count how many domains belong to ownerAddress\n        for (uint256 i = 0; i < total; i++) {\n            if (allRecords[i].owner == ownerAddress) {\n                count++;\n            }\n        }\n\n        // Populate result array\n        bytes32[] memory domains = new bytes32[](count);\n        uint256 index = 0;\n        for (uint256 i = 0; i < total; i++) {\n            if (allRecords[i].owner == ownerAddress) {\n                domains[index] = allRecords[i].domainName;\n                index++;\n            }\n        }\n        return domains;\n    }\n}\n"
  },
  {
    "path": "15-dns-protocol/contracts/RegistrationContract.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./ENS-Registry.sol\";\nimport \"./ResolverContract.sol\";\n\n\n/**\n * @title Registrar\n * @notice This contract handles domain registrations and renewals.\n *         It interacts with the ENSRegistry to update domain records.\n */\ncontract Registrar {\n\n    ENSRegistry public registry;  // The registry contract that keeps domain records.\n\n\n    uint256 public registrationPeriod = 365 days; // How long a domain remains registered.\n    uint256 public registrationFee;    // Fee required for registration or renewal.\n\n    // Event to log domain registrations.\n    event DomainRegistered(bytes32 indexed domainHash, address owner, uint256 expiration);\n\n    /**\n     * @notice Constructor sets the address of the ENSRegistry contract.\n     * @param _registry The deployed ENSRegistry contract address.\n     */\n    constructor(address _registry, uint256 _fee) {\n\n        registry = ENSRegistry(_registry);\n        registrationFee = _fee;\n    }\n\n    /**\n     * @notice Registers a new domain.\n     * @param domainHash The unique identifier for the domain.\n     * Requirements:\n     * - The domain must be unregistered or its registration must have expired.\n     * - The sender must pay at least the registration fee.\n     */\n    function register(bytes32 domainHash) external payable {\n\n        require(msg.value >= registrationFee, \"Insufficient fee\");\n\n        ENSRegistry.Record memory rec = registry.getSpecificRecord(domainHash);\n        // Check if the domain is either unregistered or its registration has expired.\n        require(rec.owner == address(0) || rec.expiration < block.timestamp, \"Domain already registered\");\n\n        uint256 expiration = block.timestamp + registrationPeriod;\n        registry.setRecord(domainHash, msg.sender, address(0), block.timestamp, expiration);\n        emit DomainRegistered(domainHash, msg.sender, expiration);\n    }\n\n    /**\n     * @notice Renews an existing domain registration.\n     * @param domainHash The unique identifier for the domain.\n     * Requirements:\n     * - The sender must be the current owner.\n     * - The sender must pay at least the registration fee.\n     */\n    function renew(bytes32 domainHash) external payable {\n        require(msg.value >= registrationFee, \"Insufficient fee\");\n        ENSRegistry.Record memory rec = registry.getSpecificRecord(domainHash);\n        require(rec.owner == msg.sender, \"Not the owner\");\n\n        uint256 newExpiration;\n        // If still active, extend from current expiration; otherwise, start from now.\n        if (rec.expiration > block.timestamp) {\n            newExpiration = rec.expiration + registrationPeriod;\n        } else {\n            newExpiration = block.timestamp + registrationPeriod;\n        }\n        registry.setRecord(domainHash, msg.sender, rec.resolver, block.timestamp, newExpiration);\n        emit DomainRegistered(domainHash, msg.sender, newExpiration);\n    }\n}\n"
  },
  {
    "path": "15-dns-protocol/contracts/ResolverContract.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title EnhancedResolver\n * @notice This contract stores multiple types of records for a domain.\n *         It allows a domain owner to set details such as a wallet address, IPFS hash, email, and social media link.\n */\ncontract Resolver {\n    \n    // Structure that holds various details for a domain.\n    struct Records {\n        address wallet;       // A wallet address (for payments or identification)\n        string ipfsHash;      // IPFS hash pointing to content (e.g., decentralized website)\n        string email;         // Contact email address\n        string socialMedia;   // Social media link or profile\n    }\n    \n    // Mapping from the domain node to its set of records.\n    mapping(bytes32 => Records) public records;\n    \n    // Event to notify when a domain's records are updated.\n    event RecordsUpdated(\n        bytes32 indexed node,\n        address wallet,\n        string ipfsHash,\n        string email,\n        string socialMedia\n    );\n    \n    /**\n     * @notice Sets the records for a domain.\n     * @param node The unique identifier for the domain.\n     * @param wallet The wallet address to associate with the domain.\n     * @param ipfsHash The IPFS hash for content related to the domain.\n     * @param email The email address associated with the domain.\n     * @param socialMedia The social media link related to the domain.\n     *\n     * Note: In a full implementation, access control should be enforced so that only the domain owner can update records.\n     */\n    function setRecordsDetails(\n        bytes32 node,\n        address wallet,\n        string memory ipfsHash,\n        string memory email,\n        string memory socialMedia\n    ) public {\n        // Access control should be added here (e.g., check with ENSRegistry for ownership)\n        records[node] = Records(wallet, ipfsHash, email, socialMedia);\n        emit RecordsUpdated(node, wallet, ipfsHash, email, socialMedia);\n    }\n    \n    /**\n     * @notice Retrieves all records associated with a domain.\n     * @param node The unique identifier for the domain.\n     * @return wallet The wallet address, ipfsHash The IPFS hash,\n     *         email The email address, socialMedia The social media link.\n     */\n    function getRecordDetails(bytes32 node)\n        public\n        view\n        returns (\n            address wallet,\n            string memory ipfsHash,\n            string memory email,\n            string memory socialMedia\n        )\n    {\n        Records memory rec = records[node];\n        return (rec.wallet, rec.ipfsHash, rec.email, rec.socialMedia);\n    }\n}\n"
  },
  {
    "path": "15-dns-protocol/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.24\",\n\n  networks: {\n    localhost: {\n      url: \"http://127.0.0.1:8545/\",\n      // accounts: Thanks hardhat!\n      chainId: 31337,\n      allowUnlimitedContractSize: true,\n    },\n    core: {\n      url: \"https://rpc.test2.btcs.network\",\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    },\n  },\n};\n"
  },
  {
    "path": "15-dns-protocol/ignition/modules/Lock.js",
    "content": "// This setup uses Hardhat Ignition to manage smart contract deployments.\n// Learn more about it at https://hardhat.org/ignition\n\nconst { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "15-dns-protocol/package.json",
    "content": "{\n  \"name\": \"reuse\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-toolbox\": \"5.0.0\",\n    \"hardhat\": \"2.22.15\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"16.5.0\"\n  }\n}\n"
  },
  {
    "path": "15-dns-protocol/scripts/deploy.js",
    "content": "const hre = require(\"hardhat\");\n\nasync function main() {\n\n    const fee = ethers.parseUnits(\"0.01\", 18);\n\n    \n  const ENSRegistry = await hre.ethers.getContractFactory(\"ENSRegistry\");\n  const ensContract  = await ENSRegistry.deploy();\n\n  console.log(\"Storage contract deployed to:\", ensContract.target);\n\n\n\n  const RegistrarContract = await hre.ethers.getContractFactory(\"Registrar\");\n  const registrarContract  = await RegistrarContract.deploy(ensContract.target, fee);\n\n  console.log(\"Storage contract deployed to:\", registrarContract.target);\n\n\n//   const bytes322 = ethers.encodeBytes32String(\"David.core\");\n//   const bytes3 = ethers.encodeBytes32String(\"alice.core\");\n//   const decode = ethers.decodeBytes32String(bytes322);\n\n//   console.log(bytes3)\n//   console.log(decode)\n\n//   await registrarContract.register(bytes322);\n//   await registrarContract.register(bytes3);\n\n//   const specificRecord = await ensContract.getSpecificRecord(bytes322);\n//   console.log(specificRecord);\n\n//   const allRecords = await ensContract.getAllRecords();\n//   console.log(allRecords);\n\n\n\n\n\n\n}\n\n// We recommend this pattern to be able to use async/await everywhere\n// and properly handle errors.\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n\n\n\n// Telos: Support contract deployed to: 0x5Ac64F5DA22B25559C7D7522b4B2BB7e2012F382"
  },
  {
    "path": "15-dns-protocol/test/Lock.js",
    "content": "const {\n  time,\n  loadFixture,\n} = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\nconst { anyValue } = require(\"@nomicfoundation/hardhat-chai-matchers/withArgs\");\nconst { expect } = require(\"chai\");\n\ndescribe(\"Lock\", function () {\n  // We define a fixture to reuse the same setup in every test.\n  // We use loadFixture to run this setup once, snapshot that state,\n  // and reset Hardhat Network to that snapshot in every test.\n  async function deployOneYearLockFixture() {\n    const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;\n    const ONE_GWEI = 1_000_000_000;\n\n    const lockedAmount = ONE_GWEI;\n    const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS;\n\n    // Contracts are deployed using the first signer/account by default\n    const [owner, otherAccount] = await ethers.getSigners();\n\n    const Lock = await ethers.getContractFactory(\"Lock\");\n    const lock = await Lock.deploy(unlockTime, { value: lockedAmount });\n\n    return { lock, unlockTime, lockedAmount, owner, otherAccount };\n  }\n\n  describe(\"Deployment\", function () {\n    it(\"Should set the right unlockTime\", async function () {\n      const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.unlockTime()).to.equal(unlockTime);\n    });\n\n    it(\"Should set the right owner\", async function () {\n      const { lock, owner } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.owner()).to.equal(owner.address);\n    });\n\n    it(\"Should receive and store the funds to lock\", async function () {\n      const { lock, lockedAmount } = await loadFixture(\n        deployOneYearLockFixture\n      );\n\n      expect(await ethers.provider.getBalance(lock.target)).to.equal(\n        lockedAmount\n      );\n    });\n\n    it(\"Should fail if the unlockTime is not in the future\", async function () {\n      // We don't use the fixture here because we want a different deployment\n      const latestTime = await time.latest();\n      const Lock = await ethers.getContractFactory(\"Lock\");\n      await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith(\n        \"Unlock time should be in the future\"\n      );\n    });\n  });\n\n  describe(\"Withdrawals\", function () {\n    describe(\"Validations\", function () {\n      it(\"Should revert with the right error if called too soon\", async function () {\n        const { lock } = await loadFixture(deployOneYearLockFixture);\n\n        await expect(lock.withdraw()).to.be.revertedWith(\n          \"You can't withdraw yet\"\n        );\n      });\n\n      it(\"Should revert with the right error if called from another account\", async function () {\n        const { lock, unlockTime, otherAccount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // We can increase the time in Hardhat Network\n        await time.increaseTo(unlockTime);\n\n        // We use lock.connect() to send a transaction from another account\n        await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith(\n          \"You aren't the owner\"\n        );\n      });\n\n      it(\"Shouldn't fail if the unlockTime has arrived and the owner calls it\", async function () {\n        const { lock, unlockTime } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // Transactions are sent using the first signer by default\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).not.to.be.reverted;\n      });\n    });\n\n    describe(\"Events\", function () {\n      it(\"Should emit an event on withdrawals\", async function () {\n        const { lock, unlockTime, lockedAmount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw())\n          .to.emit(lock, \"Withdrawal\")\n          .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg\n      });\n    });\n\n    describe(\"Transfers\", function () {\n      it(\"Should transfer the funds to the owner\", async function () {\n        const { lock, unlockTime, lockedAmount, owner } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).to.changeEtherBalances(\n          [owner, lock],\n          [lockedAmount, -lockedAmount]\n        );\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "16-Pump.Core/.gitignore",
    "content": "node_modules\n.env\n\n# Hardhat files\n/cache\n/artifacts\n\n# TypeChain files\n/typechain\n/typechain-types\n\n# solidity-coverage files\n/coverage\n/coverage.json\n\n# Hardhat Ignition default folder for deployments against a local node\nignition/deployments/chain-31337\n"
  },
  {
    "path": "16-Pump.Core/Frontend/.eslintrc.json",
    "content": "{\n  \"extends\": [\"next/core-web-vitals\", \"next/typescript\"]\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/versions\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# env files (can opt-in for commiting if needed)\n.env*\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "16-Pump.Core/Frontend/README.md",
    "content": "This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/dashboard/page.tsx",
    "content": "\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { Navbar } from \"@/components/navbar\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { CreatorDashboard } from \"@/components/creator-dashboard\"\nimport { OwnerDashboard } from \"@/components/owner-dashboard\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\nimport { Loader2 } from \"lucide-react\"\n\nexport default function Dashboard() {\n  const { account, contract } = useWeb3()\n  const [isOwner, setIsOwner] = useState(false)\n  const [loading, setLoading] = useState(true)\n\n  useEffect(() => {\n    const checkOwner = async () => {\n      if (contract && account) {\n        try {\n          // In a real implementation, this would check if the current account is the contract owner\n          // const owner = await contract.owner()\n          // setIsOwner(owner.toLowerCase() === account.toLowerCase())\n\n          // For demo purposes, we'll randomly set isOwner\n          setIsOwner(Math.random() > 0.7)\n        } catch (error) {\n          console.error(\"Error checking owner:\", error)\n          setIsOwner(false)\n        } finally {\n          setLoading(false)\n        }\n      } else {\n        setLoading(false)\n      }\n    }\n\n    checkOwner()\n  }, [contract, account])\n\n  if (!account) {\n    return (\n      <div className=\"min-h-screen bg-zinc-50\">\n        <Navbar />\n        <div className=\"container mx-auto px-4 py-12\">\n          <div className=\"text-center\">\n            <h1 className=\"text-2xl font-bold mb-4\">Dashboard</h1>\n            <p className=\"text-zinc-500\">Please connect your wallet to view your dashboard.</p>\n          </div>\n        </div>\n      </div>\n    )\n  }\n\n  if (loading) {\n    return (\n      <div className=\"min-h-screen bg-zinc-50\">\n        <Navbar />\n        <div className=\"container mx-auto px-4 py-12 flex justify-center\">\n          <Loader2 className=\"h-8 w-8 animate-spin text-orange-500\" />\n        </div>\n      </div>\n    )\n  }\n\n  return (\n    <div className=\"min-h-screen bg-zinc-50\">\n      <Navbar />\n      <div className=\"container mx-auto px-4 py-8\">\n        <h1 className=\"text-2xl font-bold mb-6\">Dashboard</h1>\n\n        <Tabs defaultValue=\"creator\">\n          <TabsList className=\"mb-6\">\n            <TabsTrigger value=\"creator\">Creator Dashboard</TabsTrigger>\n            {isOwner && <TabsTrigger value=\"owner\">Owner Dashboard</TabsTrigger>}\n          </TabsList>\n\n          <TabsContent value=\"creator\">\n            <CreatorDashboard />\n          </TabsContent>\n\n          {isOwner && (\n            <TabsContent value=\"owner\">\n              <OwnerDashboard />\n            </TabsContent>\n          )}\n        </Tabs>\n      </div>\n    </div>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/globals.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n  :root {\n    --background: 0 0% 100%;\n    --foreground: 240 10% 3.9%;\n    --card: 0 0% 100%;\n    --card-foreground: 240 10% 3.9%;\n    --popover: 0 0% 100%;\n    --popover-foreground: 240 10% 3.9%;\n    --primary: 24 100% 50%;\n    --primary-foreground: 0 0% 98%;\n    --secondary: 240 4.8% 95.9%;\n    --secondary-foreground: 240 5.9% 10%;\n    --muted: 240 4.8% 95.9%;\n    --muted-foreground: 240 3.8% 46.1%;\n    --accent: 240 4.8% 95.9%;\n    --accent-foreground: 240 5.9% 10%;\n    --destructive: 0 84.2% 60.2%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 5.9% 90%;\n    --input: 240 5.9% 90%;\n    --ring: 24 100% 50%;\n    --radius: 0.5rem;\n  }\n\n  .dark {\n    --background: 240 10% 3.9%;\n    --foreground: 0 0% 98%;\n    --card: 240 10% 3.9%;\n    --card-foreground: 0 0% 98%;\n    --popover: 240 10% 3.9%;\n    --popover-foreground: 0 0% 98%;\n    --primary: 24 100% 50%;\n    --primary-foreground: 0 0% 98%;\n    --secondary: 240 3.7% 15.9%;\n    --secondary-foreground: 0 0% 98%;\n    --muted: 240 3.7% 15.9%;\n    --muted-foreground: 240 5% 64.9%;\n    --accent: 240 3.7% 15.9%;\n    --accent-foreground: 0 0% 98%;\n    --destructive: 0 62.8% 30.6%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 3.7% 15.9%;\n    --input: 240 3.7% 15.9%;\n    --ring: 24 100% 50%;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/layout.tsx",
    "content": "import type React from \"react\"\nimport type { Metadata } from \"next\"\nimport { Inter } from \"next/font/google\"\nimport \"./globals.css\"\nimport { Web3Provider } from \"@/providers/web3-provider\"\nimport { Toaster } from \"@/components/ui/toaster\"\n// import { ThemeProvider } from \"@/components/theme-provider\"\n\nconst inter = Inter({ subsets: [\"latin\"] })\n\nexport const metadata: Metadata = {\n  title: \"MemeFactory UI\",\n  description: \"Create and trade meme tokens on Ethereum\",\n}\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode\n}>) {\n  return (\n    <html lang=\"en\">\n      <body className={inter.className}>\n          <Web3Provider>\n            {children}\n            <Toaster />\n          </Web3Provider>\n      </body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/page.tsx",
    "content": "import { Navbar } from \"@/components/navbar\"\nimport { TokenListing } from \"@/components/token-listing\"\nimport { LaunchTokenButton } from \"@/components/launch-token-button\"\n\nexport default function Home() {\n  return (\n    <main className=\"min-h-screen bg-zinc-50\">\n      <Navbar />\n      <div className=\"container mx-auto px-4 py-8\">\n        <div className=\"flex flex-col gap-6\">\n          <section className=\"flex flex-col md:flex-row justify-between items-center gap-4 bg-white p-6 rounded-xl shadow-sm border border-zinc-100\">\n            <div className=\"space-y-2\">\n              <h1 className=\"text-2xl md:text-3xl font-bold\">MemeFactory</h1>\n              <p className=\"text-zinc-500 max-w-md\">\n                Create and trade meme tokens on Ethereum. Launch your own token in minutes.\n              </p>\n            </div>\n            <LaunchTokenButton />\n          </section>\n\n          <TokenListing />\n        </div>\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/_layout.scss",
    "content": ".container {\n  width: 100%;\n  max-width: 1400px;\n  margin: 0 auto;\n  padding: 0 $spacing-4;\n  \n  @include md {\n    padding: 0 $spacing-6;\n  }\n}\n\n.main {\n  min-height: 100vh;\n  background-color: $color-zinc-50;\n}\n\n.home-content {\n  display: flex;\n  flex-direction: column;\n  gap: $spacing-6;\n  padding: $spacing-8 0;\n}\n\n.hero-section {\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  align-items: center;\n  gap: $spacing-4;\n  background-color: $color-white;\n  padding: $spacing-6;\n  border-radius: $radius-xl;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n  border: 1px solid $color-zinc-100;\n  \n  @include md {\n    flex-direction: row;\n  }\n}\n\n.hero-content {\n  display: flex;\n  flex-direction: column;\n  gap: $spacing-2;\n  max-width: 100%;\n  \n  @include md {\n    max-width: 60%;\n  }\n}\n\n.hero-title {\n  font-size: $font-size-2xl;\n  font-weight: $font-weight-bold;\n  margin-bottom: $spacing-2;\n  \n  @include md {\n    font-size: $font-size-3xl;\n  }\n}\n\n.hero-description {\n  color: $color-zinc-500;\n  max-width: 32rem;\n}\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/_mixins.scss",
    "content": "@mixin sm {\n  @media (min-width: $breakpoint-sm) {\n    @content;\n  }\n}\n\n@mixin md {\n  @media (min-width: $breakpoint-md) {\n    @content;\n  }\n}\n\n@mixin lg {\n  @media (min-width: $breakpoint-lg) {\n    @content;\n  }\n}\n\n@mixin xl {\n  @media (min-width: $breakpoint-xl) {\n    @content;\n  }\n}\n\n@mixin xxl {\n  @media (min-width: $breakpoint-2xl) {\n    @content;\n  }\n}\n\n// Flexbox helpers\n@mixin flex($direction: row, $justify: flex-start, $align: stretch, $wrap: nowrap) {\n  display: flex;\n  flex-direction: $direction;\n  justify-content: $justify;\n  align-items: $align;\n  flex-wrap: $wrap;\n}\n\n// Grid helpers\n@mixin grid($columns: 1, $gap: $spacing-4) {\n  display: grid;\n  grid-template-columns: repeat($columns, 1fr);\n  gap: $gap;\n}\n\n// Typography\n@mixin text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n// Buttons\n@mixin button-base {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  font-weight: $font-weight-medium;\n  border-radius: $radius-md;\n  transition: $transition-base;\n  cursor: pointer;\n  \n  &:disabled {\n    opacity: 0.5;\n    cursor: not-allowed;\n  }\n}\n\n// Focus styles\n@mixin focus-ring {\n  outline: none;\n  box-shadow: 0 0 0 2px rgba($color-primary, 0.5);\n}\n\n// Card styles\n@mixin card {\n  background-color: $color-background;\n  border-radius: $radius-lg;\n  border: 1px solid $color-border;\n  overflow: hidden;\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/_reset.scss",
    "content": "*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n/* Remove default margin */\nbody,\nh1,\nh2,\nh3,\nh4,\np,\nfigure,\nblockquote,\ndl,\ndd {\n  margin: 0;\n}\n\n/* Remove list styles on ul, ol elements */\nul,\nol {\n  list-style: none;\n  padding: 0;\n  margin: 0;\n}\n\n/* Set core root defaults */\nhtml:focus-within {\n  scroll-behavior: smooth;\n}\n\n/* Set core body defaults */\nbody {\n  min-height: 100vh;\n  text-rendering: optimizeSpeed;\n  line-height: 1.5;\n  font-family: $font-family-sans;\n}\n\n/* A elements that don't have a class get default styles */\na:not([class]) {\n  text-decoration-skip-ink: auto;\n}\n\n/* Make images easier to work with */\nimg,\npicture {\n  max-width: 100%;\n  display: block;\n}\n\n/* Inherit fonts for inputs and buttons */\ninput,\nbutton,\ntextarea,\nselect {\n  font: inherit;\n}\n\n/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */\n@media (prefers-reduced-motion: reduce) {\n  html:focus-within {\n   scroll-behavior: auto;\n  }\n  \n  *,\n  *::before,\n  *::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/_typography.scss",
    "content": "body {\n  font-family: $font-family-sans;\n  font-size: $font-size-base;\n  line-height: 1.5;\n  color: $color-foreground;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  font-weight: $font-weight-bold;\n  line-height: 1.2;\n  margin-bottom: $spacing-4;\n}\n\nh1 {\n  font-size: $font-size-3xl;\n  \n  @include md {\n    font-size: $font-size-4xl;\n  }\n}\n\nh2 {\n  font-size: $font-size-2xl;\n  \n  @include md {\n    font-size: $font-size-3xl;\n  }\n}\n\nh3 {\n  font-size: $font-size-xl;\n  \n  @include md {\n    font-size: $font-size-2xl;\n  }\n}\n\nh4 {\n  font-size: $font-size-lg;\n}\n\np {\n  margin-bottom: $spacing-4;\n}\n\na {\n  color: $color-primary;\n  text-decoration: none;\n  transition: $transition-base;\n  \n  &:hover {\n    color: $color-primary-hover;\n  }\n}\n\n.text-xs {\n  font-size: $font-size-xs;\n}\n\n.text-sm {\n  font-size: $font-size-sm;\n}\n\n.text-base {\n  font-size: $font-size-base;\n}\n\n.text-lg {\n  font-size: $font-size-lg;\n}\n\n.text-xl {\n  font-size: $font-size-xl;\n}\n\n.text-2xl {\n  font-size: $font-size-2xl;\n}\n\n.font-normal {\n  font-weight: $font-weight-normal;\n}\n\n.font-medium {\n  font-weight: $font-weight-medium;\n}\n\n.font-semibold {\n  font-weight: $font-weight-semibold;\n}\n\n.font-bold {\n  font-weight: $font-weight-bold;\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/_utilities.scss",
    "content": ".block { display: block; }\n.inline-block { display: inline-block; }\n.inline { display: inline; }\n.flex { display: flex; }\n.inline-flex { display: inline-flex; }\n.grid { display: grid; }\n.hidden { display: none; }\n\n// Flex utilities\n.flex-row { flex-direction: row; }\n.flex-col { flex-direction: column; }\n.flex-wrap { flex-wrap: wrap; }\n.flex-nowrap { flex-wrap: nowrap; }\n.items-start { align-items: flex-start; }\n.items-center { align-items: center; }\n.items-end { align-items: flex-end; }\n.justify-start { justify-content: flex-start; }\n.justify-center { justify-content: center; }\n.justify-end { justify-content: flex-end; }\n.justify-between { justify-content: space-between; }\n\n// Spacing\n.m-0 { margin: $spacing-0; }\n.m-1 { margin: $spacing-1; }\n.m-2 { margin: $spacing-2; }\n.m-4 { margin: $spacing-4; }\n.m-6 { margin: $spacing-6; }\n.m-8 { margin: $spacing-8; }\n\n.mx-auto { \n  margin-left: auto;\n  margin-right: auto;\n}\n\n.mt-1 { margin-top: $spacing-1; }\n.mt-2 { margin-top: $spacing-2; }\n.mt-4 { margin-top: $spacing-4; }\n.mt-6 { margin-top: $spacing-6; }\n.mt-8 { margin-top: $spacing-8; }\n\n.mb-1 { margin-bottom: $spacing-1; }\n.mb-2 { margin-bottom: $spacing-2; }\n.mb-4 { margin-bottom: $spacing-4; }\n.mb-6 { margin-bottom: $spacing-6; }\n.mb-8 { margin-bottom: $spacing-8; }\n\n.ml-auto { margin-left: auto; }\n.mr-auto { margin-right: auto; }\n\n.p-0 { padding: $spacing-0; }\n.p-1 { padding: $spacing-1; }\n.p-2 { padding: $spacing-2; }\n.p-4 { padding: $spacing-4; }\n.p-6 { padding: $spacing-6; }\n.p-8 { padding: $spacing-8; }\n\n.py-1 { \n  padding-top: $spacing-1;\n  padding-bottom: $spacing-1;\n}\n.py-2 { \n  padding-top: $spacing-2;\n  padding-bottom: $spacing-2;\n}\n.py-4 { \n  padding-top: $spacing-4;\n  padding-bottom: $spacing-4;\n}\n.py-6 { \n  padding-top: $spacing-6;\n  padding-bottom: $spacing-6;\n}\n.py-8 { \n  padding-top: $spacing-8;\n  padding-bottom: $spacing-8;\n}\n\n.px-1 { \n  padding-left: $spacing-1;\n  padding-right: $spacing-1;\n}\n.px-2 { \n  padding-left: $spacing-2;\n  padding-right: $spacing-2;\n}\n.px-4 { \n  padding-left: $spacing-4;\n  padding-right: $spacing-4;\n}\n.px-6 { \n  padding-left: $spacing-6;\n  padding-right: $spacing-6;\n}\n.px-8 { \n  padding-left: $spacing-8;\n  padding-right: $spacing-8;\n}\n\n// Text alignment\n.text-left { text-align: left; }\n.text-center { text-align: center; }\n.text-right { text-align: right; }\n\n// Text colors\n.text-primary { color: $color-primary; }\n.text-muted { color: $color-muted-foreground; }\n.text-white { color: $color-white; }\n.text-danger { color: $color-red-500; }\n.text-success { color: $color-green-500; }\n\n// Background colors\n.bg-white { background-color: $color-white; }\n.bg-muted { background-color: $color-muted; }\n.bg-primary { background-color: $color-primary; }\n.bg-danger { background-color: $color-red-500; }\n.bg-success { background-color: $color-green-500; }\n\n// Width and height\n.w-full { width: 100%; }\n.h-full { height: 100%; }\n.min-h-screen { min-height: 100vh; }\n\n// Borders\n.rounded-sm { border-radius: $radius-sm; }\n.rounded-md { border-radius: $radius-md; }\n.rounded-lg { border-radius: $radius-lg; }\n.rounded-xl { border-radius: $radius-xl; }\n.rounded-full { border-radius: $radius-full; }\n\n.border { border: 1px solid $color-border; }\n.border-t { border-top: 1px solid $color-border; }\n.border-r { border-right: 1px solid $color-border; }\n.border-b { border-bottom: 1px solid $color-border; }\n.border-l { border-left: 1px solid $color-border; }\n\n// Shadows\n.shadow-sm { box-shadow: $shadow-sm; }\n.shadow-md { box-shadow: $shadow-md; }\n.shadow-lg { box-shadow: $shadow-lg; }\n\n// Position\n.relative { position: relative; }\n.absolute { position: absolute; }\n.fixed { position: fixed; }\n.sticky { position: sticky; }\n\n.inset-0 {\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n}\n\n.z-10 { z-index: 10; }\n.z-20 { z-index: 20; }\n.z-30 { z-index: 30; }\n.z-40 { z-index: 40; }\n.z-50 { z-index: 50; }\n\n// Overflow\n.overflow-hidden { overflow: hidden; }\n.overflow-auto { overflow: auto; }\n.overflow-scroll { overflow: scroll; }\n.overflow-x-auto { overflow-x: auto; }\n.overflow-y-auto { overflow-y: auto; }\n\n// Cursor\n.cursor-pointer { cursor: pointer; }\n.cursor-not-allowed { cursor: not-allowed; }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/_variables.scss",
    "content": "$color-orange-50: #fff8eb;\n$color-orange-100: #ffebc8;\n$color-orange-200: #ffd685;\n$color-orange-300: #ffbe42;\n$color-orange-400: #ffa50f;\n$color-orange-500: #ff9500; // Primary brand color\n$color-orange-600: #e66a00;\n$color-orange-700: #c04e00;\n$color-orange-800: #9a3d06;\n$color-orange-900: #7e340b;\n\n$color-white: #ffffff;\n$color-black: #000000;\n\n$color-zinc-50: #fafafa;\n$color-zinc-100: #f4f4f5;\n$color-zinc-200: #e4e4e7;\n$color-zinc-300: #d4d4d8;\n$color-zinc-400: #a1a1aa;\n$color-zinc-500: #71717a;\n$color-zinc-600: #52525b;\n$color-zinc-700: #3f3f46;\n$color-zinc-800: #27272a;\n$color-zinc-900: #18181b;\n\n$color-green-500: #22c55e;\n$color-red-500: #ef4444;\n\n// Theme colors\n$color-primary: $color-orange-500;\n$color-primary-hover: $color-orange-600;\n$color-primary-foreground: $color-white;\n\n$color-background: $color-white;\n$color-foreground: $color-zinc-900;\n$color-muted: $color-zinc-50;\n$color-muted-foreground: $color-zinc-500;\n\n$color-border: $color-zinc-200;\n$color-input: $color-zinc-200;\n\n// Typography\n$font-family-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n$font-size-xs: 0.75rem;   // 12px\n$font-size-sm: 0.875rem;  // 14px\n$font-size-base: 1rem;    // 16px\n$font-size-lg: 1.125rem;  // 18px\n$font-size-xl: 1.25rem;   // 20px\n$font-size-2xl: 1.5rem;   // 24px\n$font-size-3xl: 1.875rem; // 30px\n$font-size-4xl: 2.25rem;  // 36px\n\n$font-weight-normal: 400;\n$font-weight-medium: 500;\n$font-weight-semibold: 600;\n$font-weight-bold: 700;\n\n// Spacing\n$spacing-0: 0;\n$spacing-1: 0.25rem;  // 4px\n$spacing-2: 0.5rem;   // 8px\n$spacing-3: 0.75rem;  // 12px\n$spacing-4: 1rem;     // 16px\n$spacing-5: 1.25rem;  // 20px\n$spacing-6: 1.5rem;   // 24px\n$spacing-8: 2rem;     // 32px\n$spacing-10: 2.5rem;  // 40px\n$spacing-12: 3rem;    // 48px\n$spacing-16: 4rem;    // 64px\n$spacing-20: 5rem;    // 80px\n$spacing-24: 6rem;    // 96px\n$spacing-32: 8rem;    // 128px\n\n// Breakpoints\n$breakpoint-sm: 640px;\n$breakpoint-md: 768px;\n$breakpoint-lg: 1024px;\n$breakpoint-xl: 1280px;\n$breakpoint-2xl: 1536px;\n\n// Border radius\n$radius-sm: 0.125rem;  // 2px\n$radius-md: 0.25rem;   // 4px\n$radius-lg: 0.5rem;    // 8px\n$radius-xl: 0.75rem;   // 12px\n$radius-2xl: 1rem;     // 16px\n$radius-full: 9999px;\n\n// Shadows\n$shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n$shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n$shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n\n// Z-index\n$z-index-dropdown: 1000;\n$z-index-sticky: 1020;\n$z-index-fixed: 1030;\n$z-index-modal-backdrop: 1040;\n$z-index-modal: 1050;\n$z-index-popover: 1060;\n$z-index-tooltip: 1070;\n\n// Transitions\n$transition-base: all 0.2s ease-in-out;\n$transition-slow: all 0.3s ease-in-out;\n$transition-fast: all 0.1s ease-in-out;\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_badges.scss",
    "content": ".badge {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  font-size: $font-size-xs;\n  font-weight: $font-weight-medium;\n  height: 1.25rem;\n  padding: 0 $spacing-2;\n  border-radius: $radius-full;\n  color: $color-white;\n  \n  &--green {\n    background-color: $color-green-500;\n  }\n  \n  &--red {\n    background-color: $color-red-500;\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_buttons.scss",
    "content": ".button {\n  @include button-base;\n  height: 2.5rem;\n  padding: 0 $spacing-4;\n  font-size: $font-size-sm;\n  background-color: $color-background;\n  border: 1px solid $color-border;\n  color: $color-foreground;\n  \n  &:hover:not(:disabled) {\n    background-color: $color-zinc-50;\n  }\n  \n  &:focus {\n    @include focus-ring;\n  }\n  \n  &--connect,\n  &--connecting {\n    background-color: $color-primary;\n    border-color: $color-primary;\n    color: $color-white;\n    \n    &:hover:not(:disabled) {\n      background-color: $color-primary-hover;\n      border-color: $color-primary-hover;\n    }\n  }\n  \n  &--connected {\n    border-color: $color-primary;\n    color: $color-primary;\n    \n    &:hover:not(:disabled) {\n      background-color: rgba($color-primary, 0.05);\n    }\n  }\n  \n  &__icon {\n    margin-right: $spacing-2;\n    height: 1rem;\n    width: 1rem;\n    \n    &--spinner {\n      animation: spin 1s linear infinite;\n    }\n  }\n}\n\n.launch-button {\n  @include button-base;\n  height: 2.5rem;\n  padding: 0 $spacing-4;\n  font-size: $font-size-sm;\n  background-color: $color-primary;\n  border: 1px solid $color-primary;\n  color: $color-white;\n  \n  &:hover:not(:disabled) {\n    background-color: $color-primary-hover;\n    border-color: $color-primary-hover;\n  }\n  \n  &:focus {\n    @include focus-ring;\n  }\n  \n  &__icon {\n    margin-right: $spacing-2;\n    height: 1rem;\n    width: 1rem;\n  }\n}\n\n@keyframes spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_cards.scss",
    "content": ".token-card {\n  @include card;\n  display: flex;\n  flex-direction: column;\n  \n  &__header {\n    padding: 0;\n  }\n  \n  &__image-container {\n    position: relative;\n    height: 12rem;\n    width: 100%;\n    background-color: $color-zinc-100;\n  }\n  \n  &__image {\n    object-fit: cover;\n  }\n  \n  &__badge {\n    position: absolute;\n    top: $spacing-3;\n    right: $spacing-3;\n    \n    &--open {\n      background-color: $color-green-500;\n    }\n    \n    &--closed {\n      background-color: $color-red-500;\n    }\n  }\n  \n  &__content {\n    padding: $spacing-6;\n  }\n  \n  &__title-row {\n    @include flex(row, space-between, flex-start);\n    margin-bottom: $spacing-4;\n  }\n  \n  &__name {\n    font-weight: $font-weight-bold;\n    font-size: $font-size-lg;\n    margin-bottom: 0;\n  }\n  \n  &__symbol {\n    font-size: $font-size-sm;\n    color: $color-zinc-500;\n  }\n  \n  &__stats {\n    display: flex;\n    flex-direction: column;\n    gap: $spacing-4;\n  }\n  \n  &__stat {\n    &-header {\n      @include flex(row, space-between);\n      font-size: $font-size-sm;\n      margin-bottom: $spacing-1;\n    }\n    \n    &-value {\n      font-weight: $font-weight-medium;\n    }\n  }\n  \n  &__progress {\n    height: 0.5rem;\n  }\n  \n  &__footer {\n    padding: $spacing-6;\n    padding-top: 0;\n  }\n  \n  &__button {\n    @include button-base;\n    width: 100%;\n    height: 2.5rem;\n    background-color: $color-primary;\n    border: 1px solid $color-primary;\n    color: $color-white;\n    \n    &:hover:not(:disabled) {\n      background-color: $color-primary-hover;\n      border-color: $color-primary-hover;\n    }\n    \n    &--disabled {\n      opacity: 0.5;\n      cursor: not-allowed;\n    }\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_dialogs.scss",
    "content": ".dialog {\n  &__overlay {\n    position: fixed;\n    inset: 0;\n    z-index: $z-index-modal-backdrop;\n    background-color: rgba($color-black, 0.8);\n    animation: fadeIn 0.2s ease;\n  }\n  \n  &__content {\n    position: fixed;\n    left: 50%;\n    top: 50%;\n    z-index: $z-index-modal;\n    transform: translate(-50%, -50%);\n    width: 100%;\n    max-width: 32rem;\n    background-color: $color-background;\n    border-radius: $radius-lg;\n    border: 1px solid $color-border;\n    box-shadow: $shadow-lg;\n    padding: $spacing-6;\n    animation: zoomIn 0.2s ease;\n    \n    @include sm {\n      width: 90%;\n    }\n  }\n  \n  &__close {\n    position: absolute;\n    top: $spacing-4;\n    right: $spacing-4;\n    height: 1.5rem;\n    width: 1.5rem;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: $radius-sm;\n    opacity: 0.7;\n    transition: $transition-base;\n    \n    &:hover {\n      opacity: 1;\n      background-color: $color-zinc-100;\n    }\n  }\n  \n  &__header {\n    display: flex;\n    flex-direction: column;\n    gap: $spacing-1;\n    text-align: center;\n    margin-bottom: $spacing-4;\n    \n    @include sm {\n      text-align: left;\n    }\n  }\n  \n  &__title {\n    font-size: $font-size-lg;\n    font-weight: $font-weight-semibold;\n    line-height: 1.2;\n  }\n  \n  &__description {\n    font-size: $font-size-sm;\n    color: $color-muted-foreground;\n  }\n  \n  &__footer {\n    display: flex;\n    flex-direction: column-reverse;\n    gap: $spacing-2;\n    margin-top: $spacing-4;\n    \n    @include sm {\n      flex-direction: row;\n      justify-content: flex-end;\n    }\n  }\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n\n@keyframes zoomIn {\n  from {\n    opacity: 0;\n    transform: translate(-50%, -48%) scale(0.95);\n  }\n  to {\n    opacity: 1;\n    transform: translate(-50%, -50%) scale(1);\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_dropdown.scss",
    "content": ".dropdown {\n  position: relative;\n  \n  &__content {\n    position: absolute;\n    z-index: $z-index-dropdown;\n    min-width: 12rem;\n    background-color: $color-background;\n    border-radius: $radius-md;\n    border: 1px solid $color-border;\n    box-shadow: $shadow-md;\n    padding: $spacing-1;\n    margin-top: $spacing-1;\n    \n    &--right {\n      right: 0;\n    }\n  }\n  \n  &__label {\n    padding: $spacing-2 $spacing-3;\n    font-size: $font-size-sm;\n    font-weight: $font-weight-medium;\n  }\n  \n  &__separator {\n    height: 1px;\n    background-color: $color-border;\n    margin: $spacing-1 0;\n  }\n  \n  &__item {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: $spacing-2 $spacing-3;\n    font-size: $font-size-sm;\n    border-radius: $radius-sm;\n    cursor: pointer;\n    \n    &:hover {\n      background-color: $color-zinc-50;\n    }\n    \n    &--danger {\n      color: $color-red-500;\n      \n      &:hover {\n        background-color: rgba($color-red-500, 0.1);\n      }\n    }\n  }\n  \n  &__link {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: $spacing-2 $spacing-3;\n    font-size: $font-size-sm;\n    border-radius: $radius-sm;\n    cursor: pointer;\n    color: $color-foreground;\n    text-decoration: none;\n    \n    &:hover {\n      background-color: $color-zinc-50;\n    }\n  }\n  \n  &__icon {\n    margin-left: $spacing-2;\n    height: 1rem;\n    width: 1rem;\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_forms.scss",
    "content": ".form-label {\n  display: block;\n  font-size: $font-size-sm;\n  font-weight: $font-weight-medium;\n  margin-bottom: $spacing-2;\n}\n\n.form-input {\n  width: 100%;\n  height: 2.5rem;\n  padding: 0 $spacing-3;\n  font-size: $font-size-sm;\n  background-color: $color-background;\n  border: 1px solid $color-input;\n  border-radius: $radius-md;\n  transition: $transition-base;\n  \n  &:focus {\n    outline: none;\n    border-color: $color-primary;\n    box-shadow: 0 0 0 2px rgba($color-primary, 0.2);\n  }\n  \n  &::placeholder {\n    color: $color-zinc-400;\n  }\n  \n  &:disabled {\n    opacity: 0.5;\n    cursor: not-allowed;\n  }\n}\n\n.form-select {\n  width: 100%;\n  height: 2.5rem;\n  padding: 0 $spacing-3;\n  font-size: $font-size-sm;\n  background-color: $color-background;\n  border: 1px solid $color-input;\n  border-radius: $radius-md;\n  transition: $transition-base;\n  \n  &:focus {\n    outline: none;\n    border-color: $color-primary;\n    box-shadow: 0 0 0 2px rgba($color-primary, 0.2);\n  }\n  \n  &:disabled {\n    opacity: 0.5;\n    cursor: not-allowed;\n  }\n}\n\n.form-textarea {\n  width: 100%;\n  min-height: 6rem;\n  padding: $spacing-2 $spacing-3;\n  font-size: $font-size-sm;\n  background-color: $color-background;\n  border: 1px solid $color-input;\n  border-radius: $radius-md;\n  transition: $transition-base;\n  resize: vertical;\n  \n  &:focus {\n    outline: none;\n    border-color: $color-primary;\n    box-shadow: 0 0 0 2px rgba($color-primary, 0.2);\n  }\n  \n  &::placeholder {\n    color: $color-zinc-400;\n  }\n  \n  &:disabled {\n    opacity: 0.5;\n    cursor: not-allowed;\n  }\n}\n\n.form-checkbox {\n  display: flex;\n  align-items: center;\n  \n  input[type=\"checkbox\"] {\n    height: 1rem;\n    width: 1rem;\n    margin-right: $spacing-2;\n    accent-color: $color-primary;\n  }\n  \n  label {\n    font-size: $font-size-sm;\n  }\n}\n\n.form-group {\n  margin-bottom: $spacing-4;\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_launch-dialog.scss",
    "content": ".launch-dialog {\n  max-width: 500px;\n  max-height: 90vh;\n  overflow-y: auto;\n  \n  &__step {\n    display: grid;\n    gap: $spacing-6;\n    padding: $spacing-4 0;\n  }\n  \n  &__field {\n    display: grid;\n    gap: $spacing-3;\n  }\n  \n  &__hint {\n    font-size: $font-size-xs;\n    color: $color-zinc-500;\n  }\n  \n  &__fee-notice {\n    background-color: rgba($color-primary, 0.05);\n    padding: $spacing-4;\n    border-radius: $radius-lg;\n    border: 1px solid rgba($color-primary, 0.2);\n    \n    &-title {\n      font-size: $font-size-sm;\n      font-weight: $font-weight-medium;\n      color: darken($color-primary, 20%);\n    }\n    \n    &-description {\n      font-size: $font-size-xs;\n      color: darken($color-primary, 10%);\n      margin-top: $spacing-1;\n    }\n  }\n  \n  &__pfp-selector {\n    text-align: center;\n  }\n  \n  &__section-title {\n    font-weight: $font-weight-medium;\n    margin-bottom: $spacing-2;\n  }\n  \n  &__section-description {\n    font-size: $font-size-sm;\n    color: $color-zinc-500;\n    margin-bottom: $spacing-4;\n  }\n  \n  &__pfp-preview {\n    position: relative;\n    width: 12rem;\n    height: 12rem;\n    margin: 0 auto;\n    background-color: $color-zinc-100;\n    border-radius: $radius-lg;\n    overflow: hidden;\n    \n    @include sm {\n      width: 10rem;\n      height: 10rem;\n    }\n    \n    @include md {\n      width: 12rem;\n      height: 12rem;\n    }\n  }\n  \n  &__pfp-image {\n    object-fit: cover;\n  }\n  \n  &__pfp-nav {\n    position: absolute;\n    top: 50%;\n    transform: translateY(-50%);\n    background-color: rgba($color-white, 0.8);\n    border: none;\n    width: 2rem;\n    height: 2rem;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: $radius-full;\n    cursor: pointer;\n    \n    &:hover {\n      background-color: $color-white;\n    }\n    \n    &--prev {\n      left: $spacing-2;\n    }\n    \n    &--next {\n      right: $spacing-2;\n    }\n    \n    &-icon {\n      height: 1rem;\n      width: 1rem;\n    }\n  }\n  \n  &__pfp-counter {\n    margin-top: $spacing-4;\n    font-size: $font-size-sm;\n    \n    &-current {\n      font-weight: $font-weight-medium;\n    }\n  }\n  \n  &__summary {\n    background-color: $color-zinc-50;\n    padding: $spacing-4;\n    border-radius: $radius-lg;\n  }\n  \n  &__summary-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: $spacing-2;\n    font-size: $font-size-sm;\n  }\n  \n  &__summary-label {\n    color: $color-zinc-500;\n  }\n  \n  &__summary-value {\n    font-weight: $font-weight-medium;\n  }\n  \n  &__footer {\n    display: flex;\n    flex-direction: column;\n    gap: $spacing-2;\n    margin-top: $spacing-2;\n    \n    @include sm {\n      flex-direction: row;\n    }\n  }\n  \n  &__back-button {\n    @include button-base;\n    height: 2.5rem;\n    padding: 0 $spacing-4;\n    background-color: transparent;\n    border: 1px solid $color-border;\n    \n    @include sm {\n      margin-right: auto;\n    }\n  }\n  \n  &__next-button,\n  &__launch-button {\n    @include button-base;\n    height: 2.5rem;\n    padding: 0 $spacing-4;\n    background-color: $color-primary;\n    border: 1px solid $color-primary;\n    color: $color-white;\n    \n    &:hover:not(:disabled) {\n      background-color: $color-primary-hover;\n      border-color: $color-primary-hover;\n    }\n  }\n  \n  &__spinner {\n    margin-right: $spacing-2;\n    height: 1rem;\n    width: 1rem;\n    animation: spin 1s linear infinite;\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_navbar.scss",
    "content": ".navbar {\n  position: sticky;\n  top: 0;\n  z-index: $z-index-sticky;\n  width: 100%;\n  background-color: $color-white;\n  transition: $transition-base;\n  \n  &--scrolled {\n    background-color: rgba($color-white, 0.8);\n    backdrop-filter: blur(8px);\n    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n  }\n  \n  &__content {\n    @include flex(row, space-between, center);\n    height: 4rem;\n  }\n  \n  &__left {\n    @include flex(row, flex-start, center);\n    gap: $spacing-6;\n  }\n  \n  &__logo {\n    @include flex(row, center, center);\n    gap: $spacing-2;\n    \n    &-icon {\n      @include flex(row, center, center);\n      height: 2rem;\n      width: 2rem;\n      border-radius: $radius-full;\n      background-color: $color-primary;\n      color: $color-white;\n      font-weight: $font-weight-bold;\n    }\n    \n    &-text {\n      font-weight: $font-weight-bold;\n      font-size: $font-size-lg;\n      display: none;\n      \n      @include md {\n        display: inline-block;\n      }\n    }\n  }\n  \n  &__nav {\n    display: none;\n    \n    @include md {\n      @include flex(row, flex-start, center);\n      gap: $spacing-6;\n    }\n  }\n  \n  &__nav-link {\n    font-size: $font-size-sm;\n    font-weight: $font-weight-medium;\n    color: $color-foreground;\n    transition: $transition-base;\n    \n    &:hover {\n      color: $color-primary;\n    }\n  }\n  \n  &__right {\n    @include flex(row, flex-end, center);\n    gap: $spacing-4;\n  }\n  \n  &__balance {\n    @include flex(row, flex-start, center);\n    gap: $spacing-2;\n    font-size: $font-size-sm;\n    background-color: $color-zinc-100;\n    padding: $spacing-1 $spacing-3;\n    border-radius: $radius-full;\n    display: none;\n    \n    @include md {\n      display: flex;\n    }\n    \n    &-indicator {\n      width: 0.5rem;\n      height: 0.5rem;\n      border-radius: $radius-full;\n      background-color: $color-green-500;\n    }\n    \n    &-text {\n      font-weight: $font-weight-medium;\n    }\n  }\n  \n  &__menu-button {\n    @include md {\n      display: none;\n    }\n  }\n  \n  &__menu-icon {\n    height: 1.25rem;\n    width: 1.25rem;\n  }\n  \n  &__mobile-nav {\n    @include flex(column);\n    gap: $spacing-4;\n    margin-top: $spacing-8;\n  }\n  \n  &__mobile-link {\n    font-size: $font-size-lg;\n    font-weight: $font-weight-medium;\n    color: $color-foreground;\n    transition: $transition-base;\n    \n    &:hover {\n      color: $color-primary;\n    }\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_progress.scss",
    "content": ".progress {\n  width: 100%;\n  height: 0.5rem;\n  background-color: $color-zinc-200;\n  border-radius: $radius-full;\n  overflow: hidden;\n  \n  &__bar {\n    height: 100%;\n    background-color: $color-primary;\n    transition: width 0.3s ease;\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_toast.scss",
    "content": ".toast {\n  position: fixed;\n  bottom: $spacing-4;\n  right: $spacing-4;\n  z-index: $z-index-toast;\n  max-width: 350px;\n  background-color: $color-background;\n  border: 1px solid $color-border;\n  border-radius: $radius-md;\n  box-shadow: $shadow-lg;\n  padding: $spacing-4;\n  animation: slideIn 0.2s ease;\n  \n  &__header {\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    margin-bottom: $spacing-2;\n  }\n  \n  &__title {\n    font-weight: $font-weight-semibold;\n    font-size: $font-size-sm;\n  }\n  \n  &__close {\n    height: 1.25rem;\n    width: 1.25rem;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    opacity: 0.5;\n    transition: $transition-base;\n    \n    &:hover {\n      opacity: 1;\n    }\n  }\n  \n  &__description {\n    font-size: $font-size-sm;\n    color: $color-muted-foreground;\n  }\n  \n  &--success {\n    border-left: 4px solid $color-green-500;\n  }\n  \n  &--error {\n    border-left: 4px solid $color-red-500;\n  }\n}\n\n@keyframes slideIn {\n  from {\n    transform: translateX(100%);\n    opacity: 0;\n  }\n  to {\n    transform: translateX(0);\n    opacity: 1;\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/components/_token-listing.scss",
    "content": ".token-listing {\n  display: flex;\n  flex-direction: column;\n  gap: $spacing-6;\n  \n  &__header {\n    @include flex(row, space-between, center);\n  }\n  \n  &__title {\n    font-size: $font-size-2xl;\n    font-weight: $font-weight-bold;\n  }\n  \n  &__grid {\n    display: grid;\n    grid-template-columns: 1fr;\n    gap: $spacing-6;\n    \n    @include sm {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    \n    @include lg {\n      grid-template-columns: repeat(3, 1fr);\n    }\n  }\n  \n  &__loading {\n    @include flex(row, center, center);\n    padding: $spacing-12;\n  }\n  \n  &__spinner {\n    height: 2rem;\n    width: 2rem;\n    animation: spin 1s linear infinite;\n    color: $color-primary;\n  }\n  \n  &__empty {\n    text-align: center;\n    padding: $spacing-12;\n    \n    &-title {\n      font-size: $font-size-lg;\n      font-weight: $font-weight-medium;\n      margin-bottom: $spacing-2;\n    }\n    \n    &-text {\n      color: $color-zinc-500;\n    }\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/app/scss/main.scss",
    "content": "@import 'variables';\n@import 'mixins';\n@import 'reset';\n@import 'typography';\n@import 'layout';\n@import 'components/navbar';\n@import 'components/buttons';\n@import 'components/cards';\n@import 'components/forms';\n@import 'components/dialogs';\n@import 'components/token-listing';\n@import 'components/launch-dialog';\n@import 'components/progress';\n@import 'components/badges';\n@import 'components/dropdown';\n@import 'components/toast';\n@import 'utilities';\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/buy-token-dialog.tsx",
    "content": "\"use client\"\n\nimport type React from \"react\"\n\nimport { useState, useEffect } from \"react\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { Slider } from \"@/components/ui/slider\"\nimport { Input } from \"@/components/ui/input\"\nimport { Loader2 } from \"lucide-react\"\nimport { parseEther } from \"ethers\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { NetworkSwitcher } from \"@/components/network-switcher\"\nimport Image from \"next/image\"\nimport { ethers } from \"ethers\"\n\ntype TokenSale = {\n  id: number\n  address: string\n  name: string\n  symbol: string\n  creator: string\n  sold: bigint\n  target: bigint\n  raised: bigint\n  pfpUrl: string\n  isOpen: boolean\n}\n\ninterface BuyTokenDialogProps {\n  token: TokenSale\n  open: boolean\n  onOpenChange: (open: boolean) => void\n}\n\nexport function BuyTokenDialog({ token, open, onOpenChange }: BuyTokenDialogProps) {\n  const { contract, account, isCorrectNetwork } = useWeb3()\n  const { toast } = useToast()\n  const [amount, setAmount] = useState(1)\n  const [isLoading, setIsLoading] = useState(false)\n  const [pricePerToken, setPricePerToken] = useState<bigint>(0n);   // cost of ONE token\n  const [totalPrice, setTotalPrice] = useState<bigint>(0n); \n\n  const forMath = 10**18;\n\n\n  const calculatePrice = async (qty: number) => {\n    if (!contract) return 0n;\n  \n    // 1. cost of ONE token (wei)\n    const costPerToken: bigint = await contract.getCost(token.sold);   // returns bigint\n  \n    // 2. qty in token-wei (18 decimals)\n    const qtyWei = ethers.parseEther(qty.toString());            // bigint\n  \n    // 3. total cost (wei)  — multiply *before* dividing to avoid rounding\n    const totalCostWei = costPerToken * qtyWei / ethers.parseEther(\"1\");\n  \n    // update UI\n    setPricePerToken(costPerToken);\n    setTotalPrice(totalCostWei);\n  \n    return totalCostWei;     // bigint\n  };\n\n  useEffect(() => {\n    calculatePrice(amount);\n  }, [amount, contract]);\n\n  const handleAmountChange = (value: number[]) => {\n    setAmount(value[0])\n  }\n\n  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const value = Number.parseInt(e.target.value)\n    if (!isNaN(value) && value >= 1 && value <= 1000) {\n      setAmount(value)\n    }\n  }\n\n  const handleBuy = async () => {\n    if (!contract || !account || !isCorrectNetwork) return\n\n    try {\n      setIsLoading(true)\n\n      // Calculate the cost in wei\n      console.log(\"hii\")\n    // make sure we have the latest price\n      const costInWei = await calculatePrice(amount);   // bigint\n      console.log(costInWei)\n\n      const amountWei = ethers.parseEther(amount.toString()); // qty in 18 decimals\n\n      const tx = await contract.buyToken(\n        token.address,\n        amountWei,                      // _amount (uint256)\n        { value: costInWei }            // msg.value\n      );\n\n      await tx.wait();\n\n      toast({\n        title: \"Tokens purchased!\",\n        description: `You have successfully purchased ${amount} ${token.symbol} tokens.`,\n      })\n\n      const name = token.name;\n      const symbol = token.symbol\n\n      window.dispatchEvent(new CustomEvent(\"tokenLaunched\", {\n        detail: { name, symbol},\n      }));\n\n      onOpenChange(false)\n    } catch (error) {\n      console.log(\"Error buying tokens\")\n      toast({\n        title: \"Transaction failed\",\n        description: \"There was an error processing your transaction.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsLoading(false)\n    }\n  }\n\n  if (!isCorrectNetwork && account) {\n    return (\n      <Dialog open={open} onOpenChange={onOpenChange}>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Network Switch Required</DialogTitle>\n            <DialogDescription>Please switch to Core Testnet 2 to buy tokens.</DialogDescription>\n          </DialogHeader>\n          <div className=\"py-4 flex justify-center\">\n            <NetworkSwitcher />\n          </div>\n        </DialogContent>\n      </Dialog>\n    )\n  }\n\n  return (\n    <Dialog open={open} onOpenChange={onOpenChange}>\n      <DialogContent className=\"sm:max-w-[425px]\">\n        <DialogHeader>\n          <DialogTitle className=\"flex items-center gap-2\">\n            <div className=\"relative h-8 w-8 rounded-full overflow-hidden\">\n              <Image src={token.pfpUrl || \"/placeholder.svg\"} alt={token.name} fill className=\"object-cover\" />\n            </div>\n            Buy {token.name} Tokens\n          </DialogTitle>\n          <DialogDescription>Select the amount of ${token.symbol} tokens you want to purchase.</DialogDescription>\n        </DialogHeader>\n\n        <div className=\"grid gap-6 py-4\">\n          <div className=\"space-y-4\">\n            <div className=\"flex items-center justify-between\">\n              <label htmlFor=\"amount\" className=\"text-sm font-medium\">\n                Amount\n              </label>\n              <Input\n                id=\"amount\"\n                type=\"number\"\n                value={amount}\n                onChange={handleInputChange}\n                min={1}\n                max={1000}\n                className=\"w-20 h-8\"\n              />\n            </div>\n\n            <Slider\n              value={[amount]}\n              min={1}\n              max={1000}\n              step={1}\n              onValueChange={handleAmountChange}\n              className=\"[&>span]:bg-orange-500\"\n            />\n\n            <div className=\"flex justify-between text-sm\">\n              <span>1</span>\n              <span>500</span>\n              <span>1000</span>\n            </div>\n          </div>\n\n          <div className=\"bg-zinc-50 p-4 rounded-lg\">\n            <div className=\"flex justify-between mb-2\">\n              <span className=\"text-sm text-zinc-500\">Price per token</span>\n              <span className=\"font-medium\">{ethers.formatEther(pricePerToken)} tCORE2</span>\n            </div>\n            <div className=\"flex justify-between text-lg font-bold\">\n              <span>Total price</span>\n              <span className=\"text-orange-500\">{ethers.formatEther(totalPrice)} tCORE2</span>\n            </div>\n          </div>\n        </div>\n\n        <DialogFooter>\n          <Button\n            onClick={handleBuy}\n            className=\"w-full bg-orange-500 hover:bg-orange-600 text-white\"\n            disabled={isLoading || !account || !isCorrectNetwork}\n          >\n            {isLoading ? (\n              <>\n                <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                Processing...\n              </>\n            ) : (\n              `Buy ${amount} Tokens`\n            )}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/connect-wallet.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\nimport { Loader2, ExternalLink } from \"lucide-react\"\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { shortenAddress } from \"@/lib/utils\"\n\nexport function ConnectWallet() {\n  const { account, isConnecting, connect, disconnect, isCorrectNetwork } = useWeb3()\n\n  if (isConnecting) {\n    return (\n      <Button disabled className=\"bg-orange-500 hover:bg-orange-600 text-white\">\n        <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n        Connecting...\n      </Button>\n    )\n  }\n\n  if (account) {\n    return (\n      <DropdownMenu>\n        <DropdownMenuTrigger asChild>\n          <Button variant=\"outline\" className=\"border-orange-500 text-orange-500 hover:bg-orange-50\">\n            {shortenAddress(account)}\n          </Button>\n        </DropdownMenuTrigger>\n        <DropdownMenuContent align=\"end\">\n          <DropdownMenuLabel>My Account</DropdownMenuLabel>\n          <DropdownMenuSeparator />\n          <DropdownMenuItem asChild>\n            <a\n              href={\n                isCorrectNetwork\n                  ? `https://scan.test2.btcs.network/address/${account}`\n                  : `https://etherscan.io/address/${account}`\n              }\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              className=\"flex items-center cursor-pointer\"\n            >\n              View on {isCorrectNetwork ? \"Block Explorer\" : \"Etherscan\"}\n              <ExternalLink className=\"ml-2 h-4 w-4\" />\n            </a>\n          </DropdownMenuItem>\n          <DropdownMenuItem onClick={disconnect} className=\"text-red-500 cursor-pointer\">\n            Disconnect\n          </DropdownMenuItem>\n        </DropdownMenuContent>\n      </DropdownMenu>\n    )\n  }\n\n  return (\n    <Button onClick={connect} className=\"bg-orange-500 hover:bg-orange-600 text-white\">\n      Connect Wallet\n    </Button>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/creator-dashboard.tsx",
    "content": "\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Loader2 } from \"lucide-react\"\nimport { formatEther } from \"ethers\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport Image from \"next/image\"\n\ntype CreatorToken = {\n  id: number\n  address: string\n  name: string\n  symbol: string\n  sold: bigint\n  remaining: bigint\n  raised: bigint\n  pfpUrl: string\n}\n\nexport function CreatorDashboard() {\n  const { contract, account } = useWeb3()\n  const { toast } = useToast()\n  const [tokens, setTokens] = useState<CreatorToken[]>([])\n  const [loading, setLoading] = useState(true)\n  const [depositLoading, setDepositLoading] = useState<string | null>(null)\n\n  // IPFS PFP URLs - in a real app, these would be associated with each token\n  const pfpUrls = [\n    \"https://pump.mypinata.cloud/ipfs/QmZ4ea3wmwzwYwyWnhzs35hyxw4YryWB82TknGY3L5Wbxn\",\n    \"https://pump.mypinata.cloud/ipfs/QmfFEKp9zFzTmcDjHLXi5H6E5dnKn8NjeaT5ZN2yenFfUR\",\n    \"https://pump.mypinata.cloud/ipfs/QmdwMz7LDs42JoUxz1E9fyWjRwi9dLE1R8HEGDc4EdTvty\",\n    \"https://pump.mypinata.cloud/ipfs/QmQEhM1g9THLbi8WFdTSgVhUtXuBua26moQx29qUVFAomh\",\n    \"https://pump.mypinata.cloud/ipfs/QmP3QrGTLWU3ovUSh3hhEZAkkmz4wQUytGFB8T6FYCNbmB\",\n    \"https://pump.mypinata.cloud/ipfs/QmPPhPbe9t5AKkBgBP4uon7aBdwLzukdS5PJoujC4YjJBj\",\n  ]\n\n  useEffect(() => {\n    if (contract && account) {\n      fetchCreatorTokens()\n    }\n  }, [contract, account])\n\n  const fetchCreatorTokens = async () => {\n    try {\n      setLoading(true)\n\n      // In a real implementation, we would fetch tokens where the creator is the current account\n      // For demo purposes, we'll create mock data\n      const mockTokens: CreatorToken[] = Array(3)\n        .fill(null)\n        .map((_, i) => ({\n          id: i,\n          address: `0x${Array(40)\n            .fill(0)\n            .map(() => Math.floor(Math.random() * 16).toString(16))\n            .join(\"\")}`,\n          name: [\"CreatorCoin\", \"MyToken\", \"AwesomeCoin\"][i % 3],\n          symbol: [\"CRCN\", \"MYTK\", \"AWSM\"][i % 3],\n          sold: BigInt(Math.floor(Math.random() * 800)),\n          remaining: BigInt(Math.floor(Math.random() * 200)),\n          raised: BigInt(Math.floor(Math.random() * 5 * 1e18)),\n          pfpUrl: pfpUrls[i % pfpUrls.length],\n        }))\n\n      setTokens(mockTokens)\n    } catch (error) {\n      console.error(\"Error fetching creator tokens:\", error)\n    } finally {\n      setLoading(false)\n    }\n  }\n\n  const handleDeposit = async (token: CreatorToken) => {\n    if (!contract || !account) return\n\n    try {\n      setDepositLoading(token.address)\n\n      // In a real implementation, this would call the contract's deposit function\n      // await contract.deposit(token.address)\n\n      // Simulate a transaction delay\n      await new Promise((resolve) => setTimeout(resolve, 2000))\n\n      toast({\n        title: \"Deposit successful!\",\n        description: `You have successfully deposited to ${token.name}.`,\n      })\n\n      // Refresh the token list\n      await fetchCreatorTokens()\n    } catch (error) {\n      console.error(\"Error depositing:\", error)\n      toast({\n        title: \"Transaction failed\",\n        description: \"There was an error processing your deposit.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setDepositLoading(null)\n    }\n  }\n\n  if (loading) {\n    return (\n      <div className=\"flex justify-center items-center py-12\">\n        <Loader2 className=\"h-8 w-8 animate-spin text-orange-500\" />\n      </div>\n    )\n  }\n\n  if (tokens.length === 0) {\n    return (\n      <div className=\"text-center py-12 bg-white rounded-lg shadow-sm border border-zinc-100 p-8\">\n        <h3 className=\"text-lg font-medium mb-2\">No tokens created yet</h3>\n        <p className=\"text-zinc-500 mb-6\">\n          You haven't created any tokens yet. Launch your first token to get started!\n        </p>\n        <Button className=\"bg-orange-500 hover:bg-orange-600 text-white\" onClick={() => (window.location.href = \"/\")}>\n          Launch a Token\n        </Button>\n      </div>\n    )\n  }\n\n  return (\n    <div className=\"space-y-6\">\n      <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n        {tokens.map((token) => (\n          <Card key={token.id}>\n            <CardHeader className=\"pb-2\">\n              <div className=\"flex items-center gap-3\">\n                <div className=\"relative h-10 w-10 rounded-full overflow-hidden\">\n                  <Image src={token.pfpUrl || \"/placeholder.svg\"} alt={token.name} fill className=\"object-cover\" />\n                </div>\n                <div>\n                  <CardTitle>{token.name}</CardTitle>\n                  <CardDescription>${token.symbol}</CardDescription>\n                </div>\n              </div>\n            </CardHeader>\n            <CardContent className=\"pb-2\">\n              <div className=\"space-y-2\">\n                <div className=\"flex justify-between text-sm\">\n                  <span className=\"text-zinc-500\">Tokens Sold:</span>\n                  <span className=\"font-medium\">{token.sold.toString()}</span>\n                </div>\n                <div className=\"flex justify-between text-sm\">\n                  <span className=\"text-zinc-500\">Tokens Remaining:</span>\n                  <span className=\"font-medium\">{token.remaining.toString()}</span>\n                </div>\n                <div className=\"flex justify-between text-sm\">\n                  <span className=\"text-zinc-500\">ETH Raised:</span>\n                  <span className=\"font-medium\">{Number.parseFloat(formatEther(token.raised)).toFixed(4)} ETH</span>\n                </div>\n              </div>\n            </CardContent>\n            <CardFooter>\n              <Button\n                onClick={() => handleDeposit(token)}\n                className=\"w-full bg-orange-500 hover:bg-orange-600 text-white\"\n                disabled={depositLoading === token.address}\n              >\n                {depositLoading === token.address ? (\n                  <>\n                    <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                    Processing...\n                  </>\n                ) : (\n                  \"Deposit\"\n                )}\n              </Button>\n            </CardFooter>\n          </Card>\n        ))}\n      </div>\n\n      <Card>\n        <CardHeader>\n          <CardTitle>Transaction History</CardTitle>\n          <CardDescription>Recent transactions for your tokens</CardDescription>\n        </CardHeader>\n        <CardContent>\n          <div className=\"space-y-4\">\n            {Array(5)\n              .fill(null)\n              .map((_, i) => (\n                <div key={i} className=\"flex justify-between items-center p-3 bg-zinc-50 rounded-lg\">\n                  <div>\n                    <div className=\"font-medium\">\n                      {[\"Buy\", \"Deposit\", \"Create\"][i % 3]} {tokens[i % tokens.length]?.name}\n                    </div>\n                    <div className=\"text-xs text-zinc-500\">\n                      {new Date(Date.now() - i * 86400000).toLocaleDateString()}\n                    </div>\n                  </div>\n                  <div className=\"text-right\">\n                    <div className=\"font-medium text-orange-500\">\n                      {Number.parseFloat((Math.random() * 0.1).toFixed(4))} ETH\n                    </div>\n                    <div className=\"text-xs text-zinc-500\">{[\"Completed\", \"Pending\"][i % 2]}</div>\n                  </div>\n                </div>\n              ))}\n          </div>\n        </CardContent>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className,\n    )}\n    {...props}\n  />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)} {...props} />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n  <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogClose,\n  DialogTrigger,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/launch-token-button.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { PlusCircle } from \"lucide-react\"\nimport { LaunchTokenDialog } from \"@/components/launch-token-dialog\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\n\nexport function LaunchTokenButton() {\n  const { account, isCorrectNetwork } = useWeb3()\n  const [dialogOpen, setDialogOpen] = useState(false)\n\n  // If user is not connected, show disabled button\n  if (!account) {\n    return (\n      <Button disabled className=\"bg-orange-500/50 text-white cursor-not-allowed\">\n        <PlusCircle className=\"mr-2 h-4 w-4\" />\n        Connect Wallet to Launch\n      </Button>\n    )\n  }\n\n  // Always show the launch button, network check happens in the dialog\n  return (\n    <>\n      <Button onClick={() => setDialogOpen(true)} className=\"bg-orange-500 hover:bg-orange-600 text-white\">\n        <PlusCircle className=\"mr-2 h-4 w-4\" />\n        Launch Token\n      </Button>\n\n      <LaunchTokenDialog open={dialogOpen} onOpenChange={setDialogOpen} />\n    </>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/launch-token-dialog.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Loader2, ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { NetworkSwitcher } from \"@/components/network-switcher\"\nimport Image from \"next/image\"\nimport { ethers } from \"ethers\"\n\ninterface LaunchTokenDialogProps {\n  open: boolean\n  onOpenChange: (open: boolean) => void\n}\n\nexport function LaunchTokenDialog({ open, onOpenChange }: LaunchTokenDialogProps) {\n  const { contract, account, isCorrectNetwork } = useWeb3()\n  const { toast } = useToast()\n  const [name, setName] = useState(\"\")\n  const [symbol, setSymbol] = useState(\"\")\n  const [isLoading, setIsLoading] = useState(false)\n  const [currentStep, setCurrentStep] = useState(0)\n  const [selectedPfpIndex, setSelectedPfpIndex] = useState(0)\n\n  // IPFS PFP URLs\n  const pfpUrls = [\n    \"https://pump.mypinata.cloud/ipfs/QmZ4ea3wmwzwYwyWnhzs35hyxw4YryWB82TknGY3L5Wbxn\",\n    \"https://pump.mypinata.cloud/ipfs/QmfFEKp9zFzTmcDjHLXi5H6E5dnKn8NjeaT5ZN2yenFfUR\",\n    \"https://pump.mypinata.cloud/ipfs/QmdwMz7LDs42JoUxz1E9fyWjRwi9dLE1R8HEGDc4EdTvty\",\n    \"https://pump.mypinata.cloud/ipfs/QmQEhM1g9THLbi8WFdTSgVhUtXuBua26moQx29qUVFAomh\",\n    \"https://pump.mypinata.cloud/ipfs/QmP3QrGTLWU3ovUSh3hhEZAkkmz4wQUytGFB8T6FYCNbmB\",\n    \"https://pump.mypinata.cloud/ipfs/QmPPhPbe9t5AKkBgBP4uon7aBdwLzukdS5PJoujC4YjJBj\",\n  ]\n\n  // Mock factory fee - in a real implementation, this would be fetched from the contract\n  const factoryFee = ethers.parseEther(\"0.01\" )// tCORE2\n\n  // Reset state when dialog is opened or closed\n  const handleOpenChange = (newOpen: boolean) => {\n    if (!newOpen) {\n      // Reset state when dialog is closed\n      setCurrentStep(0)\n      setName(\"\")\n      setSymbol(\"\")\n      setSelectedPfpIndex(0)\n    }\n    onOpenChange(newOpen)\n  }\n\n  const handleNextStep = () => {\n    if (currentStep === 0) {\n      if (!name || !symbol) {\n        toast({\n          title: \"Missing information\",\n          description: \"Please provide both a token name and symbol.\",\n          variant: \"destructive\",\n        })\n        return\n      }\n\n      if (symbol.length > 5) {\n        toast({\n          title: \"Symbol too long\",\n          description: \"Token symbol should be 5 characters or less.\",\n          variant: \"destructive\",\n        })\n        return\n      }\n    }\n\n    setCurrentStep(currentStep + 1)\n  }\n\n  const handlePrevStep = () => {\n    setCurrentStep(currentStep - 1)\n  }\n\n  const handlePrevPfp = () => {\n    setSelectedPfpIndex((selectedPfpIndex - 1 + pfpUrls.length) % pfpUrls.length)\n  }\n\n  const handleNextPfp = () => {\n    setSelectedPfpIndex((selectedPfpIndex + 1) % pfpUrls.length)\n  }\n\n  const handleLaunch = async () => {\n    if (!contract || !account || !isCorrectNetwork) return\n\n    try {\n      setIsLoading(true)\n\n      // In a real implementation, this would call the contract's create function\n      const tx = await contract.create(name, symbol, { value: factoryFee })\n\n      await tx.wait();\n\n      // Simulate a transaction delay\n      // await new Promise((resolve) => setTimeout(resolve, 2000))\n\n      toast({\n        title: \"Token launched!\",\n        description: `Your token ${name} (${symbol}) has been successfully created.`,\n      })\n\n      // 🔔 dispatch a global event so others can know “a token was just created”\n      window.dispatchEvent(new CustomEvent(\"tokenLaunched\", {\n        detail: { name, symbol},\n      }));\n\n      onOpenChange(false)\n      setName(\"\")\n      setSymbol(\"\")\n      setCurrentStep(0)\n    } catch (error) {\n      console.log(\"Error launching token\")\n      toast({\n        title: \"Transaction failed\",\n        description: \"There was an error processing your transaction.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsLoading(false)\n    }\n  }\n\n  // If not on correct network, show network switcher\n  if (!isCorrectNetwork && account) {\n    return (\n      <Dialog open={open} onOpenChange={handleOpenChange}>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Network Switch Required</DialogTitle>\n            <DialogDescription>Please switch to Core Testnet 2 to launch a token.</DialogDescription>\n          </DialogHeader>\n          <div className=\"py-4 flex justify-center\">\n            <NetworkSwitcher />\n          </div>\n        </DialogContent>\n      </Dialog>\n    )\n  }\n\n  return (\n    <Dialog open={open} onOpenChange={handleOpenChange}>\n      <DialogContent className=\"sm:max-w-[500px] max-h-[90vh] overflow-y-auto\">\n        <DialogHeader>\n          <DialogTitle>Launch New Token</DialogTitle>\n          <DialogDescription>Create your own meme token on Core Testnet 2 in just a few steps.</DialogDescription>\n        </DialogHeader>\n\n        {currentStep === 0 && (\n          <div className=\"grid gap-6 py-4\">\n            <div className=\"grid gap-3\">\n              <Label htmlFor=\"name\">Token Name</Label>\n              <Input id=\"name\" value={name} onChange={(e) => setName(e.target.value)} placeholder=\"e.g. Moon Coin\" />\n            </div>\n\n            <div className=\"grid gap-3\">\n              <Label htmlFor=\"symbol\">Token Symbol</Label>\n              <Input\n                id=\"symbol\"\n                value={symbol}\n                onChange={(e) => setSymbol(e.target.value.toUpperCase())}\n                placeholder=\"e.g. MOON\"\n                maxLength={5}\n              />\n              <p className=\"text-xs text-zinc-500\">Maximum 5 characters recommended for token symbols.</p>\n            </div>\n\n            <div className=\"bg-orange-50 p-4 rounded-lg border border-orange-200\">\n              <p className=\"text-sm font-medium text-orange-800\">Factory Fee: {factoryFee} tCORE2</p>\n              <p className=\"text-xs text-orange-600 mt-1\">\n                This fee is required to create a new token and is paid to the contract owner.\n              </p>\n            </div>\n          </div>\n        )}\n\n        {currentStep === 1 && (\n          <div className=\"grid gap-6 py-4\">\n            <div className=\"text-center\">\n              <h3 className=\"font-medium mb-2\">Select Token Image</h3>\n              <p className=\"text-sm text-zinc-500 mb-4\">Choose a profile picture for your token from our collection.</p>\n\n              <div className=\"relative mx-auto w-36 h-36 sm:w-40 sm:h-40 md:w-48 md:h-48 bg-zinc-100 rounded-lg overflow-hidden\">\n                <Image\n                  src={pfpUrls[selectedPfpIndex] || \"/placeholder.svg\"}\n                  alt=\"Token PFP\"\n                  fill\n                  className=\"object-cover\"\n                />\n\n                <Button\n                  variant=\"outline\"\n                  size=\"icon\"\n                  className=\"absolute left-2 top-1/2 -translate-y-1/2 bg-white/80 hover:bg-white\"\n                  onClick={handlePrevPfp}\n                >\n                  <ChevronLeft className=\"h-4 w-4\" />\n                </Button>\n\n                <Button\n                  variant=\"outline\"\n                  size=\"icon\"\n                  className=\"absolute right-2 top-1/2 -translate-y-1/2 bg-white/80 hover:bg-white\"\n                  onClick={handleNextPfp}\n                >\n                  <ChevronRight className=\"h-4 w-4\" />\n                </Button>\n              </div>\n\n              <div className=\"mt-4 text-sm\">\n                <span className=\"font-medium\">{selectedPfpIndex + 1}</span> of {pfpUrls.length}\n              </div>\n            </div>\n\n            <div className=\"bg-zinc-50 p-4 rounded-lg\">\n              <h3 className=\"font-medium mb-2\">Token Summary</h3>\n              <div className=\"grid grid-cols-2 gap-2 text-sm\">\n                <div className=\"text-zinc-500\">Name:</div>\n                <div className=\"font-medium\">{name}</div>\n                <div className=\"text-zinc-500\">Symbol:</div>\n                <div className=\"font-medium\">${symbol}</div>\n                <div className=\"text-zinc-500\">Fee:</div>\n                <div className=\"font-medium\">{factoryFee} tCORE2</div>\n              </div>\n            </div>\n          </div>\n        )}\n\n        <DialogFooter className=\"flex flex-col sm:flex-row gap-2 mt-2\">\n          {currentStep > 0 && (\n            <Button variant=\"outline\" onClick={handlePrevStep} className=\"sm:mr-auto\">\n              Back\n            </Button>\n          )}\n\n          {currentStep === 0 && (\n            <Button onClick={handleNextStep} className=\"bg-orange-500 hover:bg-orange-600 text-white\">\n              Next\n            </Button>\n          )}\n\n          {currentStep === 1 && (\n            <Button\n              onClick={handleLaunch}\n              className=\"bg-orange-500 hover:bg-orange-600 text-white\"\n              disabled={isLoading}\n            >\n              {isLoading ? (\n                <>\n                  <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                  Creating...\n                </>\n              ) : (\n                \"Launch Token\"\n              )}\n            </Button>\n          )}\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/navbar.tsx",
    "content": "\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { ConnectWallet } from \"@/components/connect-wallet\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\nimport { formatEther } from \"ethers\"\nimport Link from \"next/link\"\nimport { Menu } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Sheet, SheetContent, SheetTrigger } from \"@/components/ui/sheet\"\nimport { NetworkSwitcher } from \"@/components/network-switcher\"\n\nexport function Navbar() {\n  const { account, balance, isCorrectNetwork } = useWeb3()\n  const [isScrolled, setIsScrolled] = useState(false)\n\n  useEffect(() => {\n    const handleScroll = () => {\n      setIsScrolled(window.scrollY > 10)\n    }\n\n    window.addEventListener(\"scroll\", handleScroll)\n    return () => window.removeEventListener(\"scroll\", handleScroll)\n  }, [])\n\n  return (\n    <header\n      className={`sticky top-0 z-50 w-full transition-all duration-200 ${isScrolled ? \"bg-white/80 backdrop-blur-md shadow-sm\" : \"bg-white\"}`}\n    >\n      <div className=\"container mx-auto px-4\">\n        <div className=\"flex h-16 items-center justify-between\">\n          <div className=\"flex items-center gap-6\">\n            <Link href=\"/\" className=\"flex items-center gap-2\">\n              <span className=\"h-8 w-8 rounded-full bg-orange-500 flex items-center justify-center text-white font-bold\">\n                M\n              </span>\n              <span className=\"font-bold text-lg hidden md:inline-block\">MemeFactory</span>\n            </Link>\n\n            <nav className=\"hidden md:flex items-center gap-6\">\n              <Link href=\"/\" className=\"text-sm font-medium hover:text-orange-500 transition-colors\">\n                Home\n              </Link>\n              <Link href=\"/dashboard\" className=\"text-sm font-medium hover:text-orange-500 transition-colors\">\n                Dashboard\n              </Link>\n            </nav>\n          </div>\n\n          <div className=\"flex items-center gap-4\">\n            {!isCorrectNetwork && account && <NetworkSwitcher />}\n\n            {account && balance && isCorrectNetwork && (\n              <div className=\"hidden md:flex items-center gap-2 text-sm bg-zinc-100 px-3 py-1.5 rounded-full\">\n                <div className=\"w-2 h-2 rounded-full bg-green-500\"></div>\n                <span className=\"font-medium\">\n                  {balance ? Number.parseFloat(formatEther(balance)).toFixed(4) : \"0.0\"} tCORE2\n                </span>\n              </div>\n            )}\n\n            <ConnectWallet />\n\n            <Sheet>\n              <SheetTrigger asChild>\n                <Button variant=\"outline\" size=\"icon\" className=\"md:hidden\">\n                  <Menu className=\"h-5 w-5\" />\n                  <span className=\"sr-only\">Toggle menu</span>\n                </Button>\n              </SheetTrigger>\n              <SheetContent side=\"right\">\n                <nav className=\"flex flex-col gap-4 mt-8\">\n                  <Link href=\"/\" className=\"text-lg font-medium hover:text-orange-500 transition-colors\">\n                    Home\n                  </Link>\n                  <Link href=\"/dashboard\" className=\"text-lg font-medium hover:text-orange-500 transition-colors\">\n                    Dashboard\n                  </Link>\n                </nav>\n              </SheetContent>\n            </Sheet>\n          </div>\n        </div>\n      </div>\n    </header>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/network-switcher.tsx",
    "content": "\"use client\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\nimport { AlertTriangle } from \"lucide-react\"\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\"\nimport { useState } from \"react\"\nimport { useToast } from \"@/hooks/use-toast\"\n\nexport function NetworkSwitcher() {\n  const { switchToCorrectNetwork, addCoreTestnet2, isCorrectNetwork } = useWeb3()\n  const [showDialog, setShowDialog] = useState(false)\n  const [isLoading, setIsLoading] = useState(false)\n  const { toast } = useToast()\n\n  const handleSwitchNetwork = async () => {\n    try {\n      setIsLoading(true)\n      await switchToCorrectNetwork()\n\n      // If we get here, the switch was successful\n      toast({\n        title: \"Network Switched\",\n        description: \"Successfully connected to Core Testnet 2.\",\n      })\n\n      setShowDialog(false)\n    } catch (error: any) {\n      console.error(\"Error switching network:\", error)\n\n      // If the network is not added, show the dialog to add it\n      if (error.code === 4902) {\n        setShowDialog(true)\n      } else {\n        toast({\n          title: \"Network Switch Failed\",\n          description: \"There was an error switching networks. Please try again.\",\n          variant: \"destructive\",\n        })\n      }\n    } finally {\n      setIsLoading(false)\n    }\n  }\n\n  const handleAddNetwork = async () => {\n    try {\n      setIsLoading(true)\n      await addCoreTestnet2()\n\n      toast({\n        title: \"Network Added\",\n        description: \"Core Testnet 2 has been added to your wallet.\",\n      })\n\n      setShowDialog(false)\n    } catch (error) {\n      console.error(\"Error adding network:\", error)\n      toast({\n        title: \"Failed to Add Network\",\n        description: \"There was an error adding Core Testnet 2 to your wallet.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsLoading(false)\n    }\n  }\n\n  if (isCorrectNetwork) {\n    return null\n  }\n\n  return (\n    <>\n      <Button\n        onClick={handleSwitchNetwork}\n        variant=\"destructive\"\n        size=\"sm\"\n        className=\"flex items-center gap-1 bg-red-500 hover:bg-red-600 text-white\"\n        disabled={isLoading}\n      >\n        {isLoading ? (\n          \"Switching...\"\n        ) : (\n          <>\n            <AlertTriangle className=\"h-4 w-4\" />\n            <span className=\"hidden sm:inline\">Wrong Network</span>\n          </>\n        )}\n      </Button>\n\n      <Dialog open={showDialog} onOpenChange={setShowDialog}>\n        <DialogContent className=\"sm:max-w-[425px]\">\n          <DialogHeader>\n            <DialogTitle>Network Configuration Required</DialogTitle>\n            <DialogDescription>\n              Core Testnet 2 needs to be added to your wallet to use this application.\n            </DialogDescription>\n          </DialogHeader>\n\n          <div className=\"py-4\">\n            <div className=\"space-y-4\">\n              <div className=\"grid grid-cols-3 gap-2 text-sm\">\n                <div className=\"font-medium\">Network Name:</div>\n                <div className=\"col-span-2\">Core Testnet 2</div>\n\n                <div className=\"font-medium\">RPC URL:</div>\n                <div className=\"col-span-2 break-all\">https://rpc.test2.btcs.network</div>\n\n                <div className=\"font-medium\">Chain ID:</div>\n                <div className=\"col-span-2\">1114 (0x45a)</div>\n\n                <div className=\"font-medium\">Currency Symbol:</div>\n                <div className=\"col-span-2\">tCORE2</div>\n\n                <div className=\"font-medium\">Block Explorer:</div>\n                <div className=\"col-span-2 break-all\">https://scan.test2.btcs.network</div>\n              </div>\n            </div>\n          </div>\n\n          <DialogFooter>\n            <Button\n              onClick={handleAddNetwork}\n              className=\"w-full bg-orange-500 hover:bg-orange-600 text-white\"\n              disabled={isLoading}\n            >\n              {isLoading ? \"Adding Network...\" : \"Add Core Testnet 2 to Wallet\"}\n            </Button>\n          </DialogFooter>\n        </DialogContent>\n      </Dialog>\n    </>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/owner-dashboard.tsx",
    "content": "\"use client\"\n\nimport { useState } from \"react\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Loader2 } from \"lucide-react\"\nimport { useToast } from \"@/hooks/use-toast\"\n\nexport function OwnerDashboard() {\n  const { contract, account } = useWeb3()\n  const { toast } = useToast()\n  const [withdrawAmount, setWithdrawAmount] = useState(\"\")\n  const [isWithdrawing, setIsWithdrawing] = useState(false)\n\n  // Mock factory fee collected - in a real implementation, this would be fetched from the contract\n  const feeCollected = \"0.25\" // ETH\n\n  const handleWithdraw = async () => {\n    if (!contract || !account || !withdrawAmount) return\n\n    try {\n      setIsWithdrawing(true)\n\n      // Validate the amount\n      const amount = Number.parseFloat(withdrawAmount)\n      if (isNaN(amount) || amount <= 0 || amount > Number.parseFloat(feeCollected)) {\n        toast({\n          title: \"Invalid amount\",\n          description: \"Please enter a valid amount to withdraw.\",\n          variant: \"destructive\",\n        })\n        setIsWithdrawing(false)\n        return\n      }\n\n      // In a real implementation, this would call the contract's withdraw function\n      // await contract.withdraw(parseEther(withdrawAmount))\n\n      // Simulate a transaction delay\n      await new Promise((resolve) => setTimeout(resolve, 2000))\n\n      toast({\n        title: \"Withdrawal successful!\",\n        description: `You have successfully withdrawn ${withdrawAmount} ETH.`,\n      })\n\n      setWithdrawAmount(\"\")\n    } catch (error) {\n      console.error(\"Error withdrawing:\", error)\n      toast({\n        title: \"Transaction failed\",\n        description: \"There was an error processing your withdrawal.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsWithdrawing(false)\n    }\n  }\n\n  return (\n    <div className=\"space-y-6\">\n      <Card>\n        <CardHeader>\n          <CardTitle>Owner Dashboard</CardTitle>\n          <CardDescription>Manage your MemeFactory contract</CardDescription>\n        </CardHeader>\n        <CardContent className=\"space-y-6\">\n          <div className=\"bg-orange-50 p-4 rounded-lg border border-orange-200\">\n            <div className=\"flex justify-between items-center\">\n              <div>\n                <h3 className=\"font-medium text-orange-800\">Factory Fee Collected</h3>\n                <p className=\"text-sm text-orange-600 mt-1\">Total fees collected from token creation</p>\n              </div>\n              <div className=\"text-2xl font-bold text-orange-500\">{feeCollected} ETH</div>\n            </div>\n          </div>\n\n          <div className=\"grid gap-4\">\n            <Label htmlFor=\"withdraw-amount\">Withdraw Amount</Label>\n            <div className=\"flex gap-2\">\n              <Input\n                id=\"withdraw-amount\"\n                type=\"number\"\n                placeholder=\"0.0\"\n                value={withdrawAmount}\n                onChange={(e) => setWithdrawAmount(e.target.value)}\n                min=\"0\"\n                max={feeCollected}\n                step=\"0.01\"\n              />\n              <Button\n                onClick={handleWithdraw}\n                className=\"bg-orange-500 hover:bg-orange-600 text-white\"\n                disabled={isWithdrawing || !withdrawAmount}\n              >\n                {isWithdrawing ? (\n                  <>\n                    <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                    Processing...\n                  </>\n                ) : (\n                  \"Withdraw\"\n                )}\n              </Button>\n            </div>\n            <p className=\"text-xs text-zinc-500\">You can withdraw up to {feeCollected} ETH.</p>\n          </div>\n        </CardContent>\n      </Card>\n\n      <Card>\n        <CardHeader>\n          <CardTitle>Factory Settings</CardTitle>\n          <CardDescription>Configure your MemeFactory contract</CardDescription>\n        </CardHeader>\n        <CardContent className=\"space-y-4\">\n          <div className=\"grid gap-2\">\n            <Label htmlFor=\"factory-fee\">Factory Fee (ETH)</Label>\n            <Input id=\"factory-fee\" type=\"number\" defaultValue=\"0.01\" min=\"0\" step=\"0.001\" disabled />\n            <p className=\"text-xs text-zinc-500\">Fee required to create a new token.</p>\n          </div>\n\n          <div className=\"grid gap-2\">\n            <Label htmlFor=\"token-limit\">Token Limit</Label>\n            <Input id=\"token-limit\" type=\"number\" defaultValue=\"1000\" min=\"1\" disabled />\n            <p className=\"text-xs text-zinc-500\">Maximum number of tokens that can be sold per token.</p>\n          </div>\n        </CardContent>\n        <CardFooter>\n          <Button variant=\"outline\" className=\"w-full\" disabled>\n            Update Settings\n          </Button>\n        </CardFooter>\n      </Card>\n    </div>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/token-listing.tsx",
    "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { useWeb3 } from \"@/hooks/use-web3\"\nimport { Card, CardContent, CardFooter, CardHeader } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Progress } from \"@/components/ui/progress\"\nimport { Loader2, Check, Copy } from \"lucide-react\"\nimport { formatEther } from \"ethers\"\nimport { BuyTokenDialog } from \"@/components/buy-token-dialog\"\nimport { NetworkSwitcher } from \"@/components/network-switcher\"\nimport Image from \"next/image\"\nimport { ethers } from \"ethers\"\n\ntype TokenSale = {\n  id: number\n  address: string\n  name: string\n  symbol: string\n  creator: string\n  sold: bigint\n  target: bigint\n  raised: bigint\n  pfpUrl: string\n  isOpen: boolean\n}\n\nconst TOKEN_LIMIT = 1000n // This should match the contract's TOKEN_LIMIT\n\nexport function TokenListing() {\n  const { contract, account, isCorrectNetwork } = useWeb3()\n  const [tokens, setTokens] = useState<TokenSale[]>([])\n  const [loading, setLoading] = useState(true)\n  const [selectedToken, setSelectedToken] = useState<TokenSale | null>(null)\n  const [buyDialogOpen, setBuyDialogOpen] = useState(false)\n  const [copiedTokenId, setCopiedTokenId] = useState<number | null>(null)\n\n  const pfpUrls = [\n    \"https://pump.mypinata.cloud/ipfs/QmZ4ea3wmwzwYwyWnhzs35hyxw4YryWB82TknGY3L5Wbxn\",\n    \"https://pump.mypinata.cloud/ipfs/QmfFEKp9zFzTmcDjHLXi5H6E5dnKn8NjeaT5ZN2yenFfUR\",\n    \"https://pump.mypinata.cloud/ipfs/QmdwMz7LDs42JoUxz1E9fyWjRwi9dLE1R8HEGDc4EdTvty\",\n    \"https://pump.mypinata.cloud/ipfs/QmQEhM1g9THLbi8WFdTSgVhUtXuBua26moQx29qUVFAomh\",\n    \"https://pump.mypinata.cloud/ipfs/QmP3QrGTLWU3ovUSh3hhEZAkkmz4wQUytGFB8T6FYCNbmB\",\n    \"https://pump.mypinata.cloud/ipfs/QmPPhPbe9t5AKkBgBP4uon7aBdwLzukdS5PJoujC4YjJBj\",\n  ]\n\n  useEffect(() => {\n    if (contract && isCorrectNetwork) {\n      fetchTokens()\n    } else {\n      const timer = setTimeout(() => {\n        setLoading(false)\n      }, 1000)\n      return () => clearTimeout(timer)\n    }\n  }, [contract, isCorrectNetwork])\n\n  const fetchTokens = async () => {\n    try {\n      setLoading(true)\n      const tokenCount = await contract.totalTokens()\n      const fetchedTokens: TokenSale[] = []\n\n      for (let i = 0; i < Number(tokenCount); i++) {\n        try {\n          const tokenSale = await contract.getTokenSale(i)\n\n          const tokenData: TokenSale = {\n            id: i,\n            address: tokenSale.token,\n            name: tokenSale.name,\n            symbol: tokenSale.symbol,\n            creator: tokenSale.creator,\n            sold: BigInt(tokenSale.sold),\n            target: 3000000000000000000n, // 3 ether target\n            raised: BigInt(tokenSale.raised),\n            pfpUrl: pfpUrls[i % pfpUrls.length],\n            isOpen: tokenSale.isOpen,\n          }\n\n          fetchedTokens.push(tokenData)\n        } catch (error) {\n          console.error(`Error fetching token at index ${i}:`, error)\n          break\n        }\n      }\n\n      setTokens(fetchedTokens)\n    } catch (error) {\n      console.error(\"Error fetching tokens:\", error)\n    } finally {\n      setTimeout(() => {\n        setLoading(false)\n      }, 500)\n    }\n  }\n\n  useEffect(() => {\n    const onLaunched = () => {\n      fetchTokens();\n    };\n\n    window.addEventListener(\"tokenLaunched\", onLaunched);\n    return () => {\n      window.removeEventListener(\"tokenLaunched\", onLaunched);\n    };\n  }, [fetchTokens]);\n\n  const handleBuyClick = (token: TokenSale) => {\n    if (!isCorrectNetwork) return\n    setSelectedToken(token)\n    setBuyDialogOpen(true)\n  }\n\n  if (loading) {\n    return (\n      <div className=\"flex justify-center items-center py-12\">\n        <Loader2 className=\"h-8 w-8 animate-spin text-orange-500\" />\n      </div>\n    )\n  }\n\n  if (!isCorrectNetwork && account) {\n    return (\n      <div className=\"text-center py-12 bg-white rounded-lg shadow-sm border border-zinc-100 p-8\">\n        <h3 className=\"text-lg font-medium mb-4\">Network Switch Required</h3>\n        <p className=\"text-zinc-500 mb-6\">Please switch to Core Testnet 2 to view and interact with tokens.</p>\n        <NetworkSwitcher />\n      </div>\n    )\n  }\n\n  if (tokens.length === 0) {\n    return (\n      <div className=\"text-center py-12\">\n        <h3 className=\"text-lg font-medium\">No tokens available yet</h3>\n        <p className=\"text-zinc-500 mt-2\">Be the first to launch a token!</p>\n      </div>\n    )\n  }\n\n  return (\n    <section className=\"space-y-6\">\n      <div className=\"flex justify-between items-center\">\n        <h2 className=\"text-2xl font-bold\">Available Tokens</h2>\n      </div>\n\n      <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6\">\n        {tokens.map((token) => (\n          <Card key={token.id} className=\"overflow-hidden\">\n            <CardHeader className=\"p-0\">\n              <div className=\"relative h-48 w-full bg-zinc-100\">\n                <Image src={token.pfpUrl || \"/placeholder.svg\"} alt={token.name} fill unoptimized className=\"object-cover\" />\n                <Badge className={`absolute top-3 right-3 ${token.isOpen ? \"bg-green-500\" : \"bg-red-500\"}`}>\n                  {token.isOpen ? \"Open\" : \"Closed\"}\n                </Badge>\n              </div>\n            </CardHeader>\n            <CardContent className=\"p-6\">\n              <div className=\"flex justify-between items-start mb-4\">\n                <div>\n                  <h3 className=\"font-bold text-lg\">{token.name}</h3>\n                  <p className=\"text-sm text-zinc-500\">${token.symbol}</p>\n                </div>\n              </div>\n\n              <div className=\"space-y-4\">\n                <div>\n                  <div className=\"flex justify-between text-sm mb-1\">\n                    <span>Sold</span>\n                    <span className=\"font-medium\">\n                      {ethers.formatEther(token.sold.toString())} / {TOKEN_LIMIT.toString()}\n                    </span>\n                  </div>\n                  <Progress\n                    value={Number(ethers.formatEther(token.sold.toString())) / Number(TOKEN_LIMIT.toString()) * 100}\n                    className=\"h-2 bg-zinc-200 [&>div]:bg-orange-500\"\n                  />\n                </div>\n\n                <div>\n                  <div className=\"flex justify-between text-sm mb-1\">\n                    <span>Raised</span>\n                    <span className=\"font-medium\">\n                      {Number.parseFloat(formatEther(token.raised)).toFixed(4)} tCORE2\n                    </span>\n                  </div>\n                </div>\n\n                <div>\n                  <div className=\"flex justify-between items-center text-sm mt-3\">\n                    <span className=\"truncate text-zinc-500 max-w-[75%]\">{token.address}</span>\n                    <Button\n                      size=\"sm\"\n                      variant=\"ghost\"\n                      onClick={() => {\n                        navigator.clipboard.writeText(token.address)\n                        setCopiedTokenId(token.id)\n                        setTimeout(() => setCopiedTokenId(null), 2000)\n                      }}\n                      className=\"text-zinc-600 hover:text-black\"\n                    >\n                      {copiedTokenId === token.id ? <Check className=\"w-4 h-4\" /> : <Copy className=\"w-4 h-4\" />}\n                    </Button>\n                  </div>\n                </div>\n              </div>\n            </CardContent>\n            <CardFooter className=\"p-6 pt-0\">\n              <Button\n                onClick={() => handleBuyClick(token)}\n                className=\"w-full bg-orange-500 hover:bg-orange-600 text-white\"\n                disabled={!token.isOpen || !isCorrectNetwork || !account}\n              >\n                {!account\n                  ? \"Connect Wallet\"\n                  : !isCorrectNetwork\n                    ? \"Switch Network\"\n                    : !token.isOpen\n                      ? \"Sale Closed\"\n                      : \"Buy Tokens\"}\n              </Button>\n            </CardFooter>\n          </Card>\n        ))}\n      </div>\n\n      {selectedToken && (\n        <BuyTokenDialog token={selectedToken} open={buyDialogOpen} onOpenChange={setBuyDialogOpen} />\n      )}\n    </section>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/badge.tsx",
    "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n  \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n        secondary:\n          \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n        destructive:\n          \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n        outline: \"text-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nexport interface BadgeProps\n  extends React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n  return (\n    <div className={cn(badgeVariants({ variant }), className)} {...props} />\n  )\n}\n\nexport { Badge, badgeVariants }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/button.tsx",
    "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2\",\n        sm: \"h-8 rounded-md px-3 text-xs\",\n        lg: \"h-10 rounded-md px-8\",\n        icon: \"h-9 w-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\"\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/card.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-xl border bg-card text-card-foreground shadow\",\n      className\n    )}\n    {...props}\n  />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"font-semibold leading-none tracking-tight\", className)}\n    {...props}\n  />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/dialog.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-1.5 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\n      \"text-lg font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogTrigger,\n  DialogClose,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/dropdown-menu.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto\" />\n  </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n  DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuSubContent.displayName =\n  DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <DropdownMenuPrimitive.Portal>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]\",\n        className\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n  DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"px-2 py-1.5 text-sm font-semibold\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n      {...props}\n    />\n  )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/input.tsx",
    "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    )\n  }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/label.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n  \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n    VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn(labelVariants(), className)}\n    {...props}\n  />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/progress.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Progress = React.forwardRef<\n  React.ElementRef<typeof ProgressPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n  <ProgressPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\n      className\n    )}\n    {...props}\n  >\n    <ProgressPrimitive.Indicator\n      className=\"h-full w-full flex-1 bg-primary transition-all\"\n      style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n    />\n  </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/sheet.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n  React.ElementRef<typeof SheetPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <SheetPrimitive.Overlay\n    className={cn(\n      \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n    ref={ref}\n  />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n  \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out\",\n  {\n    variants: {\n      side: {\n        top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n        bottom:\n          \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n        left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n        right:\n          \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n      },\n    },\n    defaultVariants: {\n      side: \"right\",\n    },\n  }\n)\n\ninterface SheetContentProps\n  extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n    VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n  React.ElementRef<typeof SheetPrimitive.Content>,\n  SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n  <SheetPortal>\n    <SheetOverlay />\n    <SheetPrimitive.Content\n      ref={ref}\n      className={cn(sheetVariants({ side }), className)}\n      {...props}\n    >\n      <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </SheetPrimitive.Close>\n      {children}\n    </SheetPrimitive.Content>\n  </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-2 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n  React.ElementRef<typeof SheetPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <SheetPrimitive.Title\n    ref={ref}\n    className={cn(\"text-lg font-semibold text-foreground\", className)}\n    {...props}\n  />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n  React.ElementRef<typeof SheetPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <SheetPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n  Sheet,\n  SheetPortal,\n  SheetOverlay,\n  SheetTrigger,\n  SheetClose,\n  SheetContent,\n  SheetHeader,\n  SheetFooter,\n  SheetTitle,\n  SheetDescription,\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/slider.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Slider = React.forwardRef<\n  React.ElementRef<typeof SliderPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <SliderPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative flex w-full touch-none select-none items-center\",\n      className\n    )}\n    {...props}\n  >\n    <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n      <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n    </SliderPrimitive.Track>\n    <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n  </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/tabs.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cn(\n      \"inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground\",\n      className\n    )}\n    {...props}\n  />\n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow\",\n      className\n    )}\n    {...props}\n  />\n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n      className\n    )}\n    {...props}\n  />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/toast.tsx",
    "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Viewport>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Viewport\n    ref={ref}\n    className={cn(\n      \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n      className\n    )}\n    {...props}\n  />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n  \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n  {\n    variants: {\n      variant: {\n        default: \"border bg-background text-foreground\",\n        destructive:\n          \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nconst Toast = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Root>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n    VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n  return (\n    <ToastPrimitives.Root\n      ref={ref}\n      className={cn(toastVariants({ variant }), className)}\n      {...props}\n    />\n  )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Action>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Action\n    ref={ref}\n    className={cn(\n      \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n      className\n    )}\n    {...props}\n  />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Close>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Close\n    ref={ref}\n    className={cn(\n      \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n      className\n    )}\n    toast-close=\"\"\n    {...props}\n  >\n    <X className=\"h-4 w-4\" />\n  </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Title>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Title\n    ref={ref}\n    className={cn(\"text-sm font-semibold [&+div]:text-xs\", className)}\n    {...props}\n  />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n  React.ElementRef<typeof ToastPrimitives.Description>,\n  React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n  <ToastPrimitives.Description\n    ref={ref}\n    className={cn(\"text-sm opacity-90\", className)}\n    {...props}\n  />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>\n\nexport {\n  type ToastProps,\n  type ToastActionElement,\n  ToastProvider,\n  ToastViewport,\n  Toast,\n  ToastTitle,\n  ToastDescription,\n  ToastClose,\n  ToastAction,\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components/ui/toaster.tsx",
    "content": "\"use client\"\n\nimport { useToast } from \"@/hooks/use-toast\"\nimport {\n  Toast,\n  ToastClose,\n  ToastDescription,\n  ToastProvider,\n  ToastTitle,\n  ToastViewport,\n} from \"@/components/ui/toast\"\n\nexport function Toaster() {\n  const { toasts } = useToast()\n\n  return (\n    <ToastProvider>\n      {toasts.map(function ({ id, title, description, action, ...props }) {\n        return (\n          <Toast key={id} {...props}>\n            <div className=\"grid gap-1\">\n              {title && <ToastTitle>{title}</ToastTitle>}\n              {description && (\n                <ToastDescription>{description}</ToastDescription>\n              )}\n            </div>\n            {action}\n            <ToastClose />\n          </Toast>\n        )\n      })}\n      <ToastViewport />\n    </ToastProvider>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"new-york\",\n  \"rsc\": true,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"tailwind.config.ts\",\n    \"css\": \"app/globals.css\",\n    \"baseColor\": \"zinc\",\n    \"cssVariables\": true,\n    \"prefix\": \"\"\n  },\n  \"aliases\": {\n    \"components\": \"@/components\",\n    \"utils\": \"@/lib/utils\",\n    \"ui\": \"@/components/ui\",\n    \"lib\": \"@/lib\",\n    \"hooks\": \"@/hooks\"\n  },\n  \"iconLibrary\": \"lucide\"\n}"
  },
  {
    "path": "16-Pump.Core/Frontend/constants/constansts.tsx",
    "content": "const CONTRACT_ADDRESS = \"0x698bbc18d5aC177154fcA7Ba47Bf91D85c41df59\"\n\nconst CONTRACT_ABI = [\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_fee\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"constructor\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MemeFactory__AmountExceeded\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MemeFactory__InsufficientETH\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MemeFactory__InsufficientFee\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MemeFactory__NotOwner\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MemeFactory__SaleClosed\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MemeFactory__TokenAmountTooLow\",\n    \"type\": \"error\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"MemeFactory__TransferFailed\",\n    \"type\": \"error\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"token\",\n        \"type\": \"address\"\n      },\n      {\n        \"indexed\": false,\n        \"internalType\": \"uint256\",\n        \"name\": \"amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"BoughtToken\",\n    \"type\": \"event\"\n  },\n  {\n    \"anonymous\": false,\n    \"inputs\": [\n      {\n        \"indexed\": true,\n        \"internalType\": \"address\",\n        \"name\": \"token\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"Created\",\n    \"type\": \"event\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"TARGET\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"TOKEN_LIMIT\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_token\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"buyToken\",\n    \"outputs\": [],\n    \"stateMutability\": \"payable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"string\",\n        \"name\": \"_name\",\n        \"type\": \"string\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"_symbol\",\n        \"type\": \"string\"\n      }\n    ],\n    \"name\": \"create\",\n    \"outputs\": [],\n    \"stateMutability\": \"payable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"_token\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"deposit\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"fee\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_sold\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"getCost\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"pure\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_index\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"getTokenSale\",\n    \"outputs\": [\n      {\n        \"components\": [\n          {\n            \"internalType\": \"address\",\n            \"name\": \"token\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"string\",\n            \"name\": \"name\",\n            \"type\": \"string\"\n          },\n          {\n            \"internalType\": \"string\",\n            \"name\": \"symbol\",\n            \"type\": \"string\"\n          },\n          {\n            \"internalType\": \"address\",\n            \"name\": \"creator\",\n            \"type\": \"address\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"sold\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"uint256\",\n            \"name\": \"raised\",\n            \"type\": \"uint256\"\n          },\n          {\n            \"internalType\": \"bool\",\n            \"name\": \"isOpen\",\n            \"type\": \"bool\"\n          }\n        ],\n        \"internalType\": \"struct MemeFactory.TokenSale\",\n        \"name\": \"\",\n        \"type\": \"tuple\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"owner\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"name\": \"tokenToSale\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"token\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"name\",\n        \"type\": \"string\"\n      },\n      {\n        \"internalType\": \"string\",\n        \"name\": \"symbol\",\n        \"type\": \"string\"\n      },\n      {\n        \"internalType\": \"address\",\n        \"name\": \"creator\",\n        \"type\": \"address\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"sold\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"raised\",\n        \"type\": \"uint256\"\n      },\n      {\n        \"internalType\": \"bool\",\n        \"name\": \"isOpen\",\n        \"type\": \"bool\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"tokens\",\n    \"outputs\": [\n      {\n        \"internalType\": \"address\",\n        \"name\": \"\",\n        \"type\": \"address\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [],\n    \"name\": \"totalTokens\",\n    \"outputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"stateMutability\": \"view\",\n    \"type\": \"function\"\n  },\n  {\n    \"inputs\": [\n      {\n        \"internalType\": \"uint256\",\n        \"name\": \"_amount\",\n        \"type\": \"uint256\"\n      }\n    ],\n    \"name\": \"withdraw\",\n    \"outputs\": [],\n    \"stateMutability\": \"nonpayable\",\n    \"type\": \"function\"\n  }\n]\n\n  export {CONTRACT_ADDRESS, CONTRACT_ABI}"
  },
  {
    "path": "16-Pump.Core/Frontend/hooks/use-toast.ts",
    "content": "\"use client\"\n\n// Inspired by react-hot-toast library\nimport * as React from \"react\"\n\nimport type {\n  ToastActionElement,\n  ToastProps,\n} from \"@/components/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n  id: string\n  title?: React.ReactNode\n  description?: React.ReactNode\n  action?: ToastActionElement\n}\n\nconst actionTypes = {\n  ADD_TOAST: \"ADD_TOAST\",\n  UPDATE_TOAST: \"UPDATE_TOAST\",\n  DISMISS_TOAST: \"DISMISS_TOAST\",\n  REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n  count = (count + 1) % Number.MAX_SAFE_INTEGER\n  return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n  | {\n      type: ActionType[\"ADD_TOAST\"]\n      toast: ToasterToast\n    }\n  | {\n      type: ActionType[\"UPDATE_TOAST\"]\n      toast: Partial<ToasterToast>\n    }\n  | {\n      type: ActionType[\"DISMISS_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n  | {\n      type: ActionType[\"REMOVE_TOAST\"]\n      toastId?: ToasterToast[\"id\"]\n    }\n\ninterface State {\n  toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n  if (toastTimeouts.has(toastId)) {\n    return\n  }\n\n  const timeout = setTimeout(() => {\n    toastTimeouts.delete(toastId)\n    dispatch({\n      type: \"REMOVE_TOAST\",\n      toastId: toastId,\n    })\n  }, TOAST_REMOVE_DELAY)\n\n  toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n  switch (action.type) {\n    case \"ADD_TOAST\":\n      return {\n        ...state,\n        toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n      }\n\n    case \"UPDATE_TOAST\":\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === action.toast.id ? { ...t, ...action.toast } : t\n        ),\n      }\n\n    case \"DISMISS_TOAST\": {\n      const { toastId } = action\n\n      // ! Side effects ! - This could be extracted into a dismissToast() action,\n      // but I'll keep it here for simplicity\n      if (toastId) {\n        addToRemoveQueue(toastId)\n      } else {\n        state.toasts.forEach((toast) => {\n          addToRemoveQueue(toast.id)\n        })\n      }\n\n      return {\n        ...state,\n        toasts: state.toasts.map((t) =>\n          t.id === toastId || toastId === undefined\n            ? {\n                ...t,\n                open: false,\n              }\n            : t\n        ),\n      }\n    }\n    case \"REMOVE_TOAST\":\n      if (action.toastId === undefined) {\n        return {\n          ...state,\n          toasts: [],\n        }\n      }\n      return {\n        ...state,\n        toasts: state.toasts.filter((t) => t.id !== action.toastId),\n      }\n  }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n  memoryState = reducer(memoryState, action)\n  listeners.forEach((listener) => {\n    listener(memoryState)\n  })\n}\n\ntype Toast = Omit<ToasterToast, \"id\">\n\nfunction toast({ ...props }: Toast) {\n  const id = genId()\n\n  const update = (props: ToasterToast) =>\n    dispatch({\n      type: \"UPDATE_TOAST\",\n      toast: { ...props, id },\n    })\n  const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n  dispatch({\n    type: \"ADD_TOAST\",\n    toast: {\n      ...props,\n      id,\n      open: true,\n      onOpenChange: (open) => {\n        if (!open) dismiss()\n      },\n    },\n  })\n\n  return {\n    id: id,\n    dismiss,\n    update,\n  }\n}\n\nfunction useToast() {\n  const [state, setState] = React.useState<State>(memoryState)\n\n  React.useEffect(() => {\n    listeners.push(setState)\n    return () => {\n      const index = listeners.indexOf(setState)\n      if (index > -1) {\n        listeners.splice(index, 1)\n      }\n    }\n  }, [state])\n\n  return {\n    ...state,\n    toast,\n    dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n  }\n}\n\nexport { useToast, toast }\n"
  },
  {
    "path": "16-Pump.Core/Frontend/hooks/use-web3.tsx",
    "content": "\"use client\"\n\nimport { useContext } from \"react\"\nimport { Web3Context } from \"@/providers/web3-provider\"\n\nexport function useWeb3() {\n  const context = useContext(Web3Context)\n\n  if (context === undefined) {\n    throw new Error(\"useWeb3 must be used within a Web3Provider\")\n  }\n\n  return context\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/lib/utils.ts",
    "content": "import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n\nexport function shortenAddress(address: string, chars = 4): string {\n  if (!address) return \"\"\n  return `${address.substring(0, chars + 2)}...${address.substring(address.length - chars)}`\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/next.config.ts",
    "content": "import type { NextConfig } from \"next\";\n\nconst nextConfig: NextConfig = {\n  /* config options here */\n  // ✅ Recommended (Next.js 13+)\n  images: {\n    remotePatterns: [\n      {\n        protocol: 'https',\n        hostname: 'pump.mypinata.cloud',\n        port: '',\n        pathname: '/**',\n      },\n    ],\n  }\n\n};\n\nexport default nextConfig;\n"
  },
  {
    "path": "16-Pump.Core/Frontend/package.json",
    "content": "{\n  \"name\": \"reusable\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-dialog\": \"1.1.13\",\n    \"@radix-ui/react-dropdown-menu\": \"2.1.14\",\n    \"@radix-ui/react-label\": \"2.1.6\",\n    \"@radix-ui/react-progress\": \"1.1.6\",\n    \"@radix-ui/react-slider\": \"1.3.4\",\n    \"@radix-ui/react-slot\": \"1.2.2\",\n    \"@radix-ui/react-tabs\": \"1.1.11\",\n    \"@radix-ui/react-toast\": \"1.2.13\",\n    \"class-variance-authority\": \"0.7.0\",\n    \"clsx\": \"2.1.1\",\n    \"components\": \"0.1.0\",\n    \"ethers\": \"6.14.0\",\n    \"layout\": \"2.2.0\",\n    \"lucide-react\": \"0.454.0\",\n    \"mixins\": \"0.0.1\",\n    \"next\": \"15.0.2\",\n    \"react\": \"19.0.0-rc-02c0e824-20241028\",\n    \"react-dom\": \"19.0.0-rc-02c0e824-20241028\",\n    \"reset\": \"0.1.0\",\n    \"tailwind-merge\": \"2.5.4\",\n    \"tailwindcss-animate\": \"1.0.7\",\n    \"typography\": \"0.16.24\",\n    \"utilities\": \"1.0.6\",\n    \"variables\": \"1.0.1\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20\",\n    \"@types/react\": \"^18\",\n    \"@types/react-dom\": \"^18\",\n    \"eslint\": \"^8\",\n    \"eslint-config-next\": \"15.0.2\",\n    \"postcss\": \"^8\",\n    \"tailwindcss\": \"^3.4.17\",\n    \"typescript\": \"^5\"\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/postcss.config.mjs",
    "content": "/** @type {import('postcss-load-config').Config} */\nconst config = {\n  plugins: {\n    tailwindcss: {},\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "16-Pump.Core/Frontend/providers/web3-provider.tsx",
    "content": "\"use client\"\n\nimport { createContext, useEffect, useState, type ReactNode } from \"react\"\nimport { BrowserProvider, Contract, type JsonRpcSigner } from \"ethers\"\nimport { useToast } from \"@/hooks/use-toast\"\nimport { CONTRACT_ABI, CONTRACT_ADDRESS } from \"@/constants/constansts\"\n\n// // This would be your actual contract ABI\n// const CONTRACT_ABI = [\n//   // Add your contract ABI here\n//   // Example:\n//   // {\n//   //   \"inputs\": [\n//   //     {\n//   //       \"internalType\": \"string\",\n//   //       \"name\": \"name\",\n//   //       \"type\": \"string\"\n//   //     },\n//   //     {\n//   //       \"internalType\": \"string\",\n//   //       \"name\": \"symbol\",\n//   //       \"type\": \"string\"\n//   //     }\n//   //   ],\n//   //   \"name\": \"create\",\n//   //   \"outputs\": [],\n//   //   \"stateMutability\": \"payable\",\n//   //   \"type\": \"function\"\n//   // },\n//   // ...\n// ]\n\n// // This would be your actual contract address\n// const CONTRACT_ADDRESS = \"0x0000000000000000000000000000000000000000\"\n\n// Core Testnet 2 Chain ID\nconst CORE_TESTNET_2_CHAIN_ID = \"0x45a\" // 1114 in decimal\nconst CORE_TESTNET_2_DETAILS = {\n  chainId: CORE_TESTNET_2_CHAIN_ID,\n  chainName: \"Core Testnet 2\",\n  nativeCurrency: {\n    name: \"Core Testnet 2\",\n    symbol: \"tCORE2\",\n    decimals: 18,\n  },\n  rpcUrls: [\"https://rpc.test2.btcs.network\"],\n  blockExplorerUrls: [\"https://scan.test2.btcs.network\"],\n}\n\ninterface Web3ContextType {\n  account: string | null\n  balance: bigint | null\n  provider: BrowserProvider | null\n  signer: JsonRpcSigner | null\n  contract: Contract | any\n  isConnecting: boolean\n  isCorrectNetwork: boolean\n  connect: () => Promise<void>\n  disconnect: () => void\n  switchToCorrectNetwork: () => Promise<void>\n  addCoreTestnet2: () => Promise<void>\n}\n\nexport const Web3Context = createContext<Web3ContextType>({\n  account: null,\n  balance: null,\n  provider: null,\n  signer: null,\n  contract: null,\n  isConnecting: false,\n  isCorrectNetwork: false,\n  connect: async () => {},\n  disconnect: () => {},\n  switchToCorrectNetwork: async () => {},\n  addCoreTestnet2: async () => {},\n})\n\nexport function Web3Provider({ children }: { children: ReactNode }) {\n  const [account, setAccount] = useState<string | null>(null)\n  const [balance, setBalance] = useState<bigint | null>(null)\n  const [provider, setProvider] = useState<BrowserProvider | null>(null)\n  const [signer, setSigner] = useState<JsonRpcSigner | null>(null)\n  const [contract, setContract] = useState<Contract | null>(null)\n  const [isConnecting, setIsConnecting] = useState(false)\n  const [isCorrectNetwork, setIsCorrectNetwork] = useState(false)\n  const [chainId, setChainId] = useState<string | null>(null)\n  const { toast } = useToast()\n\n  // Check if MetaMask is installed\n  const isMetaMaskInstalled = () => {\n    return typeof window !== \"undefined\" && window.ethereum !== undefined\n  }\n\n  // Check if the current network is Core Testnet 2\n  const checkNetwork = async () => {\n    if (!provider) return false\n\n    try {\n      const network = await provider.getNetwork()\n      const currentChainId = \"0x\" + network.chainId.toString(16)\n      setChainId(currentChainId)\n\n      const isCorrect = currentChainId === CORE_TESTNET_2_CHAIN_ID\n      setIsCorrectNetwork(isCorrect)\n      return isCorrect\n    } catch (error) {\n      console.error(\"Error checking network:\", error)\n      setIsCorrectNetwork(false)\n      return false\n    }\n  }\n\n  // Switch to Core Testnet 2\n  const switchToCorrectNetwork = async () => {\n    if (!window.ethereum) throw new Error(\"No crypto wallet found\")\n\n    try {\n      await window.ethereum.request({\n        method: \"wallet_switchEthereumChain\",\n        params: [{ chainId: CORE_TESTNET_2_CHAIN_ID }],\n      })\n\n      // Check network after switching\n      const provider = new BrowserProvider(window.ethereum)\n      setProvider(provider)\n      await checkNetwork()\n\n      return true\n    } catch (error: any) {\n      // This error code indicates that the chain has not been added to MetaMask\n      if (error.code === 4902) {\n        return addCoreTestnet2()\n      }\n      throw error\n    }\n  }\n\n  // Add Core Testnet 2 to MetaMask\n  const addCoreTestnet2 = async () => {\n    if (!window.ethereum) throw new Error(\"No crypto wallet found\")\n\n    try {\n      await window.ethereum.request({\n        method: \"wallet_addEthereumChain\",\n        params: [CORE_TESTNET_2_DETAILS],\n      })\n\n      // Check network after adding\n      const provider = new BrowserProvider(window.ethereum)\n      setProvider(provider)\n      await checkNetwork()\n\n      return true\n    } catch (error) {\n      console.error(\"Error adding network:\", error)\n      throw error\n    }\n  }\n\n  // Initialize provider and listen for account changes\n  useEffect(() => {\n    if (isMetaMaskInstalled()) {\n      const ethereum = window.ethereum\n\n      // Create provider\n      const provider = new BrowserProvider(ethereum)\n      setProvider(provider)\n\n      // Check if already connected\n      const checkConnection = async () => {\n        try {\n          const accounts = await provider.listAccounts()\n          if (accounts.length > 0) {\n            const account = accounts[0].address\n            const signer = await provider.getSigner()\n            const balance = await provider.getBalance(account)\n\n            setAccount(account)\n            setBalance(balance)\n            setSigner(signer)\n\n            // Check if on correct network\n            await checkNetwork()\n\n            // Initialize contract\n            // Even if CONTRACT_ABI is empty, create a minimal contract to prevent loading issues\n            const contract = new Contract(CONTRACT_ADDRESS, CONTRACT_ABI.length ? CONTRACT_ABI : [], signer)\n            setContract(contract)\n          }\n        } catch (error) {\n          console.error(\"Error checking connection:\", error)\n        }\n      }\n\n      checkConnection()\n\n      // Listen for account changes\n      const handleAccountsChanged = (accounts: string[]) => {\n        if (accounts.length === 0) {\n          // User disconnected\n          disconnect()\n        } else {\n          // Account changed\n          const newAccount = accounts[0]\n          setAccount(newAccount)\n\n          // Update balance and signer\n          provider.getBalance(newAccount).then(setBalance)\n          provider.getSigner().then(setSigner)\n\n          // Check network again\n          checkNetwork()\n        }\n      }\n\n      // Listen for chain changes\n      const handleChainChanged = () => {\n        // Instead of reloading the page, update the chain ID and check if it's the correct network\n        checkNetwork().then((isCorrect) => {\n          if (isCorrect) {\n            toast({\n              title: \"Network Changed\",\n              description: \"Successfully connected to Core Testnet 2.\",\n            })\n          }\n        })\n      }\n\n      ethereum.on(\"accountsChanged\", handleAccountsChanged)\n      ethereum.on(\"chainChanged\", handleChainChanged)\n\n      return () => {\n        ethereum.removeListener(\"accountsChanged\", handleAccountsChanged)\n        ethereum.removeListener(\"chainChanged\", handleChainChanged)\n      }\n    }\n  }, [])\n\n  // Update contract when signer changes\n  useEffect(() => {\n    if (signer && CONTRACT_ABI && CONTRACT_ADDRESS) {\n      const contract = new Contract(CONTRACT_ADDRESS, CONTRACT_ABI, signer)\n      setContract(contract)\n    }\n  }, [signer])\n\n  // Connect wallet\n  const connect = async () => {\n    if (!isMetaMaskInstalled()) {\n      toast({\n        title: \"MetaMask not installed\",\n        description: \"Please install MetaMask to use this application.\",\n        variant: \"destructive\",\n      })\n      return\n    }\n\n    try {\n      setIsConnecting(true)\n\n      // Request accounts\n      const accounts = await window.ethereum.request({ method: \"eth_requestAccounts\" })\n      const account = accounts[0]\n\n      // Get provider and signer\n      const provider = new BrowserProvider(window.ethereum)\n      const signer = await provider.getSigner()\n      const balance = await provider.getBalance(account)\n\n      setAccount(account)\n      setProvider(provider)\n      setSigner(signer)\n      setBalance(balance)\n\n      // Check if on correct network\n      const isCorrect = await checkNetwork()\n\n      // Initialize contract\n      const contract = new Contract(CONTRACT_ADDRESS, CONTRACT_ABI.length ? CONTRACT_ABI : [], signer)\n      setContract(contract)\n\n      toast({\n        title: \"Wallet connected\",\n        description: \"Your wallet has been successfully connected.\",\n      })\n\n      // If not on correct network, show a toast but don't force switch\n      if (!isCorrect) {\n        toast({\n          title: \"Wrong Network\",\n          description: \"Please switch to Core Testnet 2 for full functionality.\",\n          variant: \"destructive\",\n        })\n      }\n    } catch (error) {\n      console.error(\"Error connecting wallet:\", error)\n      toast({\n        title: \"Connection failed\",\n        description: \"There was an error connecting your wallet.\",\n        variant: \"destructive\",\n      })\n    } finally {\n      setIsConnecting(false)\n    }\n  }\n\n  // Disconnect wallet\n  const disconnect = () => {\n    setAccount(null)\n    setBalance(null)\n    setSigner(null)\n    setContract(null)\n    setIsCorrectNetwork(false)\n\n    toast({\n      title: \"Wallet disconnected\",\n      description: \"Your wallet has been disconnected.\",\n    })\n  }\n\n  return (\n    <Web3Context.Provider\n      value={{\n        account,\n        balance,\n        provider,\n        signer,\n        contract,\n        isConnecting,\n        isCorrectNetwork,\n        connect,\n        disconnect,\n        switchToCorrectNetwork,\n        addCoreTestnet2,\n      }}\n    >\n      {children}\n    </Web3Context.Provider>\n  )\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/tailwind.config.ts",
    "content": "import type { Config } from \"tailwindcss\"\n\nconst config = {\n  darkMode: [\"class\"],\n  content: [\n    \"./pages/**/*.{ts,tsx}\",\n    \"./components/**/*.{ts,tsx}\",\n    \"./app/**/*.{ts,tsx}\",\n    \"./src/**/*.{ts,tsx}\",\n    \"*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  prefix: \"\",\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      colors: {\n        border: \"hsl(var(--border))\",\n        input: \"hsl(var(--input))\",\n        ring: \"hsl(var(--ring))\",\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n        primary: {\n          DEFAULT: \"hsl(var(--primary))\",\n          foreground: \"hsl(var(--primary-foreground))\",\n        },\n        secondary: {\n          DEFAULT: \"hsl(var(--secondary))\",\n          foreground: \"hsl(var(--secondary-foreground))\",\n        },\n        destructive: {\n          DEFAULT: \"hsl(var(--destructive))\",\n          foreground: \"hsl(var(--destructive-foreground))\",\n        },\n        muted: {\n          DEFAULT: \"hsl(var(--muted))\",\n          foreground: \"hsl(var(--muted-foreground))\",\n        },\n        accent: {\n          DEFAULT: \"hsl(var(--accent))\",\n          foreground: \"hsl(var(--accent-foreground))\",\n        },\n        popover: {\n          DEFAULT: \"hsl(var(--popover))\",\n          foreground: \"hsl(var(--popover-foreground))\",\n        },\n        card: {\n          DEFAULT: \"hsl(var(--card))\",\n          foreground: \"hsl(var(--card-foreground))\",\n        },\n        orange: {\n          \"50\": \"#fff8eb\",\n          \"100\": \"#ffebc8\",\n          \"200\": \"#ffd685\",\n          \"300\": \"#ffbe42\",\n          \"400\": \"#ffa50f\",\n          \"500\": \"#ff9500\",\n          \"600\": \"#e66a00\",\n          \"700\": \"#c04e00\",\n          \"800\": \"#9a3d06\",\n          \"900\": \"#7e340b\",\n        },\n      },\n      borderRadius: {\n        lg: \"var(--radius)\",\n        md: \"calc(var(--radius) - 2px)\",\n        sm: \"calc(var(--radius) - 4px)\",\n      },\n      keyframes: {\n        \"accordion-down\": {\n          from: { height: \"0\" },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: \"0\" },\n        },\n      },\n      animation: {\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config\n\nexport default config\n"
  },
  {
    "path": "16-Pump.Core/Frontend/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"lib\": [\"ES2020\", \"dom\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"plugins\": [\n      {\n        \"name\": \"next\"\n      }\n    ],\n    \"paths\": {\n      \"@/*\": [\"./*\"]\n    }\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \".next/types/**/*.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "16-Pump.Core/Frontend/types/global.d.ts",
    "content": "interface Window {\n  ethereum: any\n}\n"
  },
  {
    "path": "16-Pump.Core/README.md",
    "content": "# 🚀 MemeLaunch – Token Launchpad on Core Blockchain\n\nMemeLaunch is a dynamic, pump.fun-inspired DApp built on the Core Blockchain, enabling users to **easily launch tokens**, **view all launched tokens**, **buy any token**, and **track token balances** in their wallets. It is **modular**, **extensible**, and ready for builders who want to expand functionality like adding a **creator dashboard**, **liquidity tools**, and more.\n\n> 🧠 **GitHub Repository:** [https://github.com/coredao-org/dapp-tutorial](https://github.com/coredao-org/dapp-tutorial)\n\n---\n\n## ✨ Features\n\n- 🧱 **Token Factory:** Instantly deploy custom tokens with ease.\n- 🔍 **Token Explorer:** See a list of all launched tokens, including names, prices, and contract details.\n- 💰 **Buy Tokens:** Instantly buy any launched token using native Core currency.\n- 👛 **Wallet Integration:** View token balances directly in your wallet.\n- 🧪 **Test Mode Support:** Quickly test all features using test tokens on Core testnet.\n- 🧩 **Extensible Architecture:** Includes space to build out your **Creator Dashboard**, **liquidity manager**, and other tools.\n- 🌍 **Core Blockchain Ready:** Fully integrated with Core Blockchain for fast, low-cost transactions.\n\n---\n\n## 🔧 Getting Started\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/coredao-org/dapp-tutorial.git\ncd dapp-tutorial/16-Pump.Core\n```\n\n### 2. Setup Environment\n\nCreate a `.env` file in the root directory and add your private key:\n\n```env\nPRIVATE_KEY=your_private_key_here\n```\n\n> ⚠️ **Warning:** Never expose or commit your `.env` file. Keep your private key safe.\n\n### 3. Install Dependencies\n\nInstall smart contract dependencies:\n\n```bash\nnpm install\n```\n\nThen navigate to the frontend directory and install frontend dependencies:\n\n```bash\ncd ./Frontend\nnpm install\n```\n\n### 4. Run the DApp Locally\n\n```bash\nnpm run dev\n```\n\n> Open your browser at `http://localhost:3000` to:\n>\n> - Launch new tokens in seconds\n> - Buy and track trending tokens\n> - View token balances in your wallet\n> - Start customizing the creator dashboard\n\n---\n\n## 🚀 Deploy to Core Testnet\n\nTo deploy your contracts on **Core Testnet**, follow these steps:\n\n### 1. Set Up `.env`\n\nMake sure your `.env` file in the root directory includes:\n\n```env\nPRIVATE_KEY=your_private_key\nCORE_TESTNET_RPC=https://rpc.test2.btcs.network\n```\n\n### 2. Update Hardhat Config\n\nEnsure your `hardhat.config.js` includes the Core Testnet configuration:\n\n```js\nrequire(\"@nomiclabs/hardhat-ethers\");\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n  solidity: \"0.8.19\",\n  networks: {\n    coreTestnet: {\n      url: process.env.CORE_TESTNET_RPC,\n      accounts: [process.env.PRIVATE_KEY],\n      chainId: 1115,\n    },\n  },\n};\n```\n\n### 3. Compile & Deploy\n\nCompile contracts:\n\n```bash\nnpx hardhat compile\n```\n\nDeploy:\n\n```bash\nnpx hardhat run scripts/deploy.js --network coreTestnet\n```\n\n> 🧠 After deploying, copy the deployed contract addresses and paste them into your frontend’s environment config or contract interaction hooks.\n\n---\n\n## 🛠️ Creator Dashboard Starter\n\nThe project includes a placeholder structure where developers can build their own **Creator Dashboard** to manage token performance, community, and liquidity.\n\n📍 Located in the frontend:\n\n```bash\nFrontend/app/dashboard\n```\n\n💡 Ideas to Extend:\n\n- Add liquidity to token pools\n- Enable burn/mint features\n- Show real-time charts for tokens\n- Add community governance options\n\n> Fork this repo and start building your own meme economy on Core!\n\n---\n\n## 👛 View Token in Wallet\n\nAfter buying a token, you can add it manually to your wallet:\n\n1. Copy the token contract address shown in the UI.\n2. Open your wallet (e.g. MetaMask).\n3. Click **Import Token** and paste the contract address.\n4. View your token balance.\n\n---\n\n## 🗂️ Project Structure\n\n```bash\n├── contracts/           # Smart contracts (TokenFactory, LaunchToken)\n├── scripts/             # Deployment and helper scripts\n├── Frontend             # Frontend Next.js app\n├── hardhat.config.js    # Hardhat configuration\n├── .env                 # Store your private key securely\n└── README.md\n```\n\n---\n\n## 📘 Tech Stack\n\n- **Next.js** – Frontend framework\n- **Tailwind CSS** – Beautiful, responsive UI\n- **Hardhat** – Smart contract development and deployment\n- **Ethers.js** – Blockchain connection\n- **Solidity** – Smart contract language\n- **OpenZeppelin** – Secure contract standards\n- **Core Blockchain** – High-speed, EVM-compatible blockchain\n\n---\n\n## 🤝 Contribute & Build\n\nFork this repo to kickstart your **token economy** or **meme coin launchpad**. Add:\n\n- Liquidity tools\n- A creator analytics dashboard\n- Voting & DAO integrations\n"
  },
  {
    "path": "16-Pump.Core/contracts/MemeFactory.sol",
    "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.27;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {MemeToken} from \"./MemeToken.sol\";\n\n\nerror MemeFactory__InsufficientFee();\nerror MemeFactory__InsufficientETH();\nerror MemeFactory__SaleClosed();\nerror MemeFactory__TokenAmountTooLow();\nerror MemeFactory__AmountExceeded();\nerror MemeFactory__TransferFailed();\nerror MemeFactory__NotOwner();\n\ncontract MemeFactory {\n\n    uint256 public constant TOKEN_LIMIT = 500_000 ether;\n    uint256 public constant TARGET = 3 ether;\n\n    uint256 public immutable fee;\n    address public owner;\n    uint256 public totalTokens;\n\n    struct TokenSale {\n        address token;\n        string name;\n        string symbol;\n        address creator;\n        uint256 sold;\n        uint256 raised;\n        bool isOpen;\n    }\n\n    mapping(address => TokenSale) public tokenToSale;\n\n\n    address[] public tokens;\n\n    event Created(address indexed token);\n    event BoughtToken(address indexed token, uint256 amount);\n\n    constructor(uint256 _fee) {\n        fee = _fee;\n        owner = msg.sender;\n    }\n\n    // CREATE FUNCTION\n    // 1. create new token 2. save token for later use\n    // 3. list token for sale 4. tell people it is live\n    \n    function create(string memory _name, string memory _symbol) public payable {\n\n        if(msg.value < fee) revert MemeFactory__InsufficientFee();\n\n        // Create a new Token\n        MemeToken token = new MemeToken(msg.sender, _name, _symbol, 1_000_000 ether);\n        tokens.push(address(token));\n\n        totalTokens += 1;\n\n        // List Token\n        TokenSale memory sale = TokenSale(address(token), _name, _symbol, msg.sender, 0, 0, true);\n\n        tokenToSale[address(token)] = sale;\n\n        // Tell people it is live\n        emit Created(address(token));\n\n    }\n\n    // Buy Token \n    function buyToken(address _token, uint256 _amount) external payable {\n\n        TokenSale storage sale = tokenToSale[_token];\n\n        if(sale.isOpen == false) revert MemeFactory__SaleClosed();\n        if(_amount < 0.001 ether) revert MemeFactory__TokenAmountTooLow();\n        if(_amount >= 1000 ether) revert MemeFactory__AmountExceeded();\n\n        // calculate the price of one token based on total bought\n        uint256 cost = getCost(sale.sold);\n        uint256 price = cost * (_amount / 10 ** 18);\n\n        if(msg.value < price) revert MemeFactory__InsufficientETH();\n\n        sale.sold += _amount;\n        sale.raised += price;\n\n        // When it reaches this threshold then the token can be successsfully launched and deposited on a dex\n        if(sale.sold >= TOKEN_LIMIT || sale.raised >= TARGET) sale.isOpen = false;\n\n        MemeToken(_token).transfer(msg.sender, _amount);\n\n        emit BoughtToken(_token, _amount);\n    }\n\n    function deposit(address _token) external {\n        // The remaining token balance and the ETH raised would\n        // go into a liquidity pool like uniswapV3.\n        // For simplicity, we just transfer remaining tokens and ETH raised to the creator\n        TokenSale memory sale = tokenToSale[_token];\n\n        // Transfer tokens\n        MemeToken token = MemeToken(_token);\n        token.transfer(sale.creator, token.balanceOf(address(this)));\n\n        // Transfer ETH raised\n        (bool success, ) = payable(sale.creator).call{value: sale.raised}(\"\");\n        if(!success) revert MemeFactory__TransferFailed();\n\n    }\n\n\n    function withdraw(uint256 _amount) external {\n\n        if(msg.sender != owner) revert MemeFactory__NotOwner();\n\n        (bool success, ) = payable(owner).call{value: _amount}(\"\");\n        if(!success) revert MemeFactory__TransferFailed();\n    }\n\n\n\n\n\n\n    //// INTERNAL FUNCTIONS\n    function getCost(uint256 _sold) public pure returns (uint256) {\n\n        uint256 floor = 0.0001 ether;\n        uint256 step = 0.0001 ether;\n        uint256 increment = 10000 ether;\n\n        uint256 cost = (step * (_sold / increment)) + floor;\n\n        return cost;\n    }\n\n\n\n\n\n\n    //// GETTER FUNCTIONS\n    function getTokenSale(uint256 _index) public view returns (TokenSale memory) {\n        return tokenToSale[tokens[_index]];\n     }\n}"
  },
  {
    "path": "16-Pump.Core/contracts/MemeToken.sol",
    "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.27;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract MemeToken is ERC20 {\n\n    address payable public owner;\n    address public creator;\n\n    // event Withdrawal(uint amount, uint when);\n\n    constructor(address _creator, string memory _name, string memory _symbol, uint256 _totalSupply) ERC20(_name, _symbol) {\n\n        owner = payable(msg.sender);\n        creator = _creator;\n\n        _mint(msg.sender, _totalSupply);\n    }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    // function withdraw() public {\n    //     // Uncomment this line, and the import of \"hardhat/console.sol\", to print a log in your terminal\n    //     // console.log(\"Unlock time is %o and block timestamp is %o\", unlockTime, block.timestamp);\n\n    //     require(block.timestamp >= unlockTime, \"You can't withdraw yet\");\n    //     require(msg.sender == owner, \"You aren't the owner\");\n\n    //     emit Withdrawal(address(this).balance, block.timestamp);\n\n    //     owner.transfer(address(this).balance);\n    // }\n}\n"
  },
  {
    "path": "16-Pump.Core/hardhat.config.js",
    "content": "require(\"@nomicfoundation/hardhat-toolbox\");\nrequire(\"dotenv\").config();\n\n/** @type import('hardhat/config').HardhatUserConfig */\nconst PRIVATE_KEY = process.env.PRIVATE_KEY;\n\nmodule.exports = {\n  solidity: \"0.8.27\",\n\n  networks: {\n    localhost: {\n      url: \"http://127.0.0.1:8545/\",\n      // accounts: Thanks hardhat!\n      chainId: 31337,\n      allowUnlimitedContractSize: true,\n    },\n    core: {\n      url: 'https://rpc.test2.btcs.network',\n      accounts: [PRIVATE_KEY],\n      chainId: 1114,\n    },\n  },\n};\n"
  },
  {
    "path": "16-Pump.Core/ignition/modules/Lock.js",
    "content": "// This setup uses Hardhat Ignition to manage smart contract deployments.\n// Learn more about it at https://hardhat.org/ignition\n\nconst { buildModule } = require(\"@nomicfoundation/hardhat-ignition/modules\");\n\nconst JAN_1ST_2030 = 1893456000;\nconst ONE_GWEI = 1_000_000_000n;\n\nmodule.exports = buildModule(\"LockModule\", (m) => {\n  const unlockTime = m.getParameter(\"unlockTime\", JAN_1ST_2030);\n  const lockedAmount = m.getParameter(\"lockedAmount\", ONE_GWEI);\n\n  const lock = m.contract(\"Lock\", [unlockTime], {\n    value: lockedAmount,\n  });\n\n  return { lock };\n});\n"
  },
  {
    "path": "16-Pump.Core/package.json",
    "content": "{\n  \"name\": \"reuse\",\n  \"version\": \"1.0.0\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\",\n  \"devDependencies\": {\n    \"@nomicfoundation/hardhat-toolbox\": \"5.0.0\",\n    \"hardhat\": \"2.22.15\"\n  },\n  \"dependencies\": {\n    \"@openzeppelin/contracts\": \"5.3.0\",\n    \"dotenv\": \"16.5.0\"\n  }\n}\n"
  },
  {
    "path": "16-Pump.Core/scripts/deploy.js",
    "content": "const hre = require(\"hardhat\");\nconst {\n    loadFixture\n  } = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\n\nasync function main() {\n\n    const FEE = ethers.parseUnits(\"0.01\", 18);\n    \n  const FactoryMeme = await hre.ethers.getContractFactory(\"MemeFactory\");\n  const factoryMeme  = await FactoryMeme.deploy(FEE);\n\n  console.log(\"MemeFactory deployed to:\", factoryMeme.target);\n\n\n}\n\n// We recommend this pattern to be able to use async/await everywhere\n// and properly handle errors.\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n\n\n\n// CORE: PoolFactory contract deployed to: 0x5Ac64F5DA22B25559C7D7522b4B2BB7e2012F382"
  },
  {
    "path": "16-Pump.Core/test/Lock.js",
    "content": "const {\n  time,\n  loadFixture,\n} = require(\"@nomicfoundation/hardhat-toolbox/network-helpers\");\nconst { anyValue } = require(\"@nomicfoundation/hardhat-chai-matchers/withArgs\");\nconst { expect } = require(\"chai\");\n\ndescribe(\"Lock\", function () {\n  // We define a fixture to reuse the same setup in every test.\n  // We use loadFixture to run this setup once, snapshot that state,\n  // and reset Hardhat Network to that snapshot in every test.\n  async function deployOneYearLockFixture() {\n    const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60;\n    const ONE_GWEI = 1_000_000_000;\n\n    const lockedAmount = ONE_GWEI;\n    const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS;\n\n    // Contracts are deployed using the first signer/account by default\n    const [owner, otherAccount] = await ethers.getSigners();\n\n    const Lock = await ethers.getContractFactory(\"Lock\");\n    const lock = await Lock.deploy(unlockTime, { value: lockedAmount });\n\n    return { lock, unlockTime, lockedAmount, owner, otherAccount };\n  }\n\n  describe(\"Deployment\", function () {\n    it(\"Should set the right unlockTime\", async function () {\n      const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.unlockTime()).to.equal(unlockTime);\n    });\n\n    it(\"Should set the right owner\", async function () {\n      const { lock, owner } = await loadFixture(deployOneYearLockFixture);\n\n      expect(await lock.owner()).to.equal(owner.address);\n    });\n\n    it(\"Should receive and store the funds to lock\", async function () {\n      const { lock, lockedAmount } = await loadFixture(\n        deployOneYearLockFixture\n      );\n\n      expect(await ethers.provider.getBalance(lock.target)).to.equal(\n        lockedAmount\n      );\n    });\n\n    it(\"Should fail if the unlockTime is not in the future\", async function () {\n      // We don't use the fixture here because we want a different deployment\n      const latestTime = await time.latest();\n      const Lock = await ethers.getContractFactory(\"Lock\");\n      await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith(\n        \"Unlock time should be in the future\"\n      );\n    });\n  });\n\n  describe(\"Withdrawals\", function () {\n    describe(\"Validations\", function () {\n      it(\"Should revert with the right error if called too soon\", async function () {\n        const { lock } = await loadFixture(deployOneYearLockFixture);\n\n        await expect(lock.withdraw()).to.be.revertedWith(\n          \"You can't withdraw yet\"\n        );\n      });\n\n      it(\"Should revert with the right error if called from another account\", async function () {\n        const { lock, unlockTime, otherAccount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // We can increase the time in Hardhat Network\n        await time.increaseTo(unlockTime);\n\n        // We use lock.connect() to send a transaction from another account\n        await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith(\n          \"You aren't the owner\"\n        );\n      });\n\n      it(\"Shouldn't fail if the unlockTime has arrived and the owner calls it\", async function () {\n        const { lock, unlockTime } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        // Transactions are sent using the first signer by default\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).not.to.be.reverted;\n      });\n    });\n\n    describe(\"Events\", function () {\n      it(\"Should emit an event on withdrawals\", async function () {\n        const { lock, unlockTime, lockedAmount } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw())\n          .to.emit(lock, \"Withdrawal\")\n          .withArgs(lockedAmount, anyValue); // We accept any value as `when` arg\n      });\n    });\n\n    describe(\"Transfers\", function () {\n      it(\"Should transfer the funds to the owner\", async function () {\n        const { lock, unlockTime, lockedAmount, owner } = await loadFixture(\n          deployOneYearLockFixture\n        );\n\n        await time.increaseTo(unlockTime);\n\n        await expect(lock.withdraw()).to.changeEtherBalances(\n          [owner, lock],\n          [lockedAmount, -lockedAmount]\n        );\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Contract/.gitignore",
    "content": "node_modules\n.env\ncoverage\ncoverage.json\ntypechain\ntypechain-types\n\n#Hardhat files\ncache*\nartifacts*\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Contract/README.md",
    "content": "## Getting Started\n\nCreate a project using this example:\n\n```bash\nnpx thirdweb create --contract --template hardhat-javascript-starter\n```\n\nYou can start editing the page by modifying `contracts/Contract.sol`.\n\nTo add functionality to your contracts, you can use the `@thirdweb-dev/contracts` package which provides base contracts and extensions to inherit. The package is already installed with this project. Head to our [Contracts Extensions Docs](https://portal.thirdweb.com/contractkit) to learn more.\n\n## Building the project\n\nAfter any changes to the contract, run:\n\n```bash\nnpm run build\n# or\nyarn build\n```\n\nto compile your contracts. This will also detect the [Contracts Extensions Docs](https://portal.thirdweb.com/contractkit) detected on your contract.\n\n## Deploying Contracts\n\nWhen you're ready to deploy your contracts, just run one of the following command to deploy you're contracts:\n\n```bash\nnpm run deploy\n# or\nyarn deploy\n```\n\n> [!IMPORTANT]\n> This requires a secret key to make it work. Get your secret key [here](https://thirdweb.com/dashboard/settings/api-keys).\n> Pass your secret key as a value after `-k` flag.\n> ```bash\n> npm run deploy -- -k <your-secret-key>\n> # or\n> yarn deploy -k <your-secret-key>\n\n## Releasing Contracts\n\nIf you want to release a version of your contracts publicly, you can use one of the followings command:\n\n```bash\nnpm run release\n# or\nyarn release\n```\n\n## Join our Discord!\n\nFor any questions, suggestions, join our discord at [https://discord.gg/thirdweb](https://discord.gg/thirdweb).\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Contract/contracts/CrowdFunding.sol",
    "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\ncontract CrowdFunding{\n    string public name;\n    string public description;\n    uint256 public goal;\n    uint256 public deadLine;\n    address public owner;\n    bool public  paused;\n\nenum CampaignState {Active , Successful , Failed}\nCampaignState public state;\n    struct Tier{\n        string name;\n        uint256 amount;\n        uint256 backers;\n    }\n\nstruct Backer{\n    uint256 totalcontribution;\n    mapping (uint256 =>bool) fundedTires;\n}\n    Tier[] public tiers;\n\n    mapping (address =>Backer) public backers;\n\n    modifier onlyOwner(){\n        require(msg.sender==owner,\"Not Owner\");\n_;   \n    }\n\n    modifier campaingOpen(){\n        require(state==CampaignState.Active,\"Campain is not Active\");\n        _;\n    }\n\n    modifier notpuased(){\n        require(!paused,\"Contract is Paused\");\n        _;\n    }\n     \n     constructor(address _owner,string memory _name,string memory _description,uint256 _goal , uint256 _duration ){\n        name=_name;\n        description=_description;\n        goal=_goal;\n        deadLine=block.timestamp+(_duration * 1 days);\n        owner=_owner;\n        state=CampaignState.Active;\n\n     }\n\nfunction checkAndUpdateCampaignState() internal{\n    if(state== CampaignState.Active){\n        if(block.timestamp>=deadLine){\n            state=address(this).balance >= goal ? CampaignState.Successful: CampaignState.Failed;\n        }\n        else{\n         state=address(this).balance >= goal ? CampaignState.Successful: CampaignState.Active;\n        }\n    }\n}\n     function fund(uint256 _tierIndex)public payable campaingOpen notpuased{\n\n\nrequire(_tierIndex<tiers.length,\"invalid\");\nrequire(msg.value == tiers[_tierIndex].amount,\"Invalid Amount\");\ntiers[_tierIndex].backers++;\nbackers[msg.sender].totalcontribution += msg.value;\nbackers[msg.sender].fundedTires[_tierIndex]=true;\ncheckAndUpdateCampaignState();\n\n     }\n\n     function addTier(string memory _name , uint256 _amount) public onlyOwner{\n        require(_amount>0,\"Please Enter Valid Tier\");\n        tiers.push(Tier(_name,_amount,0));\n\n     }\n\nfunction removeTier(uint256 _index) public onlyOwner{\n    require(_index<tiers.length,\"does not Exits\");\n    tiers[_index]=tiers[tiers.length-1];\n   tiers.pop();\n}\n     function withdraw() public onlyOwner{\ncheckAndUpdateCampaignState();\nrequire(state == CampaignState.Successful,\"Campain is not Successful\");\nuint balance = address(this).balance;\nrequire(balance>0,\"no Balance\");\npayable(owner).transfer(balance);\n     }\n\n     function getcontractBalance() public view returns (uint256){\nreturn address(this).balance;\n     }\n\nfunction refund() public {\n    checkAndUpdateCampaignState();\n\n    uint256 amount =backers[msg.sender].totalcontribution;\n    require(amount>0,\"No contribution to refund\");\n\n    backers[msg.sender].totalcontribution=0;\n    payable(msg.sender).transfer(amount);\n}\n\nfunction hasfundedtier(address _backer , uint256 _tierIndex) public view returns (bool){\n    return backers[_backer].fundedTires[_tierIndex];\n}\n\nfunction getTiers() public view returns (Tier[] memory){\n    return tiers;\n}\nfunction tooglepause () public  onlyOwner{\n    paused = !paused;\n}\nfunction getCampaignStatus() public view returns (CampaignState){\n    if(state== CampaignState.Active && block.timestamp>deadLine){\n        return address(this).balance >= goal ? CampaignState.Successful : CampaignState.Failed;\n    }\n    return state;\n}\n\nfunction extendDeadLine(uint256 _daysAdded) public onlyOwner campaingOpen{\n    deadLine+=_daysAdded*1 days;\n}\n}"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Contract/contracts/CrowdFundingFactory.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n// import {CrowdFunding} from \"./CrowdFunding.sol\";\nimport {CrowdFunding} from \"./CrowdFunding.sol\";\ncontract CrowdFundingFactory {\n    address public owner;\n    bool public paused;\n\n    struct Campaign {\n        address campaignAddress;\n        address owner;\n        string name;\n        uint256 creationTime;\n    }\n\n    Campaign[] public campaigns;\n    mapping(address => Campaign[]) public userCampaigns;\n\n    modifier onlyOwner() {\n        require(msg.sender == owner, \"Only the owner can perform this action\");\n        _;\n    }\n\n    modifier notPaused() {\n        require(!paused, \"Factory paused\");\n        _;\n    }\n\n    constructor() {\n        owner = msg.sender;\n    }\n\n    function createCampaign(\n        string memory _name,\n        string memory _description,\n        uint256 _goal,\n        uint256 _duration\n    ) external notPaused {\n        CrowdFunding newCampaign = new CrowdFunding(msg.sender, _name, _description, _goal, _duration);\n        address campaignAddress = address(newCampaign);\n\n        Campaign memory campaign = Campaign({\n            campaignAddress: campaignAddress,\n            owner: msg.sender,\n            name: _name,\n            creationTime: block.timestamp\n        });\n\n        campaigns.push(campaign);\n        userCampaigns[msg.sender].push(campaign);\n    }\n\n    function getUserCampaigns(address _user) external view returns (Campaign[] memory) {\n        return userCampaigns[_user];\n    }\n\n    function getAllCampaigns() external view returns (Campaign[] memory) {\n        return campaigns;\n    }\n\n    function togglePause() external onlyOwner {\n        paused = !paused;\n    }\n}"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Contract/hardhat.config.js",
    "content": "require(\"@matterlabs/hardhat-zksync-solc\");\nrequire(\"@matterlabs/hardhat-zksync-verify\");\n\n\n/** @type import('hardhat/config').HardhatUserConfig */\nmodule.exports = {\n  zksolc: {\n    version: \"1.4.1\",\n    compilerSource: \"binary\",\n    settings: {\n      optimizer: {\n        enabled: true,\n      },\n    },\n  },\n  networks: {\n    zkSyncSepoliaTestnet: {\n      url: \"https://sepolia.era.zksync.dev\",\n      ethNetwork: \"sepolia\",\n      zksync: true,\n      chainId: 300,\n      verifyURL:\n        \"https://explorer.sepolia.era.zksync.dev/contract_verification\",\n    },\n    zkSyncMainnet: {\n      url: \"https://mainnet.era.zksync.io\",\n      ethNetwork: \"mainnet\",\n      zksync: true,\n      chainId: 324,\n      verifyURL:\n        \"https://zksync2-mainnet-explorer.zksync.io/contract_verification\",\n    },\n  },\n  paths: {\n    artifacts: \"./artifacts-zk\",\n    cache: \"./cache-zk\",\n    sources: \"./contracts\",\n    tests: \"./test\",\n  },\n  solidity: {\n    version: \"0.8.23\",\n    settings: {\n      optimizer: {\n        enabled: true,\n        runs: 200,\n      },\n    },\n  },\n};\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Contract/package.json",
    "content": "{\n  \"name\": \"hardhat-javascript-starter\",\n  \"scripts\": {\n    \"build\": \"npx thirdweb@latest detect\",\n    \"deploy\": \"npx thirdweb@latest deploy\",\n    \"publish\": \"npx thirdweb@latest publish\"\n  },\n  \"devDependencies\": {\n    \"@matterlabs/hardhat-zksync-solc\": \"^1.1.14\",\n    \"@matterlabs/hardhat-zksync-verify\": \"^1.7.1\",\n    \"hardhat\": \"^2.19.1\"\n  },\n  \"dependencies\": {\n    \"@thirdweb-dev/contracts\": \"^3.8.0\",\n    \"zksync-ethers\": \"^5.7.0\"\n  }\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Contract/scripts/verify/my-contract.js",
    "content": "const hre = require(\"hardhat\");\n\n// to run the script:\n//      npx hardhat run scripts/verify/my-contract.js --network zkSyncSepoliaTestnet\n\nasync function main() {\n  const contractAddress = \"<YOUR CONTRACT ADDRESS>\"; // TODO: contract address\n  const constructorArgs = []; // TODO: add constructor params here, if any\n\n  console.log(\"Verifying contract.\");\n  await verify(\n    contractAddress,\n    \"contracts/Contract.sol:MyContract\",\n    constructorArgs\n  );\n}\n\nasync function verify(address, contract, args) {\n  try {\n    return await hre.run(\"verify:verify\", {\n      address: address,\n      contract: contract,\n      constructorArguments: args,\n    });\n  } catch (e) {\n    console.log(address, args, e);\n  }\n}\n\nmain()\n  .then(() => process.exit(0))\n  .catch((e) => {\n    console.error(e);\n    process.exit(1);\n  });\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\n# secrets\n.env"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.prettierrc",
    "content": "{\n  \"singleQuote\": false,\n  \"semi\": true\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/AllWalletsUI-27PR6NO2.js",
    "content": "\"use client\";\nimport {\n  AllWalletsUI_default\n} from \"./chunk-HO57TQQM.js\";\nimport \"./chunk-AARWH2GQ.js\";\nimport \"./chunk-HI6IFF64.js\";\nimport \"./chunk-U3QNWT4A.js\";\nimport \"./chunk-XC5J5ANL.js\";\nimport \"./chunk-NOA36MVL.js\";\nimport \"./chunk-FXBAO7K3.js\";\nimport \"./chunk-PWFRCBEK.js\";\nimport \"./chunk-2HYPHUAF.js\";\nimport \"./chunk-FNI7M3UI.js\";\nimport \"./chunk-Q3TN3POE.js\";\nimport \"./chunk-ZLJ6VYSG.js\";\nimport \"./chunk-6WNCTW75.js\";\nimport \"./chunk-QLJVAXYD.js\";\nimport \"./chunk-CLN3QXW2.js\";\nimport \"./chunk-R76ND7QY.js\";\nimport \"./chunk-G26WKBGM.js\";\nimport \"./chunk-7AY3QZZV.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-2RRVHQYX.js\";\nimport \"./chunk-I2GEMA2B.js\";\nimport \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-VIBS7Y3M.js\";\nimport \"./chunk-PB7CMXGP.js\";\nimport \"./chunk-2MTJELC7.js\";\nimport \"./chunk-4PEUWIWY.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-NPXNISXJ.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  AllWalletsUI_default as default\n};\n//# sourceMappingURL=AllWalletsUI-27PR6NO2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/BuyScreen-N3MCCV33.js",
    "content": "import {\n  BuyScreen\n} from \"./chunk-FHZU65JA.js\";\nimport \"./chunk-QLCPWJYR.js\";\nimport \"./chunk-EGJT3UEX.js\";\nimport \"./chunk-YG7T4W43.js\";\nimport \"./chunk-R554PO5S.js\";\nimport \"./chunk-5THTWD2M.js\";\nimport \"./chunk-7ZNEOXS2.js\";\nimport \"./chunk-KWA5PGSC.js\";\nimport \"./chunk-MGEBXLXC.js\";\nimport \"./chunk-65EUCVOP.js\";\nimport \"./chunk-HO57TQQM.js\";\nimport \"./chunk-AARWH2GQ.js\";\nimport \"./chunk-HI6IFF64.js\";\nimport \"./chunk-U3QNWT4A.js\";\nimport \"./chunk-GGVPULQZ.js\";\nimport \"./chunk-6RU56BH7.js\";\nimport \"./chunk-EHYTL2NA.js\";\nimport \"./chunk-YGRUPXVB.js\";\nimport \"./chunk-XB34LHR5.js\";\nimport \"./chunk-5U5XBS6S.js\";\nimport \"./chunk-XC5J5ANL.js\";\nimport \"./chunk-36FW3ZLE.js\";\nimport \"./chunk-7ETS5GH6.js\";\nimport \"./chunk-4U2YWK76.js\";\nimport \"./chunk-VJFQPB47.js\";\nimport \"./chunk-NOA36MVL.js\";\nimport \"./chunk-FXBAO7K3.js\";\nimport \"./chunk-PWFRCBEK.js\";\nimport \"./chunk-2HYPHUAF.js\";\nimport \"./chunk-FNI7M3UI.js\";\nimport \"./chunk-Q3TN3POE.js\";\nimport \"./chunk-O6KA6WKL.js\";\nimport \"./chunk-ZLJ6VYSG.js\";\nimport \"./chunk-6WNCTW75.js\";\nimport \"./chunk-QLJVAXYD.js\";\nimport \"./chunk-CLN3QXW2.js\";\nimport \"./chunk-4RRAU5V7.js\";\nimport \"./chunk-QVNJVROL.js\";\nimport \"./chunk-R76ND7QY.js\";\nimport \"./chunk-G26WKBGM.js\";\nimport \"./chunk-7AY3QZZV.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-2RRVHQYX.js\";\nimport \"./chunk-XTOEMUZK.js\";\nimport \"./chunk-J7FYPWA5.js\";\nimport \"./chunk-EIBOABXT.js\";\nimport \"./chunk-I2GEMA2B.js\";\nimport \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-CYVKJMZE.js\";\nimport \"./chunk-VIBS7Y3M.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport \"./chunk-6FLJU7W7.js\";\nimport \"./chunk-PB7CMXGP.js\";\nimport \"./chunk-SJKAB62J.js\";\nimport \"./chunk-2MTJELC7.js\";\nimport \"./chunk-PHVX3XOV.js\";\nimport \"./chunk-ADIC4TC2.js\";\nimport \"./chunk-4PEUWIWY.js\";\nimport \"./chunk-TTOANXGP.js\";\nimport \"./chunk-AWMNEQRO.js\";\nimport \"./chunk-6XF6HOWC.js\";\nimport \"./chunk-JTR2PIFP.js\";\nimport \"./chunk-JZC47WAY.js\";\nimport \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-7QDK5KLB.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-673YCYST.js\";\nimport \"./chunk-JBQP4JIV.js\";\nimport \"./chunk-4OCU6WGG.js\";\nimport \"./chunk-3DBHE3NE.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-NPXNISXJ.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  BuyScreen as default\n};\n//# sourceMappingURL=BuyScreen-N3MCCV33.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/CoinbaseSDKConnection-PPK2JHPJ.js",
    "content": "import {\n  ConnectingScreen\n} from \"./chunk-MGEBXLXC.js\";\nimport \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport \"./chunk-XC5J5ANL.js\";\nimport \"./chunk-NOA36MVL.js\";\nimport \"./chunk-PWFRCBEK.js\";\nimport \"./chunk-ZLJ6VYSG.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-VIBS7Y3M.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport \"./chunk-4PEUWIWY.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/CoinbaseSDKConnection.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nvar import_react = __toESM(require_react(), 1);\nfunction ExternalWalletConnectUI(props) {\n  const { onBack, done, wallet, walletInfo, onGetStarted, locale } = props;\n  const [errorConnecting, setErrorConnecting] = (0, import_react.useState)(false);\n  const connect = (0, import_react.useCallback)(() => {\n    setErrorConnecting(false);\n    wallet.connect({\n      client: props.client,\n      chain: props.chain\n    }).then(() => {\n      done();\n    }).catch((e) => {\n      console.error(e);\n      setErrorConnecting(true);\n    });\n  }, [props.client, wallet, props.chain, done]);\n  const scanStarted = (0, import_react.useRef)(false);\n  (0, import_react.useEffect)(() => {\n    if (scanStarted.current) {\n      return;\n    }\n    scanStarted.current = true;\n    connect();\n  }, [connect]);\n  return (0, import_jsx_runtime.jsx)(ConnectingScreen, { locale: {\n    getStartedLink: locale.getStartedLink,\n    instruction: locale.connectionScreen.instruction,\n    tryAgain: locale.connectionScreen.retry,\n    inProgress: locale.connectionScreen.inProgress,\n    failed: locale.connectionScreen.failed\n  }, onBack, walletName: walletInfo.name, walletId: wallet.id, errorConnecting, onRetry: connect, onGetStarted, client: props.client, size: props.size });\n}\nvar CoinbaseSDKConnection_default = ExternalWalletConnectUI;\nexport {\n  CoinbaseSDKConnection_default as default\n};\n//# sourceMappingURL=CoinbaseSDKConnection-PPK2JHPJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/EcosystemWalletConnectUI-ANAXYA53.js",
    "content": "\"use client\";\nimport {\n  EcosystemWalletConnectUI_default\n} from \"./chunk-EGJT3UEX.js\";\nimport \"./chunk-7ZNEOXS2.js\";\nimport \"./chunk-KWA5PGSC.js\";\nimport \"./chunk-MGEBXLXC.js\";\nimport \"./chunk-65EUCVOP.js\";\nimport \"./chunk-HO57TQQM.js\";\nimport \"./chunk-AARWH2GQ.js\";\nimport \"./chunk-HI6IFF64.js\";\nimport \"./chunk-U3QNWT4A.js\";\nimport \"./chunk-5U5XBS6S.js\";\nimport \"./chunk-XC5J5ANL.js\";\nimport \"./chunk-NOA36MVL.js\";\nimport \"./chunk-FXBAO7K3.js\";\nimport \"./chunk-PWFRCBEK.js\";\nimport \"./chunk-2HYPHUAF.js\";\nimport \"./chunk-FNI7M3UI.js\";\nimport \"./chunk-Q3TN3POE.js\";\nimport \"./chunk-ZLJ6VYSG.js\";\nimport \"./chunk-6WNCTW75.js\";\nimport \"./chunk-QLJVAXYD.js\";\nimport \"./chunk-CLN3QXW2.js\";\nimport \"./chunk-R76ND7QY.js\";\nimport \"./chunk-G26WKBGM.js\";\nimport \"./chunk-7AY3QZZV.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-2RRVHQYX.js\";\nimport \"./chunk-XTOEMUZK.js\";\nimport \"./chunk-J7FYPWA5.js\";\nimport \"./chunk-EIBOABXT.js\";\nimport \"./chunk-I2GEMA2B.js\";\nimport \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-CYVKJMZE.js\";\nimport \"./chunk-VIBS7Y3M.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport \"./chunk-PB7CMXGP.js\";\nimport \"./chunk-2MTJELC7.js\";\nimport \"./chunk-4PEUWIWY.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-NPXNISXJ.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  EcosystemWalletConnectUI_default as default\n};\n//# sourceMappingURL=EcosystemWalletConnectUI-ANAXYA53.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/InAppWalletConnectUI-IYEPIHHJ.js",
    "content": "\"use client\";\nimport {\n  GuestLogin,\n  OTPLoginUI,\n  PassKeyLogin,\n  PoweredByThirdweb,\n  SocialLogin,\n  TOS,\n  WalletAuth\n} from \"./chunk-7ZNEOXS2.js\";\nimport {\n  ConnectWalletSocialOptions,\n  LoadingScreen,\n  useInAppWalletLocale,\n  useScreenContext\n} from \"./chunk-KWA5PGSC.js\";\nimport \"./chunk-MGEBXLXC.js\";\nimport \"./chunk-65EUCVOP.js\";\nimport \"./chunk-HO57TQQM.js\";\nimport {\n  useSelectionData,\n  useSetSelectionData\n} from \"./chunk-AARWH2GQ.js\";\nimport {\n  Container,\n  Img,\n  ModalHeader,\n  ModalTitle,\n  Spacer,\n  iconSize\n} from \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport \"./chunk-5U5XBS6S.js\";\nimport \"./chunk-XC5J5ANL.js\";\nimport \"./chunk-NOA36MVL.js\";\nimport \"./chunk-FXBAO7K3.js\";\nimport \"./chunk-PWFRCBEK.js\";\nimport \"./chunk-2HYPHUAF.js\";\nimport \"./chunk-FNI7M3UI.js\";\nimport \"./chunk-Q3TN3POE.js\";\nimport \"./chunk-ZLJ6VYSG.js\";\nimport \"./chunk-6WNCTW75.js\";\nimport \"./chunk-QLJVAXYD.js\";\nimport \"./chunk-CLN3QXW2.js\";\nimport \"./chunk-R76ND7QY.js\";\nimport \"./chunk-G26WKBGM.js\";\nimport \"./chunk-7AY3QZZV.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-2RRVHQYX.js\";\nimport \"./chunk-XTOEMUZK.js\";\nimport \"./chunk-J7FYPWA5.js\";\nimport \"./chunk-EIBOABXT.js\";\nimport \"./chunk-I2GEMA2B.js\";\nimport \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-CYVKJMZE.js\";\nimport \"./chunk-VIBS7Y3M.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport \"./chunk-PB7CMXGP.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport \"./chunk-4PEUWIWY.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-NPXNISXJ.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/InAppWalletConnectUI.js\nvar import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/InAppWalletFormUI.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nvar import_react = __toESM(require_react(), 1);\nfunction InAppWalletFormUIScreen(props) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n  const isCompact = props.size === \"compact\";\n  const { initialScreen, screen } = useScreenContext();\n  const [isApproved, setIsApproved] = (0, import_react.useState)(false);\n  const isInitialScreen = screen === props.wallet && initialScreen === props.wallet;\n  const onBack = isInitialScreen && !props.isLinking ? void 0 : props.goBack;\n  return (0, import_jsx_runtime.jsxs)(Container, { fullHeight: true, flex: \"column\", p: \"lg\", animate: \"fadein\", style: {\n    minHeight: \"250px\"\n  }, children: [isCompact && (isInitialScreen ? (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [(0, import_jsx_runtime.jsx)(ModalHeader, { onBack, leftAligned: !props.isLinking, title: (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [!((_a = props.meta) == null ? void 0 : _a.titleIconUrl) ? null : (0, import_jsx_runtime.jsx)(Img, { src: (_b = props.meta) == null ? void 0 : _b.titleIconUrl, width: iconSize.md, height: iconSize.md, client: props.client }), (0, import_jsx_runtime.jsx)(ModalTitle, { children: ((_c = props.meta) == null ? void 0 : _c.title) ?? props.inAppWalletLocale.emailLoginScreen.title })] }) }), (0, import_jsx_runtime.jsx)(Spacer, { y: \"lg\" })] }) : (0, import_jsx_runtime.jsx)(ModalHeader, { onBack, title: props.inAppWalletLocale.signIn })), (0, import_jsx_runtime.jsx)(Container, { expand: true, flex: \"column\", center: \"y\", p: isCompact ? void 0 : \"lg\", children: (0, import_jsx_runtime.jsx)(ConnectWalletSocialOptions, { ...props, locale: props.inAppWalletLocale, disabled: ((_d = props.meta) == null ? void 0 : _d.requireApproval) && !isApproved }) }), isCompact && (((_e = props.meta) == null ? void 0 : _e.showThirdwebBranding) !== false || ((_f = props.meta) == null ? void 0 : _f.termsOfServiceUrl) || ((_g = props.meta) == null ? void 0 : _g.privacyPolicyUrl)) && (0, import_jsx_runtime.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime.jsxs)(Container, { flex: \"column\", gap: \"lg\", children: [(0, import_jsx_runtime.jsx)(TOS, { termsOfServiceUrl: (_h = props.meta) == null ? void 0 : _h.termsOfServiceUrl, privacyPolicyUrl: (_i = props.meta) == null ? void 0 : _i.privacyPolicyUrl, locale: props.connectLocale.agreement, requireApproval: (_j = props.meta) == null ? void 0 : _j.requireApproval, onApprove: () => {\n    setIsApproved(!isApproved);\n  }, isApproved }), ((_k = props.meta) == null ? void 0 : _k.showThirdwebBranding) !== false && (0, import_jsx_runtime.jsx)(PoweredByThirdweb, {})] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/InAppWalletConnectUI.js\nfunction InAppWalletConnectUI(props) {\n  const data = useSelectionData();\n  const setSelectionData = useSetSelectionData();\n  const state = data;\n  const localeId = props.connectLocale.id;\n  const locale = useInAppWalletLocale(localeId);\n  const { initialScreen } = useScreenContext();\n  if (!locale) {\n    return (0, import_jsx_runtime2.jsx)(LoadingScreen, {});\n  }\n  const goBackToMain = () => {\n    var _a;\n    if (initialScreen === props.wallet) {\n      setSelectionData({});\n    } else {\n      (_a = props.goBack) == null ? void 0 : _a.call(props);\n      setSelectionData({});\n    }\n  };\n  const done = () => {\n    props.done();\n    setSelectionData({});\n  };\n  const otpUserInfo = (state == null ? void 0 : state.emailLogin) ? { email: state.emailLogin } : (state == null ? void 0 : state.phoneLogin) ? { phone: state.phoneLogin } : void 0;\n  if (otpUserInfo) {\n    return (0, import_jsx_runtime2.jsx)(OTPLoginUI, { userInfo: otpUserInfo, locale, done, goBack: goBackToMain, wallet: props.wallet, chain: props.chain, client: props.client, size: props.size, isLinking: props.isLinking });\n  }\n  if (state == null ? void 0 : state.passkeyLogin) {\n    return (0, import_jsx_runtime2.jsx)(PassKeyLogin, { locale: props.connectLocale, wallet: props.wallet, done, onBack: goBackToMain, chain: props.chain, client: props.client, size: props.size, isLinking: props.isLinking });\n  }\n  if (state == null ? void 0 : state.walletLogin) {\n    return (0, import_jsx_runtime2.jsx)(WalletAuth, { meta: props.meta, inAppLocale: locale, walletConnect: props.walletConnect, wallet: props.wallet, client: props.client, size: props.size, done, onBack: goBackToMain || (() => setSelectionData({})), locale: props.connectLocale, isLinking: state.walletLogin.linking });\n  }\n  if (state == null ? void 0 : state.socialLogin) {\n    return (0, import_jsx_runtime2.jsx)(SocialLogin, { socialAuth: state.socialLogin.type, locale, done, goBack: goBackToMain, wallet: props.wallet, state, chain: props.chain, client: props.client, size: props.size, connectLocale: props.connectLocale, isLinking: props.isLinking });\n  }\n  if (state == null ? void 0 : state.guestLogin) {\n    return (0, import_jsx_runtime2.jsx)(GuestLogin, { locale, done, goBack: goBackToMain, wallet: props.wallet, state, client: props.client, size: props.size, connectLocale: props.connectLocale });\n  }\n  return (0, import_jsx_runtime2.jsx)(InAppWalletFormUIScreen, { select: () => {\n  }, connectLocale: props.connectLocale, inAppWalletLocale: locale, done, goBack: props.goBack, wallet: props.wallet, client: props.client, meta: props.meta, size: props.size, chain: props.chain, isLinking: props.isLinking });\n}\nvar InAppWalletConnectUI_default = InAppWalletConnectUI;\nexport {\n  InAppWalletConnectUI_default as default\n};\n//# sourceMappingURL=InAppWalletConnectUI-IYEPIHHJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/InAppWalletSelectionUI-QJ7CQPJG.js",
    "content": "\"use client\";\nimport {\n  ConnectWalletSocialOptions,\n  LoadingScreen,\n  reservedScreens,\n  useInAppWalletLocale,\n  useScreenContext\n} from \"./chunk-KWA5PGSC.js\";\nimport \"./chunk-65EUCVOP.js\";\nimport {\n  WalletEntryButton,\n  useSetSelectionData\n} from \"./chunk-AARWH2GQ.js\";\nimport \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport \"./chunk-XC5J5ANL.js\";\nimport \"./chunk-NOA36MVL.js\";\nimport \"./chunk-PWFRCBEK.js\";\nimport \"./chunk-ZLJ6VYSG.js\";\nimport \"./chunk-6WNCTW75.js\";\nimport \"./chunk-QLJVAXYD.js\";\nimport \"./chunk-CLN3QXW2.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-J7FYPWA5.js\";\nimport \"./chunk-EIBOABXT.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-VIBS7Y3M.js\";\nimport \"./chunk-2MTJELC7.js\";\nimport \"./chunk-4PEUWIWY.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/InAppWalletSelectionUI.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nfunction InAppWalletSelectionUI(props) {\n  const { screen } = useScreenContext();\n  const setData = useSetSelectionData();\n  const locale = useInAppWalletLocale(props.connectLocale.id);\n  if (props.size === \"wide\" || screen !== reservedScreens.main && props.size === \"compact\") {\n    return (0, import_jsx_runtime.jsx)(WalletEntryButton, { walletId: props.wallet.id, selectWallet: () => {\n      setData({});\n      props.select();\n    }, client: props.client, connectLocale: props.connectLocale, recommendedWallets: props.recommendedWallets, isActive: screen === props.wallet, badge: void 0 });\n  }\n  if (!locale) {\n    return (0, import_jsx_runtime.jsx)(LoadingScreen, { height: \"195px\" });\n  }\n  return (0, import_jsx_runtime.jsx)(ConnectWalletSocialOptions, { disabled: props.disabled, locale, wallet: props.wallet, done: props.done, select: props.select, goBack: props.goBack, chain: props.chain, client: props.client, size: props.size });\n}\nvar InAppWalletSelectionUI_default = InAppWalletSelectionUI;\nexport {\n  InAppWalletSelectionUI_default as default\n};\n//# sourceMappingURL=InAppWalletSelectionUI-QJ7CQPJG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ModelViewer-GZZWO7FG.js",
    "content": "import {\n  ReactiveElement,\n  html,\n  property,\n  render\n} from \"./chunk-6LAJV43E.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/MediaRenderer/ModelViewer.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/three/build/three.module.js\nvar REVISION = \"146\";\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar VSMShadowMap = 3;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar CineonToneMapping = 3;\nvar ACESFilmicToneMapping = 4;\nvar CustomToneMapping = 5;\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar CubeUVReflectionMapping = 306;\nvar RepeatWrapping = 1e3;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipmapNearestFilter = 1004;\nvar NearestMipmapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipmapNearestFilter = 1007;\nvar LinearMipmapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedInt248Type = 1020;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RedFormat = 1028;\nvar RedIntegerFormat = 1029;\nvar RGFormat = 1030;\nvar RGIntegerFormat = 1031;\nvar RGBAIntegerFormat = 1033;\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGB_ETC2_Format = 37492;\nvar RGBA_ETC2_EAC_Format = 37496;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar RGBA_BPTC_Format = 36492;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar NormalAnimationBlendMode = 2500;\nvar AdditiveAnimationBlendMode = 2501;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar LinearEncoding = 3e3;\nvar sRGBEncoding = 3001;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\nvar SRGBColorSpace = \"srgb\";\nvar LinearSRGBColorSpace = \"srgb-linear\";\nvar KeepStencilOp = 7680;\nvar AlwaysStencilFunc = 519;\nvar StaticDrawUsage = 35044;\nvar GLSL3 = \"300 es\";\nvar _SRGBAFormat = 1035;\nvar EventDispatcher = class {\n  addEventListener(type, listener) {\n    if (this._listeners === void 0)\n      this._listeners = {};\n    const listeners = this._listeners;\n    if (listeners[type] === void 0) {\n      listeners[type] = [];\n    }\n    if (listeners[type].indexOf(listener) === -1) {\n      listeners[type].push(listener);\n    }\n  }\n  hasEventListener(type, listener) {\n    if (this._listeners === void 0)\n      return false;\n    const listeners = this._listeners;\n    return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1;\n  }\n  removeEventListener(type, listener) {\n    if (this._listeners === void 0)\n      return;\n    const listeners = this._listeners;\n    const listenerArray = listeners[type];\n    if (listenerArray !== void 0) {\n      const index = listenerArray.indexOf(listener);\n      if (index !== -1) {\n        listenerArray.splice(index, 1);\n      }\n    }\n  }\n  dispatchEvent(event) {\n    if (this._listeners === void 0)\n      return;\n    const listeners = this._listeners;\n    const listenerArray = listeners[event.type];\n    if (listenerArray !== void 0) {\n      event.target = this;\n      const array = listenerArray.slice(0);\n      for (let i = 0, l = array.length; i < l; i++) {\n        array[i].call(this, event);\n      }\n      event.target = null;\n    }\n  }\n};\nvar _lut = [\"00\", \"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"0a\", \"0b\", \"0c\", \"0d\", \"0e\", \"0f\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"1a\", \"1b\", \"1c\", \"1d\", \"1e\", \"1f\", \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\", \"2a\", \"2b\", \"2c\", \"2d\", \"2e\", \"2f\", \"30\", \"31\", \"32\", \"33\", \"34\", \"35\", \"36\", \"37\", \"38\", \"39\", \"3a\", \"3b\", \"3c\", \"3d\", \"3e\", \"3f\", \"40\", \"41\", \"42\", \"43\", \"44\", \"45\", \"46\", \"47\", \"48\", \"49\", \"4a\", \"4b\", \"4c\", \"4d\", \"4e\", \"4f\", \"50\", \"51\", \"52\", \"53\", \"54\", \"55\", \"56\", \"57\", \"58\", \"59\", \"5a\", \"5b\", \"5c\", \"5d\", \"5e\", \"5f\", \"60\", \"61\", \"62\", \"63\", \"64\", \"65\", \"66\", \"67\", \"68\", \"69\", \"6a\", \"6b\", \"6c\", \"6d\", \"6e\", \"6f\", \"70\", \"71\", \"72\", \"73\", \"74\", \"75\", \"76\", \"77\", \"78\", \"79\", \"7a\", \"7b\", \"7c\", \"7d\", \"7e\", \"7f\", \"80\", \"81\", \"82\", \"83\", \"84\", \"85\", \"86\", \"87\", \"88\", \"89\", \"8a\", \"8b\", \"8c\", \"8d\", \"8e\", \"8f\", \"90\", \"91\", \"92\", \"93\", \"94\", \"95\", \"96\", \"97\", \"98\", \"99\", \"9a\", \"9b\", \"9c\", \"9d\", \"9e\", \"9f\", \"a0\", \"a1\", \"a2\", \"a3\", \"a4\", \"a5\", \"a6\", \"a7\", \"a8\", \"a9\", \"aa\", \"ab\", \"ac\", \"ad\", \"ae\", \"af\", \"b0\", \"b1\", \"b2\", \"b3\", \"b4\", \"b5\", \"b6\", \"b7\", \"b8\", \"b9\", \"ba\", \"bb\", \"bc\", \"bd\", \"be\", \"bf\", \"c0\", \"c1\", \"c2\", \"c3\", \"c4\", \"c5\", \"c6\", \"c7\", \"c8\", \"c9\", \"ca\", \"cb\", \"cc\", \"cd\", \"ce\", \"cf\", \"d0\", \"d1\", \"d2\", \"d3\", \"d4\", \"d5\", \"d6\", \"d7\", \"d8\", \"d9\", \"da\", \"db\", \"dc\", \"dd\", \"de\", \"df\", \"e0\", \"e1\", \"e2\", \"e3\", \"e4\", \"e5\", \"e6\", \"e7\", \"e8\", \"e9\", \"ea\", \"eb\", \"ec\", \"ed\", \"ee\", \"ef\", \"f0\", \"f1\", \"f2\", \"f3\", \"f4\", \"f5\", \"f6\", \"f7\", \"f8\", \"f9\", \"fa\", \"fb\", \"fc\", \"fd\", \"fe\", \"ff\"];\nvar _seed = 1234567;\nvar DEG2RAD = Math.PI / 180;\nvar RAD2DEG = 180 / Math.PI;\nfunction generateUUID() {\n  const d0 = Math.random() * 4294967295 | 0;\n  const d1 = Math.random() * 4294967295 | 0;\n  const d2 = Math.random() * 4294967295 | 0;\n  const d3 = Math.random() * 4294967295 | 0;\n  const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + \"-\" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + \"-\" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + \"-\" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + \"-\" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255];\n  return uuid.toLowerCase();\n}\nfunction clamp(value, min, max2) {\n  return Math.max(min, Math.min(max2, value));\n}\nfunction euclideanModulo(n2, m) {\n  return (n2 % m + m) % m;\n}\nfunction mapLinear(x2, a1, a2, b1, b22) {\n  return b1 + (x2 - a1) * (b22 - b1) / (a2 - a1);\n}\nfunction inverseLerp(x2, y, value) {\n  if (x2 !== y) {\n    return (value - x2) / (y - x2);\n  } else {\n    return 0;\n  }\n}\nfunction lerp(x2, y, t2) {\n  return (1 - t2) * x2 + t2 * y;\n}\nfunction damp(x2, y, lambda, dt2) {\n  return lerp(x2, y, 1 - Math.exp(-lambda * dt2));\n}\nfunction pingpong(x2, length = 1) {\n  return length - Math.abs(euclideanModulo(x2, length * 2) - length);\n}\nfunction smoothstep(x2, min, max2) {\n  if (x2 <= min)\n    return 0;\n  if (x2 >= max2)\n    return 1;\n  x2 = (x2 - min) / (max2 - min);\n  return x2 * x2 * (3 - 2 * x2);\n}\nfunction smootherstep(x2, min, max2) {\n  if (x2 <= min)\n    return 0;\n  if (x2 >= max2)\n    return 1;\n  x2 = (x2 - min) / (max2 - min);\n  return x2 * x2 * x2 * (x2 * (x2 * 6 - 15) + 10);\n}\nfunction randInt(low, high) {\n  return low + Math.floor(Math.random() * (high - low + 1));\n}\nfunction randFloat(low, high) {\n  return low + Math.random() * (high - low);\n}\nfunction randFloatSpread(range) {\n  return range * (0.5 - Math.random());\n}\nfunction seededRandom(s) {\n  if (s !== void 0)\n    _seed = s;\n  let t2 = _seed += 1831565813;\n  t2 = Math.imul(t2 ^ t2 >>> 15, t2 | 1);\n  t2 ^= t2 + Math.imul(t2 ^ t2 >>> 7, t2 | 61);\n  return ((t2 ^ t2 >>> 14) >>> 0) / 4294967296;\n}\nfunction degToRad(degrees) {\n  return degrees * DEG2RAD;\n}\nfunction radToDeg(radians) {\n  return radians * RAD2DEG;\n}\nfunction isPowerOfTwo(value) {\n  return (value & value - 1) === 0 && value !== 0;\n}\nfunction ceilPowerOfTwo(value) {\n  return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n}\nfunction floorPowerOfTwo(value) {\n  return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n}\nfunction setQuaternionFromProperEuler(q, a, b, c, order) {\n  const cos = Math.cos;\n  const sin = Math.sin;\n  const c2 = cos(b / 2);\n  const s2 = sin(b / 2);\n  const c13 = cos((a + c) / 2);\n  const s13 = sin((a + c) / 2);\n  const c1_3 = cos((a - c) / 2);\n  const s1_3 = sin((a - c) / 2);\n  const c3_1 = cos((c - a) / 2);\n  const s3_1 = sin((c - a) / 2);\n  switch (order) {\n    case \"XYX\":\n      q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);\n      break;\n    case \"YZY\":\n      q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);\n      break;\n    case \"ZXZ\":\n      q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);\n      break;\n    case \"XZX\":\n      q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);\n      break;\n    case \"YXY\":\n      q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);\n      break;\n    case \"ZYZ\":\n      q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13);\n      break;\n    default:\n      console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \" + order);\n  }\n}\nfunction denormalize(value, array) {\n  switch (array.constructor) {\n    case Float32Array:\n      return value;\n    case Uint16Array:\n      return value / 65535;\n    case Uint8Array:\n      return value / 255;\n    case Int16Array:\n      return Math.max(value / 32767, -1);\n    case Int8Array:\n      return Math.max(value / 127, -1);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nfunction normalize(value, array) {\n  switch (array.constructor) {\n    case Float32Array:\n      return value;\n    case Uint16Array:\n      return Math.round(value * 65535);\n    case Uint8Array:\n      return Math.round(value * 255);\n    case Int16Array:\n      return Math.round(value * 32767);\n    case Int8Array:\n      return Math.round(value * 127);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nvar MathUtils = Object.freeze({\n  __proto__: null,\n  DEG2RAD,\n  RAD2DEG,\n  generateUUID,\n  clamp,\n  euclideanModulo,\n  mapLinear,\n  inverseLerp,\n  lerp,\n  damp,\n  pingpong,\n  smoothstep,\n  smootherstep,\n  randInt,\n  randFloat,\n  randFloatSpread,\n  seededRandom,\n  degToRad,\n  radToDeg,\n  isPowerOfTwo,\n  ceilPowerOfTwo,\n  floorPowerOfTwo,\n  setQuaternionFromProperEuler,\n  normalize,\n  denormalize\n});\nvar Vector2 = class _Vector2 {\n  constructor(x2 = 0, y = 0) {\n    _Vector2.prototype.isVector2 = true;\n    this.x = x2;\n    this.y = y;\n  }\n  get width() {\n    return this.x;\n  }\n  set width(value) {\n    this.x = value;\n  }\n  get height() {\n    return this.y;\n  }\n  set height(value) {\n    this.y = value;\n  }\n  set(x2, y) {\n    this.x = x2;\n    this.y = y;\n    return this;\n  }\n  setScalar(scalar) {\n    this.x = scalar;\n    this.y = scalar;\n    return this;\n  }\n  setX(x2) {\n    this.x = x2;\n    return this;\n  }\n  setY(y) {\n    this.y = y;\n    return this;\n  }\n  setComponent(index, value) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n  getComponent(index) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y);\n  }\n  copy(v) {\n    this.x = v.x;\n    this.y = v.y;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    return this;\n  }\n  addScalar(s) {\n    this.x += s;\n    this.y += s;\n    return this;\n  }\n  addVectors(a, b) {\n    this.x = a.x + b.x;\n    this.y = a.y + b.y;\n    return this;\n  }\n  addScaledVector(v, s) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    return this;\n  }\n  subScalar(s) {\n    this.x -= s;\n    this.y -= s;\n    return this;\n  }\n  subVectors(a, b) {\n    this.x = a.x - b.x;\n    this.y = a.y - b.y;\n    return this;\n  }\n  multiply(v) {\n    this.x *= v.x;\n    this.y *= v.y;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    return this;\n  }\n  divide(v) {\n    this.x /= v.x;\n    this.y /= v.y;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  applyMatrix3(m) {\n    const x2 = this.x, y = this.y;\n    const e = m.elements;\n    this.x = e[0] * x2 + e[3] * y + e[6];\n    this.y = e[1] * x2 + e[4] * y + e[7];\n    return this;\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    return this;\n  }\n  clamp(min, max2) {\n    this.x = Math.max(min.x, Math.min(max2.x, this.x));\n    this.y = Math.max(min.y, Math.min(max2.y, this.y));\n    return this;\n  }\n  clampScalar(minVal, maxVal) {\n    this.x = Math.max(minVal, Math.min(maxVal, this.x));\n    this.y = Math.max(minVal, Math.min(maxVal, this.y));\n    return this;\n  }\n  clampLength(min, max2) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max2, length)));\n  }\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    return this;\n  }\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    return this;\n  }\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    return this;\n  }\n  roundToZero() {\n    this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n    this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n    return this;\n  }\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    return this;\n  }\n  dot(v) {\n    return this.x * v.x + this.y * v.y;\n  }\n  cross(v) {\n    return this.x * v.y - this.y * v.x;\n  }\n  lengthSq() {\n    return this.x * this.x + this.y * this.y;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  angle() {\n    const angle = Math.atan2(-this.y, -this.x) + Math.PI;\n    return angle;\n  }\n  distanceTo(v) {\n    return Math.sqrt(this.distanceToSquared(v));\n  }\n  distanceToSquared(v) {\n    const dx = this.x - v.x, dy = this.y - v.y;\n    return dx * dx + dy * dy;\n  }\n  manhattanDistanceTo(v) {\n    return Math.abs(this.x - v.x) + Math.abs(this.y - v.y);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v, alpha) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    return this;\n  }\n  lerpVectors(v1, v2, alpha) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    return this;\n  }\n  equals(v) {\n    return v.x === this.x && v.y === this.y;\n  }\n  fromArray(array, offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.x = attribute.getX(index);\n    this.y = attribute.getY(index);\n    return this;\n  }\n  rotateAround(center, angle) {\n    const c = Math.cos(angle), s = Math.sin(angle);\n    const x2 = this.x - center.x;\n    const y = this.y - center.y;\n    this.x = x2 * c - y * s + center.x;\n    this.y = x2 * s + y * c + center.y;\n    return this;\n  }\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    return this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n  }\n};\nvar Matrix3 = class _Matrix3 {\n  constructor() {\n    _Matrix3.prototype.isMatrix3 = true;\n    this.elements = [\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1\n    ];\n  }\n  set(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n    const te2 = this.elements;\n    te2[0] = n11;\n    te2[1] = n21;\n    te2[2] = n31;\n    te2[3] = n12;\n    te2[4] = n22;\n    te2[5] = n32;\n    te2[6] = n13;\n    te2[7] = n23;\n    te2[8] = n33;\n    return this;\n  }\n  identity() {\n    this.set(\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  copy(m) {\n    const te2 = this.elements;\n    const me = m.elements;\n    te2[0] = me[0];\n    te2[1] = me[1];\n    te2[2] = me[2];\n    te2[3] = me[3];\n    te2[4] = me[4];\n    te2[5] = me[5];\n    te2[6] = me[6];\n    te2[7] = me[7];\n    te2[8] = me[8];\n    return this;\n  }\n  extractBasis(xAxis, yAxis, zAxis) {\n    xAxis.setFromMatrix3Column(this, 0);\n    yAxis.setFromMatrix3Column(this, 1);\n    zAxis.setFromMatrix3Column(this, 2);\n    return this;\n  }\n  setFromMatrix4(m) {\n    const me = m.elements;\n    this.set(\n      me[0],\n      me[4],\n      me[8],\n      me[1],\n      me[5],\n      me[9],\n      me[2],\n      me[6],\n      me[10]\n    );\n    return this;\n  }\n  multiply(m) {\n    return this.multiplyMatrices(this, m);\n  }\n  premultiply(m) {\n    return this.multiplyMatrices(m, this);\n  }\n  multiplyMatrices(a, b) {\n    const ae = a.elements;\n    const be = b.elements;\n    const te2 = this.elements;\n    const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n    const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n    const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n    const b11 = be[0], b12 = be[3], b13 = be[6];\n    const b21 = be[1], b22 = be[4], b23 = be[7];\n    const b31 = be[2], b32 = be[5], b33 = be[8];\n    te2[0] = a11 * b11 + a12 * b21 + a13 * b31;\n    te2[3] = a11 * b12 + a12 * b22 + a13 * b32;\n    te2[6] = a11 * b13 + a12 * b23 + a13 * b33;\n    te2[1] = a21 * b11 + a22 * b21 + a23 * b31;\n    te2[4] = a21 * b12 + a22 * b22 + a23 * b32;\n    te2[7] = a21 * b13 + a22 * b23 + a23 * b33;\n    te2[2] = a31 * b11 + a32 * b21 + a33 * b31;\n    te2[5] = a31 * b12 + a32 * b22 + a33 * b32;\n    te2[8] = a31 * b13 + a32 * b23 + a33 * b33;\n    return this;\n  }\n  multiplyScalar(s) {\n    const te2 = this.elements;\n    te2[0] *= s;\n    te2[3] *= s;\n    te2[6] *= s;\n    te2[1] *= s;\n    te2[4] *= s;\n    te2[7] *= s;\n    te2[2] *= s;\n    te2[5] *= s;\n    te2[8] *= s;\n    return this;\n  }\n  determinant() {\n    const te2 = this.elements;\n    const a = te2[0], b = te2[1], c = te2[2], d = te2[3], e = te2[4], f = te2[5], g2 = te2[6], h = te2[7], i = te2[8];\n    return a * e * i - a * f * h - b * d * i + b * f * g2 + c * d * h - c * e * g2;\n  }\n  invert() {\n    const te2 = this.elements, n11 = te2[0], n21 = te2[1], n31 = te2[2], n12 = te2[3], n22 = te2[4], n32 = te2[5], n13 = te2[6], n23 = te2[7], n33 = te2[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;\n    if (det === 0)\n      return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n    const detInv = 1 / det;\n    te2[0] = t11 * detInv;\n    te2[1] = (n31 * n23 - n33 * n21) * detInv;\n    te2[2] = (n32 * n21 - n31 * n22) * detInv;\n    te2[3] = t12 * detInv;\n    te2[4] = (n33 * n11 - n31 * n13) * detInv;\n    te2[5] = (n31 * n12 - n32 * n11) * detInv;\n    te2[6] = t13 * detInv;\n    te2[7] = (n21 * n13 - n23 * n11) * detInv;\n    te2[8] = (n22 * n11 - n21 * n12) * detInv;\n    return this;\n  }\n  transpose() {\n    let tmp2;\n    const m = this.elements;\n    tmp2 = m[1];\n    m[1] = m[3];\n    m[3] = tmp2;\n    tmp2 = m[2];\n    m[2] = m[6];\n    m[6] = tmp2;\n    tmp2 = m[5];\n    m[5] = m[7];\n    m[7] = tmp2;\n    return this;\n  }\n  getNormalMatrix(matrix42) {\n    return this.setFromMatrix4(matrix42).invert().transpose();\n  }\n  transposeIntoArray(r) {\n    const m = this.elements;\n    r[0] = m[0];\n    r[1] = m[3];\n    r[2] = m[6];\n    r[3] = m[1];\n    r[4] = m[4];\n    r[5] = m[7];\n    r[6] = m[2];\n    r[7] = m[5];\n    r[8] = m[8];\n    return this;\n  }\n  setUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n    const c = Math.cos(rotation);\n    const s = Math.sin(rotation);\n    this.set(\n      sx * c,\n      sx * s,\n      -sx * (c * cx + s * cy) + cx + tx,\n      -sy * s,\n      sy * c,\n      -sy * (-s * cx + c * cy) + cy + ty,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  scale(sx, sy) {\n    const te2 = this.elements;\n    te2[0] *= sx;\n    te2[3] *= sx;\n    te2[6] *= sx;\n    te2[1] *= sy;\n    te2[4] *= sy;\n    te2[7] *= sy;\n    return this;\n  }\n  rotate(theta) {\n    const c = Math.cos(theta);\n    const s = Math.sin(theta);\n    const te2 = this.elements;\n    const a11 = te2[0], a12 = te2[3], a13 = te2[6];\n    const a21 = te2[1], a22 = te2[4], a23 = te2[7];\n    te2[0] = c * a11 + s * a21;\n    te2[3] = c * a12 + s * a22;\n    te2[6] = c * a13 + s * a23;\n    te2[1] = -s * a11 + c * a21;\n    te2[4] = -s * a12 + c * a22;\n    te2[7] = -s * a13 + c * a23;\n    return this;\n  }\n  translate(tx, ty) {\n    const te2 = this.elements;\n    te2[0] += tx * te2[2];\n    te2[3] += tx * te2[5];\n    te2[6] += tx * te2[8];\n    te2[1] += ty * te2[2];\n    te2[4] += ty * te2[5];\n    te2[7] += ty * te2[8];\n    return this;\n  }\n  equals(matrix) {\n    const te2 = this.elements;\n    const me = matrix.elements;\n    for (let i = 0; i < 9; i++) {\n      if (te2[i] !== me[i])\n        return false;\n    }\n    return true;\n  }\n  fromArray(array, offset = 0) {\n    for (let i = 0; i < 9; i++) {\n      this.elements[i] = array[i + offset];\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const te2 = this.elements;\n    array[offset] = te2[0];\n    array[offset + 1] = te2[1];\n    array[offset + 2] = te2[2];\n    array[offset + 3] = te2[3];\n    array[offset + 4] = te2[4];\n    array[offset + 5] = te2[5];\n    array[offset + 6] = te2[6];\n    array[offset + 7] = te2[7];\n    array[offset + 8] = te2[8];\n    return array;\n  }\n  clone() {\n    return new this.constructor().fromArray(this.elements);\n  }\n};\nfunction arrayNeedsUint32(array) {\n  for (let i = array.length - 1; i >= 0; --i) {\n    if (array[i] >= 65535)\n      return true;\n  }\n  return false;\n}\nfunction createElementNS(name) {\n  return document.createElementNS(\"http://www.w3.org/1999/xhtml\", name);\n}\nfunction SRGBToLinear(c) {\n  return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n}\nfunction LinearToSRGB(c) {\n  return c < 31308e-7 ? c * 12.92 : 1.055 * Math.pow(c, 0.41666) - 0.055;\n}\nvar FN = {\n  [SRGBColorSpace]: { [LinearSRGBColorSpace]: SRGBToLinear },\n  [LinearSRGBColorSpace]: { [SRGBColorSpace]: LinearToSRGB }\n};\nvar ColorManagement = {\n  legacyMode: true,\n  get workingColorSpace() {\n    return LinearSRGBColorSpace;\n  },\n  set workingColorSpace(colorSpace) {\n    console.warn(\"THREE.ColorManagement: .workingColorSpace is readonly.\");\n  },\n  convert: function(color, sourceColorSpace, targetColorSpace) {\n    if (this.legacyMode || sourceColorSpace === targetColorSpace || !sourceColorSpace || !targetColorSpace) {\n      return color;\n    }\n    if (FN[sourceColorSpace] && FN[sourceColorSpace][targetColorSpace] !== void 0) {\n      const fn = FN[sourceColorSpace][targetColorSpace];\n      color.r = fn(color.r);\n      color.g = fn(color.g);\n      color.b = fn(color.b);\n      return color;\n    }\n    throw new Error(\"Unsupported color space conversion.\");\n  },\n  fromWorkingColorSpace: function(color, targetColorSpace) {\n    return this.convert(color, this.workingColorSpace, targetColorSpace);\n  },\n  toWorkingColorSpace: function(color, sourceColorSpace) {\n    return this.convert(color, sourceColorSpace, this.workingColorSpace);\n  }\n};\nvar _colorKeywords = {\n  \"aliceblue\": 15792383,\n  \"antiquewhite\": 16444375,\n  \"aqua\": 65535,\n  \"aquamarine\": 8388564,\n  \"azure\": 15794175,\n  \"beige\": 16119260,\n  \"bisque\": 16770244,\n  \"black\": 0,\n  \"blanchedalmond\": 16772045,\n  \"blue\": 255,\n  \"blueviolet\": 9055202,\n  \"brown\": 10824234,\n  \"burlywood\": 14596231,\n  \"cadetblue\": 6266528,\n  \"chartreuse\": 8388352,\n  \"chocolate\": 13789470,\n  \"coral\": 16744272,\n  \"cornflowerblue\": 6591981,\n  \"cornsilk\": 16775388,\n  \"crimson\": 14423100,\n  \"cyan\": 65535,\n  \"darkblue\": 139,\n  \"darkcyan\": 35723,\n  \"darkgoldenrod\": 12092939,\n  \"darkgray\": 11119017,\n  \"darkgreen\": 25600,\n  \"darkgrey\": 11119017,\n  \"darkkhaki\": 12433259,\n  \"darkmagenta\": 9109643,\n  \"darkolivegreen\": 5597999,\n  \"darkorange\": 16747520,\n  \"darkorchid\": 10040012,\n  \"darkred\": 9109504,\n  \"darksalmon\": 15308410,\n  \"darkseagreen\": 9419919,\n  \"darkslateblue\": 4734347,\n  \"darkslategray\": 3100495,\n  \"darkslategrey\": 3100495,\n  \"darkturquoise\": 52945,\n  \"darkviolet\": 9699539,\n  \"deeppink\": 16716947,\n  \"deepskyblue\": 49151,\n  \"dimgray\": 6908265,\n  \"dimgrey\": 6908265,\n  \"dodgerblue\": 2003199,\n  \"firebrick\": 11674146,\n  \"floralwhite\": 16775920,\n  \"forestgreen\": 2263842,\n  \"fuchsia\": 16711935,\n  \"gainsboro\": 14474460,\n  \"ghostwhite\": 16316671,\n  \"gold\": 16766720,\n  \"goldenrod\": 14329120,\n  \"gray\": 8421504,\n  \"green\": 32768,\n  \"greenyellow\": 11403055,\n  \"grey\": 8421504,\n  \"honeydew\": 15794160,\n  \"hotpink\": 16738740,\n  \"indianred\": 13458524,\n  \"indigo\": 4915330,\n  \"ivory\": 16777200,\n  \"khaki\": 15787660,\n  \"lavender\": 15132410,\n  \"lavenderblush\": 16773365,\n  \"lawngreen\": 8190976,\n  \"lemonchiffon\": 16775885,\n  \"lightblue\": 11393254,\n  \"lightcoral\": 15761536,\n  \"lightcyan\": 14745599,\n  \"lightgoldenrodyellow\": 16448210,\n  \"lightgray\": 13882323,\n  \"lightgreen\": 9498256,\n  \"lightgrey\": 13882323,\n  \"lightpink\": 16758465,\n  \"lightsalmon\": 16752762,\n  \"lightseagreen\": 2142890,\n  \"lightskyblue\": 8900346,\n  \"lightslategray\": 7833753,\n  \"lightslategrey\": 7833753,\n  \"lightsteelblue\": 11584734,\n  \"lightyellow\": 16777184,\n  \"lime\": 65280,\n  \"limegreen\": 3329330,\n  \"linen\": 16445670,\n  \"magenta\": 16711935,\n  \"maroon\": 8388608,\n  \"mediumaquamarine\": 6737322,\n  \"mediumblue\": 205,\n  \"mediumorchid\": 12211667,\n  \"mediumpurple\": 9662683,\n  \"mediumseagreen\": 3978097,\n  \"mediumslateblue\": 8087790,\n  \"mediumspringgreen\": 64154,\n  \"mediumturquoise\": 4772300,\n  \"mediumvioletred\": 13047173,\n  \"midnightblue\": 1644912,\n  \"mintcream\": 16121850,\n  \"mistyrose\": 16770273,\n  \"moccasin\": 16770229,\n  \"navajowhite\": 16768685,\n  \"navy\": 128,\n  \"oldlace\": 16643558,\n  \"olive\": 8421376,\n  \"olivedrab\": 7048739,\n  \"orange\": 16753920,\n  \"orangered\": 16729344,\n  \"orchid\": 14315734,\n  \"palegoldenrod\": 15657130,\n  \"palegreen\": 10025880,\n  \"paleturquoise\": 11529966,\n  \"palevioletred\": 14381203,\n  \"papayawhip\": 16773077,\n  \"peachpuff\": 16767673,\n  \"peru\": 13468991,\n  \"pink\": 16761035,\n  \"plum\": 14524637,\n  \"powderblue\": 11591910,\n  \"purple\": 8388736,\n  \"rebeccapurple\": 6697881,\n  \"red\": 16711680,\n  \"rosybrown\": 12357519,\n  \"royalblue\": 4286945,\n  \"saddlebrown\": 9127187,\n  \"salmon\": 16416882,\n  \"sandybrown\": 16032864,\n  \"seagreen\": 3050327,\n  \"seashell\": 16774638,\n  \"sienna\": 10506797,\n  \"silver\": 12632256,\n  \"skyblue\": 8900331,\n  \"slateblue\": 6970061,\n  \"slategray\": 7372944,\n  \"slategrey\": 7372944,\n  \"snow\": 16775930,\n  \"springgreen\": 65407,\n  \"steelblue\": 4620980,\n  \"tan\": 13808780,\n  \"teal\": 32896,\n  \"thistle\": 14204888,\n  \"tomato\": 16737095,\n  \"turquoise\": 4251856,\n  \"violet\": 15631086,\n  \"wheat\": 16113331,\n  \"white\": 16777215,\n  \"whitesmoke\": 16119285,\n  \"yellow\": 16776960,\n  \"yellowgreen\": 10145074\n};\nvar _rgb = { r: 0, g: 0, b: 0 };\nvar _hslA = { h: 0, s: 0, l: 0 };\nvar _hslB = { h: 0, s: 0, l: 0 };\nfunction hue2rgb(p2, q, t2) {\n  if (t2 < 0)\n    t2 += 1;\n  if (t2 > 1)\n    t2 -= 1;\n  if (t2 < 1 / 6)\n    return p2 + (q - p2) * 6 * t2;\n  if (t2 < 1 / 2)\n    return q;\n  if (t2 < 2 / 3)\n    return p2 + (q - p2) * 6 * (2 / 3 - t2);\n  return p2;\n}\nfunction toComponents(source, target2) {\n  target2.r = source.r;\n  target2.g = source.g;\n  target2.b = source.b;\n  return target2;\n}\nvar Color = class {\n  constructor(r, g2, b) {\n    this.isColor = true;\n    this.r = 1;\n    this.g = 1;\n    this.b = 1;\n    if (g2 === void 0 && b === void 0) {\n      return this.set(r);\n    }\n    return this.setRGB(r, g2, b);\n  }\n  set(value) {\n    if (value && value.isColor) {\n      this.copy(value);\n    } else if (typeof value === \"number\") {\n      this.setHex(value);\n    } else if (typeof value === \"string\") {\n      this.setStyle(value);\n    }\n    return this;\n  }\n  setScalar(scalar) {\n    this.r = scalar;\n    this.g = scalar;\n    this.b = scalar;\n    return this;\n  }\n  setHex(hex, colorSpace = SRGBColorSpace) {\n    hex = Math.floor(hex);\n    this.r = (hex >> 16 & 255) / 255;\n    this.g = (hex >> 8 & 255) / 255;\n    this.b = (hex & 255) / 255;\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setRGB(r, g2, b, colorSpace = LinearSRGBColorSpace) {\n    this.r = r;\n    this.g = g2;\n    this.b = b;\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setHSL(h, s, l, colorSpace = LinearSRGBColorSpace) {\n    h = euclideanModulo(h, 1);\n    s = clamp(s, 0, 1);\n    l = clamp(l, 0, 1);\n    if (s === 0) {\n      this.r = this.g = this.b = l;\n    } else {\n      const p2 = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n      const q = 2 * l - p2;\n      this.r = hue2rgb(q, p2, h + 1 / 3);\n      this.g = hue2rgb(q, p2, h);\n      this.b = hue2rgb(q, p2, h - 1 / 3);\n    }\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setStyle(style2, colorSpace = SRGBColorSpace) {\n    function handleAlpha(string) {\n      if (string === void 0)\n        return;\n      if (parseFloat(string) < 1) {\n        console.warn(\"THREE.Color: Alpha component of \" + style2 + \" will be ignored.\");\n      }\n    }\n    let m;\n    if (m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(style2)) {\n      let color;\n      const name = m[1];\n      const components = m[2];\n      switch (name) {\n        case \"rgb\":\n        case \"rgba\":\n          if (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n            this.r = Math.min(255, parseInt(color[1], 10)) / 255;\n            this.g = Math.min(255, parseInt(color[2], 10)) / 255;\n            this.b = Math.min(255, parseInt(color[3], 10)) / 255;\n            ColorManagement.toWorkingColorSpace(this, colorSpace);\n            handleAlpha(color[4]);\n            return this;\n          }\n          if (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n            this.r = Math.min(100, parseInt(color[1], 10)) / 100;\n            this.g = Math.min(100, parseInt(color[2], 10)) / 100;\n            this.b = Math.min(100, parseInt(color[3], 10)) / 100;\n            ColorManagement.toWorkingColorSpace(this, colorSpace);\n            handleAlpha(color[4]);\n            return this;\n          }\n          break;\n        case \"hsl\":\n        case \"hsla\":\n          if (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n            const h = parseFloat(color[1]) / 360;\n            const s = parseFloat(color[2]) / 100;\n            const l = parseFloat(color[3]) / 100;\n            handleAlpha(color[4]);\n            return this.setHSL(h, s, l, colorSpace);\n          }\n          break;\n      }\n    } else if (m = /^\\#([A-Fa-f\\d]+)$/.exec(style2)) {\n      const hex = m[1];\n      const size = hex.length;\n      if (size === 3) {\n        this.r = parseInt(hex.charAt(0) + hex.charAt(0), 16) / 255;\n        this.g = parseInt(hex.charAt(1) + hex.charAt(1), 16) / 255;\n        this.b = parseInt(hex.charAt(2) + hex.charAt(2), 16) / 255;\n        ColorManagement.toWorkingColorSpace(this, colorSpace);\n        return this;\n      } else if (size === 6) {\n        this.r = parseInt(hex.charAt(0) + hex.charAt(1), 16) / 255;\n        this.g = parseInt(hex.charAt(2) + hex.charAt(3), 16) / 255;\n        this.b = parseInt(hex.charAt(4) + hex.charAt(5), 16) / 255;\n        ColorManagement.toWorkingColorSpace(this, colorSpace);\n        return this;\n      }\n    }\n    if (style2 && style2.length > 0) {\n      return this.setColorName(style2, colorSpace);\n    }\n    return this;\n  }\n  setColorName(style2, colorSpace = SRGBColorSpace) {\n    const hex = _colorKeywords[style2.toLowerCase()];\n    if (hex !== void 0) {\n      this.setHex(hex, colorSpace);\n    } else {\n      console.warn(\"THREE.Color: Unknown color \" + style2);\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor(this.r, this.g, this.b);\n  }\n  copy(color) {\n    this.r = color.r;\n    this.g = color.g;\n    this.b = color.b;\n    return this;\n  }\n  copySRGBToLinear(color) {\n    this.r = SRGBToLinear(color.r);\n    this.g = SRGBToLinear(color.g);\n    this.b = SRGBToLinear(color.b);\n    return this;\n  }\n  copyLinearToSRGB(color) {\n    this.r = LinearToSRGB(color.r);\n    this.g = LinearToSRGB(color.g);\n    this.b = LinearToSRGB(color.b);\n    return this;\n  }\n  convertSRGBToLinear() {\n    this.copySRGBToLinear(this);\n    return this;\n  }\n  convertLinearToSRGB() {\n    this.copyLinearToSRGB(this);\n    return this;\n  }\n  getHex(colorSpace = SRGBColorSpace) {\n    ColorManagement.fromWorkingColorSpace(toComponents(this, _rgb), colorSpace);\n    return clamp(_rgb.r * 255, 0, 255) << 16 ^ clamp(_rgb.g * 255, 0, 255) << 8 ^ clamp(_rgb.b * 255, 0, 255) << 0;\n  }\n  getHexString(colorSpace = SRGBColorSpace) {\n    return (\"000000\" + this.getHex(colorSpace).toString(16)).slice(-6);\n  }\n  getHSL(target2, colorSpace = LinearSRGBColorSpace) {\n    ColorManagement.fromWorkingColorSpace(toComponents(this, _rgb), colorSpace);\n    const r = _rgb.r, g2 = _rgb.g, b = _rgb.b;\n    const max2 = Math.max(r, g2, b);\n    const min = Math.min(r, g2, b);\n    let hue, saturation;\n    const lightness = (min + max2) / 2;\n    if (min === max2) {\n      hue = 0;\n      saturation = 0;\n    } else {\n      const delta = max2 - min;\n      saturation = lightness <= 0.5 ? delta / (max2 + min) : delta / (2 - max2 - min);\n      switch (max2) {\n        case r:\n          hue = (g2 - b) / delta + (g2 < b ? 6 : 0);\n          break;\n        case g2:\n          hue = (b - r) / delta + 2;\n          break;\n        case b:\n          hue = (r - g2) / delta + 4;\n          break;\n      }\n      hue /= 6;\n    }\n    target2.h = hue;\n    target2.s = saturation;\n    target2.l = lightness;\n    return target2;\n  }\n  getRGB(target2, colorSpace = LinearSRGBColorSpace) {\n    ColorManagement.fromWorkingColorSpace(toComponents(this, _rgb), colorSpace);\n    target2.r = _rgb.r;\n    target2.g = _rgb.g;\n    target2.b = _rgb.b;\n    return target2;\n  }\n  getStyle(colorSpace = SRGBColorSpace) {\n    ColorManagement.fromWorkingColorSpace(toComponents(this, _rgb), colorSpace);\n    if (colorSpace !== SRGBColorSpace) {\n      return `color(${colorSpace} ${_rgb.r} ${_rgb.g} ${_rgb.b})`;\n    }\n    return `rgb(${_rgb.r * 255 | 0},${_rgb.g * 255 | 0},${_rgb.b * 255 | 0})`;\n  }\n  offsetHSL(h, s, l) {\n    this.getHSL(_hslA);\n    _hslA.h += h;\n    _hslA.s += s;\n    _hslA.l += l;\n    this.setHSL(_hslA.h, _hslA.s, _hslA.l);\n    return this;\n  }\n  add(color) {\n    this.r += color.r;\n    this.g += color.g;\n    this.b += color.b;\n    return this;\n  }\n  addColors(color1, color2) {\n    this.r = color1.r + color2.r;\n    this.g = color1.g + color2.g;\n    this.b = color1.b + color2.b;\n    return this;\n  }\n  addScalar(s) {\n    this.r += s;\n    this.g += s;\n    this.b += s;\n    return this;\n  }\n  sub(color) {\n    this.r = Math.max(0, this.r - color.r);\n    this.g = Math.max(0, this.g - color.g);\n    this.b = Math.max(0, this.b - color.b);\n    return this;\n  }\n  multiply(color) {\n    this.r *= color.r;\n    this.g *= color.g;\n    this.b *= color.b;\n    return this;\n  }\n  multiplyScalar(s) {\n    this.r *= s;\n    this.g *= s;\n    this.b *= s;\n    return this;\n  }\n  lerp(color, alpha) {\n    this.r += (color.r - this.r) * alpha;\n    this.g += (color.g - this.g) * alpha;\n    this.b += (color.b - this.b) * alpha;\n    return this;\n  }\n  lerpColors(color1, color2, alpha) {\n    this.r = color1.r + (color2.r - color1.r) * alpha;\n    this.g = color1.g + (color2.g - color1.g) * alpha;\n    this.b = color1.b + (color2.b - color1.b) * alpha;\n    return this;\n  }\n  lerpHSL(color, alpha) {\n    this.getHSL(_hslA);\n    color.getHSL(_hslB);\n    const h = lerp(_hslA.h, _hslB.h, alpha);\n    const s = lerp(_hslA.s, _hslB.s, alpha);\n    const l = lerp(_hslA.l, _hslB.l, alpha);\n    this.setHSL(h, s, l);\n    return this;\n  }\n  equals(c) {\n    return c.r === this.r && c.g === this.g && c.b === this.b;\n  }\n  fromArray(array, offset = 0) {\n    this.r = array[offset];\n    this.g = array[offset + 1];\n    this.b = array[offset + 2];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.r;\n    array[offset + 1] = this.g;\n    array[offset + 2] = this.b;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.r = attribute.getX(index);\n    this.g = attribute.getY(index);\n    this.b = attribute.getZ(index);\n    return this;\n  }\n  toJSON() {\n    return this.getHex();\n  }\n  *[Symbol.iterator]() {\n    yield this.r;\n    yield this.g;\n    yield this.b;\n  }\n};\nColor.NAMES = _colorKeywords;\nvar _canvas;\nvar ImageUtils = class {\n  static getDataURL(image) {\n    if (/^data:/i.test(image.src)) {\n      return image.src;\n    }\n    if (typeof HTMLCanvasElement == \"undefined\") {\n      return image.src;\n    }\n    let canvas;\n    if (image instanceof HTMLCanvasElement) {\n      canvas = image;\n    } else {\n      if (_canvas === void 0)\n        _canvas = createElementNS(\"canvas\");\n      _canvas.width = image.width;\n      _canvas.height = image.height;\n      const context = _canvas.getContext(\"2d\");\n      if (image instanceof ImageData) {\n        context.putImageData(image, 0, 0);\n      } else {\n        context.drawImage(image, 0, 0, image.width, image.height);\n      }\n      canvas = _canvas;\n    }\n    if (canvas.width > 2048 || canvas.height > 2048) {\n      console.warn(\"THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons\", image);\n      return canvas.toDataURL(\"image/jpeg\", 0.6);\n    } else {\n      return canvas.toDataURL(\"image/png\");\n    }\n  }\n  static sRGBToLinear(image) {\n    if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n      const canvas = createElementNS(\"canvas\");\n      canvas.width = image.width;\n      canvas.height = image.height;\n      const context = canvas.getContext(\"2d\");\n      context.drawImage(image, 0, 0, image.width, image.height);\n      const imageData = context.getImageData(0, 0, image.width, image.height);\n      const data = imageData.data;\n      for (let i = 0; i < data.length; i++) {\n        data[i] = SRGBToLinear(data[i] / 255) * 255;\n      }\n      context.putImageData(imageData, 0, 0);\n      return canvas;\n    } else if (image.data) {\n      const data = image.data.slice(0);\n      for (let i = 0; i < data.length; i++) {\n        if (data instanceof Uint8Array || data instanceof Uint8ClampedArray) {\n          data[i] = Math.floor(SRGBToLinear(data[i] / 255) * 255);\n        } else {\n          data[i] = SRGBToLinear(data[i]);\n        }\n      }\n      return {\n        data,\n        width: image.width,\n        height: image.height\n      };\n    } else {\n      console.warn(\"THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.\");\n      return image;\n    }\n  }\n};\nvar Source = class {\n  constructor(data = null) {\n    this.isSource = true;\n    this.uuid = generateUUID();\n    this.data = data;\n    this.version = 0;\n  }\n  set needsUpdate(value) {\n    if (value === true)\n      this.version++;\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    if (!isRootObject && meta.images[this.uuid] !== void 0) {\n      return meta.images[this.uuid];\n    }\n    const output = {\n      uuid: this.uuid,\n      url: \"\"\n    };\n    const data = this.data;\n    if (data !== null) {\n      let url;\n      if (Array.isArray(data)) {\n        url = [];\n        for (let i = 0, l = data.length; i < l; i++) {\n          if (data[i].isDataTexture) {\n            url.push(serializeImage(data[i].image));\n          } else {\n            url.push(serializeImage(data[i]));\n          }\n        }\n      } else {\n        url = serializeImage(data);\n      }\n      output.url = url;\n    }\n    if (!isRootObject) {\n      meta.images[this.uuid] = output;\n    }\n    return output;\n  }\n};\nfunction serializeImage(image) {\n  if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n    return ImageUtils.getDataURL(image);\n  } else {\n    if (image.data) {\n      return {\n        data: Array.from(image.data),\n        width: image.width,\n        height: image.height,\n        type: image.data.constructor.name\n      };\n    } else {\n      console.warn(\"THREE.Texture: Unable to serialize Texture.\");\n      return {};\n    }\n  }\n}\nvar textureId = 0;\nvar Texture = class _Texture extends EventDispatcher {\n  constructor(image = _Texture.DEFAULT_IMAGE, mapping = _Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding) {\n    super();\n    this.isTexture = true;\n    Object.defineProperty(this, \"id\", { value: textureId++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.source = new Source(image);\n    this.mipmaps = [];\n    this.mapping = mapping;\n    this.wrapS = wrapS;\n    this.wrapT = wrapT;\n    this.magFilter = magFilter;\n    this.minFilter = minFilter;\n    this.anisotropy = anisotropy;\n    this.format = format;\n    this.internalFormat = null;\n    this.type = type;\n    this.offset = new Vector2(0, 0);\n    this.repeat = new Vector2(1, 1);\n    this.center = new Vector2(0, 0);\n    this.rotation = 0;\n    this.matrixAutoUpdate = true;\n    this.matrix = new Matrix3();\n    this.generateMipmaps = true;\n    this.premultiplyAlpha = false;\n    this.flipY = true;\n    this.unpackAlignment = 4;\n    this.encoding = encoding;\n    this.userData = {};\n    this.version = 0;\n    this.onUpdate = null;\n    this.isRenderTargetTexture = false;\n    this.needsPMREMUpdate = false;\n  }\n  get image() {\n    return this.source.data;\n  }\n  set image(value) {\n    this.source.data = value;\n  }\n  updateMatrix() {\n    this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.name = source.name;\n    this.source = source.source;\n    this.mipmaps = source.mipmaps.slice(0);\n    this.mapping = source.mapping;\n    this.wrapS = source.wrapS;\n    this.wrapT = source.wrapT;\n    this.magFilter = source.magFilter;\n    this.minFilter = source.minFilter;\n    this.anisotropy = source.anisotropy;\n    this.format = source.format;\n    this.internalFormat = source.internalFormat;\n    this.type = source.type;\n    this.offset.copy(source.offset);\n    this.repeat.copy(source.repeat);\n    this.center.copy(source.center);\n    this.rotation = source.rotation;\n    this.matrixAutoUpdate = source.matrixAutoUpdate;\n    this.matrix.copy(source.matrix);\n    this.generateMipmaps = source.generateMipmaps;\n    this.premultiplyAlpha = source.premultiplyAlpha;\n    this.flipY = source.flipY;\n    this.unpackAlignment = source.unpackAlignment;\n    this.encoding = source.encoding;\n    this.userData = JSON.parse(JSON.stringify(source.userData));\n    this.needsUpdate = true;\n    return this;\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    if (!isRootObject && meta.textures[this.uuid] !== void 0) {\n      return meta.textures[this.uuid];\n    }\n    const output = {\n      metadata: {\n        version: 4.5,\n        type: \"Texture\",\n        generator: \"Texture.toJSON\"\n      },\n      uuid: this.uuid,\n      name: this.name,\n      image: this.source.toJSON(meta).uuid,\n      mapping: this.mapping,\n      repeat: [this.repeat.x, this.repeat.y],\n      offset: [this.offset.x, this.offset.y],\n      center: [this.center.x, this.center.y],\n      rotation: this.rotation,\n      wrap: [this.wrapS, this.wrapT],\n      format: this.format,\n      type: this.type,\n      encoding: this.encoding,\n      minFilter: this.minFilter,\n      magFilter: this.magFilter,\n      anisotropy: this.anisotropy,\n      flipY: this.flipY,\n      premultiplyAlpha: this.premultiplyAlpha,\n      unpackAlignment: this.unpackAlignment\n    };\n    if (JSON.stringify(this.userData) !== \"{}\")\n      output.userData = this.userData;\n    if (!isRootObject) {\n      meta.textures[this.uuid] = output;\n    }\n    return output;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  transformUv(uv) {\n    if (this.mapping !== UVMapping)\n      return uv;\n    uv.applyMatrix3(this.matrix);\n    if (uv.x < 0 || uv.x > 1) {\n      switch (this.wrapS) {\n        case RepeatWrapping:\n          uv.x = uv.x - Math.floor(uv.x);\n          break;\n        case ClampToEdgeWrapping:\n          uv.x = uv.x < 0 ? 0 : 1;\n          break;\n        case MirroredRepeatWrapping:\n          if (Math.abs(Math.floor(uv.x) % 2) === 1) {\n            uv.x = Math.ceil(uv.x) - uv.x;\n          } else {\n            uv.x = uv.x - Math.floor(uv.x);\n          }\n          break;\n      }\n    }\n    if (uv.y < 0 || uv.y > 1) {\n      switch (this.wrapT) {\n        case RepeatWrapping:\n          uv.y = uv.y - Math.floor(uv.y);\n          break;\n        case ClampToEdgeWrapping:\n          uv.y = uv.y < 0 ? 0 : 1;\n          break;\n        case MirroredRepeatWrapping:\n          if (Math.abs(Math.floor(uv.y) % 2) === 1) {\n            uv.y = Math.ceil(uv.y) - uv.y;\n          } else {\n            uv.y = uv.y - Math.floor(uv.y);\n          }\n          break;\n      }\n    }\n    if (this.flipY) {\n      uv.y = 1 - uv.y;\n    }\n    return uv;\n  }\n  set needsUpdate(value) {\n    if (value === true) {\n      this.version++;\n      this.source.needsUpdate = true;\n    }\n  }\n};\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nvar Vector4 = class _Vector4 {\n  constructor(x2 = 0, y = 0, z = 0, w = 1) {\n    _Vector4.prototype.isVector4 = true;\n    this.x = x2;\n    this.y = y;\n    this.z = z;\n    this.w = w;\n  }\n  get width() {\n    return this.z;\n  }\n  set width(value) {\n    this.z = value;\n  }\n  get height() {\n    return this.w;\n  }\n  set height(value) {\n    this.w = value;\n  }\n  set(x2, y, z, w) {\n    this.x = x2;\n    this.y = y;\n    this.z = z;\n    this.w = w;\n    return this;\n  }\n  setScalar(scalar) {\n    this.x = scalar;\n    this.y = scalar;\n    this.z = scalar;\n    this.w = scalar;\n    return this;\n  }\n  setX(x2) {\n    this.x = x2;\n    return this;\n  }\n  setY(y) {\n    this.y = y;\n    return this;\n  }\n  setZ(z) {\n    this.z = z;\n    return this;\n  }\n  setW(w) {\n    this.w = w;\n    return this;\n  }\n  setComponent(index, value) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      case 2:\n        this.z = value;\n        break;\n      case 3:\n        this.w = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n  getComponent(index) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      case 3:\n        return this.w;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y, this.z, this.w);\n  }\n  copy(v) {\n    this.x = v.x;\n    this.y = v.y;\n    this.z = v.z;\n    this.w = v.w !== void 0 ? v.w : 1;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    this.z += v.z;\n    this.w += v.w;\n    return this;\n  }\n  addScalar(s) {\n    this.x += s;\n    this.y += s;\n    this.z += s;\n    this.w += s;\n    return this;\n  }\n  addVectors(a, b) {\n    this.x = a.x + b.x;\n    this.y = a.y + b.y;\n    this.z = a.z + b.z;\n    this.w = a.w + b.w;\n    return this;\n  }\n  addScaledVector(v, s) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    this.z += v.z * s;\n    this.w += v.w * s;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    this.z -= v.z;\n    this.w -= v.w;\n    return this;\n  }\n  subScalar(s) {\n    this.x -= s;\n    this.y -= s;\n    this.z -= s;\n    this.w -= s;\n    return this;\n  }\n  subVectors(a, b) {\n    this.x = a.x - b.x;\n    this.y = a.y - b.y;\n    this.z = a.z - b.z;\n    this.w = a.w - b.w;\n    return this;\n  }\n  multiply(v) {\n    this.x *= v.x;\n    this.y *= v.y;\n    this.z *= v.z;\n    this.w *= v.w;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    this.z *= scalar;\n    this.w *= scalar;\n    return this;\n  }\n  applyMatrix4(m) {\n    const x2 = this.x, y = this.y, z = this.z, w = this.w;\n    const e = m.elements;\n    this.x = e[0] * x2 + e[4] * y + e[8] * z + e[12] * w;\n    this.y = e[1] * x2 + e[5] * y + e[9] * z + e[13] * w;\n    this.z = e[2] * x2 + e[6] * y + e[10] * z + e[14] * w;\n    this.w = e[3] * x2 + e[7] * y + e[11] * z + e[15] * w;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  setAxisAngleFromQuaternion(q) {\n    this.w = 2 * Math.acos(q.w);\n    const s = Math.sqrt(1 - q.w * q.w);\n    if (s < 1e-4) {\n      this.x = 1;\n      this.y = 0;\n      this.z = 0;\n    } else {\n      this.x = q.x / s;\n      this.y = q.y / s;\n      this.z = q.z / s;\n    }\n    return this;\n  }\n  setAxisAngleFromRotationMatrix(m) {\n    let angle, x2, y, z;\n    const epsilon = 0.01, epsilon2 = 0.1, te2 = m.elements, m11 = te2[0], m12 = te2[4], m13 = te2[8], m21 = te2[1], m22 = te2[5], m23 = te2[9], m31 = te2[2], m32 = te2[6], m33 = te2[10];\n    if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) {\n      if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) {\n        this.set(1, 0, 0, 0);\n        return this;\n      }\n      angle = Math.PI;\n      const xx = (m11 + 1) / 2;\n      const yy = (m22 + 1) / 2;\n      const zz = (m33 + 1) / 2;\n      const xy = (m12 + m21) / 4;\n      const xz = (m13 + m31) / 4;\n      const yz = (m23 + m32) / 4;\n      if (xx > yy && xx > zz) {\n        if (xx < epsilon) {\n          x2 = 0;\n          y = 0.707106781;\n          z = 0.707106781;\n        } else {\n          x2 = Math.sqrt(xx);\n          y = xy / x2;\n          z = xz / x2;\n        }\n      } else if (yy > zz) {\n        if (yy < epsilon) {\n          x2 = 0.707106781;\n          y = 0;\n          z = 0.707106781;\n        } else {\n          y = Math.sqrt(yy);\n          x2 = xy / y;\n          z = yz / y;\n        }\n      } else {\n        if (zz < epsilon) {\n          x2 = 0.707106781;\n          y = 0.707106781;\n          z = 0;\n        } else {\n          z = Math.sqrt(zz);\n          x2 = xz / z;\n          y = yz / z;\n        }\n      }\n      this.set(x2, y, z, angle);\n      return this;\n    }\n    let s = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12));\n    if (Math.abs(s) < 1e-3)\n      s = 1;\n    this.x = (m32 - m23) / s;\n    this.y = (m13 - m31) / s;\n    this.z = (m21 - m12) / s;\n    this.w = Math.acos((m11 + m22 + m33 - 1) / 2);\n    return this;\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    this.z = Math.min(this.z, v.z);\n    this.w = Math.min(this.w, v.w);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    this.z = Math.max(this.z, v.z);\n    this.w = Math.max(this.w, v.w);\n    return this;\n  }\n  clamp(min, max2) {\n    this.x = Math.max(min.x, Math.min(max2.x, this.x));\n    this.y = Math.max(min.y, Math.min(max2.y, this.y));\n    this.z = Math.max(min.z, Math.min(max2.z, this.z));\n    this.w = Math.max(min.w, Math.min(max2.w, this.w));\n    return this;\n  }\n  clampScalar(minVal, maxVal) {\n    this.x = Math.max(minVal, Math.min(maxVal, this.x));\n    this.y = Math.max(minVal, Math.min(maxVal, this.y));\n    this.z = Math.max(minVal, Math.min(maxVal, this.z));\n    this.w = Math.max(minVal, Math.min(maxVal, this.w));\n    return this;\n  }\n  clampLength(min, max2) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max2, length)));\n  }\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    this.z = Math.floor(this.z);\n    this.w = Math.floor(this.w);\n    return this;\n  }\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    this.z = Math.ceil(this.z);\n    this.w = Math.ceil(this.w);\n    return this;\n  }\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    this.z = Math.round(this.z);\n    this.w = Math.round(this.w);\n    return this;\n  }\n  roundToZero() {\n    this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n    this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n    this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n    this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w);\n    return this;\n  }\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    this.z = -this.z;\n    this.w = -this.w;\n    return this;\n  }\n  dot(v) {\n    return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n  }\n  lengthSq() {\n    return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v, alpha) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    this.z += (v.z - this.z) * alpha;\n    this.w += (v.w - this.w) * alpha;\n    return this;\n  }\n  lerpVectors(v1, v2, alpha) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    this.z = v1.z + (v2.z - v1.z) * alpha;\n    this.w = v1.w + (v2.w - v1.w) * alpha;\n    return this;\n  }\n  equals(v) {\n    return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n  }\n  fromArray(array, offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    this.z = array[offset + 2];\n    this.w = array[offset + 3];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    array[offset + 2] = this.z;\n    array[offset + 3] = this.w;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.x = attribute.getX(index);\n    this.y = attribute.getY(index);\n    this.z = attribute.getZ(index);\n    this.w = attribute.getW(index);\n    return this;\n  }\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    this.z = Math.random();\n    this.w = Math.random();\n    return this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n    yield this.z;\n    yield this.w;\n  }\n};\nvar WebGLRenderTarget = class extends EventDispatcher {\n  constructor(width = 1, height = 1, options = {}) {\n    super();\n    this.isWebGLRenderTarget = true;\n    this.width = width;\n    this.height = height;\n    this.depth = 1;\n    this.scissor = new Vector4(0, 0, width, height);\n    this.scissorTest = false;\n    this.viewport = new Vector4(0, 0, width, height);\n    const image = { width, height, depth: 1 };\n    this.texture = new Texture(image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n    this.texture.isRenderTargetTexture = true;\n    this.texture.flipY = false;\n    this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n    this.texture.internalFormat = options.internalFormat !== void 0 ? options.internalFormat : null;\n    this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n    this.depthBuffer = options.depthBuffer !== void 0 ? options.depthBuffer : true;\n    this.stencilBuffer = options.stencilBuffer !== void 0 ? options.stencilBuffer : false;\n    this.depthTexture = options.depthTexture !== void 0 ? options.depthTexture : null;\n    this.samples = options.samples !== void 0 ? options.samples : 0;\n  }\n  setSize(width, height, depth = 1) {\n    if (this.width !== width || this.height !== height || this.depth !== depth) {\n      this.width = width;\n      this.height = height;\n      this.depth = depth;\n      this.texture.image.width = width;\n      this.texture.image.height = height;\n      this.texture.image.depth = depth;\n      this.dispose();\n    }\n    this.viewport.set(0, 0, width, height);\n    this.scissor.set(0, 0, width, height);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.width = source.width;\n    this.height = source.height;\n    this.depth = source.depth;\n    this.viewport.copy(source.viewport);\n    this.texture = source.texture.clone();\n    this.texture.isRenderTargetTexture = true;\n    const image = Object.assign({}, source.texture.image);\n    this.texture.source = new Source(image);\n    this.depthBuffer = source.depthBuffer;\n    this.stencilBuffer = source.stencilBuffer;\n    if (source.depthTexture !== null)\n      this.depthTexture = source.depthTexture.clone();\n    this.samples = source.samples;\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n};\nvar DataArrayTexture = class extends Texture {\n  constructor(data = null, width = 1, height = 1, depth = 1) {\n    super(null);\n    this.isDataArrayTexture = true;\n    this.image = { data, width, height, depth };\n    this.magFilter = NearestFilter;\n    this.minFilter = NearestFilter;\n    this.wrapR = ClampToEdgeWrapping;\n    this.generateMipmaps = false;\n    this.flipY = false;\n    this.unpackAlignment = 1;\n  }\n};\nvar Data3DTexture = class extends Texture {\n  constructor(data = null, width = 1, height = 1, depth = 1) {\n    super(null);\n    this.isData3DTexture = true;\n    this.image = { data, width, height, depth };\n    this.magFilter = NearestFilter;\n    this.minFilter = NearestFilter;\n    this.wrapR = ClampToEdgeWrapping;\n    this.generateMipmaps = false;\n    this.flipY = false;\n    this.unpackAlignment = 1;\n  }\n};\nvar Quaternion = class {\n  constructor(x2 = 0, y = 0, z = 0, w = 1) {\n    this.isQuaternion = true;\n    this._x = x2;\n    this._y = y;\n    this._z = z;\n    this._w = w;\n  }\n  static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t2) {\n    let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3];\n    const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3];\n    if (t2 === 0) {\n      dst[dstOffset + 0] = x0;\n      dst[dstOffset + 1] = y0;\n      dst[dstOffset + 2] = z0;\n      dst[dstOffset + 3] = w0;\n      return;\n    }\n    if (t2 === 1) {\n      dst[dstOffset + 0] = x1;\n      dst[dstOffset + 1] = y1;\n      dst[dstOffset + 2] = z1;\n      dst[dstOffset + 3] = w1;\n      return;\n    }\n    if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n      let s = 1 - t2;\n      const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos;\n      if (sqrSin > Number.EPSILON) {\n        const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir);\n        s = Math.sin(s * len) / sin;\n        t2 = Math.sin(t2 * len) / sin;\n      }\n      const tDir = t2 * dir;\n      x0 = x0 * s + x1 * tDir;\n      y0 = y0 * s + y1 * tDir;\n      z0 = z0 * s + z1 * tDir;\n      w0 = w0 * s + w1 * tDir;\n      if (s === 1 - t2) {\n        const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n        x0 *= f;\n        y0 *= f;\n        z0 *= f;\n        w0 *= f;\n      }\n    }\n    dst[dstOffset] = x0;\n    dst[dstOffset + 1] = y0;\n    dst[dstOffset + 2] = z0;\n    dst[dstOffset + 3] = w0;\n  }\n  static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n    const x0 = src0[srcOffset0];\n    const y0 = src0[srcOffset0 + 1];\n    const z0 = src0[srcOffset0 + 2];\n    const w0 = src0[srcOffset0 + 3];\n    const x1 = src1[srcOffset1];\n    const y1 = src1[srcOffset1 + 1];\n    const z1 = src1[srcOffset1 + 2];\n    const w1 = src1[srcOffset1 + 3];\n    dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n    dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n    dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n    dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n    return dst;\n  }\n  get x() {\n    return this._x;\n  }\n  set x(value) {\n    this._x = value;\n    this._onChangeCallback();\n  }\n  get y() {\n    return this._y;\n  }\n  set y(value) {\n    this._y = value;\n    this._onChangeCallback();\n  }\n  get z() {\n    return this._z;\n  }\n  set z(value) {\n    this._z = value;\n    this._onChangeCallback();\n  }\n  get w() {\n    return this._w;\n  }\n  set w(value) {\n    this._w = value;\n    this._onChangeCallback();\n  }\n  set(x2, y, z, w) {\n    this._x = x2;\n    this._y = y;\n    this._z = z;\n    this._w = w;\n    this._onChangeCallback();\n    return this;\n  }\n  clone() {\n    return new this.constructor(this._x, this._y, this._z, this._w);\n  }\n  copy(quaternion) {\n    this._x = quaternion.x;\n    this._y = quaternion.y;\n    this._z = quaternion.z;\n    this._w = quaternion.w;\n    this._onChangeCallback();\n    return this;\n  }\n  setFromEuler(euler, update) {\n    const x2 = euler._x, y = euler._y, z = euler._z, order = euler._order;\n    const cos = Math.cos;\n    const sin = Math.sin;\n    const c1 = cos(x2 / 2);\n    const c2 = cos(y / 2);\n    const c3 = cos(z / 2);\n    const s1 = sin(x2 / 2);\n    const s2 = sin(y / 2);\n    const s3 = sin(z / 2);\n    switch (order) {\n      case \"XYZ\":\n        this._x = s1 * c2 * c3 + c1 * s2 * s3;\n        this._y = c1 * s2 * c3 - s1 * c2 * s3;\n        this._z = c1 * c2 * s3 + s1 * s2 * c3;\n        this._w = c1 * c2 * c3 - s1 * s2 * s3;\n        break;\n      case \"YXZ\":\n        this._x = s1 * c2 * c3 + c1 * s2 * s3;\n        this._y = c1 * s2 * c3 - s1 * c2 * s3;\n        this._z = c1 * c2 * s3 - s1 * s2 * c3;\n        this._w = c1 * c2 * c3 + s1 * s2 * s3;\n        break;\n      case \"ZXY\":\n        this._x = s1 * c2 * c3 - c1 * s2 * s3;\n        this._y = c1 * s2 * c3 + s1 * c2 * s3;\n        this._z = c1 * c2 * s3 + s1 * s2 * c3;\n        this._w = c1 * c2 * c3 - s1 * s2 * s3;\n        break;\n      case \"ZYX\":\n        this._x = s1 * c2 * c3 - c1 * s2 * s3;\n        this._y = c1 * s2 * c3 + s1 * c2 * s3;\n        this._z = c1 * c2 * s3 - s1 * s2 * c3;\n        this._w = c1 * c2 * c3 + s1 * s2 * s3;\n        break;\n      case \"YZX\":\n        this._x = s1 * c2 * c3 + c1 * s2 * s3;\n        this._y = c1 * s2 * c3 + s1 * c2 * s3;\n        this._z = c1 * c2 * s3 - s1 * s2 * c3;\n        this._w = c1 * c2 * c3 - s1 * s2 * s3;\n        break;\n      case \"XZY\":\n        this._x = s1 * c2 * c3 - c1 * s2 * s3;\n        this._y = c1 * s2 * c3 - s1 * c2 * s3;\n        this._z = c1 * c2 * s3 + s1 * s2 * c3;\n        this._w = c1 * c2 * c3 + s1 * s2 * s3;\n        break;\n      default:\n        console.warn(\"THREE.Quaternion: .setFromEuler() encountered an unknown order: \" + order);\n    }\n    if (update !== false)\n      this._onChangeCallback();\n    return this;\n  }\n  setFromAxisAngle(axis, angle) {\n    const halfAngle = angle / 2, s = Math.sin(halfAngle);\n    this._x = axis.x * s;\n    this._y = axis.y * s;\n    this._z = axis.z * s;\n    this._w = Math.cos(halfAngle);\n    this._onChangeCallback();\n    return this;\n  }\n  setFromRotationMatrix(m) {\n    const te2 = m.elements, m11 = te2[0], m12 = te2[4], m13 = te2[8], m21 = te2[1], m22 = te2[5], m23 = te2[9], m31 = te2[2], m32 = te2[6], m33 = te2[10], trace = m11 + m22 + m33;\n    if (trace > 0) {\n      const s = 0.5 / Math.sqrt(trace + 1);\n      this._w = 0.25 / s;\n      this._x = (m32 - m23) * s;\n      this._y = (m13 - m31) * s;\n      this._z = (m21 - m12) * s;\n    } else if (m11 > m22 && m11 > m33) {\n      const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n      this._w = (m32 - m23) / s;\n      this._x = 0.25 * s;\n      this._y = (m12 + m21) / s;\n      this._z = (m13 + m31) / s;\n    } else if (m22 > m33) {\n      const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n      this._w = (m13 - m31) / s;\n      this._x = (m12 + m21) / s;\n      this._y = 0.25 * s;\n      this._z = (m23 + m32) / s;\n    } else {\n      const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n      this._w = (m21 - m12) / s;\n      this._x = (m13 + m31) / s;\n      this._y = (m23 + m32) / s;\n      this._z = 0.25 * s;\n    }\n    this._onChangeCallback();\n    return this;\n  }\n  setFromUnitVectors(vFrom, vTo) {\n    let r = vFrom.dot(vTo) + 1;\n    if (r < Number.EPSILON) {\n      r = 0;\n      if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n        this._x = -vFrom.y;\n        this._y = vFrom.x;\n        this._z = 0;\n        this._w = r;\n      } else {\n        this._x = 0;\n        this._y = -vFrom.z;\n        this._z = vFrom.y;\n        this._w = r;\n      }\n    } else {\n      this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n      this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n      this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n      this._w = r;\n    }\n    return this.normalize();\n  }\n  angleTo(q) {\n    return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\n  }\n  rotateTowards(q, step) {\n    const angle = this.angleTo(q);\n    if (angle === 0)\n      return this;\n    const t2 = Math.min(1, step / angle);\n    this.slerp(q, t2);\n    return this;\n  }\n  identity() {\n    return this.set(0, 0, 0, 1);\n  }\n  invert() {\n    return this.conjugate();\n  }\n  conjugate() {\n    this._x *= -1;\n    this._y *= -1;\n    this._z *= -1;\n    this._onChangeCallback();\n    return this;\n  }\n  dot(v) {\n    return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n  }\n  lengthSq() {\n    return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n  }\n  length() {\n    return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n  }\n  normalize() {\n    let l = this.length();\n    if (l === 0) {\n      this._x = 0;\n      this._y = 0;\n      this._z = 0;\n      this._w = 1;\n    } else {\n      l = 1 / l;\n      this._x = this._x * l;\n      this._y = this._y * l;\n      this._z = this._z * l;\n      this._w = this._w * l;\n    }\n    this._onChangeCallback();\n    return this;\n  }\n  multiply(q) {\n    return this.multiplyQuaternions(this, q);\n  }\n  premultiply(q) {\n    return this.multiplyQuaternions(q, this);\n  }\n  multiplyQuaternions(a, b) {\n    const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n    const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n    this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n    this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n    this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n    this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n    this._onChangeCallback();\n    return this;\n  }\n  slerp(qb, t2) {\n    if (t2 === 0)\n      return this;\n    if (t2 === 1)\n      return this.copy(qb);\n    const x2 = this._x, y = this._y, z = this._z, w = this._w;\n    let cosHalfTheta = w * qb._w + x2 * qb._x + y * qb._y + z * qb._z;\n    if (cosHalfTheta < 0) {\n      this._w = -qb._w;\n      this._x = -qb._x;\n      this._y = -qb._y;\n      this._z = -qb._z;\n      cosHalfTheta = -cosHalfTheta;\n    } else {\n      this.copy(qb);\n    }\n    if (cosHalfTheta >= 1) {\n      this._w = w;\n      this._x = x2;\n      this._y = y;\n      this._z = z;\n      return this;\n    }\n    const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n    if (sqrSinHalfTheta <= Number.EPSILON) {\n      const s = 1 - t2;\n      this._w = s * w + t2 * this._w;\n      this._x = s * x2 + t2 * this._x;\n      this._y = s * y + t2 * this._y;\n      this._z = s * z + t2 * this._z;\n      this.normalize();\n      this._onChangeCallback();\n      return this;\n    }\n    const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n    const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n    const ratioA = Math.sin((1 - t2) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t2 * halfTheta) / sinHalfTheta;\n    this._w = w * ratioA + this._w * ratioB;\n    this._x = x2 * ratioA + this._x * ratioB;\n    this._y = y * ratioA + this._y * ratioB;\n    this._z = z * ratioA + this._z * ratioB;\n    this._onChangeCallback();\n    return this;\n  }\n  slerpQuaternions(qa, qb, t2) {\n    return this.copy(qa).slerp(qb, t2);\n  }\n  random() {\n    const u1 = Math.random();\n    const sqrt1u1 = Math.sqrt(1 - u1);\n    const sqrtu1 = Math.sqrt(u1);\n    const u2 = 2 * Math.PI * Math.random();\n    const u3 = 2 * Math.PI * Math.random();\n    return this.set(\n      sqrt1u1 * Math.cos(u2),\n      sqrtu1 * Math.sin(u3),\n      sqrtu1 * Math.cos(u3),\n      sqrt1u1 * Math.sin(u2)\n    );\n  }\n  equals(quaternion) {\n    return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n  }\n  fromArray(array, offset = 0) {\n    this._x = array[offset];\n    this._y = array[offset + 1];\n    this._z = array[offset + 2];\n    this._w = array[offset + 3];\n    this._onChangeCallback();\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this._x;\n    array[offset + 1] = this._y;\n    array[offset + 2] = this._z;\n    array[offset + 3] = this._w;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this._x = attribute.getX(index);\n    this._y = attribute.getY(index);\n    this._z = attribute.getZ(index);\n    this._w = attribute.getW(index);\n    return this;\n  }\n  _onChange(callback) {\n    this._onChangeCallback = callback;\n    return this;\n  }\n  _onChangeCallback() {\n  }\n  *[Symbol.iterator]() {\n    yield this._x;\n    yield this._y;\n    yield this._z;\n    yield this._w;\n  }\n};\nvar Vector3 = class _Vector3 {\n  constructor(x2 = 0, y = 0, z = 0) {\n    _Vector3.prototype.isVector3 = true;\n    this.x = x2;\n    this.y = y;\n    this.z = z;\n  }\n  set(x2, y, z) {\n    if (z === void 0)\n      z = this.z;\n    this.x = x2;\n    this.y = y;\n    this.z = z;\n    return this;\n  }\n  setScalar(scalar) {\n    this.x = scalar;\n    this.y = scalar;\n    this.z = scalar;\n    return this;\n  }\n  setX(x2) {\n    this.x = x2;\n    return this;\n  }\n  setY(y) {\n    this.y = y;\n    return this;\n  }\n  setZ(z) {\n    this.z = z;\n    return this;\n  }\n  setComponent(index, value) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      case 2:\n        this.z = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n  getComponent(index) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y, this.z);\n  }\n  copy(v) {\n    this.x = v.x;\n    this.y = v.y;\n    this.z = v.z;\n    return this;\n  }\n  add(v) {\n    this.x += v.x;\n    this.y += v.y;\n    this.z += v.z;\n    return this;\n  }\n  addScalar(s) {\n    this.x += s;\n    this.y += s;\n    this.z += s;\n    return this;\n  }\n  addVectors(a, b) {\n    this.x = a.x + b.x;\n    this.y = a.y + b.y;\n    this.z = a.z + b.z;\n    return this;\n  }\n  addScaledVector(v, s) {\n    this.x += v.x * s;\n    this.y += v.y * s;\n    this.z += v.z * s;\n    return this;\n  }\n  sub(v) {\n    this.x -= v.x;\n    this.y -= v.y;\n    this.z -= v.z;\n    return this;\n  }\n  subScalar(s) {\n    this.x -= s;\n    this.y -= s;\n    this.z -= s;\n    return this;\n  }\n  subVectors(a, b) {\n    this.x = a.x - b.x;\n    this.y = a.y - b.y;\n    this.z = a.z - b.z;\n    return this;\n  }\n  multiply(v) {\n    this.x *= v.x;\n    this.y *= v.y;\n    this.z *= v.z;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    this.z *= scalar;\n    return this;\n  }\n  multiplyVectors(a, b) {\n    this.x = a.x * b.x;\n    this.y = a.y * b.y;\n    this.z = a.z * b.z;\n    return this;\n  }\n  applyEuler(euler) {\n    return this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n  }\n  applyAxisAngle(axis, angle) {\n    return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n  }\n  applyMatrix3(m) {\n    const x2 = this.x, y = this.y, z = this.z;\n    const e = m.elements;\n    this.x = e[0] * x2 + e[3] * y + e[6] * z;\n    this.y = e[1] * x2 + e[4] * y + e[7] * z;\n    this.z = e[2] * x2 + e[5] * y + e[8] * z;\n    return this;\n  }\n  applyNormalMatrix(m) {\n    return this.applyMatrix3(m).normalize();\n  }\n  applyMatrix4(m) {\n    const x2 = this.x, y = this.y, z = this.z;\n    const e = m.elements;\n    const w = 1 / (e[3] * x2 + e[7] * y + e[11] * z + e[15]);\n    this.x = (e[0] * x2 + e[4] * y + e[8] * z + e[12]) * w;\n    this.y = (e[1] * x2 + e[5] * y + e[9] * z + e[13]) * w;\n    this.z = (e[2] * x2 + e[6] * y + e[10] * z + e[14]) * w;\n    return this;\n  }\n  applyQuaternion(q) {\n    const x2 = this.x, y = this.y, z = this.z;\n    const qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n    const ix = qw * x2 + qy * z - qz * y;\n    const iy = qw * y + qz * x2 - qx * z;\n    const iz = qw * z + qx * y - qy * x2;\n    const iw = -qx * x2 - qy * y - qz * z;\n    this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n    this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n    this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n    return this;\n  }\n  project(camera2) {\n    return this.applyMatrix4(camera2.matrixWorldInverse).applyMatrix4(camera2.projectionMatrix);\n  }\n  unproject(camera2) {\n    return this.applyMatrix4(camera2.projectionMatrixInverse).applyMatrix4(camera2.matrixWorld);\n  }\n  transformDirection(m) {\n    const x2 = this.x, y = this.y, z = this.z;\n    const e = m.elements;\n    this.x = e[0] * x2 + e[4] * y + e[8] * z;\n    this.y = e[1] * x2 + e[5] * y + e[9] * z;\n    this.z = e[2] * x2 + e[6] * y + e[10] * z;\n    return this.normalize();\n  }\n  divide(v) {\n    this.x /= v.x;\n    this.y /= v.y;\n    this.z /= v.z;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  min(v) {\n    this.x = Math.min(this.x, v.x);\n    this.y = Math.min(this.y, v.y);\n    this.z = Math.min(this.z, v.z);\n    return this;\n  }\n  max(v) {\n    this.x = Math.max(this.x, v.x);\n    this.y = Math.max(this.y, v.y);\n    this.z = Math.max(this.z, v.z);\n    return this;\n  }\n  clamp(min, max2) {\n    this.x = Math.max(min.x, Math.min(max2.x, this.x));\n    this.y = Math.max(min.y, Math.min(max2.y, this.y));\n    this.z = Math.max(min.z, Math.min(max2.z, this.z));\n    return this;\n  }\n  clampScalar(minVal, maxVal) {\n    this.x = Math.max(minVal, Math.min(maxVal, this.x));\n    this.y = Math.max(minVal, Math.min(maxVal, this.y));\n    this.z = Math.max(minVal, Math.min(maxVal, this.z));\n    return this;\n  }\n  clampLength(min, max2) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max2, length)));\n  }\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    this.z = Math.floor(this.z);\n    return this;\n  }\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    this.z = Math.ceil(this.z);\n    return this;\n  }\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    this.z = Math.round(this.z);\n    return this;\n  }\n  roundToZero() {\n    this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x);\n    this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y);\n    this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z);\n    return this;\n  }\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    this.z = -this.z;\n    return this;\n  }\n  dot(v) {\n    return this.x * v.x + this.y * v.y + this.z * v.z;\n  }\n  // TODO lengthSquared?\n  lengthSq() {\n    return this.x * this.x + this.y * this.y + this.z * this.z;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v, alpha) {\n    this.x += (v.x - this.x) * alpha;\n    this.y += (v.y - this.y) * alpha;\n    this.z += (v.z - this.z) * alpha;\n    return this;\n  }\n  lerpVectors(v1, v2, alpha) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    this.z = v1.z + (v2.z - v1.z) * alpha;\n    return this;\n  }\n  cross(v) {\n    return this.crossVectors(this, v);\n  }\n  crossVectors(a, b) {\n    const ax = a.x, ay = a.y, az = a.z;\n    const bx = b.x, by = b.y, bz = b.z;\n    this.x = ay * bz - az * by;\n    this.y = az * bx - ax * bz;\n    this.z = ax * by - ay * bx;\n    return this;\n  }\n  projectOnVector(v) {\n    const denominator = v.lengthSq();\n    if (denominator === 0)\n      return this.set(0, 0, 0);\n    const scalar = v.dot(this) / denominator;\n    return this.copy(v).multiplyScalar(scalar);\n  }\n  projectOnPlane(planeNormal) {\n    _vector$c.copy(this).projectOnVector(planeNormal);\n    return this.sub(_vector$c);\n  }\n  reflect(normal) {\n    return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n  }\n  angleTo(v) {\n    const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\n    if (denominator === 0)\n      return Math.PI / 2;\n    const theta = this.dot(v) / denominator;\n    return Math.acos(clamp(theta, -1, 1));\n  }\n  distanceTo(v) {\n    return Math.sqrt(this.distanceToSquared(v));\n  }\n  distanceToSquared(v) {\n    const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n    return dx * dx + dy * dy + dz * dz;\n  }\n  manhattanDistanceTo(v) {\n    return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\n  }\n  setFromSpherical(s) {\n    return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\n  }\n  setFromSphericalCoords(radius, phi, theta) {\n    const sinPhiRadius = Math.sin(phi) * radius;\n    this.x = sinPhiRadius * Math.sin(theta);\n    this.y = Math.cos(phi) * radius;\n    this.z = sinPhiRadius * Math.cos(theta);\n    return this;\n  }\n  setFromCylindrical(c) {\n    return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\n  }\n  setFromCylindricalCoords(radius, theta, y) {\n    this.x = radius * Math.sin(theta);\n    this.y = y;\n    this.z = radius * Math.cos(theta);\n    return this;\n  }\n  setFromMatrixPosition(m) {\n    const e = m.elements;\n    this.x = e[12];\n    this.y = e[13];\n    this.z = e[14];\n    return this;\n  }\n  setFromMatrixScale(m) {\n    const sx = this.setFromMatrixColumn(m, 0).length();\n    const sy = this.setFromMatrixColumn(m, 1).length();\n    const sz = this.setFromMatrixColumn(m, 2).length();\n    this.x = sx;\n    this.y = sy;\n    this.z = sz;\n    return this;\n  }\n  setFromMatrixColumn(m, index) {\n    return this.fromArray(m.elements, index * 4);\n  }\n  setFromMatrix3Column(m, index) {\n    return this.fromArray(m.elements, index * 3);\n  }\n  setFromEuler(e) {\n    this.x = e._x;\n    this.y = e._y;\n    this.z = e._z;\n    return this;\n  }\n  equals(v) {\n    return v.x === this.x && v.y === this.y && v.z === this.z;\n  }\n  fromArray(array, offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    this.z = array[offset + 2];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    array[offset + 2] = this.z;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.x = attribute.getX(index);\n    this.y = attribute.getY(index);\n    this.z = attribute.getZ(index);\n    return this;\n  }\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    this.z = Math.random();\n    return this;\n  }\n  randomDirection() {\n    const u = (Math.random() - 0.5) * 2;\n    const t2 = Math.random() * Math.PI * 2;\n    const f = Math.sqrt(1 - u ** 2);\n    this.x = f * Math.cos(t2);\n    this.y = f * Math.sin(t2);\n    this.z = u;\n    return this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n    yield this.z;\n  }\n};\nvar _vector$c = new Vector3();\nvar _quaternion$4 = new Quaternion();\nvar Box3 = class {\n  constructor(min = new Vector3(Infinity, Infinity, Infinity), max2 = new Vector3(-Infinity, -Infinity, -Infinity)) {\n    this.isBox3 = true;\n    this.min = min;\n    this.max = max2;\n  }\n  set(min, max2) {\n    this.min.copy(min);\n    this.max.copy(max2);\n    return this;\n  }\n  setFromArray(array) {\n    let minX = Infinity;\n    let minY = Infinity;\n    let minZ = Infinity;\n    let maxX = -Infinity;\n    let maxY = -Infinity;\n    let maxZ = -Infinity;\n    for (let i = 0, l = array.length; i < l; i += 3) {\n      const x2 = array[i];\n      const y = array[i + 1];\n      const z = array[i + 2];\n      if (x2 < minX)\n        minX = x2;\n      if (y < minY)\n        minY = y;\n      if (z < minZ)\n        minZ = z;\n      if (x2 > maxX)\n        maxX = x2;\n      if (y > maxY)\n        maxY = y;\n      if (z > maxZ)\n        maxZ = z;\n    }\n    this.min.set(minX, minY, minZ);\n    this.max.set(maxX, maxY, maxZ);\n    return this;\n  }\n  setFromBufferAttribute(attribute) {\n    let minX = Infinity;\n    let minY = Infinity;\n    let minZ = Infinity;\n    let maxX = -Infinity;\n    let maxY = -Infinity;\n    let maxZ = -Infinity;\n    for (let i = 0, l = attribute.count; i < l; i++) {\n      const x2 = attribute.getX(i);\n      const y = attribute.getY(i);\n      const z = attribute.getZ(i);\n      if (x2 < minX)\n        minX = x2;\n      if (y < minY)\n        minY = y;\n      if (z < minZ)\n        minZ = z;\n      if (x2 > maxX)\n        maxX = x2;\n      if (y > maxY)\n        maxY = y;\n      if (z > maxZ)\n        maxZ = z;\n    }\n    this.min.set(minX, minY, minZ);\n    this.max.set(maxX, maxY, maxZ);\n    return this;\n  }\n  setFromPoints(points) {\n    this.makeEmpty();\n    for (let i = 0, il = points.length; i < il; i++) {\n      this.expandByPoint(points[i]);\n    }\n    return this;\n  }\n  setFromCenterAndSize(center, size) {\n    const halfSize = _vector$b.copy(size).multiplyScalar(0.5);\n    this.min.copy(center).sub(halfSize);\n    this.max.copy(center).add(halfSize);\n    return this;\n  }\n  setFromObject(object, precise = false) {\n    this.makeEmpty();\n    return this.expandByObject(object, precise);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(box) {\n    this.min.copy(box.min);\n    this.max.copy(box.max);\n    return this;\n  }\n  makeEmpty() {\n    this.min.x = this.min.y = this.min.z = Infinity;\n    this.max.x = this.max.y = this.max.z = -Infinity;\n    return this;\n  }\n  isEmpty() {\n    return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n  }\n  getCenter(target2) {\n    return this.isEmpty() ? target2.set(0, 0, 0) : target2.addVectors(this.min, this.max).multiplyScalar(0.5);\n  }\n  getSize(target2) {\n    return this.isEmpty() ? target2.set(0, 0, 0) : target2.subVectors(this.max, this.min);\n  }\n  expandByPoint(point) {\n    this.min.min(point);\n    this.max.max(point);\n    return this;\n  }\n  expandByVector(vector) {\n    this.min.sub(vector);\n    this.max.add(vector);\n    return this;\n  }\n  expandByScalar(scalar) {\n    this.min.addScalar(-scalar);\n    this.max.addScalar(scalar);\n    return this;\n  }\n  expandByObject(object, precise = false) {\n    object.updateWorldMatrix(false, false);\n    const geometry = object.geometry;\n    if (geometry !== void 0) {\n      if (precise && geometry.attributes != void 0 && geometry.attributes.position !== void 0) {\n        const position = geometry.attributes.position;\n        for (let i = 0, l = position.count; i < l; i++) {\n          _vector$b.fromBufferAttribute(position, i).applyMatrix4(object.matrixWorld);\n          this.expandByPoint(_vector$b);\n        }\n      } else {\n        if (geometry.boundingBox === null) {\n          geometry.computeBoundingBox();\n        }\n        _box$3.copy(geometry.boundingBox);\n        _box$3.applyMatrix4(object.matrixWorld);\n        this.union(_box$3);\n      }\n    }\n    const children = object.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      this.expandByObject(children[i], precise);\n    }\n    return this;\n  }\n  containsPoint(point) {\n    return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || point.z < this.min.z || point.z > this.max.z ? false : true;\n  }\n  containsBox(box) {\n    return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n  }\n  getParameter(point, target2) {\n    return target2.set(\n      (point.x - this.min.x) / (this.max.x - this.min.x),\n      (point.y - this.min.y) / (this.max.y - this.min.y),\n      (point.z - this.min.z) / (this.max.z - this.min.z)\n    );\n  }\n  intersectsBox(box) {\n    return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n  }\n  intersectsSphere(sphere) {\n    this.clampPoint(sphere.center, _vector$b);\n    return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n  }\n  intersectsPlane(plane) {\n    let min, max2;\n    if (plane.normal.x > 0) {\n      min = plane.normal.x * this.min.x;\n      max2 = plane.normal.x * this.max.x;\n    } else {\n      min = plane.normal.x * this.max.x;\n      max2 = plane.normal.x * this.min.x;\n    }\n    if (plane.normal.y > 0) {\n      min += plane.normal.y * this.min.y;\n      max2 += plane.normal.y * this.max.y;\n    } else {\n      min += plane.normal.y * this.max.y;\n      max2 += plane.normal.y * this.min.y;\n    }\n    if (plane.normal.z > 0) {\n      min += plane.normal.z * this.min.z;\n      max2 += plane.normal.z * this.max.z;\n    } else {\n      min += plane.normal.z * this.max.z;\n      max2 += plane.normal.z * this.min.z;\n    }\n    return min <= -plane.constant && max2 >= -plane.constant;\n  }\n  intersectsTriangle(triangle) {\n    if (this.isEmpty()) {\n      return false;\n    }\n    this.getCenter(_center);\n    _extents.subVectors(this.max, _center);\n    _v0$2.subVectors(triangle.a, _center);\n    _v1$7.subVectors(triangle.b, _center);\n    _v2$4.subVectors(triangle.c, _center);\n    _f0.subVectors(_v1$7, _v0$2);\n    _f1.subVectors(_v2$4, _v1$7);\n    _f2.subVectors(_v0$2, _v2$4);\n    let axes = [\n      0,\n      -_f0.z,\n      _f0.y,\n      0,\n      -_f1.z,\n      _f1.y,\n      0,\n      -_f2.z,\n      _f2.y,\n      _f0.z,\n      0,\n      -_f0.x,\n      _f1.z,\n      0,\n      -_f1.x,\n      _f2.z,\n      0,\n      -_f2.x,\n      -_f0.y,\n      _f0.x,\n      0,\n      -_f1.y,\n      _f1.x,\n      0,\n      -_f2.y,\n      _f2.x,\n      0\n    ];\n    if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) {\n      return false;\n    }\n    axes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n    if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) {\n      return false;\n    }\n    _triangleNormal.crossVectors(_f0, _f1);\n    axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z];\n    return satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents);\n  }\n  clampPoint(point, target2) {\n    return target2.copy(point).clamp(this.min, this.max);\n  }\n  distanceToPoint(point) {\n    const clampedPoint = _vector$b.copy(point).clamp(this.min, this.max);\n    return clampedPoint.sub(point).length();\n  }\n  getBoundingSphere(target2) {\n    this.getCenter(target2.center);\n    target2.radius = this.getSize(_vector$b).length() * 0.5;\n    return target2;\n  }\n  intersect(box) {\n    this.min.max(box.min);\n    this.max.min(box.max);\n    if (this.isEmpty())\n      this.makeEmpty();\n    return this;\n  }\n  union(box) {\n    this.min.min(box.min);\n    this.max.max(box.max);\n    return this;\n  }\n  applyMatrix4(matrix) {\n    if (this.isEmpty())\n      return this;\n    _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix);\n    _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix);\n    _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix);\n    _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix);\n    _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix);\n    _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix);\n    _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix);\n    _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix);\n    this.setFromPoints(_points);\n    return this;\n  }\n  translate(offset) {\n    this.min.add(offset);\n    this.max.add(offset);\n    return this;\n  }\n  equals(box) {\n    return box.min.equals(this.min) && box.max.equals(this.max);\n  }\n};\nvar _points = [\n  new Vector3(),\n  new Vector3(),\n  new Vector3(),\n  new Vector3(),\n  new Vector3(),\n  new Vector3(),\n  new Vector3(),\n  new Vector3()\n];\nvar _vector$b = new Vector3();\nvar _box$3 = new Box3();\nvar _v0$2 = new Vector3();\nvar _v1$7 = new Vector3();\nvar _v2$4 = new Vector3();\nvar _f0 = new Vector3();\nvar _f1 = new Vector3();\nvar _f2 = new Vector3();\nvar _center = new Vector3();\nvar _extents = new Vector3();\nvar _triangleNormal = new Vector3();\nvar _testAxis = new Vector3();\nfunction satForAxes(axes, v0, v1, v2, extents) {\n  for (let i = 0, j = axes.length - 3; i <= j; i += 3) {\n    _testAxis.fromArray(axes, i);\n    const r = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z);\n    const p0 = v0.dot(_testAxis);\n    const p1 = v1.dot(_testAxis);\n    const p2 = v2.dot(_testAxis);\n    if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r) {\n      return false;\n    }\n  }\n  return true;\n}\nvar _box$2 = new Box3();\nvar _v1$6 = new Vector3();\nvar _v2$3 = new Vector3();\nvar Sphere = class {\n  constructor(center = new Vector3(), radius = -1) {\n    this.center = center;\n    this.radius = radius;\n  }\n  set(center, radius) {\n    this.center.copy(center);\n    this.radius = radius;\n    return this;\n  }\n  setFromPoints(points, optionalCenter) {\n    const center = this.center;\n    if (optionalCenter !== void 0) {\n      center.copy(optionalCenter);\n    } else {\n      _box$2.setFromPoints(points).getCenter(center);\n    }\n    let maxRadiusSq = 0;\n    for (let i = 0, il = points.length; i < il; i++) {\n      maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i]));\n    }\n    this.radius = Math.sqrt(maxRadiusSq);\n    return this;\n  }\n  copy(sphere) {\n    this.center.copy(sphere.center);\n    this.radius = sphere.radius;\n    return this;\n  }\n  isEmpty() {\n    return this.radius < 0;\n  }\n  makeEmpty() {\n    this.center.set(0, 0, 0);\n    this.radius = -1;\n    return this;\n  }\n  containsPoint(point) {\n    return point.distanceToSquared(this.center) <= this.radius * this.radius;\n  }\n  distanceToPoint(point) {\n    return point.distanceTo(this.center) - this.radius;\n  }\n  intersectsSphere(sphere) {\n    const radiusSum = this.radius + sphere.radius;\n    return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum;\n  }\n  intersectsBox(box) {\n    return box.intersectsSphere(this);\n  }\n  intersectsPlane(plane) {\n    return Math.abs(plane.distanceToPoint(this.center)) <= this.radius;\n  }\n  clampPoint(point, target2) {\n    const deltaLengthSq = this.center.distanceToSquared(point);\n    target2.copy(point);\n    if (deltaLengthSq > this.radius * this.radius) {\n      target2.sub(this.center).normalize();\n      target2.multiplyScalar(this.radius).add(this.center);\n    }\n    return target2;\n  }\n  getBoundingBox(target2) {\n    if (this.isEmpty()) {\n      target2.makeEmpty();\n      return target2;\n    }\n    target2.set(this.center, this.center);\n    target2.expandByScalar(this.radius);\n    return target2;\n  }\n  applyMatrix4(matrix) {\n    this.center.applyMatrix4(matrix);\n    this.radius = this.radius * matrix.getMaxScaleOnAxis();\n    return this;\n  }\n  translate(offset) {\n    this.center.add(offset);\n    return this;\n  }\n  expandByPoint(point) {\n    if (this.isEmpty()) {\n      this.center.copy(point);\n      this.radius = 0;\n      return this;\n    }\n    _v1$6.subVectors(point, this.center);\n    const lengthSq = _v1$6.lengthSq();\n    if (lengthSq > this.radius * this.radius) {\n      const length = Math.sqrt(lengthSq);\n      const delta = (length - this.radius) * 0.5;\n      this.center.addScaledVector(_v1$6, delta / length);\n      this.radius += delta;\n    }\n    return this;\n  }\n  union(sphere) {\n    if (sphere.isEmpty()) {\n      return this;\n    }\n    if (this.isEmpty()) {\n      this.copy(sphere);\n      return this;\n    }\n    if (this.center.equals(sphere.center) === true) {\n      this.radius = Math.max(this.radius, sphere.radius);\n    } else {\n      _v2$3.subVectors(sphere.center, this.center).setLength(sphere.radius);\n      this.expandByPoint(_v1$6.copy(sphere.center).add(_v2$3));\n      this.expandByPoint(_v1$6.copy(sphere.center).sub(_v2$3));\n    }\n    return this;\n  }\n  equals(sphere) {\n    return sphere.center.equals(this.center) && sphere.radius === this.radius;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nvar _vector$a = new Vector3();\nvar _segCenter = new Vector3();\nvar _segDir = new Vector3();\nvar _diff = new Vector3();\nvar _edge1 = new Vector3();\nvar _edge2 = new Vector3();\nvar _normal$1 = new Vector3();\nvar Ray = class {\n  constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) {\n    this.origin = origin;\n    this.direction = direction;\n  }\n  set(origin, direction) {\n    this.origin.copy(origin);\n    this.direction.copy(direction);\n    return this;\n  }\n  copy(ray) {\n    this.origin.copy(ray.origin);\n    this.direction.copy(ray.direction);\n    return this;\n  }\n  at(t2, target2) {\n    return target2.copy(this.direction).multiplyScalar(t2).add(this.origin);\n  }\n  lookAt(v) {\n    this.direction.copy(v).sub(this.origin).normalize();\n    return this;\n  }\n  recast(t2) {\n    this.origin.copy(this.at(t2, _vector$a));\n    return this;\n  }\n  closestPointToPoint(point, target2) {\n    target2.subVectors(point, this.origin);\n    const directionDistance = target2.dot(this.direction);\n    if (directionDistance < 0) {\n      return target2.copy(this.origin);\n    }\n    return target2.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n  }\n  distanceToPoint(point) {\n    return Math.sqrt(this.distanceSqToPoint(point));\n  }\n  distanceSqToPoint(point) {\n    const directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction);\n    if (directionDistance < 0) {\n      return this.origin.distanceToSquared(point);\n    }\n    _vector$a.copy(this.direction).multiplyScalar(directionDistance).add(this.origin);\n    return _vector$a.distanceToSquared(point);\n  }\n  distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) {\n    _segCenter.copy(v0).add(v1).multiplyScalar(0.5);\n    _segDir.copy(v1).sub(v0).normalize();\n    _diff.copy(this.origin).sub(_segCenter);\n    const segExtent = v0.distanceTo(v1) * 0.5;\n    const a01 = -this.direction.dot(_segDir);\n    const b0 = _diff.dot(this.direction);\n    const b1 = -_diff.dot(_segDir);\n    const c = _diff.lengthSq();\n    const det = Math.abs(1 - a01 * a01);\n    let s0, s1, sqrDist, extDet;\n    if (det > 0) {\n      s0 = a01 * b1 - b0;\n      s1 = a01 * b0 - b1;\n      extDet = segExtent * det;\n      if (s0 >= 0) {\n        if (s1 >= -extDet) {\n          if (s1 <= extDet) {\n            const invDet = 1 / det;\n            s0 *= invDet;\n            s1 *= invDet;\n            sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c;\n          } else {\n            s1 = segExtent;\n            s0 = Math.max(0, -(a01 * s1 + b0));\n            sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n          }\n        } else {\n          s1 = -segExtent;\n          s0 = Math.max(0, -(a01 * s1 + b0));\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n        }\n      } else {\n        if (s1 <= -extDet) {\n          s0 = Math.max(0, -(-a01 * segExtent + b0));\n          s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n        } else if (s1 <= extDet) {\n          s0 = 0;\n          s1 = Math.min(Math.max(-segExtent, -b1), segExtent);\n          sqrDist = s1 * (s1 + 2 * b1) + c;\n        } else {\n          s0 = Math.max(0, -(a01 * segExtent + b0));\n          s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n        }\n      }\n    } else {\n      s1 = a01 > 0 ? -segExtent : segExtent;\n      s0 = Math.max(0, -(a01 * s1 + b0));\n      sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;\n    }\n    if (optionalPointOnRay) {\n      optionalPointOnRay.copy(this.direction).multiplyScalar(s0).add(this.origin);\n    }\n    if (optionalPointOnSegment) {\n      optionalPointOnSegment.copy(_segDir).multiplyScalar(s1).add(_segCenter);\n    }\n    return sqrDist;\n  }\n  intersectSphere(sphere, target2) {\n    _vector$a.subVectors(sphere.center, this.origin);\n    const tca = _vector$a.dot(this.direction);\n    const d2 = _vector$a.dot(_vector$a) - tca * tca;\n    const radius2 = sphere.radius * sphere.radius;\n    if (d2 > radius2)\n      return null;\n    const thc = Math.sqrt(radius2 - d2);\n    const t0 = tca - thc;\n    const t1 = tca + thc;\n    if (t0 < 0 && t1 < 0)\n      return null;\n    if (t0 < 0)\n      return this.at(t1, target2);\n    return this.at(t0, target2);\n  }\n  intersectsSphere(sphere) {\n    return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;\n  }\n  distanceToPlane(plane) {\n    const denominator = plane.normal.dot(this.direction);\n    if (denominator === 0) {\n      if (plane.distanceToPoint(this.origin) === 0) {\n        return 0;\n      }\n      return null;\n    }\n    const t2 = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n    return t2 >= 0 ? t2 : null;\n  }\n  intersectPlane(plane, target2) {\n    const t2 = this.distanceToPlane(plane);\n    if (t2 === null) {\n      return null;\n    }\n    return this.at(t2, target2);\n  }\n  intersectsPlane(plane) {\n    const distToPoint = plane.distanceToPoint(this.origin);\n    if (distToPoint === 0) {\n      return true;\n    }\n    const denominator = plane.normal.dot(this.direction);\n    if (denominator * distToPoint < 0) {\n      return true;\n    }\n    return false;\n  }\n  intersectBox(box, target2) {\n    let tmin, tmax, tymin, tymax, tzmin, tzmax;\n    const invdirx = 1 / this.direction.x, invdiry = 1 / this.direction.y, invdirz = 1 / this.direction.z;\n    const origin = this.origin;\n    if (invdirx >= 0) {\n      tmin = (box.min.x - origin.x) * invdirx;\n      tmax = (box.max.x - origin.x) * invdirx;\n    } else {\n      tmin = (box.max.x - origin.x) * invdirx;\n      tmax = (box.min.x - origin.x) * invdirx;\n    }\n    if (invdiry >= 0) {\n      tymin = (box.min.y - origin.y) * invdiry;\n      tymax = (box.max.y - origin.y) * invdiry;\n    } else {\n      tymin = (box.max.y - origin.y) * invdiry;\n      tymax = (box.min.y - origin.y) * invdiry;\n    }\n    if (tmin > tymax || tymin > tmax)\n      return null;\n    if (tymin > tmin || isNaN(tmin))\n      tmin = tymin;\n    if (tymax < tmax || isNaN(tmax))\n      tmax = tymax;\n    if (invdirz >= 0) {\n      tzmin = (box.min.z - origin.z) * invdirz;\n      tzmax = (box.max.z - origin.z) * invdirz;\n    } else {\n      tzmin = (box.max.z - origin.z) * invdirz;\n      tzmax = (box.min.z - origin.z) * invdirz;\n    }\n    if (tmin > tzmax || tzmin > tmax)\n      return null;\n    if (tzmin > tmin || tmin !== tmin)\n      tmin = tzmin;\n    if (tzmax < tmax || tmax !== tmax)\n      tmax = tzmax;\n    if (tmax < 0)\n      return null;\n    return this.at(tmin >= 0 ? tmin : tmax, target2);\n  }\n  intersectsBox(box) {\n    return this.intersectBox(box, _vector$a) !== null;\n  }\n  intersectTriangle(a, b, c, backfaceCulling, target2) {\n    _edge1.subVectors(b, a);\n    _edge2.subVectors(c, a);\n    _normal$1.crossVectors(_edge1, _edge2);\n    let DdN = this.direction.dot(_normal$1);\n    let sign2;\n    if (DdN > 0) {\n      if (backfaceCulling)\n        return null;\n      sign2 = 1;\n    } else if (DdN < 0) {\n      sign2 = -1;\n      DdN = -DdN;\n    } else {\n      return null;\n    }\n    _diff.subVectors(this.origin, a);\n    const DdQxE2 = sign2 * this.direction.dot(_edge2.crossVectors(_diff, _edge2));\n    if (DdQxE2 < 0) {\n      return null;\n    }\n    const DdE1xQ = sign2 * this.direction.dot(_edge1.cross(_diff));\n    if (DdE1xQ < 0) {\n      return null;\n    }\n    if (DdQxE2 + DdE1xQ > DdN) {\n      return null;\n    }\n    const QdN = -sign2 * _diff.dot(_normal$1);\n    if (QdN < 0) {\n      return null;\n    }\n    return this.at(QdN / DdN, target2);\n  }\n  applyMatrix4(matrix42) {\n    this.origin.applyMatrix4(matrix42);\n    this.direction.transformDirection(matrix42);\n    return this;\n  }\n  equals(ray) {\n    return ray.origin.equals(this.origin) && ray.direction.equals(this.direction);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nvar Matrix4 = class _Matrix4 {\n  constructor() {\n    _Matrix4.prototype.isMatrix4 = true;\n    this.elements = [\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    ];\n  }\n  set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n    const te2 = this.elements;\n    te2[0] = n11;\n    te2[4] = n12;\n    te2[8] = n13;\n    te2[12] = n14;\n    te2[1] = n21;\n    te2[5] = n22;\n    te2[9] = n23;\n    te2[13] = n24;\n    te2[2] = n31;\n    te2[6] = n32;\n    te2[10] = n33;\n    te2[14] = n34;\n    te2[3] = n41;\n    te2[7] = n42;\n    te2[11] = n43;\n    te2[15] = n44;\n    return this;\n  }\n  identity() {\n    this.set(\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  clone() {\n    return new _Matrix4().fromArray(this.elements);\n  }\n  copy(m) {\n    const te2 = this.elements;\n    const me = m.elements;\n    te2[0] = me[0];\n    te2[1] = me[1];\n    te2[2] = me[2];\n    te2[3] = me[3];\n    te2[4] = me[4];\n    te2[5] = me[5];\n    te2[6] = me[6];\n    te2[7] = me[7];\n    te2[8] = me[8];\n    te2[9] = me[9];\n    te2[10] = me[10];\n    te2[11] = me[11];\n    te2[12] = me[12];\n    te2[13] = me[13];\n    te2[14] = me[14];\n    te2[15] = me[15];\n    return this;\n  }\n  copyPosition(m) {\n    const te2 = this.elements, me = m.elements;\n    te2[12] = me[12];\n    te2[13] = me[13];\n    te2[14] = me[14];\n    return this;\n  }\n  setFromMatrix3(m) {\n    const me = m.elements;\n    this.set(\n      me[0],\n      me[3],\n      me[6],\n      0,\n      me[1],\n      me[4],\n      me[7],\n      0,\n      me[2],\n      me[5],\n      me[8],\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  extractBasis(xAxis, yAxis, zAxis) {\n    xAxis.setFromMatrixColumn(this, 0);\n    yAxis.setFromMatrixColumn(this, 1);\n    zAxis.setFromMatrixColumn(this, 2);\n    return this;\n  }\n  makeBasis(xAxis, yAxis, zAxis) {\n    this.set(\n      xAxis.x,\n      yAxis.x,\n      zAxis.x,\n      0,\n      xAxis.y,\n      yAxis.y,\n      zAxis.y,\n      0,\n      xAxis.z,\n      yAxis.z,\n      zAxis.z,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  extractRotation(m) {\n    const te2 = this.elements;\n    const me = m.elements;\n    const scaleX = 1 / _v1$5.setFromMatrixColumn(m, 0).length();\n    const scaleY = 1 / _v1$5.setFromMatrixColumn(m, 1).length();\n    const scaleZ = 1 / _v1$5.setFromMatrixColumn(m, 2).length();\n    te2[0] = me[0] * scaleX;\n    te2[1] = me[1] * scaleX;\n    te2[2] = me[2] * scaleX;\n    te2[3] = 0;\n    te2[4] = me[4] * scaleY;\n    te2[5] = me[5] * scaleY;\n    te2[6] = me[6] * scaleY;\n    te2[7] = 0;\n    te2[8] = me[8] * scaleZ;\n    te2[9] = me[9] * scaleZ;\n    te2[10] = me[10] * scaleZ;\n    te2[11] = 0;\n    te2[12] = 0;\n    te2[13] = 0;\n    te2[14] = 0;\n    te2[15] = 1;\n    return this;\n  }\n  makeRotationFromEuler(euler) {\n    const te2 = this.elements;\n    const x2 = euler.x, y = euler.y, z = euler.z;\n    const a = Math.cos(x2), b = Math.sin(x2);\n    const c = Math.cos(y), d = Math.sin(y);\n    const e = Math.cos(z), f = Math.sin(z);\n    if (euler.order === \"XYZ\") {\n      const ae = a * e, af = a * f, be = b * e, bf = b * f;\n      te2[0] = c * e;\n      te2[4] = -c * f;\n      te2[8] = d;\n      te2[1] = af + be * d;\n      te2[5] = ae - bf * d;\n      te2[9] = -b * c;\n      te2[2] = bf - ae * d;\n      te2[6] = be + af * d;\n      te2[10] = a * c;\n    } else if (euler.order === \"YXZ\") {\n      const ce = c * e, cf = c * f, de2 = d * e, df = d * f;\n      te2[0] = ce + df * b;\n      te2[4] = de2 * b - cf;\n      te2[8] = a * d;\n      te2[1] = a * f;\n      te2[5] = a * e;\n      te2[9] = -b;\n      te2[2] = cf * b - de2;\n      te2[6] = df + ce * b;\n      te2[10] = a * c;\n    } else if (euler.order === \"ZXY\") {\n      const ce = c * e, cf = c * f, de2 = d * e, df = d * f;\n      te2[0] = ce - df * b;\n      te2[4] = -a * f;\n      te2[8] = de2 + cf * b;\n      te2[1] = cf + de2 * b;\n      te2[5] = a * e;\n      te2[9] = df - ce * b;\n      te2[2] = -a * d;\n      te2[6] = b;\n      te2[10] = a * c;\n    } else if (euler.order === \"ZYX\") {\n      const ae = a * e, af = a * f, be = b * e, bf = b * f;\n      te2[0] = c * e;\n      te2[4] = be * d - af;\n      te2[8] = ae * d + bf;\n      te2[1] = c * f;\n      te2[5] = bf * d + ae;\n      te2[9] = af * d - be;\n      te2[2] = -d;\n      te2[6] = b * c;\n      te2[10] = a * c;\n    } else if (euler.order === \"YZX\") {\n      const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n      te2[0] = c * e;\n      te2[4] = bd - ac * f;\n      te2[8] = bc * f + ad;\n      te2[1] = f;\n      te2[5] = a * e;\n      te2[9] = -b * e;\n      te2[2] = -d * e;\n      te2[6] = ad * f + bc;\n      te2[10] = ac - bd * f;\n    } else if (euler.order === \"XZY\") {\n      const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n      te2[0] = c * e;\n      te2[4] = -f;\n      te2[8] = d * e;\n      te2[1] = ac * f + bd;\n      te2[5] = a * e;\n      te2[9] = ad * f - bc;\n      te2[2] = bc * f - ad;\n      te2[6] = b * e;\n      te2[10] = bd * f + ac;\n    }\n    te2[3] = 0;\n    te2[7] = 0;\n    te2[11] = 0;\n    te2[12] = 0;\n    te2[13] = 0;\n    te2[14] = 0;\n    te2[15] = 1;\n    return this;\n  }\n  makeRotationFromQuaternion(q) {\n    return this.compose(_zero, q, _one);\n  }\n  lookAt(eye, target2, up) {\n    const te2 = this.elements;\n    _z.subVectors(eye, target2);\n    if (_z.lengthSq() === 0) {\n      _z.z = 1;\n    }\n    _z.normalize();\n    _x.crossVectors(up, _z);\n    if (_x.lengthSq() === 0) {\n      if (Math.abs(up.z) === 1) {\n        _z.x += 1e-4;\n      } else {\n        _z.z += 1e-4;\n      }\n      _z.normalize();\n      _x.crossVectors(up, _z);\n    }\n    _x.normalize();\n    _y.crossVectors(_z, _x);\n    te2[0] = _x.x;\n    te2[4] = _y.x;\n    te2[8] = _z.x;\n    te2[1] = _x.y;\n    te2[5] = _y.y;\n    te2[9] = _z.y;\n    te2[2] = _x.z;\n    te2[6] = _y.z;\n    te2[10] = _z.z;\n    return this;\n  }\n  multiply(m) {\n    return this.multiplyMatrices(this, m);\n  }\n  premultiply(m) {\n    return this.multiplyMatrices(m, this);\n  }\n  multiplyMatrices(a, b) {\n    const ae = a.elements;\n    const be = b.elements;\n    const te2 = this.elements;\n    const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n    const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n    const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n    const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n    const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n    const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n    const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n    const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n    te2[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n    te2[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n    te2[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n    te2[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n    te2[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n    te2[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n    te2[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n    te2[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n    te2[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n    te2[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n    te2[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n    te2[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n    te2[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n    te2[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n    te2[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n    te2[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n    return this;\n  }\n  multiplyScalar(s) {\n    const te2 = this.elements;\n    te2[0] *= s;\n    te2[4] *= s;\n    te2[8] *= s;\n    te2[12] *= s;\n    te2[1] *= s;\n    te2[5] *= s;\n    te2[9] *= s;\n    te2[13] *= s;\n    te2[2] *= s;\n    te2[6] *= s;\n    te2[10] *= s;\n    te2[14] *= s;\n    te2[3] *= s;\n    te2[7] *= s;\n    te2[11] *= s;\n    te2[15] *= s;\n    return this;\n  }\n  determinant() {\n    const te2 = this.elements;\n    const n11 = te2[0], n12 = te2[4], n13 = te2[8], n14 = te2[12];\n    const n21 = te2[1], n22 = te2[5], n23 = te2[9], n24 = te2[13];\n    const n31 = te2[2], n32 = te2[6], n33 = te2[10], n34 = te2[14];\n    const n41 = te2[3], n42 = te2[7], n43 = te2[11], n44 = te2[15];\n    return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31);\n  }\n  transpose() {\n    const te2 = this.elements;\n    let tmp2;\n    tmp2 = te2[1];\n    te2[1] = te2[4];\n    te2[4] = tmp2;\n    tmp2 = te2[2];\n    te2[2] = te2[8];\n    te2[8] = tmp2;\n    tmp2 = te2[6];\n    te2[6] = te2[9];\n    te2[9] = tmp2;\n    tmp2 = te2[3];\n    te2[3] = te2[12];\n    te2[12] = tmp2;\n    tmp2 = te2[7];\n    te2[7] = te2[13];\n    te2[13] = tmp2;\n    tmp2 = te2[11];\n    te2[11] = te2[14];\n    te2[14] = tmp2;\n    return this;\n  }\n  setPosition(x2, y, z) {\n    const te2 = this.elements;\n    if (x2.isVector3) {\n      te2[12] = x2.x;\n      te2[13] = x2.y;\n      te2[14] = x2.z;\n    } else {\n      te2[12] = x2;\n      te2[13] = y;\n      te2[14] = z;\n    }\n    return this;\n  }\n  invert() {\n    const te2 = this.elements, n11 = te2[0], n21 = te2[1], n31 = te2[2], n41 = te2[3], n12 = te2[4], n22 = te2[5], n32 = te2[6], n42 = te2[7], n13 = te2[8], n23 = te2[9], n33 = te2[10], n43 = te2[11], n14 = te2[12], n24 = te2[13], n34 = te2[14], n44 = te2[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n    const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n    if (det === 0)\n      return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    const detInv = 1 / det;\n    te2[0] = t11 * detInv;\n    te2[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\n    te2[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\n    te2[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\n    te2[4] = t12 * detInv;\n    te2[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\n    te2[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\n    te2[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\n    te2[8] = t13 * detInv;\n    te2[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\n    te2[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\n    te2[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\n    te2[12] = t14 * detInv;\n    te2[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\n    te2[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\n    te2[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\n    return this;\n  }\n  scale(v) {\n    const te2 = this.elements;\n    const x2 = v.x, y = v.y, z = v.z;\n    te2[0] *= x2;\n    te2[4] *= y;\n    te2[8] *= z;\n    te2[1] *= x2;\n    te2[5] *= y;\n    te2[9] *= z;\n    te2[2] *= x2;\n    te2[6] *= y;\n    te2[10] *= z;\n    te2[3] *= x2;\n    te2[7] *= y;\n    te2[11] *= z;\n    return this;\n  }\n  getMaxScaleOnAxis() {\n    const te2 = this.elements;\n    const scaleXSq = te2[0] * te2[0] + te2[1] * te2[1] + te2[2] * te2[2];\n    const scaleYSq = te2[4] * te2[4] + te2[5] * te2[5] + te2[6] * te2[6];\n    const scaleZSq = te2[8] * te2[8] + te2[9] * te2[9] + te2[10] * te2[10];\n    return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n  }\n  makeTranslation(x2, y, z) {\n    this.set(\n      1,\n      0,\n      0,\n      x2,\n      0,\n      1,\n      0,\n      y,\n      0,\n      0,\n      1,\n      z,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationX(theta) {\n    const c = Math.cos(theta), s = Math.sin(theta);\n    this.set(\n      1,\n      0,\n      0,\n      0,\n      0,\n      c,\n      -s,\n      0,\n      0,\n      s,\n      c,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationY(theta) {\n    const c = Math.cos(theta), s = Math.sin(theta);\n    this.set(\n      c,\n      0,\n      s,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -s,\n      0,\n      c,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationZ(theta) {\n    const c = Math.cos(theta), s = Math.sin(theta);\n    this.set(\n      c,\n      -s,\n      0,\n      0,\n      s,\n      c,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationAxis(axis, angle) {\n    const c = Math.cos(angle);\n    const s = Math.sin(angle);\n    const t2 = 1 - c;\n    const x2 = axis.x, y = axis.y, z = axis.z;\n    const tx = t2 * x2, ty = t2 * y;\n    this.set(\n      tx * x2 + c,\n      tx * y - s * z,\n      tx * z + s * y,\n      0,\n      tx * y + s * z,\n      ty * y + c,\n      ty * z - s * x2,\n      0,\n      tx * z - s * y,\n      ty * z + s * x2,\n      t2 * z * z + c,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeScale(x2, y, z) {\n    this.set(\n      x2,\n      0,\n      0,\n      0,\n      0,\n      y,\n      0,\n      0,\n      0,\n      0,\n      z,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeShear(xy, xz, yx, yz, zx, zy) {\n    this.set(\n      1,\n      yx,\n      zx,\n      0,\n      xy,\n      1,\n      zy,\n      0,\n      xz,\n      yz,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  compose(position, quaternion, scale) {\n    const te2 = this.elements;\n    const x2 = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n    const x22 = x2 + x2, y2 = y + y, z2 = z + z;\n    const xx = x2 * x22, xy = x2 * y2, xz = x2 * z2;\n    const yy = y * y2, yz = y * z2, zz = z * z2;\n    const wx = w * x22, wy = w * y2, wz = w * z2;\n    const sx = scale.x, sy = scale.y, sz = scale.z;\n    te2[0] = (1 - (yy + zz)) * sx;\n    te2[1] = (xy + wz) * sx;\n    te2[2] = (xz - wy) * sx;\n    te2[3] = 0;\n    te2[4] = (xy - wz) * sy;\n    te2[5] = (1 - (xx + zz)) * sy;\n    te2[6] = (yz + wx) * sy;\n    te2[7] = 0;\n    te2[8] = (xz + wy) * sz;\n    te2[9] = (yz - wx) * sz;\n    te2[10] = (1 - (xx + yy)) * sz;\n    te2[11] = 0;\n    te2[12] = position.x;\n    te2[13] = position.y;\n    te2[14] = position.z;\n    te2[15] = 1;\n    return this;\n  }\n  decompose(position, quaternion, scale) {\n    const te2 = this.elements;\n    let sx = _v1$5.set(te2[0], te2[1], te2[2]).length();\n    const sy = _v1$5.set(te2[4], te2[5], te2[6]).length();\n    const sz = _v1$5.set(te2[8], te2[9], te2[10]).length();\n    const det = this.determinant();\n    if (det < 0)\n      sx = -sx;\n    position.x = te2[12];\n    position.y = te2[13];\n    position.z = te2[14];\n    _m1$2.copy(this);\n    const invSX = 1 / sx;\n    const invSY = 1 / sy;\n    const invSZ = 1 / sz;\n    _m1$2.elements[0] *= invSX;\n    _m1$2.elements[1] *= invSX;\n    _m1$2.elements[2] *= invSX;\n    _m1$2.elements[4] *= invSY;\n    _m1$2.elements[5] *= invSY;\n    _m1$2.elements[6] *= invSY;\n    _m1$2.elements[8] *= invSZ;\n    _m1$2.elements[9] *= invSZ;\n    _m1$2.elements[10] *= invSZ;\n    quaternion.setFromRotationMatrix(_m1$2);\n    scale.x = sx;\n    scale.y = sy;\n    scale.z = sz;\n    return this;\n  }\n  makePerspective(left, right, top, bottom, near, far) {\n    const te2 = this.elements;\n    const x2 = 2 * near / (right - left);\n    const y = 2 * near / (top - bottom);\n    const a = (right + left) / (right - left);\n    const b = (top + bottom) / (top - bottom);\n    const c = -(far + near) / (far - near);\n    const d = -2 * far * near / (far - near);\n    te2[0] = x2;\n    te2[4] = 0;\n    te2[8] = a;\n    te2[12] = 0;\n    te2[1] = 0;\n    te2[5] = y;\n    te2[9] = b;\n    te2[13] = 0;\n    te2[2] = 0;\n    te2[6] = 0;\n    te2[10] = c;\n    te2[14] = d;\n    te2[3] = 0;\n    te2[7] = 0;\n    te2[11] = -1;\n    te2[15] = 0;\n    return this;\n  }\n  makeOrthographic(left, right, top, bottom, near, far) {\n    const te2 = this.elements;\n    const w = 1 / (right - left);\n    const h = 1 / (top - bottom);\n    const p2 = 1 / (far - near);\n    const x2 = (right + left) * w;\n    const y = (top + bottom) * h;\n    const z = (far + near) * p2;\n    te2[0] = 2 * w;\n    te2[4] = 0;\n    te2[8] = 0;\n    te2[12] = -x2;\n    te2[1] = 0;\n    te2[5] = 2 * h;\n    te2[9] = 0;\n    te2[13] = -y;\n    te2[2] = 0;\n    te2[6] = 0;\n    te2[10] = -2 * p2;\n    te2[14] = -z;\n    te2[3] = 0;\n    te2[7] = 0;\n    te2[11] = 0;\n    te2[15] = 1;\n    return this;\n  }\n  equals(matrix) {\n    const te2 = this.elements;\n    const me = matrix.elements;\n    for (let i = 0; i < 16; i++) {\n      if (te2[i] !== me[i])\n        return false;\n    }\n    return true;\n  }\n  fromArray(array, offset = 0) {\n    for (let i = 0; i < 16; i++) {\n      this.elements[i] = array[i + offset];\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const te2 = this.elements;\n    array[offset] = te2[0];\n    array[offset + 1] = te2[1];\n    array[offset + 2] = te2[2];\n    array[offset + 3] = te2[3];\n    array[offset + 4] = te2[4];\n    array[offset + 5] = te2[5];\n    array[offset + 6] = te2[6];\n    array[offset + 7] = te2[7];\n    array[offset + 8] = te2[8];\n    array[offset + 9] = te2[9];\n    array[offset + 10] = te2[10];\n    array[offset + 11] = te2[11];\n    array[offset + 12] = te2[12];\n    array[offset + 13] = te2[13];\n    array[offset + 14] = te2[14];\n    array[offset + 15] = te2[15];\n    return array;\n  }\n};\nvar _v1$5 = new Vector3();\nvar _m1$2 = new Matrix4();\nvar _zero = new Vector3(0, 0, 0);\nvar _one = new Vector3(1, 1, 1);\nvar _x = new Vector3();\nvar _y = new Vector3();\nvar _z = new Vector3();\nvar _matrix$1 = new Matrix4();\nvar _quaternion$3 = new Quaternion();\nvar Euler = class _Euler {\n  constructor(x2 = 0, y = 0, z = 0, order = _Euler.DefaultOrder) {\n    this.isEuler = true;\n    this._x = x2;\n    this._y = y;\n    this._z = z;\n    this._order = order;\n  }\n  get x() {\n    return this._x;\n  }\n  set x(value) {\n    this._x = value;\n    this._onChangeCallback();\n  }\n  get y() {\n    return this._y;\n  }\n  set y(value) {\n    this._y = value;\n    this._onChangeCallback();\n  }\n  get z() {\n    return this._z;\n  }\n  set z(value) {\n    this._z = value;\n    this._onChangeCallback();\n  }\n  get order() {\n    return this._order;\n  }\n  set order(value) {\n    this._order = value;\n    this._onChangeCallback();\n  }\n  set(x2, y, z, order = this._order) {\n    this._x = x2;\n    this._y = y;\n    this._z = z;\n    this._order = order;\n    this._onChangeCallback();\n    return this;\n  }\n  clone() {\n    return new this.constructor(this._x, this._y, this._z, this._order);\n  }\n  copy(euler) {\n    this._x = euler._x;\n    this._y = euler._y;\n    this._z = euler._z;\n    this._order = euler._order;\n    this._onChangeCallback();\n    return this;\n  }\n  setFromRotationMatrix(m, order = this._order, update = true) {\n    const te2 = m.elements;\n    const m11 = te2[0], m12 = te2[4], m13 = te2[8];\n    const m21 = te2[1], m22 = te2[5], m23 = te2[9];\n    const m31 = te2[2], m32 = te2[6], m33 = te2[10];\n    switch (order) {\n      case \"XYZ\":\n        this._y = Math.asin(clamp(m13, -1, 1));\n        if (Math.abs(m13) < 0.9999999) {\n          this._x = Math.atan2(-m23, m33);\n          this._z = Math.atan2(-m12, m11);\n        } else {\n          this._x = Math.atan2(m32, m22);\n          this._z = 0;\n        }\n        break;\n      case \"YXZ\":\n        this._x = Math.asin(-clamp(m23, -1, 1));\n        if (Math.abs(m23) < 0.9999999) {\n          this._y = Math.atan2(m13, m33);\n          this._z = Math.atan2(m21, m22);\n        } else {\n          this._y = Math.atan2(-m31, m11);\n          this._z = 0;\n        }\n        break;\n      case \"ZXY\":\n        this._x = Math.asin(clamp(m32, -1, 1));\n        if (Math.abs(m32) < 0.9999999) {\n          this._y = Math.atan2(-m31, m33);\n          this._z = Math.atan2(-m12, m22);\n        } else {\n          this._y = 0;\n          this._z = Math.atan2(m21, m11);\n        }\n        break;\n      case \"ZYX\":\n        this._y = Math.asin(-clamp(m31, -1, 1));\n        if (Math.abs(m31) < 0.9999999) {\n          this._x = Math.atan2(m32, m33);\n          this._z = Math.atan2(m21, m11);\n        } else {\n          this._x = 0;\n          this._z = Math.atan2(-m12, m22);\n        }\n        break;\n      case \"YZX\":\n        this._z = Math.asin(clamp(m21, -1, 1));\n        if (Math.abs(m21) < 0.9999999) {\n          this._x = Math.atan2(-m23, m22);\n          this._y = Math.atan2(-m31, m11);\n        } else {\n          this._x = 0;\n          this._y = Math.atan2(m13, m33);\n        }\n        break;\n      case \"XZY\":\n        this._z = Math.asin(-clamp(m12, -1, 1));\n        if (Math.abs(m12) < 0.9999999) {\n          this._x = Math.atan2(m32, m22);\n          this._y = Math.atan2(m13, m11);\n        } else {\n          this._x = Math.atan2(-m23, m33);\n          this._y = 0;\n        }\n        break;\n      default:\n        console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \" + order);\n    }\n    this._order = order;\n    if (update === true)\n      this._onChangeCallback();\n    return this;\n  }\n  setFromQuaternion(q, order, update) {\n    _matrix$1.makeRotationFromQuaternion(q);\n    return this.setFromRotationMatrix(_matrix$1, order, update);\n  }\n  setFromVector3(v, order = this._order) {\n    return this.set(v.x, v.y, v.z, order);\n  }\n  reorder(newOrder) {\n    _quaternion$3.setFromEuler(this);\n    return this.setFromQuaternion(_quaternion$3, newOrder);\n  }\n  equals(euler) {\n    return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;\n  }\n  fromArray(array) {\n    this._x = array[0];\n    this._y = array[1];\n    this._z = array[2];\n    if (array[3] !== void 0)\n      this._order = array[3];\n    this._onChangeCallback();\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this._x;\n    array[offset + 1] = this._y;\n    array[offset + 2] = this._z;\n    array[offset + 3] = this._order;\n    return array;\n  }\n  _onChange(callback) {\n    this._onChangeCallback = callback;\n    return this;\n  }\n  _onChangeCallback() {\n  }\n  *[Symbol.iterator]() {\n    yield this._x;\n    yield this._y;\n    yield this._z;\n    yield this._order;\n  }\n  // @deprecated since r138, 02cf0df1cb4575d5842fef9c85bb5a89fe020d53\n  toVector3() {\n    console.error(\"THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead\");\n  }\n};\nEuler.DefaultOrder = \"XYZ\";\nEuler.RotationOrders = [\"XYZ\", \"YZX\", \"ZXY\", \"XZY\", \"YXZ\", \"ZYX\"];\nvar Layers = class {\n  constructor() {\n    this.mask = 1 | 0;\n  }\n  set(channel) {\n    this.mask = (1 << channel | 0) >>> 0;\n  }\n  enable(channel) {\n    this.mask |= 1 << channel | 0;\n  }\n  enableAll() {\n    this.mask = 4294967295 | 0;\n  }\n  toggle(channel) {\n    this.mask ^= 1 << channel | 0;\n  }\n  disable(channel) {\n    this.mask &= ~(1 << channel | 0);\n  }\n  disableAll() {\n    this.mask = 0;\n  }\n  test(layers) {\n    return (this.mask & layers.mask) !== 0;\n  }\n  isEnabled(channel) {\n    return (this.mask & (1 << channel | 0)) !== 0;\n  }\n};\nvar _object3DId = 0;\nvar _v1$4 = new Vector3();\nvar _q1 = new Quaternion();\nvar _m1$1 = new Matrix4();\nvar _target = new Vector3();\nvar _position$3 = new Vector3();\nvar _scale$2 = new Vector3();\nvar _quaternion$2 = new Quaternion();\nvar _xAxis = new Vector3(1, 0, 0);\nvar _yAxis = new Vector3(0, 1, 0);\nvar _zAxis = new Vector3(0, 0, 1);\nvar _addedEvent = { type: \"added\" };\nvar _removedEvent = { type: \"removed\" };\nvar Object3D = class _Object3D extends EventDispatcher {\n  constructor() {\n    super();\n    this.isObject3D = true;\n    Object.defineProperty(this, \"id\", { value: _object3DId++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.type = \"Object3D\";\n    this.parent = null;\n    this.children = [];\n    this.up = _Object3D.DefaultUp.clone();\n    const position = new Vector3();\n    const rotation = new Euler();\n    const quaternion = new Quaternion();\n    const scale = new Vector3(1, 1, 1);\n    function onRotationChange() {\n      quaternion.setFromEuler(rotation, false);\n    }\n    function onQuaternionChange() {\n      rotation.setFromQuaternion(quaternion, void 0, false);\n    }\n    rotation._onChange(onRotationChange);\n    quaternion._onChange(onQuaternionChange);\n    Object.defineProperties(this, {\n      position: {\n        configurable: true,\n        enumerable: true,\n        value: position\n      },\n      rotation: {\n        configurable: true,\n        enumerable: true,\n        value: rotation\n      },\n      quaternion: {\n        configurable: true,\n        enumerable: true,\n        value: quaternion\n      },\n      scale: {\n        configurable: true,\n        enumerable: true,\n        value: scale\n      },\n      modelViewMatrix: {\n        value: new Matrix4()\n      },\n      normalMatrix: {\n        value: new Matrix3()\n      }\n    });\n    this.matrix = new Matrix4();\n    this.matrixWorld = new Matrix4();\n    this.matrixAutoUpdate = _Object3D.DefaultMatrixAutoUpdate;\n    this.matrixWorldNeedsUpdate = false;\n    this.matrixWorldAutoUpdate = _Object3D.DefaultMatrixWorldAutoUpdate;\n    this.layers = new Layers();\n    this.visible = true;\n    this.castShadow = false;\n    this.receiveShadow = false;\n    this.frustumCulled = true;\n    this.renderOrder = 0;\n    this.animations = [];\n    this.userData = {};\n  }\n  onBeforeRender() {\n  }\n  onAfterRender() {\n  }\n  applyMatrix4(matrix) {\n    if (this.matrixAutoUpdate)\n      this.updateMatrix();\n    this.matrix.premultiply(matrix);\n    this.matrix.decompose(this.position, this.quaternion, this.scale);\n  }\n  applyQuaternion(q) {\n    this.quaternion.premultiply(q);\n    return this;\n  }\n  setRotationFromAxisAngle(axis, angle) {\n    this.quaternion.setFromAxisAngle(axis, angle);\n  }\n  setRotationFromEuler(euler) {\n    this.quaternion.setFromEuler(euler, true);\n  }\n  setRotationFromMatrix(m) {\n    this.quaternion.setFromRotationMatrix(m);\n  }\n  setRotationFromQuaternion(q) {\n    this.quaternion.copy(q);\n  }\n  rotateOnAxis(axis, angle) {\n    _q1.setFromAxisAngle(axis, angle);\n    this.quaternion.multiply(_q1);\n    return this;\n  }\n  rotateOnWorldAxis(axis, angle) {\n    _q1.setFromAxisAngle(axis, angle);\n    this.quaternion.premultiply(_q1);\n    return this;\n  }\n  rotateX(angle) {\n    return this.rotateOnAxis(_xAxis, angle);\n  }\n  rotateY(angle) {\n    return this.rotateOnAxis(_yAxis, angle);\n  }\n  rotateZ(angle) {\n    return this.rotateOnAxis(_zAxis, angle);\n  }\n  translateOnAxis(axis, distance) {\n    _v1$4.copy(axis).applyQuaternion(this.quaternion);\n    this.position.add(_v1$4.multiplyScalar(distance));\n    return this;\n  }\n  translateX(distance) {\n    return this.translateOnAxis(_xAxis, distance);\n  }\n  translateY(distance) {\n    return this.translateOnAxis(_yAxis, distance);\n  }\n  translateZ(distance) {\n    return this.translateOnAxis(_zAxis, distance);\n  }\n  localToWorld(vector) {\n    return vector.applyMatrix4(this.matrixWorld);\n  }\n  worldToLocal(vector) {\n    return vector.applyMatrix4(_m1$1.copy(this.matrixWorld).invert());\n  }\n  lookAt(x2, y, z) {\n    if (x2.isVector3) {\n      _target.copy(x2);\n    } else {\n      _target.set(x2, y, z);\n    }\n    const parent = this.parent;\n    this.updateWorldMatrix(true, false);\n    _position$3.setFromMatrixPosition(this.matrixWorld);\n    if (this.isCamera || this.isLight) {\n      _m1$1.lookAt(_position$3, _target, this.up);\n    } else {\n      _m1$1.lookAt(_target, _position$3, this.up);\n    }\n    this.quaternion.setFromRotationMatrix(_m1$1);\n    if (parent) {\n      _m1$1.extractRotation(parent.matrixWorld);\n      _q1.setFromRotationMatrix(_m1$1);\n      this.quaternion.premultiply(_q1.invert());\n    }\n  }\n  add(object) {\n    if (arguments.length > 1) {\n      for (let i = 0; i < arguments.length; i++) {\n        this.add(arguments[i]);\n      }\n      return this;\n    }\n    if (object === this) {\n      console.error(\"THREE.Object3D.add: object can't be added as a child of itself.\", object);\n      return this;\n    }\n    if (object && object.isObject3D) {\n      if (object.parent !== null) {\n        object.parent.remove(object);\n      }\n      object.parent = this;\n      this.children.push(object);\n      object.dispatchEvent(_addedEvent);\n    } else {\n      console.error(\"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object);\n    }\n    return this;\n  }\n  remove(object) {\n    if (arguments.length > 1) {\n      for (let i = 0; i < arguments.length; i++) {\n        this.remove(arguments[i]);\n      }\n      return this;\n    }\n    const index = this.children.indexOf(object);\n    if (index !== -1) {\n      object.parent = null;\n      this.children.splice(index, 1);\n      object.dispatchEvent(_removedEvent);\n    }\n    return this;\n  }\n  removeFromParent() {\n    const parent = this.parent;\n    if (parent !== null) {\n      parent.remove(this);\n    }\n    return this;\n  }\n  clear() {\n    for (let i = 0; i < this.children.length; i++) {\n      const object = this.children[i];\n      object.parent = null;\n      object.dispatchEvent(_removedEvent);\n    }\n    this.children.length = 0;\n    return this;\n  }\n  attach(object) {\n    this.updateWorldMatrix(true, false);\n    _m1$1.copy(this.matrixWorld).invert();\n    if (object.parent !== null) {\n      object.parent.updateWorldMatrix(true, false);\n      _m1$1.multiply(object.parent.matrixWorld);\n    }\n    object.applyMatrix4(_m1$1);\n    this.add(object);\n    object.updateWorldMatrix(false, true);\n    return this;\n  }\n  getObjectById(id) {\n    return this.getObjectByProperty(\"id\", id);\n  }\n  getObjectByName(name) {\n    return this.getObjectByProperty(\"name\", name);\n  }\n  getObjectByProperty(name, value) {\n    if (this[name] === value)\n      return this;\n    for (let i = 0, l = this.children.length; i < l; i++) {\n      const child = this.children[i];\n      const object = child.getObjectByProperty(name, value);\n      if (object !== void 0) {\n        return object;\n      }\n    }\n    return void 0;\n  }\n  getWorldPosition(target2) {\n    this.updateWorldMatrix(true, false);\n    return target2.setFromMatrixPosition(this.matrixWorld);\n  }\n  getWorldQuaternion(target2) {\n    this.updateWorldMatrix(true, false);\n    this.matrixWorld.decompose(_position$3, target2, _scale$2);\n    return target2;\n  }\n  getWorldScale(target2) {\n    this.updateWorldMatrix(true, false);\n    this.matrixWorld.decompose(_position$3, _quaternion$2, target2);\n    return target2;\n  }\n  getWorldDirection(target2) {\n    this.updateWorldMatrix(true, false);\n    const e = this.matrixWorld.elements;\n    return target2.set(e[8], e[9], e[10]).normalize();\n  }\n  raycast() {\n  }\n  traverse(callback) {\n    callback(this);\n    const children = this.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      children[i].traverse(callback);\n    }\n  }\n  traverseVisible(callback) {\n    if (this.visible === false)\n      return;\n    callback(this);\n    const children = this.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      children[i].traverseVisible(callback);\n    }\n  }\n  traverseAncestors(callback) {\n    const parent = this.parent;\n    if (parent !== null) {\n      callback(parent);\n      parent.traverseAncestors(callback);\n    }\n  }\n  updateMatrix() {\n    this.matrix.compose(this.position, this.quaternion, this.scale);\n    this.matrixWorldNeedsUpdate = true;\n  }\n  updateMatrixWorld(force) {\n    if (this.matrixAutoUpdate)\n      this.updateMatrix();\n    if (this.matrixWorldNeedsUpdate || force) {\n      if (this.parent === null) {\n        this.matrixWorld.copy(this.matrix);\n      } else {\n        this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n      }\n      this.matrixWorldNeedsUpdate = false;\n      force = true;\n    }\n    const children = this.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      const child = children[i];\n      if (child.matrixWorldAutoUpdate === true || force === true) {\n        child.updateMatrixWorld(force);\n      }\n    }\n  }\n  updateWorldMatrix(updateParents, updateChildren) {\n    const parent = this.parent;\n    if (updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true) {\n      parent.updateWorldMatrix(true, false);\n    }\n    if (this.matrixAutoUpdate)\n      this.updateMatrix();\n    if (this.parent === null) {\n      this.matrixWorld.copy(this.matrix);\n    } else {\n      this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n    }\n    if (updateChildren === true) {\n      const children = this.children;\n      for (let i = 0, l = children.length; i < l; i++) {\n        const child = children[i];\n        if (child.matrixWorldAutoUpdate === true) {\n          child.updateWorldMatrix(false, true);\n        }\n      }\n    }\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    const output = {};\n    if (isRootObject) {\n      meta = {\n        geometries: {},\n        materials: {},\n        textures: {},\n        images: {},\n        shapes: {},\n        skeletons: {},\n        animations: {},\n        nodes: {}\n      };\n      output.metadata = {\n        version: 4.5,\n        type: \"Object\",\n        generator: \"Object3D.toJSON\"\n      };\n    }\n    const object = {};\n    object.uuid = this.uuid;\n    object.type = this.type;\n    if (this.name !== \"\")\n      object.name = this.name;\n    if (this.castShadow === true)\n      object.castShadow = true;\n    if (this.receiveShadow === true)\n      object.receiveShadow = true;\n    if (this.visible === false)\n      object.visible = false;\n    if (this.frustumCulled === false)\n      object.frustumCulled = false;\n    if (this.renderOrder !== 0)\n      object.renderOrder = this.renderOrder;\n    if (JSON.stringify(this.userData) !== \"{}\")\n      object.userData = this.userData;\n    object.layers = this.layers.mask;\n    object.matrix = this.matrix.toArray();\n    if (this.matrixAutoUpdate === false)\n      object.matrixAutoUpdate = false;\n    if (this.isInstancedMesh) {\n      object.type = \"InstancedMesh\";\n      object.count = this.count;\n      object.instanceMatrix = this.instanceMatrix.toJSON();\n      if (this.instanceColor !== null)\n        object.instanceColor = this.instanceColor.toJSON();\n    }\n    function serialize(library, element) {\n      if (library[element.uuid] === void 0) {\n        library[element.uuid] = element.toJSON(meta);\n      }\n      return element.uuid;\n    }\n    if (this.isScene) {\n      if (this.background) {\n        if (this.background.isColor) {\n          object.background = this.background.toJSON();\n        } else if (this.background.isTexture) {\n          object.background = this.background.toJSON(meta).uuid;\n        }\n      }\n      if (this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true) {\n        object.environment = this.environment.toJSON(meta).uuid;\n      }\n    } else if (this.isMesh || this.isLine || this.isPoints) {\n      object.geometry = serialize(meta.geometries, this.geometry);\n      const parameters = this.geometry.parameters;\n      if (parameters !== void 0 && parameters.shapes !== void 0) {\n        const shapes = parameters.shapes;\n        if (Array.isArray(shapes)) {\n          for (let i = 0, l = shapes.length; i < l; i++) {\n            const shape = shapes[i];\n            serialize(meta.shapes, shape);\n          }\n        } else {\n          serialize(meta.shapes, shapes);\n        }\n      }\n    }\n    if (this.isSkinnedMesh) {\n      object.bindMode = this.bindMode;\n      object.bindMatrix = this.bindMatrix.toArray();\n      if (this.skeleton !== void 0) {\n        serialize(meta.skeletons, this.skeleton);\n        object.skeleton = this.skeleton.uuid;\n      }\n    }\n    if (this.material !== void 0) {\n      if (Array.isArray(this.material)) {\n        const uuids = [];\n        for (let i = 0, l = this.material.length; i < l; i++) {\n          uuids.push(serialize(meta.materials, this.material[i]));\n        }\n        object.material = uuids;\n      } else {\n        object.material = serialize(meta.materials, this.material);\n      }\n    }\n    if (this.children.length > 0) {\n      object.children = [];\n      for (let i = 0; i < this.children.length; i++) {\n        object.children.push(this.children[i].toJSON(meta).object);\n      }\n    }\n    if (this.animations.length > 0) {\n      object.animations = [];\n      for (let i = 0; i < this.animations.length; i++) {\n        const animation = this.animations[i];\n        object.animations.push(serialize(meta.animations, animation));\n      }\n    }\n    if (isRootObject) {\n      const geometries = extractFromCache(meta.geometries);\n      const materials = extractFromCache(meta.materials);\n      const textures = extractFromCache(meta.textures);\n      const images = extractFromCache(meta.images);\n      const shapes = extractFromCache(meta.shapes);\n      const skeletons = extractFromCache(meta.skeletons);\n      const animations = extractFromCache(meta.animations);\n      const nodes = extractFromCache(meta.nodes);\n      if (geometries.length > 0)\n        output.geometries = geometries;\n      if (materials.length > 0)\n        output.materials = materials;\n      if (textures.length > 0)\n        output.textures = textures;\n      if (images.length > 0)\n        output.images = images;\n      if (shapes.length > 0)\n        output.shapes = shapes;\n      if (skeletons.length > 0)\n        output.skeletons = skeletons;\n      if (animations.length > 0)\n        output.animations = animations;\n      if (nodes.length > 0)\n        output.nodes = nodes;\n    }\n    output.object = object;\n    return output;\n    function extractFromCache(cache2) {\n      const values = [];\n      for (const key in cache2) {\n        const data = cache2[key];\n        delete data.metadata;\n        values.push(data);\n      }\n      return values;\n    }\n  }\n  clone(recursive) {\n    return new this.constructor().copy(this, recursive);\n  }\n  copy(source, recursive = true) {\n    this.name = source.name;\n    this.up.copy(source.up);\n    this.position.copy(source.position);\n    this.rotation.order = source.rotation.order;\n    this.quaternion.copy(source.quaternion);\n    this.scale.copy(source.scale);\n    this.matrix.copy(source.matrix);\n    this.matrixWorld.copy(source.matrixWorld);\n    this.matrixAutoUpdate = source.matrixAutoUpdate;\n    this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n    this.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n    this.layers.mask = source.layers.mask;\n    this.visible = source.visible;\n    this.castShadow = source.castShadow;\n    this.receiveShadow = source.receiveShadow;\n    this.frustumCulled = source.frustumCulled;\n    this.renderOrder = source.renderOrder;\n    this.userData = JSON.parse(JSON.stringify(source.userData));\n    if (recursive === true) {\n      for (let i = 0; i < source.children.length; i++) {\n        const child = source.children[i];\n        this.add(child.clone());\n      }\n    }\n    return this;\n  }\n};\nObject3D.DefaultUp = new Vector3(0, 1, 0);\nObject3D.DefaultMatrixAutoUpdate = true;\nObject3D.DefaultMatrixWorldAutoUpdate = true;\nvar _v0$1 = new Vector3();\nvar _v1$3 = new Vector3();\nvar _v2$2 = new Vector3();\nvar _v3$1 = new Vector3();\nvar _vab = new Vector3();\nvar _vac = new Vector3();\nvar _vbc = new Vector3();\nvar _vap = new Vector3();\nvar _vbp = new Vector3();\nvar _vcp = new Vector3();\nvar Triangle = class _Triangle {\n  constructor(a = new Vector3(), b = new Vector3(), c = new Vector3()) {\n    this.a = a;\n    this.b = b;\n    this.c = c;\n  }\n  static getNormal(a, b, c, target2) {\n    target2.subVectors(c, b);\n    _v0$1.subVectors(a, b);\n    target2.cross(_v0$1);\n    const targetLengthSq = target2.lengthSq();\n    if (targetLengthSq > 0) {\n      return target2.multiplyScalar(1 / Math.sqrt(targetLengthSq));\n    }\n    return target2.set(0, 0, 0);\n  }\n  // static/instance method to calculate barycentric coordinates\n  // based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n  static getBarycoord(point, a, b, c, target2) {\n    _v0$1.subVectors(c, a);\n    _v1$3.subVectors(b, a);\n    _v2$2.subVectors(point, a);\n    const dot00 = _v0$1.dot(_v0$1);\n    const dot01 = _v0$1.dot(_v1$3);\n    const dot02 = _v0$1.dot(_v2$2);\n    const dot11 = _v1$3.dot(_v1$3);\n    const dot12 = _v1$3.dot(_v2$2);\n    const denom = dot00 * dot11 - dot01 * dot01;\n    if (denom === 0) {\n      return target2.set(-2, -1, -1);\n    }\n    const invDenom = 1 / denom;\n    const u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n    const v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n    return target2.set(1 - u - v, v, u);\n  }\n  static containsPoint(point, a, b, c) {\n    this.getBarycoord(point, a, b, c, _v3$1);\n    return _v3$1.x >= 0 && _v3$1.y >= 0 && _v3$1.x + _v3$1.y <= 1;\n  }\n  static getUV(point, p1, p2, p3, uv1, uv2, uv3, target2) {\n    this.getBarycoord(point, p1, p2, p3, _v3$1);\n    target2.set(0, 0);\n    target2.addScaledVector(uv1, _v3$1.x);\n    target2.addScaledVector(uv2, _v3$1.y);\n    target2.addScaledVector(uv3, _v3$1.z);\n    return target2;\n  }\n  static isFrontFacing(a, b, c, direction) {\n    _v0$1.subVectors(c, b);\n    _v1$3.subVectors(a, b);\n    return _v0$1.cross(_v1$3).dot(direction) < 0 ? true : false;\n  }\n  set(a, b, c) {\n    this.a.copy(a);\n    this.b.copy(b);\n    this.c.copy(c);\n    return this;\n  }\n  setFromPointsAndIndices(points, i0, i1, i2) {\n    this.a.copy(points[i0]);\n    this.b.copy(points[i1]);\n    this.c.copy(points[i2]);\n    return this;\n  }\n  setFromAttributeAndIndices(attribute, i0, i1, i2) {\n    this.a.fromBufferAttribute(attribute, i0);\n    this.b.fromBufferAttribute(attribute, i1);\n    this.c.fromBufferAttribute(attribute, i2);\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(triangle) {\n    this.a.copy(triangle.a);\n    this.b.copy(triangle.b);\n    this.c.copy(triangle.c);\n    return this;\n  }\n  getArea() {\n    _v0$1.subVectors(this.c, this.b);\n    _v1$3.subVectors(this.a, this.b);\n    return _v0$1.cross(_v1$3).length() * 0.5;\n  }\n  getMidpoint(target2) {\n    return target2.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n  }\n  getNormal(target2) {\n    return _Triangle.getNormal(this.a, this.b, this.c, target2);\n  }\n  getPlane(target2) {\n    return target2.setFromCoplanarPoints(this.a, this.b, this.c);\n  }\n  getBarycoord(point, target2) {\n    return _Triangle.getBarycoord(point, this.a, this.b, this.c, target2);\n  }\n  getUV(point, uv1, uv2, uv3, target2) {\n    return _Triangle.getUV(point, this.a, this.b, this.c, uv1, uv2, uv3, target2);\n  }\n  containsPoint(point) {\n    return _Triangle.containsPoint(point, this.a, this.b, this.c);\n  }\n  isFrontFacing(direction) {\n    return _Triangle.isFrontFacing(this.a, this.b, this.c, direction);\n  }\n  intersectsBox(box) {\n    return box.intersectsTriangle(this);\n  }\n  closestPointToPoint(p2, target2) {\n    const a = this.a, b = this.b, c = this.c;\n    let v, w;\n    _vab.subVectors(b, a);\n    _vac.subVectors(c, a);\n    _vap.subVectors(p2, a);\n    const d1 = _vab.dot(_vap);\n    const d2 = _vac.dot(_vap);\n    if (d1 <= 0 && d2 <= 0) {\n      return target2.copy(a);\n    }\n    _vbp.subVectors(p2, b);\n    const d3 = _vab.dot(_vbp);\n    const d4 = _vac.dot(_vbp);\n    if (d3 >= 0 && d4 <= d3) {\n      return target2.copy(b);\n    }\n    const vc = d1 * d4 - d3 * d2;\n    if (vc <= 0 && d1 >= 0 && d3 <= 0) {\n      v = d1 / (d1 - d3);\n      return target2.copy(a).addScaledVector(_vab, v);\n    }\n    _vcp.subVectors(p2, c);\n    const d5 = _vab.dot(_vcp);\n    const d6 = _vac.dot(_vcp);\n    if (d6 >= 0 && d5 <= d6) {\n      return target2.copy(c);\n    }\n    const vb = d5 * d2 - d1 * d6;\n    if (vb <= 0 && d2 >= 0 && d6 <= 0) {\n      w = d2 / (d2 - d6);\n      return target2.copy(a).addScaledVector(_vac, w);\n    }\n    const va = d3 * d6 - d5 * d4;\n    if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) {\n      _vbc.subVectors(c, b);\n      w = (d4 - d3) / (d4 - d3 + (d5 - d6));\n      return target2.copy(b).addScaledVector(_vbc, w);\n    }\n    const denom = 1 / (va + vb + vc);\n    v = vb * denom;\n    w = vc * denom;\n    return target2.copy(a).addScaledVector(_vab, v).addScaledVector(_vac, w);\n  }\n  equals(triangle) {\n    return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c);\n  }\n};\nvar materialId = 0;\nvar Material = class extends EventDispatcher {\n  constructor() {\n    super();\n    this.isMaterial = true;\n    Object.defineProperty(this, \"id\", { value: materialId++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.type = \"Material\";\n    this.blending = NormalBlending;\n    this.side = FrontSide;\n    this.vertexColors = false;\n    this.opacity = 1;\n    this.transparent = false;\n    this.blendSrc = SrcAlphaFactor;\n    this.blendDst = OneMinusSrcAlphaFactor;\n    this.blendEquation = AddEquation;\n    this.blendSrcAlpha = null;\n    this.blendDstAlpha = null;\n    this.blendEquationAlpha = null;\n    this.depthFunc = LessEqualDepth;\n    this.depthTest = true;\n    this.depthWrite = true;\n    this.stencilWriteMask = 255;\n    this.stencilFunc = AlwaysStencilFunc;\n    this.stencilRef = 0;\n    this.stencilFuncMask = 255;\n    this.stencilFail = KeepStencilOp;\n    this.stencilZFail = KeepStencilOp;\n    this.stencilZPass = KeepStencilOp;\n    this.stencilWrite = false;\n    this.clippingPlanes = null;\n    this.clipIntersection = false;\n    this.clipShadows = false;\n    this.shadowSide = null;\n    this.colorWrite = true;\n    this.precision = null;\n    this.polygonOffset = false;\n    this.polygonOffsetFactor = 0;\n    this.polygonOffsetUnits = 0;\n    this.dithering = false;\n    this.alphaToCoverage = false;\n    this.premultipliedAlpha = false;\n    this.visible = true;\n    this.toneMapped = true;\n    this.userData = {};\n    this.version = 0;\n    this._alphaTest = 0;\n  }\n  get alphaTest() {\n    return this._alphaTest;\n  }\n  set alphaTest(value) {\n    if (this._alphaTest > 0 !== value > 0) {\n      this.version++;\n    }\n    this._alphaTest = value;\n  }\n  onBuild() {\n  }\n  onBeforeRender() {\n  }\n  onBeforeCompile() {\n  }\n  customProgramCacheKey() {\n    return this.onBeforeCompile.toString();\n  }\n  setValues(values) {\n    if (values === void 0)\n      return;\n    for (const key in values) {\n      const newValue = values[key];\n      if (newValue === void 0) {\n        console.warn(\"THREE.Material: '\" + key + \"' parameter is undefined.\");\n        continue;\n      }\n      const currentValue = this[key];\n      if (currentValue === void 0) {\n        console.warn(\"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\");\n        continue;\n      }\n      if (currentValue && currentValue.isColor) {\n        currentValue.set(newValue);\n      } else if (currentValue && currentValue.isVector3 && (newValue && newValue.isVector3)) {\n        currentValue.copy(newValue);\n      } else {\n        this[key] = newValue;\n      }\n    }\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    if (isRootObject) {\n      meta = {\n        textures: {},\n        images: {}\n      };\n    }\n    const data = {\n      metadata: {\n        version: 4.5,\n        type: \"Material\",\n        generator: \"Material.toJSON\"\n      }\n    };\n    data.uuid = this.uuid;\n    data.type = this.type;\n    if (this.name !== \"\")\n      data.name = this.name;\n    if (this.color && this.color.isColor)\n      data.color = this.color.getHex();\n    if (this.roughness !== void 0)\n      data.roughness = this.roughness;\n    if (this.metalness !== void 0)\n      data.metalness = this.metalness;\n    if (this.sheen !== void 0)\n      data.sheen = this.sheen;\n    if (this.sheenColor && this.sheenColor.isColor)\n      data.sheenColor = this.sheenColor.getHex();\n    if (this.sheenRoughness !== void 0)\n      data.sheenRoughness = this.sheenRoughness;\n    if (this.emissive && this.emissive.isColor)\n      data.emissive = this.emissive.getHex();\n    if (this.emissiveIntensity && this.emissiveIntensity !== 1)\n      data.emissiveIntensity = this.emissiveIntensity;\n    if (this.specular && this.specular.isColor)\n      data.specular = this.specular.getHex();\n    if (this.specularIntensity !== void 0)\n      data.specularIntensity = this.specularIntensity;\n    if (this.specularColor && this.specularColor.isColor)\n      data.specularColor = this.specularColor.getHex();\n    if (this.shininess !== void 0)\n      data.shininess = this.shininess;\n    if (this.clearcoat !== void 0)\n      data.clearcoat = this.clearcoat;\n    if (this.clearcoatRoughness !== void 0)\n      data.clearcoatRoughness = this.clearcoatRoughness;\n    if (this.clearcoatMap && this.clearcoatMap.isTexture) {\n      data.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid;\n    }\n    if (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) {\n      data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid;\n    }\n    if (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) {\n      data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid;\n      data.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n    }\n    if (this.iridescence !== void 0)\n      data.iridescence = this.iridescence;\n    if (this.iridescenceIOR !== void 0)\n      data.iridescenceIOR = this.iridescenceIOR;\n    if (this.iridescenceThicknessRange !== void 0)\n      data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n    if (this.iridescenceMap && this.iridescenceMap.isTexture) {\n      data.iridescenceMap = this.iridescenceMap.toJSON(meta).uuid;\n    }\n    if (this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture) {\n      data.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(meta).uuid;\n    }\n    if (this.map && this.map.isTexture)\n      data.map = this.map.toJSON(meta).uuid;\n    if (this.matcap && this.matcap.isTexture)\n      data.matcap = this.matcap.toJSON(meta).uuid;\n    if (this.alphaMap && this.alphaMap.isTexture)\n      data.alphaMap = this.alphaMap.toJSON(meta).uuid;\n    if (this.lightMap && this.lightMap.isTexture) {\n      data.lightMap = this.lightMap.toJSON(meta).uuid;\n      data.lightMapIntensity = this.lightMapIntensity;\n    }\n    if (this.aoMap && this.aoMap.isTexture) {\n      data.aoMap = this.aoMap.toJSON(meta).uuid;\n      data.aoMapIntensity = this.aoMapIntensity;\n    }\n    if (this.bumpMap && this.bumpMap.isTexture) {\n      data.bumpMap = this.bumpMap.toJSON(meta).uuid;\n      data.bumpScale = this.bumpScale;\n    }\n    if (this.normalMap && this.normalMap.isTexture) {\n      data.normalMap = this.normalMap.toJSON(meta).uuid;\n      data.normalMapType = this.normalMapType;\n      data.normalScale = this.normalScale.toArray();\n    }\n    if (this.displacementMap && this.displacementMap.isTexture) {\n      data.displacementMap = this.displacementMap.toJSON(meta).uuid;\n      data.displacementScale = this.displacementScale;\n      data.displacementBias = this.displacementBias;\n    }\n    if (this.roughnessMap && this.roughnessMap.isTexture)\n      data.roughnessMap = this.roughnessMap.toJSON(meta).uuid;\n    if (this.metalnessMap && this.metalnessMap.isTexture)\n      data.metalnessMap = this.metalnessMap.toJSON(meta).uuid;\n    if (this.emissiveMap && this.emissiveMap.isTexture)\n      data.emissiveMap = this.emissiveMap.toJSON(meta).uuid;\n    if (this.specularMap && this.specularMap.isTexture)\n      data.specularMap = this.specularMap.toJSON(meta).uuid;\n    if (this.specularIntensityMap && this.specularIntensityMap.isTexture)\n      data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid;\n    if (this.specularColorMap && this.specularColorMap.isTexture)\n      data.specularColorMap = this.specularColorMap.toJSON(meta).uuid;\n    if (this.envMap && this.envMap.isTexture) {\n      data.envMap = this.envMap.toJSON(meta).uuid;\n      if (this.combine !== void 0)\n        data.combine = this.combine;\n    }\n    if (this.envMapIntensity !== void 0)\n      data.envMapIntensity = this.envMapIntensity;\n    if (this.reflectivity !== void 0)\n      data.reflectivity = this.reflectivity;\n    if (this.refractionRatio !== void 0)\n      data.refractionRatio = this.refractionRatio;\n    if (this.gradientMap && this.gradientMap.isTexture) {\n      data.gradientMap = this.gradientMap.toJSON(meta).uuid;\n    }\n    if (this.transmission !== void 0)\n      data.transmission = this.transmission;\n    if (this.transmissionMap && this.transmissionMap.isTexture)\n      data.transmissionMap = this.transmissionMap.toJSON(meta).uuid;\n    if (this.thickness !== void 0)\n      data.thickness = this.thickness;\n    if (this.thicknessMap && this.thicknessMap.isTexture)\n      data.thicknessMap = this.thicknessMap.toJSON(meta).uuid;\n    if (this.attenuationDistance !== void 0 && this.attenuationDistance !== Infinity)\n      data.attenuationDistance = this.attenuationDistance;\n    if (this.attenuationColor !== void 0)\n      data.attenuationColor = this.attenuationColor.getHex();\n    if (this.size !== void 0)\n      data.size = this.size;\n    if (this.shadowSide !== null)\n      data.shadowSide = this.shadowSide;\n    if (this.sizeAttenuation !== void 0)\n      data.sizeAttenuation = this.sizeAttenuation;\n    if (this.blending !== NormalBlending)\n      data.blending = this.blending;\n    if (this.side !== FrontSide)\n      data.side = this.side;\n    if (this.vertexColors)\n      data.vertexColors = true;\n    if (this.opacity < 1)\n      data.opacity = this.opacity;\n    if (this.transparent === true)\n      data.transparent = this.transparent;\n    data.depthFunc = this.depthFunc;\n    data.depthTest = this.depthTest;\n    data.depthWrite = this.depthWrite;\n    data.colorWrite = this.colorWrite;\n    data.stencilWrite = this.stencilWrite;\n    data.stencilWriteMask = this.stencilWriteMask;\n    data.stencilFunc = this.stencilFunc;\n    data.stencilRef = this.stencilRef;\n    data.stencilFuncMask = this.stencilFuncMask;\n    data.stencilFail = this.stencilFail;\n    data.stencilZFail = this.stencilZFail;\n    data.stencilZPass = this.stencilZPass;\n    if (this.rotation !== void 0 && this.rotation !== 0)\n      data.rotation = this.rotation;\n    if (this.polygonOffset === true)\n      data.polygonOffset = true;\n    if (this.polygonOffsetFactor !== 0)\n      data.polygonOffsetFactor = this.polygonOffsetFactor;\n    if (this.polygonOffsetUnits !== 0)\n      data.polygonOffsetUnits = this.polygonOffsetUnits;\n    if (this.linewidth !== void 0 && this.linewidth !== 1)\n      data.linewidth = this.linewidth;\n    if (this.dashSize !== void 0)\n      data.dashSize = this.dashSize;\n    if (this.gapSize !== void 0)\n      data.gapSize = this.gapSize;\n    if (this.scale !== void 0)\n      data.scale = this.scale;\n    if (this.dithering === true)\n      data.dithering = true;\n    if (this.alphaTest > 0)\n      data.alphaTest = this.alphaTest;\n    if (this.alphaToCoverage === true)\n      data.alphaToCoverage = this.alphaToCoverage;\n    if (this.premultipliedAlpha === true)\n      data.premultipliedAlpha = this.premultipliedAlpha;\n    if (this.wireframe === true)\n      data.wireframe = this.wireframe;\n    if (this.wireframeLinewidth > 1)\n      data.wireframeLinewidth = this.wireframeLinewidth;\n    if (this.wireframeLinecap !== \"round\")\n      data.wireframeLinecap = this.wireframeLinecap;\n    if (this.wireframeLinejoin !== \"round\")\n      data.wireframeLinejoin = this.wireframeLinejoin;\n    if (this.flatShading === true)\n      data.flatShading = this.flatShading;\n    if (this.visible === false)\n      data.visible = false;\n    if (this.toneMapped === false)\n      data.toneMapped = false;\n    if (this.fog === false)\n      data.fog = false;\n    if (JSON.stringify(this.userData) !== \"{}\")\n      data.userData = this.userData;\n    function extractFromCache(cache2) {\n      const values = [];\n      for (const key in cache2) {\n        const data2 = cache2[key];\n        delete data2.metadata;\n        values.push(data2);\n      }\n      return values;\n    }\n    if (isRootObject) {\n      const textures = extractFromCache(meta.textures);\n      const images = extractFromCache(meta.images);\n      if (textures.length > 0)\n        data.textures = textures;\n      if (images.length > 0)\n        data.images = images;\n    }\n    return data;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.name = source.name;\n    this.blending = source.blending;\n    this.side = source.side;\n    this.vertexColors = source.vertexColors;\n    this.opacity = source.opacity;\n    this.transparent = source.transparent;\n    this.blendSrc = source.blendSrc;\n    this.blendDst = source.blendDst;\n    this.blendEquation = source.blendEquation;\n    this.blendSrcAlpha = source.blendSrcAlpha;\n    this.blendDstAlpha = source.blendDstAlpha;\n    this.blendEquationAlpha = source.blendEquationAlpha;\n    this.depthFunc = source.depthFunc;\n    this.depthTest = source.depthTest;\n    this.depthWrite = source.depthWrite;\n    this.stencilWriteMask = source.stencilWriteMask;\n    this.stencilFunc = source.stencilFunc;\n    this.stencilRef = source.stencilRef;\n    this.stencilFuncMask = source.stencilFuncMask;\n    this.stencilFail = source.stencilFail;\n    this.stencilZFail = source.stencilZFail;\n    this.stencilZPass = source.stencilZPass;\n    this.stencilWrite = source.stencilWrite;\n    const srcPlanes = source.clippingPlanes;\n    let dstPlanes = null;\n    if (srcPlanes !== null) {\n      const n2 = srcPlanes.length;\n      dstPlanes = new Array(n2);\n      for (let i = 0; i !== n2; ++i) {\n        dstPlanes[i] = srcPlanes[i].clone();\n      }\n    }\n    this.clippingPlanes = dstPlanes;\n    this.clipIntersection = source.clipIntersection;\n    this.clipShadows = source.clipShadows;\n    this.shadowSide = source.shadowSide;\n    this.colorWrite = source.colorWrite;\n    this.precision = source.precision;\n    this.polygonOffset = source.polygonOffset;\n    this.polygonOffsetFactor = source.polygonOffsetFactor;\n    this.polygonOffsetUnits = source.polygonOffsetUnits;\n    this.dithering = source.dithering;\n    this.alphaTest = source.alphaTest;\n    this.alphaToCoverage = source.alphaToCoverage;\n    this.premultipliedAlpha = source.premultipliedAlpha;\n    this.visible = source.visible;\n    this.toneMapped = source.toneMapped;\n    this.userData = JSON.parse(JSON.stringify(source.userData));\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  set needsUpdate(value) {\n    if (value === true)\n      this.version++;\n  }\n};\nvar MeshBasicMaterial = class extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshBasicMaterial = true;\n    this.type = \"MeshBasicMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.specularMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.combine = MultiplyOperation;\n    this.reflectivity = 1;\n    this.refractionRatio = 0.98;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.specularMap = source.specularMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.combine = source.combine;\n    this.reflectivity = source.reflectivity;\n    this.refractionRatio = source.refractionRatio;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.fog = source.fog;\n    return this;\n  }\n};\nvar _vector$9 = new Vector3();\nvar _vector2$1 = new Vector2();\nvar BufferAttribute = class {\n  constructor(array, itemSize, normalized) {\n    if (Array.isArray(array)) {\n      throw new TypeError(\"THREE.BufferAttribute: array should be a Typed Array.\");\n    }\n    this.isBufferAttribute = true;\n    this.name = \"\";\n    this.array = array;\n    this.itemSize = itemSize;\n    this.count = array !== void 0 ? array.length / itemSize : 0;\n    this.normalized = normalized === true;\n    this.usage = StaticDrawUsage;\n    this.updateRange = { offset: 0, count: -1 };\n    this.version = 0;\n  }\n  onUploadCallback() {\n  }\n  set needsUpdate(value) {\n    if (value === true)\n      this.version++;\n  }\n  setUsage(value) {\n    this.usage = value;\n    return this;\n  }\n  copy(source) {\n    this.name = source.name;\n    this.array = new source.array.constructor(source.array);\n    this.itemSize = source.itemSize;\n    this.count = source.count;\n    this.normalized = source.normalized;\n    this.usage = source.usage;\n    return this;\n  }\n  copyAt(index1, attribute, index2) {\n    index1 *= this.itemSize;\n    index2 *= attribute.itemSize;\n    for (let i = 0, l = this.itemSize; i < l; i++) {\n      this.array[index1 + i] = attribute.array[index2 + i];\n    }\n    return this;\n  }\n  copyArray(array) {\n    this.array.set(array);\n    return this;\n  }\n  applyMatrix3(m) {\n    if (this.itemSize === 2) {\n      for (let i = 0, l = this.count; i < l; i++) {\n        _vector2$1.fromBufferAttribute(this, i);\n        _vector2$1.applyMatrix3(m);\n        this.setXY(i, _vector2$1.x, _vector2$1.y);\n      }\n    } else if (this.itemSize === 3) {\n      for (let i = 0, l = this.count; i < l; i++) {\n        _vector$9.fromBufferAttribute(this, i);\n        _vector$9.applyMatrix3(m);\n        this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n      }\n    }\n    return this;\n  }\n  applyMatrix4(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$9.fromBufferAttribute(this, i);\n      _vector$9.applyMatrix4(m);\n      this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  applyNormalMatrix(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$9.fromBufferAttribute(this, i);\n      _vector$9.applyNormalMatrix(m);\n      this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  transformDirection(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$9.fromBufferAttribute(this, i);\n      _vector$9.transformDirection(m);\n      this.setXYZ(i, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  set(value, offset = 0) {\n    this.array.set(value, offset);\n    return this;\n  }\n  getX(index) {\n    let x2 = this.array[index * this.itemSize];\n    if (this.normalized)\n      x2 = denormalize(x2, this.array);\n    return x2;\n  }\n  setX(index, x2) {\n    if (this.normalized)\n      x2 = normalize(x2, this.array);\n    this.array[index * this.itemSize] = x2;\n    return this;\n  }\n  getY(index) {\n    let y = this.array[index * this.itemSize + 1];\n    if (this.normalized)\n      y = denormalize(y, this.array);\n    return y;\n  }\n  setY(index, y) {\n    if (this.normalized)\n      y = normalize(y, this.array);\n    this.array[index * this.itemSize + 1] = y;\n    return this;\n  }\n  getZ(index) {\n    let z = this.array[index * this.itemSize + 2];\n    if (this.normalized)\n      z = denormalize(z, this.array);\n    return z;\n  }\n  setZ(index, z) {\n    if (this.normalized)\n      z = normalize(z, this.array);\n    this.array[index * this.itemSize + 2] = z;\n    return this;\n  }\n  getW(index) {\n    let w = this.array[index * this.itemSize + 3];\n    if (this.normalized)\n      w = denormalize(w, this.array);\n    return w;\n  }\n  setW(index, w) {\n    if (this.normalized)\n      w = normalize(w, this.array);\n    this.array[index * this.itemSize + 3] = w;\n    return this;\n  }\n  setXY(index, x2, y) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y = normalize(y, this.array);\n    }\n    this.array[index + 0] = x2;\n    this.array[index + 1] = y;\n    return this;\n  }\n  setXYZ(index, x2, y, z) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n    }\n    this.array[index + 0] = x2;\n    this.array[index + 1] = y;\n    this.array[index + 2] = z;\n    return this;\n  }\n  setXYZW(index, x2, y, z, w) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n      w = normalize(w, this.array);\n    }\n    this.array[index + 0] = x2;\n    this.array[index + 1] = y;\n    this.array[index + 2] = z;\n    this.array[index + 3] = w;\n    return this;\n  }\n  onUpload(callback) {\n    this.onUploadCallback = callback;\n    return this;\n  }\n  clone() {\n    return new this.constructor(this.array, this.itemSize).copy(this);\n  }\n  toJSON() {\n    const data = {\n      itemSize: this.itemSize,\n      type: this.array.constructor.name,\n      array: Array.from(this.array),\n      normalized: this.normalized\n    };\n    if (this.name !== \"\")\n      data.name = this.name;\n    if (this.usage !== StaticDrawUsage)\n      data.usage = this.usage;\n    if (this.updateRange.offset !== 0 || this.updateRange.count !== -1)\n      data.updateRange = this.updateRange;\n    return data;\n  }\n  // @deprecated\n  copyColorsArray() {\n    console.error(\"THREE.BufferAttribute: copyColorsArray() was removed in r144.\");\n  }\n  copyVector2sArray() {\n    console.error(\"THREE.BufferAttribute: copyVector2sArray() was removed in r144.\");\n  }\n  copyVector3sArray() {\n    console.error(\"THREE.BufferAttribute: copyVector3sArray() was removed in r144.\");\n  }\n  copyVector4sArray() {\n    console.error(\"THREE.BufferAttribute: copyVector4sArray() was removed in r144.\");\n  }\n};\nvar Uint16BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint16Array(array), itemSize, normalized);\n  }\n};\nvar Uint32BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint32Array(array), itemSize, normalized);\n  }\n};\nvar Float32BufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Float32Array(array), itemSize, normalized);\n  }\n};\nvar _id$1 = 0;\nvar _m1 = new Matrix4();\nvar _obj = new Object3D();\nvar _offset = new Vector3();\nvar _box$1 = new Box3();\nvar _boxMorphTargets = new Box3();\nvar _vector$8 = new Vector3();\nvar BufferGeometry = class _BufferGeometry extends EventDispatcher {\n  constructor() {\n    super();\n    this.isBufferGeometry = true;\n    Object.defineProperty(this, \"id\", { value: _id$1++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.type = \"BufferGeometry\";\n    this.index = null;\n    this.attributes = {};\n    this.morphAttributes = {};\n    this.morphTargetsRelative = false;\n    this.groups = [];\n    this.boundingBox = null;\n    this.boundingSphere = null;\n    this.drawRange = { start: 0, count: Infinity };\n    this.userData = {};\n  }\n  getIndex() {\n    return this.index;\n  }\n  setIndex(index) {\n    if (Array.isArray(index)) {\n      this.index = new (arrayNeedsUint32(index) ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1);\n    } else {\n      this.index = index;\n    }\n    return this;\n  }\n  getAttribute(name) {\n    return this.attributes[name];\n  }\n  setAttribute(name, attribute) {\n    this.attributes[name] = attribute;\n    return this;\n  }\n  deleteAttribute(name) {\n    delete this.attributes[name];\n    return this;\n  }\n  hasAttribute(name) {\n    return this.attributes[name] !== void 0;\n  }\n  addGroup(start, count, materialIndex = 0) {\n    this.groups.push({\n      start,\n      count,\n      materialIndex\n    });\n  }\n  clearGroups() {\n    this.groups = [];\n  }\n  setDrawRange(start, count) {\n    this.drawRange.start = start;\n    this.drawRange.count = count;\n  }\n  applyMatrix4(matrix) {\n    const position = this.attributes.position;\n    if (position !== void 0) {\n      position.applyMatrix4(matrix);\n      position.needsUpdate = true;\n    }\n    const normal = this.attributes.normal;\n    if (normal !== void 0) {\n      const normalMatrix = new Matrix3().getNormalMatrix(matrix);\n      normal.applyNormalMatrix(normalMatrix);\n      normal.needsUpdate = true;\n    }\n    const tangent = this.attributes.tangent;\n    if (tangent !== void 0) {\n      tangent.transformDirection(matrix);\n      tangent.needsUpdate = true;\n    }\n    if (this.boundingBox !== null) {\n      this.computeBoundingBox();\n    }\n    if (this.boundingSphere !== null) {\n      this.computeBoundingSphere();\n    }\n    return this;\n  }\n  applyQuaternion(q) {\n    _m1.makeRotationFromQuaternion(q);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  rotateX(angle) {\n    _m1.makeRotationX(angle);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  rotateY(angle) {\n    _m1.makeRotationY(angle);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  rotateZ(angle) {\n    _m1.makeRotationZ(angle);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  translate(x2, y, z) {\n    _m1.makeTranslation(x2, y, z);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  scale(x2, y, z) {\n    _m1.makeScale(x2, y, z);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  lookAt(vector) {\n    _obj.lookAt(vector);\n    _obj.updateMatrix();\n    this.applyMatrix4(_obj.matrix);\n    return this;\n  }\n  center() {\n    this.computeBoundingBox();\n    this.boundingBox.getCenter(_offset).negate();\n    this.translate(_offset.x, _offset.y, _offset.z);\n    return this;\n  }\n  setFromPoints(points) {\n    const position = [];\n    for (let i = 0, l = points.length; i < l; i++) {\n      const point = points[i];\n      position.push(point.x, point.y, point.z || 0);\n    }\n    this.setAttribute(\"position\", new Float32BufferAttribute(position, 3));\n    return this;\n  }\n  computeBoundingBox() {\n    if (this.boundingBox === null) {\n      this.boundingBox = new Box3();\n    }\n    const position = this.attributes.position;\n    const morphAttributesPosition = this.morphAttributes.position;\n    if (position && position.isGLBufferAttribute) {\n      console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n      this.boundingBox.set(\n        new Vector3(-Infinity, -Infinity, -Infinity),\n        new Vector3(Infinity, Infinity, Infinity)\n      );\n      return;\n    }\n    if (position !== void 0) {\n      this.boundingBox.setFromBufferAttribute(position);\n      if (morphAttributesPosition) {\n        for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n          const morphAttribute = morphAttributesPosition[i];\n          _box$1.setFromBufferAttribute(morphAttribute);\n          if (this.morphTargetsRelative) {\n            _vector$8.addVectors(this.boundingBox.min, _box$1.min);\n            this.boundingBox.expandByPoint(_vector$8);\n            _vector$8.addVectors(this.boundingBox.max, _box$1.max);\n            this.boundingBox.expandByPoint(_vector$8);\n          } else {\n            this.boundingBox.expandByPoint(_box$1.min);\n            this.boundingBox.expandByPoint(_box$1.max);\n          }\n        }\n      }\n    } else {\n      this.boundingBox.makeEmpty();\n    }\n    if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) {\n      console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this);\n    }\n  }\n  computeBoundingSphere() {\n    if (this.boundingSphere === null) {\n      this.boundingSphere = new Sphere();\n    }\n    const position = this.attributes.position;\n    const morphAttributesPosition = this.morphAttributes.position;\n    if (position && position.isGLBufferAttribute) {\n      console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n      this.boundingSphere.set(new Vector3(), Infinity);\n      return;\n    }\n    if (position) {\n      const center = this.boundingSphere.center;\n      _box$1.setFromBufferAttribute(position);\n      if (morphAttributesPosition) {\n        for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n          const morphAttribute = morphAttributesPosition[i];\n          _boxMorphTargets.setFromBufferAttribute(morphAttribute);\n          if (this.morphTargetsRelative) {\n            _vector$8.addVectors(_box$1.min, _boxMorphTargets.min);\n            _box$1.expandByPoint(_vector$8);\n            _vector$8.addVectors(_box$1.max, _boxMorphTargets.max);\n            _box$1.expandByPoint(_vector$8);\n          } else {\n            _box$1.expandByPoint(_boxMorphTargets.min);\n            _box$1.expandByPoint(_boxMorphTargets.max);\n          }\n        }\n      }\n      _box$1.getCenter(center);\n      let maxRadiusSq = 0;\n      for (let i = 0, il = position.count; i < il; i++) {\n        _vector$8.fromBufferAttribute(position, i);\n        maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n      }\n      if (morphAttributesPosition) {\n        for (let i = 0, il = morphAttributesPosition.length; i < il; i++) {\n          const morphAttribute = morphAttributesPosition[i];\n          const morphTargetsRelative = this.morphTargetsRelative;\n          for (let j = 0, jl = morphAttribute.count; j < jl; j++) {\n            _vector$8.fromBufferAttribute(morphAttribute, j);\n            if (morphTargetsRelative) {\n              _offset.fromBufferAttribute(position, j);\n              _vector$8.add(_offset);\n            }\n            maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n          }\n        }\n      }\n      this.boundingSphere.radius = Math.sqrt(maxRadiusSq);\n      if (isNaN(this.boundingSphere.radius)) {\n        console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this);\n      }\n    }\n  }\n  computeTangents() {\n    const index = this.index;\n    const attributes = this.attributes;\n    if (index === null || attributes.position === void 0 || attributes.normal === void 0 || attributes.uv === void 0) {\n      console.error(\"THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)\");\n      return;\n    }\n    const indices = index.array;\n    const positions = attributes.position.array;\n    const normals = attributes.normal.array;\n    const uvs = attributes.uv.array;\n    const nVertices = positions.length / 3;\n    if (this.hasAttribute(\"tangent\") === false) {\n      this.setAttribute(\"tangent\", new BufferAttribute(new Float32Array(4 * nVertices), 4));\n    }\n    const tangents = this.getAttribute(\"tangent\").array;\n    const tan1 = [], tan2 = [];\n    for (let i = 0; i < nVertices; i++) {\n      tan1[i] = new Vector3();\n      tan2[i] = new Vector3();\n    }\n    const vA = new Vector3(), vB = new Vector3(), vC = new Vector3(), uvA = new Vector2(), uvB = new Vector2(), uvC = new Vector2(), sdir = new Vector3(), tdir = new Vector3();\n    function handleTriangle(a, b, c) {\n      vA.fromArray(positions, a * 3);\n      vB.fromArray(positions, b * 3);\n      vC.fromArray(positions, c * 3);\n      uvA.fromArray(uvs, a * 2);\n      uvB.fromArray(uvs, b * 2);\n      uvC.fromArray(uvs, c * 2);\n      vB.sub(vA);\n      vC.sub(vA);\n      uvB.sub(uvA);\n      uvC.sub(uvA);\n      const r = 1 / (uvB.x * uvC.y - uvC.x * uvB.y);\n      if (!isFinite(r))\n        return;\n      sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r);\n      tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r);\n      tan1[a].add(sdir);\n      tan1[b].add(sdir);\n      tan1[c].add(sdir);\n      tan2[a].add(tdir);\n      tan2[b].add(tdir);\n      tan2[c].add(tdir);\n    }\n    let groups = this.groups;\n    if (groups.length === 0) {\n      groups = [{\n        start: 0,\n        count: indices.length\n      }];\n    }\n    for (let i = 0, il = groups.length; i < il; ++i) {\n      const group = groups[i];\n      const start = group.start;\n      const count = group.count;\n      for (let j = start, jl = start + count; j < jl; j += 3) {\n        handleTriangle(\n          indices[j + 0],\n          indices[j + 1],\n          indices[j + 2]\n        );\n      }\n    }\n    const tmp2 = new Vector3(), tmp22 = new Vector3();\n    const n2 = new Vector3(), n22 = new Vector3();\n    function handleVertex(v) {\n      n2.fromArray(normals, v * 3);\n      n22.copy(n2);\n      const t2 = tan1[v];\n      tmp2.copy(t2);\n      tmp2.sub(n2.multiplyScalar(n2.dot(t2))).normalize();\n      tmp22.crossVectors(n22, t2);\n      const test = tmp22.dot(tan2[v]);\n      const w = test < 0 ? -1 : 1;\n      tangents[v * 4] = tmp2.x;\n      tangents[v * 4 + 1] = tmp2.y;\n      tangents[v * 4 + 2] = tmp2.z;\n      tangents[v * 4 + 3] = w;\n    }\n    for (let i = 0, il = groups.length; i < il; ++i) {\n      const group = groups[i];\n      const start = group.start;\n      const count = group.count;\n      for (let j = start, jl = start + count; j < jl; j += 3) {\n        handleVertex(indices[j + 0]);\n        handleVertex(indices[j + 1]);\n        handleVertex(indices[j + 2]);\n      }\n    }\n  }\n  computeVertexNormals() {\n    const index = this.index;\n    const positionAttribute = this.getAttribute(\"position\");\n    if (positionAttribute !== void 0) {\n      let normalAttribute = this.getAttribute(\"normal\");\n      if (normalAttribute === void 0) {\n        normalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3);\n        this.setAttribute(\"normal\", normalAttribute);\n      } else {\n        for (let i = 0, il = normalAttribute.count; i < il; i++) {\n          normalAttribute.setXYZ(i, 0, 0, 0);\n        }\n      }\n      const pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n      const nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n      const cb = new Vector3(), ab = new Vector3();\n      if (index) {\n        for (let i = 0, il = index.count; i < il; i += 3) {\n          const vA = index.getX(i + 0);\n          const vB = index.getX(i + 1);\n          const vC = index.getX(i + 2);\n          pA.fromBufferAttribute(positionAttribute, vA);\n          pB.fromBufferAttribute(positionAttribute, vB);\n          pC.fromBufferAttribute(positionAttribute, vC);\n          cb.subVectors(pC, pB);\n          ab.subVectors(pA, pB);\n          cb.cross(ab);\n          nA.fromBufferAttribute(normalAttribute, vA);\n          nB.fromBufferAttribute(normalAttribute, vB);\n          nC.fromBufferAttribute(normalAttribute, vC);\n          nA.add(cb);\n          nB.add(cb);\n          nC.add(cb);\n          normalAttribute.setXYZ(vA, nA.x, nA.y, nA.z);\n          normalAttribute.setXYZ(vB, nB.x, nB.y, nB.z);\n          normalAttribute.setXYZ(vC, nC.x, nC.y, nC.z);\n        }\n      } else {\n        for (let i = 0, il = positionAttribute.count; i < il; i += 3) {\n          pA.fromBufferAttribute(positionAttribute, i + 0);\n          pB.fromBufferAttribute(positionAttribute, i + 1);\n          pC.fromBufferAttribute(positionAttribute, i + 2);\n          cb.subVectors(pC, pB);\n          ab.subVectors(pA, pB);\n          cb.cross(ab);\n          normalAttribute.setXYZ(i + 0, cb.x, cb.y, cb.z);\n          normalAttribute.setXYZ(i + 1, cb.x, cb.y, cb.z);\n          normalAttribute.setXYZ(i + 2, cb.x, cb.y, cb.z);\n        }\n      }\n      this.normalizeNormals();\n      normalAttribute.needsUpdate = true;\n    }\n  }\n  // @deprecated since r144\n  merge() {\n    console.error(\"THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeBufferGeometries() instead.\");\n    return this;\n  }\n  normalizeNormals() {\n    const normals = this.attributes.normal;\n    for (let i = 0, il = normals.count; i < il; i++) {\n      _vector$8.fromBufferAttribute(normals, i);\n      _vector$8.normalize();\n      normals.setXYZ(i, _vector$8.x, _vector$8.y, _vector$8.z);\n    }\n  }\n  toNonIndexed() {\n    function convertBufferAttribute(attribute, indices2) {\n      const array = attribute.array;\n      const itemSize = attribute.itemSize;\n      const normalized = attribute.normalized;\n      const array2 = new array.constructor(indices2.length * itemSize);\n      let index = 0, index2 = 0;\n      for (let i = 0, l = indices2.length; i < l; i++) {\n        if (attribute.isInterleavedBufferAttribute) {\n          index = indices2[i] * attribute.data.stride + attribute.offset;\n        } else {\n          index = indices2[i] * itemSize;\n        }\n        for (let j = 0; j < itemSize; j++) {\n          array2[index2++] = array[index++];\n        }\n      }\n      return new BufferAttribute(array2, itemSize, normalized);\n    }\n    if (this.index === null) {\n      console.warn(\"THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.\");\n      return this;\n    }\n    const geometry2 = new _BufferGeometry();\n    const indices = this.index.array;\n    const attributes = this.attributes;\n    for (const name in attributes) {\n      const attribute = attributes[name];\n      const newAttribute = convertBufferAttribute(attribute, indices);\n      geometry2.setAttribute(name, newAttribute);\n    }\n    const morphAttributes = this.morphAttributes;\n    for (const name in morphAttributes) {\n      const morphArray = [];\n      const morphAttribute = morphAttributes[name];\n      for (let i = 0, il = morphAttribute.length; i < il; i++) {\n        const attribute = morphAttribute[i];\n        const newAttribute = convertBufferAttribute(attribute, indices);\n        morphArray.push(newAttribute);\n      }\n      geometry2.morphAttributes[name] = morphArray;\n    }\n    geometry2.morphTargetsRelative = this.morphTargetsRelative;\n    const groups = this.groups;\n    for (let i = 0, l = groups.length; i < l; i++) {\n      const group = groups[i];\n      geometry2.addGroup(group.start, group.count, group.materialIndex);\n    }\n    return geometry2;\n  }\n  toJSON() {\n    const data = {\n      metadata: {\n        version: 4.5,\n        type: \"BufferGeometry\",\n        generator: \"BufferGeometry.toJSON\"\n      }\n    };\n    data.uuid = this.uuid;\n    data.type = this.type;\n    if (this.name !== \"\")\n      data.name = this.name;\n    if (Object.keys(this.userData).length > 0)\n      data.userData = this.userData;\n    if (this.parameters !== void 0) {\n      const parameters = this.parameters;\n      for (const key in parameters) {\n        if (parameters[key] !== void 0)\n          data[key] = parameters[key];\n      }\n      return data;\n    }\n    data.data = { attributes: {} };\n    const index = this.index;\n    if (index !== null) {\n      data.data.index = {\n        type: index.array.constructor.name,\n        array: Array.prototype.slice.call(index.array)\n      };\n    }\n    const attributes = this.attributes;\n    for (const key in attributes) {\n      const attribute = attributes[key];\n      data.data.attributes[key] = attribute.toJSON(data.data);\n    }\n    const morphAttributes = {};\n    let hasMorphAttributes = false;\n    for (const key in this.morphAttributes) {\n      const attributeArray = this.morphAttributes[key];\n      const array = [];\n      for (let i = 0, il = attributeArray.length; i < il; i++) {\n        const attribute = attributeArray[i];\n        array.push(attribute.toJSON(data.data));\n      }\n      if (array.length > 0) {\n        morphAttributes[key] = array;\n        hasMorphAttributes = true;\n      }\n    }\n    if (hasMorphAttributes) {\n      data.data.morphAttributes = morphAttributes;\n      data.data.morphTargetsRelative = this.morphTargetsRelative;\n    }\n    const groups = this.groups;\n    if (groups.length > 0) {\n      data.data.groups = JSON.parse(JSON.stringify(groups));\n    }\n    const boundingSphere = this.boundingSphere;\n    if (boundingSphere !== null) {\n      data.data.boundingSphere = {\n        center: boundingSphere.center.toArray(),\n        radius: boundingSphere.radius\n      };\n    }\n    return data;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.index = null;\n    this.attributes = {};\n    this.morphAttributes = {};\n    this.groups = [];\n    this.boundingBox = null;\n    this.boundingSphere = null;\n    const data = {};\n    this.name = source.name;\n    const index = source.index;\n    if (index !== null) {\n      this.setIndex(index.clone(data));\n    }\n    const attributes = source.attributes;\n    for (const name in attributes) {\n      const attribute = attributes[name];\n      this.setAttribute(name, attribute.clone(data));\n    }\n    const morphAttributes = source.morphAttributes;\n    for (const name in morphAttributes) {\n      const array = [];\n      const morphAttribute = morphAttributes[name];\n      for (let i = 0, l = morphAttribute.length; i < l; i++) {\n        array.push(morphAttribute[i].clone(data));\n      }\n      this.morphAttributes[name] = array;\n    }\n    this.morphTargetsRelative = source.morphTargetsRelative;\n    const groups = source.groups;\n    for (let i = 0, l = groups.length; i < l; i++) {\n      const group = groups[i];\n      this.addGroup(group.start, group.count, group.materialIndex);\n    }\n    const boundingBox = source.boundingBox;\n    if (boundingBox !== null) {\n      this.boundingBox = boundingBox.clone();\n    }\n    const boundingSphere = source.boundingSphere;\n    if (boundingSphere !== null) {\n      this.boundingSphere = boundingSphere.clone();\n    }\n    this.drawRange.start = source.drawRange.start;\n    this.drawRange.count = source.drawRange.count;\n    this.userData = source.userData;\n    if (source.parameters !== void 0)\n      this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n};\nvar _inverseMatrix$2 = new Matrix4();\nvar _ray$2 = new Ray();\nvar _sphere$3 = new Sphere();\nvar _vA$1 = new Vector3();\nvar _vB$1 = new Vector3();\nvar _vC$1 = new Vector3();\nvar _tempA = new Vector3();\nvar _tempB = new Vector3();\nvar _tempC = new Vector3();\nvar _morphA = new Vector3();\nvar _morphB = new Vector3();\nvar _morphC = new Vector3();\nvar _uvA$1 = new Vector2();\nvar _uvB$1 = new Vector2();\nvar _uvC$1 = new Vector2();\nvar _intersectionPoint = new Vector3();\nvar _intersectionPointWorld = new Vector3();\nvar Mesh = class extends Object3D {\n  constructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) {\n    super();\n    this.isMesh = true;\n    this.type = \"Mesh\";\n    this.geometry = geometry;\n    this.material = material;\n    this.updateMorphTargets();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    if (source.morphTargetInfluences !== void 0) {\n      this.morphTargetInfluences = source.morphTargetInfluences.slice();\n    }\n    if (source.morphTargetDictionary !== void 0) {\n      this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary);\n    }\n    this.material = source.material;\n    this.geometry = source.geometry;\n    return this;\n  }\n  updateMorphTargets() {\n    const geometry = this.geometry;\n    const morphAttributes = geometry.morphAttributes;\n    const keys = Object.keys(morphAttributes);\n    if (keys.length > 0) {\n      const morphAttribute = morphAttributes[keys[0]];\n      if (morphAttribute !== void 0) {\n        this.morphTargetInfluences = [];\n        this.morphTargetDictionary = {};\n        for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n          const name = morphAttribute[m].name || String(m);\n          this.morphTargetInfluences.push(0);\n          this.morphTargetDictionary[name] = m;\n        }\n      }\n    }\n  }\n  raycast(raycaster2, intersects2) {\n    const geometry = this.geometry;\n    const material = this.material;\n    const matrixWorld = this.matrixWorld;\n    if (material === void 0)\n      return;\n    if (geometry.boundingSphere === null)\n      geometry.computeBoundingSphere();\n    _sphere$3.copy(geometry.boundingSphere);\n    _sphere$3.applyMatrix4(matrixWorld);\n    if (raycaster2.ray.intersectsSphere(_sphere$3) === false)\n      return;\n    _inverseMatrix$2.copy(matrixWorld).invert();\n    _ray$2.copy(raycaster2.ray).applyMatrix4(_inverseMatrix$2);\n    if (geometry.boundingBox !== null) {\n      if (_ray$2.intersectsBox(geometry.boundingBox) === false)\n        return;\n    }\n    let intersection;\n    const index = geometry.index;\n    const position = geometry.attributes.position;\n    const morphPosition = geometry.morphAttributes.position;\n    const morphTargetsRelative = geometry.morphTargetsRelative;\n    const uv = geometry.attributes.uv;\n    const uv2 = geometry.attributes.uv2;\n    const groups = geometry.groups;\n    const drawRange = geometry.drawRange;\n    if (index !== null) {\n      if (Array.isArray(material)) {\n        for (let i = 0, il = groups.length; i < il; i++) {\n          const group = groups[i];\n          const groupMaterial = material[group.materialIndex];\n          const start = Math.max(group.start, drawRange.start);\n          const end = Math.min(index.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n          for (let j = start, jl = end; j < jl; j += 3) {\n            const a = index.getX(j);\n            const b = index.getX(j + 1);\n            const c = index.getX(j + 2);\n            intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster2, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n            if (intersection) {\n              intersection.faceIndex = Math.floor(j / 3);\n              intersection.face.materialIndex = group.materialIndex;\n              intersects2.push(intersection);\n            }\n          }\n        }\n      } else {\n        const start = Math.max(0, drawRange.start);\n        const end = Math.min(index.count, drawRange.start + drawRange.count);\n        for (let i = start, il = end; i < il; i += 3) {\n          const a = index.getX(i);\n          const b = index.getX(i + 1);\n          const c = index.getX(i + 2);\n          intersection = checkBufferGeometryIntersection(this, material, raycaster2, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n          if (intersection) {\n            intersection.faceIndex = Math.floor(i / 3);\n            intersects2.push(intersection);\n          }\n        }\n      }\n    } else if (position !== void 0) {\n      if (Array.isArray(material)) {\n        for (let i = 0, il = groups.length; i < il; i++) {\n          const group = groups[i];\n          const groupMaterial = material[group.materialIndex];\n          const start = Math.max(group.start, drawRange.start);\n          const end = Math.min(position.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n          for (let j = start, jl = end; j < jl; j += 3) {\n            const a = j;\n            const b = j + 1;\n            const c = j + 2;\n            intersection = checkBufferGeometryIntersection(this, groupMaterial, raycaster2, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n            if (intersection) {\n              intersection.faceIndex = Math.floor(j / 3);\n              intersection.face.materialIndex = group.materialIndex;\n              intersects2.push(intersection);\n            }\n          }\n        }\n      } else {\n        const start = Math.max(0, drawRange.start);\n        const end = Math.min(position.count, drawRange.start + drawRange.count);\n        for (let i = start, il = end; i < il; i += 3) {\n          const a = i;\n          const b = i + 1;\n          const c = i + 2;\n          intersection = checkBufferGeometryIntersection(this, material, raycaster2, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c);\n          if (intersection) {\n            intersection.faceIndex = Math.floor(i / 3);\n            intersects2.push(intersection);\n          }\n        }\n      }\n    }\n  }\n};\nfunction checkIntersection(object, material, raycaster2, ray, pA, pB, pC, point) {\n  let intersect;\n  if (material.side === BackSide) {\n    intersect = ray.intersectTriangle(pC, pB, pA, true, point);\n  } else {\n    intersect = ray.intersectTriangle(pA, pB, pC, material.side !== DoubleSide, point);\n  }\n  if (intersect === null)\n    return null;\n  _intersectionPointWorld.copy(point);\n  _intersectionPointWorld.applyMatrix4(object.matrixWorld);\n  const distance = raycaster2.ray.origin.distanceTo(_intersectionPointWorld);\n  if (distance < raycaster2.near || distance > raycaster2.far)\n    return null;\n  return {\n    distance,\n    point: _intersectionPointWorld.clone(),\n    object\n  };\n}\nfunction checkBufferGeometryIntersection(object, material, raycaster2, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c) {\n  _vA$1.fromBufferAttribute(position, a);\n  _vB$1.fromBufferAttribute(position, b);\n  _vC$1.fromBufferAttribute(position, c);\n  const morphInfluences = object.morphTargetInfluences;\n  if (morphPosition && morphInfluences) {\n    _morphA.set(0, 0, 0);\n    _morphB.set(0, 0, 0);\n    _morphC.set(0, 0, 0);\n    for (let i = 0, il = morphPosition.length; i < il; i++) {\n      const influence = morphInfluences[i];\n      const morphAttribute = morphPosition[i];\n      if (influence === 0)\n        continue;\n      _tempA.fromBufferAttribute(morphAttribute, a);\n      _tempB.fromBufferAttribute(morphAttribute, b);\n      _tempC.fromBufferAttribute(morphAttribute, c);\n      if (morphTargetsRelative) {\n        _morphA.addScaledVector(_tempA, influence);\n        _morphB.addScaledVector(_tempB, influence);\n        _morphC.addScaledVector(_tempC, influence);\n      } else {\n        _morphA.addScaledVector(_tempA.sub(_vA$1), influence);\n        _morphB.addScaledVector(_tempB.sub(_vB$1), influence);\n        _morphC.addScaledVector(_tempC.sub(_vC$1), influence);\n      }\n    }\n    _vA$1.add(_morphA);\n    _vB$1.add(_morphB);\n    _vC$1.add(_morphC);\n  }\n  if (object.isSkinnedMesh) {\n    object.boneTransform(a, _vA$1);\n    object.boneTransform(b, _vB$1);\n    object.boneTransform(c, _vC$1);\n  }\n  const intersection = checkIntersection(object, material, raycaster2, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint);\n  if (intersection) {\n    if (uv) {\n      _uvA$1.fromBufferAttribute(uv, a);\n      _uvB$1.fromBufferAttribute(uv, b);\n      _uvC$1.fromBufferAttribute(uv, c);\n      intersection.uv = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n    }\n    if (uv2) {\n      _uvA$1.fromBufferAttribute(uv2, a);\n      _uvB$1.fromBufferAttribute(uv2, b);\n      _uvC$1.fromBufferAttribute(uv2, c);\n      intersection.uv2 = Triangle.getUV(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n    }\n    const face = {\n      a,\n      b,\n      c,\n      normal: new Vector3(),\n      materialIndex: 0\n    };\n    Triangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal);\n    intersection.face = face;\n  }\n  return intersection;\n}\nvar BoxGeometry = class _BoxGeometry extends BufferGeometry {\n  constructor(width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) {\n    super();\n    this.type = \"BoxGeometry\";\n    this.parameters = {\n      width,\n      height,\n      depth,\n      widthSegments,\n      heightSegments,\n      depthSegments\n    };\n    const scope = this;\n    widthSegments = Math.floor(widthSegments);\n    heightSegments = Math.floor(heightSegments);\n    depthSegments = Math.floor(depthSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let numberOfVertices = 0;\n    let groupStart = 0;\n    buildPlane(\"z\", \"y\", \"x\", -1, -1, depth, height, width, depthSegments, heightSegments, 0);\n    buildPlane(\"z\", \"y\", \"x\", 1, -1, depth, height, -width, depthSegments, heightSegments, 1);\n    buildPlane(\"x\", \"z\", \"y\", 1, 1, width, depth, height, widthSegments, depthSegments, 2);\n    buildPlane(\"x\", \"z\", \"y\", 1, -1, width, depth, -height, widthSegments, depthSegments, 3);\n    buildPlane(\"x\", \"y\", \"z\", 1, -1, width, height, depth, widthSegments, heightSegments, 4);\n    buildPlane(\"x\", \"y\", \"z\", -1, -1, width, height, -depth, widthSegments, heightSegments, 5);\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function buildPlane(u, v, w, udir, vdir, width2, height2, depth2, gridX, gridY, materialIndex) {\n      const segmentWidth = width2 / gridX;\n      const segmentHeight = height2 / gridY;\n      const widthHalf = width2 / 2;\n      const heightHalf = height2 / 2;\n      const depthHalf = depth2 / 2;\n      const gridX1 = gridX + 1;\n      const gridY1 = gridY + 1;\n      let vertexCounter = 0;\n      let groupCount = 0;\n      const vector = new Vector3();\n      for (let iy = 0; iy < gridY1; iy++) {\n        const y = iy * segmentHeight - heightHalf;\n        for (let ix = 0; ix < gridX1; ix++) {\n          const x2 = ix * segmentWidth - widthHalf;\n          vector[u] = x2 * udir;\n          vector[v] = y * vdir;\n          vector[w] = depthHalf;\n          vertices.push(vector.x, vector.y, vector.z);\n          vector[u] = 0;\n          vector[v] = 0;\n          vector[w] = depth2 > 0 ? 1 : -1;\n          normals.push(vector.x, vector.y, vector.z);\n          uvs.push(ix / gridX);\n          uvs.push(1 - iy / gridY);\n          vertexCounter += 1;\n        }\n      }\n      for (let iy = 0; iy < gridY; iy++) {\n        for (let ix = 0; ix < gridX; ix++) {\n          const a = numberOfVertices + ix + gridX1 * iy;\n          const b = numberOfVertices + ix + gridX1 * (iy + 1);\n          const c = numberOfVertices + (ix + 1) + gridX1 * (iy + 1);\n          const d = numberOfVertices + (ix + 1) + gridX1 * iy;\n          indices.push(a, b, d);\n          indices.push(b, c, d);\n          groupCount += 6;\n        }\n      }\n      scope.addGroup(groupStart, groupCount, materialIndex);\n      groupStart += groupCount;\n      numberOfVertices += vertexCounter;\n    }\n  }\n  static fromJSON(data) {\n    return new _BoxGeometry(data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments);\n  }\n};\nfunction cloneUniforms(src) {\n  const dst = {};\n  for (const u in src) {\n    dst[u] = {};\n    for (const p2 in src[u]) {\n      const property2 = src[u][p2];\n      if (property2 && (property2.isColor || property2.isMatrix3 || property2.isMatrix4 || property2.isVector2 || property2.isVector3 || property2.isVector4 || property2.isTexture || property2.isQuaternion)) {\n        dst[u][p2] = property2.clone();\n      } else if (Array.isArray(property2)) {\n        dst[u][p2] = property2.slice();\n      } else {\n        dst[u][p2] = property2;\n      }\n    }\n  }\n  return dst;\n}\nfunction mergeUniforms(uniforms) {\n  const merged = {};\n  for (let u = 0; u < uniforms.length; u++) {\n    const tmp2 = cloneUniforms(uniforms[u]);\n    for (const p2 in tmp2) {\n      merged[p2] = tmp2[p2];\n    }\n  }\n  return merged;\n}\nfunction cloneUniformsGroups(src) {\n  const dst = [];\n  for (let u = 0; u < src.length; u++) {\n    dst.push(src[u].clone());\n  }\n  return dst;\n}\nvar UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\nvar default_vertex = \"void main() {\\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\nvar default_fragment = \"void main() {\\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\nvar ShaderMaterial = class extends Material {\n  constructor(parameters) {\n    super();\n    this.isShaderMaterial = true;\n    this.type = \"ShaderMaterial\";\n    this.defines = {};\n    this.uniforms = {};\n    this.uniformsGroups = [];\n    this.vertexShader = default_vertex;\n    this.fragmentShader = default_fragment;\n    this.linewidth = 1;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.fog = false;\n    this.lights = false;\n    this.clipping = false;\n    this.extensions = {\n      derivatives: false,\n      // set to use derivatives\n      fragDepth: false,\n      // set to use fragment depth values\n      drawBuffers: false,\n      // set to use draw buffers\n      shaderTextureLOD: false\n      // set to use shader texture LOD\n    };\n    this.defaultAttributeValues = {\n      \"color\": [1, 1, 1],\n      \"uv\": [0, 0],\n      \"uv2\": [0, 0]\n    };\n    this.index0AttributeName = void 0;\n    this.uniformsNeedUpdate = false;\n    this.glslVersion = null;\n    if (parameters !== void 0) {\n      this.setValues(parameters);\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.fragmentShader = source.fragmentShader;\n    this.vertexShader = source.vertexShader;\n    this.uniforms = cloneUniforms(source.uniforms);\n    this.uniformsGroups = cloneUniformsGroups(source.uniformsGroups);\n    this.defines = Object.assign({}, source.defines);\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.fog = source.fog;\n    this.lights = source.lights;\n    this.clipping = source.clipping;\n    this.extensions = Object.assign({}, source.extensions);\n    this.glslVersion = source.glslVersion;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.glslVersion = this.glslVersion;\n    data.uniforms = {};\n    for (const name in this.uniforms) {\n      const uniform = this.uniforms[name];\n      const value = uniform.value;\n      if (value && value.isTexture) {\n        data.uniforms[name] = {\n          type: \"t\",\n          value: value.toJSON(meta).uuid\n        };\n      } else if (value && value.isColor) {\n        data.uniforms[name] = {\n          type: \"c\",\n          value: value.getHex()\n        };\n      } else if (value && value.isVector2) {\n        data.uniforms[name] = {\n          type: \"v2\",\n          value: value.toArray()\n        };\n      } else if (value && value.isVector3) {\n        data.uniforms[name] = {\n          type: \"v3\",\n          value: value.toArray()\n        };\n      } else if (value && value.isVector4) {\n        data.uniforms[name] = {\n          type: \"v4\",\n          value: value.toArray()\n        };\n      } else if (value && value.isMatrix3) {\n        data.uniforms[name] = {\n          type: \"m3\",\n          value: value.toArray()\n        };\n      } else if (value && value.isMatrix4) {\n        data.uniforms[name] = {\n          type: \"m4\",\n          value: value.toArray()\n        };\n      } else {\n        data.uniforms[name] = {\n          value\n        };\n      }\n    }\n    if (Object.keys(this.defines).length > 0)\n      data.defines = this.defines;\n    data.vertexShader = this.vertexShader;\n    data.fragmentShader = this.fragmentShader;\n    const extensions = {};\n    for (const key in this.extensions) {\n      if (this.extensions[key] === true)\n        extensions[key] = true;\n    }\n    if (Object.keys(extensions).length > 0)\n      data.extensions = extensions;\n    return data;\n  }\n};\nvar Camera = class extends Object3D {\n  constructor() {\n    super();\n    this.isCamera = true;\n    this.type = \"Camera\";\n    this.matrixWorldInverse = new Matrix4();\n    this.projectionMatrix = new Matrix4();\n    this.projectionMatrixInverse = new Matrix4();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.matrixWorldInverse.copy(source.matrixWorldInverse);\n    this.projectionMatrix.copy(source.projectionMatrix);\n    this.projectionMatrixInverse.copy(source.projectionMatrixInverse);\n    return this;\n  }\n  getWorldDirection(target2) {\n    this.updateWorldMatrix(true, false);\n    const e = this.matrixWorld.elements;\n    return target2.set(-e[8], -e[9], -e[10]).normalize();\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    this.matrixWorldInverse.copy(this.matrixWorld).invert();\n  }\n  updateWorldMatrix(updateParents, updateChildren) {\n    super.updateWorldMatrix(updateParents, updateChildren);\n    this.matrixWorldInverse.copy(this.matrixWorld).invert();\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nvar PerspectiveCamera = class extends Camera {\n  constructor(fov2 = 50, aspect2 = 1, near = 0.1, far = 2e3) {\n    super();\n    this.isPerspectiveCamera = true;\n    this.type = \"PerspectiveCamera\";\n    this.fov = fov2;\n    this.zoom = 1;\n    this.near = near;\n    this.far = far;\n    this.focus = 10;\n    this.aspect = aspect2;\n    this.view = null;\n    this.filmGauge = 35;\n    this.filmOffset = 0;\n    this.updateProjectionMatrix();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.fov = source.fov;\n    this.zoom = source.zoom;\n    this.near = source.near;\n    this.far = source.far;\n    this.focus = source.focus;\n    this.aspect = source.aspect;\n    this.view = source.view === null ? null : Object.assign({}, source.view);\n    this.filmGauge = source.filmGauge;\n    this.filmOffset = source.filmOffset;\n    return this;\n  }\n  /**\n   * Sets the FOV by focal length in respect to the current .filmGauge.\n   *\n   * The default film gauge is 35, so that the focal length can be specified for\n   * a 35mm (full frame) camera.\n   *\n   * Values for focal length and film gauge must have the same unit.\n   */\n  setFocalLength(focalLength) {\n    const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n    this.fov = RAD2DEG * 2 * Math.atan(vExtentSlope);\n    this.updateProjectionMatrix();\n  }\n  /**\n   * Calculates the focal length from the current .fov and .filmGauge.\n   */\n  getFocalLength() {\n    const vExtentSlope = Math.tan(DEG2RAD * 0.5 * this.fov);\n    return 0.5 * this.getFilmHeight() / vExtentSlope;\n  }\n  getEffectiveFOV() {\n    return RAD2DEG * 2 * Math.atan(\n      Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom\n    );\n  }\n  getFilmWidth() {\n    return this.filmGauge * Math.min(this.aspect, 1);\n  }\n  getFilmHeight() {\n    return this.filmGauge / Math.max(this.aspect, 1);\n  }\n  /**\n   * Sets an offset in a larger frustum. This is useful for multi-window or\n   * multi-monitor/multi-machine setups.\n   *\n   * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n   * the monitors are in grid like this\n   *\n   *   +---+---+---+\n   *   | A | B | C |\n   *   +---+---+---+\n   *   | D | E | F |\n   *   +---+---+---+\n   *\n   * then for each monitor you would call it like this\n   *\n   *   const w = 1920;\n   *   const h = 1080;\n   *   const fullWidth = w * 3;\n   *   const fullHeight = h * 2;\n   *\n   *   --A--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n   *   --B--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n   *   --C--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n   *   --D--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n   *   --E--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n   *   --F--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n   *\n   *   Note there is no reason monitors have to be the same size or in a grid.\n   */\n  setViewOffset(fullWidth, fullHeight, x2, y, width, height) {\n    this.aspect = fullWidth / fullHeight;\n    if (this.view === null) {\n      this.view = {\n        enabled: true,\n        fullWidth: 1,\n        fullHeight: 1,\n        offsetX: 0,\n        offsetY: 0,\n        width: 1,\n        height: 1\n      };\n    }\n    this.view.enabled = true;\n    this.view.fullWidth = fullWidth;\n    this.view.fullHeight = fullHeight;\n    this.view.offsetX = x2;\n    this.view.offsetY = y;\n    this.view.width = width;\n    this.view.height = height;\n    this.updateProjectionMatrix();\n  }\n  clearViewOffset() {\n    if (this.view !== null) {\n      this.view.enabled = false;\n    }\n    this.updateProjectionMatrix();\n  }\n  updateProjectionMatrix() {\n    const near = this.near;\n    let top = near * Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom;\n    let height = 2 * top;\n    let width = this.aspect * height;\n    let left = -0.5 * width;\n    const view2 = this.view;\n    if (this.view !== null && this.view.enabled) {\n      const fullWidth = view2.fullWidth, fullHeight = view2.fullHeight;\n      left += view2.offsetX * width / fullWidth;\n      top -= view2.offsetY * height / fullHeight;\n      width *= view2.width / fullWidth;\n      height *= view2.height / fullHeight;\n    }\n    const skew = this.filmOffset;\n    if (skew !== 0)\n      left += near * skew / this.getFilmWidth();\n    this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far);\n    this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.fov = this.fov;\n    data.object.zoom = this.zoom;\n    data.object.near = this.near;\n    data.object.far = this.far;\n    data.object.focus = this.focus;\n    data.object.aspect = this.aspect;\n    if (this.view !== null)\n      data.object.view = Object.assign({}, this.view);\n    data.object.filmGauge = this.filmGauge;\n    data.object.filmOffset = this.filmOffset;\n    return data;\n  }\n};\nvar fov = 90;\nvar aspect = 1;\nvar CubeCamera = class extends Object3D {\n  constructor(near, far, renderTarget) {\n    super();\n    this.type = \"CubeCamera\";\n    this.renderTarget = renderTarget;\n    const cameraPX = new PerspectiveCamera(fov, aspect, near, far);\n    cameraPX.layers = this.layers;\n    cameraPX.up.set(0, -1, 0);\n    cameraPX.lookAt(new Vector3(1, 0, 0));\n    this.add(cameraPX);\n    const cameraNX = new PerspectiveCamera(fov, aspect, near, far);\n    cameraNX.layers = this.layers;\n    cameraNX.up.set(0, -1, 0);\n    cameraNX.lookAt(new Vector3(-1, 0, 0));\n    this.add(cameraNX);\n    const cameraPY = new PerspectiveCamera(fov, aspect, near, far);\n    cameraPY.layers = this.layers;\n    cameraPY.up.set(0, 0, 1);\n    cameraPY.lookAt(new Vector3(0, 1, 0));\n    this.add(cameraPY);\n    const cameraNY = new PerspectiveCamera(fov, aspect, near, far);\n    cameraNY.layers = this.layers;\n    cameraNY.up.set(0, 0, -1);\n    cameraNY.lookAt(new Vector3(0, -1, 0));\n    this.add(cameraNY);\n    const cameraPZ = new PerspectiveCamera(fov, aspect, near, far);\n    cameraPZ.layers = this.layers;\n    cameraPZ.up.set(0, -1, 0);\n    cameraPZ.lookAt(new Vector3(0, 0, 1));\n    this.add(cameraPZ);\n    const cameraNZ = new PerspectiveCamera(fov, aspect, near, far);\n    cameraNZ.layers = this.layers;\n    cameraNZ.up.set(0, -1, 0);\n    cameraNZ.lookAt(new Vector3(0, 0, -1));\n    this.add(cameraNZ);\n  }\n  update(renderer, scene) {\n    if (this.parent === null)\n      this.updateMatrixWorld();\n    const renderTarget = this.renderTarget;\n    const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = this.children;\n    const currentRenderTarget = renderer.getRenderTarget();\n    const currentToneMapping = renderer.toneMapping;\n    const currentXrEnabled = renderer.xr.enabled;\n    renderer.toneMapping = NoToneMapping;\n    renderer.xr.enabled = false;\n    const generateMipmaps = renderTarget.texture.generateMipmaps;\n    renderTarget.texture.generateMipmaps = false;\n    renderer.setRenderTarget(renderTarget, 0);\n    renderer.render(scene, cameraPX);\n    renderer.setRenderTarget(renderTarget, 1);\n    renderer.render(scene, cameraNX);\n    renderer.setRenderTarget(renderTarget, 2);\n    renderer.render(scene, cameraPY);\n    renderer.setRenderTarget(renderTarget, 3);\n    renderer.render(scene, cameraNY);\n    renderer.setRenderTarget(renderTarget, 4);\n    renderer.render(scene, cameraPZ);\n    renderTarget.texture.generateMipmaps = generateMipmaps;\n    renderer.setRenderTarget(renderTarget, 5);\n    renderer.render(scene, cameraNZ);\n    renderer.setRenderTarget(currentRenderTarget);\n    renderer.toneMapping = currentToneMapping;\n    renderer.xr.enabled = currentXrEnabled;\n    renderTarget.texture.needsPMREMUpdate = true;\n  }\n};\nvar CubeTexture = class extends Texture {\n  constructor(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding) {\n    images = images !== void 0 ? images : [];\n    mapping = mapping !== void 0 ? mapping : CubeReflectionMapping;\n    super(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n    this.isCubeTexture = true;\n    this.flipY = false;\n  }\n  get images() {\n    return this.image;\n  }\n  set images(value) {\n    this.image = value;\n  }\n};\nvar WebGLCubeRenderTarget = class extends WebGLRenderTarget {\n  constructor(size = 1, options = {}) {\n    super(size, size, options);\n    this.isWebGLCubeRenderTarget = true;\n    const image = { width: size, height: size, depth: 1 };\n    const images = [image, image, image, image, image, image];\n    this.texture = new CubeTexture(images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding);\n    this.texture.isRenderTargetTexture = true;\n    this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n    this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n  }\n  fromEquirectangularTexture(renderer, texture) {\n    this.texture.type = texture.type;\n    this.texture.encoding = texture.encoding;\n    this.texture.generateMipmaps = texture.generateMipmaps;\n    this.texture.minFilter = texture.minFilter;\n    this.texture.magFilter = texture.magFilter;\n    const shader = {\n      uniforms: {\n        tEquirect: { value: null }\n      },\n      vertexShader: (\n        /* glsl */\n        `\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t`\n      ),\n      fragmentShader: (\n        /* glsl */\n        `\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n      )\n    };\n    const geometry = new BoxGeometry(5, 5, 5);\n    const material = new ShaderMaterial({\n      name: \"CubemapFromEquirect\",\n      uniforms: cloneUniforms(shader.uniforms),\n      vertexShader: shader.vertexShader,\n      fragmentShader: shader.fragmentShader,\n      side: BackSide,\n      blending: NoBlending\n    });\n    material.uniforms.tEquirect.value = texture;\n    const mesh = new Mesh(geometry, material);\n    const currentMinFilter = texture.minFilter;\n    if (texture.minFilter === LinearMipmapLinearFilter)\n      texture.minFilter = LinearFilter;\n    const camera2 = new CubeCamera(1, 10, this);\n    camera2.update(renderer, mesh);\n    texture.minFilter = currentMinFilter;\n    mesh.geometry.dispose();\n    mesh.material.dispose();\n    return this;\n  }\n  clear(renderer, color, depth, stencil) {\n    const currentRenderTarget = renderer.getRenderTarget();\n    for (let i = 0; i < 6; i++) {\n      renderer.setRenderTarget(this, i);\n      renderer.clear(color, depth, stencil);\n    }\n    renderer.setRenderTarget(currentRenderTarget);\n  }\n};\nvar _vector1 = new Vector3();\nvar _vector2 = new Vector3();\nvar _normalMatrix = new Matrix3();\nvar Plane = class {\n  constructor(normal = new Vector3(1, 0, 0), constant = 0) {\n    this.isPlane = true;\n    this.normal = normal;\n    this.constant = constant;\n  }\n  set(normal, constant) {\n    this.normal.copy(normal);\n    this.constant = constant;\n    return this;\n  }\n  setComponents(x2, y, z, w) {\n    this.normal.set(x2, y, z);\n    this.constant = w;\n    return this;\n  }\n  setFromNormalAndCoplanarPoint(normal, point) {\n    this.normal.copy(normal);\n    this.constant = -point.dot(this.normal);\n    return this;\n  }\n  setFromCoplanarPoints(a, b, c) {\n    const normal = _vector1.subVectors(c, b).cross(_vector2.subVectors(a, b)).normalize();\n    this.setFromNormalAndCoplanarPoint(normal, a);\n    return this;\n  }\n  copy(plane) {\n    this.normal.copy(plane.normal);\n    this.constant = plane.constant;\n    return this;\n  }\n  normalize() {\n    const inverseNormalLength = 1 / this.normal.length();\n    this.normal.multiplyScalar(inverseNormalLength);\n    this.constant *= inverseNormalLength;\n    return this;\n  }\n  negate() {\n    this.constant *= -1;\n    this.normal.negate();\n    return this;\n  }\n  distanceToPoint(point) {\n    return this.normal.dot(point) + this.constant;\n  }\n  distanceToSphere(sphere) {\n    return this.distanceToPoint(sphere.center) - sphere.radius;\n  }\n  projectPoint(point, target2) {\n    return target2.copy(this.normal).multiplyScalar(-this.distanceToPoint(point)).add(point);\n  }\n  intersectLine(line, target2) {\n    const direction = line.delta(_vector1);\n    const denominator = this.normal.dot(direction);\n    if (denominator === 0) {\n      if (this.distanceToPoint(line.start) === 0) {\n        return target2.copy(line.start);\n      }\n      return null;\n    }\n    const t2 = -(line.start.dot(this.normal) + this.constant) / denominator;\n    if (t2 < 0 || t2 > 1) {\n      return null;\n    }\n    return target2.copy(direction).multiplyScalar(t2).add(line.start);\n  }\n  intersectsLine(line) {\n    const startSign = this.distanceToPoint(line.start);\n    const endSign = this.distanceToPoint(line.end);\n    return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0;\n  }\n  intersectsBox(box) {\n    return box.intersectsPlane(this);\n  }\n  intersectsSphere(sphere) {\n    return sphere.intersectsPlane(this);\n  }\n  coplanarPoint(target2) {\n    return target2.copy(this.normal).multiplyScalar(-this.constant);\n  }\n  applyMatrix4(matrix, optionalNormalMatrix) {\n    const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix);\n    const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix);\n    const normal = this.normal.applyMatrix3(normalMatrix).normalize();\n    this.constant = -referencePoint.dot(normal);\n    return this;\n  }\n  translate(offset) {\n    this.constant -= offset.dot(this.normal);\n    return this;\n  }\n  equals(plane) {\n    return plane.normal.equals(this.normal) && plane.constant === this.constant;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nvar _sphere$2 = new Sphere();\nvar _vector$7 = new Vector3();\nvar Frustum = class {\n  constructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) {\n    this.planes = [p0, p1, p2, p3, p4, p5];\n  }\n  set(p0, p1, p2, p3, p4, p5) {\n    const planes = this.planes;\n    planes[0].copy(p0);\n    planes[1].copy(p1);\n    planes[2].copy(p2);\n    planes[3].copy(p3);\n    planes[4].copy(p4);\n    planes[5].copy(p5);\n    return this;\n  }\n  copy(frustum) {\n    const planes = this.planes;\n    for (let i = 0; i < 6; i++) {\n      planes[i].copy(frustum.planes[i]);\n    }\n    return this;\n  }\n  setFromProjectionMatrix(m) {\n    const planes = this.planes;\n    const me = m.elements;\n    const me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\n    const me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\n    const me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\n    const me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\n    planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize();\n    planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize();\n    planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize();\n    planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize();\n    planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize();\n    planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize();\n    return this;\n  }\n  intersectsObject(object) {\n    const geometry = object.geometry;\n    if (geometry.boundingSphere === null)\n      geometry.computeBoundingSphere();\n    _sphere$2.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld);\n    return this.intersectsSphere(_sphere$2);\n  }\n  intersectsSprite(sprite) {\n    _sphere$2.center.set(0, 0, 0);\n    _sphere$2.radius = 0.7071067811865476;\n    _sphere$2.applyMatrix4(sprite.matrixWorld);\n    return this.intersectsSphere(_sphere$2);\n  }\n  intersectsSphere(sphere) {\n    const planes = this.planes;\n    const center = sphere.center;\n    const negRadius = -sphere.radius;\n    for (let i = 0; i < 6; i++) {\n      const distance = planes[i].distanceToPoint(center);\n      if (distance < negRadius) {\n        return false;\n      }\n    }\n    return true;\n  }\n  intersectsBox(box) {\n    const planes = this.planes;\n    for (let i = 0; i < 6; i++) {\n      const plane = planes[i];\n      _vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n      _vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n      _vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n      if (plane.distanceToPoint(_vector$7) < 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  containsPoint(point) {\n    const planes = this.planes;\n    for (let i = 0; i < 6; i++) {\n      if (planes[i].distanceToPoint(point) < 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nfunction WebGLAnimation() {\n  let context = null;\n  let isAnimating = false;\n  let animationLoop = null;\n  let requestId = null;\n  function onAnimationFrame(time, frame) {\n    animationLoop(time, frame);\n    requestId = context.requestAnimationFrame(onAnimationFrame);\n  }\n  return {\n    start: function() {\n      if (isAnimating === true)\n        return;\n      if (animationLoop === null)\n        return;\n      requestId = context.requestAnimationFrame(onAnimationFrame);\n      isAnimating = true;\n    },\n    stop: function() {\n      context.cancelAnimationFrame(requestId);\n      isAnimating = false;\n    },\n    setAnimationLoop: function(callback) {\n      animationLoop = callback;\n    },\n    setContext: function(value) {\n      context = value;\n    }\n  };\n}\nfunction WebGLAttributes(gl, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  const buffers = /* @__PURE__ */ new WeakMap();\n  function createBuffer(attribute, bufferType) {\n    const array = attribute.array;\n    const usage = attribute.usage;\n    const buffer = gl.createBuffer();\n    gl.bindBuffer(bufferType, buffer);\n    gl.bufferData(bufferType, array, usage);\n    attribute.onUploadCallback();\n    let type;\n    if (array instanceof Float32Array) {\n      type = 5126;\n    } else if (array instanceof Uint16Array) {\n      if (attribute.isFloat16BufferAttribute) {\n        if (isWebGL2) {\n          type = 5131;\n        } else {\n          throw new Error(\"THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.\");\n        }\n      } else {\n        type = 5123;\n      }\n    } else if (array instanceof Int16Array) {\n      type = 5122;\n    } else if (array instanceof Uint32Array) {\n      type = 5125;\n    } else if (array instanceof Int32Array) {\n      type = 5124;\n    } else if (array instanceof Int8Array) {\n      type = 5120;\n    } else if (array instanceof Uint8Array) {\n      type = 5121;\n    } else if (array instanceof Uint8ClampedArray) {\n      type = 5121;\n    } else {\n      throw new Error(\"THREE.WebGLAttributes: Unsupported buffer data format: \" + array);\n    }\n    return {\n      buffer,\n      type,\n      bytesPerElement: array.BYTES_PER_ELEMENT,\n      version: attribute.version\n    };\n  }\n  function updateBuffer(buffer, attribute, bufferType) {\n    const array = attribute.array;\n    const updateRange = attribute.updateRange;\n    gl.bindBuffer(bufferType, buffer);\n    if (updateRange.count === -1) {\n      gl.bufferSubData(bufferType, 0, array);\n    } else {\n      if (isWebGL2) {\n        gl.bufferSubData(\n          bufferType,\n          updateRange.offset * array.BYTES_PER_ELEMENT,\n          array,\n          updateRange.offset,\n          updateRange.count\n        );\n      } else {\n        gl.bufferSubData(\n          bufferType,\n          updateRange.offset * array.BYTES_PER_ELEMENT,\n          array.subarray(updateRange.offset, updateRange.offset + updateRange.count)\n        );\n      }\n      updateRange.count = -1;\n    }\n  }\n  function get(attribute) {\n    if (attribute.isInterleavedBufferAttribute)\n      attribute = attribute.data;\n    return buffers.get(attribute);\n  }\n  function remove(attribute) {\n    if (attribute.isInterleavedBufferAttribute)\n      attribute = attribute.data;\n    const data = buffers.get(attribute);\n    if (data) {\n      gl.deleteBuffer(data.buffer);\n      buffers.delete(attribute);\n    }\n  }\n  function update(attribute, bufferType) {\n    if (attribute.isGLBufferAttribute) {\n      const cached = buffers.get(attribute);\n      if (!cached || cached.version < attribute.version) {\n        buffers.set(attribute, {\n          buffer: attribute.buffer,\n          type: attribute.type,\n          bytesPerElement: attribute.elementSize,\n          version: attribute.version\n        });\n      }\n      return;\n    }\n    if (attribute.isInterleavedBufferAttribute)\n      attribute = attribute.data;\n    const data = buffers.get(attribute);\n    if (data === void 0) {\n      buffers.set(attribute, createBuffer(attribute, bufferType));\n    } else if (data.version < attribute.version) {\n      updateBuffer(data.buffer, attribute, bufferType);\n      data.version = attribute.version;\n    }\n  }\n  return {\n    get,\n    remove,\n    update\n  };\n}\nvar PlaneGeometry = class _PlaneGeometry extends BufferGeometry {\n  constructor(width = 1, height = 1, widthSegments = 1, heightSegments = 1) {\n    super();\n    this.type = \"PlaneGeometry\";\n    this.parameters = {\n      width,\n      height,\n      widthSegments,\n      heightSegments\n    };\n    const width_half = width / 2;\n    const height_half = height / 2;\n    const gridX = Math.floor(widthSegments);\n    const gridY = Math.floor(heightSegments);\n    const gridX1 = gridX + 1;\n    const gridY1 = gridY + 1;\n    const segment_width = width / gridX;\n    const segment_height = height / gridY;\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    for (let iy = 0; iy < gridY1; iy++) {\n      const y = iy * segment_height - height_half;\n      for (let ix = 0; ix < gridX1; ix++) {\n        const x2 = ix * segment_width - width_half;\n        vertices.push(x2, -y, 0);\n        normals.push(0, 0, 1);\n        uvs.push(ix / gridX);\n        uvs.push(1 - iy / gridY);\n      }\n    }\n    for (let iy = 0; iy < gridY; iy++) {\n      for (let ix = 0; ix < gridX; ix++) {\n        const a = ix + gridX1 * iy;\n        const b = ix + gridX1 * (iy + 1);\n        const c = ix + 1 + gridX1 * (iy + 1);\n        const d = ix + 1 + gridX1 * iy;\n        indices.push(a, b, d);\n        indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new _PlaneGeometry(data.width, data.height, data.widthSegments, data.heightSegments);\n  }\n};\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\tuniform float alphaTest;\\n#endif\";\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\t#endif\\n#endif\";\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\tuniform sampler2D aoMap;\\n\tuniform float aoMapIntensity;\\n#endif\";\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n    float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n    float x2 = x * x;\\n    float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n    return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\tfloat a2 = pow2( alpha );\\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\tfloat a2 = pow2( alpha );\\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\tfloat alpha = pow2( roughness );\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\tfloat D = D_GGX( alpha, dotNH );\\n\treturn F * ( V * D );\\n}\\n#ifdef USE_IRIDESCENCE\\n\tvec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {\\n\t\tfloat alpha = pow2( roughness );\\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\t\tvec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );\\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\t\tfloat D = D_GGX( alpha, dotNH );\\n\t\treturn F * ( V * D );\\n\t}\\n#endif\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\tconst float LUT_SIZE = 64.0;\\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\tfloat dotNV = saturate( dot( N, V ) );\\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\tfloat l = length( f );\\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\tfloat x = dot( v1, v2 );\\n\tfloat y = abs( x );\\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\tfloat v = a / b;\\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\tvec3 lightNormal = cross( v1, v2 );\\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\tvec3 T1, T2;\\n\tT1 = normalize( V - N * dot( V, N ) );\\n\tT2 = - cross( N, T1 );\\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\tvec3 coords[ 4 ];\\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\tvec3 vectorFormFactor = vec3( 0.0 );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\tfloat G = G_BlinnPhong_Implicit( );\\n\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\tfloat alpha = pow2( roughness );\\n\tfloat invAlpha = 1.0 / alpha;\\n\tfloat cos2h = dotNH * dotNH;\\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\tvec3 halfDir = normalize( lightDir + viewDir );\\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\tfloat V = V_Neubelt( dotNV, dotNL );\\n\treturn sheenColor * ( D * V );\\n}\\n#endif\";\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\tconst mat3 XYZ_TO_REC709 = mat3(\\n\t\t 3.2404542, -0.9692660,  0.0556434,\\n\t\t-1.5371385,  1.8760108, -0.2040259,\\n\t\t-0.4985314,  0.0415560,  1.0572252\\n\t);\\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\t}\\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\t}\\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\t}\\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\t\txyz /= 1.0685e-7;\\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\t\treturn rgb;\\n\t}\\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\t\tvec3 I;\\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\t\tif ( cosTheta2Sq < 0.0 ) {\\n\t\t\t return vec3( 1.0 );\\n\t\t}\\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\t\tfloat R21 = R12;\\n\t\tfloat T121 = 1.0 - R12;\\n\t\tfloat phi12 = 0.0;\\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\t\tfloat phi21 = PI - phi12;\\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\t\tvec3 phi23 = vec3( 0.0 );\\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\t\tvec3 phi = vec3( phi21 ) + phi23;\\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\t\tvec3 r123 = sqrt( R123 );\\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\t\tvec3 C0 = R12 + Rs;\\n\t\tI = C0;\\n\t\tvec3 Cm = Rs - T121;\\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\\n\t\t\tCm *= r123;\\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\t\t\tI += Cm * Sm;\\n\t\t}\\n\t\treturn max( I, vec3( 0.0 ) );\\n\t}\\n#endif\";\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\tuniform sampler2D bumpMap;\\n\tuniform float bumpScale;\\n\tvec2 dHdxy_fwd() {\\n\t\tvec2 dSTdx = dFdx( vUv );\\n\t\tvec2 dSTdy = dFdy( vUv );\\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\t\treturn vec2( dBx, dBy );\\n\t}\\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\t\tvec3 vSigmaX = dFdx( surf_pos.xyz );\\n\t\tvec3 vSigmaY = dFdy( surf_pos.xyz );\\n\t\tvec3 vN = surf_norm;\\n\t\tvec3 R1 = cross( vSigmaY, vN );\\n\t\tvec3 R2 = cross( vN, vSigmaX );\\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\t}\\n#endif\";\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvec4 plane;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\t\tplane = clippingPlanes[ i ];\\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\t\tbool clipped = true;\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\t\t\tplane = clippingPlanes[ i ];\\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t\tif ( clipped ) discard;\\n\t#endif\\n#endif\";\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n#endif\";\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvClipPosition = - mvPosition.xyz;\\n#endif\";\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\tdiffuseColor.rgb *= vColor;\\n#endif\";\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\tfloat precisionSafeLength( vec3 v ) {\\n\t\tfloat maxComponent = max3( abs( v ) );\\n\t\treturn length( v / maxComponent ) * maxComponent;\\n\t}\\n#endif\\nstruct IncidentLight {\\n\tvec3 color;\\n\tvec3 direction;\\n\tbool visible;\\n};\\nstruct ReflectedLight {\\n\tvec3 directDiffuse;\\n\tvec3 directSpecular;\\n\tvec3 indirectDiffuse;\\n\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\tvec3 position;\\n\tvec3 normal;\\n\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\tmat3 tmp;\\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\treturn vec2( u, v );\\n}\";\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\t#define cubeUV_minMipLevel 4.0\\n\t#define cubeUV_minTileSize 16.0\\n\tfloat getFace( vec3 direction ) {\\n\t\tvec3 absDirection = abs( direction );\\n\t\tfloat face = - 1.0;\\n\t\tif ( absDirection.x > absDirection.z ) {\\n\t\t\tif ( absDirection.x > absDirection.y )\\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t} else {\\n\t\t\tif ( absDirection.z > absDirection.y )\\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\t\t\telse\\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\t\t}\\n\t\treturn face;\\n\t}\\n\tvec2 getUV( vec3 direction, float face ) {\\n\t\tvec2 uv;\\n\t\tif ( face == 0.0 ) {\\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 1.0 ) {\\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\t\t} else if ( face == 2.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\t\t} else if ( face == 3.0 ) {\\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\t\t} else if ( face == 4.0 ) {\\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\t\t} else {\\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\t\t}\\n\t\treturn 0.5 * ( uv + 1.0 );\\n\t}\\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\t\tfloat face = getFace( direction );\\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\t\tfloat faceSize = exp2( mipInt );\\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\t\tif ( face > 2.0 ) {\\n\t\t\tuv.y += faceSize;\\n\t\t\tface -= 3.0;\\n\t\t}\\n\t\tuv.x += face * faceSize;\\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\t\t#ifdef texture2DGradEXT\\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\t\t#else\\n\t\t\treturn texture2D( envMap, uv ).rgb;\\n\t\t#endif\\n\t}\\n\t#define cubeUV_r0 1.0\\n\t#define cubeUV_v0 0.339\\n\t#define cubeUV_m0 - 2.0\\n\t#define cubeUV_r1 0.8\\n\t#define cubeUV_v1 0.276\\n\t#define cubeUV_m1 - 1.0\\n\t#define cubeUV_r4 0.4\\n\t#define cubeUV_v4 0.046\\n\t#define cubeUV_m4 2.0\\n\t#define cubeUV_r5 0.305\\n\t#define cubeUV_v5 0.016\\n\t#define cubeUV_m5 3.0\\n\t#define cubeUV_r6 0.21\\n\t#define cubeUV_v6 0.0038\\n\t#define cubeUV_m6 4.0\\n\tfloat roughnessToMip( float roughness ) {\\n\t\tfloat mip = 0.0;\\n\t\tif ( roughness >= cubeUV_r1 ) {\\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\t\t} else if ( roughness >= cubeUV_r4 ) {\\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\t\t} else if ( roughness >= cubeUV_r5 ) {\\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\t\t} else if ( roughness >= cubeUV_r6 ) {\\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\t\t} else {\\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\\n\t\treturn mip;\\n\t}\\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\t\tfloat mipF = fract( mip );\\n\t\tfloat mipInt = floor( mip );\\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\t\tif ( mipF == 0.0 ) {\\n\t\t\treturn vec4( color0, 1.0 );\\n\t\t} else {\\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\t\t}\\n\t}\\n#endif\";\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\tmat3 m = mat3( instanceMatrix );\\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\t#ifdef FLIP_SIDED\\n\t\ttransformedTangent = - transformedTangent;\\n\t#endif\\n#endif\";\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\tuniform sampler2D displacementMap;\\n\tuniform float displacementScale;\\n\tuniform float displacementBias;\\n#endif\";\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tuniform sampler2D emissiveMap;\\n#endif\";\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\nvar encodings_pars_fragment = \"vec4 LinearToLinear( in vec4 value ) {\\n\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvec3 cameraToFrag;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\t\t}\\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\t\t#else\\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\t\t#endif\\n\t#else\\n\t\tvec3 reflectVec = vReflect;\\n\t#endif\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\t#else\\n\t\tvec4 envColor = vec4( 0.0 );\\n\t#endif\\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\t#elif defined( ENVMAP_BLENDING_MIX )\\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\t#elif defined( ENVMAP_BLENDING_ADD )\\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\t#endif\\n#endif\";\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float envMapIntensity;\\n\tuniform float flipEnvMap;\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tuniform samplerCube envMap;\\n\t#else\\n\t\tuniform sampler2D envMap;\\n\t#endif\\n\t\\n#endif\";\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\tuniform float reflectivity;\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\tvarying vec3 vWorldPosition;\\n\t\tuniform float refractionRatio;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t#endif\\n#endif\";\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\t\t#define ENV_WORLDPOS\\n\t#endif\\n\t#ifdef ENV_WORLDPOS\\n\t\t\\n\t\tvarying vec3 vWorldPosition;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t\tuniform float refractionRatio;\\n\t#endif\\n#endif\";\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\t#ifdef ENV_WORLDPOS\\n\t\tvWorldPosition = worldPosition.xyz;\\n\t#else\\n\t\tvec3 cameraToVertex;\\n\t\tif ( isOrthographic ) {\\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\t\t} else {\\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\t\t}\\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\\n\t\t#else\\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar fog_vertex = \"#ifdef USE_FOG\\n\tvFogDepth = - mvPosition.z;\\n#endif\";\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\tvarying float vFogDepth;\\n#endif\";\nvar fog_fragment = \"#ifdef USE_FOG\\n\t#ifdef FOG_EXP2\\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\t#else\\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\t#endif\\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\tuniform vec3 fogColor;\\n\tvarying float vFogDepth;\\n\t#ifdef FOG_EXP2\\n\t\tuniform float fogDensity;\\n\t#else\\n\t\tuniform float fogNear;\\n\t\tuniform float fogFar;\\n\t#endif\\n#endif\";\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\tfloat dotNL = dot( normal, lightDirection );\\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\t#ifdef USE_GRADIENTMAP\\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\\n\t#else\\n\t\tvec2 fw = fwidth( coord ) * 0.5;\\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\t#endif\\n}\";\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\tuniform sampler2D lightMap;\\n\tuniform float lightMapIntensity;\\n#endif\";\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\tvec3 diffuseColor;\\n\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert\\n#define Material_LightProbeLOD( material )\t(0)\";\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\tvec3 irradiance = ambientLightColor;\\n\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\t\tif ( cutoffDistance > 0.0 ) {\\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\t\t}\\n\t\treturn distanceFalloff;\\n\t#else\\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\t\t}\\n\t\treturn 1.0;\\n\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\tstruct DirectionalLight {\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t};\\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tlight.color = directionalLight.color;\\n\t\tlight.direction = directionalLight.direction;\\n\t\tlight.visible = true;\\n\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\tstruct PointLight {\\n\t\tvec3 position;\\n\t\tvec3 color;\\n\t\tfloat distance;\\n\t\tfloat decay;\\n\t};\\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tvec3 lVector = pointLight.position - geometry.position;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat lightDistance = length( lVector );\\n\t\tlight.color = pointLight.color;\\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\tstruct SpotLight {\\n\t\tvec3 position;\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t\tfloat distance;\\n\t\tfloat decay;\\n\t\tfloat coneCos;\\n\t\tfloat penumbraCos;\\n\t};\\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\t\tvec3 lVector = spotLight.position - geometry.position;\\n\t\tlight.direction = normalize( lVector );\\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\t\tif ( spotAttenuation > 0.0 ) {\\n\t\t\tfloat lightDistance = length( lVector );\\n\t\t\tlight.color = spotLight.color * spotAttenuation;\\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\t\t} else {\\n\t\t\tlight.color = vec3( 0.0 );\\n\t\t\tlight.visible = false;\\n\t\t}\\n\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\tstruct RectAreaLight {\\n\t\tvec3 color;\\n\t\tvec3 position;\\n\t\tvec3 halfWidth;\\n\t\tvec3 halfHeight;\\n\t};\\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\tstruct HemisphereLight {\\n\t\tvec3 direction;\\n\t\tvec3 skyColor;\\n\t\tvec3 groundColor;\\n\t};\\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\t\treturn irradiance;\\n\t}\\n#endif\";\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\t\t\treturn envMapColor.rgb * envMapIntensity;\\n\t\t#else\\n\t\t\treturn vec3( 0.0 );\\n\t\t#endif\\n\t}\\n#endif\";\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\t(0)\";\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\tvec3 diffuseColor;\\n\tvec3 specularColor;\\n\tfloat specularShininess;\\n\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\t(0)\";\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\tmaterial.ior = ior;\\n\t#ifdef SPECULAR\\n\t\tfloat specularIntensityFactor = specularIntensity;\\n\t\tvec3 specularColorFactor = specularColor;\\n\t\t#ifdef USE_SPECULARINTENSITYMAP\\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\t\t#endif\\n\t\t#ifdef USE_SPECULARCOLORMAP\\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\t\t#endif\\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\t#else\\n\t\tfloat specularIntensityFactor = 1.0;\\n\t\tvec3 specularColorFactor = vec3( 1.0 );\\n\t\tmaterial.specularF90 = 1.0;\\n\t#endif\\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tmaterial.clearcoat = clearcoat;\\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\tmaterial.clearcoatF90 = 1.0;\\n\t#ifdef USE_CLEARCOATMAP\\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\t#endif\\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\tmaterial.clearcoatRoughness += geometryRoughness;\\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tmaterial.iridescence = iridescence;\\n\tmaterial.iridescenceIOR = iridescenceIOR;\\n\t#ifdef USE_IRIDESCENCEMAP\\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\\n\t#endif\\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\\n\t#else\\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\tmaterial.sheenColor = sheenColor;\\n\t#ifdef USE_SHEENCOLORMAP\\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\t#endif\\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\t#ifdef USE_SHEENROUGHNESSMAP\\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\t#endif\\n#endif\";\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\tvec3 diffuseColor;\\n\tfloat roughness;\\n\tvec3 specularColor;\\n\tfloat specularF90;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat clearcoat;\\n\t\tfloat clearcoatRoughness;\\n\t\tvec3 clearcoatF0;\\n\t\tfloat clearcoatF90;\\n\t#endif\\n\t#ifdef USE_IRIDESCENCE\\n\t\tfloat iridescence;\\n\t\tfloat iridescenceIOR;\\n\t\tfloat iridescenceThickness;\\n\t\tvec3 iridescenceFresnel;\\n\t\tvec3 iridescenceF0;\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tvec3 sheenColor;\\n\t\tfloat sheenRoughness;\\n\t#endif\\n\t#ifdef IOR\\n\t\tfloat ior;\\n\t#endif\\n\t#ifdef USE_TRANSMISSION\\n\t\tfloat transmission;\\n\t\tfloat transmissionAlpha;\\n\t\tfloat thickness;\\n\t\tfloat attenuationDistance;\\n\t\tvec3 attenuationColor;\\n\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tfloat r2 = roughness * roughness;\\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\tvec4 r = roughness * c0 + c1;\\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\t#ifdef USE_IRIDESCENCE\\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\t#else\\n\t\tvec3 Fr = specularColor;\\n\t#endif\\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\tfloat Ess = fab.x + fab.y;\\n\tfloat Ems = 1.0 - Ess;\\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\tsingleScatter += FssEss;\\n\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\t\tvec3 normal = geometry.normal;\\n\t\tvec3 viewDir = geometry.viewDir;\\n\t\tvec3 position = geometry.position;\\n\t\tvec3 lightPos = rectAreaLight.position;\\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\t\tvec3 lightColor = rectAreaLight.color;\\n\t\tfloat roughness = material.roughness;\\n\t\tvec3 rectCoords[ 4 ];\\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\t\tvec4 t1 = texture2D( ltc_1, uv );\\n\t\tvec4 t2 = texture2D( ltc_2, uv );\\n\t\tmat3 mInv = mat3(\\n\t\t\tvec3( t1.x, 0, t1.y ),\\n\t\t\tvec3(    0, 1,    0 ),\\n\t\t\tvec3( t1.z, 0, t1.w )\\n\t\t);\\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\t#endif\\n\t#ifdef USE_IRIDESCENCE\\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\\n\t#else\\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\t#endif\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\t#endif\\n\tvec3 singleScattering = vec3( 0.0 );\\n\tvec3 multiScattering = vec3( 0.0 );\\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\t#ifdef USE_IRIDESCENCE\\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\t#else\\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\t#endif\\n\tvec3 totalScattering = singleScattering + multiScattering;\\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Physical\\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\\n\tif ( material.iridescenceThickness == 0.0 ) {\\n\t\tmaterial.iridescence = 0.0;\\n\t} else {\\n\t\tmaterial.iridescence = saturate( material.iridescence );\\n\t}\\n\tif ( material.iridescence > 0.0 ) {\\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tPointLight pointLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tpointLight = pointLights[ i ];\\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\t\tpointLightShadow = pointLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tSpotLight spotLight;\\n\tvec4 spotColor;\\n\tvec3 spotLightCoord;\\n\tbool inSpotLightMap;\\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tspotLight = spotLights[ i ];\\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\t\t#else\\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\t\t#endif\\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\t\t#endif\\n\t\t#undef SPOT_LIGHT_MAP_INDEX\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\t\tspotLightShadow = spotLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\tDirectionalLight directionalLight;\\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLightShadow;\\n\t#endif\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tdirectionalLight = directionalLights[ i ];\\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\tRectAreaLight rectAreaLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\t\trectAreaLight = rectAreaLights[ i ];\\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\t}\\n\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\tvec3 iblIrradiance = vec3( 0.0 );\\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\tvec3 radiance = vec3( 0.0 );\\n\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\t\tirradiance += lightMapIrradiance;\\n\t#endif\\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\t#endif\\n#endif\";\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\tuniform float logDepthBufFC;\\n\tvarying float vFragDepth;\\n\tvarying float vIsPerspective;\\n#endif\";\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvarying float vFragDepth;\\n\t\tvarying float vIsPerspective;\\n\t#else\\n\t\tuniform float logDepthBufFC;\\n\t#endif\\n#endif\";\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvFragDepth = 1.0 + gl_Position.w;\\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\t#else\\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\t\t\tgl_Position.z *= gl_Position.w;\\n\t\t}\\n\t#endif\\n#endif\";\nvar map_fragment = \"#ifdef USE_MAP\\n\tvec4 sampledDiffuseColor = texture2D( map, vUv );\\n\t#ifdef DECODE_VIDEO_TEXTURE\\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\t#endif\\n\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\";\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\tuniform sampler2D metalnessMap;\\n#endif\";\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\tvColor *= morphTargetBaseInfluence;\\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t#if defined( USE_COLOR_ALPHA )\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\t\t#elif defined( USE_COLOR )\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\t\t#endif\\n\t}\\n#endif\";\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\tobjectNormal *= morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\t\t}\\n\t#else\\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\t#endif\\n#endif\";\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\tuniform float morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\t\tuniform sampler2DArray morphTargetsTexture;\\n\t\tuniform ivec2 morphTargetsTextureSize;\\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\t\t}\\n\t#else\\n\t\t#ifndef USE_MORPHNORMALS\\n\t\t\tuniform float morphTargetInfluences[ 8 ];\\n\t\t#else\\n\t\t\tuniform float morphTargetInfluences[ 4 ];\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\ttransformed *= morphTargetBaseInfluence;\\n\t#ifdef MORPHTARGETS_TEXTURE\\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\t\t}\\n\t#else\\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\t\t#ifndef USE_MORPHNORMALS\\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\tvec3 fdx = dFdx( vViewPosition );\\n\tvec3 fdy = dFdy( vViewPosition );\\n\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\tvec3 normal = normalize( vNormal );\\n\t#ifdef DOUBLE_SIDED\\n\t\tnormal = normal * faceDirection;\\n\t#endif\\n\t#ifdef USE_TANGENT\\n\t\tvec3 tangent = normalize( vTangent );\\n\t\tvec3 bitangent = normalize( vBitangent );\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\ttangent = tangent * faceDirection;\\n\t\t\tbitangent = bitangent * faceDirection;\\n\t\t#endif\\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\t\t#endif\\n\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\t#ifdef FLIP_SIDED\\n\t\tnormal = - normal;\\n\t#endif\\n\t#ifdef DOUBLE_SIDED\\n\t\tnormal = normal * faceDirection;\\n\t#endif\\n\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\tmapN.xy *= normalScale;\\n\t#ifdef USE_TANGENT\\n\t\tnormal = normalize( vTBN * mapN );\\n\t#else\\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\t#endif\\n#elif defined( USE_BUMPMAP )\\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n\t#ifdef USE_TANGENT\\n\t\tvarying vec3 vTangent;\\n\t\tvarying vec3 vBitangent;\\n\t#endif\\n#endif\";\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n\t#ifdef USE_TANGENT\\n\t\tvarying vec3 vTangent;\\n\t\tvarying vec3 vBitangent;\\n\t#endif\\n#endif\";\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\tvNormal = normalize( transformedNormal );\\n\t#ifdef USE_TANGENT\\n\t\tvTangent = normalize( transformedTangent );\\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\t#endif\\n#endif\";\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\tuniform sampler2D normalMap;\\n\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\\n\t\tvec2 st0 = dFdx( vUv.st );\\n\t\tvec2 st1 = dFdy( vUv.st );\\n\t\tvec3 N = surf_norm;\\n\t\tvec3 q1perp = cross( q1, N );\\n\t\tvec3 q0perp = cross( N, q0 );\\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\t}\\n#endif\";\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\t#ifdef USE_TANGENT\\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\t#else\\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\t#endif\\n#endif\";\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tuniform sampler2D clearcoatNormalMap;\\n\tuniform vec2 clearcoatNormalScale;\\n#endif\";\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\treturn dot( v, UnpackFactors );\\n}\\nvec2 packDepthToRG( in highp float v ) {\\n\treturn packDepthToRGBA( v ).yx;\\n}\\nfloat unpackRGToDepth( const in highp vec2 v ) {\\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\nvar dithering_fragment = \"#ifdef DITHERING\\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\tvec3 dithering( vec3 color ) {\\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\t\treturn color + dither_shift_RGB;\\n\t}\\n#endif\";\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\troughnessFactor *= texelRoughness.g;\\n#endif\";\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\tuniform sampler2D roughnessMap;\\n#endif\";\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n  varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n  uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\t}\\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\t}\\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\t\tfloat occlusion = 1.0;\\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\t\tfloat hard_shadow = step( compare , distribution.x );\\n\t\tif (hard_shadow != 1.0 ) {\\n\t\t\tfloat distance = compare - distribution.x ;\\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\t\t}\\n\t\treturn occlusion;\\n\t}\\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\t\tfloat shadow = 1.0;\\n\t\tshadowCoord.xyz /= shadowCoord.w;\\n\t\tshadowCoord.z += shadowBias;\\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\t\tbool inFrustum = all( inFrustumVec );\\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\t\tbool frustumTest = all( frustumTestVec );\\n\t\tif ( frustumTest ) {\\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\\n\t\t\tfloat dx2 = dx0 / 2.0;\\n\t\t\tfloat dy2 = dy0 / 2.0;\\n\t\t\tfloat dx3 = dx1 / 2.0;\\n\t\t\tfloat dy3 = dy1 / 2.0;\\n\t\t\tshadow = (\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\t\t\t) * ( 1.0 / 17.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx = texelSize.x;\\n\t\t\tfloat dy = texelSize.y;\\n\t\t\tvec2 uv = shadowCoord.xy;\\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\t\t\tuv -= f * texelSize;\\n\t\t\tshadow = (\\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\t\t\t\t\t f.x ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t f.y ) +\\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  f.x ),\\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\t\t\t\t\t\t  f.x ),\\n\t\t\t\t\t f.y )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\t\t#else\\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\t\t#endif\\n\t\t}\\n\t\treturn shadow;\\n\t}\\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\t\tvec3 absV = abs( v );\\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\t\tabsV *= scaleToCube;\\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\t\tvec2 planar = v.xy;\\n\t\tfloat almostATexel = 1.5 * texelSizeY;\\n\t\tfloat almostOne = 1.0 - almostATexel;\\n\t\tif ( absV.z >= almostOne ) {\\n\t\t\tif ( v.z > 0.0 )\\n\t\t\t\tplanar.x = 4.0 - v.x;\\n\t\t} else if ( absV.x >= almostOne ) {\\n\t\t\tfloat signX = sign( v.x );\\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\\n\t\t} else if ( absV.y >= almostOne ) {\\n\t\t\tfloat signY = sign( v.y );\\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\t\t\tplanar.y = v.z * signY - 2.0;\\n\t\t}\\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\t}\\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\t\tvec3 lightToPosition = shadowCoord.xyz;\\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\\n\t\tvec3 bd3D = normalize( lightToPosition );\\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\t\t\treturn (\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#else\\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\t\t#endif\\n\t}\\n#endif\";\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n  uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n  varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\t\tstruct DirectionalLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\t\tstruct SpotLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t};\\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\t\tstruct PointLightShadow {\\n\t\t\tfloat shadowBias;\\n\t\t\tfloat shadowNormalBias;\\n\t\t\tfloat shadowRadius;\\n\t\t\tvec2 shadowMapSize;\\n\t\t\tfloat shadowCameraNear;\\n\t\t\tfloat shadowCameraFar;\\n\t\t};\\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\t#endif\\n#endif\";\nvar shadowmap_vertex = \"#if defined( USE_SHADOWMAP ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_COORDS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\t\tvec4 shadowWorldPosition;\\n\t#endif\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_COORDS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition;\\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\t\t#endif\\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n#endif\";\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\tfloat shadow = 1.0;\\n\t#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\tDirectionalLightShadow directionalLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\t\tdirectionalLight = directionalLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\tSpotLightShadow spotLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\t\tspotLight = spotLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\tPointLightShadow pointLight;\\n\t#pragma unroll_loop_start\\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\t\tpointLight = pointLightShadows[ i ];\\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\t}\\n\t#pragma unroll_loop_end\\n\t#endif\\n\t#endif\\n\treturn shadow;\\n}\";\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\tuniform mat4 bindMatrix;\\n\tuniform mat4 bindMatrixInverse;\\n\tuniform highp sampler2D boneTexture;\\n\tuniform int boneTextureSize;\\n\tmat4 getBoneMatrix( const in float i ) {\\n\t\tfloat j = i * 4.0;\\n\t\tfloat x = mod( j, float( boneTextureSize ) );\\n\t\tfloat y = floor( j / float( boneTextureSize ) );\\n\t\tfloat dx = 1.0 / float( boneTextureSize );\\n\t\tfloat dy = 1.0 / float( boneTextureSize );\\n\t\ty = dy * ( y + 0.5 );\\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\t\treturn bone;\\n\t}\\n#endif\";\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\tvec4 skinned = vec4( 0.0 );\\n\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\tmat4 skinMatrix = mat4( 0.0 );\\n\tskinMatrix += skinWeight.x * boneMatX;\\n\tskinMatrix += skinWeight.y * boneMatY;\\n\tskinMatrix += skinWeight.z * boneMatZ;\\n\tskinMatrix += skinWeight.w * boneMatW;\\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\t#ifdef USE_TANGENT\\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\t#endif\\n#endif\";\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\tspecularStrength = texelSpecular.r;\\n#else\\n\tspecularStrength = 1.0;\\n#endif\";\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\tuniform sampler2D specularMap;\\n#endif\";\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\tcolor *= toneMappingExposure;\\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\tcolor *= toneMappingExposure;\\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\tconst mat3 ACESInputMat = mat3(\\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\\n\t);\\n\tconst mat3 ACESOutputMat = mat3(\\n\t\tvec3(  1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108,  1.10813, -0.07276 ),\\n\t\tvec3( -0.07367, -0.00605,  1.07602 )\\n\t);\\n\tcolor *= toneMappingExposure / 0.6;\\n\tcolor = ACESInputMat * color;\\n\tcolor = RRTAndODTFit( color );\\n\tcolor = ACESOutputMat * color;\\n\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\tmaterial.transmission = transmission;\\n\tmaterial.transmissionAlpha = 1.0;\\n\tmaterial.thickness = thickness;\\n\tmaterial.attenuationDistance = attenuationDistance;\\n\tmaterial.attenuationColor = attenuationColor;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\tmaterial.transmission *= texture2D( transmissionMap, vUv ).r;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tmaterial.thickness *= texture2D( thicknessMap, vUv ).g;\\n\t#endif\\n\tvec3 pos = vWorldPosition;\\n\tvec3 v = normalize( cameraPosition - pos );\\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\tvec4 transmission = getIBLVolumeRefraction(\\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\\n\t\tmaterial.attenuationColor, material.attenuationDistance );\\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );\\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\\n#endif\";\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\tuniform float transmission;\\n\tuniform float thickness;\\n\tuniform float attenuationDistance;\\n\tuniform vec3 attenuationColor;\\n\t#ifdef USE_TRANSMISSIONMAP\\n\t\tuniform sampler2D transmissionMap;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tuniform sampler2D thicknessMap;\\n\t#endif\\n\tuniform vec2 transmissionSamplerSize;\\n\tuniform sampler2D transmissionSamplerMap;\\n\tuniform mat4 modelMatrix;\\n\tuniform mat4 projectionMatrix;\\n\tvarying vec3 vWorldPosition;\\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\t\tvec3 modelScale;\\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\\n\t}\\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\t}\\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\t\t#ifdef texture2DLodEXT\\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\t\t#else\\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\t\t#endif\\n\t}\\n\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\t\tif ( isinf( attenuationDistance ) ) {\\n\t\t\treturn radiance;\\n\t\t} else {\\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\\n\t\t}\\n\t}\\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\t\tvec3 refractedRayExit = position + transmissionRay;\\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\t\trefractionCoords += 1.0;\\n\t\trefractionCoords /= 2.0;\\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\t}\\n#endif\";\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\tvarying vec2 vUv;\\n#endif\";\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\t#ifdef UVS_VERTEX_ONLY\\n\t\tvec2 vUv;\\n\t#else\\n\t\tvarying vec2 vUv;\\n\t#endif\\n\tuniform mat3 uvTransform;\\n#endif\";\nvar uv_vertex = \"#ifdef USE_UV\\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvarying vec2 vUv2;\\n#endif\";\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tattribute vec2 uv2;\\n\tvarying vec2 vUv2;\\n\tuniform mat3 uv2Transform;\\n#endif\";\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\t#ifdef USE_INSTANCING\\n\t\tworldPosition = instanceMatrix * worldPosition;\\n\t#endif\\n\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\nvar vertex$h = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\nvar fragment$h = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\tgl_FragColor = texture2D( t2D, vUv );\\n\t#ifdef DECODE_VIDEO_TEXTURE\\n\t\tgl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );\\n\t#endif\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n}\";\nvar vertex$g = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n\tgl_Position.z = gl_Position.w;\\n}\";\nvar fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\\n\t#else\\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\t#endif\\n\tgl_FragColor = texColor;\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n}\";\nvar vertex$f = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n\tgl_Position.z = gl_Position.w;\\n}\";\nvar fragment$f = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\tgl_FragColor = texColor;\\n\tgl_FragColor.a *= opacity;\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n}\";\nvar vertex$e = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <skinbase_vertex>\\n\t#ifdef USE_DISPLACEMENTMAP\\n\t\t#include <beginnormal_vertex>\\n\t\t#include <morphnormal_vertex>\\n\t\t#include <skinnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvHighPrecisionZW = gl_Position.zw;\\n}\";\nvar fragment$e = \"#if DEPTH_PACKING == 3200\\n\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( 1.0 );\\n\t#if DEPTH_PACKING == 3200\\n\t\tdiffuseColor.a = opacity;\\n\t#endif\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <logdepthbuf_fragment>\\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\t#if DEPTH_PACKING == 3200\\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\t#elif DEPTH_PACKING == 3201\\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\t#endif\\n}\";\nvar vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <skinbase_vertex>\\n\t#ifdef USE_DISPLACEMENTMAP\\n\t\t#include <beginnormal_vertex>\\n\t\t#include <morphnormal_vertex>\\n\t\t#include <skinnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvWorldPosition = worldPosition.xyz;\\n}\";\nvar fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( 1.0 );\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\tfloat dist = length( vWorldPosition - referencePosition );\\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\tdist = saturate( dist );\\n\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\nvar vertex$c = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n}\";\nvar fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvec3 direction = normalize( vWorldDirection );\\n\tvec2 sampleUV = equirectUv( direction );\\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n}\";\nvar vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\tvLineDistance = scale * lineDistance;\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <fog_vertex>\\n}\";\nvar fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\t\tdiscard;\\n\t}\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <color_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n}\";\nvar vertex$a = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\t\t#include <beginnormal_vertex>\\n\t\t#include <morphnormal_vertex>\\n\t\t#include <skinbase_vertex>\\n\t\t#include <skinnormal_vertex>\\n\t\t#include <defaultnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nvar fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\t#else\\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\t#endif\\n\t#include <aomap_fragment>\\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\t#include <envmap_fragment>\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nvar vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nvar fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_lambert_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_lambert_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include <envmap_fragment>\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nvar vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <color_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <fog_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n}\";\nvar fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\tvec3 viewDir = normalize( vViewPosition );\\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\tvec3 y = cross( viewDir, x );\\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\t#ifdef USE_MATCAP\\n\t\tvec4 matcapColor = texture2D( matcap, uv );\\n\t#else\\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\t#endif\\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nvar vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvarying vec3 vViewPosition;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\nvar fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\tvarying vec3 vViewPosition;\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\t#include <logdepthbuf_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\t#ifdef OPAQUE\\n\t\tgl_FragColor.a = 1.0;\\n\t#endif\\n}\";\nvar vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nvar fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_phong_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\t#include <envmap_fragment>\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nvar vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\tvarying vec3 vWorldPosition;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n#ifdef USE_TRANSMISSION\\n\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\nvar fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\t#define IOR\\n\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\tuniform float specularIntensity;\\n\tuniform vec3 specularColor;\\n\t#ifdef USE_SPECULARINTENSITYMAP\\n\t\tuniform sampler2D specularIntensityMap;\\n\t#endif\\n\t#ifdef USE_SPECULARCOLORMAP\\n\t\tuniform sampler2D specularColorMap;\\n\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tuniform float clearcoat;\\n\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tuniform float iridescence;\\n\tuniform float iridescenceIOR;\\n\tuniform float iridescenceThicknessMinimum;\\n\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\tuniform vec3 sheenColor;\\n\tuniform float sheenRoughness;\\n\t#ifdef USE_SHEENCOLORMAP\\n\t\tuniform sampler2D sheenColorMap;\\n\t#endif\\n\t#ifdef USE_SHEENROUGHNESSMAP\\n\t\tuniform sampler2D sheenRoughnessMap;\\n\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <bsdfs>\\n#include <iridescence_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_physical_pars_fragment>\\n#include <transmission_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <iridescence_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <roughnessmap_fragment>\\n\t#include <metalnessmap_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <clearcoat_normal_fragment_begin>\\n\t#include <clearcoat_normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_physical_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\t#include <transmission_fragment>\\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\t#ifdef USE_SHEEN\\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\t#endif\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nvar vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <normal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nvar fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_toon_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <normal_fragment_begin>\\n\t#include <normal_fragment_maps>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_toon_fragment>\\n\t#include <lights_fragment_begin>\\n\t#include <lights_fragment_maps>\\n\t#include <lights_fragment_end>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nvar vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <project_vertex>\\n\tgl_PointSize = size;\\n\t#ifdef USE_SIZEATTENUATION\\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\t#endif\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <fog_vertex>\\n}\";\nvar fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_particle_fragment>\\n\t#include <color_fragment>\\n\t#include <alphatest_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n}\";\nvar vertex$2 = \"#include <common>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nvar fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\";\nvar vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\tvec2 scale;\\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\t#ifndef USE_SIZEATTENUATION\\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\\n\t#endif\\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\tvec2 rotatedPosition;\\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\tmvPosition.xy += rotatedPosition;\\n\tgl_Position = projectionMatrix * mvPosition;\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <fog_vertex>\\n}\";\nvar fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <output_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\";\nvar ShaderChunk = {\n  alphamap_fragment,\n  alphamap_pars_fragment,\n  alphatest_fragment,\n  alphatest_pars_fragment,\n  aomap_fragment,\n  aomap_pars_fragment,\n  begin_vertex,\n  beginnormal_vertex,\n  bsdfs,\n  iridescence_fragment,\n  bumpmap_pars_fragment,\n  clipping_planes_fragment,\n  clipping_planes_pars_fragment,\n  clipping_planes_pars_vertex,\n  clipping_planes_vertex,\n  color_fragment,\n  color_pars_fragment,\n  color_pars_vertex,\n  color_vertex,\n  common,\n  cube_uv_reflection_fragment,\n  defaultnormal_vertex,\n  displacementmap_pars_vertex,\n  displacementmap_vertex,\n  emissivemap_fragment,\n  emissivemap_pars_fragment,\n  encodings_fragment,\n  encodings_pars_fragment,\n  envmap_fragment,\n  envmap_common_pars_fragment,\n  envmap_pars_fragment,\n  envmap_pars_vertex,\n  envmap_physical_pars_fragment,\n  envmap_vertex,\n  fog_vertex,\n  fog_pars_vertex,\n  fog_fragment,\n  fog_pars_fragment,\n  gradientmap_pars_fragment,\n  lightmap_fragment,\n  lightmap_pars_fragment,\n  lights_lambert_fragment,\n  lights_lambert_pars_fragment,\n  lights_pars_begin,\n  lights_toon_fragment,\n  lights_toon_pars_fragment,\n  lights_phong_fragment,\n  lights_phong_pars_fragment,\n  lights_physical_fragment,\n  lights_physical_pars_fragment,\n  lights_fragment_begin,\n  lights_fragment_maps,\n  lights_fragment_end,\n  logdepthbuf_fragment,\n  logdepthbuf_pars_fragment,\n  logdepthbuf_pars_vertex,\n  logdepthbuf_vertex,\n  map_fragment,\n  map_pars_fragment,\n  map_particle_fragment,\n  map_particle_pars_fragment,\n  metalnessmap_fragment,\n  metalnessmap_pars_fragment,\n  morphcolor_vertex,\n  morphnormal_vertex,\n  morphtarget_pars_vertex,\n  morphtarget_vertex,\n  normal_fragment_begin,\n  normal_fragment_maps,\n  normal_pars_fragment,\n  normal_pars_vertex,\n  normal_vertex,\n  normalmap_pars_fragment,\n  clearcoat_normal_fragment_begin,\n  clearcoat_normal_fragment_maps,\n  clearcoat_pars_fragment,\n  iridescence_pars_fragment,\n  output_fragment,\n  packing,\n  premultiplied_alpha_fragment,\n  project_vertex,\n  dithering_fragment,\n  dithering_pars_fragment,\n  roughnessmap_fragment,\n  roughnessmap_pars_fragment,\n  shadowmap_pars_fragment,\n  shadowmap_pars_vertex,\n  shadowmap_vertex,\n  shadowmask_pars_fragment,\n  skinbase_vertex,\n  skinning_pars_vertex,\n  skinning_vertex,\n  skinnormal_vertex,\n  specularmap_fragment,\n  specularmap_pars_fragment,\n  tonemapping_fragment,\n  tonemapping_pars_fragment,\n  transmission_fragment,\n  transmission_pars_fragment,\n  uv_pars_fragment,\n  uv_pars_vertex,\n  uv_vertex,\n  uv2_pars_fragment,\n  uv2_pars_vertex,\n  uv2_vertex,\n  worldpos_vertex,\n  background_vert: vertex$h,\n  background_frag: fragment$h,\n  backgroundCube_vert: vertex$g,\n  backgroundCube_frag: fragment$g,\n  cube_vert: vertex$f,\n  cube_frag: fragment$f,\n  depth_vert: vertex$e,\n  depth_frag: fragment$e,\n  distanceRGBA_vert: vertex$d,\n  distanceRGBA_frag: fragment$d,\n  equirect_vert: vertex$c,\n  equirect_frag: fragment$c,\n  linedashed_vert: vertex$b,\n  linedashed_frag: fragment$b,\n  meshbasic_vert: vertex$a,\n  meshbasic_frag: fragment$a,\n  meshlambert_vert: vertex$9,\n  meshlambert_frag: fragment$9,\n  meshmatcap_vert: vertex$8,\n  meshmatcap_frag: fragment$8,\n  meshnormal_vert: vertex$7,\n  meshnormal_frag: fragment$7,\n  meshphong_vert: vertex$6,\n  meshphong_frag: fragment$6,\n  meshphysical_vert: vertex$5,\n  meshphysical_frag: fragment$5,\n  meshtoon_vert: vertex$4,\n  meshtoon_frag: fragment$4,\n  points_vert: vertex$3,\n  points_frag: fragment$3,\n  shadow_vert: vertex$2,\n  shadow_frag: fragment$2,\n  sprite_vert: vertex$1,\n  sprite_frag: fragment$1\n};\nvar UniformsLib = {\n  common: {\n    diffuse: { value: new Color(16777215) },\n    opacity: { value: 1 },\n    map: { value: null },\n    uvTransform: { value: new Matrix3() },\n    uv2Transform: { value: new Matrix3() },\n    alphaMap: { value: null },\n    alphaTest: { value: 0 }\n  },\n  specularmap: {\n    specularMap: { value: null }\n  },\n  envmap: {\n    envMap: { value: null },\n    flipEnvMap: { value: -1 },\n    reflectivity: { value: 1 },\n    // basic, lambert, phong\n    ior: { value: 1.5 },\n    // physical\n    refractionRatio: { value: 0.98 }\n    // basic, lambert, phong\n  },\n  aomap: {\n    aoMap: { value: null },\n    aoMapIntensity: { value: 1 }\n  },\n  lightmap: {\n    lightMap: { value: null },\n    lightMapIntensity: { value: 1 }\n  },\n  emissivemap: {\n    emissiveMap: { value: null }\n  },\n  bumpmap: {\n    bumpMap: { value: null },\n    bumpScale: { value: 1 }\n  },\n  normalmap: {\n    normalMap: { value: null },\n    normalScale: { value: new Vector2(1, 1) }\n  },\n  displacementmap: {\n    displacementMap: { value: null },\n    displacementScale: { value: 1 },\n    displacementBias: { value: 0 }\n  },\n  roughnessmap: {\n    roughnessMap: { value: null }\n  },\n  metalnessmap: {\n    metalnessMap: { value: null }\n  },\n  gradientmap: {\n    gradientMap: { value: null }\n  },\n  fog: {\n    fogDensity: { value: 25e-5 },\n    fogNear: { value: 1 },\n    fogFar: { value: 2e3 },\n    fogColor: { value: new Color(16777215) }\n  },\n  lights: {\n    ambientLightColor: { value: [] },\n    lightProbe: { value: [] },\n    directionalLights: { value: [], properties: {\n      direction: {},\n      color: {}\n    } },\n    directionalLightShadows: { value: [], properties: {\n      shadowBias: {},\n      shadowNormalBias: {},\n      shadowRadius: {},\n      shadowMapSize: {}\n    } },\n    directionalShadowMap: { value: [] },\n    directionalShadowMatrix: { value: [] },\n    spotLights: { value: [], properties: {\n      color: {},\n      position: {},\n      direction: {},\n      distance: {},\n      coneCos: {},\n      penumbraCos: {},\n      decay: {}\n    } },\n    spotLightShadows: { value: [], properties: {\n      shadowBias: {},\n      shadowNormalBias: {},\n      shadowRadius: {},\n      shadowMapSize: {}\n    } },\n    spotLightMap: { value: [] },\n    spotShadowMap: { value: [] },\n    spotLightMatrix: { value: [] },\n    pointLights: { value: [], properties: {\n      color: {},\n      position: {},\n      decay: {},\n      distance: {}\n    } },\n    pointLightShadows: { value: [], properties: {\n      shadowBias: {},\n      shadowNormalBias: {},\n      shadowRadius: {},\n      shadowMapSize: {},\n      shadowCameraNear: {},\n      shadowCameraFar: {}\n    } },\n    pointShadowMap: { value: [] },\n    pointShadowMatrix: { value: [] },\n    hemisphereLights: { value: [], properties: {\n      direction: {},\n      skyColor: {},\n      groundColor: {}\n    } },\n    // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n    rectAreaLights: { value: [], properties: {\n      color: {},\n      position: {},\n      width: {},\n      height: {}\n    } },\n    ltc_1: { value: null },\n    ltc_2: { value: null }\n  },\n  points: {\n    diffuse: { value: new Color(16777215) },\n    opacity: { value: 1 },\n    size: { value: 1 },\n    scale: { value: 1 },\n    map: { value: null },\n    alphaMap: { value: null },\n    alphaTest: { value: 0 },\n    uvTransform: { value: new Matrix3() }\n  },\n  sprite: {\n    diffuse: { value: new Color(16777215) },\n    opacity: { value: 1 },\n    center: { value: new Vector2(0.5, 0.5) },\n    rotation: { value: 0 },\n    map: { value: null },\n    alphaMap: { value: null },\n    alphaTest: { value: 0 },\n    uvTransform: { value: new Matrix3() }\n  }\n};\nvar ShaderLib = {\n  basic: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.specularmap,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.fog\n    ]),\n    vertexShader: ShaderChunk.meshbasic_vert,\n    fragmentShader: ShaderChunk.meshbasic_frag\n  },\n  lambert: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.specularmap,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: new Color(0) }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshlambert_vert,\n    fragmentShader: ShaderChunk.meshlambert_frag\n  },\n  phong: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.specularmap,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: new Color(0) },\n        specular: { value: new Color(1118481) },\n        shininess: { value: 30 }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshphong_vert,\n    fragmentShader: ShaderChunk.meshphong_frag\n  },\n  standard: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.roughnessmap,\n      UniformsLib.metalnessmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: new Color(0) },\n        roughness: { value: 1 },\n        metalness: { value: 0 },\n        envMapIntensity: { value: 1 }\n        // temporary\n      }\n    ]),\n    vertexShader: ShaderChunk.meshphysical_vert,\n    fragmentShader: ShaderChunk.meshphysical_frag\n  },\n  toon: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.gradientmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: new Color(0) }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshtoon_vert,\n    fragmentShader: ShaderChunk.meshtoon_frag\n  },\n  matcap: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.fog,\n      {\n        matcap: { value: null }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshmatcap_vert,\n    fragmentShader: ShaderChunk.meshmatcap_frag\n  },\n  points: {\n    uniforms: mergeUniforms([\n      UniformsLib.points,\n      UniformsLib.fog\n    ]),\n    vertexShader: ShaderChunk.points_vert,\n    fragmentShader: ShaderChunk.points_frag\n  },\n  dashed: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.fog,\n      {\n        scale: { value: 1 },\n        dashSize: { value: 1 },\n        totalSize: { value: 2 }\n      }\n    ]),\n    vertexShader: ShaderChunk.linedashed_vert,\n    fragmentShader: ShaderChunk.linedashed_frag\n  },\n  depth: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.displacementmap\n    ]),\n    vertexShader: ShaderChunk.depth_vert,\n    fragmentShader: ShaderChunk.depth_frag\n  },\n  normal: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      {\n        opacity: { value: 1 }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshnormal_vert,\n    fragmentShader: ShaderChunk.meshnormal_frag\n  },\n  sprite: {\n    uniforms: mergeUniforms([\n      UniformsLib.sprite,\n      UniformsLib.fog\n    ]),\n    vertexShader: ShaderChunk.sprite_vert,\n    fragmentShader: ShaderChunk.sprite_frag\n  },\n  background: {\n    uniforms: {\n      uvTransform: { value: new Matrix3() },\n      t2D: { value: null }\n    },\n    vertexShader: ShaderChunk.background_vert,\n    fragmentShader: ShaderChunk.background_frag\n  },\n  backgroundCube: {\n    uniforms: {\n      envMap: { value: null },\n      flipEnvMap: { value: -1 },\n      backgroundBlurriness: { value: 0 }\n    },\n    vertexShader: ShaderChunk.backgroundCube_vert,\n    fragmentShader: ShaderChunk.backgroundCube_frag\n  },\n  cube: {\n    uniforms: {\n      tCube: { value: null },\n      tFlip: { value: -1 },\n      opacity: { value: 1 }\n    },\n    vertexShader: ShaderChunk.cube_vert,\n    fragmentShader: ShaderChunk.cube_frag\n  },\n  equirect: {\n    uniforms: {\n      tEquirect: { value: null }\n    },\n    vertexShader: ShaderChunk.equirect_vert,\n    fragmentShader: ShaderChunk.equirect_frag\n  },\n  distanceRGBA: {\n    uniforms: mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.displacementmap,\n      {\n        referencePosition: { value: new Vector3() },\n        nearDistance: { value: 1 },\n        farDistance: { value: 1e3 }\n      }\n    ]),\n    vertexShader: ShaderChunk.distanceRGBA_vert,\n    fragmentShader: ShaderChunk.distanceRGBA_frag\n  },\n  shadow: {\n    uniforms: mergeUniforms([\n      UniformsLib.lights,\n      UniformsLib.fog,\n      {\n        color: { value: new Color(0) },\n        opacity: { value: 1 }\n      }\n    ]),\n    vertexShader: ShaderChunk.shadow_vert,\n    fragmentShader: ShaderChunk.shadow_frag\n  }\n};\nShaderLib.physical = {\n  uniforms: mergeUniforms([\n    ShaderLib.standard.uniforms,\n    {\n      clearcoat: { value: 0 },\n      clearcoatMap: { value: null },\n      clearcoatRoughness: { value: 0 },\n      clearcoatRoughnessMap: { value: null },\n      clearcoatNormalScale: { value: new Vector2(1, 1) },\n      clearcoatNormalMap: { value: null },\n      iridescence: { value: 0 },\n      iridescenceMap: { value: null },\n      iridescenceIOR: { value: 1.3 },\n      iridescenceThicknessMinimum: { value: 100 },\n      iridescenceThicknessMaximum: { value: 400 },\n      iridescenceThicknessMap: { value: null },\n      sheen: { value: 0 },\n      sheenColor: { value: new Color(0) },\n      sheenColorMap: { value: null },\n      sheenRoughness: { value: 1 },\n      sheenRoughnessMap: { value: null },\n      transmission: { value: 0 },\n      transmissionMap: { value: null },\n      transmissionSamplerSize: { value: new Vector2() },\n      transmissionSamplerMap: { value: null },\n      thickness: { value: 0 },\n      thicknessMap: { value: null },\n      attenuationDistance: { value: 0 },\n      attenuationColor: { value: new Color(0) },\n      specularIntensity: { value: 1 },\n      specularIntensityMap: { value: null },\n      specularColor: { value: new Color(1, 1, 1) },\n      specularColorMap: { value: null }\n    }\n  ]),\n  vertexShader: ShaderChunk.meshphysical_vert,\n  fragmentShader: ShaderChunk.meshphysical_frag\n};\nfunction WebGLBackground(renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha) {\n  const clearColor = new Color(0);\n  let clearAlpha = alpha === true ? 0 : 1;\n  let planeMesh;\n  let boxMesh;\n  let currentBackground = null;\n  let currentBackgroundVersion = 0;\n  let currentTonemapping = null;\n  function render2(renderList, scene) {\n    let forceClear = false;\n    let background = scene.isScene === true ? scene.background : null;\n    if (background && background.isTexture) {\n      const usePMREM = scene.backgroundBlurriness > 0;\n      background = (usePMREM ? cubeuvmaps : cubemaps).get(background);\n    }\n    const xr = renderer.xr;\n    const session = xr.getSession && xr.getSession();\n    if (session && session.environmentBlendMode === \"additive\") {\n      background = null;\n    }\n    if (background === null) {\n      setClear(clearColor, clearAlpha);\n    } else if (background && background.isColor) {\n      setClear(background, 1);\n      forceClear = true;\n    }\n    if (renderer.autoClear || forceClear) {\n      renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n    }\n    if (background && (background.isCubeTexture || background.mapping === CubeUVReflectionMapping)) {\n      if (boxMesh === void 0) {\n        boxMesh = new Mesh(\n          new BoxGeometry(1, 1, 1),\n          new ShaderMaterial({\n            name: \"BackgroundCubeMaterial\",\n            uniforms: cloneUniforms(ShaderLib.backgroundCube.uniforms),\n            vertexShader: ShaderLib.backgroundCube.vertexShader,\n            fragmentShader: ShaderLib.backgroundCube.fragmentShader,\n            side: BackSide,\n            depthTest: false,\n            depthWrite: false,\n            fog: false\n          })\n        );\n        boxMesh.geometry.deleteAttribute(\"normal\");\n        boxMesh.geometry.deleteAttribute(\"uv\");\n        boxMesh.onBeforeRender = function(renderer2, scene2, camera2) {\n          this.matrixWorld.copyPosition(camera2.matrixWorld);\n        };\n        Object.defineProperty(boxMesh.material, \"envMap\", {\n          get: function() {\n            return this.uniforms.envMap.value;\n          }\n        });\n        objects.update(boxMesh);\n      }\n      boxMesh.material.uniforms.envMap.value = background;\n      boxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture && background.isRenderTargetTexture === false ? -1 : 1;\n      boxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n      if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n        boxMesh.material.needsUpdate = true;\n        currentBackground = background;\n        currentBackgroundVersion = background.version;\n        currentTonemapping = renderer.toneMapping;\n      }\n      boxMesh.layers.enableAll();\n      renderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null);\n    } else if (background && background.isTexture) {\n      if (planeMesh === void 0) {\n        planeMesh = new Mesh(\n          new PlaneGeometry(2, 2),\n          new ShaderMaterial({\n            name: \"BackgroundMaterial\",\n            uniforms: cloneUniforms(ShaderLib.background.uniforms),\n            vertexShader: ShaderLib.background.vertexShader,\n            fragmentShader: ShaderLib.background.fragmentShader,\n            side: FrontSide,\n            depthTest: false,\n            depthWrite: false,\n            fog: false\n          })\n        );\n        planeMesh.geometry.deleteAttribute(\"normal\");\n        Object.defineProperty(planeMesh.material, \"map\", {\n          get: function() {\n            return this.uniforms.t2D.value;\n          }\n        });\n        objects.update(planeMesh);\n      }\n      planeMesh.material.uniforms.t2D.value = background;\n      if (background.matrixAutoUpdate === true) {\n        background.updateMatrix();\n      }\n      planeMesh.material.uniforms.uvTransform.value.copy(background.matrix);\n      if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n        planeMesh.material.needsUpdate = true;\n        currentBackground = background;\n        currentBackgroundVersion = background.version;\n        currentTonemapping = renderer.toneMapping;\n      }\n      planeMesh.layers.enableAll();\n      renderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null);\n    }\n  }\n  function setClear(color, alpha2) {\n    state.buffers.color.setClear(color.r, color.g, color.b, alpha2, premultipliedAlpha);\n  }\n  return {\n    getClearColor: function() {\n      return clearColor;\n    },\n    setClearColor: function(color, alpha2 = 1) {\n      clearColor.set(color);\n      clearAlpha = alpha2;\n      setClear(clearColor, clearAlpha);\n    },\n    getClearAlpha: function() {\n      return clearAlpha;\n    },\n    setClearAlpha: function(alpha2) {\n      clearAlpha = alpha2;\n      setClear(clearColor, clearAlpha);\n    },\n    render: render2\n  };\n}\nfunction WebGLBindingStates(gl, extensions, attributes, capabilities) {\n  const maxVertexAttributes = gl.getParameter(34921);\n  const extension = capabilities.isWebGL2 ? null : extensions.get(\"OES_vertex_array_object\");\n  const vaoAvailable = capabilities.isWebGL2 || extension !== null;\n  const bindingStates = {};\n  const defaultState = createBindingState(null);\n  let currentState = defaultState;\n  let forceUpdate = false;\n  function setup(object, material, program, geometry, index) {\n    let updateBuffers = false;\n    if (vaoAvailable) {\n      const state = getBindingState(geometry, program, material);\n      if (currentState !== state) {\n        currentState = state;\n        bindVertexArrayObject(currentState.object);\n      }\n      updateBuffers = needsUpdate(object, geometry, program, index);\n      if (updateBuffers)\n        saveCache(object, geometry, program, index);\n    } else {\n      const wireframe = material.wireframe === true;\n      if (currentState.geometry !== geometry.id || currentState.program !== program.id || currentState.wireframe !== wireframe) {\n        currentState.geometry = geometry.id;\n        currentState.program = program.id;\n        currentState.wireframe = wireframe;\n        updateBuffers = true;\n      }\n    }\n    if (index !== null) {\n      attributes.update(index, 34963);\n    }\n    if (updateBuffers || forceUpdate) {\n      forceUpdate = false;\n      setupVertexAttributes(object, material, program, geometry);\n      if (index !== null) {\n        gl.bindBuffer(34963, attributes.get(index).buffer);\n      }\n    }\n  }\n  function createVertexArrayObject() {\n    if (capabilities.isWebGL2)\n      return gl.createVertexArray();\n    return extension.createVertexArrayOES();\n  }\n  function bindVertexArrayObject(vao) {\n    if (capabilities.isWebGL2)\n      return gl.bindVertexArray(vao);\n    return extension.bindVertexArrayOES(vao);\n  }\n  function deleteVertexArrayObject(vao) {\n    if (capabilities.isWebGL2)\n      return gl.deleteVertexArray(vao);\n    return extension.deleteVertexArrayOES(vao);\n  }\n  function getBindingState(geometry, program, material) {\n    const wireframe = material.wireframe === true;\n    let programMap = bindingStates[geometry.id];\n    if (programMap === void 0) {\n      programMap = {};\n      bindingStates[geometry.id] = programMap;\n    }\n    let stateMap = programMap[program.id];\n    if (stateMap === void 0) {\n      stateMap = {};\n      programMap[program.id] = stateMap;\n    }\n    let state = stateMap[wireframe];\n    if (state === void 0) {\n      state = createBindingState(createVertexArrayObject());\n      stateMap[wireframe] = state;\n    }\n    return state;\n  }\n  function createBindingState(vao) {\n    const newAttributes = [];\n    const enabledAttributes = [];\n    const attributeDivisors = [];\n    for (let i = 0; i < maxVertexAttributes; i++) {\n      newAttributes[i] = 0;\n      enabledAttributes[i] = 0;\n      attributeDivisors[i] = 0;\n    }\n    return {\n      // for backward compatibility on non-VAO support browser\n      geometry: null,\n      program: null,\n      wireframe: false,\n      newAttributes,\n      enabledAttributes,\n      attributeDivisors,\n      object: vao,\n      attributes: {},\n      index: null\n    };\n  }\n  function needsUpdate(object, geometry, program, index) {\n    const cachedAttributes = currentState.attributes;\n    const geometryAttributes = geometry.attributes;\n    let attributesNum = 0;\n    const programAttributes = program.getAttributes();\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        const cachedAttribute = cachedAttributes[name];\n        let geometryAttribute = geometryAttributes[name];\n        if (geometryAttribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix)\n            geometryAttribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor)\n            geometryAttribute = object.instanceColor;\n        }\n        if (cachedAttribute === void 0)\n          return true;\n        if (cachedAttribute.attribute !== geometryAttribute)\n          return true;\n        if (geometryAttribute && cachedAttribute.data !== geometryAttribute.data)\n          return true;\n        attributesNum++;\n      }\n    }\n    if (currentState.attributesNum !== attributesNum)\n      return true;\n    if (currentState.index !== index)\n      return true;\n    return false;\n  }\n  function saveCache(object, geometry, program, index) {\n    const cache2 = {};\n    const attributes2 = geometry.attributes;\n    let attributesNum = 0;\n    const programAttributes = program.getAttributes();\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        let attribute = attributes2[name];\n        if (attribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix)\n            attribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor)\n            attribute = object.instanceColor;\n        }\n        const data = {};\n        data.attribute = attribute;\n        if (attribute && attribute.data) {\n          data.data = attribute.data;\n        }\n        cache2[name] = data;\n        attributesNum++;\n      }\n    }\n    currentState.attributes = cache2;\n    currentState.attributesNum = attributesNum;\n    currentState.index = index;\n  }\n  function initAttributes() {\n    const newAttributes = currentState.newAttributes;\n    for (let i = 0, il = newAttributes.length; i < il; i++) {\n      newAttributes[i] = 0;\n    }\n  }\n  function enableAttribute(attribute) {\n    enableAttributeAndDivisor(attribute, 0);\n  }\n  function enableAttributeAndDivisor(attribute, meshPerAttribute) {\n    const newAttributes = currentState.newAttributes;\n    const enabledAttributes = currentState.enabledAttributes;\n    const attributeDivisors = currentState.attributeDivisors;\n    newAttributes[attribute] = 1;\n    if (enabledAttributes[attribute] === 0) {\n      gl.enableVertexAttribArray(attribute);\n      enabledAttributes[attribute] = 1;\n    }\n    if (attributeDivisors[attribute] !== meshPerAttribute) {\n      const extension2 = capabilities.isWebGL2 ? gl : extensions.get(\"ANGLE_instanced_arrays\");\n      extension2[capabilities.isWebGL2 ? \"vertexAttribDivisor\" : \"vertexAttribDivisorANGLE\"](attribute, meshPerAttribute);\n      attributeDivisors[attribute] = meshPerAttribute;\n    }\n  }\n  function disableUnusedAttributes() {\n    const newAttributes = currentState.newAttributes;\n    const enabledAttributes = currentState.enabledAttributes;\n    for (let i = 0, il = enabledAttributes.length; i < il; i++) {\n      if (enabledAttributes[i] !== newAttributes[i]) {\n        gl.disableVertexAttribArray(i);\n        enabledAttributes[i] = 0;\n      }\n    }\n  }\n  function vertexAttribPointer(index, size, type, normalized, stride, offset) {\n    if (capabilities.isWebGL2 === true && (type === 5124 || type === 5125)) {\n      gl.vertexAttribIPointer(index, size, type, stride, offset);\n    } else {\n      gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n    }\n  }\n  function setupVertexAttributes(object, material, program, geometry) {\n    if (capabilities.isWebGL2 === false && (object.isInstancedMesh || geometry.isInstancedBufferGeometry)) {\n      if (extensions.get(\"ANGLE_instanced_arrays\") === null)\n        return;\n    }\n    initAttributes();\n    const geometryAttributes = geometry.attributes;\n    const programAttributes = program.getAttributes();\n    const materialDefaultAttributeValues = material.defaultAttributeValues;\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        let geometryAttribute = geometryAttributes[name];\n        if (geometryAttribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix)\n            geometryAttribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor)\n            geometryAttribute = object.instanceColor;\n        }\n        if (geometryAttribute !== void 0) {\n          const normalized = geometryAttribute.normalized;\n          const size = geometryAttribute.itemSize;\n          const attribute = attributes.get(geometryAttribute);\n          if (attribute === void 0)\n            continue;\n          const buffer = attribute.buffer;\n          const type = attribute.type;\n          const bytesPerElement = attribute.bytesPerElement;\n          if (geometryAttribute.isInterleavedBufferAttribute) {\n            const data = geometryAttribute.data;\n            const stride = data.stride;\n            const offset = geometryAttribute.offset;\n            if (data.isInstancedInterleavedBuffer) {\n              for (let i = 0; i < programAttribute.locationSize; i++) {\n                enableAttributeAndDivisor(programAttribute.location + i, data.meshPerAttribute);\n              }\n              if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n                geometry._maxInstanceCount = data.meshPerAttribute * data.count;\n              }\n            } else {\n              for (let i = 0; i < programAttribute.locationSize; i++) {\n                enableAttribute(programAttribute.location + i);\n              }\n            }\n            gl.bindBuffer(34962, buffer);\n            for (let i = 0; i < programAttribute.locationSize; i++) {\n              vertexAttribPointer(\n                programAttribute.location + i,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                stride * bytesPerElement,\n                (offset + size / programAttribute.locationSize * i) * bytesPerElement\n              );\n            }\n          } else {\n            if (geometryAttribute.isInstancedBufferAttribute) {\n              for (let i = 0; i < programAttribute.locationSize; i++) {\n                enableAttributeAndDivisor(programAttribute.location + i, geometryAttribute.meshPerAttribute);\n              }\n              if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n                geometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n              }\n            } else {\n              for (let i = 0; i < programAttribute.locationSize; i++) {\n                enableAttribute(programAttribute.location + i);\n              }\n            }\n            gl.bindBuffer(34962, buffer);\n            for (let i = 0; i < programAttribute.locationSize; i++) {\n              vertexAttribPointer(\n                programAttribute.location + i,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                size * bytesPerElement,\n                size / programAttribute.locationSize * i * bytesPerElement\n              );\n            }\n          }\n        } else if (materialDefaultAttributeValues !== void 0) {\n          const value = materialDefaultAttributeValues[name];\n          if (value !== void 0) {\n            switch (value.length) {\n              case 2:\n                gl.vertexAttrib2fv(programAttribute.location, value);\n                break;\n              case 3:\n                gl.vertexAttrib3fv(programAttribute.location, value);\n                break;\n              case 4:\n                gl.vertexAttrib4fv(programAttribute.location, value);\n                break;\n              default:\n                gl.vertexAttrib1fv(programAttribute.location, value);\n            }\n          }\n        }\n      }\n    }\n    disableUnusedAttributes();\n  }\n  function dispose() {\n    reset();\n    for (const geometryId in bindingStates) {\n      const programMap = bindingStates[geometryId];\n      for (const programId in programMap) {\n        const stateMap = programMap[programId];\n        for (const wireframe in stateMap) {\n          deleteVertexArrayObject(stateMap[wireframe].object);\n          delete stateMap[wireframe];\n        }\n        delete programMap[programId];\n      }\n      delete bindingStates[geometryId];\n    }\n  }\n  function releaseStatesOfGeometry(geometry) {\n    if (bindingStates[geometry.id] === void 0)\n      return;\n    const programMap = bindingStates[geometry.id];\n    for (const programId in programMap) {\n      const stateMap = programMap[programId];\n      for (const wireframe in stateMap) {\n        deleteVertexArrayObject(stateMap[wireframe].object);\n        delete stateMap[wireframe];\n      }\n      delete programMap[programId];\n    }\n    delete bindingStates[geometry.id];\n  }\n  function releaseStatesOfProgram(program) {\n    for (const geometryId in bindingStates) {\n      const programMap = bindingStates[geometryId];\n      if (programMap[program.id] === void 0)\n        continue;\n      const stateMap = programMap[program.id];\n      for (const wireframe in stateMap) {\n        deleteVertexArrayObject(stateMap[wireframe].object);\n        delete stateMap[wireframe];\n      }\n      delete programMap[program.id];\n    }\n  }\n  function reset() {\n    resetDefaultState();\n    forceUpdate = true;\n    if (currentState === defaultState)\n      return;\n    currentState = defaultState;\n    bindVertexArrayObject(currentState.object);\n  }\n  function resetDefaultState() {\n    defaultState.geometry = null;\n    defaultState.program = null;\n    defaultState.wireframe = false;\n  }\n  return {\n    setup,\n    reset,\n    resetDefaultState,\n    dispose,\n    releaseStatesOfGeometry,\n    releaseStatesOfProgram,\n    initAttributes,\n    enableAttribute,\n    disableUnusedAttributes\n  };\n}\nfunction WebGLBufferRenderer(gl, extensions, info, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  let mode;\n  function setMode(value) {\n    mode = value;\n  }\n  function render2(start, count) {\n    gl.drawArrays(mode, start, count);\n    info.update(count, mode, 1);\n  }\n  function renderInstances(start, count, primcount) {\n    if (primcount === 0)\n      return;\n    let extension, methodName;\n    if (isWebGL2) {\n      extension = gl;\n      methodName = \"drawArraysInstanced\";\n    } else {\n      extension = extensions.get(\"ANGLE_instanced_arrays\");\n      methodName = \"drawArraysInstancedANGLE\";\n      if (extension === null) {\n        console.error(\"THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n        return;\n      }\n    }\n    extension[methodName](mode, start, count, primcount);\n    info.update(count, mode, primcount);\n  }\n  this.setMode = setMode;\n  this.render = render2;\n  this.renderInstances = renderInstances;\n}\nfunction WebGLCapabilities(gl, extensions, parameters) {\n  let maxAnisotropy;\n  function getMaxAnisotropy() {\n    if (maxAnisotropy !== void 0)\n      return maxAnisotropy;\n    if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n      const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n      maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n    } else {\n      maxAnisotropy = 0;\n    }\n    return maxAnisotropy;\n  }\n  function getMaxPrecision(precision2) {\n    if (precision2 === \"highp\") {\n      if (gl.getShaderPrecisionFormat(35633, 36338).precision > 0 && gl.getShaderPrecisionFormat(35632, 36338).precision > 0) {\n        return \"highp\";\n      }\n      precision2 = \"mediump\";\n    }\n    if (precision2 === \"mediump\") {\n      if (gl.getShaderPrecisionFormat(35633, 36337).precision > 0 && gl.getShaderPrecisionFormat(35632, 36337).precision > 0) {\n        return \"mediump\";\n      }\n    }\n    return \"lowp\";\n  }\n  const isWebGL2 = typeof WebGL2RenderingContext !== \"undefined\" && gl instanceof WebGL2RenderingContext || typeof WebGL2ComputeRenderingContext !== \"undefined\" && gl instanceof WebGL2ComputeRenderingContext;\n  let precision = parameters.precision !== void 0 ? parameters.precision : \"highp\";\n  const maxPrecision = getMaxPrecision(precision);\n  if (maxPrecision !== precision) {\n    console.warn(\"THREE.WebGLRenderer:\", precision, \"not supported, using\", maxPrecision, \"instead.\");\n    precision = maxPrecision;\n  }\n  const drawBuffers = isWebGL2 || extensions.has(\"WEBGL_draw_buffers\");\n  const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n  const maxTextures = gl.getParameter(34930);\n  const maxVertexTextures = gl.getParameter(35660);\n  const maxTextureSize = gl.getParameter(3379);\n  const maxCubemapSize = gl.getParameter(34076);\n  const maxAttributes = gl.getParameter(34921);\n  const maxVertexUniforms = gl.getParameter(36347);\n  const maxVaryings = gl.getParameter(36348);\n  const maxFragmentUniforms = gl.getParameter(36349);\n  const vertexTextures = maxVertexTextures > 0;\n  const floatFragmentTextures = isWebGL2 || extensions.has(\"OES_texture_float\");\n  const floatVertexTextures = vertexTextures && floatFragmentTextures;\n  const maxSamples = isWebGL2 ? gl.getParameter(36183) : 0;\n  return {\n    isWebGL2,\n    drawBuffers,\n    getMaxAnisotropy,\n    getMaxPrecision,\n    precision,\n    logarithmicDepthBuffer,\n    maxTextures,\n    maxVertexTextures,\n    maxTextureSize,\n    maxCubemapSize,\n    maxAttributes,\n    maxVertexUniforms,\n    maxVaryings,\n    maxFragmentUniforms,\n    vertexTextures,\n    floatFragmentTextures,\n    floatVertexTextures,\n    maxSamples\n  };\n}\nfunction WebGLClipping(properties) {\n  const scope = this;\n  let globalState = null, numGlobalPlanes = 0, localClippingEnabled = false, renderingShadows = false;\n  const plane = new Plane(), viewNormalMatrix = new Matrix3(), uniform = { value: null, needsUpdate: false };\n  this.uniform = uniform;\n  this.numPlanes = 0;\n  this.numIntersection = 0;\n  this.init = function(planes, enableLocalClipping, camera2) {\n    const enabled = planes.length !== 0 || enableLocalClipping || // enable state of previous frame - the clipping code has to\n    // run another frame in order to reset the state:\n    numGlobalPlanes !== 0 || localClippingEnabled;\n    localClippingEnabled = enableLocalClipping;\n    globalState = projectPlanes(planes, camera2, 0);\n    numGlobalPlanes = planes.length;\n    return enabled;\n  };\n  this.beginShadows = function() {\n    renderingShadows = true;\n    projectPlanes(null);\n  };\n  this.endShadows = function() {\n    renderingShadows = false;\n    resetGlobalState();\n  };\n  this.setState = function(material, camera2, useCache) {\n    const planes = material.clippingPlanes, clipIntersection = material.clipIntersection, clipShadows = material.clipShadows;\n    const materialProperties = properties.get(material);\n    if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) {\n      if (renderingShadows) {\n        projectPlanes(null);\n      } else {\n        resetGlobalState();\n      }\n    } else {\n      const nGlobal = renderingShadows ? 0 : numGlobalPlanes, lGlobal = nGlobal * 4;\n      let dstArray = materialProperties.clippingState || null;\n      uniform.value = dstArray;\n      dstArray = projectPlanes(planes, camera2, lGlobal, useCache);\n      for (let i = 0; i !== lGlobal; ++i) {\n        dstArray[i] = globalState[i];\n      }\n      materialProperties.clippingState = dstArray;\n      this.numIntersection = clipIntersection ? this.numPlanes : 0;\n      this.numPlanes += nGlobal;\n    }\n  };\n  function resetGlobalState() {\n    if (uniform.value !== globalState) {\n      uniform.value = globalState;\n      uniform.needsUpdate = numGlobalPlanes > 0;\n    }\n    scope.numPlanes = numGlobalPlanes;\n    scope.numIntersection = 0;\n  }\n  function projectPlanes(planes, camera2, dstOffset, skipTransform) {\n    const nPlanes = planes !== null ? planes.length : 0;\n    let dstArray = null;\n    if (nPlanes !== 0) {\n      dstArray = uniform.value;\n      if (skipTransform !== true || dstArray === null) {\n        const flatSize = dstOffset + nPlanes * 4, viewMatrix = camera2.matrixWorldInverse;\n        viewNormalMatrix.getNormalMatrix(viewMatrix);\n        if (dstArray === null || dstArray.length < flatSize) {\n          dstArray = new Float32Array(flatSize);\n        }\n        for (let i = 0, i4 = dstOffset; i !== nPlanes; ++i, i4 += 4) {\n          plane.copy(planes[i]).applyMatrix4(viewMatrix, viewNormalMatrix);\n          plane.normal.toArray(dstArray, i4);\n          dstArray[i4 + 3] = plane.constant;\n        }\n      }\n      uniform.value = dstArray;\n      uniform.needsUpdate = true;\n    }\n    scope.numPlanes = nPlanes;\n    scope.numIntersection = 0;\n    return dstArray;\n  }\n}\nfunction WebGLCubeMaps(renderer) {\n  let cubemaps = /* @__PURE__ */ new WeakMap();\n  function mapTextureMapping(texture, mapping) {\n    if (mapping === EquirectangularReflectionMapping) {\n      texture.mapping = CubeReflectionMapping;\n    } else if (mapping === EquirectangularRefractionMapping) {\n      texture.mapping = CubeRefractionMapping;\n    }\n    return texture;\n  }\n  function get(texture) {\n    if (texture && texture.isTexture && texture.isRenderTargetTexture === false) {\n      const mapping = texture.mapping;\n      if (mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping) {\n        if (cubemaps.has(texture)) {\n          const cubemap = cubemaps.get(texture).texture;\n          return mapTextureMapping(cubemap, texture.mapping);\n        } else {\n          const image = texture.image;\n          if (image && image.height > 0) {\n            const renderTarget = new WebGLCubeRenderTarget(image.height / 2);\n            renderTarget.fromEquirectangularTexture(renderer, texture);\n            cubemaps.set(texture, renderTarget);\n            texture.addEventListener(\"dispose\", onTextureDispose);\n            return mapTextureMapping(renderTarget.texture, texture.mapping);\n          } else {\n            return null;\n          }\n        }\n      }\n    }\n    return texture;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    const cubemap = cubemaps.get(texture);\n    if (cubemap !== void 0) {\n      cubemaps.delete(texture);\n      cubemap.dispose();\n    }\n  }\n  function dispose() {\n    cubemaps = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose\n  };\n}\nvar OrthographicCamera = class extends Camera {\n  constructor(left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2e3) {\n    super();\n    this.isOrthographicCamera = true;\n    this.type = \"OrthographicCamera\";\n    this.zoom = 1;\n    this.view = null;\n    this.left = left;\n    this.right = right;\n    this.top = top;\n    this.bottom = bottom;\n    this.near = near;\n    this.far = far;\n    this.updateProjectionMatrix();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.left = source.left;\n    this.right = source.right;\n    this.top = source.top;\n    this.bottom = source.bottom;\n    this.near = source.near;\n    this.far = source.far;\n    this.zoom = source.zoom;\n    this.view = source.view === null ? null : Object.assign({}, source.view);\n    return this;\n  }\n  setViewOffset(fullWidth, fullHeight, x2, y, width, height) {\n    if (this.view === null) {\n      this.view = {\n        enabled: true,\n        fullWidth: 1,\n        fullHeight: 1,\n        offsetX: 0,\n        offsetY: 0,\n        width: 1,\n        height: 1\n      };\n    }\n    this.view.enabled = true;\n    this.view.fullWidth = fullWidth;\n    this.view.fullHeight = fullHeight;\n    this.view.offsetX = x2;\n    this.view.offsetY = y;\n    this.view.width = width;\n    this.view.height = height;\n    this.updateProjectionMatrix();\n  }\n  clearViewOffset() {\n    if (this.view !== null) {\n      this.view.enabled = false;\n    }\n    this.updateProjectionMatrix();\n  }\n  updateProjectionMatrix() {\n    const dx = (this.right - this.left) / (2 * this.zoom);\n    const dy = (this.top - this.bottom) / (2 * this.zoom);\n    const cx = (this.right + this.left) / 2;\n    const cy = (this.top + this.bottom) / 2;\n    let left = cx - dx;\n    let right = cx + dx;\n    let top = cy + dy;\n    let bottom = cy - dy;\n    if (this.view !== null && this.view.enabled) {\n      const scaleW = (this.right - this.left) / this.view.fullWidth / this.zoom;\n      const scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n      left += scaleW * this.view.offsetX;\n      right = left + scaleW * this.view.width;\n      top -= scaleH * this.view.offsetY;\n      bottom = top - scaleH * this.view.height;\n    }\n    this.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far);\n    this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.zoom = this.zoom;\n    data.object.left = this.left;\n    data.object.right = this.right;\n    data.object.top = this.top;\n    data.object.bottom = this.bottom;\n    data.object.near = this.near;\n    data.object.far = this.far;\n    if (this.view !== null)\n      data.object.view = Object.assign({}, this.view);\n    return data;\n  }\n};\nvar LOD_MIN = 4;\nvar EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582];\nvar MAX_SAMPLES = 20;\nvar _flatCamera = new OrthographicCamera();\nvar _clearColor = new Color();\nvar _oldTarget = null;\nvar PHI = (1 + Math.sqrt(5)) / 2;\nvar INV_PHI = 1 / PHI;\nvar _axisDirections = [\n  new Vector3(1, 1, 1),\n  new Vector3(-1, 1, 1),\n  new Vector3(1, 1, -1),\n  new Vector3(-1, 1, -1),\n  new Vector3(0, PHI, INV_PHI),\n  new Vector3(0, PHI, -INV_PHI),\n  new Vector3(INV_PHI, 0, PHI),\n  new Vector3(-INV_PHI, 0, PHI),\n  new Vector3(PHI, INV_PHI, 0),\n  new Vector3(-PHI, INV_PHI, 0)\n];\nvar PMREMGenerator = class {\n  constructor(renderer) {\n    this._renderer = renderer;\n    this._pingPongRenderTarget = null;\n    this._lodMax = 0;\n    this._cubeSize = 0;\n    this._lodPlanes = [];\n    this._sizeLods = [];\n    this._sigmas = [];\n    this._blurMaterial = null;\n    this._cubemapMaterial = null;\n    this._equirectMaterial = null;\n    this._compileMaterial(this._blurMaterial);\n  }\n  /**\n   * Generates a PMREM from a supplied Scene, which can be faster than using an\n   * image if networking bandwidth is low. Optional sigma specifies a blur radius\n   * in radians to be applied to the scene before PMREM generation. Optional near\n   * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n   * is placed at the origin).\n   */\n  fromScene(scene, sigma = 0, near = 0.1, far = 100) {\n    _oldTarget = this._renderer.getRenderTarget();\n    this._setSize(256);\n    const cubeUVRenderTarget = this._allocateTargets();\n    cubeUVRenderTarget.depthBuffer = true;\n    this._sceneToCubeUV(scene, near, far, cubeUVRenderTarget);\n    if (sigma > 0) {\n      this._blur(cubeUVRenderTarget, 0, 0, sigma);\n    }\n    this._applyPMREM(cubeUVRenderTarget);\n    this._cleanup(cubeUVRenderTarget);\n    return cubeUVRenderTarget;\n  }\n  /**\n   * Generates a PMREM from an equirectangular texture, which can be either LDR\n   * or HDR. The ideal input image size is 1k (1024 x 512),\n   * as this matches best with the 256 x 256 cubemap output.\n   */\n  fromEquirectangular(equirectangular, renderTarget = null) {\n    return this._fromTexture(equirectangular, renderTarget);\n  }\n  /**\n   * Generates a PMREM from an cubemap texture, which can be either LDR\n   * or HDR. The ideal input cube size is 256 x 256,\n   * as this matches best with the 256 x 256 cubemap output.\n   */\n  fromCubemap(cubemap, renderTarget = null) {\n    return this._fromTexture(cubemap, renderTarget);\n  }\n  /**\n   * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n   * your texture's network fetch for increased concurrency.\n   */\n  compileCubemapShader() {\n    if (this._cubemapMaterial === null) {\n      this._cubemapMaterial = _getCubemapMaterial();\n      this._compileMaterial(this._cubemapMaterial);\n    }\n  }\n  /**\n   * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n   * your texture's network fetch for increased concurrency.\n   */\n  compileEquirectangularShader() {\n    if (this._equirectMaterial === null) {\n      this._equirectMaterial = _getEquirectMaterial();\n      this._compileMaterial(this._equirectMaterial);\n    }\n  }\n  /**\n   * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n   * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n   * one of them will cause any others to also become unusable.\n   */\n  dispose() {\n    this._dispose();\n    if (this._cubemapMaterial !== null)\n      this._cubemapMaterial.dispose();\n    if (this._equirectMaterial !== null)\n      this._equirectMaterial.dispose();\n  }\n  // private interface\n  _setSize(cubeSize) {\n    this._lodMax = Math.floor(Math.log2(cubeSize));\n    this._cubeSize = Math.pow(2, this._lodMax);\n  }\n  _dispose() {\n    if (this._blurMaterial !== null)\n      this._blurMaterial.dispose();\n    if (this._pingPongRenderTarget !== null)\n      this._pingPongRenderTarget.dispose();\n    for (let i = 0; i < this._lodPlanes.length; i++) {\n      this._lodPlanes[i].dispose();\n    }\n  }\n  _cleanup(outputTarget) {\n    this._renderer.setRenderTarget(_oldTarget);\n    outputTarget.scissorTest = false;\n    _setViewport(outputTarget, 0, 0, outputTarget.width, outputTarget.height);\n  }\n  _fromTexture(texture, renderTarget) {\n    if (texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping) {\n      this._setSize(texture.image.length === 0 ? 16 : texture.image[0].width || texture.image[0].image.width);\n    } else {\n      this._setSize(texture.image.width / 4);\n    }\n    _oldTarget = this._renderer.getRenderTarget();\n    const cubeUVRenderTarget = renderTarget || this._allocateTargets();\n    this._textureToCubeUV(texture, cubeUVRenderTarget);\n    this._applyPMREM(cubeUVRenderTarget);\n    this._cleanup(cubeUVRenderTarget);\n    return cubeUVRenderTarget;\n  }\n  _allocateTargets() {\n    const width = 3 * Math.max(this._cubeSize, 16 * 7);\n    const height = 4 * this._cubeSize;\n    const params = {\n      magFilter: LinearFilter,\n      minFilter: LinearFilter,\n      generateMipmaps: false,\n      type: HalfFloatType,\n      format: RGBAFormat,\n      encoding: LinearEncoding,\n      depthBuffer: false\n    };\n    const cubeUVRenderTarget = _createRenderTarget(width, height, params);\n    if (this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width) {\n      if (this._pingPongRenderTarget !== null) {\n        this._dispose();\n      }\n      this._pingPongRenderTarget = _createRenderTarget(width, height, params);\n      const { _lodMax } = this;\n      ({ sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes(_lodMax));\n      this._blurMaterial = _getBlurShader(_lodMax, width, height);\n    }\n    return cubeUVRenderTarget;\n  }\n  _compileMaterial(material) {\n    const tmpMesh = new Mesh(this._lodPlanes[0], material);\n    this._renderer.compile(tmpMesh, _flatCamera);\n  }\n  _sceneToCubeUV(scene, near, far, cubeUVRenderTarget) {\n    const fov2 = 90;\n    const aspect2 = 1;\n    const cubeCamera = new PerspectiveCamera(fov2, aspect2, near, far);\n    const upSign = [1, -1, 1, 1, 1, 1];\n    const forwardSign = [1, 1, 1, -1, -1, -1];\n    const renderer = this._renderer;\n    const originalAutoClear = renderer.autoClear;\n    const toneMapping = renderer.toneMapping;\n    renderer.getClearColor(_clearColor);\n    renderer.toneMapping = NoToneMapping;\n    renderer.autoClear = false;\n    const backgroundMaterial = new MeshBasicMaterial({\n      name: \"PMREM.Background\",\n      side: BackSide,\n      depthWrite: false,\n      depthTest: false\n    });\n    const backgroundBox = new Mesh(new BoxGeometry(), backgroundMaterial);\n    let useSolidColor = false;\n    const background = scene.background;\n    if (background) {\n      if (background.isColor) {\n        backgroundMaterial.color.copy(background);\n        scene.background = null;\n        useSolidColor = true;\n      }\n    } else {\n      backgroundMaterial.color.copy(_clearColor);\n      useSolidColor = true;\n    }\n    for (let i = 0; i < 6; i++) {\n      const col = i % 3;\n      if (col === 0) {\n        cubeCamera.up.set(0, upSign[i], 0);\n        cubeCamera.lookAt(forwardSign[i], 0, 0);\n      } else if (col === 1) {\n        cubeCamera.up.set(0, 0, upSign[i]);\n        cubeCamera.lookAt(0, forwardSign[i], 0);\n      } else {\n        cubeCamera.up.set(0, upSign[i], 0);\n        cubeCamera.lookAt(0, 0, forwardSign[i]);\n      }\n      const size = this._cubeSize;\n      _setViewport(cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size);\n      renderer.setRenderTarget(cubeUVRenderTarget);\n      if (useSolidColor) {\n        renderer.render(backgroundBox, cubeCamera);\n      }\n      renderer.render(scene, cubeCamera);\n    }\n    backgroundBox.geometry.dispose();\n    backgroundBox.material.dispose();\n    renderer.toneMapping = toneMapping;\n    renderer.autoClear = originalAutoClear;\n    scene.background = background;\n  }\n  _textureToCubeUV(texture, cubeUVRenderTarget) {\n    const renderer = this._renderer;\n    const isCubeTexture = texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping;\n    if (isCubeTexture) {\n      if (this._cubemapMaterial === null) {\n        this._cubemapMaterial = _getCubemapMaterial();\n      }\n      this._cubemapMaterial.uniforms.flipEnvMap.value = texture.isRenderTargetTexture === false ? -1 : 1;\n    } else {\n      if (this._equirectMaterial === null) {\n        this._equirectMaterial = _getEquirectMaterial();\n      }\n    }\n    const material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n    const mesh = new Mesh(this._lodPlanes[0], material);\n    const uniforms = material.uniforms;\n    uniforms[\"envMap\"].value = texture;\n    const size = this._cubeSize;\n    _setViewport(cubeUVRenderTarget, 0, 0, 3 * size, 2 * size);\n    renderer.setRenderTarget(cubeUVRenderTarget);\n    renderer.render(mesh, _flatCamera);\n  }\n  _applyPMREM(cubeUVRenderTarget) {\n    const renderer = this._renderer;\n    const autoClear = renderer.autoClear;\n    renderer.autoClear = false;\n    for (let i = 1; i < this._lodPlanes.length; i++) {\n      const sigma = Math.sqrt(this._sigmas[i] * this._sigmas[i] - this._sigmas[i - 1] * this._sigmas[i - 1]);\n      const poleAxis = _axisDirections[(i - 1) % _axisDirections.length];\n      this._blur(cubeUVRenderTarget, i - 1, i, sigma, poleAxis);\n    }\n    renderer.autoClear = autoClear;\n  }\n  /**\n   * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n   * vertically and horizontally, but this breaks down on a cube. Here we apply\n   * the blur latitudinally (around the poles), and then longitudinally (towards\n   * the poles) to approximate the orthogonally-separable blur. It is least\n   * accurate at the poles, but still does a decent job.\n   */\n  _blur(cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis) {\n    const pingPongRenderTarget = this._pingPongRenderTarget;\n    this._halfBlur(\n      cubeUVRenderTarget,\n      pingPongRenderTarget,\n      lodIn,\n      lodOut,\n      sigma,\n      \"latitudinal\",\n      poleAxis\n    );\n    this._halfBlur(\n      pingPongRenderTarget,\n      cubeUVRenderTarget,\n      lodOut,\n      lodOut,\n      sigma,\n      \"longitudinal\",\n      poleAxis\n    );\n  }\n  _halfBlur(targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis) {\n    const renderer = this._renderer;\n    const blurMaterial = this._blurMaterial;\n    if (direction !== \"latitudinal\" && direction !== \"longitudinal\") {\n      console.error(\n        \"blur direction must be either latitudinal or longitudinal!\"\n      );\n    }\n    const STANDARD_DEVIATIONS = 3;\n    const blurMesh = new Mesh(this._lodPlanes[lodOut], blurMaterial);\n    const blurUniforms = blurMaterial.uniforms;\n    const pixels = this._sizeLods[lodIn] - 1;\n    const radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES - 1);\n    const sigmaPixels = sigmaRadians / radiansPerPixel;\n    const samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES;\n    if (samples > MAX_SAMPLES) {\n      console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`);\n    }\n    const weights = [];\n    let sum = 0;\n    for (let i = 0; i < MAX_SAMPLES; ++i) {\n      const x3 = i / sigmaPixels;\n      const weight = Math.exp(-x3 * x3 / 2);\n      weights.push(weight);\n      if (i === 0) {\n        sum += weight;\n      } else if (i < samples) {\n        sum += 2 * weight;\n      }\n    }\n    for (let i = 0; i < weights.length; i++) {\n      weights[i] = weights[i] / sum;\n    }\n    blurUniforms[\"envMap\"].value = targetIn.texture;\n    blurUniforms[\"samples\"].value = samples;\n    blurUniforms[\"weights\"].value = weights;\n    blurUniforms[\"latitudinal\"].value = direction === \"latitudinal\";\n    if (poleAxis) {\n      blurUniforms[\"poleAxis\"].value = poleAxis;\n    }\n    const { _lodMax } = this;\n    blurUniforms[\"dTheta\"].value = radiansPerPixel;\n    blurUniforms[\"mipInt\"].value = _lodMax - lodIn;\n    const outputSize = this._sizeLods[lodOut];\n    const x2 = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n    const y = 4 * (this._cubeSize - outputSize);\n    _setViewport(targetOut, x2, y, 3 * outputSize, 2 * outputSize);\n    renderer.setRenderTarget(targetOut);\n    renderer.render(blurMesh, _flatCamera);\n  }\n};\nfunction _createPlanes(lodMax) {\n  const lodPlanes = [];\n  const sizeLods = [];\n  const sigmas = [];\n  let lod = lodMax;\n  const totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n  for (let i = 0; i < totalLods; i++) {\n    const sizeLod = Math.pow(2, lod);\n    sizeLods.push(sizeLod);\n    let sigma = 1 / sizeLod;\n    if (i > lodMax - LOD_MIN) {\n      sigma = EXTRA_LOD_SIGMA[i - lodMax + LOD_MIN - 1];\n    } else if (i === 0) {\n      sigma = 0;\n    }\n    sigmas.push(sigma);\n    const texelSize = 1 / (sizeLod - 2);\n    const min = -texelSize;\n    const max2 = 1 + texelSize;\n    const uv1 = [min, min, max2, min, max2, max2, min, min, max2, max2, min, max2];\n    const cubeFaces = 6;\n    const vertices = 6;\n    const positionSize = 3;\n    const uvSize = 2;\n    const faceIndexSize = 1;\n    const position = new Float32Array(positionSize * vertices * cubeFaces);\n    const uv = new Float32Array(uvSize * vertices * cubeFaces);\n    const faceIndex = new Float32Array(faceIndexSize * vertices * cubeFaces);\n    for (let face = 0; face < cubeFaces; face++) {\n      const x2 = face % 3 * 2 / 3 - 1;\n      const y = face > 2 ? 0 : -1;\n      const coordinates = [\n        x2,\n        y,\n        0,\n        x2 + 2 / 3,\n        y,\n        0,\n        x2 + 2 / 3,\n        y + 1,\n        0,\n        x2,\n        y,\n        0,\n        x2 + 2 / 3,\n        y + 1,\n        0,\n        x2,\n        y + 1,\n        0\n      ];\n      position.set(coordinates, positionSize * vertices * face);\n      uv.set(uv1, uvSize * vertices * face);\n      const fill = [face, face, face, face, face, face];\n      faceIndex.set(fill, faceIndexSize * vertices * face);\n    }\n    const planes = new BufferGeometry();\n    planes.setAttribute(\"position\", new BufferAttribute(position, positionSize));\n    planes.setAttribute(\"uv\", new BufferAttribute(uv, uvSize));\n    planes.setAttribute(\"faceIndex\", new BufferAttribute(faceIndex, faceIndexSize));\n    lodPlanes.push(planes);\n    if (lod > LOD_MIN) {\n      lod--;\n    }\n  }\n  return { lodPlanes, sizeLods, sigmas };\n}\nfunction _createRenderTarget(width, height, params) {\n  const cubeUVRenderTarget = new WebGLRenderTarget(width, height, params);\n  cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n  cubeUVRenderTarget.texture.name = \"PMREM.cubeUv\";\n  cubeUVRenderTarget.scissorTest = true;\n  return cubeUVRenderTarget;\n}\nfunction _setViewport(target2, x2, y, width, height) {\n  target2.viewport.set(x2, y, width, height);\n  target2.scissor.set(x2, y, width, height);\n}\nfunction _getBlurShader(lodMax, width, height) {\n  const weights = new Float32Array(MAX_SAMPLES);\n  const poleAxis = new Vector3(0, 1, 0);\n  const shaderMaterial = new ShaderMaterial({\n    name: \"SphericalGaussianBlur\",\n    defines: {\n      \"n\": MAX_SAMPLES,\n      \"CUBEUV_TEXEL_WIDTH\": 1 / width,\n      \"CUBEUV_TEXEL_HEIGHT\": 1 / height,\n      \"CUBEUV_MAX_MIP\": `${lodMax}.0`\n    },\n    uniforms: {\n      \"envMap\": { value: null },\n      \"samples\": { value: 1 },\n      \"weights\": { value: weights },\n      \"latitudinal\": { value: false },\n      \"dTheta\": { value: 0 },\n      \"mipInt\": { value: 0 },\n      \"poleAxis\": { value: poleAxis }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: (\n      /* glsl */\n      `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`\n    ),\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n  return shaderMaterial;\n}\nfunction _getEquirectMaterial() {\n  return new ShaderMaterial({\n    name: \"EquirectangularToCubeUV\",\n    uniforms: {\n      \"envMap\": { value: null }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: (\n      /* glsl */\n      `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`\n    ),\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n}\nfunction _getCubemapMaterial() {\n  return new ShaderMaterial({\n    name: \"CubemapToCubeUV\",\n    uniforms: {\n      \"envMap\": { value: null },\n      \"flipEnvMap\": { value: -1 }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: (\n      /* glsl */\n      `\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`\n    ),\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n}\nfunction _getCommonVertexShader() {\n  return (\n    /* glsl */\n    `\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`\n  );\n}\nfunction WebGLCubeUVMaps(renderer) {\n  let cubeUVmaps = /* @__PURE__ */ new WeakMap();\n  let pmremGenerator = null;\n  function get(texture) {\n    if (texture && texture.isTexture) {\n      const mapping = texture.mapping;\n      const isEquirectMap = mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping;\n      const isCubeMap = mapping === CubeReflectionMapping || mapping === CubeRefractionMapping;\n      if (isEquirectMap || isCubeMap) {\n        if (texture.isRenderTargetTexture && texture.needsPMREMUpdate === true) {\n          texture.needsPMREMUpdate = false;\n          let renderTarget = cubeUVmaps.get(texture);\n          if (pmremGenerator === null)\n            pmremGenerator = new PMREMGenerator(renderer);\n          renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture, renderTarget) : pmremGenerator.fromCubemap(texture, renderTarget);\n          cubeUVmaps.set(texture, renderTarget);\n          return renderTarget.texture;\n        } else {\n          if (cubeUVmaps.has(texture)) {\n            return cubeUVmaps.get(texture).texture;\n          } else {\n            const image = texture.image;\n            if (isEquirectMap && image && image.height > 0 || isCubeMap && image && isCubeTextureComplete(image)) {\n              if (pmremGenerator === null)\n                pmremGenerator = new PMREMGenerator(renderer);\n              const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture) : pmremGenerator.fromCubemap(texture);\n              cubeUVmaps.set(texture, renderTarget);\n              texture.addEventListener(\"dispose\", onTextureDispose);\n              return renderTarget.texture;\n            } else {\n              return null;\n            }\n          }\n        }\n      }\n    }\n    return texture;\n  }\n  function isCubeTextureComplete(image) {\n    let count = 0;\n    const length = 6;\n    for (let i = 0; i < length; i++) {\n      if (image[i] !== void 0)\n        count++;\n    }\n    return count === length;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    const cubemapUV = cubeUVmaps.get(texture);\n    if (cubemapUV !== void 0) {\n      cubeUVmaps.delete(texture);\n      cubemapUV.dispose();\n    }\n  }\n  function dispose() {\n    cubeUVmaps = /* @__PURE__ */ new WeakMap();\n    if (pmremGenerator !== null) {\n      pmremGenerator.dispose();\n      pmremGenerator = null;\n    }\n  }\n  return {\n    get,\n    dispose\n  };\n}\nfunction WebGLExtensions(gl) {\n  const extensions = {};\n  function getExtension(name) {\n    if (extensions[name] !== void 0) {\n      return extensions[name];\n    }\n    let extension;\n    switch (name) {\n      case \"WEBGL_depth_texture\":\n        extension = gl.getExtension(\"WEBGL_depth_texture\") || gl.getExtension(\"MOZ_WEBGL_depth_texture\") || gl.getExtension(\"WEBKIT_WEBGL_depth_texture\");\n        break;\n      case \"EXT_texture_filter_anisotropic\":\n        extension = gl.getExtension(\"EXT_texture_filter_anisotropic\") || gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") || gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n        break;\n      case \"WEBGL_compressed_texture_s3tc\":\n        extension = gl.getExtension(\"WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"MOZ_WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n        break;\n      case \"WEBGL_compressed_texture_pvrtc\":\n        extension = gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\");\n        break;\n      default:\n        extension = gl.getExtension(name);\n    }\n    extensions[name] = extension;\n    return extension;\n  }\n  return {\n    has: function(name) {\n      return getExtension(name) !== null;\n    },\n    init: function(capabilities) {\n      if (capabilities.isWebGL2) {\n        getExtension(\"EXT_color_buffer_float\");\n      } else {\n        getExtension(\"WEBGL_depth_texture\");\n        getExtension(\"OES_texture_float\");\n        getExtension(\"OES_texture_half_float\");\n        getExtension(\"OES_texture_half_float_linear\");\n        getExtension(\"OES_standard_derivatives\");\n        getExtension(\"OES_element_index_uint\");\n        getExtension(\"OES_vertex_array_object\");\n        getExtension(\"ANGLE_instanced_arrays\");\n      }\n      getExtension(\"OES_texture_float_linear\");\n      getExtension(\"EXT_color_buffer_half_float\");\n      getExtension(\"WEBGL_multisampled_render_to_texture\");\n    },\n    get: function(name) {\n      const extension = getExtension(name);\n      if (extension === null) {\n        console.warn(\"THREE.WebGLRenderer: \" + name + \" extension not supported.\");\n      }\n      return extension;\n    }\n  };\n}\nfunction WebGLGeometries(gl, attributes, info, bindingStates) {\n  const geometries = {};\n  const wireframeAttributes = /* @__PURE__ */ new WeakMap();\n  function onGeometryDispose(event) {\n    const geometry = event.target;\n    if (geometry.index !== null) {\n      attributes.remove(geometry.index);\n    }\n    for (const name in geometry.attributes) {\n      attributes.remove(geometry.attributes[name]);\n    }\n    geometry.removeEventListener(\"dispose\", onGeometryDispose);\n    delete geometries[geometry.id];\n    const attribute = wireframeAttributes.get(geometry);\n    if (attribute) {\n      attributes.remove(attribute);\n      wireframeAttributes.delete(geometry);\n    }\n    bindingStates.releaseStatesOfGeometry(geometry);\n    if (geometry.isInstancedBufferGeometry === true) {\n      delete geometry._maxInstanceCount;\n    }\n    info.memory.geometries--;\n  }\n  function get(object, geometry) {\n    if (geometries[geometry.id] === true)\n      return geometry;\n    geometry.addEventListener(\"dispose\", onGeometryDispose);\n    geometries[geometry.id] = true;\n    info.memory.geometries++;\n    return geometry;\n  }\n  function update(geometry) {\n    const geometryAttributes = geometry.attributes;\n    for (const name in geometryAttributes) {\n      attributes.update(geometryAttributes[name], 34962);\n    }\n    const morphAttributes = geometry.morphAttributes;\n    for (const name in morphAttributes) {\n      const array = morphAttributes[name];\n      for (let i = 0, l = array.length; i < l; i++) {\n        attributes.update(array[i], 34962);\n      }\n    }\n  }\n  function updateWireframeAttribute(geometry) {\n    const indices = [];\n    const geometryIndex = geometry.index;\n    const geometryPosition = geometry.attributes.position;\n    let version = 0;\n    if (geometryIndex !== null) {\n      const array = geometryIndex.array;\n      version = geometryIndex.version;\n      for (let i = 0, l = array.length; i < l; i += 3) {\n        const a = array[i + 0];\n        const b = array[i + 1];\n        const c = array[i + 2];\n        indices.push(a, b, b, c, c, a);\n      }\n    } else {\n      const array = geometryPosition.array;\n      version = geometryPosition.version;\n      for (let i = 0, l = array.length / 3 - 1; i < l; i += 3) {\n        const a = i + 0;\n        const b = i + 1;\n        const c = i + 2;\n        indices.push(a, b, b, c, c, a);\n      }\n    }\n    const attribute = new (arrayNeedsUint32(indices) ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1);\n    attribute.version = version;\n    const previousAttribute = wireframeAttributes.get(geometry);\n    if (previousAttribute)\n      attributes.remove(previousAttribute);\n    wireframeAttributes.set(geometry, attribute);\n  }\n  function getWireframeAttribute(geometry) {\n    const currentAttribute = wireframeAttributes.get(geometry);\n    if (currentAttribute) {\n      const geometryIndex = geometry.index;\n      if (geometryIndex !== null) {\n        if (currentAttribute.version < geometryIndex.version) {\n          updateWireframeAttribute(geometry);\n        }\n      }\n    } else {\n      updateWireframeAttribute(geometry);\n    }\n    return wireframeAttributes.get(geometry);\n  }\n  return {\n    get,\n    update,\n    getWireframeAttribute\n  };\n}\nfunction WebGLIndexedBufferRenderer(gl, extensions, info, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  let mode;\n  function setMode(value) {\n    mode = value;\n  }\n  let type, bytesPerElement;\n  function setIndex(value) {\n    type = value.type;\n    bytesPerElement = value.bytesPerElement;\n  }\n  function render2(start, count) {\n    gl.drawElements(mode, count, type, start * bytesPerElement);\n    info.update(count, mode, 1);\n  }\n  function renderInstances(start, count, primcount) {\n    if (primcount === 0)\n      return;\n    let extension, methodName;\n    if (isWebGL2) {\n      extension = gl;\n      methodName = \"drawElementsInstanced\";\n    } else {\n      extension = extensions.get(\"ANGLE_instanced_arrays\");\n      methodName = \"drawElementsInstancedANGLE\";\n      if (extension === null) {\n        console.error(\"THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n        return;\n      }\n    }\n    extension[methodName](mode, count, type, start * bytesPerElement, primcount);\n    info.update(count, mode, primcount);\n  }\n  this.setMode = setMode;\n  this.setIndex = setIndex;\n  this.render = render2;\n  this.renderInstances = renderInstances;\n}\nfunction WebGLInfo(gl) {\n  const memory = {\n    geometries: 0,\n    textures: 0\n  };\n  const render2 = {\n    frame: 0,\n    calls: 0,\n    triangles: 0,\n    points: 0,\n    lines: 0\n  };\n  function update(count, mode, instanceCount) {\n    render2.calls++;\n    switch (mode) {\n      case 4:\n        render2.triangles += instanceCount * (count / 3);\n        break;\n      case 1:\n        render2.lines += instanceCount * (count / 2);\n        break;\n      case 3:\n        render2.lines += instanceCount * (count - 1);\n        break;\n      case 2:\n        render2.lines += instanceCount * count;\n        break;\n      case 0:\n        render2.points += instanceCount * count;\n        break;\n      default:\n        console.error(\"THREE.WebGLInfo: Unknown draw mode:\", mode);\n        break;\n    }\n  }\n  function reset() {\n    render2.frame++;\n    render2.calls = 0;\n    render2.triangles = 0;\n    render2.points = 0;\n    render2.lines = 0;\n  }\n  return {\n    memory,\n    render: render2,\n    programs: null,\n    autoReset: true,\n    reset,\n    update\n  };\n}\nfunction numericalSort(a, b) {\n  return a[0] - b[0];\n}\nfunction absNumericalSort(a, b) {\n  return Math.abs(b[1]) - Math.abs(a[1]);\n}\nfunction WebGLMorphtargets(gl, capabilities, textures) {\n  const influencesList = {};\n  const morphInfluences = new Float32Array(8);\n  const morphTextures = /* @__PURE__ */ new WeakMap();\n  const morph = new Vector4();\n  const workInfluences = [];\n  for (let i = 0; i < 8; i++) {\n    workInfluences[i] = [i, 0];\n  }\n  function update(object, geometry, material, program) {\n    const objectInfluences = object.morphTargetInfluences;\n    if (capabilities.isWebGL2 === true) {\n      const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n      const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n      let entry = morphTextures.get(geometry);\n      if (entry === void 0 || entry.count !== morphTargetsCount) {\n        let disposeTexture = function() {\n          texture.dispose();\n          morphTextures.delete(geometry);\n          geometry.removeEventListener(\"dispose\", disposeTexture);\n        };\n        if (entry !== void 0)\n          entry.texture.dispose();\n        const hasMorphPosition = geometry.morphAttributes.position !== void 0;\n        const hasMorphNormals = geometry.morphAttributes.normal !== void 0;\n        const hasMorphColors = geometry.morphAttributes.color !== void 0;\n        const morphTargets = geometry.morphAttributes.position || [];\n        const morphNormals = geometry.morphAttributes.normal || [];\n        const morphColors = geometry.morphAttributes.color || [];\n        let vertexDataCount = 0;\n        if (hasMorphPosition === true)\n          vertexDataCount = 1;\n        if (hasMorphNormals === true)\n          vertexDataCount = 2;\n        if (hasMorphColors === true)\n          vertexDataCount = 3;\n        let width = geometry.attributes.position.count * vertexDataCount;\n        let height = 1;\n        if (width > capabilities.maxTextureSize) {\n          height = Math.ceil(width / capabilities.maxTextureSize);\n          width = capabilities.maxTextureSize;\n        }\n        const buffer = new Float32Array(width * height * 4 * morphTargetsCount);\n        const texture = new DataArrayTexture(buffer, width, height, morphTargetsCount);\n        texture.type = FloatType;\n        texture.needsUpdate = true;\n        const vertexDataStride = vertexDataCount * 4;\n        for (let i = 0; i < morphTargetsCount; i++) {\n          const morphTarget = morphTargets[i];\n          const morphNormal = morphNormals[i];\n          const morphColor = morphColors[i];\n          const offset = width * height * 4 * i;\n          for (let j = 0; j < morphTarget.count; j++) {\n            const stride = j * vertexDataStride;\n            if (hasMorphPosition === true) {\n              morph.fromBufferAttribute(morphTarget, j);\n              buffer[offset + stride + 0] = morph.x;\n              buffer[offset + stride + 1] = morph.y;\n              buffer[offset + stride + 2] = morph.z;\n              buffer[offset + stride + 3] = 0;\n            }\n            if (hasMorphNormals === true) {\n              morph.fromBufferAttribute(morphNormal, j);\n              buffer[offset + stride + 4] = morph.x;\n              buffer[offset + stride + 5] = morph.y;\n              buffer[offset + stride + 6] = morph.z;\n              buffer[offset + stride + 7] = 0;\n            }\n            if (hasMorphColors === true) {\n              morph.fromBufferAttribute(morphColor, j);\n              buffer[offset + stride + 8] = morph.x;\n              buffer[offset + stride + 9] = morph.y;\n              buffer[offset + stride + 10] = morph.z;\n              buffer[offset + stride + 11] = morphColor.itemSize === 4 ? morph.w : 1;\n            }\n          }\n        }\n        entry = {\n          count: morphTargetsCount,\n          texture,\n          size: new Vector2(width, height)\n        };\n        morphTextures.set(geometry, entry);\n        geometry.addEventListener(\"dispose\", disposeTexture);\n      }\n      let morphInfluencesSum = 0;\n      for (let i = 0; i < objectInfluences.length; i++) {\n        morphInfluencesSum += objectInfluences[i];\n      }\n      const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n      program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n      program.getUniforms().setValue(gl, \"morphTargetInfluences\", objectInfluences);\n      program.getUniforms().setValue(gl, \"morphTargetsTexture\", entry.texture, textures);\n      program.getUniforms().setValue(gl, \"morphTargetsTextureSize\", entry.size);\n    } else {\n      const length = objectInfluences === void 0 ? 0 : objectInfluences.length;\n      let influences = influencesList[geometry.id];\n      if (influences === void 0 || influences.length !== length) {\n        influences = [];\n        for (let i = 0; i < length; i++) {\n          influences[i] = [i, 0];\n        }\n        influencesList[geometry.id] = influences;\n      }\n      for (let i = 0; i < length; i++) {\n        const influence = influences[i];\n        influence[0] = i;\n        influence[1] = objectInfluences[i];\n      }\n      influences.sort(absNumericalSort);\n      for (let i = 0; i < 8; i++) {\n        if (i < length && influences[i][1]) {\n          workInfluences[i][0] = influences[i][0];\n          workInfluences[i][1] = influences[i][1];\n        } else {\n          workInfluences[i][0] = Number.MAX_SAFE_INTEGER;\n          workInfluences[i][1] = 0;\n        }\n      }\n      workInfluences.sort(numericalSort);\n      const morphTargets = geometry.morphAttributes.position;\n      const morphNormals = geometry.morphAttributes.normal;\n      let morphInfluencesSum = 0;\n      for (let i = 0; i < 8; i++) {\n        const influence = workInfluences[i];\n        const index = influence[0];\n        const value = influence[1];\n        if (index !== Number.MAX_SAFE_INTEGER && value) {\n          if (morphTargets && geometry.getAttribute(\"morphTarget\" + i) !== morphTargets[index]) {\n            geometry.setAttribute(\"morphTarget\" + i, morphTargets[index]);\n          }\n          if (morphNormals && geometry.getAttribute(\"morphNormal\" + i) !== morphNormals[index]) {\n            geometry.setAttribute(\"morphNormal\" + i, morphNormals[index]);\n          }\n          morphInfluences[i] = value;\n          morphInfluencesSum += value;\n        } else {\n          if (morphTargets && geometry.hasAttribute(\"morphTarget\" + i) === true) {\n            geometry.deleteAttribute(\"morphTarget\" + i);\n          }\n          if (morphNormals && geometry.hasAttribute(\"morphNormal\" + i) === true) {\n            geometry.deleteAttribute(\"morphNormal\" + i);\n          }\n          morphInfluences[i] = 0;\n        }\n      }\n      const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n      program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n      program.getUniforms().setValue(gl, \"morphTargetInfluences\", morphInfluences);\n    }\n  }\n  return {\n    update\n  };\n}\nfunction WebGLObjects(gl, geometries, attributes, info) {\n  let updateMap = /* @__PURE__ */ new WeakMap();\n  function update(object) {\n    const frame = info.render.frame;\n    const geometry = object.geometry;\n    const buffergeometry = geometries.get(object, geometry);\n    if (updateMap.get(buffergeometry) !== frame) {\n      geometries.update(buffergeometry);\n      updateMap.set(buffergeometry, frame);\n    }\n    if (object.isInstancedMesh) {\n      if (object.hasEventListener(\"dispose\", onInstancedMeshDispose) === false) {\n        object.addEventListener(\"dispose\", onInstancedMeshDispose);\n      }\n      attributes.update(object.instanceMatrix, 34962);\n      if (object.instanceColor !== null) {\n        attributes.update(object.instanceColor, 34962);\n      }\n    }\n    return buffergeometry;\n  }\n  function dispose() {\n    updateMap = /* @__PURE__ */ new WeakMap();\n  }\n  function onInstancedMeshDispose(event) {\n    const instancedMesh = event.target;\n    instancedMesh.removeEventListener(\"dispose\", onInstancedMeshDispose);\n    attributes.remove(instancedMesh.instanceMatrix);\n    if (instancedMesh.instanceColor !== null)\n      attributes.remove(instancedMesh.instanceColor);\n  }\n  return {\n    update,\n    dispose\n  };\n}\nvar emptyTexture = new Texture();\nvar emptyArrayTexture = new DataArrayTexture();\nvar empty3dTexture = new Data3DTexture();\nvar emptyCubeTexture = new CubeTexture();\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\nvar mat4array = new Float32Array(16);\nvar mat3array = new Float32Array(9);\nvar mat2array = new Float32Array(4);\nfunction flatten(array, nBlocks, blockSize) {\n  const firstElem = array[0];\n  if (firstElem <= 0 || firstElem > 0)\n    return array;\n  const n2 = nBlocks * blockSize;\n  let r = arrayCacheF32[n2];\n  if (r === void 0) {\n    r = new Float32Array(n2);\n    arrayCacheF32[n2] = r;\n  }\n  if (nBlocks !== 0) {\n    firstElem.toArray(r, 0);\n    for (let i = 1, offset = 0; i !== nBlocks; ++i) {\n      offset += blockSize;\n      array[i].toArray(r, offset);\n    }\n  }\n  return r;\n}\nfunction arraysEqual(a, b) {\n  if (a.length !== b.length)\n    return false;\n  for (let i = 0, l = a.length; i < l; i++) {\n    if (a[i] !== b[i])\n      return false;\n  }\n  return true;\n}\nfunction copyArray(a, b) {\n  for (let i = 0, l = b.length; i < l; i++) {\n    a[i] = b[i];\n  }\n}\nfunction allocTexUnits(textures, n2) {\n  let r = arrayCacheI32[n2];\n  if (r === void 0) {\n    r = new Int32Array(n2);\n    arrayCacheI32[n2] = r;\n  }\n  for (let i = 0; i !== n2; ++i) {\n    r[i] = textures.allocateTextureUnit();\n  }\n  return r;\n}\nfunction setValueV1f(gl, v) {\n  const cache2 = this.cache;\n  if (cache2[0] === v)\n    return;\n  gl.uniform1f(this.addr, v);\n  cache2[0] = v;\n}\nfunction setValueV2f(gl, v) {\n  const cache2 = this.cache;\n  if (v.x !== void 0) {\n    if (cache2[0] !== v.x || cache2[1] !== v.y) {\n      gl.uniform2f(this.addr, v.x, v.y);\n      cache2[0] = v.x;\n      cache2[1] = v.y;\n    }\n  } else {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniform2fv(this.addr, v);\n    copyArray(cache2, v);\n  }\n}\nfunction setValueV3f(gl, v) {\n  const cache2 = this.cache;\n  if (v.x !== void 0) {\n    if (cache2[0] !== v.x || cache2[1] !== v.y || cache2[2] !== v.z) {\n      gl.uniform3f(this.addr, v.x, v.y, v.z);\n      cache2[0] = v.x;\n      cache2[1] = v.y;\n      cache2[2] = v.z;\n    }\n  } else if (v.r !== void 0) {\n    if (cache2[0] !== v.r || cache2[1] !== v.g || cache2[2] !== v.b) {\n      gl.uniform3f(this.addr, v.r, v.g, v.b);\n      cache2[0] = v.r;\n      cache2[1] = v.g;\n      cache2[2] = v.b;\n    }\n  } else {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniform3fv(this.addr, v);\n    copyArray(cache2, v);\n  }\n}\nfunction setValueV4f(gl, v) {\n  const cache2 = this.cache;\n  if (v.x !== void 0) {\n    if (cache2[0] !== v.x || cache2[1] !== v.y || cache2[2] !== v.z || cache2[3] !== v.w) {\n      gl.uniform4f(this.addr, v.x, v.y, v.z, v.w);\n      cache2[0] = v.x;\n      cache2[1] = v.y;\n      cache2[2] = v.z;\n      cache2[3] = v.w;\n    }\n  } else {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniform4fv(this.addr, v);\n    copyArray(cache2, v);\n  }\n}\nfunction setValueM2(gl, v) {\n  const cache2 = this.cache;\n  const elements = v.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniformMatrix2fv(this.addr, false, v);\n    copyArray(cache2, v);\n  } else {\n    if (arraysEqual(cache2, elements))\n      return;\n    mat2array.set(elements);\n    gl.uniformMatrix2fv(this.addr, false, mat2array);\n    copyArray(cache2, elements);\n  }\n}\nfunction setValueM3(gl, v) {\n  const cache2 = this.cache;\n  const elements = v.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniformMatrix3fv(this.addr, false, v);\n    copyArray(cache2, v);\n  } else {\n    if (arraysEqual(cache2, elements))\n      return;\n    mat3array.set(elements);\n    gl.uniformMatrix3fv(this.addr, false, mat3array);\n    copyArray(cache2, elements);\n  }\n}\nfunction setValueM4(gl, v) {\n  const cache2 = this.cache;\n  const elements = v.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniformMatrix4fv(this.addr, false, v);\n    copyArray(cache2, v);\n  } else {\n    if (arraysEqual(cache2, elements))\n      return;\n    mat4array.set(elements);\n    gl.uniformMatrix4fv(this.addr, false, mat4array);\n    copyArray(cache2, elements);\n  }\n}\nfunction setValueV1i(gl, v) {\n  const cache2 = this.cache;\n  if (cache2[0] === v)\n    return;\n  gl.uniform1i(this.addr, v);\n  cache2[0] = v;\n}\nfunction setValueV2i(gl, v) {\n  const cache2 = this.cache;\n  if (v.x !== void 0) {\n    if (cache2[0] !== v.x || cache2[1] !== v.y) {\n      gl.uniform2i(this.addr, v.x, v.y);\n      cache2[0] = v.x;\n      cache2[1] = v.y;\n    }\n  } else {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniform2iv(this.addr, v);\n    copyArray(cache2, v);\n  }\n}\nfunction setValueV3i(gl, v) {\n  const cache2 = this.cache;\n  if (v.x !== void 0) {\n    if (cache2[0] !== v.x || cache2[1] !== v.y || cache2[2] !== v.z) {\n      gl.uniform3i(this.addr, v.x, v.y, v.z);\n      cache2[0] = v.x;\n      cache2[1] = v.y;\n      cache2[2] = v.z;\n    }\n  } else {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniform3iv(this.addr, v);\n    copyArray(cache2, v);\n  }\n}\nfunction setValueV4i(gl, v) {\n  const cache2 = this.cache;\n  if (v.x !== void 0) {\n    if (cache2[0] !== v.x || cache2[1] !== v.y || cache2[2] !== v.z || cache2[3] !== v.w) {\n      gl.uniform4i(this.addr, v.x, v.y, v.z, v.w);\n      cache2[0] = v.x;\n      cache2[1] = v.y;\n      cache2[2] = v.z;\n      cache2[3] = v.w;\n    }\n  } else {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniform4iv(this.addr, v);\n    copyArray(cache2, v);\n  }\n}\nfunction setValueV1ui(gl, v) {\n  const cache2 = this.cache;\n  if (cache2[0] === v)\n    return;\n  gl.uniform1ui(this.addr, v);\n  cache2[0] = v;\n}\nfunction setValueV2ui(gl, v) {\n  const cache2 = this.cache;\n  if (v.x !== void 0) {\n    if (cache2[0] !== v.x || cache2[1] !== v.y) {\n      gl.uniform2ui(this.addr, v.x, v.y);\n      cache2[0] = v.x;\n      cache2[1] = v.y;\n    }\n  } else {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniform2uiv(this.addr, v);\n    copyArray(cache2, v);\n  }\n}\nfunction setValueV3ui(gl, v) {\n  const cache2 = this.cache;\n  if (v.x !== void 0) {\n    if (cache2[0] !== v.x || cache2[1] !== v.y || cache2[2] !== v.z) {\n      gl.uniform3ui(this.addr, v.x, v.y, v.z);\n      cache2[0] = v.x;\n      cache2[1] = v.y;\n      cache2[2] = v.z;\n    }\n  } else {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniform3uiv(this.addr, v);\n    copyArray(cache2, v);\n  }\n}\nfunction setValueV4ui(gl, v) {\n  const cache2 = this.cache;\n  if (v.x !== void 0) {\n    if (cache2[0] !== v.x || cache2[1] !== v.y || cache2[2] !== v.z || cache2[3] !== v.w) {\n      gl.uniform4ui(this.addr, v.x, v.y, v.z, v.w);\n      cache2[0] = v.x;\n      cache2[1] = v.y;\n      cache2[2] = v.z;\n      cache2[3] = v.w;\n    }\n  } else {\n    if (arraysEqual(cache2, v))\n      return;\n    gl.uniform4uiv(this.addr, v);\n    copyArray(cache2, v);\n  }\n}\nfunction setValueT1(gl, v, textures) {\n  const cache2 = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache2[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache2[0] = unit;\n  }\n  textures.setTexture2D(v || emptyTexture, unit);\n}\nfunction setValueT3D1(gl, v, textures) {\n  const cache2 = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache2[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache2[0] = unit;\n  }\n  textures.setTexture3D(v || empty3dTexture, unit);\n}\nfunction setValueT6(gl, v, textures) {\n  const cache2 = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache2[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache2[0] = unit;\n  }\n  textures.setTextureCube(v || emptyCubeTexture, unit);\n}\nfunction setValueT2DArray1(gl, v, textures) {\n  const cache2 = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache2[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache2[0] = unit;\n  }\n  textures.setTexture2DArray(v || emptyArrayTexture, unit);\n}\nfunction getSingularSetter(type) {\n  switch (type) {\n    case 5126:\n      return setValueV1f;\n    case 35664:\n      return setValueV2f;\n    case 35665:\n      return setValueV3f;\n    case 35666:\n      return setValueV4f;\n    case 35674:\n      return setValueM2;\n    case 35675:\n      return setValueM3;\n    case 35676:\n      return setValueM4;\n    case 5124:\n    case 35670:\n      return setValueV1i;\n    case 35667:\n    case 35671:\n      return setValueV2i;\n    case 35668:\n    case 35672:\n      return setValueV3i;\n    case 35669:\n    case 35673:\n      return setValueV4i;\n    case 5125:\n      return setValueV1ui;\n    case 36294:\n      return setValueV2ui;\n    case 36295:\n      return setValueV3ui;\n    case 36296:\n      return setValueV4ui;\n    case 35678:\n    case 36198:\n    case 36298:\n    case 36306:\n    case 35682:\n      return setValueT1;\n    case 35679:\n    case 36299:\n    case 36307:\n      return setValueT3D1;\n    case 35680:\n    case 36300:\n    case 36308:\n    case 36293:\n      return setValueT6;\n    case 36289:\n    case 36303:\n    case 36311:\n    case 36292:\n      return setValueT2DArray1;\n  }\n}\nfunction setValueV1fArray(gl, v) {\n  gl.uniform1fv(this.addr, v);\n}\nfunction setValueV2fArray(gl, v) {\n  const data = flatten(v, this.size, 2);\n  gl.uniform2fv(this.addr, data);\n}\nfunction setValueV3fArray(gl, v) {\n  const data = flatten(v, this.size, 3);\n  gl.uniform3fv(this.addr, data);\n}\nfunction setValueV4fArray(gl, v) {\n  const data = flatten(v, this.size, 4);\n  gl.uniform4fv(this.addr, data);\n}\nfunction setValueM2Array(gl, v) {\n  const data = flatten(v, this.size, 4);\n  gl.uniformMatrix2fv(this.addr, false, data);\n}\nfunction setValueM3Array(gl, v) {\n  const data = flatten(v, this.size, 9);\n  gl.uniformMatrix3fv(this.addr, false, data);\n}\nfunction setValueM4Array(gl, v) {\n  const data = flatten(v, this.size, 16);\n  gl.uniformMatrix4fv(this.addr, false, data);\n}\nfunction setValueV1iArray(gl, v) {\n  gl.uniform1iv(this.addr, v);\n}\nfunction setValueV2iArray(gl, v) {\n  gl.uniform2iv(this.addr, v);\n}\nfunction setValueV3iArray(gl, v) {\n  gl.uniform3iv(this.addr, v);\n}\nfunction setValueV4iArray(gl, v) {\n  gl.uniform4iv(this.addr, v);\n}\nfunction setValueV1uiArray(gl, v) {\n  gl.uniform1uiv(this.addr, v);\n}\nfunction setValueV2uiArray(gl, v) {\n  gl.uniform2uiv(this.addr, v);\n}\nfunction setValueV3uiArray(gl, v) {\n  gl.uniform3uiv(this.addr, v);\n}\nfunction setValueV4uiArray(gl, v) {\n  gl.uniform4uiv(this.addr, v);\n}\nfunction setValueT1Array(gl, v, textures) {\n  const cache2 = this.cache;\n  const n2 = v.length;\n  const units = allocTexUnits(textures, n2);\n  if (!arraysEqual(cache2, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache2, units);\n  }\n  for (let i = 0; i !== n2; ++i) {\n    textures.setTexture2D(v[i] || emptyTexture, units[i]);\n  }\n}\nfunction setValueT3DArray(gl, v, textures) {\n  const cache2 = this.cache;\n  const n2 = v.length;\n  const units = allocTexUnits(textures, n2);\n  if (!arraysEqual(cache2, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache2, units);\n  }\n  for (let i = 0; i !== n2; ++i) {\n    textures.setTexture3D(v[i] || empty3dTexture, units[i]);\n  }\n}\nfunction setValueT6Array(gl, v, textures) {\n  const cache2 = this.cache;\n  const n2 = v.length;\n  const units = allocTexUnits(textures, n2);\n  if (!arraysEqual(cache2, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache2, units);\n  }\n  for (let i = 0; i !== n2; ++i) {\n    textures.setTextureCube(v[i] || emptyCubeTexture, units[i]);\n  }\n}\nfunction setValueT2DArrayArray(gl, v, textures) {\n  const cache2 = this.cache;\n  const n2 = v.length;\n  const units = allocTexUnits(textures, n2);\n  if (!arraysEqual(cache2, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache2, units);\n  }\n  for (let i = 0; i !== n2; ++i) {\n    textures.setTexture2DArray(v[i] || emptyArrayTexture, units[i]);\n  }\n}\nfunction getPureArraySetter(type) {\n  switch (type) {\n    case 5126:\n      return setValueV1fArray;\n    case 35664:\n      return setValueV2fArray;\n    case 35665:\n      return setValueV3fArray;\n    case 35666:\n      return setValueV4fArray;\n    case 35674:\n      return setValueM2Array;\n    case 35675:\n      return setValueM3Array;\n    case 35676:\n      return setValueM4Array;\n    case 5124:\n    case 35670:\n      return setValueV1iArray;\n    case 35667:\n    case 35671:\n      return setValueV2iArray;\n    case 35668:\n    case 35672:\n      return setValueV3iArray;\n    case 35669:\n    case 35673:\n      return setValueV4iArray;\n    case 5125:\n      return setValueV1uiArray;\n    case 36294:\n      return setValueV2uiArray;\n    case 36295:\n      return setValueV3uiArray;\n    case 36296:\n      return setValueV4uiArray;\n    case 35678:\n    case 36198:\n    case 36298:\n    case 36306:\n    case 35682:\n      return setValueT1Array;\n    case 35679:\n    case 36299:\n    case 36307:\n      return setValueT3DArray;\n    case 35680:\n    case 36300:\n    case 36308:\n    case 36293:\n      return setValueT6Array;\n    case 36289:\n    case 36303:\n    case 36311:\n    case 36292:\n      return setValueT2DArrayArray;\n  }\n}\nvar SingleUniform = class {\n  constructor(id, activeInfo, addr) {\n    this.id = id;\n    this.addr = addr;\n    this.cache = [];\n    this.setValue = getSingularSetter(activeInfo.type);\n  }\n};\nvar PureArrayUniform = class {\n  constructor(id, activeInfo, addr) {\n    this.id = id;\n    this.addr = addr;\n    this.cache = [];\n    this.size = activeInfo.size;\n    this.setValue = getPureArraySetter(activeInfo.type);\n  }\n};\nvar StructuredUniform = class {\n  constructor(id) {\n    this.id = id;\n    this.seq = [];\n    this.map = {};\n  }\n  setValue(gl, value, textures) {\n    const seq = this.seq;\n    for (let i = 0, n2 = seq.length; i !== n2; ++i) {\n      const u = seq[i];\n      u.setValue(gl, value[u.id], textures);\n    }\n  }\n};\nvar RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\nfunction addUniform(container, uniformObject) {\n  container.seq.push(uniformObject);\n  container.map[uniformObject.id] = uniformObject;\n}\nfunction parseUniform(activeInfo, addr, container) {\n  const path = activeInfo.name, pathLength = path.length;\n  RePathPart.lastIndex = 0;\n  while (true) {\n    const match = RePathPart.exec(path), matchEnd = RePathPart.lastIndex;\n    let id = match[1];\n    const idIsIndex = match[2] === \"]\", subscript = match[3];\n    if (idIsIndex)\n      id = id | 0;\n    if (subscript === void 0 || subscript === \"[\" && matchEnd + 2 === pathLength) {\n      addUniform(container, subscript === void 0 ? new SingleUniform(id, activeInfo, addr) : new PureArrayUniform(id, activeInfo, addr));\n      break;\n    } else {\n      const map = container.map;\n      let next = map[id];\n      if (next === void 0) {\n        next = new StructuredUniform(id);\n        addUniform(container, next);\n      }\n      container = next;\n    }\n  }\n}\nvar WebGLUniforms = class {\n  constructor(gl, program) {\n    this.seq = [];\n    this.map = {};\n    const n2 = gl.getProgramParameter(program, 35718);\n    for (let i = 0; i < n2; ++i) {\n      const info = gl.getActiveUniform(program, i), addr = gl.getUniformLocation(program, info.name);\n      parseUniform(info, addr, this);\n    }\n  }\n  setValue(gl, name, value, textures) {\n    const u = this.map[name];\n    if (u !== void 0)\n      u.setValue(gl, value, textures);\n  }\n  setOptional(gl, object, name) {\n    const v = object[name];\n    if (v !== void 0)\n      this.setValue(gl, name, v);\n  }\n  static upload(gl, seq, values, textures) {\n    for (let i = 0, n2 = seq.length; i !== n2; ++i) {\n      const u = seq[i], v = values[u.id];\n      if (v.needsUpdate !== false) {\n        u.setValue(gl, v.value, textures);\n      }\n    }\n  }\n  static seqWithValue(seq, values) {\n    const r = [];\n    for (let i = 0, n2 = seq.length; i !== n2; ++i) {\n      const u = seq[i];\n      if (u.id in values)\n        r.push(u);\n    }\n    return r;\n  }\n};\nfunction WebGLShader(gl, type, string) {\n  const shader = gl.createShader(type);\n  gl.shaderSource(shader, string);\n  gl.compileShader(shader);\n  return shader;\n}\nvar programIdCount = 0;\nfunction handleSource(string, errorLine) {\n  const lines = string.split(\"\\n\");\n  const lines2 = [];\n  const from = Math.max(errorLine - 6, 0);\n  const to = Math.min(errorLine + 6, lines.length);\n  for (let i = from; i < to; i++) {\n    const line = i + 1;\n    lines2.push(`${line === errorLine ? \">\" : \" \"} ${line}: ${lines[i]}`);\n  }\n  return lines2.join(\"\\n\");\n}\nfunction getEncodingComponents(encoding) {\n  switch (encoding) {\n    case LinearEncoding:\n      return [\"Linear\", \"( value )\"];\n    case sRGBEncoding:\n      return [\"sRGB\", \"( value )\"];\n    default:\n      console.warn(\"THREE.WebGLProgram: Unsupported encoding:\", encoding);\n      return [\"Linear\", \"( value )\"];\n  }\n}\nfunction getShaderErrors(gl, shader, type) {\n  const status = gl.getShaderParameter(shader, 35713);\n  const errors = gl.getShaderInfoLog(shader).trim();\n  if (status && errors === \"\")\n    return \"\";\n  const errorMatches = /ERROR: 0:(\\d+)/.exec(errors);\n  if (errorMatches) {\n    const errorLine = parseInt(errorMatches[1]);\n    return type.toUpperCase() + \"\\n\\n\" + errors + \"\\n\\n\" + handleSource(gl.getShaderSource(shader), errorLine);\n  } else {\n    return errors;\n  }\n}\nfunction getTexelEncodingFunction(functionName, encoding) {\n  const components = getEncodingComponents(encoding);\n  return \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[0] + components[1] + \"; }\";\n}\nfunction getToneMappingFunction(functionName, toneMapping) {\n  let toneMappingName;\n  switch (toneMapping) {\n    case LinearToneMapping:\n      toneMappingName = \"Linear\";\n      break;\n    case ReinhardToneMapping:\n      toneMappingName = \"Reinhard\";\n      break;\n    case CineonToneMapping:\n      toneMappingName = \"OptimizedCineon\";\n      break;\n    case ACESFilmicToneMapping:\n      toneMappingName = \"ACESFilmic\";\n      break;\n    case CustomToneMapping:\n      toneMappingName = \"Custom\";\n      break;\n    default:\n      console.warn(\"THREE.WebGLProgram: Unsupported toneMapping:\", toneMapping);\n      toneMappingName = \"Linear\";\n  }\n  return \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n}\nfunction generateExtensions(parameters) {\n  const chunks = [\n    parameters.extensionDerivatives || !!parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === \"physical\" ? \"#extension GL_OES_standard_derivatives : enable\" : \"\",\n    (parameters.extensionFragDepth || parameters.logarithmicDepthBuffer) && parameters.rendererExtensionFragDepth ? \"#extension GL_EXT_frag_depth : enable\" : \"\",\n    parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ? \"#extension GL_EXT_draw_buffers : require\" : \"\",\n    (parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission) && parameters.rendererExtensionShaderTextureLod ? \"#extension GL_EXT_shader_texture_lod : enable\" : \"\"\n  ];\n  return chunks.filter(filterEmptyLine).join(\"\\n\");\n}\nfunction generateDefines(defines) {\n  const chunks = [];\n  for (const name in defines) {\n    const value = defines[name];\n    if (value === false)\n      continue;\n    chunks.push(\"#define \" + name + \" \" + value);\n  }\n  return chunks.join(\"\\n\");\n}\nfunction fetchAttributeLocations(gl, program) {\n  const attributes = {};\n  const n2 = gl.getProgramParameter(program, 35721);\n  for (let i = 0; i < n2; i++) {\n    const info = gl.getActiveAttrib(program, i);\n    const name = info.name;\n    let locationSize = 1;\n    if (info.type === 35674)\n      locationSize = 2;\n    if (info.type === 35675)\n      locationSize = 3;\n    if (info.type === 35676)\n      locationSize = 4;\n    attributes[name] = {\n      type: info.type,\n      location: gl.getAttribLocation(program, name),\n      locationSize\n    };\n  }\n  return attributes;\n}\nfunction filterEmptyLine(string) {\n  return string !== \"\";\n}\nfunction replaceLightNums(string, parameters) {\n  const numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n  return string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows);\n}\nfunction replaceClippingPlaneNums(string, parameters) {\n  return string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection);\n}\nvar includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\nfunction resolveIncludes(string) {\n  return string.replace(includePattern, includeReplacer);\n}\nfunction includeReplacer(match, include) {\n  const string = ShaderChunk[include];\n  if (string === void 0) {\n    throw new Error(\"Can not resolve #include <\" + include + \">\");\n  }\n  return resolveIncludes(string);\n}\nvar unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\nfunction unrollLoops(string) {\n  return string.replace(unrollLoopPattern, loopReplacer);\n}\nfunction loopReplacer(match, start, end, snippet) {\n  let string = \"\";\n  for (let i = parseInt(start); i < parseInt(end); i++) {\n    string += snippet.replace(/\\[\\s*i\\s*\\]/g, \"[ \" + i + \" ]\").replace(/UNROLLED_LOOP_INDEX/g, i);\n  }\n  return string;\n}\nfunction generatePrecision(parameters) {\n  let precisionstring = \"precision \" + parameters.precision + \" float;\\nprecision \" + parameters.precision + \" int;\";\n  if (parameters.precision === \"highp\") {\n    precisionstring += \"\\n#define HIGH_PRECISION\";\n  } else if (parameters.precision === \"mediump\") {\n    precisionstring += \"\\n#define MEDIUM_PRECISION\";\n  } else if (parameters.precision === \"lowp\") {\n    precisionstring += \"\\n#define LOW_PRECISION\";\n  }\n  return precisionstring;\n}\nfunction generateShadowMapTypeDefine(parameters) {\n  let shadowMapTypeDefine = \"SHADOWMAP_TYPE_BASIC\";\n  if (parameters.shadowMapType === PCFShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF\";\n  } else if (parameters.shadowMapType === PCFSoftShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF_SOFT\";\n  } else if (parameters.shadowMapType === VSMShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_VSM\";\n  }\n  return shadowMapTypeDefine;\n}\nfunction generateEnvMapTypeDefine(parameters) {\n  let envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n  if (parameters.envMap) {\n    switch (parameters.envMapMode) {\n      case CubeReflectionMapping:\n      case CubeRefractionMapping:\n        envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n        break;\n      case CubeUVReflectionMapping:\n        envMapTypeDefine = \"ENVMAP_TYPE_CUBE_UV\";\n        break;\n    }\n  }\n  return envMapTypeDefine;\n}\nfunction generateEnvMapModeDefine(parameters) {\n  let envMapModeDefine = \"ENVMAP_MODE_REFLECTION\";\n  if (parameters.envMap) {\n    switch (parameters.envMapMode) {\n      case CubeRefractionMapping:\n        envMapModeDefine = \"ENVMAP_MODE_REFRACTION\";\n        break;\n    }\n  }\n  return envMapModeDefine;\n}\nfunction generateEnvMapBlendingDefine(parameters) {\n  let envMapBlendingDefine = \"ENVMAP_BLENDING_NONE\";\n  if (parameters.envMap) {\n    switch (parameters.combine) {\n      case MultiplyOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_MULTIPLY\";\n        break;\n      case MixOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_MIX\";\n        break;\n      case AddOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_ADD\";\n        break;\n    }\n  }\n  return envMapBlendingDefine;\n}\nfunction generateCubeUVSize(parameters) {\n  const imageHeight = parameters.envMapCubeUVHeight;\n  if (imageHeight === null)\n    return null;\n  const maxMip = Math.log2(imageHeight) - 2;\n  const texelHeight = 1 / imageHeight;\n  const texelWidth = 1 / (3 * Math.max(Math.pow(2, maxMip), 7 * 16));\n  return { texelWidth, texelHeight, maxMip };\n}\nfunction WebGLProgram(renderer, cacheKey, parameters, bindingStates) {\n  const gl = renderer.getContext();\n  const defines = parameters.defines;\n  let vertexShader = parameters.vertexShader;\n  let fragmentShader = parameters.fragmentShader;\n  const shadowMapTypeDefine = generateShadowMapTypeDefine(parameters);\n  const envMapTypeDefine = generateEnvMapTypeDefine(parameters);\n  const envMapModeDefine = generateEnvMapModeDefine(parameters);\n  const envMapBlendingDefine = generateEnvMapBlendingDefine(parameters);\n  const envMapCubeUVSize = generateCubeUVSize(parameters);\n  const customExtensions = parameters.isWebGL2 ? \"\" : generateExtensions(parameters);\n  const customDefines = generateDefines(defines);\n  const program = gl.createProgram();\n  let prefixVertex, prefixFragment;\n  let versionString = parameters.glslVersion ? \"#version \" + parameters.glslVersion + \"\\n\" : \"\";\n  if (parameters.isRawShaderMaterial) {\n    prefixVertex = [\n      customDefines\n    ].filter(filterEmptyLine).join(\"\\n\");\n    if (prefixVertex.length > 0) {\n      prefixVertex += \"\\n\";\n    }\n    prefixFragment = [\n      customExtensions,\n      customDefines\n    ].filter(filterEmptyLine).join(\"\\n\");\n    if (prefixFragment.length > 0) {\n      prefixFragment += \"\\n\";\n    }\n  } else {\n    prefixVertex = [\n      generatePrecision(parameters),\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines,\n      parameters.instancing ? \"#define USE_INSTANCING\" : \"\",\n      parameters.instancingColor ? \"#define USE_INSTANCING_COLOR\" : \"\",\n      parameters.supportsVertexTextures ? \"#define VERTEX_TEXTURES\" : \"\",\n      parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n      parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n      parameters.map ? \"#define USE_MAP\" : \"\",\n      parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n      parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n      parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n      parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n      parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n      parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n      parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n      parameters.normalMap && parameters.objectSpaceNormalMap ? \"#define OBJECTSPACE_NORMALMAP\" : \"\",\n      parameters.normalMap && parameters.tangentSpaceNormalMap ? \"#define TANGENTSPACE_NORMALMAP\" : \"\",\n      parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n      parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n      parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n      parameters.iridescenceMap ? \"#define USE_IRIDESCENCEMAP\" : \"\",\n      parameters.iridescenceThicknessMap ? \"#define USE_IRIDESCENCE_THICKNESSMAP\" : \"\",\n      parameters.displacementMap && parameters.supportsVertexTextures ? \"#define USE_DISPLACEMENTMAP\" : \"\",\n      parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n      parameters.specularIntensityMap ? \"#define USE_SPECULARINTENSITYMAP\" : \"\",\n      parameters.specularColorMap ? \"#define USE_SPECULARCOLORMAP\" : \"\",\n      parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n      parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n      parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n      parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n      parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n      parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n      parameters.sheenColorMap ? \"#define USE_SHEENCOLORMAP\" : \"\",\n      parameters.sheenRoughnessMap ? \"#define USE_SHEENROUGHNESSMAP\" : \"\",\n      parameters.vertexTangents ? \"#define USE_TANGENT\" : \"\",\n      parameters.vertexColors ? \"#define USE_COLOR\" : \"\",\n      parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n      parameters.vertexUvs ? \"#define USE_UV\" : \"\",\n      parameters.uvsVertexOnly ? \"#define UVS_VERTEX_ONLY\" : \"\",\n      parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n      parameters.skinning ? \"#define USE_SKINNING\" : \"\",\n      parameters.morphTargets ? \"#define USE_MORPHTARGETS\" : \"\",\n      parameters.morphNormals && parameters.flatShading === false ? \"#define USE_MORPHNORMALS\" : \"\",\n      parameters.morphColors && parameters.isWebGL2 ? \"#define USE_MORPHCOLORS\" : \"\",\n      parameters.morphTargetsCount > 0 && parameters.isWebGL2 ? \"#define MORPHTARGETS_TEXTURE\" : \"\",\n      parameters.morphTargetsCount > 0 && parameters.isWebGL2 ? \"#define MORPHTARGETS_TEXTURE_STRIDE \" + parameters.morphTextureStride : \"\",\n      parameters.morphTargetsCount > 0 && parameters.isWebGL2 ? \"#define MORPHTARGETS_COUNT \" + parameters.morphTargetsCount : \"\",\n      parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n      parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n      parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n      parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n      parameters.sizeAttenuation ? \"#define USE_SIZEATTENUATION\" : \"\",\n      parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n      parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n      \"uniform mat4 modelMatrix;\",\n      \"uniform mat4 modelViewMatrix;\",\n      \"uniform mat4 projectionMatrix;\",\n      \"uniform mat4 viewMatrix;\",\n      \"uniform mat3 normalMatrix;\",\n      \"uniform vec3 cameraPosition;\",\n      \"uniform bool isOrthographic;\",\n      \"#ifdef USE_INSTANCING\",\n      \"\tattribute mat4 instanceMatrix;\",\n      \"#endif\",\n      \"#ifdef USE_INSTANCING_COLOR\",\n      \"\tattribute vec3 instanceColor;\",\n      \"#endif\",\n      \"attribute vec3 position;\",\n      \"attribute vec3 normal;\",\n      \"attribute vec2 uv;\",\n      \"#ifdef USE_TANGENT\",\n      \"\tattribute vec4 tangent;\",\n      \"#endif\",\n      \"#if defined( USE_COLOR_ALPHA )\",\n      \"\tattribute vec4 color;\",\n      \"#elif defined( USE_COLOR )\",\n      \"\tattribute vec3 color;\",\n      \"#endif\",\n      \"#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )\",\n      \"\tattribute vec3 morphTarget0;\",\n      \"\tattribute vec3 morphTarget1;\",\n      \"\tattribute vec3 morphTarget2;\",\n      \"\tattribute vec3 morphTarget3;\",\n      \"\t#ifdef USE_MORPHNORMALS\",\n      \"\t\tattribute vec3 morphNormal0;\",\n      \"\t\tattribute vec3 morphNormal1;\",\n      \"\t\tattribute vec3 morphNormal2;\",\n      \"\t\tattribute vec3 morphNormal3;\",\n      \"\t#else\",\n      \"\t\tattribute vec3 morphTarget4;\",\n      \"\t\tattribute vec3 morphTarget5;\",\n      \"\t\tattribute vec3 morphTarget6;\",\n      \"\t\tattribute vec3 morphTarget7;\",\n      \"\t#endif\",\n      \"#endif\",\n      \"#ifdef USE_SKINNING\",\n      \"\tattribute vec4 skinIndex;\",\n      \"\tattribute vec4 skinWeight;\",\n      \"#endif\",\n      \"\\n\"\n    ].filter(filterEmptyLine).join(\"\\n\");\n    prefixFragment = [\n      customExtensions,\n      generatePrecision(parameters),\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines,\n      parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n      parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n      parameters.map ? \"#define USE_MAP\" : \"\",\n      parameters.matcap ? \"#define USE_MATCAP\" : \"\",\n      parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n      parameters.envMap ? \"#define \" + envMapTypeDefine : \"\",\n      parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n      parameters.envMap ? \"#define \" + envMapBlendingDefine : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_TEXEL_WIDTH \" + envMapCubeUVSize.texelWidth : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_TEXEL_HEIGHT \" + envMapCubeUVSize.texelHeight : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_MAX_MIP \" + envMapCubeUVSize.maxMip + \".0\" : \"\",\n      parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n      parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n      parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n      parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n      parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n      parameters.normalMap && parameters.objectSpaceNormalMap ? \"#define OBJECTSPACE_NORMALMAP\" : \"\",\n      parameters.normalMap && parameters.tangentSpaceNormalMap ? \"#define TANGENTSPACE_NORMALMAP\" : \"\",\n      parameters.clearcoat ? \"#define USE_CLEARCOAT\" : \"\",\n      parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n      parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n      parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n      parameters.iridescence ? \"#define USE_IRIDESCENCE\" : \"\",\n      parameters.iridescenceMap ? \"#define USE_IRIDESCENCEMAP\" : \"\",\n      parameters.iridescenceThicknessMap ? \"#define USE_IRIDESCENCE_THICKNESSMAP\" : \"\",\n      parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n      parameters.specularIntensityMap ? \"#define USE_SPECULARINTENSITYMAP\" : \"\",\n      parameters.specularColorMap ? \"#define USE_SPECULARCOLORMAP\" : \"\",\n      parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n      parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n      parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n      parameters.alphaTest ? \"#define USE_ALPHATEST\" : \"\",\n      parameters.sheen ? \"#define USE_SHEEN\" : \"\",\n      parameters.sheenColorMap ? \"#define USE_SHEENCOLORMAP\" : \"\",\n      parameters.sheenRoughnessMap ? \"#define USE_SHEENROUGHNESSMAP\" : \"\",\n      parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n      parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n      parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n      parameters.decodeVideoTexture ? \"#define DECODE_VIDEO_TEXTURE\" : \"\",\n      parameters.vertexTangents ? \"#define USE_TANGENT\" : \"\",\n      parameters.vertexColors || parameters.instancingColor ? \"#define USE_COLOR\" : \"\",\n      parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n      parameters.vertexUvs ? \"#define USE_UV\" : \"\",\n      parameters.uvsVertexOnly ? \"#define UVS_VERTEX_ONLY\" : \"\",\n      parameters.gradientMap ? \"#define USE_GRADIENTMAP\" : \"\",\n      parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n      parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n      parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n      parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n      parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n      parameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : \"\",\n      parameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : \"\",\n      parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n      parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n      \"uniform mat4 viewMatrix;\",\n      \"uniform vec3 cameraPosition;\",\n      \"uniform bool isOrthographic;\",\n      parameters.toneMapping !== NoToneMapping ? \"#define TONE_MAPPING\" : \"\",\n      parameters.toneMapping !== NoToneMapping ? ShaderChunk[\"tonemapping_pars_fragment\"] : \"\",\n      // this code is required here because it is used by the toneMapping() function defined below\n      parameters.toneMapping !== NoToneMapping ? getToneMappingFunction(\"toneMapping\", parameters.toneMapping) : \"\",\n      parameters.dithering ? \"#define DITHERING\" : \"\",\n      parameters.opaque ? \"#define OPAQUE\" : \"\",\n      ShaderChunk[\"encodings_pars_fragment\"],\n      // this code is required here because it is used by the various encoding/decoding function defined below\n      getTexelEncodingFunction(\"linearToOutputTexel\", parameters.outputEncoding),\n      parameters.useDepthPacking ? \"#define DEPTH_PACKING \" + parameters.depthPacking : \"\",\n      \"\\n\"\n    ].filter(filterEmptyLine).join(\"\\n\");\n  }\n  vertexShader = resolveIncludes(vertexShader);\n  vertexShader = replaceLightNums(vertexShader, parameters);\n  vertexShader = replaceClippingPlaneNums(vertexShader, parameters);\n  fragmentShader = resolveIncludes(fragmentShader);\n  fragmentShader = replaceLightNums(fragmentShader, parameters);\n  fragmentShader = replaceClippingPlaneNums(fragmentShader, parameters);\n  vertexShader = unrollLoops(vertexShader);\n  fragmentShader = unrollLoops(fragmentShader);\n  if (parameters.isWebGL2 && parameters.isRawShaderMaterial !== true) {\n    versionString = \"#version 300 es\\n\";\n    prefixVertex = [\n      \"precision mediump sampler2DArray;\",\n      \"#define attribute in\",\n      \"#define varying out\",\n      \"#define texture2D texture\"\n    ].join(\"\\n\") + \"\\n\" + prefixVertex;\n    prefixFragment = [\n      \"#define varying in\",\n      parameters.glslVersion === GLSL3 ? \"\" : \"layout(location = 0) out highp vec4 pc_fragColor;\",\n      parameters.glslVersion === GLSL3 ? \"\" : \"#define gl_FragColor pc_fragColor\",\n      \"#define gl_FragDepthEXT gl_FragDepth\",\n      \"#define texture2D texture\",\n      \"#define textureCube texture\",\n      \"#define texture2DProj textureProj\",\n      \"#define texture2DLodEXT textureLod\",\n      \"#define texture2DProjLodEXT textureProjLod\",\n      \"#define textureCubeLodEXT textureLod\",\n      \"#define texture2DGradEXT textureGrad\",\n      \"#define texture2DProjGradEXT textureProjGrad\",\n      \"#define textureCubeGradEXT textureGrad\"\n    ].join(\"\\n\") + \"\\n\" + prefixFragment;\n  }\n  const vertexGlsl = versionString + prefixVertex + vertexShader;\n  const fragmentGlsl = versionString + prefixFragment + fragmentShader;\n  const glVertexShader = WebGLShader(gl, 35633, vertexGlsl);\n  const glFragmentShader = WebGLShader(gl, 35632, fragmentGlsl);\n  gl.attachShader(program, glVertexShader);\n  gl.attachShader(program, glFragmentShader);\n  if (parameters.index0AttributeName !== void 0) {\n    gl.bindAttribLocation(program, 0, parameters.index0AttributeName);\n  } else if (parameters.morphTargets === true) {\n    gl.bindAttribLocation(program, 0, \"position\");\n  }\n  gl.linkProgram(program);\n  if (renderer.debug.checkShaderErrors) {\n    const programLog = gl.getProgramInfoLog(program).trim();\n    const vertexLog = gl.getShaderInfoLog(glVertexShader).trim();\n    const fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim();\n    let runnable = true;\n    let haveDiagnostics = true;\n    if (gl.getProgramParameter(program, 35714) === false) {\n      runnable = false;\n      const vertexErrors = getShaderErrors(gl, glVertexShader, \"vertex\");\n      const fragmentErrors = getShaderErrors(gl, glFragmentShader, \"fragment\");\n      console.error(\n        \"THREE.WebGLProgram: Shader Error \" + gl.getError() + \" - VALIDATE_STATUS \" + gl.getProgramParameter(program, 35715) + \"\\n\\nProgram Info Log: \" + programLog + \"\\n\" + vertexErrors + \"\\n\" + fragmentErrors\n      );\n    } else if (programLog !== \"\") {\n      console.warn(\"THREE.WebGLProgram: Program Info Log:\", programLog);\n    } else if (vertexLog === \"\" || fragmentLog === \"\") {\n      haveDiagnostics = false;\n    }\n    if (haveDiagnostics) {\n      this.diagnostics = {\n        runnable,\n        programLog,\n        vertexShader: {\n          log: vertexLog,\n          prefix: prefixVertex\n        },\n        fragmentShader: {\n          log: fragmentLog,\n          prefix: prefixFragment\n        }\n      };\n    }\n  }\n  gl.deleteShader(glVertexShader);\n  gl.deleteShader(glFragmentShader);\n  let cachedUniforms;\n  this.getUniforms = function() {\n    if (cachedUniforms === void 0) {\n      cachedUniforms = new WebGLUniforms(gl, program);\n    }\n    return cachedUniforms;\n  };\n  let cachedAttributes;\n  this.getAttributes = function() {\n    if (cachedAttributes === void 0) {\n      cachedAttributes = fetchAttributeLocations(gl, program);\n    }\n    return cachedAttributes;\n  };\n  this.destroy = function() {\n    bindingStates.releaseStatesOfProgram(this);\n    gl.deleteProgram(program);\n    this.program = void 0;\n  };\n  this.name = parameters.shaderName;\n  this.id = programIdCount++;\n  this.cacheKey = cacheKey;\n  this.usedTimes = 1;\n  this.program = program;\n  this.vertexShader = glVertexShader;\n  this.fragmentShader = glFragmentShader;\n  return this;\n}\nvar _id = 0;\nvar WebGLShaderCache = class {\n  constructor() {\n    this.shaderCache = /* @__PURE__ */ new Map();\n    this.materialCache = /* @__PURE__ */ new Map();\n  }\n  update(material) {\n    const vertexShader = material.vertexShader;\n    const fragmentShader = material.fragmentShader;\n    const vertexShaderStage = this._getShaderStage(vertexShader);\n    const fragmentShaderStage = this._getShaderStage(fragmentShader);\n    const materialShaders = this._getShaderCacheForMaterial(material);\n    if (materialShaders.has(vertexShaderStage) === false) {\n      materialShaders.add(vertexShaderStage);\n      vertexShaderStage.usedTimes++;\n    }\n    if (materialShaders.has(fragmentShaderStage) === false) {\n      materialShaders.add(fragmentShaderStage);\n      fragmentShaderStage.usedTimes++;\n    }\n    return this;\n  }\n  remove(material) {\n    const materialShaders = this.materialCache.get(material);\n    for (const shaderStage of materialShaders) {\n      shaderStage.usedTimes--;\n      if (shaderStage.usedTimes === 0)\n        this.shaderCache.delete(shaderStage.code);\n    }\n    this.materialCache.delete(material);\n    return this;\n  }\n  getVertexShaderID(material) {\n    return this._getShaderStage(material.vertexShader).id;\n  }\n  getFragmentShaderID(material) {\n    return this._getShaderStage(material.fragmentShader).id;\n  }\n  dispose() {\n    this.shaderCache.clear();\n    this.materialCache.clear();\n  }\n  _getShaderCacheForMaterial(material) {\n    const cache2 = this.materialCache;\n    let set = cache2.get(material);\n    if (set === void 0) {\n      set = /* @__PURE__ */ new Set();\n      cache2.set(material, set);\n    }\n    return set;\n  }\n  _getShaderStage(code) {\n    const cache2 = this.shaderCache;\n    let stage = cache2.get(code);\n    if (stage === void 0) {\n      stage = new WebGLShaderStage(code);\n      cache2.set(code, stage);\n    }\n    return stage;\n  }\n};\nvar WebGLShaderStage = class {\n  constructor(code) {\n    this.id = _id++;\n    this.code = code;\n    this.usedTimes = 0;\n  }\n};\nfunction WebGLPrograms(renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping) {\n  const _programLayers = new Layers();\n  const _customShaders = new WebGLShaderCache();\n  const programs = [];\n  const isWebGL2 = capabilities.isWebGL2;\n  const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n  const vertexTextures = capabilities.vertexTextures;\n  let precision = capabilities.precision;\n  const shaderIDs = {\n    MeshDepthMaterial: \"depth\",\n    MeshDistanceMaterial: \"distanceRGBA\",\n    MeshNormalMaterial: \"normal\",\n    MeshBasicMaterial: \"basic\",\n    MeshLambertMaterial: \"lambert\",\n    MeshPhongMaterial: \"phong\",\n    MeshToonMaterial: \"toon\",\n    MeshStandardMaterial: \"physical\",\n    MeshPhysicalMaterial: \"physical\",\n    MeshMatcapMaterial: \"matcap\",\n    LineBasicMaterial: \"basic\",\n    LineDashedMaterial: \"dashed\",\n    PointsMaterial: \"points\",\n    ShadowMaterial: \"shadow\",\n    SpriteMaterial: \"sprite\"\n  };\n  function getParameters(material, lights, shadows, scene, object) {\n    const fog = scene.fog;\n    const geometry = object.geometry;\n    const environment = material.isMeshStandardMaterial ? scene.environment : null;\n    const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n    const envMapCubeUVHeight = !!envMap && envMap.mapping === CubeUVReflectionMapping ? envMap.image.height : null;\n    const shaderID = shaderIDs[material.type];\n    if (material.precision !== null) {\n      precision = capabilities.getMaxPrecision(material.precision);\n      if (precision !== material.precision) {\n        console.warn(\"THREE.WebGLProgram.getParameters:\", material.precision, \"not supported, using\", precision, \"instead.\");\n      }\n    }\n    const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n    const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n    let morphTextureStride = 0;\n    if (geometry.morphAttributes.position !== void 0)\n      morphTextureStride = 1;\n    if (geometry.morphAttributes.normal !== void 0)\n      morphTextureStride = 2;\n    if (geometry.morphAttributes.color !== void 0)\n      morphTextureStride = 3;\n    let vertexShader, fragmentShader;\n    let customVertexShaderID, customFragmentShaderID;\n    if (shaderID) {\n      const shader = ShaderLib[shaderID];\n      vertexShader = shader.vertexShader;\n      fragmentShader = shader.fragmentShader;\n    } else {\n      vertexShader = material.vertexShader;\n      fragmentShader = material.fragmentShader;\n      _customShaders.update(material);\n      customVertexShaderID = _customShaders.getVertexShaderID(material);\n      customFragmentShaderID = _customShaders.getFragmentShaderID(material);\n    }\n    const currentRenderTarget = renderer.getRenderTarget();\n    const useAlphaTest = material.alphaTest > 0;\n    const useClearcoat = material.clearcoat > 0;\n    const useIridescence = material.iridescence > 0;\n    const parameters = {\n      isWebGL2,\n      shaderID,\n      shaderName: material.type,\n      vertexShader,\n      fragmentShader,\n      defines: material.defines,\n      customVertexShaderID,\n      customFragmentShaderID,\n      isRawShaderMaterial: material.isRawShaderMaterial === true,\n      glslVersion: material.glslVersion,\n      precision,\n      instancing: object.isInstancedMesh === true,\n      instancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n      supportsVertexTextures: vertexTextures,\n      outputEncoding: currentRenderTarget === null ? renderer.outputEncoding : currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.encoding : LinearEncoding,\n      map: !!material.map,\n      matcap: !!material.matcap,\n      envMap: !!envMap,\n      envMapMode: envMap && envMap.mapping,\n      envMapCubeUVHeight,\n      lightMap: !!material.lightMap,\n      aoMap: !!material.aoMap,\n      emissiveMap: !!material.emissiveMap,\n      bumpMap: !!material.bumpMap,\n      normalMap: !!material.normalMap,\n      objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n      tangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n      decodeVideoTexture: !!material.map && material.map.isVideoTexture === true && material.map.encoding === sRGBEncoding,\n      clearcoat: useClearcoat,\n      clearcoatMap: useClearcoat && !!material.clearcoatMap,\n      clearcoatRoughnessMap: useClearcoat && !!material.clearcoatRoughnessMap,\n      clearcoatNormalMap: useClearcoat && !!material.clearcoatNormalMap,\n      iridescence: useIridescence,\n      iridescenceMap: useIridescence && !!material.iridescenceMap,\n      iridescenceThicknessMap: useIridescence && !!material.iridescenceThicknessMap,\n      displacementMap: !!material.displacementMap,\n      roughnessMap: !!material.roughnessMap,\n      metalnessMap: !!material.metalnessMap,\n      specularMap: !!material.specularMap,\n      specularIntensityMap: !!material.specularIntensityMap,\n      specularColorMap: !!material.specularColorMap,\n      opaque: material.transparent === false && material.blending === NormalBlending,\n      alphaMap: !!material.alphaMap,\n      alphaTest: useAlphaTest,\n      gradientMap: !!material.gradientMap,\n      sheen: material.sheen > 0,\n      sheenColorMap: !!material.sheenColorMap,\n      sheenRoughnessMap: !!material.sheenRoughnessMap,\n      transmission: material.transmission > 0,\n      transmissionMap: !!material.transmissionMap,\n      thicknessMap: !!material.thicknessMap,\n      combine: material.combine,\n      vertexTangents: !!material.normalMap && !!geometry.attributes.tangent,\n      vertexColors: material.vertexColors,\n      vertexAlphas: material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n      vertexUvs: !!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatMap || !!material.clearcoatRoughnessMap || !!material.clearcoatNormalMap || !!material.iridescenceMap || !!material.iridescenceThicknessMap || !!material.displacementMap || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularColorMap || !!material.sheenColorMap || !!material.sheenRoughnessMap,\n      uvsVertexOnly: !(!!material.map || !!material.bumpMap || !!material.normalMap || !!material.specularMap || !!material.alphaMap || !!material.emissiveMap || !!material.roughnessMap || !!material.metalnessMap || !!material.clearcoatNormalMap || !!material.iridescenceMap || !!material.iridescenceThicknessMap || material.transmission > 0 || !!material.transmissionMap || !!material.thicknessMap || !!material.specularIntensityMap || !!material.specularColorMap || material.sheen > 0 || !!material.sheenColorMap || !!material.sheenRoughnessMap) && !!material.displacementMap,\n      fog: !!fog,\n      useFog: material.fog === true,\n      fogExp2: fog && fog.isFogExp2,\n      flatShading: !!material.flatShading,\n      sizeAttenuation: material.sizeAttenuation,\n      logarithmicDepthBuffer,\n      skinning: object.isSkinnedMesh === true,\n      morphTargets: geometry.morphAttributes.position !== void 0,\n      morphNormals: geometry.morphAttributes.normal !== void 0,\n      morphColors: geometry.morphAttributes.color !== void 0,\n      morphTargetsCount,\n      morphTextureStride,\n      numDirLights: lights.directional.length,\n      numPointLights: lights.point.length,\n      numSpotLights: lights.spot.length,\n      numSpotLightMaps: lights.spotLightMap.length,\n      numRectAreaLights: lights.rectArea.length,\n      numHemiLights: lights.hemi.length,\n      numDirLightShadows: lights.directionalShadowMap.length,\n      numPointLightShadows: lights.pointShadowMap.length,\n      numSpotLightShadows: lights.spotShadowMap.length,\n      numSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n      numClippingPlanes: clipping.numPlanes,\n      numClipIntersection: clipping.numIntersection,\n      dithering: material.dithering,\n      shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n      shadowMapType: renderer.shadowMap.type,\n      toneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n      physicallyCorrectLights: renderer.physicallyCorrectLights,\n      premultipliedAlpha: material.premultipliedAlpha,\n      doubleSided: material.side === DoubleSide,\n      flipSided: material.side === BackSide,\n      useDepthPacking: !!material.depthPacking,\n      depthPacking: material.depthPacking || 0,\n      index0AttributeName: material.index0AttributeName,\n      extensionDerivatives: material.extensions && material.extensions.derivatives,\n      extensionFragDepth: material.extensions && material.extensions.fragDepth,\n      extensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n      extensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n      rendererExtensionFragDepth: isWebGL2 || extensions.has(\"EXT_frag_depth\"),\n      rendererExtensionDrawBuffers: isWebGL2 || extensions.has(\"WEBGL_draw_buffers\"),\n      rendererExtensionShaderTextureLod: isWebGL2 || extensions.has(\"EXT_shader_texture_lod\"),\n      customProgramCacheKey: material.customProgramCacheKey()\n    };\n    return parameters;\n  }\n  function getProgramCacheKey(parameters) {\n    const array = [];\n    if (parameters.shaderID) {\n      array.push(parameters.shaderID);\n    } else {\n      array.push(parameters.customVertexShaderID);\n      array.push(parameters.customFragmentShaderID);\n    }\n    if (parameters.defines !== void 0) {\n      for (const name in parameters.defines) {\n        array.push(name);\n        array.push(parameters.defines[name]);\n      }\n    }\n    if (parameters.isRawShaderMaterial === false) {\n      getProgramCacheKeyParameters(array, parameters);\n      getProgramCacheKeyBooleans(array, parameters);\n      array.push(renderer.outputEncoding);\n    }\n    array.push(parameters.customProgramCacheKey);\n    return array.join();\n  }\n  function getProgramCacheKeyParameters(array, parameters) {\n    array.push(parameters.precision);\n    array.push(parameters.outputEncoding);\n    array.push(parameters.envMapMode);\n    array.push(parameters.envMapCubeUVHeight);\n    array.push(parameters.combine);\n    array.push(parameters.vertexUvs);\n    array.push(parameters.fogExp2);\n    array.push(parameters.sizeAttenuation);\n    array.push(parameters.morphTargetsCount);\n    array.push(parameters.morphAttributeCount);\n    array.push(parameters.numDirLights);\n    array.push(parameters.numPointLights);\n    array.push(parameters.numSpotLights);\n    array.push(parameters.numSpotLightMaps);\n    array.push(parameters.numHemiLights);\n    array.push(parameters.numRectAreaLights);\n    array.push(parameters.numDirLightShadows);\n    array.push(parameters.numPointLightShadows);\n    array.push(parameters.numSpotLightShadows);\n    array.push(parameters.numSpotLightShadowsWithMaps);\n    array.push(parameters.shadowMapType);\n    array.push(parameters.toneMapping);\n    array.push(parameters.numClippingPlanes);\n    array.push(parameters.numClipIntersection);\n    array.push(parameters.depthPacking);\n  }\n  function getProgramCacheKeyBooleans(array, parameters) {\n    _programLayers.disableAll();\n    if (parameters.isWebGL2)\n      _programLayers.enable(0);\n    if (parameters.supportsVertexTextures)\n      _programLayers.enable(1);\n    if (parameters.instancing)\n      _programLayers.enable(2);\n    if (parameters.instancingColor)\n      _programLayers.enable(3);\n    if (parameters.map)\n      _programLayers.enable(4);\n    if (parameters.matcap)\n      _programLayers.enable(5);\n    if (parameters.envMap)\n      _programLayers.enable(6);\n    if (parameters.lightMap)\n      _programLayers.enable(7);\n    if (parameters.aoMap)\n      _programLayers.enable(8);\n    if (parameters.emissiveMap)\n      _programLayers.enable(9);\n    if (parameters.bumpMap)\n      _programLayers.enable(10);\n    if (parameters.normalMap)\n      _programLayers.enable(11);\n    if (parameters.objectSpaceNormalMap)\n      _programLayers.enable(12);\n    if (parameters.tangentSpaceNormalMap)\n      _programLayers.enable(13);\n    if (parameters.clearcoat)\n      _programLayers.enable(14);\n    if (parameters.clearcoatMap)\n      _programLayers.enable(15);\n    if (parameters.clearcoatRoughnessMap)\n      _programLayers.enable(16);\n    if (parameters.clearcoatNormalMap)\n      _programLayers.enable(17);\n    if (parameters.iridescence)\n      _programLayers.enable(18);\n    if (parameters.iridescenceMap)\n      _programLayers.enable(19);\n    if (parameters.iridescenceThicknessMap)\n      _programLayers.enable(20);\n    if (parameters.displacementMap)\n      _programLayers.enable(21);\n    if (parameters.specularMap)\n      _programLayers.enable(22);\n    if (parameters.roughnessMap)\n      _programLayers.enable(23);\n    if (parameters.metalnessMap)\n      _programLayers.enable(24);\n    if (parameters.gradientMap)\n      _programLayers.enable(25);\n    if (parameters.alphaMap)\n      _programLayers.enable(26);\n    if (parameters.alphaTest)\n      _programLayers.enable(27);\n    if (parameters.vertexColors)\n      _programLayers.enable(28);\n    if (parameters.vertexAlphas)\n      _programLayers.enable(29);\n    if (parameters.vertexUvs)\n      _programLayers.enable(30);\n    if (parameters.vertexTangents)\n      _programLayers.enable(31);\n    if (parameters.uvsVertexOnly)\n      _programLayers.enable(32);\n    array.push(_programLayers.mask);\n    _programLayers.disableAll();\n    if (parameters.fog)\n      _programLayers.enable(0);\n    if (parameters.useFog)\n      _programLayers.enable(1);\n    if (parameters.flatShading)\n      _programLayers.enable(2);\n    if (parameters.logarithmicDepthBuffer)\n      _programLayers.enable(3);\n    if (parameters.skinning)\n      _programLayers.enable(4);\n    if (parameters.morphTargets)\n      _programLayers.enable(5);\n    if (parameters.morphNormals)\n      _programLayers.enable(6);\n    if (parameters.morphColors)\n      _programLayers.enable(7);\n    if (parameters.premultipliedAlpha)\n      _programLayers.enable(8);\n    if (parameters.shadowMapEnabled)\n      _programLayers.enable(9);\n    if (parameters.physicallyCorrectLights)\n      _programLayers.enable(10);\n    if (parameters.doubleSided)\n      _programLayers.enable(11);\n    if (parameters.flipSided)\n      _programLayers.enable(12);\n    if (parameters.useDepthPacking)\n      _programLayers.enable(13);\n    if (parameters.dithering)\n      _programLayers.enable(14);\n    if (parameters.specularIntensityMap)\n      _programLayers.enable(15);\n    if (parameters.specularColorMap)\n      _programLayers.enable(16);\n    if (parameters.transmission)\n      _programLayers.enable(17);\n    if (parameters.transmissionMap)\n      _programLayers.enable(18);\n    if (parameters.thicknessMap)\n      _programLayers.enable(19);\n    if (parameters.sheen)\n      _programLayers.enable(20);\n    if (parameters.sheenColorMap)\n      _programLayers.enable(21);\n    if (parameters.sheenRoughnessMap)\n      _programLayers.enable(22);\n    if (parameters.decodeVideoTexture)\n      _programLayers.enable(23);\n    if (parameters.opaque)\n      _programLayers.enable(24);\n    array.push(_programLayers.mask);\n  }\n  function getUniforms(material) {\n    const shaderID = shaderIDs[material.type];\n    let uniforms;\n    if (shaderID) {\n      const shader = ShaderLib[shaderID];\n      uniforms = UniformsUtils.clone(shader.uniforms);\n    } else {\n      uniforms = material.uniforms;\n    }\n    return uniforms;\n  }\n  function acquireProgram(parameters, cacheKey) {\n    let program;\n    for (let p2 = 0, pl = programs.length; p2 < pl; p2++) {\n      const preexistingProgram = programs[p2];\n      if (preexistingProgram.cacheKey === cacheKey) {\n        program = preexistingProgram;\n        ++program.usedTimes;\n        break;\n      }\n    }\n    if (program === void 0) {\n      program = new WebGLProgram(renderer, cacheKey, parameters, bindingStates);\n      programs.push(program);\n    }\n    return program;\n  }\n  function releaseProgram(program) {\n    if (--program.usedTimes === 0) {\n      const i = programs.indexOf(program);\n      programs[i] = programs[programs.length - 1];\n      programs.pop();\n      program.destroy();\n    }\n  }\n  function releaseShaderCache(material) {\n    _customShaders.remove(material);\n  }\n  function dispose() {\n    _customShaders.dispose();\n  }\n  return {\n    getParameters,\n    getProgramCacheKey,\n    getUniforms,\n    acquireProgram,\n    releaseProgram,\n    releaseShaderCache,\n    // Exposed for resource monitoring & error feedback via renderer.info:\n    programs,\n    dispose\n  };\n}\nfunction WebGLProperties() {\n  let properties = /* @__PURE__ */ new WeakMap();\n  function get(object) {\n    let map = properties.get(object);\n    if (map === void 0) {\n      map = {};\n      properties.set(object, map);\n    }\n    return map;\n  }\n  function remove(object) {\n    properties.delete(object);\n  }\n  function update(object, key, value) {\n    properties.get(object)[key] = value;\n  }\n  function dispose() {\n    properties = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    remove,\n    update,\n    dispose\n  };\n}\nfunction painterSortStable(a, b) {\n  if (a.groupOrder !== b.groupOrder) {\n    return a.groupOrder - b.groupOrder;\n  } else if (a.renderOrder !== b.renderOrder) {\n    return a.renderOrder - b.renderOrder;\n  } else if (a.material.id !== b.material.id) {\n    return a.material.id - b.material.id;\n  } else if (a.z !== b.z) {\n    return a.z - b.z;\n  } else {\n    return a.id - b.id;\n  }\n}\nfunction reversePainterSortStable(a, b) {\n  if (a.groupOrder !== b.groupOrder) {\n    return a.groupOrder - b.groupOrder;\n  } else if (a.renderOrder !== b.renderOrder) {\n    return a.renderOrder - b.renderOrder;\n  } else if (a.z !== b.z) {\n    return b.z - a.z;\n  } else {\n    return a.id - b.id;\n  }\n}\nfunction WebGLRenderList() {\n  const renderItems = [];\n  let renderItemsIndex = 0;\n  const opaque = [];\n  const transmissive = [];\n  const transparent = [];\n  function init() {\n    renderItemsIndex = 0;\n    opaque.length = 0;\n    transmissive.length = 0;\n    transparent.length = 0;\n  }\n  function getNextRenderItem(object, geometry, material, groupOrder, z, group) {\n    let renderItem = renderItems[renderItemsIndex];\n    if (renderItem === void 0) {\n      renderItem = {\n        id: object.id,\n        object,\n        geometry,\n        material,\n        groupOrder,\n        renderOrder: object.renderOrder,\n        z,\n        group\n      };\n      renderItems[renderItemsIndex] = renderItem;\n    } else {\n      renderItem.id = object.id;\n      renderItem.object = object;\n      renderItem.geometry = geometry;\n      renderItem.material = material;\n      renderItem.groupOrder = groupOrder;\n      renderItem.renderOrder = object.renderOrder;\n      renderItem.z = z;\n      renderItem.group = group;\n    }\n    renderItemsIndex++;\n    return renderItem;\n  }\n  function push(object, geometry, material, groupOrder, z, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n    if (material.transmission > 0) {\n      transmissive.push(renderItem);\n    } else if (material.transparent === true) {\n      transparent.push(renderItem);\n    } else {\n      opaque.push(renderItem);\n    }\n  }\n  function unshift(object, geometry, material, groupOrder, z, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z, group);\n    if (material.transmission > 0) {\n      transmissive.unshift(renderItem);\n    } else if (material.transparent === true) {\n      transparent.unshift(renderItem);\n    } else {\n      opaque.unshift(renderItem);\n    }\n  }\n  function sort(customOpaqueSort, customTransparentSort) {\n    if (opaque.length > 1)\n      opaque.sort(customOpaqueSort || painterSortStable);\n    if (transmissive.length > 1)\n      transmissive.sort(customTransparentSort || reversePainterSortStable);\n    if (transparent.length > 1)\n      transparent.sort(customTransparentSort || reversePainterSortStable);\n  }\n  function finish() {\n    for (let i = renderItemsIndex, il = renderItems.length; i < il; i++) {\n      const renderItem = renderItems[i];\n      if (renderItem.id === null)\n        break;\n      renderItem.id = null;\n      renderItem.object = null;\n      renderItem.geometry = null;\n      renderItem.material = null;\n      renderItem.group = null;\n    }\n  }\n  return {\n    opaque,\n    transmissive,\n    transparent,\n    init,\n    push,\n    unshift,\n    finish,\n    sort\n  };\n}\nfunction WebGLRenderLists() {\n  let lists = /* @__PURE__ */ new WeakMap();\n  function get(scene, renderCallDepth) {\n    const listArray = lists.get(scene);\n    let list;\n    if (listArray === void 0) {\n      list = new WebGLRenderList();\n      lists.set(scene, [list]);\n    } else {\n      if (renderCallDepth >= listArray.length) {\n        list = new WebGLRenderList();\n        listArray.push(list);\n      } else {\n        list = listArray[renderCallDepth];\n      }\n    }\n    return list;\n  }\n  function dispose() {\n    lists = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose\n  };\n}\nfunction UniformsCache() {\n  const lights = {};\n  return {\n    get: function(light) {\n      if (lights[light.id] !== void 0) {\n        return lights[light.id];\n      }\n      let uniforms;\n      switch (light.type) {\n        case \"DirectionalLight\":\n          uniforms = {\n            direction: new Vector3(),\n            color: new Color()\n          };\n          break;\n        case \"SpotLight\":\n          uniforms = {\n            position: new Vector3(),\n            direction: new Vector3(),\n            color: new Color(),\n            distance: 0,\n            coneCos: 0,\n            penumbraCos: 0,\n            decay: 0\n          };\n          break;\n        case \"PointLight\":\n          uniforms = {\n            position: new Vector3(),\n            color: new Color(),\n            distance: 0,\n            decay: 0\n          };\n          break;\n        case \"HemisphereLight\":\n          uniforms = {\n            direction: new Vector3(),\n            skyColor: new Color(),\n            groundColor: new Color()\n          };\n          break;\n        case \"RectAreaLight\":\n          uniforms = {\n            color: new Color(),\n            position: new Vector3(),\n            halfWidth: new Vector3(),\n            halfHeight: new Vector3()\n          };\n          break;\n      }\n      lights[light.id] = uniforms;\n      return uniforms;\n    }\n  };\n}\nfunction ShadowUniformsCache() {\n  const lights = {};\n  return {\n    get: function(light) {\n      if (lights[light.id] !== void 0) {\n        return lights[light.id];\n      }\n      let uniforms;\n      switch (light.type) {\n        case \"DirectionalLight\":\n          uniforms = {\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2()\n          };\n          break;\n        case \"SpotLight\":\n          uniforms = {\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2()\n          };\n          break;\n        case \"PointLight\":\n          uniforms = {\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2(),\n            shadowCameraNear: 1,\n            shadowCameraFar: 1e3\n          };\n          break;\n      }\n      lights[light.id] = uniforms;\n      return uniforms;\n    }\n  };\n}\nvar nextVersion = 0;\nfunction shadowCastingAndTexturingLightsFirst(lightA, lightB) {\n  return (lightB.castShadow ? 2 : 0) - (lightA.castShadow ? 2 : 0) + (lightB.map ? 1 : 0) - (lightA.map ? 1 : 0);\n}\nfunction WebGLLights(extensions, capabilities) {\n  const cache2 = new UniformsCache();\n  const shadowCache = ShadowUniformsCache();\n  const state = {\n    version: 0,\n    hash: {\n      directionalLength: -1,\n      pointLength: -1,\n      spotLength: -1,\n      rectAreaLength: -1,\n      hemiLength: -1,\n      numDirectionalShadows: -1,\n      numPointShadows: -1,\n      numSpotShadows: -1,\n      numSpotMaps: -1\n    },\n    ambient: [0, 0, 0],\n    probe: [],\n    directional: [],\n    directionalShadow: [],\n    directionalShadowMap: [],\n    directionalShadowMatrix: [],\n    spot: [],\n    spotLightMap: [],\n    spotShadow: [],\n    spotShadowMap: [],\n    spotLightMatrix: [],\n    rectArea: [],\n    rectAreaLTC1: null,\n    rectAreaLTC2: null,\n    point: [],\n    pointShadow: [],\n    pointShadowMap: [],\n    pointShadowMatrix: [],\n    hemi: [],\n    numSpotLightShadowsWithMaps: 0\n  };\n  for (let i = 0; i < 9; i++)\n    state.probe.push(new Vector3());\n  const vector34 = new Vector3();\n  const matrix42 = new Matrix4();\n  const matrix422 = new Matrix4();\n  function setup(lights, physicallyCorrectLights) {\n    let r = 0, g2 = 0, b = 0;\n    for (let i = 0; i < 9; i++)\n      state.probe[i].set(0, 0, 0);\n    let directionalLength = 0;\n    let pointLength = 0;\n    let spotLength = 0;\n    let rectAreaLength = 0;\n    let hemiLength = 0;\n    let numDirectionalShadows = 0;\n    let numPointShadows = 0;\n    let numSpotShadows = 0;\n    let numSpotMaps = 0;\n    let numSpotShadowsWithMaps = 0;\n    lights.sort(shadowCastingAndTexturingLightsFirst);\n    const scaleFactor = physicallyCorrectLights !== true ? Math.PI : 1;\n    for (let i = 0, l = lights.length; i < l; i++) {\n      const light = lights[i];\n      const color = light.color;\n      const intensity = light.intensity;\n      const distance = light.distance;\n      const shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null;\n      if (light.isAmbientLight) {\n        r += color.r * intensity * scaleFactor;\n        g2 += color.g * intensity * scaleFactor;\n        b += color.b * intensity * scaleFactor;\n      } else if (light.isLightProbe) {\n        for (let j = 0; j < 9; j++) {\n          state.probe[j].addScaledVector(light.sh.coefficients[j], intensity);\n        }\n      } else if (light.isDirectionalLight) {\n        const uniforms = cache2.get(light);\n        uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n        if (light.castShadow) {\n          const shadow = light.shadow;\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          state.directionalShadow[directionalLength] = shadowUniforms;\n          state.directionalShadowMap[directionalLength] = shadowMap;\n          state.directionalShadowMatrix[directionalLength] = light.shadow.matrix;\n          numDirectionalShadows++;\n        }\n        state.directional[directionalLength] = uniforms;\n        directionalLength++;\n      } else if (light.isSpotLight) {\n        const uniforms = cache2.get(light);\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.color.copy(color).multiplyScalar(intensity * scaleFactor);\n        uniforms.distance = distance;\n        uniforms.coneCos = Math.cos(light.angle);\n        uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra));\n        uniforms.decay = light.decay;\n        state.spot[spotLength] = uniforms;\n        const shadow = light.shadow;\n        if (light.map) {\n          state.spotLightMap[numSpotMaps] = light.map;\n          numSpotMaps++;\n          shadow.updateMatrices(light);\n          if (light.castShadow)\n            numSpotShadowsWithMaps++;\n        }\n        state.spotLightMatrix[spotLength] = shadow.matrix;\n        if (light.castShadow) {\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          state.spotShadow[spotLength] = shadowUniforms;\n          state.spotShadowMap[spotLength] = shadowMap;\n          numSpotShadows++;\n        }\n        spotLength++;\n      } else if (light.isRectAreaLight) {\n        const uniforms = cache2.get(light);\n        uniforms.color.copy(color).multiplyScalar(intensity);\n        uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n        uniforms.halfHeight.set(0, light.height * 0.5, 0);\n        state.rectArea[rectAreaLength] = uniforms;\n        rectAreaLength++;\n      } else if (light.isPointLight) {\n        const uniforms = cache2.get(light);\n        uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n        uniforms.distance = light.distance;\n        uniforms.decay = light.decay;\n        if (light.castShadow) {\n          const shadow = light.shadow;\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          shadowUniforms.shadowCameraNear = shadow.camera.near;\n          shadowUniforms.shadowCameraFar = shadow.camera.far;\n          state.pointShadow[pointLength] = shadowUniforms;\n          state.pointShadowMap[pointLength] = shadowMap;\n          state.pointShadowMatrix[pointLength] = light.shadow.matrix;\n          numPointShadows++;\n        }\n        state.point[pointLength] = uniforms;\n        pointLength++;\n      } else if (light.isHemisphereLight) {\n        const uniforms = cache2.get(light);\n        uniforms.skyColor.copy(light.color).multiplyScalar(intensity * scaleFactor);\n        uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity * scaleFactor);\n        state.hemi[hemiLength] = uniforms;\n        hemiLength++;\n      }\n    }\n    if (rectAreaLength > 0) {\n      if (capabilities.isWebGL2) {\n        state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n        state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n      } else {\n        if (extensions.has(\"OES_texture_float_linear\") === true) {\n          state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n          state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n        } else if (extensions.has(\"OES_texture_half_float_linear\") === true) {\n          state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n          state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n        } else {\n          console.error(\"THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.\");\n        }\n      }\n    }\n    state.ambient[0] = r;\n    state.ambient[1] = g2;\n    state.ambient[2] = b;\n    const hash = state.hash;\n    if (hash.directionalLength !== directionalLength || hash.pointLength !== pointLength || hash.spotLength !== spotLength || hash.rectAreaLength !== rectAreaLength || hash.hemiLength !== hemiLength || hash.numDirectionalShadows !== numDirectionalShadows || hash.numPointShadows !== numPointShadows || hash.numSpotShadows !== numSpotShadows || hash.numSpotMaps !== numSpotMaps) {\n      state.directional.length = directionalLength;\n      state.spot.length = spotLength;\n      state.rectArea.length = rectAreaLength;\n      state.point.length = pointLength;\n      state.hemi.length = hemiLength;\n      state.directionalShadow.length = numDirectionalShadows;\n      state.directionalShadowMap.length = numDirectionalShadows;\n      state.pointShadow.length = numPointShadows;\n      state.pointShadowMap.length = numPointShadows;\n      state.spotShadow.length = numSpotShadows;\n      state.spotShadowMap.length = numSpotShadows;\n      state.directionalShadowMatrix.length = numDirectionalShadows;\n      state.pointShadowMatrix.length = numPointShadows;\n      state.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n      state.spotLightMap.length = numSpotMaps;\n      state.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n      hash.directionalLength = directionalLength;\n      hash.pointLength = pointLength;\n      hash.spotLength = spotLength;\n      hash.rectAreaLength = rectAreaLength;\n      hash.hemiLength = hemiLength;\n      hash.numDirectionalShadows = numDirectionalShadows;\n      hash.numPointShadows = numPointShadows;\n      hash.numSpotShadows = numSpotShadows;\n      hash.numSpotMaps = numSpotMaps;\n      state.version = nextVersion++;\n    }\n  }\n  function setupView(lights, camera2) {\n    let directionalLength = 0;\n    let pointLength = 0;\n    let spotLength = 0;\n    let rectAreaLength = 0;\n    let hemiLength = 0;\n    const viewMatrix = camera2.matrixWorldInverse;\n    for (let i = 0, l = lights.length; i < l; i++) {\n      const light = lights[i];\n      if (light.isDirectionalLight) {\n        const uniforms = state.directional[directionalLength];\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        vector34.setFromMatrixPosition(light.target.matrixWorld);\n        uniforms.direction.sub(vector34);\n        uniforms.direction.transformDirection(viewMatrix);\n        directionalLength++;\n      } else if (light.isSpotLight) {\n        const uniforms = state.spot[spotLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        vector34.setFromMatrixPosition(light.target.matrixWorld);\n        uniforms.direction.sub(vector34);\n        uniforms.direction.transformDirection(viewMatrix);\n        spotLength++;\n      } else if (light.isRectAreaLight) {\n        const uniforms = state.rectArea[rectAreaLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        matrix422.identity();\n        matrix42.copy(light.matrixWorld);\n        matrix42.premultiply(viewMatrix);\n        matrix422.extractRotation(matrix42);\n        uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n        uniforms.halfHeight.set(0, light.height * 0.5, 0);\n        uniforms.halfWidth.applyMatrix4(matrix422);\n        uniforms.halfHeight.applyMatrix4(matrix422);\n        rectAreaLength++;\n      } else if (light.isPointLight) {\n        const uniforms = state.point[pointLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        pointLength++;\n      } else if (light.isHemisphereLight) {\n        const uniforms = state.hemi[hemiLength];\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        uniforms.direction.transformDirection(viewMatrix);\n        hemiLength++;\n      }\n    }\n  }\n  return {\n    setup,\n    setupView,\n    state\n  };\n}\nfunction WebGLRenderState(extensions, capabilities) {\n  const lights = new WebGLLights(extensions, capabilities);\n  const lightsArray = [];\n  const shadowsArray = [];\n  function init() {\n    lightsArray.length = 0;\n    shadowsArray.length = 0;\n  }\n  function pushLight(light) {\n    lightsArray.push(light);\n  }\n  function pushShadow(shadowLight) {\n    shadowsArray.push(shadowLight);\n  }\n  function setupLights(physicallyCorrectLights) {\n    lights.setup(lightsArray, physicallyCorrectLights);\n  }\n  function setupLightsView(camera2) {\n    lights.setupView(lightsArray, camera2);\n  }\n  const state = {\n    lightsArray,\n    shadowsArray,\n    lights\n  };\n  return {\n    init,\n    state,\n    setupLights,\n    setupLightsView,\n    pushLight,\n    pushShadow\n  };\n}\nfunction WebGLRenderStates(extensions, capabilities) {\n  let renderStates = /* @__PURE__ */ new WeakMap();\n  function get(scene, renderCallDepth = 0) {\n    const renderStateArray = renderStates.get(scene);\n    let renderState;\n    if (renderStateArray === void 0) {\n      renderState = new WebGLRenderState(extensions, capabilities);\n      renderStates.set(scene, [renderState]);\n    } else {\n      if (renderCallDepth >= renderStateArray.length) {\n        renderState = new WebGLRenderState(extensions, capabilities);\n        renderStateArray.push(renderState);\n      } else {\n        renderState = renderStateArray[renderCallDepth];\n      }\n    }\n    return renderState;\n  }\n  function dispose() {\n    renderStates = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose\n  };\n}\nvar MeshDepthMaterial = class extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshDepthMaterial = true;\n    this.type = \"MeshDepthMaterial\";\n    this.depthPacking = BasicDepthPacking;\n    this.map = null;\n    this.alphaMap = null;\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.depthPacking = source.depthPacking;\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    return this;\n  }\n};\nvar MeshDistanceMaterial = class extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshDistanceMaterial = true;\n    this.type = \"MeshDistanceMaterial\";\n    this.referencePosition = new Vector3();\n    this.nearDistance = 1;\n    this.farDistance = 1e3;\n    this.map = null;\n    this.alphaMap = null;\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.referencePosition.copy(source.referencePosition);\n    this.nearDistance = source.nearDistance;\n    this.farDistance = source.farDistance;\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    return this;\n  }\n};\nvar vertex = \"void main() {\\n\tgl_Position = vec4( position, 1.0 );\\n}\";\nvar fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include <packing>\\nvoid main() {\\n\tconst float samples = float( VSM_SAMPLES );\\n\tfloat mean = 0.0;\\n\tfloat squared_mean = 0.0;\\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\t\tfloat uvOffset = uvStart + i * uvStride;\\n\t\t#ifdef HORIZONTAL_PASS\\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\t\t\tmean += distribution.x;\\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\t\t#else\\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\t\t\tmean += depth;\\n\t\t\tsquared_mean += depth * depth;\\n\t\t#endif\\n\t}\\n\tmean = mean / samples;\\n\tsquared_mean = squared_mean / samples;\\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\nfunction WebGLShadowMap(_renderer, _objects, _capabilities) {\n  let _frustum = new Frustum();\n  const _shadowMapSize = new Vector2(), _viewportSize = new Vector2(), _viewport = new Vector4(), _depthMaterial = new MeshDepthMaterial({ depthPacking: RGBADepthPacking }), _distanceMaterial = new MeshDistanceMaterial(), _materialCache = {}, _maxTextureSize = _capabilities.maxTextureSize;\n  const shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n  const shadowMaterialVertical = new ShaderMaterial({\n    defines: {\n      VSM_SAMPLES: 8\n    },\n    uniforms: {\n      shadow_pass: { value: null },\n      resolution: { value: new Vector2() },\n      radius: { value: 4 }\n    },\n    vertexShader: vertex,\n    fragmentShader: fragment\n  });\n  const shadowMaterialHorizontal = shadowMaterialVertical.clone();\n  shadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n  const fullScreenTri = new BufferGeometry();\n  fullScreenTri.setAttribute(\n    \"position\",\n    new BufferAttribute(\n      new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]),\n      3\n    )\n  );\n  const fullScreenMesh = new Mesh(fullScreenTri, shadowMaterialVertical);\n  const scope = this;\n  this.enabled = false;\n  this.autoUpdate = true;\n  this.needsUpdate = false;\n  this.type = PCFShadowMap;\n  this.render = function(lights, scene, camera2) {\n    if (scope.enabled === false)\n      return;\n    if (scope.autoUpdate === false && scope.needsUpdate === false)\n      return;\n    if (lights.length === 0)\n      return;\n    const currentRenderTarget = _renderer.getRenderTarget();\n    const activeCubeFace = _renderer.getActiveCubeFace();\n    const activeMipmapLevel = _renderer.getActiveMipmapLevel();\n    const _state = _renderer.state;\n    _state.setBlending(NoBlending);\n    _state.buffers.color.setClear(1, 1, 1, 1);\n    _state.buffers.depth.setTest(true);\n    _state.setScissorTest(false);\n    for (let i = 0, il = lights.length; i < il; i++) {\n      const light = lights[i];\n      const shadow = light.shadow;\n      if (shadow === void 0) {\n        console.warn(\"THREE.WebGLShadowMap:\", light, \"has no shadow.\");\n        continue;\n      }\n      if (shadow.autoUpdate === false && shadow.needsUpdate === false)\n        continue;\n      _shadowMapSize.copy(shadow.mapSize);\n      const shadowFrameExtents = shadow.getFrameExtents();\n      _shadowMapSize.multiply(shadowFrameExtents);\n      _viewportSize.copy(shadow.mapSize);\n      if (_shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize) {\n        if (_shadowMapSize.x > _maxTextureSize) {\n          _viewportSize.x = Math.floor(_maxTextureSize / shadowFrameExtents.x);\n          _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n          shadow.mapSize.x = _viewportSize.x;\n        }\n        if (_shadowMapSize.y > _maxTextureSize) {\n          _viewportSize.y = Math.floor(_maxTextureSize / shadowFrameExtents.y);\n          _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n          shadow.mapSize.y = _viewportSize.y;\n        }\n      }\n      if (shadow.map === null) {\n        const pars = this.type !== VSMShadowMap ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n        shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n        shadow.map.texture.name = light.name + \".shadowMap\";\n        shadow.camera.updateProjectionMatrix();\n      }\n      _renderer.setRenderTarget(shadow.map);\n      _renderer.clear();\n      const viewportCount = shadow.getViewportCount();\n      for (let vp = 0; vp < viewportCount; vp++) {\n        const viewport = shadow.getViewport(vp);\n        _viewport.set(\n          _viewportSize.x * viewport.x,\n          _viewportSize.y * viewport.y,\n          _viewportSize.x * viewport.z,\n          _viewportSize.y * viewport.w\n        );\n        _state.viewport(_viewport);\n        shadow.updateMatrices(light, vp);\n        _frustum = shadow.getFrustum();\n        renderObject(scene, camera2, shadow.camera, light, this.type);\n      }\n      if (shadow.isPointLightShadow !== true && this.type === VSMShadowMap) {\n        VSMPass(shadow, camera2);\n      }\n      shadow.needsUpdate = false;\n    }\n    scope.needsUpdate = false;\n    _renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipmapLevel);\n  };\n  function VSMPass(shadow, camera2) {\n    const geometry = _objects.update(fullScreenMesh);\n    if (shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples) {\n      shadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n      shadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n      shadowMaterialVertical.needsUpdate = true;\n      shadowMaterialHorizontal.needsUpdate = true;\n    }\n    if (shadow.mapPass === null) {\n      shadow.mapPass = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y);\n    }\n    shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n    shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n    shadowMaterialVertical.uniforms.radius.value = shadow.radius;\n    _renderer.setRenderTarget(shadow.mapPass);\n    _renderer.clear();\n    _renderer.renderBufferDirect(camera2, null, geometry, shadowMaterialVertical, fullScreenMesh, null);\n    shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n    shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n    shadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n    _renderer.setRenderTarget(shadow.map);\n    _renderer.clear();\n    _renderer.renderBufferDirect(camera2, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null);\n  }\n  function getDepthMaterial(object, material, light, shadowCameraNear, shadowCameraFar, type) {\n    let result = null;\n    const customMaterial = light.isPointLight === true ? object.customDistanceMaterial : object.customDepthMaterial;\n    if (customMaterial !== void 0) {\n      result = customMaterial;\n    } else {\n      result = light.isPointLight === true ? _distanceMaterial : _depthMaterial;\n    }\n    if (_renderer.localClippingEnabled && material.clipShadows === true && Array.isArray(material.clippingPlanes) && material.clippingPlanes.length !== 0 || material.displacementMap && material.displacementScale !== 0 || material.alphaMap && material.alphaTest > 0) {\n      const keyA = result.uuid, keyB = material.uuid;\n      let materialsForVariant = _materialCache[keyA];\n      if (materialsForVariant === void 0) {\n        materialsForVariant = {};\n        _materialCache[keyA] = materialsForVariant;\n      }\n      let cachedMaterial = materialsForVariant[keyB];\n      if (cachedMaterial === void 0) {\n        cachedMaterial = result.clone();\n        materialsForVariant[keyB] = cachedMaterial;\n      }\n      result = cachedMaterial;\n    }\n    result.visible = material.visible;\n    result.wireframe = material.wireframe;\n    if (type === VSMShadowMap) {\n      result.side = material.shadowSide !== null ? material.shadowSide : material.side;\n    } else {\n      result.side = material.shadowSide !== null ? material.shadowSide : shadowSide[material.side];\n    }\n    result.alphaMap = material.alphaMap;\n    result.alphaTest = material.alphaTest;\n    result.clipShadows = material.clipShadows;\n    result.clippingPlanes = material.clippingPlanes;\n    result.clipIntersection = material.clipIntersection;\n    result.displacementMap = material.displacementMap;\n    result.displacementScale = material.displacementScale;\n    result.displacementBias = material.displacementBias;\n    result.wireframeLinewidth = material.wireframeLinewidth;\n    result.linewidth = material.linewidth;\n    if (light.isPointLight === true && result.isMeshDistanceMaterial === true) {\n      result.referencePosition.setFromMatrixPosition(light.matrixWorld);\n      result.nearDistance = shadowCameraNear;\n      result.farDistance = shadowCameraFar;\n    }\n    return result;\n  }\n  function renderObject(object, camera2, shadowCamera, light, type) {\n    if (object.visible === false)\n      return;\n    const visible = object.layers.test(camera2.layers);\n    if (visible && (object.isMesh || object.isLine || object.isPoints)) {\n      if ((object.castShadow || object.receiveShadow && type === VSMShadowMap) && (!object.frustumCulled || _frustum.intersectsObject(object))) {\n        object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld);\n        const geometry = _objects.update(object);\n        const material = object.material;\n        if (Array.isArray(material)) {\n          const groups = geometry.groups;\n          for (let k = 0, kl = groups.length; k < kl; k++) {\n            const group = groups[k];\n            const groupMaterial = material[group.materialIndex];\n            if (groupMaterial && groupMaterial.visible) {\n              const depthMaterial = getDepthMaterial(object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type);\n              _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);\n            }\n          }\n        } else if (material.visible) {\n          const depthMaterial = getDepthMaterial(object, material, light, shadowCamera.near, shadowCamera.far, type);\n          _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);\n        }\n      }\n    }\n    const children = object.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      renderObject(children[i], camera2, shadowCamera, light, type);\n    }\n  }\n}\nfunction WebGLState(gl, extensions, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  function ColorBuffer() {\n    let locked = false;\n    const color = new Vector4();\n    let currentColorMask = null;\n    const currentColorClear = new Vector4(0, 0, 0, 0);\n    return {\n      setMask: function(colorMask) {\n        if (currentColorMask !== colorMask && !locked) {\n          gl.colorMask(colorMask, colorMask, colorMask, colorMask);\n          currentColorMask = colorMask;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(r, g2, b, a, premultipliedAlpha) {\n        if (premultipliedAlpha === true) {\n          r *= a;\n          g2 *= a;\n          b *= a;\n        }\n        color.set(r, g2, b, a);\n        if (currentColorClear.equals(color) === false) {\n          gl.clearColor(r, g2, b, a);\n          currentColorClear.copy(color);\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentColorMask = null;\n        currentColorClear.set(-1, 0, 0, 0);\n      }\n    };\n  }\n  function DepthBuffer() {\n    let locked = false;\n    let currentDepthMask = null;\n    let currentDepthFunc = null;\n    let currentDepthClear = null;\n    return {\n      setTest: function(depthTest) {\n        if (depthTest) {\n          enable(2929);\n        } else {\n          disable(2929);\n        }\n      },\n      setMask: function(depthMask) {\n        if (currentDepthMask !== depthMask && !locked) {\n          gl.depthMask(depthMask);\n          currentDepthMask = depthMask;\n        }\n      },\n      setFunc: function(depthFunc) {\n        if (currentDepthFunc !== depthFunc) {\n          switch (depthFunc) {\n            case NeverDepth:\n              gl.depthFunc(512);\n              break;\n            case AlwaysDepth:\n              gl.depthFunc(519);\n              break;\n            case LessDepth:\n              gl.depthFunc(513);\n              break;\n            case LessEqualDepth:\n              gl.depthFunc(515);\n              break;\n            case EqualDepth:\n              gl.depthFunc(514);\n              break;\n            case GreaterEqualDepth:\n              gl.depthFunc(518);\n              break;\n            case GreaterDepth:\n              gl.depthFunc(516);\n              break;\n            case NotEqualDepth:\n              gl.depthFunc(517);\n              break;\n            default:\n              gl.depthFunc(515);\n          }\n          currentDepthFunc = depthFunc;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(depth) {\n        if (currentDepthClear !== depth) {\n          gl.clearDepth(depth);\n          currentDepthClear = depth;\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentDepthMask = null;\n        currentDepthFunc = null;\n        currentDepthClear = null;\n      }\n    };\n  }\n  function StencilBuffer() {\n    let locked = false;\n    let currentStencilMask = null;\n    let currentStencilFunc = null;\n    let currentStencilRef = null;\n    let currentStencilFuncMask = null;\n    let currentStencilFail = null;\n    let currentStencilZFail = null;\n    let currentStencilZPass = null;\n    let currentStencilClear = null;\n    return {\n      setTest: function(stencilTest) {\n        if (!locked) {\n          if (stencilTest) {\n            enable(2960);\n          } else {\n            disable(2960);\n          }\n        }\n      },\n      setMask: function(stencilMask) {\n        if (currentStencilMask !== stencilMask && !locked) {\n          gl.stencilMask(stencilMask);\n          currentStencilMask = stencilMask;\n        }\n      },\n      setFunc: function(stencilFunc, stencilRef, stencilMask) {\n        if (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) {\n          gl.stencilFunc(stencilFunc, stencilRef, stencilMask);\n          currentStencilFunc = stencilFunc;\n          currentStencilRef = stencilRef;\n          currentStencilFuncMask = stencilMask;\n        }\n      },\n      setOp: function(stencilFail, stencilZFail, stencilZPass) {\n        if (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) {\n          gl.stencilOp(stencilFail, stencilZFail, stencilZPass);\n          currentStencilFail = stencilFail;\n          currentStencilZFail = stencilZFail;\n          currentStencilZPass = stencilZPass;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(stencil) {\n        if (currentStencilClear !== stencil) {\n          gl.clearStencil(stencil);\n          currentStencilClear = stencil;\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentStencilMask = null;\n        currentStencilFunc = null;\n        currentStencilRef = null;\n        currentStencilFuncMask = null;\n        currentStencilFail = null;\n        currentStencilZFail = null;\n        currentStencilZPass = null;\n        currentStencilClear = null;\n      }\n    };\n  }\n  const colorBuffer = new ColorBuffer();\n  const depthBuffer = new DepthBuffer();\n  const stencilBuffer = new StencilBuffer();\n  const uboBindings = /* @__PURE__ */ new WeakMap();\n  const uboProgamMap = /* @__PURE__ */ new WeakMap();\n  let enabledCapabilities = {};\n  let currentBoundFramebuffers = {};\n  let currentDrawbuffers = /* @__PURE__ */ new WeakMap();\n  let defaultDrawbuffers = [];\n  let currentProgram = null;\n  let currentBlendingEnabled = false;\n  let currentBlending = null;\n  let currentBlendEquation = null;\n  let currentBlendSrc = null;\n  let currentBlendDst = null;\n  let currentBlendEquationAlpha = null;\n  let currentBlendSrcAlpha = null;\n  let currentBlendDstAlpha = null;\n  let currentPremultipledAlpha = false;\n  let currentFlipSided = null;\n  let currentCullFace = null;\n  let currentLineWidth = null;\n  let currentPolygonOffsetFactor = null;\n  let currentPolygonOffsetUnits = null;\n  const maxTextures = gl.getParameter(35661);\n  let lineWidthAvailable = false;\n  let version = 0;\n  const glVersion = gl.getParameter(7938);\n  if (glVersion.indexOf(\"WebGL\") !== -1) {\n    version = parseFloat(/^WebGL (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version >= 1;\n  } else if (glVersion.indexOf(\"OpenGL ES\") !== -1) {\n    version = parseFloat(/^OpenGL ES (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version >= 2;\n  }\n  let currentTextureSlot = null;\n  let currentBoundTextures = {};\n  const scissorParam = gl.getParameter(3088);\n  const viewportParam = gl.getParameter(2978);\n  const currentScissor = new Vector4().fromArray(scissorParam);\n  const currentViewport = new Vector4().fromArray(viewportParam);\n  function createTexture(type, target2, count) {\n    const data = new Uint8Array(4);\n    const texture = gl.createTexture();\n    gl.bindTexture(type, texture);\n    gl.texParameteri(type, 10241, 9728);\n    gl.texParameteri(type, 10240, 9728);\n    for (let i = 0; i < count; i++) {\n      gl.texImage2D(target2 + i, 0, 6408, 1, 1, 0, 6408, 5121, data);\n    }\n    return texture;\n  }\n  const emptyTextures = {};\n  emptyTextures[3553] = createTexture(3553, 3553, 1);\n  emptyTextures[34067] = createTexture(34067, 34069, 6);\n  colorBuffer.setClear(0, 0, 0, 1);\n  depthBuffer.setClear(1);\n  stencilBuffer.setClear(0);\n  enable(2929);\n  depthBuffer.setFunc(LessEqualDepth);\n  setFlipSided(false);\n  setCullFace(CullFaceBack);\n  enable(2884);\n  setBlending(NoBlending);\n  function enable(id) {\n    if (enabledCapabilities[id] !== true) {\n      gl.enable(id);\n      enabledCapabilities[id] = true;\n    }\n  }\n  function disable(id) {\n    if (enabledCapabilities[id] !== false) {\n      gl.disable(id);\n      enabledCapabilities[id] = false;\n    }\n  }\n  function bindFramebuffer(target2, framebuffer) {\n    if (currentBoundFramebuffers[target2] !== framebuffer) {\n      gl.bindFramebuffer(target2, framebuffer);\n      currentBoundFramebuffers[target2] = framebuffer;\n      if (isWebGL2) {\n        if (target2 === 36009) {\n          currentBoundFramebuffers[36160] = framebuffer;\n        }\n        if (target2 === 36160) {\n          currentBoundFramebuffers[36009] = framebuffer;\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n  function drawBuffers(renderTarget, framebuffer) {\n    let drawBuffers2 = defaultDrawbuffers;\n    let needsUpdate = false;\n    if (renderTarget) {\n      drawBuffers2 = currentDrawbuffers.get(framebuffer);\n      if (drawBuffers2 === void 0) {\n        drawBuffers2 = [];\n        currentDrawbuffers.set(framebuffer, drawBuffers2);\n      }\n      if (renderTarget.isWebGLMultipleRenderTargets) {\n        const textures = renderTarget.texture;\n        if (drawBuffers2.length !== textures.length || drawBuffers2[0] !== 36064) {\n          for (let i = 0, il = textures.length; i < il; i++) {\n            drawBuffers2[i] = 36064 + i;\n          }\n          drawBuffers2.length = textures.length;\n          needsUpdate = true;\n        }\n      } else {\n        if (drawBuffers2[0] !== 36064) {\n          drawBuffers2[0] = 36064;\n          needsUpdate = true;\n        }\n      }\n    } else {\n      if (drawBuffers2[0] !== 1029) {\n        drawBuffers2[0] = 1029;\n        needsUpdate = true;\n      }\n    }\n    if (needsUpdate) {\n      if (capabilities.isWebGL2) {\n        gl.drawBuffers(drawBuffers2);\n      } else {\n        extensions.get(\"WEBGL_draw_buffers\").drawBuffersWEBGL(drawBuffers2);\n      }\n    }\n  }\n  function useProgram(program) {\n    if (currentProgram !== program) {\n      gl.useProgram(program);\n      currentProgram = program;\n      return true;\n    }\n    return false;\n  }\n  const equationToGL = {\n    [AddEquation]: 32774,\n    [SubtractEquation]: 32778,\n    [ReverseSubtractEquation]: 32779\n  };\n  if (isWebGL2) {\n    equationToGL[MinEquation] = 32775;\n    equationToGL[MaxEquation] = 32776;\n  } else {\n    const extension = extensions.get(\"EXT_blend_minmax\");\n    if (extension !== null) {\n      equationToGL[MinEquation] = extension.MIN_EXT;\n      equationToGL[MaxEquation] = extension.MAX_EXT;\n    }\n  }\n  const factorToGL = {\n    [ZeroFactor]: 0,\n    [OneFactor]: 1,\n    [SrcColorFactor]: 768,\n    [SrcAlphaFactor]: 770,\n    [SrcAlphaSaturateFactor]: 776,\n    [DstColorFactor]: 774,\n    [DstAlphaFactor]: 772,\n    [OneMinusSrcColorFactor]: 769,\n    [OneMinusSrcAlphaFactor]: 771,\n    [OneMinusDstColorFactor]: 775,\n    [OneMinusDstAlphaFactor]: 773\n  };\n  function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha) {\n    if (blending === NoBlending) {\n      if (currentBlendingEnabled === true) {\n        disable(3042);\n        currentBlendingEnabled = false;\n      }\n      return;\n    }\n    if (currentBlendingEnabled === false) {\n      enable(3042);\n      currentBlendingEnabled = true;\n    }\n    if (blending !== CustomBlending) {\n      if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) {\n        if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) {\n          gl.blendEquation(32774);\n          currentBlendEquation = AddEquation;\n          currentBlendEquationAlpha = AddEquation;\n        }\n        if (premultipliedAlpha) {\n          switch (blending) {\n            case NormalBlending:\n              gl.blendFuncSeparate(1, 771, 1, 771);\n              break;\n            case AdditiveBlending:\n              gl.blendFunc(1, 1);\n              break;\n            case SubtractiveBlending:\n              gl.blendFuncSeparate(0, 769, 0, 1);\n              break;\n            case MultiplyBlending:\n              gl.blendFuncSeparate(0, 768, 0, 770);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n              break;\n          }\n        } else {\n          switch (blending) {\n            case NormalBlending:\n              gl.blendFuncSeparate(770, 771, 1, 771);\n              break;\n            case AdditiveBlending:\n              gl.blendFunc(770, 1);\n              break;\n            case SubtractiveBlending:\n              gl.blendFuncSeparate(0, 769, 0, 1);\n              break;\n            case MultiplyBlending:\n              gl.blendFunc(0, 768);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n              break;\n          }\n        }\n        currentBlendSrc = null;\n        currentBlendDst = null;\n        currentBlendSrcAlpha = null;\n        currentBlendDstAlpha = null;\n        currentBlending = blending;\n        currentPremultipledAlpha = premultipliedAlpha;\n      }\n      return;\n    }\n    blendEquationAlpha = blendEquationAlpha || blendEquation;\n    blendSrcAlpha = blendSrcAlpha || blendSrc;\n    blendDstAlpha = blendDstAlpha || blendDst;\n    if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) {\n      gl.blendEquationSeparate(equationToGL[blendEquation], equationToGL[blendEquationAlpha]);\n      currentBlendEquation = blendEquation;\n      currentBlendEquationAlpha = blendEquationAlpha;\n    }\n    if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) {\n      gl.blendFuncSeparate(factorToGL[blendSrc], factorToGL[blendDst], factorToGL[blendSrcAlpha], factorToGL[blendDstAlpha]);\n      currentBlendSrc = blendSrc;\n      currentBlendDst = blendDst;\n      currentBlendSrcAlpha = blendSrcAlpha;\n      currentBlendDstAlpha = blendDstAlpha;\n    }\n    currentBlending = blending;\n    currentPremultipledAlpha = null;\n  }\n  function setMaterial(material, frontFaceCW) {\n    material.side === DoubleSide ? disable(2884) : enable(2884);\n    let flipSided = material.side === BackSide;\n    if (frontFaceCW)\n      flipSided = !flipSided;\n    setFlipSided(flipSided);\n    material.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha);\n    depthBuffer.setFunc(material.depthFunc);\n    depthBuffer.setTest(material.depthTest);\n    depthBuffer.setMask(material.depthWrite);\n    colorBuffer.setMask(material.colorWrite);\n    const stencilWrite = material.stencilWrite;\n    stencilBuffer.setTest(stencilWrite);\n    if (stencilWrite) {\n      stencilBuffer.setMask(material.stencilWriteMask);\n      stencilBuffer.setFunc(material.stencilFunc, material.stencilRef, material.stencilFuncMask);\n      stencilBuffer.setOp(material.stencilFail, material.stencilZFail, material.stencilZPass);\n    }\n    setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits);\n    material.alphaToCoverage === true ? enable(32926) : disable(32926);\n  }\n  function setFlipSided(flipSided) {\n    if (currentFlipSided !== flipSided) {\n      if (flipSided) {\n        gl.frontFace(2304);\n      } else {\n        gl.frontFace(2305);\n      }\n      currentFlipSided = flipSided;\n    }\n  }\n  function setCullFace(cullFace) {\n    if (cullFace !== CullFaceNone) {\n      enable(2884);\n      if (cullFace !== currentCullFace) {\n        if (cullFace === CullFaceBack) {\n          gl.cullFace(1029);\n        } else if (cullFace === CullFaceFront) {\n          gl.cullFace(1028);\n        } else {\n          gl.cullFace(1032);\n        }\n      }\n    } else {\n      disable(2884);\n    }\n    currentCullFace = cullFace;\n  }\n  function setLineWidth(width) {\n    if (width !== currentLineWidth) {\n      if (lineWidthAvailable)\n        gl.lineWidth(width);\n      currentLineWidth = width;\n    }\n  }\n  function setPolygonOffset(polygonOffset, factor, units) {\n    if (polygonOffset) {\n      enable(32823);\n      if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) {\n        gl.polygonOffset(factor, units);\n        currentPolygonOffsetFactor = factor;\n        currentPolygonOffsetUnits = units;\n      }\n    } else {\n      disable(32823);\n    }\n  }\n  function setScissorTest(scissorTest) {\n    if (scissorTest) {\n      enable(3089);\n    } else {\n      disable(3089);\n    }\n  }\n  function activeTexture(webglSlot) {\n    if (webglSlot === void 0)\n      webglSlot = 33984 + maxTextures - 1;\n    if (currentTextureSlot !== webglSlot) {\n      gl.activeTexture(webglSlot);\n      currentTextureSlot = webglSlot;\n    }\n  }\n  function bindTexture(webglType, webglTexture, webglSlot) {\n    if (webglSlot === void 0) {\n      if (currentTextureSlot === null) {\n        webglSlot = 33984 + maxTextures - 1;\n      } else {\n        webglSlot = currentTextureSlot;\n      }\n    }\n    let boundTexture = currentBoundTextures[webglSlot];\n    if (boundTexture === void 0) {\n      boundTexture = { type: void 0, texture: void 0 };\n      currentBoundTextures[webglSlot] = boundTexture;\n    }\n    if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) {\n      if (currentTextureSlot !== webglSlot) {\n        gl.activeTexture(webglSlot);\n        currentTextureSlot = webglSlot;\n      }\n      gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]);\n      boundTexture.type = webglType;\n      boundTexture.texture = webglTexture;\n    }\n  }\n  function unbindTexture() {\n    const boundTexture = currentBoundTextures[currentTextureSlot];\n    if (boundTexture !== void 0 && boundTexture.type !== void 0) {\n      gl.bindTexture(boundTexture.type, null);\n      boundTexture.type = void 0;\n      boundTexture.texture = void 0;\n    }\n  }\n  function compressedTexImage2D() {\n    try {\n      gl.compressedTexImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function compressedTexImage3D() {\n    try {\n      gl.compressedTexImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texSubImage2D() {\n    try {\n      gl.texSubImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texSubImage3D() {\n    try {\n      gl.texSubImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function compressedTexSubImage2D() {\n    try {\n      gl.compressedTexSubImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function compressedTexSubImage3D() {\n    try {\n      gl.compressedTexSubImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texStorage2D() {\n    try {\n      gl.texStorage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texStorage3D() {\n    try {\n      gl.texStorage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texImage2D() {\n    try {\n      gl.texImage2D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function texImage3D() {\n    try {\n      gl.texImage3D.apply(gl, arguments);\n    } catch (error) {\n      console.error(\"THREE.WebGLState:\", error);\n    }\n  }\n  function scissor(scissor2) {\n    if (currentScissor.equals(scissor2) === false) {\n      gl.scissor(scissor2.x, scissor2.y, scissor2.z, scissor2.w);\n      currentScissor.copy(scissor2);\n    }\n  }\n  function viewport(viewport2) {\n    if (currentViewport.equals(viewport2) === false) {\n      gl.viewport(viewport2.x, viewport2.y, viewport2.z, viewport2.w);\n      currentViewport.copy(viewport2);\n    }\n  }\n  function updateUBOMapping(uniformsGroup, program) {\n    let mapping = uboProgamMap.get(program);\n    if (mapping === void 0) {\n      mapping = /* @__PURE__ */ new WeakMap();\n      uboProgamMap.set(program, mapping);\n    }\n    let blockIndex = mapping.get(uniformsGroup);\n    if (blockIndex === void 0) {\n      blockIndex = gl.getUniformBlockIndex(program, uniformsGroup.name);\n      mapping.set(uniformsGroup, blockIndex);\n    }\n  }\n  function uniformBlockBinding(uniformsGroup, program) {\n    const mapping = uboProgamMap.get(program);\n    const blockIndex = mapping.get(uniformsGroup);\n    if (uboBindings.get(uniformsGroup) !== blockIndex) {\n      gl.uniformBlockBinding(program, blockIndex, uniformsGroup.__bindingPointIndex);\n      uboBindings.set(uniformsGroup, blockIndex);\n    }\n  }\n  function reset() {\n    gl.disable(3042);\n    gl.disable(2884);\n    gl.disable(2929);\n    gl.disable(32823);\n    gl.disable(3089);\n    gl.disable(2960);\n    gl.disable(32926);\n    gl.blendEquation(32774);\n    gl.blendFunc(1, 0);\n    gl.blendFuncSeparate(1, 0, 1, 0);\n    gl.colorMask(true, true, true, true);\n    gl.clearColor(0, 0, 0, 0);\n    gl.depthMask(true);\n    gl.depthFunc(513);\n    gl.clearDepth(1);\n    gl.stencilMask(4294967295);\n    gl.stencilFunc(519, 0, 4294967295);\n    gl.stencilOp(7680, 7680, 7680);\n    gl.clearStencil(0);\n    gl.cullFace(1029);\n    gl.frontFace(2305);\n    gl.polygonOffset(0, 0);\n    gl.activeTexture(33984);\n    gl.bindFramebuffer(36160, null);\n    if (isWebGL2 === true) {\n      gl.bindFramebuffer(36009, null);\n      gl.bindFramebuffer(36008, null);\n    }\n    gl.useProgram(null);\n    gl.lineWidth(1);\n    gl.scissor(0, 0, gl.canvas.width, gl.canvas.height);\n    gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);\n    enabledCapabilities = {};\n    currentTextureSlot = null;\n    currentBoundTextures = {};\n    currentBoundFramebuffers = {};\n    currentDrawbuffers = /* @__PURE__ */ new WeakMap();\n    defaultDrawbuffers = [];\n    currentProgram = null;\n    currentBlendingEnabled = false;\n    currentBlending = null;\n    currentBlendEquation = null;\n    currentBlendSrc = null;\n    currentBlendDst = null;\n    currentBlendEquationAlpha = null;\n    currentBlendSrcAlpha = null;\n    currentBlendDstAlpha = null;\n    currentPremultipledAlpha = false;\n    currentFlipSided = null;\n    currentCullFace = null;\n    currentLineWidth = null;\n    currentPolygonOffsetFactor = null;\n    currentPolygonOffsetUnits = null;\n    currentScissor.set(0, 0, gl.canvas.width, gl.canvas.height);\n    currentViewport.set(0, 0, gl.canvas.width, gl.canvas.height);\n    colorBuffer.reset();\n    depthBuffer.reset();\n    stencilBuffer.reset();\n  }\n  return {\n    buffers: {\n      color: colorBuffer,\n      depth: depthBuffer,\n      stencil: stencilBuffer\n    },\n    enable,\n    disable,\n    bindFramebuffer,\n    drawBuffers,\n    useProgram,\n    setBlending,\n    setMaterial,\n    setFlipSided,\n    setCullFace,\n    setLineWidth,\n    setPolygonOffset,\n    setScissorTest,\n    activeTexture,\n    bindTexture,\n    unbindTexture,\n    compressedTexImage2D,\n    compressedTexImage3D,\n    texImage2D,\n    texImage3D,\n    updateUBOMapping,\n    uniformBlockBinding,\n    texStorage2D,\n    texStorage3D,\n    texSubImage2D,\n    texSubImage3D,\n    compressedTexSubImage2D,\n    compressedTexSubImage3D,\n    scissor,\n    viewport,\n    reset\n  };\n}\nfunction WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info) {\n  const isWebGL2 = capabilities.isWebGL2;\n  const maxTextures = capabilities.maxTextures;\n  const maxCubemapSize = capabilities.maxCubemapSize;\n  const maxTextureSize = capabilities.maxTextureSize;\n  const maxSamples = capabilities.maxSamples;\n  const multisampledRTTExt = extensions.has(\"WEBGL_multisampled_render_to_texture\") ? extensions.get(\"WEBGL_multisampled_render_to_texture\") : null;\n  const supportsInvalidateFramebuffer = /OculusBrowser/g.test(typeof navigator === \"undefined\" ? \"\" : navigator.userAgent);\n  const _videoTextures = /* @__PURE__ */ new WeakMap();\n  let _canvas2;\n  const _sources = /* @__PURE__ */ new WeakMap();\n  let useOffscreenCanvas = false;\n  try {\n    useOffscreenCanvas = typeof OffscreenCanvas !== \"undefined\" && new OffscreenCanvas(1, 1).getContext(\"2d\") !== null;\n  } catch (err) {\n  }\n  function createCanvas(width, height) {\n    return useOffscreenCanvas ? (\n      // eslint-disable-next-line compat/compat\n      new OffscreenCanvas(width, height)\n    ) : createElementNS(\"canvas\");\n  }\n  function resizeImage(image, needsPowerOfTwo, needsNewCanvas, maxSize) {\n    let scale = 1;\n    if (image.width > maxSize || image.height > maxSize) {\n      scale = maxSize / Math.max(image.width, image.height);\n    }\n    if (scale < 1 || needsPowerOfTwo === true) {\n      if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n        const floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n        const width = floor(scale * image.width);\n        const height = floor(scale * image.height);\n        if (_canvas2 === void 0)\n          _canvas2 = createCanvas(width, height);\n        const canvas = needsNewCanvas ? createCanvas(width, height) : _canvas2;\n        canvas.width = width;\n        canvas.height = height;\n        const context = canvas.getContext(\"2d\");\n        context.drawImage(image, 0, 0, width, height);\n        console.warn(\"THREE.WebGLRenderer: Texture has been resized from (\" + image.width + \"x\" + image.height + \") to (\" + width + \"x\" + height + \").\");\n        return canvas;\n      } else {\n        if (\"data\" in image) {\n          console.warn(\"THREE.WebGLRenderer: Image in DataTexture is too big (\" + image.width + \"x\" + image.height + \").\");\n        }\n        return image;\n      }\n    }\n    return image;\n  }\n  function isPowerOfTwo$1(image) {\n    return isPowerOfTwo(image.width) && isPowerOfTwo(image.height);\n  }\n  function textureNeedsPowerOfTwo(texture) {\n    if (isWebGL2)\n      return false;\n    return texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping || texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n  }\n  function textureNeedsGenerateMipmaps(texture, supportsMips) {\n    return texture.generateMipmaps && supportsMips && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n  }\n  function generateMipmap(target2) {\n    _gl.generateMipmap(target2);\n  }\n  function getInternalFormat(internalFormatName, glFormat, glType, encoding, forceLinearEncoding = false) {\n    if (isWebGL2 === false)\n      return glFormat;\n    if (internalFormatName !== null) {\n      if (_gl[internalFormatName] !== void 0)\n        return _gl[internalFormatName];\n      console.warn(\"THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '\" + internalFormatName + \"'\");\n    }\n    let internalFormat = glFormat;\n    if (glFormat === 6403) {\n      if (glType === 5126)\n        internalFormat = 33326;\n      if (glType === 5131)\n        internalFormat = 33325;\n      if (glType === 5121)\n        internalFormat = 33321;\n    }\n    if (glFormat === 33319) {\n      if (glType === 5126)\n        internalFormat = 33328;\n      if (glType === 5131)\n        internalFormat = 33327;\n      if (glType === 5121)\n        internalFormat = 33323;\n    }\n    if (glFormat === 6408) {\n      if (glType === 5126)\n        internalFormat = 34836;\n      if (glType === 5131)\n        internalFormat = 34842;\n      if (glType === 5121)\n        internalFormat = encoding === sRGBEncoding && forceLinearEncoding === false ? 35907 : 32856;\n      if (glType === 32819)\n        internalFormat = 32854;\n      if (glType === 32820)\n        internalFormat = 32855;\n    }\n    if (internalFormat === 33325 || internalFormat === 33326 || internalFormat === 33327 || internalFormat === 33328 || internalFormat === 34842 || internalFormat === 34836) {\n      extensions.get(\"EXT_color_buffer_float\");\n    }\n    return internalFormat;\n  }\n  function getMipLevels(texture, image, supportsMips) {\n    if (textureNeedsGenerateMipmaps(texture, supportsMips) === true || texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n      return Math.log2(Math.max(image.width, image.height)) + 1;\n    } else if (texture.mipmaps !== void 0 && texture.mipmaps.length > 0) {\n      return texture.mipmaps.length;\n    } else if (texture.isCompressedTexture && Array.isArray(texture.image)) {\n      return image.mipmaps.length;\n    } else {\n      return 1;\n    }\n  }\n  function filterFallback(f) {\n    if (f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter) {\n      return 9728;\n    }\n    return 9729;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    deallocateTexture(texture);\n    if (texture.isVideoTexture) {\n      _videoTextures.delete(texture);\n    }\n  }\n  function onRenderTargetDispose(event) {\n    const renderTarget = event.target;\n    renderTarget.removeEventListener(\"dispose\", onRenderTargetDispose);\n    deallocateRenderTarget(renderTarget);\n  }\n  function deallocateTexture(texture) {\n    const textureProperties = properties.get(texture);\n    if (textureProperties.__webglInit === void 0)\n      return;\n    const source = texture.source;\n    const webglTextures = _sources.get(source);\n    if (webglTextures) {\n      const webglTexture = webglTextures[textureProperties.__cacheKey];\n      webglTexture.usedTimes--;\n      if (webglTexture.usedTimes === 0) {\n        deleteTexture(texture);\n      }\n      if (Object.keys(webglTextures).length === 0) {\n        _sources.delete(source);\n      }\n    }\n    properties.remove(texture);\n  }\n  function deleteTexture(texture) {\n    const textureProperties = properties.get(texture);\n    _gl.deleteTexture(textureProperties.__webglTexture);\n    const source = texture.source;\n    const webglTextures = _sources.get(source);\n    delete webglTextures[textureProperties.__cacheKey];\n    info.memory.textures--;\n  }\n  function deallocateRenderTarget(renderTarget) {\n    const texture = renderTarget.texture;\n    const renderTargetProperties = properties.get(renderTarget);\n    const textureProperties = properties.get(texture);\n    if (textureProperties.__webglTexture !== void 0) {\n      _gl.deleteTexture(textureProperties.__webglTexture);\n      info.memory.textures--;\n    }\n    if (renderTarget.depthTexture) {\n      renderTarget.depthTexture.dispose();\n    }\n    if (renderTarget.isWebGLCubeRenderTarget) {\n      for (let i = 0; i < 6; i++) {\n        _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i]);\n        if (renderTargetProperties.__webglDepthbuffer)\n          _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i]);\n      }\n    } else {\n      _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer);\n      if (renderTargetProperties.__webglDepthbuffer)\n        _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer);\n      if (renderTargetProperties.__webglMultisampledFramebuffer)\n        _gl.deleteFramebuffer(renderTargetProperties.__webglMultisampledFramebuffer);\n      if (renderTargetProperties.__webglColorRenderbuffer) {\n        for (let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i++) {\n          if (renderTargetProperties.__webglColorRenderbuffer[i])\n            _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer[i]);\n        }\n      }\n      if (renderTargetProperties.__webglDepthRenderbuffer)\n        _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer);\n    }\n    if (renderTarget.isWebGLMultipleRenderTargets) {\n      for (let i = 0, il = texture.length; i < il; i++) {\n        const attachmentProperties = properties.get(texture[i]);\n        if (attachmentProperties.__webglTexture) {\n          _gl.deleteTexture(attachmentProperties.__webglTexture);\n          info.memory.textures--;\n        }\n        properties.remove(texture[i]);\n      }\n    }\n    properties.remove(texture);\n    properties.remove(renderTarget);\n  }\n  let textureUnits = 0;\n  function resetTextureUnits() {\n    textureUnits = 0;\n  }\n  function allocateTextureUnit() {\n    const textureUnit = textureUnits;\n    if (textureUnit >= maxTextures) {\n      console.warn(\"THREE.WebGLTextures: Trying to use \" + textureUnit + \" texture units while this GPU supports only \" + maxTextures);\n    }\n    textureUnits += 1;\n    return textureUnit;\n  }\n  function getTextureCacheKey(texture) {\n    const array = [];\n    array.push(texture.wrapS);\n    array.push(texture.wrapT);\n    array.push(texture.wrapR || 0);\n    array.push(texture.magFilter);\n    array.push(texture.minFilter);\n    array.push(texture.anisotropy);\n    array.push(texture.internalFormat);\n    array.push(texture.format);\n    array.push(texture.type);\n    array.push(texture.generateMipmaps);\n    array.push(texture.premultiplyAlpha);\n    array.push(texture.flipY);\n    array.push(texture.unpackAlignment);\n    array.push(texture.encoding);\n    return array.join();\n  }\n  function setTexture2D(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.isVideoTexture)\n      updateVideoTexture(texture);\n    if (texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version) {\n      const image = texture.image;\n      if (image === null) {\n        console.warn(\"THREE.WebGLRenderer: Texture marked for update but no image data found.\");\n      } else if (image.complete === false) {\n        console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is incomplete\");\n      } else {\n        uploadTexture(textureProperties, texture, slot);\n        return;\n      }\n    }\n    state.bindTexture(3553, textureProperties.__webglTexture, 33984 + slot);\n  }\n  function setTexture2DArray(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.bindTexture(35866, textureProperties.__webglTexture, 33984 + slot);\n  }\n  function setTexture3D(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.bindTexture(32879, textureProperties.__webglTexture, 33984 + slot);\n  }\n  function setTextureCube(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadCubeTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.bindTexture(34067, textureProperties.__webglTexture, 33984 + slot);\n  }\n  const wrappingToGL = {\n    [RepeatWrapping]: 10497,\n    [ClampToEdgeWrapping]: 33071,\n    [MirroredRepeatWrapping]: 33648\n  };\n  const filterToGL = {\n    [NearestFilter]: 9728,\n    [NearestMipmapNearestFilter]: 9984,\n    [NearestMipmapLinearFilter]: 9986,\n    [LinearFilter]: 9729,\n    [LinearMipmapNearestFilter]: 9985,\n    [LinearMipmapLinearFilter]: 9987\n  };\n  function setTextureParameters(textureType, texture, supportsMips) {\n    if (supportsMips) {\n      _gl.texParameteri(textureType, 10242, wrappingToGL[texture.wrapS]);\n      _gl.texParameteri(textureType, 10243, wrappingToGL[texture.wrapT]);\n      if (textureType === 32879 || textureType === 35866) {\n        _gl.texParameteri(textureType, 32882, wrappingToGL[texture.wrapR]);\n      }\n      _gl.texParameteri(textureType, 10240, filterToGL[texture.magFilter]);\n      _gl.texParameteri(textureType, 10241, filterToGL[texture.minFilter]);\n    } else {\n      _gl.texParameteri(textureType, 10242, 33071);\n      _gl.texParameteri(textureType, 10243, 33071);\n      if (textureType === 32879 || textureType === 35866) {\n        _gl.texParameteri(textureType, 32882, 33071);\n      }\n      if (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) {\n        console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.\");\n      }\n      _gl.texParameteri(textureType, 10240, filterFallback(texture.magFilter));\n      _gl.texParameteri(textureType, 10241, filterFallback(texture.minFilter));\n      if (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n        console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.\");\n      }\n    }\n    if (extensions.has(\"EXT_texture_filter_anisotropic\") === true) {\n      const extension = extensions.get(\"EXT_texture_filter_anisotropic\");\n      if (texture.type === FloatType && extensions.has(\"OES_texture_float_linear\") === false)\n        return;\n      if (isWebGL2 === false && (texture.type === HalfFloatType && extensions.has(\"OES_texture_half_float_linear\") === false))\n        return;\n      if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) {\n        _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy()));\n        properties.get(texture).__currentAnisotropy = texture.anisotropy;\n      }\n    }\n  }\n  function initTexture(textureProperties, texture) {\n    let forceUpload = false;\n    if (textureProperties.__webglInit === void 0) {\n      textureProperties.__webglInit = true;\n      texture.addEventListener(\"dispose\", onTextureDispose);\n    }\n    const source = texture.source;\n    let webglTextures = _sources.get(source);\n    if (webglTextures === void 0) {\n      webglTextures = {};\n      _sources.set(source, webglTextures);\n    }\n    const textureCacheKey = getTextureCacheKey(texture);\n    if (textureCacheKey !== textureProperties.__cacheKey) {\n      if (webglTextures[textureCacheKey] === void 0) {\n        webglTextures[textureCacheKey] = {\n          texture: _gl.createTexture(),\n          usedTimes: 0\n        };\n        info.memory.textures++;\n        forceUpload = true;\n      }\n      webglTextures[textureCacheKey].usedTimes++;\n      const webglTexture = webglTextures[textureProperties.__cacheKey];\n      if (webglTexture !== void 0) {\n        webglTextures[textureProperties.__cacheKey].usedTimes--;\n        if (webglTexture.usedTimes === 0) {\n          deleteTexture(texture);\n        }\n      }\n      textureProperties.__cacheKey = textureCacheKey;\n      textureProperties.__webglTexture = webglTextures[textureCacheKey].texture;\n    }\n    return forceUpload;\n  }\n  function uploadTexture(textureProperties, texture, slot) {\n    let textureType = 3553;\n    if (texture.isDataArrayTexture || texture.isCompressedArrayTexture)\n      textureType = 35866;\n    if (texture.isData3DTexture)\n      textureType = 32879;\n    const forceUpload = initTexture(textureProperties, texture);\n    const source = texture.source;\n    state.bindTexture(textureType, textureProperties.__webglTexture, 33984 + slot);\n    const sourceProperties = properties.get(source);\n    if (source.version !== sourceProperties.__version || forceUpload === true) {\n      state.activeTexture(33984 + slot);\n      _gl.pixelStorei(37440, texture.flipY);\n      _gl.pixelStorei(37441, texture.premultiplyAlpha);\n      _gl.pixelStorei(3317, texture.unpackAlignment);\n      _gl.pixelStorei(37443, 0);\n      const needsPowerOfTwo = textureNeedsPowerOfTwo(texture) && isPowerOfTwo$1(texture.image) === false;\n      let image = resizeImage(texture.image, needsPowerOfTwo, false, maxTextureSize);\n      image = verifyColorSpace(texture, image);\n      const supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils.convert(texture.format, texture.encoding);\n      let glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding, texture.isVideoTexture);\n      setTextureParameters(textureType, texture, supportsMips);\n      let mipmap;\n      const mipmaps = texture.mipmaps;\n      const useTexStorage = isWebGL2 && texture.isVideoTexture !== true;\n      const allocateMemory = sourceProperties.__version === void 0 || forceUpload === true;\n      const levels = getMipLevels(texture, image, supportsMips);\n      if (texture.isDepthTexture) {\n        glInternalFormat = 6402;\n        if (isWebGL2) {\n          if (texture.type === FloatType) {\n            glInternalFormat = 36012;\n          } else if (texture.type === UnsignedIntType) {\n            glInternalFormat = 33190;\n          } else if (texture.type === UnsignedInt248Type) {\n            glInternalFormat = 35056;\n          } else {\n            glInternalFormat = 33189;\n          }\n        } else {\n          if (texture.type === FloatType) {\n            console.error(\"WebGLRenderer: Floating point depth texture requires WebGL2.\");\n          }\n        }\n        if (texture.format === DepthFormat && glInternalFormat === 6402) {\n          if (texture.type !== UnsignedShortType && texture.type !== UnsignedIntType) {\n            console.warn(\"THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.\");\n            texture.type = UnsignedIntType;\n            glType = utils.convert(texture.type);\n          }\n        }\n        if (texture.format === DepthStencilFormat && glInternalFormat === 6402) {\n          glInternalFormat = 34041;\n          if (texture.type !== UnsignedInt248Type) {\n            console.warn(\"THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.\");\n            texture.type = UnsignedInt248Type;\n            glType = utils.convert(texture.type);\n          }\n        }\n        if (allocateMemory) {\n          if (useTexStorage) {\n            state.texStorage2D(3553, 1, glInternalFormat, image.width, image.height);\n          } else {\n            state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null);\n          }\n        }\n      } else if (texture.isDataTexture) {\n        if (mipmaps.length > 0 && supportsMips) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\n            if (useTexStorage) {\n              state.texSubImage2D(3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n            } else {\n              state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n            }\n          }\n          texture.generateMipmaps = false;\n        } else {\n          if (useTexStorage) {\n            if (allocateMemory) {\n              state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n            }\n            state.texSubImage2D(3553, 0, 0, 0, image.width, image.height, glFormat, glType, image.data);\n          } else {\n            state.texImage2D(3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data);\n          }\n        }\n      } else if (texture.isCompressedTexture) {\n        if (texture.isCompressedArrayTexture) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage3D(35866, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height, image.depth);\n          }\n          for (let i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  state.compressedTexSubImage3D(35866, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0);\n                } else {\n                  state.compressedTexImage3D(35866, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\");\n              }\n            } else {\n              if (useTexStorage) {\n                state.texSubImage3D(35866, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data);\n              } else {\n                state.texImage3D(35866, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        } else {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  state.compressedTexSubImage2D(3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n                } else {\n                  state.compressedTexImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\");\n              }\n            } else {\n              if (useTexStorage) {\n                state.texSubImage2D(3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n              } else {\n                state.texImage2D(3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        }\n      } else if (texture.isDataArrayTexture) {\n        if (useTexStorage) {\n          if (allocateMemory) {\n            state.texStorage3D(35866, levels, glInternalFormat, image.width, image.height, image.depth);\n          }\n          state.texSubImage3D(35866, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n        } else {\n          state.texImage3D(35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n        }\n      } else if (texture.isData3DTexture) {\n        if (useTexStorage) {\n          if (allocateMemory) {\n            state.texStorage3D(32879, levels, glInternalFormat, image.width, image.height, image.depth);\n          }\n          state.texSubImage3D(32879, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n        } else {\n          state.texImage3D(32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n        }\n      } else if (texture.isFramebufferTexture) {\n        if (allocateMemory) {\n          if (useTexStorage) {\n            state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n          } else {\n            let width = image.width, height = image.height;\n            for (let i = 0; i < levels; i++) {\n              state.texImage2D(3553, i, glInternalFormat, width, height, 0, glFormat, glType, null);\n              width >>= 1;\n              height >>= 1;\n            }\n          }\n        }\n      } else {\n        if (mipmaps.length > 0 && supportsMips) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(3553, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i = 0, il = mipmaps.length; i < il; i++) {\n            mipmap = mipmaps[i];\n            if (useTexStorage) {\n              state.texSubImage2D(3553, i, 0, 0, glFormat, glType, mipmap);\n            } else {\n              state.texImage2D(3553, i, glInternalFormat, glFormat, glType, mipmap);\n            }\n          }\n          texture.generateMipmaps = false;\n        } else {\n          if (useTexStorage) {\n            if (allocateMemory) {\n              state.texStorage2D(3553, levels, glInternalFormat, image.width, image.height);\n            }\n            state.texSubImage2D(3553, 0, 0, 0, glFormat, glType, image);\n          } else {\n            state.texImage2D(3553, 0, glInternalFormat, glFormat, glType, image);\n          }\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(textureType);\n      }\n      sourceProperties.__version = source.version;\n      if (texture.onUpdate)\n        texture.onUpdate(texture);\n    }\n    textureProperties.__version = texture.version;\n  }\n  function uploadCubeTexture(textureProperties, texture, slot) {\n    if (texture.image.length !== 6)\n      return;\n    const forceUpload = initTexture(textureProperties, texture);\n    const source = texture.source;\n    state.bindTexture(34067, textureProperties.__webglTexture, 33984 + slot);\n    const sourceProperties = properties.get(source);\n    if (source.version !== sourceProperties.__version || forceUpload === true) {\n      state.activeTexture(33984 + slot);\n      _gl.pixelStorei(37440, texture.flipY);\n      _gl.pixelStorei(37441, texture.premultiplyAlpha);\n      _gl.pixelStorei(3317, texture.unpackAlignment);\n      _gl.pixelStorei(37443, 0);\n      const isCompressed = texture.isCompressedTexture || texture.image[0].isCompressedTexture;\n      const isDataTexture = texture.image[0] && texture.image[0].isDataTexture;\n      const cubeImage = [];\n      for (let i = 0; i < 6; i++) {\n        if (!isCompressed && !isDataTexture) {\n          cubeImage[i] = resizeImage(texture.image[i], false, true, maxCubemapSize);\n        } else {\n          cubeImage[i] = isDataTexture ? texture.image[i].image : texture.image[i];\n        }\n        cubeImage[i] = verifyColorSpace(texture, cubeImage[i]);\n      }\n      const image = cubeImage[0], supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils.convert(texture.format, texture.encoding), glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n      const useTexStorage = isWebGL2 && texture.isVideoTexture !== true;\n      const allocateMemory = sourceProperties.__version === void 0 || forceUpload === true;\n      let levels = getMipLevels(texture, image, supportsMips);\n      setTextureParameters(34067, texture, supportsMips);\n      let mipmaps;\n      if (isCompressed) {\n        if (useTexStorage && allocateMemory) {\n          state.texStorage2D(34067, levels, glInternalFormat, image.width, image.height);\n        }\n        for (let i = 0; i < 6; i++) {\n          mipmaps = cubeImage[i].mipmaps;\n          for (let j = 0; j < mipmaps.length; j++) {\n            const mipmap = mipmaps[j];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  state.compressedTexSubImage2D(34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n                } else {\n                  state.compressedTexImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\");\n              }\n            } else {\n              if (useTexStorage) {\n                state.texSubImage2D(34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n              } else {\n                state.texImage2D(34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        }\n      } else {\n        mipmaps = texture.mipmaps;\n        if (useTexStorage && allocateMemory) {\n          if (mipmaps.length > 0)\n            levels++;\n          state.texStorage2D(34067, levels, glInternalFormat, cubeImage[0].width, cubeImage[0].height);\n        }\n        for (let i = 0; i < 6; i++) {\n          if (isDataTexture) {\n            if (useTexStorage) {\n              state.texSubImage2D(34069 + i, 0, 0, 0, cubeImage[i].width, cubeImage[i].height, glFormat, glType, cubeImage[i].data);\n            } else {\n              state.texImage2D(34069 + i, 0, glInternalFormat, cubeImage[i].width, cubeImage[i].height, 0, glFormat, glType, cubeImage[i].data);\n            }\n            for (let j = 0; j < mipmaps.length; j++) {\n              const mipmap = mipmaps[j];\n              const mipmapImage = mipmap.image[i].image;\n              if (useTexStorage) {\n                state.texSubImage2D(34069 + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data);\n              } else {\n                state.texImage2D(34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data);\n              }\n            }\n          } else {\n            if (useTexStorage) {\n              state.texSubImage2D(34069 + i, 0, 0, 0, glFormat, glType, cubeImage[i]);\n            } else {\n              state.texImage2D(34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[i]);\n            }\n            for (let j = 0; j < mipmaps.length; j++) {\n              const mipmap = mipmaps[j];\n              if (useTexStorage) {\n                state.texSubImage2D(34069 + i, j + 1, 0, 0, glFormat, glType, mipmap.image[i]);\n              } else {\n                state.texImage2D(34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[i]);\n              }\n            }\n          }\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(34067);\n      }\n      sourceProperties.__version = source.version;\n      if (texture.onUpdate)\n        texture.onUpdate(texture);\n    }\n    textureProperties.__version = texture.version;\n  }\n  function setupFrameBufferTexture(framebuffer, renderTarget, texture, attachment, textureTarget) {\n    const glFormat = utils.convert(texture.format, texture.encoding);\n    const glType = utils.convert(texture.type);\n    const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n    const renderTargetProperties = properties.get(renderTarget);\n    if (!renderTargetProperties.__hasExternalTextures) {\n      if (textureTarget === 32879 || textureTarget === 35866) {\n        state.texImage3D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null);\n      } else {\n        state.texImage2D(textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null);\n      }\n    }\n    state.bindFramebuffer(36160, framebuffer);\n    if (useMultisampledRTT(renderTarget)) {\n      multisampledRTTExt.framebufferTexture2DMultisampleEXT(36160, attachment, textureTarget, properties.get(texture).__webglTexture, 0, getRenderTargetSamples(renderTarget));\n    } else if (textureTarget === 3553 || textureTarget >= 34069 && textureTarget <= 34074) {\n      _gl.framebufferTexture2D(36160, attachment, textureTarget, properties.get(texture).__webglTexture, 0);\n    }\n    state.bindFramebuffer(36160, null);\n  }\n  function setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) {\n    _gl.bindRenderbuffer(36161, renderbuffer);\n    if (renderTarget.depthBuffer && !renderTarget.stencilBuffer) {\n      let glInternalFormat = 33189;\n      if (isMultisample || useMultisampledRTT(renderTarget)) {\n        const depthTexture = renderTarget.depthTexture;\n        if (depthTexture && depthTexture.isDepthTexture) {\n          if (depthTexture.type === FloatType) {\n            glInternalFormat = 36012;\n          } else if (depthTexture.type === UnsignedIntType) {\n            glInternalFormat = 33190;\n          }\n        }\n        const samples = getRenderTargetSamples(renderTarget);\n        if (useMultisampledRTT(renderTarget)) {\n          multisampledRTTExt.renderbufferStorageMultisampleEXT(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else {\n          _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        }\n      } else {\n        _gl.renderbufferStorage(36161, glInternalFormat, renderTarget.width, renderTarget.height);\n      }\n      _gl.framebufferRenderbuffer(36160, 36096, 36161, renderbuffer);\n    } else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) {\n      const samples = getRenderTargetSamples(renderTarget);\n      if (isMultisample && useMultisampledRTT(renderTarget) === false) {\n        _gl.renderbufferStorageMultisample(36161, samples, 35056, renderTarget.width, renderTarget.height);\n      } else if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.renderbufferStorageMultisampleEXT(36161, samples, 35056, renderTarget.width, renderTarget.height);\n      } else {\n        _gl.renderbufferStorage(36161, 34041, renderTarget.width, renderTarget.height);\n      }\n      _gl.framebufferRenderbuffer(36160, 33306, 36161, renderbuffer);\n    } else {\n      const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture];\n      for (let i = 0; i < textures.length; i++) {\n        const texture = textures[i];\n        const glFormat = utils.convert(texture.format, texture.encoding);\n        const glType = utils.convert(texture.type);\n        const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.encoding);\n        const samples = getRenderTargetSamples(renderTarget);\n        if (isMultisample && useMultisampledRTT(renderTarget) === false) {\n          _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else if (useMultisampledRTT(renderTarget)) {\n          multisampledRTTExt.renderbufferStorageMultisampleEXT(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else {\n          _gl.renderbufferStorage(36161, glInternalFormat, renderTarget.width, renderTarget.height);\n        }\n      }\n    }\n    _gl.bindRenderbuffer(36161, null);\n  }\n  function setupDepthTexture(framebuffer, renderTarget) {\n    const isCube = renderTarget && renderTarget.isWebGLCubeRenderTarget;\n    if (isCube)\n      throw new Error(\"Depth Texture with cube render targets is not supported\");\n    state.bindFramebuffer(36160, framebuffer);\n    if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) {\n      throw new Error(\"renderTarget.depthTexture must be an instance of THREE.DepthTexture\");\n    }\n    if (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) {\n      renderTarget.depthTexture.image.width = renderTarget.width;\n      renderTarget.depthTexture.image.height = renderTarget.height;\n      renderTarget.depthTexture.needsUpdate = true;\n    }\n    setTexture2D(renderTarget.depthTexture, 0);\n    const webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture;\n    const samples = getRenderTargetSamples(renderTarget);\n    if (renderTarget.depthTexture.format === DepthFormat) {\n      if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.framebufferTexture2DMultisampleEXT(36160, 36096, 3553, webglDepthTexture, 0, samples);\n      } else {\n        _gl.framebufferTexture2D(36160, 36096, 3553, webglDepthTexture, 0);\n      }\n    } else if (renderTarget.depthTexture.format === DepthStencilFormat) {\n      if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.framebufferTexture2DMultisampleEXT(36160, 33306, 3553, webglDepthTexture, 0, samples);\n      } else {\n        _gl.framebufferTexture2D(36160, 33306, 3553, webglDepthTexture, 0);\n      }\n    } else {\n      throw new Error(\"Unknown depthTexture format\");\n    }\n  }\n  function setupDepthRenderbuffer(renderTarget) {\n    const renderTargetProperties = properties.get(renderTarget);\n    const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n    if (renderTarget.depthTexture && !renderTargetProperties.__autoAllocateDepthBuffer) {\n      if (isCube)\n        throw new Error(\"target.depthTexture not supported in Cube render targets\");\n      setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget);\n    } else {\n      if (isCube) {\n        renderTargetProperties.__webglDepthbuffer = [];\n        for (let i = 0; i < 6; i++) {\n          state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer[i]);\n          renderTargetProperties.__webglDepthbuffer[i] = _gl.createRenderbuffer();\n          setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i], renderTarget, false);\n        }\n      } else {\n        state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer);\n        renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n        setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget, false);\n      }\n    }\n    state.bindFramebuffer(36160, null);\n  }\n  function rebindTextures(renderTarget, colorTexture, depthTexture) {\n    const renderTargetProperties = properties.get(renderTarget);\n    if (colorTexture !== void 0) {\n      setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553);\n    }\n    if (depthTexture !== void 0) {\n      setupDepthRenderbuffer(renderTarget);\n    }\n  }\n  function setupRenderTarget(renderTarget) {\n    const texture = renderTarget.texture;\n    const renderTargetProperties = properties.get(renderTarget);\n    const textureProperties = properties.get(texture);\n    renderTarget.addEventListener(\"dispose\", onRenderTargetDispose);\n    if (renderTarget.isWebGLMultipleRenderTargets !== true) {\n      if (textureProperties.__webglTexture === void 0) {\n        textureProperties.__webglTexture = _gl.createTexture();\n      }\n      textureProperties.__version = texture.version;\n      info.memory.textures++;\n    }\n    const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n    const isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true;\n    const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n    if (isCube) {\n      renderTargetProperties.__webglFramebuffer = [];\n      for (let i = 0; i < 6; i++) {\n        renderTargetProperties.__webglFramebuffer[i] = _gl.createFramebuffer();\n      }\n    } else {\n      renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n      if (isMultipleRenderTargets) {\n        if (capabilities.drawBuffers) {\n          const textures = renderTarget.texture;\n          for (let i = 0, il = textures.length; i < il; i++) {\n            const attachmentProperties = properties.get(textures[i]);\n            if (attachmentProperties.__webglTexture === void 0) {\n              attachmentProperties.__webglTexture = _gl.createTexture();\n              info.memory.textures++;\n            }\n          }\n        } else {\n          console.warn(\"THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.\");\n        }\n      }\n      if (isWebGL2 && renderTarget.samples > 0 && useMultisampledRTT(renderTarget) === false) {\n        const textures = isMultipleRenderTargets ? texture : [texture];\n        renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n        renderTargetProperties.__webglColorRenderbuffer = [];\n        state.bindFramebuffer(36160, renderTargetProperties.__webglMultisampledFramebuffer);\n        for (let i = 0; i < textures.length; i++) {\n          const texture2 = textures[i];\n          renderTargetProperties.__webglColorRenderbuffer[i] = _gl.createRenderbuffer();\n          _gl.bindRenderbuffer(36161, renderTargetProperties.__webglColorRenderbuffer[i]);\n          const glFormat = utils.convert(texture2.format, texture2.encoding);\n          const glType = utils.convert(texture2.type);\n          const glInternalFormat = getInternalFormat(texture2.internalFormat, glFormat, glType, texture2.encoding, renderTarget.isXRRenderTarget === true);\n          const samples = getRenderTargetSamples(renderTarget);\n          _gl.renderbufferStorageMultisample(36161, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n          _gl.framebufferRenderbuffer(36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[i]);\n        }\n        _gl.bindRenderbuffer(36161, null);\n        if (renderTarget.depthBuffer) {\n          renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n          setupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true);\n        }\n        state.bindFramebuffer(36160, null);\n      }\n    }\n    if (isCube) {\n      state.bindTexture(34067, textureProperties.__webglTexture);\n      setTextureParameters(34067, texture, supportsMips);\n      for (let i = 0; i < 6; i++) {\n        setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i], renderTarget, texture, 36064, 34069 + i);\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(34067);\n      }\n      state.unbindTexture();\n    } else if (isMultipleRenderTargets) {\n      const textures = renderTarget.texture;\n      for (let i = 0, il = textures.length; i < il; i++) {\n        const attachment = textures[i];\n        const attachmentProperties = properties.get(attachment);\n        state.bindTexture(3553, attachmentProperties.__webglTexture);\n        setTextureParameters(3553, attachment, supportsMips);\n        setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553);\n        if (textureNeedsGenerateMipmaps(attachment, supportsMips)) {\n          generateMipmap(3553);\n        }\n      }\n      state.unbindTexture();\n    } else {\n      let glTextureType = 3553;\n      if (renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget) {\n        if (isWebGL2) {\n          glTextureType = renderTarget.isWebGL3DRenderTarget ? 32879 : 35866;\n        } else {\n          console.error(\"THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.\");\n        }\n      }\n      state.bindTexture(glTextureType, textureProperties.__webglTexture);\n      setTextureParameters(glTextureType, texture, supportsMips);\n      setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType);\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(glTextureType);\n      }\n      state.unbindTexture();\n    }\n    if (renderTarget.depthBuffer) {\n      setupDepthRenderbuffer(renderTarget);\n    }\n  }\n  function updateRenderTargetMipmap(renderTarget) {\n    const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n    const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture];\n    for (let i = 0, il = textures.length; i < il; i++) {\n      const texture = textures[i];\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        const target2 = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n        const webglTexture = properties.get(texture).__webglTexture;\n        state.bindTexture(target2, webglTexture);\n        generateMipmap(target2);\n        state.unbindTexture();\n      }\n    }\n  }\n  function updateMultisampleRenderTarget(renderTarget) {\n    if (isWebGL2 && renderTarget.samples > 0 && useMultisampledRTT(renderTarget) === false) {\n      const textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [renderTarget.texture];\n      const width = renderTarget.width;\n      const height = renderTarget.height;\n      let mask = 16384;\n      const invalidationArray = [];\n      const depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n      const renderTargetProperties = properties.get(renderTarget);\n      const isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true;\n      if (isMultipleRenderTargets) {\n        for (let i = 0; i < textures.length; i++) {\n          state.bindFramebuffer(36160, renderTargetProperties.__webglMultisampledFramebuffer);\n          _gl.framebufferRenderbuffer(36160, 36064 + i, 36161, null);\n          state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer);\n          _gl.framebufferTexture2D(36009, 36064 + i, 3553, null, 0);\n        }\n      }\n      state.bindFramebuffer(36008, renderTargetProperties.__webglMultisampledFramebuffer);\n      state.bindFramebuffer(36009, renderTargetProperties.__webglFramebuffer);\n      for (let i = 0; i < textures.length; i++) {\n        invalidationArray.push(36064 + i);\n        if (renderTarget.depthBuffer) {\n          invalidationArray.push(depthStyle);\n        }\n        const ignoreDepthValues = renderTargetProperties.__ignoreDepthValues !== void 0 ? renderTargetProperties.__ignoreDepthValues : false;\n        if (ignoreDepthValues === false) {\n          if (renderTarget.depthBuffer)\n            mask |= 256;\n          if (renderTarget.stencilBuffer)\n            mask |= 1024;\n        }\n        if (isMultipleRenderTargets) {\n          _gl.framebufferRenderbuffer(36008, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer[i]);\n        }\n        if (ignoreDepthValues === true) {\n          _gl.invalidateFramebuffer(36008, [depthStyle]);\n          _gl.invalidateFramebuffer(36009, [depthStyle]);\n        }\n        if (isMultipleRenderTargets) {\n          const webglTexture = properties.get(textures[i]).__webglTexture;\n          _gl.framebufferTexture2D(36009, 36064, 3553, webglTexture, 0);\n        }\n        _gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, 9728);\n        if (supportsInvalidateFramebuffer) {\n          _gl.invalidateFramebuffer(36008, invalidationArray);\n        }\n      }\n      state.bindFramebuffer(36008, null);\n      state.bindFramebuffer(36009, null);\n      if (isMultipleRenderTargets) {\n        for (let i = 0; i < textures.length; i++) {\n          state.bindFramebuffer(36160, renderTargetProperties.__webglMultisampledFramebuffer);\n          _gl.framebufferRenderbuffer(36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[i]);\n          const webglTexture = properties.get(textures[i]).__webglTexture;\n          state.bindFramebuffer(36160, renderTargetProperties.__webglFramebuffer);\n          _gl.framebufferTexture2D(36009, 36064 + i, 3553, webglTexture, 0);\n        }\n      }\n      state.bindFramebuffer(36009, renderTargetProperties.__webglMultisampledFramebuffer);\n    }\n  }\n  function getRenderTargetSamples(renderTarget) {\n    return Math.min(maxSamples, renderTarget.samples);\n  }\n  function useMultisampledRTT(renderTarget) {\n    const renderTargetProperties = properties.get(renderTarget);\n    return isWebGL2 && renderTarget.samples > 0 && extensions.has(\"WEBGL_multisampled_render_to_texture\") === true && renderTargetProperties.__useRenderToTexture !== false;\n  }\n  function updateVideoTexture(texture) {\n    const frame = info.render.frame;\n    if (_videoTextures.get(texture) !== frame) {\n      _videoTextures.set(texture, frame);\n      texture.update();\n    }\n  }\n  function verifyColorSpace(texture, image) {\n    const encoding = texture.encoding;\n    const format = texture.format;\n    const type = texture.type;\n    if (texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat)\n      return image;\n    if (encoding !== LinearEncoding) {\n      if (encoding === sRGBEncoding) {\n        if (isWebGL2 === false) {\n          if (extensions.has(\"EXT_sRGB\") === true && format === RGBAFormat) {\n            texture.format = _SRGBAFormat;\n            texture.minFilter = LinearFilter;\n            texture.generateMipmaps = false;\n          } else {\n            image = ImageUtils.sRGBToLinear(image);\n          }\n        } else {\n          if (format !== RGBAFormat || type !== UnsignedByteType) {\n            console.warn(\"THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.\");\n          }\n        }\n      } else {\n        console.error(\"THREE.WebGLTextures: Unsupported texture encoding:\", encoding);\n      }\n    }\n    return image;\n  }\n  this.allocateTextureUnit = allocateTextureUnit;\n  this.resetTextureUnits = resetTextureUnits;\n  this.setTexture2D = setTexture2D;\n  this.setTexture2DArray = setTexture2DArray;\n  this.setTexture3D = setTexture3D;\n  this.setTextureCube = setTextureCube;\n  this.rebindTextures = rebindTextures;\n  this.setupRenderTarget = setupRenderTarget;\n  this.updateRenderTargetMipmap = updateRenderTargetMipmap;\n  this.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n  this.setupDepthRenderbuffer = setupDepthRenderbuffer;\n  this.setupFrameBufferTexture = setupFrameBufferTexture;\n  this.useMultisampledRTT = useMultisampledRTT;\n}\nfunction WebGLUtils(gl, extensions, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  function convert(p2, encoding = null) {\n    let extension;\n    if (p2 === UnsignedByteType)\n      return 5121;\n    if (p2 === UnsignedShort4444Type)\n      return 32819;\n    if (p2 === UnsignedShort5551Type)\n      return 32820;\n    if (p2 === ByteType)\n      return 5120;\n    if (p2 === ShortType)\n      return 5122;\n    if (p2 === UnsignedShortType)\n      return 5123;\n    if (p2 === IntType)\n      return 5124;\n    if (p2 === UnsignedIntType)\n      return 5125;\n    if (p2 === FloatType)\n      return 5126;\n    if (p2 === HalfFloatType) {\n      if (isWebGL2)\n        return 5131;\n      extension = extensions.get(\"OES_texture_half_float\");\n      if (extension !== null) {\n        return extension.HALF_FLOAT_OES;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === AlphaFormat)\n      return 6406;\n    if (p2 === RGBAFormat)\n      return 6408;\n    if (p2 === LuminanceFormat)\n      return 6409;\n    if (p2 === LuminanceAlphaFormat)\n      return 6410;\n    if (p2 === DepthFormat)\n      return 6402;\n    if (p2 === DepthStencilFormat)\n      return 34041;\n    if (p2 === RedFormat)\n      return 6403;\n    if (p2 === RGBFormat) {\n      console.warn(\"THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228\");\n      return 6408;\n    }\n    if (p2 === _SRGBAFormat) {\n      extension = extensions.get(\"EXT_sRGB\");\n      if (extension !== null) {\n        return extension.SRGB_ALPHA_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RedIntegerFormat)\n      return 36244;\n    if (p2 === RGFormat)\n      return 33319;\n    if (p2 === RGIntegerFormat)\n      return 33320;\n    if (p2 === RGBAIntegerFormat)\n      return 36249;\n    if (p2 === RGB_S3TC_DXT1_Format || p2 === RGBA_S3TC_DXT1_Format || p2 === RGBA_S3TC_DXT3_Format || p2 === RGBA_S3TC_DXT5_Format) {\n      if (encoding === sRGBEncoding) {\n        extension = extensions.get(\"WEBGL_compressed_texture_s3tc_srgb\");\n        if (extension !== null) {\n          if (p2 === RGB_S3TC_DXT1_Format)\n            return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n          if (p2 === RGBA_S3TC_DXT1_Format)\n            return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n          if (p2 === RGBA_S3TC_DXT3_Format)\n            return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n          if (p2 === RGBA_S3TC_DXT5_Format)\n            return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n        } else {\n          return null;\n        }\n      } else {\n        extension = extensions.get(\"WEBGL_compressed_texture_s3tc\");\n        if (extension !== null) {\n          if (p2 === RGB_S3TC_DXT1_Format)\n            return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n          if (p2 === RGBA_S3TC_DXT1_Format)\n            return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n          if (p2 === RGBA_S3TC_DXT3_Format)\n            return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n          if (p2 === RGBA_S3TC_DXT5_Format)\n            return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n        } else {\n          return null;\n        }\n      }\n    }\n    if (p2 === RGB_PVRTC_4BPPV1_Format || p2 === RGB_PVRTC_2BPPV1_Format || p2 === RGBA_PVRTC_4BPPV1_Format || p2 === RGBA_PVRTC_2BPPV1_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_pvrtc\");\n      if (extension !== null) {\n        if (p2 === RGB_PVRTC_4BPPV1_Format)\n          return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n        if (p2 === RGB_PVRTC_2BPPV1_Format)\n          return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n        if (p2 === RGBA_PVRTC_4BPPV1_Format)\n          return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n        if (p2 === RGBA_PVRTC_2BPPV1_Format)\n          return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RGB_ETC1_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_etc1\");\n      if (extension !== null) {\n        return extension.COMPRESSED_RGB_ETC1_WEBGL;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RGB_ETC2_Format || p2 === RGBA_ETC2_EAC_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_etc\");\n      if (extension !== null) {\n        if (p2 === RGB_ETC2_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n        if (p2 === RGBA_ETC2_EAC_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RGBA_ASTC_4x4_Format || p2 === RGBA_ASTC_5x4_Format || p2 === RGBA_ASTC_5x5_Format || p2 === RGBA_ASTC_6x5_Format || p2 === RGBA_ASTC_6x6_Format || p2 === RGBA_ASTC_8x5_Format || p2 === RGBA_ASTC_8x6_Format || p2 === RGBA_ASTC_8x8_Format || p2 === RGBA_ASTC_10x5_Format || p2 === RGBA_ASTC_10x6_Format || p2 === RGBA_ASTC_10x8_Format || p2 === RGBA_ASTC_10x10_Format || p2 === RGBA_ASTC_12x10_Format || p2 === RGBA_ASTC_12x12_Format) {\n      extension = extensions.get(\"WEBGL_compressed_texture_astc\");\n      if (extension !== null) {\n        if (p2 === RGBA_ASTC_4x4_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n        if (p2 === RGBA_ASTC_5x4_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n        if (p2 === RGBA_ASTC_5x5_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n        if (p2 === RGBA_ASTC_6x5_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n        if (p2 === RGBA_ASTC_6x6_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n        if (p2 === RGBA_ASTC_8x5_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n        if (p2 === RGBA_ASTC_8x6_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n        if (p2 === RGBA_ASTC_8x8_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n        if (p2 === RGBA_ASTC_10x5_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n        if (p2 === RGBA_ASTC_10x6_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n        if (p2 === RGBA_ASTC_10x8_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n        if (p2 === RGBA_ASTC_10x10_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n        if (p2 === RGBA_ASTC_12x10_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n        if (p2 === RGBA_ASTC_12x12_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RGBA_BPTC_Format) {\n      extension = extensions.get(\"EXT_texture_compression_bptc\");\n      if (extension !== null) {\n        if (p2 === RGBA_BPTC_Format)\n          return encoding === sRGBEncoding ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === UnsignedInt248Type) {\n      if (isWebGL2)\n        return 34042;\n      extension = extensions.get(\"WEBGL_depth_texture\");\n      if (extension !== null) {\n        return extension.UNSIGNED_INT_24_8_WEBGL;\n      } else {\n        return null;\n      }\n    }\n    return gl[p2] !== void 0 ? gl[p2] : null;\n  }\n  return { convert };\n}\nvar ArrayCamera = class extends PerspectiveCamera {\n  constructor(array = []) {\n    super();\n    this.isArrayCamera = true;\n    this.cameras = array;\n  }\n};\nvar Group = class extends Object3D {\n  constructor() {\n    super();\n    this.isGroup = true;\n    this.type = \"Group\";\n  }\n};\nvar _moveEvent = { type: \"move\" };\nvar WebXRController = class {\n  constructor() {\n    this._targetRay = null;\n    this._grip = null;\n    this._hand = null;\n  }\n  getHandSpace() {\n    if (this._hand === null) {\n      this._hand = new Group();\n      this._hand.matrixAutoUpdate = false;\n      this._hand.visible = false;\n      this._hand.joints = {};\n      this._hand.inputState = { pinching: false };\n    }\n    return this._hand;\n  }\n  getTargetRaySpace() {\n    if (this._targetRay === null) {\n      this._targetRay = new Group();\n      this._targetRay.matrixAutoUpdate = false;\n      this._targetRay.visible = false;\n      this._targetRay.hasLinearVelocity = false;\n      this._targetRay.linearVelocity = new Vector3();\n      this._targetRay.hasAngularVelocity = false;\n      this._targetRay.angularVelocity = new Vector3();\n    }\n    return this._targetRay;\n  }\n  getGripSpace() {\n    if (this._grip === null) {\n      this._grip = new Group();\n      this._grip.matrixAutoUpdate = false;\n      this._grip.visible = false;\n      this._grip.hasLinearVelocity = false;\n      this._grip.linearVelocity = new Vector3();\n      this._grip.hasAngularVelocity = false;\n      this._grip.angularVelocity = new Vector3();\n    }\n    return this._grip;\n  }\n  dispatchEvent(event) {\n    if (this._targetRay !== null) {\n      this._targetRay.dispatchEvent(event);\n    }\n    if (this._grip !== null) {\n      this._grip.dispatchEvent(event);\n    }\n    if (this._hand !== null) {\n      this._hand.dispatchEvent(event);\n    }\n    return this;\n  }\n  disconnect(inputSource) {\n    this.dispatchEvent({ type: \"disconnected\", data: inputSource });\n    if (this._targetRay !== null) {\n      this._targetRay.visible = false;\n    }\n    if (this._grip !== null) {\n      this._grip.visible = false;\n    }\n    if (this._hand !== null) {\n      this._hand.visible = false;\n    }\n    return this;\n  }\n  update(inputSource, frame, referenceSpace) {\n    let inputPose = null;\n    let gripPose = null;\n    let handPose = null;\n    const targetRay = this._targetRay;\n    const grip = this._grip;\n    const hand = this._hand;\n    if (inputSource && frame.session.visibilityState !== \"visible-blurred\") {\n      if (hand && inputSource.hand) {\n        handPose = true;\n        for (const inputjoint of inputSource.hand.values()) {\n          const jointPose = frame.getJointPose(inputjoint, referenceSpace);\n          if (hand.joints[inputjoint.jointName] === void 0) {\n            const joint2 = new Group();\n            joint2.matrixAutoUpdate = false;\n            joint2.visible = false;\n            hand.joints[inputjoint.jointName] = joint2;\n            hand.add(joint2);\n          }\n          const joint = hand.joints[inputjoint.jointName];\n          if (jointPose !== null) {\n            joint.matrix.fromArray(jointPose.transform.matrix);\n            joint.matrix.decompose(joint.position, joint.rotation, joint.scale);\n            joint.jointRadius = jointPose.radius;\n          }\n          joint.visible = jointPose !== null;\n        }\n        const indexTip = hand.joints[\"index-finger-tip\"];\n        const thumbTip = hand.joints[\"thumb-tip\"];\n        const distance = indexTip.position.distanceTo(thumbTip.position);\n        const distanceToPinch = 0.02;\n        const threshold = 5e-3;\n        if (hand.inputState.pinching && distance > distanceToPinch + threshold) {\n          hand.inputState.pinching = false;\n          this.dispatchEvent({\n            type: \"pinchend\",\n            handedness: inputSource.handedness,\n            target: this\n          });\n        } else if (!hand.inputState.pinching && distance <= distanceToPinch - threshold) {\n          hand.inputState.pinching = true;\n          this.dispatchEvent({\n            type: \"pinchstart\",\n            handedness: inputSource.handedness,\n            target: this\n          });\n        }\n      } else {\n        if (grip !== null && inputSource.gripSpace) {\n          gripPose = frame.getPose(inputSource.gripSpace, referenceSpace);\n          if (gripPose !== null) {\n            grip.matrix.fromArray(gripPose.transform.matrix);\n            grip.matrix.decompose(grip.position, grip.rotation, grip.scale);\n            if (gripPose.linearVelocity) {\n              grip.hasLinearVelocity = true;\n              grip.linearVelocity.copy(gripPose.linearVelocity);\n            } else {\n              grip.hasLinearVelocity = false;\n            }\n            if (gripPose.angularVelocity) {\n              grip.hasAngularVelocity = true;\n              grip.angularVelocity.copy(gripPose.angularVelocity);\n            } else {\n              grip.hasAngularVelocity = false;\n            }\n          }\n        }\n      }\n      if (targetRay !== null) {\n        inputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace);\n        if (inputPose === null && gripPose !== null) {\n          inputPose = gripPose;\n        }\n        if (inputPose !== null) {\n          targetRay.matrix.fromArray(inputPose.transform.matrix);\n          targetRay.matrix.decompose(targetRay.position, targetRay.rotation, targetRay.scale);\n          if (inputPose.linearVelocity) {\n            targetRay.hasLinearVelocity = true;\n            targetRay.linearVelocity.copy(inputPose.linearVelocity);\n          } else {\n            targetRay.hasLinearVelocity = false;\n          }\n          if (inputPose.angularVelocity) {\n            targetRay.hasAngularVelocity = true;\n            targetRay.angularVelocity.copy(inputPose.angularVelocity);\n          } else {\n            targetRay.hasAngularVelocity = false;\n          }\n          this.dispatchEvent(_moveEvent);\n        }\n      }\n    }\n    if (targetRay !== null) {\n      targetRay.visible = inputPose !== null;\n    }\n    if (grip !== null) {\n      grip.visible = gripPose !== null;\n    }\n    if (hand !== null) {\n      hand.visible = handPose !== null;\n    }\n    return this;\n  }\n};\nvar DepthTexture = class extends Texture {\n  constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n    format = format !== void 0 ? format : DepthFormat;\n    if (format !== DepthFormat && format !== DepthStencilFormat) {\n      throw new Error(\"DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat\");\n    }\n    if (type === void 0 && format === DepthFormat)\n      type = UnsignedIntType;\n    if (type === void 0 && format === DepthStencilFormat)\n      type = UnsignedInt248Type;\n    super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n    this.isDepthTexture = true;\n    this.image = { width, height };\n    this.magFilter = magFilter !== void 0 ? magFilter : NearestFilter;\n    this.minFilter = minFilter !== void 0 ? minFilter : NearestFilter;\n    this.flipY = false;\n    this.generateMipmaps = false;\n  }\n};\nvar WebXRManager = class extends EventDispatcher {\n  constructor(renderer, gl) {\n    super();\n    const scope = this;\n    let session = null;\n    let framebufferScaleFactor = 1;\n    let referenceSpace = null;\n    let referenceSpaceType = \"local-floor\";\n    let customReferenceSpace = null;\n    let pose = null;\n    let glBinding = null;\n    let glProjLayer = null;\n    let glBaseLayer = null;\n    let xrFrame = null;\n    const attributes = gl.getContextAttributes();\n    let initialRenderTarget = null;\n    let newRenderTarget = null;\n    const controllers = [];\n    const controllerInputSources = [];\n    const cameraL = new PerspectiveCamera();\n    cameraL.layers.enable(1);\n    cameraL.viewport = new Vector4();\n    const cameraR = new PerspectiveCamera();\n    cameraR.layers.enable(2);\n    cameraR.viewport = new Vector4();\n    const cameras = [cameraL, cameraR];\n    const cameraVR = new ArrayCamera();\n    cameraVR.layers.enable(1);\n    cameraVR.layers.enable(2);\n    let _currentDepthNear = null;\n    let _currentDepthFar = null;\n    this.cameraAutoUpdate = true;\n    this.enabled = false;\n    this.isPresenting = false;\n    this.getController = function(index) {\n      let controller = controllers[index];\n      if (controller === void 0) {\n        controller = new WebXRController();\n        controllers[index] = controller;\n      }\n      return controller.getTargetRaySpace();\n    };\n    this.getControllerGrip = function(index) {\n      let controller = controllers[index];\n      if (controller === void 0) {\n        controller = new WebXRController();\n        controllers[index] = controller;\n      }\n      return controller.getGripSpace();\n    };\n    this.getHand = function(index) {\n      let controller = controllers[index];\n      if (controller === void 0) {\n        controller = new WebXRController();\n        controllers[index] = controller;\n      }\n      return controller.getHandSpace();\n    };\n    function onSessionEvent(event) {\n      const controllerIndex = controllerInputSources.indexOf(event.inputSource);\n      if (controllerIndex === -1) {\n        return;\n      }\n      const controller = controllers[controllerIndex];\n      if (controller !== void 0) {\n        controller.dispatchEvent({ type: event.type, data: event.inputSource });\n      }\n    }\n    function onSessionEnd() {\n      session.removeEventListener(\"select\", onSessionEvent);\n      session.removeEventListener(\"selectstart\", onSessionEvent);\n      session.removeEventListener(\"selectend\", onSessionEvent);\n      session.removeEventListener(\"squeeze\", onSessionEvent);\n      session.removeEventListener(\"squeezestart\", onSessionEvent);\n      session.removeEventListener(\"squeezeend\", onSessionEvent);\n      session.removeEventListener(\"end\", onSessionEnd);\n      session.removeEventListener(\"inputsourceschange\", onInputSourcesChange);\n      for (let i = 0; i < controllers.length; i++) {\n        const inputSource = controllerInputSources[i];\n        if (inputSource === null)\n          continue;\n        controllerInputSources[i] = null;\n        controllers[i].disconnect(inputSource);\n      }\n      _currentDepthNear = null;\n      _currentDepthFar = null;\n      renderer.setRenderTarget(initialRenderTarget);\n      glBaseLayer = null;\n      glProjLayer = null;\n      glBinding = null;\n      session = null;\n      newRenderTarget = null;\n      animation.stop();\n      scope.isPresenting = false;\n      scope.dispatchEvent({ type: \"sessionend\" });\n    }\n    this.setFramebufferScaleFactor = function(value) {\n      framebufferScaleFactor = value;\n      if (scope.isPresenting === true) {\n        console.warn(\"THREE.WebXRManager: Cannot change framebuffer scale while presenting.\");\n      }\n    };\n    this.setReferenceSpaceType = function(value) {\n      referenceSpaceType = value;\n      if (scope.isPresenting === true) {\n        console.warn(\"THREE.WebXRManager: Cannot change reference space type while presenting.\");\n      }\n    };\n    this.getReferenceSpace = function() {\n      return customReferenceSpace || referenceSpace;\n    };\n    this.setReferenceSpace = function(space) {\n      customReferenceSpace = space;\n    };\n    this.getBaseLayer = function() {\n      return glProjLayer !== null ? glProjLayer : glBaseLayer;\n    };\n    this.getBinding = function() {\n      return glBinding;\n    };\n    this.getFrame = function() {\n      return xrFrame;\n    };\n    this.getSession = function() {\n      return session;\n    };\n    this.setSession = async function(value) {\n      session = value;\n      if (session !== null) {\n        initialRenderTarget = renderer.getRenderTarget();\n        session.addEventListener(\"select\", onSessionEvent);\n        session.addEventListener(\"selectstart\", onSessionEvent);\n        session.addEventListener(\"selectend\", onSessionEvent);\n        session.addEventListener(\"squeeze\", onSessionEvent);\n        session.addEventListener(\"squeezestart\", onSessionEvent);\n        session.addEventListener(\"squeezeend\", onSessionEvent);\n        session.addEventListener(\"end\", onSessionEnd);\n        session.addEventListener(\"inputsourceschange\", onInputSourcesChange);\n        if (attributes.xrCompatible !== true) {\n          await gl.makeXRCompatible();\n        }\n        if (session.renderState.layers === void 0 || renderer.capabilities.isWebGL2 === false) {\n          const layerInit = {\n            antialias: session.renderState.layers === void 0 ? attributes.antialias : true,\n            alpha: attributes.alpha,\n            depth: attributes.depth,\n            stencil: attributes.stencil,\n            framebufferScaleFactor\n          };\n          glBaseLayer = new XRWebGLLayer(session, gl, layerInit);\n          session.updateRenderState({ baseLayer: glBaseLayer });\n          newRenderTarget = new WebGLRenderTarget(\n            glBaseLayer.framebufferWidth,\n            glBaseLayer.framebufferHeight,\n            {\n              format: RGBAFormat,\n              type: UnsignedByteType,\n              encoding: renderer.outputEncoding,\n              stencilBuffer: attributes.stencil\n            }\n          );\n        } else {\n          let depthFormat = null;\n          let depthType = null;\n          let glDepthFormat = null;\n          if (attributes.depth) {\n            glDepthFormat = attributes.stencil ? 35056 : 33190;\n            depthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n            depthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n          }\n          const projectionlayerInit = {\n            colorFormat: 32856,\n            depthFormat: glDepthFormat,\n            scaleFactor: framebufferScaleFactor\n          };\n          glBinding = new XRWebGLBinding(session, gl);\n          glProjLayer = glBinding.createProjectionLayer(projectionlayerInit);\n          session.updateRenderState({ layers: [glProjLayer] });\n          newRenderTarget = new WebGLRenderTarget(\n            glProjLayer.textureWidth,\n            glProjLayer.textureHeight,\n            {\n              format: RGBAFormat,\n              type: UnsignedByteType,\n              depthTexture: new DepthTexture(glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, void 0, void 0, void 0, void 0, void 0, void 0, depthFormat),\n              stencilBuffer: attributes.stencil,\n              encoding: renderer.outputEncoding,\n              samples: attributes.antialias ? 4 : 0\n            }\n          );\n          const renderTargetProperties = renderer.properties.get(newRenderTarget);\n          renderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n        }\n        newRenderTarget.isXRRenderTarget = true;\n        this.setFoveation(1);\n        customReferenceSpace = null;\n        referenceSpace = await session.requestReferenceSpace(referenceSpaceType);\n        animation.setContext(session);\n        animation.start();\n        scope.isPresenting = true;\n        scope.dispatchEvent({ type: \"sessionstart\" });\n      }\n    };\n    function onInputSourcesChange(event) {\n      for (let i = 0; i < event.removed.length; i++) {\n        const inputSource = event.removed[i];\n        const index = controllerInputSources.indexOf(inputSource);\n        if (index >= 0) {\n          controllerInputSources[index] = null;\n          controllers[index].dispatchEvent({ type: \"disconnected\", data: inputSource });\n        }\n      }\n      for (let i = 0; i < event.added.length; i++) {\n        const inputSource = event.added[i];\n        let controllerIndex = controllerInputSources.indexOf(inputSource);\n        if (controllerIndex === -1) {\n          for (let i2 = 0; i2 < controllers.length; i2++) {\n            if (i2 >= controllerInputSources.length) {\n              controllerInputSources.push(inputSource);\n              controllerIndex = i2;\n              break;\n            } else if (controllerInputSources[i2] === null) {\n              controllerInputSources[i2] = inputSource;\n              controllerIndex = i2;\n              break;\n            }\n          }\n          if (controllerIndex === -1)\n            break;\n        }\n        const controller = controllers[controllerIndex];\n        if (controller) {\n          controller.dispatchEvent({ type: \"connected\", data: inputSource });\n        }\n      }\n    }\n    const cameraLPos = new Vector3();\n    const cameraRPos = new Vector3();\n    function setProjectionFromUnion(camera2, cameraL2, cameraR2) {\n      cameraLPos.setFromMatrixPosition(cameraL2.matrixWorld);\n      cameraRPos.setFromMatrixPosition(cameraR2.matrixWorld);\n      const ipd = cameraLPos.distanceTo(cameraRPos);\n      const projL = cameraL2.projectionMatrix.elements;\n      const projR = cameraR2.projectionMatrix.elements;\n      const near = projL[14] / (projL[10] - 1);\n      const far = projL[14] / (projL[10] + 1);\n      const topFov = (projL[9] + 1) / projL[5];\n      const bottomFov = (projL[9] - 1) / projL[5];\n      const leftFov = (projL[8] - 1) / projL[0];\n      const rightFov = (projR[8] + 1) / projR[0];\n      const left = near * leftFov;\n      const right = near * rightFov;\n      const zOffset = ipd / (-leftFov + rightFov);\n      const xOffset = zOffset * -leftFov;\n      cameraL2.matrixWorld.decompose(camera2.position, camera2.quaternion, camera2.scale);\n      camera2.translateX(xOffset);\n      camera2.translateZ(zOffset);\n      camera2.matrixWorld.compose(camera2.position, camera2.quaternion, camera2.scale);\n      camera2.matrixWorldInverse.copy(camera2.matrixWorld).invert();\n      const near2 = near + zOffset;\n      const far2 = far + zOffset;\n      const left2 = left - xOffset;\n      const right2 = right + (ipd - xOffset);\n      const top2 = topFov * far / far2 * near2;\n      const bottom2 = bottomFov * far / far2 * near2;\n      camera2.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2);\n    }\n    function updateCamera(camera2, parent) {\n      if (parent === null) {\n        camera2.matrixWorld.copy(camera2.matrix);\n      } else {\n        camera2.matrixWorld.multiplyMatrices(parent.matrixWorld, camera2.matrix);\n      }\n      camera2.matrixWorldInverse.copy(camera2.matrixWorld).invert();\n    }\n    this.updateCamera = function(camera2) {\n      if (session === null)\n        return;\n      cameraVR.near = cameraR.near = cameraL.near = camera2.near;\n      cameraVR.far = cameraR.far = cameraL.far = camera2.far;\n      if (_currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far) {\n        session.updateRenderState({\n          depthNear: cameraVR.near,\n          depthFar: cameraVR.far\n        });\n        _currentDepthNear = cameraVR.near;\n        _currentDepthFar = cameraVR.far;\n      }\n      const parent = camera2.parent;\n      const cameras2 = cameraVR.cameras;\n      updateCamera(cameraVR, parent);\n      for (let i = 0; i < cameras2.length; i++) {\n        updateCamera(cameras2[i], parent);\n      }\n      cameraVR.matrixWorld.decompose(cameraVR.position, cameraVR.quaternion, cameraVR.scale);\n      camera2.matrix.copy(cameraVR.matrix);\n      camera2.matrix.decompose(camera2.position, camera2.quaternion, camera2.scale);\n      const children = camera2.children;\n      for (let i = 0, l = children.length; i < l; i++) {\n        children[i].updateMatrixWorld(true);\n      }\n      if (cameras2.length === 2) {\n        setProjectionFromUnion(cameraVR, cameraL, cameraR);\n      } else {\n        cameraVR.projectionMatrix.copy(cameraL.projectionMatrix);\n      }\n    };\n    this.getCamera = function() {\n      return cameraVR;\n    };\n    this.getFoveation = function() {\n      if (glProjLayer !== null) {\n        return glProjLayer.fixedFoveation;\n      }\n      if (glBaseLayer !== null) {\n        return glBaseLayer.fixedFoveation;\n      }\n      return void 0;\n    };\n    this.setFoveation = function(foveation) {\n      if (glProjLayer !== null) {\n        glProjLayer.fixedFoveation = foveation;\n      }\n      if (glBaseLayer !== null && glBaseLayer.fixedFoveation !== void 0) {\n        glBaseLayer.fixedFoveation = foveation;\n      }\n    };\n    let onAnimationFrameCallback = null;\n    function onAnimationFrame(time, frame) {\n      pose = frame.getViewerPose(customReferenceSpace || referenceSpace);\n      xrFrame = frame;\n      if (pose !== null) {\n        const views = pose.views;\n        if (glBaseLayer !== null) {\n          renderer.setRenderTargetFramebuffer(newRenderTarget, glBaseLayer.framebuffer);\n          renderer.setRenderTarget(newRenderTarget);\n        }\n        let cameraVRNeedsUpdate = false;\n        if (views.length !== cameraVR.cameras.length) {\n          cameraVR.cameras.length = 0;\n          cameraVRNeedsUpdate = true;\n        }\n        for (let i = 0; i < views.length; i++) {\n          const view2 = views[i];\n          let viewport = null;\n          if (glBaseLayer !== null) {\n            viewport = glBaseLayer.getViewport(view2);\n          } else {\n            const glSubImage = glBinding.getViewSubImage(glProjLayer, view2);\n            viewport = glSubImage.viewport;\n            if (i === 0) {\n              renderer.setRenderTargetTextures(\n                newRenderTarget,\n                glSubImage.colorTexture,\n                glProjLayer.ignoreDepthValues ? void 0 : glSubImage.depthStencilTexture\n              );\n              renderer.setRenderTarget(newRenderTarget);\n            }\n          }\n          let camera2 = cameras[i];\n          if (camera2 === void 0) {\n            camera2 = new PerspectiveCamera();\n            camera2.layers.enable(i);\n            camera2.viewport = new Vector4();\n            cameras[i] = camera2;\n          }\n          camera2.matrix.fromArray(view2.transform.matrix);\n          camera2.projectionMatrix.fromArray(view2.projectionMatrix);\n          camera2.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height);\n          if (i === 0) {\n            cameraVR.matrix.copy(camera2.matrix);\n          }\n          if (cameraVRNeedsUpdate === true) {\n            cameraVR.cameras.push(camera2);\n          }\n        }\n      }\n      for (let i = 0; i < controllers.length; i++) {\n        const inputSource = controllerInputSources[i];\n        const controller = controllers[i];\n        if (inputSource !== null && controller !== void 0) {\n          controller.update(inputSource, frame, customReferenceSpace || referenceSpace);\n        }\n      }\n      if (onAnimationFrameCallback)\n        onAnimationFrameCallback(time, frame);\n      xrFrame = null;\n    }\n    const animation = new WebGLAnimation();\n    animation.setAnimationLoop(onAnimationFrame);\n    this.setAnimationLoop = function(callback) {\n      onAnimationFrameCallback = callback;\n    };\n    this.dispose = function() {\n    };\n  }\n};\nfunction WebGLMaterials(renderer, properties) {\n  function refreshFogUniforms(uniforms, fog) {\n    uniforms.fogColor.value.copy(fog.color);\n    if (fog.isFog) {\n      uniforms.fogNear.value = fog.near;\n      uniforms.fogFar.value = fog.far;\n    } else if (fog.isFogExp2) {\n      uniforms.fogDensity.value = fog.density;\n    }\n  }\n  function refreshMaterialUniforms(uniforms, material, pixelRatio, height, transmissionRenderTarget) {\n    if (material.isMeshBasicMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshLambertMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshToonMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsToon(uniforms, material);\n    } else if (material.isMeshPhongMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsPhong(uniforms, material);\n    } else if (material.isMeshStandardMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsStandard(uniforms, material);\n      if (material.isMeshPhysicalMaterial) {\n        refreshUniformsPhysical(uniforms, material, transmissionRenderTarget);\n      }\n    } else if (material.isMeshMatcapMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsMatcap(uniforms, material);\n    } else if (material.isMeshDepthMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshDistanceMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsDistance(uniforms, material);\n    } else if (material.isMeshNormalMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isLineBasicMaterial) {\n      refreshUniformsLine(uniforms, material);\n      if (material.isLineDashedMaterial) {\n        refreshUniformsDash(uniforms, material);\n      }\n    } else if (material.isPointsMaterial) {\n      refreshUniformsPoints(uniforms, material, pixelRatio, height);\n    } else if (material.isSpriteMaterial) {\n      refreshUniformsSprites(uniforms, material);\n    } else if (material.isShadowMaterial) {\n      uniforms.color.value.copy(material.color);\n      uniforms.opacity.value = material.opacity;\n    } else if (material.isShaderMaterial) {\n      material.uniformsNeedUpdate = false;\n    }\n  }\n  function refreshUniformsCommon(uniforms, material) {\n    uniforms.opacity.value = material.opacity;\n    if (material.color) {\n      uniforms.diffuse.value.copy(material.color);\n    }\n    if (material.emissive) {\n      uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n    }\n    if (material.map) {\n      uniforms.map.value = material.map;\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n    }\n    if (material.bumpMap) {\n      uniforms.bumpMap.value = material.bumpMap;\n      uniforms.bumpScale.value = material.bumpScale;\n      if (material.side === BackSide)\n        uniforms.bumpScale.value *= -1;\n    }\n    if (material.displacementMap) {\n      uniforms.displacementMap.value = material.displacementMap;\n      uniforms.displacementScale.value = material.displacementScale;\n      uniforms.displacementBias.value = material.displacementBias;\n    }\n    if (material.emissiveMap) {\n      uniforms.emissiveMap.value = material.emissiveMap;\n    }\n    if (material.normalMap) {\n      uniforms.normalMap.value = material.normalMap;\n      uniforms.normalScale.value.copy(material.normalScale);\n      if (material.side === BackSide)\n        uniforms.normalScale.value.negate();\n    }\n    if (material.specularMap) {\n      uniforms.specularMap.value = material.specularMap;\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n    const envMap = properties.get(material).envMap;\n    if (envMap) {\n      uniforms.envMap.value = envMap;\n      uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n      uniforms.reflectivity.value = material.reflectivity;\n      uniforms.ior.value = material.ior;\n      uniforms.refractionRatio.value = material.refractionRatio;\n    }\n    if (material.lightMap) {\n      uniforms.lightMap.value = material.lightMap;\n      const scaleFactor = renderer.physicallyCorrectLights !== true ? Math.PI : 1;\n      uniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n    }\n    if (material.aoMap) {\n      uniforms.aoMap.value = material.aoMap;\n      uniforms.aoMapIntensity.value = material.aoMapIntensity;\n    }\n    let uvScaleMap;\n    if (material.map) {\n      uvScaleMap = material.map;\n    } else if (material.specularMap) {\n      uvScaleMap = material.specularMap;\n    } else if (material.displacementMap) {\n      uvScaleMap = material.displacementMap;\n    } else if (material.normalMap) {\n      uvScaleMap = material.normalMap;\n    } else if (material.bumpMap) {\n      uvScaleMap = material.bumpMap;\n    } else if (material.roughnessMap) {\n      uvScaleMap = material.roughnessMap;\n    } else if (material.metalnessMap) {\n      uvScaleMap = material.metalnessMap;\n    } else if (material.alphaMap) {\n      uvScaleMap = material.alphaMap;\n    } else if (material.emissiveMap) {\n      uvScaleMap = material.emissiveMap;\n    } else if (material.clearcoatMap) {\n      uvScaleMap = material.clearcoatMap;\n    } else if (material.clearcoatNormalMap) {\n      uvScaleMap = material.clearcoatNormalMap;\n    } else if (material.clearcoatRoughnessMap) {\n      uvScaleMap = material.clearcoatRoughnessMap;\n    } else if (material.iridescenceMap) {\n      uvScaleMap = material.iridescenceMap;\n    } else if (material.iridescenceThicknessMap) {\n      uvScaleMap = material.iridescenceThicknessMap;\n    } else if (material.specularIntensityMap) {\n      uvScaleMap = material.specularIntensityMap;\n    } else if (material.specularColorMap) {\n      uvScaleMap = material.specularColorMap;\n    } else if (material.transmissionMap) {\n      uvScaleMap = material.transmissionMap;\n    } else if (material.thicknessMap) {\n      uvScaleMap = material.thicknessMap;\n    } else if (material.sheenColorMap) {\n      uvScaleMap = material.sheenColorMap;\n    } else if (material.sheenRoughnessMap) {\n      uvScaleMap = material.sheenRoughnessMap;\n    }\n    if (uvScaleMap !== void 0) {\n      if (uvScaleMap.isWebGLRenderTarget) {\n        uvScaleMap = uvScaleMap.texture;\n      }\n      if (uvScaleMap.matrixAutoUpdate === true) {\n        uvScaleMap.updateMatrix();\n      }\n      uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n    }\n    let uv2ScaleMap;\n    if (material.aoMap) {\n      uv2ScaleMap = material.aoMap;\n    } else if (material.lightMap) {\n      uv2ScaleMap = material.lightMap;\n    }\n    if (uv2ScaleMap !== void 0) {\n      if (uv2ScaleMap.isWebGLRenderTarget) {\n        uv2ScaleMap = uv2ScaleMap.texture;\n      }\n      if (uv2ScaleMap.matrixAutoUpdate === true) {\n        uv2ScaleMap.updateMatrix();\n      }\n      uniforms.uv2Transform.value.copy(uv2ScaleMap.matrix);\n    }\n  }\n  function refreshUniformsLine(uniforms, material) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n  }\n  function refreshUniformsDash(uniforms, material) {\n    uniforms.dashSize.value = material.dashSize;\n    uniforms.totalSize.value = material.dashSize + material.gapSize;\n    uniforms.scale.value = material.scale;\n  }\n  function refreshUniformsPoints(uniforms, material, pixelRatio, height) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    uniforms.size.value = material.size * pixelRatio;\n    uniforms.scale.value = height * 0.5;\n    if (material.map) {\n      uniforms.map.value = material.map;\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n    let uvScaleMap;\n    if (material.map) {\n      uvScaleMap = material.map;\n    } else if (material.alphaMap) {\n      uvScaleMap = material.alphaMap;\n    }\n    if (uvScaleMap !== void 0) {\n      if (uvScaleMap.matrixAutoUpdate === true) {\n        uvScaleMap.updateMatrix();\n      }\n      uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n    }\n  }\n  function refreshUniformsSprites(uniforms, material) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    uniforms.rotation.value = material.rotation;\n    if (material.map) {\n      uniforms.map.value = material.map;\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n    let uvScaleMap;\n    if (material.map) {\n      uvScaleMap = material.map;\n    } else if (material.alphaMap) {\n      uvScaleMap = material.alphaMap;\n    }\n    if (uvScaleMap !== void 0) {\n      if (uvScaleMap.matrixAutoUpdate === true) {\n        uvScaleMap.updateMatrix();\n      }\n      uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n    }\n  }\n  function refreshUniformsPhong(uniforms, material) {\n    uniforms.specular.value.copy(material.specular);\n    uniforms.shininess.value = Math.max(material.shininess, 1e-4);\n  }\n  function refreshUniformsToon(uniforms, material) {\n    if (material.gradientMap) {\n      uniforms.gradientMap.value = material.gradientMap;\n    }\n  }\n  function refreshUniformsStandard(uniforms, material) {\n    uniforms.roughness.value = material.roughness;\n    uniforms.metalness.value = material.metalness;\n    if (material.roughnessMap) {\n      uniforms.roughnessMap.value = material.roughnessMap;\n    }\n    if (material.metalnessMap) {\n      uniforms.metalnessMap.value = material.metalnessMap;\n    }\n    const envMap = properties.get(material).envMap;\n    if (envMap) {\n      uniforms.envMapIntensity.value = material.envMapIntensity;\n    }\n  }\n  function refreshUniformsPhysical(uniforms, material, transmissionRenderTarget) {\n    uniforms.ior.value = material.ior;\n    if (material.sheen > 0) {\n      uniforms.sheenColor.value.copy(material.sheenColor).multiplyScalar(material.sheen);\n      uniforms.sheenRoughness.value = material.sheenRoughness;\n      if (material.sheenColorMap) {\n        uniforms.sheenColorMap.value = material.sheenColorMap;\n      }\n      if (material.sheenRoughnessMap) {\n        uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n      }\n    }\n    if (material.clearcoat > 0) {\n      uniforms.clearcoat.value = material.clearcoat;\n      uniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n      if (material.clearcoatMap) {\n        uniforms.clearcoatMap.value = material.clearcoatMap;\n      }\n      if (material.clearcoatRoughnessMap) {\n        uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n      }\n      if (material.clearcoatNormalMap) {\n        uniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale);\n        uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n        if (material.side === BackSide) {\n          uniforms.clearcoatNormalScale.value.negate();\n        }\n      }\n    }\n    if (material.iridescence > 0) {\n      uniforms.iridescence.value = material.iridescence;\n      uniforms.iridescenceIOR.value = material.iridescenceIOR;\n      uniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[0];\n      uniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[1];\n      if (material.iridescenceMap) {\n        uniforms.iridescenceMap.value = material.iridescenceMap;\n      }\n      if (material.iridescenceThicknessMap) {\n        uniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n      }\n    }\n    if (material.transmission > 0) {\n      uniforms.transmission.value = material.transmission;\n      uniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n      uniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width, transmissionRenderTarget.height);\n      if (material.transmissionMap) {\n        uniforms.transmissionMap.value = material.transmissionMap;\n      }\n      uniforms.thickness.value = material.thickness;\n      if (material.thicknessMap) {\n        uniforms.thicknessMap.value = material.thicknessMap;\n      }\n      uniforms.attenuationDistance.value = material.attenuationDistance;\n      uniforms.attenuationColor.value.copy(material.attenuationColor);\n    }\n    uniforms.specularIntensity.value = material.specularIntensity;\n    uniforms.specularColor.value.copy(material.specularColor);\n    if (material.specularIntensityMap) {\n      uniforms.specularIntensityMap.value = material.specularIntensityMap;\n    }\n    if (material.specularColorMap) {\n      uniforms.specularColorMap.value = material.specularColorMap;\n    }\n  }\n  function refreshUniformsMatcap(uniforms, material) {\n    if (material.matcap) {\n      uniforms.matcap.value = material.matcap;\n    }\n  }\n  function refreshUniformsDistance(uniforms, material) {\n    uniforms.referencePosition.value.copy(material.referencePosition);\n    uniforms.nearDistance.value = material.nearDistance;\n    uniforms.farDistance.value = material.farDistance;\n  }\n  return {\n    refreshFogUniforms,\n    refreshMaterialUniforms\n  };\n}\nfunction WebGLUniformsGroups(gl, info, capabilities, state) {\n  let buffers = {};\n  let updateList = {};\n  let allocatedBindingPoints = [];\n  const maxBindingPoints = capabilities.isWebGL2 ? gl.getParameter(35375) : 0;\n  function bind(uniformsGroup, program) {\n    const webglProgram = program.program;\n    state.uniformBlockBinding(uniformsGroup, webglProgram);\n  }\n  function update(uniformsGroup, program) {\n    let buffer = buffers[uniformsGroup.id];\n    if (buffer === void 0) {\n      prepareUniformsGroup(uniformsGroup);\n      buffer = createBuffer(uniformsGroup);\n      buffers[uniformsGroup.id] = buffer;\n      uniformsGroup.addEventListener(\"dispose\", onUniformsGroupsDispose);\n    }\n    const webglProgram = program.program;\n    state.updateUBOMapping(uniformsGroup, webglProgram);\n    const frame = info.render.frame;\n    if (updateList[uniformsGroup.id] !== frame) {\n      updateBufferData(uniformsGroup);\n      updateList[uniformsGroup.id] = frame;\n    }\n  }\n  function createBuffer(uniformsGroup) {\n    const bindingPointIndex = allocateBindingPointIndex();\n    uniformsGroup.__bindingPointIndex = bindingPointIndex;\n    const buffer = gl.createBuffer();\n    const size = uniformsGroup.__size;\n    const usage = uniformsGroup.usage;\n    gl.bindBuffer(35345, buffer);\n    gl.bufferData(35345, size, usage);\n    gl.bindBuffer(35345, null);\n    gl.bindBufferBase(35345, bindingPointIndex, buffer);\n    return buffer;\n  }\n  function allocateBindingPointIndex() {\n    for (let i = 0; i < maxBindingPoints; i++) {\n      if (allocatedBindingPoints.indexOf(i) === -1) {\n        allocatedBindingPoints.push(i);\n        return i;\n      }\n    }\n    console.error(\"THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.\");\n    return 0;\n  }\n  function updateBufferData(uniformsGroup) {\n    const buffer = buffers[uniformsGroup.id];\n    const uniforms = uniformsGroup.uniforms;\n    const cache2 = uniformsGroup.__cache;\n    gl.bindBuffer(35345, buffer);\n    for (let i = 0, il = uniforms.length; i < il; i++) {\n      const uniform = uniforms[i];\n      if (hasUniformChanged(uniform, i, cache2) === true) {\n        const value = uniform.value;\n        const offset = uniform.__offset;\n        if (typeof value === \"number\") {\n          uniform.__data[0] = value;\n          gl.bufferSubData(35345, offset, uniform.__data);\n        } else {\n          if (uniform.value.isMatrix3) {\n            uniform.__data[0] = uniform.value.elements[0];\n            uniform.__data[1] = uniform.value.elements[1];\n            uniform.__data[2] = uniform.value.elements[2];\n            uniform.__data[3] = uniform.value.elements[0];\n            uniform.__data[4] = uniform.value.elements[3];\n            uniform.__data[5] = uniform.value.elements[4];\n            uniform.__data[6] = uniform.value.elements[5];\n            uniform.__data[7] = uniform.value.elements[0];\n            uniform.__data[8] = uniform.value.elements[6];\n            uniform.__data[9] = uniform.value.elements[7];\n            uniform.__data[10] = uniform.value.elements[8];\n            uniform.__data[11] = uniform.value.elements[0];\n          } else {\n            value.toArray(uniform.__data);\n          }\n          gl.bufferSubData(35345, offset, uniform.__data);\n        }\n      }\n    }\n    gl.bindBuffer(35345, null);\n  }\n  function hasUniformChanged(uniform, index, cache2) {\n    const value = uniform.value;\n    if (cache2[index] === void 0) {\n      if (typeof value === \"number\") {\n        cache2[index] = value;\n      } else {\n        cache2[index] = value.clone();\n      }\n      return true;\n    } else {\n      if (typeof value === \"number\") {\n        if (cache2[index] !== value) {\n          cache2[index] = value;\n          return true;\n        }\n      } else {\n        const cachedObject = cache2[index];\n        if (cachedObject.equals(value) === false) {\n          cachedObject.copy(value);\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n  function prepareUniformsGroup(uniformsGroup) {\n    const uniforms = uniformsGroup.uniforms;\n    let offset = 0;\n    const chunkSize = 16;\n    let chunkOffset = 0;\n    for (let i = 0, l = uniforms.length; i < l; i++) {\n      const uniform = uniforms[i];\n      const info2 = getUniformSize(uniform);\n      uniform.__data = new Float32Array(info2.storage / Float32Array.BYTES_PER_ELEMENT);\n      uniform.__offset = offset;\n      if (i > 0) {\n        chunkOffset = offset % chunkSize;\n        const remainingSizeInChunk = chunkSize - chunkOffset;\n        if (chunkOffset !== 0 && remainingSizeInChunk - info2.boundary < 0) {\n          offset += chunkSize - chunkOffset;\n          uniform.__offset = offset;\n        }\n      }\n      offset += info2.storage;\n    }\n    chunkOffset = offset % chunkSize;\n    if (chunkOffset > 0)\n      offset += chunkSize - chunkOffset;\n    uniformsGroup.__size = offset;\n    uniformsGroup.__cache = {};\n    return this;\n  }\n  function getUniformSize(uniform) {\n    const value = uniform.value;\n    const info2 = {\n      boundary: 0,\n      // bytes\n      storage: 0\n      // bytes\n    };\n    if (typeof value === \"number\") {\n      info2.boundary = 4;\n      info2.storage = 4;\n    } else if (value.isVector2) {\n      info2.boundary = 8;\n      info2.storage = 8;\n    } else if (value.isVector3 || value.isColor) {\n      info2.boundary = 16;\n      info2.storage = 12;\n    } else if (value.isVector4) {\n      info2.boundary = 16;\n      info2.storage = 16;\n    } else if (value.isMatrix3) {\n      info2.boundary = 48;\n      info2.storage = 48;\n    } else if (value.isMatrix4) {\n      info2.boundary = 64;\n      info2.storage = 64;\n    } else if (value.isTexture) {\n      console.warn(\"THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.\");\n    } else {\n      console.warn(\"THREE.WebGLRenderer: Unsupported uniform value type.\", value);\n    }\n    return info2;\n  }\n  function onUniformsGroupsDispose(event) {\n    const uniformsGroup = event.target;\n    uniformsGroup.removeEventListener(\"dispose\", onUniformsGroupsDispose);\n    const index = allocatedBindingPoints.indexOf(uniformsGroup.__bindingPointIndex);\n    allocatedBindingPoints.splice(index, 1);\n    gl.deleteBuffer(buffers[uniformsGroup.id]);\n    delete buffers[uniformsGroup.id];\n    delete updateList[uniformsGroup.id];\n  }\n  function dispose() {\n    for (const id in buffers) {\n      gl.deleteBuffer(buffers[id]);\n    }\n    allocatedBindingPoints = [];\n    buffers = {};\n    updateList = {};\n  }\n  return {\n    bind,\n    update,\n    dispose\n  };\n}\nfunction createCanvasElement() {\n  const canvas = createElementNS(\"canvas\");\n  canvas.style.display = \"block\";\n  return canvas;\n}\nfunction WebGLRenderer(parameters = {}) {\n  this.isWebGLRenderer = true;\n  const _canvas2 = parameters.canvas !== void 0 ? parameters.canvas : createCanvasElement(), _context = parameters.context !== void 0 ? parameters.context : null, _depth = parameters.depth !== void 0 ? parameters.depth : true, _stencil = parameters.stencil !== void 0 ? parameters.stencil : true, _antialias = parameters.antialias !== void 0 ? parameters.antialias : false, _premultipliedAlpha = parameters.premultipliedAlpha !== void 0 ? parameters.premultipliedAlpha : true, _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== void 0 ? parameters.preserveDrawingBuffer : false, _powerPreference = parameters.powerPreference !== void 0 ? parameters.powerPreference : \"default\", _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== void 0 ? parameters.failIfMajorPerformanceCaveat : false;\n  let _alpha;\n  if (_context !== null) {\n    _alpha = _context.getContextAttributes().alpha;\n  } else {\n    _alpha = parameters.alpha !== void 0 ? parameters.alpha : false;\n  }\n  let currentRenderList = null;\n  let currentRenderState = null;\n  const renderListStack = [];\n  const renderStateStack = [];\n  this.domElement = _canvas2;\n  this.debug = {\n    /**\n     * Enables error checking and reporting when shader programs are being compiled\n     * @type {boolean}\n     */\n    checkShaderErrors: true\n  };\n  this.autoClear = true;\n  this.autoClearColor = true;\n  this.autoClearDepth = true;\n  this.autoClearStencil = true;\n  this.sortObjects = true;\n  this.clippingPlanes = [];\n  this.localClippingEnabled = false;\n  this.outputEncoding = LinearEncoding;\n  this.physicallyCorrectLights = false;\n  this.toneMapping = NoToneMapping;\n  this.toneMappingExposure = 1;\n  Object.defineProperties(this, {\n    // @deprecated since r136, 0e21088102b4de7e0a0a33140620b7a3424b9e6d\n    gammaFactor: {\n      get: function() {\n        console.warn(\"THREE.WebGLRenderer: .gammaFactor has been removed.\");\n        return 2;\n      },\n      set: function() {\n        console.warn(\"THREE.WebGLRenderer: .gammaFactor has been removed.\");\n      }\n    }\n  });\n  const _this = this;\n  let _isContextLost = false;\n  let _currentActiveCubeFace = 0;\n  let _currentActiveMipmapLevel = 0;\n  let _currentRenderTarget = null;\n  let _currentMaterialId = -1;\n  let _currentCamera = null;\n  const _currentViewport = new Vector4();\n  const _currentScissor = new Vector4();\n  let _currentScissorTest = null;\n  let _width = _canvas2.width;\n  let _height = _canvas2.height;\n  let _pixelRatio = 1;\n  let _opaqueSort = null;\n  let _transparentSort = null;\n  const _viewport = new Vector4(0, 0, _width, _height);\n  const _scissor = new Vector4(0, 0, _width, _height);\n  let _scissorTest = false;\n  const _frustum = new Frustum();\n  let _clippingEnabled = false;\n  let _localClippingEnabled = false;\n  let _transmissionRenderTarget = null;\n  const _projScreenMatrix2 = new Matrix4();\n  const _vector22 = new Vector2();\n  const _vector32 = new Vector3();\n  const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n  function getTargetPixelRatio() {\n    return _currentRenderTarget === null ? _pixelRatio : 1;\n  }\n  let _gl = _context;\n  function getContext(contextNames, contextAttributes) {\n    for (let i = 0; i < contextNames.length; i++) {\n      const contextName = contextNames[i];\n      const context = _canvas2.getContext(contextName, contextAttributes);\n      if (context !== null)\n        return context;\n    }\n    return null;\n  }\n  try {\n    const contextAttributes = {\n      alpha: true,\n      depth: _depth,\n      stencil: _stencil,\n      antialias: _antialias,\n      premultipliedAlpha: _premultipliedAlpha,\n      preserveDrawingBuffer: _preserveDrawingBuffer,\n      powerPreference: _powerPreference,\n      failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n    };\n    if (\"setAttribute\" in _canvas2)\n      _canvas2.setAttribute(\"data-engine\", `three.js r${REVISION}`);\n    _canvas2.addEventListener(\"webglcontextlost\", onContextLost, false);\n    _canvas2.addEventListener(\"webglcontextrestored\", onContextRestore, false);\n    _canvas2.addEventListener(\"webglcontextcreationerror\", onContextCreationError, false);\n    if (_gl === null) {\n      const contextNames = [\"webgl2\", \"webgl\", \"experimental-webgl\"];\n      if (_this.isWebGL1Renderer === true) {\n        contextNames.shift();\n      }\n      _gl = getContext(contextNames, contextAttributes);\n      if (_gl === null) {\n        if (getContext(contextNames)) {\n          throw new Error(\"Error creating WebGL context with your selected attributes.\");\n        } else {\n          throw new Error(\"Error creating WebGL context.\");\n        }\n      }\n    }\n    if (_gl.getShaderPrecisionFormat === void 0) {\n      _gl.getShaderPrecisionFormat = function() {\n        return { \"rangeMin\": 1, \"rangeMax\": 1, \"precision\": 1 };\n      };\n    }\n  } catch (error) {\n    console.error(\"THREE.WebGLRenderer: \" + error.message);\n    throw error;\n  }\n  let extensions, capabilities, state, info;\n  let properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n  let programCache, materials, renderLists, renderStates, clipping, shadowMap;\n  let background, morphtargets, bufferRenderer, indexedBufferRenderer;\n  let utils, bindingStates, uniformsGroups;\n  function initGLContext() {\n    extensions = new WebGLExtensions(_gl);\n    capabilities = new WebGLCapabilities(_gl, extensions, parameters);\n    extensions.init(capabilities);\n    utils = new WebGLUtils(_gl, extensions, capabilities);\n    state = new WebGLState(_gl, extensions, capabilities);\n    info = new WebGLInfo();\n    properties = new WebGLProperties();\n    textures = new WebGLTextures(_gl, extensions, state, properties, capabilities, utils, info);\n    cubemaps = new WebGLCubeMaps(_this);\n    cubeuvmaps = new WebGLCubeUVMaps(_this);\n    attributes = new WebGLAttributes(_gl, capabilities);\n    bindingStates = new WebGLBindingStates(_gl, extensions, attributes, capabilities);\n    geometries = new WebGLGeometries(_gl, attributes, info, bindingStates);\n    objects = new WebGLObjects(_gl, geometries, attributes, info);\n    morphtargets = new WebGLMorphtargets(_gl, capabilities, textures);\n    clipping = new WebGLClipping(properties);\n    programCache = new WebGLPrograms(_this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping);\n    materials = new WebGLMaterials(_this, properties);\n    renderLists = new WebGLRenderLists();\n    renderStates = new WebGLRenderStates(extensions, capabilities);\n    background = new WebGLBackground(_this, cubemaps, cubeuvmaps, state, objects, _alpha, _premultipliedAlpha);\n    shadowMap = new WebGLShadowMap(_this, objects, capabilities);\n    uniformsGroups = new WebGLUniformsGroups(_gl, info, capabilities, state);\n    bufferRenderer = new WebGLBufferRenderer(_gl, extensions, info, capabilities);\n    indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions, info, capabilities);\n    info.programs = programCache.programs;\n    _this.capabilities = capabilities;\n    _this.extensions = extensions;\n    _this.properties = properties;\n    _this.renderLists = renderLists;\n    _this.shadowMap = shadowMap;\n    _this.state = state;\n    _this.info = info;\n  }\n  initGLContext();\n  const xr = new WebXRManager(_this, _gl);\n  this.xr = xr;\n  this.getContext = function() {\n    return _gl;\n  };\n  this.getContextAttributes = function() {\n    return _gl.getContextAttributes();\n  };\n  this.forceContextLoss = function() {\n    const extension = extensions.get(\"WEBGL_lose_context\");\n    if (extension)\n      extension.loseContext();\n  };\n  this.forceContextRestore = function() {\n    const extension = extensions.get(\"WEBGL_lose_context\");\n    if (extension)\n      extension.restoreContext();\n  };\n  this.getPixelRatio = function() {\n    return _pixelRatio;\n  };\n  this.setPixelRatio = function(value) {\n    if (value === void 0)\n      return;\n    _pixelRatio = value;\n    this.setSize(_width, _height, false);\n  };\n  this.getSize = function(target2) {\n    return target2.set(_width, _height);\n  };\n  this.setSize = function(width, height, updateStyle) {\n    if (xr.isPresenting) {\n      console.warn(\"THREE.WebGLRenderer: Can't change size while VR device is presenting.\");\n      return;\n    }\n    _width = width;\n    _height = height;\n    _canvas2.width = Math.floor(width * _pixelRatio);\n    _canvas2.height = Math.floor(height * _pixelRatio);\n    if (updateStyle !== false) {\n      _canvas2.style.width = width + \"px\";\n      _canvas2.style.height = height + \"px\";\n    }\n    this.setViewport(0, 0, width, height);\n  };\n  this.getDrawingBufferSize = function(target2) {\n    return target2.set(_width * _pixelRatio, _height * _pixelRatio).floor();\n  };\n  this.setDrawingBufferSize = function(width, height, pixelRatio) {\n    _width = width;\n    _height = height;\n    _pixelRatio = pixelRatio;\n    _canvas2.width = Math.floor(width * pixelRatio);\n    _canvas2.height = Math.floor(height * pixelRatio);\n    this.setViewport(0, 0, width, height);\n  };\n  this.getCurrentViewport = function(target2) {\n    return target2.copy(_currentViewport);\n  };\n  this.getViewport = function(target2) {\n    return target2.copy(_viewport);\n  };\n  this.setViewport = function(x2, y, width, height) {\n    if (x2.isVector4) {\n      _viewport.set(x2.x, x2.y, x2.z, x2.w);\n    } else {\n      _viewport.set(x2, y, width, height);\n    }\n    state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor());\n  };\n  this.getScissor = function(target2) {\n    return target2.copy(_scissor);\n  };\n  this.setScissor = function(x2, y, width, height) {\n    if (x2.isVector4) {\n      _scissor.set(x2.x, x2.y, x2.z, x2.w);\n    } else {\n      _scissor.set(x2, y, width, height);\n    }\n    state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor());\n  };\n  this.getScissorTest = function() {\n    return _scissorTest;\n  };\n  this.setScissorTest = function(boolean) {\n    state.setScissorTest(_scissorTest = boolean);\n  };\n  this.setOpaqueSort = function(method) {\n    _opaqueSort = method;\n  };\n  this.setTransparentSort = function(method) {\n    _transparentSort = method;\n  };\n  this.getClearColor = function(target2) {\n    return target2.copy(background.getClearColor());\n  };\n  this.setClearColor = function() {\n    background.setClearColor.apply(background, arguments);\n  };\n  this.getClearAlpha = function() {\n    return background.getClearAlpha();\n  };\n  this.setClearAlpha = function() {\n    background.setClearAlpha.apply(background, arguments);\n  };\n  this.clear = function(color = true, depth = true, stencil = true) {\n    let bits2 = 0;\n    if (color)\n      bits2 |= 16384;\n    if (depth)\n      bits2 |= 256;\n    if (stencil)\n      bits2 |= 1024;\n    _gl.clear(bits2);\n  };\n  this.clearColor = function() {\n    this.clear(true, false, false);\n  };\n  this.clearDepth = function() {\n    this.clear(false, true, false);\n  };\n  this.clearStencil = function() {\n    this.clear(false, false, true);\n  };\n  this.dispose = function() {\n    _canvas2.removeEventListener(\"webglcontextlost\", onContextLost, false);\n    _canvas2.removeEventListener(\"webglcontextrestored\", onContextRestore, false);\n    _canvas2.removeEventListener(\"webglcontextcreationerror\", onContextCreationError, false);\n    renderLists.dispose();\n    renderStates.dispose();\n    properties.dispose();\n    cubemaps.dispose();\n    cubeuvmaps.dispose();\n    objects.dispose();\n    bindingStates.dispose();\n    uniformsGroups.dispose();\n    programCache.dispose();\n    xr.dispose();\n    xr.removeEventListener(\"sessionstart\", onXRSessionStart);\n    xr.removeEventListener(\"sessionend\", onXRSessionEnd);\n    if (_transmissionRenderTarget) {\n      _transmissionRenderTarget.dispose();\n      _transmissionRenderTarget = null;\n    }\n    animation.stop();\n  };\n  function onContextLost(event) {\n    event.preventDefault();\n    console.log(\"THREE.WebGLRenderer: Context Lost.\");\n    _isContextLost = true;\n  }\n  function onContextRestore() {\n    console.log(\"THREE.WebGLRenderer: Context Restored.\");\n    _isContextLost = false;\n    const infoAutoReset = info.autoReset;\n    const shadowMapEnabled = shadowMap.enabled;\n    const shadowMapAutoUpdate = shadowMap.autoUpdate;\n    const shadowMapNeedsUpdate = shadowMap.needsUpdate;\n    const shadowMapType = shadowMap.type;\n    initGLContext();\n    info.autoReset = infoAutoReset;\n    shadowMap.enabled = shadowMapEnabled;\n    shadowMap.autoUpdate = shadowMapAutoUpdate;\n    shadowMap.needsUpdate = shadowMapNeedsUpdate;\n    shadowMap.type = shadowMapType;\n  }\n  function onContextCreationError(event) {\n    console.error(\"THREE.WebGLRenderer: A WebGL context could not be created. Reason: \", event.statusMessage);\n  }\n  function onMaterialDispose(event) {\n    const material = event.target;\n    material.removeEventListener(\"dispose\", onMaterialDispose);\n    deallocateMaterial(material);\n  }\n  function deallocateMaterial(material) {\n    releaseMaterialProgramReferences(material);\n    properties.remove(material);\n  }\n  function releaseMaterialProgramReferences(material) {\n    const programs = properties.get(material).programs;\n    if (programs !== void 0) {\n      programs.forEach(function(program) {\n        programCache.releaseProgram(program);\n      });\n      if (material.isShaderMaterial) {\n        programCache.releaseShaderCache(material);\n      }\n    }\n  }\n  this.renderBufferDirect = function(camera2, scene, geometry, material, object, group) {\n    if (scene === null)\n      scene = _emptyScene;\n    const frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0;\n    const program = setProgram(camera2, scene, geometry, material, object);\n    state.setMaterial(material, frontFaceCW);\n    let index = geometry.index;\n    const position = geometry.attributes.position;\n    if (index === null) {\n      if (position === void 0 || position.count === 0)\n        return;\n    } else if (index.count === 0) {\n      return;\n    }\n    let rangeFactor = 1;\n    if (material.wireframe === true) {\n      index = geometries.getWireframeAttribute(geometry);\n      rangeFactor = 2;\n    }\n    bindingStates.setup(object, material, program, geometry, index);\n    let attribute;\n    let renderer = bufferRenderer;\n    if (index !== null) {\n      attribute = attributes.get(index);\n      renderer = indexedBufferRenderer;\n      renderer.setIndex(attribute);\n    }\n    const dataCount = index !== null ? index.count : position.count;\n    const rangeStart = geometry.drawRange.start * rangeFactor;\n    const rangeCount = geometry.drawRange.count * rangeFactor;\n    const groupStart = group !== null ? group.start * rangeFactor : 0;\n    const groupCount = group !== null ? group.count * rangeFactor : Infinity;\n    const drawStart = Math.max(rangeStart, groupStart);\n    const drawEnd = Math.min(dataCount, rangeStart + rangeCount, groupStart + groupCount) - 1;\n    const drawCount = Math.max(0, drawEnd - drawStart + 1);\n    if (drawCount === 0)\n      return;\n    if (object.isMesh) {\n      if (material.wireframe === true) {\n        state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio());\n        renderer.setMode(1);\n      } else {\n        renderer.setMode(4);\n      }\n    } else if (object.isLine) {\n      let lineWidth = material.linewidth;\n      if (lineWidth === void 0)\n        lineWidth = 1;\n      state.setLineWidth(lineWidth * getTargetPixelRatio());\n      if (object.isLineSegments) {\n        renderer.setMode(1);\n      } else if (object.isLineLoop) {\n        renderer.setMode(2);\n      } else {\n        renderer.setMode(3);\n      }\n    } else if (object.isPoints) {\n      renderer.setMode(0);\n    } else if (object.isSprite) {\n      renderer.setMode(4);\n    }\n    if (object.isInstancedMesh) {\n      renderer.renderInstances(drawStart, drawCount, object.count);\n    } else if (geometry.isInstancedBufferGeometry) {\n      const instanceCount = Math.min(geometry.instanceCount, geometry._maxInstanceCount);\n      renderer.renderInstances(drawStart, drawCount, instanceCount);\n    } else {\n      renderer.render(drawStart, drawCount);\n    }\n  };\n  this.compile = function(scene, camera2) {\n    function prepare(material, scene2, object) {\n      if (material.transparent === true && material.side === DoubleSide) {\n        material.side = BackSide;\n        material.needsUpdate = true;\n        getProgram(material, scene2, object);\n        material.side = FrontSide;\n        material.needsUpdate = true;\n        getProgram(material, scene2, object);\n        material.side = DoubleSide;\n      } else {\n        getProgram(material, scene2, object);\n      }\n    }\n    currentRenderState = renderStates.get(scene);\n    currentRenderState.init();\n    renderStateStack.push(currentRenderState);\n    scene.traverseVisible(function(object) {\n      if (object.isLight && object.layers.test(camera2.layers)) {\n        currentRenderState.pushLight(object);\n        if (object.castShadow) {\n          currentRenderState.pushShadow(object);\n        }\n      }\n    });\n    currentRenderState.setupLights(_this.physicallyCorrectLights);\n    scene.traverse(function(object) {\n      const material = object.material;\n      if (material) {\n        if (Array.isArray(material)) {\n          for (let i = 0; i < material.length; i++) {\n            const material2 = material[i];\n            prepare(material2, scene, object);\n          }\n        } else {\n          prepare(material, scene, object);\n        }\n      }\n    });\n    renderStateStack.pop();\n    currentRenderState = null;\n  };\n  let onAnimationFrameCallback = null;\n  function onAnimationFrame(time) {\n    if (onAnimationFrameCallback)\n      onAnimationFrameCallback(time);\n  }\n  function onXRSessionStart() {\n    animation.stop();\n  }\n  function onXRSessionEnd() {\n    animation.start();\n  }\n  const animation = new WebGLAnimation();\n  animation.setAnimationLoop(onAnimationFrame);\n  if (typeof self !== \"undefined\")\n    animation.setContext(self);\n  this.setAnimationLoop = function(callback) {\n    onAnimationFrameCallback = callback;\n    xr.setAnimationLoop(callback);\n    callback === null ? animation.stop() : animation.start();\n  };\n  xr.addEventListener(\"sessionstart\", onXRSessionStart);\n  xr.addEventListener(\"sessionend\", onXRSessionEnd);\n  this.render = function(scene, camera2) {\n    if (camera2 !== void 0 && camera2.isCamera !== true) {\n      console.error(\"THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.\");\n      return;\n    }\n    if (_isContextLost === true)\n      return;\n    if (scene.matrixWorldAutoUpdate === true)\n      scene.updateMatrixWorld();\n    if (camera2.parent === null && camera2.matrixWorldAutoUpdate === true)\n      camera2.updateMatrixWorld();\n    if (xr.enabled === true && xr.isPresenting === true) {\n      if (xr.cameraAutoUpdate === true)\n        xr.updateCamera(camera2);\n      camera2 = xr.getCamera();\n    }\n    if (scene.isScene === true)\n      scene.onBeforeRender(_this, scene, camera2, _currentRenderTarget);\n    currentRenderState = renderStates.get(scene, renderStateStack.length);\n    currentRenderState.init();\n    renderStateStack.push(currentRenderState);\n    _projScreenMatrix2.multiplyMatrices(camera2.projectionMatrix, camera2.matrixWorldInverse);\n    _frustum.setFromProjectionMatrix(_projScreenMatrix2);\n    _localClippingEnabled = this.localClippingEnabled;\n    _clippingEnabled = clipping.init(this.clippingPlanes, _localClippingEnabled, camera2);\n    currentRenderList = renderLists.get(scene, renderListStack.length);\n    currentRenderList.init();\n    renderListStack.push(currentRenderList);\n    projectObject(scene, camera2, 0, _this.sortObjects);\n    currentRenderList.finish();\n    if (_this.sortObjects === true) {\n      currentRenderList.sort(_opaqueSort, _transparentSort);\n    }\n    if (_clippingEnabled === true)\n      clipping.beginShadows();\n    const shadowsArray = currentRenderState.state.shadowsArray;\n    shadowMap.render(shadowsArray, scene, camera2);\n    if (_clippingEnabled === true)\n      clipping.endShadows();\n    if (this.info.autoReset === true)\n      this.info.reset();\n    background.render(currentRenderList, scene);\n    currentRenderState.setupLights(_this.physicallyCorrectLights);\n    if (camera2.isArrayCamera) {\n      const cameras = camera2.cameras;\n      for (let i = 0, l = cameras.length; i < l; i++) {\n        const camera22 = cameras[i];\n        renderScene(currentRenderList, scene, camera22, camera22.viewport);\n      }\n    } else {\n      renderScene(currentRenderList, scene, camera2);\n    }\n    if (_currentRenderTarget !== null) {\n      textures.updateMultisampleRenderTarget(_currentRenderTarget);\n      textures.updateRenderTargetMipmap(_currentRenderTarget);\n    }\n    if (scene.isScene === true)\n      scene.onAfterRender(_this, scene, camera2);\n    bindingStates.resetDefaultState();\n    _currentMaterialId = -1;\n    _currentCamera = null;\n    renderStateStack.pop();\n    if (renderStateStack.length > 0) {\n      currentRenderState = renderStateStack[renderStateStack.length - 1];\n    } else {\n      currentRenderState = null;\n    }\n    renderListStack.pop();\n    if (renderListStack.length > 0) {\n      currentRenderList = renderListStack[renderListStack.length - 1];\n    } else {\n      currentRenderList = null;\n    }\n  };\n  function projectObject(object, camera2, groupOrder, sortObjects) {\n    if (object.visible === false)\n      return;\n    const visible = object.layers.test(camera2.layers);\n    if (visible) {\n      if (object.isGroup) {\n        groupOrder = object.renderOrder;\n      } else if (object.isLOD) {\n        if (object.autoUpdate === true)\n          object.update(camera2);\n      } else if (object.isLight) {\n        currentRenderState.pushLight(object);\n        if (object.castShadow) {\n          currentRenderState.pushShadow(object);\n        }\n      } else if (object.isSprite) {\n        if (!object.frustumCulled || _frustum.intersectsSprite(object)) {\n          if (sortObjects) {\n            _vector32.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n          }\n          const geometry = objects.update(object);\n          const material = object.material;\n          if (material.visible) {\n            currentRenderList.push(object, geometry, material, groupOrder, _vector32.z, null);\n          }\n        }\n      } else if (object.isMesh || object.isLine || object.isPoints) {\n        if (object.isSkinnedMesh) {\n          if (object.skeleton.frame !== info.render.frame) {\n            object.skeleton.update();\n            object.skeleton.frame = info.render.frame;\n          }\n        }\n        if (!object.frustumCulled || _frustum.intersectsObject(object)) {\n          if (sortObjects) {\n            _vector32.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n          }\n          const geometry = objects.update(object);\n          const material = object.material;\n          if (Array.isArray(material)) {\n            const groups = geometry.groups;\n            for (let i = 0, l = groups.length; i < l; i++) {\n              const group = groups[i];\n              const groupMaterial = material[group.materialIndex];\n              if (groupMaterial && groupMaterial.visible) {\n                currentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector32.z, group);\n              }\n            }\n          } else if (material.visible) {\n            currentRenderList.push(object, geometry, material, groupOrder, _vector32.z, null);\n          }\n        }\n      }\n    }\n    const children = object.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      projectObject(children[i], camera2, groupOrder, sortObjects);\n    }\n  }\n  function renderScene(currentRenderList2, scene, camera2, viewport) {\n    const opaqueObjects = currentRenderList2.opaque;\n    const transmissiveObjects = currentRenderList2.transmissive;\n    const transparentObjects = currentRenderList2.transparent;\n    currentRenderState.setupLightsView(camera2);\n    if (transmissiveObjects.length > 0)\n      renderTransmissionPass(opaqueObjects, scene, camera2);\n    if (viewport)\n      state.viewport(_currentViewport.copy(viewport));\n    if (opaqueObjects.length > 0)\n      renderObjects(opaqueObjects, scene, camera2);\n    if (transmissiveObjects.length > 0)\n      renderObjects(transmissiveObjects, scene, camera2);\n    if (transparentObjects.length > 0)\n      renderObjects(transparentObjects, scene, camera2);\n    state.buffers.depth.setTest(true);\n    state.buffers.depth.setMask(true);\n    state.buffers.color.setMask(true);\n    state.setPolygonOffset(false);\n  }\n  function renderTransmissionPass(opaqueObjects, scene, camera2) {\n    const isWebGL2 = capabilities.isWebGL2;\n    if (_transmissionRenderTarget === null) {\n      _transmissionRenderTarget = new WebGLRenderTarget(1, 1, {\n        generateMipmaps: true,\n        type: extensions.has(\"EXT_color_buffer_half_float\") ? HalfFloatType : UnsignedByteType,\n        minFilter: LinearMipmapLinearFilter,\n        samples: isWebGL2 && _antialias === true ? 4 : 0\n      });\n    }\n    _this.getDrawingBufferSize(_vector22);\n    if (isWebGL2) {\n      _transmissionRenderTarget.setSize(_vector22.x, _vector22.y);\n    } else {\n      _transmissionRenderTarget.setSize(floorPowerOfTwo(_vector22.x), floorPowerOfTwo(_vector22.y));\n    }\n    const currentRenderTarget = _this.getRenderTarget();\n    _this.setRenderTarget(_transmissionRenderTarget);\n    _this.clear();\n    const currentToneMapping = _this.toneMapping;\n    _this.toneMapping = NoToneMapping;\n    renderObjects(opaqueObjects, scene, camera2);\n    _this.toneMapping = currentToneMapping;\n    textures.updateMultisampleRenderTarget(_transmissionRenderTarget);\n    textures.updateRenderTargetMipmap(_transmissionRenderTarget);\n    _this.setRenderTarget(currentRenderTarget);\n  }\n  function renderObjects(renderList, scene, camera2) {\n    const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n    for (let i = 0, l = renderList.length; i < l; i++) {\n      const renderItem = renderList[i];\n      const object = renderItem.object;\n      const geometry = renderItem.geometry;\n      const material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n      const group = renderItem.group;\n      if (object.layers.test(camera2.layers)) {\n        renderObject(object, scene, camera2, geometry, material, group);\n      }\n    }\n  }\n  function renderObject(object, scene, camera2, geometry, material, group) {\n    object.onBeforeRender(_this, scene, camera2, geometry, material, group);\n    object.modelViewMatrix.multiplyMatrices(camera2.matrixWorldInverse, object.matrixWorld);\n    object.normalMatrix.getNormalMatrix(object.modelViewMatrix);\n    material.onBeforeRender(_this, scene, camera2, geometry, object, group);\n    if (material.transparent === true && material.side === DoubleSide) {\n      material.side = BackSide;\n      material.needsUpdate = true;\n      _this.renderBufferDirect(camera2, scene, geometry, material, object, group);\n      material.side = FrontSide;\n      material.needsUpdate = true;\n      _this.renderBufferDirect(camera2, scene, geometry, material, object, group);\n      material.side = DoubleSide;\n    } else {\n      _this.renderBufferDirect(camera2, scene, geometry, material, object, group);\n    }\n    object.onAfterRender(_this, scene, camera2, geometry, material, group);\n  }\n  function getProgram(material, scene, object) {\n    if (scene.isScene !== true)\n      scene = _emptyScene;\n    const materialProperties = properties.get(material);\n    const lights = currentRenderState.state.lights;\n    const shadowsArray = currentRenderState.state.shadowsArray;\n    const lightsStateVersion = lights.state.version;\n    const parameters2 = programCache.getParameters(material, lights.state, shadowsArray, scene, object);\n    const programCacheKey = programCache.getProgramCacheKey(parameters2);\n    let programs = materialProperties.programs;\n    materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n    materialProperties.fog = scene.fog;\n    materialProperties.envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || materialProperties.environment);\n    if (programs === void 0) {\n      material.addEventListener(\"dispose\", onMaterialDispose);\n      programs = /* @__PURE__ */ new Map();\n      materialProperties.programs = programs;\n    }\n    let program = programs.get(programCacheKey);\n    if (program !== void 0) {\n      if (materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion) {\n        updateCommonMaterialProperties(material, parameters2);\n        return program;\n      }\n    } else {\n      parameters2.uniforms = programCache.getUniforms(material);\n      material.onBuild(object, parameters2, _this);\n      material.onBeforeCompile(parameters2, _this);\n      program = programCache.acquireProgram(parameters2, programCacheKey);\n      programs.set(programCacheKey, program);\n      materialProperties.uniforms = parameters2.uniforms;\n    }\n    const uniforms = materialProperties.uniforms;\n    if (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) {\n      uniforms.clippingPlanes = clipping.uniform;\n    }\n    updateCommonMaterialProperties(material, parameters2);\n    materialProperties.needsLights = materialNeedsLights(material);\n    materialProperties.lightsStateVersion = lightsStateVersion;\n    if (materialProperties.needsLights) {\n      uniforms.ambientLightColor.value = lights.state.ambient;\n      uniforms.lightProbe.value = lights.state.probe;\n      uniforms.directionalLights.value = lights.state.directional;\n      uniforms.directionalLightShadows.value = lights.state.directionalShadow;\n      uniforms.spotLights.value = lights.state.spot;\n      uniforms.spotLightShadows.value = lights.state.spotShadow;\n      uniforms.rectAreaLights.value = lights.state.rectArea;\n      uniforms.ltc_1.value = lights.state.rectAreaLTC1;\n      uniforms.ltc_2.value = lights.state.rectAreaLTC2;\n      uniforms.pointLights.value = lights.state.point;\n      uniforms.pointLightShadows.value = lights.state.pointShadow;\n      uniforms.hemisphereLights.value = lights.state.hemi;\n      uniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n      uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n      uniforms.spotShadowMap.value = lights.state.spotShadowMap;\n      uniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n      uniforms.spotLightMap.value = lights.state.spotLightMap;\n      uniforms.pointShadowMap.value = lights.state.pointShadowMap;\n      uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n    }\n    const progUniforms = program.getUniforms();\n    const uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, uniforms);\n    materialProperties.currentProgram = program;\n    materialProperties.uniformsList = uniformsList;\n    return program;\n  }\n  function updateCommonMaterialProperties(material, parameters2) {\n    const materialProperties = properties.get(material);\n    materialProperties.outputEncoding = parameters2.outputEncoding;\n    materialProperties.instancing = parameters2.instancing;\n    materialProperties.skinning = parameters2.skinning;\n    materialProperties.morphTargets = parameters2.morphTargets;\n    materialProperties.morphNormals = parameters2.morphNormals;\n    materialProperties.morphColors = parameters2.morphColors;\n    materialProperties.morphTargetsCount = parameters2.morphTargetsCount;\n    materialProperties.numClippingPlanes = parameters2.numClippingPlanes;\n    materialProperties.numIntersection = parameters2.numClipIntersection;\n    materialProperties.vertexAlphas = parameters2.vertexAlphas;\n    materialProperties.vertexTangents = parameters2.vertexTangents;\n    materialProperties.toneMapping = parameters2.toneMapping;\n  }\n  function setProgram(camera2, scene, geometry, material, object) {\n    if (scene.isScene !== true)\n      scene = _emptyScene;\n    textures.resetTextureUnits();\n    const fog = scene.fog;\n    const environment = material.isMeshStandardMaterial ? scene.environment : null;\n    const encoding = _currentRenderTarget === null ? _this.outputEncoding : _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.encoding : LinearEncoding;\n    const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n    const vertexAlphas = material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n    const vertexTangents = !!material.normalMap && !!geometry.attributes.tangent;\n    const morphTargets = !!geometry.morphAttributes.position;\n    const morphNormals = !!geometry.morphAttributes.normal;\n    const morphColors = !!geometry.morphAttributes.color;\n    const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n    const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n    const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n    const materialProperties = properties.get(material);\n    const lights = currentRenderState.state.lights;\n    if (_clippingEnabled === true) {\n      if (_localClippingEnabled === true || camera2 !== _currentCamera) {\n        const useCache = camera2 === _currentCamera && material.id === _currentMaterialId;\n        clipping.setState(material, camera2, useCache);\n      }\n    }\n    let needsProgramChange = false;\n    if (material.version === materialProperties.__version) {\n      if (materialProperties.needsLights && materialProperties.lightsStateVersion !== lights.state.version) {\n        needsProgramChange = true;\n      } else if (materialProperties.outputEncoding !== encoding) {\n        needsProgramChange = true;\n      } else if (object.isInstancedMesh && materialProperties.instancing === false) {\n        needsProgramChange = true;\n      } else if (!object.isInstancedMesh && materialProperties.instancing === true) {\n        needsProgramChange = true;\n      } else if (object.isSkinnedMesh && materialProperties.skinning === false) {\n        needsProgramChange = true;\n      } else if (!object.isSkinnedMesh && materialProperties.skinning === true) {\n        needsProgramChange = true;\n      } else if (materialProperties.envMap !== envMap) {\n        needsProgramChange = true;\n      } else if (material.fog === true && materialProperties.fog !== fog) {\n        needsProgramChange = true;\n      } else if (materialProperties.numClippingPlanes !== void 0 && (materialProperties.numClippingPlanes !== clipping.numPlanes || materialProperties.numIntersection !== clipping.numIntersection)) {\n        needsProgramChange = true;\n      } else if (materialProperties.vertexAlphas !== vertexAlphas) {\n        needsProgramChange = true;\n      } else if (materialProperties.vertexTangents !== vertexTangents) {\n        needsProgramChange = true;\n      } else if (materialProperties.morphTargets !== morphTargets) {\n        needsProgramChange = true;\n      } else if (materialProperties.morphNormals !== morphNormals) {\n        needsProgramChange = true;\n      } else if (materialProperties.morphColors !== morphColors) {\n        needsProgramChange = true;\n      } else if (materialProperties.toneMapping !== toneMapping) {\n        needsProgramChange = true;\n      } else if (capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount) {\n        needsProgramChange = true;\n      }\n    } else {\n      needsProgramChange = true;\n      materialProperties.__version = material.version;\n    }\n    let program = materialProperties.currentProgram;\n    if (needsProgramChange === true) {\n      program = getProgram(material, scene, object);\n    }\n    let refreshProgram = false;\n    let refreshMaterial = false;\n    let refreshLights = false;\n    const p_uniforms = program.getUniforms(), m_uniforms = materialProperties.uniforms;\n    if (state.useProgram(program.program)) {\n      refreshProgram = true;\n      refreshMaterial = true;\n      refreshLights = true;\n    }\n    if (material.id !== _currentMaterialId) {\n      _currentMaterialId = material.id;\n      refreshMaterial = true;\n    }\n    if (refreshProgram || _currentCamera !== camera2) {\n      p_uniforms.setValue(_gl, \"projectionMatrix\", camera2.projectionMatrix);\n      if (capabilities.logarithmicDepthBuffer) {\n        p_uniforms.setValue(\n          _gl,\n          \"logDepthBufFC\",\n          2 / (Math.log(camera2.far + 1) / Math.LN2)\n        );\n      }\n      if (_currentCamera !== camera2) {\n        _currentCamera = camera2;\n        refreshMaterial = true;\n        refreshLights = true;\n      }\n      if (material.isShaderMaterial || material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshStandardMaterial || material.envMap) {\n        const uCamPos = p_uniforms.map.cameraPosition;\n        if (uCamPos !== void 0) {\n          uCamPos.setValue(\n            _gl,\n            _vector32.setFromMatrixPosition(camera2.matrixWorld)\n          );\n        }\n      }\n      if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial) {\n        p_uniforms.setValue(_gl, \"isOrthographic\", camera2.isOrthographicCamera === true);\n      }\n      if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial || material.isShadowMaterial || object.isSkinnedMesh) {\n        p_uniforms.setValue(_gl, \"viewMatrix\", camera2.matrixWorldInverse);\n      }\n    }\n    if (object.isSkinnedMesh) {\n      p_uniforms.setOptional(_gl, object, \"bindMatrix\");\n      p_uniforms.setOptional(_gl, object, \"bindMatrixInverse\");\n      const skeleton = object.skeleton;\n      if (skeleton) {\n        if (capabilities.floatVertexTextures) {\n          if (skeleton.boneTexture === null)\n            skeleton.computeBoneTexture();\n          p_uniforms.setValue(_gl, \"boneTexture\", skeleton.boneTexture, textures);\n          p_uniforms.setValue(_gl, \"boneTextureSize\", skeleton.boneTextureSize);\n        } else {\n          console.warn(\"THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.\");\n        }\n      }\n    }\n    const morphAttributes = geometry.morphAttributes;\n    if (morphAttributes.position !== void 0 || morphAttributes.normal !== void 0 || morphAttributes.color !== void 0 && capabilities.isWebGL2 === true) {\n      morphtargets.update(object, geometry, material, program);\n    }\n    if (refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow) {\n      materialProperties.receiveShadow = object.receiveShadow;\n      p_uniforms.setValue(_gl, \"receiveShadow\", object.receiveShadow);\n    }\n    if (material.isMeshGouraudMaterial && material.envMap !== null) {\n      m_uniforms.envMap.value = envMap;\n      m_uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n    }\n    if (refreshMaterial) {\n      p_uniforms.setValue(_gl, \"toneMappingExposure\", _this.toneMappingExposure);\n      if (materialProperties.needsLights) {\n        markUniformsLightsNeedsUpdate(m_uniforms, refreshLights);\n      }\n      if (fog && material.fog === true) {\n        materials.refreshFogUniforms(m_uniforms, fog);\n      }\n      materials.refreshMaterialUniforms(m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget);\n      WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n    }\n    if (material.isShaderMaterial && material.uniformsNeedUpdate === true) {\n      WebGLUniforms.upload(_gl, materialProperties.uniformsList, m_uniforms, textures);\n      material.uniformsNeedUpdate = false;\n    }\n    if (material.isSpriteMaterial) {\n      p_uniforms.setValue(_gl, \"center\", object.center);\n    }\n    p_uniforms.setValue(_gl, \"modelViewMatrix\", object.modelViewMatrix);\n    p_uniforms.setValue(_gl, \"normalMatrix\", object.normalMatrix);\n    p_uniforms.setValue(_gl, \"modelMatrix\", object.matrixWorld);\n    if (material.isShaderMaterial || material.isRawShaderMaterial) {\n      const groups = material.uniformsGroups;\n      for (let i = 0, l = groups.length; i < l; i++) {\n        if (capabilities.isWebGL2) {\n          const group = groups[i];\n          uniformsGroups.update(group, program);\n          uniformsGroups.bind(group, program);\n        } else {\n          console.warn(\"THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.\");\n        }\n      }\n    }\n    return program;\n  }\n  function markUniformsLightsNeedsUpdate(uniforms, value) {\n    uniforms.ambientLightColor.needsUpdate = value;\n    uniforms.lightProbe.needsUpdate = value;\n    uniforms.directionalLights.needsUpdate = value;\n    uniforms.directionalLightShadows.needsUpdate = value;\n    uniforms.pointLights.needsUpdate = value;\n    uniforms.pointLightShadows.needsUpdate = value;\n    uniforms.spotLights.needsUpdate = value;\n    uniforms.spotLightShadows.needsUpdate = value;\n    uniforms.rectAreaLights.needsUpdate = value;\n    uniforms.hemisphereLights.needsUpdate = value;\n  }\n  function materialNeedsLights(material) {\n    return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.isShadowMaterial || material.isShaderMaterial && material.lights === true;\n  }\n  this.getActiveCubeFace = function() {\n    return _currentActiveCubeFace;\n  };\n  this.getActiveMipmapLevel = function() {\n    return _currentActiveMipmapLevel;\n  };\n  this.getRenderTarget = function() {\n    return _currentRenderTarget;\n  };\n  this.setRenderTargetTextures = function(renderTarget, colorTexture, depthTexture) {\n    properties.get(renderTarget.texture).__webglTexture = colorTexture;\n    properties.get(renderTarget.depthTexture).__webglTexture = depthTexture;\n    const renderTargetProperties = properties.get(renderTarget);\n    renderTargetProperties.__hasExternalTextures = true;\n    if (renderTargetProperties.__hasExternalTextures) {\n      renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === void 0;\n      if (!renderTargetProperties.__autoAllocateDepthBuffer) {\n        if (extensions.has(\"WEBGL_multisampled_render_to_texture\") === true) {\n          console.warn(\"THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided\");\n          renderTargetProperties.__useRenderToTexture = false;\n        }\n      }\n    }\n  };\n  this.setRenderTargetFramebuffer = function(renderTarget, defaultFramebuffer) {\n    const renderTargetProperties = properties.get(renderTarget);\n    renderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n    renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === void 0;\n  };\n  this.setRenderTarget = function(renderTarget, activeCubeFace = 0, activeMipmapLevel = 0) {\n    _currentRenderTarget = renderTarget;\n    _currentActiveCubeFace = activeCubeFace;\n    _currentActiveMipmapLevel = activeMipmapLevel;\n    let useDefaultFramebuffer = true;\n    let framebuffer = null;\n    let isCube = false;\n    let isRenderTarget3D = false;\n    if (renderTarget) {\n      const renderTargetProperties = properties.get(renderTarget);\n      if (renderTargetProperties.__useDefaultFramebuffer !== void 0) {\n        state.bindFramebuffer(36160, null);\n        useDefaultFramebuffer = false;\n      } else if (renderTargetProperties.__webglFramebuffer === void 0) {\n        textures.setupRenderTarget(renderTarget);\n      } else if (renderTargetProperties.__hasExternalTextures) {\n        textures.rebindTextures(renderTarget, properties.get(renderTarget.texture).__webglTexture, properties.get(renderTarget.depthTexture).__webglTexture);\n      }\n      const texture = renderTarget.texture;\n      if (texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture) {\n        isRenderTarget3D = true;\n      }\n      const __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer;\n      if (renderTarget.isWebGLCubeRenderTarget) {\n        framebuffer = __webglFramebuffer[activeCubeFace];\n        isCube = true;\n      } else if (capabilities.isWebGL2 && renderTarget.samples > 0 && textures.useMultisampledRTT(renderTarget) === false) {\n        framebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer;\n      } else {\n        framebuffer = __webglFramebuffer;\n      }\n      _currentViewport.copy(renderTarget.viewport);\n      _currentScissor.copy(renderTarget.scissor);\n      _currentScissorTest = renderTarget.scissorTest;\n    } else {\n      _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor();\n      _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor();\n      _currentScissorTest = _scissorTest;\n    }\n    const framebufferBound = state.bindFramebuffer(36160, framebuffer);\n    if (framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer) {\n      state.drawBuffers(renderTarget, framebuffer);\n    }\n    state.viewport(_currentViewport);\n    state.scissor(_currentScissor);\n    state.setScissorTest(_currentScissorTest);\n    if (isCube) {\n      const textureProperties = properties.get(renderTarget.texture);\n      _gl.framebufferTexture2D(36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel);\n    } else if (isRenderTarget3D) {\n      const textureProperties = properties.get(renderTarget.texture);\n      const layer = activeCubeFace || 0;\n      _gl.framebufferTextureLayer(36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer);\n    }\n    _currentMaterialId = -1;\n  };\n  this.readRenderTargetPixels = function(renderTarget, x2, y, width, height, buffer, activeCubeFaceIndex) {\n    if (!(renderTarget && renderTarget.isWebGLRenderTarget)) {\n      console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.\");\n      return;\n    }\n    let framebuffer = properties.get(renderTarget).__webglFramebuffer;\n    if (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== void 0) {\n      framebuffer = framebuffer[activeCubeFaceIndex];\n    }\n    if (framebuffer) {\n      state.bindFramebuffer(36160, framebuffer);\n      try {\n        const texture = renderTarget.texture;\n        const textureFormat = texture.format;\n        const textureType = texture.type;\n        if (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== _gl.getParameter(35739)) {\n          console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.\");\n          return;\n        }\n        const halfFloatSupportedByExt = textureType === HalfFloatType && (extensions.has(\"EXT_color_buffer_half_float\") || capabilities.isWebGL2 && extensions.has(\"EXT_color_buffer_float\"));\n        if (textureType !== UnsignedByteType && utils.convert(textureType) !== _gl.getParameter(35738) && // Edge and Chrome Mac < 52 (#9513)\n        !(textureType === FloatType && (capabilities.isWebGL2 || extensions.has(\"OES_texture_float\") || extensions.has(\"WEBGL_color_buffer_float\"))) && // Chrome Mac >= 52 and Firefox\n        !halfFloatSupportedByExt) {\n          console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.\");\n          return;\n        }\n        if (x2 >= 0 && x2 <= renderTarget.width - width && (y >= 0 && y <= renderTarget.height - height)) {\n          _gl.readPixels(x2, y, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer);\n        }\n      } finally {\n        const framebuffer2 = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null;\n        state.bindFramebuffer(36160, framebuffer2);\n      }\n    }\n  };\n  this.copyFramebufferToTexture = function(position, texture, level = 0) {\n    const levelScale = Math.pow(2, -level);\n    const width = Math.floor(texture.image.width * levelScale);\n    const height = Math.floor(texture.image.height * levelScale);\n    textures.setTexture2D(texture, 0);\n    _gl.copyTexSubImage2D(3553, level, 0, 0, position.x, position.y, width, height);\n    state.unbindTexture();\n  };\n  this.copyTextureToTexture = function(position, srcTexture, dstTexture, level = 0) {\n    const width = srcTexture.image.width;\n    const height = srcTexture.image.height;\n    const glFormat = utils.convert(dstTexture.format);\n    const glType = utils.convert(dstTexture.type);\n    textures.setTexture2D(dstTexture, 0);\n    _gl.pixelStorei(37440, dstTexture.flipY);\n    _gl.pixelStorei(37441, dstTexture.premultiplyAlpha);\n    _gl.pixelStorei(3317, dstTexture.unpackAlignment);\n    if (srcTexture.isDataTexture) {\n      _gl.texSubImage2D(3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data);\n    } else {\n      if (srcTexture.isCompressedTexture) {\n        _gl.compressedTexSubImage2D(3553, level, position.x, position.y, srcTexture.mipmaps[0].width, srcTexture.mipmaps[0].height, glFormat, srcTexture.mipmaps[0].data);\n      } else {\n        _gl.texSubImage2D(3553, level, position.x, position.y, glFormat, glType, srcTexture.image);\n      }\n    }\n    if (level === 0 && dstTexture.generateMipmaps)\n      _gl.generateMipmap(3553);\n    state.unbindTexture();\n  };\n  this.copyTextureToTexture3D = function(sourceBox, position, srcTexture, dstTexture, level = 0) {\n    if (_this.isWebGL1Renderer) {\n      console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.\");\n      return;\n    }\n    const width = sourceBox.max.x - sourceBox.min.x + 1;\n    const height = sourceBox.max.y - sourceBox.min.y + 1;\n    const depth = sourceBox.max.z - sourceBox.min.z + 1;\n    const glFormat = utils.convert(dstTexture.format);\n    const glType = utils.convert(dstTexture.type);\n    let glTarget;\n    if (dstTexture.isData3DTexture) {\n      textures.setTexture3D(dstTexture, 0);\n      glTarget = 32879;\n    } else if (dstTexture.isDataArrayTexture) {\n      textures.setTexture2DArray(dstTexture, 0);\n      glTarget = 35866;\n    } else {\n      console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.\");\n      return;\n    }\n    _gl.pixelStorei(37440, dstTexture.flipY);\n    _gl.pixelStorei(37441, dstTexture.premultiplyAlpha);\n    _gl.pixelStorei(3317, dstTexture.unpackAlignment);\n    const unpackRowLen = _gl.getParameter(3314);\n    const unpackImageHeight = _gl.getParameter(32878);\n    const unpackSkipPixels = _gl.getParameter(3316);\n    const unpackSkipRows = _gl.getParameter(3315);\n    const unpackSkipImages = _gl.getParameter(32877);\n    const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[0] : srcTexture.image;\n    _gl.pixelStorei(3314, image.width);\n    _gl.pixelStorei(32878, image.height);\n    _gl.pixelStorei(3316, sourceBox.min.x);\n    _gl.pixelStorei(3315, sourceBox.min.y);\n    _gl.pixelStorei(32877, sourceBox.min.z);\n    if (srcTexture.isDataTexture || srcTexture.isData3DTexture) {\n      _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data);\n    } else {\n      if (srcTexture.isCompressedArrayTexture) {\n        console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.\");\n        _gl.compressedTexSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data);\n      } else {\n        _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image);\n      }\n    }\n    _gl.pixelStorei(3314, unpackRowLen);\n    _gl.pixelStorei(32878, unpackImageHeight);\n    _gl.pixelStorei(3316, unpackSkipPixels);\n    _gl.pixelStorei(3315, unpackSkipRows);\n    _gl.pixelStorei(32877, unpackSkipImages);\n    if (level === 0 && dstTexture.generateMipmaps)\n      _gl.generateMipmap(glTarget);\n    state.unbindTexture();\n  };\n  this.initTexture = function(texture) {\n    if (texture.isCubeTexture) {\n      textures.setTextureCube(texture, 0);\n    } else if (texture.isData3DTexture) {\n      textures.setTexture3D(texture, 0);\n    } else if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) {\n      textures.setTexture2DArray(texture, 0);\n    } else {\n      textures.setTexture2D(texture, 0);\n    }\n    state.unbindTexture();\n  };\n  this.resetState = function() {\n    _currentActiveCubeFace = 0;\n    _currentActiveMipmapLevel = 0;\n    _currentRenderTarget = null;\n    state.reset();\n    bindingStates.reset();\n  };\n  if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n    __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", { detail: this }));\n  }\n}\nvar WebGL1Renderer = class extends WebGLRenderer {\n};\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\nvar Scene = class extends Object3D {\n  constructor() {\n    super();\n    this.isScene = true;\n    this.type = \"Scene\";\n    this.background = null;\n    this.environment = null;\n    this.fog = null;\n    this.backgroundBlurriness = 0;\n    this.overrideMaterial = null;\n    if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n      __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", { detail: this }));\n    }\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    if (source.background !== null)\n      this.background = source.background.clone();\n    if (source.environment !== null)\n      this.environment = source.environment.clone();\n    if (source.fog !== null)\n      this.fog = source.fog.clone();\n    this.backgroundBlurriness = source.backgroundBlurriness;\n    if (source.overrideMaterial !== null)\n      this.overrideMaterial = source.overrideMaterial.clone();\n    this.matrixAutoUpdate = source.matrixAutoUpdate;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    if (this.fog !== null)\n      data.object.fog = this.fog.toJSON();\n    if (this.backgroundBlurriness > 0)\n      data.backgroundBlurriness = this.backgroundBlurriness;\n    return data;\n  }\n  // @deprecated\n  get autoUpdate() {\n    console.warn(\"THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.\");\n    return this.matrixWorldAutoUpdate;\n  }\n  set autoUpdate(value) {\n    console.warn(\"THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144.\");\n    this.matrixWorldAutoUpdate = value;\n  }\n};\nvar InterleavedBuffer = class {\n  constructor(array, stride) {\n    this.isInterleavedBuffer = true;\n    this.array = array;\n    this.stride = stride;\n    this.count = array !== void 0 ? array.length / stride : 0;\n    this.usage = StaticDrawUsage;\n    this.updateRange = { offset: 0, count: -1 };\n    this.version = 0;\n    this.uuid = generateUUID();\n  }\n  onUploadCallback() {\n  }\n  set needsUpdate(value) {\n    if (value === true)\n      this.version++;\n  }\n  setUsage(value) {\n    this.usage = value;\n    return this;\n  }\n  copy(source) {\n    this.array = new source.array.constructor(source.array);\n    this.count = source.count;\n    this.stride = source.stride;\n    this.usage = source.usage;\n    return this;\n  }\n  copyAt(index1, attribute, index2) {\n    index1 *= this.stride;\n    index2 *= attribute.stride;\n    for (let i = 0, l = this.stride; i < l; i++) {\n      this.array[index1 + i] = attribute.array[index2 + i];\n    }\n    return this;\n  }\n  set(value, offset = 0) {\n    this.array.set(value, offset);\n    return this;\n  }\n  clone(data) {\n    if (data.arrayBuffers === void 0) {\n      data.arrayBuffers = {};\n    }\n    if (this.array.buffer._uuid === void 0) {\n      this.array.buffer._uuid = generateUUID();\n    }\n    if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n      data.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer;\n    }\n    const array = new this.array.constructor(data.arrayBuffers[this.array.buffer._uuid]);\n    const ib = new this.constructor(array, this.stride);\n    ib.setUsage(this.usage);\n    return ib;\n  }\n  onUpload(callback) {\n    this.onUploadCallback = callback;\n    return this;\n  }\n  toJSON(data) {\n    if (data.arrayBuffers === void 0) {\n      data.arrayBuffers = {};\n    }\n    if (this.array.buffer._uuid === void 0) {\n      this.array.buffer._uuid = generateUUID();\n    }\n    if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n      data.arrayBuffers[this.array.buffer._uuid] = Array.from(new Uint32Array(this.array.buffer));\n    }\n    return {\n      uuid: this.uuid,\n      buffer: this.array.buffer._uuid,\n      type: this.array.constructor.name,\n      stride: this.stride\n    };\n  }\n};\nvar _vector$6 = new Vector3();\nvar InterleavedBufferAttribute = class _InterleavedBufferAttribute {\n  constructor(interleavedBuffer, itemSize, offset, normalized = false) {\n    this.isInterleavedBufferAttribute = true;\n    this.name = \"\";\n    this.data = interleavedBuffer;\n    this.itemSize = itemSize;\n    this.offset = offset;\n    this.normalized = normalized === true;\n  }\n  get count() {\n    return this.data.count;\n  }\n  get array() {\n    return this.data.array;\n  }\n  set needsUpdate(value) {\n    this.data.needsUpdate = value;\n  }\n  applyMatrix4(m) {\n    for (let i = 0, l = this.data.count; i < l; i++) {\n      _vector$6.fromBufferAttribute(this, i);\n      _vector$6.applyMatrix4(m);\n      this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  applyNormalMatrix(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$6.fromBufferAttribute(this, i);\n      _vector$6.applyNormalMatrix(m);\n      this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  transformDirection(m) {\n    for (let i = 0, l = this.count; i < l; i++) {\n      _vector$6.fromBufferAttribute(this, i);\n      _vector$6.transformDirection(m);\n      this.setXYZ(i, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  setX(index, x2) {\n    if (this.normalized)\n      x2 = normalize(x2, this.array);\n    this.data.array[index * this.data.stride + this.offset] = x2;\n    return this;\n  }\n  setY(index, y) {\n    if (this.normalized)\n      y = normalize(y, this.array);\n    this.data.array[index * this.data.stride + this.offset + 1] = y;\n    return this;\n  }\n  setZ(index, z) {\n    if (this.normalized)\n      z = normalize(z, this.array);\n    this.data.array[index * this.data.stride + this.offset + 2] = z;\n    return this;\n  }\n  setW(index, w) {\n    if (this.normalized)\n      w = normalize(w, this.array);\n    this.data.array[index * this.data.stride + this.offset + 3] = w;\n    return this;\n  }\n  getX(index) {\n    let x2 = this.data.array[index * this.data.stride + this.offset];\n    if (this.normalized)\n      x2 = denormalize(x2, this.array);\n    return x2;\n  }\n  getY(index) {\n    let y = this.data.array[index * this.data.stride + this.offset + 1];\n    if (this.normalized)\n      y = denormalize(y, this.array);\n    return y;\n  }\n  getZ(index) {\n    let z = this.data.array[index * this.data.stride + this.offset + 2];\n    if (this.normalized)\n      z = denormalize(z, this.array);\n    return z;\n  }\n  getW(index) {\n    let w = this.data.array[index * this.data.stride + this.offset + 3];\n    if (this.normalized)\n      w = denormalize(w, this.array);\n    return w;\n  }\n  setXY(index, x2, y) {\n    index = index * this.data.stride + this.offset;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y = normalize(y, this.array);\n    }\n    this.data.array[index + 0] = x2;\n    this.data.array[index + 1] = y;\n    return this;\n  }\n  setXYZ(index, x2, y, z) {\n    index = index * this.data.stride + this.offset;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n    }\n    this.data.array[index + 0] = x2;\n    this.data.array[index + 1] = y;\n    this.data.array[index + 2] = z;\n    return this;\n  }\n  setXYZW(index, x2, y, z, w) {\n    index = index * this.data.stride + this.offset;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y = normalize(y, this.array);\n      z = normalize(z, this.array);\n      w = normalize(w, this.array);\n    }\n    this.data.array[index + 0] = x2;\n    this.data.array[index + 1] = y;\n    this.data.array[index + 2] = z;\n    this.data.array[index + 3] = w;\n    return this;\n  }\n  clone(data) {\n    if (data === void 0) {\n      console.log(\"THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will deinterleave buffer data.\");\n      const array = [];\n      for (let i = 0; i < this.count; i++) {\n        const index = i * this.data.stride + this.offset;\n        for (let j = 0; j < this.itemSize; j++) {\n          array.push(this.data.array[index + j]);\n        }\n      }\n      return new BufferAttribute(new this.array.constructor(array), this.itemSize, this.normalized);\n    } else {\n      if (data.interleavedBuffers === void 0) {\n        data.interleavedBuffers = {};\n      }\n      if (data.interleavedBuffers[this.data.uuid] === void 0) {\n        data.interleavedBuffers[this.data.uuid] = this.data.clone(data);\n      }\n      return new _InterleavedBufferAttribute(data.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized);\n    }\n  }\n  toJSON(data) {\n    if (data === void 0) {\n      console.log(\"THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will deinterleave buffer data.\");\n      const array = [];\n      for (let i = 0; i < this.count; i++) {\n        const index = i * this.data.stride + this.offset;\n        for (let j = 0; j < this.itemSize; j++) {\n          array.push(this.data.array[index + j]);\n        }\n      }\n      return {\n        itemSize: this.itemSize,\n        type: this.array.constructor.name,\n        array,\n        normalized: this.normalized\n      };\n    } else {\n      if (data.interleavedBuffers === void 0) {\n        data.interleavedBuffers = {};\n      }\n      if (data.interleavedBuffers[this.data.uuid] === void 0) {\n        data.interleavedBuffers[this.data.uuid] = this.data.toJSON(data);\n      }\n      return {\n        isInterleavedBufferAttribute: true,\n        itemSize: this.itemSize,\n        data: this.data.uuid,\n        offset: this.offset,\n        normalized: this.normalized\n      };\n    }\n  }\n};\nvar _intersectPoint = new Vector3();\nvar _worldScale = new Vector3();\nvar _mvPosition = new Vector3();\nvar _alignedPosition = new Vector2();\nvar _rotatedPosition = new Vector2();\nvar _viewWorldMatrix = new Matrix4();\nvar _vA = new Vector3();\nvar _vB = new Vector3();\nvar _vC = new Vector3();\nvar _uvA = new Vector2();\nvar _uvB = new Vector2();\nvar _uvC = new Vector2();\nvar _v1$2 = new Vector3();\nvar _v2$1 = new Vector3();\nvar _basePosition = new Vector3();\nvar _skinIndex = new Vector4();\nvar _skinWeight = new Vector4();\nvar _vector$5 = new Vector3();\nvar _matrix = new Matrix4();\nvar SkinnedMesh = class extends Mesh {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isSkinnedMesh = true;\n    this.type = \"SkinnedMesh\";\n    this.bindMode = \"attached\";\n    this.bindMatrix = new Matrix4();\n    this.bindMatrixInverse = new Matrix4();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.bindMode = source.bindMode;\n    this.bindMatrix.copy(source.bindMatrix);\n    this.bindMatrixInverse.copy(source.bindMatrixInverse);\n    this.skeleton = source.skeleton;\n    return this;\n  }\n  bind(skeleton, bindMatrix) {\n    this.skeleton = skeleton;\n    if (bindMatrix === void 0) {\n      this.updateMatrixWorld(true);\n      this.skeleton.calculateInverses();\n      bindMatrix = this.matrixWorld;\n    }\n    this.bindMatrix.copy(bindMatrix);\n    this.bindMatrixInverse.copy(bindMatrix).invert();\n  }\n  pose() {\n    this.skeleton.pose();\n  }\n  normalizeSkinWeights() {\n    const vector = new Vector4();\n    const skinWeight = this.geometry.attributes.skinWeight;\n    for (let i = 0, l = skinWeight.count; i < l; i++) {\n      vector.fromBufferAttribute(skinWeight, i);\n      const scale = 1 / vector.manhattanLength();\n      if (scale !== Infinity) {\n        vector.multiplyScalar(scale);\n      } else {\n        vector.set(1, 0, 0, 0);\n      }\n      skinWeight.setXYZW(i, vector.x, vector.y, vector.z, vector.w);\n    }\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    if (this.bindMode === \"attached\") {\n      this.bindMatrixInverse.copy(this.matrixWorld).invert();\n    } else if (this.bindMode === \"detached\") {\n      this.bindMatrixInverse.copy(this.bindMatrix).invert();\n    } else {\n      console.warn(\"THREE.SkinnedMesh: Unrecognized bindMode: \" + this.bindMode);\n    }\n  }\n  boneTransform(index, target2) {\n    const skeleton = this.skeleton;\n    const geometry = this.geometry;\n    _skinIndex.fromBufferAttribute(geometry.attributes.skinIndex, index);\n    _skinWeight.fromBufferAttribute(geometry.attributes.skinWeight, index);\n    _basePosition.copy(target2).applyMatrix4(this.bindMatrix);\n    target2.set(0, 0, 0);\n    for (let i = 0; i < 4; i++) {\n      const weight = _skinWeight.getComponent(i);\n      if (weight !== 0) {\n        const boneIndex = _skinIndex.getComponent(i);\n        _matrix.multiplyMatrices(skeleton.bones[boneIndex].matrixWorld, skeleton.boneInverses[boneIndex]);\n        target2.addScaledVector(_vector$5.copy(_basePosition).applyMatrix4(_matrix), weight);\n      }\n    }\n    return target2.applyMatrix4(this.bindMatrixInverse);\n  }\n};\nvar Bone = class extends Object3D {\n  constructor() {\n    super();\n    this.isBone = true;\n    this.type = \"Bone\";\n  }\n};\nvar DataTexture = class extends Texture {\n  constructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding) {\n    super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n    this.isDataTexture = true;\n    this.image = { data, width, height };\n    this.generateMipmaps = false;\n    this.flipY = false;\n    this.unpackAlignment = 1;\n  }\n};\nvar _offsetMatrix = new Matrix4();\nvar _identityMatrix = new Matrix4();\nvar Skeleton = class _Skeleton {\n  constructor(bones = [], boneInverses = []) {\n    this.uuid = generateUUID();\n    this.bones = bones.slice(0);\n    this.boneInverses = boneInverses;\n    this.boneMatrices = null;\n    this.boneTexture = null;\n    this.boneTextureSize = 0;\n    this.frame = -1;\n    this.init();\n  }\n  init() {\n    const bones = this.bones;\n    const boneInverses = this.boneInverses;\n    this.boneMatrices = new Float32Array(bones.length * 16);\n    if (boneInverses.length === 0) {\n      this.calculateInverses();\n    } else {\n      if (bones.length !== boneInverses.length) {\n        console.warn(\"THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.\");\n        this.boneInverses = [];\n        for (let i = 0, il = this.bones.length; i < il; i++) {\n          this.boneInverses.push(new Matrix4());\n        }\n      }\n    }\n  }\n  calculateInverses() {\n    this.boneInverses.length = 0;\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const inverse = new Matrix4();\n      if (this.bones[i]) {\n        inverse.copy(this.bones[i].matrixWorld).invert();\n      }\n      this.boneInverses.push(inverse);\n    }\n  }\n  pose() {\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const bone = this.bones[i];\n      if (bone) {\n        bone.matrixWorld.copy(this.boneInverses[i]).invert();\n      }\n    }\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const bone = this.bones[i];\n      if (bone) {\n        if (bone.parent && bone.parent.isBone) {\n          bone.matrix.copy(bone.parent.matrixWorld).invert();\n          bone.matrix.multiply(bone.matrixWorld);\n        } else {\n          bone.matrix.copy(bone.matrixWorld);\n        }\n        bone.matrix.decompose(bone.position, bone.quaternion, bone.scale);\n      }\n    }\n  }\n  update() {\n    const bones = this.bones;\n    const boneInverses = this.boneInverses;\n    const boneMatrices = this.boneMatrices;\n    const boneTexture = this.boneTexture;\n    for (let i = 0, il = bones.length; i < il; i++) {\n      const matrix = bones[i] ? bones[i].matrixWorld : _identityMatrix;\n      _offsetMatrix.multiplyMatrices(matrix, boneInverses[i]);\n      _offsetMatrix.toArray(boneMatrices, i * 16);\n    }\n    if (boneTexture !== null) {\n      boneTexture.needsUpdate = true;\n    }\n  }\n  clone() {\n    return new _Skeleton(this.bones, this.boneInverses);\n  }\n  computeBoneTexture() {\n    let size = Math.sqrt(this.bones.length * 4);\n    size = ceilPowerOfTwo(size);\n    size = Math.max(size, 4);\n    const boneMatrices = new Float32Array(size * size * 4);\n    boneMatrices.set(this.boneMatrices);\n    const boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType);\n    boneTexture.needsUpdate = true;\n    this.boneMatrices = boneMatrices;\n    this.boneTexture = boneTexture;\n    this.boneTextureSize = size;\n    return this;\n  }\n  getBoneByName(name) {\n    for (let i = 0, il = this.bones.length; i < il; i++) {\n      const bone = this.bones[i];\n      if (bone.name === name) {\n        return bone;\n      }\n    }\n    return void 0;\n  }\n  dispose() {\n    if (this.boneTexture !== null) {\n      this.boneTexture.dispose();\n      this.boneTexture = null;\n    }\n  }\n  fromJSON(json, bones) {\n    this.uuid = json.uuid;\n    for (let i = 0, l = json.bones.length; i < l; i++) {\n      const uuid = json.bones[i];\n      let bone = bones[uuid];\n      if (bone === void 0) {\n        console.warn(\"THREE.Skeleton: No bone found with UUID:\", uuid);\n        bone = new Bone();\n      }\n      this.bones.push(bone);\n      this.boneInverses.push(new Matrix4().fromArray(json.boneInverses[i]));\n    }\n    this.init();\n    return this;\n  }\n  toJSON() {\n    const data = {\n      metadata: {\n        version: 4.5,\n        type: \"Skeleton\",\n        generator: \"Skeleton.toJSON\"\n      },\n      bones: [],\n      boneInverses: []\n    };\n    data.uuid = this.uuid;\n    const bones = this.bones;\n    const boneInverses = this.boneInverses;\n    for (let i = 0, l = bones.length; i < l; i++) {\n      const bone = bones[i];\n      data.bones.push(bone.uuid);\n      const boneInverse = boneInverses[i];\n      data.boneInverses.push(boneInverse.toArray());\n    }\n    return data;\n  }\n};\nvar InstancedBufferAttribute = class extends BufferAttribute {\n  constructor(array, itemSize, normalized, meshPerAttribute = 1) {\n    super(array, itemSize, normalized);\n    this.isInstancedBufferAttribute = true;\n    this.meshPerAttribute = meshPerAttribute;\n  }\n  copy(source) {\n    super.copy(source);\n    this.meshPerAttribute = source.meshPerAttribute;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.meshPerAttribute = this.meshPerAttribute;\n    data.isInstancedBufferAttribute = true;\n    return data;\n  }\n};\nvar _instanceLocalMatrix = new Matrix4();\nvar _instanceWorldMatrix = new Matrix4();\nvar _instanceIntersects = [];\nvar _identity = new Matrix4();\nvar _mesh = new Mesh();\nvar InstancedMesh = class extends Mesh {\n  constructor(geometry, material, count) {\n    super(geometry, material);\n    this.isInstancedMesh = true;\n    this.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16);\n    this.instanceColor = null;\n    this.count = count;\n    this.frustumCulled = false;\n    for (let i = 0; i < count; i++) {\n      this.setMatrixAt(i, _identity);\n    }\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.instanceMatrix.copy(source.instanceMatrix);\n    if (source.instanceColor !== null)\n      this.instanceColor = source.instanceColor.clone();\n    this.count = source.count;\n    return this;\n  }\n  getColorAt(index, color) {\n    color.fromArray(this.instanceColor.array, index * 3);\n  }\n  getMatrixAt(index, matrix) {\n    matrix.fromArray(this.instanceMatrix.array, index * 16);\n  }\n  raycast(raycaster2, intersects2) {\n    const matrixWorld = this.matrixWorld;\n    const raycastTimes = this.count;\n    _mesh.geometry = this.geometry;\n    _mesh.material = this.material;\n    if (_mesh.material === void 0)\n      return;\n    for (let instanceId = 0; instanceId < raycastTimes; instanceId++) {\n      this.getMatrixAt(instanceId, _instanceLocalMatrix);\n      _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n      _mesh.matrixWorld = _instanceWorldMatrix;\n      _mesh.raycast(raycaster2, _instanceIntersects);\n      for (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n        const intersect = _instanceIntersects[i];\n        intersect.instanceId = instanceId;\n        intersect.object = this;\n        intersects2.push(intersect);\n      }\n      _instanceIntersects.length = 0;\n    }\n  }\n  setColorAt(index, color) {\n    if (this.instanceColor === null) {\n      this.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3), 3);\n    }\n    color.toArray(this.instanceColor.array, index * 3);\n  }\n  setMatrixAt(index, matrix) {\n    matrix.toArray(this.instanceMatrix.array, index * 16);\n  }\n  updateMorphTargets() {\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n};\nvar LineBasicMaterial = class extends Material {\n  constructor(parameters) {\n    super();\n    this.isLineBasicMaterial = true;\n    this.type = \"LineBasicMaterial\";\n    this.color = new Color(16777215);\n    this.linewidth = 1;\n    this.linecap = \"round\";\n    this.linejoin = \"round\";\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.linewidth = source.linewidth;\n    this.linecap = source.linecap;\n    this.linejoin = source.linejoin;\n    this.fog = source.fog;\n    return this;\n  }\n};\nvar _start$1 = new Vector3();\nvar _end$1 = new Vector3();\nvar _inverseMatrix$1 = new Matrix4();\nvar _ray$1 = new Ray();\nvar _sphere$1 = new Sphere();\nvar Line = class extends Object3D {\n  constructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) {\n    super();\n    this.isLine = true;\n    this.type = \"Line\";\n    this.geometry = geometry;\n    this.material = material;\n    this.updateMorphTargets();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.material = source.material;\n    this.geometry = source.geometry;\n    return this;\n  }\n  computeLineDistances() {\n    const geometry = this.geometry;\n    if (geometry.index === null) {\n      const positionAttribute = geometry.attributes.position;\n      const lineDistances = [0];\n      for (let i = 1, l = positionAttribute.count; i < l; i++) {\n        _start$1.fromBufferAttribute(positionAttribute, i - 1);\n        _end$1.fromBufferAttribute(positionAttribute, i);\n        lineDistances[i] = lineDistances[i - 1];\n        lineDistances[i] += _start$1.distanceTo(_end$1);\n      }\n      geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n    } else {\n      console.warn(\"THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n    }\n    return this;\n  }\n  raycast(raycaster2, intersects2) {\n    const geometry = this.geometry;\n    const matrixWorld = this.matrixWorld;\n    const threshold = raycaster2.params.Line.threshold;\n    const drawRange = geometry.drawRange;\n    if (geometry.boundingSphere === null)\n      geometry.computeBoundingSphere();\n    _sphere$1.copy(geometry.boundingSphere);\n    _sphere$1.applyMatrix4(matrixWorld);\n    _sphere$1.radius += threshold;\n    if (raycaster2.ray.intersectsSphere(_sphere$1) === false)\n      return;\n    _inverseMatrix$1.copy(matrixWorld).invert();\n    _ray$1.copy(raycaster2.ray).applyMatrix4(_inverseMatrix$1);\n    const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n    const localThresholdSq = localThreshold * localThreshold;\n    const vStart = new Vector3();\n    const vEnd = new Vector3();\n    const interSegment = new Vector3();\n    const interRay = new Vector3();\n    const step = this.isLineSegments ? 2 : 1;\n    const index = geometry.index;\n    const attributes = geometry.attributes;\n    const positionAttribute = attributes.position;\n    if (index !== null) {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(index.count, drawRange.start + drawRange.count);\n      for (let i = start, l = end - 1; i < l; i += step) {\n        const a = index.getX(i);\n        const b = index.getX(i + 1);\n        vStart.fromBufferAttribute(positionAttribute, a);\n        vEnd.fromBufferAttribute(positionAttribute, b);\n        const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n        if (distSq > localThresholdSq)\n          continue;\n        interRay.applyMatrix4(this.matrixWorld);\n        const distance = raycaster2.ray.origin.distanceTo(interRay);\n        if (distance < raycaster2.near || distance > raycaster2.far)\n          continue;\n        intersects2.push({\n          distance,\n          // What do we want? intersection point on the ray or on the segment??\n          // point: raycaster.ray.at( distance ),\n          point: interSegment.clone().applyMatrix4(this.matrixWorld),\n          index: i,\n          face: null,\n          faceIndex: null,\n          object: this\n        });\n      }\n    } else {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n      for (let i = start, l = end - 1; i < l; i += step) {\n        vStart.fromBufferAttribute(positionAttribute, i);\n        vEnd.fromBufferAttribute(positionAttribute, i + 1);\n        const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n        if (distSq > localThresholdSq)\n          continue;\n        interRay.applyMatrix4(this.matrixWorld);\n        const distance = raycaster2.ray.origin.distanceTo(interRay);\n        if (distance < raycaster2.near || distance > raycaster2.far)\n          continue;\n        intersects2.push({\n          distance,\n          // What do we want? intersection point on the ray or on the segment??\n          // point: raycaster.ray.at( distance ),\n          point: interSegment.clone().applyMatrix4(this.matrixWorld),\n          index: i,\n          face: null,\n          faceIndex: null,\n          object: this\n        });\n      }\n    }\n  }\n  updateMorphTargets() {\n    const geometry = this.geometry;\n    const morphAttributes = geometry.morphAttributes;\n    const keys = Object.keys(morphAttributes);\n    if (keys.length > 0) {\n      const morphAttribute = morphAttributes[keys[0]];\n      if (morphAttribute !== void 0) {\n        this.morphTargetInfluences = [];\n        this.morphTargetDictionary = {};\n        for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n          const name = morphAttribute[m].name || String(m);\n          this.morphTargetInfluences.push(0);\n          this.morphTargetDictionary[name] = m;\n        }\n      }\n    }\n  }\n};\nvar _start = new Vector3();\nvar _end = new Vector3();\nvar LineSegments = class extends Line {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isLineSegments = true;\n    this.type = \"LineSegments\";\n  }\n  computeLineDistances() {\n    const geometry = this.geometry;\n    if (geometry.index === null) {\n      const positionAttribute = geometry.attributes.position;\n      const lineDistances = [];\n      for (let i = 0, l = positionAttribute.count; i < l; i += 2) {\n        _start.fromBufferAttribute(positionAttribute, i);\n        _end.fromBufferAttribute(positionAttribute, i + 1);\n        lineDistances[i] = i === 0 ? 0 : lineDistances[i - 1];\n        lineDistances[i + 1] = lineDistances[i] + _start.distanceTo(_end);\n      }\n      geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n    } else {\n      console.warn(\"THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n    }\n    return this;\n  }\n};\nvar LineLoop = class extends Line {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isLineLoop = true;\n    this.type = \"LineLoop\";\n  }\n};\nvar PointsMaterial = class extends Material {\n  constructor(parameters) {\n    super();\n    this.isPointsMaterial = true;\n    this.type = \"PointsMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.alphaMap = null;\n    this.size = 1;\n    this.sizeAttenuation = true;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.size = source.size;\n    this.sizeAttenuation = source.sizeAttenuation;\n    this.fog = source.fog;\n    return this;\n  }\n};\nvar _inverseMatrix = new Matrix4();\nvar _ray = new Ray();\nvar _sphere = new Sphere();\nvar _position$2 = new Vector3();\nvar Points = class extends Object3D {\n  constructor(geometry = new BufferGeometry(), material = new PointsMaterial()) {\n    super();\n    this.isPoints = true;\n    this.type = \"Points\";\n    this.geometry = geometry;\n    this.material = material;\n    this.updateMorphTargets();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.material = source.material;\n    this.geometry = source.geometry;\n    return this;\n  }\n  raycast(raycaster2, intersects2) {\n    const geometry = this.geometry;\n    const matrixWorld = this.matrixWorld;\n    const threshold = raycaster2.params.Points.threshold;\n    const drawRange = geometry.drawRange;\n    if (geometry.boundingSphere === null)\n      geometry.computeBoundingSphere();\n    _sphere.copy(geometry.boundingSphere);\n    _sphere.applyMatrix4(matrixWorld);\n    _sphere.radius += threshold;\n    if (raycaster2.ray.intersectsSphere(_sphere) === false)\n      return;\n    _inverseMatrix.copy(matrixWorld).invert();\n    _ray.copy(raycaster2.ray).applyMatrix4(_inverseMatrix);\n    const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n    const localThresholdSq = localThreshold * localThreshold;\n    const index = geometry.index;\n    const attributes = geometry.attributes;\n    const positionAttribute = attributes.position;\n    if (index !== null) {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(index.count, drawRange.start + drawRange.count);\n      for (let i = start, il = end; i < il; i++) {\n        const a = index.getX(i);\n        _position$2.fromBufferAttribute(positionAttribute, a);\n        testPoint(_position$2, a, localThresholdSq, matrixWorld, raycaster2, intersects2, this);\n      }\n    } else {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n      for (let i = start, l = end; i < l; i++) {\n        _position$2.fromBufferAttribute(positionAttribute, i);\n        testPoint(_position$2, i, localThresholdSq, matrixWorld, raycaster2, intersects2, this);\n      }\n    }\n  }\n  updateMorphTargets() {\n    const geometry = this.geometry;\n    const morphAttributes = geometry.morphAttributes;\n    const keys = Object.keys(morphAttributes);\n    if (keys.length > 0) {\n      const morphAttribute = morphAttributes[keys[0]];\n      if (morphAttribute !== void 0) {\n        this.morphTargetInfluences = [];\n        this.morphTargetDictionary = {};\n        for (let m = 0, ml = morphAttribute.length; m < ml; m++) {\n          const name = morphAttribute[m].name || String(m);\n          this.morphTargetInfluences.push(0);\n          this.morphTargetDictionary[name] = m;\n        }\n      }\n    }\n  }\n};\nfunction testPoint(point, index, localThresholdSq, matrixWorld, raycaster2, intersects2, object) {\n  const rayPointDistanceSq = _ray.distanceSqToPoint(point);\n  if (rayPointDistanceSq < localThresholdSq) {\n    const intersectPoint = new Vector3();\n    _ray.closestPointToPoint(point, intersectPoint);\n    intersectPoint.applyMatrix4(matrixWorld);\n    const distance = raycaster2.ray.origin.distanceTo(intersectPoint);\n    if (distance < raycaster2.near || distance > raycaster2.far)\n      return;\n    intersects2.push({\n      distance,\n      distanceToRay: Math.sqrt(rayPointDistanceSq),\n      point: intersectPoint,\n      index,\n      face: null,\n      object\n    });\n  }\n}\nvar CompressedTexture = class extends Texture {\n  constructor(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding) {\n    super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding);\n    this.isCompressedTexture = true;\n    this.image = { width, height };\n    this.mipmaps = mipmaps;\n    this.flipY = false;\n    this.generateMipmaps = false;\n  }\n};\nvar CompressedArrayTexture = class extends CompressedTexture {\n  constructor(mipmaps, width, height, depth, format, type) {\n    super(mipmaps, width, height, format, type);\n    this.isCompressedArrayTexture = true;\n    this.image.depth = depth;\n    this.wrapR = ClampToEdgeWrapping;\n  }\n};\nvar Curve = class {\n  constructor() {\n    this.type = \"Curve\";\n    this.arcLengthDivisions = 200;\n  }\n  // Virtual base class method to overwrite and implement in subclasses\n  //\t- t [0 .. 1]\n  getPoint() {\n    console.warn(\"THREE.Curve: .getPoint() not implemented.\");\n    return null;\n  }\n  // Get point at relative position in curve according to arc length\n  // - u [0 .. 1]\n  getPointAt(u, optionalTarget) {\n    const t2 = this.getUtoTmapping(u);\n    return this.getPoint(t2, optionalTarget);\n  }\n  // Get sequence of points using getPoint( t )\n  getPoints(divisions = 5) {\n    const points = [];\n    for (let d = 0; d <= divisions; d++) {\n      points.push(this.getPoint(d / divisions));\n    }\n    return points;\n  }\n  // Get sequence of points using getPointAt( u )\n  getSpacedPoints(divisions = 5) {\n    const points = [];\n    for (let d = 0; d <= divisions; d++) {\n      points.push(this.getPointAt(d / divisions));\n    }\n    return points;\n  }\n  // Get total curve arc length\n  getLength() {\n    const lengths = this.getLengths();\n    return lengths[lengths.length - 1];\n  }\n  // Get list of cumulative segment lengths\n  getLengths(divisions = this.arcLengthDivisions) {\n    if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) {\n      return this.cacheArcLengths;\n    }\n    this.needsUpdate = false;\n    const cache2 = [];\n    let current, last = this.getPoint(0);\n    let sum = 0;\n    cache2.push(0);\n    for (let p2 = 1; p2 <= divisions; p2++) {\n      current = this.getPoint(p2 / divisions);\n      sum += current.distanceTo(last);\n      cache2.push(sum);\n      last = current;\n    }\n    this.cacheArcLengths = cache2;\n    return cache2;\n  }\n  updateArcLengths() {\n    this.needsUpdate = true;\n    this.getLengths();\n  }\n  // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n  getUtoTmapping(u, distance) {\n    const arcLengths = this.getLengths();\n    let i = 0;\n    const il = arcLengths.length;\n    let targetArcLength;\n    if (distance) {\n      targetArcLength = distance;\n    } else {\n      targetArcLength = u * arcLengths[il - 1];\n    }\n    let low = 0, high = il - 1, comparison;\n    while (low <= high) {\n      i = Math.floor(low + (high - low) / 2);\n      comparison = arcLengths[i] - targetArcLength;\n      if (comparison < 0) {\n        low = i + 1;\n      } else if (comparison > 0) {\n        high = i - 1;\n      } else {\n        high = i;\n        break;\n      }\n    }\n    i = high;\n    if (arcLengths[i] === targetArcLength) {\n      return i / (il - 1);\n    }\n    const lengthBefore = arcLengths[i];\n    const lengthAfter = arcLengths[i + 1];\n    const segmentLength = lengthAfter - lengthBefore;\n    const segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n    const t2 = (i + segmentFraction) / (il - 1);\n    return t2;\n  }\n  // Returns a unit vector tangent at t\n  // In case any sub curve does not implement its tangent derivation,\n  // 2 points a small delta apart will be used to find its gradient\n  // which seems to give a reasonable approximation\n  getTangent(t2, optionalTarget) {\n    const delta = 1e-4;\n    let t1 = t2 - delta;\n    let t22 = t2 + delta;\n    if (t1 < 0)\n      t1 = 0;\n    if (t22 > 1)\n      t22 = 1;\n    const pt1 = this.getPoint(t1);\n    const pt2 = this.getPoint(t22);\n    const tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3());\n    tangent.copy(pt2).sub(pt1).normalize();\n    return tangent;\n  }\n  getTangentAt(u, optionalTarget) {\n    const t2 = this.getUtoTmapping(u);\n    return this.getTangent(t2, optionalTarget);\n  }\n  computeFrenetFrames(segments, closed) {\n    const normal = new Vector3();\n    const tangents = [];\n    const normals = [];\n    const binormals = [];\n    const vec = new Vector3();\n    const mat = new Matrix4();\n    for (let i = 0; i <= segments; i++) {\n      const u = i / segments;\n      tangents[i] = this.getTangentAt(u, new Vector3());\n    }\n    normals[0] = new Vector3();\n    binormals[0] = new Vector3();\n    let min = Number.MAX_VALUE;\n    const tx = Math.abs(tangents[0].x);\n    const ty = Math.abs(tangents[0].y);\n    const tz = Math.abs(tangents[0].z);\n    if (tx <= min) {\n      min = tx;\n      normal.set(1, 0, 0);\n    }\n    if (ty <= min) {\n      min = ty;\n      normal.set(0, 1, 0);\n    }\n    if (tz <= min) {\n      normal.set(0, 0, 1);\n    }\n    vec.crossVectors(tangents[0], normal).normalize();\n    normals[0].crossVectors(tangents[0], vec);\n    binormals[0].crossVectors(tangents[0], normals[0]);\n    for (let i = 1; i <= segments; i++) {\n      normals[i] = normals[i - 1].clone();\n      binormals[i] = binormals[i - 1].clone();\n      vec.crossVectors(tangents[i - 1], tangents[i]);\n      if (vec.length() > Number.EPSILON) {\n        vec.normalize();\n        const theta = Math.acos(clamp(tangents[i - 1].dot(tangents[i]), -1, 1));\n        normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta));\n      }\n      binormals[i].crossVectors(tangents[i], normals[i]);\n    }\n    if (closed === true) {\n      let theta = Math.acos(clamp(normals[0].dot(normals[segments]), -1, 1));\n      theta /= segments;\n      if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\n        theta = -theta;\n      }\n      for (let i = 1; i <= segments; i++) {\n        normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i));\n        binormals[i].crossVectors(tangents[i], normals[i]);\n      }\n    }\n    return {\n      tangents,\n      normals,\n      binormals\n    };\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.arcLengthDivisions = source.arcLengthDivisions;\n    return this;\n  }\n  toJSON() {\n    const data = {\n      metadata: {\n        version: 4.5,\n        type: \"Curve\",\n        generator: \"Curve.toJSON\"\n      }\n    };\n    data.arcLengthDivisions = this.arcLengthDivisions;\n    data.type = this.type;\n    return data;\n  }\n  fromJSON(json) {\n    this.arcLengthDivisions = json.arcLengthDivisions;\n    return this;\n  }\n};\nvar EllipseCurve = class extends Curve {\n  constructor(aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0) {\n    super();\n    this.isEllipseCurve = true;\n    this.type = \"EllipseCurve\";\n    this.aX = aX;\n    this.aY = aY;\n    this.xRadius = xRadius;\n    this.yRadius = yRadius;\n    this.aStartAngle = aStartAngle;\n    this.aEndAngle = aEndAngle;\n    this.aClockwise = aClockwise;\n    this.aRotation = aRotation;\n  }\n  getPoint(t2, optionalTarget) {\n    const point = optionalTarget || new Vector2();\n    const twoPi = Math.PI * 2;\n    let deltaAngle = this.aEndAngle - this.aStartAngle;\n    const samePoints = Math.abs(deltaAngle) < Number.EPSILON;\n    while (deltaAngle < 0)\n      deltaAngle += twoPi;\n    while (deltaAngle > twoPi)\n      deltaAngle -= twoPi;\n    if (deltaAngle < Number.EPSILON) {\n      if (samePoints) {\n        deltaAngle = 0;\n      } else {\n        deltaAngle = twoPi;\n      }\n    }\n    if (this.aClockwise === true && !samePoints) {\n      if (deltaAngle === twoPi) {\n        deltaAngle = -twoPi;\n      } else {\n        deltaAngle = deltaAngle - twoPi;\n      }\n    }\n    const angle = this.aStartAngle + t2 * deltaAngle;\n    let x2 = this.aX + this.xRadius * Math.cos(angle);\n    let y = this.aY + this.yRadius * Math.sin(angle);\n    if (this.aRotation !== 0) {\n      const cos = Math.cos(this.aRotation);\n      const sin = Math.sin(this.aRotation);\n      const tx = x2 - this.aX;\n      const ty = y - this.aY;\n      x2 = tx * cos - ty * sin + this.aX;\n      y = tx * sin + ty * cos + this.aY;\n    }\n    return point.set(x2, y);\n  }\n  copy(source) {\n    super.copy(source);\n    this.aX = source.aX;\n    this.aY = source.aY;\n    this.xRadius = source.xRadius;\n    this.yRadius = source.yRadius;\n    this.aStartAngle = source.aStartAngle;\n    this.aEndAngle = source.aEndAngle;\n    this.aClockwise = source.aClockwise;\n    this.aRotation = source.aRotation;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.aX = this.aX;\n    data.aY = this.aY;\n    data.xRadius = this.xRadius;\n    data.yRadius = this.yRadius;\n    data.aStartAngle = this.aStartAngle;\n    data.aEndAngle = this.aEndAngle;\n    data.aClockwise = this.aClockwise;\n    data.aRotation = this.aRotation;\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.aX = json.aX;\n    this.aY = json.aY;\n    this.xRadius = json.xRadius;\n    this.yRadius = json.yRadius;\n    this.aStartAngle = json.aStartAngle;\n    this.aEndAngle = json.aEndAngle;\n    this.aClockwise = json.aClockwise;\n    this.aRotation = json.aRotation;\n    return this;\n  }\n};\nvar ArcCurve = class extends EllipseCurve {\n  constructor(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n    super(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n    this.isArcCurve = true;\n    this.type = \"ArcCurve\";\n  }\n};\nfunction CubicPoly() {\n  let c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n  function init(x0, x1, t0, t1) {\n    c0 = x0;\n    c1 = t0;\n    c2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n    c3 = 2 * x0 - 2 * x1 + t0 + t1;\n  }\n  return {\n    initCatmullRom: function(x0, x1, x2, x3, tension) {\n      init(x1, x2, tension * (x2 - x0), tension * (x3 - x1));\n    },\n    initNonuniformCatmullRom: function(x0, x1, x2, x3, dt0, dt1, dt2) {\n      let t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1;\n      let t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2;\n      t1 *= dt1;\n      t2 *= dt1;\n      init(x1, x2, t1, t2);\n    },\n    calc: function(t2) {\n      const t22 = t2 * t2;\n      const t3 = t22 * t2;\n      return c0 + c1 * t2 + c2 * t22 + c3 * t3;\n    }\n  };\n}\nvar tmp = new Vector3();\nvar px = new CubicPoly();\nvar py = new CubicPoly();\nvar pz = new CubicPoly();\nvar CatmullRomCurve3 = class extends Curve {\n  constructor(points = [], closed = false, curveType = \"centripetal\", tension = 0.5) {\n    super();\n    this.isCatmullRomCurve3 = true;\n    this.type = \"CatmullRomCurve3\";\n    this.points = points;\n    this.closed = closed;\n    this.curveType = curveType;\n    this.tension = tension;\n  }\n  getPoint(t2, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const points = this.points;\n    const l = points.length;\n    const p2 = (l - (this.closed ? 0 : 1)) * t2;\n    let intPoint = Math.floor(p2);\n    let weight = p2 - intPoint;\n    if (this.closed) {\n      intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l) + 1) * l;\n    } else if (weight === 0 && intPoint === l - 1) {\n      intPoint = l - 2;\n      weight = 1;\n    }\n    let p0, p3;\n    if (this.closed || intPoint > 0) {\n      p0 = points[(intPoint - 1) % l];\n    } else {\n      tmp.subVectors(points[0], points[1]).add(points[0]);\n      p0 = tmp;\n    }\n    const p1 = points[intPoint % l];\n    const p22 = points[(intPoint + 1) % l];\n    if (this.closed || intPoint + 2 < l) {\n      p3 = points[(intPoint + 2) % l];\n    } else {\n      tmp.subVectors(points[l - 1], points[l - 2]).add(points[l - 1]);\n      p3 = tmp;\n    }\n    if (this.curveType === \"centripetal\" || this.curveType === \"chordal\") {\n      const pow = this.curveType === \"chordal\" ? 0.5 : 0.25;\n      let dt0 = Math.pow(p0.distanceToSquared(p1), pow);\n      let dt1 = Math.pow(p1.distanceToSquared(p22), pow);\n      let dt2 = Math.pow(p22.distanceToSquared(p3), pow);\n      if (dt1 < 1e-4)\n        dt1 = 1;\n      if (dt0 < 1e-4)\n        dt0 = dt1;\n      if (dt2 < 1e-4)\n        dt2 = dt1;\n      px.initNonuniformCatmullRom(p0.x, p1.x, p22.x, p3.x, dt0, dt1, dt2);\n      py.initNonuniformCatmullRom(p0.y, p1.y, p22.y, p3.y, dt0, dt1, dt2);\n      pz.initNonuniformCatmullRom(p0.z, p1.z, p22.z, p3.z, dt0, dt1, dt2);\n    } else if (this.curveType === \"catmullrom\") {\n      px.initCatmullRom(p0.x, p1.x, p22.x, p3.x, this.tension);\n      py.initCatmullRom(p0.y, p1.y, p22.y, p3.y, this.tension);\n      pz.initCatmullRom(p0.z, p1.z, p22.z, p3.z, this.tension);\n    }\n    point.set(\n      px.calc(weight),\n      py.calc(weight),\n      pz.calc(weight)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.points = [];\n    for (let i = 0, l = source.points.length; i < l; i++) {\n      const point = source.points[i];\n      this.points.push(point.clone());\n    }\n    this.closed = source.closed;\n    this.curveType = source.curveType;\n    this.tension = source.tension;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.points = [];\n    for (let i = 0, l = this.points.length; i < l; i++) {\n      const point = this.points[i];\n      data.points.push(point.toArray());\n    }\n    data.closed = this.closed;\n    data.curveType = this.curveType;\n    data.tension = this.tension;\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.points = [];\n    for (let i = 0, l = json.points.length; i < l; i++) {\n      const point = json.points[i];\n      this.points.push(new Vector3().fromArray(point));\n    }\n    this.closed = json.closed;\n    this.curveType = json.curveType;\n    this.tension = json.tension;\n    return this;\n  }\n};\nfunction CatmullRom(t2, p0, p1, p2, p3) {\n  const v0 = (p2 - p0) * 0.5;\n  const v1 = (p3 - p1) * 0.5;\n  const t22 = t2 * t2;\n  const t3 = t2 * t22;\n  return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t22 + v0 * t2 + p1;\n}\nfunction QuadraticBezierP0(t2, p2) {\n  const k = 1 - t2;\n  return k * k * p2;\n}\nfunction QuadraticBezierP1(t2, p2) {\n  return 2 * (1 - t2) * t2 * p2;\n}\nfunction QuadraticBezierP2(t2, p2) {\n  return t2 * t2 * p2;\n}\nfunction QuadraticBezier(t2, p0, p1, p2) {\n  return QuadraticBezierP0(t2, p0) + QuadraticBezierP1(t2, p1) + QuadraticBezierP2(t2, p2);\n}\nfunction CubicBezierP0(t2, p2) {\n  const k = 1 - t2;\n  return k * k * k * p2;\n}\nfunction CubicBezierP1(t2, p2) {\n  const k = 1 - t2;\n  return 3 * k * k * t2 * p2;\n}\nfunction CubicBezierP2(t2, p2) {\n  return 3 * (1 - t2) * t2 * t2 * p2;\n}\nfunction CubicBezierP3(t2, p2) {\n  return t2 * t2 * t2 * p2;\n}\nfunction CubicBezier(t2, p0, p1, p2, p3) {\n  return CubicBezierP0(t2, p0) + CubicBezierP1(t2, p1) + CubicBezierP2(t2, p2) + CubicBezierP3(t2, p3);\n}\nvar CubicBezierCurve = class extends Curve {\n  constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2()) {\n    super();\n    this.isCubicBezierCurve = true;\n    this.type = \"CubicBezierCurve\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n    this.v3 = v3;\n  }\n  getPoint(t2, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n    point.set(\n      CubicBezier(t2, v0.x, v1.x, v2.x, v3.x),\n      CubicBezier(t2, v0.y, v1.y, v2.y, v3.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    this.v3.copy(source.v3);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    data.v3 = this.v3.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    this.v3.fromArray(json.v3);\n    return this;\n  }\n};\nvar CubicBezierCurve3 = class extends Curve {\n  constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3()) {\n    super();\n    this.isCubicBezierCurve3 = true;\n    this.type = \"CubicBezierCurve3\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n    this.v3 = v3;\n  }\n  getPoint(t2, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n    point.set(\n      CubicBezier(t2, v0.x, v1.x, v2.x, v3.x),\n      CubicBezier(t2, v0.y, v1.y, v2.y, v3.y),\n      CubicBezier(t2, v0.z, v1.z, v2.z, v3.z)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    this.v3.copy(source.v3);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    data.v3 = this.v3.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    this.v3.fromArray(json.v3);\n    return this;\n  }\n};\nvar LineCurve = class extends Curve {\n  constructor(v1 = new Vector2(), v2 = new Vector2()) {\n    super();\n    this.isLineCurve = true;\n    this.type = \"LineCurve\";\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t2, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    if (t2 === 1) {\n      point.copy(this.v2);\n    } else {\n      point.copy(this.v2).sub(this.v1);\n      point.multiplyScalar(t2).add(this.v1);\n    }\n    return point;\n  }\n  // Line curve is linear, so we can overwrite default getPointAt\n  getPointAt(u, optionalTarget) {\n    return this.getPoint(u, optionalTarget);\n  }\n  getTangent(t2, optionalTarget) {\n    const tangent = optionalTarget || new Vector2();\n    tangent.copy(this.v2).sub(this.v1).normalize();\n    return tangent;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n};\nvar LineCurve3 = class extends Curve {\n  constructor(v1 = new Vector3(), v2 = new Vector3()) {\n    super();\n    this.isLineCurve3 = true;\n    this.type = \"LineCurve3\";\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t2, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    if (t2 === 1) {\n      point.copy(this.v2);\n    } else {\n      point.copy(this.v2).sub(this.v1);\n      point.multiplyScalar(t2).add(this.v1);\n    }\n    return point;\n  }\n  // Line curve is linear, so we can overwrite default getPointAt\n  getPointAt(u, optionalTarget) {\n    return this.getPoint(u, optionalTarget);\n  }\n  copy(source) {\n    super.copy(source);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n};\nvar QuadraticBezierCurve = class extends Curve {\n  constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2()) {\n    super();\n    this.isQuadraticBezierCurve = true;\n    this.type = \"QuadraticBezierCurve\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t2, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n    point.set(\n      QuadraticBezier(t2, v0.x, v1.x, v2.x),\n      QuadraticBezier(t2, v0.y, v1.y, v2.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n};\nvar QuadraticBezierCurve3 = class extends Curve {\n  constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) {\n    super();\n    this.isQuadraticBezierCurve3 = true;\n    this.type = \"QuadraticBezierCurve3\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t2, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n    point.set(\n      QuadraticBezier(t2, v0.x, v1.x, v2.x),\n      QuadraticBezier(t2, v0.y, v1.y, v2.y),\n      QuadraticBezier(t2, v0.z, v1.z, v2.z)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n};\nvar SplineCurve = class extends Curve {\n  constructor(points = []) {\n    super();\n    this.isSplineCurve = true;\n    this.type = \"SplineCurve\";\n    this.points = points;\n  }\n  getPoint(t2, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const points = this.points;\n    const p2 = (points.length - 1) * t2;\n    const intPoint = Math.floor(p2);\n    const weight = p2 - intPoint;\n    const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n    const p1 = points[intPoint];\n    const p22 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n    const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n    point.set(\n      CatmullRom(weight, p0.x, p1.x, p22.x, p3.x),\n      CatmullRom(weight, p0.y, p1.y, p22.y, p3.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.points = [];\n    for (let i = 0, l = source.points.length; i < l; i++) {\n      const point = source.points[i];\n      this.points.push(point.clone());\n    }\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.points = [];\n    for (let i = 0, l = this.points.length; i < l; i++) {\n      const point = this.points[i];\n      data.points.push(point.toArray());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.points = [];\n    for (let i = 0, l = json.points.length; i < l; i++) {\n      const point = json.points[i];\n      this.points.push(new Vector2().fromArray(point));\n    }\n    return this;\n  }\n};\nvar Curves = Object.freeze({\n  __proto__: null,\n  ArcCurve,\n  CatmullRomCurve3,\n  CubicBezierCurve,\n  CubicBezierCurve3,\n  EllipseCurve,\n  LineCurve,\n  LineCurve3,\n  QuadraticBezierCurve,\n  QuadraticBezierCurve3,\n  SplineCurve\n});\nvar CurvePath = class extends Curve {\n  constructor() {\n    super();\n    this.type = \"CurvePath\";\n    this.curves = [];\n    this.autoClose = false;\n  }\n  add(curve) {\n    this.curves.push(curve);\n  }\n  closePath() {\n    const startPoint = this.curves[0].getPoint(0);\n    const endPoint = this.curves[this.curves.length - 1].getPoint(1);\n    if (!startPoint.equals(endPoint)) {\n      this.curves.push(new LineCurve(endPoint, startPoint));\n    }\n  }\n  // To get accurate point with reference to\n  // entire path distance at time t,\n  // following has to be done:\n  // 1. Length of each sub path have to be known\n  // 2. Locate and identify type of curve\n  // 3. Get t for the curve\n  // 4. Return curve.getPointAt(t')\n  getPoint(t2, optionalTarget) {\n    const d = t2 * this.getLength();\n    const curveLengths = this.getCurveLengths();\n    let i = 0;\n    while (i < curveLengths.length) {\n      if (curveLengths[i] >= d) {\n        const diff = curveLengths[i] - d;\n        const curve = this.curves[i];\n        const segmentLength = curve.getLength();\n        const u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n        return curve.getPointAt(u, optionalTarget);\n      }\n      i++;\n    }\n    return null;\n  }\n  // We cannot use the default THREE.Curve getPoint() with getLength() because in\n  // THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n  // getPoint() depends on getLength\n  getLength() {\n    const lens = this.getCurveLengths();\n    return lens[lens.length - 1];\n  }\n  // cacheLengths must be recalculated.\n  updateArcLengths() {\n    this.needsUpdate = true;\n    this.cacheLengths = null;\n    this.getCurveLengths();\n  }\n  // Compute lengths and cache them\n  // We cannot overwrite getLengths() because UtoT mapping uses it.\n  getCurveLengths() {\n    if (this.cacheLengths && this.cacheLengths.length === this.curves.length) {\n      return this.cacheLengths;\n    }\n    const lengths = [];\n    let sums = 0;\n    for (let i = 0, l = this.curves.length; i < l; i++) {\n      sums += this.curves[i].getLength();\n      lengths.push(sums);\n    }\n    this.cacheLengths = lengths;\n    return lengths;\n  }\n  getSpacedPoints(divisions = 40) {\n    const points = [];\n    for (let i = 0; i <= divisions; i++) {\n      points.push(this.getPoint(i / divisions));\n    }\n    if (this.autoClose) {\n      points.push(points[0]);\n    }\n    return points;\n  }\n  getPoints(divisions = 12) {\n    const points = [];\n    let last;\n    for (let i = 0, curves = this.curves; i < curves.length; i++) {\n      const curve = curves[i];\n      const resolution = curve.isEllipseCurve ? divisions * 2 : curve.isLineCurve || curve.isLineCurve3 ? 1 : curve.isSplineCurve ? divisions * curve.points.length : divisions;\n      const pts = curve.getPoints(resolution);\n      for (let j = 0; j < pts.length; j++) {\n        const point = pts[j];\n        if (last && last.equals(point))\n          continue;\n        points.push(point);\n        last = point;\n      }\n    }\n    if (this.autoClose && points.length > 1 && !points[points.length - 1].equals(points[0])) {\n      points.push(points[0]);\n    }\n    return points;\n  }\n  copy(source) {\n    super.copy(source);\n    this.curves = [];\n    for (let i = 0, l = source.curves.length; i < l; i++) {\n      const curve = source.curves[i];\n      this.curves.push(curve.clone());\n    }\n    this.autoClose = source.autoClose;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.autoClose = this.autoClose;\n    data.curves = [];\n    for (let i = 0, l = this.curves.length; i < l; i++) {\n      const curve = this.curves[i];\n      data.curves.push(curve.toJSON());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.autoClose = json.autoClose;\n    this.curves = [];\n    for (let i = 0, l = json.curves.length; i < l; i++) {\n      const curve = json.curves[i];\n      this.curves.push(new Curves[curve.type]().fromJSON(curve));\n    }\n    return this;\n  }\n};\nvar Path = class extends CurvePath {\n  constructor(points) {\n    super();\n    this.type = \"Path\";\n    this.currentPoint = new Vector2();\n    if (points) {\n      this.setFromPoints(points);\n    }\n  }\n  setFromPoints(points) {\n    this.moveTo(points[0].x, points[0].y);\n    for (let i = 1, l = points.length; i < l; i++) {\n      this.lineTo(points[i].x, points[i].y);\n    }\n    return this;\n  }\n  moveTo(x2, y) {\n    this.currentPoint.set(x2, y);\n    return this;\n  }\n  lineTo(x2, y) {\n    const curve = new LineCurve(this.currentPoint.clone(), new Vector2(x2, y));\n    this.curves.push(curve);\n    this.currentPoint.set(x2, y);\n    return this;\n  }\n  quadraticCurveTo(aCPx, aCPy, aX, aY) {\n    const curve = new QuadraticBezierCurve(\n      this.currentPoint.clone(),\n      new Vector2(aCPx, aCPy),\n      new Vector2(aX, aY)\n    );\n    this.curves.push(curve);\n    this.currentPoint.set(aX, aY);\n    return this;\n  }\n  bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n    const curve = new CubicBezierCurve(\n      this.currentPoint.clone(),\n      new Vector2(aCP1x, aCP1y),\n      new Vector2(aCP2x, aCP2y),\n      new Vector2(aX, aY)\n    );\n    this.curves.push(curve);\n    this.currentPoint.set(aX, aY);\n    return this;\n  }\n  splineThru(pts) {\n    const npts = [this.currentPoint.clone()].concat(pts);\n    const curve = new SplineCurve(npts);\n    this.curves.push(curve);\n    this.currentPoint.copy(pts[pts.length - 1]);\n    return this;\n  }\n  arc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n    const x0 = this.currentPoint.x;\n    const y0 = this.currentPoint.y;\n    this.absarc(\n      aX + x0,\n      aY + y0,\n      aRadius,\n      aStartAngle,\n      aEndAngle,\n      aClockwise\n    );\n    return this;\n  }\n  absarc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n    this.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n    return this;\n  }\n  ellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n    const x0 = this.currentPoint.x;\n    const y0 = this.currentPoint.y;\n    this.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n    return this;\n  }\n  absellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n    const curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n    if (this.curves.length > 0) {\n      const firstPoint = curve.getPoint(0);\n      if (!firstPoint.equals(this.currentPoint)) {\n        this.lineTo(firstPoint.x, firstPoint.y);\n      }\n    }\n    this.curves.push(curve);\n    const lastPoint = curve.getPoint(1);\n    this.currentPoint.copy(lastPoint);\n    return this;\n  }\n  copy(source) {\n    super.copy(source);\n    this.currentPoint.copy(source.currentPoint);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.currentPoint = this.currentPoint.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.currentPoint.fromArray(json.currentPoint);\n    return this;\n  }\n};\nvar LatheGeometry = class _LatheGeometry extends BufferGeometry {\n  constructor(points = [new Vector2(0, -0.5), new Vector2(0.5, 0), new Vector2(0, 0.5)], segments = 12, phiStart = 0, phiLength = Math.PI * 2) {\n    super();\n    this.type = \"LatheGeometry\";\n    this.parameters = {\n      points,\n      segments,\n      phiStart,\n      phiLength\n    };\n    segments = Math.floor(segments);\n    phiLength = clamp(phiLength, 0, Math.PI * 2);\n    const indices = [];\n    const vertices = [];\n    const uvs = [];\n    const initNormals = [];\n    const normals = [];\n    const inverseSegments = 1 / segments;\n    const vertex2 = new Vector3();\n    const uv = new Vector2();\n    const normal = new Vector3();\n    const curNormal = new Vector3();\n    const prevNormal = new Vector3();\n    let dx = 0;\n    let dy = 0;\n    for (let j = 0; j <= points.length - 1; j++) {\n      switch (j) {\n        case 0:\n          dx = points[j + 1].x - points[j].x;\n          dy = points[j + 1].y - points[j].y;\n          normal.x = dy * 1;\n          normal.y = -dx;\n          normal.z = dy * 0;\n          prevNormal.copy(normal);\n          normal.normalize();\n          initNormals.push(normal.x, normal.y, normal.z);\n          break;\n        case points.length - 1:\n          initNormals.push(prevNormal.x, prevNormal.y, prevNormal.z);\n          break;\n        default:\n          dx = points[j + 1].x - points[j].x;\n          dy = points[j + 1].y - points[j].y;\n          normal.x = dy * 1;\n          normal.y = -dx;\n          normal.z = dy * 0;\n          curNormal.copy(normal);\n          normal.x += prevNormal.x;\n          normal.y += prevNormal.y;\n          normal.z += prevNormal.z;\n          normal.normalize();\n          initNormals.push(normal.x, normal.y, normal.z);\n          prevNormal.copy(curNormal);\n      }\n    }\n    for (let i = 0; i <= segments; i++) {\n      const phi = phiStart + i * inverseSegments * phiLength;\n      const sin = Math.sin(phi);\n      const cos = Math.cos(phi);\n      for (let j = 0; j <= points.length - 1; j++) {\n        vertex2.x = points[j].x * sin;\n        vertex2.y = points[j].y;\n        vertex2.z = points[j].x * cos;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        uv.x = i / segments;\n        uv.y = j / (points.length - 1);\n        uvs.push(uv.x, uv.y);\n        const x2 = initNormals[3 * j + 0] * sin;\n        const y = initNormals[3 * j + 1];\n        const z = initNormals[3 * j + 0] * cos;\n        normals.push(x2, y, z);\n      }\n    }\n    for (let i = 0; i < segments; i++) {\n      for (let j = 0; j < points.length - 1; j++) {\n        const base = j + i * points.length;\n        const a = base;\n        const b = base + points.length;\n        const c = base + points.length + 1;\n        const d = base + 1;\n        indices.push(a, b, d);\n        indices.push(c, d, b);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n  }\n  static fromJSON(data) {\n    return new _LatheGeometry(data.points, data.segments, data.phiStart, data.phiLength);\n  }\n};\nvar CapsuleGeometry = class _CapsuleGeometry extends LatheGeometry {\n  constructor(radius = 1, length = 1, capSegments = 4, radialSegments = 8) {\n    const path = new Path();\n    path.absarc(0, -length / 2, radius, Math.PI * 1.5, 0);\n    path.absarc(0, length / 2, radius, 0, Math.PI * 0.5);\n    super(path.getPoints(capSegments), radialSegments);\n    this.type = \"CapsuleGeometry\";\n    this.parameters = {\n      radius,\n      height: length,\n      capSegments,\n      radialSegments\n    };\n  }\n  static fromJSON(data) {\n    return new _CapsuleGeometry(data.radius, data.length, data.capSegments, data.radialSegments);\n  }\n};\nvar CircleGeometry = class _CircleGeometry extends BufferGeometry {\n  constructor(radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super();\n    this.type = \"CircleGeometry\";\n    this.parameters = {\n      radius,\n      segments,\n      thetaStart,\n      thetaLength\n    };\n    segments = Math.max(3, segments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const vertex2 = new Vector3();\n    const uv = new Vector2();\n    vertices.push(0, 0, 0);\n    normals.push(0, 0, 1);\n    uvs.push(0.5, 0.5);\n    for (let s = 0, i = 3; s <= segments; s++, i += 3) {\n      const segment = thetaStart + s / segments * thetaLength;\n      vertex2.x = radius * Math.cos(segment);\n      vertex2.y = radius * Math.sin(segment);\n      vertices.push(vertex2.x, vertex2.y, vertex2.z);\n      normals.push(0, 0, 1);\n      uv.x = (vertices[i] / radius + 1) / 2;\n      uv.y = (vertices[i + 1] / radius + 1) / 2;\n      uvs.push(uv.x, uv.y);\n    }\n    for (let i = 1; i <= segments; i++) {\n      indices.push(i, i + 1, 0);\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new _CircleGeometry(data.radius, data.segments, data.thetaStart, data.thetaLength);\n  }\n};\nvar CylinderGeometry = class _CylinderGeometry extends BufferGeometry {\n  constructor(radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super();\n    this.type = \"CylinderGeometry\";\n    this.parameters = {\n      radiusTop,\n      radiusBottom,\n      height,\n      radialSegments,\n      heightSegments,\n      openEnded,\n      thetaStart,\n      thetaLength\n    };\n    const scope = this;\n    radialSegments = Math.floor(radialSegments);\n    heightSegments = Math.floor(heightSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let index = 0;\n    const indexArray = [];\n    const halfHeight = height / 2;\n    let groupStart = 0;\n    generateTorso();\n    if (openEnded === false) {\n      if (radiusTop > 0)\n        generateCap(true);\n      if (radiusBottom > 0)\n        generateCap(false);\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function generateTorso() {\n      const normal = new Vector3();\n      const vertex2 = new Vector3();\n      let groupCount = 0;\n      const slope = (radiusBottom - radiusTop) / height;\n      for (let y = 0; y <= heightSegments; y++) {\n        const indexRow = [];\n        const v = y / heightSegments;\n        const radius = v * (radiusBottom - radiusTop) + radiusTop;\n        for (let x2 = 0; x2 <= radialSegments; x2++) {\n          const u = x2 / radialSegments;\n          const theta = u * thetaLength + thetaStart;\n          const sinTheta = Math.sin(theta);\n          const cosTheta = Math.cos(theta);\n          vertex2.x = radius * sinTheta;\n          vertex2.y = -v * height + halfHeight;\n          vertex2.z = radius * cosTheta;\n          vertices.push(vertex2.x, vertex2.y, vertex2.z);\n          normal.set(sinTheta, slope, cosTheta).normalize();\n          normals.push(normal.x, normal.y, normal.z);\n          uvs.push(u, 1 - v);\n          indexRow.push(index++);\n        }\n        indexArray.push(indexRow);\n      }\n      for (let x2 = 0; x2 < radialSegments; x2++) {\n        for (let y = 0; y < heightSegments; y++) {\n          const a = indexArray[y][x2];\n          const b = indexArray[y + 1][x2];\n          const c = indexArray[y + 1][x2 + 1];\n          const d = indexArray[y][x2 + 1];\n          indices.push(a, b, d);\n          indices.push(b, c, d);\n          groupCount += 6;\n        }\n      }\n      scope.addGroup(groupStart, groupCount, 0);\n      groupStart += groupCount;\n    }\n    function generateCap(top) {\n      const centerIndexStart = index;\n      const uv = new Vector2();\n      const vertex2 = new Vector3();\n      let groupCount = 0;\n      const radius = top === true ? radiusTop : radiusBottom;\n      const sign2 = top === true ? 1 : -1;\n      for (let x2 = 1; x2 <= radialSegments; x2++) {\n        vertices.push(0, halfHeight * sign2, 0);\n        normals.push(0, sign2, 0);\n        uvs.push(0.5, 0.5);\n        index++;\n      }\n      const centerIndexEnd = index;\n      for (let x2 = 0; x2 <= radialSegments; x2++) {\n        const u = x2 / radialSegments;\n        const theta = u * thetaLength + thetaStart;\n        const cosTheta = Math.cos(theta);\n        const sinTheta = Math.sin(theta);\n        vertex2.x = radius * sinTheta;\n        vertex2.y = halfHeight * sign2;\n        vertex2.z = radius * cosTheta;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normals.push(0, sign2, 0);\n        uv.x = cosTheta * 0.5 + 0.5;\n        uv.y = sinTheta * 0.5 * sign2 + 0.5;\n        uvs.push(uv.x, uv.y);\n        index++;\n      }\n      for (let x2 = 0; x2 < radialSegments; x2++) {\n        const c = centerIndexStart + x2;\n        const i = centerIndexEnd + x2;\n        if (top === true) {\n          indices.push(i, i + 1, c);\n        } else {\n          indices.push(i + 1, i, c);\n        }\n        groupCount += 3;\n      }\n      scope.addGroup(groupStart, groupCount, top === true ? 1 : 2);\n      groupStart += groupCount;\n    }\n  }\n  static fromJSON(data) {\n    return new _CylinderGeometry(data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n  }\n};\nvar ConeGeometry = class _ConeGeometry extends CylinderGeometry {\n  constructor(radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n    this.type = \"ConeGeometry\";\n    this.parameters = {\n      radius,\n      height,\n      radialSegments,\n      heightSegments,\n      openEnded,\n      thetaStart,\n      thetaLength\n    };\n  }\n  static fromJSON(data) {\n    return new _ConeGeometry(data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n  }\n};\nvar PolyhedronGeometry = class _PolyhedronGeometry extends BufferGeometry {\n  constructor(vertices = [], indices = [], radius = 1, detail = 0) {\n    super();\n    this.type = \"PolyhedronGeometry\";\n    this.parameters = {\n      vertices,\n      indices,\n      radius,\n      detail\n    };\n    const vertexBuffer = [];\n    const uvBuffer = [];\n    subdivide(detail);\n    applyRadius(radius);\n    generateUVs();\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertexBuffer, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(vertexBuffer.slice(), 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvBuffer, 2));\n    if (detail === 0) {\n      this.computeVertexNormals();\n    } else {\n      this.normalizeNormals();\n    }\n    function subdivide(detail2) {\n      const a = new Vector3();\n      const b = new Vector3();\n      const c = new Vector3();\n      for (let i = 0; i < indices.length; i += 3) {\n        getVertexByIndex(indices[i + 0], a);\n        getVertexByIndex(indices[i + 1], b);\n        getVertexByIndex(indices[i + 2], c);\n        subdivideFace(a, b, c, detail2);\n      }\n    }\n    function subdivideFace(a, b, c, detail2) {\n      const cols = detail2 + 1;\n      const v = [];\n      for (let i = 0; i <= cols; i++) {\n        v[i] = [];\n        const aj = a.clone().lerp(c, i / cols);\n        const bj = b.clone().lerp(c, i / cols);\n        const rows = cols - i;\n        for (let j = 0; j <= rows; j++) {\n          if (j === 0 && i === cols) {\n            v[i][j] = aj;\n          } else {\n            v[i][j] = aj.clone().lerp(bj, j / rows);\n          }\n        }\n      }\n      for (let i = 0; i < cols; i++) {\n        for (let j = 0; j < 2 * (cols - i) - 1; j++) {\n          const k = Math.floor(j / 2);\n          if (j % 2 === 0) {\n            pushVertex(v[i][k + 1]);\n            pushVertex(v[i + 1][k]);\n            pushVertex(v[i][k]);\n          } else {\n            pushVertex(v[i][k + 1]);\n            pushVertex(v[i + 1][k + 1]);\n            pushVertex(v[i + 1][k]);\n          }\n        }\n      }\n    }\n    function applyRadius(radius2) {\n      const vertex2 = new Vector3();\n      for (let i = 0; i < vertexBuffer.length; i += 3) {\n        vertex2.x = vertexBuffer[i + 0];\n        vertex2.y = vertexBuffer[i + 1];\n        vertex2.z = vertexBuffer[i + 2];\n        vertex2.normalize().multiplyScalar(radius2);\n        vertexBuffer[i + 0] = vertex2.x;\n        vertexBuffer[i + 1] = vertex2.y;\n        vertexBuffer[i + 2] = vertex2.z;\n      }\n    }\n    function generateUVs() {\n      const vertex2 = new Vector3();\n      for (let i = 0; i < vertexBuffer.length; i += 3) {\n        vertex2.x = vertexBuffer[i + 0];\n        vertex2.y = vertexBuffer[i + 1];\n        vertex2.z = vertexBuffer[i + 2];\n        const u = azimuth(vertex2) / 2 / Math.PI + 0.5;\n        const v = inclination(vertex2) / Math.PI + 0.5;\n        uvBuffer.push(u, 1 - v);\n      }\n      correctUVs();\n      correctSeam();\n    }\n    function correctSeam() {\n      for (let i = 0; i < uvBuffer.length; i += 6) {\n        const x0 = uvBuffer[i + 0];\n        const x1 = uvBuffer[i + 2];\n        const x2 = uvBuffer[i + 4];\n        const max2 = Math.max(x0, x1, x2);\n        const min = Math.min(x0, x1, x2);\n        if (max2 > 0.9 && min < 0.1) {\n          if (x0 < 0.2)\n            uvBuffer[i + 0] += 1;\n          if (x1 < 0.2)\n            uvBuffer[i + 2] += 1;\n          if (x2 < 0.2)\n            uvBuffer[i + 4] += 1;\n        }\n      }\n    }\n    function pushVertex(vertex2) {\n      vertexBuffer.push(vertex2.x, vertex2.y, vertex2.z);\n    }\n    function getVertexByIndex(index, vertex2) {\n      const stride = index * 3;\n      vertex2.x = vertices[stride + 0];\n      vertex2.y = vertices[stride + 1];\n      vertex2.z = vertices[stride + 2];\n    }\n    function correctUVs() {\n      const a = new Vector3();\n      const b = new Vector3();\n      const c = new Vector3();\n      const centroid = new Vector3();\n      const uvA = new Vector2();\n      const uvB = new Vector2();\n      const uvC = new Vector2();\n      for (let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6) {\n        a.set(vertexBuffer[i + 0], vertexBuffer[i + 1], vertexBuffer[i + 2]);\n        b.set(vertexBuffer[i + 3], vertexBuffer[i + 4], vertexBuffer[i + 5]);\n        c.set(vertexBuffer[i + 6], vertexBuffer[i + 7], vertexBuffer[i + 8]);\n        uvA.set(uvBuffer[j + 0], uvBuffer[j + 1]);\n        uvB.set(uvBuffer[j + 2], uvBuffer[j + 3]);\n        uvC.set(uvBuffer[j + 4], uvBuffer[j + 5]);\n        centroid.copy(a).add(b).add(c).divideScalar(3);\n        const azi = azimuth(centroid);\n        correctUV(uvA, j + 0, a, azi);\n        correctUV(uvB, j + 2, b, azi);\n        correctUV(uvC, j + 4, c, azi);\n      }\n    }\n    function correctUV(uv, stride, vector, azimuth2) {\n      if (azimuth2 < 0 && uv.x === 1) {\n        uvBuffer[stride] = uv.x - 1;\n      }\n      if (vector.x === 0 && vector.z === 0) {\n        uvBuffer[stride] = azimuth2 / 2 / Math.PI + 0.5;\n      }\n    }\n    function azimuth(vector) {\n      return Math.atan2(vector.z, -vector.x);\n    }\n    function inclination(vector) {\n      return Math.atan2(-vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z));\n    }\n  }\n  static fromJSON(data) {\n    return new _PolyhedronGeometry(data.vertices, data.indices, data.radius, data.details);\n  }\n};\nvar DodecahedronGeometry = class _DodecahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const t2 = (1 + Math.sqrt(5)) / 2;\n    const r = 1 / t2;\n    const vertices = [\n      // (±1, ±1, ±1)\n      -1,\n      -1,\n      -1,\n      -1,\n      -1,\n      1,\n      -1,\n      1,\n      -1,\n      -1,\n      1,\n      1,\n      1,\n      -1,\n      -1,\n      1,\n      -1,\n      1,\n      1,\n      1,\n      -1,\n      1,\n      1,\n      1,\n      // (0, ±1/φ, ±φ)\n      0,\n      -r,\n      -t2,\n      0,\n      -r,\n      t2,\n      0,\n      r,\n      -t2,\n      0,\n      r,\n      t2,\n      // (±1/φ, ±φ, 0)\n      -r,\n      -t2,\n      0,\n      -r,\n      t2,\n      0,\n      r,\n      -t2,\n      0,\n      r,\n      t2,\n      0,\n      // (±φ, 0, ±1/φ)\n      -t2,\n      0,\n      -r,\n      t2,\n      0,\n      -r,\n      -t2,\n      0,\n      r,\n      t2,\n      0,\n      r\n    ];\n    const indices = [\n      3,\n      11,\n      7,\n      3,\n      7,\n      15,\n      3,\n      15,\n      13,\n      7,\n      19,\n      17,\n      7,\n      17,\n      6,\n      7,\n      6,\n      15,\n      17,\n      4,\n      8,\n      17,\n      8,\n      10,\n      17,\n      10,\n      6,\n      8,\n      0,\n      16,\n      8,\n      16,\n      2,\n      8,\n      2,\n      10,\n      0,\n      12,\n      1,\n      0,\n      1,\n      18,\n      0,\n      18,\n      16,\n      6,\n      10,\n      2,\n      6,\n      2,\n      13,\n      6,\n      13,\n      15,\n      2,\n      16,\n      18,\n      2,\n      18,\n      3,\n      2,\n      3,\n      13,\n      18,\n      1,\n      9,\n      18,\n      9,\n      11,\n      18,\n      11,\n      3,\n      4,\n      14,\n      12,\n      4,\n      12,\n      0,\n      4,\n      0,\n      8,\n      11,\n      9,\n      5,\n      11,\n      5,\n      19,\n      11,\n      19,\n      7,\n      19,\n      5,\n      14,\n      19,\n      14,\n      4,\n      19,\n      4,\n      17,\n      1,\n      12,\n      14,\n      1,\n      14,\n      5,\n      1,\n      5,\n      9\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"DodecahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new _DodecahedronGeometry(data.radius, data.detail);\n  }\n};\nvar _v0 = new Vector3();\nvar _v1$1 = new Vector3();\nvar _normal = new Vector3();\nvar _triangle = new Triangle();\nvar EdgesGeometry = class extends BufferGeometry {\n  constructor(geometry = null, thresholdAngle = 1) {\n    super();\n    this.type = \"EdgesGeometry\";\n    this.parameters = {\n      geometry,\n      thresholdAngle\n    };\n    if (geometry !== null) {\n      const precisionPoints = 4;\n      const precision = Math.pow(10, precisionPoints);\n      const thresholdDot = Math.cos(DEG2RAD * thresholdAngle);\n      const indexAttr = geometry.getIndex();\n      const positionAttr = geometry.getAttribute(\"position\");\n      const indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n      const indexArr = [0, 0, 0];\n      const vertKeys = [\"a\", \"b\", \"c\"];\n      const hashes = new Array(3);\n      const edgeData = {};\n      const vertices = [];\n      for (let i = 0; i < indexCount; i += 3) {\n        if (indexAttr) {\n          indexArr[0] = indexAttr.getX(i);\n          indexArr[1] = indexAttr.getX(i + 1);\n          indexArr[2] = indexAttr.getX(i + 2);\n        } else {\n          indexArr[0] = i;\n          indexArr[1] = i + 1;\n          indexArr[2] = i + 2;\n        }\n        const { a, b, c } = _triangle;\n        a.fromBufferAttribute(positionAttr, indexArr[0]);\n        b.fromBufferAttribute(positionAttr, indexArr[1]);\n        c.fromBufferAttribute(positionAttr, indexArr[2]);\n        _triangle.getNormal(_normal);\n        hashes[0] = `${Math.round(a.x * precision)},${Math.round(a.y * precision)},${Math.round(a.z * precision)}`;\n        hashes[1] = `${Math.round(b.x * precision)},${Math.round(b.y * precision)},${Math.round(b.z * precision)}`;\n        hashes[2] = `${Math.round(c.x * precision)},${Math.round(c.y * precision)},${Math.round(c.z * precision)}`;\n        if (hashes[0] === hashes[1] || hashes[1] === hashes[2] || hashes[2] === hashes[0]) {\n          continue;\n        }\n        for (let j = 0; j < 3; j++) {\n          const jNext = (j + 1) % 3;\n          const vecHash0 = hashes[j];\n          const vecHash1 = hashes[jNext];\n          const v0 = _triangle[vertKeys[j]];\n          const v1 = _triangle[vertKeys[jNext]];\n          const hash = `${vecHash0}_${vecHash1}`;\n          const reverseHash = `${vecHash1}_${vecHash0}`;\n          if (reverseHash in edgeData && edgeData[reverseHash]) {\n            if (_normal.dot(edgeData[reverseHash].normal) <= thresholdDot) {\n              vertices.push(v0.x, v0.y, v0.z);\n              vertices.push(v1.x, v1.y, v1.z);\n            }\n            edgeData[reverseHash] = null;\n          } else if (!(hash in edgeData)) {\n            edgeData[hash] = {\n              index0: indexArr[j],\n              index1: indexArr[jNext],\n              normal: _normal.clone()\n            };\n          }\n        }\n      }\n      for (const key in edgeData) {\n        if (edgeData[key]) {\n          const { index0, index1 } = edgeData[key];\n          _v0.fromBufferAttribute(positionAttr, index0);\n          _v1$1.fromBufferAttribute(positionAttr, index1);\n          vertices.push(_v0.x, _v0.y, _v0.z);\n          vertices.push(_v1$1.x, _v1$1.y, _v1$1.z);\n        }\n      }\n      this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    }\n  }\n};\nvar Shape = class extends Path {\n  constructor(points) {\n    super(points);\n    this.uuid = generateUUID();\n    this.type = \"Shape\";\n    this.holes = [];\n  }\n  getPointsHoles(divisions) {\n    const holesPts = [];\n    for (let i = 0, l = this.holes.length; i < l; i++) {\n      holesPts[i] = this.holes[i].getPoints(divisions);\n    }\n    return holesPts;\n  }\n  // get points of shape and holes (keypoints based on segments parameter)\n  extractPoints(divisions) {\n    return {\n      shape: this.getPoints(divisions),\n      holes: this.getPointsHoles(divisions)\n    };\n  }\n  copy(source) {\n    super.copy(source);\n    this.holes = [];\n    for (let i = 0, l = source.holes.length; i < l; i++) {\n      const hole = source.holes[i];\n      this.holes.push(hole.clone());\n    }\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.uuid = this.uuid;\n    data.holes = [];\n    for (let i = 0, l = this.holes.length; i < l; i++) {\n      const hole = this.holes[i];\n      data.holes.push(hole.toJSON());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.uuid = json.uuid;\n    this.holes = [];\n    for (let i = 0, l = json.holes.length; i < l; i++) {\n      const hole = json.holes[i];\n      this.holes.push(new Path().fromJSON(hole));\n    }\n    return this;\n  }\n};\nvar Earcut = {\n  triangulate: function(data, holeIndices, dim = 2) {\n    const hasHoles = holeIndices && holeIndices.length;\n    const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n    let outerNode = linkedList(data, 0, outerLen, dim, true);\n    const triangles = [];\n    if (!outerNode || outerNode.next === outerNode.prev)\n      return triangles;\n    let minX, minY, maxX, maxY, x2, y, invSize;\n    if (hasHoles)\n      outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n    if (data.length > 80 * dim) {\n      minX = maxX = data[0];\n      minY = maxY = data[1];\n      for (let i = dim; i < outerLen; i += dim) {\n        x2 = data[i];\n        y = data[i + 1];\n        if (x2 < minX)\n          minX = x2;\n        if (y < minY)\n          minY = y;\n        if (x2 > maxX)\n          maxX = x2;\n        if (y > maxY)\n          maxY = y;\n      }\n      invSize = Math.max(maxX - minX, maxY - minY);\n      invSize = invSize !== 0 ? 32767 / invSize : 0;\n    }\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n    return triangles;\n  }\n};\nfunction linkedList(data, start, end, dim, clockwise) {\n  let i, last;\n  if (clockwise === signedArea(data, start, end, dim) > 0) {\n    for (i = start; i < end; i += dim)\n      last = insertNode(i, data[i], data[i + 1], last);\n  } else {\n    for (i = end - dim; i >= start; i -= dim)\n      last = insertNode(i, data[i], data[i + 1], last);\n  }\n  if (last && equals(last, last.next)) {\n    removeNode(last);\n    last = last.next;\n  }\n  return last;\n}\nfunction filterPoints(start, end) {\n  if (!start)\n    return start;\n  if (!end)\n    end = start;\n  let p2 = start, again;\n  do {\n    again = false;\n    if (!p2.steiner && (equals(p2, p2.next) || area(p2.prev, p2, p2.next) === 0)) {\n      removeNode(p2);\n      p2 = end = p2.prev;\n      if (p2 === p2.next)\n        break;\n      again = true;\n    } else {\n      p2 = p2.next;\n    }\n  } while (again || p2 !== end);\n  return end;\n}\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n  if (!ear)\n    return;\n  if (!pass && invSize)\n    indexCurve(ear, minX, minY, invSize);\n  let stop = ear, prev, next;\n  while (ear.prev !== ear.next) {\n    prev = ear.prev;\n    next = ear.next;\n    if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n      triangles.push(prev.i / dim | 0);\n      triangles.push(ear.i / dim | 0);\n      triangles.push(next.i / dim | 0);\n      removeNode(ear);\n      ear = next.next;\n      stop = next.next;\n      continue;\n    }\n    ear = next;\n    if (ear === stop) {\n      if (!pass) {\n        earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n      } else if (pass === 1) {\n        ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n        earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n      } else if (pass === 2) {\n        splitEarcut(ear, triangles, dim, minX, minY, invSize);\n      }\n      break;\n    }\n  }\n}\nfunction isEar(ear) {\n  const a = ear.prev, b = ear, c = ear.next;\n  if (area(a, b, c) >= 0)\n    return false;\n  const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n  const x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n  let p2 = c.next;\n  while (p2 !== a) {\n    if (p2.x >= x0 && p2.x <= x1 && p2.y >= y0 && p2.y <= y1 && pointInTriangle(ax, ay, bx, by, cx, cy, p2.x, p2.y) && area(p2.prev, p2, p2.next) >= 0)\n      return false;\n    p2 = p2.next;\n  }\n  return true;\n}\nfunction isEarHashed(ear, minX, minY, invSize) {\n  const a = ear.prev, b = ear, c = ear.next;\n  if (area(a, b, c) >= 0)\n    return false;\n  const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n  const x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n  const minZ = zOrder(x0, y0, minX, minY, invSize), maxZ = zOrder(x1, y1, minX, minY, invSize);\n  let p2 = ear.prevZ, n2 = ear.nextZ;\n  while (p2 && p2.z >= minZ && n2 && n2.z <= maxZ) {\n    if (p2.x >= x0 && p2.x <= x1 && p2.y >= y0 && p2.y <= y1 && p2 !== a && p2 !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p2.x, p2.y) && area(p2.prev, p2, p2.next) >= 0)\n      return false;\n    p2 = p2.prevZ;\n    if (n2.x >= x0 && n2.x <= x1 && n2.y >= y0 && n2.y <= y1 && n2 !== a && n2 !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n2.x, n2.y) && area(n2.prev, n2, n2.next) >= 0)\n      return false;\n    n2 = n2.nextZ;\n  }\n  while (p2 && p2.z >= minZ) {\n    if (p2.x >= x0 && p2.x <= x1 && p2.y >= y0 && p2.y <= y1 && p2 !== a && p2 !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p2.x, p2.y) && area(p2.prev, p2, p2.next) >= 0)\n      return false;\n    p2 = p2.prevZ;\n  }\n  while (n2 && n2.z <= maxZ) {\n    if (n2.x >= x0 && n2.x <= x1 && n2.y >= y0 && n2.y <= y1 && n2 !== a && n2 !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n2.x, n2.y) && area(n2.prev, n2, n2.next) >= 0)\n      return false;\n    n2 = n2.nextZ;\n  }\n  return true;\n}\nfunction cureLocalIntersections(start, triangles, dim) {\n  let p2 = start;\n  do {\n    const a = p2.prev, b = p2.next.next;\n    if (!equals(a, b) && intersects(a, p2, p2.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n      triangles.push(a.i / dim | 0);\n      triangles.push(p2.i / dim | 0);\n      triangles.push(b.i / dim | 0);\n      removeNode(p2);\n      removeNode(p2.next);\n      p2 = start = b;\n    }\n    p2 = p2.next;\n  } while (p2 !== start);\n  return filterPoints(p2);\n}\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n  let a = start;\n  do {\n    let b = a.next.next;\n    while (b !== a.prev) {\n      if (a.i !== b.i && isValidDiagonal(a, b)) {\n        let c = splitPolygon(a, b);\n        a = filterPoints(a, a.next);\n        c = filterPoints(c, c.next);\n        earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n        earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n        return;\n      }\n      b = b.next;\n    }\n    a = a.next;\n  } while (a !== start);\n}\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n  const queue = [];\n  let i, len, start, end, list;\n  for (i = 0, len = holeIndices.length; i < len; i++) {\n    start = holeIndices[i] * dim;\n    end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n    list = linkedList(data, start, end, dim, false);\n    if (list === list.next)\n      list.steiner = true;\n    queue.push(getLeftmost(list));\n  }\n  queue.sort(compareX);\n  for (i = 0; i < queue.length; i++) {\n    outerNode = eliminateHole(queue[i], outerNode);\n  }\n  return outerNode;\n}\nfunction compareX(a, b) {\n  return a.x - b.x;\n}\nfunction eliminateHole(hole, outerNode) {\n  const bridge = findHoleBridge(hole, outerNode);\n  if (!bridge) {\n    return outerNode;\n  }\n  const bridgeReverse = splitPolygon(bridge, hole);\n  filterPoints(bridgeReverse, bridgeReverse.next);\n  return filterPoints(bridge, bridge.next);\n}\nfunction findHoleBridge(hole, outerNode) {\n  let p2 = outerNode, qx = -Infinity, m;\n  const hx = hole.x, hy = hole.y;\n  do {\n    if (hy <= p2.y && hy >= p2.next.y && p2.next.y !== p2.y) {\n      const x2 = p2.x + (hy - p2.y) * (p2.next.x - p2.x) / (p2.next.y - p2.y);\n      if (x2 <= hx && x2 > qx) {\n        qx = x2;\n        m = p2.x < p2.next.x ? p2 : p2.next;\n        if (x2 === hx)\n          return m;\n      }\n    }\n    p2 = p2.next;\n  } while (p2 !== outerNode);\n  if (!m)\n    return null;\n  const stop = m, mx = m.x, my = m.y;\n  let tanMin = Infinity, tan;\n  p2 = m;\n  do {\n    if (hx >= p2.x && p2.x >= mx && hx !== p2.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p2.x, p2.y)) {\n      tan = Math.abs(hy - p2.y) / (hx - p2.x);\n      if (locallyInside(p2, hole) && (tan < tanMin || tan === tanMin && (p2.x > m.x || p2.x === m.x && sectorContainsSector(m, p2)))) {\n        m = p2;\n        tanMin = tan;\n      }\n    }\n    p2 = p2.next;\n  } while (p2 !== stop);\n  return m;\n}\nfunction sectorContainsSector(m, p2) {\n  return area(m.prev, m, p2.prev) < 0 && area(p2.next, m, m.next) < 0;\n}\nfunction indexCurve(start, minX, minY, invSize) {\n  let p2 = start;\n  do {\n    if (p2.z === 0)\n      p2.z = zOrder(p2.x, p2.y, minX, minY, invSize);\n    p2.prevZ = p2.prev;\n    p2.nextZ = p2.next;\n    p2 = p2.next;\n  } while (p2 !== start);\n  p2.prevZ.nextZ = null;\n  p2.prevZ = null;\n  sortLinked(p2);\n}\nfunction sortLinked(list) {\n  let i, p2, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n  do {\n    p2 = list;\n    list = null;\n    tail = null;\n    numMerges = 0;\n    while (p2) {\n      numMerges++;\n      q = p2;\n      pSize = 0;\n      for (i = 0; i < inSize; i++) {\n        pSize++;\n        q = q.nextZ;\n        if (!q)\n          break;\n      }\n      qSize = inSize;\n      while (pSize > 0 || qSize > 0 && q) {\n        if (pSize !== 0 && (qSize === 0 || !q || p2.z <= q.z)) {\n          e = p2;\n          p2 = p2.nextZ;\n          pSize--;\n        } else {\n          e = q;\n          q = q.nextZ;\n          qSize--;\n        }\n        if (tail)\n          tail.nextZ = e;\n        else\n          list = e;\n        e.prevZ = tail;\n        tail = e;\n      }\n      p2 = q;\n    }\n    tail.nextZ = null;\n    inSize *= 2;\n  } while (numMerges > 1);\n  return list;\n}\nfunction zOrder(x2, y, minX, minY, invSize) {\n  x2 = (x2 - minX) * invSize | 0;\n  y = (y - minY) * invSize | 0;\n  x2 = (x2 | x2 << 8) & 16711935;\n  x2 = (x2 | x2 << 4) & 252645135;\n  x2 = (x2 | x2 << 2) & 858993459;\n  x2 = (x2 | x2 << 1) & 1431655765;\n  y = (y | y << 8) & 16711935;\n  y = (y | y << 4) & 252645135;\n  y = (y | y << 2) & 858993459;\n  y = (y | y << 1) & 1431655765;\n  return x2 | y << 1;\n}\nfunction getLeftmost(start) {\n  let p2 = start, leftmost = start;\n  do {\n    if (p2.x < leftmost.x || p2.x === leftmost.x && p2.y < leftmost.y)\n      leftmost = p2;\n    p2 = p2.next;\n  } while (p2 !== start);\n  return leftmost;\n}\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px2, py2) {\n  return (cx - px2) * (ay - py2) >= (ax - px2) * (cy - py2) && (ax - px2) * (by - py2) >= (bx - px2) * (ay - py2) && (bx - px2) * (cy - py2) >= (cx - px2) * (by - py2);\n}\nfunction isValidDiagonal(a, b) {\n  return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n  (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n  (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n  equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0);\n}\nfunction area(p2, q, r) {\n  return (q.y - p2.y) * (r.x - q.x) - (q.x - p2.x) * (r.y - q.y);\n}\nfunction equals(p1, p2) {\n  return p1.x === p2.x && p1.y === p2.y;\n}\nfunction intersects(p1, q1, p2, q2) {\n  const o1 = sign(area(p1, q1, p2));\n  const o2 = sign(area(p1, q1, q2));\n  const o3 = sign(area(p2, q2, p1));\n  const o4 = sign(area(p2, q2, q1));\n  if (o1 !== o2 && o3 !== o4)\n    return true;\n  if (o1 === 0 && onSegment(p1, p2, q1))\n    return true;\n  if (o2 === 0 && onSegment(p1, q2, q1))\n    return true;\n  if (o3 === 0 && onSegment(p2, p1, q2))\n    return true;\n  if (o4 === 0 && onSegment(p2, q1, q2))\n    return true;\n  return false;\n}\nfunction onSegment(p2, q, r) {\n  return q.x <= Math.max(p2.x, r.x) && q.x >= Math.min(p2.x, r.x) && q.y <= Math.max(p2.y, r.y) && q.y >= Math.min(p2.y, r.y);\n}\nfunction sign(num) {\n  return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\nfunction intersectsPolygon(a, b) {\n  let p2 = a;\n  do {\n    if (p2.i !== a.i && p2.next.i !== a.i && p2.i !== b.i && p2.next.i !== b.i && intersects(p2, p2.next, a, b))\n      return true;\n    p2 = p2.next;\n  } while (p2 !== a);\n  return false;\n}\nfunction locallyInside(a, b) {\n  return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\nfunction middleInside(a, b) {\n  let p2 = a, inside = false;\n  const px2 = (a.x + b.x) / 2, py2 = (a.y + b.y) / 2;\n  do {\n    if (p2.y > py2 !== p2.next.y > py2 && p2.next.y !== p2.y && px2 < (p2.next.x - p2.x) * (py2 - p2.y) / (p2.next.y - p2.y) + p2.x)\n      inside = !inside;\n    p2 = p2.next;\n  } while (p2 !== a);\n  return inside;\n}\nfunction splitPolygon(a, b) {\n  const a2 = new Node2(a.i, a.x, a.y), b22 = new Node2(b.i, b.x, b.y), an = a.next, bp = b.prev;\n  a.next = b;\n  b.prev = a;\n  a2.next = an;\n  an.prev = a2;\n  b22.next = a2;\n  a2.prev = b22;\n  bp.next = b22;\n  b22.prev = bp;\n  return b22;\n}\nfunction insertNode(i, x2, y, last) {\n  const p2 = new Node2(i, x2, y);\n  if (!last) {\n    p2.prev = p2;\n    p2.next = p2;\n  } else {\n    p2.next = last.next;\n    p2.prev = last;\n    last.next.prev = p2;\n    last.next = p2;\n  }\n  return p2;\n}\nfunction removeNode(p2) {\n  p2.next.prev = p2.prev;\n  p2.prev.next = p2.next;\n  if (p2.prevZ)\n    p2.prevZ.nextZ = p2.nextZ;\n  if (p2.nextZ)\n    p2.nextZ.prevZ = p2.prevZ;\n}\nfunction Node2(i, x2, y) {\n  this.i = i;\n  this.x = x2;\n  this.y = y;\n  this.prev = null;\n  this.next = null;\n  this.z = 0;\n  this.prevZ = null;\n  this.nextZ = null;\n  this.steiner = false;\n}\nfunction signedArea(data, start, end, dim) {\n  let sum = 0;\n  for (let i = start, j = end - dim; i < end; i += dim) {\n    sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n    j = i;\n  }\n  return sum;\n}\nvar ShapeUtils = class _ShapeUtils {\n  // calculate area of the contour polygon\n  static area(contour) {\n    const n2 = contour.length;\n    let a = 0;\n    for (let p2 = n2 - 1, q = 0; q < n2; p2 = q++) {\n      a += contour[p2].x * contour[q].y - contour[q].x * contour[p2].y;\n    }\n    return a * 0.5;\n  }\n  static isClockWise(pts) {\n    return _ShapeUtils.area(pts) < 0;\n  }\n  static triangulateShape(contour, holes) {\n    const vertices = [];\n    const holeIndices = [];\n    const faces = [];\n    removeDupEndPts(contour);\n    addContour(vertices, contour);\n    let holeIndex = contour.length;\n    holes.forEach(removeDupEndPts);\n    for (let i = 0; i < holes.length; i++) {\n      holeIndices.push(holeIndex);\n      holeIndex += holes[i].length;\n      addContour(vertices, holes[i]);\n    }\n    const triangles = Earcut.triangulate(vertices, holeIndices);\n    for (let i = 0; i < triangles.length; i += 3) {\n      faces.push(triangles.slice(i, i + 3));\n    }\n    return faces;\n  }\n};\nfunction removeDupEndPts(points) {\n  const l = points.length;\n  if (l > 2 && points[l - 1].equals(points[0])) {\n    points.pop();\n  }\n}\nfunction addContour(vertices, contour) {\n  for (let i = 0; i < contour.length; i++) {\n    vertices.push(contour[i].x);\n    vertices.push(contour[i].y);\n  }\n}\nvar ExtrudeGeometry = class _ExtrudeGeometry extends BufferGeometry {\n  constructor(shapes = new Shape([new Vector2(0.5, 0.5), new Vector2(-0.5, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), options = {}) {\n    super();\n    this.type = \"ExtrudeGeometry\";\n    this.parameters = {\n      shapes,\n      options\n    };\n    shapes = Array.isArray(shapes) ? shapes : [shapes];\n    const scope = this;\n    const verticesArray = [];\n    const uvArray = [];\n    for (let i = 0, l = shapes.length; i < l; i++) {\n      const shape = shapes[i];\n      addShape(shape);\n    }\n    this.setAttribute(\"position\", new Float32BufferAttribute(verticesArray, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvArray, 2));\n    this.computeVertexNormals();\n    function addShape(shape) {\n      const placeholder = [];\n      const curveSegments = options.curveSegments !== void 0 ? options.curveSegments : 12;\n      const steps = options.steps !== void 0 ? options.steps : 1;\n      const depth = options.depth !== void 0 ? options.depth : 1;\n      let bevelEnabled = options.bevelEnabled !== void 0 ? options.bevelEnabled : true;\n      let bevelThickness = options.bevelThickness !== void 0 ? options.bevelThickness : 0.2;\n      let bevelSize = options.bevelSize !== void 0 ? options.bevelSize : bevelThickness - 0.1;\n      let bevelOffset = options.bevelOffset !== void 0 ? options.bevelOffset : 0;\n      let bevelSegments = options.bevelSegments !== void 0 ? options.bevelSegments : 3;\n      const extrudePath = options.extrudePath;\n      const uvgen = options.UVGenerator !== void 0 ? options.UVGenerator : WorldUVGenerator;\n      let extrudePts, extrudeByPath = false;\n      let splineTube, binormal, normal, position2;\n      if (extrudePath) {\n        extrudePts = extrudePath.getSpacedPoints(steps);\n        extrudeByPath = true;\n        bevelEnabled = false;\n        splineTube = extrudePath.computeFrenetFrames(steps, false);\n        binormal = new Vector3();\n        normal = new Vector3();\n        position2 = new Vector3();\n      }\n      if (!bevelEnabled) {\n        bevelSegments = 0;\n        bevelThickness = 0;\n        bevelSize = 0;\n        bevelOffset = 0;\n      }\n      const shapePoints = shape.extractPoints(curveSegments);\n      let vertices = shapePoints.shape;\n      const holes = shapePoints.holes;\n      const reverse = !ShapeUtils.isClockWise(vertices);\n      if (reverse) {\n        vertices = vertices.reverse();\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          if (ShapeUtils.isClockWise(ahole)) {\n            holes[h] = ahole.reverse();\n          }\n        }\n      }\n      const faces = ShapeUtils.triangulateShape(vertices, holes);\n      const contour = vertices;\n      for (let h = 0, hl = holes.length; h < hl; h++) {\n        const ahole = holes[h];\n        vertices = vertices.concat(ahole);\n      }\n      function scalePt2(pt, vec, size) {\n        if (!vec)\n          console.error(\"THREE.ExtrudeGeometry: vec does not exist\");\n        return vec.clone().multiplyScalar(size).add(pt);\n      }\n      const vlen = vertices.length, flen = faces.length;\n      function getBevelVec(inPt, inPrev, inNext) {\n        let v_trans_x, v_trans_y, shrink_by;\n        const v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n        const v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n        const v_prev_lensq = v_prev_x * v_prev_x + v_prev_y * v_prev_y;\n        const collinear0 = v_prev_x * v_next_y - v_prev_y * v_next_x;\n        if (Math.abs(collinear0) > Number.EPSILON) {\n          const v_prev_len = Math.sqrt(v_prev_lensq);\n          const v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y);\n          const ptPrevShift_x = inPrev.x - v_prev_y / v_prev_len;\n          const ptPrevShift_y = inPrev.y + v_prev_x / v_prev_len;\n          const ptNextShift_x = inNext.x - v_next_y / v_next_len;\n          const ptNextShift_y = inNext.y + v_next_x / v_next_len;\n          const sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - (ptNextShift_y - ptPrevShift_y) * v_next_x) / (v_prev_x * v_next_y - v_prev_y * v_next_x);\n          v_trans_x = ptPrevShift_x + v_prev_x * sf - inPt.x;\n          v_trans_y = ptPrevShift_y + v_prev_y * sf - inPt.y;\n          const v_trans_lensq = v_trans_x * v_trans_x + v_trans_y * v_trans_y;\n          if (v_trans_lensq <= 2) {\n            return new Vector2(v_trans_x, v_trans_y);\n          } else {\n            shrink_by = Math.sqrt(v_trans_lensq / 2);\n          }\n        } else {\n          let direction_eq = false;\n          if (v_prev_x > Number.EPSILON) {\n            if (v_next_x > Number.EPSILON) {\n              direction_eq = true;\n            }\n          } else {\n            if (v_prev_x < -Number.EPSILON) {\n              if (v_next_x < -Number.EPSILON) {\n                direction_eq = true;\n              }\n            } else {\n              if (Math.sign(v_prev_y) === Math.sign(v_next_y)) {\n                direction_eq = true;\n              }\n            }\n          }\n          if (direction_eq) {\n            v_trans_x = -v_prev_y;\n            v_trans_y = v_prev_x;\n            shrink_by = Math.sqrt(v_prev_lensq);\n          } else {\n            v_trans_x = v_prev_x;\n            v_trans_y = v_prev_y;\n            shrink_by = Math.sqrt(v_prev_lensq / 2);\n          }\n        }\n        return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by);\n      }\n      const contourMovements = [];\n      for (let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n        if (j === il)\n          j = 0;\n        if (k === il)\n          k = 0;\n        contourMovements[i] = getBevelVec(contour[i], contour[j], contour[k]);\n      }\n      const holesMovements = [];\n      let oneHoleMovements, verticesMovements = contourMovements.concat();\n      for (let h = 0, hl = holes.length; h < hl; h++) {\n        const ahole = holes[h];\n        oneHoleMovements = [];\n        for (let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i++, j++, k++) {\n          if (j === il)\n            j = 0;\n          if (k === il)\n            k = 0;\n          oneHoleMovements[i] = getBevelVec(ahole[i], ahole[j], ahole[k]);\n        }\n        holesMovements.push(oneHoleMovements);\n        verticesMovements = verticesMovements.concat(oneHoleMovements);\n      }\n      for (let b = 0; b < bevelSegments; b++) {\n        const t2 = b / bevelSegments;\n        const z = bevelThickness * Math.cos(t2 * Math.PI / 2);\n        const bs2 = bevelSize * Math.sin(t2 * Math.PI / 2) + bevelOffset;\n        for (let i = 0, il = contour.length; i < il; i++) {\n          const vert = scalePt2(contour[i], contourMovements[i], bs2);\n          v(vert.x, vert.y, -z);\n        }\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          oneHoleMovements = holesMovements[h];\n          for (let i = 0, il = ahole.length; i < il; i++) {\n            const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n            v(vert.x, vert.y, -z);\n          }\n        }\n      }\n      const bs = bevelSize + bevelOffset;\n      for (let i = 0; i < vlen; i++) {\n        const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n        if (!extrudeByPath) {\n          v(vert.x, vert.y, 0);\n        } else {\n          normal.copy(splineTube.normals[0]).multiplyScalar(vert.x);\n          binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y);\n          position2.copy(extrudePts[0]).add(normal).add(binormal);\n          v(position2.x, position2.y, position2.z);\n        }\n      }\n      for (let s = 1; s <= steps; s++) {\n        for (let i = 0; i < vlen; i++) {\n          const vert = bevelEnabled ? scalePt2(vertices[i], verticesMovements[i], bs) : vertices[i];\n          if (!extrudeByPath) {\n            v(vert.x, vert.y, depth / steps * s);\n          } else {\n            normal.copy(splineTube.normals[s]).multiplyScalar(vert.x);\n            binormal.copy(splineTube.binormals[s]).multiplyScalar(vert.y);\n            position2.copy(extrudePts[s]).add(normal).add(binormal);\n            v(position2.x, position2.y, position2.z);\n          }\n        }\n      }\n      for (let b = bevelSegments - 1; b >= 0; b--) {\n        const t2 = b / bevelSegments;\n        const z = bevelThickness * Math.cos(t2 * Math.PI / 2);\n        const bs2 = bevelSize * Math.sin(t2 * Math.PI / 2) + bevelOffset;\n        for (let i = 0, il = contour.length; i < il; i++) {\n          const vert = scalePt2(contour[i], contourMovements[i], bs2);\n          v(vert.x, vert.y, depth + z);\n        }\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          oneHoleMovements = holesMovements[h];\n          for (let i = 0, il = ahole.length; i < il; i++) {\n            const vert = scalePt2(ahole[i], oneHoleMovements[i], bs2);\n            if (!extrudeByPath) {\n              v(vert.x, vert.y, depth + z);\n            } else {\n              v(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z);\n            }\n          }\n        }\n      }\n      buildLidFaces();\n      buildSideFaces();\n      function buildLidFaces() {\n        const start = verticesArray.length / 3;\n        if (bevelEnabled) {\n          let layer = 0;\n          let offset = vlen * layer;\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[2] + offset, face[1] + offset, face[0] + offset);\n          }\n          layer = steps + bevelSegments * 2;\n          offset = vlen * layer;\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[0] + offset, face[1] + offset, face[2] + offset);\n          }\n        } else {\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[2], face[1], face[0]);\n          }\n          for (let i = 0; i < flen; i++) {\n            const face = faces[i];\n            f3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps);\n          }\n        }\n        scope.addGroup(start, verticesArray.length / 3 - start, 0);\n      }\n      function buildSideFaces() {\n        const start = verticesArray.length / 3;\n        let layeroffset = 0;\n        sidewalls(contour, layeroffset);\n        layeroffset += contour.length;\n        for (let h = 0, hl = holes.length; h < hl; h++) {\n          const ahole = holes[h];\n          sidewalls(ahole, layeroffset);\n          layeroffset += ahole.length;\n        }\n        scope.addGroup(start, verticesArray.length / 3 - start, 1);\n      }\n      function sidewalls(contour2, layeroffset) {\n        let i = contour2.length;\n        while (--i >= 0) {\n          const j = i;\n          let k = i - 1;\n          if (k < 0)\n            k = contour2.length - 1;\n          for (let s = 0, sl = steps + bevelSegments * 2; s < sl; s++) {\n            const slen1 = vlen * s;\n            const slen2 = vlen * (s + 1);\n            const a = layeroffset + j + slen1, b = layeroffset + k + slen1, c = layeroffset + k + slen2, d = layeroffset + j + slen2;\n            f4(a, b, c, d);\n          }\n        }\n      }\n      function v(x2, y, z) {\n        placeholder.push(x2);\n        placeholder.push(y);\n        placeholder.push(z);\n      }\n      function f3(a, b, c) {\n        addVertex(a);\n        addVertex(b);\n        addVertex(c);\n        const nextIndex = verticesArray.length / 3;\n        const uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n        addUV(uvs[0]);\n        addUV(uvs[1]);\n        addUV(uvs[2]);\n      }\n      function f4(a, b, c, d) {\n        addVertex(a);\n        addVertex(b);\n        addVertex(d);\n        addVertex(b);\n        addVertex(c);\n        addVertex(d);\n        const nextIndex = verticesArray.length / 3;\n        const uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n        addUV(uvs[0]);\n        addUV(uvs[1]);\n        addUV(uvs[3]);\n        addUV(uvs[1]);\n        addUV(uvs[2]);\n        addUV(uvs[3]);\n      }\n      function addVertex(index) {\n        verticesArray.push(placeholder[index * 3 + 0]);\n        verticesArray.push(placeholder[index * 3 + 1]);\n        verticesArray.push(placeholder[index * 3 + 2]);\n      }\n      function addUV(vector23) {\n        uvArray.push(vector23.x);\n        uvArray.push(vector23.y);\n      }\n    }\n  }\n  toJSON() {\n    const data = super.toJSON();\n    const shapes = this.parameters.shapes;\n    const options = this.parameters.options;\n    return toJSON$1(shapes, options, data);\n  }\n  static fromJSON(data, shapes) {\n    const geometryShapes = [];\n    for (let j = 0, jl = data.shapes.length; j < jl; j++) {\n      const shape = shapes[data.shapes[j]];\n      geometryShapes.push(shape);\n    }\n    const extrudePath = data.options.extrudePath;\n    if (extrudePath !== void 0) {\n      data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath);\n    }\n    return new _ExtrudeGeometry(geometryShapes, data.options);\n  }\n};\nvar WorldUVGenerator = {\n  generateTopUV: function(geometry, vertices, indexA, indexB, indexC) {\n    const a_x = vertices[indexA * 3];\n    const a_y = vertices[indexA * 3 + 1];\n    const b_x = vertices[indexB * 3];\n    const b_y = vertices[indexB * 3 + 1];\n    const c_x = vertices[indexC * 3];\n    const c_y = vertices[indexC * 3 + 1];\n    return [\n      new Vector2(a_x, a_y),\n      new Vector2(b_x, b_y),\n      new Vector2(c_x, c_y)\n    ];\n  },\n  generateSideWallUV: function(geometry, vertices, indexA, indexB, indexC, indexD) {\n    const a_x = vertices[indexA * 3];\n    const a_y = vertices[indexA * 3 + 1];\n    const a_z = vertices[indexA * 3 + 2];\n    const b_x = vertices[indexB * 3];\n    const b_y = vertices[indexB * 3 + 1];\n    const b_z = vertices[indexB * 3 + 2];\n    const c_x = vertices[indexC * 3];\n    const c_y = vertices[indexC * 3 + 1];\n    const c_z = vertices[indexC * 3 + 2];\n    const d_x = vertices[indexD * 3];\n    const d_y = vertices[indexD * 3 + 1];\n    const d_z = vertices[indexD * 3 + 2];\n    if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {\n      return [\n        new Vector2(a_x, 1 - a_z),\n        new Vector2(b_x, 1 - b_z),\n        new Vector2(c_x, 1 - c_z),\n        new Vector2(d_x, 1 - d_z)\n      ];\n    } else {\n      return [\n        new Vector2(a_y, 1 - a_z),\n        new Vector2(b_y, 1 - b_z),\n        new Vector2(c_y, 1 - c_z),\n        new Vector2(d_y, 1 - d_z)\n      ];\n    }\n  }\n};\nfunction toJSON$1(shapes, options, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i = 0, l = shapes.length; i < l; i++) {\n      const shape = shapes[i];\n      data.shapes.push(shape.uuid);\n    }\n  } else {\n    data.shapes.push(shapes.uuid);\n  }\n  data.options = Object.assign({}, options);\n  if (options.extrudePath !== void 0)\n    data.options.extrudePath = options.extrudePath.toJSON();\n  return data;\n}\nvar IcosahedronGeometry = class _IcosahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const t2 = (1 + Math.sqrt(5)) / 2;\n    const vertices = [\n      -1,\n      t2,\n      0,\n      1,\n      t2,\n      0,\n      -1,\n      -t2,\n      0,\n      1,\n      -t2,\n      0,\n      0,\n      -1,\n      t2,\n      0,\n      1,\n      t2,\n      0,\n      -1,\n      -t2,\n      0,\n      1,\n      -t2,\n      t2,\n      0,\n      -1,\n      t2,\n      0,\n      1,\n      -t2,\n      0,\n      -1,\n      -t2,\n      0,\n      1\n    ];\n    const indices = [\n      0,\n      11,\n      5,\n      0,\n      5,\n      1,\n      0,\n      1,\n      7,\n      0,\n      7,\n      10,\n      0,\n      10,\n      11,\n      1,\n      5,\n      9,\n      5,\n      11,\n      4,\n      11,\n      10,\n      2,\n      10,\n      7,\n      6,\n      7,\n      1,\n      8,\n      3,\n      9,\n      4,\n      3,\n      4,\n      2,\n      3,\n      2,\n      6,\n      3,\n      6,\n      8,\n      3,\n      8,\n      9,\n      4,\n      9,\n      5,\n      2,\n      4,\n      11,\n      6,\n      2,\n      10,\n      8,\n      6,\n      7,\n      9,\n      8,\n      1\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"IcosahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new _IcosahedronGeometry(data.radius, data.detail);\n  }\n};\nvar OctahedronGeometry = class _OctahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const vertices = [\n      1,\n      0,\n      0,\n      -1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -1\n    ];\n    const indices = [\n      0,\n      2,\n      4,\n      0,\n      4,\n      3,\n      0,\n      3,\n      5,\n      0,\n      5,\n      2,\n      1,\n      2,\n      5,\n      1,\n      5,\n      3,\n      1,\n      3,\n      4,\n      1,\n      4,\n      2\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"OctahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new _OctahedronGeometry(data.radius, data.detail);\n  }\n};\nvar RingGeometry = class _RingGeometry extends BufferGeometry {\n  constructor(innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super();\n    this.type = \"RingGeometry\";\n    this.parameters = {\n      innerRadius,\n      outerRadius,\n      thetaSegments,\n      phiSegments,\n      thetaStart,\n      thetaLength\n    };\n    thetaSegments = Math.max(3, thetaSegments);\n    phiSegments = Math.max(1, phiSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let radius = innerRadius;\n    const radiusStep = (outerRadius - innerRadius) / phiSegments;\n    const vertex2 = new Vector3();\n    const uv = new Vector2();\n    for (let j = 0; j <= phiSegments; j++) {\n      for (let i = 0; i <= thetaSegments; i++) {\n        const segment = thetaStart + i / thetaSegments * thetaLength;\n        vertex2.x = radius * Math.cos(segment);\n        vertex2.y = radius * Math.sin(segment);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normals.push(0, 0, 1);\n        uv.x = (vertex2.x / outerRadius + 1) / 2;\n        uv.y = (vertex2.y / outerRadius + 1) / 2;\n        uvs.push(uv.x, uv.y);\n      }\n      radius += radiusStep;\n    }\n    for (let j = 0; j < phiSegments; j++) {\n      const thetaSegmentLevel = j * (thetaSegments + 1);\n      for (let i = 0; i < thetaSegments; i++) {\n        const segment = i + thetaSegmentLevel;\n        const a = segment;\n        const b = segment + thetaSegments + 1;\n        const c = segment + thetaSegments + 2;\n        const d = segment + 1;\n        indices.push(a, b, d);\n        indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new _RingGeometry(data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength);\n  }\n};\nvar ShapeGeometry = class _ShapeGeometry extends BufferGeometry {\n  constructor(shapes = new Shape([new Vector2(0, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), curveSegments = 12) {\n    super();\n    this.type = \"ShapeGeometry\";\n    this.parameters = {\n      shapes,\n      curveSegments\n    };\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let groupStart = 0;\n    let groupCount = 0;\n    if (Array.isArray(shapes) === false) {\n      addShape(shapes);\n    } else {\n      for (let i = 0; i < shapes.length; i++) {\n        addShape(shapes[i]);\n        this.addGroup(groupStart, groupCount, i);\n        groupStart += groupCount;\n        groupCount = 0;\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function addShape(shape) {\n      const indexOffset = vertices.length / 3;\n      const points = shape.extractPoints(curveSegments);\n      let shapeVertices = points.shape;\n      const shapeHoles = points.holes;\n      if (ShapeUtils.isClockWise(shapeVertices) === false) {\n        shapeVertices = shapeVertices.reverse();\n      }\n      for (let i = 0, l = shapeHoles.length; i < l; i++) {\n        const shapeHole = shapeHoles[i];\n        if (ShapeUtils.isClockWise(shapeHole) === true) {\n          shapeHoles[i] = shapeHole.reverse();\n        }\n      }\n      const faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles);\n      for (let i = 0, l = shapeHoles.length; i < l; i++) {\n        const shapeHole = shapeHoles[i];\n        shapeVertices = shapeVertices.concat(shapeHole);\n      }\n      for (let i = 0, l = shapeVertices.length; i < l; i++) {\n        const vertex2 = shapeVertices[i];\n        vertices.push(vertex2.x, vertex2.y, 0);\n        normals.push(0, 0, 1);\n        uvs.push(vertex2.x, vertex2.y);\n      }\n      for (let i = 0, l = faces.length; i < l; i++) {\n        const face = faces[i];\n        const a = face[0] + indexOffset;\n        const b = face[1] + indexOffset;\n        const c = face[2] + indexOffset;\n        indices.push(a, b, c);\n        groupCount += 3;\n      }\n    }\n  }\n  toJSON() {\n    const data = super.toJSON();\n    const shapes = this.parameters.shapes;\n    return toJSON(shapes, data);\n  }\n  static fromJSON(data, shapes) {\n    const geometryShapes = [];\n    for (let j = 0, jl = data.shapes.length; j < jl; j++) {\n      const shape = shapes[data.shapes[j]];\n      geometryShapes.push(shape);\n    }\n    return new _ShapeGeometry(geometryShapes, data.curveSegments);\n  }\n};\nfunction toJSON(shapes, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i = 0, l = shapes.length; i < l; i++) {\n      const shape = shapes[i];\n      data.shapes.push(shape.uuid);\n    }\n  } else {\n    data.shapes.push(shapes.uuid);\n  }\n  return data;\n}\nvar SphereGeometry = class _SphereGeometry extends BufferGeometry {\n  constructor(radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI) {\n    super();\n    this.type = \"SphereGeometry\";\n    this.parameters = {\n      radius,\n      widthSegments,\n      heightSegments,\n      phiStart,\n      phiLength,\n      thetaStart,\n      thetaLength\n    };\n    widthSegments = Math.max(3, Math.floor(widthSegments));\n    heightSegments = Math.max(2, Math.floor(heightSegments));\n    const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n    let index = 0;\n    const grid = [];\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    for (let iy = 0; iy <= heightSegments; iy++) {\n      const verticesRow = [];\n      const v = iy / heightSegments;\n      let uOffset = 0;\n      if (iy == 0 && thetaStart == 0) {\n        uOffset = 0.5 / widthSegments;\n      } else if (iy == heightSegments && thetaEnd == Math.PI) {\n        uOffset = -0.5 / widthSegments;\n      }\n      for (let ix = 0; ix <= widthSegments; ix++) {\n        const u = ix / widthSegments;\n        vertex2.x = -radius * Math.cos(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n        vertex2.y = radius * Math.cos(thetaStart + v * thetaLength);\n        vertex2.z = radius * Math.sin(phiStart + u * phiLength) * Math.sin(thetaStart + v * thetaLength);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normal.copy(vertex2).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(u + uOffset, 1 - v);\n        verticesRow.push(index++);\n      }\n      grid.push(verticesRow);\n    }\n    for (let iy = 0; iy < heightSegments; iy++) {\n      for (let ix = 0; ix < widthSegments; ix++) {\n        const a = grid[iy][ix + 1];\n        const b = grid[iy][ix];\n        const c = grid[iy + 1][ix];\n        const d = grid[iy + 1][ix + 1];\n        if (iy !== 0 || thetaStart > 0)\n          indices.push(a, b, d);\n        if (iy !== heightSegments - 1 || thetaEnd < Math.PI)\n          indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new _SphereGeometry(data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength);\n  }\n};\nvar TetrahedronGeometry = class _TetrahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const vertices = [\n      1,\n      1,\n      1,\n      -1,\n      -1,\n      1,\n      -1,\n      1,\n      -1,\n      1,\n      -1,\n      -1\n    ];\n    const indices = [\n      2,\n      1,\n      0,\n      0,\n      3,\n      2,\n      1,\n      3,\n      0,\n      2,\n      3,\n      1\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"TetrahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new _TetrahedronGeometry(data.radius, data.detail);\n  }\n};\nvar TorusGeometry = class _TorusGeometry extends BufferGeometry {\n  constructor(radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2) {\n    super();\n    this.type = \"TorusGeometry\";\n    this.parameters = {\n      radius,\n      tube,\n      radialSegments,\n      tubularSegments,\n      arc\n    };\n    radialSegments = Math.floor(radialSegments);\n    tubularSegments = Math.floor(tubularSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const center = new Vector3();\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    for (let j = 0; j <= radialSegments; j++) {\n      for (let i = 0; i <= tubularSegments; i++) {\n        const u = i / tubularSegments * arc;\n        const v = j / radialSegments * Math.PI * 2;\n        vertex2.x = (radius + tube * Math.cos(v)) * Math.cos(u);\n        vertex2.y = (radius + tube * Math.cos(v)) * Math.sin(u);\n        vertex2.z = tube * Math.sin(v);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        center.x = radius * Math.cos(u);\n        center.y = radius * Math.sin(u);\n        normal.subVectors(vertex2, center).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(i / tubularSegments);\n        uvs.push(j / radialSegments);\n      }\n    }\n    for (let j = 1; j <= radialSegments; j++) {\n      for (let i = 1; i <= tubularSegments; i++) {\n        const a = (tubularSegments + 1) * j + i - 1;\n        const b = (tubularSegments + 1) * (j - 1) + i - 1;\n        const c = (tubularSegments + 1) * (j - 1) + i;\n        const d = (tubularSegments + 1) * j + i;\n        indices.push(a, b, d);\n        indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  static fromJSON(data) {\n    return new _TorusGeometry(data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc);\n  }\n};\nvar TorusKnotGeometry = class _TorusKnotGeometry extends BufferGeometry {\n  constructor(radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p2 = 2, q = 3) {\n    super();\n    this.type = \"TorusKnotGeometry\";\n    this.parameters = {\n      radius,\n      tube,\n      tubularSegments,\n      radialSegments,\n      p: p2,\n      q\n    };\n    tubularSegments = Math.floor(tubularSegments);\n    radialSegments = Math.floor(radialSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    const P1 = new Vector3();\n    const P2 = new Vector3();\n    const B2 = new Vector3();\n    const T = new Vector3();\n    const N = new Vector3();\n    for (let i = 0; i <= tubularSegments; ++i) {\n      const u = i / tubularSegments * p2 * Math.PI * 2;\n      calculatePositionOnCurve(u, p2, q, radius, P1);\n      calculatePositionOnCurve(u + 0.01, p2, q, radius, P2);\n      T.subVectors(P2, P1);\n      N.addVectors(P2, P1);\n      B2.crossVectors(T, N);\n      N.crossVectors(B2, T);\n      B2.normalize();\n      N.normalize();\n      for (let j = 0; j <= radialSegments; ++j) {\n        const v = j / radialSegments * Math.PI * 2;\n        const cx = -tube * Math.cos(v);\n        const cy = tube * Math.sin(v);\n        vertex2.x = P1.x + (cx * N.x + cy * B2.x);\n        vertex2.y = P1.y + (cx * N.y + cy * B2.y);\n        vertex2.z = P1.z + (cx * N.z + cy * B2.z);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normal.subVectors(vertex2, P1).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(i / tubularSegments);\n        uvs.push(j / radialSegments);\n      }\n    }\n    for (let j = 1; j <= tubularSegments; j++) {\n      for (let i = 1; i <= radialSegments; i++) {\n        const a = (radialSegments + 1) * (j - 1) + (i - 1);\n        const b = (radialSegments + 1) * j + (i - 1);\n        const c = (radialSegments + 1) * j + i;\n        const d = (radialSegments + 1) * (j - 1) + i;\n        indices.push(a, b, d);\n        indices.push(b, c, d);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function calculatePositionOnCurve(u, p3, q2, radius2, position) {\n      const cu = Math.cos(u);\n      const su = Math.sin(u);\n      const quOverP = q2 / p3 * u;\n      const cs = Math.cos(quOverP);\n      position.x = radius2 * (2 + cs) * 0.5 * cu;\n      position.y = radius2 * (2 + cs) * su * 0.5;\n      position.z = radius2 * Math.sin(quOverP) * 0.5;\n    }\n  }\n  static fromJSON(data) {\n    return new _TorusKnotGeometry(data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q);\n  }\n};\nvar TubeGeometry = class _TubeGeometry extends BufferGeometry {\n  constructor(path = new QuadraticBezierCurve3(new Vector3(-1, -1, 0), new Vector3(-1, 1, 0), new Vector3(1, 1, 0)), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false) {\n    super();\n    this.type = \"TubeGeometry\";\n    this.parameters = {\n      path,\n      tubularSegments,\n      radius,\n      radialSegments,\n      closed\n    };\n    const frames = path.computeFrenetFrames(tubularSegments, closed);\n    this.tangents = frames.tangents;\n    this.normals = frames.normals;\n    this.binormals = frames.binormals;\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    const uv = new Vector2();\n    let P = new Vector3();\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const indices = [];\n    generateBufferData();\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function generateBufferData() {\n      for (let i = 0; i < tubularSegments; i++) {\n        generateSegment(i);\n      }\n      generateSegment(closed === false ? tubularSegments : 0);\n      generateUVs();\n      generateIndices();\n    }\n    function generateSegment(i) {\n      P = path.getPointAt(i / tubularSegments, P);\n      const N = frames.normals[i];\n      const B2 = frames.binormals[i];\n      for (let j = 0; j <= radialSegments; j++) {\n        const v = j / radialSegments * Math.PI * 2;\n        const sin = Math.sin(v);\n        const cos = -Math.cos(v);\n        normal.x = cos * N.x + sin * B2.x;\n        normal.y = cos * N.y + sin * B2.y;\n        normal.z = cos * N.z + sin * B2.z;\n        normal.normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        vertex2.x = P.x + radius * normal.x;\n        vertex2.y = P.y + radius * normal.y;\n        vertex2.z = P.z + radius * normal.z;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n      }\n    }\n    function generateIndices() {\n      for (let j = 1; j <= tubularSegments; j++) {\n        for (let i = 1; i <= radialSegments; i++) {\n          const a = (radialSegments + 1) * (j - 1) + (i - 1);\n          const b = (radialSegments + 1) * j + (i - 1);\n          const c = (radialSegments + 1) * j + i;\n          const d = (radialSegments + 1) * (j - 1) + i;\n          indices.push(a, b, d);\n          indices.push(b, c, d);\n        }\n      }\n    }\n    function generateUVs() {\n      for (let i = 0; i <= tubularSegments; i++) {\n        for (let j = 0; j <= radialSegments; j++) {\n          uv.x = i / tubularSegments;\n          uv.y = j / radialSegments;\n          uvs.push(uv.x, uv.y);\n        }\n      }\n    }\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.path = this.parameters.path.toJSON();\n    return data;\n  }\n  static fromJSON(data) {\n    return new _TubeGeometry(\n      new Curves[data.path.type]().fromJSON(data.path),\n      data.tubularSegments,\n      data.radius,\n      data.radialSegments,\n      data.closed\n    );\n  }\n};\nvar WireframeGeometry = class extends BufferGeometry {\n  constructor(geometry = null) {\n    super();\n    this.type = \"WireframeGeometry\";\n    this.parameters = {\n      geometry\n    };\n    if (geometry !== null) {\n      const vertices = [];\n      const edges = /* @__PURE__ */ new Set();\n      const start = new Vector3();\n      const end = new Vector3();\n      if (geometry.index !== null) {\n        const position = geometry.attributes.position;\n        const indices = geometry.index;\n        let groups = geometry.groups;\n        if (groups.length === 0) {\n          groups = [{ start: 0, count: indices.count, materialIndex: 0 }];\n        }\n        for (let o = 0, ol = groups.length; o < ol; ++o) {\n          const group = groups[o];\n          const groupStart = group.start;\n          const groupCount = group.count;\n          for (let i = groupStart, l = groupStart + groupCount; i < l; i += 3) {\n            for (let j = 0; j < 3; j++) {\n              const index1 = indices.getX(i + j);\n              const index2 = indices.getX(i + (j + 1) % 3);\n              start.fromBufferAttribute(position, index1);\n              end.fromBufferAttribute(position, index2);\n              if (isUniqueEdge(start, end, edges) === true) {\n                vertices.push(start.x, start.y, start.z);\n                vertices.push(end.x, end.y, end.z);\n              }\n            }\n          }\n        }\n      } else {\n        const position = geometry.attributes.position;\n        for (let i = 0, l = position.count / 3; i < l; i++) {\n          for (let j = 0; j < 3; j++) {\n            const index1 = 3 * i + j;\n            const index2 = 3 * i + (j + 1) % 3;\n            start.fromBufferAttribute(position, index1);\n            end.fromBufferAttribute(position, index2);\n            if (isUniqueEdge(start, end, edges) === true) {\n              vertices.push(start.x, start.y, start.z);\n              vertices.push(end.x, end.y, end.z);\n            }\n          }\n        }\n      }\n      this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    }\n  }\n};\nfunction isUniqueEdge(start, end, edges) {\n  const hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n  const hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`;\n  if (edges.has(hash1) === true || edges.has(hash2) === true) {\n    return false;\n  } else {\n    edges.add(hash1);\n    edges.add(hash2);\n    return true;\n  }\n}\nvar Geometries = Object.freeze({\n  __proto__: null,\n  BoxGeometry,\n  CapsuleGeometry,\n  CircleGeometry,\n  ConeGeometry,\n  CylinderGeometry,\n  DodecahedronGeometry,\n  EdgesGeometry,\n  ExtrudeGeometry,\n  IcosahedronGeometry,\n  LatheGeometry,\n  OctahedronGeometry,\n  PlaneGeometry,\n  PolyhedronGeometry,\n  RingGeometry,\n  ShapeGeometry,\n  SphereGeometry,\n  TetrahedronGeometry,\n  TorusGeometry,\n  TorusKnotGeometry,\n  TubeGeometry,\n  WireframeGeometry\n});\nvar MeshStandardMaterial = class extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshStandardMaterial = true;\n    this.defines = { \"STANDARD\": \"\" };\n    this.type = \"MeshStandardMaterial\";\n    this.color = new Color(16777215);\n    this.roughness = 1;\n    this.metalness = 0;\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.emissive = new Color(0);\n    this.emissiveIntensity = 1;\n    this.emissiveMap = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.roughnessMap = null;\n    this.metalnessMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.envMapIntensity = 1;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.flatShading = false;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.defines = { \"STANDARD\": \"\" };\n    this.color.copy(source.color);\n    this.roughness = source.roughness;\n    this.metalness = source.metalness;\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.emissive.copy(source.emissive);\n    this.emissiveMap = source.emissiveMap;\n    this.emissiveIntensity = source.emissiveIntensity;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.roughnessMap = source.roughnessMap;\n    this.metalnessMap = source.metalnessMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.envMapIntensity = source.envMapIntensity;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.flatShading = source.flatShading;\n    this.fog = source.fog;\n    return this;\n  }\n};\nvar MeshPhysicalMaterial = class extends MeshStandardMaterial {\n  constructor(parameters) {\n    super();\n    this.isMeshPhysicalMaterial = true;\n    this.defines = {\n      \"STANDARD\": \"\",\n      \"PHYSICAL\": \"\"\n    };\n    this.type = \"MeshPhysicalMaterial\";\n    this.clearcoatMap = null;\n    this.clearcoatRoughness = 0;\n    this.clearcoatRoughnessMap = null;\n    this.clearcoatNormalScale = new Vector2(1, 1);\n    this.clearcoatNormalMap = null;\n    this.ior = 1.5;\n    Object.defineProperty(this, \"reflectivity\", {\n      get: function() {\n        return clamp(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1);\n      },\n      set: function(reflectivity) {\n        this.ior = (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity);\n      }\n    });\n    this.iridescenceMap = null;\n    this.iridescenceIOR = 1.3;\n    this.iridescenceThicknessRange = [100, 400];\n    this.iridescenceThicknessMap = null;\n    this.sheenColor = new Color(0);\n    this.sheenColorMap = null;\n    this.sheenRoughness = 1;\n    this.sheenRoughnessMap = null;\n    this.transmissionMap = null;\n    this.thickness = 0;\n    this.thicknessMap = null;\n    this.attenuationDistance = Infinity;\n    this.attenuationColor = new Color(1, 1, 1);\n    this.specularIntensity = 1;\n    this.specularIntensityMap = null;\n    this.specularColor = new Color(1, 1, 1);\n    this.specularColorMap = null;\n    this._sheen = 0;\n    this._clearcoat = 0;\n    this._iridescence = 0;\n    this._transmission = 0;\n    this.setValues(parameters);\n  }\n  get sheen() {\n    return this._sheen;\n  }\n  set sheen(value) {\n    if (this._sheen > 0 !== value > 0) {\n      this.version++;\n    }\n    this._sheen = value;\n  }\n  get clearcoat() {\n    return this._clearcoat;\n  }\n  set clearcoat(value) {\n    if (this._clearcoat > 0 !== value > 0) {\n      this.version++;\n    }\n    this._clearcoat = value;\n  }\n  get iridescence() {\n    return this._iridescence;\n  }\n  set iridescence(value) {\n    if (this._iridescence > 0 !== value > 0) {\n      this.version++;\n    }\n    this._iridescence = value;\n  }\n  get transmission() {\n    return this._transmission;\n  }\n  set transmission(value) {\n    if (this._transmission > 0 !== value > 0) {\n      this.version++;\n    }\n    this._transmission = value;\n  }\n  copy(source) {\n    super.copy(source);\n    this.defines = {\n      \"STANDARD\": \"\",\n      \"PHYSICAL\": \"\"\n    };\n    this.clearcoat = source.clearcoat;\n    this.clearcoatMap = source.clearcoatMap;\n    this.clearcoatRoughness = source.clearcoatRoughness;\n    this.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n    this.clearcoatNormalMap = source.clearcoatNormalMap;\n    this.clearcoatNormalScale.copy(source.clearcoatNormalScale);\n    this.ior = source.ior;\n    this.iridescence = source.iridescence;\n    this.iridescenceMap = source.iridescenceMap;\n    this.iridescenceIOR = source.iridescenceIOR;\n    this.iridescenceThicknessRange = [...source.iridescenceThicknessRange];\n    this.iridescenceThicknessMap = source.iridescenceThicknessMap;\n    this.sheen = source.sheen;\n    this.sheenColor.copy(source.sheenColor);\n    this.sheenColorMap = source.sheenColorMap;\n    this.sheenRoughness = source.sheenRoughness;\n    this.sheenRoughnessMap = source.sheenRoughnessMap;\n    this.transmission = source.transmission;\n    this.transmissionMap = source.transmissionMap;\n    this.thickness = source.thickness;\n    this.thicknessMap = source.thicknessMap;\n    this.attenuationDistance = source.attenuationDistance;\n    this.attenuationColor.copy(source.attenuationColor);\n    this.specularIntensity = source.specularIntensity;\n    this.specularIntensityMap = source.specularIntensityMap;\n    this.specularColor.copy(source.specularColor);\n    this.specularColorMap = source.specularColorMap;\n    return this;\n  }\n};\nfunction arraySlice(array, from, to) {\n  if (isTypedArray(array)) {\n    return new array.constructor(array.subarray(from, to !== void 0 ? to : array.length));\n  }\n  return array.slice(from, to);\n}\nfunction convertArray(array, type, forceClone) {\n  if (!array || // let 'undefined' and 'null' pass\n  !forceClone && array.constructor === type)\n    return array;\n  if (typeof type.BYTES_PER_ELEMENT === \"number\") {\n    return new type(array);\n  }\n  return Array.prototype.slice.call(array);\n}\nfunction isTypedArray(object) {\n  return ArrayBuffer.isView(object) && !(object instanceof DataView);\n}\nfunction getKeyframeOrder(times) {\n  function compareTime(i, j) {\n    return times[i] - times[j];\n  }\n  const n2 = times.length;\n  const result = new Array(n2);\n  for (let i = 0; i !== n2; ++i)\n    result[i] = i;\n  result.sort(compareTime);\n  return result;\n}\nfunction sortedArray(values, stride, order) {\n  const nValues = values.length;\n  const result = new values.constructor(nValues);\n  for (let i = 0, dstOffset = 0; dstOffset !== nValues; ++i) {\n    const srcOffset = order[i] * stride;\n    for (let j = 0; j !== stride; ++j) {\n      result[dstOffset++] = values[srcOffset + j];\n    }\n  }\n  return result;\n}\nfunction flattenJSON(jsonKeys, times, values, valuePropertyName) {\n  let i = 1, key = jsonKeys[0];\n  while (key !== void 0 && key[valuePropertyName] === void 0) {\n    key = jsonKeys[i++];\n  }\n  if (key === void 0)\n    return;\n  let value = key[valuePropertyName];\n  if (value === void 0)\n    return;\n  if (Array.isArray(value)) {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        values.push.apply(values, value);\n      }\n      key = jsonKeys[i++];\n    } while (key !== void 0);\n  } else if (value.toArray !== void 0) {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        value.toArray(values, values.length);\n      }\n      key = jsonKeys[i++];\n    } while (key !== void 0);\n  } else {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        values.push(value);\n      }\n      key = jsonKeys[i++];\n    } while (key !== void 0);\n  }\n}\nfunction subclip(sourceClip, name, startFrame, endFrame, fps = 30) {\n  const clip = sourceClip.clone();\n  clip.name = name;\n  const tracks = [];\n  for (let i = 0; i < clip.tracks.length; ++i) {\n    const track = clip.tracks[i];\n    const valueSize = track.getValueSize();\n    const times = [];\n    const values = [];\n    for (let j = 0; j < track.times.length; ++j) {\n      const frame = track.times[j] * fps;\n      if (frame < startFrame || frame >= endFrame)\n        continue;\n      times.push(track.times[j]);\n      for (let k = 0; k < valueSize; ++k) {\n        values.push(track.values[j * valueSize + k]);\n      }\n    }\n    if (times.length === 0)\n      continue;\n    track.times = convertArray(times, track.times.constructor);\n    track.values = convertArray(values, track.values.constructor);\n    tracks.push(track);\n  }\n  clip.tracks = tracks;\n  let minStartTime = Infinity;\n  for (let i = 0; i < clip.tracks.length; ++i) {\n    if (minStartTime > clip.tracks[i].times[0]) {\n      minStartTime = clip.tracks[i].times[0];\n    }\n  }\n  for (let i = 0; i < clip.tracks.length; ++i) {\n    clip.tracks[i].shift(-1 * minStartTime);\n  }\n  clip.resetDuration();\n  return clip;\n}\nfunction makeClipAdditive(targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30) {\n  if (fps <= 0)\n    fps = 30;\n  const numTracks = referenceClip.tracks.length;\n  const referenceTime = referenceFrame / fps;\n  for (let i = 0; i < numTracks; ++i) {\n    const referenceTrack = referenceClip.tracks[i];\n    const referenceTrackType = referenceTrack.ValueTypeName;\n    if (referenceTrackType === \"bool\" || referenceTrackType === \"string\")\n      continue;\n    const targetTrack = targetClip.tracks.find(function(track) {\n      return track.name === referenceTrack.name && track.ValueTypeName === referenceTrackType;\n    });\n    if (targetTrack === void 0)\n      continue;\n    let referenceOffset = 0;\n    const referenceValueSize = referenceTrack.getValueSize();\n    if (referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n      referenceOffset = referenceValueSize / 3;\n    }\n    let targetOffset = 0;\n    const targetValueSize = targetTrack.getValueSize();\n    if (targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n      targetOffset = targetValueSize / 3;\n    }\n    const lastIndex = referenceTrack.times.length - 1;\n    let referenceValue;\n    if (referenceTime <= referenceTrack.times[0]) {\n      const startIndex = referenceOffset;\n      const endIndex = referenceValueSize - referenceOffset;\n      referenceValue = arraySlice(referenceTrack.values, startIndex, endIndex);\n    } else if (referenceTime >= referenceTrack.times[lastIndex]) {\n      const startIndex = lastIndex * referenceValueSize + referenceOffset;\n      const endIndex = startIndex + referenceValueSize - referenceOffset;\n      referenceValue = arraySlice(referenceTrack.values, startIndex, endIndex);\n    } else {\n      const interpolant = referenceTrack.createInterpolant();\n      const startIndex = referenceOffset;\n      const endIndex = referenceValueSize - referenceOffset;\n      interpolant.evaluate(referenceTime);\n      referenceValue = arraySlice(interpolant.resultBuffer, startIndex, endIndex);\n    }\n    if (referenceTrackType === \"quaternion\") {\n      const referenceQuat = new Quaternion().fromArray(referenceValue).normalize().conjugate();\n      referenceQuat.toArray(referenceValue);\n    }\n    const numTimes = targetTrack.times.length;\n    for (let j = 0; j < numTimes; ++j) {\n      const valueStart = j * targetValueSize + targetOffset;\n      if (referenceTrackType === \"quaternion\") {\n        Quaternion.multiplyQuaternionsFlat(\n          targetTrack.values,\n          valueStart,\n          referenceValue,\n          0,\n          targetTrack.values,\n          valueStart\n        );\n      } else {\n        const valueEnd = targetValueSize - targetOffset * 2;\n        for (let k = 0; k < valueEnd; ++k) {\n          targetTrack.values[valueStart + k] -= referenceValue[k];\n        }\n      }\n    }\n  }\n  targetClip.blendMode = AdditiveAnimationBlendMode;\n  return targetClip;\n}\nvar AnimationUtils = Object.freeze({\n  __proto__: null,\n  arraySlice,\n  convertArray,\n  isTypedArray,\n  getKeyframeOrder,\n  sortedArray,\n  flattenJSON,\n  subclip,\n  makeClipAdditive\n});\nvar Interpolant = class {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    this.parameterPositions = parameterPositions;\n    this._cachedIndex = 0;\n    this.resultBuffer = resultBuffer !== void 0 ? resultBuffer : new sampleValues.constructor(sampleSize);\n    this.sampleValues = sampleValues;\n    this.valueSize = sampleSize;\n    this.settings = null;\n    this.DefaultSettings_ = {};\n  }\n  evaluate(t2) {\n    const pp = this.parameterPositions;\n    let i1 = this._cachedIndex, t1 = pp[i1], t0 = pp[i1 - 1];\n    validate_interval: {\n      seek: {\n        let right;\n        linear_scan: {\n          forward_scan:\n            if (!(t2 < t1)) {\n              for (let giveUpAt = i1 + 2; ; ) {\n                if (t1 === void 0) {\n                  if (t2 < t0)\n                    break forward_scan;\n                  i1 = pp.length;\n                  this._cachedIndex = i1;\n                  return this.copySampleValue_(i1 - 1);\n                }\n                if (i1 === giveUpAt)\n                  break;\n                t0 = t1;\n                t1 = pp[++i1];\n                if (t2 < t1) {\n                  break seek;\n                }\n              }\n              right = pp.length;\n              break linear_scan;\n            }\n          if (!(t2 >= t0)) {\n            const t1global = pp[1];\n            if (t2 < t1global) {\n              i1 = 2;\n              t0 = t1global;\n            }\n            for (let giveUpAt = i1 - 2; ; ) {\n              if (t0 === void 0) {\n                this._cachedIndex = 0;\n                return this.copySampleValue_(0);\n              }\n              if (i1 === giveUpAt)\n                break;\n              t1 = t0;\n              t0 = pp[--i1 - 1];\n              if (t2 >= t0) {\n                break seek;\n              }\n            }\n            right = i1;\n            i1 = 0;\n            break linear_scan;\n          }\n          break validate_interval;\n        }\n        while (i1 < right) {\n          const mid = i1 + right >>> 1;\n          if (t2 < pp[mid]) {\n            right = mid;\n          } else {\n            i1 = mid + 1;\n          }\n        }\n        t1 = pp[i1];\n        t0 = pp[i1 - 1];\n        if (t0 === void 0) {\n          this._cachedIndex = 0;\n          return this.copySampleValue_(0);\n        }\n        if (t1 === void 0) {\n          i1 = pp.length;\n          this._cachedIndex = i1;\n          return this.copySampleValue_(i1 - 1);\n        }\n      }\n      this._cachedIndex = i1;\n      this.intervalChanged_(i1, t0, t1);\n    }\n    return this.interpolate_(i1, t0, t2, t1);\n  }\n  getSettings_() {\n    return this.settings || this.DefaultSettings_;\n  }\n  copySampleValue_(index) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset = index * stride;\n    for (let i = 0; i !== stride; ++i) {\n      result[i] = values[offset + i];\n    }\n    return result;\n  }\n  // Template methods for derived classes:\n  interpolate_() {\n    throw new Error(\"call to abstract method\");\n  }\n  intervalChanged_() {\n  }\n};\nvar CubicInterpolant = class extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n    this._weightPrev = -0;\n    this._offsetPrev = -0;\n    this._weightNext = -0;\n    this._offsetNext = -0;\n    this.DefaultSettings_ = {\n      endingStart: ZeroCurvatureEnding,\n      endingEnd: ZeroCurvatureEnding\n    };\n  }\n  intervalChanged_(i1, t0, t1) {\n    const pp = this.parameterPositions;\n    let iPrev = i1 - 2, iNext = i1 + 1, tPrev = pp[iPrev], tNext = pp[iNext];\n    if (tPrev === void 0) {\n      switch (this.getSettings_().endingStart) {\n        case ZeroSlopeEnding:\n          iPrev = i1;\n          tPrev = 2 * t0 - t1;\n          break;\n        case WrapAroundEnding:\n          iPrev = pp.length - 2;\n          tPrev = t0 + pp[iPrev] - pp[iPrev + 1];\n          break;\n        default:\n          iPrev = i1;\n          tPrev = t1;\n      }\n    }\n    if (tNext === void 0) {\n      switch (this.getSettings_().endingEnd) {\n        case ZeroSlopeEnding:\n          iNext = i1;\n          tNext = 2 * t1 - t0;\n          break;\n        case WrapAroundEnding:\n          iNext = 1;\n          tNext = t1 + pp[1] - pp[0];\n          break;\n        default:\n          iNext = i1 - 1;\n          tNext = t0;\n      }\n    }\n    const halfDt = (t1 - t0) * 0.5, stride = this.valueSize;\n    this._weightPrev = halfDt / (t0 - tPrev);\n    this._weightNext = halfDt / (tNext - t1);\n    this._offsetPrev = iPrev * stride;\n    this._offsetNext = iNext * stride;\n  }\n  interpolate_(i1, t0, t2, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, o1 = i1 * stride, o0 = o1 - stride, oP = this._offsetPrev, oN = this._offsetNext, wP = this._weightPrev, wN = this._weightNext, p2 = (t2 - t0) / (t1 - t0), pp = p2 * p2, ppp = pp * p2;\n    const sP = -wP * ppp + 2 * wP * pp - wP * p2;\n    const s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p2 + 1;\n    const s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p2;\n    const sN = wN * ppp - wN * pp;\n    for (let i = 0; i !== stride; ++i) {\n      result[i] = sP * values[oP + i] + s0 * values[o0 + i] + s1 * values[o1 + i] + sN * values[oN + i];\n    }\n    return result;\n  }\n};\nvar LinearInterpolant = class extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1, t0, t2, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset1 = i1 * stride, offset0 = offset1 - stride, weight1 = (t2 - t0) / (t1 - t0), weight0 = 1 - weight1;\n    for (let i = 0; i !== stride; ++i) {\n      result[i] = values[offset0 + i] * weight0 + values[offset1 + i] * weight1;\n    }\n    return result;\n  }\n};\nvar DiscreteInterpolant = class extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1) {\n    return this.copySampleValue_(i1 - 1);\n  }\n};\nvar KeyframeTrack = class {\n  constructor(name, times, values, interpolation) {\n    if (name === void 0)\n      throw new Error(\"THREE.KeyframeTrack: track name is undefined\");\n    if (times === void 0 || times.length === 0)\n      throw new Error(\"THREE.KeyframeTrack: no keyframes in track named \" + name);\n    this.name = name;\n    this.times = convertArray(times, this.TimeBufferType);\n    this.values = convertArray(values, this.ValueBufferType);\n    this.setInterpolation(interpolation || this.DefaultInterpolation);\n  }\n  // Serialization (in static context, because of constructor invocation\n  // and automatic invocation of .toJSON):\n  static toJSON(track) {\n    const trackType = track.constructor;\n    let json;\n    if (trackType.toJSON !== this.toJSON) {\n      json = trackType.toJSON(track);\n    } else {\n      json = {\n        \"name\": track.name,\n        \"times\": convertArray(track.times, Array),\n        \"values\": convertArray(track.values, Array)\n      };\n      const interpolation = track.getInterpolation();\n      if (interpolation !== track.DefaultInterpolation) {\n        json.interpolation = interpolation;\n      }\n    }\n    json.type = track.ValueTypeName;\n    return json;\n  }\n  InterpolantFactoryMethodDiscrete(result) {\n    return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n  InterpolantFactoryMethodLinear(result) {\n    return new LinearInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n  InterpolantFactoryMethodSmooth(result) {\n    return new CubicInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n  setInterpolation(interpolation) {\n    let factoryMethod;\n    switch (interpolation) {\n      case InterpolateDiscrete:\n        factoryMethod = this.InterpolantFactoryMethodDiscrete;\n        break;\n      case InterpolateLinear:\n        factoryMethod = this.InterpolantFactoryMethodLinear;\n        break;\n      case InterpolateSmooth:\n        factoryMethod = this.InterpolantFactoryMethodSmooth;\n        break;\n    }\n    if (factoryMethod === void 0) {\n      const message = \"unsupported interpolation for \" + this.ValueTypeName + \" keyframe track named \" + this.name;\n      if (this.createInterpolant === void 0) {\n        if (interpolation !== this.DefaultInterpolation) {\n          this.setInterpolation(this.DefaultInterpolation);\n        } else {\n          throw new Error(message);\n        }\n      }\n      console.warn(\"THREE.KeyframeTrack:\", message);\n      return this;\n    }\n    this.createInterpolant = factoryMethod;\n    return this;\n  }\n  getInterpolation() {\n    switch (this.createInterpolant) {\n      case this.InterpolantFactoryMethodDiscrete:\n        return InterpolateDiscrete;\n      case this.InterpolantFactoryMethodLinear:\n        return InterpolateLinear;\n      case this.InterpolantFactoryMethodSmooth:\n        return InterpolateSmooth;\n    }\n  }\n  getValueSize() {\n    return this.values.length / this.times.length;\n  }\n  // move all keyframes either forwards or backwards in time\n  shift(timeOffset) {\n    if (timeOffset !== 0) {\n      const times = this.times;\n      for (let i = 0, n2 = times.length; i !== n2; ++i) {\n        times[i] += timeOffset;\n      }\n    }\n    return this;\n  }\n  // scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n  scale(timeScale) {\n    if (timeScale !== 1) {\n      const times = this.times;\n      for (let i = 0, n2 = times.length; i !== n2; ++i) {\n        times[i] *= timeScale;\n      }\n    }\n    return this;\n  }\n  // removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n  // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n  trim(startTime, endTime) {\n    const times = this.times, nKeys = times.length;\n    let from = 0, to = nKeys - 1;\n    while (from !== nKeys && times[from] < startTime) {\n      ++from;\n    }\n    while (to !== -1 && times[to] > endTime) {\n      --to;\n    }\n    ++to;\n    if (from !== 0 || to !== nKeys) {\n      if (from >= to) {\n        to = Math.max(to, 1);\n        from = to - 1;\n      }\n      const stride = this.getValueSize();\n      this.times = arraySlice(times, from, to);\n      this.values = arraySlice(this.values, from * stride, to * stride);\n    }\n    return this;\n  }\n  // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n  validate() {\n    let valid = true;\n    const valueSize = this.getValueSize();\n    if (valueSize - Math.floor(valueSize) !== 0) {\n      console.error(\"THREE.KeyframeTrack: Invalid value size in track.\", this);\n      valid = false;\n    }\n    const times = this.times, values = this.values, nKeys = times.length;\n    if (nKeys === 0) {\n      console.error(\"THREE.KeyframeTrack: Track is empty.\", this);\n      valid = false;\n    }\n    let prevTime = null;\n    for (let i = 0; i !== nKeys; i++) {\n      const currTime = times[i];\n      if (typeof currTime === \"number\" && isNaN(currTime)) {\n        console.error(\"THREE.KeyframeTrack: Time is not a valid number.\", this, i, currTime);\n        valid = false;\n        break;\n      }\n      if (prevTime !== null && prevTime > currTime) {\n        console.error(\"THREE.KeyframeTrack: Out of order keys.\", this, i, currTime, prevTime);\n        valid = false;\n        break;\n      }\n      prevTime = currTime;\n    }\n    if (values !== void 0) {\n      if (isTypedArray(values)) {\n        for (let i = 0, n2 = values.length; i !== n2; ++i) {\n          const value = values[i];\n          if (isNaN(value)) {\n            console.error(\"THREE.KeyframeTrack: Value is not a valid number.\", this, i, value);\n            valid = false;\n            break;\n          }\n        }\n      }\n    }\n    return valid;\n  }\n  // removes equivalent sequential keys as common in morph target sequences\n  // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n  optimize() {\n    const times = arraySlice(this.times), values = arraySlice(this.values), stride = this.getValueSize(), smoothInterpolation = this.getInterpolation() === InterpolateSmooth, lastIndex = times.length - 1;\n    let writeIndex = 1;\n    for (let i = 1; i < lastIndex; ++i) {\n      let keep = false;\n      const time = times[i];\n      const timeNext = times[i + 1];\n      if (time !== timeNext && (i !== 1 || time !== times[0])) {\n        if (!smoothInterpolation) {\n          const offset = i * stride, offsetP = offset - stride, offsetN = offset + stride;\n          for (let j = 0; j !== stride; ++j) {\n            const value = values[offset + j];\n            if (value !== values[offsetP + j] || value !== values[offsetN + j]) {\n              keep = true;\n              break;\n            }\n          }\n        } else {\n          keep = true;\n        }\n      }\n      if (keep) {\n        if (i !== writeIndex) {\n          times[writeIndex] = times[i];\n          const readOffset = i * stride, writeOffset = writeIndex * stride;\n          for (let j = 0; j !== stride; ++j) {\n            values[writeOffset + j] = values[readOffset + j];\n          }\n        }\n        ++writeIndex;\n      }\n    }\n    if (lastIndex > 0) {\n      times[writeIndex] = times[lastIndex];\n      for (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++j) {\n        values[writeOffset + j] = values[readOffset + j];\n      }\n      ++writeIndex;\n    }\n    if (writeIndex !== times.length) {\n      this.times = arraySlice(times, 0, writeIndex);\n      this.values = arraySlice(values, 0, writeIndex * stride);\n    } else {\n      this.times = times;\n      this.values = values;\n    }\n    return this;\n  }\n  clone() {\n    const times = arraySlice(this.times, 0);\n    const values = arraySlice(this.values, 0);\n    const TypedKeyframeTrack = this.constructor;\n    const track = new TypedKeyframeTrack(this.name, times, values);\n    track.createInterpolant = this.createInterpolant;\n    return track;\n  }\n};\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nvar BooleanKeyframeTrack = class extends KeyframeTrack {\n};\nBooleanKeyframeTrack.prototype.ValueTypeName = \"bool\";\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nvar ColorKeyframeTrack = class extends KeyframeTrack {\n};\nColorKeyframeTrack.prototype.ValueTypeName = \"color\";\nvar NumberKeyframeTrack = class extends KeyframeTrack {\n};\nNumberKeyframeTrack.prototype.ValueTypeName = \"number\";\nvar QuaternionLinearInterpolant = class extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1, t0, t2, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, alpha = (t2 - t0) / (t1 - t0);\n    let offset = i1 * stride;\n    for (let end = offset + stride; offset !== end; offset += 4) {\n      Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha);\n    }\n    return result;\n  }\n};\nvar QuaternionKeyframeTrack = class extends KeyframeTrack {\n  InterpolantFactoryMethodLinear(result) {\n    return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n};\nQuaternionKeyframeTrack.prototype.ValueTypeName = \"quaternion\";\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nvar StringKeyframeTrack = class extends KeyframeTrack {\n};\nStringKeyframeTrack.prototype.ValueTypeName = \"string\";\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nvar VectorKeyframeTrack = class extends KeyframeTrack {\n};\nVectorKeyframeTrack.prototype.ValueTypeName = \"vector\";\nvar AnimationClip = class {\n  constructor(name, duration = -1, tracks, blendMode = NormalAnimationBlendMode) {\n    this.name = name;\n    this.tracks = tracks;\n    this.duration = duration;\n    this.blendMode = blendMode;\n    this.uuid = generateUUID();\n    if (this.duration < 0) {\n      this.resetDuration();\n    }\n  }\n  static parse(json) {\n    const tracks = [], jsonTracks = json.tracks, frameTime = 1 / (json.fps || 1);\n    for (let i = 0, n2 = jsonTracks.length; i !== n2; ++i) {\n      tracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime));\n    }\n    const clip = new this(json.name, json.duration, tracks, json.blendMode);\n    clip.uuid = json.uuid;\n    return clip;\n  }\n  static toJSON(clip) {\n    const tracks = [], clipTracks = clip.tracks;\n    const json = {\n      \"name\": clip.name,\n      \"duration\": clip.duration,\n      \"tracks\": tracks,\n      \"uuid\": clip.uuid,\n      \"blendMode\": clip.blendMode\n    };\n    for (let i = 0, n2 = clipTracks.length; i !== n2; ++i) {\n      tracks.push(KeyframeTrack.toJSON(clipTracks[i]));\n    }\n    return json;\n  }\n  static CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) {\n    const numMorphTargets = morphTargetSequence.length;\n    const tracks = [];\n    for (let i = 0; i < numMorphTargets; i++) {\n      let times = [];\n      let values = [];\n      times.push(\n        (i + numMorphTargets - 1) % numMorphTargets,\n        i,\n        (i + 1) % numMorphTargets\n      );\n      values.push(0, 1, 0);\n      const order = getKeyframeOrder(times);\n      times = sortedArray(times, 1, order);\n      values = sortedArray(values, 1, order);\n      if (!noLoop && times[0] === 0) {\n        times.push(numMorphTargets);\n        values.push(values[0]);\n      }\n      tracks.push(\n        new NumberKeyframeTrack(\n          \".morphTargetInfluences[\" + morphTargetSequence[i].name + \"]\",\n          times,\n          values\n        ).scale(1 / fps)\n      );\n    }\n    return new this(name, -1, tracks);\n  }\n  static findByName(objectOrClipArray, name) {\n    let clipArray = objectOrClipArray;\n    if (!Array.isArray(objectOrClipArray)) {\n      const o = objectOrClipArray;\n      clipArray = o.geometry && o.geometry.animations || o.animations;\n    }\n    for (let i = 0; i < clipArray.length; i++) {\n      if (clipArray[i].name === name) {\n        return clipArray[i];\n      }\n    }\n    return null;\n  }\n  static CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) {\n    const animationToMorphTargets = {};\n    const pattern = /^([\\w-]*?)([\\d]+)$/;\n    for (let i = 0, il = morphTargets.length; i < il; i++) {\n      const morphTarget = morphTargets[i];\n      const parts = morphTarget.name.match(pattern);\n      if (parts && parts.length > 1) {\n        const name = parts[1];\n        let animationMorphTargets = animationToMorphTargets[name];\n        if (!animationMorphTargets) {\n          animationToMorphTargets[name] = animationMorphTargets = [];\n        }\n        animationMorphTargets.push(morphTarget);\n      }\n    }\n    const clips = [];\n    for (const name in animationToMorphTargets) {\n      clips.push(this.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop));\n    }\n    return clips;\n  }\n  // parse the animation.hierarchy format\n  static parseAnimation(animation, bones) {\n    if (!animation) {\n      console.error(\"THREE.AnimationClip: No animation in JSONLoader data.\");\n      return null;\n    }\n    const addNonemptyTrack = function(trackType, trackName, animationKeys, propertyName, destTracks) {\n      if (animationKeys.length !== 0) {\n        const times = [];\n        const values = [];\n        flattenJSON(animationKeys, times, values, propertyName);\n        if (times.length !== 0) {\n          destTracks.push(new trackType(trackName, times, values));\n        }\n      }\n    };\n    const tracks = [];\n    const clipName = animation.name || \"default\";\n    const fps = animation.fps || 30;\n    const blendMode = animation.blendMode;\n    let duration = animation.length || -1;\n    const hierarchyTracks = animation.hierarchy || [];\n    for (let h = 0; h < hierarchyTracks.length; h++) {\n      const animationKeys = hierarchyTracks[h].keys;\n      if (!animationKeys || animationKeys.length === 0)\n        continue;\n      if (animationKeys[0].morphTargets) {\n        const morphTargetNames = {};\n        let k;\n        for (k = 0; k < animationKeys.length; k++) {\n          if (animationKeys[k].morphTargets) {\n            for (let m = 0; m < animationKeys[k].morphTargets.length; m++) {\n              morphTargetNames[animationKeys[k].morphTargets[m]] = -1;\n            }\n          }\n        }\n        for (const morphTargetName in morphTargetNames) {\n          const times = [];\n          const values = [];\n          for (let m = 0; m !== animationKeys[k].morphTargets.length; ++m) {\n            const animationKey = animationKeys[k];\n            times.push(animationKey.time);\n            values.push(animationKey.morphTarget === morphTargetName ? 1 : 0);\n          }\n          tracks.push(new NumberKeyframeTrack(\".morphTargetInfluence[\" + morphTargetName + \"]\", times, values));\n        }\n        duration = morphTargetNames.length * fps;\n      } else {\n        const boneName = \".bones[\" + bones[h].name + \"]\";\n        addNonemptyTrack(\n          VectorKeyframeTrack,\n          boneName + \".position\",\n          animationKeys,\n          \"pos\",\n          tracks\n        );\n        addNonemptyTrack(\n          QuaternionKeyframeTrack,\n          boneName + \".quaternion\",\n          animationKeys,\n          \"rot\",\n          tracks\n        );\n        addNonemptyTrack(\n          VectorKeyframeTrack,\n          boneName + \".scale\",\n          animationKeys,\n          \"scl\",\n          tracks\n        );\n      }\n    }\n    if (tracks.length === 0) {\n      return null;\n    }\n    const clip = new this(clipName, duration, tracks, blendMode);\n    return clip;\n  }\n  resetDuration() {\n    const tracks = this.tracks;\n    let duration = 0;\n    for (let i = 0, n2 = tracks.length; i !== n2; ++i) {\n      const track = this.tracks[i];\n      duration = Math.max(duration, track.times[track.times.length - 1]);\n    }\n    this.duration = duration;\n    return this;\n  }\n  trim() {\n    for (let i = 0; i < this.tracks.length; i++) {\n      this.tracks[i].trim(0, this.duration);\n    }\n    return this;\n  }\n  validate() {\n    let valid = true;\n    for (let i = 0; i < this.tracks.length; i++) {\n      valid = valid && this.tracks[i].validate();\n    }\n    return valid;\n  }\n  optimize() {\n    for (let i = 0; i < this.tracks.length; i++) {\n      this.tracks[i].optimize();\n    }\n    return this;\n  }\n  clone() {\n    const tracks = [];\n    for (let i = 0; i < this.tracks.length; i++) {\n      tracks.push(this.tracks[i].clone());\n    }\n    return new this.constructor(this.name, this.duration, tracks, this.blendMode);\n  }\n  toJSON() {\n    return this.constructor.toJSON(this);\n  }\n};\nfunction getTrackTypeForValueTypeName(typeName) {\n  switch (typeName.toLowerCase()) {\n    case \"scalar\":\n    case \"double\":\n    case \"float\":\n    case \"number\":\n    case \"integer\":\n      return NumberKeyframeTrack;\n    case \"vector\":\n    case \"vector2\":\n    case \"vector3\":\n    case \"vector4\":\n      return VectorKeyframeTrack;\n    case \"color\":\n      return ColorKeyframeTrack;\n    case \"quaternion\":\n      return QuaternionKeyframeTrack;\n    case \"bool\":\n    case \"boolean\":\n      return BooleanKeyframeTrack;\n    case \"string\":\n      return StringKeyframeTrack;\n  }\n  throw new Error(\"THREE.KeyframeTrack: Unsupported typeName: \" + typeName);\n}\nfunction parseKeyframeTrack(json) {\n  if (json.type === void 0) {\n    throw new Error(\"THREE.KeyframeTrack: track type undefined, can not parse\");\n  }\n  const trackType = getTrackTypeForValueTypeName(json.type);\n  if (json.times === void 0) {\n    const times = [], values = [];\n    flattenJSON(json.keys, times, values, \"value\");\n    json.times = times;\n    json.values = values;\n  }\n  if (trackType.parse !== void 0) {\n    return trackType.parse(json);\n  } else {\n    return new trackType(json.name, json.times, json.values, json.interpolation);\n  }\n}\nvar Cache = {\n  enabled: false,\n  files: {},\n  add: function(key, file) {\n    if (this.enabled === false)\n      return;\n    this.files[key] = file;\n  },\n  get: function(key) {\n    if (this.enabled === false)\n      return;\n    return this.files[key];\n  },\n  remove: function(key) {\n    delete this.files[key];\n  },\n  clear: function() {\n    this.files = {};\n  }\n};\nvar LoadingManager = class {\n  constructor(onLoad, onProgress, onError) {\n    const scope = this;\n    let isLoading = false;\n    let itemsLoaded = 0;\n    let itemsTotal = 0;\n    let urlModifier = void 0;\n    const handlers = [];\n    this.onStart = void 0;\n    this.onLoad = onLoad;\n    this.onProgress = onProgress;\n    this.onError = onError;\n    this.itemStart = function(url) {\n      itemsTotal++;\n      if (isLoading === false) {\n        if (scope.onStart !== void 0) {\n          scope.onStart(url, itemsLoaded, itemsTotal);\n        }\n      }\n      isLoading = true;\n    };\n    this.itemEnd = function(url) {\n      itemsLoaded++;\n      if (scope.onProgress !== void 0) {\n        scope.onProgress(url, itemsLoaded, itemsTotal);\n      }\n      if (itemsLoaded === itemsTotal) {\n        isLoading = false;\n        if (scope.onLoad !== void 0) {\n          scope.onLoad();\n        }\n      }\n    };\n    this.itemError = function(url) {\n      if (scope.onError !== void 0) {\n        scope.onError(url);\n      }\n    };\n    this.resolveURL = function(url) {\n      if (urlModifier) {\n        return urlModifier(url);\n      }\n      return url;\n    };\n    this.setURLModifier = function(transform) {\n      urlModifier = transform;\n      return this;\n    };\n    this.addHandler = function(regex, loader) {\n      handlers.push(regex, loader);\n      return this;\n    };\n    this.removeHandler = function(regex) {\n      const index = handlers.indexOf(regex);\n      if (index !== -1) {\n        handlers.splice(index, 2);\n      }\n      return this;\n    };\n    this.getHandler = function(file) {\n      for (let i = 0, l = handlers.length; i < l; i += 2) {\n        const regex = handlers[i];\n        const loader = handlers[i + 1];\n        if (regex.global)\n          regex.lastIndex = 0;\n        if (regex.test(file)) {\n          return loader;\n        }\n      }\n      return null;\n    };\n  }\n};\nvar DefaultLoadingManager = new LoadingManager();\nvar Loader = class {\n  constructor(manager) {\n    this.manager = manager !== void 0 ? manager : DefaultLoadingManager;\n    this.crossOrigin = \"anonymous\";\n    this.withCredentials = false;\n    this.path = \"\";\n    this.resourcePath = \"\";\n    this.requestHeader = {};\n  }\n  load() {\n  }\n  loadAsync(url, onProgress) {\n    const scope = this;\n    return new Promise(function(resolve, reject) {\n      scope.load(url, resolve, onProgress, reject);\n    });\n  }\n  parse() {\n  }\n  setCrossOrigin(crossOrigin) {\n    this.crossOrigin = crossOrigin;\n    return this;\n  }\n  setWithCredentials(value) {\n    this.withCredentials = value;\n    return this;\n  }\n  setPath(path) {\n    this.path = path;\n    return this;\n  }\n  setResourcePath(resourcePath) {\n    this.resourcePath = resourcePath;\n    return this;\n  }\n  setRequestHeader(requestHeader) {\n    this.requestHeader = requestHeader;\n    return this;\n  }\n};\nvar loading = {};\nvar HttpError = class extends Error {\n  constructor(message, response) {\n    super(message);\n    this.response = response;\n  }\n};\nvar FileLoader = class extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (url === void 0)\n      url = \"\";\n    if (this.path !== void 0)\n      url = this.path + url;\n    url = this.manager.resolveURL(url);\n    const cached = Cache.get(url);\n    if (cached !== void 0) {\n      this.manager.itemStart(url);\n      setTimeout(() => {\n        if (onLoad)\n          onLoad(cached);\n        this.manager.itemEnd(url);\n      }, 0);\n      return cached;\n    }\n    if (loading[url] !== void 0) {\n      loading[url].push({\n        onLoad,\n        onProgress,\n        onError\n      });\n      return;\n    }\n    loading[url] = [];\n    loading[url].push({\n      onLoad,\n      onProgress,\n      onError\n    });\n    const req = new Request(url, {\n      headers: new Headers(this.requestHeader),\n      credentials: this.withCredentials ? \"include\" : \"same-origin\"\n      // An abort controller could be added within a future PR\n    });\n    const mimeType = this.mimeType;\n    const responseType = this.responseType;\n    fetch(req).then((response) => {\n      if (response.status === 200 || response.status === 0) {\n        if (response.status === 0) {\n          console.warn(\"THREE.FileLoader: HTTP Status 0 received.\");\n        }\n        if (typeof ReadableStream === \"undefined\" || response.body === void 0 || response.body.getReader === void 0) {\n          return response;\n        }\n        const callbacks = loading[url];\n        const reader = response.body.getReader();\n        const contentLength = response.headers.get(\"Content-Length\");\n        const total = contentLength ? parseInt(contentLength) : 0;\n        const lengthComputable = total !== 0;\n        let loaded = 0;\n        const stream = new ReadableStream({\n          start(controller) {\n            readData();\n            function readData() {\n              reader.read().then(({ done, value }) => {\n                if (done) {\n                  controller.close();\n                } else {\n                  loaded += value.byteLength;\n                  const event = new ProgressEvent(\"progress\", { lengthComputable, loaded, total });\n                  for (let i = 0, il = callbacks.length; i < il; i++) {\n                    const callback = callbacks[i];\n                    if (callback.onProgress)\n                      callback.onProgress(event);\n                  }\n                  controller.enqueue(value);\n                  readData();\n                }\n              });\n            }\n          }\n        });\n        return new Response(stream);\n      } else {\n        throw new HttpError(`fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response);\n      }\n    }).then((response) => {\n      switch (responseType) {\n        case \"arraybuffer\":\n          return response.arrayBuffer();\n        case \"blob\":\n          return response.blob();\n        case \"document\":\n          return response.text().then((text) => {\n            const parser = new DOMParser();\n            return parser.parseFromString(text, mimeType);\n          });\n        case \"json\":\n          return response.json();\n        default:\n          if (mimeType === void 0) {\n            return response.text();\n          } else {\n            const re = /charset=\"?([^;\"\\s]*)\"?/i;\n            const exec = re.exec(mimeType);\n            const label = exec && exec[1] ? exec[1].toLowerCase() : void 0;\n            const decoder = new TextDecoder(label);\n            return response.arrayBuffer().then((ab) => decoder.decode(ab));\n          }\n      }\n    }).then((data) => {\n      Cache.add(url, data);\n      const callbacks = loading[url];\n      delete loading[url];\n      for (let i = 0, il = callbacks.length; i < il; i++) {\n        const callback = callbacks[i];\n        if (callback.onLoad)\n          callback.onLoad(data);\n      }\n    }).catch((err) => {\n      const callbacks = loading[url];\n      if (callbacks === void 0) {\n        this.manager.itemError(url);\n        throw err;\n      }\n      delete loading[url];\n      for (let i = 0, il = callbacks.length; i < il; i++) {\n        const callback = callbacks[i];\n        if (callback.onError)\n          callback.onError(err);\n      }\n      this.manager.itemError(url);\n    }).finally(() => {\n      this.manager.itemEnd(url);\n    });\n    this.manager.itemStart(url);\n  }\n  setResponseType(value) {\n    this.responseType = value;\n    return this;\n  }\n  setMimeType(value) {\n    this.mimeType = value;\n    return this;\n  }\n};\nvar ImageLoader = class extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (this.path !== void 0)\n      url = this.path + url;\n    url = this.manager.resolveURL(url);\n    const scope = this;\n    const cached = Cache.get(url);\n    if (cached !== void 0) {\n      scope.manager.itemStart(url);\n      setTimeout(function() {\n        if (onLoad)\n          onLoad(cached);\n        scope.manager.itemEnd(url);\n      }, 0);\n      return cached;\n    }\n    const image = createElementNS(\"img\");\n    function onImageLoad() {\n      removeEventListeners();\n      Cache.add(url, this);\n      if (onLoad)\n        onLoad(this);\n      scope.manager.itemEnd(url);\n    }\n    function onImageError(event) {\n      removeEventListeners();\n      if (onError)\n        onError(event);\n      scope.manager.itemError(url);\n      scope.manager.itemEnd(url);\n    }\n    function removeEventListeners() {\n      image.removeEventListener(\"load\", onImageLoad, false);\n      image.removeEventListener(\"error\", onImageError, false);\n    }\n    image.addEventListener(\"load\", onImageLoad, false);\n    image.addEventListener(\"error\", onImageError, false);\n    if (url.slice(0, 5) !== \"data:\") {\n      if (this.crossOrigin !== void 0)\n        image.crossOrigin = this.crossOrigin;\n    }\n    scope.manager.itemStart(url);\n    image.src = url;\n    return image;\n  }\n};\nvar DataTextureLoader = class extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const texture = new DataTexture();\n    const loader = new FileLoader(this.manager);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setPath(this.path);\n    loader.setWithCredentials(scope.withCredentials);\n    loader.load(url, function(buffer) {\n      const texData = scope.parse(buffer);\n      if (!texData)\n        return;\n      if (texData.image !== void 0) {\n        texture.image = texData.image;\n      } else if (texData.data !== void 0) {\n        texture.image.width = texData.width;\n        texture.image.height = texData.height;\n        texture.image.data = texData.data;\n      }\n      texture.wrapS = texData.wrapS !== void 0 ? texData.wrapS : ClampToEdgeWrapping;\n      texture.wrapT = texData.wrapT !== void 0 ? texData.wrapT : ClampToEdgeWrapping;\n      texture.magFilter = texData.magFilter !== void 0 ? texData.magFilter : LinearFilter;\n      texture.minFilter = texData.minFilter !== void 0 ? texData.minFilter : LinearFilter;\n      texture.anisotropy = texData.anisotropy !== void 0 ? texData.anisotropy : 1;\n      if (texData.encoding !== void 0) {\n        texture.encoding = texData.encoding;\n      }\n      if (texData.flipY !== void 0) {\n        texture.flipY = texData.flipY;\n      }\n      if (texData.format !== void 0) {\n        texture.format = texData.format;\n      }\n      if (texData.type !== void 0) {\n        texture.type = texData.type;\n      }\n      if (texData.mipmaps !== void 0) {\n        texture.mipmaps = texData.mipmaps;\n        texture.minFilter = LinearMipmapLinearFilter;\n      }\n      if (texData.mipmapCount === 1) {\n        texture.minFilter = LinearFilter;\n      }\n      if (texData.generateMipmaps !== void 0) {\n        texture.generateMipmaps = texData.generateMipmaps;\n      }\n      texture.needsUpdate = true;\n      if (onLoad)\n        onLoad(texture, texData);\n    }, onProgress, onError);\n    return texture;\n  }\n};\nvar TextureLoader = class extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const texture = new Texture();\n    const loader = new ImageLoader(this.manager);\n    loader.setCrossOrigin(this.crossOrigin);\n    loader.setPath(this.path);\n    loader.load(url, function(image) {\n      texture.image = image;\n      texture.needsUpdate = true;\n      if (onLoad !== void 0) {\n        onLoad(texture);\n      }\n    }, onProgress, onError);\n    return texture;\n  }\n};\nvar Light = class extends Object3D {\n  constructor(color, intensity = 1) {\n    super();\n    this.isLight = true;\n    this.type = \"Light\";\n    this.color = new Color(color);\n    this.intensity = intensity;\n  }\n  dispose() {\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.color.copy(source.color);\n    this.intensity = source.intensity;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.color = this.color.getHex();\n    data.object.intensity = this.intensity;\n    if (this.groundColor !== void 0)\n      data.object.groundColor = this.groundColor.getHex();\n    if (this.distance !== void 0)\n      data.object.distance = this.distance;\n    if (this.angle !== void 0)\n      data.object.angle = this.angle;\n    if (this.decay !== void 0)\n      data.object.decay = this.decay;\n    if (this.penumbra !== void 0)\n      data.object.penumbra = this.penumbra;\n    if (this.shadow !== void 0)\n      data.object.shadow = this.shadow.toJSON();\n    return data;\n  }\n};\nvar _projScreenMatrix$1 = new Matrix4();\nvar _lightPositionWorld$1 = new Vector3();\nvar _lookTarget$1 = new Vector3();\nvar LightShadow = class {\n  constructor(camera2) {\n    this.camera = camera2;\n    this.bias = 0;\n    this.normalBias = 0;\n    this.radius = 1;\n    this.blurSamples = 8;\n    this.mapSize = new Vector2(512, 512);\n    this.map = null;\n    this.mapPass = null;\n    this.matrix = new Matrix4();\n    this.autoUpdate = true;\n    this.needsUpdate = false;\n    this._frustum = new Frustum();\n    this._frameExtents = new Vector2(1, 1);\n    this._viewportCount = 1;\n    this._viewports = [\n      new Vector4(0, 0, 1, 1)\n    ];\n  }\n  getViewportCount() {\n    return this._viewportCount;\n  }\n  getFrustum() {\n    return this._frustum;\n  }\n  updateMatrices(light) {\n    const shadowCamera = this.camera;\n    const shadowMatrix = this.matrix;\n    _lightPositionWorld$1.setFromMatrixPosition(light.matrixWorld);\n    shadowCamera.position.copy(_lightPositionWorld$1);\n    _lookTarget$1.setFromMatrixPosition(light.target.matrixWorld);\n    shadowCamera.lookAt(_lookTarget$1);\n    shadowCamera.updateMatrixWorld();\n    _projScreenMatrix$1.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse);\n    this._frustum.setFromProjectionMatrix(_projScreenMatrix$1);\n    shadowMatrix.set(\n      0.5,\n      0,\n      0,\n      0.5,\n      0,\n      0.5,\n      0,\n      0.5,\n      0,\n      0,\n      0.5,\n      0.5,\n      0,\n      0,\n      0,\n      1\n    );\n    shadowMatrix.multiply(_projScreenMatrix$1);\n  }\n  getViewport(viewportIndex) {\n    return this._viewports[viewportIndex];\n  }\n  getFrameExtents() {\n    return this._frameExtents;\n  }\n  dispose() {\n    if (this.map) {\n      this.map.dispose();\n    }\n    if (this.mapPass) {\n      this.mapPass.dispose();\n    }\n  }\n  copy(source) {\n    this.camera = source.camera.clone();\n    this.bias = source.bias;\n    this.radius = source.radius;\n    this.mapSize.copy(source.mapSize);\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  toJSON() {\n    const object = {};\n    if (this.bias !== 0)\n      object.bias = this.bias;\n    if (this.normalBias !== 0)\n      object.normalBias = this.normalBias;\n    if (this.radius !== 1)\n      object.radius = this.radius;\n    if (this.mapSize.x !== 512 || this.mapSize.y !== 512)\n      object.mapSize = this.mapSize.toArray();\n    object.camera = this.camera.toJSON(false).object;\n    delete object.camera.matrix;\n    return object;\n  }\n};\nvar SpotLightShadow = class extends LightShadow {\n  constructor() {\n    super(new PerspectiveCamera(50, 1, 0.5, 500));\n    this.isSpotLightShadow = true;\n    this.focus = 1;\n  }\n  updateMatrices(light) {\n    const camera2 = this.camera;\n    const fov2 = RAD2DEG * 2 * light.angle * this.focus;\n    const aspect2 = this.mapSize.width / this.mapSize.height;\n    const far = light.distance || camera2.far;\n    if (fov2 !== camera2.fov || aspect2 !== camera2.aspect || far !== camera2.far) {\n      camera2.fov = fov2;\n      camera2.aspect = aspect2;\n      camera2.far = far;\n      camera2.updateProjectionMatrix();\n    }\n    super.updateMatrices(light);\n  }\n  copy(source) {\n    super.copy(source);\n    this.focus = source.focus;\n    return this;\n  }\n};\nvar SpotLight = class extends Light {\n  constructor(color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1) {\n    super(color, intensity);\n    this.isSpotLight = true;\n    this.type = \"SpotLight\";\n    this.position.copy(Object3D.DefaultUp);\n    this.updateMatrix();\n    this.target = new Object3D();\n    this.distance = distance;\n    this.angle = angle;\n    this.penumbra = penumbra;\n    this.decay = decay;\n    this.map = null;\n    this.shadow = new SpotLightShadow();\n  }\n  get power() {\n    return this.intensity * Math.PI;\n  }\n  set power(power) {\n    this.intensity = power / Math.PI;\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.distance = source.distance;\n    this.angle = source.angle;\n    this.penumbra = source.penumbra;\n    this.decay = source.decay;\n    this.target = source.target.clone();\n    this.shadow = source.shadow.clone();\n    return this;\n  }\n};\nvar _projScreenMatrix = new Matrix4();\nvar _lightPositionWorld = new Vector3();\nvar _lookTarget = new Vector3();\nvar PointLightShadow = class extends LightShadow {\n  constructor() {\n    super(new PerspectiveCamera(90, 1, 0.5, 500));\n    this.isPointLightShadow = true;\n    this._frameExtents = new Vector2(4, 2);\n    this._viewportCount = 6;\n    this._viewports = [\n      // These viewports map a cube-map onto a 2D texture with the\n      // following orientation:\n      //\n      //  xzXZ\n      //   y Y\n      //\n      // X - Positive x direction\n      // x - Negative x direction\n      // Y - Positive y direction\n      // y - Negative y direction\n      // Z - Positive z direction\n      // z - Negative z direction\n      // positive X\n      new Vector4(2, 1, 1, 1),\n      // negative X\n      new Vector4(0, 1, 1, 1),\n      // positive Z\n      new Vector4(3, 1, 1, 1),\n      // negative Z\n      new Vector4(1, 1, 1, 1),\n      // positive Y\n      new Vector4(3, 0, 1, 1),\n      // negative Y\n      new Vector4(1, 0, 1, 1)\n    ];\n    this._cubeDirections = [\n      new Vector3(1, 0, 0),\n      new Vector3(-1, 0, 0),\n      new Vector3(0, 0, 1),\n      new Vector3(0, 0, -1),\n      new Vector3(0, 1, 0),\n      new Vector3(0, -1, 0)\n    ];\n    this._cubeUps = [\n      new Vector3(0, 1, 0),\n      new Vector3(0, 1, 0),\n      new Vector3(0, 1, 0),\n      new Vector3(0, 1, 0),\n      new Vector3(0, 0, 1),\n      new Vector3(0, 0, -1)\n    ];\n  }\n  updateMatrices(light, viewportIndex = 0) {\n    const camera2 = this.camera;\n    const shadowMatrix = this.matrix;\n    const far = light.distance || camera2.far;\n    if (far !== camera2.far) {\n      camera2.far = far;\n      camera2.updateProjectionMatrix();\n    }\n    _lightPositionWorld.setFromMatrixPosition(light.matrixWorld);\n    camera2.position.copy(_lightPositionWorld);\n    _lookTarget.copy(camera2.position);\n    _lookTarget.add(this._cubeDirections[viewportIndex]);\n    camera2.up.copy(this._cubeUps[viewportIndex]);\n    camera2.lookAt(_lookTarget);\n    camera2.updateMatrixWorld();\n    shadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z);\n    _projScreenMatrix.multiplyMatrices(camera2.projectionMatrix, camera2.matrixWorldInverse);\n    this._frustum.setFromProjectionMatrix(_projScreenMatrix);\n  }\n};\nvar PointLight = class extends Light {\n  constructor(color, intensity, distance = 0, decay = 1) {\n    super(color, intensity);\n    this.isPointLight = true;\n    this.type = \"PointLight\";\n    this.distance = distance;\n    this.decay = decay;\n    this.shadow = new PointLightShadow();\n  }\n  get power() {\n    return this.intensity * 4 * Math.PI;\n  }\n  set power(power) {\n    this.intensity = power / (4 * Math.PI);\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.distance = source.distance;\n    this.decay = source.decay;\n    this.shadow = source.shadow.clone();\n    return this;\n  }\n};\nvar DirectionalLightShadow = class extends LightShadow {\n  constructor() {\n    super(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500));\n    this.isDirectionalLightShadow = true;\n  }\n};\nvar DirectionalLight = class extends Light {\n  constructor(color, intensity) {\n    super(color, intensity);\n    this.isDirectionalLight = true;\n    this.type = \"DirectionalLight\";\n    this.position.copy(Object3D.DefaultUp);\n    this.updateMatrix();\n    this.target = new Object3D();\n    this.shadow = new DirectionalLightShadow();\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(source) {\n    super.copy(source);\n    this.target = source.target.clone();\n    this.shadow = source.shadow.clone();\n    return this;\n  }\n};\nvar SphericalHarmonics3 = class {\n  constructor() {\n    this.isSphericalHarmonics3 = true;\n    this.coefficients = [];\n    for (let i = 0; i < 9; i++) {\n      this.coefficients.push(new Vector3());\n    }\n  }\n  set(coefficients) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].copy(coefficients[i]);\n    }\n    return this;\n  }\n  zero() {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].set(0, 0, 0);\n    }\n    return this;\n  }\n  // get the radiance in the direction of the normal\n  // target is a Vector3\n  getAt(normal, target2) {\n    const x2 = normal.x, y = normal.y, z = normal.z;\n    const coeff = this.coefficients;\n    target2.copy(coeff[0]).multiplyScalar(0.282095);\n    target2.addScaledVector(coeff[1], 0.488603 * y);\n    target2.addScaledVector(coeff[2], 0.488603 * z);\n    target2.addScaledVector(coeff[3], 0.488603 * x2);\n    target2.addScaledVector(coeff[4], 1.092548 * (x2 * y));\n    target2.addScaledVector(coeff[5], 1.092548 * (y * z));\n    target2.addScaledVector(coeff[6], 0.315392 * (3 * z * z - 1));\n    target2.addScaledVector(coeff[7], 1.092548 * (x2 * z));\n    target2.addScaledVector(coeff[8], 0.546274 * (x2 * x2 - y * y));\n    return target2;\n  }\n  // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n  // target is a Vector3\n  // https://graphics.stanford.edu/papers/envmap/envmap.pdf\n  getIrradianceAt(normal, target2) {\n    const x2 = normal.x, y = normal.y, z = normal.z;\n    const coeff = this.coefficients;\n    target2.copy(coeff[0]).multiplyScalar(0.886227);\n    target2.addScaledVector(coeff[1], 2 * 0.511664 * y);\n    target2.addScaledVector(coeff[2], 2 * 0.511664 * z);\n    target2.addScaledVector(coeff[3], 2 * 0.511664 * x2);\n    target2.addScaledVector(coeff[4], 2 * 0.429043 * x2 * y);\n    target2.addScaledVector(coeff[5], 2 * 0.429043 * y * z);\n    target2.addScaledVector(coeff[6], 0.743125 * z * z - 0.247708);\n    target2.addScaledVector(coeff[7], 2 * 0.429043 * x2 * z);\n    target2.addScaledVector(coeff[8], 0.429043 * (x2 * x2 - y * y));\n    return target2;\n  }\n  add(sh) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].add(sh.coefficients[i]);\n    }\n    return this;\n  }\n  addScaledSH(sh, s) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].addScaledVector(sh.coefficients[i], s);\n    }\n    return this;\n  }\n  scale(s) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].multiplyScalar(s);\n    }\n    return this;\n  }\n  lerp(sh, alpha) {\n    for (let i = 0; i < 9; i++) {\n      this.coefficients[i].lerp(sh.coefficients[i], alpha);\n    }\n    return this;\n  }\n  equals(sh) {\n    for (let i = 0; i < 9; i++) {\n      if (!this.coefficients[i].equals(sh.coefficients[i])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  copy(sh) {\n    return this.set(sh.coefficients);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  fromArray(array, offset = 0) {\n    const coefficients = this.coefficients;\n    for (let i = 0; i < 9; i++) {\n      coefficients[i].fromArray(array, offset + i * 3);\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const coefficients = this.coefficients;\n    for (let i = 0; i < 9; i++) {\n      coefficients[i].toArray(array, offset + i * 3);\n    }\n    return array;\n  }\n  // evaluate the basis functions\n  // shBasis is an Array[ 9 ]\n  static getBasisAt(normal, shBasis) {\n    const x2 = normal.x, y = normal.y, z = normal.z;\n    shBasis[0] = 0.282095;\n    shBasis[1] = 0.488603 * y;\n    shBasis[2] = 0.488603 * z;\n    shBasis[3] = 0.488603 * x2;\n    shBasis[4] = 1.092548 * x2 * y;\n    shBasis[5] = 1.092548 * y * z;\n    shBasis[6] = 0.315392 * (3 * z * z - 1);\n    shBasis[7] = 1.092548 * x2 * z;\n    shBasis[8] = 0.546274 * (x2 * x2 - y * y);\n  }\n};\nvar LightProbe = class extends Light {\n  constructor(sh = new SphericalHarmonics3(), intensity = 1) {\n    super(void 0, intensity);\n    this.isLightProbe = true;\n    this.sh = sh;\n  }\n  copy(source) {\n    super.copy(source);\n    this.sh.copy(source.sh);\n    return this;\n  }\n  fromJSON(json) {\n    this.intensity = json.intensity;\n    this.sh.fromArray(json.sh);\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.sh = this.sh.toArray();\n    return data;\n  }\n};\nvar LoaderUtils = class {\n  static decodeText(array) {\n    if (typeof TextDecoder !== \"undefined\") {\n      return new TextDecoder().decode(array);\n    }\n    let s = \"\";\n    for (let i = 0, il = array.length; i < il; i++) {\n      s += String.fromCharCode(array[i]);\n    }\n    try {\n      return decodeURIComponent(escape(s));\n    } catch (e) {\n      return s;\n    }\n  }\n  static extractUrlBase(url) {\n    const index = url.lastIndexOf(\"/\");\n    if (index === -1)\n      return \"./\";\n    return url.slice(0, index + 1);\n  }\n  static resolveURL(url, path) {\n    if (typeof url !== \"string\" || url === \"\")\n      return \"\";\n    if (/^https?:\\/\\//i.test(path) && /^\\//.test(url)) {\n      path = path.replace(/(^https?:\\/\\/[^\\/]+).*/i, \"$1\");\n    }\n    if (/^(https?:)?\\/\\//i.test(url))\n      return url;\n    if (/^data:.*,.*$/i.test(url))\n      return url;\n    if (/^blob:.*$/i.test(url))\n      return url;\n    return path + url;\n  }\n};\nvar ImageBitmapLoader = class extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.isImageBitmapLoader = true;\n    if (typeof createImageBitmap === \"undefined\") {\n      console.warn(\"THREE.ImageBitmapLoader: createImageBitmap() not supported.\");\n    }\n    if (typeof fetch === \"undefined\") {\n      console.warn(\"THREE.ImageBitmapLoader: fetch() not supported.\");\n    }\n    this.options = { premultiplyAlpha: \"none\" };\n  }\n  setOptions(options) {\n    this.options = options;\n    return this;\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (url === void 0)\n      url = \"\";\n    if (this.path !== void 0)\n      url = this.path + url;\n    url = this.manager.resolveURL(url);\n    const scope = this;\n    const cached = Cache.get(url);\n    if (cached !== void 0) {\n      scope.manager.itemStart(url);\n      setTimeout(function() {\n        if (onLoad)\n          onLoad(cached);\n        scope.manager.itemEnd(url);\n      }, 0);\n      return cached;\n    }\n    const fetchOptions = {};\n    fetchOptions.credentials = this.crossOrigin === \"anonymous\" ? \"same-origin\" : \"include\";\n    fetchOptions.headers = this.requestHeader;\n    fetch(url, fetchOptions).then(function(res) {\n      return res.blob();\n    }).then(function(blob) {\n      return createImageBitmap(blob, Object.assign(scope.options, { colorSpaceConversion: \"none\" }));\n    }).then(function(imageBitmap) {\n      Cache.add(url, imageBitmap);\n      if (onLoad)\n        onLoad(imageBitmap);\n      scope.manager.itemEnd(url);\n    }).catch(function(e) {\n      if (onError)\n        onError(e);\n      scope.manager.itemError(url);\n      scope.manager.itemEnd(url);\n    });\n    scope.manager.itemStart(url);\n  }\n};\nvar _eyeRight = new Matrix4();\nvar _eyeLeft = new Matrix4();\nvar _projectionMatrix = new Matrix4();\nvar _position$1 = new Vector3();\nvar _quaternion$1 = new Quaternion();\nvar _scale$1 = new Vector3();\nvar _orientation$1 = new Vector3();\nvar _position = new Vector3();\nvar _quaternion = new Quaternion();\nvar _scale = new Vector3();\nvar _orientation = new Vector3();\nvar PropertyMixer = class {\n  constructor(binding, typeName, valueSize) {\n    this.binding = binding;\n    this.valueSize = valueSize;\n    let mixFunction, mixFunctionAdditive, setIdentity;\n    switch (typeName) {\n      case \"quaternion\":\n        mixFunction = this._slerp;\n        mixFunctionAdditive = this._slerpAdditive;\n        setIdentity = this._setAdditiveIdentityQuaternion;\n        this.buffer = new Float64Array(valueSize * 6);\n        this._workIndex = 5;\n        break;\n      case \"string\":\n      case \"bool\":\n        mixFunction = this._select;\n        mixFunctionAdditive = this._select;\n        setIdentity = this._setAdditiveIdentityOther;\n        this.buffer = new Array(valueSize * 5);\n        break;\n      default:\n        mixFunction = this._lerp;\n        mixFunctionAdditive = this._lerpAdditive;\n        setIdentity = this._setAdditiveIdentityNumeric;\n        this.buffer = new Float64Array(valueSize * 5);\n    }\n    this._mixBufferRegion = mixFunction;\n    this._mixBufferRegionAdditive = mixFunctionAdditive;\n    this._setIdentity = setIdentity;\n    this._origIndex = 3;\n    this._addIndex = 4;\n    this.cumulativeWeight = 0;\n    this.cumulativeWeightAdditive = 0;\n    this.useCount = 0;\n    this.referenceCount = 0;\n  }\n  // accumulate data in the 'incoming' region into 'accu<i>'\n  accumulate(accuIndex, weight) {\n    const buffer = this.buffer, stride = this.valueSize, offset = accuIndex * stride + stride;\n    let currentWeight = this.cumulativeWeight;\n    if (currentWeight === 0) {\n      for (let i = 0; i !== stride; ++i) {\n        buffer[offset + i] = buffer[i];\n      }\n      currentWeight = weight;\n    } else {\n      currentWeight += weight;\n      const mix = weight / currentWeight;\n      this._mixBufferRegion(buffer, offset, 0, mix, stride);\n    }\n    this.cumulativeWeight = currentWeight;\n  }\n  // accumulate data in the 'incoming' region into 'add'\n  accumulateAdditive(weight) {\n    const buffer = this.buffer, stride = this.valueSize, offset = stride * this._addIndex;\n    if (this.cumulativeWeightAdditive === 0) {\n      this._setIdentity();\n    }\n    this._mixBufferRegionAdditive(buffer, offset, 0, weight, stride);\n    this.cumulativeWeightAdditive += weight;\n  }\n  // apply the state of 'accu<i>' to the binding when accus differ\n  apply(accuIndex) {\n    const stride = this.valueSize, buffer = this.buffer, offset = accuIndex * stride + stride, weight = this.cumulativeWeight, weightAdditive = this.cumulativeWeightAdditive, binding = this.binding;\n    this.cumulativeWeight = 0;\n    this.cumulativeWeightAdditive = 0;\n    if (weight < 1) {\n      const originalValueOffset = stride * this._origIndex;\n      this._mixBufferRegion(\n        buffer,\n        offset,\n        originalValueOffset,\n        1 - weight,\n        stride\n      );\n    }\n    if (weightAdditive > 0) {\n      this._mixBufferRegionAdditive(buffer, offset, this._addIndex * stride, 1, stride);\n    }\n    for (let i = stride, e = stride + stride; i !== e; ++i) {\n      if (buffer[i] !== buffer[i + stride]) {\n        binding.setValue(buffer, offset);\n        break;\n      }\n    }\n  }\n  // remember the state of the bound property and copy it to both accus\n  saveOriginalState() {\n    const binding = this.binding;\n    const buffer = this.buffer, stride = this.valueSize, originalValueOffset = stride * this._origIndex;\n    binding.getValue(buffer, originalValueOffset);\n    for (let i = stride, e = originalValueOffset; i !== e; ++i) {\n      buffer[i] = buffer[originalValueOffset + i % stride];\n    }\n    this._setIdentity();\n    this.cumulativeWeight = 0;\n    this.cumulativeWeightAdditive = 0;\n  }\n  // apply the state previously taken via 'saveOriginalState' to the binding\n  restoreOriginalState() {\n    const originalValueOffset = this.valueSize * 3;\n    this.binding.setValue(this.buffer, originalValueOffset);\n  }\n  _setAdditiveIdentityNumeric() {\n    const startIndex = this._addIndex * this.valueSize;\n    const endIndex = startIndex + this.valueSize;\n    for (let i = startIndex; i < endIndex; i++) {\n      this.buffer[i] = 0;\n    }\n  }\n  _setAdditiveIdentityQuaternion() {\n    this._setAdditiveIdentityNumeric();\n    this.buffer[this._addIndex * this.valueSize + 3] = 1;\n  }\n  _setAdditiveIdentityOther() {\n    const startIndex = this._origIndex * this.valueSize;\n    const targetIndex = this._addIndex * this.valueSize;\n    for (let i = 0; i < this.valueSize; i++) {\n      this.buffer[targetIndex + i] = this.buffer[startIndex + i];\n    }\n  }\n  // mix functions\n  _select(buffer, dstOffset, srcOffset, t2, stride) {\n    if (t2 >= 0.5) {\n      for (let i = 0; i !== stride; ++i) {\n        buffer[dstOffset + i] = buffer[srcOffset + i];\n      }\n    }\n  }\n  _slerp(buffer, dstOffset, srcOffset, t2) {\n    Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t2);\n  }\n  _slerpAdditive(buffer, dstOffset, srcOffset, t2, stride) {\n    const workOffset = this._workIndex * stride;\n    Quaternion.multiplyQuaternionsFlat(buffer, workOffset, buffer, dstOffset, buffer, srcOffset);\n    Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t2);\n  }\n  _lerp(buffer, dstOffset, srcOffset, t2, stride) {\n    const s = 1 - t2;\n    for (let i = 0; i !== stride; ++i) {\n      const j = dstOffset + i;\n      buffer[j] = buffer[j] * s + buffer[srcOffset + i] * t2;\n    }\n  }\n  _lerpAdditive(buffer, dstOffset, srcOffset, t2, stride) {\n    for (let i = 0; i !== stride; ++i) {\n      const j = dstOffset + i;\n      buffer[j] = buffer[j] + buffer[srcOffset + i] * t2;\n    }\n  }\n};\nvar _RESERVED_CHARS_RE = \"\\\\[\\\\]\\\\.:\\\\/\";\nvar _reservedRe = new RegExp(\"[\" + _RESERVED_CHARS_RE + \"]\", \"g\");\nvar _wordChar = \"[^\" + _RESERVED_CHARS_RE + \"]\";\nvar _wordCharOrDot = \"[^\" + _RESERVED_CHARS_RE.replace(\"\\\\.\", \"\") + \"]\";\nvar _directoryRe = /((?:WC+[\\/:])*)/.source.replace(\"WC\", _wordChar);\nvar _nodeRe = /(WCOD+)?/.source.replace(\"WCOD\", _wordCharOrDot);\nvar _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace(\"WC\", _wordChar);\nvar _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace(\"WC\", _wordChar);\nvar _trackRe = new RegExp(\n  \"^\" + _directoryRe + _nodeRe + _objectRe + _propertyRe + \"$\"\n);\nvar _supportedObjectNames = [\"material\", \"materials\", \"bones\", \"map\"];\nvar Composite = class {\n  constructor(targetGroup, path, optionalParsedPath) {\n    const parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path);\n    this._targetGroup = targetGroup;\n    this._bindings = targetGroup.subscribe_(path, parsedPath);\n  }\n  getValue(array, offset) {\n    this.bind();\n    const firstValidIndex = this._targetGroup.nCachedObjects_, binding = this._bindings[firstValidIndex];\n    if (binding !== void 0)\n      binding.getValue(array, offset);\n  }\n  setValue(array, offset) {\n    const bindings = this._bindings;\n    for (let i = this._targetGroup.nCachedObjects_, n2 = bindings.length; i !== n2; ++i) {\n      bindings[i].setValue(array, offset);\n    }\n  }\n  bind() {\n    const bindings = this._bindings;\n    for (let i = this._targetGroup.nCachedObjects_, n2 = bindings.length; i !== n2; ++i) {\n      bindings[i].bind();\n    }\n  }\n  unbind() {\n    const bindings = this._bindings;\n    for (let i = this._targetGroup.nCachedObjects_, n2 = bindings.length; i !== n2; ++i) {\n      bindings[i].unbind();\n    }\n  }\n};\nvar PropertyBinding = class _PropertyBinding {\n  constructor(rootNode, path, parsedPath) {\n    this.path = path;\n    this.parsedPath = parsedPath || _PropertyBinding.parseTrackName(path);\n    this.node = _PropertyBinding.findNode(rootNode, this.parsedPath.nodeName) || rootNode;\n    this.rootNode = rootNode;\n    this.getValue = this._getValue_unbound;\n    this.setValue = this._setValue_unbound;\n  }\n  static create(root, path, parsedPath) {\n    if (!(root && root.isAnimationObjectGroup)) {\n      return new _PropertyBinding(root, path, parsedPath);\n    } else {\n      return new _PropertyBinding.Composite(root, path, parsedPath);\n    }\n  }\n  /**\n   * Replaces spaces with underscores and removes unsupported characters from\n   * node names, to ensure compatibility with parseTrackName().\n   *\n   * @param {string} name Node name to be sanitized.\n   * @return {string}\n   */\n  static sanitizeNodeName(name) {\n    return name.replace(/\\s/g, \"_\").replace(_reservedRe, \"\");\n  }\n  static parseTrackName(trackName) {\n    const matches = _trackRe.exec(trackName);\n    if (matches === null) {\n      throw new Error(\"PropertyBinding: Cannot parse trackName: \" + trackName);\n    }\n    const results = {\n      // directoryName: matches[ 1 ], // (tschw) currently unused\n      nodeName: matches[2],\n      objectName: matches[3],\n      objectIndex: matches[4],\n      propertyName: matches[5],\n      // required\n      propertyIndex: matches[6]\n    };\n    const lastDot = results.nodeName && results.nodeName.lastIndexOf(\".\");\n    if (lastDot !== void 0 && lastDot !== -1) {\n      const objectName = results.nodeName.substring(lastDot + 1);\n      if (_supportedObjectNames.indexOf(objectName) !== -1) {\n        results.nodeName = results.nodeName.substring(0, lastDot);\n        results.objectName = objectName;\n      }\n    }\n    if (results.propertyName === null || results.propertyName.length === 0) {\n      throw new Error(\"PropertyBinding: can not parse propertyName from trackName: \" + trackName);\n    }\n    return results;\n  }\n  static findNode(root, nodeName) {\n    if (nodeName === void 0 || nodeName === \"\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) {\n      return root;\n    }\n    if (root.skeleton) {\n      const bone = root.skeleton.getBoneByName(nodeName);\n      if (bone !== void 0) {\n        return bone;\n      }\n    }\n    if (root.children) {\n      const searchNodeSubtree = function(children) {\n        for (let i = 0; i < children.length; i++) {\n          const childNode = children[i];\n          if (childNode.name === nodeName || childNode.uuid === nodeName) {\n            return childNode;\n          }\n          const result = searchNodeSubtree(childNode.children);\n          if (result)\n            return result;\n        }\n        return null;\n      };\n      const subTreeNode = searchNodeSubtree(root.children);\n      if (subTreeNode) {\n        return subTreeNode;\n      }\n    }\n    return null;\n  }\n  // these are used to \"bind\" a nonexistent property\n  _getValue_unavailable() {\n  }\n  _setValue_unavailable() {\n  }\n  // Getters\n  _getValue_direct(buffer, offset) {\n    buffer[offset] = this.targetObject[this.propertyName];\n  }\n  _getValue_array(buffer, offset) {\n    const source = this.resolvedProperty;\n    for (let i = 0, n2 = source.length; i !== n2; ++i) {\n      buffer[offset++] = source[i];\n    }\n  }\n  _getValue_arrayElement(buffer, offset) {\n    buffer[offset] = this.resolvedProperty[this.propertyIndex];\n  }\n  _getValue_toArray(buffer, offset) {\n    this.resolvedProperty.toArray(buffer, offset);\n  }\n  // Direct\n  _setValue_direct(buffer, offset) {\n    this.targetObject[this.propertyName] = buffer[offset];\n  }\n  _setValue_direct_setNeedsUpdate(buffer, offset) {\n    this.targetObject[this.propertyName] = buffer[offset];\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) {\n    this.targetObject[this.propertyName] = buffer[offset];\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  // EntireArray\n  _setValue_array(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i = 0, n2 = dest.length; i !== n2; ++i) {\n      dest[i] = buffer[offset++];\n    }\n  }\n  _setValue_array_setNeedsUpdate(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i = 0, n2 = dest.length; i !== n2; ++i) {\n      dest[i] = buffer[offset++];\n    }\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i = 0, n2 = dest.length; i !== n2; ++i) {\n      dest[i] = buffer[offset++];\n    }\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  // ArrayElement\n  _setValue_arrayElement(buffer, offset) {\n    this.resolvedProperty[this.propertyIndex] = buffer[offset];\n  }\n  _setValue_arrayElement_setNeedsUpdate(buffer, offset) {\n    this.resolvedProperty[this.propertyIndex] = buffer[offset];\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) {\n    this.resolvedProperty[this.propertyIndex] = buffer[offset];\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  // HasToFromArray\n  _setValue_fromArray(buffer, offset) {\n    this.resolvedProperty.fromArray(buffer, offset);\n  }\n  _setValue_fromArray_setNeedsUpdate(buffer, offset) {\n    this.resolvedProperty.fromArray(buffer, offset);\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) {\n    this.resolvedProperty.fromArray(buffer, offset);\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  _getValue_unbound(targetArray, offset) {\n    this.bind();\n    this.getValue(targetArray, offset);\n  }\n  _setValue_unbound(sourceArray, offset) {\n    this.bind();\n    this.setValue(sourceArray, offset);\n  }\n  // create getter / setter pair for a property in the scene graph\n  bind() {\n    let targetObject = this.node;\n    const parsedPath = this.parsedPath;\n    const objectName = parsedPath.objectName;\n    const propertyName = parsedPath.propertyName;\n    let propertyIndex = parsedPath.propertyIndex;\n    if (!targetObject) {\n      targetObject = _PropertyBinding.findNode(this.rootNode, parsedPath.nodeName) || this.rootNode;\n      this.node = targetObject;\n    }\n    this.getValue = this._getValue_unavailable;\n    this.setValue = this._setValue_unavailable;\n    if (!targetObject) {\n      console.error(\"THREE.PropertyBinding: Trying to update node for track: \" + this.path + \" but it wasn't found.\");\n      return;\n    }\n    if (objectName) {\n      let objectIndex = parsedPath.objectIndex;\n      switch (objectName) {\n        case \"materials\":\n          if (!targetObject.material) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\", this);\n            return;\n          }\n          if (!targetObject.material.materials) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.\", this);\n            return;\n          }\n          targetObject = targetObject.material.materials;\n          break;\n        case \"bones\":\n          if (!targetObject.skeleton) {\n            console.error(\"THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.\", this);\n            return;\n          }\n          targetObject = targetObject.skeleton.bones;\n          for (let i = 0; i < targetObject.length; i++) {\n            if (targetObject[i].name === objectIndex) {\n              objectIndex = i;\n              break;\n            }\n          }\n          break;\n        case \"map\":\n          if (\"map\" in targetObject) {\n            targetObject = targetObject.map;\n            break;\n          }\n          if (!targetObject.material) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\", this);\n            return;\n          }\n          if (!targetObject.material.map) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.\", this);\n            return;\n          }\n          targetObject = targetObject.material.map;\n          break;\n        default:\n          if (targetObject[objectName] === void 0) {\n            console.error(\"THREE.PropertyBinding: Can not bind to objectName of node undefined.\", this);\n            return;\n          }\n          targetObject = targetObject[objectName];\n      }\n      if (objectIndex !== void 0) {\n        if (targetObject[objectIndex] === void 0) {\n          console.error(\"THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.\", this, targetObject);\n          return;\n        }\n        targetObject = targetObject[objectIndex];\n      }\n    }\n    const nodeProperty = targetObject[propertyName];\n    if (nodeProperty === void 0) {\n      const nodeName = parsedPath.nodeName;\n      console.error(\"THREE.PropertyBinding: Trying to update property for track: \" + nodeName + \".\" + propertyName + \" but it wasn't found.\", targetObject);\n      return;\n    }\n    let versioning = this.Versioning.None;\n    this.targetObject = targetObject;\n    if (targetObject.needsUpdate !== void 0) {\n      versioning = this.Versioning.NeedsUpdate;\n    } else if (targetObject.matrixWorldNeedsUpdate !== void 0) {\n      versioning = this.Versioning.MatrixWorldNeedsUpdate;\n    }\n    let bindingType = this.BindingType.Direct;\n    if (propertyIndex !== void 0) {\n      if (propertyName === \"morphTargetInfluences\") {\n        if (!targetObject.geometry) {\n          console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.\", this);\n          return;\n        }\n        if (!targetObject.geometry.morphAttributes) {\n          console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.\", this);\n          return;\n        }\n        if (targetObject.morphTargetDictionary[propertyIndex] !== void 0) {\n          propertyIndex = targetObject.morphTargetDictionary[propertyIndex];\n        }\n      }\n      bindingType = this.BindingType.ArrayElement;\n      this.resolvedProperty = nodeProperty;\n      this.propertyIndex = propertyIndex;\n    } else if (nodeProperty.fromArray !== void 0 && nodeProperty.toArray !== void 0) {\n      bindingType = this.BindingType.HasFromToArray;\n      this.resolvedProperty = nodeProperty;\n    } else if (Array.isArray(nodeProperty)) {\n      bindingType = this.BindingType.EntireArray;\n      this.resolvedProperty = nodeProperty;\n    } else {\n      this.propertyName = propertyName;\n    }\n    this.getValue = this.GetterByBindingType[bindingType];\n    this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning];\n  }\n  unbind() {\n    this.node = null;\n    this.getValue = this._getValue_unbound;\n    this.setValue = this._setValue_unbound;\n  }\n};\nPropertyBinding.Composite = Composite;\nPropertyBinding.prototype.BindingType = {\n  Direct: 0,\n  EntireArray: 1,\n  ArrayElement: 2,\n  HasFromToArray: 3\n};\nPropertyBinding.prototype.Versioning = {\n  None: 0,\n  NeedsUpdate: 1,\n  MatrixWorldNeedsUpdate: 2\n};\nPropertyBinding.prototype.GetterByBindingType = [\n  PropertyBinding.prototype._getValue_direct,\n  PropertyBinding.prototype._getValue_array,\n  PropertyBinding.prototype._getValue_arrayElement,\n  PropertyBinding.prototype._getValue_toArray\n];\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n  [\n    // Direct\n    PropertyBinding.prototype._setValue_direct,\n    PropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate\n  ],\n  [\n    // EntireArray\n    PropertyBinding.prototype._setValue_array,\n    PropertyBinding.prototype._setValue_array_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate\n  ],\n  [\n    // ArrayElement\n    PropertyBinding.prototype._setValue_arrayElement,\n    PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate\n  ],\n  [\n    // HasToFromArray\n    PropertyBinding.prototype._setValue_fromArray,\n    PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate\n  ]\n];\nvar AnimationAction = class {\n  constructor(mixer, clip, localRoot = null, blendMode = clip.blendMode) {\n    this._mixer = mixer;\n    this._clip = clip;\n    this._localRoot = localRoot;\n    this.blendMode = blendMode;\n    const tracks = clip.tracks, nTracks = tracks.length, interpolants = new Array(nTracks);\n    const interpolantSettings = {\n      endingStart: ZeroCurvatureEnding,\n      endingEnd: ZeroCurvatureEnding\n    };\n    for (let i = 0; i !== nTracks; ++i) {\n      const interpolant = tracks[i].createInterpolant(null);\n      interpolants[i] = interpolant;\n      interpolant.settings = interpolantSettings;\n    }\n    this._interpolantSettings = interpolantSettings;\n    this._interpolants = interpolants;\n    this._propertyBindings = new Array(nTracks);\n    this._cacheIndex = null;\n    this._byClipCacheIndex = null;\n    this._timeScaleInterpolant = null;\n    this._weightInterpolant = null;\n    this.loop = LoopRepeat;\n    this._loopCount = -1;\n    this._startTime = null;\n    this.time = 0;\n    this.timeScale = 1;\n    this._effectiveTimeScale = 1;\n    this.weight = 1;\n    this._effectiveWeight = 1;\n    this.repetitions = Infinity;\n    this.paused = false;\n    this.enabled = true;\n    this.clampWhenFinished = false;\n    this.zeroSlopeAtStart = true;\n    this.zeroSlopeAtEnd = true;\n  }\n  // State & Scheduling\n  play() {\n    this._mixer._activateAction(this);\n    return this;\n  }\n  stop() {\n    this._mixer._deactivateAction(this);\n    return this.reset();\n  }\n  reset() {\n    this.paused = false;\n    this.enabled = true;\n    this.time = 0;\n    this._loopCount = -1;\n    this._startTime = null;\n    return this.stopFading().stopWarping();\n  }\n  isRunning() {\n    return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this);\n  }\n  // return true when play has been called\n  isScheduled() {\n    return this._mixer._isActiveAction(this);\n  }\n  startAt(time) {\n    this._startTime = time;\n    return this;\n  }\n  setLoop(mode, repetitions) {\n    this.loop = mode;\n    this.repetitions = repetitions;\n    return this;\n  }\n  // Weight\n  // set the weight stopping any scheduled fading\n  // although .enabled = false yields an effective weight of zero, this\n  // method does *not* change .enabled, because it would be confusing\n  setEffectiveWeight(weight) {\n    this.weight = weight;\n    this._effectiveWeight = this.enabled ? weight : 0;\n    return this.stopFading();\n  }\n  // return the weight considering fading and .enabled\n  getEffectiveWeight() {\n    return this._effectiveWeight;\n  }\n  fadeIn(duration) {\n    return this._scheduleFading(duration, 0, 1);\n  }\n  fadeOut(duration) {\n    return this._scheduleFading(duration, 1, 0);\n  }\n  crossFadeFrom(fadeOutAction, duration, warp) {\n    fadeOutAction.fadeOut(duration);\n    this.fadeIn(duration);\n    if (warp) {\n      const fadeInDuration = this._clip.duration, fadeOutDuration = fadeOutAction._clip.duration, startEndRatio = fadeOutDuration / fadeInDuration, endStartRatio = fadeInDuration / fadeOutDuration;\n      fadeOutAction.warp(1, startEndRatio, duration);\n      this.warp(endStartRatio, 1, duration);\n    }\n    return this;\n  }\n  crossFadeTo(fadeInAction, duration, warp) {\n    return fadeInAction.crossFadeFrom(this, duration, warp);\n  }\n  stopFading() {\n    const weightInterpolant = this._weightInterpolant;\n    if (weightInterpolant !== null) {\n      this._weightInterpolant = null;\n      this._mixer._takeBackControlInterpolant(weightInterpolant);\n    }\n    return this;\n  }\n  // Time Scale Control\n  // set the time scale stopping any scheduled warping\n  // although .paused = true yields an effective time scale of zero, this\n  // method does *not* change .paused, because it would be confusing\n  setEffectiveTimeScale(timeScale) {\n    this.timeScale = timeScale;\n    this._effectiveTimeScale = this.paused ? 0 : timeScale;\n    return this.stopWarping();\n  }\n  // return the time scale considering warping and .paused\n  getEffectiveTimeScale() {\n    return this._effectiveTimeScale;\n  }\n  setDuration(duration) {\n    this.timeScale = this._clip.duration / duration;\n    return this.stopWarping();\n  }\n  syncWith(action) {\n    this.time = action.time;\n    this.timeScale = action.timeScale;\n    return this.stopWarping();\n  }\n  halt(duration) {\n    return this.warp(this._effectiveTimeScale, 0, duration);\n  }\n  warp(startTimeScale, endTimeScale, duration) {\n    const mixer = this._mixer, now = mixer.time, timeScale = this.timeScale;\n    let interpolant = this._timeScaleInterpolant;\n    if (interpolant === null) {\n      interpolant = mixer._lendControlInterpolant();\n      this._timeScaleInterpolant = interpolant;\n    }\n    const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n    times[0] = now;\n    times[1] = now + duration;\n    values[0] = startTimeScale / timeScale;\n    values[1] = endTimeScale / timeScale;\n    return this;\n  }\n  stopWarping() {\n    const timeScaleInterpolant = this._timeScaleInterpolant;\n    if (timeScaleInterpolant !== null) {\n      this._timeScaleInterpolant = null;\n      this._mixer._takeBackControlInterpolant(timeScaleInterpolant);\n    }\n    return this;\n  }\n  // Object Accessors\n  getMixer() {\n    return this._mixer;\n  }\n  getClip() {\n    return this._clip;\n  }\n  getRoot() {\n    return this._localRoot || this._mixer._root;\n  }\n  // Interna\n  _update(time, deltaTime, timeDirection, accuIndex) {\n    if (!this.enabled) {\n      this._updateWeight(time);\n      return;\n    }\n    const startTime = this._startTime;\n    if (startTime !== null) {\n      const timeRunning = (time - startTime) * timeDirection;\n      if (timeRunning < 0 || timeDirection === 0) {\n        deltaTime = 0;\n      } else {\n        this._startTime = null;\n        deltaTime = timeDirection * timeRunning;\n      }\n    }\n    deltaTime *= this._updateTimeScale(time);\n    const clipTime = this._updateTime(deltaTime);\n    const weight = this._updateWeight(time);\n    if (weight > 0) {\n      const interpolants = this._interpolants;\n      const propertyMixers = this._propertyBindings;\n      switch (this.blendMode) {\n        case AdditiveAnimationBlendMode:\n          for (let j = 0, m = interpolants.length; j !== m; ++j) {\n            interpolants[j].evaluate(clipTime);\n            propertyMixers[j].accumulateAdditive(weight);\n          }\n          break;\n        case NormalAnimationBlendMode:\n        default:\n          for (let j = 0, m = interpolants.length; j !== m; ++j) {\n            interpolants[j].evaluate(clipTime);\n            propertyMixers[j].accumulate(accuIndex, weight);\n          }\n      }\n    }\n  }\n  _updateWeight(time) {\n    let weight = 0;\n    if (this.enabled) {\n      weight = this.weight;\n      const interpolant = this._weightInterpolant;\n      if (interpolant !== null) {\n        const interpolantValue = interpolant.evaluate(time)[0];\n        weight *= interpolantValue;\n        if (time > interpolant.parameterPositions[1]) {\n          this.stopFading();\n          if (interpolantValue === 0) {\n            this.enabled = false;\n          }\n        }\n      }\n    }\n    this._effectiveWeight = weight;\n    return weight;\n  }\n  _updateTimeScale(time) {\n    let timeScale = 0;\n    if (!this.paused) {\n      timeScale = this.timeScale;\n      const interpolant = this._timeScaleInterpolant;\n      if (interpolant !== null) {\n        const interpolantValue = interpolant.evaluate(time)[0];\n        timeScale *= interpolantValue;\n        if (time > interpolant.parameterPositions[1]) {\n          this.stopWarping();\n          if (timeScale === 0) {\n            this.paused = true;\n          } else {\n            this.timeScale = timeScale;\n          }\n        }\n      }\n    }\n    this._effectiveTimeScale = timeScale;\n    return timeScale;\n  }\n  _updateTime(deltaTime) {\n    const duration = this._clip.duration;\n    const loop = this.loop;\n    let time = this.time + deltaTime;\n    let loopCount = this._loopCount;\n    const pingPong = loop === LoopPingPong;\n    if (deltaTime === 0) {\n      if (loopCount === -1)\n        return time;\n      return pingPong && (loopCount & 1) === 1 ? duration - time : time;\n    }\n    if (loop === LoopOnce) {\n      if (loopCount === -1) {\n        this._loopCount = 0;\n        this._setEndings(true, true, false);\n      }\n      handle_stop: {\n        if (time >= duration) {\n          time = duration;\n        } else if (time < 0) {\n          time = 0;\n        } else {\n          this.time = time;\n          break handle_stop;\n        }\n        if (this.clampWhenFinished)\n          this.paused = true;\n        else\n          this.enabled = false;\n        this.time = time;\n        this._mixer.dispatchEvent({\n          type: \"finished\",\n          action: this,\n          direction: deltaTime < 0 ? -1 : 1\n        });\n      }\n    } else {\n      if (loopCount === -1) {\n        if (deltaTime >= 0) {\n          loopCount = 0;\n          this._setEndings(true, this.repetitions === 0, pingPong);\n        } else {\n          this._setEndings(this.repetitions === 0, true, pingPong);\n        }\n      }\n      if (time >= duration || time < 0) {\n        const loopDelta = Math.floor(time / duration);\n        time -= duration * loopDelta;\n        loopCount += Math.abs(loopDelta);\n        const pending = this.repetitions - loopCount;\n        if (pending <= 0) {\n          if (this.clampWhenFinished)\n            this.paused = true;\n          else\n            this.enabled = false;\n          time = deltaTime > 0 ? duration : 0;\n          this.time = time;\n          this._mixer.dispatchEvent({\n            type: \"finished\",\n            action: this,\n            direction: deltaTime > 0 ? 1 : -1\n          });\n        } else {\n          if (pending === 1) {\n            const atStart = deltaTime < 0;\n            this._setEndings(atStart, !atStart, pingPong);\n          } else {\n            this._setEndings(false, false, pingPong);\n          }\n          this._loopCount = loopCount;\n          this.time = time;\n          this._mixer.dispatchEvent({\n            type: \"loop\",\n            action: this,\n            loopDelta\n          });\n        }\n      } else {\n        this.time = time;\n      }\n      if (pingPong && (loopCount & 1) === 1) {\n        return duration - time;\n      }\n    }\n    return time;\n  }\n  _setEndings(atStart, atEnd, pingPong) {\n    const settings = this._interpolantSettings;\n    if (pingPong) {\n      settings.endingStart = ZeroSlopeEnding;\n      settings.endingEnd = ZeroSlopeEnding;\n    } else {\n      if (atStart) {\n        settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n      } else {\n        settings.endingStart = WrapAroundEnding;\n      }\n      if (atEnd) {\n        settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n      } else {\n        settings.endingEnd = WrapAroundEnding;\n      }\n    }\n  }\n  _scheduleFading(duration, weightNow, weightThen) {\n    const mixer = this._mixer, now = mixer.time;\n    let interpolant = this._weightInterpolant;\n    if (interpolant === null) {\n      interpolant = mixer._lendControlInterpolant();\n      this._weightInterpolant = interpolant;\n    }\n    const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n    times[0] = now;\n    values[0] = weightNow;\n    times[1] = now + duration;\n    values[1] = weightThen;\n    return this;\n  }\n};\nvar _controlInterpolantsResultBuffer = new Float32Array(1);\nvar AnimationMixer = class extends EventDispatcher {\n  constructor(root) {\n    super();\n    this._root = root;\n    this._initMemoryManager();\n    this._accuIndex = 0;\n    this.time = 0;\n    this.timeScale = 1;\n  }\n  _bindAction(action, prototypeAction) {\n    const root = action._localRoot || this._root, tracks = action._clip.tracks, nTracks = tracks.length, bindings = action._propertyBindings, interpolants = action._interpolants, rootUuid = root.uuid, bindingsByRoot = this._bindingsByRootAndName;\n    let bindingsByName = bindingsByRoot[rootUuid];\n    if (bindingsByName === void 0) {\n      bindingsByName = {};\n      bindingsByRoot[rootUuid] = bindingsByName;\n    }\n    for (let i = 0; i !== nTracks; ++i) {\n      const track = tracks[i], trackName = track.name;\n      let binding = bindingsByName[trackName];\n      if (binding !== void 0) {\n        ++binding.referenceCount;\n        bindings[i] = binding;\n      } else {\n        binding = bindings[i];\n        if (binding !== void 0) {\n          if (binding._cacheIndex === null) {\n            ++binding.referenceCount;\n            this._addInactiveBinding(binding, rootUuid, trackName);\n          }\n          continue;\n        }\n        const path = prototypeAction && prototypeAction._propertyBindings[i].binding.parsedPath;\n        binding = new PropertyMixer(\n          PropertyBinding.create(root, trackName, path),\n          track.ValueTypeName,\n          track.getValueSize()\n        );\n        ++binding.referenceCount;\n        this._addInactiveBinding(binding, rootUuid, trackName);\n        bindings[i] = binding;\n      }\n      interpolants[i].resultBuffer = binding.buffer;\n    }\n  }\n  _activateAction(action) {\n    if (!this._isActiveAction(action)) {\n      if (action._cacheIndex === null) {\n        const rootUuid = (action._localRoot || this._root).uuid, clipUuid = action._clip.uuid, actionsForClip = this._actionsByClip[clipUuid];\n        this._bindAction(\n          action,\n          actionsForClip && actionsForClip.knownActions[0]\n        );\n        this._addInactiveAction(action, clipUuid, rootUuid);\n      }\n      const bindings = action._propertyBindings;\n      for (let i = 0, n2 = bindings.length; i !== n2; ++i) {\n        const binding = bindings[i];\n        if (binding.useCount++ === 0) {\n          this._lendBinding(binding);\n          binding.saveOriginalState();\n        }\n      }\n      this._lendAction(action);\n    }\n  }\n  _deactivateAction(action) {\n    if (this._isActiveAction(action)) {\n      const bindings = action._propertyBindings;\n      for (let i = 0, n2 = bindings.length; i !== n2; ++i) {\n        const binding = bindings[i];\n        if (--binding.useCount === 0) {\n          binding.restoreOriginalState();\n          this._takeBackBinding(binding);\n        }\n      }\n      this._takeBackAction(action);\n    }\n  }\n  // Memory manager\n  _initMemoryManager() {\n    this._actions = [];\n    this._nActiveActions = 0;\n    this._actionsByClip = {};\n    this._bindings = [];\n    this._nActiveBindings = 0;\n    this._bindingsByRootAndName = {};\n    this._controlInterpolants = [];\n    this._nActiveControlInterpolants = 0;\n    const scope = this;\n    this.stats = {\n      actions: {\n        get total() {\n          return scope._actions.length;\n        },\n        get inUse() {\n          return scope._nActiveActions;\n        }\n      },\n      bindings: {\n        get total() {\n          return scope._bindings.length;\n        },\n        get inUse() {\n          return scope._nActiveBindings;\n        }\n      },\n      controlInterpolants: {\n        get total() {\n          return scope._controlInterpolants.length;\n        },\n        get inUse() {\n          return scope._nActiveControlInterpolants;\n        }\n      }\n    };\n  }\n  // Memory management for AnimationAction objects\n  _isActiveAction(action) {\n    const index = action._cacheIndex;\n    return index !== null && index < this._nActiveActions;\n  }\n  _addInactiveAction(action, clipUuid, rootUuid) {\n    const actions = this._actions, actionsByClip = this._actionsByClip;\n    let actionsForClip = actionsByClip[clipUuid];\n    if (actionsForClip === void 0) {\n      actionsForClip = {\n        knownActions: [action],\n        actionByRoot: {}\n      };\n      action._byClipCacheIndex = 0;\n      actionsByClip[clipUuid] = actionsForClip;\n    } else {\n      const knownActions = actionsForClip.knownActions;\n      action._byClipCacheIndex = knownActions.length;\n      knownActions.push(action);\n    }\n    action._cacheIndex = actions.length;\n    actions.push(action);\n    actionsForClip.actionByRoot[rootUuid] = action;\n  }\n  _removeInactiveAction(action) {\n    const actions = this._actions, lastInactiveAction = actions[actions.length - 1], cacheIndex = action._cacheIndex;\n    lastInactiveAction._cacheIndex = cacheIndex;\n    actions[cacheIndex] = lastInactiveAction;\n    actions.pop();\n    action._cacheIndex = null;\n    const clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex;\n    lastKnownAction._byClipCacheIndex = byClipCacheIndex;\n    knownActionsForClip[byClipCacheIndex] = lastKnownAction;\n    knownActionsForClip.pop();\n    action._byClipCacheIndex = null;\n    const actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid;\n    delete actionByRoot[rootUuid];\n    if (knownActionsForClip.length === 0) {\n      delete actionsByClip[clipUuid];\n    }\n    this._removeInactiveBindingsForAction(action);\n  }\n  _removeInactiveBindingsForAction(action) {\n    const bindings = action._propertyBindings;\n    for (let i = 0, n2 = bindings.length; i !== n2; ++i) {\n      const binding = bindings[i];\n      if (--binding.referenceCount === 0) {\n        this._removeInactiveBinding(binding);\n      }\n    }\n  }\n  _lendAction(action) {\n    const actions = this._actions, prevIndex = action._cacheIndex, lastActiveIndex = this._nActiveActions++, firstInactiveAction = actions[lastActiveIndex];\n    action._cacheIndex = lastActiveIndex;\n    actions[lastActiveIndex] = action;\n    firstInactiveAction._cacheIndex = prevIndex;\n    actions[prevIndex] = firstInactiveAction;\n  }\n  _takeBackAction(action) {\n    const actions = this._actions, prevIndex = action._cacheIndex, firstInactiveIndex = --this._nActiveActions, lastActiveAction = actions[firstInactiveIndex];\n    action._cacheIndex = firstInactiveIndex;\n    actions[firstInactiveIndex] = action;\n    lastActiveAction._cacheIndex = prevIndex;\n    actions[prevIndex] = lastActiveAction;\n  }\n  // Memory management for PropertyMixer objects\n  _addInactiveBinding(binding, rootUuid, trackName) {\n    const bindingsByRoot = this._bindingsByRootAndName, bindings = this._bindings;\n    let bindingByName = bindingsByRoot[rootUuid];\n    if (bindingByName === void 0) {\n      bindingByName = {};\n      bindingsByRoot[rootUuid] = bindingByName;\n    }\n    bindingByName[trackName] = binding;\n    binding._cacheIndex = bindings.length;\n    bindings.push(binding);\n  }\n  _removeInactiveBinding(binding) {\n    const bindings = this._bindings, propBinding = binding.binding, rootUuid = propBinding.rootNode.uuid, trackName = propBinding.path, bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid], lastInactiveBinding = bindings[bindings.length - 1], cacheIndex = binding._cacheIndex;\n    lastInactiveBinding._cacheIndex = cacheIndex;\n    bindings[cacheIndex] = lastInactiveBinding;\n    bindings.pop();\n    delete bindingByName[trackName];\n    if (Object.keys(bindingByName).length === 0) {\n      delete bindingsByRoot[rootUuid];\n    }\n  }\n  _lendBinding(binding) {\n    const bindings = this._bindings, prevIndex = binding._cacheIndex, lastActiveIndex = this._nActiveBindings++, firstInactiveBinding = bindings[lastActiveIndex];\n    binding._cacheIndex = lastActiveIndex;\n    bindings[lastActiveIndex] = binding;\n    firstInactiveBinding._cacheIndex = prevIndex;\n    bindings[prevIndex] = firstInactiveBinding;\n  }\n  _takeBackBinding(binding) {\n    const bindings = this._bindings, prevIndex = binding._cacheIndex, firstInactiveIndex = --this._nActiveBindings, lastActiveBinding = bindings[firstInactiveIndex];\n    binding._cacheIndex = firstInactiveIndex;\n    bindings[firstInactiveIndex] = binding;\n    lastActiveBinding._cacheIndex = prevIndex;\n    bindings[prevIndex] = lastActiveBinding;\n  }\n  // Memory management of Interpolants for weight and time scale\n  _lendControlInterpolant() {\n    const interpolants = this._controlInterpolants, lastActiveIndex = this._nActiveControlInterpolants++;\n    let interpolant = interpolants[lastActiveIndex];\n    if (interpolant === void 0) {\n      interpolant = new LinearInterpolant(\n        new Float32Array(2),\n        new Float32Array(2),\n        1,\n        _controlInterpolantsResultBuffer\n      );\n      interpolant.__cacheIndex = lastActiveIndex;\n      interpolants[lastActiveIndex] = interpolant;\n    }\n    return interpolant;\n  }\n  _takeBackControlInterpolant(interpolant) {\n    const interpolants = this._controlInterpolants, prevIndex = interpolant.__cacheIndex, firstInactiveIndex = --this._nActiveControlInterpolants, lastActiveInterpolant = interpolants[firstInactiveIndex];\n    interpolant.__cacheIndex = firstInactiveIndex;\n    interpolants[firstInactiveIndex] = interpolant;\n    lastActiveInterpolant.__cacheIndex = prevIndex;\n    interpolants[prevIndex] = lastActiveInterpolant;\n  }\n  // return an action for a clip optionally using a custom root target\n  // object (this method allocates a lot of dynamic memory in case a\n  // previously unknown clip/root combination is specified)\n  clipAction(clip, optionalRoot, blendMode) {\n    const root = optionalRoot || this._root, rootUuid = root.uuid;\n    let clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip;\n    const clipUuid = clipObject !== null ? clipObject.uuid : clip;\n    const actionsForClip = this._actionsByClip[clipUuid];\n    let prototypeAction = null;\n    if (blendMode === void 0) {\n      if (clipObject !== null) {\n        blendMode = clipObject.blendMode;\n      } else {\n        blendMode = NormalAnimationBlendMode;\n      }\n    }\n    if (actionsForClip !== void 0) {\n      const existingAction = actionsForClip.actionByRoot[rootUuid];\n      if (existingAction !== void 0 && existingAction.blendMode === blendMode) {\n        return existingAction;\n      }\n      prototypeAction = actionsForClip.knownActions[0];\n      if (clipObject === null)\n        clipObject = prototypeAction._clip;\n    }\n    if (clipObject === null)\n      return null;\n    const newAction = new AnimationAction(this, clipObject, optionalRoot, blendMode);\n    this._bindAction(newAction, prototypeAction);\n    this._addInactiveAction(newAction, clipUuid, rootUuid);\n    return newAction;\n  }\n  // get an existing action\n  existingAction(clip, optionalRoot) {\n    const root = optionalRoot || this._root, rootUuid = root.uuid, clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip, clipUuid = clipObject ? clipObject.uuid : clip, actionsForClip = this._actionsByClip[clipUuid];\n    if (actionsForClip !== void 0) {\n      return actionsForClip.actionByRoot[rootUuid] || null;\n    }\n    return null;\n  }\n  // deactivates all previously scheduled actions\n  stopAllAction() {\n    const actions = this._actions, nActions = this._nActiveActions;\n    for (let i = nActions - 1; i >= 0; --i) {\n      actions[i].stop();\n    }\n    return this;\n  }\n  // advance the time and update apply the animation\n  update(deltaTime) {\n    deltaTime *= this.timeScale;\n    const actions = this._actions, nActions = this._nActiveActions, time = this.time += deltaTime, timeDirection = Math.sign(deltaTime), accuIndex = this._accuIndex ^= 1;\n    for (let i = 0; i !== nActions; ++i) {\n      const action = actions[i];\n      action._update(time, deltaTime, timeDirection, accuIndex);\n    }\n    const bindings = this._bindings, nBindings = this._nActiveBindings;\n    for (let i = 0; i !== nBindings; ++i) {\n      bindings[i].apply(accuIndex);\n    }\n    return this;\n  }\n  // Allows you to seek to a specific time in an animation.\n  setTime(timeInSeconds) {\n    this.time = 0;\n    for (let i = 0; i < this._actions.length; i++) {\n      this._actions[i].time = 0;\n    }\n    return this.update(timeInSeconds);\n  }\n  // return this mixer's root target object\n  getRoot() {\n    return this._root;\n  }\n  // free all resources specific to a particular clip\n  uncacheClip(clip) {\n    const actions = this._actions, clipUuid = clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid];\n    if (actionsForClip !== void 0) {\n      const actionsToRemove = actionsForClip.knownActions;\n      for (let i = 0, n2 = actionsToRemove.length; i !== n2; ++i) {\n        const action = actionsToRemove[i];\n        this._deactivateAction(action);\n        const cacheIndex = action._cacheIndex, lastInactiveAction = actions[actions.length - 1];\n        action._cacheIndex = null;\n        action._byClipCacheIndex = null;\n        lastInactiveAction._cacheIndex = cacheIndex;\n        actions[cacheIndex] = lastInactiveAction;\n        actions.pop();\n        this._removeInactiveBindingsForAction(action);\n      }\n      delete actionsByClip[clipUuid];\n    }\n  }\n  // free all resources specific to a particular root target object\n  uncacheRoot(root) {\n    const rootUuid = root.uuid, actionsByClip = this._actionsByClip;\n    for (const clipUuid in actionsByClip) {\n      const actionByRoot = actionsByClip[clipUuid].actionByRoot, action = actionByRoot[rootUuid];\n      if (action !== void 0) {\n        this._deactivateAction(action);\n        this._removeInactiveAction(action);\n      }\n    }\n    const bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid];\n    if (bindingByName !== void 0) {\n      for (const trackName in bindingByName) {\n        const binding = bindingByName[trackName];\n        binding.restoreOriginalState();\n        this._removeInactiveBinding(binding);\n      }\n    }\n  }\n  // remove a targeted clip from the cache\n  uncacheAction(clip, optionalRoot) {\n    const action = this.existingAction(clip, optionalRoot);\n    if (action !== null) {\n      this._deactivateAction(action);\n      this._removeInactiveAction(action);\n    }\n  }\n};\nvar Raycaster = class {\n  constructor(origin, direction, near = 0, far = Infinity) {\n    this.ray = new Ray(origin, direction);\n    this.near = near;\n    this.far = far;\n    this.camera = null;\n    this.layers = new Layers();\n    this.params = {\n      Mesh: {},\n      Line: { threshold: 1 },\n      LOD: {},\n      Points: { threshold: 1 },\n      Sprite: {}\n    };\n  }\n  set(origin, direction) {\n    this.ray.set(origin, direction);\n  }\n  setFromCamera(coords, camera2) {\n    if (camera2.isPerspectiveCamera) {\n      this.ray.origin.setFromMatrixPosition(camera2.matrixWorld);\n      this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera2).sub(this.ray.origin).normalize();\n      this.camera = camera2;\n    } else if (camera2.isOrthographicCamera) {\n      this.ray.origin.set(coords.x, coords.y, (camera2.near + camera2.far) / (camera2.near - camera2.far)).unproject(camera2);\n      this.ray.direction.set(0, 0, -1).transformDirection(camera2.matrixWorld);\n      this.camera = camera2;\n    } else {\n      console.error(\"THREE.Raycaster: Unsupported camera type: \" + camera2.type);\n    }\n  }\n  intersectObject(object, recursive = true, intersects2 = []) {\n    intersectObject(object, this, intersects2, recursive);\n    intersects2.sort(ascSort);\n    return intersects2;\n  }\n  intersectObjects(objects, recursive = true, intersects2 = []) {\n    for (let i = 0, l = objects.length; i < l; i++) {\n      intersectObject(objects[i], this, intersects2, recursive);\n    }\n    intersects2.sort(ascSort);\n    return intersects2;\n  }\n};\nfunction ascSort(a, b) {\n  return a.distance - b.distance;\n}\nfunction intersectObject(object, raycaster2, intersects2, recursive) {\n  if (object.layers.test(raycaster2.layers)) {\n    object.raycast(raycaster2, intersects2);\n  }\n  if (recursive === true) {\n    const children = object.children;\n    for (let i = 0, l = children.length; i < l; i++) {\n      intersectObject(children[i], raycaster2, intersects2, true);\n    }\n  }\n}\nvar Spherical = class {\n  constructor(radius = 1, phi = 0, theta = 0) {\n    this.radius = radius;\n    this.phi = phi;\n    this.theta = theta;\n    return this;\n  }\n  set(radius, phi, theta) {\n    this.radius = radius;\n    this.phi = phi;\n    this.theta = theta;\n    return this;\n  }\n  copy(other) {\n    this.radius = other.radius;\n    this.phi = other.phi;\n    this.theta = other.theta;\n    return this;\n  }\n  // restrict phi to be between EPS and PI-EPS\n  makeSafe() {\n    const EPS = 1e-6;\n    this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));\n    return this;\n  }\n  setFromVector3(v) {\n    return this.setFromCartesianCoords(v.x, v.y, v.z);\n  }\n  setFromCartesianCoords(x2, y, z) {\n    this.radius = Math.sqrt(x2 * x2 + y * y + z * z);\n    if (this.radius === 0) {\n      this.theta = 0;\n      this.phi = 0;\n    } else {\n      this.theta = Math.atan2(x2, z);\n      this.phi = Math.acos(clamp(y / this.radius, -1, 1));\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n};\nvar _vector$4 = new Vector2();\nvar _startP = new Vector3();\nvar _startEnd = new Vector3();\nvar _vector$3 = new Vector3();\nvar _vector$2 = new Vector3();\nvar _boneMatrix = new Matrix4();\nvar _matrixWorldInv = new Matrix4();\nvar _vector$1 = new Vector3();\nvar _color1 = new Color();\nvar _color2 = new Color();\nvar _v1 = new Vector3();\nvar _v2 = new Vector3();\nvar _v3 = new Vector3();\nvar _vector = new Vector3();\nvar _camera = new Camera();\nvar _box = new Box3();\nvar _axis = new Vector3();\nvar _tables = _generateTables();\nfunction _generateTables() {\n  const buffer = new ArrayBuffer(4);\n  const floatView = new Float32Array(buffer);\n  const uint32View = new Uint32Array(buffer);\n  const baseTable = new Uint32Array(512);\n  const shiftTable = new Uint32Array(512);\n  for (let i = 0; i < 256; ++i) {\n    const e = i - 127;\n    if (e < -27) {\n      baseTable[i] = 0;\n      baseTable[i | 256] = 32768;\n      shiftTable[i] = 24;\n      shiftTable[i | 256] = 24;\n    } else if (e < -14) {\n      baseTable[i] = 1024 >> -e - 14;\n      baseTable[i | 256] = 1024 >> -e - 14 | 32768;\n      shiftTable[i] = -e - 1;\n      shiftTable[i | 256] = -e - 1;\n    } else if (e <= 15) {\n      baseTable[i] = e + 15 << 10;\n      baseTable[i | 256] = e + 15 << 10 | 32768;\n      shiftTable[i] = 13;\n      shiftTable[i | 256] = 13;\n    } else if (e < 128) {\n      baseTable[i] = 31744;\n      baseTable[i | 256] = 64512;\n      shiftTable[i] = 24;\n      shiftTable[i | 256] = 24;\n    } else {\n      baseTable[i] = 31744;\n      baseTable[i | 256] = 64512;\n      shiftTable[i] = 13;\n      shiftTable[i | 256] = 13;\n    }\n  }\n  const mantissaTable = new Uint32Array(2048);\n  const exponentTable = new Uint32Array(64);\n  const offsetTable = new Uint32Array(64);\n  for (let i = 1; i < 1024; ++i) {\n    let m = i << 13;\n    let e = 0;\n    while ((m & 8388608) === 0) {\n      m <<= 1;\n      e -= 8388608;\n    }\n    m &= ~8388608;\n    e += 947912704;\n    mantissaTable[i] = m | e;\n  }\n  for (let i = 1024; i < 2048; ++i) {\n    mantissaTable[i] = 939524096 + (i - 1024 << 13);\n  }\n  for (let i = 1; i < 31; ++i) {\n    exponentTable[i] = i << 23;\n  }\n  exponentTable[31] = 1199570944;\n  exponentTable[32] = 2147483648;\n  for (let i = 33; i < 63; ++i) {\n    exponentTable[i] = 2147483648 + (i - 32 << 23);\n  }\n  exponentTable[63] = 3347054592;\n  for (let i = 1; i < 64; ++i) {\n    if (i !== 32) {\n      offsetTable[i] = 1024;\n    }\n  }\n  return {\n    floatView,\n    uint32View,\n    baseTable,\n    shiftTable,\n    mantissaTable,\n    exponentTable,\n    offsetTable\n  };\n}\nfunction toHalfFloat(val) {\n  if (Math.abs(val) > 65504)\n    console.warn(\"THREE.DataUtils.toHalfFloat(): Value out of range.\");\n  val = clamp(val, -65504, 65504);\n  _tables.floatView[0] = val;\n  const f = _tables.uint32View[0];\n  const e = f >> 23 & 511;\n  return _tables.baseTable[e] + ((f & 8388607) >> _tables.shiftTable[e]);\n}\nfunction fromHalfFloat(val) {\n  const m = val >> 10;\n  _tables.uint32View[0] = _tables.mantissaTable[_tables.offsetTable[m] + (val & 1023)] + _tables.exponentTable[m];\n  return _tables.floatView[0];\n}\nvar DataUtils = Object.freeze({\n  __proto__: null,\n  toHalfFloat,\n  fromHalfFloat\n});\nif (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n  __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\", { detail: {\n    revision: REVISION\n  } }));\n}\nif (typeof window !== \"undefined\") {\n  if (window.__THREE__) {\n    console.warn(\"WARNING: Multiple instances of Three.js being imported.\");\n  } else {\n    window.__THREE__ = REVISION;\n  }\n}\n\n// node_modules/@google/model-viewer/lib/constants.js\nvar HAS_WEBXR_DEVICE_API = navigator.xr != null && self.XRSession != null && navigator.xr.isSessionSupported != null;\nvar HAS_WEBXR_HIT_TEST_API = HAS_WEBXR_DEVICE_API && self.XRSession.prototype.requestHitTestSource != null;\nvar HAS_RESIZE_OBSERVER = self.ResizeObserver != null;\nvar HAS_INTERSECTION_OBSERVER = self.IntersectionObserver != null;\nvar IS_WEBXR_AR_CANDIDATE = HAS_WEBXR_HIT_TEST_API;\nvar IS_MOBILE = (() => {\n  const userAgent = navigator.userAgent || navigator.vendor || self.opera;\n  let check = false;\n  if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(userAgent.substr(0, 4))) {\n    check = true;\n  }\n  return check;\n})();\nvar IS_CHROMEOS = /\\bCrOS\\b/.test(navigator.userAgent);\nvar IS_ANDROID = /android/i.test(navigator.userAgent);\nvar IS_IOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !self.MSStream || navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1;\nvar IS_SAFARI = /Safari\\//.test(navigator.userAgent);\nvar IS_FIREFOX = /firefox/i.test(navigator.userAgent);\nvar IS_OCULUS = /OculusBrowser/.test(navigator.userAgent);\nvar IS_IOS_CHROME = IS_IOS && /CriOS\\//.test(navigator.userAgent);\nvar IS_SCENEVIEWER_CANDIDATE = IS_ANDROID && !IS_FIREFOX && !IS_OCULUS;\nvar IS_WKWEBVIEW = Boolean(window.webkit && window.webkit.messageHandlers);\nvar IS_AR_QUICKLOOK_CANDIDATE = (() => {\n  if (IS_IOS) {\n    if (!IS_WKWEBVIEW) {\n      const tempAnchor = document.createElement(\"a\");\n      return Boolean(tempAnchor.relList && tempAnchor.relList.supports && tempAnchor.relList.supports(\"ar\"));\n    } else {\n      return Boolean(/CriOS\\/|EdgiOS\\/|FxiOS\\/|GSA\\/|DuckDuckGo\\//.test(navigator.userAgent));\n    }\n  } else {\n    return false;\n  }\n})();\n\n// node_modules/@google/model-viewer/lib/utilities.js\nvar deserializeUrl = (url) => !!url && url !== \"null\" ? toFullUrl(url) : null;\nvar assertIsArCandidate = () => {\n  if (IS_WEBXR_AR_CANDIDATE) {\n    return;\n  }\n  const missingApis = [];\n  if (!HAS_WEBXR_DEVICE_API) {\n    missingApis.push(\"WebXR Device API\");\n  }\n  if (!HAS_WEBXR_HIT_TEST_API) {\n    missingApis.push(\"WebXR Hit Test API\");\n  }\n  throw new Error(`The following APIs are required for AR, but are missing in this browser: ${missingApis.join(\", \")}`);\n};\nvar toFullUrl = (partialUrl) => {\n  const url = new URL(partialUrl, window.location.toString());\n  return url.toString();\n};\nvar throttle = (fn, ms) => {\n  let timer = null;\n  const throttled = (...args) => {\n    if (timer != null) {\n      return;\n    }\n    fn(...args);\n    timer = self.setTimeout(() => timer = null, ms);\n  };\n  throttled.flush = () => {\n    if (timer != null) {\n      self.clearTimeout(timer);\n      timer = null;\n    }\n  };\n  return throttled;\n};\nvar debounce = (fn, ms) => {\n  let timer = null;\n  return (...args) => {\n    if (timer != null) {\n      self.clearTimeout(timer);\n    }\n    timer = self.setTimeout(() => {\n      timer = null;\n      fn(...args);\n    }, ms);\n  };\n};\nvar clamp2 = (value, lowerLimit, upperLimit) => Math.max(lowerLimit, Math.min(upperLimit, value));\nvar CAPPED_DEVICE_PIXEL_RATIO = 1;\nvar resolveDpr = (() => {\n  const HAS_META_VIEWPORT_TAG = (() => {\n    var _a12;\n    if ((_a12 = document.documentElement.getAttribute(\"itemtype\")) === null || _a12 === void 0 ? void 0 : _a12.includes(\"schema.org/SearchResultsPage\")) {\n      return true;\n    }\n    const metas = document.head != null ? Array.from(document.head.querySelectorAll(\"meta\")) : [];\n    for (const meta of metas) {\n      if (meta.name === \"viewport\") {\n        return true;\n      }\n    }\n    return false;\n  })();\n  if (!HAS_META_VIEWPORT_TAG) {\n    console.warn('No <meta name=\"viewport\"> detected; <model-viewer> will cap pixel density at 1.');\n  }\n  return () => HAS_META_VIEWPORT_TAG ? window.devicePixelRatio : CAPPED_DEVICE_PIXEL_RATIO;\n})();\nvar isDebugMode = (() => {\n  const debugQueryParameterName = \"model-viewer-debug-mode\";\n  const debugQueryParameter = new RegExp(`[?&]${debugQueryParameterName}(&|$)`);\n  return () => self.ModelViewerElement && self.ModelViewerElement.debugMode || self.location && self.location.search && self.location.search.match(debugQueryParameter);\n})();\nvar timePasses = (ms = 0) => new Promise((resolve) => setTimeout(resolve, ms));\nvar waitForEvent = (target2, eventName, predicate = null) => new Promise((resolve) => {\n  function handler(event) {\n    if (!predicate || predicate(event)) {\n      resolve(event);\n      target2.removeEventListener(eventName, handler);\n    }\n  }\n  target2.addEventListener(eventName, handler);\n});\n\n// node_modules/@google/model-viewer/lib/features/environment.js\nvar __decorate = function(decorators, target2, key, desc) {\n  var c = arguments.length, r = c < 3 ? target2 : desc === null ? desc = Object.getOwnPropertyDescriptor(target2, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target2, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if (d = decorators[i])\n        r = (c < 3 ? d(r) : c > 3 ? d(target2, key, r) : d(target2, key)) || r;\n  return c > 3 && r && Object.defineProperty(target2, key, r), r;\n};\nvar BASE_OPACITY = 0.5;\nvar DEFAULT_SHADOW_INTENSITY = 0;\nvar DEFAULT_SHADOW_SOFTNESS = 1;\nvar DEFAULT_EXPOSURE = 1;\nvar $currentEnvironmentMap = Symbol(\"currentEnvironmentMap\");\nvar $currentBackground = Symbol(\"currentBackground\");\nvar $updateEnvironment = Symbol(\"updateEnvironment\");\nvar $cancelEnvironmentUpdate = Symbol(\"cancelEnvironmentUpdate\");\nvar EnvironmentMixin = (ModelViewerElement2) => {\n  var _a12, _b11, _c6;\n  class EnvironmentModelViewerElement extends ModelViewerElement2 {\n    constructor() {\n      super(...arguments);\n      this.environmentImage = null;\n      this.skyboxImage = null;\n      this.shadowIntensity = DEFAULT_SHADOW_INTENSITY;\n      this.shadowSoftness = DEFAULT_SHADOW_SOFTNESS;\n      this.exposure = DEFAULT_EXPOSURE;\n      this[_a12] = null;\n      this[_b11] = null;\n      this[_c6] = null;\n    }\n    updated(changedProperties) {\n      super.updated(changedProperties);\n      if (changedProperties.has(\"shadowIntensity\")) {\n        this[$scene].setShadowIntensity(this.shadowIntensity * BASE_OPACITY);\n        this[$needsRender]();\n      }\n      if (changedProperties.has(\"shadowSoftness\")) {\n        this[$scene].setShadowSoftness(this.shadowSoftness);\n        this[$needsRender]();\n      }\n      if (changedProperties.has(\"exposure\")) {\n        this[$scene].exposure = this.exposure;\n        this[$needsRender]();\n      }\n      if ((changedProperties.has(\"environmentImage\") || changedProperties.has(\"skyboxImage\")) && this[$shouldAttemptPreload]()) {\n        this[$updateEnvironment]();\n      }\n    }\n    hasBakedShadow() {\n      return this[$scene].bakedShadows.size > 0;\n    }\n    async [(_a12 = $currentEnvironmentMap, _b11 = $currentBackground, _c6 = $cancelEnvironmentUpdate, $updateEnvironment)]() {\n      const { skyboxImage, environmentImage } = this;\n      if (this[$cancelEnvironmentUpdate] != null) {\n        this[$cancelEnvironmentUpdate]();\n        this[$cancelEnvironmentUpdate] = null;\n      }\n      const { textureUtils } = this[$renderer];\n      if (textureUtils == null) {\n        return;\n      }\n      const updateEnvProgress = this[$progressTracker].beginActivity();\n      try {\n        const { environmentMap, skybox } = await textureUtils.generateEnvironmentMapAndSkybox(deserializeUrl(skyboxImage), environmentImage, (progress) => updateEnvProgress(clamp2(progress, 0, 1)));\n        if (this[$currentEnvironmentMap] !== environmentMap) {\n          this[$currentEnvironmentMap] = environmentMap;\n          this.dispatchEvent(new CustomEvent(\"environment-change\"));\n        }\n        if (skybox != null) {\n          this[$currentBackground] = skybox.name === environmentMap.name ? environmentMap : skybox;\n        } else {\n          this[$currentBackground] = null;\n        }\n        this[$scene].setEnvironmentAndSkybox(this[$currentEnvironmentMap], this[$currentBackground]);\n        this[$scene].dispatchEvent({ type: \"envmap-update\" });\n      } catch (errorOrPromise) {\n        if (errorOrPromise instanceof Error) {\n          this[$scene].setEnvironmentAndSkybox(null, null);\n          throw errorOrPromise;\n        }\n      } finally {\n        updateEnvProgress(1);\n      }\n    }\n  }\n  __decorate([\n    property({ type: String, attribute: \"environment-image\" })\n  ], EnvironmentModelViewerElement.prototype, \"environmentImage\", void 0);\n  __decorate([\n    property({ type: String, attribute: \"skybox-image\" })\n  ], EnvironmentModelViewerElement.prototype, \"skyboxImage\", void 0);\n  __decorate([\n    property({ type: Number, attribute: \"shadow-intensity\" })\n  ], EnvironmentModelViewerElement.prototype, \"shadowIntensity\", void 0);\n  __decorate([\n    property({ type: Number, attribute: \"shadow-softness\" })\n  ], EnvironmentModelViewerElement.prototype, \"shadowSoftness\", void 0);\n  __decorate([\n    property({\n      type: Number\n    })\n  ], EnvironmentModelViewerElement.prototype, \"exposure\", void 0);\n  return EnvironmentModelViewerElement;\n};\n\n// node_modules/@google/model-viewer/lib/assets/close-material-svg.js\nvar close_material_svg_default = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24px\" height=\"24px\" viewBox=\"0 0 24 24\" fill=\"#000000\">\n    <!-- NOTE(cdata): This SVG filter is a stop-gap until we can implement\n         support for dynamic re-coloring of UI components -->\n    <defs>\n      <filter id=\"drop-shadow\" x=\"-100%\" y=\"-100%\" width=\"300%\" height=\"300%\">\n        <feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"1\"/>\n        <feOffset dx=\"0\" dy=\"0\" result=\"offsetblur\"/>\n        <feFlood flood-color=\"#000000\"/>\n        <feComposite in2=\"offsetblur\" operator=\"in\"/>\n        <feMerge>\n          <feMergeNode/>\n          <feMergeNode in=\"SourceGraphic\"/>\n        </feMerge>\n      </filter>\n    </defs>\n    <path filter=\"url(#drop-shadow)\" d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/>\n    <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n</svg>`;\n\n// node_modules/@google/model-viewer/lib/assets/controls-svg.js\nvar controls_svg_default = html`\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"25\" height=\"36\">\n    <defs>\n        <path id=\"A\" d=\"M.001.232h24.997V36H.001z\" />\n    </defs>\n    <g transform=\"translate(-11 -4)\" fill=\"none\" fill-rule=\"evenodd\">\n        <path fill-opacity=\"0\" fill=\"#fff\" d=\"M0 0h44v44H0z\" />\n        <g transform=\"translate(11 3)\">\n            <path d=\"M8.733 11.165c.04-1.108.766-2.027 1.743-2.307a2.54 2.54 0 0 1 .628-.089c.16 0 .314.017.463.044 1.088.2 1.9 1.092 1.9 2.16v8.88h1.26c2.943-1.39 5-4.45 5-8.025a9.01 9.01 0 0 0-1.9-5.56l-.43-.5c-.765-.838-1.683-1.522-2.712-2-1.057-.49-2.226-.77-3.46-.77s-2.4.278-3.46.77c-1.03.478-1.947 1.162-2.71 2l-.43.5a9.01 9.01 0 0 0-1.9 5.56 9.04 9.04 0 0 0 .094 1.305c.03.21.088.41.13.617l.136.624c.083.286.196.56.305.832l.124.333a8.78 8.78 0 0 0 .509.953l.065.122a8.69 8.69 0 0 0 3.521 3.191l1.11.537v-9.178z\" fill-opacity=\".5\" fill=\"#e4e4e4\" />\n            <path d=\"M22.94 26.218l-2.76 7.74c-.172.485-.676.8-1.253.8H12.24c-1.606 0-3.092-.68-3.98-1.82-1.592-2.048-3.647-3.822-6.11-5.27-.095-.055-.15-.137-.152-.23-.004-.1.046-.196.193-.297.56-.393 1.234-.6 1.926-.6a3.43 3.43 0 0 1 .691.069l4.922.994V10.972c0-.663.615-1.203 1.37-1.203s1.373.54 1.373 1.203v9.882h2.953c.273 0 .533.073.757.21l6.257 3.874c.027.017.045.042.07.06.41.296.586.77.426 1.22M4.1 16.614c-.024-.04-.042-.083-.065-.122a8.69 8.69 0 0 1-.509-.953c-.048-.107-.08-.223-.124-.333l-.305-.832c-.058-.202-.09-.416-.136-.624l-.13-.617a9.03 9.03 0 0 1-.094-1.305c0-2.107.714-4.04 1.9-5.56l.43-.5c.764-.84 1.682-1.523 2.71-2 1.058-.49 2.226-.77 3.46-.77s2.402.28 3.46.77c1.03.477 1.947 1.16 2.712 2l.428.5a9 9 0 0 1 1.901 5.559c0 3.577-2.056 6.636-5 8.026h-1.26v-8.882c0-1.067-.822-1.96-1.9-2.16-.15-.028-.304-.044-.463-.044-.22 0-.427.037-.628.09-.977.28-1.703 1.198-1.743 2.306v9.178l-1.11-.537C6.18 19.098 4.96 18 4.1 16.614M22.97 24.09l-6.256-3.874c-.102-.063-.218-.098-.33-.144 2.683-1.8 4.354-4.855 4.354-8.243 0-.486-.037-.964-.104-1.43a9.97 9.97 0 0 0-1.57-4.128l-.295-.408-.066-.092a10.05 10.05 0 0 0-.949-1.078c-.342-.334-.708-.643-1.094-.922-1.155-.834-2.492-1.412-3.94-1.65l-.732-.088-.748-.03a9.29 9.29 0 0 0-1.482.119c-1.447.238-2.786.816-3.94 1.65a9.33 9.33 0 0 0-.813.686 9.59 9.59 0 0 0-.845.877l-.385.437-.36.5-.288.468-.418.778-.04.09c-.593 1.28-.93 2.71-.93 4.222 0 3.832 2.182 7.342 5.56 8.938l1.437.68v4.946L5 25.64a4.44 4.44 0 0 0-.888-.086c-.017 0-.034.003-.05.003-.252.004-.503.033-.75.08a5.08 5.08 0 0 0-.237.056c-.193.046-.382.107-.568.18-.075.03-.15.057-.225.1-.25.114-.494.244-.723.405a1.31 1.31 0 0 0-.566 1.122 1.28 1.28 0 0 0 .645 1.051C4 29.925 5.96 31.614 7.473 33.563a5.06 5.06 0 0 0 .434.491c1.086 1.082 2.656 1.713 4.326 1.715h6.697c.748-.001 1.43-.333 1.858-.872.142-.18.256-.38.336-.602l2.757-7.74c.094-.26.13-.53.112-.794s-.088-.52-.203-.76a2.19 2.19 0 0 0-.821-.91\" fill-opacity=\".6\" fill=\"#000\" />\n            <path d=\"M22.444 24.94l-6.257-3.874a1.45 1.45 0 0 0-.757-.211h-2.953v-9.88c0-.663-.616-1.203-1.373-1.203s-1.37.54-1.37 1.203v16.643l-4.922-.994a3.44 3.44 0 0 0-.692-.069 3.35 3.35 0 0 0-1.925.598c-.147.102-.198.198-.194.298.004.094.058.176.153.23 2.462 1.448 4.517 3.22 6.11 5.27.887 1.14 2.373 1.82 3.98 1.82h6.686c.577 0 1.08-.326 1.253-.8l2.76-7.74c.16-.448-.017-.923-.426-1.22-.025-.02-.043-.043-.07-.06z\" fill=\"#fff\" />\n            <g transform=\"translate(0 .769)\">\n                <mask id=\"B\" fill=\"#fff\">\n                    <use xlink:href=\"#A\" />\n                </mask>\n                <path d=\"M23.993 24.992a1.96 1.96 0 0 1-.111.794l-2.758 7.74c-.08.22-.194.423-.336.602-.427.54-1.11.87-1.857.872h-6.698c-1.67-.002-3.24-.633-4.326-1.715-.154-.154-.3-.318-.434-.49C5.96 30.846 4 29.157 1.646 27.773c-.385-.225-.626-.618-.645-1.05a1.31 1.31 0 0 1 .566-1.122 4.56 4.56 0 0 1 .723-.405l.225-.1a4.3 4.3 0 0 1 .568-.18l.237-.056c.248-.046.5-.075.75-.08.018 0 .034-.003.05-.003.303-.001.597.027.89.086l3.722.752V20.68l-1.436-.68c-3.377-1.596-5.56-5.106-5.56-8.938 0-1.51.336-2.94.93-4.222.015-.03.025-.06.04-.09.127-.267.268-.525.418-.778.093-.16.186-.316.288-.468.063-.095.133-.186.2-.277L3.773 5c.118-.155.26-.29.385-.437.266-.3.544-.604.845-.877a9.33 9.33 0 0 1 .813-.686C6.97 2.167 8.31 1.59 9.757 1.35a9.27 9.27 0 0 1 1.481-.119 8.82 8.82 0 0 1 .748.031c.247.02.49.05.733.088 1.448.238 2.786.816 3.94 1.65.387.28.752.588 1.094.922a9.94 9.94 0 0 1 .949 1.078l.066.092c.102.133.203.268.295.408a9.97 9.97 0 0 1 1.571 4.128c.066.467.103.945.103 1.43 0 3.388-1.67 6.453-4.353 8.243.11.046.227.08.33.144l6.256 3.874c.37.23.645.55.82.9.115.24.185.498.203.76m.697-1.195c-.265-.55-.677-1.007-1.194-1.326l-5.323-3.297c2.255-2.037 3.564-4.97 3.564-8.114 0-2.19-.637-4.304-1.84-6.114-.126-.188-.26-.37-.4-.552-.645-.848-1.402-1.6-2.252-2.204C15.472.91 13.393.232 11.238.232A10.21 10.21 0 0 0 5.23 2.19c-.848.614-1.606 1.356-2.253 2.205-.136.18-.272.363-.398.55C1.374 6.756.737 8.87.737 11.06c0 4.218 2.407 8.08 6.133 9.842l.863.41v3.092l-2.525-.51c-.356-.07-.717-.106-1.076-.106a5.45 5.45 0 0 0-3.14.996c-.653.46-1.022 1.202-.99 1.983a2.28 2.28 0 0 0 1.138 1.872c2.24 1.318 4.106 2.923 5.543 4.772 1.26 1.62 3.333 2.59 5.55 2.592h6.698c1.42-.001 2.68-.86 3.134-2.138l2.76-7.74c.272-.757.224-1.584-.134-2.325\" fill-opacity=\".05\" fill=\"#000\" mask=\"url(#B)\" />\n            </g>\n        </g>\n    </g>\n</svg>`;\n\n// node_modules/@google/model-viewer/lib/assets/view-in-ar-material-svg.js\nvar view_in_ar_material_svg_default = html`\n<svg version=\"1.1\" id=\"view_x5F_in_x5F_AR_x5F_icon\"\n\t xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"24px\" height=\"24px\"\n\t viewBox=\"0 0 24 24\" enable-background=\"new 0 0 24 24\" xml:space=\"preserve\">\n<rect id=\"Bounding_Box\" x=\"0\" y=\"0\" fill=\"none\" width=\"24\" height=\"24\"/>\n<g id=\"Art_layer\">\n\t<path d=\"M3,4c0-0.55,0.45-1,1-1h2V1H4C2.35,1,1,2.35,1,4v2h2V4z\"/>\n\t<path d=\"M20,3c0.55,0,1,0.45,1,1v2h2V4c0-1.65-1.35-3-3-3h-2v2H20z\"/>\n\t<path d=\"M4,21c-0.55,0-1-0.45-1-1v-2H1v2c0,1.65,1.35,3,3,3h2v-2H4z\"/>\n\t<path d=\"M20,21c0.55,0,1-0.45,1-1v-2h2v2c0,1.65-1.35,3-3,3h-2v-2H20z\"/>\n\t<g>\n\t\t<path d=\"M18.25,7.6l-5.5-3.18c-0.46-0.27-1.04-0.27-1.5,0L5.75,7.6C5.29,7.87,5,8.36,5,8.9v6.35c0,0.54,0.29,1.03,0.75,1.3\n\t\t\tl5.5,3.18c0.46,0.27,1.04,0.27,1.5,0l5.5-3.18c0.46-0.27,0.75-0.76,0.75-1.3V8.9C19,8.36,18.71,7.87,18.25,7.6z M7,14.96v-4.62\n\t\t\tl4,2.32v4.61L7,14.96z M12,10.93L8,8.61l4-2.31l4,2.31L12,10.93z M13,17.27v-4.61l4-2.32v4.62L13,17.27z\"/>\n\t</g>\n</g>\n</svg>`;\n\n// node_modules/@google/model-viewer/lib/template.js\nvar templateResult = html`\n<style>\n:host {\n  display: block;\n  position: relative;\n  contain: strict;\n  width: 300px;\n  height: 150px;\n}\n\n/* NOTE: This rule set is our integration surface area with the\n * :focus-visible polyfill.\n *\n * @see https://github.com/WICG/focus-visible/pull/196 */\n:host([data-js-focus-visible]:focus:not(.focus-visible)),\n:host([data-js-focus-visible]) :focus:not(.focus-visible) {\n  outline: none;\n}\n\n.container {\n  position: relative;\n  overflow: hidden;\n}\n\n.userInput {\n  width: 100%;\n  height: 100%;\n  display: none;\n  position: relative;\n}\n\ncanvas {\n  position: absolute;\n  display: none;\n  pointer-events: none;\n  /* NOTE(cdata): Chrome 76 and below apparently have a bug\n   * that causes our canvas not to display pixels unless it is\n   * on its own render layer\n   * @see https://github.com/google/model-viewer/pull/755#issuecomment-536597893\n   */\n  transform: translateZ(0);\n}\n\n.show {\n  display: block;\n}\n\n/* Adapted from HTML5 Boilerplate\n *\n * @see https://github.com/h5bp/html5-boilerplate/blob/ceb4620c78fc82e13534fc44202a3f168754873f/dist/css/main.css#L122-L133 */\n.screen-reader-only {\n  border: 0;\n  left: 0;\n  top: 0;\n  clip: rect(0, 0, 0, 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  white-space: nowrap;\n  width: 1px;\n  pointer-events: none;\n}\n\n.slot {\n  position: absolute;\n  pointer-events: none;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.slot > * {\n  pointer-events: initial;\n}\n\n.annotation-wrapper ::slotted(*) {\n  opacity: var(--max-hotspot-opacity, 1);\n  transition: opacity 0.3s;\n}\n\n.pointer-tumbling .annotation-wrapper ::slotted(*) {\n  pointer-events: none;\n}\n\n.annotation-wrapper ::slotted(*) {\n  pointer-events: initial;\n}\n\n.annotation-wrapper.hide ::slotted(*) {\n  opacity: var(--min-hotspot-opacity, 0.25);\n}\n\n.slot.poster {\n  display: none;\n  background-color: inherit;\n}\n\n.slot.poster.show {\n  display: inherit;\n}\n\n.slot.poster > * {\n  pointer-events: initial;\n}\n\n.slot.poster:not(.show) > * {\n  pointer-events: none;\n}\n\n#default-poster {\n  width: 100%;\n  height: 100%;\n  /* The default poster is a <button> so we need to set display\n   * to prevent it from being affected by text-align: */\n  display: block;\n  position: absolute;\n  border: none;\n  padding: 0;\n  background-size: contain;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-color: #fff0;\n}\n\n#default-progress-bar {\n  display: block;\n  position: relative;\n  width: 100%;\n  height: 100%;\n  pointer-events: none;\n  overflow: hidden;\n}\n\n#default-progress-bar > .bar {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: var(--progress-bar-height, 5px);\n  background-color: var(--progress-bar-color, rgba(0, 0, 0, 0.4));\n  transition: transform 0.09s;\n  transform-origin: top left;\n  transform: scaleX(0);\n  overflow: hidden;\n}\n\n#default-progress-bar > .bar.hide {\n  transition: opacity 0.3s 1s;\n  opacity: 0;\n}\n\n.centered {\n  align-items: center;\n  justify-content: center;\n}\n\n.cover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  pointer-events: none;\n}\n\n.slot.interaction-prompt {\n  display: var(--interaction-prompt-display, flex);\n  overflow: hidden;\n  opacity: 0;\n  will-change: opacity;\n  transition: opacity 0.3s;\n}\n\n.slot.interaction-prompt.visible {\n  opacity: 1;\n}\n\n.animated-container {\n  will-change: transform, opacity;\n  opacity: 0;\n  transition: opacity 0.3s;\n}\n\n.slot.interaction-prompt > * {\n  pointer-events: none;\n}\n\n.slot.ar-button {\n  -moz-user-select: none;\n  -webkit-tap-highlight-color: transparent;\n  user-select: none;\n\n  display: var(--ar-button-display, block);\n}\n\n.slot.ar-button:not(.enabled) {\n  display: none;\n}\n\n.fab {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  width: 40px;\n  height: 40px;\n  cursor: pointer;\n  background-color: #fff;\n  box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.15);\n  border-radius: 100px;\n}\n\n.fab > * {\n  opacity: 0.87;\n}\n\n#default-ar-button {\n  position: absolute;\n  bottom: 16px;\n  right: 16px;\n  transform: scale(var(--ar-button-scale, 1));\n  transform-origin: bottom right;\n}\n\n.slot.pan-target {\n  display: block;\n  position: absolute;\n  width: 0;\n  height: 0;\n  left: 50%;\n  top: 50%;\n  transform: translate3d(-50%, -50%, 0);\n  background-color: transparent;\n  opacity: 0;\n  transition: opacity 0.3s;\n}\n\n#default-pan-target {\n  width: 6px;\n  height: 6px;\n  border-radius: 6px;\n  border: 1px solid white;\n  box-shadow: 0px 0px 2px 1px rgba(0, 0, 0, 0.8);\n}\n\n.slot.default {\n  pointer-events: none;\n}\n\n.slot.progress-bar {\n  pointer-events: none;\n}\n\n.slot.exit-webxr-ar-button {\n  pointer-events: none;\n}\n\n.slot.exit-webxr-ar-button:not(.enabled) {\n  display: none;\n}\n\n#default-exit-webxr-ar-button {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  position: absolute;\n  top: env(safe-area-inset-top, 16px);\n  right: 16px;\n  width: 40px;\n  height: 40px;\n  box-sizing: border-box;\n}\n\n#default-exit-webxr-ar-button > svg {\n  fill: #fff;\n}\n</style>\n<div class=\"container\">\n  <div class=\"userInput\" tabindex=\"0\" role=\"img\"\n      aria-label=\"3D model\">\n      <div class=\"slot canvas\">\n        <slot name=\"canvas\">\n          <canvas></canvas>\n        </slot>\n      </div>\n\n  </div>\n\n  <!-- NOTE(cdata): We need to wrap slots because browsers without ShadowDOM\n        will have their <slot> elements removed by ShadyCSS -->\n  <div class=\"slot poster\">\n    <slot name=\"poster\">\n      <button type=\"button\" id=\"default-poster\" aria-hidden=\"true\" aria-label=\"Loading 3D model\"></button>\n    </slot>\n  </div>\n\n  <div class=\"slot ar-button\">\n    <slot name=\"ar-button\">\n      <a id=\"default-ar-button\" part=\"default-ar-button\" class=\"fab\"\n          tabindex=\"2\"\n          aria-label=\"View in your space\">\n        ${view_in_ar_material_svg_default}\n      </a>\n    </slot>\n  </div>\n\n  <div class=\"slot pan-target\">\n    <slot name=\"pan-target\">\n      <div id=\"default-pan-target\">\n      </div>\n    </slot>\n  </div>\n\n  <div class=\"slot interaction-prompt cover centered\">\n    <div id=\"prompt\" class=\"animated-container\">\n      <slot name=\"interaction-prompt\" aria-hidden=\"true\">\n        ${controls_svg_default}\n      </slot>\n    </div>\n  </div>\n\n  <div id=\"finger0\" class=\"animated-container cover\">\n    <slot name=\"finger0\" aria-hidden=\"true\">\n    </slot>\n  </div>\n  <div id=\"finger1\" class=\"animated-container cover\">\n    <slot name=\"finger1\" aria-hidden=\"true\">\n    </slot>\n  </div>\n\n  <div class=\"slot default\">\n    <slot></slot>\n\n    <div class=\"slot progress-bar\">\n      <slot name=\"progress-bar\">\n        <div id=\"default-progress-bar\" aria-hidden=\"true\">\n          <div class=\"bar\" part=\"default-progress-bar\"></div>\n        </div>\n      </slot>\n    </div>\n\n    <div class=\"slot exit-webxr-ar-button\">\n      <slot name=\"exit-webxr-ar-button\">\n        <a id=\"default-exit-webxr-ar-button\" part=\"default-exit-webxr-ar-button\"\n            tabindex=\"3\"\n            aria-label=\"Exit AR\"\n            aria-hidden=\"true\">\n          ${close_material_svg_default}\n        </a>\n      </slot>\n    </div>\n  </div>\n</div>\n<div class=\"screen-reader-only\" role=\"region\" aria-label=\"Live announcements\">\n  <span id=\"status\" role=\"status\"></span>\n</div>`;\nvar makeTemplate = (shadowRoot) => {\n  render(templateResult, shadowRoot);\n};\n\n// node_modules/three/examples/jsm/loaders/DRACOLoader.js\nvar _taskCache = /* @__PURE__ */ new WeakMap();\nvar DRACOLoader = class extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.decoderPath = \"\";\n    this.decoderConfig = {};\n    this.decoderBinary = null;\n    this.decoderPending = null;\n    this.workerLimit = 4;\n    this.workerPool = [];\n    this.workerNextTaskID = 1;\n    this.workerSourceURL = \"\";\n    this.defaultAttributeIDs = {\n      position: \"POSITION\",\n      normal: \"NORMAL\",\n      color: \"COLOR\",\n      uv: \"TEX_COORD\"\n    };\n    this.defaultAttributeTypes = {\n      position: \"Float32Array\",\n      normal: \"Float32Array\",\n      color: \"Float32Array\",\n      uv: \"Float32Array\"\n    };\n  }\n  setDecoderPath(path) {\n    this.decoderPath = path;\n    return this;\n  }\n  setDecoderConfig(config) {\n    this.decoderConfig = config;\n    return this;\n  }\n  setWorkerLimit(workerLimit) {\n    this.workerLimit = workerLimit;\n    return this;\n  }\n  load(url, onLoad, onProgress, onError) {\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, (buffer) => {\n      this.decodeDracoFile(buffer, onLoad).catch(onError);\n    }, onProgress, onError);\n  }\n  decodeDracoFile(buffer, callback, attributeIDs, attributeTypes) {\n    const taskConfig = {\n      attributeIDs: attributeIDs || this.defaultAttributeIDs,\n      attributeTypes: attributeTypes || this.defaultAttributeTypes,\n      useUniqueIDs: !!attributeIDs\n    };\n    return this.decodeGeometry(buffer, taskConfig).then(callback);\n  }\n  decodeGeometry(buffer, taskConfig) {\n    const taskKey = JSON.stringify(taskConfig);\n    if (_taskCache.has(buffer)) {\n      const cachedTask = _taskCache.get(buffer);\n      if (cachedTask.key === taskKey) {\n        return cachedTask.promise;\n      } else if (buffer.byteLength === 0) {\n        throw new Error(\n          \"THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.\"\n        );\n      }\n    }\n    let worker;\n    const taskID = this.workerNextTaskID++;\n    const taskCost = buffer.byteLength;\n    const geometryPending = this._getWorker(taskID, taskCost).then((_worker) => {\n      worker = _worker;\n      return new Promise((resolve, reject) => {\n        worker._callbacks[taskID] = { resolve, reject };\n        worker.postMessage({ type: \"decode\", id: taskID, taskConfig, buffer }, [buffer]);\n      });\n    }).then((message) => this._createGeometry(message.geometry));\n    geometryPending.catch(() => true).then(() => {\n      if (worker && taskID) {\n        this._releaseTask(worker, taskID);\n      }\n    });\n    _taskCache.set(buffer, {\n      key: taskKey,\n      promise: geometryPending\n    });\n    return geometryPending;\n  }\n  _createGeometry(geometryData) {\n    const geometry = new BufferGeometry();\n    if (geometryData.index) {\n      geometry.setIndex(new BufferAttribute(geometryData.index.array, 1));\n    }\n    for (let i = 0; i < geometryData.attributes.length; i++) {\n      const attribute = geometryData.attributes[i];\n      const name = attribute.name;\n      const array = attribute.array;\n      const itemSize = attribute.itemSize;\n      geometry.setAttribute(name, new BufferAttribute(array, itemSize));\n    }\n    return geometry;\n  }\n  _loadLibrary(url, responseType) {\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.decoderPath);\n    loader.setResponseType(responseType);\n    loader.setWithCredentials(this.withCredentials);\n    return new Promise((resolve, reject) => {\n      loader.load(url, resolve, void 0, reject);\n    });\n  }\n  preload() {\n    this._initDecoder();\n    return this;\n  }\n  _initDecoder() {\n    if (this.decoderPending)\n      return this.decoderPending;\n    const useJS = typeof WebAssembly !== \"object\" || this.decoderConfig.type === \"js\";\n    const librariesPending = [];\n    if (useJS) {\n      librariesPending.push(this._loadLibrary(\"draco_decoder.js\", \"text\"));\n    } else {\n      librariesPending.push(this._loadLibrary(\"draco_wasm_wrapper.js\", \"text\"));\n      librariesPending.push(this._loadLibrary(\"draco_decoder.wasm\", \"arraybuffer\"));\n    }\n    this.decoderPending = Promise.all(librariesPending).then((libraries) => {\n      const jsContent = libraries[0];\n      if (!useJS) {\n        this.decoderConfig.wasmBinary = libraries[1];\n      }\n      const fn = DRACOWorker.toString();\n      const body = [\n        \"/* draco decoder */\",\n        jsContent,\n        \"\",\n        \"/* worker */\",\n        fn.substring(fn.indexOf(\"{\") + 1, fn.lastIndexOf(\"}\"))\n      ].join(\"\\n\");\n      this.workerSourceURL = URL.createObjectURL(new Blob([body]));\n    });\n    return this.decoderPending;\n  }\n  _getWorker(taskID, taskCost) {\n    return this._initDecoder().then(() => {\n      if (this.workerPool.length < this.workerLimit) {\n        const worker2 = new Worker(this.workerSourceURL);\n        worker2._callbacks = {};\n        worker2._taskCosts = {};\n        worker2._taskLoad = 0;\n        worker2.postMessage({ type: \"init\", decoderConfig: this.decoderConfig });\n        worker2.onmessage = function(e) {\n          const message = e.data;\n          switch (message.type) {\n            case \"decode\":\n              worker2._callbacks[message.id].resolve(message);\n              break;\n            case \"error\":\n              worker2._callbacks[message.id].reject(message);\n              break;\n            default:\n              console.error('THREE.DRACOLoader: Unexpected message, \"' + message.type + '\"');\n          }\n        };\n        this.workerPool.push(worker2);\n      } else {\n        this.workerPool.sort(function(a, b) {\n          return a._taskLoad > b._taskLoad ? -1 : 1;\n        });\n      }\n      const worker = this.workerPool[this.workerPool.length - 1];\n      worker._taskCosts[taskID] = taskCost;\n      worker._taskLoad += taskCost;\n      return worker;\n    });\n  }\n  _releaseTask(worker, taskID) {\n    worker._taskLoad -= worker._taskCosts[taskID];\n    delete worker._callbacks[taskID];\n    delete worker._taskCosts[taskID];\n  }\n  debug() {\n    console.log(\"Task load: \", this.workerPool.map((worker) => worker._taskLoad));\n  }\n  dispose() {\n    for (let i = 0; i < this.workerPool.length; ++i) {\n      this.workerPool[i].terminate();\n    }\n    this.workerPool.length = 0;\n    return this;\n  }\n};\nfunction DRACOWorker() {\n  let decoderConfig;\n  let decoderPending;\n  onmessage = function(e) {\n    const message = e.data;\n    switch (message.type) {\n      case \"init\":\n        decoderConfig = message.decoderConfig;\n        decoderPending = new Promise(function(resolve) {\n          decoderConfig.onModuleLoaded = function(draco) {\n            resolve({ draco });\n          };\n          DracoDecoderModule(decoderConfig);\n        });\n        break;\n      case \"decode\":\n        const buffer = message.buffer;\n        const taskConfig = message.taskConfig;\n        decoderPending.then((module) => {\n          const draco = module.draco;\n          const decoder = new draco.Decoder();\n          const decoderBuffer = new draco.DecoderBuffer();\n          decoderBuffer.Init(new Int8Array(buffer), buffer.byteLength);\n          try {\n            const geometry = decodeGeometry(draco, decoder, decoderBuffer, taskConfig);\n            const buffers = geometry.attributes.map((attr) => attr.array.buffer);\n            if (geometry.index)\n              buffers.push(geometry.index.array.buffer);\n            self.postMessage({ type: \"decode\", id: message.id, geometry }, buffers);\n          } catch (error) {\n            console.error(error);\n            self.postMessage({ type: \"error\", id: message.id, error: error.message });\n          } finally {\n            draco.destroy(decoderBuffer);\n            draco.destroy(decoder);\n          }\n        });\n        break;\n    }\n  };\n  function decodeGeometry(draco, decoder, decoderBuffer, taskConfig) {\n    const attributeIDs = taskConfig.attributeIDs;\n    const attributeTypes = taskConfig.attributeTypes;\n    let dracoGeometry;\n    let decodingStatus;\n    const geometryType = decoder.GetEncodedGeometryType(decoderBuffer);\n    if (geometryType === draco.TRIANGULAR_MESH) {\n      dracoGeometry = new draco.Mesh();\n      decodingStatus = decoder.DecodeBufferToMesh(decoderBuffer, dracoGeometry);\n    } else if (geometryType === draco.POINT_CLOUD) {\n      dracoGeometry = new draco.PointCloud();\n      decodingStatus = decoder.DecodeBufferToPointCloud(decoderBuffer, dracoGeometry);\n    } else {\n      throw new Error(\"THREE.DRACOLoader: Unexpected geometry type.\");\n    }\n    if (!decodingStatus.ok() || dracoGeometry.ptr === 0) {\n      throw new Error(\"THREE.DRACOLoader: Decoding failed: \" + decodingStatus.error_msg());\n    }\n    const geometry = { index: null, attributes: [] };\n    for (const attributeName in attributeIDs) {\n      const attributeType = self[attributeTypes[attributeName]];\n      let attribute;\n      let attributeID;\n      if (taskConfig.useUniqueIDs) {\n        attributeID = attributeIDs[attributeName];\n        attribute = decoder.GetAttributeByUniqueId(dracoGeometry, attributeID);\n      } else {\n        attributeID = decoder.GetAttributeId(dracoGeometry, draco[attributeIDs[attributeName]]);\n        if (attributeID === -1)\n          continue;\n        attribute = decoder.GetAttribute(dracoGeometry, attributeID);\n      }\n      geometry.attributes.push(decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute));\n    }\n    if (geometryType === draco.TRIANGULAR_MESH) {\n      geometry.index = decodeIndex(draco, decoder, dracoGeometry);\n    }\n    draco.destroy(dracoGeometry);\n    return geometry;\n  }\n  function decodeIndex(draco, decoder, dracoGeometry) {\n    const numFaces = dracoGeometry.num_faces();\n    const numIndices = numFaces * 3;\n    const byteLength = numIndices * 4;\n    const ptr = draco._malloc(byteLength);\n    decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n    const index = new Uint32Array(draco.HEAPF32.buffer, ptr, numIndices).slice();\n    draco._free(ptr);\n    return { array: index, itemSize: 1 };\n  }\n  function decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute) {\n    const numComponents = attribute.num_components();\n    const numPoints = dracoGeometry.num_points();\n    const numValues = numPoints * numComponents;\n    const byteLength = numValues * attributeType.BYTES_PER_ELEMENT;\n    const dataType = getDracoDataType(draco, attributeType);\n    const ptr = draco._malloc(byteLength);\n    decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, attribute, dataType, byteLength, ptr);\n    const array = new attributeType(draco.HEAPF32.buffer, ptr, numValues).slice();\n    draco._free(ptr);\n    return {\n      name: attributeName,\n      array,\n      itemSize: numComponents\n    };\n  }\n  function getDracoDataType(draco, attributeType) {\n    switch (attributeType) {\n      case Float32Array:\n        return draco.DT_FLOAT32;\n      case Int8Array:\n        return draco.DT_INT8;\n      case Int16Array:\n        return draco.DT_INT16;\n      case Int32Array:\n        return draco.DT_INT32;\n      case Uint8Array:\n        return draco.DT_UINT8;\n      case Uint16Array:\n        return draco.DT_UINT16;\n      case Uint32Array:\n        return draco.DT_UINT32;\n    }\n  }\n}\n\n// node_modules/three/examples/jsm/loaders/GLTFLoader.js\nvar GLTFLoader = class extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.dracoLoader = null;\n    this.ktx2Loader = null;\n    this.meshoptDecoder = null;\n    this.pluginCallbacks = [];\n    this.register(function(parser) {\n      return new GLTFMaterialsClearcoatExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFTextureBasisUExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFTextureWebPExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsSheenExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsTransmissionExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsVolumeExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsIorExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsEmissiveStrengthExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsSpecularExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsIridescenceExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFLightsExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMeshoptCompression(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMeshGpuInstancing(parser);\n    });\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    let resourcePath;\n    if (this.resourcePath !== \"\") {\n      resourcePath = this.resourcePath;\n    } else if (this.path !== \"\") {\n      resourcePath = this.path;\n    } else {\n      resourcePath = LoaderUtils.extractUrlBase(url);\n    }\n    this.manager.itemStart(url);\n    const _onError = function(e) {\n      if (onError) {\n        onError(e);\n      } else {\n        console.error(e);\n      }\n      scope.manager.itemError(url);\n      scope.manager.itemEnd(url);\n    };\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, function(data) {\n      try {\n        scope.parse(data, resourcePath, function(gltf) {\n          onLoad(gltf);\n          scope.manager.itemEnd(url);\n        }, _onError);\n      } catch (e) {\n        _onError(e);\n      }\n    }, onProgress, _onError);\n  }\n  setDRACOLoader(dracoLoader2) {\n    this.dracoLoader = dracoLoader2;\n    return this;\n  }\n  setDDSLoader() {\n    throw new Error(\n      'THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".'\n    );\n  }\n  setKTX2Loader(ktx2Loader2) {\n    this.ktx2Loader = ktx2Loader2;\n    return this;\n  }\n  setMeshoptDecoder(meshoptDecoder2) {\n    this.meshoptDecoder = meshoptDecoder2;\n    return this;\n  }\n  register(callback) {\n    if (this.pluginCallbacks.indexOf(callback) === -1) {\n      this.pluginCallbacks.push(callback);\n    }\n    return this;\n  }\n  unregister(callback) {\n    if (this.pluginCallbacks.indexOf(callback) !== -1) {\n      this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\n    }\n    return this;\n  }\n  parse(data, path, onLoad, onError) {\n    let json;\n    const extensions = {};\n    const plugins = {};\n    if (typeof data === \"string\") {\n      json = JSON.parse(data);\n    } else if (data instanceof ArrayBuffer) {\n      const magic = LoaderUtils.decodeText(new Uint8Array(data, 0, 4));\n      if (magic === BINARY_EXTENSION_HEADER_MAGIC) {\n        try {\n          extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\n        } catch (error) {\n          if (onError)\n            onError(error);\n          return;\n        }\n        json = JSON.parse(extensions[EXTENSIONS.KHR_BINARY_GLTF].content);\n      } else {\n        json = JSON.parse(LoaderUtils.decodeText(new Uint8Array(data)));\n      }\n    } else {\n      json = data;\n    }\n    if (json.asset === void 0 || json.asset.version[0] < 2) {\n      if (onError)\n        onError(new Error(\"THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.\"));\n      return;\n    }\n    const parser = new GLTFParser(json, {\n      path: path || this.resourcePath || \"\",\n      crossOrigin: this.crossOrigin,\n      requestHeader: this.requestHeader,\n      manager: this.manager,\n      ktx2Loader: this.ktx2Loader,\n      meshoptDecoder: this.meshoptDecoder\n    });\n    parser.fileLoader.setRequestHeader(this.requestHeader);\n    for (let i = 0; i < this.pluginCallbacks.length; i++) {\n      const plugin = this.pluginCallbacks[i](parser);\n      plugins[plugin.name] = plugin;\n      extensions[plugin.name] = true;\n    }\n    if (json.extensionsUsed) {\n      for (let i = 0; i < json.extensionsUsed.length; ++i) {\n        const extensionName = json.extensionsUsed[i];\n        const extensionsRequired = json.extensionsRequired || [];\n        switch (extensionName) {\n          case EXTENSIONS.KHR_MATERIALS_UNLIT:\n            extensions[extensionName] = new GLTFMaterialsUnlitExtension();\n            break;\n          case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n            extensions[extensionName] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n            break;\n          case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n            extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\n            break;\n          case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n            extensions[extensionName] = new GLTFTextureTransformExtension();\n            break;\n          case EXTENSIONS.KHR_MESH_QUANTIZATION:\n            extensions[extensionName] = new GLTFMeshQuantizationExtension();\n            break;\n          default:\n            if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === void 0) {\n              console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n            }\n        }\n      }\n    }\n    parser.setExtensions(extensions);\n    parser.setPlugins(plugins);\n    parser.parse(onLoad, onError);\n  }\n  parseAsync(data, path) {\n    const scope = this;\n    return new Promise(function(resolve, reject) {\n      scope.parse(data, path, resolve, reject);\n    });\n  }\n};\nfunction GLTFRegistry() {\n  let objects = {};\n  return {\n    get: function(key) {\n      return objects[key];\n    },\n    add: function(key, object) {\n      objects[key] = object;\n    },\n    remove: function(key) {\n      delete objects[key];\n    },\n    removeAll: function() {\n      objects = {};\n    }\n  };\n}\nvar EXTENSIONS = {\n  KHR_BINARY_GLTF: \"KHR_binary_glTF\",\n  KHR_DRACO_MESH_COMPRESSION: \"KHR_draco_mesh_compression\",\n  KHR_LIGHTS_PUNCTUAL: \"KHR_lights_punctual\",\n  KHR_MATERIALS_CLEARCOAT: \"KHR_materials_clearcoat\",\n  KHR_MATERIALS_IOR: \"KHR_materials_ior\",\n  KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: \"KHR_materials_pbrSpecularGlossiness\",\n  KHR_MATERIALS_SHEEN: \"KHR_materials_sheen\",\n  KHR_MATERIALS_SPECULAR: \"KHR_materials_specular\",\n  KHR_MATERIALS_TRANSMISSION: \"KHR_materials_transmission\",\n  KHR_MATERIALS_IRIDESCENCE: \"KHR_materials_iridescence\",\n  KHR_MATERIALS_UNLIT: \"KHR_materials_unlit\",\n  KHR_MATERIALS_VOLUME: \"KHR_materials_volume\",\n  KHR_TEXTURE_BASISU: \"KHR_texture_basisu\",\n  KHR_TEXTURE_TRANSFORM: \"KHR_texture_transform\",\n  KHR_MESH_QUANTIZATION: \"KHR_mesh_quantization\",\n  KHR_MATERIALS_EMISSIVE_STRENGTH: \"KHR_materials_emissive_strength\",\n  EXT_TEXTURE_WEBP: \"EXT_texture_webp\",\n  EXT_MESHOPT_COMPRESSION: \"EXT_meshopt_compression\",\n  EXT_MESH_GPU_INSTANCING: \"EXT_mesh_gpu_instancing\"\n};\nvar GLTFLightsExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n    this.cache = { refs: {}, uses: {} };\n  }\n  _markDefs() {\n    const parser = this.parser;\n    const nodeDefs = this.parser.json.nodes || [];\n    for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n      const nodeDef = nodeDefs[nodeIndex];\n      if (nodeDef.extensions && nodeDef.extensions[this.name] && nodeDef.extensions[this.name].light !== void 0) {\n        parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light);\n      }\n    }\n  }\n  _loadLight(lightIndex) {\n    const parser = this.parser;\n    const cacheKey = \"light:\" + lightIndex;\n    let dependency = parser.cache.get(cacheKey);\n    if (dependency)\n      return dependency;\n    const json = parser.json;\n    const extensions = json.extensions && json.extensions[this.name] || {};\n    const lightDefs = extensions.lights || [];\n    const lightDef = lightDefs[lightIndex];\n    let lightNode;\n    const color = new Color(16777215);\n    if (lightDef.color !== void 0)\n      color.fromArray(lightDef.color);\n    const range = lightDef.range !== void 0 ? lightDef.range : 0;\n    switch (lightDef.type) {\n      case \"directional\":\n        lightNode = new DirectionalLight(color);\n        lightNode.target.position.set(0, 0, -1);\n        lightNode.add(lightNode.target);\n        break;\n      case \"point\":\n        lightNode = new PointLight(color);\n        lightNode.distance = range;\n        break;\n      case \"spot\":\n        lightNode = new SpotLight(color);\n        lightNode.distance = range;\n        lightDef.spot = lightDef.spot || {};\n        lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== void 0 ? lightDef.spot.innerConeAngle : 0;\n        lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== void 0 ? lightDef.spot.outerConeAngle : Math.PI / 4;\n        lightNode.angle = lightDef.spot.outerConeAngle;\n        lightNode.penumbra = 1 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n        lightNode.target.position.set(0, 0, -1);\n        lightNode.add(lightNode.target);\n        break;\n      default:\n        throw new Error(\"THREE.GLTFLoader: Unexpected light type: \" + lightDef.type);\n    }\n    lightNode.position.set(0, 0, 0);\n    lightNode.decay = 2;\n    if (lightDef.intensity !== void 0)\n      lightNode.intensity = lightDef.intensity;\n    lightNode.name = parser.createUniqueName(lightDef.name || \"light_\" + lightIndex);\n    dependency = Promise.resolve(lightNode);\n    parser.cache.add(cacheKey, dependency);\n    return dependency;\n  }\n  createNodeAttachment(nodeIndex) {\n    const self2 = this;\n    const parser = this.parser;\n    const json = parser.json;\n    const nodeDef = json.nodes[nodeIndex];\n    const lightDef = nodeDef.extensions && nodeDef.extensions[this.name] || {};\n    const lightIndex = lightDef.light;\n    if (lightIndex === void 0)\n      return null;\n    return this._loadLight(lightIndex).then(function(light) {\n      return parser._getNodeRef(self2.cache, lightIndex, light);\n    });\n  }\n};\nvar GLTFMaterialsUnlitExtension = class {\n  constructor() {\n    this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n  }\n  getMaterialType() {\n    return MeshBasicMaterial;\n  }\n  extendParams(materialParams, materialDef, parser) {\n    const pending = [];\n    materialParams.color = new Color(1, 1, 1);\n    materialParams.opacity = 1;\n    const metallicRoughness = materialDef.pbrMetallicRoughness;\n    if (metallicRoughness) {\n      if (Array.isArray(metallicRoughness.baseColorFactor)) {\n        const array = metallicRoughness.baseColorFactor;\n        materialParams.color.fromArray(array);\n        materialParams.opacity = array[3];\n      }\n      if (metallicRoughness.baseColorTexture !== void 0) {\n        pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture, sRGBEncoding));\n      }\n    }\n    return Promise.all(pending);\n  }\n};\nvar GLTFMaterialsEmissiveStrengthExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const emissiveStrength = materialDef.extensions[this.name].emissiveStrength;\n    if (emissiveStrength !== void 0) {\n      materialParams.emissiveIntensity = emissiveStrength;\n    }\n    return Promise.resolve();\n  }\n};\nvar GLTFMaterialsClearcoatExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    if (extension.clearcoatFactor !== void 0) {\n      materialParams.clearcoat = extension.clearcoatFactor;\n    }\n    if (extension.clearcoatTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"clearcoatMap\", extension.clearcoatTexture));\n    }\n    if (extension.clearcoatRoughnessFactor !== void 0) {\n      materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n    }\n    if (extension.clearcoatRoughnessTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"clearcoatRoughnessMap\", extension.clearcoatRoughnessTexture));\n    }\n    if (extension.clearcoatNormalTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"clearcoatNormalMap\", extension.clearcoatNormalTexture));\n      if (extension.clearcoatNormalTexture.scale !== void 0) {\n        const scale = extension.clearcoatNormalTexture.scale;\n        materialParams.clearcoatNormalScale = new Vector2(scale, scale);\n      }\n    }\n    return Promise.all(pending);\n  }\n};\nvar GLTFMaterialsIridescenceExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    if (extension.iridescenceFactor !== void 0) {\n      materialParams.iridescence = extension.iridescenceFactor;\n    }\n    if (extension.iridescenceTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"iridescenceMap\", extension.iridescenceTexture));\n    }\n    if (extension.iridescenceIor !== void 0) {\n      materialParams.iridescenceIOR = extension.iridescenceIor;\n    }\n    if (materialParams.iridescenceThicknessRange === void 0) {\n      materialParams.iridescenceThicknessRange = [100, 400];\n    }\n    if (extension.iridescenceThicknessMinimum !== void 0) {\n      materialParams.iridescenceThicknessRange[0] = extension.iridescenceThicknessMinimum;\n    }\n    if (extension.iridescenceThicknessMaximum !== void 0) {\n      materialParams.iridescenceThicknessRange[1] = extension.iridescenceThicknessMaximum;\n    }\n    if (extension.iridescenceThicknessTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"iridescenceThicknessMap\", extension.iridescenceThicknessTexture));\n    }\n    return Promise.all(pending);\n  }\n};\nvar GLTFMaterialsSheenExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    materialParams.sheenColor = new Color(0, 0, 0);\n    materialParams.sheenRoughness = 0;\n    materialParams.sheen = 1;\n    const extension = materialDef.extensions[this.name];\n    if (extension.sheenColorFactor !== void 0) {\n      materialParams.sheenColor.fromArray(extension.sheenColorFactor);\n    }\n    if (extension.sheenRoughnessFactor !== void 0) {\n      materialParams.sheenRoughness = extension.sheenRoughnessFactor;\n    }\n    if (extension.sheenColorTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"sheenColorMap\", extension.sheenColorTexture, sRGBEncoding));\n    }\n    if (extension.sheenRoughnessTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"sheenRoughnessMap\", extension.sheenRoughnessTexture));\n    }\n    return Promise.all(pending);\n  }\n};\nvar GLTFMaterialsTransmissionExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    if (extension.transmissionFactor !== void 0) {\n      materialParams.transmission = extension.transmissionFactor;\n    }\n    if (extension.transmissionTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"transmissionMap\", extension.transmissionTexture));\n    }\n    return Promise.all(pending);\n  }\n};\nvar GLTFMaterialsVolumeExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    materialParams.thickness = extension.thicknessFactor !== void 0 ? extension.thicknessFactor : 0;\n    if (extension.thicknessTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"thicknessMap\", extension.thicknessTexture));\n    }\n    materialParams.attenuationDistance = extension.attenuationDistance || Infinity;\n    const colorArray = extension.attenuationColor || [1, 1, 1];\n    materialParams.attenuationColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n    return Promise.all(pending);\n  }\n};\nvar GLTFMaterialsIorExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_IOR;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const extension = materialDef.extensions[this.name];\n    materialParams.ior = extension.ior !== void 0 ? extension.ior : 1.5;\n    return Promise.resolve();\n  }\n};\nvar GLTFMaterialsSpecularExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    materialParams.specularIntensity = extension.specularFactor !== void 0 ? extension.specularFactor : 1;\n    if (extension.specularTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"specularIntensityMap\", extension.specularTexture));\n    }\n    const colorArray = extension.specularColorFactor || [1, 1, 1];\n    materialParams.specularColor = new Color(colorArray[0], colorArray[1], colorArray[2]);\n    if (extension.specularColorTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"specularColorMap\", extension.specularColorTexture, sRGBEncoding));\n    }\n    return Promise.all(pending);\n  }\n};\nvar GLTFTextureBasisUExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n  }\n  loadTexture(textureIndex) {\n    const parser = this.parser;\n    const json = parser.json;\n    const textureDef = json.textures[textureIndex];\n    if (!textureDef.extensions || !textureDef.extensions[this.name]) {\n      return null;\n    }\n    const extension = textureDef.extensions[this.name];\n    const loader = parser.options.ktx2Loader;\n    if (!loader) {\n      if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n        throw new Error(\"THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures\");\n      } else {\n        return null;\n      }\n    }\n    return parser.loadTextureImage(textureIndex, extension.source, loader);\n  }\n};\nvar GLTFTextureWebPExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n    this.isSupported = null;\n  }\n  loadTexture(textureIndex) {\n    const name = this.name;\n    const parser = this.parser;\n    const json = parser.json;\n    const textureDef = json.textures[textureIndex];\n    if (!textureDef.extensions || !textureDef.extensions[name]) {\n      return null;\n    }\n    const extension = textureDef.extensions[name];\n    const source = json.images[extension.source];\n    let loader = parser.textureLoader;\n    if (source.uri) {\n      const handler = parser.options.manager.getHandler(source.uri);\n      if (handler !== null)\n        loader = handler;\n    }\n    return this.detectSupport().then(function(isSupported) {\n      if (isSupported)\n        return parser.loadTextureImage(textureIndex, extension.source, loader);\n      if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {\n        throw new Error(\"THREE.GLTFLoader: WebP required by asset but unsupported.\");\n      }\n      return parser.loadTexture(textureIndex);\n    });\n  }\n  detectSupport() {\n    if (!this.isSupported) {\n      this.isSupported = new Promise(function(resolve) {\n        const image = new Image();\n        image.src = \"data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA\";\n        image.onload = image.onerror = function() {\n          resolve(image.height === 1);\n        };\n      });\n    }\n    return this.isSupported;\n  }\n};\nvar GLTFMeshoptCompression = class {\n  constructor(parser) {\n    this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n    this.parser = parser;\n  }\n  loadBufferView(index) {\n    const json = this.parser.json;\n    const bufferView = json.bufferViews[index];\n    if (bufferView.extensions && bufferView.extensions[this.name]) {\n      const extensionDef = bufferView.extensions[this.name];\n      const buffer = this.parser.getDependency(\"buffer\", extensionDef.buffer);\n      const decoder = this.parser.options.meshoptDecoder;\n      if (!decoder || !decoder.supported) {\n        if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n          throw new Error(\"THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files\");\n        } else {\n          return null;\n        }\n      }\n      return buffer.then(function(res) {\n        const byteOffset = extensionDef.byteOffset || 0;\n        const byteLength = extensionDef.byteLength || 0;\n        const count = extensionDef.count;\n        const stride = extensionDef.byteStride;\n        const source = new Uint8Array(res, byteOffset, byteLength);\n        if (decoder.decodeGltfBufferAsync) {\n          return decoder.decodeGltfBufferAsync(count, stride, source, extensionDef.mode, extensionDef.filter).then(function(res2) {\n            return res2.buffer;\n          });\n        } else {\n          return decoder.ready.then(function() {\n            const result = new ArrayBuffer(count * stride);\n            decoder.decodeGltfBuffer(new Uint8Array(result), count, stride, source, extensionDef.mode, extensionDef.filter);\n            return result;\n          });\n        }\n      });\n    } else {\n      return null;\n    }\n  }\n};\nvar GLTFMeshGpuInstancing = class {\n  constructor(parser) {\n    this.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING;\n    this.parser = parser;\n  }\n  createNodeMesh(nodeIndex) {\n    const json = this.parser.json;\n    const nodeDef = json.nodes[nodeIndex];\n    if (!nodeDef.extensions || !nodeDef.extensions[this.name] || nodeDef.mesh === void 0) {\n      return null;\n    }\n    const meshDef = json.meshes[nodeDef.mesh];\n    for (const primitive of meshDef.primitives) {\n      if (primitive.mode !== WEBGL_CONSTANTS.TRIANGLES && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN && primitive.mode !== void 0) {\n        return null;\n      }\n    }\n    const extensionDef = nodeDef.extensions[this.name];\n    const attributesDef = extensionDef.attributes;\n    const pending = [];\n    const attributes = {};\n    for (const key in attributesDef) {\n      pending.push(this.parser.getDependency(\"accessor\", attributesDef[key]).then((accessor) => {\n        attributes[key] = accessor;\n        return attributes[key];\n      }));\n    }\n    if (pending.length < 1) {\n      return null;\n    }\n    pending.push(this.parser.createNodeMesh(nodeIndex));\n    return Promise.all(pending).then((results) => {\n      const nodeObject = results.pop();\n      const meshes = nodeObject.isGroup ? nodeObject.children : [nodeObject];\n      const count = results[0].count;\n      const instancedMeshes = [];\n      for (const mesh of meshes) {\n        const m = new Matrix4();\n        const p2 = new Vector3();\n        const q = new Quaternion();\n        const s = new Vector3(1, 1, 1);\n        const instancedMesh = new InstancedMesh(mesh.geometry, mesh.material, count);\n        for (let i = 0; i < count; i++) {\n          if (attributes.TRANSLATION) {\n            p2.fromBufferAttribute(attributes.TRANSLATION, i);\n          }\n          if (attributes.ROTATION) {\n            q.fromBufferAttribute(attributes.ROTATION, i);\n          }\n          if (attributes.SCALE) {\n            s.fromBufferAttribute(attributes.SCALE, i);\n          }\n          instancedMesh.setMatrixAt(i, m.compose(p2, q, s));\n        }\n        for (const attributeName in attributes) {\n          if (attributeName !== \"TRANSLATION\" && attributeName !== \"ROTATION\" && attributeName !== \"SCALE\") {\n            mesh.geometry.setAttribute(attributeName, attributes[attributeName]);\n          }\n        }\n        Object3D.prototype.copy.call(instancedMesh, mesh);\n        instancedMesh.frustumCulled = false;\n        this.parser.assignFinalMaterial(instancedMesh);\n        instancedMeshes.push(instancedMesh);\n      }\n      if (nodeObject.isGroup) {\n        nodeObject.clear();\n        nodeObject.add(...instancedMeshes);\n        return nodeObject;\n      }\n      return instancedMeshes[0];\n    });\n  }\n};\nvar BINARY_EXTENSION_HEADER_MAGIC = \"glTF\";\nvar BINARY_EXTENSION_HEADER_LENGTH = 12;\nvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 1313821514, BIN: 5130562 };\nvar GLTFBinaryExtension = class {\n  constructor(data) {\n    this.name = EXTENSIONS.KHR_BINARY_GLTF;\n    this.content = null;\n    this.body = null;\n    const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n    this.header = {\n      magic: LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\n      version: headerView.getUint32(4, true),\n      length: headerView.getUint32(8, true)\n    };\n    if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n      throw new Error(\"THREE.GLTFLoader: Unsupported glTF-Binary header.\");\n    } else if (this.header.version < 2) {\n      throw new Error(\"THREE.GLTFLoader: Legacy binary file detected.\");\n    }\n    const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n    const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\n    let chunkIndex = 0;\n    while (chunkIndex < chunkContentsLength) {\n      const chunkLength = chunkView.getUint32(chunkIndex, true);\n      chunkIndex += 4;\n      const chunkType = chunkView.getUint32(chunkIndex, true);\n      chunkIndex += 4;\n      if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\n        const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\n        this.content = LoaderUtils.decodeText(contentArray);\n      } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\n        const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n        this.body = data.slice(byteOffset, byteOffset + chunkLength);\n      }\n      chunkIndex += chunkLength;\n    }\n    if (this.content === null) {\n      throw new Error(\"THREE.GLTFLoader: JSON content not found.\");\n    }\n  }\n};\nvar GLTFDracoMeshCompressionExtension = class {\n  constructor(json, dracoLoader2) {\n    if (!dracoLoader2) {\n      throw new Error(\"THREE.GLTFLoader: No DRACOLoader instance provided.\");\n    }\n    this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n    this.json = json;\n    this.dracoLoader = dracoLoader2;\n    this.dracoLoader.preload();\n  }\n  decodePrimitive(primitive, parser) {\n    const json = this.json;\n    const dracoLoader2 = this.dracoLoader;\n    const bufferViewIndex = primitive.extensions[this.name].bufferView;\n    const gltfAttributeMap = primitive.extensions[this.name].attributes;\n    const threeAttributeMap = {};\n    const attributeNormalizedMap = {};\n    const attributeTypeMap = {};\n    for (const attributeName in gltfAttributeMap) {\n      const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n      threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\n    }\n    for (const attributeName in primitive.attributes) {\n      const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n      if (gltfAttributeMap[attributeName] !== void 0) {\n        const accessorDef = json.accessors[primitive.attributes[attributeName]];\n        const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n        attributeTypeMap[threeAttributeName] = componentType.name;\n        attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true;\n      }\n    }\n    return parser.getDependency(\"bufferView\", bufferViewIndex).then(function(bufferView) {\n      return new Promise(function(resolve) {\n        dracoLoader2.decodeDracoFile(bufferView, function(geometry) {\n          for (const attributeName in geometry.attributes) {\n            const attribute = geometry.attributes[attributeName];\n            const normalized = attributeNormalizedMap[attributeName];\n            if (normalized !== void 0)\n              attribute.normalized = normalized;\n          }\n          resolve(geometry);\n        }, threeAttributeMap, attributeTypeMap);\n      });\n    });\n  }\n};\nvar GLTFTextureTransformExtension = class {\n  constructor() {\n    this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n  }\n  extendTexture(texture, transform) {\n    if (transform.texCoord !== void 0) {\n      console.warn('THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.');\n    }\n    if (transform.offset === void 0 && transform.rotation === void 0 && transform.scale === void 0) {\n      return texture;\n    }\n    texture = texture.clone();\n    if (transform.offset !== void 0) {\n      texture.offset.fromArray(transform.offset);\n    }\n    if (transform.rotation !== void 0) {\n      texture.rotation = transform.rotation;\n    }\n    if (transform.scale !== void 0) {\n      texture.repeat.fromArray(transform.scale);\n    }\n    texture.needsUpdate = true;\n    return texture;\n  }\n};\nvar GLTFMeshStandardSGMaterial = class extends MeshStandardMaterial {\n  constructor(params) {\n    super();\n    this.isGLTFSpecularGlossinessMaterial = true;\n    const specularMapParsFragmentChunk = [\n      \"#ifdef USE_SPECULARMAP\",\n      \"\tuniform sampler2D specularMap;\",\n      \"#endif\"\n    ].join(\"\\n\");\n    const glossinessMapParsFragmentChunk = [\n      \"#ifdef USE_GLOSSINESSMAP\",\n      \"\tuniform sampler2D glossinessMap;\",\n      \"#endif\"\n    ].join(\"\\n\");\n    const specularMapFragmentChunk = [\n      \"vec3 specularFactor = specular;\",\n      \"#ifdef USE_SPECULARMAP\",\n      \"\tvec4 texelSpecular = texture2D( specularMap, vUv );\",\n      \"\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture\",\n      \"\tspecularFactor *= texelSpecular.rgb;\",\n      \"#endif\"\n    ].join(\"\\n\");\n    const glossinessMapFragmentChunk = [\n      \"float glossinessFactor = glossiness;\",\n      \"#ifdef USE_GLOSSINESSMAP\",\n      \"\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );\",\n      \"\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture\",\n      \"\tglossinessFactor *= texelGlossiness.a;\",\n      \"#endif\"\n    ].join(\"\\n\");\n    const lightPhysicalFragmentChunk = [\n      \"PhysicalMaterial material;\",\n      \"material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );\",\n      \"vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\",\n      \"float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\",\n      \"material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.\",\n      \"material.roughness += geometryRoughness;\",\n      \"material.roughness = min( material.roughness, 1.0 );\",\n      \"material.specularColor = specularFactor;\"\n    ].join(\"\\n\");\n    const uniforms = {\n      specular: { value: new Color().setHex(16777215) },\n      glossiness: { value: 1 },\n      specularMap: { value: null },\n      glossinessMap: { value: null }\n    };\n    this._extraUniforms = uniforms;\n    this.onBeforeCompile = function(shader) {\n      for (const uniformName in uniforms) {\n        shader.uniforms[uniformName] = uniforms[uniformName];\n      }\n      shader.fragmentShader = shader.fragmentShader.replace(\"uniform float roughness;\", \"uniform vec3 specular;\").replace(\"uniform float metalness;\", \"uniform float glossiness;\").replace(\"#include <roughnessmap_pars_fragment>\", specularMapParsFragmentChunk).replace(\"#include <metalnessmap_pars_fragment>\", glossinessMapParsFragmentChunk).replace(\"#include <roughnessmap_fragment>\", specularMapFragmentChunk).replace(\"#include <metalnessmap_fragment>\", glossinessMapFragmentChunk).replace(\"#include <lights_physical_fragment>\", lightPhysicalFragmentChunk);\n    };\n    Object.defineProperties(this, {\n      specular: {\n        get: function() {\n          return uniforms.specular.value;\n        },\n        set: function(v) {\n          uniforms.specular.value = v;\n        }\n      },\n      specularMap: {\n        get: function() {\n          return uniforms.specularMap.value;\n        },\n        set: function(v) {\n          uniforms.specularMap.value = v;\n          if (v) {\n            this.defines.USE_SPECULARMAP = \"\";\n          } else {\n            delete this.defines.USE_SPECULARMAP;\n          }\n        }\n      },\n      glossiness: {\n        get: function() {\n          return uniforms.glossiness.value;\n        },\n        set: function(v) {\n          uniforms.glossiness.value = v;\n        }\n      },\n      glossinessMap: {\n        get: function() {\n          return uniforms.glossinessMap.value;\n        },\n        set: function(v) {\n          uniforms.glossinessMap.value = v;\n          if (v) {\n            this.defines.USE_GLOSSINESSMAP = \"\";\n            this.defines.USE_UV = \"\";\n          } else {\n            delete this.defines.USE_GLOSSINESSMAP;\n            delete this.defines.USE_UV;\n          }\n        }\n      }\n    });\n    delete this.metalness;\n    delete this.roughness;\n    delete this.metalnessMap;\n    delete this.roughnessMap;\n    this.setValues(params);\n  }\n  copy(source) {\n    super.copy(source);\n    this.specularMap = source.specularMap;\n    this.specular.copy(source.specular);\n    this.glossinessMap = source.glossinessMap;\n    this.glossiness = source.glossiness;\n    delete this.metalness;\n    delete this.roughness;\n    delete this.metalnessMap;\n    delete this.roughnessMap;\n    return this;\n  }\n};\nvar GLTFMaterialsPbrSpecularGlossinessExtension = class {\n  constructor() {\n    this.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;\n    this.specularGlossinessParams = [\n      \"color\",\n      \"map\",\n      \"lightMap\",\n      \"lightMapIntensity\",\n      \"aoMap\",\n      \"aoMapIntensity\",\n      \"emissive\",\n      \"emissiveIntensity\",\n      \"emissiveMap\",\n      \"bumpMap\",\n      \"bumpScale\",\n      \"normalMap\",\n      \"normalMapType\",\n      \"displacementMap\",\n      \"displacementScale\",\n      \"displacementBias\",\n      \"specularMap\",\n      \"specular\",\n      \"glossinessMap\",\n      \"glossiness\",\n      \"alphaMap\",\n      \"envMap\",\n      \"envMapIntensity\"\n    ];\n  }\n  getMaterialType() {\n    return GLTFMeshStandardSGMaterial;\n  }\n  extendParams(materialParams, materialDef, parser) {\n    const pbrSpecularGlossiness = materialDef.extensions[this.name];\n    materialParams.color = new Color(1, 1, 1);\n    materialParams.opacity = 1;\n    const pending = [];\n    if (Array.isArray(pbrSpecularGlossiness.diffuseFactor)) {\n      const array = pbrSpecularGlossiness.diffuseFactor;\n      materialParams.color.fromArray(array);\n      materialParams.opacity = array[3];\n    }\n    if (pbrSpecularGlossiness.diffuseTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"map\", pbrSpecularGlossiness.diffuseTexture, sRGBEncoding));\n    }\n    materialParams.emissive = new Color(0, 0, 0);\n    materialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== void 0 ? pbrSpecularGlossiness.glossinessFactor : 1;\n    materialParams.specular = new Color(1, 1, 1);\n    if (Array.isArray(pbrSpecularGlossiness.specularFactor)) {\n      materialParams.specular.fromArray(pbrSpecularGlossiness.specularFactor);\n    }\n    if (pbrSpecularGlossiness.specularGlossinessTexture !== void 0) {\n      const specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n      pending.push(parser.assignTexture(materialParams, \"glossinessMap\", specGlossMapDef));\n      pending.push(parser.assignTexture(materialParams, \"specularMap\", specGlossMapDef, sRGBEncoding));\n    }\n    return Promise.all(pending);\n  }\n  createMaterial(materialParams) {\n    const material = new GLTFMeshStandardSGMaterial(materialParams);\n    material.fog = true;\n    material.color = materialParams.color;\n    material.map = materialParams.map === void 0 ? null : materialParams.map;\n    material.lightMap = null;\n    material.lightMapIntensity = 1;\n    material.aoMap = materialParams.aoMap === void 0 ? null : materialParams.aoMap;\n    material.aoMapIntensity = 1;\n    material.emissive = materialParams.emissive;\n    material.emissiveIntensity = materialParams.emissiveIntensity === void 0 ? 1 : materialParams.emissiveIntensity;\n    material.emissiveMap = materialParams.emissiveMap === void 0 ? null : materialParams.emissiveMap;\n    material.bumpMap = materialParams.bumpMap === void 0 ? null : materialParams.bumpMap;\n    material.bumpScale = 1;\n    material.normalMap = materialParams.normalMap === void 0 ? null : materialParams.normalMap;\n    material.normalMapType = TangentSpaceNormalMap;\n    if (materialParams.normalScale)\n      material.normalScale = materialParams.normalScale;\n    material.displacementMap = null;\n    material.displacementScale = 1;\n    material.displacementBias = 0;\n    material.specularMap = materialParams.specularMap === void 0 ? null : materialParams.specularMap;\n    material.specular = materialParams.specular;\n    material.glossinessMap = materialParams.glossinessMap === void 0 ? null : materialParams.glossinessMap;\n    material.glossiness = materialParams.glossiness;\n    material.alphaMap = null;\n    material.envMap = materialParams.envMap === void 0 ? null : materialParams.envMap;\n    material.envMapIntensity = 1;\n    return material;\n  }\n};\nvar GLTFMeshQuantizationExtension = class {\n  constructor() {\n    this.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n  }\n};\nvar GLTFCubicSplineInterpolant = class extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  copySampleValue_(index) {\n    const result = this.resultBuffer, values = this.sampleValues, valueSize = this.valueSize, offset = index * valueSize * 3 + valueSize;\n    for (let i = 0; i !== valueSize; i++) {\n      result[i] = values[offset + i];\n    }\n    return result;\n  }\n  interpolate_(i1, t0, t2, t1) {\n    const result = this.resultBuffer;\n    const values = this.sampleValues;\n    const stride = this.valueSize;\n    const stride2 = stride * 2;\n    const stride3 = stride * 3;\n    const td2 = t1 - t0;\n    const p2 = (t2 - t0) / td2;\n    const pp = p2 * p2;\n    const ppp = pp * p2;\n    const offset1 = i1 * stride3;\n    const offset0 = offset1 - stride3;\n    const s2 = -2 * ppp + 3 * pp;\n    const s3 = ppp - pp;\n    const s0 = 1 - s2;\n    const s1 = s3 - pp + p2;\n    for (let i = 0; i !== stride; i++) {\n      const p0 = values[offset0 + i + stride];\n      const m0 = values[offset0 + i + stride2] * td2;\n      const p1 = values[offset1 + i + stride];\n      const m1 = values[offset1 + i] * td2;\n      result[i] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n    }\n    return result;\n  }\n};\nvar _q = new Quaternion();\nvar GLTFCubicSplineQuaternionInterpolant = class extends GLTFCubicSplineInterpolant {\n  interpolate_(i1, t0, t2, t1) {\n    const result = super.interpolate_(i1, t0, t2, t1);\n    _q.fromArray(result).normalize().toArray(result);\n    return result;\n  }\n};\nvar WEBGL_CONSTANTS = {\n  FLOAT: 5126,\n  //FLOAT_MAT2: 35674,\n  FLOAT_MAT3: 35675,\n  FLOAT_MAT4: 35676,\n  FLOAT_VEC2: 35664,\n  FLOAT_VEC3: 35665,\n  FLOAT_VEC4: 35666,\n  LINEAR: 9729,\n  REPEAT: 10497,\n  SAMPLER_2D: 35678,\n  POINTS: 0,\n  LINES: 1,\n  LINE_LOOP: 2,\n  LINE_STRIP: 3,\n  TRIANGLES: 4,\n  TRIANGLE_STRIP: 5,\n  TRIANGLE_FAN: 6,\n  UNSIGNED_BYTE: 5121,\n  UNSIGNED_SHORT: 5123\n};\nvar WEBGL_COMPONENT_TYPES = {\n  5120: Int8Array,\n  5121: Uint8Array,\n  5122: Int16Array,\n  5123: Uint16Array,\n  5125: Uint32Array,\n  5126: Float32Array\n};\nvar WEBGL_FILTERS = {\n  9728: NearestFilter,\n  9729: LinearFilter,\n  9984: NearestMipmapNearestFilter,\n  9985: LinearMipmapNearestFilter,\n  9986: NearestMipmapLinearFilter,\n  9987: LinearMipmapLinearFilter\n};\nvar WEBGL_WRAPPINGS = {\n  33071: ClampToEdgeWrapping,\n  33648: MirroredRepeatWrapping,\n  10497: RepeatWrapping\n};\nvar WEBGL_TYPE_SIZES = {\n  \"SCALAR\": 1,\n  \"VEC2\": 2,\n  \"VEC3\": 3,\n  \"VEC4\": 4,\n  \"MAT2\": 4,\n  \"MAT3\": 9,\n  \"MAT4\": 16\n};\nvar ATTRIBUTES = {\n  POSITION: \"position\",\n  NORMAL: \"normal\",\n  TANGENT: \"tangent\",\n  TEXCOORD_0: \"uv\",\n  TEXCOORD_1: \"uv2\",\n  COLOR_0: \"color\",\n  WEIGHTS_0: \"skinWeight\",\n  JOINTS_0: \"skinIndex\"\n};\nvar PATH_PROPERTIES = {\n  scale: \"scale\",\n  translation: \"position\",\n  rotation: \"quaternion\",\n  weights: \"morphTargetInfluences\"\n};\nvar INTERPOLATION = {\n  CUBICSPLINE: void 0,\n  // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n  // keyframe track will be initialized with a default interpolation type, then modified.\n  LINEAR: InterpolateLinear,\n  STEP: InterpolateDiscrete\n};\nvar ALPHA_MODES = {\n  OPAQUE: \"OPAQUE\",\n  MASK: \"MASK\",\n  BLEND: \"BLEND\"\n};\nfunction createDefaultMaterial(cache2) {\n  if (cache2[\"DefaultMaterial\"] === void 0) {\n    cache2[\"DefaultMaterial\"] = new MeshStandardMaterial({\n      color: 16777215,\n      emissive: 0,\n      metalness: 1,\n      roughness: 1,\n      transparent: false,\n      depthTest: true,\n      side: FrontSide\n    });\n  }\n  return cache2[\"DefaultMaterial\"];\n}\nfunction addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\n  for (const name in objectDef.extensions) {\n    if (knownExtensions[name] === void 0) {\n      object.userData.gltfExtensions = object.userData.gltfExtensions || {};\n      object.userData.gltfExtensions[name] = objectDef.extensions[name];\n    }\n  }\n}\nfunction assignExtrasToUserData(object, gltfDef) {\n  if (gltfDef.extras !== void 0) {\n    if (typeof gltfDef.extras === \"object\") {\n      Object.assign(object.userData, gltfDef.extras);\n    } else {\n      console.warn(\"THREE.GLTFLoader: Ignoring primitive type .extras, \" + gltfDef.extras);\n    }\n  }\n}\nfunction addMorphTargets(geometry, targets, parser) {\n  let hasMorphPosition = false;\n  let hasMorphNormal = false;\n  let hasMorphColor = false;\n  for (let i = 0, il = targets.length; i < il; i++) {\n    const target2 = targets[i];\n    if (target2.POSITION !== void 0)\n      hasMorphPosition = true;\n    if (target2.NORMAL !== void 0)\n      hasMorphNormal = true;\n    if (target2.COLOR_0 !== void 0)\n      hasMorphColor = true;\n    if (hasMorphPosition && hasMorphNormal && hasMorphColor)\n      break;\n  }\n  if (!hasMorphPosition && !hasMorphNormal && !hasMorphColor)\n    return Promise.resolve(geometry);\n  const pendingPositionAccessors = [];\n  const pendingNormalAccessors = [];\n  const pendingColorAccessors = [];\n  for (let i = 0, il = targets.length; i < il; i++) {\n    const target2 = targets[i];\n    if (hasMorphPosition) {\n      const pendingAccessor = target2.POSITION !== void 0 ? parser.getDependency(\"accessor\", target2.POSITION) : geometry.attributes.position;\n      pendingPositionAccessors.push(pendingAccessor);\n    }\n    if (hasMorphNormal) {\n      const pendingAccessor = target2.NORMAL !== void 0 ? parser.getDependency(\"accessor\", target2.NORMAL) : geometry.attributes.normal;\n      pendingNormalAccessors.push(pendingAccessor);\n    }\n    if (hasMorphColor) {\n      const pendingAccessor = target2.COLOR_0 !== void 0 ? parser.getDependency(\"accessor\", target2.COLOR_0) : geometry.attributes.color;\n      pendingColorAccessors.push(pendingAccessor);\n    }\n  }\n  return Promise.all([\n    Promise.all(pendingPositionAccessors),\n    Promise.all(pendingNormalAccessors),\n    Promise.all(pendingColorAccessors)\n  ]).then(function(accessors) {\n    const morphPositions = accessors[0];\n    const morphNormals = accessors[1];\n    const morphColors = accessors[2];\n    if (hasMorphPosition)\n      geometry.morphAttributes.position = morphPositions;\n    if (hasMorphNormal)\n      geometry.morphAttributes.normal = morphNormals;\n    if (hasMorphColor)\n      geometry.morphAttributes.color = morphColors;\n    geometry.morphTargetsRelative = true;\n    return geometry;\n  });\n}\nfunction updateMorphTargets(mesh, meshDef) {\n  mesh.updateMorphTargets();\n  if (meshDef.weights !== void 0) {\n    for (let i = 0, il = meshDef.weights.length; i < il; i++) {\n      mesh.morphTargetInfluences[i] = meshDef.weights[i];\n    }\n  }\n  if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) {\n    const targetNames = meshDef.extras.targetNames;\n    if (mesh.morphTargetInfluences.length === targetNames.length) {\n      mesh.morphTargetDictionary = {};\n      for (let i = 0, il = targetNames.length; i < il; i++) {\n        mesh.morphTargetDictionary[targetNames[i]] = i;\n      }\n    } else {\n      console.warn(\"THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.\");\n    }\n  }\n}\nfunction createPrimitiveKey(primitiveDef) {\n  const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\n  let geometryKey;\n  if (dracoExtension) {\n    geometryKey = \"draco:\" + dracoExtension.bufferView + \":\" + dracoExtension.indices + \":\" + createAttributesKey(dracoExtension.attributes);\n  } else {\n    geometryKey = primitiveDef.indices + \":\" + createAttributesKey(primitiveDef.attributes) + \":\" + primitiveDef.mode;\n  }\n  return geometryKey;\n}\nfunction createAttributesKey(attributes) {\n  let attributesKey = \"\";\n  const keys = Object.keys(attributes).sort();\n  for (let i = 0, il = keys.length; i < il; i++) {\n    attributesKey += keys[i] + \":\" + attributes[keys[i]] + \";\";\n  }\n  return attributesKey;\n}\nfunction getNormalizedComponentScale(constructor) {\n  switch (constructor) {\n    case Int8Array:\n      return 1 / 127;\n    case Uint8Array:\n      return 1 / 255;\n    case Int16Array:\n      return 1 / 32767;\n    case Uint16Array:\n      return 1 / 65535;\n    default:\n      throw new Error(\"THREE.GLTFLoader: Unsupported normalized accessor component type.\");\n  }\n}\nfunction getImageURIMimeType(uri) {\n  if (uri.search(/\\.jpe?g($|\\?)/i) > 0 || uri.search(/^data\\:image\\/jpeg/) === 0)\n    return \"image/jpeg\";\n  if (uri.search(/\\.webp($|\\?)/i) > 0 || uri.search(/^data\\:image\\/webp/) === 0)\n    return \"image/webp\";\n  return \"image/png\";\n}\nvar GLTFParser = class {\n  constructor(json = {}, options = {}) {\n    this.json = json;\n    this.extensions = {};\n    this.plugins = {};\n    this.options = options;\n    this.cache = new GLTFRegistry();\n    this.associations = /* @__PURE__ */ new Map();\n    this.primitiveCache = {};\n    this.meshCache = { refs: {}, uses: {} };\n    this.cameraCache = { refs: {}, uses: {} };\n    this.lightCache = { refs: {}, uses: {} };\n    this.sourceCache = {};\n    this.textureCache = {};\n    this.nodeNamesUsed = {};\n    const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) === true;\n    const isFirefox = navigator.userAgent.indexOf(\"Firefox\") > -1;\n    const firefoxVersion = isFirefox ? navigator.userAgent.match(/Firefox\\/([0-9]+)\\./)[1] : -1;\n    if (typeof createImageBitmap === \"undefined\" || isSafari || isFirefox && firefoxVersion < 98) {\n      this.textureLoader = new TextureLoader(this.options.manager);\n    } else {\n      this.textureLoader = new ImageBitmapLoader(this.options.manager);\n    }\n    this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n    this.textureLoader.setRequestHeader(this.options.requestHeader);\n    this.fileLoader = new FileLoader(this.options.manager);\n    this.fileLoader.setResponseType(\"arraybuffer\");\n    if (this.options.crossOrigin === \"use-credentials\") {\n      this.fileLoader.setWithCredentials(true);\n    }\n  }\n  setExtensions(extensions) {\n    this.extensions = extensions;\n  }\n  setPlugins(plugins) {\n    this.plugins = plugins;\n  }\n  parse(onLoad, onError) {\n    const parser = this;\n    const json = this.json;\n    const extensions = this.extensions;\n    this.cache.removeAll();\n    this._invokeAll(function(ext) {\n      return ext._markDefs && ext._markDefs();\n    });\n    Promise.all(this._invokeAll(function(ext) {\n      return ext.beforeRoot && ext.beforeRoot();\n    })).then(function() {\n      return Promise.all([\n        parser.getDependencies(\"scene\"),\n        parser.getDependencies(\"animation\"),\n        parser.getDependencies(\"camera\")\n      ]);\n    }).then(function(dependencies) {\n      const result = {\n        scene: dependencies[0][json.scene || 0],\n        scenes: dependencies[0],\n        animations: dependencies[1],\n        cameras: dependencies[2],\n        asset: json.asset,\n        parser,\n        userData: {}\n      };\n      addUnknownExtensionsToUserData(extensions, result, json);\n      assignExtrasToUserData(result, json);\n      Promise.all(parser._invokeAll(function(ext) {\n        return ext.afterRoot && ext.afterRoot(result);\n      })).then(function() {\n        onLoad(result);\n      });\n    }).catch(onError);\n  }\n  /**\n   * Marks the special nodes/meshes in json for efficient parse.\n   */\n  _markDefs() {\n    const nodeDefs = this.json.nodes || [];\n    const skinDefs = this.json.skins || [];\n    const meshDefs = this.json.meshes || [];\n    for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\n      const joints = skinDefs[skinIndex].joints;\n      for (let i = 0, il = joints.length; i < il; i++) {\n        nodeDefs[joints[i]].isBone = true;\n      }\n    }\n    for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n      const nodeDef = nodeDefs[nodeIndex];\n      if (nodeDef.mesh !== void 0) {\n        this._addNodeRef(this.meshCache, nodeDef.mesh);\n        if (nodeDef.skin !== void 0) {\n          meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n        }\n      }\n      if (nodeDef.camera !== void 0) {\n        this._addNodeRef(this.cameraCache, nodeDef.camera);\n      }\n    }\n  }\n  /**\n   * Counts references to shared node / Object3D resources. These resources\n   * can be reused, or \"instantiated\", at multiple nodes in the scene\n   * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n   * be marked. Non-scenegraph resources (like Materials, Geometries, and\n   * Textures) can be reused directly and are not marked here.\n   *\n   * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n   */\n  _addNodeRef(cache2, index) {\n    if (index === void 0)\n      return;\n    if (cache2.refs[index] === void 0) {\n      cache2.refs[index] = cache2.uses[index] = 0;\n    }\n    cache2.refs[index]++;\n  }\n  /** Returns a reference to a shared resource, cloning it if necessary. */\n  _getNodeRef(cache2, index, object) {\n    if (cache2.refs[index] <= 1)\n      return object;\n    const ref = object.clone();\n    const updateMappings = (original, clone2) => {\n      const mappings = this.associations.get(original);\n      if (mappings != null) {\n        this.associations.set(clone2, mappings);\n      }\n      for (const [i, child] of original.children.entries()) {\n        updateMappings(child, clone2.children[i]);\n      }\n    };\n    updateMappings(object, ref);\n    ref.name += \"_instance_\" + cache2.uses[index]++;\n    return ref;\n  }\n  _invokeOne(func) {\n    const extensions = Object.values(this.plugins);\n    extensions.push(this);\n    for (let i = 0; i < extensions.length; i++) {\n      const result = func(extensions[i]);\n      if (result)\n        return result;\n    }\n    return null;\n  }\n  _invokeAll(func) {\n    const extensions = Object.values(this.plugins);\n    extensions.unshift(this);\n    const pending = [];\n    for (let i = 0; i < extensions.length; i++) {\n      const result = func(extensions[i]);\n      if (result)\n        pending.push(result);\n    }\n    return pending;\n  }\n  /**\n   * Requests the specified dependency asynchronously, with caching.\n   * @param {string} type\n   * @param {number} index\n   * @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}\n   */\n  getDependency(type, index) {\n    const cacheKey = type + \":\" + index;\n    let dependency = this.cache.get(cacheKey);\n    if (!dependency) {\n      switch (type) {\n        case \"scene\":\n          dependency = this.loadScene(index);\n          break;\n        case \"node\":\n          dependency = this.loadNode(index);\n          break;\n        case \"mesh\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadMesh && ext.loadMesh(index);\n          });\n          break;\n        case \"accessor\":\n          dependency = this.loadAccessor(index);\n          break;\n        case \"bufferView\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadBufferView && ext.loadBufferView(index);\n          });\n          break;\n        case \"buffer\":\n          dependency = this.loadBuffer(index);\n          break;\n        case \"material\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadMaterial && ext.loadMaterial(index);\n          });\n          break;\n        case \"texture\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadTexture && ext.loadTexture(index);\n          });\n          break;\n        case \"skin\":\n          dependency = this.loadSkin(index);\n          break;\n        case \"animation\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadAnimation && ext.loadAnimation(index);\n          });\n          break;\n        case \"camera\":\n          dependency = this.loadCamera(index);\n          break;\n        default:\n          throw new Error(\"Unknown type: \" + type);\n      }\n      this.cache.add(cacheKey, dependency);\n    }\n    return dependency;\n  }\n  /**\n   * Requests all dependencies of the specified type asynchronously, with caching.\n   * @param {string} type\n   * @return {Promise<Array<Object>>}\n   */\n  getDependencies(type) {\n    let dependencies = this.cache.get(type);\n    if (!dependencies) {\n      const parser = this;\n      const defs = this.json[type + (type === \"mesh\" ? \"es\" : \"s\")] || [];\n      dependencies = Promise.all(defs.map(function(def, index) {\n        return parser.getDependency(type, index);\n      }));\n      this.cache.add(type, dependencies);\n    }\n    return dependencies;\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n   * @param {number} bufferIndex\n   * @return {Promise<ArrayBuffer>}\n   */\n  loadBuffer(bufferIndex) {\n    const bufferDef = this.json.buffers[bufferIndex];\n    const loader = this.fileLoader;\n    if (bufferDef.type && bufferDef.type !== \"arraybuffer\") {\n      throw new Error(\"THREE.GLTFLoader: \" + bufferDef.type + \" buffer type is not supported.\");\n    }\n    if (bufferDef.uri === void 0 && bufferIndex === 0) {\n      return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);\n    }\n    const options = this.options;\n    return new Promise(function(resolve, reject) {\n      loader.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve, void 0, function() {\n        reject(new Error('THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".'));\n      });\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n   * @param {number} bufferViewIndex\n   * @return {Promise<ArrayBuffer>}\n   */\n  loadBufferView(bufferViewIndex) {\n    const bufferViewDef = this.json.bufferViews[bufferViewIndex];\n    return this.getDependency(\"buffer\", bufferViewDef.buffer).then(function(buffer) {\n      const byteLength = bufferViewDef.byteLength || 0;\n      const byteOffset = bufferViewDef.byteOffset || 0;\n      return buffer.slice(byteOffset, byteOffset + byteLength);\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n   * @param {number} accessorIndex\n   * @return {Promise<BufferAttribute|InterleavedBufferAttribute>}\n   */\n  loadAccessor(accessorIndex) {\n    const parser = this;\n    const json = this.json;\n    const accessorDef = this.json.accessors[accessorIndex];\n    if (accessorDef.bufferView === void 0 && accessorDef.sparse === void 0) {\n      return Promise.resolve(null);\n    }\n    const pendingBufferViews = [];\n    if (accessorDef.bufferView !== void 0) {\n      pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.bufferView));\n    } else {\n      pendingBufferViews.push(null);\n    }\n    if (accessorDef.sparse !== void 0) {\n      pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.indices.bufferView));\n      pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.values.bufferView));\n    }\n    return Promise.all(pendingBufferViews).then(function(bufferViews) {\n      const bufferView = bufferViews[0];\n      const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n      const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n      const elementBytes = TypedArray.BYTES_PER_ELEMENT;\n      const itemBytes = elementBytes * itemSize;\n      const byteOffset = accessorDef.byteOffset || 0;\n      const byteStride = accessorDef.bufferView !== void 0 ? json.bufferViews[accessorDef.bufferView].byteStride : void 0;\n      const normalized = accessorDef.normalized === true;\n      let array, bufferAttribute;\n      if (byteStride && byteStride !== itemBytes) {\n        const ibSlice = Math.floor(byteOffset / byteStride);\n        const ibCacheKey = \"InterleavedBuffer:\" + accessorDef.bufferView + \":\" + accessorDef.componentType + \":\" + ibSlice + \":\" + accessorDef.count;\n        let ib = parser.cache.get(ibCacheKey);\n        if (!ib) {\n          array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes);\n          ib = new InterleavedBuffer(array, byteStride / elementBytes);\n          parser.cache.add(ibCacheKey, ib);\n        }\n        bufferAttribute = new InterleavedBufferAttribute(ib, itemSize, byteOffset % byteStride / elementBytes, normalized);\n      } else {\n        if (bufferView === null) {\n          array = new TypedArray(accessorDef.count * itemSize);\n        } else {\n          array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize);\n        }\n        bufferAttribute = new BufferAttribute(array, itemSize, normalized);\n      }\n      if (accessorDef.sparse !== void 0) {\n        const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n        const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\n        const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n        const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n        const sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices);\n        const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\n        if (bufferView !== null) {\n          bufferAttribute = new BufferAttribute(bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized);\n        }\n        for (let i = 0, il = sparseIndices.length; i < il; i++) {\n          const index = sparseIndices[i];\n          bufferAttribute.setX(index, sparseValues[i * itemSize]);\n          if (itemSize >= 2)\n            bufferAttribute.setY(index, sparseValues[i * itemSize + 1]);\n          if (itemSize >= 3)\n            bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]);\n          if (itemSize >= 4)\n            bufferAttribute.setW(index, sparseValues[i * itemSize + 3]);\n          if (itemSize >= 5)\n            throw new Error(\"THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.\");\n        }\n      }\n      return bufferAttribute;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n   * @param {number} textureIndex\n   * @return {Promise<THREE.Texture>}\n   */\n  loadTexture(textureIndex) {\n    const json = this.json;\n    const options = this.options;\n    const textureDef = json.textures[textureIndex];\n    const sourceIndex = textureDef.source;\n    const sourceDef = json.images[sourceIndex];\n    let loader = this.textureLoader;\n    if (sourceDef.uri) {\n      const handler = options.manager.getHandler(sourceDef.uri);\n      if (handler !== null)\n        loader = handler;\n    }\n    return this.loadTextureImage(textureIndex, sourceIndex, loader);\n  }\n  loadTextureImage(textureIndex, sourceIndex, loader) {\n    const parser = this;\n    const json = this.json;\n    const textureDef = json.textures[textureIndex];\n    const sourceDef = json.images[sourceIndex];\n    const cacheKey = (sourceDef.uri || sourceDef.bufferView) + \":\" + textureDef.sampler;\n    if (this.textureCache[cacheKey]) {\n      return this.textureCache[cacheKey];\n    }\n    const promise = this.loadImageSource(sourceIndex, loader).then(function(texture) {\n      texture.flipY = false;\n      texture.name = textureDef.name || sourceDef.name || \"\";\n      const samplers = json.samplers || {};\n      const sampler = samplers[textureDef.sampler] || {};\n      texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter;\n      texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter;\n      texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping;\n      texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;\n      parser.associations.set(texture, { textures: textureIndex });\n      return texture;\n    }).catch(function() {\n      return null;\n    });\n    this.textureCache[cacheKey] = promise;\n    return promise;\n  }\n  loadImageSource(sourceIndex, loader) {\n    const parser = this;\n    const json = this.json;\n    const options = this.options;\n    if (this.sourceCache[sourceIndex] !== void 0) {\n      return this.sourceCache[sourceIndex].then((texture) => texture.clone());\n    }\n    const sourceDef = json.images[sourceIndex];\n    const URL2 = self.URL || self.webkitURL;\n    let sourceURI = sourceDef.uri || \"\";\n    let isObjectURL = false;\n    if (sourceDef.bufferView !== void 0) {\n      sourceURI = parser.getDependency(\"bufferView\", sourceDef.bufferView).then(function(bufferView) {\n        isObjectURL = true;\n        const blob = new Blob([bufferView], { type: sourceDef.mimeType });\n        sourceURI = URL2.createObjectURL(blob);\n        return sourceURI;\n      });\n    } else if (sourceDef.uri === void 0) {\n      throw new Error(\"THREE.GLTFLoader: Image \" + sourceIndex + \" is missing URI and bufferView\");\n    }\n    const promise = Promise.resolve(sourceURI).then(function(sourceURI2) {\n      return new Promise(function(resolve, reject) {\n        let onLoad = resolve;\n        if (loader.isImageBitmapLoader === true) {\n          onLoad = function(imageBitmap) {\n            const texture = new Texture(imageBitmap);\n            texture.needsUpdate = true;\n            resolve(texture);\n          };\n        }\n        loader.load(LoaderUtils.resolveURL(sourceURI2, options.path), onLoad, void 0, reject);\n      });\n    }).then(function(texture) {\n      if (isObjectURL === true) {\n        URL2.revokeObjectURL(sourceURI);\n      }\n      texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType(sourceDef.uri);\n      return texture;\n    }).catch(function(error) {\n      console.error(\"THREE.GLTFLoader: Couldn't load texture\", sourceURI);\n      throw error;\n    });\n    this.sourceCache[sourceIndex] = promise;\n    return promise;\n  }\n  /**\n   * Asynchronously assigns a texture to the given material parameters.\n   * @param {Object} materialParams\n   * @param {string} mapName\n   * @param {Object} mapDef\n   * @return {Promise<Texture>}\n   */\n  assignTexture(materialParams, mapName, mapDef, encoding) {\n    const parser = this;\n    return this.getDependency(\"texture\", mapDef.index).then(function(texture) {\n      if (mapDef.texCoord !== void 0 && mapDef.texCoord != 0 && !(mapName === \"aoMap\" && mapDef.texCoord == 1)) {\n        console.warn(\"THREE.GLTFLoader: Custom UV set \" + mapDef.texCoord + \" for texture \" + mapName + \" not yet supported.\");\n      }\n      if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\n        const transform = mapDef.extensions !== void 0 ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : void 0;\n        if (transform) {\n          const gltfReference = parser.associations.get(texture);\n          texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n          parser.associations.set(texture, gltfReference);\n        }\n      }\n      if (encoding !== void 0) {\n        texture.encoding = encoding;\n      }\n      materialParams[mapName] = texture;\n      return texture;\n    });\n  }\n  /**\n   * Assigns final material to a Mesh, Line, or Points instance. The instance\n   * already has a material (generated from the glTF material options alone)\n   * but reuse of the same glTF material may require multiple threejs materials\n   * to accommodate different primitive types, defines, etc. New materials will\n   * be created if necessary, and reused from a cache.\n   * @param  {Object3D} mesh Mesh, Line, or Points instance.\n   */\n  assignFinalMaterial(mesh) {\n    const geometry = mesh.geometry;\n    let material = mesh.material;\n    const useDerivativeTangents = geometry.attributes.tangent === void 0;\n    const useVertexColors = geometry.attributes.color !== void 0;\n    const useFlatShading = geometry.attributes.normal === void 0;\n    if (mesh.isPoints) {\n      const cacheKey = \"PointsMaterial:\" + material.uuid;\n      let pointsMaterial = this.cache.get(cacheKey);\n      if (!pointsMaterial) {\n        pointsMaterial = new PointsMaterial();\n        Material.prototype.copy.call(pointsMaterial, material);\n        pointsMaterial.color.copy(material.color);\n        pointsMaterial.map = material.map;\n        pointsMaterial.sizeAttenuation = false;\n        this.cache.add(cacheKey, pointsMaterial);\n      }\n      material = pointsMaterial;\n    } else if (mesh.isLine) {\n      const cacheKey = \"LineBasicMaterial:\" + material.uuid;\n      let lineMaterial = this.cache.get(cacheKey);\n      if (!lineMaterial) {\n        lineMaterial = new LineBasicMaterial();\n        Material.prototype.copy.call(lineMaterial, material);\n        lineMaterial.color.copy(material.color);\n        this.cache.add(cacheKey, lineMaterial);\n      }\n      material = lineMaterial;\n    }\n    if (useDerivativeTangents || useVertexColors || useFlatShading) {\n      let cacheKey = \"ClonedMaterial:\" + material.uuid + \":\";\n      if (material.isGLTFSpecularGlossinessMaterial)\n        cacheKey += \"specular-glossiness:\";\n      if (useDerivativeTangents)\n        cacheKey += \"derivative-tangents:\";\n      if (useVertexColors)\n        cacheKey += \"vertex-colors:\";\n      if (useFlatShading)\n        cacheKey += \"flat-shading:\";\n      let cachedMaterial = this.cache.get(cacheKey);\n      if (!cachedMaterial) {\n        cachedMaterial = material.clone();\n        if (useVertexColors)\n          cachedMaterial.vertexColors = true;\n        if (useFlatShading)\n          cachedMaterial.flatShading = true;\n        if (useDerivativeTangents) {\n          if (cachedMaterial.normalScale)\n            cachedMaterial.normalScale.y *= -1;\n          if (cachedMaterial.clearcoatNormalScale)\n            cachedMaterial.clearcoatNormalScale.y *= -1;\n        }\n        this.cache.add(cacheKey, cachedMaterial);\n        this.associations.set(cachedMaterial, this.associations.get(material));\n      }\n      material = cachedMaterial;\n    }\n    if (material.aoMap && geometry.attributes.uv2 === void 0 && geometry.attributes.uv !== void 0) {\n      geometry.setAttribute(\"uv2\", geometry.attributes.uv);\n    }\n    mesh.material = material;\n  }\n  getMaterialType() {\n    return MeshStandardMaterial;\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n   * @param {number} materialIndex\n   * @return {Promise<Material>}\n   */\n  loadMaterial(materialIndex) {\n    const parser = this;\n    const json = this.json;\n    const extensions = this.extensions;\n    const materialDef = json.materials[materialIndex];\n    let materialType;\n    const materialParams = {};\n    const materialExtensions = materialDef.extensions || {};\n    const pending = [];\n    if (materialExtensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]) {\n      const sgExtension = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];\n      materialType = sgExtension.getMaterialType();\n      pending.push(sgExtension.extendParams(materialParams, materialDef, parser));\n    } else if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) {\n      const kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];\n      materialType = kmuExtension.getMaterialType();\n      pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\n    } else {\n      const metallicRoughness = materialDef.pbrMetallicRoughness || {};\n      materialParams.color = new Color(1, 1, 1);\n      materialParams.opacity = 1;\n      if (Array.isArray(metallicRoughness.baseColorFactor)) {\n        const array = metallicRoughness.baseColorFactor;\n        materialParams.color.fromArray(array);\n        materialParams.opacity = array[3];\n      }\n      if (metallicRoughness.baseColorTexture !== void 0) {\n        pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture, sRGBEncoding));\n      }\n      materialParams.metalness = metallicRoughness.metallicFactor !== void 0 ? metallicRoughness.metallicFactor : 1;\n      materialParams.roughness = metallicRoughness.roughnessFactor !== void 0 ? metallicRoughness.roughnessFactor : 1;\n      if (metallicRoughness.metallicRoughnessTexture !== void 0) {\n        pending.push(parser.assignTexture(materialParams, \"metalnessMap\", metallicRoughness.metallicRoughnessTexture));\n        pending.push(parser.assignTexture(materialParams, \"roughnessMap\", metallicRoughness.metallicRoughnessTexture));\n      }\n      materialType = this._invokeOne(function(ext) {\n        return ext.getMaterialType && ext.getMaterialType(materialIndex);\n      });\n      pending.push(Promise.all(this._invokeAll(function(ext) {\n        return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams);\n      })));\n    }\n    if (materialDef.doubleSided === true) {\n      materialParams.side = DoubleSide;\n    }\n    const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n    if (alphaMode === ALPHA_MODES.BLEND) {\n      materialParams.transparent = true;\n      materialParams.depthWrite = false;\n    } else {\n      materialParams.transparent = false;\n      if (alphaMode === ALPHA_MODES.MASK) {\n        materialParams.alphaTest = materialDef.alphaCutoff !== void 0 ? materialDef.alphaCutoff : 0.5;\n      }\n    }\n    if (materialDef.normalTexture !== void 0 && materialType !== MeshBasicMaterial) {\n      pending.push(parser.assignTexture(materialParams, \"normalMap\", materialDef.normalTexture));\n      materialParams.normalScale = new Vector2(1, 1);\n      if (materialDef.normalTexture.scale !== void 0) {\n        const scale = materialDef.normalTexture.scale;\n        materialParams.normalScale.set(scale, scale);\n      }\n    }\n    if (materialDef.occlusionTexture !== void 0 && materialType !== MeshBasicMaterial) {\n      pending.push(parser.assignTexture(materialParams, \"aoMap\", materialDef.occlusionTexture));\n      if (materialDef.occlusionTexture.strength !== void 0) {\n        materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n      }\n    }\n    if (materialDef.emissiveFactor !== void 0 && materialType !== MeshBasicMaterial) {\n      materialParams.emissive = new Color().fromArray(materialDef.emissiveFactor);\n    }\n    if (materialDef.emissiveTexture !== void 0 && materialType !== MeshBasicMaterial) {\n      pending.push(parser.assignTexture(materialParams, \"emissiveMap\", materialDef.emissiveTexture, sRGBEncoding));\n    }\n    return Promise.all(pending).then(function() {\n      let material;\n      if (materialType === GLTFMeshStandardSGMaterial) {\n        material = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);\n      } else {\n        material = new materialType(materialParams);\n      }\n      if (materialDef.name)\n        material.name = materialDef.name;\n      assignExtrasToUserData(material, materialDef);\n      parser.associations.set(material, { materials: materialIndex });\n      if (materialDef.extensions)\n        addUnknownExtensionsToUserData(extensions, material, materialDef);\n      return material;\n    });\n  }\n  /** When Object3D instances are targeted by animation, they need unique names. */\n  createUniqueName(originalName) {\n    const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || \"\");\n    let name = sanitizedName;\n    for (let i = 1; this.nodeNamesUsed[name]; ++i) {\n      name = sanitizedName + \"_\" + i;\n    }\n    this.nodeNamesUsed[name] = true;\n    return name;\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n   *\n   * Creates BufferGeometries from primitives.\n   *\n   * @param {Array<GLTF.Primitive>} primitives\n   * @return {Promise<Array<BufferGeometry>>}\n   */\n  loadGeometries(primitives) {\n    const parser = this;\n    const extensions = this.extensions;\n    const cache2 = this.primitiveCache;\n    function createDracoPrimitive(primitive) {\n      return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function(geometry) {\n        return addPrimitiveAttributes(geometry, primitive, parser);\n      });\n    }\n    const pending = [];\n    for (let i = 0, il = primitives.length; i < il; i++) {\n      const primitive = primitives[i];\n      const cacheKey = createPrimitiveKey(primitive);\n      const cached = cache2[cacheKey];\n      if (cached) {\n        pending.push(cached.promise);\n      } else {\n        let geometryPromise;\n        if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\n          geometryPromise = createDracoPrimitive(primitive);\n        } else {\n          geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser);\n        }\n        cache2[cacheKey] = { primitive, promise: geometryPromise };\n        pending.push(geometryPromise);\n      }\n    }\n    return Promise.all(pending);\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n   * @param {number} meshIndex\n   * @return {Promise<Group|Mesh|SkinnedMesh>}\n   */\n  loadMesh(meshIndex) {\n    const parser = this;\n    const json = this.json;\n    const extensions = this.extensions;\n    const meshDef = json.meshes[meshIndex];\n    const primitives = meshDef.primitives;\n    const pending = [];\n    for (let i = 0, il = primitives.length; i < il; i++) {\n      const material = primitives[i].material === void 0 ? createDefaultMaterial(this.cache) : this.getDependency(\"material\", primitives[i].material);\n      pending.push(material);\n    }\n    pending.push(parser.loadGeometries(primitives));\n    return Promise.all(pending).then(function(results) {\n      const materials = results.slice(0, results.length - 1);\n      const geometries = results[results.length - 1];\n      const meshes = [];\n      for (let i = 0, il = geometries.length; i < il; i++) {\n        const geometry = geometries[i];\n        const primitive = primitives[i];\n        let mesh;\n        const material = materials[i];\n        if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === void 0) {\n          mesh = meshDef.isSkinnedMesh === true ? new SkinnedMesh(geometry, material) : new Mesh(geometry, material);\n          if (mesh.isSkinnedMesh === true && !mesh.geometry.attributes.skinWeight.normalized) {\n            mesh.normalizeSkinWeights();\n          }\n          if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n            mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode);\n          } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n            mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode);\n          }\n        } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n          mesh = new LineSegments(geometry, material);\n        } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n          mesh = new Line(geometry, material);\n        } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n          mesh = new LineLoop(geometry, material);\n        } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n          mesh = new Points(geometry, material);\n        } else {\n          throw new Error(\"THREE.GLTFLoader: Primitive mode unsupported: \" + primitive.mode);\n        }\n        if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\n          updateMorphTargets(mesh, meshDef);\n        }\n        mesh.name = parser.createUniqueName(meshDef.name || \"mesh_\" + meshIndex);\n        assignExtrasToUserData(mesh, meshDef);\n        if (primitive.extensions)\n          addUnknownExtensionsToUserData(extensions, mesh, primitive);\n        parser.assignFinalMaterial(mesh);\n        meshes.push(mesh);\n      }\n      for (let i = 0, il = meshes.length; i < il; i++) {\n        parser.associations.set(meshes[i], {\n          meshes: meshIndex,\n          primitives: i\n        });\n      }\n      if (meshes.length === 1) {\n        return meshes[0];\n      }\n      const group = new Group();\n      parser.associations.set(group, { meshes: meshIndex });\n      for (let i = 0, il = meshes.length; i < il; i++) {\n        group.add(meshes[i]);\n      }\n      return group;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n   * @param {number} cameraIndex\n   * @return {Promise<THREE.Camera>}\n   */\n  loadCamera(cameraIndex) {\n    let camera2;\n    const cameraDef = this.json.cameras[cameraIndex];\n    const params = cameraDef[cameraDef.type];\n    if (!params) {\n      console.warn(\"THREE.GLTFLoader: Missing camera parameters.\");\n      return;\n    }\n    if (cameraDef.type === \"perspective\") {\n      camera2 = new PerspectiveCamera(MathUtils.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\n    } else if (cameraDef.type === \"orthographic\") {\n      camera2 = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar);\n    }\n    if (cameraDef.name)\n      camera2.name = this.createUniqueName(cameraDef.name);\n    assignExtrasToUserData(camera2, cameraDef);\n    return Promise.resolve(camera2);\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n   * @param {number} skinIndex\n   * @return {Promise<Object>}\n   */\n  loadSkin(skinIndex) {\n    const skinDef = this.json.skins[skinIndex];\n    const skinEntry = { joints: skinDef.joints };\n    if (skinDef.inverseBindMatrices === void 0) {\n      return Promise.resolve(skinEntry);\n    }\n    return this.getDependency(\"accessor\", skinDef.inverseBindMatrices).then(function(accessor) {\n      skinEntry.inverseBindMatrices = accessor;\n      return skinEntry;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n   * @param {number} animationIndex\n   * @return {Promise<AnimationClip>}\n   */\n  loadAnimation(animationIndex) {\n    const json = this.json;\n    const animationDef = json.animations[animationIndex];\n    const pendingNodes = [];\n    const pendingInputAccessors = [];\n    const pendingOutputAccessors = [];\n    const pendingSamplers = [];\n    const pendingTargets = [];\n    for (let i = 0, il = animationDef.channels.length; i < il; i++) {\n      const channel = animationDef.channels[i];\n      const sampler = animationDef.samplers[channel.sampler];\n      const target2 = channel.target;\n      const name = target2.node;\n      const input = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.input] : sampler.input;\n      const output = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.output] : sampler.output;\n      pendingNodes.push(this.getDependency(\"node\", name));\n      pendingInputAccessors.push(this.getDependency(\"accessor\", input));\n      pendingOutputAccessors.push(this.getDependency(\"accessor\", output));\n      pendingSamplers.push(sampler);\n      pendingTargets.push(target2);\n    }\n    return Promise.all([\n      Promise.all(pendingNodes),\n      Promise.all(pendingInputAccessors),\n      Promise.all(pendingOutputAccessors),\n      Promise.all(pendingSamplers),\n      Promise.all(pendingTargets)\n    ]).then(function(dependencies) {\n      const nodes = dependencies[0];\n      const inputAccessors = dependencies[1];\n      const outputAccessors = dependencies[2];\n      const samplers = dependencies[3];\n      const targets = dependencies[4];\n      const tracks = [];\n      for (let i = 0, il = nodes.length; i < il; i++) {\n        const node = nodes[i];\n        const inputAccessor = inputAccessors[i];\n        const outputAccessor = outputAccessors[i];\n        const sampler = samplers[i];\n        const target2 = targets[i];\n        if (node === void 0)\n          continue;\n        node.updateMatrix();\n        let TypedKeyframeTrack;\n        switch (PATH_PROPERTIES[target2.path]) {\n          case PATH_PROPERTIES.weights:\n            TypedKeyframeTrack = NumberKeyframeTrack;\n            break;\n          case PATH_PROPERTIES.rotation:\n            TypedKeyframeTrack = QuaternionKeyframeTrack;\n            break;\n          case PATH_PROPERTIES.position:\n          case PATH_PROPERTIES.scale:\n          default:\n            TypedKeyframeTrack = VectorKeyframeTrack;\n            break;\n        }\n        const targetName = node.name ? node.name : node.uuid;\n        const interpolation = sampler.interpolation !== void 0 ? INTERPOLATION[sampler.interpolation] : InterpolateLinear;\n        const targetNames = [];\n        if (PATH_PROPERTIES[target2.path] === PATH_PROPERTIES.weights) {\n          node.traverse(function(object) {\n            if (object.morphTargetInfluences) {\n              targetNames.push(object.name ? object.name : object.uuid);\n            }\n          });\n        } else {\n          targetNames.push(targetName);\n        }\n        let outputArray = outputAccessor.array;\n        if (outputAccessor.normalized) {\n          const scale = getNormalizedComponentScale(outputArray.constructor);\n          const scaled = new Float32Array(outputArray.length);\n          for (let j = 0, jl = outputArray.length; j < jl; j++) {\n            scaled[j] = outputArray[j] * scale;\n          }\n          outputArray = scaled;\n        }\n        for (let j = 0, jl = targetNames.length; j < jl; j++) {\n          const track = new TypedKeyframeTrack(\n            targetNames[j] + \".\" + PATH_PROPERTIES[target2.path],\n            inputAccessor.array,\n            outputArray,\n            interpolation\n          );\n          if (sampler.interpolation === \"CUBICSPLINE\") {\n            track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) {\n              const interpolantType = this instanceof QuaternionKeyframeTrack ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n              return new interpolantType(this.times, this.values, this.getValueSize() / 3, result);\n            };\n            track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n          }\n          tracks.push(track);\n        }\n      }\n      const name = animationDef.name ? animationDef.name : \"animation_\" + animationIndex;\n      return new AnimationClip(name, void 0, tracks);\n    });\n  }\n  createNodeMesh(nodeIndex) {\n    const json = this.json;\n    const parser = this;\n    const nodeDef = json.nodes[nodeIndex];\n    if (nodeDef.mesh === void 0)\n      return null;\n    return parser.getDependency(\"mesh\", nodeDef.mesh).then(function(mesh) {\n      const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh);\n      if (nodeDef.weights !== void 0) {\n        node.traverse(function(o) {\n          if (!o.isMesh)\n            return;\n          for (let i = 0, il = nodeDef.weights.length; i < il; i++) {\n            o.morphTargetInfluences[i] = nodeDef.weights[i];\n          }\n        });\n      }\n      return node;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n   * @param {number} nodeIndex\n   * @return {Promise<Object3D>}\n   */\n  loadNode(nodeIndex) {\n    const json = this.json;\n    const extensions = this.extensions;\n    const parser = this;\n    const nodeDef = json.nodes[nodeIndex];\n    const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : \"\";\n    return function() {\n      const pending = [];\n      const meshPromise = parser._invokeOne(function(ext) {\n        return ext.createNodeMesh && ext.createNodeMesh(nodeIndex);\n      });\n      if (meshPromise) {\n        pending.push(meshPromise);\n      }\n      if (nodeDef.camera !== void 0) {\n        pending.push(parser.getDependency(\"camera\", nodeDef.camera).then(function(camera2) {\n          return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera2);\n        }));\n      }\n      parser._invokeAll(function(ext) {\n        return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex);\n      }).forEach(function(promise) {\n        pending.push(promise);\n      });\n      return Promise.all(pending);\n    }().then(function(objects) {\n      let node;\n      if (nodeDef.isBone === true) {\n        node = new Bone();\n      } else if (objects.length > 1) {\n        node = new Group();\n      } else if (objects.length === 1) {\n        node = objects[0];\n      } else {\n        node = new Object3D();\n      }\n      if (node !== objects[0]) {\n        for (let i = 0, il = objects.length; i < il; i++) {\n          node.add(objects[i]);\n        }\n      }\n      if (nodeDef.name) {\n        node.userData.name = nodeDef.name;\n        node.name = nodeName;\n      }\n      assignExtrasToUserData(node, nodeDef);\n      if (nodeDef.extensions)\n        addUnknownExtensionsToUserData(extensions, node, nodeDef);\n      if (nodeDef.matrix !== void 0) {\n        const matrix = new Matrix4();\n        matrix.fromArray(nodeDef.matrix);\n        node.applyMatrix4(matrix);\n      } else {\n        if (nodeDef.translation !== void 0) {\n          node.position.fromArray(nodeDef.translation);\n        }\n        if (nodeDef.rotation !== void 0) {\n          node.quaternion.fromArray(nodeDef.rotation);\n        }\n        if (nodeDef.scale !== void 0) {\n          node.scale.fromArray(nodeDef.scale);\n        }\n      }\n      if (!parser.associations.has(node)) {\n        parser.associations.set(node, {});\n      }\n      parser.associations.get(node).nodes = nodeIndex;\n      return node;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n   * @param {number} sceneIndex\n   * @return {Promise<Group>}\n   */\n  loadScene(sceneIndex) {\n    const json = this.json;\n    const extensions = this.extensions;\n    const sceneDef = this.json.scenes[sceneIndex];\n    const parser = this;\n    const scene = new Group();\n    if (sceneDef.name)\n      scene.name = parser.createUniqueName(sceneDef.name);\n    assignExtrasToUserData(scene, sceneDef);\n    if (sceneDef.extensions)\n      addUnknownExtensionsToUserData(extensions, scene, sceneDef);\n    const nodeIds = sceneDef.nodes || [];\n    const pending = [];\n    for (let i = 0, il = nodeIds.length; i < il; i++) {\n      pending.push(buildNodeHierarchy(nodeIds[i], scene, json, parser));\n    }\n    return Promise.all(pending).then(function() {\n      const reduceAssociations = (node) => {\n        const reducedAssociations = /* @__PURE__ */ new Map();\n        for (const [key, value] of parser.associations) {\n          if (key instanceof Material || key instanceof Texture) {\n            reducedAssociations.set(key, value);\n          }\n        }\n        node.traverse((node2) => {\n          const mappings = parser.associations.get(node2);\n          if (mappings != null) {\n            reducedAssociations.set(node2, mappings);\n          }\n        });\n        return reducedAssociations;\n      };\n      parser.associations = reduceAssociations(scene);\n      return scene;\n    });\n  }\n};\nfunction buildNodeHierarchy(nodeId, parentObject, json, parser) {\n  const nodeDef = json.nodes[nodeId];\n  return parser.getDependency(\"node\", nodeId).then(function(node) {\n    if (nodeDef.skin === void 0)\n      return node;\n    let skinEntry;\n    return parser.getDependency(\"skin\", nodeDef.skin).then(function(skin) {\n      skinEntry = skin;\n      const pendingJoints = [];\n      for (let i = 0, il = skinEntry.joints.length; i < il; i++) {\n        pendingJoints.push(parser.getDependency(\"node\", skinEntry.joints[i]));\n      }\n      return Promise.all(pendingJoints);\n    }).then(function(jointNodes) {\n      node.traverse(function(mesh) {\n        if (!mesh.isMesh)\n          return;\n        const bones = [];\n        const boneInverses = [];\n        for (let j = 0, jl = jointNodes.length; j < jl; j++) {\n          const jointNode = jointNodes[j];\n          if (jointNode) {\n            bones.push(jointNode);\n            const mat = new Matrix4();\n            if (skinEntry.inverseBindMatrices !== void 0) {\n              mat.fromArray(skinEntry.inverseBindMatrices.array, j * 16);\n            }\n            boneInverses.push(mat);\n          } else {\n            console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[j]);\n          }\n        }\n        mesh.bind(new Skeleton(bones, boneInverses), mesh.matrixWorld);\n      });\n      return node;\n    });\n  }).then(function(node) {\n    parentObject.add(node);\n    const pending = [];\n    if (nodeDef.children) {\n      const children = nodeDef.children;\n      for (let i = 0, il = children.length; i < il; i++) {\n        const child = children[i];\n        pending.push(buildNodeHierarchy(child, node, json, parser));\n      }\n    }\n    return Promise.all(pending);\n  });\n}\nfunction computeBounds(geometry, primitiveDef, parser) {\n  const attributes = primitiveDef.attributes;\n  const box = new Box3();\n  if (attributes.POSITION !== void 0) {\n    const accessor = parser.json.accessors[attributes.POSITION];\n    const min = accessor.min;\n    const max2 = accessor.max;\n    if (min !== void 0 && max2 !== void 0) {\n      box.set(\n        new Vector3(min[0], min[1], min[2]),\n        new Vector3(max2[0], max2[1], max2[2])\n      );\n      if (accessor.normalized) {\n        const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n        box.min.multiplyScalar(boxScale);\n        box.max.multiplyScalar(boxScale);\n      }\n    } else {\n      console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n      return;\n    }\n  } else {\n    return;\n  }\n  const targets = primitiveDef.targets;\n  if (targets !== void 0) {\n    const maxDisplacement = new Vector3();\n    const vector = new Vector3();\n    for (let i = 0, il = targets.length; i < il; i++) {\n      const target2 = targets[i];\n      if (target2.POSITION !== void 0) {\n        const accessor = parser.json.accessors[target2.POSITION];\n        const min = accessor.min;\n        const max2 = accessor.max;\n        if (min !== void 0 && max2 !== void 0) {\n          vector.setX(Math.max(Math.abs(min[0]), Math.abs(max2[0])));\n          vector.setY(Math.max(Math.abs(min[1]), Math.abs(max2[1])));\n          vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max2[2])));\n          if (accessor.normalized) {\n            const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n            vector.multiplyScalar(boxScale);\n          }\n          maxDisplacement.max(vector);\n        } else {\n          console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n        }\n      }\n    }\n    box.expandByVector(maxDisplacement);\n  }\n  geometry.boundingBox = box;\n  const sphere = new Sphere();\n  box.getCenter(sphere.center);\n  sphere.radius = box.min.distanceTo(box.max) / 2;\n  geometry.boundingSphere = sphere;\n}\nfunction addPrimitiveAttributes(geometry, primitiveDef, parser) {\n  const attributes = primitiveDef.attributes;\n  const pending = [];\n  function assignAttributeAccessor(accessorIndex, attributeName) {\n    return parser.getDependency(\"accessor\", accessorIndex).then(function(accessor) {\n      geometry.setAttribute(attributeName, accessor);\n    });\n  }\n  for (const gltfAttributeName in attributes) {\n    const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase();\n    if (threeAttributeName in geometry.attributes)\n      continue;\n    pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\n  }\n  if (primitiveDef.indices !== void 0 && !geometry.index) {\n    const accessor = parser.getDependency(\"accessor\", primitiveDef.indices).then(function(accessor2) {\n      geometry.setIndex(accessor2);\n    });\n    pending.push(accessor);\n  }\n  assignExtrasToUserData(geometry, primitiveDef);\n  computeBounds(geometry, primitiveDef, parser);\n  return Promise.all(pending).then(function() {\n    return primitiveDef.targets !== void 0 ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry;\n  });\n}\nfunction toTrianglesDrawMode(geometry, drawMode) {\n  let index = geometry.getIndex();\n  if (index === null) {\n    const indices = [];\n    const position = geometry.getAttribute(\"position\");\n    if (position !== void 0) {\n      for (let i = 0; i < position.count; i++) {\n        indices.push(i);\n      }\n      geometry.setIndex(indices);\n      index = geometry.getIndex();\n    } else {\n      console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.\");\n      return geometry;\n    }\n  }\n  const numberOfTriangles = index.count - 2;\n  const newIndices = [];\n  if (drawMode === TriangleFanDrawMode) {\n    for (let i = 1; i <= numberOfTriangles; i++) {\n      newIndices.push(index.getX(0));\n      newIndices.push(index.getX(i));\n      newIndices.push(index.getX(i + 1));\n    }\n  } else {\n    for (let i = 0; i < numberOfTriangles; i++) {\n      if (i % 2 === 0) {\n        newIndices.push(index.getX(i));\n        newIndices.push(index.getX(i + 1));\n        newIndices.push(index.getX(i + 2));\n      } else {\n        newIndices.push(index.getX(i + 2));\n        newIndices.push(index.getX(i + 1));\n        newIndices.push(index.getX(i));\n      }\n    }\n  }\n  if (newIndices.length / 3 !== numberOfTriangles) {\n    console.error(\"THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.\");\n  }\n  const newGeometry = geometry.clone();\n  newGeometry.setIndex(newIndices);\n  return newGeometry;\n}\n\n// node_modules/three/examples/jsm/utils/WorkerPool.js\nvar WorkerPool = class {\n  constructor(pool = 4) {\n    this.pool = pool;\n    this.queue = [];\n    this.workers = [];\n    this.workersResolve = [];\n    this.workerStatus = 0;\n  }\n  _initWorker(workerId) {\n    if (!this.workers[workerId]) {\n      const worker = this.workerCreator();\n      worker.addEventListener(\"message\", this._onMessage.bind(this, workerId));\n      this.workers[workerId] = worker;\n    }\n  }\n  _getIdleWorker() {\n    for (let i = 0; i < this.pool; i++)\n      if (!(this.workerStatus & 1 << i))\n        return i;\n    return -1;\n  }\n  _onMessage(workerId, msg) {\n    const resolve = this.workersResolve[workerId];\n    resolve && resolve(msg);\n    if (this.queue.length) {\n      const { resolve: resolve2, msg: msg2, transfer } = this.queue.shift();\n      this.workersResolve[workerId] = resolve2;\n      this.workers[workerId].postMessage(msg2, transfer);\n    } else {\n      this.workerStatus ^= 1 << workerId;\n    }\n  }\n  setWorkerCreator(workerCreator) {\n    this.workerCreator = workerCreator;\n  }\n  setWorkerLimit(pool) {\n    this.pool = pool;\n  }\n  postMessage(msg, transfer) {\n    return new Promise((resolve) => {\n      const workerId = this._getIdleWorker();\n      if (workerId !== -1) {\n        this._initWorker(workerId);\n        this.workerStatus |= 1 << workerId;\n        this.workersResolve[workerId] = resolve;\n        this.workers[workerId].postMessage(msg, transfer);\n      } else {\n        this.queue.push({ resolve, msg, transfer });\n      }\n    });\n  }\n  dispose() {\n    this.workers.forEach((worker) => worker.terminate());\n    this.workersResolve.length = 0;\n    this.workers.length = 0;\n    this.queue.length = 0;\n    this.workerStatus = 0;\n  }\n};\n\n// node_modules/three/examples/jsm/libs/ktx-parse.module.js\nvar t = 0;\nvar n = 2;\nvar p = 1;\nvar x = 2;\nvar nt = 0;\nvar ct = 9;\nvar gt = 15;\nvar yt = 16;\nvar dt = 22;\nvar Ot = 37;\nvar Ft = 43;\nvar $t = 76;\nvar se = 83;\nvar pe = 97;\nvar xe = 100;\nvar de = 103;\nvar Ae = 109;\nvar Si = class {\n  constructor() {\n    this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = 0, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: 0, descriptorBlockSize: 0, versionNumber: 2, colorModel: 0, colorPrimaries: 1, transferFunction: 2, flags: 0, texelBlockDimension: [0, 0, 0, 0], bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0], samples: [] }], this.keyValue = {}, this.globalData = null;\n  }\n};\nvar Ii = class {\n  constructor(t2, e, n2, i) {\n    this._dataView = new DataView(t2.buffer, t2.byteOffset + e, n2), this._littleEndian = i, this._offset = 0;\n  }\n  _nextUint8() {\n    const t2 = this._dataView.getUint8(this._offset);\n    return this._offset += 1, t2;\n  }\n  _nextUint16() {\n    const t2 = this._dataView.getUint16(this._offset, this._littleEndian);\n    return this._offset += 2, t2;\n  }\n  _nextUint32() {\n    const t2 = this._dataView.getUint32(this._offset, this._littleEndian);\n    return this._offset += 4, t2;\n  }\n  _nextUint64() {\n    const t2 = this._dataView.getUint32(this._offset, this._littleEndian) + 2 ** 32 * this._dataView.getUint32(this._offset + 4, this._littleEndian);\n    return this._offset += 8, t2;\n  }\n  _nextInt32() {\n    const t2 = this._dataView.getInt32(this._offset, this._littleEndian);\n    return this._offset += 4, t2;\n  }\n  _skip(t2) {\n    return this._offset += t2, this;\n  }\n  _scan(t2, e = 0) {\n    const n2 = this._offset;\n    let i = 0;\n    for (; this._dataView.getUint8(this._offset) !== e && i < t2; )\n      i++, this._offset++;\n    return i < t2 && this._offset++, new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + n2, i);\n  }\n};\nvar Oi = new Uint8Array([0]);\nvar Ti = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];\nfunction Ei(t2) {\n  return \"undefined\" != typeof TextDecoder ? new TextDecoder().decode(t2) : Buffer.from(t2).toString(\"utf8\");\n}\nfunction Pi(t2) {\n  const e = new Uint8Array(t2.buffer, t2.byteOffset, Ti.length);\n  if (e[0] !== Ti[0] || e[1] !== Ti[1] || e[2] !== Ti[2] || e[3] !== Ti[3] || e[4] !== Ti[4] || e[5] !== Ti[5] || e[6] !== Ti[6] || e[7] !== Ti[7] || e[8] !== Ti[8] || e[9] !== Ti[9] || e[10] !== Ti[10] || e[11] !== Ti[11])\n    throw new Error(\"Missing KTX 2.0 identifier.\");\n  const n2 = new Si(), i = 17 * Uint32Array.BYTES_PER_ELEMENT, s = new Ii(t2, Ti.length, i, true);\n  n2.vkFormat = s._nextUint32(), n2.typeSize = s._nextUint32(), n2.pixelWidth = s._nextUint32(), n2.pixelHeight = s._nextUint32(), n2.pixelDepth = s._nextUint32(), n2.layerCount = s._nextUint32(), n2.faceCount = s._nextUint32();\n  const a = s._nextUint32();\n  n2.supercompressionScheme = s._nextUint32();\n  const r = s._nextUint32(), o = s._nextUint32(), l = s._nextUint32(), f = s._nextUint32(), U = s._nextUint64(), c = s._nextUint64(), h = new Ii(t2, Ti.length + i, 3 * a * 8, true);\n  for (let e2 = 0; e2 < a; e2++)\n    n2.levels.push({ levelData: new Uint8Array(t2.buffer, t2.byteOffset + h._nextUint64(), h._nextUint64()), uncompressedByteLength: h._nextUint64() });\n  const _ = new Ii(t2, r, o, true), p2 = { vendorId: _._skip(4)._nextUint16(), descriptorType: _._nextUint16(), versionNumber: _._nextUint16(), descriptorBlockSize: _._nextUint16(), colorModel: _._nextUint8(), colorPrimaries: _._nextUint8(), transferFunction: _._nextUint8(), flags: _._nextUint8(), texelBlockDimension: [_._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8()], bytesPlane: [_._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8()], samples: [] }, g2 = (p2.descriptorBlockSize / 4 - 6) / 4;\n  for (let t3 = 0; t3 < g2; t3++) {\n    const e2 = { bitOffset: _._nextUint16(), bitLength: _._nextUint8(), channelType: _._nextUint8(), samplePosition: [_._nextUint8(), _._nextUint8(), _._nextUint8(), _._nextUint8()], sampleLower: -Infinity, sampleUpper: Infinity };\n    64 & e2.channelType ? (e2.sampleLower = _._nextInt32(), e2.sampleUpper = _._nextInt32()) : (e2.sampleLower = _._nextUint32(), e2.sampleUpper = _._nextUint32()), p2.samples[t3] = e2;\n  }\n  n2.dataFormatDescriptor.length = 0, n2.dataFormatDescriptor.push(p2);\n  const y = new Ii(t2, l, f, true);\n  for (; y._offset < f; ) {\n    const t3 = y._nextUint32(), e2 = y._scan(t3), i2 = Ei(e2), s2 = y._scan(t3 - e2.byteLength);\n    n2.keyValue[i2] = i2.match(/^ktx/i) ? Ei(s2) : s2, y._offset % 4 && y._skip(4 - y._offset % 4);\n  }\n  if (c <= 0)\n    return n2;\n  const x2 = new Ii(t2, U, c, true), u = x2._nextUint16(), b = x2._nextUint16(), d = x2._nextUint32(), m = x2._nextUint32(), w = x2._nextUint32(), D = x2._nextUint32(), B2 = [];\n  for (let t3 = 0; t3 < a; t3++)\n    B2.push({ imageFlags: x2._nextUint32(), rgbSliceByteOffset: x2._nextUint32(), rgbSliceByteLength: x2._nextUint32(), alphaSliceByteOffset: x2._nextUint32(), alphaSliceByteLength: x2._nextUint32() });\n  const L = U + x2._offset, A2 = L + d, k = A2 + m, v = k + w, S = new Uint8Array(t2.buffer, t2.byteOffset + L, d), I2 = new Uint8Array(t2.buffer, t2.byteOffset + A2, m), O = new Uint8Array(t2.buffer, t2.byteOffset + k, w), T = new Uint8Array(t2.buffer, t2.byteOffset + v, D);\n  return n2.globalData = { endpointCount: u, selectorCount: b, imageDescs: B2, endpointsData: S, selectorsData: I2, tablesData: O, extendedData: T }, n2;\n}\n\n// node_modules/three/examples/jsm/libs/zstddec.module.js\nvar A;\nvar I;\nvar B;\nvar g = { env: { emscripten_notify_memory_growth: function(A2) {\n  B = new Uint8Array(I.exports.memory.buffer);\n} } };\nvar Q = class {\n  init() {\n    return A || (A = \"undefined\" != typeof fetch ? fetch(\"data:application/wasm;base64,\" + C).then((A2) => A2.arrayBuffer()).then((A2) => WebAssembly.instantiate(A2, g)).then(this._init) : WebAssembly.instantiate(Buffer.from(C, \"base64\"), g).then(this._init), A);\n  }\n  _init(A2) {\n    I = A2.instance, g.env.emscripten_notify_memory_growth(0);\n  }\n  decode(A2, g2 = 0) {\n    if (!I)\n      throw new Error(\"ZSTDDecoder: Await .init() before decoding.\");\n    const Q2 = A2.byteLength, C2 = I.exports.malloc(Q2);\n    B.set(A2, C2), g2 = g2 || Number(I.exports.ZSTD_findDecompressedSize(C2, Q2));\n    const E = I.exports.malloc(g2), i = I.exports.ZSTD_decompress(E, g2, C2, Q2), D = B.slice(E, E + i);\n    return I.exports.free(C2), I.exports.free(E), D;\n  }\n};\nvar C = \"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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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\";\n\n// node_modules/three/examples/jsm/loaders/KTX2Loader.js\nvar _taskCache2 = /* @__PURE__ */ new WeakMap();\nvar _activeLoaders = 0;\nvar _zstd;\nvar KTX2Loader = class _KTX2Loader extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.transcoderPath = \"\";\n    this.transcoderBinary = null;\n    this.transcoderPending = null;\n    this.workerPool = new WorkerPool();\n    this.workerSourceURL = \"\";\n    this.workerConfig = null;\n    if (typeof MSC_TRANSCODER !== \"undefined\") {\n      console.warn(\n        'THREE.KTX2Loader: Please update to latest \"basis_transcoder\". \"msc_basis_transcoder\" is no longer supported in three.js r125+.'\n      );\n    }\n  }\n  setTranscoderPath(path) {\n    this.transcoderPath = path;\n    return this;\n  }\n  setWorkerLimit(num) {\n    this.workerPool.setWorkerLimit(num);\n    return this;\n  }\n  detectSupport(renderer) {\n    this.workerConfig = {\n      astcSupported: renderer.extensions.has(\"WEBGL_compressed_texture_astc\"),\n      etc1Supported: renderer.extensions.has(\"WEBGL_compressed_texture_etc1\"),\n      etc2Supported: renderer.extensions.has(\"WEBGL_compressed_texture_etc\"),\n      dxtSupported: renderer.extensions.has(\"WEBGL_compressed_texture_s3tc\"),\n      bptcSupported: renderer.extensions.has(\"EXT_texture_compression_bptc\"),\n      pvrtcSupported: renderer.extensions.has(\"WEBGL_compressed_texture_pvrtc\") || renderer.extensions.has(\"WEBKIT_WEBGL_compressed_texture_pvrtc\")\n    };\n    if (renderer.capabilities.isWebGL2) {\n      this.workerConfig.etc1Supported = false;\n    }\n    return this;\n  }\n  init() {\n    if (!this.transcoderPending) {\n      const jsLoader = new FileLoader(this.manager);\n      jsLoader.setPath(this.transcoderPath);\n      jsLoader.setWithCredentials(this.withCredentials);\n      const jsContent = jsLoader.loadAsync(\"basis_transcoder.js\");\n      const binaryLoader = new FileLoader(this.manager);\n      binaryLoader.setPath(this.transcoderPath);\n      binaryLoader.setResponseType(\"arraybuffer\");\n      binaryLoader.setWithCredentials(this.withCredentials);\n      const binaryContent = binaryLoader.loadAsync(\"basis_transcoder.wasm\");\n      this.transcoderPending = Promise.all([jsContent, binaryContent]).then(([jsContent2, binaryContent2]) => {\n        const fn = _KTX2Loader.BasisWorker.toString();\n        const body = [\n          \"/* constants */\",\n          \"let _EngineFormat = \" + JSON.stringify(_KTX2Loader.EngineFormat),\n          \"let _TranscoderFormat = \" + JSON.stringify(_KTX2Loader.TranscoderFormat),\n          \"let _BasisFormat = \" + JSON.stringify(_KTX2Loader.BasisFormat),\n          \"/* basis_transcoder.js */\",\n          jsContent2,\n          \"/* worker */\",\n          fn.substring(fn.indexOf(\"{\") + 1, fn.lastIndexOf(\"}\"))\n        ].join(\"\\n\");\n        this.workerSourceURL = URL.createObjectURL(new Blob([body]));\n        this.transcoderBinary = binaryContent2;\n        this.workerPool.setWorkerCreator(() => {\n          const worker = new Worker(this.workerSourceURL);\n          const transcoderBinary = this.transcoderBinary.slice(0);\n          worker.postMessage({ type: \"init\", config: this.workerConfig, transcoderBinary }, [transcoderBinary]);\n          return worker;\n        });\n      });\n      if (_activeLoaders > 0) {\n        console.warn(\n          \"THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.\"\n        );\n      }\n      _activeLoaders++;\n    }\n    return this.transcoderPending;\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (this.workerConfig === null) {\n      throw new Error(\"THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.\");\n    }\n    const loader = new FileLoader(this.manager);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, (buffer) => {\n      if (_taskCache2.has(buffer)) {\n        const cachedTask = _taskCache2.get(buffer);\n        return cachedTask.promise.then(onLoad).catch(onError);\n      }\n      this._createTexture(buffer).then((texture) => onLoad ? onLoad(texture) : null).catch(onError);\n    }, onProgress, onError);\n  }\n  _createTextureFrom(transcodeResult, container) {\n    const { mipmaps, width, height, format, type, error, dfdTransferFn, dfdFlags } = transcodeResult;\n    if (type === \"error\")\n      return Promise.reject(error);\n    const texture = container.layerCount > 1 ? new CompressedArrayTexture(mipmaps, width, height, container.layerCount, format, UnsignedByteType) : new CompressedTexture(mipmaps, width, height, format, UnsignedByteType);\n    texture.minFilter = mipmaps.length === 1 ? LinearFilter : LinearMipmapLinearFilter;\n    texture.magFilter = LinearFilter;\n    texture.generateMipmaps = false;\n    texture.needsUpdate = true;\n    texture.encoding = dfdTransferFn === x ? sRGBEncoding : LinearEncoding;\n    texture.premultiplyAlpha = !!(dfdFlags & p);\n    return texture;\n  }\n  /**\n   * @param {ArrayBuffer} buffer\n   * @param {object?} config\n   * @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}\n   */\n  async _createTexture(buffer, config = {}) {\n    const container = Pi(new Uint8Array(buffer));\n    if (container.vkFormat !== nt) {\n      return createDataTexture(container);\n    }\n    const taskConfig = config;\n    const texturePending = this.init().then(() => {\n      return this.workerPool.postMessage({ type: \"transcode\", buffer, taskConfig }, [buffer]);\n    }).then((e) => this._createTextureFrom(e.data, container));\n    _taskCache2.set(buffer, { promise: texturePending });\n    return texturePending;\n  }\n  dispose() {\n    this.workerPool.dispose();\n    if (this.workerSourceURL)\n      URL.revokeObjectURL(this.workerSourceURL);\n    _activeLoaders--;\n    return this;\n  }\n};\nKTX2Loader.BasisFormat = {\n  ETC1S: 0,\n  UASTC_4x4: 1\n};\nKTX2Loader.TranscoderFormat = {\n  ETC1: 0,\n  ETC2: 1,\n  BC1: 2,\n  BC3: 3,\n  BC4: 4,\n  BC5: 5,\n  BC7_M6_OPAQUE_ONLY: 6,\n  BC7_M5: 7,\n  PVRTC1_4_RGB: 8,\n  PVRTC1_4_RGBA: 9,\n  ASTC_4x4: 10,\n  ATC_RGB: 11,\n  ATC_RGBA_INTERPOLATED_ALPHA: 12,\n  RGBA32: 13,\n  RGB565: 14,\n  BGR565: 15,\n  RGBA4444: 16\n};\nKTX2Loader.EngineFormat = {\n  RGBAFormat,\n  RGBA_ASTC_4x4_Format,\n  RGBA_BPTC_Format,\n  RGBA_ETC2_EAC_Format,\n  RGBA_PVRTC_4BPPV1_Format,\n  RGBA_S3TC_DXT5_Format,\n  RGB_ETC1_Format,\n  RGB_ETC2_Format,\n  RGB_PVRTC_4BPPV1_Format,\n  RGB_S3TC_DXT1_Format\n};\nKTX2Loader.BasisWorker = function() {\n  let config;\n  let transcoderPending;\n  let BasisModule;\n  const EngineFormat = _EngineFormat;\n  const TranscoderFormat = _TranscoderFormat;\n  const BasisFormat = _BasisFormat;\n  self.addEventListener(\"message\", function(e) {\n    const message = e.data;\n    switch (message.type) {\n      case \"init\":\n        config = message.config;\n        init(message.transcoderBinary);\n        break;\n      case \"transcode\":\n        transcoderPending.then(() => {\n          try {\n            const { width, height, hasAlpha, mipmaps, format, dfdTransferFn, dfdFlags } = transcode(message.buffer);\n            const buffers = [];\n            for (let i = 0; i < mipmaps.length; ++i) {\n              buffers.push(mipmaps[i].data.buffer);\n            }\n            self.postMessage({ type: \"transcode\", id: message.id, width, height, hasAlpha, mipmaps, format, dfdTransferFn, dfdFlags }, buffers);\n          } catch (error) {\n            console.error(error);\n            self.postMessage({ type: \"error\", id: message.id, error: error.message });\n          }\n        });\n        break;\n    }\n  });\n  function init(wasmBinary) {\n    transcoderPending = new Promise((resolve) => {\n      BasisModule = { wasmBinary, onRuntimeInitialized: resolve };\n      BASIS(BasisModule);\n    }).then(() => {\n      BasisModule.initializeBasis();\n      if (BasisModule.KTX2File === void 0) {\n        console.warn(\"THREE.KTX2Loader: Please update Basis Universal transcoder.\");\n      }\n    });\n  }\n  function transcode(buffer) {\n    const ktx2File = new BasisModule.KTX2File(new Uint8Array(buffer));\n    function cleanup() {\n      ktx2File.close();\n      ktx2File.delete();\n    }\n    if (!ktx2File.isValid()) {\n      cleanup();\n      throw new Error(\"THREE.KTX2Loader:\tInvalid or unsupported .ktx2 file\");\n    }\n    const basisFormat = ktx2File.isUASTC() ? BasisFormat.UASTC_4x4 : BasisFormat.ETC1S;\n    const width = ktx2File.getWidth();\n    const height = ktx2File.getHeight();\n    const layers = ktx2File.getLayers() || 1;\n    const levels = ktx2File.getLevels();\n    const hasAlpha = ktx2File.getHasAlpha();\n    const dfdTransferFn = ktx2File.getDFDTransferFunc();\n    const dfdFlags = ktx2File.getDFDFlags();\n    const { transcoderFormat, engineFormat } = getTranscoderFormat(basisFormat, width, height, hasAlpha);\n    if (!width || !height || !levels) {\n      cleanup();\n      throw new Error(\"THREE.KTX2Loader:\tInvalid texture\");\n    }\n    if (!ktx2File.startTranscoding()) {\n      cleanup();\n      throw new Error(\"THREE.KTX2Loader: .startTranscoding failed\");\n    }\n    const mipmaps = [];\n    for (let mip = 0; mip < levels; mip++) {\n      const layerMips = [];\n      let mipWidth, mipHeight;\n      for (let layer = 0; layer < layers; layer++) {\n        const levelInfo = ktx2File.getImageLevelInfo(mip, layer, 0);\n        mipWidth = levelInfo.origWidth;\n        mipHeight = levelInfo.origHeight;\n        const dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, transcoderFormat));\n        const status = ktx2File.transcodeImage(\n          dst,\n          mip,\n          layer,\n          0,\n          transcoderFormat,\n          0,\n          -1,\n          -1\n        );\n        if (!status) {\n          cleanup();\n          throw new Error(\"THREE.KTX2Loader: .transcodeImage failed.\");\n        }\n        layerMips.push(dst);\n      }\n      mipmaps.push({ data: concat(layerMips), width: mipWidth, height: mipHeight });\n    }\n    cleanup();\n    return { width, height, hasAlpha, mipmaps, format: engineFormat, dfdTransferFn, dfdFlags };\n  }\n  const FORMAT_OPTIONS = [\n    {\n      if: \"astcSupported\",\n      basisFormat: [BasisFormat.UASTC_4x4],\n      transcoderFormat: [TranscoderFormat.ASTC_4x4, TranscoderFormat.ASTC_4x4],\n      engineFormat: [EngineFormat.RGBA_ASTC_4x4_Format, EngineFormat.RGBA_ASTC_4x4_Format],\n      priorityETC1S: Infinity,\n      priorityUASTC: 1,\n      needsPowerOfTwo: false\n    },\n    {\n      if: \"bptcSupported\",\n      basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n      transcoderFormat: [TranscoderFormat.BC7_M5, TranscoderFormat.BC7_M5],\n      engineFormat: [EngineFormat.RGBA_BPTC_Format, EngineFormat.RGBA_BPTC_Format],\n      priorityETC1S: 3,\n      priorityUASTC: 2,\n      needsPowerOfTwo: false\n    },\n    {\n      if: \"dxtSupported\",\n      basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n      transcoderFormat: [TranscoderFormat.BC1, TranscoderFormat.BC3],\n      engineFormat: [EngineFormat.RGB_S3TC_DXT1_Format, EngineFormat.RGBA_S3TC_DXT5_Format],\n      priorityETC1S: 4,\n      priorityUASTC: 5,\n      needsPowerOfTwo: false\n    },\n    {\n      if: \"etc2Supported\",\n      basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n      transcoderFormat: [TranscoderFormat.ETC1, TranscoderFormat.ETC2],\n      engineFormat: [EngineFormat.RGB_ETC2_Format, EngineFormat.RGBA_ETC2_EAC_Format],\n      priorityETC1S: 1,\n      priorityUASTC: 3,\n      needsPowerOfTwo: false\n    },\n    {\n      if: \"etc1Supported\",\n      basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n      transcoderFormat: [TranscoderFormat.ETC1],\n      engineFormat: [EngineFormat.RGB_ETC1_Format],\n      priorityETC1S: 2,\n      priorityUASTC: 4,\n      needsPowerOfTwo: false\n    },\n    {\n      if: \"pvrtcSupported\",\n      basisFormat: [BasisFormat.ETC1S, BasisFormat.UASTC_4x4],\n      transcoderFormat: [TranscoderFormat.PVRTC1_4_RGB, TranscoderFormat.PVRTC1_4_RGBA],\n      engineFormat: [EngineFormat.RGB_PVRTC_4BPPV1_Format, EngineFormat.RGBA_PVRTC_4BPPV1_Format],\n      priorityETC1S: 5,\n      priorityUASTC: 6,\n      needsPowerOfTwo: true\n    }\n  ];\n  const ETC1S_OPTIONS = FORMAT_OPTIONS.sort(function(a, b) {\n    return a.priorityETC1S - b.priorityETC1S;\n  });\n  const UASTC_OPTIONS = FORMAT_OPTIONS.sort(function(a, b) {\n    return a.priorityUASTC - b.priorityUASTC;\n  });\n  function getTranscoderFormat(basisFormat, width, height, hasAlpha) {\n    let transcoderFormat;\n    let engineFormat;\n    const options = basisFormat === BasisFormat.ETC1S ? ETC1S_OPTIONS : UASTC_OPTIONS;\n    for (let i = 0; i < options.length; i++) {\n      const opt = options[i];\n      if (!config[opt.if])\n        continue;\n      if (!opt.basisFormat.includes(basisFormat))\n        continue;\n      if (hasAlpha && opt.transcoderFormat.length < 2)\n        continue;\n      if (opt.needsPowerOfTwo && !(isPowerOfTwo2(width) && isPowerOfTwo2(height)))\n        continue;\n      transcoderFormat = opt.transcoderFormat[hasAlpha ? 1 : 0];\n      engineFormat = opt.engineFormat[hasAlpha ? 1 : 0];\n      return { transcoderFormat, engineFormat };\n    }\n    console.warn(\"THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32.\");\n    transcoderFormat = TranscoderFormat.RGBA32;\n    engineFormat = EngineFormat.RGBAFormat;\n    return { transcoderFormat, engineFormat };\n  }\n  function isPowerOfTwo2(value) {\n    if (value <= 2)\n      return true;\n    return (value & value - 1) === 0 && value !== 0;\n  }\n  function concat(arrays) {\n    let totalByteLength = 0;\n    for (const array of arrays) {\n      totalByteLength += array.byteLength;\n    }\n    const result = new Uint8Array(totalByteLength);\n    let byteOffset = 0;\n    for (const array of arrays) {\n      result.set(array, byteOffset);\n      byteOffset += array.byteLength;\n    }\n    return result;\n  }\n};\nvar FORMAT_MAP = {\n  [Ae]: RGBAFormat,\n  [pe]: RGBAFormat,\n  [Ot]: RGBAFormat,\n  [Ft]: RGBAFormat,\n  [de]: RGFormat,\n  [se]: RGFormat,\n  [yt]: RGFormat,\n  [dt]: RGFormat,\n  [xe]: RedFormat,\n  [$t]: RedFormat,\n  [gt]: RedFormat,\n  [ct]: RedFormat\n};\nvar TYPE_MAP = {\n  [Ae]: FloatType,\n  [pe]: HalfFloatType,\n  [Ot]: UnsignedByteType,\n  [Ft]: UnsignedByteType,\n  [de]: FloatType,\n  [se]: HalfFloatType,\n  [yt]: UnsignedByteType,\n  [dt]: UnsignedByteType,\n  [xe]: FloatType,\n  [$t]: HalfFloatType,\n  [gt]: UnsignedByteType,\n  [ct]: UnsignedByteType\n};\nvar ENCODING_MAP = {\n  [Ft]: sRGBEncoding,\n  [dt]: sRGBEncoding,\n  [gt]: sRGBEncoding\n};\nasync function createDataTexture(container) {\n  const { vkFormat, pixelWidth, pixelHeight, pixelDepth } = container;\n  if (FORMAT_MAP[vkFormat] === void 0) {\n    throw new Error(\"THREE.KTX2Loader: Unsupported vkFormat.\");\n  }\n  const level = container.levels[0];\n  let levelData;\n  let view2;\n  if (container.supercompressionScheme === t) {\n    levelData = level.levelData;\n  } else if (container.supercompressionScheme === n) {\n    if (!_zstd) {\n      _zstd = new Promise(async (resolve) => {\n        const zstd = new Q();\n        await zstd.init();\n        resolve(zstd);\n      });\n    }\n    levelData = (await _zstd).decode(level.levelData, level.uncompressedByteLength);\n  } else {\n    throw new Error(\"THREE.KTX2Loader: Unsupported supercompressionScheme.\");\n  }\n  if (TYPE_MAP[vkFormat] === FloatType) {\n    view2 = new Float32Array(\n      levelData.buffer,\n      levelData.byteOffset,\n      levelData.byteLength / Float32Array.BYTES_PER_ELEMENT\n    );\n  } else if (TYPE_MAP[vkFormat] === HalfFloatType) {\n    view2 = new Uint16Array(\n      levelData.buffer,\n      levelData.byteOffset,\n      levelData.byteLength / Uint16Array.BYTES_PER_ELEMENT\n    );\n  } else {\n    view2 = levelData;\n  }\n  const texture = pixelDepth === 0 ? new DataTexture(view2, pixelWidth, pixelHeight) : new Data3DTexture(view2, pixelWidth, pixelHeight, pixelDepth);\n  texture.type = TYPE_MAP[vkFormat];\n  texture.format = FORMAT_MAP[vkFormat];\n  texture.encoding = ENCODING_MAP[vkFormat] || LinearEncoding;\n  texture.needsUpdate = true;\n  return Promise.resolve(texture);\n}\n\n// node_modules/@google/model-viewer/lib/utilities/cache-eviction-policy.js\nvar _a;\nvar _b;\nvar $retainerCount = Symbol(\"retainerCount\");\nvar $recentlyUsed = Symbol(\"recentlyUsed\");\nvar $evict = Symbol(\"evict\");\nvar $evictionThreshold = Symbol(\"evictionThreshold\");\nvar $cache = Symbol(\"cache\");\nvar CacheEvictionPolicy = class {\n  constructor(cache2, evictionThreshold = 5) {\n    this[_a] = /* @__PURE__ */ new Map();\n    this[_b] = [];\n    this[$cache] = cache2;\n    this[$evictionThreshold] = evictionThreshold;\n  }\n  /**\n   * The eviction threshold is the maximum number of items to hold\n   * in cache indefinitely. Items within the threshold (in recently\n   * used order) will continue to be cached even if they have zero\n   * retainers.\n   */\n  set evictionThreshold(value) {\n    this[$evictionThreshold] = value;\n    this[$evict]();\n  }\n  get evictionThreshold() {\n    return this[$evictionThreshold];\n  }\n  /**\n   * A reference to the cache that operates under this policy\n   */\n  get cache() {\n    return this[$cache];\n  }\n  /**\n   * Given an item key, returns the number of retainers of that item\n   */\n  retainerCount(key) {\n    return this[$retainerCount].get(key) || 0;\n  }\n  /**\n   * Resets the internal tracking of cache item retainers. Use only in cases\n   * where it is certain that all retained cache items have been accounted for!\n   */\n  reset() {\n    this[$retainerCount].clear();\n    this[$recentlyUsed] = [];\n  }\n  /**\n   * Mark a given cache item as retained, where the item is represented\n   * by its key. An item can have any number of retainers.\n   */\n  retain(key) {\n    if (!this[$retainerCount].has(key)) {\n      this[$retainerCount].set(key, 0);\n    }\n    this[$retainerCount].set(key, this[$retainerCount].get(key) + 1);\n    const recentlyUsedIndex = this[$recentlyUsed].indexOf(key);\n    if (recentlyUsedIndex !== -1) {\n      this[$recentlyUsed].splice(recentlyUsedIndex, 1);\n    }\n    this[$recentlyUsed].unshift(key);\n    this[$evict]();\n  }\n  /**\n   * Mark a given cache item as released by one of its retainers, where the item\n   * is represented by its key. When all retainers of an item have released it,\n   * the item is considered evictable.\n   */\n  release(key) {\n    if (this[$retainerCount].has(key)) {\n      this[$retainerCount].set(key, Math.max(this[$retainerCount].get(key) - 1, 0));\n    }\n    this[$evict]();\n  }\n  [(_a = $retainerCount, _b = $recentlyUsed, $evict)]() {\n    if (this[$recentlyUsed].length < this[$evictionThreshold]) {\n      return;\n    }\n    for (let i = this[$recentlyUsed].length - 1; i >= this[$evictionThreshold]; --i) {\n      const key = this[$recentlyUsed][i];\n      const retainerCount = this[$retainerCount].get(key);\n      if (retainerCount === 0) {\n        this[$cache].delete(key);\n        this[$recentlyUsed].splice(i, 1);\n      }\n    }\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/gltf-instance/VariantMaterialLoaderPlugin.js\nvar ensureUniqueNames = (variantNames) => {\n  const uniqueNames = [];\n  const knownNames = /* @__PURE__ */ new Set();\n  for (const name of variantNames) {\n    let uniqueName = name;\n    let suffix = 0;\n    while (knownNames.has(uniqueName)) {\n      uniqueName = name + \".\" + ++suffix;\n    }\n    knownNames.add(uniqueName);\n    uniqueNames.push(uniqueName);\n  }\n  return uniqueNames;\n};\nvar mappingsArrayToTable = (extensionDef) => {\n  const table = /* @__PURE__ */ new Map();\n  for (const mapping of extensionDef.mappings) {\n    for (const variant of mapping.variants) {\n      table.set(variant, { material: null, gltfMaterialIndex: mapping.material });\n    }\n  }\n  return table;\n};\nvar GLTFMaterialsVariantsExtension = class {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = \"KHR_materials_variants\";\n  }\n  // Note that the following properties will be overridden even if they are\n  // pre-defined\n  // - gltf.userData.variants\n  // - mesh.userData.variantMaterials\n  afterRoot(gltf) {\n    const parser = this.parser;\n    const json = parser.json;\n    if (json.extensions === void 0 || json.extensions[this.name] === void 0) {\n      return null;\n    }\n    const extensionDef = json.extensions[this.name];\n    const variantsDef = extensionDef.variants || [];\n    const variants = ensureUniqueNames(variantsDef.map((v) => v.name));\n    for (const scene of gltf.scenes) {\n      scene.traverse((object) => {\n        const mesh = object;\n        if (!mesh.isMesh) {\n          return;\n        }\n        const association = parser.associations.get(mesh);\n        if (association == null || association.meshes == null || association.primitives == null) {\n          return;\n        }\n        const meshDef = json.meshes[association.meshes];\n        const primitivesDef = meshDef.primitives;\n        const primitiveDef = primitivesDef[association.primitives];\n        const extensionsDef = primitiveDef.extensions;\n        if (!extensionsDef || !extensionsDef[this.name]) {\n          return;\n        }\n        mesh.userData.variantMaterials = mappingsArrayToTable(extensionsDef[this.name]);\n      });\n    }\n    gltf.userData.variants = variants;\n    return Promise.resolve();\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/CachingGLTFLoader.js\nvar _a2;\nvar _b2;\nvar loadWithLoader = (url, loader, progressCallback = () => {\n}) => {\n  const onProgress = (event) => {\n    const fraction = event.loaded / event.total;\n    progressCallback(Math.max(0, Math.min(1, isFinite(fraction) ? fraction : 1)));\n  };\n  return new Promise((resolve, reject) => {\n    loader.load(url, resolve, onProgress, reject);\n  });\n};\nvar fetchScript = (src) => {\n  return new Promise((resolve, reject) => {\n    const script = document.createElement(\"script\");\n    document.body.appendChild(script);\n    script.onload = resolve;\n    script.onerror = reject;\n    script.async = true;\n    script.src = src;\n  });\n};\nvar cache = /* @__PURE__ */ new Map();\nvar preloaded = /* @__PURE__ */ new Map();\nvar dracoDecoderLocation;\nvar dracoLoader = new DRACOLoader();\nvar ktx2TranscoderLocation;\nvar ktx2Loader = new KTX2Loader();\nvar meshoptDecoderLocation;\nvar meshoptDecoder;\nvar $loader = Symbol(\"loader\");\nvar $evictionPolicy = Symbol(\"evictionPolicy\");\nvar $GLTFInstance = Symbol(\"GLTFInstance\");\nvar CachingGLTFLoader = class _CachingGLTFLoader extends EventDispatcher {\n  constructor(GLTFInstance2) {\n    super();\n    this[_b2] = new GLTFLoader().register((parser) => new GLTFMaterialsVariantsExtension(parser));\n    this[$GLTFInstance] = GLTFInstance2;\n    this[$loader].setDRACOLoader(dracoLoader);\n    this[$loader].setKTX2Loader(ktx2Loader);\n  }\n  static setDRACODecoderLocation(url) {\n    dracoDecoderLocation = url;\n    dracoLoader.setDecoderPath(url);\n  }\n  static getDRACODecoderLocation() {\n    return dracoDecoderLocation;\n  }\n  static setKTX2TranscoderLocation(url) {\n    ktx2TranscoderLocation = url;\n    ktx2Loader.setTranscoderPath(url);\n  }\n  static getKTX2TranscoderLocation() {\n    return ktx2TranscoderLocation;\n  }\n  static setMeshoptDecoderLocation(url) {\n    if (meshoptDecoderLocation !== url) {\n      meshoptDecoderLocation = url;\n      meshoptDecoder = fetchScript(url).then(() => MeshoptDecoder.ready).then(() => MeshoptDecoder);\n    }\n  }\n  static getMeshoptDecoderLocation() {\n    return meshoptDecoderLocation;\n  }\n  static initializeKTX2Loader(renderer) {\n    ktx2Loader.detectSupport(renderer);\n  }\n  static get cache() {\n    return cache;\n  }\n  /** @nocollapse */\n  static clearCache() {\n    cache.forEach((_value, url) => {\n      this.delete(url);\n    });\n    this[$evictionPolicy].reset();\n  }\n  static has(url) {\n    return cache.has(url);\n  }\n  /** @nocollapse */\n  static async delete(url) {\n    if (!this.has(url)) {\n      return;\n    }\n    const gltfLoads = cache.get(url);\n    preloaded.delete(url);\n    cache.delete(url);\n    const gltf = await gltfLoads;\n    gltf.dispose();\n  }\n  /**\n   * Returns true if the model that corresponds to the specified url is\n   * available in our local cache.\n   */\n  static hasFinishedLoading(url) {\n    return !!preloaded.get(url);\n  }\n  get [(_a2 = $evictionPolicy, _b2 = $loader, $evictionPolicy)]() {\n    return this.constructor[$evictionPolicy];\n  }\n  /**\n   * Preloads a glTF, populating the cache. Returns a promise that resolves\n   * when the cache is populated.\n   */\n  async preload(url, element, progressCallback = () => {\n  }) {\n    this[$loader].setWithCredentials(_CachingGLTFLoader.withCredentials);\n    this.dispatchEvent({ type: \"preload\", element, src: url });\n    if (!cache.has(url)) {\n      if (meshoptDecoder != null) {\n        this[$loader].setMeshoptDecoder(await meshoptDecoder);\n      }\n      const rawGLTFLoads = loadWithLoader(url, this[$loader], (progress) => {\n        progressCallback(progress * 0.8);\n      });\n      const GLTFInstance2 = this[$GLTFInstance];\n      const gltfInstanceLoads = rawGLTFLoads.then((rawGLTF) => {\n        return GLTFInstance2.prepare(rawGLTF);\n      }).then((preparedGLTF) => {\n        progressCallback(0.9);\n        return new GLTFInstance2(preparedGLTF);\n      }).catch((reason) => {\n        console.error(reason);\n        return new GLTFInstance2();\n      });\n      cache.set(url, gltfInstanceLoads);\n    }\n    await cache.get(url);\n    preloaded.set(url, true);\n    if (progressCallback) {\n      progressCallback(1);\n    }\n  }\n  /**\n   * Loads a glTF from the specified url and resolves a unique clone of the\n   * glTF. If the glTF has already been loaded, makes a clone of the cached\n   * copy.\n   */\n  async load(url, element, progressCallback = () => {\n  }) {\n    await this.preload(url, element, progressCallback);\n    const gltf = await cache.get(url);\n    const clone2 = await gltf.clone();\n    this[$evictionPolicy].retain(url);\n    clone2.dispose = () => {\n      this[$evictionPolicy].release(url);\n    };\n    return clone2;\n  }\n};\nCachingGLTFLoader[_a2] = new CacheEvictionPolicy(CachingGLTFLoader);\n\n// node_modules/three/examples/jsm/renderers/CSS2DRenderer.js\nvar CSS2DObject = class extends Object3D {\n  constructor(element = document.createElement(\"div\")) {\n    super();\n    this.isCSS2DObject = true;\n    this.element = element;\n    this.element.style.position = \"absolute\";\n    this.element.style.userSelect = \"none\";\n    this.element.setAttribute(\"draggable\", false);\n    this.addEventListener(\"removed\", function() {\n      this.traverse(function(object) {\n        if (object.element instanceof Element && object.element.parentNode !== null) {\n          object.element.parentNode.removeChild(object.element);\n        }\n      });\n    });\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.element = source.element.cloneNode(true);\n    return this;\n  }\n};\nvar _vector3 = new Vector3();\nvar _viewMatrix = new Matrix4();\nvar _viewProjectionMatrix = new Matrix4();\nvar _a3 = new Vector3();\nvar _b3 = new Vector3();\nvar CSS2DRenderer = class {\n  constructor(parameters = {}) {\n    const _this = this;\n    let _width, _height;\n    let _widthHalf, _heightHalf;\n    const cache2 = {\n      objects: /* @__PURE__ */ new WeakMap()\n    };\n    const domElement = parameters.element !== void 0 ? parameters.element : document.createElement(\"div\");\n    domElement.style.overflow = \"hidden\";\n    this.domElement = domElement;\n    this.getSize = function() {\n      return {\n        width: _width,\n        height: _height\n      };\n    };\n    this.render = function(scene, camera2) {\n      if (scene.matrixWorldAutoUpdate === true)\n        scene.updateMatrixWorld();\n      if (camera2.parent === null && camera2.matrixWorldAutoUpdate === true)\n        camera2.updateMatrixWorld();\n      _viewMatrix.copy(camera2.matrixWorldInverse);\n      _viewProjectionMatrix.multiplyMatrices(camera2.projectionMatrix, _viewMatrix);\n      renderObject(scene, scene, camera2);\n      zOrder2(scene);\n    };\n    this.setSize = function(width, height) {\n      _width = width;\n      _height = height;\n      _widthHalf = _width / 2;\n      _heightHalf = _height / 2;\n      domElement.style.width = width + \"px\";\n      domElement.style.height = height + \"px\";\n    };\n    function renderObject(object, scene, camera2) {\n      if (object.isCSS2DObject) {\n        _vector3.setFromMatrixPosition(object.matrixWorld);\n        _vector3.applyMatrix4(_viewProjectionMatrix);\n        const visible = object.visible === true && (_vector3.z >= -1 && _vector3.z <= 1) && object.layers.test(camera2.layers) === true;\n        object.element.style.display = visible === true ? \"\" : \"none\";\n        if (visible === true) {\n          object.onBeforeRender(_this, scene, camera2);\n          const element = object.element;\n          element.style.transform = \"translate(-50%,-50%) translate(\" + (_vector3.x * _widthHalf + _widthHalf) + \"px,\" + (-_vector3.y * _heightHalf + _heightHalf) + \"px)\";\n          if (element.parentNode !== domElement) {\n            domElement.appendChild(element);\n          }\n          object.onAfterRender(_this, scene, camera2);\n        }\n        const objectData = {\n          distanceToCameraSquared: getDistanceToSquared(camera2, object)\n        };\n        cache2.objects.set(object, objectData);\n      }\n      for (let i = 0, l = object.children.length; i < l; i++) {\n        renderObject(object.children[i], scene, camera2);\n      }\n    }\n    function getDistanceToSquared(object1, object2) {\n      _a3.setFromMatrixPosition(object1.matrixWorld);\n      _b3.setFromMatrixPosition(object2.matrixWorld);\n      return _a3.distanceToSquared(_b3);\n    }\n    function filterAndFlatten(scene) {\n      const result = [];\n      scene.traverse(function(object) {\n        if (object.isCSS2DObject)\n          result.push(object);\n      });\n      return result;\n    }\n    function zOrder2(scene) {\n      const sorted = filterAndFlatten(scene).sort(function(a, b) {\n        if (a.renderOrder !== b.renderOrder) {\n          return b.renderOrder - a.renderOrder;\n        }\n        const distanceA = cache2.objects.get(a).distanceToCameraSquared;\n        const distanceB = cache2.objects.get(b).distanceToCameraSquared;\n        return distanceA - distanceB;\n      });\n      const zMax = sorted.length;\n      for (let i = 0, l = sorted.length; i < l; i++) {\n        sorted[i].element.style.zIndex = zMax - i;\n      }\n    }\n  }\n};\n\n// node_modules/three/examples/jsm/exporters/GLTFExporter.js\nvar GLTFExporter = class {\n  constructor() {\n    this.pluginCallbacks = [];\n    this.register(function(writer) {\n      return new GLTFLightExtension(writer);\n    });\n    this.register(function(writer) {\n      return new GLTFMaterialsUnlitExtension2(writer);\n    });\n    this.register(function(writer) {\n      return new GLTFMaterialsPBRSpecularGlossiness(writer);\n    });\n    this.register(function(writer) {\n      return new GLTFMaterialsTransmissionExtension2(writer);\n    });\n    this.register(function(writer) {\n      return new GLTFMaterialsVolumeExtension2(writer);\n    });\n    this.register(function(writer) {\n      return new GLTFMaterialsClearcoatExtension2(writer);\n    });\n    this.register(function(writer) {\n      return new GLTFMaterialsIridescenceExtension2(writer);\n    });\n  }\n  register(callback) {\n    if (this.pluginCallbacks.indexOf(callback) === -1) {\n      this.pluginCallbacks.push(callback);\n    }\n    return this;\n  }\n  unregister(callback) {\n    if (this.pluginCallbacks.indexOf(callback) !== -1) {\n      this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\n    }\n    return this;\n  }\n  /**\n   * Parse scenes and generate GLTF output\n   * @param  {Scene or [THREE.Scenes]} input   Scene or Array of THREE.Scenes\n   * @param  {Function} onDone  Callback on completed\n   * @param  {Function} onError  Callback on errors\n   * @param  {Object} options options\n   */\n  parse(input, onDone, onError, options) {\n    const writer = new GLTFWriter();\n    const plugins = [];\n    for (let i = 0, il = this.pluginCallbacks.length; i < il; i++) {\n      plugins.push(this.pluginCallbacks[i](writer));\n    }\n    writer.setPlugins(plugins);\n    writer.write(input, onDone, options).catch(onError);\n  }\n  parseAsync(input, options) {\n    const scope = this;\n    return new Promise(function(resolve, reject) {\n      scope.parse(input, resolve, reject, options);\n    });\n  }\n};\nvar WEBGL_CONSTANTS2 = {\n  POINTS: 0,\n  LINES: 1,\n  LINE_LOOP: 2,\n  LINE_STRIP: 3,\n  TRIANGLES: 4,\n  TRIANGLE_STRIP: 5,\n  TRIANGLE_FAN: 6,\n  UNSIGNED_BYTE: 5121,\n  UNSIGNED_SHORT: 5123,\n  FLOAT: 5126,\n  UNSIGNED_INT: 5125,\n  ARRAY_BUFFER: 34962,\n  ELEMENT_ARRAY_BUFFER: 34963,\n  NEAREST: 9728,\n  LINEAR: 9729,\n  NEAREST_MIPMAP_NEAREST: 9984,\n  LINEAR_MIPMAP_NEAREST: 9985,\n  NEAREST_MIPMAP_LINEAR: 9986,\n  LINEAR_MIPMAP_LINEAR: 9987,\n  CLAMP_TO_EDGE: 33071,\n  MIRRORED_REPEAT: 33648,\n  REPEAT: 10497\n};\nvar THREE_TO_WEBGL = {};\nTHREE_TO_WEBGL[NearestFilter] = WEBGL_CONSTANTS2.NEAREST;\nTHREE_TO_WEBGL[NearestMipmapNearestFilter] = WEBGL_CONSTANTS2.NEAREST_MIPMAP_NEAREST;\nTHREE_TO_WEBGL[NearestMipmapLinearFilter] = WEBGL_CONSTANTS2.NEAREST_MIPMAP_LINEAR;\nTHREE_TO_WEBGL[LinearFilter] = WEBGL_CONSTANTS2.LINEAR;\nTHREE_TO_WEBGL[LinearMipmapNearestFilter] = WEBGL_CONSTANTS2.LINEAR_MIPMAP_NEAREST;\nTHREE_TO_WEBGL[LinearMipmapLinearFilter] = WEBGL_CONSTANTS2.LINEAR_MIPMAP_LINEAR;\nTHREE_TO_WEBGL[ClampToEdgeWrapping] = WEBGL_CONSTANTS2.CLAMP_TO_EDGE;\nTHREE_TO_WEBGL[RepeatWrapping] = WEBGL_CONSTANTS2.REPEAT;\nTHREE_TO_WEBGL[MirroredRepeatWrapping] = WEBGL_CONSTANTS2.MIRRORED_REPEAT;\nvar PATH_PROPERTIES2 = {\n  scale: \"scale\",\n  position: \"translation\",\n  quaternion: \"rotation\",\n  morphTargetInfluences: \"weights\"\n};\nvar GLB_HEADER_BYTES = 12;\nvar GLB_HEADER_MAGIC = 1179937895;\nvar GLB_VERSION = 2;\nvar GLB_CHUNK_PREFIX_BYTES = 8;\nvar GLB_CHUNK_TYPE_JSON = 1313821514;\nvar GLB_CHUNK_TYPE_BIN = 5130562;\nfunction equalArray(array1, array2) {\n  return array1.length === array2.length && array1.every(function(element, index) {\n    return element === array2[index];\n  });\n}\nfunction stringToArrayBuffer(text) {\n  return new TextEncoder().encode(text).buffer;\n}\nfunction isIdentityMatrix(matrix) {\n  return equalArray(matrix.elements, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n}\nfunction getMinMax(attribute, start, count) {\n  const output = {\n    min: new Array(attribute.itemSize).fill(Number.POSITIVE_INFINITY),\n    max: new Array(attribute.itemSize).fill(Number.NEGATIVE_INFINITY)\n  };\n  for (let i = start; i < start + count; i++) {\n    for (let a = 0; a < attribute.itemSize; a++) {\n      let value;\n      if (attribute.itemSize > 4) {\n        value = attribute.array[i * attribute.itemSize + a];\n      } else {\n        if (a === 0)\n          value = attribute.getX(i);\n        else if (a === 1)\n          value = attribute.getY(i);\n        else if (a === 2)\n          value = attribute.getZ(i);\n        else if (a === 3)\n          value = attribute.getW(i);\n      }\n      output.min[a] = Math.min(output.min[a], value);\n      output.max[a] = Math.max(output.max[a], value);\n    }\n  }\n  return output;\n}\nfunction getPaddedBufferSize(bufferSize) {\n  return Math.ceil(bufferSize / 4) * 4;\n}\nfunction getPaddedArrayBuffer(arrayBuffer, paddingByte = 0) {\n  const paddedLength = getPaddedBufferSize(arrayBuffer.byteLength);\n  if (paddedLength !== arrayBuffer.byteLength) {\n    const array = new Uint8Array(paddedLength);\n    array.set(new Uint8Array(arrayBuffer));\n    if (paddingByte !== 0) {\n      for (let i = arrayBuffer.byteLength; i < paddedLength; i++) {\n        array[i] = paddingByte;\n      }\n    }\n    return array.buffer;\n  }\n  return arrayBuffer;\n}\nfunction getCanvas() {\n  if (typeof document === \"undefined\" && typeof OffscreenCanvas !== \"undefined\") {\n    return new OffscreenCanvas(1, 1);\n  }\n  return document.createElement(\"canvas\");\n}\nfunction getToBlobPromise(canvas, mimeType) {\n  if (canvas.toBlob !== void 0) {\n    return new Promise((resolve) => canvas.toBlob(resolve, mimeType));\n  }\n  let quality;\n  if (mimeType === \"image/jpeg\") {\n    quality = 0.92;\n  } else if (mimeType === \"image/webp\") {\n    quality = 0.8;\n  }\n  return canvas.convertToBlob({\n    type: mimeType,\n    quality\n  });\n}\nvar GLTFWriter = class {\n  constructor() {\n    this.plugins = [];\n    this.options = {};\n    this.pending = [];\n    this.buffers = [];\n    this.byteOffset = 0;\n    this.buffers = [];\n    this.nodeMap = /* @__PURE__ */ new Map();\n    this.skins = [];\n    this.extensionsUsed = {};\n    this.uids = /* @__PURE__ */ new Map();\n    this.uid = 0;\n    this.json = {\n      asset: {\n        version: \"2.0\",\n        generator: \"THREE.GLTFExporter\"\n      }\n    };\n    this.cache = {\n      meshes: /* @__PURE__ */ new Map(),\n      attributes: /* @__PURE__ */ new Map(),\n      attributesNormalized: /* @__PURE__ */ new Map(),\n      materials: /* @__PURE__ */ new Map(),\n      textures: /* @__PURE__ */ new Map(),\n      images: /* @__PURE__ */ new Map()\n    };\n  }\n  setPlugins(plugins) {\n    this.plugins = plugins;\n  }\n  /**\n   * Parse scenes and generate GLTF output\n   * @param  {Scene or [THREE.Scenes]} input   Scene or Array of THREE.Scenes\n   * @param  {Function} onDone  Callback on completed\n   * @param  {Object} options options\n   */\n  async write(input, onDone, options) {\n    this.options = Object.assign({}, {\n      // default options\n      binary: false,\n      trs: false,\n      onlyVisible: true,\n      maxTextureSize: Infinity,\n      animations: [],\n      includeCustomExtensions: false\n    }, options);\n    if (this.options.animations.length > 0) {\n      this.options.trs = true;\n    }\n    this.processInput(input);\n    await Promise.all(this.pending);\n    const writer = this;\n    const buffers = writer.buffers;\n    const json = writer.json;\n    options = writer.options;\n    const extensionsUsed = writer.extensionsUsed;\n    const blob = new Blob(buffers, { type: \"application/octet-stream\" });\n    const extensionsUsedList = Object.keys(extensionsUsed);\n    if (extensionsUsedList.length > 0)\n      json.extensionsUsed = extensionsUsedList;\n    if (json.buffers && json.buffers.length > 0)\n      json.buffers[0].byteLength = blob.size;\n    if (options.binary === true) {\n      const reader = new FileReader();\n      reader.readAsArrayBuffer(blob);\n      reader.onloadend = function() {\n        const binaryChunk = getPaddedArrayBuffer(reader.result);\n        const binaryChunkPrefix = new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES));\n        binaryChunkPrefix.setUint32(0, binaryChunk.byteLength, true);\n        binaryChunkPrefix.setUint32(4, GLB_CHUNK_TYPE_BIN, true);\n        const jsonChunk = getPaddedArrayBuffer(stringToArrayBuffer(JSON.stringify(json)), 32);\n        const jsonChunkPrefix = new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES));\n        jsonChunkPrefix.setUint32(0, jsonChunk.byteLength, true);\n        jsonChunkPrefix.setUint32(4, GLB_CHUNK_TYPE_JSON, true);\n        const header = new ArrayBuffer(GLB_HEADER_BYTES);\n        const headerView = new DataView(header);\n        headerView.setUint32(0, GLB_HEADER_MAGIC, true);\n        headerView.setUint32(4, GLB_VERSION, true);\n        const totalByteLength = GLB_HEADER_BYTES + jsonChunkPrefix.byteLength + jsonChunk.byteLength + binaryChunkPrefix.byteLength + binaryChunk.byteLength;\n        headerView.setUint32(8, totalByteLength, true);\n        const glbBlob = new Blob([\n          header,\n          jsonChunkPrefix,\n          jsonChunk,\n          binaryChunkPrefix,\n          binaryChunk\n        ], { type: \"application/octet-stream\" });\n        const glbReader = new FileReader();\n        glbReader.readAsArrayBuffer(glbBlob);\n        glbReader.onloadend = function() {\n          onDone(glbReader.result);\n        };\n      };\n    } else {\n      if (json.buffers && json.buffers.length > 0) {\n        const reader = new FileReader();\n        reader.readAsDataURL(blob);\n        reader.onloadend = function() {\n          const base64data = reader.result;\n          json.buffers[0].uri = base64data;\n          onDone(json);\n        };\n      } else {\n        onDone(json);\n      }\n    }\n  }\n  /**\n   * Serializes a userData.\n   *\n   * @param {THREE.Object3D|THREE.Material} object\n   * @param {Object} objectDef\n   */\n  serializeUserData(object, objectDef) {\n    if (Object.keys(object.userData).length === 0)\n      return;\n    const options = this.options;\n    const extensionsUsed = this.extensionsUsed;\n    try {\n      const json = JSON.parse(JSON.stringify(object.userData));\n      if (options.includeCustomExtensions && json.gltfExtensions) {\n        if (objectDef.extensions === void 0)\n          objectDef.extensions = {};\n        for (const extensionName in json.gltfExtensions) {\n          objectDef.extensions[extensionName] = json.gltfExtensions[extensionName];\n          extensionsUsed[extensionName] = true;\n        }\n        delete json.gltfExtensions;\n      }\n      if (Object.keys(json).length > 0)\n        objectDef.extras = json;\n    } catch (error) {\n      console.warn(\"THREE.GLTFExporter: userData of '\" + object.name + \"' won't be serialized because of JSON.stringify error - \" + error.message);\n    }\n  }\n  /**\n   * Returns ids for buffer attributes.\n   * @param  {Object} object\n   * @return {Integer}\n   */\n  getUID(attribute, isRelativeCopy = false) {\n    if (this.uids.has(attribute) === false) {\n      const uids2 = /* @__PURE__ */ new Map();\n      uids2.set(true, this.uid++);\n      uids2.set(false, this.uid++);\n      this.uids.set(attribute, uids2);\n    }\n    const uids = this.uids.get(attribute);\n    return uids.get(isRelativeCopy);\n  }\n  /**\n   * Checks if normal attribute values are normalized.\n   *\n   * @param {BufferAttribute} normal\n   * @returns {Boolean}\n   */\n  isNormalizedNormalAttribute(normal) {\n    const cache2 = this.cache;\n    if (cache2.attributesNormalized.has(normal))\n      return false;\n    const v = new Vector3();\n    for (let i = 0, il = normal.count; i < il; i++) {\n      if (Math.abs(v.fromBufferAttribute(normal, i).length() - 1) > 5e-4)\n        return false;\n    }\n    return true;\n  }\n  /**\n   * Creates normalized normal buffer attribute.\n   *\n   * @param {BufferAttribute} normal\n   * @returns {BufferAttribute}\n   *\n   */\n  createNormalizedNormalAttribute(normal) {\n    const cache2 = this.cache;\n    if (cache2.attributesNormalized.has(normal))\n      return cache2.attributesNormalized.get(normal);\n    const attribute = normal.clone();\n    const v = new Vector3();\n    for (let i = 0, il = attribute.count; i < il; i++) {\n      v.fromBufferAttribute(attribute, i);\n      if (v.x === 0 && v.y === 0 && v.z === 0) {\n        v.setX(1);\n      } else {\n        v.normalize();\n      }\n      attribute.setXYZ(i, v.x, v.y, v.z);\n    }\n    cache2.attributesNormalized.set(normal, attribute);\n    return attribute;\n  }\n  /**\n   * Applies a texture transform, if present, to the map definition. Requires\n   * the KHR_texture_transform extension.\n   *\n   * @param {Object} mapDef\n   * @param {THREE.Texture} texture\n   */\n  applyTextureTransform(mapDef, texture) {\n    let didTransform = false;\n    const transformDef = {};\n    if (texture.offset.x !== 0 || texture.offset.y !== 0) {\n      transformDef.offset = texture.offset.toArray();\n      didTransform = true;\n    }\n    if (texture.rotation !== 0) {\n      transformDef.rotation = texture.rotation;\n      didTransform = true;\n    }\n    if (texture.repeat.x !== 1 || texture.repeat.y !== 1) {\n      transformDef.scale = texture.repeat.toArray();\n      didTransform = true;\n    }\n    if (didTransform) {\n      mapDef.extensions = mapDef.extensions || {};\n      mapDef.extensions[\"KHR_texture_transform\"] = transformDef;\n      this.extensionsUsed[\"KHR_texture_transform\"] = true;\n    }\n  }\n  buildMetalRoughTexture(metalnessMap, roughnessMap) {\n    if (metalnessMap === roughnessMap)\n      return metalnessMap;\n    function getEncodingConversion(map) {\n      if (map.encoding === sRGBEncoding) {\n        return function SRGBToLinear2(c) {\n          return c < 0.04045 ? c * 0.0773993808 : Math.pow(c * 0.9478672986 + 0.0521327014, 2.4);\n        };\n      }\n      return function LinearToLinear(c) {\n        return c;\n      };\n    }\n    console.warn(\"THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures.\");\n    const metalness = metalnessMap == null ? void 0 : metalnessMap.image;\n    const roughness = roughnessMap == null ? void 0 : roughnessMap.image;\n    const width = Math.max((metalness == null ? void 0 : metalness.width) || 0, (roughness == null ? void 0 : roughness.width) || 0);\n    const height = Math.max((metalness == null ? void 0 : metalness.height) || 0, (roughness == null ? void 0 : roughness.height) || 0);\n    const canvas = getCanvas();\n    canvas.width = width;\n    canvas.height = height;\n    const context = canvas.getContext(\"2d\");\n    context.fillStyle = \"#00ffff\";\n    context.fillRect(0, 0, width, height);\n    const composite = context.getImageData(0, 0, width, height);\n    if (metalness) {\n      context.drawImage(metalness, 0, 0, width, height);\n      const convert = getEncodingConversion(metalnessMap);\n      const data = context.getImageData(0, 0, width, height).data;\n      for (let i = 2; i < data.length; i += 4) {\n        composite.data[i] = convert(data[i] / 256) * 256;\n      }\n    }\n    if (roughness) {\n      context.drawImage(roughness, 0, 0, width, height);\n      const convert = getEncodingConversion(roughnessMap);\n      const data = context.getImageData(0, 0, width, height).data;\n      for (let i = 1; i < data.length; i += 4) {\n        composite.data[i] = convert(data[i] / 256) * 256;\n      }\n    }\n    context.putImageData(composite, 0, 0);\n    const reference = metalnessMap || roughnessMap;\n    const texture = reference.clone();\n    texture.source = new Source(canvas);\n    texture.encoding = LinearEncoding;\n    return texture;\n  }\n  /**\n   * Process a buffer to append to the default one.\n   * @param  {ArrayBuffer} buffer\n   * @return {Integer}\n   */\n  processBuffer(buffer) {\n    const json = this.json;\n    const buffers = this.buffers;\n    if (!json.buffers)\n      json.buffers = [{ byteLength: 0 }];\n    buffers.push(buffer);\n    return 0;\n  }\n  /**\n   * Process and generate a BufferView\n   * @param  {BufferAttribute} attribute\n   * @param  {number} componentType\n   * @param  {number} start\n   * @param  {number} count\n   * @param  {number} target (Optional) Target usage of the BufferView\n   * @return {Object}\n   */\n  processBufferView(attribute, componentType, start, count, target2) {\n    const json = this.json;\n    if (!json.bufferViews)\n      json.bufferViews = [];\n    let componentSize;\n    if (componentType === WEBGL_CONSTANTS2.UNSIGNED_BYTE) {\n      componentSize = 1;\n    } else if (componentType === WEBGL_CONSTANTS2.UNSIGNED_SHORT) {\n      componentSize = 2;\n    } else {\n      componentSize = 4;\n    }\n    const byteLength = getPaddedBufferSize(count * attribute.itemSize * componentSize);\n    const dataView = new DataView(new ArrayBuffer(byteLength));\n    let offset = 0;\n    for (let i = start; i < start + count; i++) {\n      for (let a = 0; a < attribute.itemSize; a++) {\n        let value;\n        if (attribute.itemSize > 4) {\n          value = attribute.array[i * attribute.itemSize + a];\n        } else {\n          if (a === 0)\n            value = attribute.getX(i);\n          else if (a === 1)\n            value = attribute.getY(i);\n          else if (a === 2)\n            value = attribute.getZ(i);\n          else if (a === 3)\n            value = attribute.getW(i);\n        }\n        if (componentType === WEBGL_CONSTANTS2.FLOAT) {\n          dataView.setFloat32(offset, value, true);\n        } else if (componentType === WEBGL_CONSTANTS2.UNSIGNED_INT) {\n          dataView.setUint32(offset, value, true);\n        } else if (componentType === WEBGL_CONSTANTS2.UNSIGNED_SHORT) {\n          dataView.setUint16(offset, value, true);\n        } else if (componentType === WEBGL_CONSTANTS2.UNSIGNED_BYTE) {\n          dataView.setUint8(offset, value);\n        }\n        offset += componentSize;\n      }\n    }\n    const bufferViewDef = {\n      buffer: this.processBuffer(dataView.buffer),\n      byteOffset: this.byteOffset,\n      byteLength\n    };\n    if (target2 !== void 0)\n      bufferViewDef.target = target2;\n    if (target2 === WEBGL_CONSTANTS2.ARRAY_BUFFER) {\n      bufferViewDef.byteStride = attribute.itemSize * componentSize;\n    }\n    this.byteOffset += byteLength;\n    json.bufferViews.push(bufferViewDef);\n    const output = {\n      id: json.bufferViews.length - 1,\n      byteLength: 0\n    };\n    return output;\n  }\n  /**\n   * Process and generate a BufferView from an image Blob.\n   * @param {Blob} blob\n   * @return {Promise<Integer>}\n   */\n  processBufferViewImage(blob) {\n    const writer = this;\n    const json = writer.json;\n    if (!json.bufferViews)\n      json.bufferViews = [];\n    return new Promise(function(resolve) {\n      const reader = new FileReader();\n      reader.readAsArrayBuffer(blob);\n      reader.onloadend = function() {\n        const buffer = getPaddedArrayBuffer(reader.result);\n        const bufferViewDef = {\n          buffer: writer.processBuffer(buffer),\n          byteOffset: writer.byteOffset,\n          byteLength: buffer.byteLength\n        };\n        writer.byteOffset += buffer.byteLength;\n        resolve(json.bufferViews.push(bufferViewDef) - 1);\n      };\n    });\n  }\n  /**\n   * Process attribute to generate an accessor\n   * @param  {BufferAttribute} attribute Attribute to process\n   * @param  {THREE.BufferGeometry} geometry (Optional) Geometry used for truncated draw range\n   * @param  {Integer} start (Optional)\n   * @param  {Integer} count (Optional)\n   * @return {Integer|null} Index of the processed accessor on the \"accessors\" array\n   */\n  processAccessor(attribute, geometry, start, count) {\n    const json = this.json;\n    const types = {\n      1: \"SCALAR\",\n      2: \"VEC2\",\n      3: \"VEC3\",\n      4: \"VEC4\",\n      16: \"MAT4\"\n    };\n    let componentType;\n    if (attribute.array.constructor === Float32Array) {\n      componentType = WEBGL_CONSTANTS2.FLOAT;\n    } else if (attribute.array.constructor === Uint32Array) {\n      componentType = WEBGL_CONSTANTS2.UNSIGNED_INT;\n    } else if (attribute.array.constructor === Uint16Array) {\n      componentType = WEBGL_CONSTANTS2.UNSIGNED_SHORT;\n    } else if (attribute.array.constructor === Uint8Array) {\n      componentType = WEBGL_CONSTANTS2.UNSIGNED_BYTE;\n    } else {\n      throw new Error(\"THREE.GLTFExporter: Unsupported bufferAttribute component type.\");\n    }\n    if (start === void 0)\n      start = 0;\n    if (count === void 0)\n      count = attribute.count;\n    if (count === 0)\n      return null;\n    const minMax = getMinMax(attribute, start, count);\n    let bufferViewTarget;\n    if (geometry !== void 0) {\n      bufferViewTarget = attribute === geometry.index ? WEBGL_CONSTANTS2.ELEMENT_ARRAY_BUFFER : WEBGL_CONSTANTS2.ARRAY_BUFFER;\n    }\n    const bufferView = this.processBufferView(attribute, componentType, start, count, bufferViewTarget);\n    const accessorDef = {\n      bufferView: bufferView.id,\n      byteOffset: bufferView.byteOffset,\n      componentType,\n      count,\n      max: minMax.max,\n      min: minMax.min,\n      type: types[attribute.itemSize]\n    };\n    if (attribute.normalized === true)\n      accessorDef.normalized = true;\n    if (!json.accessors)\n      json.accessors = [];\n    return json.accessors.push(accessorDef) - 1;\n  }\n  /**\n   * Process image\n   * @param  {Image} image to process\n   * @param  {Integer} format of the image (RGBAFormat)\n   * @param  {Boolean} flipY before writing out the image\n   * @param  {String} mimeType export format\n   * @return {Integer}     Index of the processed texture in the \"images\" array\n   */\n  processImage(image, format, flipY, mimeType = \"image/png\") {\n    const writer = this;\n    const cache2 = writer.cache;\n    const json = writer.json;\n    const options = writer.options;\n    const pending = writer.pending;\n    if (!cache2.images.has(image))\n      cache2.images.set(image, {});\n    const cachedImages = cache2.images.get(image);\n    const key = mimeType + \":flipY/\" + flipY.toString();\n    if (cachedImages[key] !== void 0)\n      return cachedImages[key];\n    if (!json.images)\n      json.images = [];\n    const imageDef = { mimeType };\n    const canvas = getCanvas();\n    canvas.width = Math.min(image.width, options.maxTextureSize);\n    canvas.height = Math.min(image.height, options.maxTextureSize);\n    const ctx = canvas.getContext(\"2d\");\n    if (flipY === true) {\n      ctx.translate(0, canvas.height);\n      ctx.scale(1, -1);\n    }\n    if (image.data !== void 0) {\n      if (format !== RGBAFormat) {\n        console.error(\"GLTFExporter: Only RGBAFormat is supported.\");\n      }\n      if (image.width > options.maxTextureSize || image.height > options.maxTextureSize) {\n        console.warn(\"GLTFExporter: Image size is bigger than maxTextureSize\", image);\n      }\n      const data = new Uint8ClampedArray(image.height * image.width * 4);\n      for (let i = 0; i < data.length; i += 4) {\n        data[i + 0] = image.data[i + 0];\n        data[i + 1] = image.data[i + 1];\n        data[i + 2] = image.data[i + 2];\n        data[i + 3] = image.data[i + 3];\n      }\n      ctx.putImageData(new ImageData(data, image.width, image.height), 0, 0);\n    } else {\n      ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n    }\n    if (options.binary === true) {\n      pending.push(\n        getToBlobPromise(canvas, mimeType).then((blob) => writer.processBufferViewImage(blob)).then((bufferViewIndex) => {\n          imageDef.bufferView = bufferViewIndex;\n        })\n      );\n    } else {\n      if (canvas.toDataURL !== void 0) {\n        imageDef.uri = canvas.toDataURL(mimeType);\n      } else {\n        pending.push(\n          getToBlobPromise(canvas, mimeType).then((blob) => new FileReader().readAsDataURL(blob)).then((dataURL) => {\n            imageDef.uri = dataURL;\n          })\n        );\n      }\n    }\n    const index = json.images.push(imageDef) - 1;\n    cachedImages[key] = index;\n    return index;\n  }\n  /**\n   * Process sampler\n   * @param  {Texture} map Texture to process\n   * @return {Integer}     Index of the processed texture in the \"samplers\" array\n   */\n  processSampler(map) {\n    const json = this.json;\n    if (!json.samplers)\n      json.samplers = [];\n    const samplerDef = {\n      magFilter: THREE_TO_WEBGL[map.magFilter],\n      minFilter: THREE_TO_WEBGL[map.minFilter],\n      wrapS: THREE_TO_WEBGL[map.wrapS],\n      wrapT: THREE_TO_WEBGL[map.wrapT]\n    };\n    return json.samplers.push(samplerDef) - 1;\n  }\n  /**\n   * Process texture\n   * @param  {Texture} map Map to process\n   * @return {Integer} Index of the processed texture in the \"textures\" array\n   */\n  processTexture(map) {\n    const cache2 = this.cache;\n    const json = this.json;\n    if (cache2.textures.has(map))\n      return cache2.textures.get(map);\n    if (!json.textures)\n      json.textures = [];\n    let mimeType = map.userData.mimeType;\n    if (mimeType === \"image/webp\")\n      mimeType = \"image/png\";\n    const textureDef = {\n      sampler: this.processSampler(map),\n      source: this.processImage(map.image, map.format, map.flipY, mimeType)\n    };\n    if (map.name)\n      textureDef.name = map.name;\n    this._invokeAll(function(ext) {\n      ext.writeTexture && ext.writeTexture(map, textureDef);\n    });\n    const index = json.textures.push(textureDef) - 1;\n    cache2.textures.set(map, index);\n    return index;\n  }\n  /**\n   * Process material\n   * @param  {THREE.Material} material Material to process\n   * @return {Integer|null} Index of the processed material in the \"materials\" array\n   */\n  processMaterial(material) {\n    const cache2 = this.cache;\n    const json = this.json;\n    if (cache2.materials.has(material))\n      return cache2.materials.get(material);\n    if (material.isShaderMaterial) {\n      console.warn(\"GLTFExporter: THREE.ShaderMaterial not supported.\");\n      return null;\n    }\n    if (!json.materials)\n      json.materials = [];\n    const materialDef = { pbrMetallicRoughness: {} };\n    if (material.isMeshStandardMaterial !== true && material.isMeshBasicMaterial !== true) {\n      console.warn(\"GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.\");\n    }\n    const color = material.color.toArray().concat([material.opacity]);\n    if (!equalArray(color, [1, 1, 1, 1])) {\n      materialDef.pbrMetallicRoughness.baseColorFactor = color;\n    }\n    if (material.isMeshStandardMaterial) {\n      materialDef.pbrMetallicRoughness.metallicFactor = material.metalness;\n      materialDef.pbrMetallicRoughness.roughnessFactor = material.roughness;\n    } else {\n      materialDef.pbrMetallicRoughness.metallicFactor = 0.5;\n      materialDef.pbrMetallicRoughness.roughnessFactor = 0.5;\n    }\n    if (material.metalnessMap || material.roughnessMap) {\n      const metalRoughTexture = this.buildMetalRoughTexture(material.metalnessMap, material.roughnessMap);\n      const metalRoughMapDef = { index: this.processTexture(metalRoughTexture) };\n      this.applyTextureTransform(metalRoughMapDef, metalRoughTexture);\n      materialDef.pbrMetallicRoughness.metallicRoughnessTexture = metalRoughMapDef;\n    }\n    if (material.map) {\n      const baseColorMapDef = { index: this.processTexture(material.map) };\n      this.applyTextureTransform(baseColorMapDef, material.map);\n      materialDef.pbrMetallicRoughness.baseColorTexture = baseColorMapDef;\n    }\n    if (material.emissive) {\n      const emissive = material.emissive.clone().multiplyScalar(material.emissiveIntensity);\n      const maxEmissiveComponent = Math.max(emissive.r, emissive.g, emissive.b);\n      if (maxEmissiveComponent > 1) {\n        emissive.multiplyScalar(1 / maxEmissiveComponent);\n        console.warn(\"THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited\");\n      }\n      if (maxEmissiveComponent > 0) {\n        materialDef.emissiveFactor = emissive.toArray();\n      }\n      if (material.emissiveMap) {\n        const emissiveMapDef = { index: this.processTexture(material.emissiveMap) };\n        this.applyTextureTransform(emissiveMapDef, material.emissiveMap);\n        materialDef.emissiveTexture = emissiveMapDef;\n      }\n    }\n    if (material.normalMap) {\n      const normalMapDef = { index: this.processTexture(material.normalMap) };\n      if (material.normalScale && material.normalScale.x !== 1) {\n        normalMapDef.scale = material.normalScale.x;\n      }\n      this.applyTextureTransform(normalMapDef, material.normalMap);\n      materialDef.normalTexture = normalMapDef;\n    }\n    if (material.aoMap) {\n      const occlusionMapDef = {\n        index: this.processTexture(material.aoMap),\n        texCoord: 1\n      };\n      if (material.aoMapIntensity !== 1) {\n        occlusionMapDef.strength = material.aoMapIntensity;\n      }\n      this.applyTextureTransform(occlusionMapDef, material.aoMap);\n      materialDef.occlusionTexture = occlusionMapDef;\n    }\n    if (material.transparent) {\n      materialDef.alphaMode = \"BLEND\";\n    } else {\n      if (material.alphaTest > 0) {\n        materialDef.alphaMode = \"MASK\";\n        materialDef.alphaCutoff = material.alphaTest;\n      }\n    }\n    if (material.side === DoubleSide)\n      materialDef.doubleSided = true;\n    if (material.name !== \"\")\n      materialDef.name = material.name;\n    this.serializeUserData(material, materialDef);\n    this._invokeAll(function(ext) {\n      ext.writeMaterial && ext.writeMaterial(material, materialDef);\n    });\n    const index = json.materials.push(materialDef) - 1;\n    cache2.materials.set(material, index);\n    return index;\n  }\n  /**\n   * Process mesh\n   * @param  {THREE.Mesh} mesh Mesh to process\n   * @return {Integer|null} Index of the processed mesh in the \"meshes\" array\n   */\n  processMesh(mesh) {\n    const cache2 = this.cache;\n    const json = this.json;\n    const meshCacheKeyParts = [mesh.geometry.uuid];\n    if (Array.isArray(mesh.material)) {\n      for (let i = 0, l = mesh.material.length; i < l; i++) {\n        meshCacheKeyParts.push(mesh.material[i].uuid);\n      }\n    } else {\n      meshCacheKeyParts.push(mesh.material.uuid);\n    }\n    const meshCacheKey = meshCacheKeyParts.join(\":\");\n    if (cache2.meshes.has(meshCacheKey))\n      return cache2.meshes.get(meshCacheKey);\n    const geometry = mesh.geometry;\n    let mode;\n    if (mesh.isLineSegments) {\n      mode = WEBGL_CONSTANTS2.LINES;\n    } else if (mesh.isLineLoop) {\n      mode = WEBGL_CONSTANTS2.LINE_LOOP;\n    } else if (mesh.isLine) {\n      mode = WEBGL_CONSTANTS2.LINE_STRIP;\n    } else if (mesh.isPoints) {\n      mode = WEBGL_CONSTANTS2.POINTS;\n    } else {\n      mode = mesh.material.wireframe ? WEBGL_CONSTANTS2.LINES : WEBGL_CONSTANTS2.TRIANGLES;\n    }\n    const meshDef = {};\n    const attributes = {};\n    const primitives = [];\n    const targets = [];\n    const nameConversion = {\n      uv: \"TEXCOORD_0\",\n      uv2: \"TEXCOORD_1\",\n      color: \"COLOR_0\",\n      skinWeight: \"WEIGHTS_0\",\n      skinIndex: \"JOINTS_0\"\n    };\n    const originalNormal = geometry.getAttribute(\"normal\");\n    if (originalNormal !== void 0 && !this.isNormalizedNormalAttribute(originalNormal)) {\n      console.warn(\"THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one.\");\n      geometry.setAttribute(\"normal\", this.createNormalizedNormalAttribute(originalNormal));\n    }\n    let modifiedAttribute = null;\n    for (let attributeName in geometry.attributes) {\n      if (attributeName.slice(0, 5) === \"morph\")\n        continue;\n      const attribute = geometry.attributes[attributeName];\n      attributeName = nameConversion[attributeName] || attributeName.toUpperCase();\n      const validVertexAttributes = /^(POSITION|NORMAL|TANGENT|TEXCOORD_\\d+|COLOR_\\d+|JOINTS_\\d+|WEIGHTS_\\d+)$/;\n      if (!validVertexAttributes.test(attributeName))\n        attributeName = \"_\" + attributeName;\n      if (cache2.attributes.has(this.getUID(attribute))) {\n        attributes[attributeName] = cache2.attributes.get(this.getUID(attribute));\n        continue;\n      }\n      modifiedAttribute = null;\n      const array = attribute.array;\n      if (attributeName === \"JOINTS_0\" && !(array instanceof Uint16Array) && !(array instanceof Uint8Array)) {\n        console.warn('GLTFExporter: Attribute \"skinIndex\" converted to type UNSIGNED_SHORT.');\n        modifiedAttribute = new BufferAttribute(new Uint16Array(array), attribute.itemSize, attribute.normalized);\n      }\n      const accessor = this.processAccessor(modifiedAttribute || attribute, geometry);\n      if (accessor !== null) {\n        attributes[attributeName] = accessor;\n        cache2.attributes.set(this.getUID(attribute), accessor);\n      }\n    }\n    if (originalNormal !== void 0)\n      geometry.setAttribute(\"normal\", originalNormal);\n    if (Object.keys(attributes).length === 0)\n      return null;\n    if (mesh.morphTargetInfluences !== void 0 && mesh.morphTargetInfluences.length > 0) {\n      const weights = [];\n      const targetNames = [];\n      const reverseDictionary = {};\n      if (mesh.morphTargetDictionary !== void 0) {\n        for (const key in mesh.morphTargetDictionary) {\n          reverseDictionary[mesh.morphTargetDictionary[key]] = key;\n        }\n      }\n      for (let i = 0; i < mesh.morphTargetInfluences.length; ++i) {\n        const target2 = {};\n        let warned = false;\n        for (const attributeName in geometry.morphAttributes) {\n          if (attributeName !== \"position\" && attributeName !== \"normal\") {\n            if (!warned) {\n              console.warn(\"GLTFExporter: Only POSITION and NORMAL morph are supported.\");\n              warned = true;\n            }\n            continue;\n          }\n          const attribute = geometry.morphAttributes[attributeName][i];\n          const gltfAttributeName = attributeName.toUpperCase();\n          const baseAttribute = geometry.attributes[attributeName];\n          if (cache2.attributes.has(this.getUID(attribute, true))) {\n            target2[gltfAttributeName] = cache2.attributes.get(this.getUID(attribute, true));\n            continue;\n          }\n          const relativeAttribute = attribute.clone();\n          if (!geometry.morphTargetsRelative) {\n            for (let j = 0, jl = attribute.count; j < jl; j++) {\n              relativeAttribute.setXYZ(\n                j,\n                attribute.getX(j) - baseAttribute.getX(j),\n                attribute.getY(j) - baseAttribute.getY(j),\n                attribute.getZ(j) - baseAttribute.getZ(j)\n              );\n            }\n          }\n          target2[gltfAttributeName] = this.processAccessor(relativeAttribute, geometry);\n          cache2.attributes.set(this.getUID(baseAttribute, true), target2[gltfAttributeName]);\n        }\n        targets.push(target2);\n        weights.push(mesh.morphTargetInfluences[i]);\n        if (mesh.morphTargetDictionary !== void 0)\n          targetNames.push(reverseDictionary[i]);\n      }\n      meshDef.weights = weights;\n      if (targetNames.length > 0) {\n        meshDef.extras = {};\n        meshDef.extras.targetNames = targetNames;\n      }\n    }\n    const isMultiMaterial = Array.isArray(mesh.material);\n    if (isMultiMaterial && geometry.groups.length === 0)\n      return null;\n    const materials = isMultiMaterial ? mesh.material : [mesh.material];\n    const groups = isMultiMaterial ? geometry.groups : [{ materialIndex: 0, start: void 0, count: void 0 }];\n    for (let i = 0, il = groups.length; i < il; i++) {\n      const primitive = {\n        mode,\n        attributes\n      };\n      this.serializeUserData(geometry, primitive);\n      if (targets.length > 0)\n        primitive.targets = targets;\n      if (geometry.index !== null) {\n        let cacheKey = this.getUID(geometry.index);\n        if (groups[i].start !== void 0 || groups[i].count !== void 0) {\n          cacheKey += \":\" + groups[i].start + \":\" + groups[i].count;\n        }\n        if (cache2.attributes.has(cacheKey)) {\n          primitive.indices = cache2.attributes.get(cacheKey);\n        } else {\n          primitive.indices = this.processAccessor(geometry.index, geometry, groups[i].start, groups[i].count);\n          cache2.attributes.set(cacheKey, primitive.indices);\n        }\n        if (primitive.indices === null)\n          delete primitive.indices;\n      }\n      const material = this.processMaterial(materials[groups[i].materialIndex]);\n      if (material !== null)\n        primitive.material = material;\n      primitives.push(primitive);\n    }\n    meshDef.primitives = primitives;\n    if (!json.meshes)\n      json.meshes = [];\n    this._invokeAll(function(ext) {\n      ext.writeMesh && ext.writeMesh(mesh, meshDef);\n    });\n    const index = json.meshes.push(meshDef) - 1;\n    cache2.meshes.set(meshCacheKey, index);\n    return index;\n  }\n  /**\n   * Process camera\n   * @param  {THREE.Camera} camera Camera to process\n   * @return {Integer}      Index of the processed mesh in the \"camera\" array\n   */\n  processCamera(camera2) {\n    const json = this.json;\n    if (!json.cameras)\n      json.cameras = [];\n    const isOrtho = camera2.isOrthographicCamera;\n    const cameraDef = {\n      type: isOrtho ? \"orthographic\" : \"perspective\"\n    };\n    if (isOrtho) {\n      cameraDef.orthographic = {\n        xmag: camera2.right * 2,\n        ymag: camera2.top * 2,\n        zfar: camera2.far <= 0 ? 1e-3 : camera2.far,\n        znear: camera2.near < 0 ? 0 : camera2.near\n      };\n    } else {\n      cameraDef.perspective = {\n        aspectRatio: camera2.aspect,\n        yfov: MathUtils.degToRad(camera2.fov),\n        zfar: camera2.far <= 0 ? 1e-3 : camera2.far,\n        znear: camera2.near < 0 ? 0 : camera2.near\n      };\n    }\n    if (camera2.name !== \"\")\n      cameraDef.name = camera2.type;\n    return json.cameras.push(cameraDef) - 1;\n  }\n  /**\n   * Creates glTF animation entry from AnimationClip object.\n   *\n   * Status:\n   * - Only properties listed in PATH_PROPERTIES may be animated.\n   *\n   * @param {THREE.AnimationClip} clip\n   * @param {THREE.Object3D} root\n   * @return {number|null}\n   */\n  processAnimation(clip, root) {\n    const json = this.json;\n    const nodeMap = this.nodeMap;\n    if (!json.animations)\n      json.animations = [];\n    clip = GLTFExporter.Utils.mergeMorphTargetTracks(clip.clone(), root);\n    const tracks = clip.tracks;\n    const channels = [];\n    const samplers = [];\n    for (let i = 0; i < tracks.length; ++i) {\n      const track = tracks[i];\n      const trackBinding = PropertyBinding.parseTrackName(track.name);\n      let trackNode = PropertyBinding.findNode(root, trackBinding.nodeName);\n      const trackProperty = PATH_PROPERTIES2[trackBinding.propertyName];\n      if (trackBinding.objectName === \"bones\") {\n        if (trackNode.isSkinnedMesh === true) {\n          trackNode = trackNode.skeleton.getBoneByName(trackBinding.objectIndex);\n        } else {\n          trackNode = void 0;\n        }\n      }\n      if (!trackNode || !trackProperty) {\n        console.warn('THREE.GLTFExporter: Could not export animation track \"%s\".', track.name);\n        return null;\n      }\n      const inputItemSize = 1;\n      let outputItemSize = track.values.length / track.times.length;\n      if (trackProperty === PATH_PROPERTIES2.morphTargetInfluences) {\n        outputItemSize /= trackNode.morphTargetInfluences.length;\n      }\n      let interpolation;\n      if (track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline === true) {\n        interpolation = \"CUBICSPLINE\";\n        outputItemSize /= 3;\n      } else if (track.getInterpolation() === InterpolateDiscrete) {\n        interpolation = \"STEP\";\n      } else {\n        interpolation = \"LINEAR\";\n      }\n      samplers.push({\n        input: this.processAccessor(new BufferAttribute(track.times, inputItemSize)),\n        output: this.processAccessor(new BufferAttribute(track.values, outputItemSize)),\n        interpolation\n      });\n      channels.push({\n        sampler: samplers.length - 1,\n        target: {\n          node: nodeMap.get(trackNode),\n          path: trackProperty\n        }\n      });\n    }\n    json.animations.push({\n      name: clip.name || \"clip_\" + json.animations.length,\n      samplers,\n      channels\n    });\n    return json.animations.length - 1;\n  }\n  /**\n   * @param {THREE.Object3D} object\n   * @return {number|null}\n   */\n  processSkin(object) {\n    const json = this.json;\n    const nodeMap = this.nodeMap;\n    const node = json.nodes[nodeMap.get(object)];\n    const skeleton = object.skeleton;\n    if (skeleton === void 0)\n      return null;\n    const rootJoint = object.skeleton.bones[0];\n    if (rootJoint === void 0)\n      return null;\n    const joints = [];\n    const inverseBindMatrices = new Float32Array(skeleton.bones.length * 16);\n    const temporaryBoneInverse = new Matrix4();\n    for (let i = 0; i < skeleton.bones.length; ++i) {\n      joints.push(nodeMap.get(skeleton.bones[i]));\n      temporaryBoneInverse.copy(skeleton.boneInverses[i]);\n      temporaryBoneInverse.multiply(object.bindMatrix).toArray(inverseBindMatrices, i * 16);\n    }\n    if (json.skins === void 0)\n      json.skins = [];\n    json.skins.push({\n      inverseBindMatrices: this.processAccessor(new BufferAttribute(inverseBindMatrices, 16)),\n      joints,\n      skeleton: nodeMap.get(rootJoint)\n    });\n    const skinIndex = node.skin = json.skins.length - 1;\n    return skinIndex;\n  }\n  /**\n   * Process Object3D node\n   * @param  {THREE.Object3D} node Object3D to processNode\n   * @return {Integer} Index of the node in the nodes list\n   */\n  processNode(object) {\n    const json = this.json;\n    const options = this.options;\n    const nodeMap = this.nodeMap;\n    if (!json.nodes)\n      json.nodes = [];\n    const nodeDef = {};\n    if (options.trs) {\n      const rotation = object.quaternion.toArray();\n      const position = object.position.toArray();\n      const scale = object.scale.toArray();\n      if (!equalArray(rotation, [0, 0, 0, 1])) {\n        nodeDef.rotation = rotation;\n      }\n      if (!equalArray(position, [0, 0, 0])) {\n        nodeDef.translation = position;\n      }\n      if (!equalArray(scale, [1, 1, 1])) {\n        nodeDef.scale = scale;\n      }\n    } else {\n      if (object.matrixAutoUpdate) {\n        object.updateMatrix();\n      }\n      if (isIdentityMatrix(object.matrix) === false) {\n        nodeDef.matrix = object.matrix.elements;\n      }\n    }\n    if (object.name !== \"\")\n      nodeDef.name = String(object.name);\n    this.serializeUserData(object, nodeDef);\n    if (object.isMesh || object.isLine || object.isPoints) {\n      const meshIndex = this.processMesh(object);\n      if (meshIndex !== null)\n        nodeDef.mesh = meshIndex;\n    } else if (object.isCamera) {\n      nodeDef.camera = this.processCamera(object);\n    }\n    if (object.isSkinnedMesh)\n      this.skins.push(object);\n    if (object.children.length > 0) {\n      const children = [];\n      for (let i = 0, l = object.children.length; i < l; i++) {\n        const child = object.children[i];\n        if (child.visible || options.onlyVisible === false) {\n          const nodeIndex2 = this.processNode(child);\n          if (nodeIndex2 !== null)\n            children.push(nodeIndex2);\n        }\n      }\n      if (children.length > 0)\n        nodeDef.children = children;\n    }\n    this._invokeAll(function(ext) {\n      ext.writeNode && ext.writeNode(object, nodeDef);\n    });\n    const nodeIndex = json.nodes.push(nodeDef) - 1;\n    nodeMap.set(object, nodeIndex);\n    return nodeIndex;\n  }\n  /**\n   * Process Scene\n   * @param  {Scene} node Scene to process\n   */\n  processScene(scene) {\n    const json = this.json;\n    const options = this.options;\n    if (!json.scenes) {\n      json.scenes = [];\n      json.scene = 0;\n    }\n    const sceneDef = {};\n    if (scene.name !== \"\")\n      sceneDef.name = scene.name;\n    json.scenes.push(sceneDef);\n    const nodes = [];\n    for (let i = 0, l = scene.children.length; i < l; i++) {\n      const child = scene.children[i];\n      if (child.visible || options.onlyVisible === false) {\n        const nodeIndex = this.processNode(child);\n        if (nodeIndex !== null)\n          nodes.push(nodeIndex);\n      }\n    }\n    if (nodes.length > 0)\n      sceneDef.nodes = nodes;\n    this.serializeUserData(scene, sceneDef);\n  }\n  /**\n   * Creates a Scene to hold a list of objects and parse it\n   * @param  {Array} objects List of objects to process\n   */\n  processObjects(objects) {\n    const scene = new Scene();\n    scene.name = \"AuxScene\";\n    for (let i = 0; i < objects.length; i++) {\n      scene.children.push(objects[i]);\n    }\n    this.processScene(scene);\n  }\n  /**\n   * @param {THREE.Object3D|Array<THREE.Object3D>} input\n   */\n  processInput(input) {\n    const options = this.options;\n    input = input instanceof Array ? input : [input];\n    this._invokeAll(function(ext) {\n      ext.beforeParse && ext.beforeParse(input);\n    });\n    const objectsWithoutScene = [];\n    for (let i = 0; i < input.length; i++) {\n      if (input[i] instanceof Scene) {\n        this.processScene(input[i]);\n      } else {\n        objectsWithoutScene.push(input[i]);\n      }\n    }\n    if (objectsWithoutScene.length > 0)\n      this.processObjects(objectsWithoutScene);\n    for (let i = 0; i < this.skins.length; ++i) {\n      this.processSkin(this.skins[i]);\n    }\n    for (let i = 0; i < options.animations.length; ++i) {\n      this.processAnimation(options.animations[i], input[0]);\n    }\n    this._invokeAll(function(ext) {\n      ext.afterParse && ext.afterParse(input);\n    });\n  }\n  _invokeAll(func) {\n    for (let i = 0, il = this.plugins.length; i < il; i++) {\n      func(this.plugins[i]);\n    }\n  }\n};\nvar GLTFLightExtension = class {\n  constructor(writer) {\n    this.writer = writer;\n    this.name = \"KHR_lights_punctual\";\n  }\n  writeNode(light, nodeDef) {\n    if (!light.isLight)\n      return;\n    if (!light.isDirectionalLight && !light.isPointLight && !light.isSpotLight) {\n      console.warn(\"THREE.GLTFExporter: Only directional, point, and spot lights are supported.\", light);\n      return;\n    }\n    const writer = this.writer;\n    const json = writer.json;\n    const extensionsUsed = writer.extensionsUsed;\n    const lightDef = {};\n    if (light.name)\n      lightDef.name = light.name;\n    lightDef.color = light.color.toArray();\n    lightDef.intensity = light.intensity;\n    if (light.isDirectionalLight) {\n      lightDef.type = \"directional\";\n    } else if (light.isPointLight) {\n      lightDef.type = \"point\";\n      if (light.distance > 0)\n        lightDef.range = light.distance;\n    } else if (light.isSpotLight) {\n      lightDef.type = \"spot\";\n      if (light.distance > 0)\n        lightDef.range = light.distance;\n      lightDef.spot = {};\n      lightDef.spot.innerConeAngle = (light.penumbra - 1) * light.angle * -1;\n      lightDef.spot.outerConeAngle = light.angle;\n    }\n    if (light.decay !== void 0 && light.decay !== 2) {\n      console.warn(\"THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2.\");\n    }\n    if (light.target && (light.target.parent !== light || light.target.position.x !== 0 || light.target.position.y !== 0 || light.target.position.z !== -1)) {\n      console.warn(\"THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1.\");\n    }\n    if (!extensionsUsed[this.name]) {\n      json.extensions = json.extensions || {};\n      json.extensions[this.name] = { lights: [] };\n      extensionsUsed[this.name] = true;\n    }\n    const lights = json.extensions[this.name].lights;\n    lights.push(lightDef);\n    nodeDef.extensions = nodeDef.extensions || {};\n    nodeDef.extensions[this.name] = { light: lights.length - 1 };\n  }\n};\nvar GLTFMaterialsUnlitExtension2 = class {\n  constructor(writer) {\n    this.writer = writer;\n    this.name = \"KHR_materials_unlit\";\n  }\n  writeMaterial(material, materialDef) {\n    if (!material.isMeshBasicMaterial)\n      return;\n    const writer = this.writer;\n    const extensionsUsed = writer.extensionsUsed;\n    materialDef.extensions = materialDef.extensions || {};\n    materialDef.extensions[this.name] = {};\n    extensionsUsed[this.name] = true;\n    materialDef.pbrMetallicRoughness.metallicFactor = 0;\n    materialDef.pbrMetallicRoughness.roughnessFactor = 0.9;\n  }\n};\nvar GLTFMaterialsPBRSpecularGlossiness = class {\n  constructor(writer) {\n    this.writer = writer;\n    this.name = \"KHR_materials_pbrSpecularGlossiness\";\n  }\n  writeMaterial(material, materialDef) {\n    if (!material.isGLTFSpecularGlossinessMaterial)\n      return;\n    const writer = this.writer;\n    const extensionsUsed = writer.extensionsUsed;\n    const extensionDef = {};\n    if (materialDef.pbrMetallicRoughness.baseColorFactor) {\n      extensionDef.diffuseFactor = materialDef.pbrMetallicRoughness.baseColorFactor;\n    }\n    const specularFactor = [1, 1, 1];\n    material.specular.toArray(specularFactor, 0);\n    extensionDef.specularFactor = specularFactor;\n    extensionDef.glossinessFactor = material.glossiness;\n    if (materialDef.pbrMetallicRoughness.baseColorTexture) {\n      extensionDef.diffuseTexture = materialDef.pbrMetallicRoughness.baseColorTexture;\n    }\n    if (material.specularMap) {\n      const specularMapDef = { index: writer.processTexture(material.specularMap) };\n      writer.applyTextureTransform(specularMapDef, material.specularMap);\n      extensionDef.specularGlossinessTexture = specularMapDef;\n    }\n    materialDef.extensions = materialDef.extensions || {};\n    materialDef.extensions[this.name] = extensionDef;\n    extensionsUsed[this.name] = true;\n  }\n};\nvar GLTFMaterialsClearcoatExtension2 = class {\n  constructor(writer) {\n    this.writer = writer;\n    this.name = \"KHR_materials_clearcoat\";\n  }\n  writeMaterial(material, materialDef) {\n    if (!material.isMeshPhysicalMaterial)\n      return;\n    const writer = this.writer;\n    const extensionsUsed = writer.extensionsUsed;\n    const extensionDef = {};\n    extensionDef.clearcoatFactor = material.clearcoat;\n    if (material.clearcoatMap) {\n      const clearcoatMapDef = { index: writer.processTexture(material.clearcoatMap) };\n      writer.applyTextureTransform(clearcoatMapDef, material.clearcoatMap);\n      extensionDef.clearcoatTexture = clearcoatMapDef;\n    }\n    extensionDef.clearcoatRoughnessFactor = material.clearcoatRoughness;\n    if (material.clearcoatRoughnessMap) {\n      const clearcoatRoughnessMapDef = { index: writer.processTexture(material.clearcoatRoughnessMap) };\n      writer.applyTextureTransform(clearcoatRoughnessMapDef, material.clearcoatRoughnessMap);\n      extensionDef.clearcoatRoughnessTexture = clearcoatRoughnessMapDef;\n    }\n    if (material.clearcoatNormalMap) {\n      const clearcoatNormalMapDef = { index: writer.processTexture(material.clearcoatNormalMap) };\n      writer.applyTextureTransform(clearcoatNormalMapDef, material.clearcoatNormalMap);\n      extensionDef.clearcoatNormalTexture = clearcoatNormalMapDef;\n    }\n    materialDef.extensions = materialDef.extensions || {};\n    materialDef.extensions[this.name] = extensionDef;\n    extensionsUsed[this.name] = true;\n  }\n};\nvar GLTFMaterialsIridescenceExtension2 = class {\n  constructor(writer) {\n    this.writer = writer;\n    this.name = \"KHR_materials_iridescence\";\n  }\n  writeMaterial(material, materialDef) {\n    if (!material.isMeshPhysicalMaterial)\n      return;\n    const writer = this.writer;\n    const extensionsUsed = writer.extensionsUsed;\n    const extensionDef = {};\n    extensionDef.iridescenceFactor = material.iridescence;\n    if (material.iridescenceMap) {\n      const iridescenceMapDef = { index: writer.processTexture(material.iridescenceMap) };\n      writer.applyTextureTransform(iridescenceMapDef, material.iridescenceMap);\n      extensionDef.iridescenceTexture = iridescenceMapDef;\n    }\n    extensionDef.iridescenceIor = material.iridescenceIOR;\n    extensionDef.iridescenceThicknessMinimum = material.iridescenceThicknessRange[0];\n    extensionDef.iridescenceThicknessMaximum = material.iridescenceThicknessRange[1];\n    if (material.iridescenceThicknessMap) {\n      const iridescenceThicknessMapDef = { index: writer.processTexture(material.iridescenceThicknessMap) };\n      writer.applyTextureTransform(iridescenceThicknessMapDef, material.iridescenceThicknessMap);\n      extensionDef.iridescenceThicknessTexture = iridescenceThicknessMapDef;\n    }\n    materialDef.extensions = materialDef.extensions || {};\n    materialDef.extensions[this.name] = extensionDef;\n    extensionsUsed[this.name] = true;\n  }\n};\nvar GLTFMaterialsTransmissionExtension2 = class {\n  constructor(writer) {\n    this.writer = writer;\n    this.name = \"KHR_materials_transmission\";\n  }\n  writeMaterial(material, materialDef) {\n    if (!material.isMeshPhysicalMaterial || material.transmission === 0)\n      return;\n    const writer = this.writer;\n    const extensionsUsed = writer.extensionsUsed;\n    const extensionDef = {};\n    extensionDef.transmissionFactor = material.transmission;\n    if (material.transmissionMap) {\n      const transmissionMapDef = { index: writer.processTexture(material.transmissionMap) };\n      writer.applyTextureTransform(transmissionMapDef, material.transmissionMap);\n      extensionDef.transmissionTexture = transmissionMapDef;\n    }\n    materialDef.extensions = materialDef.extensions || {};\n    materialDef.extensions[this.name] = extensionDef;\n    extensionsUsed[this.name] = true;\n  }\n};\nvar GLTFMaterialsVolumeExtension2 = class {\n  constructor(writer) {\n    this.writer = writer;\n    this.name = \"KHR_materials_volume\";\n  }\n  writeMaterial(material, materialDef) {\n    if (!material.isMeshPhysicalMaterial || material.transmission === 0)\n      return;\n    const writer = this.writer;\n    const extensionsUsed = writer.extensionsUsed;\n    const extensionDef = {};\n    extensionDef.thicknessFactor = material.thickness;\n    if (material.thicknessMap) {\n      const thicknessMapDef = { index: writer.processTexture(material.thicknessMap) };\n      writer.applyTextureTransform(thicknessMapDef, material.thicknessMap);\n      extensionDef.thicknessTexture = thicknessMapDef;\n    }\n    extensionDef.attenuationDistance = material.attenuationDistance;\n    extensionDef.attenuationColor = material.attenuationColor.toArray();\n    materialDef.extensions = materialDef.extensions || {};\n    materialDef.extensions[this.name] = extensionDef;\n    extensionsUsed[this.name] = true;\n  }\n};\nGLTFExporter.Utils = {\n  insertKeyframe: function(track, time) {\n    const tolerance = 1e-3;\n    const valueSize = track.getValueSize();\n    const times = new track.TimeBufferType(track.times.length + 1);\n    const values = new track.ValueBufferType(track.values.length + valueSize);\n    const interpolant = track.createInterpolant(new track.ValueBufferType(valueSize));\n    let index;\n    if (track.times.length === 0) {\n      times[0] = time;\n      for (let i = 0; i < valueSize; i++) {\n        values[i] = 0;\n      }\n      index = 0;\n    } else if (time < track.times[0]) {\n      if (Math.abs(track.times[0] - time) < tolerance)\n        return 0;\n      times[0] = time;\n      times.set(track.times, 1);\n      values.set(interpolant.evaluate(time), 0);\n      values.set(track.values, valueSize);\n      index = 0;\n    } else if (time > track.times[track.times.length - 1]) {\n      if (Math.abs(track.times[track.times.length - 1] - time) < tolerance) {\n        return track.times.length - 1;\n      }\n      times[times.length - 1] = time;\n      times.set(track.times, 0);\n      values.set(track.values, 0);\n      values.set(interpolant.evaluate(time), track.values.length);\n      index = times.length - 1;\n    } else {\n      for (let i = 0; i < track.times.length; i++) {\n        if (Math.abs(track.times[i] - time) < tolerance)\n          return i;\n        if (track.times[i] < time && track.times[i + 1] > time) {\n          times.set(track.times.slice(0, i + 1), 0);\n          times[i + 1] = time;\n          times.set(track.times.slice(i + 1), i + 2);\n          values.set(track.values.slice(0, (i + 1) * valueSize), 0);\n          values.set(interpolant.evaluate(time), (i + 1) * valueSize);\n          values.set(track.values.slice((i + 1) * valueSize), (i + 2) * valueSize);\n          index = i + 1;\n          break;\n        }\n      }\n    }\n    track.times = times;\n    track.values = values;\n    return index;\n  },\n  mergeMorphTargetTracks: function(clip, root) {\n    const tracks = [];\n    const mergedTracks = {};\n    const sourceTracks = clip.tracks;\n    for (let i = 0; i < sourceTracks.length; ++i) {\n      let sourceTrack = sourceTracks[i];\n      const sourceTrackBinding = PropertyBinding.parseTrackName(sourceTrack.name);\n      const sourceTrackNode = PropertyBinding.findNode(root, sourceTrackBinding.nodeName);\n      if (sourceTrackBinding.propertyName !== \"morphTargetInfluences\" || sourceTrackBinding.propertyIndex === void 0) {\n        tracks.push(sourceTrack);\n        continue;\n      }\n      if (sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodDiscrete && sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodLinear) {\n        if (sourceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n          throw new Error(\"THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.\");\n        }\n        console.warn(\"THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead.\");\n        sourceTrack = sourceTrack.clone();\n        sourceTrack.setInterpolation(InterpolateLinear);\n      }\n      const targetCount = sourceTrackNode.morphTargetInfluences.length;\n      const targetIndex = sourceTrackNode.morphTargetDictionary[sourceTrackBinding.propertyIndex];\n      if (targetIndex === void 0) {\n        throw new Error(\"THREE.GLTFExporter: Morph target name not found: \" + sourceTrackBinding.propertyIndex);\n      }\n      let mergedTrack;\n      if (mergedTracks[sourceTrackNode.uuid] === void 0) {\n        mergedTrack = sourceTrack.clone();\n        const values = new mergedTrack.ValueBufferType(targetCount * mergedTrack.times.length);\n        for (let j = 0; j < mergedTrack.times.length; j++) {\n          values[j * targetCount + targetIndex] = mergedTrack.values[j];\n        }\n        mergedTrack.name = (sourceTrackBinding.nodeName || \"\") + \".morphTargetInfluences\";\n        mergedTrack.values = values;\n        mergedTracks[sourceTrackNode.uuid] = mergedTrack;\n        tracks.push(mergedTrack);\n        continue;\n      }\n      const sourceInterpolant = sourceTrack.createInterpolant(new sourceTrack.ValueBufferType(1));\n      mergedTrack = mergedTracks[sourceTrackNode.uuid];\n      for (let j = 0; j < mergedTrack.times.length; j++) {\n        mergedTrack.values[j * targetCount + targetIndex] = sourceInterpolant.evaluate(mergedTrack.times[j]);\n      }\n      for (let j = 0; j < sourceTrack.times.length; j++) {\n        const keyframeIndex = this.insertKeyframe(mergedTrack, sourceTrack.times[j]);\n        mergedTrack.values[keyframeIndex * targetCount + targetIndex] = sourceTrack.values[j];\n      }\n    }\n    clip.tracks = tracks;\n    return clip;\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/gltf-instance/VariantMaterialExporterPlugin.js\nvar compatibleObject = (object) => {\n  return object.material !== void 0 && // easier than (!object.isMesh && !object.isLine &&\n  // !object.isPoints)\n  object.userData && // just in case\n  object.userData.variantMaterials && // Is this line costly?\n  !!Array.from(object.userData.variantMaterials.values()).filter((m) => compatibleMaterial(m.material));\n};\nvar compatibleMaterial = (material) => {\n  return material && material.isMaterial && !Array.isArray(material);\n};\nvar GLTFExporterMaterialsVariantsExtension = class {\n  constructor(writer) {\n    this.writer = writer;\n    this.name = \"KHR_materials_variants\";\n    this.variantNames = [];\n  }\n  beforeParse(objects) {\n    const variantNameSet = /* @__PURE__ */ new Set();\n    for (const object of objects) {\n      object.traverse((o) => {\n        if (!compatibleObject(o)) {\n          return;\n        }\n        const variantMaterials = o.userData.variantMaterials;\n        const variantDataMap = o.userData.variantData;\n        for (const [variantName, variantData] of variantDataMap) {\n          const variantMaterial = variantMaterials.get(variantData.index);\n          if (variantMaterial && compatibleMaterial(variantMaterial.material)) {\n            variantNameSet.add(variantName);\n          }\n        }\n      });\n    }\n    variantNameSet.forEach((name) => this.variantNames.push(name));\n  }\n  writeMesh(mesh, meshDef) {\n    if (!compatibleObject(mesh)) {\n      return;\n    }\n    const userData = mesh.userData;\n    const variantMaterials = userData.variantMaterials;\n    const variantDataMap = userData.variantData;\n    const mappingTable = /* @__PURE__ */ new Map();\n    const reIndexedVariants = /* @__PURE__ */ new Map();\n    const variants = Array.from(variantDataMap.values()).sort((a, b) => {\n      return a.index - b.index;\n    });\n    for (const [i, variantData] of variants.entries()) {\n      reIndexedVariants.set(variantData.index, i);\n    }\n    for (const variantData of variantDataMap.values()) {\n      const variantInstance = variantMaterials.get(variantData.index);\n      if (!variantInstance || !compatibleMaterial(variantInstance.material)) {\n        continue;\n      }\n      const materialIndex = this.writer.processMaterial(variantInstance.material);\n      if (!mappingTable.has(materialIndex)) {\n        mappingTable.set(materialIndex, { material: materialIndex, variants: [] });\n      }\n      mappingTable.get(materialIndex).variants.push(reIndexedVariants.get(variantData.index));\n    }\n    const mappingsDef = Array.from(mappingTable.values()).map((m) => {\n      return m.variants.sort((a, b) => a - b) && m;\n    }).sort((a, b) => a.material - b.material);\n    if (mappingsDef.length === 0) {\n      return;\n    }\n    const originalMaterialIndex = compatibleMaterial(userData.originalMaterial) ? this.writer.processMaterial(userData.originalMaterial) : -1;\n    for (const primitiveDef of meshDef.primitives) {\n      if (originalMaterialIndex >= 0) {\n        primitiveDef.material = originalMaterialIndex;\n      }\n      primitiveDef.extensions = primitiveDef.extensions || {};\n      primitiveDef.extensions[this.name] = { mappings: mappingsDef };\n    }\n  }\n  afterParse() {\n    if (this.variantNames.length === 0) {\n      return;\n    }\n    const root = this.writer.json;\n    root.extensions = root.extensions || {};\n    const variantsDef = this.variantNames.map((n2) => {\n      return { name: n2 };\n    });\n    root.extensions[this.name] = { variants: variantsDef };\n    this.writer.extensionsUsed[this.name] = true;\n  }\n};\n\n// node_modules/three/examples/jsm/webxr/XREstimatedLight.js\nvar SessionLightProbe = class {\n  constructor(xrLight, renderer, lightProbe, environmentEstimation, estimationStartCallback) {\n    this.xrLight = xrLight;\n    this.renderer = renderer;\n    this.lightProbe = lightProbe;\n    this.xrWebGLBinding = null;\n    this.estimationStartCallback = estimationStartCallback;\n    this.frameCallback = this.onXRFrame.bind(this);\n    const session = renderer.xr.getSession();\n    if (environmentEstimation && \"XRWebGLBinding\" in window) {\n      const cubeRenderTarget = new WebGLCubeRenderTarget(16);\n      xrLight.environment = cubeRenderTarget.texture;\n      const gl = renderer.getContext();\n      switch (session.preferredReflectionFormat) {\n        case \"srgba8\":\n          gl.getExtension(\"EXT_sRGB\");\n          break;\n        case \"rgba16f\":\n          gl.getExtension(\"OES_texture_half_float\");\n          break;\n      }\n      this.xrWebGLBinding = new XRWebGLBinding(session, gl);\n      this.lightProbe.addEventListener(\"reflectionchange\", () => {\n        this.updateReflection();\n      });\n    }\n    session.requestAnimationFrame(this.frameCallback);\n  }\n  updateReflection() {\n    const textureProperties = this.renderer.properties.get(this.xrLight.environment);\n    if (textureProperties) {\n      const cubeMap = this.xrWebGLBinding.getReflectionCubeMap(this.lightProbe);\n      if (cubeMap) {\n        textureProperties.__webglTexture = cubeMap;\n        this.xrLight.environment.needsPMREMUpdate = true;\n      }\n    }\n  }\n  onXRFrame(time, xrFrame) {\n    if (!this.xrLight) {\n      return;\n    }\n    const session = xrFrame.session;\n    session.requestAnimationFrame(this.frameCallback);\n    const lightEstimate = xrFrame.getLightEstimate(this.lightProbe);\n    if (lightEstimate) {\n      this.xrLight.lightProbe.sh.fromArray(lightEstimate.sphericalHarmonicsCoefficients);\n      this.xrLight.lightProbe.intensity = 1;\n      const intensityScalar = Math.max(\n        1,\n        Math.max(\n          lightEstimate.primaryLightIntensity.x,\n          Math.max(\n            lightEstimate.primaryLightIntensity.y,\n            lightEstimate.primaryLightIntensity.z\n          )\n        )\n      );\n      this.xrLight.directionalLight.color.setRGB(\n        lightEstimate.primaryLightIntensity.x / intensityScalar,\n        lightEstimate.primaryLightIntensity.y / intensityScalar,\n        lightEstimate.primaryLightIntensity.z / intensityScalar\n      );\n      this.xrLight.directionalLight.intensity = intensityScalar;\n      this.xrLight.directionalLight.position.copy(lightEstimate.primaryLightDirection);\n      if (this.estimationStartCallback) {\n        this.estimationStartCallback();\n        this.estimationStartCallback = null;\n      }\n    }\n  }\n  dispose() {\n    this.xrLight = null;\n    this.renderer = null;\n    this.lightProbe = null;\n    this.xrWebGLBinding = null;\n  }\n};\nvar XREstimatedLight = class extends Group {\n  constructor(renderer, environmentEstimation = true) {\n    super();\n    this.lightProbe = new LightProbe();\n    this.lightProbe.intensity = 0;\n    this.add(this.lightProbe);\n    this.directionalLight = new DirectionalLight();\n    this.directionalLight.intensity = 0;\n    this.add(this.directionalLight);\n    this.environment = null;\n    let sessionLightProbe = null;\n    let estimationStarted = false;\n    renderer.xr.addEventListener(\"sessionstart\", () => {\n      const session = renderer.xr.getSession();\n      if (\"requestLightProbe\" in session) {\n        session.requestLightProbe({\n          reflectionFormat: session.preferredReflectionFormat\n        }).then((probe) => {\n          sessionLightProbe = new SessionLightProbe(this, renderer, probe, environmentEstimation, () => {\n            estimationStarted = true;\n            this.dispatchEvent({ type: \"estimationstart\" });\n          });\n        });\n      }\n    });\n    renderer.xr.addEventListener(\"sessionend\", () => {\n      if (sessionLightProbe) {\n        sessionLightProbe.dispose();\n        sessionLightProbe = null;\n      }\n      if (estimationStarted) {\n        this.dispatchEvent({ type: \"estimationend\" });\n      }\n    });\n    this.dispose = () => {\n      if (sessionLightProbe) {\n        sessionLightProbe.dispose();\n        sessionLightProbe = null;\n      }\n      this.remove(this.lightProbe);\n      this.lightProbe = null;\n      this.remove(this.directionalLight);\n      this.directionalLight = null;\n      this.environment = null;\n    };\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/Damper.js\nvar SETTLING_TIME = 1e4;\nvar MIN_DECAY_MILLISECONDS = 1e-3;\nvar DECAY_MILLISECONDS = 50;\nvar Damper = class {\n  constructor(decayMilliseconds = DECAY_MILLISECONDS) {\n    this.velocity = 0;\n    this.naturalFrequency = 0;\n    this.setDecayTime(decayMilliseconds);\n  }\n  setDecayTime(decayMilliseconds) {\n    this.naturalFrequency = 1 / Math.max(MIN_DECAY_MILLISECONDS, decayMilliseconds);\n  }\n  update(x2, xGoal, timeStepMilliseconds, xNormalization) {\n    const nilSpeed = 2e-4 * this.naturalFrequency;\n    if (x2 == null || xNormalization === 0) {\n      return xGoal;\n    }\n    if (x2 === xGoal && this.velocity === 0) {\n      return xGoal;\n    }\n    if (timeStepMilliseconds < 0) {\n      return x2;\n    }\n    const deltaX = x2 - xGoal;\n    const intermediateVelocity = this.velocity + this.naturalFrequency * deltaX;\n    const intermediateX = deltaX + timeStepMilliseconds * intermediateVelocity;\n    const decay = Math.exp(-this.naturalFrequency * timeStepMilliseconds);\n    const newVelocity = (intermediateVelocity - this.naturalFrequency * intermediateX) * decay;\n    const acceleration = -this.naturalFrequency * (newVelocity + intermediateVelocity * decay);\n    if (Math.abs(newVelocity) < nilSpeed * Math.abs(xNormalization) && acceleration * deltaX >= 0) {\n      this.velocity = 0;\n      return xGoal;\n    } else {\n      this.velocity = newVelocity;\n      return xGoal + intermediateX * decay;\n    }\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/PlacementBox.js\nvar RADIUS = 0.2;\nvar LINE_WIDTH = 0.03;\nvar MAX_OPACITY = 0.75;\nvar SEGMENTS = 12;\nvar DELTA_PHI = Math.PI / (2 * SEGMENTS);\nvar vector2 = new Vector2();\nvar addCorner = (vertices, cornerX, cornerY) => {\n  let phi = cornerX > 0 ? cornerY > 0 ? 0 : -Math.PI / 2 : cornerY > 0 ? Math.PI / 2 : Math.PI;\n  for (let i = 0; i <= SEGMENTS; ++i) {\n    vertices.push(cornerX + (RADIUS - LINE_WIDTH) * Math.cos(phi), cornerY + (RADIUS - LINE_WIDTH) * Math.sin(phi), 0, cornerX + RADIUS * Math.cos(phi), cornerY + RADIUS * Math.sin(phi), 0);\n    phi += DELTA_PHI;\n  }\n};\nvar PlacementBox = class extends Mesh {\n  constructor(scene, side) {\n    const geometry = new BufferGeometry();\n    const triangles = [];\n    const vertices = [];\n    const { size, boundingBox } = scene;\n    const x2 = size.x / 2;\n    const y = (side === \"back\" ? size.y : size.z) / 2;\n    addCorner(vertices, x2, y);\n    addCorner(vertices, -x2, y);\n    addCorner(vertices, -x2, -y);\n    addCorner(vertices, x2, -y);\n    const numVertices = vertices.length / 3;\n    for (let i2 = 0; i2 < numVertices - 2; i2 += 2) {\n      triangles.push(i2, i2 + 1, i2 + 3, i2, i2 + 3, i2 + 2);\n    }\n    const i = numVertices - 2;\n    triangles.push(i, i + 1, 1, i, 1, 0);\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setIndex(triangles);\n    super(geometry);\n    this.side = side;\n    const material = this.material;\n    material.side = DoubleSide;\n    material.transparent = true;\n    material.opacity = 0;\n    this.goalOpacity = 0;\n    this.opacityDamper = new Damper();\n    this.hitPlane = new Mesh(new PlaneGeometry(2 * (x2 + RADIUS), 2 * (y + RADIUS)));\n    this.hitPlane.visible = false;\n    this.hitPlane.material.side = DoubleSide;\n    this.add(this.hitPlane);\n    boundingBox.getCenter(this.position);\n    switch (side) {\n      case \"bottom\":\n        this.rotateX(-Math.PI / 2);\n        this.shadowHeight = boundingBox.min.y;\n        this.position.y = this.shadowHeight;\n        break;\n      case \"back\":\n        this.shadowHeight = boundingBox.min.z;\n        this.position.z = this.shadowHeight;\n    }\n    scene.target.add(this);\n    this.offsetHeight = 0;\n  }\n  /**\n   * Get the world hit position if the touch coordinates hit the box, and null\n   * otherwise. Pass the scene in to get access to its raycaster.\n   */\n  getHit(scene, screenX, screenY) {\n    vector2.set(screenX, -screenY);\n    this.hitPlane.visible = true;\n    const hitResult = scene.positionAndNormalFromPoint(vector2, this.hitPlane);\n    this.hitPlane.visible = false;\n    return hitResult == null ? null : hitResult.position;\n  }\n  getExpandedHit(scene, screenX, screenY) {\n    this.hitPlane.scale.set(1e3, 1e3, 1e3);\n    this.hitPlane.updateMatrixWorld();\n    const hitResult = this.getHit(scene, screenX, screenY);\n    this.hitPlane.scale.set(1, 1, 1);\n    return hitResult;\n  }\n  /**\n   * Offset the height of the box relative to the bottom of the scene. Positive\n   * is up, so generally only negative values are used.\n   */\n  set offsetHeight(offset) {\n    offset -= 1e-3;\n    if (this.side === \"back\") {\n      this.position.z = this.shadowHeight + offset;\n    } else {\n      this.position.y = this.shadowHeight + offset;\n    }\n  }\n  get offsetHeight() {\n    if (this.side === \"back\") {\n      return this.position.z - this.shadowHeight;\n    } else {\n      return this.position.y - this.shadowHeight;\n    }\n  }\n  /**\n   * Set the box's visibility; it will fade in and out.\n   */\n  set show(visible) {\n    this.goalOpacity = visible ? MAX_OPACITY : 0;\n  }\n  /**\n   * Call on each frame with the frame delta to fade the box.\n   */\n  updateOpacity(delta) {\n    const material = this.material;\n    material.opacity = this.opacityDamper.update(material.opacity, this.goalOpacity, delta, 1);\n    this.visible = material.opacity > 0;\n  }\n  /**\n   * Call this to clean up Three's cache when you remove the box.\n   */\n  dispose() {\n    var _a12;\n    const { geometry, material } = this.hitPlane;\n    geometry.dispose();\n    material.dispose();\n    this.geometry.dispose();\n    this.material.dispose();\n    (_a12 = this.parent) === null || _a12 === void 0 ? void 0 : _a12.remove(this);\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/ARRenderer.js\nvar INIT_FRAMES = 30;\nvar AR_SHADOW_INTENSITY = 0.8;\nvar ROTATION_RATE = 1.5;\nvar HIT_ANGLE_DEG = 20;\nvar SCALE_SNAP_HIGH = 1.3;\nvar SCALE_SNAP_LOW = 1 / SCALE_SNAP_HIGH;\nvar MIN_VIEWPORT_SCALE = 0.25;\nvar MAX_DISTANCE = 10;\nvar ARStatus = {\n  NOT_PRESENTING: \"not-presenting\",\n  SESSION_STARTED: \"session-started\",\n  OBJECT_PLACED: \"object-placed\",\n  FAILED: \"failed\"\n};\nvar ARTracking = {\n  TRACKING: \"tracking\",\n  NOT_TRACKING: \"not-tracking\"\n};\nvar vector3 = new Vector3();\nvar matrix4 = new Matrix4();\nvar hitPosition = new Vector3();\nvar camera = new PerspectiveCamera(45, 1, 0.1, 100);\nvar ARRenderer = class extends EventDispatcher {\n  constructor(renderer) {\n    super();\n    this.renderer = renderer;\n    this.currentSession = null;\n    this.placeOnWall = false;\n    this.placementBox = null;\n    this.lastTick = null;\n    this.turntableRotation = null;\n    this.oldShadowIntensity = null;\n    this.frame = null;\n    this.initialHitSource = null;\n    this.transientHitTestSource = null;\n    this.inputSource = null;\n    this._presentedScene = null;\n    this.resolveCleanup = null;\n    this.exitWebXRButtonContainer = null;\n    this.overlay = null;\n    this.xrLight = null;\n    this.tracking = true;\n    this.frames = 0;\n    this.initialized = false;\n    this.oldTarget = new Vector3();\n    this.placementComplete = false;\n    this.isTranslating = false;\n    this.isRotating = false;\n    this.isTwoFingering = false;\n    this.lastDragPosition = new Vector3();\n    this.firstRatio = 0;\n    this.lastAngle = 0;\n    this.goalPosition = new Vector3();\n    this.goalYaw = 0;\n    this.goalScale = 1;\n    this.xDamper = new Damper();\n    this.yDamper = new Damper();\n    this.zDamper = new Damper();\n    this.yawDamper = new Damper();\n    this.scaleDamper = new Damper();\n    this.onExitWebXRButtonContainerClick = () => this.stopPresenting();\n    this.onUpdateScene = () => {\n      if (this.placementBox != null && this.isPresenting) {\n        this.placementBox.dispose();\n        this.placementBox = new PlacementBox(this.presentedScene, this.placeOnWall ? \"back\" : \"bottom\");\n      }\n    };\n    this.onSelectStart = (event) => {\n      const hitSource = this.transientHitTestSource;\n      if (hitSource == null) {\n        return;\n      }\n      const fingers = this.frame.getHitTestResultsForTransientInput(hitSource);\n      const scene = this.presentedScene;\n      const box = this.placementBox;\n      if (fingers.length === 1) {\n        this.inputSource = event.inputSource;\n        const { axes } = this.inputSource.gamepad;\n        const hitPosition2 = box.getHit(this.presentedScene, axes[0], axes[1]);\n        box.show = true;\n        if (hitPosition2 != null) {\n          this.isTranslating = true;\n          this.lastDragPosition.copy(hitPosition2);\n        } else if (this.placeOnWall === false) {\n          this.isRotating = true;\n          this.lastAngle = axes[0] * ROTATION_RATE;\n        }\n      } else if (fingers.length === 2) {\n        box.show = true;\n        this.isTwoFingering = true;\n        const { separation } = this.fingerPolar(fingers);\n        this.firstRatio = separation / scene.scale.x;\n      }\n    };\n    this.onSelectEnd = () => {\n      this.isTranslating = false;\n      this.isRotating = false;\n      this.isTwoFingering = false;\n      this.inputSource = null;\n      this.goalPosition.y += this.placementBox.offsetHeight * this.presentedScene.scale.x;\n      this.placementBox.show = false;\n    };\n    this.threeRenderer = renderer.threeRenderer;\n    this.threeRenderer.xr.enabled = true;\n  }\n  async resolveARSession() {\n    assertIsArCandidate();\n    const session = await navigator.xr.requestSession(\"immersive-ar\", {\n      requiredFeatures: [\"hit-test\"],\n      optionalFeatures: [\"dom-overlay\", \"light-estimation\"],\n      domOverlay: this.overlay ? { root: this.overlay } : void 0\n    });\n    this.threeRenderer.xr.setReferenceSpaceType(\"local\");\n    await this.threeRenderer.xr.setSession(session);\n    this.threeRenderer.xr.cameraAutoUpdate = false;\n    return session;\n  }\n  /**\n   * The currently presented scene, if any\n   */\n  get presentedScene() {\n    return this._presentedScene;\n  }\n  /**\n   * Resolves to true if the renderer has detected all the necessary qualities\n   * to support presentation in AR.\n   */\n  async supportsPresentation() {\n    try {\n      assertIsArCandidate();\n      return await navigator.xr.isSessionSupported(\"immersive-ar\");\n    } catch (error) {\n      console.warn(\"Request to present in WebXR denied:\");\n      console.warn(error);\n      console.warn(\"Falling back to next ar-mode\");\n      return false;\n    }\n  }\n  /**\n   * Present a scene in AR\n   */\n  async present(scene, environmentEstimation = false) {\n    if (this.isPresenting) {\n      console.warn(\"Cannot present while a model is already presenting\");\n    }\n    let waitForAnimationFrame = new Promise((resolve, _reject) => {\n      requestAnimationFrame(() => resolve());\n    });\n    scene.setHotspotsVisibility(false);\n    scene.queueRender();\n    await waitForAnimationFrame;\n    this._presentedScene = scene;\n    this.overlay = scene.element.shadowRoot.querySelector(\"div.default\");\n    if (environmentEstimation === true) {\n      this.xrLight = new XREstimatedLight(this.threeRenderer);\n      this.xrLight.addEventListener(\"estimationstart\", () => {\n        if (!this.isPresenting || this.xrLight == null) {\n          return;\n        }\n        const scene2 = this.presentedScene;\n        scene2.add(this.xrLight);\n        scene2.environment = this.xrLight.environment;\n      });\n    }\n    const currentSession = await this.resolveARSession();\n    currentSession.addEventListener(\"end\", () => {\n      this.postSessionCleanup();\n    }, { once: true });\n    const exitButton = scene.element.shadowRoot.querySelector(\".slot.exit-webxr-ar-button\");\n    exitButton.classList.add(\"enabled\");\n    exitButton.addEventListener(\"click\", this.onExitWebXRButtonContainerClick);\n    this.exitWebXRButtonContainer = exitButton;\n    const viewerRefSpace = await currentSession.requestReferenceSpace(\"viewer\");\n    this.tracking = true;\n    this.frames = 0;\n    this.initialized = false;\n    this.turntableRotation = scene.yaw;\n    this.goalYaw = scene.yaw;\n    this.goalScale = 1;\n    scene.background = null;\n    this.oldShadowIntensity = scene.shadowIntensity;\n    scene.setShadowIntensity(0.01);\n    this.oldTarget.copy(scene.getTarget());\n    scene.element.addEventListener(\"load\", this.onUpdateScene);\n    const radians = HIT_ANGLE_DEG * Math.PI / 180;\n    const ray = this.placeOnWall === true ? void 0 : new XRRay(new DOMPoint(0, 0, 0), { x: 0, y: -Math.sin(radians), z: -Math.cos(radians) });\n    currentSession.requestHitTestSource({ space: viewerRefSpace, offsetRay: ray }).then((hitTestSource) => {\n      this.initialHitSource = hitTestSource;\n    });\n    this.currentSession = currentSession;\n    this.placementBox = new PlacementBox(scene, this.placeOnWall ? \"back\" : \"bottom\");\n    this.placementComplete = false;\n    this.lastTick = performance.now();\n    this.dispatchEvent({ type: \"status\", status: ARStatus.SESSION_STARTED });\n  }\n  /**\n   * If currently presenting a scene in AR, stops presentation and exits AR.\n   */\n  async stopPresenting() {\n    if (!this.isPresenting) {\n      return;\n    }\n    const cleanupPromise = new Promise((resolve) => {\n      this.resolveCleanup = resolve;\n    });\n    try {\n      await this.currentSession.end();\n      await cleanupPromise;\n    } catch (error) {\n      console.warn(\"Error while trying to end WebXR AR session\");\n      console.warn(error);\n      this.postSessionCleanup();\n    }\n  }\n  /**\n   * True if a scene is currently in the process of being presented in AR\n   */\n  get isPresenting() {\n    return this.presentedScene != null;\n  }\n  get target() {\n    return this.oldTarget;\n  }\n  updateTarget() {\n    const scene = this.presentedScene;\n    if (scene != null) {\n      const target2 = scene.getTarget();\n      this.oldTarget.copy(target2);\n      if (this.placeOnWall) {\n        target2.z = scene.boundingBox.min.z;\n      } else {\n        target2.y = scene.boundingBox.min.y;\n      }\n      scene.setTarget(target2.x, target2.y, target2.z);\n    }\n  }\n  postSessionCleanup() {\n    const session = this.currentSession;\n    if (session != null) {\n      session.removeEventListener(\"selectstart\", this.onSelectStart);\n      session.removeEventListener(\"selectend\", this.onSelectEnd);\n      this.currentSession = null;\n    }\n    const scene = this.presentedScene;\n    this._presentedScene = null;\n    if (scene != null) {\n      const { element } = scene;\n      if (this.xrLight != null) {\n        scene.remove(this.xrLight);\n        this.xrLight.dispose();\n        this.xrLight = null;\n      }\n      scene.position.set(0, 0, 0);\n      scene.scale.set(1, 1, 1);\n      scene.setShadowOffset(0);\n      const yaw = this.turntableRotation;\n      if (yaw != null) {\n        scene.yaw = yaw;\n      }\n      const intensity = this.oldShadowIntensity;\n      if (intensity != null) {\n        scene.setShadowIntensity(intensity);\n      }\n      scene.setEnvironmentAndSkybox(element[$currentEnvironmentMap], element[$currentBackground]);\n      const point = this.oldTarget;\n      scene.setTarget(point.x, point.y, point.z);\n      scene.xrCamera = null;\n      scene.element.removeEventListener(\"load\", this.onUpdateScene);\n      scene.orientHotspots(0);\n      element.requestUpdate(\"cameraTarget\");\n      element.requestUpdate(\"maxCameraOrbit\");\n      element[$onResize](element.getBoundingClientRect());\n    }\n    this.renderer.height = 0;\n    const exitButton = this.exitWebXRButtonContainer;\n    if (exitButton != null) {\n      exitButton.classList.remove(\"enabled\");\n      exitButton.removeEventListener(\"click\", this.onExitWebXRButtonContainerClick);\n      this.exitWebXRButtonContainer = null;\n    }\n    const hitSource = this.transientHitTestSource;\n    if (hitSource != null) {\n      hitSource.cancel();\n      this.transientHitTestSource = null;\n    }\n    const hitSourceInitial = this.initialHitSource;\n    if (hitSourceInitial != null) {\n      hitSourceInitial.cancel();\n      this.initialHitSource = null;\n    }\n    if (this.placementBox != null) {\n      this.placementBox.dispose();\n      this.placementBox = null;\n    }\n    this.lastTick = null;\n    this.turntableRotation = null;\n    this.oldShadowIntensity = null;\n    this.frame = null;\n    this.inputSource = null;\n    this.overlay = null;\n    if (this.resolveCleanup != null) {\n      this.resolveCleanup();\n    }\n    this.dispatchEvent({ type: \"status\", status: ARStatus.NOT_PRESENTING });\n  }\n  updateView(view2) {\n    const scene = this.presentedScene;\n    const xr = this.threeRenderer.xr;\n    xr.updateCamera(camera);\n    scene.xrCamera = xr.getCamera();\n    const { elements } = scene.getCamera().matrixWorld;\n    scene.orientHotspots(Math.atan2(elements[1], elements[5]));\n    if (!this.initialized) {\n      this.placeInitially();\n      this.initialized = true;\n    }\n    if (view2.requestViewportScale && view2.recommendedViewportScale) {\n      const scale = view2.recommendedViewportScale;\n      view2.requestViewportScale(Math.max(scale, MIN_VIEWPORT_SCALE));\n    }\n    const layer = this.currentSession.renderState.baseLayer;\n    const viewport = layer.getViewport(view2);\n    this.threeRenderer.setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n  }\n  placeInitially() {\n    const scene = this.presentedScene;\n    const { position, element } = scene;\n    const xrCamera = scene.getCamera();\n    const { width, height } = this.overlay.getBoundingClientRect();\n    scene.setSize(width, height);\n    xrCamera.projectionMatrixInverse.copy(xrCamera.projectionMatrix).invert();\n    const { theta, radius } = element.getCameraOrbit();\n    const cameraDirection = xrCamera.getWorldDirection(vector3);\n    scene.yaw = Math.atan2(-cameraDirection.x, -cameraDirection.z) - theta;\n    this.goalYaw = scene.yaw;\n    position.copy(xrCamera.position).add(cameraDirection.multiplyScalar(radius));\n    this.updateTarget();\n    const target2 = scene.getTarget();\n    position.add(target2).sub(this.oldTarget);\n    this.goalPosition.copy(position);\n    scene.setHotspotsVisibility(true);\n    const { session } = this.frame;\n    session.addEventListener(\"selectstart\", this.onSelectStart);\n    session.addEventListener(\"selectend\", this.onSelectEnd);\n    session.requestHitTestSourceForTransientInput({ profile: \"generic-touchscreen\" }).then((hitTestSource) => {\n      this.transientHitTestSource = hitTestSource;\n    });\n  }\n  getTouchLocation() {\n    const { axes } = this.inputSource.gamepad;\n    let location = this.placementBox.getExpandedHit(this.presentedScene, axes[0], axes[1]);\n    if (location != null) {\n      vector3.copy(location).sub(this.presentedScene.getCamera().position);\n      if (vector3.length() > MAX_DISTANCE)\n        return null;\n    }\n    return location;\n  }\n  getHitPoint(hitResult) {\n    const refSpace = this.threeRenderer.xr.getReferenceSpace();\n    const pose = hitResult.getPose(refSpace);\n    if (pose == null) {\n      return null;\n    }\n    const hitMatrix = matrix4.fromArray(pose.transform.matrix);\n    if (this.placeOnWall === true) {\n      this.goalYaw = Math.atan2(hitMatrix.elements[4], hitMatrix.elements[6]);\n    }\n    return hitMatrix.elements[5] > 0.75 !== this.placeOnWall ? hitPosition.setFromMatrixPosition(hitMatrix) : null;\n  }\n  moveToFloor(frame) {\n    const hitSource = this.initialHitSource;\n    if (hitSource == null) {\n      return;\n    }\n    const hitTestResults = frame.getHitTestResults(hitSource);\n    if (hitTestResults.length == 0) {\n      return;\n    }\n    const hit = hitTestResults[0];\n    const hitPoint = this.getHitPoint(hit);\n    if (hitPoint == null) {\n      return;\n    }\n    this.placementBox.show = true;\n    if (!this.isTranslating) {\n      if (this.placeOnWall) {\n        this.goalPosition.copy(hitPoint);\n      } else {\n        this.goalPosition.y = hitPoint.y;\n      }\n    }\n    hitSource.cancel();\n    this.initialHitSource = null;\n    this.dispatchEvent({ type: \"status\", status: ARStatus.OBJECT_PLACED });\n  }\n  fingerPolar(fingers) {\n    const fingerOne = fingers[0].inputSource.gamepad.axes;\n    const fingerTwo = fingers[1].inputSource.gamepad.axes;\n    const deltaX = fingerTwo[0] - fingerOne[0];\n    const deltaY = fingerTwo[1] - fingerOne[1];\n    const angle = Math.atan2(deltaY, deltaX);\n    let deltaYaw = this.lastAngle - angle;\n    if (deltaYaw > Math.PI) {\n      deltaYaw -= 2 * Math.PI;\n    } else if (deltaYaw < -Math.PI) {\n      deltaYaw += 2 * Math.PI;\n    }\n    this.lastAngle = angle;\n    return {\n      separation: Math.sqrt(deltaX * deltaX + deltaY * deltaY),\n      deltaYaw\n    };\n  }\n  processInput(frame) {\n    const hitSource = this.transientHitTestSource;\n    if (hitSource == null) {\n      return;\n    }\n    if (!this.isTranslating && !this.isTwoFingering && !this.isRotating) {\n      return;\n    }\n    const fingers = frame.getHitTestResultsForTransientInput(hitSource);\n    const scene = this.presentedScene;\n    const scale = scene.scale.x;\n    if (this.isTwoFingering) {\n      if (fingers.length < 2) {\n        this.isTwoFingering = false;\n      } else {\n        const { separation, deltaYaw } = this.fingerPolar(fingers);\n        if (this.placeOnWall === false) {\n          this.goalYaw += deltaYaw;\n        }\n        if (scene.canScale) {\n          const scale2 = separation / this.firstRatio;\n          this.goalScale = scale2 < SCALE_SNAP_HIGH && scale2 > SCALE_SNAP_LOW ? 1 : scale2;\n        }\n      }\n      return;\n    } else if (fingers.length === 2) {\n      this.isTranslating = false;\n      this.isRotating = false;\n      this.isTwoFingering = true;\n      const { separation } = this.fingerPolar(fingers);\n      this.firstRatio = separation / scale;\n      return;\n    }\n    if (this.isRotating) {\n      const angle = this.inputSource.gamepad.axes[0] * ROTATION_RATE;\n      this.goalYaw += angle - this.lastAngle;\n      this.lastAngle = angle;\n    } else if (this.isTranslating) {\n      fingers.forEach((finger) => {\n        if (finger.inputSource !== this.inputSource) {\n          return;\n        }\n        let hit = null;\n        if (finger.results.length > 0) {\n          hit = this.getHitPoint(finger.results[0]);\n        }\n        if (hit == null) {\n          hit = this.getTouchLocation();\n        }\n        if (hit == null) {\n          return;\n        }\n        this.goalPosition.sub(this.lastDragPosition);\n        if (this.placeOnWall === false) {\n          const offset = hit.y - this.lastDragPosition.y;\n          if (offset < 0) {\n            this.placementBox.offsetHeight = offset / scale;\n            this.presentedScene.setShadowOffset(offset);\n            const cameraPosition = vector3.copy(scene.getCamera().position);\n            const alpha = -offset / (cameraPosition.y - hit.y);\n            cameraPosition.multiplyScalar(alpha);\n            hit.multiplyScalar(1 - alpha).add(cameraPosition);\n          }\n        }\n        this.goalPosition.add(hit);\n        this.lastDragPosition.copy(hit);\n      });\n    }\n  }\n  moveScene(delta) {\n    const scene = this.presentedScene;\n    const { position, yaw } = scene;\n    const boundingRadius = scene.boundingSphere.radius;\n    const goal = this.goalPosition;\n    const oldScale = scene.scale.x;\n    const box = this.placementBox;\n    if (!goal.equals(position) || this.goalScale !== oldScale) {\n      let { x: x2, y, z } = position;\n      x2 = this.xDamper.update(x2, goal.x, delta, boundingRadius);\n      y = this.yDamper.update(y, goal.y, delta, boundingRadius);\n      z = this.zDamper.update(z, goal.z, delta, boundingRadius);\n      position.set(x2, y, z);\n      const newScale = this.scaleDamper.update(oldScale, this.goalScale, delta, 1);\n      scene.scale.set(newScale, newScale, newScale);\n      if (!this.isTranslating) {\n        const offset = goal.y - y;\n        if (this.placementComplete && this.placeOnWall === false) {\n          box.offsetHeight = offset / newScale;\n          scene.setShadowOffset(offset);\n        } else if (offset === 0) {\n          this.placementComplete = true;\n          box.show = false;\n          scene.setShadowIntensity(AR_SHADOW_INTENSITY);\n        }\n      }\n    }\n    box.updateOpacity(delta);\n    scene.updateTarget(delta);\n    scene.yaw = this.yawDamper.update(yaw, this.goalYaw, delta, Math.PI);\n  }\n  /**\n   * Only public to make it testable.\n   */\n  onWebXRFrame(time, frame) {\n    this.frame = frame;\n    ++this.frames;\n    const refSpace = this.threeRenderer.xr.getReferenceSpace();\n    const pose = frame.getViewerPose(refSpace);\n    if (pose == null && this.tracking === true && this.frames > INIT_FRAMES) {\n      this.tracking = false;\n      this.dispatchEvent({ type: \"tracking\", status: ARTracking.NOT_TRACKING });\n    }\n    const scene = this.presentedScene;\n    if (pose == null || scene == null || !scene.element.loaded) {\n      this.threeRenderer.clear();\n      return;\n    }\n    if (this.tracking === false) {\n      this.tracking = true;\n      this.dispatchEvent({ type: \"tracking\", status: ARTracking.TRACKING });\n    }\n    let isFirstView = true;\n    for (const view2 of pose.views) {\n      this.updateView(view2);\n      if (isFirstView) {\n        this.moveToFloor(frame);\n        this.processInput(frame);\n        const delta = time - this.lastTick;\n        this.moveScene(delta);\n        this.renderer.preRender(scene, time, delta);\n        this.lastTick = time;\n        scene.renderShadow(this.threeRenderer);\n      }\n      this.threeRenderer.render(scene, scene.getCamera());\n      isFirstView = false;\n    }\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/Debugger.js\nvar Debugger = class {\n  constructor(renderer) {\n    renderer.threeRenderer.debug = { checkShaderErrors: true };\n    Promise.resolve().then(() => {\n      self.dispatchEvent(new CustomEvent(\"model-viewer-renderer-debug\", {\n        detail: {\n          renderer,\n          THREE: {\n            ShaderMaterial,\n            Texture,\n            Mesh,\n            Scene,\n            PlaneGeometry,\n            OrthographicCamera,\n            WebGLRenderTarget\n          }\n        }\n      }));\n    });\n  }\n  addScene(scene) {\n    self.dispatchEvent(new CustomEvent(\"model-viewer-scene-added-debug\", { detail: { scene } }));\n  }\n  removeScene(scene) {\n    self.dispatchEvent(new CustomEvent(\"model-viewer-scene-removed-debug\", { detail: { scene } }));\n  }\n};\n\n// node_modules/three/examples/jsm/utils/SkeletonUtils.js\nfunction clone(source) {\n  const sourceLookup = /* @__PURE__ */ new Map();\n  const cloneLookup = /* @__PURE__ */ new Map();\n  const clone2 = source.clone();\n  parallelTraverse(source, clone2, function(sourceNode, clonedNode) {\n    sourceLookup.set(clonedNode, sourceNode);\n    cloneLookup.set(sourceNode, clonedNode);\n  });\n  clone2.traverse(function(node) {\n    if (!node.isSkinnedMesh)\n      return;\n    const clonedMesh = node;\n    const sourceMesh = sourceLookup.get(node);\n    const sourceBones = sourceMesh.skeleton.bones;\n    clonedMesh.skeleton = sourceMesh.skeleton.clone();\n    clonedMesh.bindMatrix.copy(sourceMesh.bindMatrix);\n    clonedMesh.skeleton.bones = sourceBones.map(function(bone) {\n      return cloneLookup.get(bone);\n    });\n    clonedMesh.bind(clonedMesh.skeleton, clonedMesh.bindMatrix);\n  });\n  return clone2;\n}\nfunction parallelTraverse(a, b, callback) {\n  callback(a, b);\n  for (let i = 0; i < a.children.length; i++) {\n    parallelTraverse(a.children[i], b.children[i], callback);\n  }\n}\n\n// node_modules/@google/model-viewer/lib/three-components/GLTFInstance.js\nvar $prepared = Symbol(\"prepared\");\nvar $prepare = Symbol(\"prepare\");\nvar $preparedGLTF = Symbol(\"preparedGLTF\");\nvar $clone = Symbol(\"clone\");\nvar GLTFInstance = class {\n  constructor(preparedGLTF) {\n    this[$preparedGLTF] = preparedGLTF;\n  }\n  /**\n   * Prepares a given GLTF for presentation and future cloning. A GLTF that is\n   * prepared can safely have this method invoked on it multiple times; it will\n   * only be prepared once, including after being cloned.\n   */\n  static prepare(source) {\n    if (source.scene == null) {\n      throw new Error(\"Model does not have a scene\");\n    }\n    if (source[$prepared]) {\n      return source;\n    }\n    const prepared = this[$prepare](source);\n    prepared[$prepared] = true;\n    return prepared;\n  }\n  /**\n   * Override in an inheriting class to apply specialty one-time preparations\n   * for a given input GLTF.\n   */\n  static [$prepare](source) {\n    const { scene } = source;\n    const scenes = [scene];\n    return Object.assign(Object.assign({}, source), { scene, scenes });\n  }\n  get parser() {\n    return this[$preparedGLTF].parser;\n  }\n  get animations() {\n    return this[$preparedGLTF].animations;\n  }\n  get scene() {\n    return this[$preparedGLTF].scene;\n  }\n  get scenes() {\n    return this[$preparedGLTF].scenes;\n  }\n  get cameras() {\n    return this[$preparedGLTF].cameras;\n  }\n  get asset() {\n    return this[$preparedGLTF].asset;\n  }\n  get userData() {\n    return this[$preparedGLTF].userData;\n  }\n  /**\n   * Creates and returns a copy of this instance.\n   */\n  clone() {\n    const GLTFInstanceConstructor = this.constructor;\n    const clonedGLTF = this[$clone]();\n    return new GLTFInstanceConstructor(clonedGLTF);\n  }\n  /**\n   * Cleans up any retained memory that might not otherwise be released when\n   * this instance is done being used.\n   */\n  dispose() {\n    this.scenes.forEach((scene) => {\n      scene.traverse((object) => {\n        if (!object.isMesh) {\n          return;\n        }\n        const mesh = object;\n        const materials = Array.isArray(mesh.material) ? mesh.material : [mesh.material];\n        materials.forEach((material) => {\n          for (const propertyName in material) {\n            const texture = material[propertyName];\n            if (texture instanceof Texture) {\n              const image = texture.source.data;\n              if (image.close != null) {\n                image.close();\n              }\n              texture.dispose();\n            }\n          }\n          material.dispose();\n        });\n        mesh.geometry.dispose();\n      });\n    });\n  }\n  /**\n   * Override in an inheriting class to implement specialized cloning strategies\n   */\n  [$clone]() {\n    const source = this[$preparedGLTF];\n    const scene = clone(this.scene);\n    cloneVariantMaterials(scene, this.scene);\n    const scenes = [scene];\n    const userData = source.userData ? Object.assign({}, source.userData) : {};\n    return Object.assign(Object.assign({}, source), { scene, scenes, userData });\n  }\n};\nvar cloneVariantMaterials = (dst, src) => {\n  traversePair(dst, src, (dst2, src2) => {\n    if (src2.userData.variantMaterials !== void 0) {\n      dst2.userData.variantMaterials = new Map(src2.userData.variantMaterials);\n    }\n    if (src2.userData.variantData !== void 0) {\n      dst2.userData.variantData = src2.userData.variantData;\n    }\n    if (src2.userData.originalMaterial !== void 0) {\n      dst2.userData.originalMaterial = src2.userData.originalMaterial;\n    }\n  });\n};\nvar traversePair = (obj1, obj2, callback) => {\n  callback(obj1, obj2);\n  for (let i = 0; i < obj1.children.length; i++) {\n    traversePair(obj1.children[i], obj2.children[i], callback);\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/gltf-instance/correlated-scene-graph.js\nvar $threeGLTF = Symbol(\"threeGLTF\");\nvar $gltf = Symbol(\"gltf\");\nvar $gltfElementMap = Symbol(\"gltfElementMap\");\nvar $threeObjectMap = Symbol(\"threeObjectMap\");\nvar $parallelTraverseThreeScene = Symbol(\"parallelTraverseThreeScene\");\nvar $correlateOriginalThreeGLTF = Symbol(\"correlateOriginalThreeGLTF\");\nvar $correlateCloneThreeGLTF = Symbol(\"correlateCloneThreeGLTF\");\nvar CorrelatedSceneGraph = class _CorrelatedSceneGraph {\n  constructor(threeGLTF, gltf, threeObjectMap, gltfElementMap) {\n    this[$threeGLTF] = threeGLTF;\n    this[$gltf] = gltf;\n    this[$gltfElementMap] = gltfElementMap;\n    this[$threeObjectMap] = threeObjectMap;\n  }\n  /**\n   * Produce a CorrelatedSceneGraph from a naturally generated Three.js GLTF.\n   * Such GLTFs are produced by Three.js' GLTFLoader, and contain cached\n   * details that expedite the correlation step.\n   *\n   * If a CorrelatedSceneGraph is provided as the second argument, re-correlates\n   * a cloned Three.js GLTF with a clone of the glTF hierarchy used to produce\n   * the upstream Three.js GLTF that the clone was created from. The result\n   * CorrelatedSceneGraph is representative of the cloned hierarchy.\n   */\n  static from(threeGLTF, upstreamCorrelatedSceneGraph) {\n    if (upstreamCorrelatedSceneGraph != null) {\n      return this[$correlateCloneThreeGLTF](threeGLTF, upstreamCorrelatedSceneGraph);\n    } else {\n      return this[$correlateOriginalThreeGLTF](threeGLTF);\n    }\n  }\n  static [$correlateOriginalThreeGLTF](threeGLTF) {\n    const gltf = threeGLTF.parser.json;\n    const associations = threeGLTF.parser.associations;\n    const gltfElementMap = /* @__PURE__ */ new Map();\n    const defaultMaterial = { name: \"Default\" };\n    const defaultReference = { type: \"materials\", index: -1 };\n    for (const threeMaterial of associations.keys()) {\n      if (threeMaterial instanceof Material && associations.get(threeMaterial) == null) {\n        if (defaultReference.index < 0) {\n          if (gltf.materials == null) {\n            gltf.materials = [];\n          }\n          defaultReference.index = gltf.materials.length;\n          gltf.materials.push(defaultMaterial);\n        }\n        threeMaterial.name = defaultMaterial.name;\n        associations.set(threeMaterial, { materials: defaultReference.index });\n      }\n    }\n    for (const [threeObject, gltfMappings] of associations) {\n      if (gltfMappings) {\n        const objWithUserData = threeObject;\n        objWithUserData.userData = objWithUserData.userData || {};\n        objWithUserData.userData.associations = gltfMappings;\n      }\n      for (const mapping in gltfMappings) {\n        if (mapping != null && mapping !== \"primitives\") {\n          const type = mapping;\n          const elementArray = gltf[type] || [];\n          const gltfElement = elementArray[gltfMappings[type]];\n          if (gltfElement == null) {\n            continue;\n          }\n          let threeObjects = gltfElementMap.get(gltfElement);\n          if (threeObjects == null) {\n            threeObjects = /* @__PURE__ */ new Set();\n            gltfElementMap.set(gltfElement, threeObjects);\n          }\n          threeObjects.add(threeObject);\n        }\n      }\n    }\n    return new _CorrelatedSceneGraph(threeGLTF, gltf, associations, gltfElementMap);\n  }\n  /**\n   * Transfers the association between a raw glTF and a Three.js scene graph\n   * to a clone of the Three.js scene graph, resolved as a new\n   * CorrelatedSceneGraph instance.\n   */\n  static [$correlateCloneThreeGLTF](cloneThreeGLTF, upstreamCorrelatedSceneGraph) {\n    const originalThreeGLTF = upstreamCorrelatedSceneGraph.threeGLTF;\n    const originalGLTF = upstreamCorrelatedSceneGraph.gltf;\n    const cloneGLTF = JSON.parse(JSON.stringify(originalGLTF));\n    const cloneThreeObjectMap = /* @__PURE__ */ new Map();\n    const cloneGLTFElementMap = /* @__PURE__ */ new Map();\n    for (let i = 0; i < originalThreeGLTF.scenes.length; i++) {\n      this[$parallelTraverseThreeScene](originalThreeGLTF.scenes[i], cloneThreeGLTF.scenes[i], (object, cloneObject) => {\n        const elementReference = upstreamCorrelatedSceneGraph.threeObjectMap.get(object);\n        if (elementReference == null) {\n          return;\n        }\n        for (const mapping in elementReference) {\n          if (mapping != null && mapping !== \"primitives\") {\n            const type = mapping;\n            const index = elementReference[type];\n            const cloneElement = cloneGLTF[type][index];\n            const mappings = cloneThreeObjectMap.get(cloneObject) || {};\n            mappings[type] = index;\n            cloneThreeObjectMap.set(cloneObject, mappings);\n            const cloneObjects = cloneGLTFElementMap.get(cloneElement) || /* @__PURE__ */ new Set();\n            cloneObjects.add(cloneObject);\n            cloneGLTFElementMap.set(cloneElement, cloneObjects);\n          }\n        }\n      });\n    }\n    return new _CorrelatedSceneGraph(cloneThreeGLTF, cloneGLTF, cloneThreeObjectMap, cloneGLTFElementMap);\n  }\n  /**\n   * Traverses two presumably identical Three.js scenes, and invokes a\n   * callback for each Object3D or Material encountered, including the initial\n   * scene. Adapted from\n   * https://github.com/mrdoob/three.js/blob/7c1424c5819ab622a346dd630ee4e6431388021e/examples/jsm/utils/SkeletonUtils.js#L586-L596\n   */\n  static [$parallelTraverseThreeScene](sceneOne, sceneTwo, callback) {\n    const isMesh = (object) => {\n      return object.isMesh;\n    };\n    const traverse = (a, b) => {\n      callback(a, b);\n      if (a.isObject3D) {\n        if (isMesh(a)) {\n          if (Array.isArray(a.material)) {\n            for (let i = 0; i < a.material.length; ++i) {\n              traverse(a.material[i], b.material[i]);\n            }\n          } else {\n            traverse(a.material, b.material);\n          }\n        }\n        for (let i = 0; i < a.children.length; ++i) {\n          traverse(a.children[i], b.children[i]);\n        }\n      }\n    };\n    traverse(sceneOne, sceneTwo);\n  }\n  /**\n   * The source Three.js GLTF result given to us by a Three.js GLTFLoader.\n   */\n  get threeGLTF() {\n    return this[$threeGLTF];\n  }\n  /**\n   * The in-memory deserialized source glTF.\n   */\n  get gltf() {\n    return this[$gltf];\n  }\n  /**\n   * A Map of glTF element references to arrays of corresponding Three.js\n   * object references. Three.js objects are kept in arrays to account for\n   * cases where more than one Three.js object corresponds to a single glTF\n   * element.\n   */\n  get gltfElementMap() {\n    return this[$gltfElementMap];\n  }\n  /**\n   * A map of individual Three.js objects to corresponding elements in the\n   * source glTF.\n   */\n  get threeObjectMap() {\n    return this[$threeObjectMap];\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/gltf-instance/ModelViewerGLTFInstance.js\nvar $correlatedSceneGraph = Symbol(\"correlatedSceneGraph\");\nvar ModelViewerGLTFInstance = class extends GLTFInstance {\n  /**\n   * @override\n   */\n  static [$prepare](source) {\n    const prepared = super[$prepare](source);\n    if (prepared[$correlatedSceneGraph] == null) {\n      prepared[$correlatedSceneGraph] = CorrelatedSceneGraph.from(prepared);\n    }\n    const { scene } = prepared;\n    const nullSphere = new Sphere(void 0, Infinity);\n    scene.traverse((node) => {\n      node.renderOrder = 1e3;\n      node.frustumCulled = false;\n      if (!node.name) {\n        node.name = node.uuid;\n      }\n      const mesh = node;\n      if (mesh.isMesh) {\n        const { geometry } = mesh;\n        mesh.castShadow = true;\n        if (mesh.isSkinnedMesh) {\n          geometry.boundingSphere = nullSphere;\n          geometry.boundingBox = null;\n        }\n        const material = mesh.material;\n        if (material.isMeshBasicMaterial === true) {\n          material.toneMapped = false;\n        }\n        material.shadowSide = FrontSide;\n        if (material.aoMap) {\n          const { gltf, threeObjectMap } = prepared[$correlatedSceneGraph];\n          const gltfRef = threeObjectMap.get(material);\n          if (gltf.materials != null && gltfRef != null && gltfRef.materials != null) {\n            const gltfMaterial = gltf.materials[gltfRef.materials];\n            if (gltfMaterial.occlusionTexture && gltfMaterial.occlusionTexture.texCoord === 0 && geometry.attributes.uv != null) {\n              geometry.setAttribute(\"uv2\", geometry.attributes.uv);\n            }\n          }\n        }\n      }\n    });\n    return prepared;\n  }\n  get correlatedSceneGraph() {\n    return this[$preparedGLTF][$correlatedSceneGraph];\n  }\n  /**\n   * @override\n   */\n  [$clone]() {\n    const clone2 = super[$clone]();\n    const sourceUUIDToClonedMaterial = /* @__PURE__ */ new Map();\n    clone2.scene.traverse((node) => {\n      if (node.isMesh) {\n        const mesh = node;\n        const material = mesh.material;\n        if (material != null) {\n          if (sourceUUIDToClonedMaterial.has(material.uuid)) {\n            mesh.material = sourceUUIDToClonedMaterial.get(material.uuid);\n            return;\n          }\n          mesh.material = material.clone();\n          sourceUUIDToClonedMaterial.set(material.uuid, mesh.material);\n        }\n      }\n    });\n    clone2[$correlatedSceneGraph] = CorrelatedSceneGraph.from(clone2, this.correlatedSceneGraph);\n    return clone2;\n  }\n};\n\n// node_modules/three/examples/jsm/loaders/RGBELoader.js\nvar RGBELoader = class extends DataTextureLoader {\n  constructor(manager) {\n    super(manager);\n    this.type = HalfFloatType;\n  }\n  // adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html\n  parse(buffer) {\n    const RGBE_RETURN_FAILURE = -1, rgbe_read_error = 1, rgbe_write_error = 2, rgbe_format_error = 3, rgbe_memory_error = 4, rgbe_error = function(rgbe_error_code, msg) {\n      switch (rgbe_error_code) {\n        case rgbe_read_error:\n          console.error(\"THREE.RGBELoader Read Error: \" + (msg || \"\"));\n          break;\n        case rgbe_write_error:\n          console.error(\"THREE.RGBELoader Write Error: \" + (msg || \"\"));\n          break;\n        case rgbe_format_error:\n          console.error(\"THREE.RGBELoader Bad File Format: \" + (msg || \"\"));\n          break;\n        default:\n        case rgbe_memory_error:\n          console.error(\"THREE.RGBELoader: Error: \" + (msg || \"\"));\n      }\n      return RGBE_RETURN_FAILURE;\n    }, RGBE_VALID_PROGRAMTYPE = 1, RGBE_VALID_FORMAT = 2, RGBE_VALID_DIMENSIONS = 4, NEWLINE = \"\\n\", fgets = function(buffer2, lineLimit, consume) {\n      const chunkSize = 128;\n      lineLimit = !lineLimit ? 1024 : lineLimit;\n      let p2 = buffer2.pos, i = -1, len = 0, s = \"\", chunk = String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p2, p2 + chunkSize)));\n      while (0 > (i = chunk.indexOf(NEWLINE)) && len < lineLimit && p2 < buffer2.byteLength) {\n        s += chunk;\n        len += chunk.length;\n        p2 += chunkSize;\n        chunk += String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p2, p2 + chunkSize)));\n      }\n      if (-1 < i) {\n        if (false !== consume)\n          buffer2.pos += len + i + 1;\n        return s + chunk.slice(0, i);\n      }\n      return false;\n    }, RGBE_ReadHeader = function(buffer2) {\n      const magic_token_re = /^#\\?(\\S+)/, gamma_re = /^\\s*GAMMA\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/, exposure_re = /^\\s*EXPOSURE\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/, format_re = /^\\s*FORMAT=(\\S+)\\s*$/, dimensions_re = /^\\s*\\-Y\\s+(\\d+)\\s+\\+X\\s+(\\d+)\\s*$/, header = {\n        valid: 0,\n        /* indicate which fields are valid */\n        string: \"\",\n        /* the actual header string */\n        comments: \"\",\n        /* comments found in header */\n        programtype: \"RGBE\",\n        /* listed at beginning of file to identify it after \"#?\". defaults to \"RGBE\" */\n        format: \"\",\n        /* RGBE format, default 32-bit_rle_rgbe */\n        gamma: 1,\n        /* image has already been gamma corrected with given gamma. defaults to 1.0 (no correction) */\n        exposure: 1,\n        /* a value of 1.0 in an image corresponds to <exposure> watts/steradian/m^2. defaults to 1.0 */\n        width: 0,\n        height: 0\n        /* image dimensions, width/height */\n      };\n      let line, match;\n      if (buffer2.pos >= buffer2.byteLength || !(line = fgets(buffer2))) {\n        return rgbe_error(rgbe_read_error, \"no header found\");\n      }\n      if (!(match = line.match(magic_token_re))) {\n        return rgbe_error(rgbe_format_error, \"bad initial token\");\n      }\n      header.valid |= RGBE_VALID_PROGRAMTYPE;\n      header.programtype = match[1];\n      header.string += line + \"\\n\";\n      while (true) {\n        line = fgets(buffer2);\n        if (false === line)\n          break;\n        header.string += line + \"\\n\";\n        if (\"#\" === line.charAt(0)) {\n          header.comments += line + \"\\n\";\n          continue;\n        }\n        if (match = line.match(gamma_re)) {\n          header.gamma = parseFloat(match[1]);\n        }\n        if (match = line.match(exposure_re)) {\n          header.exposure = parseFloat(match[1]);\n        }\n        if (match = line.match(format_re)) {\n          header.valid |= RGBE_VALID_FORMAT;\n          header.format = match[1];\n        }\n        if (match = line.match(dimensions_re)) {\n          header.valid |= RGBE_VALID_DIMENSIONS;\n          header.height = parseInt(match[1], 10);\n          header.width = parseInt(match[2], 10);\n        }\n        if (header.valid & RGBE_VALID_FORMAT && header.valid & RGBE_VALID_DIMENSIONS)\n          break;\n      }\n      if (!(header.valid & RGBE_VALID_FORMAT)) {\n        return rgbe_error(rgbe_format_error, \"missing format specifier\");\n      }\n      if (!(header.valid & RGBE_VALID_DIMENSIONS)) {\n        return rgbe_error(rgbe_format_error, \"missing image size specifier\");\n      }\n      return header;\n    }, RGBE_ReadPixels_RLE = function(buffer2, w, h) {\n      const scanline_width = w;\n      if (\n        // run length encoding is not allowed so read flat\n        scanline_width < 8 || scanline_width > 32767 || // this file is not run length encoded\n        (2 !== buffer2[0] || 2 !== buffer2[1] || buffer2[2] & 128)\n      ) {\n        return new Uint8Array(buffer2);\n      }\n      if (scanline_width !== (buffer2[2] << 8 | buffer2[3])) {\n        return rgbe_error(rgbe_format_error, \"wrong scanline width\");\n      }\n      const data_rgba = new Uint8Array(4 * w * h);\n      if (!data_rgba.length) {\n        return rgbe_error(rgbe_memory_error, \"unable to allocate buffer space\");\n      }\n      let offset = 0, pos = 0;\n      const ptr_end = 4 * scanline_width;\n      const rgbeStart = new Uint8Array(4);\n      const scanline_buffer = new Uint8Array(ptr_end);\n      let num_scanlines = h;\n      while (num_scanlines > 0 && pos < buffer2.byteLength) {\n        if (pos + 4 > buffer2.byteLength) {\n          return rgbe_error(rgbe_read_error);\n        }\n        rgbeStart[0] = buffer2[pos++];\n        rgbeStart[1] = buffer2[pos++];\n        rgbeStart[2] = buffer2[pos++];\n        rgbeStart[3] = buffer2[pos++];\n        if (2 != rgbeStart[0] || 2 != rgbeStart[1] || (rgbeStart[2] << 8 | rgbeStart[3]) != scanline_width) {\n          return rgbe_error(rgbe_format_error, \"bad rgbe scanline format\");\n        }\n        let ptr = 0, count;\n        while (ptr < ptr_end && pos < buffer2.byteLength) {\n          count = buffer2[pos++];\n          const isEncodedRun = count > 128;\n          if (isEncodedRun)\n            count -= 128;\n          if (0 === count || ptr + count > ptr_end) {\n            return rgbe_error(rgbe_format_error, \"bad scanline data\");\n          }\n          if (isEncodedRun) {\n            const byteValue = buffer2[pos++];\n            for (let i = 0; i < count; i++) {\n              scanline_buffer[ptr++] = byteValue;\n            }\n          } else {\n            scanline_buffer.set(buffer2.subarray(pos, pos + count), ptr);\n            ptr += count;\n            pos += count;\n          }\n        }\n        const l = scanline_width;\n        for (let i = 0; i < l; i++) {\n          let off = 0;\n          data_rgba[offset] = scanline_buffer[i + off];\n          off += scanline_width;\n          data_rgba[offset + 1] = scanline_buffer[i + off];\n          off += scanline_width;\n          data_rgba[offset + 2] = scanline_buffer[i + off];\n          off += scanline_width;\n          data_rgba[offset + 3] = scanline_buffer[i + off];\n          offset += 4;\n        }\n        num_scanlines--;\n      }\n      return data_rgba;\n    };\n    const RGBEByteToRGBFloat = function(sourceArray, sourceOffset, destArray, destOffset) {\n      const e = sourceArray[sourceOffset + 3];\n      const scale = Math.pow(2, e - 128) / 255;\n      destArray[destOffset + 0] = sourceArray[sourceOffset + 0] * scale;\n      destArray[destOffset + 1] = sourceArray[sourceOffset + 1] * scale;\n      destArray[destOffset + 2] = sourceArray[sourceOffset + 2] * scale;\n      destArray[destOffset + 3] = 1;\n    };\n    const RGBEByteToRGBHalf = function(sourceArray, sourceOffset, destArray, destOffset) {\n      const e = sourceArray[sourceOffset + 3];\n      const scale = Math.pow(2, e - 128) / 255;\n      destArray[destOffset + 0] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 0] * scale, 65504));\n      destArray[destOffset + 1] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 1] * scale, 65504));\n      destArray[destOffset + 2] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 2] * scale, 65504));\n      destArray[destOffset + 3] = DataUtils.toHalfFloat(1);\n    };\n    const byteArray = new Uint8Array(buffer);\n    byteArray.pos = 0;\n    const rgbe_header_info = RGBE_ReadHeader(byteArray);\n    if (RGBE_RETURN_FAILURE !== rgbe_header_info) {\n      const w = rgbe_header_info.width, h = rgbe_header_info.height, image_rgba_data = RGBE_ReadPixels_RLE(byteArray.subarray(byteArray.pos), w, h);\n      if (RGBE_RETURN_FAILURE !== image_rgba_data) {\n        let data, type;\n        let numElements;\n        switch (this.type) {\n          case FloatType:\n            numElements = image_rgba_data.length / 4;\n            const floatArray = new Float32Array(numElements * 4);\n            for (let j = 0; j < numElements; j++) {\n              RGBEByteToRGBFloat(image_rgba_data, j * 4, floatArray, j * 4);\n            }\n            data = floatArray;\n            type = FloatType;\n            break;\n          case HalfFloatType:\n            numElements = image_rgba_data.length / 4;\n            const halfArray = new Uint16Array(numElements * 4);\n            for (let j = 0; j < numElements; j++) {\n              RGBEByteToRGBHalf(image_rgba_data, j * 4, halfArray, j * 4);\n            }\n            data = halfArray;\n            type = HalfFloatType;\n            break;\n          default:\n            console.error(\"THREE.RGBELoader: unsupported type: \", this.type);\n            break;\n        }\n        return {\n          width: w,\n          height: h,\n          data,\n          header: rgbe_header_info.string,\n          gamma: rgbe_header_info.gamma,\n          exposure: rgbe_header_info.exposure,\n          type\n        };\n      }\n    }\n    return null;\n  }\n  setDataType(value) {\n    this.type = value;\n    return this;\n  }\n  load(url, onLoad, onProgress, onError) {\n    function onLoadCallback(texture, texData) {\n      switch (texture.type) {\n        case FloatType:\n        case HalfFloatType:\n          texture.encoding = LinearEncoding;\n          texture.minFilter = LinearFilter;\n          texture.magFilter = LinearFilter;\n          texture.generateMipmaps = false;\n          texture.flipY = true;\n          break;\n      }\n      if (onLoad)\n        onLoad(texture, texData);\n    }\n    return super.load(url, onLoadCallback, onProgress, onError);\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/EnvironmentScene.js\nvar EnvironmentScene = class extends Scene {\n  constructor() {\n    super();\n    this.position.y = -3.5;\n    const geometry = new BoxGeometry();\n    geometry.deleteAttribute(\"uv\");\n    const roomMaterial = new MeshStandardMaterial({ metalness: 0, side: BackSide });\n    const boxMaterial = new MeshStandardMaterial({ metalness: 0 });\n    const mainLight = new PointLight(16777215, 500, 28, 2);\n    mainLight.position.set(0.418, 16.199, 0.3);\n    this.add(mainLight);\n    const room = new Mesh(geometry, roomMaterial);\n    room.position.set(-0.757, 13.219, 0.717);\n    room.scale.set(31.713, 28.305, 28.591);\n    this.add(room);\n    const box1 = new Mesh(geometry, boxMaterial);\n    box1.position.set(-10.906, 2.009, 1.846);\n    box1.rotation.set(0, -0.195, 0);\n    box1.scale.set(2.328, 7.905, 4.651);\n    this.add(box1);\n    const box2 = new Mesh(geometry, boxMaterial);\n    box2.position.set(-5.607, -0.754, -0.758);\n    box2.rotation.set(0, 0.994, 0);\n    box2.scale.set(1.97, 1.534, 3.955);\n    this.add(box2);\n    const box3 = new Mesh(geometry, boxMaterial);\n    box3.position.set(6.167, 0.857, 7.803);\n    box3.rotation.set(0, 0.561, 0);\n    box3.scale.set(3.927, 6.285, 3.687);\n    this.add(box3);\n    const box4 = new Mesh(geometry, boxMaterial);\n    box4.position.set(-2.017, 0.018, 6.124);\n    box4.rotation.set(0, 0.333, 0);\n    box4.scale.set(2.002, 4.566, 2.064);\n    this.add(box4);\n    const box5 = new Mesh(geometry, boxMaterial);\n    box5.position.set(2.291, -0.756, -2.621);\n    box5.rotation.set(0, -0.286, 0);\n    box5.scale.set(1.546, 1.552, 1.496);\n    this.add(box5);\n    const box6 = new Mesh(geometry, boxMaterial);\n    box6.position.set(-2.193, -0.369, -5.547);\n    box6.rotation.set(0, 0.516, 0);\n    box6.scale.set(3.875, 3.487, 2.986);\n    this.add(box6);\n    const light1 = new Mesh(geometry, this.createAreaLightMaterial(50));\n    light1.position.set(-16.116, 14.37, 8.208);\n    light1.scale.set(0.1, 2.428, 2.739);\n    this.add(light1);\n    const light2 = new Mesh(geometry, this.createAreaLightMaterial(50));\n    light2.position.set(-16.109, 18.021, -8.207);\n    light2.scale.set(0.1, 2.425, 2.751);\n    this.add(light2);\n    const light3 = new Mesh(geometry, this.createAreaLightMaterial(17));\n    light3.position.set(14.904, 12.198, -1.832);\n    light3.scale.set(0.15, 4.265, 6.331);\n    this.add(light3);\n    const light4 = new Mesh(geometry, this.createAreaLightMaterial(43));\n    light4.position.set(-0.462, 8.89, 14.52);\n    light4.scale.set(4.38, 5.441, 0.088);\n    this.add(light4);\n    const light5 = new Mesh(geometry, this.createAreaLightMaterial(20));\n    light5.position.set(3.235, 11.486, -12.541);\n    light5.scale.set(2.5, 2, 0.1);\n    this.add(light5);\n    const light6 = new Mesh(geometry, this.createAreaLightMaterial(100));\n    light6.position.set(0, 20, 0);\n    light6.scale.set(1, 0.1, 1);\n    this.add(light6);\n  }\n  createAreaLightMaterial(intensity) {\n    const material = new MeshBasicMaterial();\n    material.color.setScalar(intensity);\n    return material;\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/EnvironmentSceneAlt.js\nvar EnvironmentSceneAlt = class extends Scene {\n  constructor() {\n    super();\n    this.position.y = -3.5;\n    const geometry = new BoxGeometry();\n    geometry.deleteAttribute(\"uv\");\n    const roomMaterial = new MeshStandardMaterial({ metalness: 0, side: BackSide });\n    const boxMaterial = new MeshStandardMaterial({ metalness: 0 });\n    const mainLight = new PointLight(16777215, 400, 28, 2);\n    mainLight.position.set(0.5, 14, 0.5);\n    this.add(mainLight);\n    const room = new Mesh(geometry, roomMaterial);\n    room.position.set(0, 13.2, 0);\n    room.scale.set(31.5, 28.5, 31.5);\n    this.add(room);\n    const box1 = new Mesh(geometry, boxMaterial);\n    box1.position.set(-10.906, -1, 1.846);\n    box1.rotation.set(0, -0.195, 0);\n    box1.scale.set(2.328, 7.905, 4.651);\n    this.add(box1);\n    const box2 = new Mesh(geometry, boxMaterial);\n    box2.position.set(-5.607, -0.754, -0.758);\n    box2.rotation.set(0, 0.994, 0);\n    box2.scale.set(1.97, 1.534, 3.955);\n    this.add(box2);\n    const box3 = new Mesh(geometry, boxMaterial);\n    box3.position.set(6.167, -0.16, 7.803);\n    box3.rotation.set(0, 0.561, 0);\n    box3.scale.set(3.927, 6.285, 3.687);\n    this.add(box3);\n    const box4 = new Mesh(geometry, boxMaterial);\n    box4.position.set(-2.017, 0.018, 6.124);\n    box4.rotation.set(0, 0.333, 0);\n    box4.scale.set(2.002, 4.566, 2.064);\n    this.add(box4);\n    const box5 = new Mesh(geometry, boxMaterial);\n    box5.position.set(2.291, -0.756, -2.621);\n    box5.rotation.set(0, -0.286, 0);\n    box5.scale.set(1.546, 1.552, 1.496);\n    this.add(box5);\n    const box6 = new Mesh(geometry, boxMaterial);\n    box6.position.set(-2.193, -0.369, -5.547);\n    box6.rotation.set(0, 0.516, 0);\n    box6.scale.set(3.875, 3.487, 2.986);\n    this.add(box6);\n    const light1 = new Mesh(geometry, this.createAreaLightMaterial(80));\n    light1.position.set(-14, 10, 8);\n    light1.scale.set(0.1, 2.5, 2.5);\n    this.add(light1);\n    const light2 = new Mesh(geometry, this.createAreaLightMaterial(80));\n    light2.position.set(-14, 14, -4);\n    light2.scale.set(0.1, 2.5, 2.5);\n    this.add(light2);\n    const light3 = new Mesh(geometry, this.createAreaLightMaterial(23));\n    light3.position.set(14, 12, 0);\n    light3.scale.set(0.1, 5, 5);\n    this.add(light3);\n    const light4 = new Mesh(geometry, this.createAreaLightMaterial(16));\n    light4.position.set(0, 9, 14);\n    light4.scale.set(5, 5, 0.1);\n    this.add(light4);\n    const light5 = new Mesh(geometry, this.createAreaLightMaterial(80));\n    light5.position.set(7, 8, -14);\n    light5.scale.set(2.5, 2.5, 0.1);\n    this.add(light5);\n    const light6 = new Mesh(geometry, this.createAreaLightMaterial(80));\n    light6.position.set(-7, 16, -14);\n    light6.scale.set(2.5, 2.5, 0.1);\n    this.add(light6);\n    const light7 = new Mesh(geometry, this.createAreaLightMaterial(1));\n    light7.position.set(0, 20, 0);\n    light7.scale.set(0.1, 0.1, 0.1);\n    this.add(light7);\n  }\n  createAreaLightMaterial(intensity) {\n    const material = new MeshBasicMaterial();\n    material.color.setScalar(intensity);\n    return material;\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/TextureUtils.js\nvar GENERATED_SIGMA = 0.04;\nvar MAX_SAMPLES2 = 20;\nvar HDR_FILE_RE = /\\.hdr(\\.js)?$/;\nvar ldrLoader = new TextureLoader();\nvar hdrLoader = new RGBELoader();\nhdrLoader.setDataType(HalfFloatType);\nvar TextureUtils = class extends EventDispatcher {\n  constructor(threeRenderer) {\n    super();\n    this.threeRenderer = threeRenderer;\n    this.generatedEnvironmentMap = null;\n    this.generatedEnvironmentMapAlt = null;\n    this.skyboxCache = /* @__PURE__ */ new Map();\n    this.blurMaterial = null;\n    this.blurScene = null;\n  }\n  async load(url, progressCallback = () => {\n  }) {\n    try {\n      const isHDR = HDR_FILE_RE.test(url);\n      const loader = isHDR ? hdrLoader : ldrLoader;\n      const texture = await new Promise((resolve, reject) => loader.load(url, resolve, (event) => {\n        progressCallback(event.loaded / event.total * 0.9);\n      }, reject));\n      progressCallback(1);\n      texture.name = url;\n      texture.mapping = EquirectangularReflectionMapping;\n      if (!isHDR) {\n        texture.encoding = sRGBEncoding;\n      }\n      return texture;\n    } finally {\n      if (progressCallback) {\n        progressCallback(1);\n      }\n    }\n  }\n  /**\n   * Returns a { skybox, environmentMap } object with the targets/textures\n   * accordingly. `skybox` is a WebGLRenderCubeTarget, and `environmentMap`\n   * is a Texture from a WebGLRenderCubeTarget.\n   */\n  async generateEnvironmentMapAndSkybox(skyboxUrl = null, environmentMapUrl = null, progressCallback = () => {\n  }) {\n    const useAltEnvironment = environmentMapUrl !== \"legacy\";\n    if (environmentMapUrl === \"legacy\" || environmentMapUrl === \"neutral\") {\n      environmentMapUrl = null;\n    }\n    environmentMapUrl = deserializeUrl(environmentMapUrl);\n    let skyboxLoads = Promise.resolve(null);\n    let environmentMapLoads;\n    if (!!skyboxUrl) {\n      skyboxLoads = this.loadEquirectFromUrl(skyboxUrl, progressCallback);\n    }\n    if (!!environmentMapUrl) {\n      environmentMapLoads = this.loadEquirectFromUrl(environmentMapUrl, progressCallback);\n    } else if (!!skyboxUrl) {\n      environmentMapLoads = this.loadEquirectFromUrl(skyboxUrl, progressCallback);\n    } else {\n      environmentMapLoads = useAltEnvironment ? this.loadGeneratedEnvironmentMapAlt() : this.loadGeneratedEnvironmentMap();\n    }\n    const [environmentMap, skybox] = await Promise.all([environmentMapLoads, skyboxLoads]);\n    if (environmentMap == null) {\n      throw new Error(\"Failed to load environment map.\");\n    }\n    return { environmentMap, skybox };\n  }\n  /**\n   * Loads an equirect Texture from a given URL, for use as a skybox.\n   */\n  async loadEquirectFromUrl(url, progressCallback) {\n    if (!this.skyboxCache.has(url)) {\n      const skyboxMapLoads = this.load(url, progressCallback);\n      this.skyboxCache.set(url, skyboxMapLoads);\n    }\n    return this.skyboxCache.get(url);\n  }\n  async GenerateEnvironmentMap(scene, name) {\n    await timePasses();\n    const renderer = this.threeRenderer;\n    const cubeTarget = new WebGLCubeRenderTarget(256, {\n      generateMipmaps: false,\n      type: HalfFloatType,\n      format: RGBAFormat,\n      encoding: LinearEncoding,\n      depthBuffer: true\n    });\n    const cubeCamera = new CubeCamera(0.1, 100, cubeTarget);\n    const generatedEnvironmentMap = cubeCamera.renderTarget.texture;\n    generatedEnvironmentMap.name = name;\n    const outputEncoding = renderer.outputEncoding;\n    const toneMapping = renderer.toneMapping;\n    renderer.toneMapping = NoToneMapping;\n    renderer.outputEncoding = LinearEncoding;\n    cubeCamera.update(renderer, scene);\n    this.blurCubemap(cubeTarget, GENERATED_SIGMA);\n    renderer.toneMapping = toneMapping;\n    renderer.outputEncoding = outputEncoding;\n    return generatedEnvironmentMap;\n  }\n  /**\n   * Loads a dynamically generated environment map.\n   */\n  async loadGeneratedEnvironmentMap() {\n    if (this.generatedEnvironmentMap == null) {\n      this.generatedEnvironmentMap = this.GenerateEnvironmentMap(new EnvironmentScene(), \"legacy\");\n    }\n    return this.generatedEnvironmentMap;\n  }\n  /**\n   * Loads a dynamically generated environment map, designed to be neutral and\n   * color-preserving. Shows less contrast around the different sides of the\n   * object.\n   */\n  async loadGeneratedEnvironmentMapAlt() {\n    if (this.generatedEnvironmentMapAlt == null) {\n      this.generatedEnvironmentMapAlt = this.GenerateEnvironmentMap(new EnvironmentSceneAlt(), \"neutral\");\n    }\n    return this.generatedEnvironmentMapAlt;\n  }\n  blurCubemap(cubeTarget, sigma) {\n    if (this.blurMaterial == null) {\n      this.blurMaterial = this.getBlurShader(MAX_SAMPLES2);\n      const box = new BoxGeometry();\n      const blurMesh = new Mesh(box, this.blurMaterial);\n      this.blurScene = new Scene();\n      this.blurScene.add(blurMesh);\n    }\n    const tempTarget = cubeTarget.clone();\n    this.halfblur(cubeTarget, tempTarget, sigma, \"latitudinal\");\n    this.halfblur(tempTarget, cubeTarget, sigma, \"longitudinal\");\n  }\n  halfblur(targetIn, targetOut, sigmaRadians, direction) {\n    const STANDARD_DEVIATIONS = 3;\n    const pixels = targetIn.width;\n    const radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES2 - 1);\n    const sigmaPixels = sigmaRadians / radiansPerPixel;\n    const samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES2;\n    if (samples > MAX_SAMPLES2) {\n      console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES2}`);\n    }\n    const weights = [];\n    let sum = 0;\n    for (let i = 0; i < MAX_SAMPLES2; ++i) {\n      const x2 = i / sigmaPixels;\n      const weight = Math.exp(-x2 * x2 / 2);\n      weights.push(weight);\n      if (i == 0) {\n        sum += weight;\n      } else if (i < samples) {\n        sum += 2 * weight;\n      }\n    }\n    for (let i = 0; i < weights.length; i++) {\n      weights[i] = weights[i] / sum;\n    }\n    const blurUniforms = this.blurMaterial.uniforms;\n    blurUniforms[\"envMap\"].value = targetIn.texture;\n    blurUniforms[\"samples\"].value = samples;\n    blurUniforms[\"weights\"].value = weights;\n    blurUniforms[\"latitudinal\"].value = direction === \"latitudinal\";\n    blurUniforms[\"dTheta\"].value = radiansPerPixel;\n    const cubeCamera = new CubeCamera(0.1, 100, targetOut);\n    cubeCamera.update(this.threeRenderer, this.blurScene);\n  }\n  getBlurShader(maxSamples) {\n    const weights = new Float32Array(maxSamples);\n    const poleAxis = new Vector3(0, 1, 0);\n    const shaderMaterial = new ShaderMaterial({\n      name: \"SphericalGaussianBlur\",\n      defines: { \"n\": maxSamples },\n      uniforms: {\n        \"envMap\": { value: null },\n        \"samples\": { value: 1 },\n        \"weights\": { value: weights },\n        \"latitudinal\": { value: false },\n        \"dTheta\": { value: 0 },\n        \"poleAxis\": { value: poleAxis }\n      },\n      vertexShader: (\n        /* glsl */\n        `\n      \n      varying vec3 vOutputDirection;\n  \n      void main() {\n  \n        vOutputDirection = vec3( position );\n        gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n  \n      }\n    `\n      ),\n      fragmentShader: (\n        /* glsl */\n        `\n        varying vec3 vOutputDirection;\n  \n        uniform samplerCube envMap;\n        uniform int samples;\n        uniform float weights[ n ];\n        uniform bool latitudinal;\n        uniform float dTheta;\n        uniform vec3 poleAxis;\n  \n        vec3 getSample( float theta, vec3 axis ) {\n  \n          float cosTheta = cos( theta );\n          // Rodrigues' axis-angle rotation\n          vec3 sampleDirection = vOutputDirection * cosTheta\n            + cross( axis, vOutputDirection ) * sin( theta )\n            + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n  \n          return vec3( textureCube( envMap, sampleDirection ) );\n  \n        }\n  \n        void main() {\n  \n          vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n  \n          if ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n  \n            axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n  \n          }\n  \n          axis = normalize( axis );\n  \n          gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n          gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n  \n          for ( int i = 1; i < n; i++ ) {\n  \n            if ( i >= samples ) {\n  \n              break;\n  \n            }\n  \n            float theta = dTheta * float( i );\n            gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n            gl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n  \n          }\n        }\n      `\n      ),\n      blending: NoBlending,\n      depthTest: false,\n      depthWrite: false,\n      side: BackSide\n    });\n    return shaderMaterial;\n  }\n  async dispose() {\n    for (const [, promise] of this.skyboxCache) {\n      const skybox = await promise;\n      skybox.dispose();\n    }\n    if (this.generatedEnvironmentMap != null) {\n      (await this.generatedEnvironmentMap).dispose();\n      this.generatedEnvironmentMap = null;\n    }\n    if (this.generatedEnvironmentMapAlt != null) {\n      (await this.generatedEnvironmentMapAlt).dispose();\n      this.generatedEnvironmentMapAlt = null;\n    }\n    if (this.blurMaterial != null) {\n      this.blurMaterial.dispose();\n    }\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/Renderer.js\nvar DURATION_DECAY = 0.2;\nvar LOW_FRAME_DURATION_MS = 40;\nvar HIGH_FRAME_DURATION_MS = 60;\nvar MAX_AVG_CHANGE_MS = 5;\nvar SCALE_STEPS = [1, 0.79, 0.62, 0.5, 0.4, 0.31, 0.25];\nvar DEFAULT_LAST_STEP = 3;\nvar DEFAULT_POWER_PREFERENCE = \"high-performance\";\nvar Renderer = class _Renderer extends EventDispatcher {\n  constructor(options) {\n    super();\n    this.loader = new CachingGLTFLoader(ModelViewerGLTFInstance);\n    this.width = 0;\n    this.height = 0;\n    this.dpr = 1;\n    this.debugger = null;\n    this.scenes = /* @__PURE__ */ new Set();\n    this.multipleScenesVisible = false;\n    this.lastTick = performance.now();\n    this.renderedLastFrame = false;\n    this.scaleStep = 0;\n    this.lastStep = DEFAULT_LAST_STEP;\n    this.avgFrameDuration = (HIGH_FRAME_DURATION_MS + LOW_FRAME_DURATION_MS) / 2;\n    this.onWebGLContextLost = (event) => {\n      this.dispatchEvent({ type: \"contextlost\", sourceEvent: event });\n    };\n    this.onWebGLContextRestored = () => {\n      var _a12;\n      (_a12 = this.textureUtils) === null || _a12 === void 0 ? void 0 : _a12.dispose();\n      this.textureUtils = new TextureUtils(this.threeRenderer);\n      for (const scene of this.scenes) {\n        scene.element[$updateEnvironment]();\n      }\n    };\n    this.dpr = resolveDpr();\n    this.canvas3D = document.createElement(\"canvas\");\n    this.canvas3D.id = \"webgl-canvas\";\n    this.canvas3D.classList.add(\"show\");\n    try {\n      this.threeRenderer = new WebGLRenderer({\n        canvas: this.canvas3D,\n        alpha: true,\n        antialias: true,\n        powerPreference: options.powerPreference,\n        preserveDrawingBuffer: true\n      });\n      this.threeRenderer.autoClear = true;\n      this.threeRenderer.outputEncoding = sRGBEncoding;\n      this.threeRenderer.physicallyCorrectLights = true;\n      this.threeRenderer.setPixelRatio(1);\n      this.debugger = !!options.debug ? new Debugger(this) : null;\n      this.threeRenderer.debug = { checkShaderErrors: !!this.debugger };\n      this.threeRenderer.toneMapping = ACESFilmicToneMapping;\n    } catch (error) {\n      console.warn(error);\n    }\n    this.arRenderer = new ARRenderer(this);\n    this.textureUtils = this.canRender ? new TextureUtils(this.threeRenderer) : null;\n    CachingGLTFLoader.initializeKTX2Loader(this.threeRenderer);\n    this.canvas3D.addEventListener(\"webglcontextlost\", this.onWebGLContextLost);\n    this.canvas3D.addEventListener(\"webglcontextrestored\", this.onWebGLContextRestored);\n    this.updateRendererSize();\n  }\n  static get singleton() {\n    return this._singleton;\n  }\n  static resetSingleton() {\n    const elements = this._singleton.dispose();\n    for (const element of elements) {\n      element.disconnectedCallback();\n    }\n    this._singleton = new _Renderer({\n      powerPreference: (self.ModelViewerElement || {}).powerPreference || DEFAULT_POWER_PREFERENCE,\n      debug: isDebugMode()\n    });\n    for (const element of elements) {\n      element.connectedCallback();\n    }\n  }\n  get canRender() {\n    return this.threeRenderer != null;\n  }\n  get scaleFactor() {\n    return SCALE_STEPS[this.scaleStep];\n  }\n  set minScale(scale) {\n    let i = 1;\n    while (i < SCALE_STEPS.length) {\n      if (SCALE_STEPS[i] < scale) {\n        break;\n      }\n      ++i;\n    }\n    this.lastStep = i - 1;\n  }\n  registerScene(scene) {\n    this.scenes.add(scene);\n    scene.forceRescale();\n    const size = new Vector2();\n    this.threeRenderer.getSize(size);\n    scene.canvas.width = size.x;\n    scene.canvas.height = size.y;\n    if (this.canRender && this.scenes.size > 0) {\n      this.threeRenderer.setAnimationLoop((time, frame) => this.render(time, frame));\n    }\n    if (this.debugger != null) {\n      this.debugger.addScene(scene);\n    }\n  }\n  unregisterScene(scene) {\n    this.scenes.delete(scene);\n    if (this.canvas3D.parentElement === scene.canvas.parentElement) {\n      scene.canvas.parentElement.removeChild(this.canvas3D);\n    }\n    if (this.canRender && this.scenes.size === 0) {\n      this.threeRenderer.setAnimationLoop(null);\n    }\n    if (this.debugger != null) {\n      this.debugger.removeScene(scene);\n    }\n  }\n  displayCanvas(scene) {\n    return this.multipleScenesVisible ? scene.element[$canvas] : this.canvas3D;\n  }\n  /**\n   * The function enables an optimization, where when there is only a single\n   * <model-viewer> element, we can use the renderer's 3D canvas directly for\n   * display. Otherwise we need to use the element's 2D canvas and copy the\n   * renderer's result into it.\n   */\n  countVisibleScenes() {\n    const { canvas3D } = this;\n    let visibleScenes = 0;\n    let canvas3DScene = null;\n    for (const scene of this.scenes) {\n      const { element } = scene;\n      if (element.modelIsVisible && scene.externalRenderer == null) {\n        ++visibleScenes;\n      }\n      if (canvas3D.parentElement === scene.canvas.parentElement) {\n        canvas3DScene = scene;\n      }\n    }\n    const multipleScenesVisible = visibleScenes > 1;\n    if (canvas3DScene != null) {\n      const newlyMultiple = multipleScenesVisible && !this.multipleScenesVisible;\n      const disappearing = !canvas3DScene.element.modelIsVisible;\n      if (newlyMultiple || disappearing) {\n        const { width, height } = this.sceneSize(canvas3DScene);\n        this.copyPixels(canvas3DScene, width, height);\n        canvas3D.parentElement.removeChild(canvas3D);\n      }\n    }\n    this.multipleScenesVisible = multipleScenesVisible;\n  }\n  /**\n   * Updates the renderer's size based on the largest scene and any changes to\n   * device pixel ratio.\n   */\n  updateRendererSize() {\n    const dpr = resolveDpr();\n    if (dpr !== this.dpr) {\n      for (const scene of this.scenes) {\n        const { element } = scene;\n        element[$updateSize](element.getBoundingClientRect());\n      }\n    }\n    let width = 0;\n    let height = 0;\n    for (const scene of this.scenes) {\n      width = Math.max(width, scene.width);\n      height = Math.max(height, scene.height);\n    }\n    if (width === this.width && height === this.height && dpr === this.dpr) {\n      return;\n    }\n    this.width = width;\n    this.height = height;\n    this.dpr = dpr;\n    width = Math.ceil(width * dpr);\n    height = Math.ceil(height * dpr);\n    if (this.canRender) {\n      this.threeRenderer.setSize(width, height, false);\n    }\n    for (const scene of this.scenes) {\n      const { canvas } = scene;\n      canvas.width = width;\n      canvas.height = height;\n      scene.forceRescale();\n    }\n  }\n  updateRendererScale(delta) {\n    const scaleStep = this.scaleStep;\n    this.avgFrameDuration += clamp2(DURATION_DECAY * (delta - this.avgFrameDuration), -MAX_AVG_CHANGE_MS, MAX_AVG_CHANGE_MS);\n    if (this.avgFrameDuration > HIGH_FRAME_DURATION_MS) {\n      ++this.scaleStep;\n    } else if (this.avgFrameDuration < LOW_FRAME_DURATION_MS && this.scaleStep > 0) {\n      --this.scaleStep;\n    }\n    this.scaleStep = Math.min(this.scaleStep, this.lastStep);\n    if (scaleStep !== this.scaleStep) {\n      this.avgFrameDuration = (HIGH_FRAME_DURATION_MS + LOW_FRAME_DURATION_MS) / 2;\n    }\n  }\n  shouldRender(scene) {\n    if (!scene.shouldRender()) {\n      if (scene.scaleStep != 0) {\n        scene.scaleStep = 0;\n        this.rescaleCanvas(scene);\n      } else {\n        return false;\n      }\n    } else if (scene.scaleStep != this.scaleStep) {\n      scene.scaleStep = this.scaleStep;\n      this.rescaleCanvas(scene);\n    }\n    return true;\n  }\n  rescaleCanvas(scene) {\n    const scale = SCALE_STEPS[scene.scaleStep];\n    const width = Math.ceil(this.width / scale);\n    const height = Math.ceil(this.height / scale);\n    const { style: style2 } = scene.canvas;\n    style2.width = `${width}px`;\n    style2.height = `${height}px`;\n    this.canvas3D.style.width = `${width}px`;\n    this.canvas3D.style.height = `${height}px`;\n    const renderedDpr = this.dpr * scale;\n    const reason = scale < 1 ? \"GPU throttling\" : this.dpr !== window.devicePixelRatio ? \"No meta viewport tag\" : \"\";\n    scene.element.dispatchEvent(new CustomEvent(\"render-scale\", {\n      detail: {\n        reportedDpr: window.devicePixelRatio,\n        renderedDpr,\n        minimumDpr: this.dpr * SCALE_STEPS[this.lastStep],\n        pixelWidth: Math.ceil(scene.width * renderedDpr),\n        pixelHeight: Math.ceil(scene.height * renderedDpr),\n        reason\n      }\n    }));\n  }\n  sceneSize(scene) {\n    const { dpr } = this;\n    const scaleFactor = SCALE_STEPS[scene.scaleStep];\n    const width = Math.min(Math.ceil(scene.width * scaleFactor * dpr), this.canvas3D.width);\n    const height = Math.min(Math.ceil(scene.height * scaleFactor * dpr), this.canvas3D.height);\n    return { width, height };\n  }\n  copyPixels(scene, width, height) {\n    const context2D = scene.context;\n    if (context2D == null) {\n      console.log(\"could not acquire 2d context\");\n      return;\n    }\n    context2D.clearRect(0, 0, width, height);\n    context2D.drawImage(this.canvas3D, 0, 0, width, height, 0, 0, width, height);\n    scene.canvas.classList.add(\"show\");\n  }\n  /**\n   * Returns an array version of this.scenes where the non-visible ones are\n   * first. This allows eager scenes to be rendered before they are visible,\n   * without needing the multi-canvas render path.\n   */\n  orderedScenes() {\n    const scenes = [];\n    for (const visible of [false, true]) {\n      for (const scene of this.scenes) {\n        if (scene.element.modelIsVisible === visible) {\n          scenes.push(scene);\n        }\n      }\n    }\n    return scenes;\n  }\n  get isPresenting() {\n    return this.arRenderer.isPresenting;\n  }\n  /**\n   * This method takes care of updating the element and renderer state based on\n   * the time that has passed since the last rendered frame.\n   */\n  preRender(scene, t2, delta) {\n    const { element, exposure } = scene;\n    element[$tick](t2, delta);\n    const exposureIsNumber = typeof exposure === \"number\" && !Number.isNaN(exposure);\n    this.threeRenderer.toneMappingExposure = exposureIsNumber ? exposure : 1;\n  }\n  render(t2, frame) {\n    if (frame != null) {\n      this.arRenderer.onWebXRFrame(t2, frame);\n      return;\n    }\n    const delta = t2 - this.lastTick;\n    this.lastTick = t2;\n    if (!this.canRender || this.isPresenting) {\n      return;\n    }\n    this.countVisibleScenes();\n    this.updateRendererSize();\n    if (this.renderedLastFrame) {\n      this.updateRendererScale(delta);\n      this.renderedLastFrame = false;\n    }\n    const { canvas3D } = this;\n    for (const scene of this.orderedScenes()) {\n      const { element } = scene;\n      if (!element.loaded || !element.modelIsVisible && scene.renderCount > 0) {\n        continue;\n      }\n      this.preRender(scene, t2, delta);\n      if (!this.shouldRender(scene)) {\n        continue;\n      }\n      if (scene.externalRenderer != null) {\n        const camera2 = scene.getCamera();\n        camera2.updateMatrix();\n        const { matrix, projectionMatrix } = camera2;\n        const viewMatrix = matrix.elements.slice();\n        const target2 = scene.getTarget();\n        viewMatrix[12] += target2.x;\n        viewMatrix[13] += target2.y;\n        viewMatrix[14] += target2.z;\n        scene.externalRenderer.render({\n          viewMatrix,\n          projectionMatrix: projectionMatrix.elements\n        });\n        continue;\n      }\n      if (!element.modelIsVisible && !this.multipleScenesVisible) {\n        for (const visibleScene of this.scenes) {\n          if (visibleScene.element.modelIsVisible) {\n            visibleScene.queueRender();\n          }\n        }\n      }\n      const { width, height } = this.sceneSize(scene);\n      scene.renderShadow(this.threeRenderer);\n      this.threeRenderer.setRenderTarget(null);\n      this.threeRenderer.setViewport(0, Math.ceil(this.height * this.dpr) - height, width, height);\n      this.threeRenderer.render(scene, scene.camera);\n      if (this.multipleScenesVisible || scene.renderCount === 0) {\n        this.copyPixels(scene, width, height);\n      } else {\n        if (canvas3D.parentElement !== scene.canvas.parentElement) {\n          scene.canvas.parentElement.appendChild(canvas3D);\n          scene.canvas.classList.remove(\"show\");\n        }\n      }\n      scene.hasRendered();\n      ++scene.renderCount;\n      this.renderedLastFrame = true;\n    }\n  }\n  dispose() {\n    if (this.textureUtils != null) {\n      this.textureUtils.dispose();\n    }\n    if (this.threeRenderer != null) {\n      this.threeRenderer.dispose();\n    }\n    this.textureUtils = null;\n    this.threeRenderer = null;\n    const elements = [];\n    for (const scene of this.scenes) {\n      elements.push(scene.element);\n    }\n    this.canvas3D.removeEventListener(\"webglcontextlost\", this.onWebGLContextLost);\n    this.canvas3D.removeEventListener(\"webglcontextrestored\", this.onWebGLContextRestored);\n    return elements;\n  }\n};\nRenderer._singleton = new Renderer({\n  powerPreference: (self.ModelViewerElement || {}).powerPreference || DEFAULT_POWER_PREFERENCE,\n  debug: isDebugMode()\n});\n\n// node_modules/@google/model-viewer/lib/features/scene-graph/three-dom-element.js\nvar $correlatedObjects = Symbol(\"correlatedObjects\");\nvar $sourceObject = Symbol(\"sourceObject\");\nvar $onUpdate = Symbol(\"onUpdate\");\nvar ThreeDOMElement = class {\n  constructor(onUpdate, element, correlatedObjects = null) {\n    this[$onUpdate] = onUpdate;\n    this[$sourceObject] = element;\n    this[$correlatedObjects] = correlatedObjects;\n  }\n};\n\n// node_modules/@google/model-viewer/lib/features/scene-graph/image.js\nvar quadMaterial = new MeshBasicMaterial();\nvar quad = new PlaneGeometry(2, 2);\nvar adhocNum = 0;\nvar $threeTexture = Symbol(\"threeTexture\");\nvar $applyTexture = Symbol(\"applyTexture\");\nvar Image2 = class extends ThreeDOMElement {\n  get [$threeTexture]() {\n    var _a12;\n    console.assert(this[$correlatedObjects] != null && this[$correlatedObjects].size > 0, \"Image correlated object is undefined\");\n    return (_a12 = this[$correlatedObjects]) === null || _a12 === void 0 ? void 0 : _a12.values().next().value;\n  }\n  constructor(onUpdate, texture, gltfImage) {\n    gltfImage = gltfImage !== null && gltfImage !== void 0 ? gltfImage : {\n      name: texture && texture.image && texture.image.src ? texture.image.src.split(\"/\").pop() : \"adhoc_image\",\n      uri: texture && texture.image && texture.image.src ? texture.image.src : \"adhoc_image\" + adhocNum++\n    };\n    super(onUpdate, gltfImage, new Set(texture ? [texture] : []));\n  }\n  get name() {\n    return this[$sourceObject].name || \"\";\n  }\n  get uri() {\n    return this[$sourceObject].uri;\n  }\n  get bufferView() {\n    return this[$sourceObject].bufferView;\n  }\n  get type() {\n    return this.uri != null ? \"external\" : \"embedded\";\n  }\n  set name(name) {\n    this[$sourceObject].name = name;\n  }\n  async createThumbnail(width, height) {\n    const scene = new Scene();\n    quadMaterial.map = this[$threeTexture];\n    const mesh = new Mesh(quad, quadMaterial);\n    scene.add(mesh);\n    const camera2 = new OrthographicCamera(-1, 1, 1, -1, 0, 1);\n    const { threeRenderer } = Renderer.singleton;\n    const renderTarget = new WebGLRenderTarget(width, height);\n    threeRenderer.setRenderTarget(renderTarget);\n    threeRenderer.render(scene, camera2);\n    threeRenderer.setRenderTarget(null);\n    const buffer = new Uint8Array(width * height * 4);\n    threeRenderer.readRenderTargetPixels(renderTarget, 0, 0, width, height, buffer);\n    blobCanvas.width = width;\n    blobCanvas.height = height;\n    const blobContext = blobCanvas.getContext(\"2d\");\n    const imageData = blobContext.createImageData(width, height);\n    imageData.data.set(buffer);\n    blobContext.putImageData(imageData, 0, 0);\n    return new Promise(async (resolve, reject) => {\n      blobCanvas.toBlob((blob) => {\n        if (!blob) {\n          return reject(\"Failed to capture thumbnail.\");\n        }\n        resolve(URL.createObjectURL(blob));\n      }, \"image/png\");\n    });\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/gltf-instance/gltf-2.0.js\nvar Filter;\n(function(Filter2) {\n  Filter2[Filter2[\"Nearest\"] = 9728] = \"Nearest\";\n  Filter2[Filter2[\"Linear\"] = 9729] = \"Linear\";\n  Filter2[Filter2[\"NearestMipmapNearest\"] = 9984] = \"NearestMipmapNearest\";\n  Filter2[Filter2[\"LinearMipmapNearest\"] = 9985] = \"LinearMipmapNearest\";\n  Filter2[Filter2[\"NearestMipmapLinear\"] = 9986] = \"NearestMipmapLinear\";\n  Filter2[Filter2[\"LinearMipmapLinear\"] = 9987] = \"LinearMipmapLinear\";\n})(Filter || (Filter = {}));\nvar Wrap;\n(function(Wrap2) {\n  Wrap2[Wrap2[\"ClampToEdge\"] = 33071] = \"ClampToEdge\";\n  Wrap2[Wrap2[\"MirroredRepeat\"] = 33648] = \"MirroredRepeat\";\n  Wrap2[Wrap2[\"Repeat\"] = 10497] = \"Repeat\";\n})(Wrap || (Wrap = {}));\n\n// node_modules/@google/model-viewer/lib/features/scene-graph/sampler.js\nvar isMinFilter = (() => {\n  const minFilterValues = [\n    Filter.Nearest,\n    Filter.Linear,\n    Filter.NearestMipmapNearest,\n    Filter.LinearMipmapLinear,\n    Filter.NearestMipmapLinear,\n    Filter.LinearMipmapLinear\n  ];\n  return (value) => minFilterValues.indexOf(value) > -1;\n})();\nvar isMagFilter = (() => {\n  const magFilterValues = [Filter.Nearest, Filter.Linear];\n  return (value) => magFilterValues.indexOf(value) > -1;\n})();\nvar isWrapMode = (() => {\n  const wrapModes = [Wrap.ClampToEdge, Wrap.MirroredRepeat, Wrap.Repeat];\n  return (value) => wrapModes.indexOf(value) > -1;\n})();\nvar isValidSamplerValue = (property2, value) => {\n  switch (property2) {\n    case \"minFilter\":\n      return isMinFilter(value);\n    case \"magFilter\":\n      return isMagFilter(value);\n    case \"wrapS\":\n    case \"wrapT\":\n      return isWrapMode(value);\n    default:\n      throw new Error(`Cannot configure property \"${property2}\" on Sampler`);\n  }\n};\nvar $threeTextures = Symbol(\"threeTextures\");\nvar $setProperty = Symbol(\"setProperty\");\nvar $sourceSampler = Symbol(\"sourceSampler\");\nvar Sampler = class extends ThreeDOMElement {\n  get [$threeTextures]() {\n    console.assert(this[$correlatedObjects] != null && this[$correlatedObjects].size > 0, \"Sampler correlated object is undefined\");\n    return this[$correlatedObjects];\n  }\n  get [$sourceSampler]() {\n    console.assert(this[$sourceObject] != null, \"Sampler source is undefined\");\n    return this[$sourceObject];\n  }\n  constructor(onUpdate, texture, gltfSampler) {\n    gltfSampler = gltfSampler !== null && gltfSampler !== void 0 ? gltfSampler : {};\n    if (gltfSampler.minFilter == null) {\n      gltfSampler.minFilter = texture ? texture.minFilter : Filter.LinearMipmapLinear;\n    }\n    if (gltfSampler.magFilter == null) {\n      gltfSampler.magFilter = texture ? texture.magFilter : Filter.Linear;\n    }\n    if (gltfSampler.wrapS == null) {\n      gltfSampler.wrapS = texture ? texture.wrapS : Wrap.Repeat;\n    }\n    if (gltfSampler.wrapT == null) {\n      gltfSampler.wrapT = texture ? texture.wrapT : Wrap.Repeat;\n    }\n    super(onUpdate, gltfSampler, new Set(texture ? [texture] : []));\n  }\n  get name() {\n    return this[$sourceObject].name || \"\";\n  }\n  get minFilter() {\n    return this[$sourceSampler].minFilter;\n  }\n  get magFilter() {\n    return this[$sourceSampler].magFilter;\n  }\n  get wrapS() {\n    return this[$sourceSampler].wrapS;\n  }\n  get wrapT() {\n    return this[$sourceSampler].wrapT;\n  }\n  setMinFilter(filter) {\n    this[$setProperty](\"minFilter\", filter);\n  }\n  setMagFilter(filter) {\n    this[$setProperty](\"magFilter\", filter);\n  }\n  setWrapS(mode) {\n    this[$setProperty](\"wrapS\", mode);\n  }\n  setWrapT(mode) {\n    this[$setProperty](\"wrapT\", mode);\n  }\n  [$setProperty](property2, value) {\n    const sampler = this[$sourceSampler];\n    if (sampler != null) {\n      if (isValidSamplerValue(property2, value)) {\n        sampler[property2] = value;\n        for (const texture of this[$threeTextures]) {\n          texture[property2] = value;\n          texture.needsUpdate = true;\n        }\n      }\n      this[$onUpdate]();\n    }\n  }\n};\n\n// node_modules/@google/model-viewer/lib/features/scene-graph/texture.js\nvar $image = Symbol(\"image\");\nvar $sampler = Symbol(\"sampler\");\nvar Texture2 = class extends ThreeDOMElement {\n  constructor(onUpdate, threeTexture, gltfTexture = null, gltfSampler = null, gltfImage = null) {\n    super(onUpdate, gltfTexture ? gltfTexture : {}, new Set(threeTexture ? [threeTexture] : []));\n    this[$sampler] = new Sampler(onUpdate, threeTexture, gltfSampler);\n    this[$image] = new Image2(onUpdate, threeTexture, gltfImage);\n  }\n  get name() {\n    return this[$sourceObject].name || \"\";\n  }\n  set name(name) {\n    this[$sourceObject].name = name;\n  }\n  get sampler() {\n    return this[$sampler];\n  }\n  get source() {\n    return this[$image];\n  }\n};\n\n// node_modules/@google/model-viewer/lib/features/scene-graph/texture-info.js\nvar _a4;\nvar _b4;\nvar $texture = Symbol(\"texture\");\nvar $transform = Symbol(\"transform\");\nvar $materials = Symbol(\"materials\");\nvar $usage = Symbol(\"usage\");\nvar TextureUsage;\n(function(TextureUsage2) {\n  TextureUsage2[TextureUsage2[\"Base\"] = 0] = \"Base\";\n  TextureUsage2[TextureUsage2[\"MetallicRoughness\"] = 1] = \"MetallicRoughness\";\n  TextureUsage2[TextureUsage2[\"Normal\"] = 2] = \"Normal\";\n  TextureUsage2[TextureUsage2[\"Occlusion\"] = 3] = \"Occlusion\";\n  TextureUsage2[TextureUsage2[\"Emissive\"] = 4] = \"Emissive\";\n})(TextureUsage || (TextureUsage = {}));\nvar TextureInfo = class {\n  constructor(onUpdate, usage, threeTexture, material, gltf, gltfTextureInfo) {\n    this[_a4] = null;\n    this[_b4] = {\n      rotation: 0,\n      scale: new Vector2(1, 1),\n      offset: new Vector2(0, 0)\n    };\n    if (gltfTextureInfo && threeTexture) {\n      const gltfTexture = gltf.textures ? gltf.textures[gltfTextureInfo.index] : null;\n      const sampler = gltfTexture ? gltf.samplers ? gltf.samplers[gltfTexture.sampler] : null : null;\n      const image = gltfTexture ? gltf.images ? gltf.images[gltfTexture.source] : null : null;\n      this[$transform].rotation = threeTexture.rotation;\n      this[$transform].scale.copy(threeTexture.repeat);\n      this[$transform].offset.copy(threeTexture.offset);\n      this[$texture] = new Texture2(onUpdate, threeTexture, gltfTexture, sampler, image);\n    }\n    this.onUpdate = onUpdate;\n    this[$materials] = material;\n    this[$usage] = usage;\n  }\n  get texture() {\n    return this[$texture];\n  }\n  setTexture(texture) {\n    const threeTexture = texture != null ? texture.source[$threeTexture] : null;\n    let encoding = sRGBEncoding;\n    this[$texture] = texture;\n    if (this[$materials]) {\n      for (const material of this[$materials]) {\n        switch (this[$usage]) {\n          case TextureUsage.Base:\n            material.map = threeTexture;\n            break;\n          case TextureUsage.MetallicRoughness:\n            encoding = LinearEncoding;\n            material.metalnessMap = threeTexture;\n            material.roughnessMap = threeTexture;\n            break;\n          case TextureUsage.Normal:\n            encoding = LinearEncoding;\n            material.normalMap = threeTexture;\n            break;\n          case TextureUsage.Occlusion:\n            encoding = LinearEncoding;\n            material.aoMap = threeTexture;\n            break;\n          case TextureUsage.Emissive:\n            material.emissiveMap = threeTexture;\n            break;\n          default:\n        }\n        material.needsUpdate = true;\n      }\n    }\n    if (threeTexture) {\n      threeTexture.encoding = encoding;\n      threeTexture.rotation = this[$transform].rotation;\n      threeTexture.repeat = this[$transform].scale;\n      threeTexture.offset = this[$transform].offset;\n    }\n    this.onUpdate();\n  }\n};\n_a4 = $texture, _b4 = $transform;\n\n// node_modules/@google/model-viewer/lib/features/scene-graph/pbr-metallic-roughness.js\nvar $threeMaterials = Symbol(\"threeMaterials\");\nvar $baseColorTexture = Symbol(\"baseColorTexture\");\nvar $metallicRoughnessTexture = Symbol(\"metallicRoughnessTexture\");\nvar PBRMetallicRoughness = class extends ThreeDOMElement {\n  constructor(onUpdate, gltf, pbrMetallicRoughness, correlatedMaterials) {\n    super(onUpdate, pbrMetallicRoughness, correlatedMaterials);\n    if (pbrMetallicRoughness.baseColorFactor == null) {\n      pbrMetallicRoughness.baseColorFactor = [1, 1, 1, 1];\n    }\n    if (pbrMetallicRoughness.roughnessFactor == null) {\n      pbrMetallicRoughness.roughnessFactor = 1;\n    }\n    if (pbrMetallicRoughness.metallicFactor == null) {\n      pbrMetallicRoughness.metallicFactor = 1;\n    }\n    const { baseColorTexture: gltfBaseColorTexture, metallicRoughnessTexture: gltfMetallicRoughnessTexture } = pbrMetallicRoughness;\n    const { map, metalnessMap } = correlatedMaterials.values().next().value;\n    this[$baseColorTexture] = new TextureInfo(onUpdate, TextureUsage.Base, map, correlatedMaterials, gltf, gltfBaseColorTexture ? gltfBaseColorTexture : null);\n    this[$metallicRoughnessTexture] = new TextureInfo(onUpdate, TextureUsage.MetallicRoughness, metalnessMap, correlatedMaterials, gltf, gltfMetallicRoughnessTexture ? gltfMetallicRoughnessTexture : null);\n  }\n  get [$threeMaterials]() {\n    return this[$correlatedObjects];\n  }\n  get baseColorFactor() {\n    return this[$sourceObject].baseColorFactor;\n  }\n  get metallicFactor() {\n    return this[$sourceObject].metallicFactor;\n  }\n  get roughnessFactor() {\n    return this[$sourceObject].roughnessFactor;\n  }\n  get baseColorTexture() {\n    return this[$baseColorTexture];\n  }\n  get metallicRoughnessTexture() {\n    return this[$metallicRoughnessTexture];\n  }\n  setBaseColorFactor(rgba) {\n    const color = new Color();\n    if (rgba instanceof Array) {\n      color.fromArray(rgba);\n    } else {\n      color.set(rgba).convertSRGBToLinear();\n    }\n    for (const material of this[$threeMaterials]) {\n      material.color.set(color);\n      if (rgba instanceof Array) {\n        material.opacity = rgba[3];\n      } else {\n        rgba = [0, 0, 0, material.opacity];\n        color.toArray(rgba);\n      }\n    }\n    const pbrMetallicRoughness = this[$sourceObject];\n    pbrMetallicRoughness.baseColorFactor = rgba;\n    this[$onUpdate]();\n  }\n  setMetallicFactor(value) {\n    for (const material of this[$threeMaterials]) {\n      material.metalness = value;\n    }\n    const pbrMetallicRoughness = this[$sourceObject];\n    pbrMetallicRoughness.metallicFactor = value;\n    this[$onUpdate]();\n  }\n  setRoughnessFactor(value) {\n    for (const material of this[$threeMaterials]) {\n      material.roughness = value;\n    }\n    const pbrMetallicRoughness = this[$sourceObject];\n    pbrMetallicRoughness.roughnessFactor = value;\n    this[$onUpdate]();\n  }\n};\n\n// node_modules/@google/model-viewer/lib/features/scene-graph/material.js\nvar _a5;\nvar $pbrMetallicRoughness = Symbol(\"pbrMetallicRoughness\");\nvar $normalTexture = Symbol(\"normalTexture\");\nvar $occlusionTexture = Symbol(\"occlusionTexture\");\nvar $emissiveTexture = Symbol(\"emissiveTexture\");\nvar $backingThreeMaterial = Symbol(\"backingThreeMaterial\");\nvar $applyAlphaCutoff = Symbol(\"applyAlphaCutoff\");\nvar $lazyLoadGLTFInfo = Symbol(\"lazyLoadGLTFInfo\");\nvar $initialize = Symbol(\"initialize\");\nvar $getLoadedMaterial = Symbol(\"getLoadedMaterial\");\nvar $ensureMaterialIsLoaded = Symbol(\"ensureMaterialIsLoaded\");\nvar $gltfIndex = Symbol(\"gltfIndex\");\nvar $setActive = Symbol(\"setActive\");\nvar $variantIndices = Symbol(\"variantIndices\");\nvar $isActive = Symbol(\"isActive\");\nvar $variantSet = Symbol(\"variantSet\");\nvar $modelVariants = Symbol(\"modelVariants\");\nvar Material2 = class extends ThreeDOMElement {\n  constructor(onUpdate, gltf, gltfMaterial, gltfIndex, isActive, modelVariants, correlatedMaterials, lazyLoadInfo = void 0) {\n    super(onUpdate, gltfMaterial, correlatedMaterials);\n    this[_a5] = /* @__PURE__ */ new Set();\n    this[$gltfIndex] = gltfIndex;\n    this[$isActive] = isActive;\n    this[$modelVariants] = modelVariants;\n    if (lazyLoadInfo == null) {\n      this[$initialize](gltf);\n    } else {\n      this[$lazyLoadGLTFInfo] = lazyLoadInfo;\n    }\n  }\n  get [(_a5 = $variantSet, $backingThreeMaterial)]() {\n    return this[$correlatedObjects].values().next().value;\n  }\n  [$initialize](gltf) {\n    const onUpdate = this[$onUpdate];\n    const gltfMaterial = this[$sourceObject];\n    const correlatedMaterials = this[$correlatedObjects];\n    if (gltfMaterial.extensions && gltfMaterial.extensions[\"KHR_materials_pbrSpecularGlossiness\"]) {\n      console.warn(`Material ${gltfMaterial.name} uses a deprecated extension\n          \"KHR_materials_pbrSpecularGlossiness\", please use\n          \"pbrMetallicRoughness\" instead. Specular Glossiness materials are\n          currently supported for rendering, but not for our scene-graph API,\n          nor for auto-generation of USDZ for Quick Look.`);\n    }\n    if (gltfMaterial.pbrMetallicRoughness == null) {\n      gltfMaterial.pbrMetallicRoughness = {};\n    }\n    this[$pbrMetallicRoughness] = new PBRMetallicRoughness(onUpdate, gltf, gltfMaterial.pbrMetallicRoughness, correlatedMaterials);\n    if (gltfMaterial.emissiveFactor == null) {\n      gltfMaterial.emissiveFactor = [0, 0, 0];\n    }\n    if (gltfMaterial.doubleSided == null) {\n      gltfMaterial.doubleSided = false;\n    }\n    if (gltfMaterial.alphaMode == null) {\n      gltfMaterial.alphaMode = \"OPAQUE\";\n    }\n    if (gltfMaterial.alphaCutoff == null) {\n      gltfMaterial.alphaCutoff = 0.5;\n    }\n    const { normalTexture: gltfNormalTexture, occlusionTexture: gltfOcclusionTexture, emissiveTexture: gltfEmissiveTexture } = gltfMaterial;\n    const { normalMap, aoMap, emissiveMap } = correlatedMaterials.values().next().value;\n    this[$normalTexture] = new TextureInfo(onUpdate, TextureUsage.Normal, normalMap, correlatedMaterials, gltf, gltfNormalTexture ? gltfNormalTexture : null);\n    this[$occlusionTexture] = new TextureInfo(onUpdate, TextureUsage.Occlusion, aoMap, correlatedMaterials, gltf, gltfOcclusionTexture ? gltfOcclusionTexture : null);\n    this[$emissiveTexture] = new TextureInfo(onUpdate, TextureUsage.Emissive, emissiveMap, correlatedMaterials, gltf, gltfEmissiveTexture ? gltfEmissiveTexture : null);\n  }\n  async [$getLoadedMaterial]() {\n    if (this[$lazyLoadGLTFInfo] != null) {\n      const { set, material } = await this[$lazyLoadGLTFInfo].doLazyLoad();\n      this[$correlatedObjects] = set;\n      this[$initialize](this[$lazyLoadGLTFInfo].gltf);\n      this[$lazyLoadGLTFInfo] = void 0;\n      this.ensureLoaded = async () => {\n      };\n      return material;\n    }\n    return this[$correlatedObjects].values().next().value;\n  }\n  [$ensureMaterialIsLoaded]() {\n    if (this[$lazyLoadGLTFInfo] == null) {\n      return;\n    }\n    throw new Error(`Material \"${this.name}\" has not been loaded, call 'await\n    myMaterial.ensureLoaded()' before using an unloaded material.`);\n  }\n  async ensureLoaded() {\n    await this[$getLoadedMaterial]();\n  }\n  get isLoaded() {\n    return this[$lazyLoadGLTFInfo] == null;\n  }\n  get isActive() {\n    return this[$isActive];\n  }\n  [$setActive](isActive) {\n    this[$isActive] = isActive;\n  }\n  get name() {\n    return this[$sourceObject].name;\n  }\n  set name(name) {\n    const sourceMaterial = this[$sourceObject];\n    if (sourceMaterial != null) {\n      sourceMaterial.name = name;\n    }\n    if (this[$correlatedObjects] != null) {\n      for (const threeMaterial of this[$correlatedObjects]) {\n        threeMaterial.name = name;\n      }\n    }\n  }\n  get pbrMetallicRoughness() {\n    this[$ensureMaterialIsLoaded]();\n    return this[$pbrMetallicRoughness];\n  }\n  get normalTexture() {\n    this[$ensureMaterialIsLoaded]();\n    return this[$normalTexture];\n  }\n  get occlusionTexture() {\n    this[$ensureMaterialIsLoaded]();\n    return this[$occlusionTexture];\n  }\n  get emissiveTexture() {\n    this[$ensureMaterialIsLoaded]();\n    return this[$emissiveTexture];\n  }\n  get emissiveFactor() {\n    this[$ensureMaterialIsLoaded]();\n    return this[$sourceObject].emissiveFactor;\n  }\n  get index() {\n    return this[$gltfIndex];\n  }\n  [$variantIndices]() {\n    return this[$variantSet];\n  }\n  hasVariant(name) {\n    const variantData = this[$modelVariants].get(name);\n    return variantData != null && this[$variantSet].has(variantData.index);\n  }\n  setEmissiveFactor(rgb) {\n    this[$ensureMaterialIsLoaded]();\n    const color = new Color();\n    if (rgb instanceof Array) {\n      color.fromArray(rgb);\n    } else {\n      color.set(rgb).convertSRGBToLinear();\n    }\n    for (const material of this[$correlatedObjects]) {\n      material.emissive.set(color);\n    }\n    this[$sourceObject].emissiveFactor = color.toArray();\n    this[$onUpdate]();\n  }\n  [$applyAlphaCutoff]() {\n    this[$ensureMaterialIsLoaded]();\n    const gltfMaterial = this[$sourceObject];\n    for (const material of this[$correlatedObjects]) {\n      if (this[$sourceObject].alphaMode === \"MASK\") {\n        material.alphaTest = gltfMaterial.alphaCutoff;\n      } else {\n        material.alphaTest = void 0;\n      }\n      material.needsUpdate = true;\n    }\n  }\n  setAlphaCutoff(cutoff) {\n    this[$ensureMaterialIsLoaded]();\n    this[$sourceObject].alphaCutoff = cutoff;\n    this[$applyAlphaCutoff]();\n    this[$onUpdate]();\n  }\n  getAlphaCutoff() {\n    this[$ensureMaterialIsLoaded]();\n    return this[$sourceObject].alphaCutoff;\n  }\n  setDoubleSided(doubleSided) {\n    this[$ensureMaterialIsLoaded]();\n    for (const material of this[$correlatedObjects]) {\n      material.side = doubleSided ? DoubleSide : FrontSide;\n      material.needsUpdate = true;\n    }\n    this[$sourceObject].doubleSided = doubleSided;\n    this[$onUpdate]();\n  }\n  getDoubleSided() {\n    this[$ensureMaterialIsLoaded]();\n    return this[$sourceObject].doubleSided;\n  }\n  setAlphaMode(alphaMode) {\n    this[$ensureMaterialIsLoaded]();\n    const enableTransparency = (material, enabled) => {\n      material.transparent = enabled;\n      material.depthWrite = !enabled;\n    };\n    this[$sourceObject].alphaMode = alphaMode;\n    for (const material of this[$correlatedObjects]) {\n      enableTransparency(material, alphaMode === \"BLEND\");\n      this[$applyAlphaCutoff]();\n      material.needsUpdate = true;\n    }\n    this[$onUpdate]();\n  }\n  getAlphaMode() {\n    this[$ensureMaterialIsLoaded]();\n    return this[$sourceObject].alphaMode;\n  }\n};\n\n// node_modules/@google/model-viewer/lib/features/scene-graph/nodes/primitive-node.js\nvar _a6;\nvar _b5;\nvar _c;\nvar _d;\nvar _e;\nvar $materials2 = Symbol(\"materials\");\nvar $variantToMaterialMap = Symbol(\"variantToMaterialMap\");\nvar $modelVariants2 = Symbol(\"modelVariants\");\nvar $mesh = Symbol(\"mesh\");\nvar $primitives = Symbol(\"primitives\");\nvar $loadVariant = Symbol(\"loadVariant\");\nvar $prepareVariantsForExport = Symbol(\"prepareVariantsForExport\");\nvar $switchVariant = Symbol(\"switchVariant\");\nvar $children = Symbol(\"children\");\nvar $initialMaterialIdx = Symbol(\"initialMaterialIdx\");\nvar $activeMaterialIdx = Symbol(\"activeMaterialIdx\");\nvar Node3 = class {\n  constructor(name) {\n    this.name = \"\";\n    this[_a6] = new Array();\n    this.name = name;\n  }\n};\n_a6 = $children;\nvar PrimitiveNode = class extends Node3 {\n  constructor(mesh, mvMaterials, modelVariants, correlatedSceneGraph) {\n    super(mesh.name);\n    this[_b5] = /* @__PURE__ */ new Map();\n    this[_c] = /* @__PURE__ */ new Map();\n    this[_d] = 0;\n    this[_e] = 0;\n    this[$mesh] = mesh;\n    const { gltf, threeGLTF, threeObjectMap } = correlatedSceneGraph;\n    this[$modelVariants2] = modelVariants;\n    this.mesh.userData.variantData = modelVariants;\n    const materialMappings = threeObjectMap.get(mesh.material);\n    if (materialMappings.materials != null) {\n      this[$initialMaterialIdx] = this[$activeMaterialIdx] = materialMappings.materials;\n    } else {\n      console.error(`Primitive (${mesh.name}) missing initial material reference.`);\n    }\n    const associations = mesh.userData.associations || {};\n    if (associations.meshes == null) {\n      console.error(\"Mesh is missing primitive index association\");\n      return;\n    }\n    const meshElementArray = gltf[\"meshes\"] || [];\n    const gltfPrimitives = meshElementArray[associations.meshes].primitives || [];\n    const gltfPrimitive = gltfPrimitives[associations.primitives];\n    if (gltfPrimitive == null) {\n      console.error(\"Mesh primitive definition is missing.\");\n      return;\n    }\n    if (gltfPrimitive.material != null) {\n      this[$materials2].set(gltfPrimitive.material, mvMaterials[gltfPrimitive.material]);\n    } else {\n      const defaultIdx = mvMaterials.findIndex((mat) => {\n        return mat.name === \"Default\";\n      });\n      if (defaultIdx >= 0) {\n        this[$materials2].set(defaultIdx, mvMaterials[defaultIdx]);\n      } else {\n        console.warn(\"gltfPrimitive has no material!\");\n      }\n    }\n    if (gltfPrimitive.extensions && gltfPrimitive.extensions[\"KHR_materials_variants\"]) {\n      const variantsExtension = gltfPrimitive.extensions[\"KHR_materials_variants\"];\n      const extensions = threeGLTF.parser.json.extensions;\n      const variantNames = extensions[\"KHR_materials_variants\"].variants;\n      for (const mapping of variantsExtension.mappings) {\n        const mvMaterial = mvMaterials[mapping.material];\n        this[$materials2].set(mapping.material, mvMaterial);\n        for (const variant of mapping.variants) {\n          const { name } = variantNames[variant];\n          this[$variantToMaterialMap].set(variant, mvMaterial);\n          mvMaterial[$variantIndices]().add(variant);\n          if (!modelVariants.has(name)) {\n            modelVariants.set(name, { name, index: variant });\n          }\n        }\n      }\n    }\n  }\n  get mesh() {\n    return this[$mesh];\n  }\n  async setActiveMaterial(material) {\n    const mvMaterial = this[$materials2].get(material);\n    if (mvMaterial != null) {\n      this.mesh.material = await mvMaterial[$getLoadedMaterial]();\n      this[$activeMaterialIdx] = material;\n    }\n    return this.mesh.material;\n  }\n  getActiveMaterial() {\n    return this[$materials2].get(this[$activeMaterialIdx]);\n  }\n  getMaterial(index) {\n    return this[$materials2].get(index);\n  }\n  async enableVariant(name) {\n    if (name == null) {\n      return this.setActiveMaterial(this[$initialMaterialIdx]);\n    }\n    if (this[$variantToMaterialMap] != null && this[$modelVariants2].has(name)) {\n      const modelVariants = this[$modelVariants2].get(name);\n      return this.enableVariantHelper(modelVariants.index);\n    }\n    return null;\n  }\n  async enableVariantHelper(index) {\n    if (this[$variantToMaterialMap] != null && index != null) {\n      const material = this[$variantToMaterialMap].get(index);\n      if (material != null) {\n        return this.setActiveMaterial(material.index);\n      }\n    }\n    return null;\n  }\n  async instantiateVariants() {\n    if (this[$variantToMaterialMap] == null) {\n      return;\n    }\n    for (const index of this[$variantToMaterialMap].keys()) {\n      const variantMaterial = this.mesh.userData.variantMaterials.get(index);\n      if (variantMaterial.material != null) {\n        continue;\n      }\n      const threeMaterial = await this.enableVariantHelper(index);\n      if (threeMaterial != null) {\n        variantMaterial.material = threeMaterial;\n      }\n    }\n  }\n  get variantInfo() {\n    return this[$variantToMaterialMap];\n  }\n  addVariant(materialVariant, variantName) {\n    if (!this.ensureVariantIsUnused(variantName)) {\n      return false;\n    }\n    if (!this[$modelVariants2].has(variantName)) {\n      this[$modelVariants2].set(variantName, { name: variantName, index: this[$modelVariants2].size });\n    }\n    const modelVariantData = this[$modelVariants2].get(variantName);\n    const variantIndex = modelVariantData.index;\n    materialVariant[$variantIndices]().add(variantIndex);\n    this[$variantToMaterialMap].set(variantIndex, materialVariant);\n    this[$materials2].set(materialVariant.index, materialVariant);\n    this.updateVariantUserData(variantIndex, materialVariant);\n    return true;\n  }\n  deleteVariant(variantIndex) {\n    if (this.variantInfo.has(variantIndex)) {\n      this.variantInfo.delete(variantIndex);\n      const userDataMap = this.mesh.userData.variantMaterials;\n      if (userDataMap != null) {\n        userDataMap.delete(variantIndex);\n      }\n    }\n  }\n  updateVariantUserData(variantIndex, materialVariant) {\n    materialVariant[$variantIndices]().add(variantIndex);\n    this.mesh.userData.variantData = this[$modelVariants2];\n    this.mesh.userData.variantMaterials = this.mesh.userData.variantMaterials || /* @__PURE__ */ new Map();\n    const map = this.mesh.userData.variantMaterials;\n    map.set(variantIndex, {\n      material: materialVariant[$correlatedObjects].values().next().value,\n      gltfMaterialIndex: materialVariant.index\n    });\n  }\n  ensureVariantIsUnused(variantName) {\n    const modelVariants = this[$modelVariants2].get(variantName);\n    if (modelVariants != null && this.variantInfo.has(modelVariants.index)) {\n      console.warn(`Primitive cannot add variant '${variantName}' for this material, it already exists.`);\n      return false;\n    }\n    return true;\n  }\n};\n_b5 = $materials2, _c = $variantToMaterialMap, _d = $initialMaterialIdx, _e = $activeMaterialIdx;\n\n// node_modules/@google/model-viewer/lib/features/scene-graph/model.js\nvar _a7;\nvar _b6;\nvar _c2;\nvar _d2;\nvar _e2;\nvar _f;\nvar $materials3 = Symbol(\"materials\");\nvar $hierarchy = Symbol(\"hierarchy\");\nvar $roots = Symbol(\"roots\");\nvar $primitivesList = Symbol(\"primitives\");\nvar $loadVariant2 = Symbol(\"loadVariant\");\nvar $correlatedSceneGraph2 = Symbol(\"correlatedSceneGraph\");\nvar $prepareVariantsForExport2 = Symbol(\"prepareVariantsForExport\");\nvar $switchVariant2 = Symbol(\"switchVariant\");\nvar $threeScene = Symbol(\"threeScene\");\nvar $materialsFromPoint = Symbol(\"materialsFromPoint\");\nvar $materialFromPoint = Symbol(\"materialFromPoint\");\nvar $variantData = Symbol(\"variantData\");\nvar $availableVariants = Symbol(\"availableVariants\");\nvar $modelOnUpdate = Symbol(\"modelOnUpdate\");\nvar $cloneMaterial = Symbol(\"cloneMaterial\");\nvar LazyLoader = class {\n  constructor(gltf, gltfElementMap, mapKey, doLazyLoad) {\n    this.gltf = gltf;\n    this.gltfElementMap = gltfElementMap;\n    this.mapKey = mapKey;\n    this.doLazyLoad = doLazyLoad;\n  }\n};\nvar Model = class {\n  constructor(correlatedSceneGraph, onUpdate = () => {\n  }) {\n    this[_a7] = new Array();\n    this[_b6] = new Array();\n    this[_c2] = new Array();\n    this[_d2] = new Array();\n    this[_e2] = () => {\n    };\n    this[_f] = /* @__PURE__ */ new Map();\n    this[$modelOnUpdate] = onUpdate;\n    this[$correlatedSceneGraph2] = correlatedSceneGraph;\n    const { gltf, threeGLTF, gltfElementMap } = correlatedSceneGraph;\n    this[$threeScene] = threeGLTF.scene;\n    for (const [i, material] of gltf.materials.entries()) {\n      const correlatedMaterial = gltfElementMap.get(material);\n      if (correlatedMaterial != null) {\n        this[$materials3].push(new Material2(onUpdate, gltf, material, i, true, this[$variantData], correlatedMaterial));\n      } else {\n        const elementArray = gltf[\"materials\"] || [];\n        const gltfMaterialDef = elementArray[i];\n        const capturedMatIndex = i;\n        const materialLoadCallback = async () => {\n          const threeMaterial = await threeGLTF.parser.getDependency(\"material\", capturedMatIndex);\n          const threeMaterialSet = /* @__PURE__ */ new Set();\n          gltfElementMap.set(gltfMaterialDef, threeMaterialSet);\n          threeMaterialSet.add(threeMaterial);\n          return { set: threeMaterialSet, material: threeMaterial };\n        };\n        this[$materials3].push(new Material2(onUpdate, gltf, gltfMaterialDef, i, false, this[$variantData], correlatedMaterial, new LazyLoader(gltf, gltfElementMap, gltfMaterialDef, materialLoadCallback)));\n      }\n    }\n    const parentMap = /* @__PURE__ */ new Map();\n    const nodeStack = new Array();\n    for (const object of threeGLTF.scene.children) {\n      nodeStack.push(object);\n    }\n    while (nodeStack.length > 0) {\n      const object = nodeStack.pop();\n      let node = null;\n      if (object instanceof Mesh) {\n        node = new PrimitiveNode(object, this.materials, this[$variantData], correlatedSceneGraph);\n        this[$primitivesList].push(node);\n      } else {\n        node = new Node3(object.name);\n      }\n      const parent = parentMap.get(object);\n      if (parent != null) {\n        parent[$children].push(node);\n      } else {\n        this[$roots].push(node);\n      }\n      this[$hierarchy].push(node);\n      for (const child of object.children) {\n        nodeStack.push(child);\n        parentMap.set(object, node);\n      }\n    }\n  }\n  /**\n   * Materials are listed in the order of the GLTF materials array, plus a\n   * default material at the end if one is used.\n   *\n   * TODO(#1003): How do we handle non-active scenes?\n   */\n  get materials() {\n    return this[$materials3];\n  }\n  [(_a7 = $materials3, _b6 = $hierarchy, _c2 = $roots, _d2 = $primitivesList, _e2 = $modelOnUpdate, _f = $variantData, $availableVariants)]() {\n    const variants = Array.from(this[$variantData].values());\n    variants.sort((a, b) => {\n      return a.index - b.index;\n    });\n    return variants.map((data) => {\n      return data.name;\n    });\n  }\n  getMaterialByName(name) {\n    const matches = this[$materials3].filter((material) => {\n      return material.name === name;\n    });\n    if (matches.length > 0) {\n      return matches[0];\n    }\n    return null;\n  }\n  /**\n   * Intersects a ray with the Model and returns a list of materials whose\n   * objects were intersected.\n   */\n  [$materialsFromPoint](raycaster2) {\n    const hits = raycaster2.intersectObject(this[$threeScene], true);\n    return hits.map((hit) => {\n      const found = this[$hierarchy].find((node) => {\n        if (node instanceof PrimitiveNode) {\n          const primitive = node;\n          if (primitive.mesh === hit.object) {\n            return true;\n          }\n        }\n        return false;\n      });\n      if (found != null) {\n        return found.getActiveMaterial();\n      }\n      return null;\n    });\n  }\n  /**\n   * Intersects a ray with the Model and returns the first material whose\n   * object was intersected.\n   */\n  [$materialFromPoint](raycaster2) {\n    const materials = this[$materialsFromPoint](raycaster2);\n    if (materials.length > 0) {\n      return materials[0];\n    }\n    return null;\n  }\n  /**\n   * Switches model variant to the variant name provided, or switches to\n   * default/initial materials if 'null' is provided.\n   */\n  async [$switchVariant2](variantName) {\n    for (const primitive of this[$primitivesList]) {\n      await primitive.enableVariant(variantName);\n    }\n    for (const material of this.materials) {\n      material[$setActive](false);\n    }\n    for (const primitive of this[$primitivesList]) {\n      this.materials[primitive.getActiveMaterial().index][$setActive](true);\n    }\n  }\n  async [$prepareVariantsForExport2]() {\n    const promises = new Array();\n    for (const primitive of this[$primitivesList]) {\n      promises.push(primitive.instantiateVariants());\n    }\n    await Promise.all(promises);\n  }\n  [$cloneMaterial](index, newMaterialName) {\n    const material = this.materials[index];\n    if (!material.isLoaded) {\n      console.error(`Cloning an unloaded material,\n           call 'material.ensureLoaded() before cloning the material.`);\n    }\n    const threeMaterialSet = material[$correlatedObjects];\n    const gltfSourceMaterial = JSON.parse(JSON.stringify(material[$sourceObject]));\n    gltfSourceMaterial.name = newMaterialName;\n    const gltf = this[$correlatedSceneGraph2].gltf;\n    gltf.materials.push(gltfSourceMaterial);\n    const clonedSet = /* @__PURE__ */ new Set();\n    for (const [i, threeMaterial] of threeMaterialSet.entries()) {\n      const clone2 = threeMaterial.clone();\n      clone2.name = newMaterialName + (threeMaterialSet.size > 1 ? \"_inst\" + i : \"\");\n      clonedSet.add(clone2);\n    }\n    const clonedMaterial = new Material2(\n      this[$modelOnUpdate],\n      this[$correlatedSceneGraph2].gltf,\n      gltfSourceMaterial,\n      this[$materials3].length,\n      false,\n      // Cloned as inactive.\n      this[$variantData],\n      clonedSet\n    );\n    this[$materials3].push(clonedMaterial);\n    return clonedMaterial;\n  }\n  createMaterialInstanceForVariant(originalMaterialIndex, newMaterialName, variantName, activateVariant = true) {\n    let variantMaterialInstance = null;\n    for (const primitive of this[$primitivesList]) {\n      const variantData = this[$variantData].get(variantName);\n      if (variantData != null && primitive.variantInfo.has(variantData.index)) {\n        continue;\n      }\n      if (primitive.getMaterial(originalMaterialIndex) == null) {\n        continue;\n      }\n      if (!this.hasVariant(variantName)) {\n        this.createVariant(variantName);\n      }\n      if (variantMaterialInstance == null) {\n        variantMaterialInstance = this[$cloneMaterial](originalMaterialIndex, newMaterialName);\n      }\n      primitive.addVariant(variantMaterialInstance, variantName);\n    }\n    if (activateVariant && variantMaterialInstance != null) {\n      variantMaterialInstance[$setActive](true);\n      this.materials[originalMaterialIndex][$setActive](false);\n      for (const primitive of this[$primitivesList]) {\n        primitive.enableVariant(variantName);\n      }\n    }\n    return variantMaterialInstance;\n  }\n  createVariant(variantName) {\n    if (!this[$variantData].has(variantName)) {\n      this[$variantData].set(variantName, { name: variantName, index: this[$variantData].size });\n    } else {\n      console.warn(`Variant '${variantName}'' already exists`);\n    }\n  }\n  hasVariant(variantName) {\n    return this[$variantData].has(variantName);\n  }\n  setMaterialToVariant(materialIndex, targetVariantName) {\n    if (this[$availableVariants]().find((name) => name === targetVariantName) == null) {\n      console.warn(`Can't add material to '${targetVariantName}', the variant does not exist.'`);\n      return;\n    }\n    if (materialIndex < 0 || materialIndex >= this.materials.length) {\n      console.error(`setMaterialToVariant(): materialIndex is out of bounds.`);\n      return;\n    }\n    for (const primitive of this[$primitivesList]) {\n      const material = primitive.getMaterial(materialIndex);\n      if (material != null) {\n        primitive.addVariant(material, targetVariantName);\n      }\n    }\n  }\n  updateVariantName(currentName, newName) {\n    const variantData = this[$variantData].get(currentName);\n    if (variantData == null) {\n      return;\n    }\n    variantData.name = newName;\n    this[$variantData].set(newName, variantData);\n    this[$variantData].delete(currentName);\n  }\n  deleteVariant(variantName) {\n    const variant = this[$variantData].get(variantName);\n    if (variant == null) {\n      return;\n    }\n    for (const material of this.materials) {\n      if (material.hasVariant(variantName)) {\n        material[$variantSet].delete(variant.index);\n      }\n    }\n    for (const primitive of this[$primitivesList]) {\n      primitive.deleteVariant(variant.index);\n    }\n    this[$variantData].delete(variantName);\n  }\n};\n\n// node_modules/@google/model-viewer/lib/features/scene-graph.js\nvar __decorate2 = function(decorators, target2, key, desc) {\n  var c = arguments.length, r = c < 3 ? target2 : desc === null ? desc = Object.getOwnPropertyDescriptor(target2, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target2, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if (d = decorators[i])\n        r = (c < 3 ? d(r) : c > 3 ? d(target2, key, r) : d(target2, key)) || r;\n  return c > 3 && r && Object.defineProperty(target2, key, r), r;\n};\nvar $currentGLTF = Symbol(\"currentGLTF\");\nvar $originalGltfJson = Symbol(\"originalGltfJson\");\nvar $model = Symbol(\"model\");\nvar $getOnUpdateMethod = Symbol(\"getOnUpdateMethod\");\nvar $textureLoader = Symbol(\"textureLoader\");\nvar SceneGraphMixin = (ModelViewerElement2) => {\n  var _a12, _b11, _c6, _d5;\n  class SceneGraphModelViewerElement extends ModelViewerElement2 {\n    constructor() {\n      super(...arguments);\n      this[_a12] = void 0;\n      this[_b11] = null;\n      this[_c6] = new TextureLoader();\n      this[_d5] = null;\n      this.variantName = null;\n      this.orientation = \"0 0 0\";\n      this.scale = \"1 1 1\";\n    }\n    // Scene-graph API:\n    /** @export */\n    get model() {\n      return this[$model];\n    }\n    get availableVariants() {\n      return this.model ? this.model[$availableVariants]() : [];\n    }\n    /**\n     * Returns a deep copy of the gltf JSON as loaded. It will not reflect\n     * changes to the scene-graph, nor will editing it have any effect.\n     */\n    get originalGltfJson() {\n      return this[$originalGltfJson];\n    }\n    [(_a12 = $model, _b11 = $currentGLTF, _c6 = $textureLoader, _d5 = $originalGltfJson, $getOnUpdateMethod)]() {\n      return () => {\n        this[$needsRender]();\n      };\n    }\n    async createTexture(uri, type = \"image/png\") {\n      const currentGLTF = this[$currentGLTF];\n      const texture = await new Promise((resolve) => this[$textureLoader].load(uri, resolve));\n      if (!currentGLTF || !texture) {\n        return null;\n      }\n      texture.encoding = sRGBEncoding;\n      texture.wrapS = RepeatWrapping;\n      texture.wrapT = RepeatWrapping;\n      texture.flipY = false;\n      texture.userData.mimeType = type;\n      return new Texture2(this[$getOnUpdateMethod](), texture);\n    }\n    async updated(changedProperties) {\n      super.updated(changedProperties);\n      if (changedProperties.has(\"variantName\")) {\n        const updateVariantProgress = this[$progressTracker].beginActivity();\n        updateVariantProgress(0.1);\n        const model = this[$model];\n        const { variantName } = this;\n        if (model != null) {\n          await model[$switchVariant2](variantName);\n          this[$needsRender]();\n          this.dispatchEvent(new CustomEvent(\"variant-applied\"));\n        }\n        updateVariantProgress(1);\n      }\n      if (changedProperties.has(\"orientation\") || changedProperties.has(\"scale\")) {\n        if (!this.loaded) {\n          return;\n        }\n        const scene = this[$scene];\n        scene.applyTransform();\n        scene.updateBoundingBox();\n        scene.updateShadow();\n        this[$renderer].arRenderer.onUpdateScene();\n        this[$needsRender]();\n      }\n    }\n    [$onModelLoad]() {\n      super[$onModelLoad]();\n      const { currentGLTF } = this[$scene];\n      if (currentGLTF != null) {\n        const { correlatedSceneGraph } = currentGLTF;\n        if (correlatedSceneGraph != null && currentGLTF !== this[$currentGLTF]) {\n          this[$model] = new Model(correlatedSceneGraph, this[$getOnUpdateMethod]());\n          this[$originalGltfJson] = JSON.parse(JSON.stringify(correlatedSceneGraph.gltf));\n        }\n        if (\"variants\" in currentGLTF.userData) {\n          this.requestUpdate(\"variantName\");\n        }\n      }\n      this[$currentGLTF] = currentGLTF;\n    }\n    /** @export */\n    async exportScene(options) {\n      const scene = this[$scene];\n      return new Promise(async (resolve, reject) => {\n        const opts = {\n          binary: true,\n          onlyVisible: true,\n          maxTextureSize: Infinity,\n          includeCustomExtensions: false,\n          forceIndices: false\n        };\n        Object.assign(opts, options);\n        opts.animations = scene.animations;\n        opts.truncateDrawRange = true;\n        const shadow = scene.shadow;\n        let visible = false;\n        if (shadow != null) {\n          visible = shadow.visible;\n          shadow.visible = false;\n        }\n        await this[$model][$prepareVariantsForExport2]();\n        const exporter = new GLTFExporter().register((writer) => new GLTFExporterMaterialsVariantsExtension(writer));\n        exporter.parse(scene.model, (gltf) => {\n          return resolve(new Blob([opts.binary ? gltf : JSON.stringify(gltf)], {\n            type: opts.binary ? \"application/octet-stream\" : \"application/json\"\n          }));\n        }, () => {\n          return reject(\"glTF export failed\");\n        }, opts);\n        if (shadow != null) {\n          shadow.visible = visible;\n        }\n      });\n    }\n    materialFromPoint(pixelX, pixelY) {\n      const scene = this[$scene];\n      const ndcCoords = scene.getNDC(pixelX, pixelY);\n      scene.raycaster.setFromCamera(ndcCoords, scene.getCamera());\n      return this[$model][$materialFromPoint](scene.raycaster);\n    }\n  }\n  __decorate2([\n    property({ type: String, attribute: \"variant-name\" })\n  ], SceneGraphModelViewerElement.prototype, \"variantName\", void 0);\n  __decorate2([\n    property({ type: String, attribute: \"orientation\" })\n  ], SceneGraphModelViewerElement.prototype, \"orientation\", void 0);\n  __decorate2([\n    property({ type: String, attribute: \"scale\" })\n  ], SceneGraphModelViewerElement.prototype, \"scale\", void 0);\n  return SceneGraphModelViewerElement;\n};\n\n// node_modules/@google/model-viewer/lib/styles/parsers.js\nvar numberNode = (value, unit) => ({ type: \"number\", number: value, unit });\nvar parseExpressions = (() => {\n  const cache2 = {};\n  const MAX_PARSE_ITERATIONS = 1e3;\n  return (inputString) => {\n    const cacheKey = inputString;\n    if (cacheKey in cache2) {\n      return cache2[cacheKey];\n    }\n    const expressions = [];\n    let parseIterations = 0;\n    while (inputString) {\n      if (++parseIterations > MAX_PARSE_ITERATIONS) {\n        inputString = \"\";\n        break;\n      }\n      const expressionParseResult = parseExpression(inputString);\n      const expression = expressionParseResult.nodes[0];\n      if (expression == null || expression.terms.length === 0) {\n        break;\n      }\n      expressions.push(expression);\n      inputString = expressionParseResult.remainingInput;\n    }\n    return cache2[cacheKey] = expressions;\n  };\n})();\nvar parseExpression = (() => {\n  const IS_IDENT_RE = /^(\\-\\-|[a-z\\u0240-\\uffff])/i;\n  const IS_OPERATOR_RE = /^([\\*\\+\\/]|[\\-]\\s)/i;\n  const IS_EXPRESSION_END_RE = /^[\\),]/;\n  const FUNCTION_ARGUMENTS_FIRST_TOKEN = \"(\";\n  const HEX_FIRST_TOKEN = \"#\";\n  return (inputString) => {\n    const terms = [];\n    while (inputString.length) {\n      inputString = inputString.trim();\n      if (IS_EXPRESSION_END_RE.test(inputString)) {\n        break;\n      } else if (inputString[0] === FUNCTION_ARGUMENTS_FIRST_TOKEN) {\n        const { nodes, remainingInput } = parseFunctionArguments(inputString);\n        inputString = remainingInput;\n        terms.push({\n          type: \"function\",\n          name: { type: \"ident\", value: \"calc\" },\n          arguments: nodes\n        });\n      } else if (IS_IDENT_RE.test(inputString)) {\n        const identParseResult = parseIdent(inputString);\n        const identNode = identParseResult.nodes[0];\n        inputString = identParseResult.remainingInput;\n        if (inputString[0] === FUNCTION_ARGUMENTS_FIRST_TOKEN) {\n          const { nodes, remainingInput } = parseFunctionArguments(inputString);\n          terms.push({ type: \"function\", name: identNode, arguments: nodes });\n          inputString = remainingInput;\n        } else {\n          terms.push(identNode);\n        }\n      } else if (IS_OPERATOR_RE.test(inputString)) {\n        terms.push({ type: \"operator\", value: inputString[0] });\n        inputString = inputString.slice(1);\n      } else {\n        const { nodes, remainingInput } = inputString[0] === HEX_FIRST_TOKEN ? parseHex(inputString) : parseNumber(inputString);\n        if (nodes.length === 0) {\n          break;\n        }\n        terms.push(nodes[0]);\n        inputString = remainingInput;\n      }\n    }\n    return { nodes: [{ type: \"expression\", terms }], remainingInput: inputString };\n  };\n})();\nvar parseIdent = (() => {\n  const NOT_IDENT_RE = /[^a-z0-9_\\-\\u0240-\\uffff]/i;\n  return (inputString) => {\n    const match = inputString.match(NOT_IDENT_RE);\n    const ident = match == null ? inputString : inputString.substr(0, match.index);\n    const remainingInput = match == null ? \"\" : inputString.substr(match.index);\n    return { nodes: [{ type: \"ident\", value: ident }], remainingInput };\n  };\n})();\nvar parseNumber = (() => {\n  const VALUE_RE = /[\\+\\-]?(\\d+[\\.]\\d+|\\d+|[\\.]\\d+)([eE][\\+\\-]?\\d+)?/;\n  const UNIT_RE = /^[a-z%]+/i;\n  const ALLOWED_UNITS = /^(m|mm|cm|rad|deg|[%])$/;\n  return (inputString) => {\n    const valueMatch = inputString.match(VALUE_RE);\n    const value = valueMatch == null ? \"0\" : valueMatch[0];\n    inputString = value == null ? inputString : inputString.slice(value.length);\n    const unitMatch = inputString.match(UNIT_RE);\n    let unit = unitMatch != null && unitMatch[0] !== \"\" ? unitMatch[0] : null;\n    const remainingInput = unitMatch == null ? inputString : inputString.slice(unit.length);\n    if (unit != null && !ALLOWED_UNITS.test(unit)) {\n      unit = null;\n    }\n    return {\n      nodes: [{\n        type: \"number\",\n        number: parseFloat(value) || 0,\n        unit\n      }],\n      remainingInput\n    };\n  };\n})();\nvar parseHex = (() => {\n  const HEX_RE = /^[a-f0-9]*/i;\n  return (inputString) => {\n    inputString = inputString.slice(1).trim();\n    const hexMatch = inputString.match(HEX_RE);\n    const nodes = hexMatch == null ? [] : [{ type: \"hex\", value: hexMatch[0] }];\n    return {\n      nodes,\n      remainingInput: hexMatch == null ? inputString : inputString.slice(hexMatch[0].length)\n    };\n  };\n})();\nvar parseFunctionArguments = (inputString) => {\n  const expressionNodes = [];\n  inputString = inputString.slice(1).trim();\n  while (inputString.length) {\n    const expressionParseResult = parseExpression(inputString);\n    expressionNodes.push(expressionParseResult.nodes[0]);\n    inputString = expressionParseResult.remainingInput.trim();\n    if (inputString[0] === \",\") {\n      inputString = inputString.slice(1).trim();\n    } else if (inputString[0] === \")\") {\n      inputString = inputString.slice(1);\n      break;\n    }\n  }\n  return { nodes: expressionNodes, remainingInput: inputString };\n};\nvar $visitedTypes = Symbol(\"visitedTypes\");\nvar ASTWalker = class {\n  constructor(visitedTypes) {\n    this[$visitedTypes] = visitedTypes;\n  }\n  /**\n   * Walk the given set of ASTs, and invoke the provided callback for nodes that\n   * match the filtered set that the ASTWalker was constructed with.\n   */\n  walk(ast, callback) {\n    const remaining = ast.slice();\n    while (remaining.length) {\n      const next = remaining.shift();\n      if (this[$visitedTypes].indexOf(next.type) > -1) {\n        callback(next);\n      }\n      switch (next.type) {\n        case \"expression\":\n          remaining.unshift(...next.terms);\n          break;\n        case \"function\":\n          remaining.unshift(next.name, ...next.arguments);\n          break;\n      }\n    }\n  }\n};\nvar ZERO = Object.freeze({ type: \"number\", number: 0, unit: null });\n\n// node_modules/@google/model-viewer/lib/styles/conversions.js\nvar degreesToRadians = (numberNode2, fallbackRadianValue = 0) => {\n  let { number, unit } = numberNode2;\n  if (!isFinite(number)) {\n    number = fallbackRadianValue;\n    unit = \"rad\";\n  } else if (numberNode2.unit === \"rad\" || numberNode2.unit == null) {\n    return numberNode2;\n  }\n  const valueIsDegrees = unit === \"deg\" && number != null;\n  const value = valueIsDegrees ? number : 0;\n  const radians = value * Math.PI / 180;\n  return { type: \"number\", number: radians, unit: \"rad\" };\n};\nvar lengthToBaseMeters = (numberNode2, fallbackMeterValue = 0) => {\n  let { number, unit } = numberNode2;\n  if (!isFinite(number)) {\n    number = fallbackMeterValue;\n    unit = \"m\";\n  } else if (numberNode2.unit === \"m\") {\n    return numberNode2;\n  }\n  let scale;\n  switch (unit) {\n    default:\n      scale = 1;\n      break;\n    case \"cm\":\n      scale = 1 / 100;\n      break;\n    case \"mm\":\n      scale = 1 / 1e3;\n      break;\n  }\n  const value = scale * number;\n  return { type: \"number\", number: value, unit: \"m\" };\n};\nvar normalizeUnit = (() => {\n  const identity = (node) => node;\n  const unitNormalizers = {\n    \"rad\": identity,\n    \"deg\": degreesToRadians,\n    \"m\": identity,\n    \"mm\": lengthToBaseMeters,\n    \"cm\": lengthToBaseMeters\n  };\n  return (node, fallback = ZERO) => {\n    if (!isFinite(node.number)) {\n      node.number = fallback.number;\n      node.unit = fallback.unit;\n    }\n    const { unit } = node;\n    if (unit == null) {\n      return node;\n    }\n    const normalize2 = unitNormalizers[unit];\n    if (normalize2 == null) {\n      return fallback;\n    }\n    return normalize2(node);\n  };\n})();\n\n// node_modules/@google/model-viewer/lib/three-components/Hotspot.js\nvar Hotspot = class extends CSS2DObject {\n  constructor(config) {\n    super(document.createElement(\"div\"));\n    this.normal = new Vector3(0, 1, 0);\n    this.initialized = false;\n    this.referenceCount = 1;\n    this.pivot = document.createElement(\"div\");\n    this.slot = document.createElement(\"slot\");\n    this.element.classList.add(\"annotation-wrapper\");\n    this.slot.name = config.name;\n    this.element.appendChild(this.pivot);\n    this.pivot.appendChild(this.slot);\n    this.updatePosition(config.position);\n    this.updateNormal(config.normal);\n  }\n  get facingCamera() {\n    return !this.element.classList.contains(\"hide\");\n  }\n  /**\n   * Sets the hotspot to be in the highly visible foreground state.\n   */\n  show() {\n    if (!this.facingCamera || !this.initialized) {\n      this.updateVisibility(true);\n    }\n  }\n  /**\n   * Sets the hotspot to be in the diminished background state.\n   */\n  hide() {\n    if (this.facingCamera || !this.initialized) {\n      this.updateVisibility(false);\n    }\n  }\n  /**\n   * Call this when adding elements to the same slot to keep track.\n   */\n  increment() {\n    this.referenceCount++;\n  }\n  /**\n   * Call this when removing elements from the slot; returns true when the slot\n   * is unused.\n   */\n  decrement() {\n    if (this.referenceCount > 0) {\n      --this.referenceCount;\n    }\n    return this.referenceCount === 0;\n  }\n  /**\n   * Change the position of the hotspot to the input string, in the same format\n   * as the data-position attribute.\n   */\n  updatePosition(position) {\n    if (position == null)\n      return;\n    const positionNodes = parseExpressions(position)[0].terms;\n    for (let i = 0; i < 3; ++i) {\n      this.position.setComponent(i, normalizeUnit(positionNodes[i]).number);\n    }\n    this.updateMatrixWorld();\n  }\n  /**\n   * Change the hotspot's normal to the input string, in the same format as the\n   * data-normal attribute.\n   */\n  updateNormal(normal) {\n    if (normal == null)\n      return;\n    const normalNodes = parseExpressions(normal)[0].terms;\n    for (let i = 0; i < 3; ++i) {\n      this.normal.setComponent(i, normalizeUnit(normalNodes[i]).number);\n    }\n  }\n  orient(radians) {\n    this.pivot.style.transform = `rotate(${radians}rad)`;\n  }\n  updateVisibility(show) {\n    if (show) {\n      this.element.classList.remove(\"hide\");\n    } else {\n      this.element.classList.add(\"hide\");\n    }\n    this.slot.assignedNodes().forEach((node) => {\n      if (node.nodeType !== Node.ELEMENT_NODE) {\n        return;\n      }\n      const element = node;\n      const visibilityAttribute = element.dataset.visibilityAttribute;\n      if (visibilityAttribute != null) {\n        const attributeName = `data-${visibilityAttribute}`;\n        if (show) {\n          element.setAttribute(attributeName, \"\");\n        } else {\n          element.removeAttribute(attributeName);\n        }\n      }\n      element.dispatchEvent(new CustomEvent(\"hotspot-visibility\", {\n        detail: {\n          visible: show\n        }\n      }));\n    });\n    this.initialized = true;\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/ModelUtils.js\nvar reduceVertices = (model, func, initialValue) => {\n  let value = initialValue;\n  const vertex2 = new Vector3();\n  model.traverseVisible((object) => {\n    let i, l;\n    object.updateWorldMatrix(false, false);\n    const geometry = object.geometry;\n    if (geometry !== void 0) {\n      if (geometry.isGeometry) {\n        const vertices = geometry.vertices;\n        for (i = 0, l = vertices.length; i < l; i++) {\n          vertex2.copy(vertices[i]);\n          if (object.isSkinnedMesh) {\n            object.boneTransform(i, vertex2);\n          } else {\n            vertex2.applyMatrix4(object.matrixWorld);\n          }\n          value = func(value, vertex2);\n        }\n      } else if (geometry.isBufferGeometry) {\n        const { position } = geometry.attributes;\n        if (position !== void 0) {\n          for (i = 0, l = position.count; i < l; i++) {\n            vertex2.fromBufferAttribute(position, i);\n            if (object.isSkinnedMesh) {\n              object.boneTransform(i, vertex2);\n            } else {\n              vertex2.applyMatrix4(object.matrixWorld);\n            }\n            value = func(value, vertex2);\n          }\n        }\n      }\n    }\n  });\n  return value;\n};\n\n// node_modules/three/examples/jsm/shaders/HorizontalBlurShader.js\nvar HorizontalBlurShader = {\n  uniforms: {\n    \"tDiffuse\": { value: null },\n    \"h\": { value: 1 / 512 }\n  },\n  vertexShader: (\n    /* glsl */\n    `\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`\n  ),\n  fragmentShader: (\n    /* glsl */\n    `\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float h;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n  )\n};\n\n// node_modules/three/examples/jsm/shaders/VerticalBlurShader.js\nvar VerticalBlurShader = {\n  uniforms: {\n    \"tDiffuse\": { value: null },\n    \"v\": { value: 1 / 512 }\n  },\n  vertexShader: (\n    /* glsl */\n    `\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`\n  ),\n  fragmentShader: (\n    /* glsl */\n    `\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float v;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n  )\n};\n\n// node_modules/three/src/math/MathUtils.js\nvar DEG2RAD2 = Math.PI / 180;\nvar RAD2DEG2 = 180 / Math.PI;\nfunction lerp2(x2, y, t2) {\n  return (1 - t2) * x2 + t2 * y;\n}\n\n// node_modules/@google/model-viewer/lib/three-components/Shadow.js\nvar LOG_MAX_RESOLUTION = 9;\nvar LOG_MIN_RESOLUTION = 6;\nvar ANIMATION_SCALING = 2;\nvar DEFAULT_HARD_INTENSITY = 0.3;\nvar Shadow = class extends Object3D {\n  constructor(scene, softness, side) {\n    super();\n    this.camera = new OrthographicCamera();\n    this.renderTarget = null;\n    this.renderTargetBlur = null;\n    this.depthMaterial = new MeshDepthMaterial();\n    this.horizontalBlurMaterial = new ShaderMaterial(HorizontalBlurShader);\n    this.verticalBlurMaterial = new ShaderMaterial(VerticalBlurShader);\n    this.intensity = 0;\n    this.softness = 1;\n    this.boundingBox = new Box3();\n    this.size = new Vector3();\n    this.maxDimension = 0;\n    this.isAnimated = false;\n    this.needsUpdate = false;\n    const { camera: camera2 } = this;\n    camera2.rotation.x = Math.PI / 2;\n    camera2.left = -0.5;\n    camera2.right = 0.5;\n    camera2.bottom = -0.5;\n    camera2.top = 0.5;\n    this.add(camera2);\n    const plane = new PlaneGeometry();\n    const shadowMaterial = new MeshBasicMaterial({\n      // color: new Color(1, 0, 0),\n      opacity: 1,\n      transparent: true,\n      side: BackSide\n    });\n    this.floor = new Mesh(plane, shadowMaterial);\n    this.floor.userData.shadow = true;\n    camera2.add(this.floor);\n    this.blurPlane = new Mesh(plane);\n    this.blurPlane.visible = false;\n    camera2.add(this.blurPlane);\n    scene.target.add(this);\n    this.depthMaterial.onBeforeCompile = function(shader) {\n      shader.fragmentShader = shader.fragmentShader.replace(\"gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\", \"gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * opacity );\");\n    };\n    this.horizontalBlurMaterial.depthTest = false;\n    this.verticalBlurMaterial.depthTest = false;\n    this.setScene(scene, softness, side);\n  }\n  /**\n   * Update the shadow's size and position for a new scene. Softness is also\n   * needed, as this controls the shadow's resolution.\n   */\n  setScene(scene, softness, side) {\n    const { boundingBox, size, rotation, position } = this;\n    this.isAnimated = scene.animationNames.length > 0;\n    this.boundingBox.copy(scene.boundingBox);\n    this.size.copy(scene.size);\n    this.maxDimension = Math.max(size.x, size.y, size.z) * (this.isAnimated ? ANIMATION_SCALING : 1);\n    this.boundingBox.getCenter(position);\n    if (side === \"back\") {\n      const { min, max: max2 } = boundingBox;\n      [min.y, min.z] = [min.z, min.y];\n      [max2.y, max2.z] = [max2.z, max2.y];\n      [size.y, size.z] = [size.z, size.y];\n      rotation.x = Math.PI / 2;\n      rotation.y = Math.PI;\n    } else {\n      rotation.x = 0;\n      rotation.y = 0;\n    }\n    if (this.isAnimated) {\n      const minY = boundingBox.min.y;\n      const maxY = boundingBox.max.y;\n      size.y = this.maxDimension;\n      boundingBox.expandByVector(size.subScalar(this.maxDimension).multiplyScalar(-0.5));\n      boundingBox.min.y = minY;\n      boundingBox.max.y = maxY;\n      size.set(this.maxDimension, maxY - minY, this.maxDimension);\n    }\n    if (side === \"bottom\") {\n      position.y = boundingBox.min.y;\n    } else {\n      position.z = boundingBox.min.y;\n    }\n    this.setSoftness(softness);\n  }\n  /**\n   * Update the shadow's resolution based on softness (between 0 and 1). Should\n   * not be called frequently, as this results in reallocation.\n   */\n  setSoftness(softness) {\n    this.softness = softness;\n    const { size, camera: camera2 } = this;\n    const scaleY = this.isAnimated ? ANIMATION_SCALING : 1;\n    const resolution = scaleY * Math.pow(2, LOG_MAX_RESOLUTION - softness * (LOG_MAX_RESOLUTION - LOG_MIN_RESOLUTION));\n    this.setMapSize(resolution);\n    const softFar = size.y / 2;\n    const hardFar = size.y * scaleY;\n    camera2.near = 0;\n    camera2.far = lerp2(hardFar, softFar, softness);\n    this.depthMaterial.opacity = 1 / softness;\n    camera2.updateProjectionMatrix();\n    this.setIntensity(this.intensity);\n    this.setOffset(0);\n  }\n  /**\n   * Lower-level version of the above function.\n   */\n  setMapSize(maxMapSize) {\n    const { size } = this;\n    if (this.isAnimated) {\n      maxMapSize *= ANIMATION_SCALING;\n    }\n    const baseWidth = Math.floor(size.x > size.z ? maxMapSize : maxMapSize * size.x / size.z);\n    const baseHeight = Math.floor(size.x > size.z ? maxMapSize * size.z / size.x : maxMapSize);\n    const TAP_WIDTH = 10;\n    const width = TAP_WIDTH + baseWidth;\n    const height = TAP_WIDTH + baseHeight;\n    if (this.renderTarget != null && (this.renderTarget.width !== width || this.renderTarget.height !== height)) {\n      this.renderTarget.dispose();\n      this.renderTarget = null;\n      this.renderTargetBlur.dispose();\n      this.renderTargetBlur = null;\n    }\n    if (this.renderTarget == null) {\n      const params = { format: RGBAFormat };\n      this.renderTarget = new WebGLRenderTarget(width, height, params);\n      this.renderTargetBlur = new WebGLRenderTarget(width, height, params);\n      this.floor.material.map = this.renderTarget.texture;\n    }\n    this.camera.scale.set(size.x * (1 + TAP_WIDTH / baseWidth), size.z * (1 + TAP_WIDTH / baseHeight), 1);\n    this.needsUpdate = true;\n  }\n  /**\n   * Set the shadow's intensity (0 to 1), which is just its opacity. Turns off\n   * shadow rendering if zero.\n   */\n  setIntensity(intensity) {\n    this.intensity = intensity;\n    if (intensity > 0) {\n      this.visible = true;\n      this.floor.visible = true;\n      this.floor.material.opacity = intensity * lerp2(DEFAULT_HARD_INTENSITY, 1, this.softness * this.softness);\n    } else {\n      this.visible = false;\n      this.floor.visible = false;\n    }\n  }\n  getIntensity() {\n    return this.intensity;\n  }\n  /**\n   * An offset can be specified to move the\n   * shadow vertically relative to the bottom of the scene. Positive is up, so\n   * values are generally negative. A small offset keeps our shadow from\n   * z-fighting with any baked-in shadow plane.\n   */\n  setOffset(offset) {\n    this.floor.position.z = -offset + 1e-3 * this.maxDimension;\n  }\n  render(renderer, scene) {\n    scene.overrideMaterial = this.depthMaterial;\n    const initialClearAlpha = renderer.getClearAlpha();\n    renderer.setClearAlpha(0);\n    this.floor.visible = false;\n    const xrEnabled = renderer.xr.enabled;\n    renderer.xr.enabled = false;\n    const oldRenderTarget = renderer.getRenderTarget();\n    renderer.setRenderTarget(this.renderTarget);\n    renderer.render(scene, this.camera);\n    scene.overrideMaterial = null;\n    this.floor.visible = true;\n    this.blurShadow(renderer);\n    renderer.xr.enabled = xrEnabled;\n    renderer.setRenderTarget(oldRenderTarget);\n    renderer.setClearAlpha(initialClearAlpha);\n  }\n  blurShadow(renderer) {\n    const { camera: camera2, horizontalBlurMaterial, verticalBlurMaterial, renderTarget, renderTargetBlur, blurPlane } = this;\n    blurPlane.visible = true;\n    blurPlane.material = horizontalBlurMaterial;\n    horizontalBlurMaterial.uniforms.h.value = 1 / this.renderTarget.width;\n    horizontalBlurMaterial.uniforms.tDiffuse.value = this.renderTarget.texture;\n    renderer.setRenderTarget(renderTargetBlur);\n    renderer.render(blurPlane, camera2);\n    blurPlane.material = verticalBlurMaterial;\n    verticalBlurMaterial.uniforms.v.value = 1 / this.renderTarget.height;\n    verticalBlurMaterial.uniforms.tDiffuse.value = this.renderTargetBlur.texture;\n    renderer.setRenderTarget(renderTarget);\n    renderer.render(blurPlane, camera2);\n    blurPlane.visible = false;\n  }\n  dispose() {\n    if (this.renderTarget != null) {\n      this.renderTarget.dispose();\n    }\n    if (this.renderTargetBlur != null) {\n      this.renderTargetBlur.dispose();\n    }\n    this.depthMaterial.dispose();\n    this.horizontalBlurMaterial.dispose();\n    this.verticalBlurMaterial.dispose();\n    this.floor.material.dispose();\n    this.floor.geometry.dispose();\n    this.blurPlane.geometry.dispose();\n    this.removeFromParent();\n  }\n};\n\n// node_modules/@google/model-viewer/lib/three-components/ModelScene.js\nvar MIN_SHADOW_RATIO = 100;\nvar view = new Vector3();\nvar target = new Vector3();\nvar normalWorld = new Vector3();\nvar raycaster = new Raycaster();\nvar vector32 = new Vector3();\nvar ndc = new Vector2();\nvar ModelScene = class extends Scene {\n  constructor({ canvas, element, width, height }) {\n    super();\n    this.annotationRenderer = new CSS2DRenderer();\n    this.schemaElement = document.createElement(\"script\");\n    this.width = 1;\n    this.height = 1;\n    this.aspect = 1;\n    this.scaleStep = 0;\n    this.renderCount = 0;\n    this.externalRenderer = null;\n    this.camera = new PerspectiveCamera(45, 1, 0.1, 100);\n    this.xrCamera = null;\n    this.url = null;\n    this.target = new Object3D();\n    this.animationNames = [];\n    this.boundingBox = new Box3();\n    this.boundingSphere = new Sphere();\n    this.size = new Vector3();\n    this.idealAspect = 0;\n    this.framedFoVDeg = 0;\n    this.shadow = null;\n    this.shadowIntensity = 0;\n    this.shadowSoftness = 1;\n    this.bakedShadows = /* @__PURE__ */ new Set();\n    this.exposure = 1;\n    this.canScale = true;\n    this.isDirty = false;\n    this.goalTarget = new Vector3();\n    this.targetDamperX = new Damper();\n    this.targetDamperY = new Damper();\n    this.targetDamperZ = new Damper();\n    this._currentGLTF = null;\n    this._model = null;\n    this.cancelPendingSourceChange = null;\n    this.animationsByName = /* @__PURE__ */ new Map();\n    this.currentAnimationAction = null;\n    this.name = \"ModelScene\";\n    this.element = element;\n    this.canvas = canvas;\n    this.camera = new PerspectiveCamera(45, 1, 0.1, 100);\n    this.camera.name = \"MainCamera\";\n    this.add(this.target);\n    this.setSize(width, height);\n    this.target.name = \"Target\";\n    this.mixer = new AnimationMixer(this.target);\n    const { domElement } = this.annotationRenderer;\n    const { style: style2 } = domElement;\n    style2.display = \"none\";\n    style2.pointerEvents = \"none\";\n    style2.position = \"absolute\";\n    style2.top = \"0\";\n    this.element.shadowRoot.querySelector(\".default\").appendChild(domElement);\n    this.schemaElement.setAttribute(\"type\", \"application/ld+json\");\n  }\n  /**\n   * Function to create the context lazily, as when there is only one\n   * <model-viewer> element, the renderer's 3D context can be displayed\n   * directly. This extra context is necessary to copy the renderings into when\n   * there are more than one.\n   */\n  get context() {\n    return this.canvas.getContext(\"2d\");\n  }\n  getCamera() {\n    return this.xrCamera != null ? this.xrCamera : this.camera;\n  }\n  queueRender() {\n    this.isDirty = true;\n  }\n  shouldRender() {\n    return this.isDirty;\n  }\n  hasRendered() {\n    this.isDirty = false;\n  }\n  forceRescale() {\n    this.scaleStep = -1;\n    this.queueRender();\n  }\n  /**\n   * Pass in a THREE.Object3D to be controlled\n   * by this model.\n   */\n  async setObject(model) {\n    this.reset();\n    this._model = model;\n    this.target.add(model);\n    await this.setupScene();\n  }\n  /**\n   * Sets the model via URL.\n   */\n  async setSource(url, progressCallback = () => {\n  }) {\n    if (!url || url === this.url) {\n      progressCallback(1);\n      return;\n    }\n    this.reset();\n    this.url = url;\n    if (this.externalRenderer != null) {\n      const framingInfo = await this.externalRenderer.load(progressCallback);\n      this.boundingSphere.radius = framingInfo.framedRadius;\n      this.idealAspect = framingInfo.fieldOfViewAspect;\n      return;\n    }\n    if (this.cancelPendingSourceChange != null) {\n      this.cancelPendingSourceChange();\n      this.cancelPendingSourceChange = null;\n    }\n    let gltf;\n    try {\n      gltf = await new Promise(async (resolve, reject) => {\n        this.cancelPendingSourceChange = () => reject();\n        try {\n          const result = await this.element[$renderer].loader.load(url, this.element, progressCallback);\n          resolve(result);\n        } catch (error) {\n          reject(error);\n        }\n      });\n    } catch (error) {\n      if (error == null) {\n        return;\n      }\n      throw error;\n    }\n    this.cancelPendingSourceChange = null;\n    this.reset();\n    this.url = url;\n    this._currentGLTF = gltf;\n    if (gltf != null) {\n      this._model = gltf.scene;\n      this.target.add(gltf.scene);\n    }\n    const { animations } = gltf;\n    const animationsByName = /* @__PURE__ */ new Map();\n    const animationNames = [];\n    for (const animation of animations) {\n      animationsByName.set(animation.name, animation);\n      animationNames.push(animation.name);\n    }\n    this.animations = animations;\n    this.animationsByName = animationsByName;\n    this.animationNames = animationNames;\n    await this.setupScene();\n  }\n  async setupScene() {\n    this.applyTransform();\n    this.updateBoundingBox();\n    await this.updateFraming();\n    this.updateShadow();\n    this.setShadowIntensity(this.shadowIntensity);\n  }\n  reset() {\n    this.url = null;\n    this.queueRender();\n    if (this.shadow != null) {\n      this.shadow.setIntensity(0);\n    }\n    this.bakedShadows.clear();\n    const { _model } = this;\n    if (_model != null) {\n      _model.removeFromParent();\n      this._model = null;\n    }\n    const gltf = this._currentGLTF;\n    if (gltf != null) {\n      gltf.dispose();\n      this._currentGLTF = null;\n    }\n    if (this.currentAnimationAction != null) {\n      this.currentAnimationAction.stop();\n      this.currentAnimationAction = null;\n    }\n    this.mixer.stopAllAction();\n    this.mixer.uncacheRoot(this);\n  }\n  dispose() {\n    this.reset();\n    if (this.shadow != null) {\n      this.shadow.dispose();\n      this.shadow = null;\n    }\n    this.element[$currentGLTF] = null;\n    this.element[$originalGltfJson] = null;\n    this.element[$model] = null;\n  }\n  get currentGLTF() {\n    return this._currentGLTF;\n  }\n  /**\n   * Updates the ModelScene for a new container size in CSS pixels.\n   */\n  setSize(width, height) {\n    if (this.width === width && this.height === height) {\n      return;\n    }\n    this.width = Math.max(width, 1);\n    this.height = Math.max(height, 1);\n    this.annotationRenderer.setSize(width, height);\n    this.aspect = this.width / this.height;\n    if (this.externalRenderer != null) {\n      const dpr = resolveDpr();\n      this.externalRenderer.resize(width * dpr, height * dpr);\n    }\n    this.queueRender();\n  }\n  markBakedShadow(mesh) {\n    mesh.userData.shadow = true;\n    this.bakedShadows.add(mesh);\n  }\n  unmarkBakedShadow(mesh) {\n    mesh.userData.shadow = false;\n    mesh.visible = true;\n    this.bakedShadows.delete(mesh);\n    this.boundingBox.expandByObject(mesh);\n  }\n  findBakedShadows(group) {\n    const boundingBox = new Box3();\n    group.traverse((object) => {\n      const mesh = object;\n      if (!mesh.isMesh) {\n        return;\n      }\n      const material = mesh.material;\n      if (!material.transparent) {\n        return;\n      }\n      boundingBox.setFromObject(mesh);\n      const size = boundingBox.getSize(vector32);\n      const minDim = Math.min(size.x, size.y, size.z);\n      const maxDim = Math.max(size.x, size.y, size.z);\n      if (maxDim < MIN_SHADOW_RATIO * minDim) {\n        return;\n      }\n      this.markBakedShadow(mesh);\n    });\n  }\n  checkBakedShadows() {\n    const { min, max: max2 } = this.boundingBox;\n    const shadowBox = new Box3();\n    this.boundingBox.getSize(this.size);\n    for (const mesh of this.bakedShadows) {\n      shadowBox.setFromObject(mesh);\n      if (shadowBox.min.y < min.y + this.size.y / MIN_SHADOW_RATIO && shadowBox.min.x <= min.x && shadowBox.max.x >= max2.x && shadowBox.min.z <= min.z && shadowBox.max.z >= max2.z) {\n        continue;\n      }\n      if (shadowBox.min.z < min.z + this.size.z / MIN_SHADOW_RATIO && shadowBox.min.x <= min.x && shadowBox.max.x >= max2.x && shadowBox.min.y <= min.y && shadowBox.max.y >= max2.y) {\n        continue;\n      }\n      this.unmarkBakedShadow(mesh);\n    }\n  }\n  applyTransform() {\n    const { model } = this;\n    if (model == null) {\n      return;\n    }\n    const orientation = parseExpressions(this.element.orientation)[0].terms;\n    const roll = normalizeUnit(orientation[0]).number;\n    const pitch = normalizeUnit(orientation[1]).number;\n    const yaw = normalizeUnit(orientation[2]).number;\n    model.quaternion.setFromEuler(new Euler(pitch, yaw, roll, \"YXZ\"));\n    const scale = parseExpressions(this.element.scale)[0].terms;\n    model.scale.set(scale[0].number, scale[1].number, scale[2].number);\n  }\n  updateBoundingBox() {\n    const { model } = this;\n    if (model == null) {\n      return;\n    }\n    this.target.remove(model);\n    this.findBakedShadows(model);\n    const bound = (box, vertex2) => {\n      return box.expandByPoint(vertex2);\n    };\n    this.setBakedShadowVisibility(false);\n    this.boundingBox = reduceVertices(model, bound, new Box3());\n    if (this.boundingBox.isEmpty()) {\n      this.setBakedShadowVisibility(true);\n      this.bakedShadows.forEach((mesh) => this.unmarkBakedShadow(mesh));\n      this.boundingBox = reduceVertices(model, bound, new Box3());\n    }\n    this.checkBakedShadows();\n    this.setBakedShadowVisibility();\n    this.boundingBox.getSize(this.size);\n    this.target.add(model);\n  }\n  /**\n   * Calculates the boundingSphere and idealAspect that allows the 3D\n   * object to be framed tightly in a 2D window of any aspect ratio without\n   * clipping at any camera orbit. The camera's center target point can be\n   * optionally specified. If no center is specified, it defaults to the center\n   * of the bounding box, which means asymmetric models will tend to be tight on\n   * one side instead of both. Proper choice of center can correct this.\n   */\n  async updateFraming() {\n    const { model } = this;\n    if (model == null) {\n      return;\n    }\n    this.target.remove(model);\n    this.setBakedShadowVisibility(false);\n    const { center } = this.boundingSphere;\n    this.element.requestUpdate(\"cameraTarget\");\n    await this.element.updateComplete;\n    center.copy(this.getTarget());\n    const radiusSquared = (value, vertex2) => {\n      return Math.max(value, center.distanceToSquared(vertex2));\n    };\n    this.boundingSphere.radius = Math.sqrt(reduceVertices(model, radiusSquared, 0));\n    const horizontalTanFov = (value, vertex2) => {\n      vertex2.sub(center);\n      const radiusXZ = Math.sqrt(vertex2.x * vertex2.x + vertex2.z * vertex2.z);\n      return Math.max(value, radiusXZ / (this.idealCameraDistance() - Math.abs(vertex2.y)));\n    };\n    this.idealAspect = reduceVertices(model, horizontalTanFov, 0) / Math.tan(this.framedFoVDeg / 2 * Math.PI / 180);\n    this.setBakedShadowVisibility();\n    this.target.add(model);\n  }\n  setBakedShadowVisibility(visible = this.shadowIntensity <= 0) {\n    for (const shadow of this.bakedShadows) {\n      shadow.visible = visible;\n    }\n  }\n  idealCameraDistance() {\n    const halfFovRad = this.framedFoVDeg / 2 * Math.PI / 180;\n    return this.boundingSphere.radius / Math.sin(halfFovRad);\n  }\n  /**\n   * Set's the framedFieldOfView based on the aspect ratio of the window in\n   * order to keep the model fully visible at any camera orientation.\n   */\n  adjustedFoV(fovDeg) {\n    const vertical = Math.tan(fovDeg / 2 * Math.PI / 180) * Math.max(1, this.idealAspect / this.aspect);\n    return 2 * Math.atan(vertical) * 180 / Math.PI;\n  }\n  getNDC(clientX, clientY) {\n    if (this.xrCamera != null) {\n      ndc.set(clientX / window.screen.width, clientY / window.screen.height);\n    } else {\n      const rect = this.element.getBoundingClientRect();\n      ndc.set((clientX - rect.x) / this.width, (clientY - rect.y) / this.height);\n    }\n    ndc.multiplyScalar(2).subScalar(1);\n    ndc.y *= -1;\n    return ndc;\n  }\n  /**\n   * Returns the size of the corresponding canvas element.\n   */\n  getSize() {\n    return { width: this.width, height: this.height };\n  }\n  setEnvironmentAndSkybox(environment, skybox) {\n    if (this.element[$renderer].arRenderer.presentedScene === this) {\n      return;\n    }\n    this.environment = environment;\n    this.background = skybox;\n    this.queueRender();\n  }\n  /**\n   * Sets the point in model coordinates the model should orbit/pivot around.\n   */\n  setTarget(modelX, modelY, modelZ) {\n    this.goalTarget.set(-modelX, -modelY, -modelZ);\n  }\n  /**\n   * Set the decay time of, affects the speed of target transitions.\n   */\n  setTargetDamperDecayTime(decayMilliseconds) {\n    this.targetDamperX.setDecayTime(decayMilliseconds);\n    this.targetDamperY.setDecayTime(decayMilliseconds);\n    this.targetDamperZ.setDecayTime(decayMilliseconds);\n  }\n  /**\n   * Gets the point in model coordinates the model should orbit/pivot around.\n   */\n  getTarget() {\n    return this.goalTarget.clone().multiplyScalar(-1);\n  }\n  /**\n   * Shifts the model to the target point immediately instead of easing in.\n   */\n  jumpToGoal() {\n    this.updateTarget(SETTLING_TIME);\n  }\n  /**\n   * This should be called every frame with the frame delta to cause the target\n   * to transition to its set point.\n   */\n  updateTarget(delta) {\n    const goal = this.goalTarget;\n    const target2 = this.target.position;\n    if (!goal.equals(target2)) {\n      const normalization = this.boundingSphere.radius / 10;\n      let { x: x2, y, z } = target2;\n      x2 = this.targetDamperX.update(x2, goal.x, delta, normalization);\n      y = this.targetDamperY.update(y, goal.y, delta, normalization);\n      z = this.targetDamperZ.update(z, goal.z, delta, normalization);\n      this.target.position.set(x2, y, z);\n      this.target.updateMatrixWorld();\n      this.queueRender();\n      return true;\n    } else {\n      return false;\n    }\n  }\n  /**\n   * Yaw the +z (front) of the model toward the indicated world coordinates.\n   */\n  pointTowards(worldX, worldZ) {\n    const { x: x2, z } = this.position;\n    this.yaw = Math.atan2(worldX - x2, worldZ - z);\n  }\n  get model() {\n    return this._model;\n  }\n  /**\n   * Yaw is the scene's orientation about the y-axis, around the rotation\n   * center.\n   */\n  set yaw(radiansY) {\n    this.rotation.y = radiansY;\n    this.queueRender();\n  }\n  get yaw() {\n    return this.rotation.y;\n  }\n  set animationTime(value) {\n    this.mixer.setTime(value);\n    this.queueShadowRender();\n  }\n  get animationTime() {\n    if (this.currentAnimationAction != null) {\n      const loopCount = Math.max(this.currentAnimationAction._loopCount, 0);\n      if (this.currentAnimationAction.loop === LoopPingPong && (loopCount & 1) === 1) {\n        return this.duration - this.currentAnimationAction.time;\n      } else {\n        return this.currentAnimationAction.time;\n      }\n    }\n    return 0;\n  }\n  set animationTimeScale(value) {\n    this.mixer.timeScale = value;\n  }\n  get animationTimeScale() {\n    return this.mixer.timeScale;\n  }\n  get duration() {\n    if (this.currentAnimationAction != null && this.currentAnimationAction.getClip()) {\n      return this.currentAnimationAction.getClip().duration;\n    }\n    return 0;\n  }\n  get hasActiveAnimation() {\n    return this.currentAnimationAction != null;\n  }\n  /**\n   * Plays an animation if there are any associated with the current model.\n   * Accepts an optional string name of an animation to play. If no name is\n   * provided, or if no animation is found by the given name, always falls back\n   * to playing the first animation.\n   */\n  playAnimation(name = null, crossfadeTime = 0, loopMode = LoopRepeat, repetitionCount = Infinity) {\n    if (this._currentGLTF == null) {\n      return;\n    }\n    const { animations } = this;\n    if (animations == null || animations.length === 0) {\n      console.warn(`Cannot play animation (model does not have any animations)`);\n      return;\n    }\n    let animationClip = null;\n    if (name != null) {\n      animationClip = this.animationsByName.get(name);\n      if (animationClip == null) {\n        const parsedAnimationIndex = parseInt(name);\n        if (!isNaN(parsedAnimationIndex) && parsedAnimationIndex >= 0 && parsedAnimationIndex < animations.length) {\n          animationClip = animations[parsedAnimationIndex];\n        }\n      }\n    }\n    if (animationClip == null) {\n      animationClip = animations[0];\n    }\n    try {\n      const { currentAnimationAction: lastAnimationAction } = this;\n      const action = this.mixer.clipAction(animationClip, this);\n      this.currentAnimationAction = action;\n      if (this.element.paused) {\n        this.mixer.stopAllAction();\n      } else {\n        action.paused = false;\n        if (lastAnimationAction != null && action !== lastAnimationAction) {\n          action.crossFadeFrom(lastAnimationAction, crossfadeTime, false);\n        } else if (this.animationTimeScale > 0 && this.animationTime == this.duration) {\n          this.animationTime = 0;\n        }\n      }\n      action.setLoop(loopMode, repetitionCount);\n      action.enabled = true;\n      action.clampWhenFinished = true;\n      action.play();\n    } catch (error) {\n      console.error(error);\n    }\n  }\n  stopAnimation() {\n    this.currentAnimationAction = null;\n    this.mixer.stopAllAction();\n  }\n  updateAnimation(step) {\n    this.mixer.update(step);\n    this.queueShadowRender();\n  }\n  subscribeMixerEvent(event, callback) {\n    this.mixer.addEventListener(event, callback);\n  }\n  /**\n   * Call if the object has been changed in such a way that the shadow's shape\n   * has changed (not a rotation about the Y axis).\n   */\n  updateShadow() {\n    const shadow = this.shadow;\n    if (shadow != null) {\n      const side = this.element.arPlacement === \"wall\" ? \"back\" : \"bottom\";\n      shadow.setScene(this, this.shadowSoftness, side);\n      shadow.needsUpdate = true;\n    }\n  }\n  renderShadow(renderer) {\n    const shadow = this.shadow;\n    if (shadow != null && shadow.needsUpdate == true) {\n      shadow.render(renderer, this);\n      shadow.needsUpdate = false;\n    }\n  }\n  queueShadowRender() {\n    if (this.shadow != null) {\n      this.shadow.needsUpdate = true;\n    }\n  }\n  /**\n   * Sets the shadow's intensity, lazily creating the shadow as necessary.\n   */\n  setShadowIntensity(shadowIntensity) {\n    this.shadowIntensity = shadowIntensity;\n    if (this._currentGLTF == null) {\n      return;\n    }\n    this.setBakedShadowVisibility();\n    if (shadowIntensity <= 0 && this.shadow == null) {\n      return;\n    }\n    if (this.shadow == null) {\n      const side = this.element.arPlacement === \"wall\" ? \"back\" : \"bottom\";\n      this.shadow = new Shadow(this, this.shadowSoftness, side);\n    }\n    this.shadow.setIntensity(shadowIntensity);\n  }\n  /**\n   * Sets the shadow's softness by mapping a [0, 1] softness parameter to the\n   * shadow's resolution. This involves reallocation, so it should not be\n   * changed frequently. Softer shadows are cheaper to render.\n   */\n  setShadowSoftness(softness) {\n    this.shadowSoftness = softness;\n    const shadow = this.shadow;\n    if (shadow != null) {\n      shadow.setSoftness(softness);\n    }\n  }\n  /**\n   * Shift the floor vertically from the bottom of the model's bounding box by\n   * offset (should generally be negative).\n   */\n  setShadowOffset(offset) {\n    const shadow = this.shadow;\n    if (shadow != null) {\n      shadow.setOffset(offset);\n    }\n  }\n  get raycaster() {\n    return raycaster;\n  }\n  /**\n   * This method returns the world position, model-space normal and texture\n   * coordinate of the point on the mesh corresponding to the input pixel\n   * coordinates given relative to the model-viewer element. If the mesh\n   * is not hit, the result is null.\n   */\n  positionAndNormalFromPoint(ndcPosition, object = this) {\n    this.raycaster.setFromCamera(ndcPosition, this.getCamera());\n    const hits = this.raycaster.intersectObject(object, true);\n    const hit = hits.find((hit2) => hit2.object.visible && !hit2.object.userData.shadow);\n    if (hit == null || hit.face == null) {\n      return null;\n    }\n    if (hit.uv == null) {\n      return { position: hit.point, normal: hit.face.normal, uv: null };\n    }\n    hit.face.normal.applyNormalMatrix(new Matrix3().getNormalMatrix(hit.object.matrixWorld));\n    return { position: hit.point, normal: hit.face.normal, uv: hit.uv };\n  }\n  /**\n   * The following methods are for operating on the set of Hotspot objects\n   * attached to the scene. These come from DOM elements, provided to slots by\n   * the Annotation Mixin.\n   */\n  addHotspot(hotspot) {\n    this.target.add(hotspot);\n    this.annotationRenderer.domElement.appendChild(hotspot.element);\n  }\n  removeHotspot(hotspot) {\n    this.target.remove(hotspot);\n  }\n  /**\n   * Helper method to apply a function to all hotspots.\n   */\n  forHotspots(func) {\n    const { children } = this.target;\n    for (let i = 0, l = children.length; i < l; i++) {\n      const hotspot = children[i];\n      if (hotspot instanceof Hotspot) {\n        func(hotspot);\n      }\n    }\n  }\n  /**\n   * Update the CSS visibility of the hotspots based on whether their normals\n   * point toward the camera.\n   */\n  updateHotspots(viewerPosition) {\n    this.forHotspots((hotspot) => {\n      view.copy(viewerPosition);\n      target.setFromMatrixPosition(hotspot.matrixWorld);\n      view.sub(target);\n      normalWorld.copy(hotspot.normal).transformDirection(this.target.matrixWorld);\n      if (view.dot(normalWorld) < 0) {\n        hotspot.hide();\n      } else {\n        hotspot.show();\n      }\n    });\n  }\n  /**\n   * Rotate all hotspots to an absolute orientation given by the input number of\n   * radians. Zero returns them to upright.\n   */\n  orientHotspots(radians) {\n    this.forHotspots((hotspot) => {\n      hotspot.orient(radians);\n    });\n  }\n  /**\n   * Set the rendering visibility of all hotspots. This is used to hide them\n   * during transitions and such.\n   */\n  setHotspotsVisibility(visible) {\n    this.forHotspots((hotspot) => {\n      hotspot.visible = visible;\n    });\n  }\n  updateSchema(src) {\n    var _a12;\n    const { schemaElement, element } = this;\n    const { alt, poster, iosSrc } = element;\n    if (src != null) {\n      const encoding = [{\n        \"@type\": \"MediaObject\",\n        contentUrl: src,\n        encodingFormat: ((_a12 = src.split(\".\").pop()) === null || _a12 === void 0 ? void 0 : _a12.toLowerCase()) === \"gltf\" ? \"model/gltf+json\" : \"model/gltf-binary\"\n      }];\n      if (iosSrc) {\n        encoding.push({\n          \"@type\": \"MediaObject\",\n          contentUrl: iosSrc,\n          encodingFormat: \"model/vnd.usdz+zip\"\n        });\n      }\n      const structuredData = {\n        \"@context\": \"http://schema.org/\",\n        \"@type\": \"3DModel\",\n        image: poster !== null && poster !== void 0 ? poster : void 0,\n        name: alt !== null && alt !== void 0 ? alt : void 0,\n        encoding\n      };\n      schemaElement.textContent = JSON.stringify(structuredData);\n      document.head.appendChild(schemaElement);\n    } else if (schemaElement.parentElement != null) {\n      schemaElement.parentElement.removeChild(schemaElement);\n    }\n  }\n};\n\n// node_modules/@google/model-viewer/lib/utilities/data-conversion.js\nvar dataUrlToBlob = async (base64DataUrl) => {\n  return new Promise((resolve, reject) => {\n    const sliceSize = 512;\n    const typeMatch = base64DataUrl.match(/data:(.*);/);\n    if (!typeMatch) {\n      return reject(new Error(`${base64DataUrl} is not a valid data Url`));\n    }\n    const type = typeMatch[1];\n    const base64 = base64DataUrl.replace(/data:image\\/\\w+;base64,/, \"\");\n    const byteCharacters = atob(base64);\n    const byteArrays = [];\n    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n      const slice = byteCharacters.slice(offset, offset + sliceSize);\n      const byteNumbers = new Array(slice.length);\n      for (let i = 0; i < slice.length; i++) {\n        byteNumbers[i] = slice.charCodeAt(i);\n      }\n      const byteArray = new Uint8Array(byteNumbers);\n      byteArrays.push(byteArray);\n    }\n    resolve(new Blob(byteArrays, { type }));\n  });\n};\n\n// node_modules/@google/model-viewer/lib/utilities/progress-tracker.js\nvar ProgressTracker = class extends EventTarget {\n  constructor() {\n    super(...arguments);\n    this.ongoingActivities = /* @__PURE__ */ new Set();\n    this.totalProgress = 0;\n  }\n  /**\n   * The total number of activities currently being tracked.\n   */\n  get ongoingActivityCount() {\n    return this.ongoingActivities.size;\n  }\n  /**\n   * Registers a new activity to be tracked by the progress tracker. The method\n   * returns a special callback that should be invoked whenever new progress is\n   * ready to be reported. The progress should be reported as a value between 0\n   * and 1, where 0 would represent the beginning of the action and 1 would\n   * represent its completion.\n   *\n   * There is no built-in notion of a time-out for ongoing activities, so once\n   * an ongoing activity is begun, it is up to the consumer of this API to\n   * update the progress until that activity is no longer ongoing.\n   *\n   * Progress is only allowed to move forward for any given activity. If a lower\n   * progress is reported than the previously reported progress, it will be\n   * ignored.\n   */\n  beginActivity() {\n    const activity = { progress: 0, completed: false };\n    this.ongoingActivities.add(activity);\n    if (this.ongoingActivityCount === 1) {\n      this.announceTotalProgress(activity, 0);\n    }\n    return (progress) => {\n      let nextProgress;\n      nextProgress = Math.max(clamp2(progress, 0, 1), activity.progress);\n      if (nextProgress !== activity.progress) {\n        this.announceTotalProgress(activity, nextProgress);\n      }\n      return activity.progress;\n    };\n  }\n  announceTotalProgress(updatedActivity, nextProgress) {\n    let progressLeft = 0;\n    let completedActivities = 0;\n    if (nextProgress == 1)\n      updatedActivity.completed = true;\n    for (const activity of this.ongoingActivities) {\n      const { progress } = activity;\n      progressLeft += 1 - progress;\n      if (activity.completed === true) {\n        completedActivities++;\n      }\n    }\n    const lastProgress = updatedActivity.progress;\n    updatedActivity.progress = nextProgress;\n    this.totalProgress += (nextProgress - lastProgress) * (1 - this.totalProgress) / progressLeft;\n    const totalProgress = completedActivities === this.ongoingActivityCount ? 1 : this.totalProgress;\n    this.dispatchEvent(new CustomEvent(\"progress\", { detail: { totalProgress } }));\n    if (completedActivities === this.ongoingActivityCount) {\n      this.totalProgress = 0;\n      this.ongoingActivities.clear();\n    }\n  }\n};\n\n// node_modules/@google/model-viewer/lib/model-viewer-base.js\nvar __decorate3 = function(decorators, target2, key, desc) {\n  var c = arguments.length, r = c < 3 ? target2 : desc === null ? desc = Object.getOwnPropertyDescriptor(target2, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target2, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if (d = decorators[i])\n        r = (c < 3 ? d(r) : c > 3 ? d(target2, key, r) : d(target2, key)) || r;\n  return c > 3 && r && Object.defineProperty(target2, key, r), r;\n};\nvar _a8;\nvar _b7;\nvar _c3;\nvar _d3;\nvar _e3;\nvar _f3;\nvar _g;\nvar _h;\nvar _j;\nvar _k;\nvar _l;\nvar _m;\nvar _o;\nvar CLEAR_MODEL_TIMEOUT_MS = 1e3;\nvar FALLBACK_SIZE_UPDATE_THRESHOLD_MS = 50;\nvar ANNOUNCE_MODEL_VISIBILITY_DEBOUNCE_THRESHOLD = 0;\nvar UNSIZED_MEDIA_WIDTH = 300;\nvar UNSIZED_MEDIA_HEIGHT = 150;\nvar blobCanvas = document.createElement(\"canvas\");\nvar $fallbackResizeHandler = Symbol(\"fallbackResizeHandler\");\nvar $defaultAriaLabel = Symbol(\"defaultAriaLabel\");\nvar $resizeObserver = Symbol(\"resizeObserver\");\nvar $clearModelTimeout = Symbol(\"clearModelTimeout\");\nvar $onContextLost = Symbol(\"onContextLost\");\nvar $loaded = Symbol(\"loaded\");\nvar $status = Symbol(\"status\");\nvar $onFocus = Symbol(\"onFocus\");\nvar $onBlur = Symbol(\"onBlur\");\nvar $updateSize = Symbol(\"updateSize\");\nvar $intersectionObserver = Symbol(\"intersectionObserver\");\nvar $isElementInViewport = Symbol(\"isElementInViewport\");\nvar $announceModelVisibility = Symbol(\"announceModelVisibility\");\nvar $ariaLabel = Symbol(\"ariaLabel\");\nvar $altDefaulted = Symbol(\"altDefaulted\");\nvar $statusElement = Symbol(\"statusElement\");\nvar $updateStatus = Symbol(\"updateStatus\");\nvar $loadedTime = Symbol(\"loadedTime\");\nvar $updateSource = Symbol(\"updateSource\");\nvar $markLoaded = Symbol(\"markLoaded\");\nvar $container = Symbol(\"container\");\nvar $userInputElement = Symbol(\"input\");\nvar $canvas = Symbol(\"canvas\");\nvar $scene = Symbol(\"scene\");\nvar $needsRender = Symbol(\"needsRender\");\nvar $tick = Symbol(\"tick\");\nvar $onModelLoad = Symbol(\"onModelLoad\");\nvar $onResize = Symbol(\"onResize\");\nvar $renderer = Symbol(\"renderer\");\nvar $progressTracker = Symbol(\"progressTracker\");\nvar $getLoaded = Symbol(\"getLoaded\");\nvar $getModelIsVisible = Symbol(\"getModelIsVisible\");\nvar $shouldAttemptPreload = Symbol(\"shouldAttemptPreload\");\nvar toVector3D = (v) => {\n  return {\n    x: v.x,\n    y: v.y,\n    z: v.z,\n    toString() {\n      return `${this.x}m ${this.y}m ${this.z}m`;\n    }\n  };\n};\nvar toVector2D = (v) => {\n  return {\n    u: v.x,\n    v: v.y,\n    toString() {\n      return `${this.u} ${this.v}`;\n    }\n  };\n};\nvar ModelViewerElementBase = class extends ReactiveElement {\n  /**\n   * Creates a new ModelViewerElement.\n   */\n  constructor() {\n    super();\n    this.alt = null;\n    this.src = null;\n    this.withCredentials = false;\n    this.generateSchema = false;\n    this[_a8] = false;\n    this[_b7] = false;\n    this[_c3] = 0;\n    this[_d3] = \"\";\n    this[_e3] = null;\n    this[_f3] = debounce(() => {\n      const boundingRect = this.getBoundingClientRect();\n      this[$updateSize](boundingRect);\n    }, FALLBACK_SIZE_UPDATE_THRESHOLD_MS);\n    this[_g] = debounce((oldVisibility) => {\n      const newVisibility = this.modelIsVisible;\n      if (newVisibility !== oldVisibility) {\n        this.dispatchEvent(new CustomEvent(\"model-visibility\", { detail: { visible: newVisibility } }));\n      }\n    }, ANNOUNCE_MODEL_VISIBILITY_DEBOUNCE_THRESHOLD);\n    this[_h] = null;\n    this[_j] = null;\n    this[_k] = new ProgressTracker();\n    this[_l] = () => {\n      this[$statusElement].textContent = this[$status];\n    };\n    this[_m] = () => {\n      this[$statusElement].textContent = \"\";\n    };\n    this[_o] = (event) => {\n      this.dispatchEvent(new CustomEvent(\"error\", { detail: { type: \"webglcontextlost\", sourceError: event.sourceEvent } }));\n    };\n    this.attachShadow({ mode: \"open\" });\n    const shadowRoot = this.shadowRoot;\n    makeTemplate(shadowRoot);\n    this[$container] = shadowRoot.querySelector(\".container\");\n    this[$userInputElement] = shadowRoot.querySelector(\".userInput\");\n    this[$canvas] = shadowRoot.querySelector(\"canvas\");\n    this[$statusElement] = shadowRoot.querySelector(\"#status\");\n    this[$defaultAriaLabel] = this[$userInputElement].getAttribute(\"aria-label\");\n    let width, height;\n    if (this.isConnected) {\n      const rect = this.getBoundingClientRect();\n      width = rect.width;\n      height = rect.height;\n    } else {\n      width = UNSIZED_MEDIA_WIDTH;\n      height = UNSIZED_MEDIA_HEIGHT;\n    }\n    this[$scene] = new ModelScene({ canvas: this[$canvas], element: this, width, height });\n    Promise.resolve().then(() => {\n      this[$updateSize](this.getBoundingClientRect());\n    });\n    if (HAS_RESIZE_OBSERVER) {\n      this[$resizeObserver] = new ResizeObserver((entries) => {\n        if (this[$renderer].isPresenting) {\n          return;\n        }\n        for (let entry of entries) {\n          if (entry.target === this) {\n            this[$updateSize](entry.contentRect);\n          }\n        }\n      });\n    }\n    if (HAS_INTERSECTION_OBSERVER) {\n      this[$intersectionObserver] = new IntersectionObserver((entries) => {\n        for (let entry of entries) {\n          if (entry.target === this) {\n            const oldVisibility = this.modelIsVisible;\n            this[$isElementInViewport] = entry.isIntersecting;\n            this[$announceModelVisibility](oldVisibility);\n            if (this[$isElementInViewport] && !this.loaded) {\n              this[$updateSource]();\n            }\n          }\n        }\n      }, {\n        root: null,\n        // We used to have margin here, but it was causing animated models below\n        // the fold to steal the frame budget. Weirder still, it would also\n        // cause input events to be swallowed, sometimes for seconds on the\n        // model above the fold, but only when the animated model was completely\n        // below. Setting this margin to zero fixed it.\n        rootMargin: \"0px\",\n        // With zero threshold, an element adjacent to but not intersecting the\n        // viewport will be reported as intersecting, which will cause\n        // unnecessary rendering. Any slight positive threshold alleviates this.\n        threshold: 1e-5\n      });\n    } else {\n      this[$isElementInViewport] = true;\n    }\n  }\n  static get is() {\n    return \"model-viewer\";\n  }\n  /** @export */\n  static set modelCacheSize(value) {\n    CachingGLTFLoader[$evictionPolicy].evictionThreshold = value;\n  }\n  /** @export */\n  static get modelCacheSize() {\n    return CachingGLTFLoader[$evictionPolicy].evictionThreshold;\n  }\n  /** @export */\n  static set minimumRenderScale(value) {\n    if (value > 1) {\n      console.warn(\"<model-viewer> minimumRenderScale has been clamped to a maximum value of 1.\");\n    }\n    if (value <= 0) {\n      console.warn(\"<model-viewer> minimumRenderScale has been clamped to a minimum value of 0.25.\");\n    }\n    Renderer.singleton.minScale = value;\n  }\n  /** @export */\n  static get minimumRenderScale() {\n    return Renderer.singleton.minScale;\n  }\n  /** @export */\n  get loaded() {\n    return this[$getLoaded]();\n  }\n  get [(_a8 = $isElementInViewport, _b7 = $loaded, _c3 = $loadedTime, _d3 = $status, _e3 = $clearModelTimeout, _f3 = $fallbackResizeHandler, _g = $announceModelVisibility, _h = $resizeObserver, _j = $intersectionObserver, _k = $progressTracker, $renderer)]() {\n    return Renderer.singleton;\n  }\n  /** @export */\n  get modelIsVisible() {\n    return this[$getModelIsVisible]();\n  }\n  connectedCallback() {\n    super.connectedCallback && super.connectedCallback();\n    if (HAS_RESIZE_OBSERVER) {\n      this[$resizeObserver].observe(this);\n    } else {\n      self.addEventListener(\"resize\", this[$fallbackResizeHandler]);\n    }\n    if (HAS_INTERSECTION_OBSERVER) {\n      this[$intersectionObserver].observe(this);\n    }\n    this.addEventListener(\"focus\", this[$onFocus]);\n    this.addEventListener(\"blur\", this[$onBlur]);\n    const renderer = this[$renderer];\n    renderer.addEventListener(\"contextlost\", this[$onContextLost]);\n    renderer.registerScene(this[$scene]);\n    if (this[$clearModelTimeout] != null) {\n      self.clearTimeout(this[$clearModelTimeout]);\n      this[$clearModelTimeout] = null;\n      this.requestUpdate(\"src\", null);\n    }\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback && super.disconnectedCallback();\n    if (HAS_RESIZE_OBSERVER) {\n      this[$resizeObserver].unobserve(this);\n    } else {\n      self.removeEventListener(\"resize\", this[$fallbackResizeHandler]);\n    }\n    if (HAS_INTERSECTION_OBSERVER) {\n      this[$intersectionObserver].unobserve(this);\n    }\n    this.removeEventListener(\"focus\", this[$onFocus]);\n    this.removeEventListener(\"blur\", this[$onBlur]);\n    const renderer = this[$renderer];\n    renderer.removeEventListener(\"contextlost\", this[$onContextLost]);\n    renderer.unregisterScene(this[$scene]);\n    this[$clearModelTimeout] = self.setTimeout(() => {\n      this[$scene].dispose();\n      this[$clearModelTimeout] = null;\n    }, CLEAR_MODEL_TIMEOUT_MS);\n  }\n  updated(changedProperties) {\n    super.updated(changedProperties);\n    if (changedProperties.has(\"src\")) {\n      if (this.src == null) {\n        this[$loaded] = false;\n        this[$loadedTime] = 0;\n        this[$scene].reset();\n      } else if (this.src !== this[$scene].url) {\n        this[$loaded] = false;\n        this[$loadedTime] = 0;\n        this[$updateSource]();\n      }\n    }\n    if (changedProperties.has(\"alt\")) {\n      this[$userInputElement].setAttribute(\"aria-label\", this[$ariaLabel]);\n    }\n    if (changedProperties.has(\"withCredentials\")) {\n      CachingGLTFLoader.withCredentials = this.withCredentials;\n    }\n    if (changedProperties.has(\"generateSchema\")) {\n      if (this.generateSchema) {\n        this[$scene].updateSchema(this.src);\n      } else {\n        this[$scene].updateSchema(null);\n      }\n    }\n  }\n  /** @export */\n  toDataURL(type, encoderOptions) {\n    return this[$renderer].displayCanvas(this[$scene]).toDataURL(type, encoderOptions);\n  }\n  /** @export */\n  async toBlob(options) {\n    const mimeType = options ? options.mimeType : void 0;\n    const qualityArgument = options ? options.qualityArgument : void 0;\n    const useIdealAspect = options ? options.idealAspect : void 0;\n    const { width, height, idealAspect, aspect: aspect2 } = this[$scene];\n    const { dpr, scaleFactor } = this[$renderer];\n    let outputWidth = width * scaleFactor * dpr;\n    let outputHeight = height * scaleFactor * dpr;\n    let offsetX = 0;\n    let offsetY = 0;\n    if (useIdealAspect === true) {\n      if (idealAspect > aspect2) {\n        const oldHeight = outputHeight;\n        outputHeight = Math.round(outputWidth / idealAspect);\n        offsetY = (oldHeight - outputHeight) / 2;\n      } else {\n        const oldWidth = outputWidth;\n        outputWidth = Math.round(outputHeight * idealAspect);\n        offsetX = (oldWidth - outputWidth) / 2;\n      }\n    }\n    blobCanvas.width = outputWidth;\n    blobCanvas.height = outputHeight;\n    try {\n      return new Promise(async (resolve, reject) => {\n        blobCanvas.getContext(\"2d\").drawImage(this[$renderer].displayCanvas(this[$scene]), offsetX, offsetY, outputWidth, outputHeight, 0, 0, outputWidth, outputHeight);\n        if (blobCanvas.msToBlob) {\n          if (!mimeType || mimeType === \"image/png\") {\n            return resolve(blobCanvas.msToBlob());\n          }\n        }\n        if (!blobCanvas.toBlob) {\n          return resolve(await dataUrlToBlob(blobCanvas.toDataURL(mimeType, qualityArgument)));\n        }\n        blobCanvas.toBlob((blob) => {\n          if (!blob) {\n            return reject(new Error(\"Unable to retrieve canvas blob\"));\n          }\n          resolve(blob);\n        }, mimeType, qualityArgument);\n      });\n    } finally {\n      this[$updateSize]({ width, height });\n    }\n    ;\n  }\n  registerRenderer(renderer) {\n    this[$scene].externalRenderer = renderer;\n  }\n  unregisterRenderer() {\n    this[$scene].externalRenderer = null;\n  }\n  get [$ariaLabel]() {\n    return this[$altDefaulted];\n  }\n  get [$altDefaulted]() {\n    return this.alt == null || this.alt === \"null\" ? this[$defaultAriaLabel] : this.alt;\n  }\n  // NOTE(cdata): Although this may seem extremely redundant, it is required in\n  // order to support overloading when TypeScript is compiled to ES5\n  // @see https://github.com/Polymer/lit-element/pull/745\n  // @see https://github.com/microsoft/TypeScript/issues/338\n  [$getLoaded]() {\n    return this[$loaded];\n  }\n  // @see [$getLoaded]\n  [$getModelIsVisible]() {\n    return this.loaded && this[$isElementInViewport];\n  }\n  [$shouldAttemptPreload]() {\n    return !!this.src && this[$isElementInViewport];\n  }\n  /**\n   * Called on initialization and when the resize observer fires.\n   */\n  [$updateSize]({ width, height }) {\n    this[$container].style.width = `${width}px`;\n    this[$container].style.height = `${height}px`;\n    this[$onResize]({ width: parseFloat(width), height: parseFloat(height) });\n  }\n  [$tick](_time, _delta) {\n  }\n  [$markLoaded]() {\n    if (this[$loaded]) {\n      return;\n    }\n    this[$loaded] = true;\n    this[$loadedTime] = performance.now();\n  }\n  [$needsRender]() {\n    this[$scene].queueRender();\n  }\n  [$onModelLoad]() {\n  }\n  [$updateStatus](status) {\n    this[$status] = status;\n    const rootNode = this.getRootNode();\n    if (rootNode != null && rootNode.activeElement === this && this[$statusElement].textContent != status) {\n      this[$statusElement].textContent = status;\n    }\n  }\n  [(_l = $onFocus, _m = $onBlur, $onResize)](e) {\n    this[$scene].setSize(e.width, e.height);\n  }\n  /**\n   * Parses the element for an appropriate source URL and\n   * sets the views to use the new model based.\n   */\n  async [(_o = $onContextLost, $updateSource)]() {\n    const scene = this[$scene];\n    if (this.loaded || !this[$shouldAttemptPreload]() || this.src === scene.url) {\n      return;\n    }\n    if (this.generateSchema) {\n      scene.updateSchema(this.src);\n    }\n    this[$updateStatus](\"Loading\");\n    scene.stopAnimation();\n    const updateSourceProgress = this[$progressTracker].beginActivity();\n    const source = this.src;\n    try {\n      const srcUpdated = scene.setSource(source, (progress) => updateSourceProgress(clamp2(progress, 0, 1) * 0.95));\n      const envUpdated = this[$updateEnvironment]();\n      await Promise.all([srcUpdated, envUpdated]);\n      this[$markLoaded]();\n      this[$onModelLoad]();\n      await new Promise((resolve) => {\n        requestAnimationFrame(() => {\n          requestAnimationFrame(() => {\n            this.dispatchEvent(new CustomEvent(\"load\", { detail: { url: source } }));\n            resolve();\n          });\n        });\n      });\n    } catch (error) {\n      this.dispatchEvent(new CustomEvent(\"error\", { detail: { type: \"loadfailure\", sourceError: error } }));\n    } finally {\n      updateSourceProgress(1);\n    }\n  }\n};\n__decorate3([\n  property({ type: String })\n], ModelViewerElementBase.prototype, \"alt\", void 0);\n__decorate3([\n  property({ type: String })\n], ModelViewerElementBase.prototype, \"src\", void 0);\n__decorate3([\n  property({ type: Boolean, attribute: \"with-credentials\" })\n], ModelViewerElementBase.prototype, \"withCredentials\", void 0);\n__decorate3([\n  property({ type: Boolean, attribute: \"generate-schema\" })\n], ModelViewerElementBase.prototype, \"generateSchema\", void 0);\n\n// node_modules/@google/model-viewer/lib/features/animation.js\nvar __decorate4 = function(decorators, target2, key, desc) {\n  var c = arguments.length, r = c < 3 ? target2 : desc === null ? desc = Object.getOwnPropertyDescriptor(target2, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target2, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if (d = decorators[i])\n        r = (c < 3 ? d(r) : c > 3 ? d(target2, key, r) : d(target2, key)) || r;\n  return c > 3 && r && Object.defineProperty(target2, key, r), r;\n};\nvar MILLISECONDS_PER_SECOND = 1e3;\nvar $changeAnimation = Symbol(\"changeAnimation\");\nvar $paused = Symbol(\"paused\");\nvar DEFAULT_PLAY_OPTIONS = {\n  repetitions: Infinity,\n  pingpong: false\n};\nvar AnimationMixin = (ModelViewerElement2) => {\n  var _a12;\n  class AnimationModelViewerElement extends ModelViewerElement2 {\n    constructor(...args) {\n      super(args);\n      this.autoplay = false;\n      this.animationName = void 0;\n      this.animationCrossfadeDuration = 300;\n      this[_a12] = true;\n      this[$scene].subscribeMixerEvent(\"loop\", (e) => {\n        const count = e.action._loopCount;\n        this.dispatchEvent(new CustomEvent(\"loop\", { detail: { count } }));\n      });\n      this[$scene].subscribeMixerEvent(\"finished\", () => {\n        this[$paused] = true;\n        this.dispatchEvent(new CustomEvent(\"finished\"));\n      });\n    }\n    /**\n     * Returns an array\n     */\n    get availableAnimations() {\n      if (this.loaded) {\n        return this[$scene].animationNames;\n      }\n      return [];\n    }\n    get duration() {\n      return this[$scene].duration;\n    }\n    get paused() {\n      return this[$paused];\n    }\n    get currentTime() {\n      return this[$scene].animationTime;\n    }\n    set currentTime(value) {\n      this[$scene].animationTime = value;\n      this[$needsRender]();\n    }\n    get timeScale() {\n      return this[$scene].animationTimeScale;\n    }\n    set timeScale(value) {\n      this[$scene].animationTimeScale = value;\n    }\n    pause() {\n      if (this[$paused]) {\n        return;\n      }\n      this[$paused] = true;\n      this.dispatchEvent(new CustomEvent(\"pause\"));\n    }\n    play(options) {\n      if (this.availableAnimations.length > 0) {\n        this[$paused] = false;\n        this[$changeAnimation](options);\n        this.dispatchEvent(new CustomEvent(\"play\"));\n      }\n    }\n    [(_a12 = $paused, $onModelLoad)]() {\n      super[$onModelLoad]();\n      this[$paused] = true;\n      if (this.autoplay) {\n        this.play();\n      }\n    }\n    [$tick](_time, delta) {\n      super[$tick](_time, delta);\n      if (this[$paused] || !this[$getModelIsVisible]() && !this[$renderer].isPresenting) {\n        return;\n      }\n      this[$scene].updateAnimation(delta / MILLISECONDS_PER_SECOND);\n      this[$needsRender]();\n    }\n    updated(changedProperties) {\n      super.updated(changedProperties);\n      if (changedProperties.has(\"autoplay\") && this.autoplay) {\n        this.play();\n      }\n      if (changedProperties.has(\"animationName\")) {\n        this[$changeAnimation]();\n      }\n    }\n    [$changeAnimation](options = DEFAULT_PLAY_OPTIONS) {\n      var _b11;\n      const repetitions = (_b11 = options.repetitions) !== null && _b11 !== void 0 ? _b11 : Infinity;\n      const mode = options.pingpong ? LoopPingPong : repetitions === 1 ? LoopOnce : LoopRepeat;\n      this[$scene].playAnimation(this.animationName, this.animationCrossfadeDuration / MILLISECONDS_PER_SECOND, mode, repetitions);\n      if (this[$paused]) {\n        this[$scene].updateAnimation(0);\n        this[$needsRender]();\n      }\n    }\n  }\n  __decorate4([\n    property({ type: Boolean })\n  ], AnimationModelViewerElement.prototype, \"autoplay\", void 0);\n  __decorate4([\n    property({ type: String, attribute: \"animation-name\" })\n  ], AnimationModelViewerElement.prototype, \"animationName\", void 0);\n  __decorate4([\n    property({ type: Number, attribute: \"animation-crossfade-duration\" })\n  ], AnimationModelViewerElement.prototype, \"animationCrossfadeDuration\", void 0);\n  return AnimationModelViewerElement;\n};\n\n// node_modules/@google/model-viewer/lib/features/annotation.js\nvar $hotspotMap = Symbol(\"hotspotMap\");\nvar $mutationCallback = Symbol(\"mutationCallback\");\nvar $observer = Symbol(\"observer\");\nvar $addHotspot = Symbol(\"addHotspot\");\nvar $removeHotspot = Symbol(\"removeHotspot\");\nvar worldToModel = new Matrix4();\nvar worldToModelNormal = new Matrix3();\nvar AnnotationMixin = (ModelViewerElement2) => {\n  var _a12, _b11, _c6;\n  class AnnotationModelViewerElement extends ModelViewerElement2 {\n    constructor() {\n      super(...arguments);\n      this[_a12] = /* @__PURE__ */ new Map();\n      this[_b11] = (mutations) => {\n        mutations.forEach((mutation) => {\n          if (!(mutation instanceof MutationRecord) || mutation.type === \"childList\") {\n            mutation.addedNodes.forEach((node) => {\n              this[$addHotspot](node);\n            });\n            mutation.removedNodes.forEach((node) => {\n              this[$removeHotspot](node);\n            });\n            this[$needsRender]();\n          }\n        });\n      };\n      this[_c6] = new MutationObserver(this[$mutationCallback]);\n    }\n    connectedCallback() {\n      super.connectedCallback();\n      for (let i = 0; i < this.children.length; ++i) {\n        this[$addHotspot](this.children[i]);\n      }\n      const { ShadyDOM } = self;\n      if (ShadyDOM == null) {\n        this[$observer].observe(this, { childList: true });\n      } else {\n        this[$observer] = ShadyDOM.observeChildren(this, this[$mutationCallback]);\n      }\n    }\n    disconnectedCallback() {\n      super.disconnectedCallback();\n      const { ShadyDOM } = self;\n      if (ShadyDOM == null) {\n        this[$observer].disconnect();\n      } else {\n        ShadyDOM.unobserveChildren(this[$observer]);\n      }\n    }\n    [(_a12 = $hotspotMap, _b11 = $mutationCallback, _c6 = $observer, $tick)](time, delta) {\n      super[$tick](time, delta);\n      const scene = this[$scene];\n      const { annotationRenderer } = scene;\n      const camera2 = scene.getCamera();\n      if (scene.shouldRender()) {\n        scene.updateHotspots(camera2.position);\n        annotationRenderer.domElement.style.display = \"\";\n        annotationRenderer.render(scene, camera2);\n      }\n    }\n    /**\n     * Since the data-position and data-normal attributes are not observed, use\n     * this method to move a hotspot. Keep in mind that all hotspots with the\n     * same slot name use a single location and the first definition takes\n     * precedence, until updated with this method.\n     */\n    updateHotspot(config) {\n      const hotspot = this[$hotspotMap].get(config.name);\n      if (hotspot == null) {\n        return;\n      }\n      hotspot.updatePosition(config.position);\n      hotspot.updateNormal(config.normal);\n      this[$needsRender]();\n    }\n    /**\n     * This method returns in-scene data about a requested hotspot including\n     * its position in screen (canvas) space and its current visibility.\n     */\n    queryHotspot(name) {\n      const hotspot = this[$hotspotMap].get(name);\n      if (hotspot == null) {\n        return null;\n      }\n      const position = toVector3D(hotspot.position);\n      const normal = toVector3D(hotspot.normal);\n      const facingCamera = hotspot.facingCamera;\n      const scene = this[$scene];\n      const camera2 = scene.getCamera();\n      const vector = new Vector3();\n      vector.setFromMatrixPosition(hotspot.matrixWorld);\n      vector.project(camera2);\n      const widthHalf = scene.width / 2;\n      const heightHalf = scene.height / 2;\n      vector.x = vector.x * widthHalf + widthHalf;\n      vector.y = -(vector.y * heightHalf) + heightHalf;\n      const canvasPosition = toVector3D(new Vector3(vector.x, vector.y, vector.z));\n      if (!Number.isFinite(canvasPosition.x) || !Number.isFinite(canvasPosition.y)) {\n        return null;\n      }\n      return { position, normal, canvasPosition, facingCamera };\n    }\n    /**\n     * This method returns the model position, normal and texture coordinate\n     * of the point on the mesh corresponding to the input pixel coordinates\n     * given relative to the model-viewer element. The position and normal\n     * are returned as strings in the format suitable for putting in a\n     * hotspot's data-position and data-normal attributes. If the mesh is\n     * not hit, the result is null.\n     */\n    positionAndNormalFromPoint(pixelX, pixelY) {\n      const scene = this[$scene];\n      const ndcPosition = scene.getNDC(pixelX, pixelY);\n      const hit = scene.positionAndNormalFromPoint(ndcPosition);\n      if (hit == null) {\n        return null;\n      }\n      worldToModel.copy(scene.target.matrixWorld).invert();\n      const position = toVector3D(hit.position.applyMatrix4(worldToModel));\n      worldToModelNormal.getNormalMatrix(worldToModel);\n      const normal = toVector3D(hit.normal.applyNormalMatrix(worldToModelNormal));\n      let uv = null;\n      if (hit.uv != null) {\n        uv = toVector2D(hit.uv);\n      }\n      return { position, normal, uv };\n    }\n    [$addHotspot](node) {\n      if (!(node instanceof HTMLElement && node.slot.indexOf(\"hotspot\") === 0)) {\n        return;\n      }\n      let hotspot = this[$hotspotMap].get(node.slot);\n      if (hotspot != null) {\n        hotspot.increment();\n      } else {\n        hotspot = new Hotspot({\n          name: node.slot,\n          position: node.dataset.position,\n          normal: node.dataset.normal\n        });\n        this[$hotspotMap].set(node.slot, hotspot);\n        this[$scene].addHotspot(hotspot);\n      }\n      this[$scene].queueRender();\n    }\n    [$removeHotspot](node) {\n      if (!(node instanceof HTMLElement)) {\n        return;\n      }\n      const hotspot = this[$hotspotMap].get(node.slot);\n      if (!hotspot) {\n        return;\n      }\n      if (hotspot.decrement()) {\n        this[$scene].removeHotspot(hotspot);\n        this[$hotspotMap].delete(node.slot);\n      }\n      this[$scene].queueRender();\n    }\n  }\n  return AnnotationModelViewerElement;\n};\n\n// node_modules/three/examples/jsm/libs/fflate.module.js\nvar ch2 = {};\nvar durl = function(c) {\n  return URL.createObjectURL(new Blob([c], { type: \"text/javascript\" }));\n};\nvar cwk = function(u) {\n  return new Worker(u);\n};\ntry {\n  URL.revokeObjectURL(durl(\"\"));\n} catch (e) {\n  durl = function(c) {\n    return \"data:application/javascript;charset=UTF-8,\" + encodeURI(c);\n  };\n  cwk = function(u) {\n    return new Worker(u, { type: \"module\" });\n  };\n}\nvar wk = function(c, id, msg, transfer, cb) {\n  var w = cwk(ch2[id] || (ch2[id] = durl(c)));\n  w.onerror = function(e) {\n    return cb(e.error, null);\n  };\n  w.onmessage = function(e) {\n    return cb(null, e.data);\n  };\n  w.postMessage(msg, transfer);\n  return w;\n};\nvar u8 = Uint8Array;\nvar u16 = Uint16Array;\nvar u32 = Uint32Array;\nvar fleb = new u8([\n  0,\n  0,\n  0,\n  0,\n  0,\n  0,\n  0,\n  0,\n  1,\n  1,\n  1,\n  1,\n  2,\n  2,\n  2,\n  2,\n  3,\n  3,\n  3,\n  3,\n  4,\n  4,\n  4,\n  4,\n  5,\n  5,\n  5,\n  5,\n  0,\n  /* unused */\n  0,\n  0,\n  /* impossible */\n  0\n]);\nvar fdeb = new u8([\n  0,\n  0,\n  0,\n  0,\n  1,\n  1,\n  2,\n  2,\n  3,\n  3,\n  4,\n  4,\n  5,\n  5,\n  6,\n  6,\n  7,\n  7,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  /* unused */\n  0,\n  0\n]);\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nvar freb = function(eb, start) {\n  var b = new u16(31);\n  for (var i = 0; i < 31; ++i) {\n    b[i] = start += 1 << eb[i - 1];\n  }\n  var r = new u32(b[30]);\n  for (var i = 1; i < 30; ++i) {\n    for (var j = b[i]; j < b[i + 1]; ++j) {\n      r[j] = j - b[i] << 5 | i;\n    }\n  }\n  return [b, r];\n};\nvar _a9 = freb(fleb, 2);\nvar fl = _a9[0];\nvar revfl = _a9[1];\nfl[28] = 258, revfl[258] = 28;\nvar _b8 = freb(fdeb, 0);\nvar fd = _b8[0];\nvar revfd = _b8[1];\nvar rev = new u16(32768);\nfor (i = 0; i < 32768; ++i) {\n  x2 = (i & 43690) >>> 1 | (i & 21845) << 1;\n  x2 = (x2 & 52428) >>> 2 | (x2 & 13107) << 2;\n  x2 = (x2 & 61680) >>> 4 | (x2 & 3855) << 4;\n  rev[i] = ((x2 & 65280) >>> 8 | (x2 & 255) << 8) >>> 1;\n}\nvar x2;\nvar i;\nvar hMap = function(cd, mb, r) {\n  var s = cd.length;\n  var i = 0;\n  var l = new u16(mb);\n  for (; i < s; ++i)\n    ++l[cd[i] - 1];\n  var le = new u16(mb);\n  for (i = 0; i < mb; ++i) {\n    le[i] = le[i - 1] + l[i - 1] << 1;\n  }\n  var co;\n  if (r) {\n    co = new u16(1 << mb);\n    var rvb = 15 - mb;\n    for (i = 0; i < s; ++i) {\n      if (cd[i]) {\n        var sv = i << 4 | cd[i];\n        var r_1 = mb - cd[i];\n        var v = le[cd[i] - 1]++ << r_1;\n        for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n          co[rev[v] >>> rvb] = sv;\n        }\n      }\n    }\n  } else {\n    co = new u16(s);\n    for (i = 0; i < s; ++i) {\n      if (cd[i]) {\n        co[i] = rev[le[cd[i] - 1]++] >>> 15 - cd[i];\n      }\n    }\n  }\n  return co;\n};\nvar flt = new u8(288);\nfor (i = 0; i < 144; ++i)\n  flt[i] = 8;\nvar i;\nfor (i = 144; i < 256; ++i)\n  flt[i] = 9;\nvar i;\nfor (i = 256; i < 280; ++i)\n  flt[i] = 7;\nvar i;\nfor (i = 280; i < 288; ++i)\n  flt[i] = 8;\nvar i;\nvar fdt = new u8(32);\nfor (i = 0; i < 32; ++i)\n  fdt[i] = 5;\nvar i;\nvar flm = hMap(flt, 9, 0);\nvar flrm = hMap(flt, 9, 1);\nvar fdm = hMap(fdt, 5, 0);\nvar fdrm = hMap(fdt, 5, 1);\nvar max = function(a) {\n  var m = a[0];\n  for (var i = 1; i < a.length; ++i) {\n    if (a[i] > m)\n      m = a[i];\n  }\n  return m;\n};\nvar bits = function(d, p2, m) {\n  var o = p2 / 8 | 0;\n  return (d[o] | d[o + 1] << 8) >> (p2 & 7) & m;\n};\nvar bits16 = function(d, p2) {\n  var o = p2 / 8 | 0;\n  return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p2 & 7);\n};\nvar shft = function(p2) {\n  return (p2 / 8 | 0) + (p2 & 7 && 1);\n};\nvar slc = function(v, s, e) {\n  if (s == null || s < 0)\n    s = 0;\n  if (e == null || e > v.length)\n    e = v.length;\n  var n2 = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n  n2.set(v.subarray(s, e));\n  return n2;\n};\nvar inflt = function(dat, buf, st) {\n  var sl = dat.length;\n  if (!sl || st && !st.l && sl < 5)\n    return buf || new u8(0);\n  var noBuf = !buf || st;\n  var noSt = !st || st.i;\n  if (!st)\n    st = {};\n  if (!buf)\n    buf = new u8(sl * 3);\n  var cbuf = function(l2) {\n    var bl = buf.length;\n    if (l2 > bl) {\n      var nbuf = new u8(Math.max(bl * 2, l2));\n      nbuf.set(buf);\n      buf = nbuf;\n    }\n  };\n  var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n  var tbts = sl * 8;\n  do {\n    if (!lm) {\n      st.f = final = bits(dat, pos, 1);\n      var type = bits(dat, pos + 1, 3);\n      pos += 3;\n      if (!type) {\n        var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t2 = s + l;\n        if (t2 > sl) {\n          if (noSt)\n            throw \"unexpected EOF\";\n          break;\n        }\n        if (noBuf)\n          cbuf(bt + l);\n        buf.set(dat.subarray(s, t2), bt);\n        st.b = bt += l, st.p = pos = t2 * 8;\n        continue;\n      } else if (type == 1)\n        lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n      else if (type == 2) {\n        var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n        var tl = hLit + bits(dat, pos + 5, 31) + 1;\n        pos += 14;\n        var ldt = new u8(tl);\n        var clt = new u8(19);\n        for (var i = 0; i < hcLen; ++i) {\n          clt[clim[i]] = bits(dat, pos + i * 3, 7);\n        }\n        pos += hcLen * 3;\n        var clb = max(clt), clbmsk = (1 << clb) - 1;\n        var clm = hMap(clt, clb, 1);\n        for (var i = 0; i < tl; ) {\n          var r = clm[bits(dat, pos, clbmsk)];\n          pos += r & 15;\n          var s = r >>> 4;\n          if (s < 16) {\n            ldt[i++] = s;\n          } else {\n            var c = 0, n2 = 0;\n            if (s == 16)\n              n2 = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n            else if (s == 17)\n              n2 = 3 + bits(dat, pos, 7), pos += 3;\n            else if (s == 18)\n              n2 = 11 + bits(dat, pos, 127), pos += 7;\n            while (n2--)\n              ldt[i++] = c;\n          }\n        }\n        var lt = ldt.subarray(0, hLit), dt2 = ldt.subarray(hLit);\n        lbt = max(lt);\n        dbt = max(dt2);\n        lm = hMap(lt, lbt, 1);\n        dm = hMap(dt2, dbt, 1);\n      } else\n        throw \"invalid block type\";\n      if (pos > tbts) {\n        if (noSt)\n          throw \"unexpected EOF\";\n        break;\n      }\n    }\n    if (noBuf)\n      cbuf(bt + 131072);\n    var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n    var lpos = pos;\n    for (; ; lpos = pos) {\n      var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n      pos += c & 15;\n      if (pos > tbts) {\n        if (noSt)\n          throw \"unexpected EOF\";\n        break;\n      }\n      if (!c)\n        throw \"invalid length/literal\";\n      if (sym < 256)\n        buf[bt++] = sym;\n      else if (sym == 256) {\n        lpos = pos, lm = null;\n        break;\n      } else {\n        var add = sym - 254;\n        if (sym > 264) {\n          var i = sym - 257, b = fleb[i];\n          add = bits(dat, pos, (1 << b) - 1) + fl[i];\n          pos += b;\n        }\n        var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n        if (!d)\n          throw \"invalid distance\";\n        pos += d & 15;\n        var dt2 = fd[dsym];\n        if (dsym > 3) {\n          var b = fdeb[dsym];\n          dt2 += bits16(dat, pos) & (1 << b) - 1, pos += b;\n        }\n        if (pos > tbts) {\n          if (noSt)\n            throw \"unexpected EOF\";\n          break;\n        }\n        if (noBuf)\n          cbuf(bt + 131072);\n        var end = bt + add;\n        for (; bt < end; bt += 4) {\n          buf[bt] = buf[bt - dt2];\n          buf[bt + 1] = buf[bt + 1 - dt2];\n          buf[bt + 2] = buf[bt + 2 - dt2];\n          buf[bt + 3] = buf[bt + 3 - dt2];\n        }\n        bt = end;\n      }\n    }\n    st.l = lm, st.p = lpos, st.b = bt;\n    if (lm)\n      final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n  } while (!final);\n  return bt == buf.length ? buf : slc(buf, 0, bt);\n};\nvar wbits = function(d, p2, v) {\n  v <<= p2 & 7;\n  var o = p2 / 8 | 0;\n  d[o] |= v;\n  d[o + 1] |= v >>> 8;\n};\nvar wbits16 = function(d, p2, v) {\n  v <<= p2 & 7;\n  var o = p2 / 8 | 0;\n  d[o] |= v;\n  d[o + 1] |= v >>> 8;\n  d[o + 2] |= v >>> 16;\n};\nvar hTree = function(d, mb) {\n  var t2 = [];\n  for (var i = 0; i < d.length; ++i) {\n    if (d[i])\n      t2.push({ s: i, f: d[i] });\n  }\n  var s = t2.length;\n  var t22 = t2.slice();\n  if (!s)\n    return [et, 0];\n  if (s == 1) {\n    var v = new u8(t2[0].s + 1);\n    v[t2[0].s] = 1;\n    return [v, 1];\n  }\n  t2.sort(function(a, b) {\n    return a.f - b.f;\n  });\n  t2.push({ s: -1, f: 25001 });\n  var l = t2[0], r = t2[1], i0 = 0, i1 = 1, i2 = 2;\n  t2[0] = { s: -1, f: l.f + r.f, l, r };\n  while (i1 != s - 1) {\n    l = t2[t2[i0].f < t2[i2].f ? i0++ : i2++];\n    r = t2[i0 != i1 && t2[i0].f < t2[i2].f ? i0++ : i2++];\n    t2[i1++] = { s: -1, f: l.f + r.f, l, r };\n  }\n  var maxSym = t22[0].s;\n  for (var i = 1; i < s; ++i) {\n    if (t22[i].s > maxSym)\n      maxSym = t22[i].s;\n  }\n  var tr = new u16(maxSym + 1);\n  var mbt = ln(t2[i1 - 1], tr, 0);\n  if (mbt > mb) {\n    var i = 0, dt2 = 0;\n    var lft = mbt - mb, cst = 1 << lft;\n    t22.sort(function(a, b) {\n      return tr[b.s] - tr[a.s] || a.f - b.f;\n    });\n    for (; i < s; ++i) {\n      var i2_1 = t22[i].s;\n      if (tr[i2_1] > mb) {\n        dt2 += cst - (1 << mbt - tr[i2_1]);\n        tr[i2_1] = mb;\n      } else\n        break;\n    }\n    dt2 >>>= lft;\n    while (dt2 > 0) {\n      var i2_2 = t22[i].s;\n      if (tr[i2_2] < mb)\n        dt2 -= 1 << mb - tr[i2_2]++ - 1;\n      else\n        ++i;\n    }\n    for (; i >= 0 && dt2; --i) {\n      var i2_3 = t22[i].s;\n      if (tr[i2_3] == mb) {\n        --tr[i2_3];\n        ++dt2;\n      }\n    }\n    mbt = mb;\n  }\n  return [new u8(tr), mbt];\n};\nvar ln = function(n2, l, d) {\n  return n2.s == -1 ? Math.max(ln(n2.l, l, d + 1), ln(n2.r, l, d + 1)) : l[n2.s] = d;\n};\nvar lc = function(c) {\n  var s = c.length;\n  while (s && !c[--s])\n    ;\n  var cl = new u16(++s);\n  var cli = 0, cln = c[0], cls = 1;\n  var w = function(v) {\n    cl[cli++] = v;\n  };\n  for (var i = 1; i <= s; ++i) {\n    if (c[i] == cln && i != s)\n      ++cls;\n    else {\n      if (!cln && cls > 2) {\n        for (; cls > 138; cls -= 138)\n          w(32754);\n        if (cls > 2) {\n          w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);\n          cls = 0;\n        }\n      } else if (cls > 3) {\n        w(cln), --cls;\n        for (; cls > 6; cls -= 6)\n          w(8304);\n        if (cls > 2)\n          w(cls - 3 << 5 | 8208), cls = 0;\n      }\n      while (cls--)\n        w(cln);\n      cls = 1;\n      cln = c[i];\n    }\n  }\n  return [cl.subarray(0, cli), s];\n};\nvar clen = function(cf, cl) {\n  var l = 0;\n  for (var i = 0; i < cl.length; ++i)\n    l += cf[i] * cl[i];\n  return l;\n};\nvar wfblk = function(out, pos, dat) {\n  var s = dat.length;\n  var o = shft(pos + 2);\n  out[o] = s & 255;\n  out[o + 1] = s >>> 8;\n  out[o + 2] = out[o] ^ 255;\n  out[o + 3] = out[o + 1] ^ 255;\n  for (var i = 0; i < s; ++i)\n    out[o + i + 4] = dat[i];\n  return (o + 4 + s) * 8;\n};\nvar wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p2) {\n  wbits(out, p2++, final);\n  ++lf[256];\n  var _a12 = hTree(lf, 15), dlt = _a12[0], mlb = _a12[1];\n  var _b11 = hTree(df, 15), ddt = _b11[0], mdb = _b11[1];\n  var _c6 = lc(dlt), lclt = _c6[0], nlc = _c6[1];\n  var _d5 = lc(ddt), lcdt = _d5[0], ndc2 = _d5[1];\n  var lcfreq = new u16(19);\n  for (var i = 0; i < lclt.length; ++i)\n    lcfreq[lclt[i] & 31]++;\n  for (var i = 0; i < lcdt.length; ++i)\n    lcfreq[lcdt[i] & 31]++;\n  var _e4 = hTree(lcfreq, 7), lct = _e4[0], mlcb = _e4[1];\n  var nlcc = 19;\n  for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n    ;\n  var flen = bl + 5 << 3;\n  var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n  var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n  if (flen <= ftlen && flen <= dtlen)\n    return wfblk(out, p2, dat.subarray(bs, bs + bl));\n  var lm, ll, dm, dl;\n  wbits(out, p2, 1 + (dtlen < ftlen)), p2 += 2;\n  if (dtlen < ftlen) {\n    lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n    var llm = hMap(lct, mlcb, 0);\n    wbits(out, p2, nlc - 257);\n    wbits(out, p2 + 5, ndc2 - 1);\n    wbits(out, p2 + 10, nlcc - 4);\n    p2 += 14;\n    for (var i = 0; i < nlcc; ++i)\n      wbits(out, p2 + 3 * i, lct[clim[i]]);\n    p2 += 3 * nlcc;\n    var lcts = [lclt, lcdt];\n    for (var it = 0; it < 2; ++it) {\n      var clct = lcts[it];\n      for (var i = 0; i < clct.length; ++i) {\n        var len = clct[i] & 31;\n        wbits(out, p2, llm[len]), p2 += lct[len];\n        if (len > 15)\n          wbits(out, p2, clct[i] >>> 5 & 127), p2 += clct[i] >>> 12;\n      }\n    }\n  } else {\n    lm = flm, ll = flt, dm = fdm, dl = fdt;\n  }\n  for (var i = 0; i < li; ++i) {\n    if (syms[i] > 255) {\n      var len = syms[i] >>> 18 & 31;\n      wbits16(out, p2, lm[len + 257]), p2 += ll[len + 257];\n      if (len > 7)\n        wbits(out, p2, syms[i] >>> 23 & 31), p2 += fleb[len];\n      var dst = syms[i] & 31;\n      wbits16(out, p2, dm[dst]), p2 += dl[dst];\n      if (dst > 3)\n        wbits16(out, p2, syms[i] >>> 5 & 8191), p2 += fdeb[dst];\n    } else {\n      wbits16(out, p2, lm[syms[i]]), p2 += ll[syms[i]];\n    }\n  }\n  wbits16(out, p2, lm[256]);\n  return p2 + ll[256];\n};\nvar deo = new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\nvar et = new u8(0);\nvar dflt = function(dat, lvl, plvl, pre, post, lst) {\n  var s = dat.length;\n  var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7e3)) + post);\n  var w = o.subarray(pre, o.length - post);\n  var pos = 0;\n  if (!lvl || s < 8) {\n    for (var i = 0; i <= s; i += 65535) {\n      var e = i + 65535;\n      if (e < s) {\n        pos = wfblk(w, pos, dat.subarray(i, e));\n      } else {\n        w[i] = lst;\n        pos = wfblk(w, pos, dat.subarray(i, s));\n      }\n    }\n  } else {\n    var opt = deo[lvl - 1];\n    var n2 = opt >>> 13, c = opt & 8191;\n    var msk_1 = (1 << plvl) - 1;\n    var prev = new u16(32768), head = new u16(msk_1 + 1);\n    var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n    var hsh = function(i2) {\n      return (dat[i2] ^ dat[i2 + 1] << bs1_1 ^ dat[i2 + 2] << bs2_1) & msk_1;\n    };\n    var syms = new u32(25e3);\n    var lf = new u16(288), df = new u16(32);\n    var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n    for (; i < s; ++i) {\n      var hv = hsh(i);\n      var imod = i & 32767, pimod = head[hv];\n      prev[imod] = pimod;\n      head[hv] = imod;\n      if (wi <= i) {\n        var rem = s - i;\n        if ((lc_1 > 7e3 || li > 24576) && rem > 423) {\n          pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n          li = lc_1 = eb = 0, bs = i;\n          for (var j = 0; j < 286; ++j)\n            lf[j] = 0;\n          for (var j = 0; j < 30; ++j)\n            df[j] = 0;\n        }\n        var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n        if (rem > 2 && hv == hsh(i - dif)) {\n          var maxn = Math.min(n2, rem) - 1;\n          var maxd = Math.min(32767, i);\n          var ml = Math.min(258, rem);\n          while (dif <= maxd && --ch_1 && imod != pimod) {\n            if (dat[i + l] == dat[i + l - dif]) {\n              var nl = 0;\n              for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n                ;\n              if (nl > l) {\n                l = nl, d = dif;\n                if (nl > maxn)\n                  break;\n                var mmd = Math.min(dif, nl - 2);\n                var md = 0;\n                for (var j = 0; j < mmd; ++j) {\n                  var ti = i - dif + j + 32768 & 32767;\n                  var pti = prev[ti];\n                  var cd = ti - pti + 32768 & 32767;\n                  if (cd > md)\n                    md = cd, pimod = ti;\n                }\n              }\n            }\n            imod = pimod, pimod = prev[imod];\n            dif += imod - pimod + 32768 & 32767;\n          }\n        }\n        if (d) {\n          syms[li++] = 268435456 | revfl[l] << 18 | revfd[d];\n          var lin = revfl[l] & 31, din = revfd[d] & 31;\n          eb += fleb[lin] + fdeb[din];\n          ++lf[257 + lin];\n          ++df[din];\n          wi = i + l;\n          ++lc_1;\n        } else {\n          syms[li++] = dat[i];\n          ++lf[dat[i]];\n        }\n      }\n    }\n    pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n    if (!lst && pos & 7)\n      pos = wfblk(w, pos + 1, et);\n  }\n  return slc(o, 0, pre + shft(pos) + post);\n};\nvar crct = function() {\n  var t2 = new u32(256);\n  for (var i = 0; i < 256; ++i) {\n    var c = i, k = 9;\n    while (--k)\n      c = (c & 1 && 3988292384) ^ c >>> 1;\n    t2[i] = c;\n  }\n  return t2;\n}();\nvar crc = function() {\n  var c = -1;\n  return {\n    p: function(d) {\n      var cr = c;\n      for (var i = 0; i < d.length; ++i)\n        cr = crct[cr & 255 ^ d[i]] ^ cr >>> 8;\n      c = cr;\n    },\n    d: function() {\n      return ~c;\n    }\n  };\n};\nvar adler = function() {\n  var a = 1, b = 0;\n  return {\n    p: function(d) {\n      var n2 = a, m = b;\n      var l = d.length;\n      for (var i = 0; i != l; ) {\n        var e = Math.min(i + 2655, l);\n        for (; i < e; ++i)\n          m += n2 += d[i];\n        n2 = (n2 & 65535) + 15 * (n2 >> 16), m = (m & 65535) + 15 * (m >> 16);\n      }\n      a = n2, b = m;\n    },\n    d: function() {\n      a %= 65521, b %= 65521;\n      return (a & 255) << 24 | a >>> 8 << 16 | (b & 255) << 8 | b >>> 8;\n    }\n  };\n};\nvar dopt = function(dat, opt, pre, post, st) {\n  return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 12 + opt.mem, pre, post, !st);\n};\nvar mrg = function(a, b) {\n  var o = {};\n  for (var k in a)\n    o[k] = a[k];\n  for (var k in b)\n    o[k] = b[k];\n  return o;\n};\nvar wcln = function(fn, fnStr, td2) {\n  var dt2 = fn();\n  var st = fn.toString();\n  var ks = st.slice(st.indexOf(\"[\") + 1, st.lastIndexOf(\"]\")).replace(/ /g, \"\").split(\",\");\n  for (var i = 0; i < dt2.length; ++i) {\n    var v = dt2[i], k = ks[i];\n    if (typeof v == \"function\") {\n      fnStr += \";\" + k + \"=\";\n      var st_1 = v.toString();\n      if (v.prototype) {\n        if (st_1.indexOf(\"[native code]\") != -1) {\n          var spInd = st_1.indexOf(\" \", 8) + 1;\n          fnStr += st_1.slice(spInd, st_1.indexOf(\"(\", spInd));\n        } else {\n          fnStr += st_1;\n          for (var t2 in v.prototype)\n            fnStr += \";\" + k + \".prototype.\" + t2 + \"=\" + v.prototype[t2].toString();\n        }\n      } else\n        fnStr += st_1;\n    } else\n      td2[k] = v;\n  }\n  return [fnStr, td2];\n};\nvar ch = [];\nvar cbfs = function(v) {\n  var tl = [];\n  for (var k in v) {\n    if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)\n      tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n  }\n  return tl;\n};\nvar wrkr = function(fns, init, id, cb) {\n  var _a12;\n  if (!ch[id]) {\n    var fnStr = \"\", td_1 = {}, m = fns.length - 1;\n    for (var i = 0; i < m; ++i)\n      _a12 = wcln(fns[i], fnStr, td_1), fnStr = _a12[0], td_1 = _a12[1];\n    ch[id] = wcln(fns[m], fnStr, td_1);\n  }\n  var td2 = mrg({}, ch[id][1]);\n  return wk(ch[id][0] + \";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=\" + init.toString() + \"}\", id, td2, cbfs(td2), cb);\n};\nvar bInflt = function() {\n  return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8];\n};\nvar bDflt = function() {\n  return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf];\n};\nvar gze = function() {\n  return [gzh, gzhl, wbytes, crc, crct];\n};\nvar guze = function() {\n  return [gzs, gzl];\n};\nvar zle = function() {\n  return [zlh, wbytes, adler];\n};\nvar zule = function() {\n  return [zlv];\n};\nvar pbf = function(msg) {\n  return postMessage(msg, [msg.buffer]);\n};\nvar gu8 = function(o) {\n  return o && o.size && new u8(o.size);\n};\nvar astrm = function(strm) {\n  strm.ondata = function(dat, final) {\n    return postMessage([dat, final], [dat.buffer]);\n  };\n  return function(ev) {\n    return strm.push(ev.data[0], ev.data[1]);\n  };\n};\nvar astrmify = function(fns, strm, opts, init, id) {\n  var t2;\n  var w = wrkr(fns, init, id, function(err, dat) {\n    if (err)\n      w.terminate(), strm.ondata.call(strm, err);\n    else {\n      if (dat[1])\n        w.terminate();\n      strm.ondata.call(strm, err, dat[0], dat[1]);\n    }\n  });\n  w.postMessage(opts);\n  strm.push = function(d, f) {\n    if (t2)\n      throw \"stream finished\";\n    if (!strm.ondata)\n      throw \"no stream handler\";\n    w.postMessage([d, t2 = f], [d.buffer]);\n  };\n  strm.terminate = function() {\n    w.terminate();\n  };\n};\nvar b2 = function(d, b) {\n  return d[b] | d[b + 1] << 8;\n};\nvar b4 = function(d, b) {\n  return (d[b] | d[b + 1] << 8 | d[b + 2] << 16 | d[b + 3] << 24) >>> 0;\n};\nvar b8 = function(d, b) {\n  return b4(d, b) + b4(d, b + 4) * 4294967296;\n};\nvar wbytes = function(d, b, v) {\n  for (; v; ++b)\n    d[b] = v, v >>>= 8;\n};\nvar gzh = function(c, o) {\n  var fn = o.filename;\n  c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3;\n  if (o.mtime != 0)\n    wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1e3));\n  if (fn) {\n    c[3] = 8;\n    for (var i = 0; i <= fn.length; ++i)\n      c[i + 10] = fn.charCodeAt(i);\n  }\n};\nvar gzs = function(d) {\n  if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n    throw \"invalid gzip data\";\n  var flg = d[3];\n  var st = 10;\n  if (flg & 4)\n    st += d[10] | (d[11] << 8) + 2;\n  for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n    ;\n  return st + (flg & 2);\n};\nvar gzl = function(d) {\n  var l = d.length;\n  return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\nvar gzhl = function(o) {\n  return 10 + (o.filename && o.filename.length + 1 || 0);\n};\nvar zlh = function(c, o) {\n  var lv = o.level, fl2 = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n  c[0] = 120, c[1] = fl2 << 6 | (fl2 ? 32 - 2 * fl2 : 1);\n};\nvar zlv = function(d) {\n  if ((d[0] & 15) != 8 || d[0] >>> 4 > 7 || (d[0] << 8 | d[1]) % 31)\n    throw \"invalid zlib data\";\n  if (d[1] & 32)\n    throw \"invalid zlib data: preset dictionaries not supported\";\n};\nfunction AsyncCmpStrm(opts, cb) {\n  if (!cb && typeof opts == \"function\")\n    cb = opts, opts = {};\n  this.ondata = cb;\n  return opts;\n}\nvar Deflate = function() {\n  function Deflate2(opts, cb) {\n    if (!cb && typeof opts == \"function\")\n      cb = opts, opts = {};\n    this.ondata = cb;\n    this.o = opts || {};\n  }\n  Deflate2.prototype.p = function(c, f) {\n    this.ondata(dopt(c, this.o, 0, 0, !f), f);\n  };\n  Deflate2.prototype.push = function(chunk, final) {\n    if (this.d)\n      throw \"stream finished\";\n    if (!this.ondata)\n      throw \"no stream handler\";\n    this.d = final;\n    this.p(chunk, final || false);\n  };\n  return Deflate2;\n}();\nvar AsyncDeflate = function() {\n  function AsyncDeflate2(opts, cb) {\n    astrmify([\n      bDflt,\n      function() {\n        return [astrm, Deflate];\n      }\n    ], this, AsyncCmpStrm.call(this, opts, cb), function(ev) {\n      var strm = new Deflate(ev.data);\n      onmessage = astrm(strm);\n    }, 6);\n  }\n  return AsyncDeflate2;\n}();\nfunction deflateSync(data, opts) {\n  return dopt(data, opts || {}, 0, 0);\n}\nvar Inflate = function() {\n  function Inflate2(cb) {\n    this.s = {};\n    this.p = new u8(0);\n    this.ondata = cb;\n  }\n  Inflate2.prototype.e = function(c) {\n    if (this.d)\n      throw \"stream finished\";\n    if (!this.ondata)\n      throw \"no stream handler\";\n    var l = this.p.length;\n    var n2 = new u8(l + c.length);\n    n2.set(this.p), n2.set(c, l), this.p = n2;\n  };\n  Inflate2.prototype.c = function(final) {\n    this.d = this.s.i = final || false;\n    var bts = this.s.b;\n    var dt2 = inflt(this.p, this.o, this.s);\n    this.ondata(slc(dt2, bts, this.s.b), this.d);\n    this.o = slc(dt2, this.s.b - 32768), this.s.b = this.o.length;\n    this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7;\n  };\n  Inflate2.prototype.push = function(chunk, final) {\n    this.e(chunk), this.c(final);\n  };\n  return Inflate2;\n}();\nvar AsyncInflate = function() {\n  function AsyncInflate2(cb) {\n    this.ondata = cb;\n    astrmify([\n      bInflt,\n      function() {\n        return [astrm, Inflate];\n      }\n    ], this, 0, function() {\n      var strm = new Inflate();\n      onmessage = astrm(strm);\n    }, 7);\n  }\n  return AsyncInflate2;\n}();\nfunction inflateSync(data, out) {\n  return inflt(data, out);\n}\nvar Gzip = function() {\n  function Gzip2(opts, cb) {\n    this.c = crc();\n    this.l = 0;\n    this.v = 1;\n    Deflate.call(this, opts, cb);\n  }\n  Gzip2.prototype.push = function(chunk, final) {\n    Deflate.prototype.push.call(this, chunk, final);\n  };\n  Gzip2.prototype.p = function(c, f) {\n    this.c.p(c);\n    this.l += c.length;\n    var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n    if (this.v)\n      gzh(raw, this.o), this.v = 0;\n    if (f)\n      wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n    this.ondata(raw, f);\n  };\n  return Gzip2;\n}();\nvar AsyncGzip = function() {\n  function AsyncGzip2(opts, cb) {\n    astrmify([\n      bDflt,\n      gze,\n      function() {\n        return [astrm, Deflate, Gzip];\n      }\n    ], this, AsyncCmpStrm.call(this, opts, cb), function(ev) {\n      var strm = new Gzip(ev.data);\n      onmessage = astrm(strm);\n    }, 8);\n  }\n  return AsyncGzip2;\n}();\nvar Gunzip = function() {\n  function Gunzip2(cb) {\n    this.v = 1;\n    Inflate.call(this, cb);\n  }\n  Gunzip2.prototype.push = function(chunk, final) {\n    Inflate.prototype.e.call(this, chunk);\n    if (this.v) {\n      var s = this.p.length > 3 ? gzs(this.p) : 4;\n      if (s >= this.p.length && !final)\n        return;\n      this.p = this.p.subarray(s), this.v = 0;\n    }\n    if (final) {\n      if (this.p.length < 8)\n        throw \"invalid gzip stream\";\n      this.p = this.p.subarray(0, -8);\n    }\n    Inflate.prototype.c.call(this, final);\n  };\n  return Gunzip2;\n}();\nvar AsyncGunzip = function() {\n  function AsyncGunzip2(cb) {\n    this.ondata = cb;\n    astrmify([\n      bInflt,\n      guze,\n      function() {\n        return [astrm, Inflate, Gunzip];\n      }\n    ], this, 0, function() {\n      var strm = new Gunzip();\n      onmessage = astrm(strm);\n    }, 9);\n  }\n  return AsyncGunzip2;\n}();\nvar Zlib = function() {\n  function Zlib2(opts, cb) {\n    this.c = adler();\n    this.v = 1;\n    Deflate.call(this, opts, cb);\n  }\n  Zlib2.prototype.push = function(chunk, final) {\n    Deflate.prototype.push.call(this, chunk, final);\n  };\n  Zlib2.prototype.p = function(c, f) {\n    this.c.p(c);\n    var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n    if (this.v)\n      zlh(raw, this.o), this.v = 0;\n    if (f)\n      wbytes(raw, raw.length - 4, this.c.d());\n    this.ondata(raw, f);\n  };\n  return Zlib2;\n}();\nvar AsyncZlib = function() {\n  function AsyncZlib2(opts, cb) {\n    astrmify([\n      bDflt,\n      zle,\n      function() {\n        return [astrm, Deflate, Zlib];\n      }\n    ], this, AsyncCmpStrm.call(this, opts, cb), function(ev) {\n      var strm = new Zlib(ev.data);\n      onmessage = astrm(strm);\n    }, 10);\n  }\n  return AsyncZlib2;\n}();\nvar Unzlib = function() {\n  function Unzlib2(cb) {\n    this.v = 1;\n    Inflate.call(this, cb);\n  }\n  Unzlib2.prototype.push = function(chunk, final) {\n    Inflate.prototype.e.call(this, chunk);\n    if (this.v) {\n      if (this.p.length < 2 && !final)\n        return;\n      this.p = this.p.subarray(2), this.v = 0;\n    }\n    if (final) {\n      if (this.p.length < 4)\n        throw \"invalid zlib stream\";\n      this.p = this.p.subarray(0, -4);\n    }\n    Inflate.prototype.c.call(this, final);\n  };\n  return Unzlib2;\n}();\nvar AsyncUnzlib = function() {\n  function AsyncUnzlib2(cb) {\n    this.ondata = cb;\n    astrmify([\n      bInflt,\n      zule,\n      function() {\n        return [astrm, Inflate, Unzlib];\n      }\n    ], this, 0, function() {\n      var strm = new Unzlib();\n      onmessage = astrm(strm);\n    }, 11);\n  }\n  return AsyncUnzlib2;\n}();\nvar Decompress = function() {\n  function Decompress2(cb) {\n    this.G = Gunzip;\n    this.I = Inflate;\n    this.Z = Unzlib;\n    this.ondata = cb;\n  }\n  Decompress2.prototype.push = function(chunk, final) {\n    if (!this.ondata)\n      throw \"no stream handler\";\n    if (!this.s) {\n      if (this.p && this.p.length) {\n        var n2 = new u8(this.p.length + chunk.length);\n        n2.set(this.p), n2.set(chunk, this.p.length);\n      } else\n        this.p = chunk;\n      if (this.p.length > 2) {\n        var _this_1 = this;\n        var cb = function() {\n          _this_1.ondata.apply(_this_1, arguments);\n        };\n        this.s = this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8 ? new this.G(cb) : (this.p[0] & 15) != 8 || this.p[0] >> 4 > 7 || (this.p[0] << 8 | this.p[1]) % 31 ? new this.I(cb) : new this.Z(cb);\n        this.s.push(this.p, final);\n        this.p = null;\n      }\n    } else\n      this.s.push(chunk, final);\n  };\n  return Decompress2;\n}();\nvar AsyncDecompress = function() {\n  function AsyncDecompress2(cb) {\n    this.G = AsyncGunzip;\n    this.I = AsyncInflate;\n    this.Z = AsyncUnzlib;\n    this.ondata = cb;\n  }\n  AsyncDecompress2.prototype.push = function(chunk, final) {\n    Decompress.prototype.push.call(this, chunk, final);\n  };\n  return AsyncDecompress2;\n}();\nvar fltn = function(d, p2, t2, o) {\n  for (var k in d) {\n    var val = d[k], n2 = p2 + k;\n    if (val instanceof u8)\n      t2[n2] = [val, o];\n    else if (Array.isArray(val))\n      t2[n2] = [val[0], mrg(o, val[1])];\n    else\n      fltn(val, n2 + \"/\", t2, o);\n  }\n};\nvar te = typeof TextEncoder != \"undefined\" && new TextEncoder();\nvar td = typeof TextDecoder != \"undefined\" && new TextDecoder();\nvar tds = 0;\ntry {\n  td.decode(et, { stream: true });\n  tds = 1;\n} catch (e) {\n}\nvar dutf8 = function(d) {\n  for (var r = \"\", i = 0; ; ) {\n    var c = d[i++];\n    var eb = (c > 127) + (c > 223) + (c > 239);\n    if (i + eb > d.length)\n      return [r, slc(d, i - 1)];\n    if (!eb)\n      r += String.fromCharCode(c);\n    else if (eb == 3) {\n      c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | d[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023);\n    } else if (eb & 1)\n      r += String.fromCharCode((c & 31) << 6 | d[i++] & 63);\n    else\n      r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | d[i++] & 63);\n  }\n};\nvar DecodeUTF8 = function() {\n  function DecodeUTF82(cb) {\n    this.ondata = cb;\n    if (tds)\n      this.t = new TextDecoder();\n    else\n      this.p = et;\n  }\n  DecodeUTF82.prototype.push = function(chunk, final) {\n    if (!this.ondata)\n      throw \"no callback\";\n    final = !!final;\n    if (this.t) {\n      this.ondata(this.t.decode(chunk, { stream: true }), final);\n      if (final) {\n        if (this.t.decode().length)\n          throw \"invalid utf-8 data\";\n        this.t = null;\n      }\n      return;\n    }\n    if (!this.p)\n      throw \"stream finished\";\n    var dat = new u8(this.p.length + chunk.length);\n    dat.set(this.p);\n    dat.set(chunk, this.p.length);\n    var _a12 = dutf8(dat), ch3 = _a12[0], np = _a12[1];\n    if (final) {\n      if (np.length)\n        throw \"invalid utf-8 data\";\n      this.p = null;\n    } else\n      this.p = np;\n    this.ondata(ch3, final);\n  };\n  return DecodeUTF82;\n}();\nvar EncodeUTF8 = function() {\n  function EncodeUTF82(cb) {\n    this.ondata = cb;\n  }\n  EncodeUTF82.prototype.push = function(chunk, final) {\n    if (!this.ondata)\n      throw \"no callback\";\n    if (this.d)\n      throw \"stream finished\";\n    this.ondata(strToU8(chunk), this.d = final || false);\n  };\n  return EncodeUTF82;\n}();\nfunction strToU8(str, latin1) {\n  if (latin1) {\n    var ar_1 = new u8(str.length);\n    for (var i = 0; i < str.length; ++i)\n      ar_1[i] = str.charCodeAt(i);\n    return ar_1;\n  }\n  if (te)\n    return te.encode(str);\n  var l = str.length;\n  var ar = new u8(str.length + (str.length >> 1));\n  var ai = 0;\n  var w = function(v) {\n    ar[ai++] = v;\n  };\n  for (var i = 0; i < l; ++i) {\n    if (ai + 5 > ar.length) {\n      var n2 = new u8(ai + 8 + (l - i << 1));\n      n2.set(ar);\n      ar = n2;\n    }\n    var c = str.charCodeAt(i);\n    if (c < 128 || latin1)\n      w(c);\n    else if (c < 2048)\n      w(192 | c >> 6), w(128 | c & 63);\n    else if (c > 55295 && c < 57344)\n      c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >> 18), w(128 | c >> 12 & 63), w(128 | c >> 6 & 63), w(128 | c & 63);\n    else\n      w(224 | c >> 12), w(128 | c >> 6 & 63), w(128 | c & 63);\n  }\n  return slc(ar, 0, ai);\n}\nfunction strFromU8(dat, latin1) {\n  if (latin1) {\n    var r = \"\";\n    for (var i = 0; i < dat.length; i += 16384)\n      r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n    return r;\n  } else if (td)\n    return td.decode(dat);\n  else {\n    var _a12 = dutf8(dat), out = _a12[0], ext = _a12[1];\n    if (ext.length)\n      throw \"invalid utf-8 data\";\n    return out;\n  }\n}\nvar dbf = function(l) {\n  return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0;\n};\nvar z64e = function(d, b) {\n  for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n    ;\n  return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\nvar exfl = function(ex) {\n  var le = 0;\n  if (ex) {\n    for (var k in ex) {\n      var l = ex[k].length;\n      if (l > 65535)\n        throw \"extra field too long\";\n      le += l + 4;\n    }\n  }\n  return le;\n};\nvar wzh = function(d, b, f, fn, u, c, ce, co) {\n  var fl2 = fn.length, ex = f.extra, col = co && co.length;\n  var exl = exfl(ex);\n  wbytes(d, b, ce != null ? 33639248 : 67324752), b += 4;\n  if (ce != null)\n    d[b++] = 20, d[b++] = f.os;\n  d[b] = 20, b += 2;\n  d[b++] = f.flag << 1 | (c == null && 8), d[b++] = u && 8;\n  d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n  var dt2 = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt2.getFullYear() - 1980;\n  if (y < 0 || y > 119)\n    throw \"date not in range 1980-2099\";\n  wbytes(d, b, y << 25 | dt2.getMonth() + 1 << 21 | dt2.getDate() << 16 | dt2.getHours() << 11 | dt2.getMinutes() << 5 | dt2.getSeconds() >>> 1), b += 4;\n  if (c != null) {\n    wbytes(d, b, f.crc);\n    wbytes(d, b + 4, c);\n    wbytes(d, b + 8, f.size);\n  }\n  wbytes(d, b + 12, fl2);\n  wbytes(d, b + 14, exl), b += 16;\n  if (ce != null) {\n    wbytes(d, b, col);\n    wbytes(d, b + 6, f.attrs);\n    wbytes(d, b + 10, ce), b += 14;\n  }\n  d.set(fn, b);\n  b += fl2;\n  if (exl) {\n    for (var k in ex) {\n      var exf = ex[k], l = exf.length;\n      wbytes(d, b, +k);\n      wbytes(d, b + 2, l);\n      d.set(exf, b + 4), b += 4 + l;\n    }\n  }\n  if (col)\n    d.set(co, b), b += col;\n  return b;\n};\nvar wzf = function(o, b, c, d, e) {\n  wbytes(o, b, 101010256);\n  wbytes(o, b + 8, c);\n  wbytes(o, b + 10, c);\n  wbytes(o, b + 12, d);\n  wbytes(o, b + 16, e);\n};\nvar ZipPassThrough = function() {\n  function ZipPassThrough2(filename) {\n    this.filename = filename;\n    this.c = crc();\n    this.size = 0;\n    this.compression = 0;\n  }\n  ZipPassThrough2.prototype.process = function(chunk, final) {\n    this.ondata(null, chunk, final);\n  };\n  ZipPassThrough2.prototype.push = function(chunk, final) {\n    if (!this.ondata)\n      throw \"no callback - add to ZIP archive before pushing\";\n    this.c.p(chunk);\n    this.size += chunk.length;\n    if (final)\n      this.crc = this.c.d();\n    this.process(chunk, final || false);\n  };\n  return ZipPassThrough2;\n}();\nvar ZipDeflate = function() {\n  function ZipDeflate2(filename, opts) {\n    var _this_1 = this;\n    if (!opts)\n      opts = {};\n    ZipPassThrough.call(this, filename);\n    this.d = new Deflate(opts, function(dat, final) {\n      _this_1.ondata(null, dat, final);\n    });\n    this.compression = 8;\n    this.flag = dbf(opts.level);\n  }\n  ZipDeflate2.prototype.process = function(chunk, final) {\n    try {\n      this.d.push(chunk, final);\n    } catch (e) {\n      this.ondata(e, null, final);\n    }\n  };\n  ZipDeflate2.prototype.push = function(chunk, final) {\n    ZipPassThrough.prototype.push.call(this, chunk, final);\n  };\n  return ZipDeflate2;\n}();\nvar AsyncZipDeflate = function() {\n  function AsyncZipDeflate2(filename, opts) {\n    var _this_1 = this;\n    if (!opts)\n      opts = {};\n    ZipPassThrough.call(this, filename);\n    this.d = new AsyncDeflate(opts, function(err, dat, final) {\n      _this_1.ondata(err, dat, final);\n    });\n    this.compression = 8;\n    this.flag = dbf(opts.level);\n    this.terminate = this.d.terminate;\n  }\n  AsyncZipDeflate2.prototype.process = function(chunk, final) {\n    this.d.push(chunk, final);\n  };\n  AsyncZipDeflate2.prototype.push = function(chunk, final) {\n    ZipPassThrough.prototype.push.call(this, chunk, final);\n  };\n  return AsyncZipDeflate2;\n}();\nvar Zip = function() {\n  function Zip2(cb) {\n    this.ondata = cb;\n    this.u = [];\n    this.d = 1;\n  }\n  Zip2.prototype.add = function(file) {\n    var _this_1 = this;\n    if (this.d & 2)\n      throw \"stream finished\";\n    var f = strToU8(file.filename), fl2 = f.length;\n    var com = file.comment, o = com && strToU8(com);\n    var u = fl2 != file.filename.length || o && com.length != o.length;\n    var hl = fl2 + exfl(file.extra) + 30;\n    if (fl2 > 65535)\n      throw \"filename too long\";\n    var header = new u8(hl);\n    wzh(header, 0, file, f, u);\n    var chks = [header];\n    var pAll = function() {\n      for (var _i = 0, chks_1 = chks; _i < chks_1.length; _i++) {\n        var chk = chks_1[_i];\n        _this_1.ondata(null, chk, false);\n      }\n      chks = [];\n    };\n    var tr = this.d;\n    this.d = 0;\n    var ind = this.u.length;\n    var uf = mrg(file, {\n      f,\n      u,\n      o,\n      t: function() {\n        if (file.terminate)\n          file.terminate();\n      },\n      r: function() {\n        pAll();\n        if (tr) {\n          var nxt = _this_1.u[ind + 1];\n          if (nxt)\n            nxt.r();\n          else\n            _this_1.d = 1;\n        }\n        tr = 1;\n      }\n    });\n    var cl = 0;\n    file.ondata = function(err, dat, final) {\n      if (err) {\n        _this_1.ondata(err, dat, final);\n        _this_1.terminate();\n      } else {\n        cl += dat.length;\n        chks.push(dat);\n        if (final) {\n          var dd = new u8(16);\n          wbytes(dd, 0, 134695760);\n          wbytes(dd, 4, file.crc);\n          wbytes(dd, 8, cl);\n          wbytes(dd, 12, file.size);\n          chks.push(dd);\n          uf.c = cl, uf.b = hl + cl + 16, uf.crc = file.crc, uf.size = file.size;\n          if (tr)\n            uf.r();\n          tr = 1;\n        } else if (tr)\n          pAll();\n      }\n    };\n    this.u.push(uf);\n  };\n  Zip2.prototype.end = function() {\n    var _this_1 = this;\n    if (this.d & 2) {\n      if (this.d & 1)\n        throw \"stream finishing\";\n      throw \"stream finished\";\n    }\n    if (this.d)\n      this.e();\n    else\n      this.u.push({\n        r: function() {\n          if (!(_this_1.d & 1))\n            return;\n          _this_1.u.splice(-1, 1);\n          _this_1.e();\n        },\n        t: function() {\n        }\n      });\n    this.d = 3;\n  };\n  Zip2.prototype.e = function() {\n    var bt = 0, l = 0, tl = 0;\n    for (var _i = 0, _a12 = this.u; _i < _a12.length; _i++) {\n      var f = _a12[_i];\n      tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n    }\n    var out = new u8(tl + 22);\n    for (var _b11 = 0, _c6 = this.u; _b11 < _c6.length; _b11++) {\n      var f = _c6[_b11];\n      wzh(out, bt, f, f.f, f.u, f.c, l, f.o);\n      bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n    }\n    wzf(out, bt, this.u.length, tl, l);\n    this.ondata(null, out, true);\n    this.d = 2;\n  };\n  Zip2.prototype.terminate = function() {\n    for (var _i = 0, _a12 = this.u; _i < _a12.length; _i++) {\n      var f = _a12[_i];\n      f.t();\n    }\n    this.d = 2;\n  };\n  return Zip2;\n}();\nfunction zipSync(data, opts) {\n  if (!opts)\n    opts = {};\n  var r = {};\n  var files = [];\n  fltn(data, \"\", r, opts);\n  var o = 0;\n  var tot = 0;\n  for (var fn in r) {\n    var _a12 = r[fn], file = _a12[0], p2 = _a12[1];\n    var compression = p2.level == 0 ? 0 : 8;\n    var f = strToU8(fn), s = f.length;\n    var com = p2.comment, m = com && strToU8(com), ms = m && m.length;\n    var exl = exfl(p2.extra);\n    if (s > 65535)\n      throw \"filename too long\";\n    var d = compression ? deflateSync(file, p2) : file, l = d.length;\n    var c = crc();\n    c.p(file);\n    files.push(mrg(p2, {\n      size: file.length,\n      crc: c.d(),\n      c: d,\n      f,\n      m,\n      u: s != fn.length || m && com.length != ms,\n      o,\n      compression\n    }));\n    o += 30 + s + exl + l;\n    tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n  }\n  var out = new u8(tot + 22), oe = o, cdl = tot - o;\n  for (var i = 0; i < files.length; ++i) {\n    var f = files[i];\n    wzh(out, f.o, f, f.f, f.u, f.c.length);\n    var badd = 30 + f.f.length + exfl(f.extra);\n    out.set(f.c, f.o + badd);\n    wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n  }\n  wzf(out, o, files.length, cdl, oe);\n  return out;\n}\nvar UnzipPassThrough = function() {\n  function UnzipPassThrough2() {\n  }\n  UnzipPassThrough2.prototype.push = function(data, final) {\n    this.ondata(null, data, final);\n  };\n  UnzipPassThrough2.compression = 0;\n  return UnzipPassThrough2;\n}();\nvar UnzipInflate = function() {\n  function UnzipInflate2() {\n    var _this_1 = this;\n    this.i = new Inflate(function(dat, final) {\n      _this_1.ondata(null, dat, final);\n    });\n  }\n  UnzipInflate2.prototype.push = function(data, final) {\n    try {\n      this.i.push(data, final);\n    } catch (e) {\n      this.ondata(e, data, final);\n    }\n  };\n  UnzipInflate2.compression = 8;\n  return UnzipInflate2;\n}();\nvar AsyncUnzipInflate = function() {\n  function AsyncUnzipInflate2(_, sz) {\n    var _this_1 = this;\n    if (sz < 32e4) {\n      this.i = new Inflate(function(dat, final) {\n        _this_1.ondata(null, dat, final);\n      });\n    } else {\n      this.i = new AsyncInflate(function(err, dat, final) {\n        _this_1.ondata(err, dat, final);\n      });\n      this.terminate = this.i.terminate;\n    }\n  }\n  AsyncUnzipInflate2.prototype.push = function(data, final) {\n    if (this.i.terminate)\n      data = slc(data, 0);\n    this.i.push(data, final);\n  };\n  AsyncUnzipInflate2.compression = 8;\n  return AsyncUnzipInflate2;\n}();\nvar Unzip = function() {\n  function Unzip2(cb) {\n    this.onfile = cb;\n    this.k = [];\n    this.o = {\n      0: UnzipPassThrough\n    };\n    this.p = et;\n  }\n  Unzip2.prototype.push = function(chunk, final) {\n    var _this_1 = this;\n    if (!this.onfile)\n      throw \"no callback\";\n    if (!this.p)\n      throw \"stream finished\";\n    if (this.c > 0) {\n      var len = Math.min(this.c, chunk.length);\n      var toAdd = chunk.subarray(0, len);\n      this.c -= len;\n      if (this.d)\n        this.d.push(toAdd, !this.c);\n      else\n        this.k[0].push(toAdd);\n      chunk = chunk.subarray(len);\n      if (chunk.length)\n        return this.push(chunk, final);\n    } else {\n      var f = 0, i = 0, is = void 0, buf = void 0;\n      if (!this.p.length)\n        buf = chunk;\n      else if (!chunk.length)\n        buf = this.p;\n      else {\n        buf = new u8(this.p.length + chunk.length);\n        buf.set(this.p), buf.set(chunk, this.p.length);\n      }\n      var l = buf.length, oc = this.c, add = oc && this.d;\n      var _loop_2 = function() {\n        var _a12;\n        var sig = b4(buf, i);\n        if (sig == 67324752) {\n          f = 1, is = i;\n          this_1.d = null;\n          this_1.c = 0;\n          var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n          if (l > i + 30 + fnl + es) {\n            var chks_2 = [];\n            this_1.k.unshift(chks_2);\n            f = 2;\n            var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n            var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n            if (sc_1 == 4294967295) {\n              _a12 = dd ? [-2] : z64e(buf, i), sc_1 = _a12[0], su_1 = _a12[1];\n            } else if (dd)\n              sc_1 = -1;\n            i += es;\n            this_1.c = sc_1;\n            var d_1;\n            var file_1 = {\n              name: fn_1,\n              compression: cmp_1,\n              start: function() {\n                if (!file_1.ondata)\n                  throw \"no callback\";\n                if (!sc_1)\n                  file_1.ondata(null, et, true);\n                else {\n                  var ctr = _this_1.o[cmp_1];\n                  if (!ctr)\n                    throw \"unknown compression type \" + cmp_1;\n                  d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n                  d_1.ondata = function(err, dat3, final2) {\n                    file_1.ondata(err, dat3, final2);\n                  };\n                  for (var _i = 0, chks_3 = chks_2; _i < chks_3.length; _i++) {\n                    var dat2 = chks_3[_i];\n                    d_1.push(dat2, false);\n                  }\n                  if (_this_1.k[0] == chks_2 && _this_1.c)\n                    _this_1.d = d_1;\n                  else\n                    d_1.push(et, true);\n                }\n              },\n              terminate: function() {\n                if (d_1 && d_1.terminate)\n                  d_1.terminate();\n              }\n            };\n            if (sc_1 >= 0)\n              file_1.size = sc_1, file_1.originalSize = su_1;\n            this_1.onfile(file_1);\n          }\n          return \"break\";\n        } else if (oc) {\n          if (sig == 134695760) {\n            is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n            return \"break\";\n          } else if (sig == 33639248) {\n            is = i -= 4, f = 3, this_1.c = 0;\n            return \"break\";\n          }\n        }\n      };\n      var this_1 = this;\n      for (; i < l - 4; ++i) {\n        var state_1 = _loop_2();\n        if (state_1 === \"break\")\n          break;\n      }\n      this.p = et;\n      if (oc < 0) {\n        var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 134695760 && 4)) : buf.subarray(0, i);\n        if (add)\n          add.push(dat, !!f);\n        else\n          this.k[+(f == 2)].push(dat);\n      }\n      if (f & 2)\n        return this.push(buf.subarray(i), final);\n      this.p = buf.subarray(i);\n    }\n    if (final) {\n      if (this.c)\n        throw \"invalid zip file\";\n      this.p = null;\n    }\n  };\n  Unzip2.prototype.register = function(decoder) {\n    this.o[decoder.compression] = decoder;\n  };\n  return Unzip2;\n}();\n\n// node_modules/three/examples/jsm/exporters/USDZExporter.js\nvar USDZExporter = class {\n  async parse(scene) {\n    const files = {};\n    const modelFileName = \"model.usda\";\n    files[modelFileName] = null;\n    let output = buildHeader();\n    const materials = {};\n    const textures = {};\n    scene.traverseVisible((object) => {\n      if (object.isMesh) {\n        const geometry = object.geometry;\n        const material = object.material;\n        if (material.isMeshStandardMaterial) {\n          const geometryFileName = \"geometries/Geometry_\" + geometry.id + \".usd\";\n          if (!(geometryFileName in files)) {\n            const meshObject = buildMeshObject(geometry);\n            files[geometryFileName] = buildUSDFileAsString(meshObject);\n          }\n          if (!(material.uuid in materials)) {\n            materials[material.uuid] = material;\n          }\n          output += buildXform(object, geometry, material);\n        } else {\n          console.warn(\"THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)\", object);\n        }\n      } else if (object.isCamera) {\n        output += buildCamera(object);\n      }\n    });\n    output += buildMaterials(materials, textures);\n    files[modelFileName] = strToU8(output);\n    output = null;\n    for (const id in textures) {\n      const texture = textures[id];\n      const color = id.split(\"_\")[1];\n      const isRGBA = texture.format === 1023;\n      const canvas = imageToCanvas(texture.image, color);\n      const blob = await new Promise((resolve) => canvas.toBlob(resolve, isRGBA ? \"image/png\" : \"image/jpeg\", 1));\n      files[`textures/Texture_${id}.${isRGBA ? \"png\" : \"jpg\"}`] = new Uint8Array(await blob.arrayBuffer());\n    }\n    let offset = 0;\n    for (const filename in files) {\n      const file = files[filename];\n      const headerSize = 34 + filename.length;\n      offset += headerSize;\n      const offsetMod64 = offset & 63;\n      if (offsetMod64 !== 4) {\n        const padLength = 64 - offsetMod64;\n        const padding = new Uint8Array(padLength);\n        files[filename] = [file, { extra: { 12345: padding } }];\n      }\n      offset = file.length;\n    }\n    return zipSync(files, { level: 0 });\n  }\n};\nfunction imageToCanvas(image, color) {\n  if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof OffscreenCanvas !== \"undefined\" && image instanceof OffscreenCanvas || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n    const scale = 1024 / Math.max(image.width, image.height);\n    const canvas = document.createElement(\"canvas\");\n    canvas.width = image.width * Math.min(1, scale);\n    canvas.height = image.height * Math.min(1, scale);\n    const context = canvas.getContext(\"2d\");\n    context.drawImage(image, 0, 0, canvas.width, canvas.height);\n    if (color !== void 0) {\n      const hex = parseInt(color, 16);\n      const r = (hex >> 16 & 255) / 255;\n      const g2 = (hex >> 8 & 255) / 255;\n      const b = (hex & 255) / 255;\n      const imagedata = context.getImageData(0, 0, canvas.width, canvas.height);\n      const data = imagedata.data;\n      for (let i = 0; i < data.length; i += 4) {\n        data[i + 0] = data[i + 0] * r;\n        data[i + 1] = data[i + 1] * g2;\n        data[i + 2] = data[i + 2] * b;\n      }\n      context.putImageData(imagedata, 0, 0);\n    }\n    return canvas;\n  }\n}\nvar PRECISION = 7;\nfunction buildHeader() {\n  return `#usda 1.0\n(\n    customLayerData = {\n        string creator = \"Three.js USDZExporter\"\n    }\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\n`;\n}\nfunction buildUSDFileAsString(dataToInsert) {\n  let output = buildHeader();\n  output += dataToInsert;\n  return strToU8(output);\n}\nfunction buildXform(object, geometry, material) {\n  const name = \"Object_\" + object.id;\n  const transform = buildMatrix(object.matrixWorld);\n  if (object.matrixWorld.determinant() < 0) {\n    console.warn(\"THREE.USDZExporter: USDZ does not support negative scales\", object);\n  }\n  return `def Xform \"${name}\" (\n    prepend references = @./geometries/Geometry_${geometry.id}.usd@</Geometry>\n)\n{\n    matrix4d xformOp:transform = ${transform}\n    uniform token[] xformOpOrder = [\"xformOp:transform\"]\n\n    rel material:binding = </Materials/Material_${material.id}>\n}\n\n`;\n}\nfunction buildMatrix(matrix) {\n  const array = matrix.elements;\n  return `( ${buildMatrixRow(array, 0)}, ${buildMatrixRow(array, 4)}, ${buildMatrixRow(array, 8)}, ${buildMatrixRow(array, 12)} )`;\n}\nfunction buildMatrixRow(array, offset) {\n  return `(${array[offset + 0]}, ${array[offset + 1]}, ${array[offset + 2]}, ${array[offset + 3]})`;\n}\nfunction buildMeshObject(geometry) {\n  const mesh = buildMesh(geometry);\n  return `\ndef \"Geometry\"\n{\n  ${mesh}\n}\n`;\n}\nfunction buildMesh(geometry) {\n  const name = \"Geometry\";\n  const attributes = geometry.attributes;\n  const count = attributes.position.count;\n  return `\n    def Mesh \"${name}\"\n    {\n        int[] faceVertexCounts = [${buildMeshVertexCount(geometry)}]\n        int[] faceVertexIndices = [${buildMeshVertexIndices(geometry)}]\n        normal3f[] normals = [${buildVector3Array(attributes.normal, count)}] (\n            interpolation = \"vertex\"\n        )\n        point3f[] points = [${buildVector3Array(attributes.position, count)}]\n        float2[] primvars:st = [${buildVector2Array(attributes.uv, count)}] (\n            interpolation = \"vertex\"\n        )\n        uniform token subdivisionScheme = \"none\"\n    }\n`;\n}\nfunction buildMeshVertexCount(geometry) {\n  const count = geometry.index !== null ? geometry.index.count : geometry.attributes.position.count;\n  return Array(count / 3).fill(3).join(\", \");\n}\nfunction buildMeshVertexIndices(geometry) {\n  const index = geometry.index;\n  const array = [];\n  if (index !== null) {\n    for (let i = 0; i < index.count; i++) {\n      array.push(index.getX(i));\n    }\n  } else {\n    const length = geometry.attributes.position.count;\n    for (let i = 0; i < length; i++) {\n      array.push(i);\n    }\n  }\n  return array.join(\", \");\n}\nfunction buildVector3Array(attribute, count) {\n  if (attribute === void 0) {\n    console.warn(\"USDZExporter: Normals missing.\");\n    return Array(count).fill(\"(0, 0, 0)\").join(\", \");\n  }\n  const array = [];\n  for (let i = 0; i < attribute.count; i++) {\n    const x2 = attribute.getX(i);\n    const y = attribute.getY(i);\n    const z = attribute.getZ(i);\n    array.push(`(${x2.toPrecision(PRECISION)}, ${y.toPrecision(PRECISION)}, ${z.toPrecision(PRECISION)})`);\n  }\n  return array.join(\", \");\n}\nfunction buildVector2Array(attribute, count) {\n  if (attribute === void 0) {\n    console.warn(\"USDZExporter: UVs missing.\");\n    return Array(count).fill(\"(0, 0)\").join(\", \");\n  }\n  const array = [];\n  for (let i = 0; i < attribute.count; i++) {\n    const x2 = attribute.getX(i);\n    const y = attribute.getY(i);\n    array.push(`(${x2.toPrecision(PRECISION)}, ${1 - y.toPrecision(PRECISION)})`);\n  }\n  return array.join(\", \");\n}\nfunction buildMaterials(materials, textures) {\n  const array = [];\n  for (const uuid in materials) {\n    const material = materials[uuid];\n    array.push(buildMaterial(material, textures));\n  }\n  return `def \"Materials\"\n{\n${array.join(\"\")}\n}\n\n`;\n}\nfunction buildMaterial(material, textures) {\n  const pad = \"            \";\n  const inputs = [];\n  const samplers = [];\n  function buildTexture(texture, mapType, color) {\n    const id = texture.id + (color ? \"_\" + color.getHexString() : \"\");\n    const isRGBA = texture.format === 1023;\n    textures[id] = texture;\n    return `\n        def Shader \"Transform2d_${mapType}\" (\n            sdrMetadata = {\n                string role = \"math\"\n            }\n        )\n        {\n            uniform token info:id = \"UsdTransform2d\"\n            float2 inputs:in.connect = </Materials/Material_${material.id}/uvReader_st.outputs:result>\n            float2 inputs:scale = ${buildVector2(texture.repeat)}\n            float2 inputs:translation = ${buildVector2(texture.offset)}\n            float2 outputs:result\n        }\n\n        def Shader \"Texture_${texture.id}_${mapType}\"\n        {\n            uniform token info:id = \"UsdUVTexture\"\n            asset inputs:file = @textures/Texture_${id}.${isRGBA ? \"png\" : \"jpg\"}@\n            float2 inputs:st.connect = </Materials/Material_${material.id}/Transform2d_${mapType}.outputs:result>\n            token inputs:wrapS = \"repeat\"\n            token inputs:wrapT = \"repeat\"\n            float outputs:r\n            float outputs:g\n            float outputs:b\n            float3 outputs:rgb\n            ${material.transparent || material.alphaTest > 0 ? \"float outputs:a\" : \"\"}\n        }`;\n  }\n  if (material.side === DoubleSide) {\n    console.warn(\"THREE.USDZExporter: USDZ does not support double sided materials\", material);\n  }\n  if (material.map !== null) {\n    inputs.push(`${pad}color3f inputs:diffuseColor.connect = </Materials/Material_${material.id}/Texture_${material.map.id}_diffuse.outputs:rgb>`);\n    if (material.transparent) {\n      inputs.push(`${pad}float inputs:opacity.connect = </Materials/Material_${material.id}/Texture_${material.map.id}_diffuse.outputs:a>`);\n    } else if (material.alphaTest > 0) {\n      inputs.push(`${pad}float inputs:opacity.connect = </Materials/Material_${material.id}/Texture_${material.map.id}_diffuse.outputs:a>`);\n      inputs.push(`${pad}float inputs:opacityThreshold = ${material.alphaTest}`);\n    }\n    samplers.push(buildTexture(material.map, \"diffuse\", material.color));\n  } else {\n    inputs.push(`${pad}color3f inputs:diffuseColor = ${buildColor(material.color)}`);\n  }\n  if (material.emissiveMap !== null) {\n    inputs.push(`${pad}color3f inputs:emissiveColor.connect = </Materials/Material_${material.id}/Texture_${material.emissiveMap.id}_emissive.outputs:rgb>`);\n    samplers.push(buildTexture(material.emissiveMap, \"emissive\"));\n  } else if (material.emissive.getHex() > 0) {\n    inputs.push(`${pad}color3f inputs:emissiveColor = ${buildColor(material.emissive)}`);\n  }\n  if (material.normalMap !== null) {\n    inputs.push(`${pad}normal3f inputs:normal.connect = </Materials/Material_${material.id}/Texture_${material.normalMap.id}_normal.outputs:rgb>`);\n    samplers.push(buildTexture(material.normalMap, \"normal\"));\n  }\n  if (material.aoMap !== null) {\n    inputs.push(`${pad}float inputs:occlusion.connect = </Materials/Material_${material.id}/Texture_${material.aoMap.id}_occlusion.outputs:r>`);\n    samplers.push(buildTexture(material.aoMap, \"occlusion\"));\n  }\n  if (material.roughnessMap !== null && material.roughness === 1) {\n    inputs.push(`${pad}float inputs:roughness.connect = </Materials/Material_${material.id}/Texture_${material.roughnessMap.id}_roughness.outputs:g>`);\n    samplers.push(buildTexture(material.roughnessMap, \"roughness\"));\n  } else {\n    inputs.push(`${pad}float inputs:roughness = ${material.roughness}`);\n  }\n  if (material.metalnessMap !== null && material.metalness === 1) {\n    inputs.push(`${pad}float inputs:metallic.connect = </Materials/Material_${material.id}/Texture_${material.metalnessMap.id}_metallic.outputs:b>`);\n    samplers.push(buildTexture(material.metalnessMap, \"metallic\"));\n  } else {\n    inputs.push(`${pad}float inputs:metallic = ${material.metalness}`);\n  }\n  if (material.alphaMap !== null) {\n    inputs.push(`${pad}float inputs:opacity.connect = </Materials/Material_${material.id}/Texture_${material.alphaMap.id}_opacity.outputs:r>`);\n    inputs.push(`${pad}float inputs:opacityThreshold = 0.0001`);\n    samplers.push(buildTexture(material.alphaMap, \"opacity\"));\n  } else {\n    inputs.push(`${pad}float inputs:opacity = ${material.opacity}`);\n  }\n  if (material.isMeshPhysicalMaterial) {\n    inputs.push(`${pad}float inputs:clearcoat = ${material.clearcoat}`);\n    inputs.push(`${pad}float inputs:clearcoatRoughness = ${material.clearcoatRoughness}`);\n    inputs.push(`${pad}float inputs:ior = ${material.ior}`);\n  }\n  return `\n    def Material \"Material_${material.id}\"\n    {\n        def Shader \"PreviewSurface\"\n        {\n            uniform token info:id = \"UsdPreviewSurface\"\n${inputs.join(\"\\n\")}\n            int inputs:useSpecularWorkflow = 0\n            token outputs:surface\n        }\n\n        token outputs:surface.connect = </Materials/Material_${material.id}/PreviewSurface.outputs:surface>\n        token inputs:frame:stPrimvarName = \"st\"\n\n        def Shader \"uvReader_st\"\n        {\n            uniform token info:id = \"UsdPrimvarReader_float2\"\n            token inputs:varname.connect = </Materials/Material_${material.id}.inputs:frame:stPrimvarName>\n            float2 inputs:fallback = (0.0, 0.0)\n            float2 outputs:result\n        }\n\n${samplers.join(\"\\n\")}\n\n    }\n`;\n}\nfunction buildColor(color) {\n  return `(${color.r}, ${color.g}, ${color.b})`;\n}\nfunction buildVector2(vector) {\n  return `(${vector.x}, ${vector.y})`;\n}\nfunction buildCamera(camera2) {\n  const name = camera2.name ? camera2.name : \"Camera_\" + camera2.id;\n  const transform = buildMatrix(camera2.matrixWorld);\n  if (camera2.matrixWorld.determinant() < 0) {\n    console.warn(\"THREE.USDZExporter: USDZ does not support negative scales\", camera2);\n  }\n  if (camera2.isOrthographicCamera) {\n    return `def Camera \"${name}\"\n\t\t{\n\t\t\tmatrix4d xformOp:transform = ${transform}\n\t\t\tuniform token[] xformOpOrder = [\"xformOp:transform\"]\n\t\n\t\t\tfloat2 clippingRange = (${camera2.near}, ${camera2.far})\n\t\t\tfloat horizontalAperture = ${(Math.abs(camera2.left) + Math.abs(camera2.right)) * 10}\n\t\t\tfloat verticalAperture = ${(Math.abs(camera2.top) + Math.abs(camera2.bottom)) * 10}\n\t\t\ttoken projection = \"orthographic\"\n\t\t}\n\t\n\t`;\n  } else {\n    return `def Camera \"${name}\"\n\t\t{\n\t\t\tmatrix4d xformOp:transform = ${transform}\n\t\t\tuniform token[] xformOpOrder = [\"xformOp:transform\"]\n\t\n\t\t\tfloat2 clippingRange = (${camera2.near}, ${camera2.far})\n\t\t\tfloat focalLength = ${camera2.getFocalLength()}\n\t\t\tfloat focusDistance = ${camera2.focus}\n\t\t\tfloat horizontalAperture = ${camera2.getFilmWidth()}\n\t\t\ttoken projection = \"perspective\"\n\t\t\tfloat verticalAperture = ${camera2.getFilmHeight()}\n\t\t}\n\t\n\t`;\n  }\n}\n\n// node_modules/@google/model-viewer/lib/styles/deserializers.js\nvar enumerationDeserializer = (allowedNames) => (valueString) => {\n  try {\n    const expressions = parseExpressions(valueString);\n    const names = (expressions.length ? expressions[0].terms : []).filter((valueNode) => valueNode && valueNode.type === \"ident\").map((valueNode) => valueNode.value).filter((name) => allowedNames.indexOf(name) > -1);\n    const result = /* @__PURE__ */ new Set();\n    for (const name of names) {\n      result.add(name);\n    }\n    return result;\n  } catch (_error) {\n  }\n  return /* @__PURE__ */ new Set();\n};\n\n// node_modules/@google/model-viewer/lib/features/ar.js\nvar __decorate5 = function(decorators, target2, key, desc) {\n  var c = arguments.length, r = c < 3 ? target2 : desc === null ? desc = Object.getOwnPropertyDescriptor(target2, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target2, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if (d = decorators[i])\n        r = (c < 3 ? d(r) : c > 3 ? d(target2, key, r) : d(target2, key)) || r;\n  return c > 3 && r && Object.defineProperty(target2, key, r), r;\n};\nvar isWebXRBlocked = false;\nvar isSceneViewerBlocked = false;\nvar noArViewerSigil = \"#model-viewer-no-ar-fallback\";\nvar deserializeARModes = enumerationDeserializer([\"quick-look\", \"scene-viewer\", \"webxr\", \"none\"]);\nvar DEFAULT_AR_MODES = \"webxr scene-viewer quick-look\";\nvar ARMode = {\n  QUICK_LOOK: \"quick-look\",\n  SCENE_VIEWER: \"scene-viewer\",\n  WEBXR: \"webxr\",\n  NONE: \"none\"\n};\nvar $arButtonContainer = Symbol(\"arButtonContainer\");\nvar $enterARWithWebXR = Symbol(\"enterARWithWebXR\");\nvar $openSceneViewer = Symbol(\"openSceneViewer\");\nvar $openIOSARQuickLook = Symbol(\"openIOSARQuickLook\");\nvar $canActivateAR = Symbol(\"canActivateAR\");\nvar $arMode = Symbol(\"arMode\");\nvar $arModes = Symbol(\"arModes\");\nvar $arAnchor = Symbol(\"arAnchor\");\nvar $preload = Symbol(\"preload\");\nvar $onARButtonContainerClick = Symbol(\"onARButtonContainerClick\");\nvar $onARStatus = Symbol(\"onARStatus\");\nvar $onARTracking = Symbol(\"onARTracking\");\nvar $onARTap = Symbol(\"onARTap\");\nvar $selectARMode = Symbol(\"selectARMode\");\nvar $triggerLoad = Symbol(\"triggerLoad\");\nvar ARMixin = (ModelViewerElement2) => {\n  var _a12, _b11, _c6, _d5, _e4, _f4, _g2, _h2, _j2, _k2;\n  class ARModelViewerElement extends ModelViewerElement2 {\n    constructor() {\n      super(...arguments);\n      this.ar = false;\n      this.arScale = \"auto\";\n      this.arPlacement = \"floor\";\n      this.arModes = DEFAULT_AR_MODES;\n      this.iosSrc = null;\n      this.xrEnvironment = false;\n      this[_a12] = false;\n      this[_b11] = this.shadowRoot.querySelector(\".ar-button\");\n      this[_c6] = document.createElement(\"a\");\n      this[_d5] = /* @__PURE__ */ new Set();\n      this[_e4] = ARMode.NONE;\n      this[_f4] = false;\n      this[_g2] = (event) => {\n        event.preventDefault();\n        this.activateAR();\n      };\n      this[_h2] = ({ status }) => {\n        if (status === ARStatus.NOT_PRESENTING || this[$renderer].arRenderer.presentedScene === this[$scene]) {\n          this.setAttribute(\"ar-status\", status);\n          this.dispatchEvent(new CustomEvent(\"ar-status\", { detail: { status } }));\n          if (status === ARStatus.NOT_PRESENTING) {\n            this.removeAttribute(\"ar-tracking\");\n          } else if (status === ARStatus.SESSION_STARTED) {\n            this.setAttribute(\"ar-tracking\", ARTracking.TRACKING);\n          }\n        }\n      };\n      this[_j2] = ({ status }) => {\n        this.setAttribute(\"ar-tracking\", status);\n        this.dispatchEvent(new CustomEvent(\"ar-tracking\", { detail: { status } }));\n      };\n      this[_k2] = (event) => {\n        if (event.data == \"_apple_ar_quicklook_button_tapped\") {\n          this.dispatchEvent(new CustomEvent(\"quick-look-button-tapped\"));\n        }\n      };\n    }\n    get canActivateAR() {\n      return this[$arMode] !== ARMode.NONE;\n    }\n    connectedCallback() {\n      super.connectedCallback();\n      this[$renderer].arRenderer.addEventListener(\"status\", this[$onARStatus]);\n      this.setAttribute(\"ar-status\", ARStatus.NOT_PRESENTING);\n      this[$renderer].arRenderer.addEventListener(\"tracking\", this[$onARTracking]);\n      this[$arAnchor].addEventListener(\"message\", this[$onARTap]);\n    }\n    disconnectedCallback() {\n      super.disconnectedCallback();\n      this[$renderer].arRenderer.removeEventListener(\"status\", this[$onARStatus]);\n      this[$renderer].arRenderer.removeEventListener(\"tracking\", this[$onARTracking]);\n      this[$arAnchor].removeEventListener(\"message\", this[$onARTap]);\n    }\n    update(changedProperties) {\n      super.update(changedProperties);\n      if (changedProperties.has(\"arScale\")) {\n        this[$scene].canScale = this.arScale !== \"fixed\";\n      }\n      if (changedProperties.has(\"arPlacement\")) {\n        this[$scene].updateShadow();\n        this[$needsRender]();\n      }\n      if (changedProperties.has(\"arModes\")) {\n        this[$arModes] = deserializeARModes(this.arModes);\n      }\n      if (changedProperties.has(\"ar\") || changedProperties.has(\"arModes\") || changedProperties.has(\"src\") || changedProperties.has(\"iosSrc\")) {\n        this[$selectARMode]();\n      }\n    }\n    /**\n     * Activates AR. Note that for any mode that is not WebXR-based, this\n     * method most likely has to be called synchronous from a user\n     * interaction handler. Otherwise, attempts to activate modes that\n     * require user interaction will most likely be ignored.\n     */\n    async activateAR() {\n      switch (this[$arMode]) {\n        case ARMode.QUICK_LOOK:\n          this[$openIOSARQuickLook]();\n          break;\n        case ARMode.WEBXR:\n          await this[$enterARWithWebXR]();\n          break;\n        case ARMode.SCENE_VIEWER:\n          this[$openSceneViewer]();\n          break;\n        default:\n          console.warn(\"No AR Mode can be activated. This is probably due to missing configuration or device capabilities\");\n          break;\n      }\n    }\n    async [(_a12 = $canActivateAR, _b11 = $arButtonContainer, _c6 = $arAnchor, _d5 = $arModes, _e4 = $arMode, _f4 = $preload, _g2 = $onARButtonContainerClick, _h2 = $onARStatus, _j2 = $onARTracking, _k2 = $onARTap, $selectARMode)]() {\n      let arMode = ARMode.NONE;\n      if (this.ar) {\n        if (this.src != null) {\n          for (const value of this[$arModes]) {\n            if (value === \"webxr\" && IS_WEBXR_AR_CANDIDATE && !isWebXRBlocked && await this[$renderer].arRenderer.supportsPresentation()) {\n              arMode = ARMode.WEBXR;\n              break;\n            }\n            if (value === \"scene-viewer\" && IS_SCENEVIEWER_CANDIDATE && !isSceneViewerBlocked) {\n              arMode = ARMode.SCENE_VIEWER;\n              break;\n            }\n            if (value === \"quick-look\" && IS_AR_QUICKLOOK_CANDIDATE) {\n              arMode = ARMode.QUICK_LOOK;\n              break;\n            }\n          }\n        }\n        if (arMode === ARMode.NONE && this.iosSrc != null && IS_AR_QUICKLOOK_CANDIDATE) {\n          arMode = ARMode.QUICK_LOOK;\n        }\n      }\n      if (arMode !== ARMode.NONE) {\n        this[$arButtonContainer].classList.add(\"enabled\");\n        this[$arButtonContainer].addEventListener(\"click\", this[$onARButtonContainerClick]);\n      } else if (this[$arButtonContainer].classList.contains(\"enabled\")) {\n        this[$arButtonContainer].removeEventListener(\"click\", this[$onARButtonContainerClick]);\n        this[$arButtonContainer].classList.remove(\"enabled\");\n        const status = ARStatus.FAILED;\n        this.setAttribute(\"ar-status\", status);\n        this.dispatchEvent(new CustomEvent(\"ar-status\", { detail: { status } }));\n      }\n      this[$arMode] = arMode;\n    }\n    async [$enterARWithWebXR]() {\n      console.log(\"Attempting to present in AR with WebXR...\");\n      await this[$triggerLoad]();\n      try {\n        this[$arButtonContainer].removeEventListener(\"click\", this[$onARButtonContainerClick]);\n        const { arRenderer } = this[$renderer];\n        arRenderer.placeOnWall = this.arPlacement === \"wall\";\n        await arRenderer.present(this[$scene], this.xrEnvironment);\n      } catch (error) {\n        console.warn(\"Error while trying to present in AR with WebXR\");\n        console.error(error);\n        await this[$renderer].arRenderer.stopPresenting();\n        isWebXRBlocked = true;\n        console.warn(\"Falling back to next ar-mode\");\n        await this[$selectARMode]();\n        this.activateAR();\n      } finally {\n        this[$selectARMode]();\n      }\n    }\n    async [$triggerLoad]() {\n      if (!this.loaded) {\n        this[$preload] = true;\n        this[$updateSource]();\n        await waitForEvent(this, \"load\");\n        this[$preload] = false;\n      }\n    }\n    [$shouldAttemptPreload]() {\n      return super[$shouldAttemptPreload]() || this[$preload];\n    }\n    /**\n     * Takes a URL and a title string, and attempts to launch Scene Viewer on\n     * the current device.\n     */\n    [$openSceneViewer]() {\n      const location = self.location.toString();\n      const locationUrl = new URL(location);\n      const modelUrl = new URL(this.src, location);\n      const params = new URLSearchParams(modelUrl.search);\n      locationUrl.hash = noArViewerSigil;\n      params.set(\"mode\", \"ar_preferred\");\n      if (!params.has(\"disable_occlusion\")) {\n        params.set(\"disable_occlusion\", \"true\");\n      }\n      if (this.arScale === \"fixed\") {\n        params.set(\"resizable\", \"false\");\n      }\n      if (this.arPlacement === \"wall\") {\n        params.set(\"enable_vertical_placement\", \"true\");\n      }\n      if (params.has(\"sound\")) {\n        const soundUrl = new URL(params.get(\"sound\"), location);\n        params.set(\"sound\", soundUrl.toString());\n      }\n      if (params.has(\"link\")) {\n        const linkUrl = new URL(params.get(\"link\"), location);\n        params.set(\"link\", linkUrl.toString());\n      }\n      const intent = `intent://arvr.google.com/scene-viewer/1.0?${params.toString() + \"&file=\" + encodeURIComponent(modelUrl.toString())}#Intent;scheme=https;package=com.google.ar.core;action=android.intent.action.VIEW;S.browser_fallback_url=${encodeURIComponent(locationUrl.toString())};end;`;\n      const undoHashChange = () => {\n        if (self.location.hash === noArViewerSigil) {\n          isSceneViewerBlocked = true;\n          self.history.back();\n          console.warn(\"Error while trying to present in AR with Scene Viewer\");\n          console.warn(\"Falling back to next ar-mode\");\n          this[$selectARMode]();\n        }\n      };\n      self.addEventListener(\"hashchange\", undoHashChange, { once: true });\n      this[$arAnchor].setAttribute(\"href\", intent);\n      console.log(\"Attempting to present in AR with Scene Viewer...\");\n      this[$arAnchor].click();\n    }\n    /**\n     * Takes a URL to a USDZ file and sets the appropriate fields so that\n     * Safari iOS can intent to their AR Quick Look.\n     */\n    async [$openIOSARQuickLook]() {\n      const generateUsdz = !this.iosSrc;\n      this[$arButtonContainer].classList.remove(\"enabled\");\n      const objectURL = generateUsdz ? await this.prepareUSDZ() : this.iosSrc;\n      const modelUrl = new URL(objectURL, self.location.toString());\n      if (generateUsdz) {\n        const location = self.location.toString();\n        const locationUrl = new URL(location);\n        const srcUrl = new URL(this.src, locationUrl);\n        if (srcUrl.hash) {\n          modelUrl.hash = srcUrl.hash;\n        }\n      }\n      if (this.arScale === \"fixed\") {\n        if (modelUrl.hash) {\n          modelUrl.hash += \"&\";\n        }\n        modelUrl.hash += \"allowsContentScaling=0\";\n      }\n      const anchor = this[$arAnchor];\n      anchor.setAttribute(\"rel\", \"ar\");\n      const img = document.createElement(\"img\");\n      anchor.appendChild(img);\n      anchor.setAttribute(\"href\", modelUrl.toString());\n      if (generateUsdz) {\n        anchor.setAttribute(\"download\", \"model.usdz\");\n      }\n      anchor.style.display = \"none\";\n      if (!anchor.isConnected)\n        this.shadowRoot.appendChild(anchor);\n      console.log(\"Attempting to present in AR with Quick Look...\");\n      anchor.click();\n      anchor.removeChild(img);\n      if (generateUsdz) {\n        URL.revokeObjectURL(objectURL);\n      }\n      this[$arButtonContainer].classList.add(\"enabled\");\n    }\n    async prepareUSDZ() {\n      const updateSourceProgress = this[$progressTracker].beginActivity();\n      await this[$triggerLoad]();\n      const { model, shadow } = this[$scene];\n      if (model == null) {\n        return \"\";\n      }\n      let visible = false;\n      if (shadow != null) {\n        visible = shadow.visible;\n        shadow.visible = false;\n      }\n      updateSourceProgress(0.2);\n      const exporter = new USDZExporter();\n      const arraybuffer = await exporter.parse(model);\n      const blob = new Blob([arraybuffer], {\n        type: \"model/vnd.usdz+zip\"\n      });\n      const url = URL.createObjectURL(blob);\n      updateSourceProgress(1);\n      if (shadow != null) {\n        shadow.visible = visible;\n      }\n      return url;\n    }\n  }\n  __decorate5([\n    property({ type: Boolean, attribute: \"ar\" })\n  ], ARModelViewerElement.prototype, \"ar\", void 0);\n  __decorate5([\n    property({ type: String, attribute: \"ar-scale\" })\n  ], ARModelViewerElement.prototype, \"arScale\", void 0);\n  __decorate5([\n    property({ type: String, attribute: \"ar-placement\" })\n  ], ARModelViewerElement.prototype, \"arPlacement\", void 0);\n  __decorate5([\n    property({ type: String, attribute: \"ar-modes\" })\n  ], ARModelViewerElement.prototype, \"arModes\", void 0);\n  __decorate5([\n    property({ type: String, attribute: \"ios-src\" })\n  ], ARModelViewerElement.prototype, \"iosSrc\", void 0);\n  __decorate5([\n    property({ type: Boolean, attribute: \"xr-environment\" })\n  ], ARModelViewerElement.prototype, \"xrEnvironment\", void 0);\n  return ARModelViewerElement;\n};\n\n// node_modules/@google/model-viewer/lib/styles/evaluators.js\nvar _a10;\nvar _b9;\nvar _c4;\nvar $evaluate = Symbol(\"evaluate\");\nvar $lastValue = Symbol(\"lastValue\");\nvar Evaluator = class _Evaluator {\n  constructor() {\n    this[_a10] = null;\n  }\n  /**\n   * An Evaluatable is a NumberNode or an Evaluator that evaluates a NumberNode\n   * as the result of invoking its evaluate method. This is mainly used to\n   * ensure that CSS function nodes are cast to the corresponding Evaluators\n   * that will resolve the result of the function, but is also used to ensure\n   * that a percentage nested at arbitrary depth in the expression will always\n   * be evaluated against the correct basis.\n   */\n  static evaluatableFor(node, basis = ZERO) {\n    if (node instanceof _Evaluator) {\n      return node;\n    }\n    if (node.type === \"number\") {\n      if (node.unit === \"%\") {\n        return new PercentageEvaluator(node, basis);\n      }\n      return node;\n    }\n    switch (node.name.value) {\n      case \"calc\":\n        return new CalcEvaluator(node, basis);\n      case \"env\":\n        return new EnvEvaluator(node);\n    }\n    return ZERO;\n  }\n  /**\n   * If the input is an Evaluator, returns the result of evaluating it.\n   * Otherwise, returns the input.\n   *\n   * This is a helper to aide in resolving a NumberNode without conditionally\n   * checking if the Evaluatable is an Evaluator everywhere.\n   */\n  static evaluate(evaluatable) {\n    if (evaluatable instanceof _Evaluator) {\n      return evaluatable.evaluate();\n    }\n    return evaluatable;\n  }\n  /**\n   * If the input is an Evaluator, returns the value of its isConstant property.\n   * Returns true for all other input values.\n   */\n  static isConstant(evaluatable) {\n    if (evaluatable instanceof _Evaluator) {\n      return evaluatable.isConstant;\n    }\n    return true;\n  }\n  /**\n   * This method applies a set of structured intrinsic metadata to an evaluated\n   * result from a parsed CSS-like string of expressions. Intrinsics provide\n   * sufficient metadata (e.g., basis values, analogs for keywords) such that\n   * omitted values in the input string can be backfilled, and keywords can be\n   * converted to concrete numbers.\n   *\n   * The result of applying intrinsics is a tuple of NumberNode values whose\n   * units match the units used by the basis of the intrinsics.\n   *\n   * The following is a high-level description of how intrinsics are applied:\n   *\n   *  1. Determine the value of 'auto' for the current term\n   *  2. If there is no corresponding input value for this term, substitute the\n   *     'auto' value.\n   *  3. If the term is an IdentNode, treat it as a keyword and perform the\n   *     appropriate substitution.\n   *  4. If the term is still null, fallback to the 'auto' value\n   *  5. If the term is a percentage, apply it to the basis and return that\n   *     value\n   *  6. Normalize the unit of the term\n   *  7. If the term's unit does not match the basis unit, return the basis\n   *     value\n   *  8. Return the term as is\n   */\n  static applyIntrinsics(evaluated, intrinsics) {\n    const { basis, keywords } = intrinsics;\n    const { auto } = keywords;\n    return basis.map((basisNode, index) => {\n      const autoSubstituteNode = auto[index] == null ? basisNode : auto[index];\n      let evaluatedNode = evaluated[index] ? evaluated[index] : autoSubstituteNode;\n      if (evaluatedNode.type === \"ident\") {\n        const keyword = evaluatedNode.value;\n        if (keyword in keywords) {\n          evaluatedNode = keywords[keyword][index];\n        }\n      }\n      if (evaluatedNode == null || evaluatedNode.type === \"ident\") {\n        evaluatedNode = autoSubstituteNode;\n      }\n      if (evaluatedNode.unit === \"%\") {\n        return numberNode(evaluatedNode.number / 100 * basisNode.number, basisNode.unit);\n      }\n      evaluatedNode = normalizeUnit(evaluatedNode, basisNode);\n      if (evaluatedNode.unit !== basisNode.unit) {\n        return basisNode;\n      }\n      return evaluatedNode;\n    });\n  }\n  /**\n   * If true, the Evaluator will only evaluate its AST one time. If false, the\n   * Evaluator will re-evaluate the AST each time that the public evaluate\n   * method is invoked.\n   */\n  get isConstant() {\n    return false;\n  }\n  /**\n   * Evaluate the Evaluator and return the result. If the Evaluator is constant,\n   * the corresponding AST will only be evaluated once, and the result of\n   * evaluating it the first time will be returned on all subsequent\n   * evaluations.\n   */\n  evaluate() {\n    if (!this.isConstant || this[$lastValue] == null) {\n      this[$lastValue] = this[$evaluate]();\n    }\n    return this[$lastValue];\n  }\n};\n_a10 = $lastValue;\nvar $percentage = Symbol(\"percentage\");\nvar $basis = Symbol(\"basis\");\nvar PercentageEvaluator = class extends Evaluator {\n  constructor(percentage, basis) {\n    super();\n    this[$percentage] = percentage;\n    this[$basis] = basis;\n  }\n  get isConstant() {\n    return true;\n  }\n  [$evaluate]() {\n    return numberNode(this[$percentage].number / 100 * this[$basis].number, this[$basis].unit);\n  }\n};\nvar $identNode = Symbol(\"identNode\");\nvar EnvEvaluator = class extends Evaluator {\n  constructor(envFunction) {\n    super();\n    this[_b9] = null;\n    const identNode = envFunction.arguments.length ? envFunction.arguments[0].terms[0] : null;\n    if (identNode != null && identNode.type === \"ident\") {\n      this[$identNode] = identNode;\n    }\n  }\n  get isConstant() {\n    return false;\n  }\n  [(_b9 = $identNode, $evaluate)]() {\n    if (this[$identNode] != null) {\n      switch (this[$identNode].value) {\n        case \"window-scroll-y\":\n          const verticalScrollPosition = window.pageYOffset;\n          const verticalScrollMax = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);\n          const scrollY = verticalScrollPosition / (verticalScrollMax - window.innerHeight) || 0;\n          return { type: \"number\", number: scrollY, unit: null };\n      }\n    }\n    return ZERO;\n  }\n};\nvar IS_MULTIPLICATION_RE = /[\\*\\/]/;\nvar $evaluator = Symbol(\"evaluator\");\nvar CalcEvaluator = class extends Evaluator {\n  constructor(calcFunction, basis = ZERO) {\n    super();\n    this[_c4] = null;\n    if (calcFunction.arguments.length !== 1) {\n      return;\n    }\n    const terms = calcFunction.arguments[0].terms.slice();\n    const secondOrderTerms = [];\n    while (terms.length) {\n      const term = terms.shift();\n      if (secondOrderTerms.length > 0) {\n        const previousTerm = secondOrderTerms[secondOrderTerms.length - 1];\n        if (previousTerm.type === \"operator\" && IS_MULTIPLICATION_RE.test(previousTerm.value)) {\n          const operator = secondOrderTerms.pop();\n          const leftValue = secondOrderTerms.pop();\n          if (leftValue == null) {\n            return;\n          }\n          secondOrderTerms.push(new OperatorEvaluator(operator, Evaluator.evaluatableFor(leftValue, basis), Evaluator.evaluatableFor(term, basis)));\n          continue;\n        }\n      }\n      secondOrderTerms.push(term.type === \"operator\" ? term : Evaluator.evaluatableFor(term, basis));\n    }\n    while (secondOrderTerms.length > 2) {\n      const [left, operator, right] = secondOrderTerms.splice(0, 3);\n      if (operator.type !== \"operator\") {\n        return;\n      }\n      secondOrderTerms.unshift(new OperatorEvaluator(operator, Evaluator.evaluatableFor(left, basis), Evaluator.evaluatableFor(right, basis)));\n    }\n    if (secondOrderTerms.length === 1) {\n      this[$evaluator] = secondOrderTerms[0];\n    }\n  }\n  get isConstant() {\n    return this[$evaluator] == null || Evaluator.isConstant(this[$evaluator]);\n  }\n  [(_c4 = $evaluator, $evaluate)]() {\n    return this[$evaluator] != null ? Evaluator.evaluate(this[$evaluator]) : ZERO;\n  }\n};\nvar $operator = Symbol(\"operator\");\nvar $left = Symbol(\"left\");\nvar $right = Symbol(\"right\");\nvar OperatorEvaluator = class extends Evaluator {\n  constructor(operator, left, right) {\n    super();\n    this[$operator] = operator;\n    this[$left] = left;\n    this[$right] = right;\n  }\n  get isConstant() {\n    return Evaluator.isConstant(this[$left]) && Evaluator.isConstant(this[$right]);\n  }\n  [$evaluate]() {\n    const leftNode = normalizeUnit(Evaluator.evaluate(this[$left]));\n    const rightNode = normalizeUnit(Evaluator.evaluate(this[$right]));\n    const { number: leftValue, unit: leftUnit } = leftNode;\n    const { number: rightValue, unit: rightUnit } = rightNode;\n    if (rightUnit != null && leftUnit != null && rightUnit != leftUnit) {\n      return ZERO;\n    }\n    const unit = leftUnit || rightUnit;\n    let value;\n    switch (this[$operator].value) {\n      case \"+\":\n        value = leftValue + rightValue;\n        break;\n      case \"-\":\n        value = leftValue - rightValue;\n        break;\n      case \"/\":\n        value = leftValue / rightValue;\n        break;\n      case \"*\":\n        value = leftValue * rightValue;\n        break;\n      default:\n        return ZERO;\n    }\n    return { type: \"number\", number: value, unit };\n  }\n};\nvar $evaluatables = Symbol(\"evaluatables\");\nvar $intrinsics = Symbol(\"intrinsics\");\nvar StyleEvaluator = class extends Evaluator {\n  constructor(expressions, intrinsics) {\n    super();\n    this[$intrinsics] = intrinsics;\n    const firstExpression = expressions[0];\n    const terms = firstExpression != null ? firstExpression.terms : [];\n    this[$evaluatables] = intrinsics.basis.map((basisNode, index) => {\n      const term = terms[index];\n      if (term == null) {\n        return { type: \"ident\", value: \"auto\" };\n      }\n      if (term.type === \"ident\") {\n        return term;\n      }\n      return Evaluator.evaluatableFor(term, basisNode);\n    });\n  }\n  get isConstant() {\n    for (const evaluatable of this[$evaluatables]) {\n      if (!Evaluator.isConstant(evaluatable)) {\n        return false;\n      }\n    }\n    return true;\n  }\n  [$evaluate]() {\n    const evaluated = this[$evaluatables].map((evaluatable) => Evaluator.evaluate(evaluatable));\n    return Evaluator.applyIntrinsics(evaluated, this[$intrinsics]).map((numberNode2) => numberNode2.number);\n  }\n};\n\n// node_modules/@google/model-viewer/lib/styles/style-effector.js\nvar _a11;\nvar _b10;\nvar _c5;\nvar _d4;\nvar $instances = Symbol(\"instances\");\nvar $activateListener = Symbol(\"activateListener\");\nvar $deactivateListener = Symbol(\"deactivateListener\");\nvar $notifyInstances = Symbol(\"notifyInstances\");\nvar $notify = Symbol(\"notify\");\nvar $scrollCallback = Symbol(\"callback\");\nvar ScrollObserver = class _ScrollObserver {\n  constructor(callback) {\n    this[$scrollCallback] = callback;\n  }\n  static [$notifyInstances]() {\n    for (const instance of _ScrollObserver[$instances]) {\n      instance[$notify]();\n    }\n  }\n  static [(_a11 = $instances, $activateListener)]() {\n    window.addEventListener(\"scroll\", this[$notifyInstances], { passive: true });\n  }\n  static [$deactivateListener]() {\n    window.removeEventListener(\"scroll\", this[$notifyInstances]);\n  }\n  /**\n   * Listen for scroll events. The configured callback (passed to the\n   * constructor) will be invoked for subsequent global scroll events.\n   */\n  observe() {\n    if (_ScrollObserver[$instances].size === 0) {\n      _ScrollObserver[$activateListener]();\n    }\n    _ScrollObserver[$instances].add(this);\n  }\n  /**\n   * Stop listening for scroll events.\n   */\n  disconnect() {\n    _ScrollObserver[$instances].delete(this);\n    if (_ScrollObserver[$instances].size === 0) {\n      _ScrollObserver[$deactivateListener]();\n    }\n  }\n  [$notify]() {\n    this[$scrollCallback]();\n  }\n};\nScrollObserver[_a11] = /* @__PURE__ */ new Set();\nvar $computeStyleCallback = Symbol(\"computeStyleCallback\");\nvar $astWalker = Symbol(\"astWalker\");\nvar $dependencies = Symbol(\"dependencies\");\nvar $onScroll = Symbol(\"onScroll\");\nvar StyleEffector = class {\n  constructor(callback) {\n    this[_b10] = {};\n    this[_c5] = new ASTWalker([\"function\"]);\n    this[_d4] = () => {\n      this[$computeStyleCallback]({ relatedState: \"window-scroll\" });\n    };\n    this[$computeStyleCallback] = callback;\n  }\n  /**\n   * Sets the expressions that govern when the StyleEffector callback will be\n   * invoked.\n   */\n  observeEffectsFor(ast) {\n    const newDependencies = {};\n    const oldDependencies = this[$dependencies];\n    this[$astWalker].walk(ast, (functionNode) => {\n      const { name } = functionNode;\n      const firstArgument = functionNode.arguments[0];\n      const firstTerm = firstArgument.terms[0];\n      if (name.value !== \"env\" || firstTerm == null || firstTerm.type !== \"ident\") {\n        return;\n      }\n      switch (firstTerm.value) {\n        case \"window-scroll-y\":\n          if (newDependencies[\"window-scroll\"] == null) {\n            const observer = \"window-scroll\" in oldDependencies ? oldDependencies[\"window-scroll\"] : new ScrollObserver(this[$onScroll]);\n            observer.observe();\n            delete oldDependencies[\"window-scroll\"];\n            newDependencies[\"window-scroll\"] = observer;\n          }\n          break;\n      }\n    });\n    for (const environmentState in oldDependencies) {\n      const observer = oldDependencies[environmentState];\n      observer.disconnect();\n    }\n    this[$dependencies] = newDependencies;\n  }\n  /**\n   * Disposes of the StyleEffector by disconnecting all observers of external\n   * effects.\n   */\n  dispose() {\n    for (const environmentState in this[$dependencies]) {\n      const observer = this[$dependencies][environmentState];\n      observer.disconnect();\n    }\n  }\n};\n_b10 = $dependencies, _c5 = $astWalker, _d4 = $onScroll;\n\n// node_modules/@google/model-viewer/lib/decorators.js\nvar style = (config) => {\n  const observeEffects = config.observeEffects || false;\n  const getIntrinsics = config.intrinsics instanceof Function ? config.intrinsics : () => config.intrinsics;\n  return (proto, propertyName) => {\n    const originalUpdated = proto.updated;\n    const originalConnectedCallback = proto.connectedCallback;\n    const originalDisconnectedCallback = proto.disconnectedCallback;\n    const $styleEffector = Symbol(`${propertyName}StyleEffector`);\n    const $styleEvaluator = Symbol(`${propertyName}StyleEvaluator`);\n    const $updateEvaluator = Symbol(`${propertyName}UpdateEvaluator`);\n    const $evaluateAndSync = Symbol(`${propertyName}EvaluateAndSync`);\n    Object.defineProperties(proto, {\n      [$styleEffector]: { value: null, writable: true },\n      [$styleEvaluator]: { value: null, writable: true },\n      [$updateEvaluator]: {\n        value: function() {\n          const ast = parseExpressions(this[propertyName]);\n          this[$styleEvaluator] = new StyleEvaluator(ast, getIntrinsics(this));\n          if (this[$styleEffector] == null && observeEffects) {\n            this[$styleEffector] = new StyleEffector(() => this[$evaluateAndSync]());\n          }\n          if (this[$styleEffector] != null) {\n            this[$styleEffector].observeEffectsFor(ast);\n          }\n        }\n      },\n      [$evaluateAndSync]: {\n        value: function() {\n          if (this[$styleEvaluator] == null) {\n            return;\n          }\n          const result = this[$styleEvaluator].evaluate();\n          this[config.updateHandler](result);\n        }\n      },\n      updated: {\n        value: function(changedProperties) {\n          if (changedProperties.has(propertyName)) {\n            this[$updateEvaluator]();\n            this[$evaluateAndSync]();\n          }\n          originalUpdated.call(this, changedProperties);\n        }\n      },\n      connectedCallback: {\n        value: function() {\n          originalConnectedCallback.call(this);\n          this.requestUpdate(propertyName, this[propertyName]);\n        }\n      },\n      disconnectedCallback: {\n        value: function() {\n          originalDisconnectedCallback.call(this);\n          if (this[$styleEffector] != null) {\n            this[$styleEffector].dispose();\n            this[$styleEffector] = null;\n          }\n        }\n      }\n    });\n  };\n};\n\n// node_modules/@google/model-viewer/lib/three-components/SmoothControls.js\nvar PAN_SENSITIVITY = 0.018;\nvar TAP_DISTANCE = 2;\nvar TAP_MS = 300;\nvar vector22 = new Vector2();\nvar vector33 = new Vector3();\nvar DEFAULT_OPTIONS = Object.freeze({\n  minimumRadius: 0,\n  maximumRadius: Infinity,\n  minimumPolarAngle: Math.PI / 8,\n  maximumPolarAngle: Math.PI - Math.PI / 8,\n  minimumAzimuthalAngle: -Infinity,\n  maximumAzimuthalAngle: Infinity,\n  minimumFieldOfView: 10,\n  maximumFieldOfView: 45,\n  touchAction: \"none\"\n});\nvar KEYBOARD_ORBIT_INCREMENT = Math.PI / 8;\nvar ZOOM_SENSITIVITY = 0.04;\nvar PAN_KEY_INCREMENT = 10;\nvar ChangeSource = {\n  USER_INTERACTION: \"user-interaction\",\n  NONE: \"none\",\n  AUTOMATIC: \"automatic\"\n};\nvar SmoothControls = class extends EventDispatcher {\n  constructor(camera2, element, scene) {\n    super();\n    this.camera = camera2;\n    this.element = element;\n    this.scene = scene;\n    this.orbitSensitivity = 1;\n    this.inputSensitivity = 1;\n    this.changeSource = ChangeSource.NONE;\n    this._interactionEnabled = false;\n    this._disableZoom = false;\n    this.isUserPointing = false;\n    this.enablePan = true;\n    this.enableTap = true;\n    this.panProjection = new Matrix3();\n    this.panPerPixel = 0;\n    this.spherical = new Spherical();\n    this.goalSpherical = new Spherical();\n    this.thetaDamper = new Damper();\n    this.phiDamper = new Damper();\n    this.radiusDamper = new Damper();\n    this.logFov = Math.log(DEFAULT_OPTIONS.maximumFieldOfView);\n    this.goalLogFov = this.logFov;\n    this.fovDamper = new Damper();\n    this.touchMode = null;\n    this.pointers = [];\n    this.startTime = 0;\n    this.startPointerPosition = { clientX: 0, clientY: 0 };\n    this.lastSeparation = 0;\n    this.touchDecided = false;\n    this.onContext = (event) => {\n      if (this.enablePan) {\n        event.preventDefault();\n      } else {\n        for (const pointer of this.pointers) {\n          this.onPointerUp(new PointerEvent(\"pointercancel\", Object.assign(Object.assign({}, this.startPointerPosition), { pointerId: pointer.id })));\n        }\n      }\n    };\n    this.touchModeZoom = (dx, dy) => {\n      if (!this._disableZoom) {\n        const touchDistance = this.twoTouchDistance(this.pointers[0], this.pointers[1]);\n        const deltaZoom = ZOOM_SENSITIVITY * (this.lastSeparation - touchDistance) * 50 / this.scene.height;\n        this.lastSeparation = touchDistance;\n        this.userAdjustOrbit(0, 0, deltaZoom);\n      }\n      if (this.panPerPixel > 0) {\n        this.movePan(dx, dy);\n      }\n    };\n    this.disableScroll = (event) => {\n      event.preventDefault();\n    };\n    this.touchModeRotate = (dx, dy) => {\n      const { touchAction } = this._options;\n      if (!this.touchDecided && touchAction !== \"none\") {\n        this.touchDecided = true;\n        const dxMag = Math.abs(dx);\n        const dyMag = Math.abs(dy);\n        if (this.changeSource === ChangeSource.USER_INTERACTION && (touchAction === \"pan-y\" && dyMag > dxMag || touchAction === \"pan-x\" && dxMag > dyMag)) {\n          this.touchMode = null;\n          return;\n        } else {\n          this.element.addEventListener(\"touchmove\", this.disableScroll, { passive: false });\n        }\n      }\n      this.handleSinglePointerMove(dx, dy);\n    };\n    this.onPointerDown = (event) => {\n      if (this.pointers.length > 2) {\n        return;\n      }\n      const { element: element2 } = this;\n      if (this.pointers.length === 0) {\n        element2.addEventListener(\"pointermove\", this.onPointerMove);\n        element2.addEventListener(\"pointerup\", this.onPointerUp);\n        this.touchMode = null;\n        this.touchDecided = false;\n        this.startPointerPosition.clientX = event.clientX;\n        this.startPointerPosition.clientY = event.clientY;\n        this.startTime = performance.now();\n      }\n      try {\n        element2.setPointerCapture(event.pointerId);\n      } catch (_a12) {\n      }\n      this.pointers.push({ clientX: event.clientX, clientY: event.clientY, id: event.pointerId });\n      this.isUserPointing = false;\n      if (event.pointerType === \"touch\") {\n        this.changeSource = event.altKey ? (\n          // set by interact() in controls.ts\n          ChangeSource.AUTOMATIC\n        ) : ChangeSource.USER_INTERACTION;\n        this.onTouchChange(event);\n      } else {\n        this.changeSource = ChangeSource.USER_INTERACTION;\n        this.onMouseDown(event);\n      }\n    };\n    this.onPointerMove = (event) => {\n      const pointer = this.pointers.find((pointer2) => pointer2.id === event.pointerId);\n      if (pointer == null) {\n        return;\n      }\n      const numTouches = this.pointers.length;\n      const dx = (event.clientX - pointer.clientX) / numTouches;\n      const dy = (event.clientY - pointer.clientY) / numTouches;\n      if (dx === 0 && dy === 0) {\n        return;\n      }\n      pointer.clientX = event.clientX;\n      pointer.clientY = event.clientY;\n      if (event.pointerType === \"touch\") {\n        this.changeSource = event.altKey ? (\n          // set by interact() in controls.ts\n          ChangeSource.AUTOMATIC\n        ) : ChangeSource.USER_INTERACTION;\n        if (this.touchMode !== null) {\n          this.touchMode(dx, dy);\n        }\n      } else {\n        this.changeSource = ChangeSource.USER_INTERACTION;\n        if (this.panPerPixel > 0) {\n          this.movePan(dx, dy);\n        } else {\n          this.handleSinglePointerMove(dx, dy);\n        }\n      }\n    };\n    this.onPointerUp = (event) => {\n      const { element: element2 } = this;\n      const index = this.pointers.findIndex((pointer) => pointer.id === event.pointerId);\n      if (index !== -1) {\n        this.pointers.splice(index, 1);\n      }\n      if (this.panPerPixel > 0 && !event.altKey) {\n        this.resetRadius();\n      }\n      if (this.pointers.length === 0) {\n        element2.removeEventListener(\"pointermove\", this.onPointerMove);\n        element2.removeEventListener(\"pointerup\", this.onPointerUp);\n        element2.removeEventListener(\"touchmove\", this.disableScroll);\n        if (this.enablePan && this.enableTap) {\n          this.recenter(event);\n        }\n      } else if (this.touchMode !== null) {\n        this.onTouchChange(event);\n      }\n      this.scene.element[$panElement].style.opacity = 0;\n      element2.style.cursor = \"grab\";\n      this.panPerPixel = 0;\n      if (this.isUserPointing) {\n        this.dispatchEvent({ type: \"pointer-change-end\" });\n      }\n    };\n    this.onWheel = (event) => {\n      this.changeSource = ChangeSource.USER_INTERACTION;\n      const deltaZoom = event.deltaY * (event.deltaMode == 1 ? 18 : 1) * ZOOM_SENSITIVITY / 30;\n      this.userAdjustOrbit(0, 0, deltaZoom);\n      event.preventDefault();\n    };\n    this.onKeyDown = (event) => {\n      const { changeSource } = this;\n      this.changeSource = ChangeSource.USER_INTERACTION;\n      const relevantKey = event.shiftKey && this.enablePan ? this.panKeyCodeHandler(event) : this.orbitZoomKeyCodeHandler(event);\n      if (relevantKey) {\n        event.preventDefault();\n      } else {\n        this.changeSource = changeSource;\n      }\n    };\n    this._options = Object.assign({}, DEFAULT_OPTIONS);\n    this.setOrbit(0, Math.PI / 2, 1);\n    this.setFieldOfView(100);\n    this.jumpToGoal();\n  }\n  get interactionEnabled() {\n    return this._interactionEnabled;\n  }\n  enableInteraction() {\n    if (this._interactionEnabled === false) {\n      const { element } = this;\n      element.addEventListener(\"pointerdown\", this.onPointerDown);\n      element.addEventListener(\"pointercancel\", this.onPointerUp);\n      if (!this._disableZoom) {\n        element.addEventListener(\"wheel\", this.onWheel);\n      }\n      element.addEventListener(\"keydown\", this.onKeyDown);\n      element.addEventListener(\"touchmove\", () => {\n      }, { passive: false });\n      element.addEventListener(\"contextmenu\", this.onContext);\n      this.element.style.cursor = \"grab\";\n      this._interactionEnabled = true;\n      this.updateTouchActionStyle();\n    }\n  }\n  disableInteraction() {\n    if (this._interactionEnabled === true) {\n      const { element } = this;\n      element.removeEventListener(\"pointerdown\", this.onPointerDown);\n      element.removeEventListener(\"pointermove\", this.onPointerMove);\n      element.removeEventListener(\"pointerup\", this.onPointerUp);\n      element.removeEventListener(\"pointercancel\", this.onPointerUp);\n      element.removeEventListener(\"wheel\", this.onWheel);\n      element.removeEventListener(\"keydown\", this.onKeyDown);\n      element.removeEventListener(\"contextmenu\", this.onContext);\n      element.style.cursor = \"\";\n      this.touchMode = null;\n      this._interactionEnabled = false;\n      this.updateTouchActionStyle();\n    }\n  }\n  /**\n   * The options that are currently configured for the controls instance.\n   */\n  get options() {\n    return this._options;\n  }\n  set disableZoom(disable) {\n    if (this._disableZoom != disable) {\n      this._disableZoom = disable;\n      if (disable === true) {\n        this.element.removeEventListener(\"wheel\", this.onWheel);\n      } else {\n        this.element.addEventListener(\"wheel\", this.onWheel);\n      }\n      this.updateTouchActionStyle();\n    }\n  }\n  /**\n   * Copy the spherical values that represent the current camera orbital\n   * position relative to the configured target into a provided Spherical\n   * instance. If no Spherical is provided, a new Spherical will be allocated\n   * to copy the values into. The Spherical that values are copied into is\n   * returned.\n   */\n  getCameraSpherical(target2 = new Spherical()) {\n    return target2.copy(this.spherical);\n  }\n  /**\n   * Returns the camera's current vertical field of view in degrees.\n   */\n  getFieldOfView() {\n    return this.camera.fov;\n  }\n  /**\n   * Configure the _options of the controls. Configured _options will be\n   * merged with whatever _options have already been configured for this\n   * controls instance.\n   */\n  applyOptions(_options) {\n    Object.assign(this._options, _options);\n    this.setOrbit();\n    this.setFieldOfView(Math.exp(this.goalLogFov));\n  }\n  /**\n   * Sets the near and far planes of the camera.\n   */\n  updateNearFar(nearPlane, farPlane) {\n    this.camera.near = Math.max(nearPlane, farPlane / 1e3);\n    this.camera.far = farPlane;\n    this.camera.updateProjectionMatrix();\n  }\n  /**\n   * Sets the aspect ratio of the camera\n   */\n  updateAspect(aspect2) {\n    this.camera.aspect = aspect2;\n    this.camera.updateProjectionMatrix();\n  }\n  /**\n   * Set the absolute orbital goal of the camera. The change will be\n   * applied over a number of frames depending on configured acceleration and\n   * dampening _options.\n   *\n   * Returns true if invoking the method will result in the camera changing\n   * position and/or rotation, otherwise false.\n   */\n  setOrbit(goalTheta = this.goalSpherical.theta, goalPhi = this.goalSpherical.phi, goalRadius = this.goalSpherical.radius) {\n    const { minimumAzimuthalAngle, maximumAzimuthalAngle, minimumPolarAngle, maximumPolarAngle, minimumRadius, maximumRadius } = this._options;\n    const { theta, phi, radius } = this.goalSpherical;\n    const nextTheta = clamp2(goalTheta, minimumAzimuthalAngle, maximumAzimuthalAngle);\n    if (!isFinite(minimumAzimuthalAngle) && !isFinite(maximumAzimuthalAngle)) {\n      this.spherical.theta = this.wrapAngle(this.spherical.theta - nextTheta) + nextTheta;\n    }\n    const nextPhi = clamp2(goalPhi, minimumPolarAngle, maximumPolarAngle);\n    const nextRadius = clamp2(goalRadius, minimumRadius, maximumRadius);\n    if (nextTheta === theta && nextPhi === phi && nextRadius === radius) {\n      return false;\n    }\n    this.goalSpherical.theta = nextTheta;\n    this.goalSpherical.phi = nextPhi;\n    this.goalSpherical.radius = nextRadius;\n    this.goalSpherical.makeSafe();\n    return true;\n  }\n  /**\n   * Subset of setOrbit() above, which only sets the camera's radius.\n   */\n  setRadius(radius) {\n    this.goalSpherical.radius = radius;\n    this.setOrbit();\n  }\n  /**\n   * Sets the goal field of view for the camera\n   */\n  setFieldOfView(fov2) {\n    const { minimumFieldOfView, maximumFieldOfView } = this._options;\n    fov2 = clamp2(fov2, minimumFieldOfView, maximumFieldOfView);\n    this.goalLogFov = Math.log(fov2);\n  }\n  /**\n   * Sets the smoothing decay time.\n   */\n  setDamperDecayTime(decayMilliseconds) {\n    this.thetaDamper.setDecayTime(decayMilliseconds);\n    this.phiDamper.setDecayTime(decayMilliseconds);\n    this.radiusDamper.setDecayTime(decayMilliseconds);\n    this.fovDamper.setDecayTime(decayMilliseconds);\n  }\n  /**\n   * Adjust the orbital position of the camera relative to its current orbital\n   * position. Does not let the theta goal get more than pi ahead of the current\n   * theta, which ensures interpolation continues in the direction of the delta.\n   * The deltaZoom parameter adjusts both the field of view and the orbit radius\n   * such that they progress across their allowed ranges in sync.\n   */\n  adjustOrbit(deltaTheta, deltaPhi, deltaZoom) {\n    const { theta, phi, radius } = this.goalSpherical;\n    const { minimumRadius, maximumRadius, minimumFieldOfView, maximumFieldOfView } = this._options;\n    const dTheta = this.spherical.theta - theta;\n    const dThetaLimit = Math.PI - 1e-3;\n    const goalTheta = theta - clamp2(deltaTheta, -dThetaLimit - dTheta, dThetaLimit - dTheta);\n    const goalPhi = phi - deltaPhi;\n    const deltaRatio = deltaZoom === 0 ? 0 : ((deltaZoom > 0 ? maximumRadius : minimumRadius) - radius) / (Math.log(deltaZoom > 0 ? maximumFieldOfView : minimumFieldOfView) - this.goalLogFov);\n    const goalRadius = radius + deltaZoom * (isFinite(deltaRatio) ? deltaRatio : (maximumRadius - minimumRadius) * 2);\n    this.setOrbit(goalTheta, goalPhi, goalRadius);\n    if (deltaZoom !== 0) {\n      const goalLogFov = this.goalLogFov + deltaZoom;\n      this.setFieldOfView(Math.exp(goalLogFov));\n    }\n  }\n  /**\n   * Move the camera instantly instead of accelerating toward the goal\n   * parameters.\n   */\n  jumpToGoal() {\n    this.update(0, SETTLING_TIME);\n  }\n  /**\n   * Update controls. In most cases, this will result in the camera\n   * interpolating its position and rotation until it lines up with the\n   * designated goal orbital position.\n   *\n   * Time and delta are measured in milliseconds.\n   */\n  update(_time, delta) {\n    if (this.isStationary()) {\n      return;\n    }\n    const { maximumPolarAngle, maximumRadius } = this._options;\n    const dTheta = this.spherical.theta - this.goalSpherical.theta;\n    if (Math.abs(dTheta) > Math.PI && !isFinite(this._options.minimumAzimuthalAngle) && !isFinite(this._options.maximumAzimuthalAngle)) {\n      this.spherical.theta -= Math.sign(dTheta) * 2 * Math.PI;\n    }\n    this.spherical.theta = this.thetaDamper.update(this.spherical.theta, this.goalSpherical.theta, delta, Math.PI);\n    this.spherical.phi = this.phiDamper.update(this.spherical.phi, this.goalSpherical.phi, delta, maximumPolarAngle);\n    this.spherical.radius = this.radiusDamper.update(this.spherical.radius, this.goalSpherical.radius, delta, maximumRadius);\n    this.logFov = this.fovDamper.update(this.logFov, this.goalLogFov, delta, 1);\n    this.moveCamera();\n  }\n  updateTouchActionStyle() {\n    const { style: style2 } = this.element;\n    if (this._interactionEnabled) {\n      const { touchAction } = this._options;\n      if (this._disableZoom && touchAction !== \"none\") {\n        style2.touchAction = \"manipulation\";\n      } else {\n        style2.touchAction = touchAction;\n      }\n    } else {\n      style2.touchAction = \"\";\n    }\n  }\n  isStationary() {\n    return this.goalSpherical.theta === this.spherical.theta && this.goalSpherical.phi === this.spherical.phi && this.goalSpherical.radius === this.spherical.radius && this.goalLogFov === this.logFov;\n  }\n  dispatchChange() {\n    this.dispatchEvent({ type: \"change\", source: this.changeSource });\n  }\n  moveCamera() {\n    this.spherical.makeSafe();\n    this.camera.position.setFromSpherical(this.spherical);\n    this.camera.setRotationFromEuler(new Euler(this.spherical.phi - Math.PI / 2, this.spherical.theta, 0, \"YXZ\"));\n    if (this.camera.fov !== Math.exp(this.logFov)) {\n      this.camera.fov = Math.exp(this.logFov);\n      this.camera.updateProjectionMatrix();\n    }\n    this.dispatchChange();\n  }\n  userAdjustOrbit(deltaTheta, deltaPhi, deltaZoom) {\n    this.adjustOrbit(deltaTheta * this.orbitSensitivity * this.inputSensitivity, deltaPhi * this.orbitSensitivity * this.inputSensitivity, deltaZoom * this.inputSensitivity);\n    this.dispatchChange();\n  }\n  // Wraps to between -pi and pi\n  wrapAngle(radians) {\n    const normalized = (radians + Math.PI) / (2 * Math.PI);\n    const wrapped = normalized - Math.floor(normalized);\n    return wrapped * 2 * Math.PI - Math.PI;\n  }\n  pixelLengthToSphericalAngle(pixelLength) {\n    return 2 * Math.PI * pixelLength / this.element.clientHeight;\n  }\n  twoTouchDistance(touchOne, touchTwo) {\n    const { clientX: xOne, clientY: yOne } = touchOne;\n    const { clientX: xTwo, clientY: yTwo } = touchTwo;\n    const xDelta = xTwo - xOne;\n    const yDelta = yTwo - yOne;\n    return Math.sqrt(xDelta * xDelta + yDelta * yDelta);\n  }\n  handleSinglePointerMove(dx, dy) {\n    const deltaTheta = this.pixelLengthToSphericalAngle(dx);\n    const deltaPhi = this.pixelLengthToSphericalAngle(dy);\n    if (this.isUserPointing === false) {\n      this.isUserPointing = true;\n      this.dispatchEvent({ type: \"pointer-change-start\" });\n    }\n    this.userAdjustOrbit(deltaTheta, deltaPhi, 0);\n  }\n  initializePan() {\n    const { theta, phi } = this.spherical;\n    const psi = theta - this.scene.yaw;\n    this.panPerPixel = PAN_SENSITIVITY / this.scene.height;\n    this.panProjection.set(-Math.cos(psi), -Math.cos(phi) * Math.sin(psi), 0, 0, Math.sin(phi), 0, Math.sin(psi), -Math.cos(phi) * Math.cos(psi), 0);\n  }\n  movePan(dx, dy) {\n    const { scene } = this;\n    const dxy = vector33.set(dx, dy, 0).multiplyScalar(this.inputSensitivity);\n    const metersPerPixel = this.spherical.radius * Math.exp(this.logFov) * this.panPerPixel;\n    dxy.multiplyScalar(metersPerPixel);\n    const target2 = scene.getTarget();\n    target2.add(dxy.applyMatrix3(this.panProjection));\n    scene.boundingSphere.clampPoint(target2, target2);\n    scene.setTarget(target2.x, target2.y, target2.z);\n    this.dispatchChange();\n  }\n  recenter(pointer) {\n    if (performance.now() > this.startTime + TAP_MS || Math.abs(pointer.clientX - this.startPointerPosition.clientX) > TAP_DISTANCE || Math.abs(pointer.clientY - this.startPointerPosition.clientY) > TAP_DISTANCE) {\n      return;\n    }\n    const { scene } = this;\n    const hit = scene.positionAndNormalFromPoint(scene.getNDC(pointer.clientX, pointer.clientY));\n    if (hit == null) {\n      const { cameraTarget } = scene.element;\n      scene.element.cameraTarget = \"\";\n      scene.element.cameraTarget = cameraTarget;\n      this.userAdjustOrbit(0, 0, 1);\n    } else {\n      scene.target.worldToLocal(hit.position);\n      scene.setTarget(hit.position.x, hit.position.y, hit.position.z);\n    }\n  }\n  resetRadius() {\n    const { scene } = this;\n    const hit = scene.positionAndNormalFromPoint(vector22.set(0, 0));\n    if (hit == null) {\n      return;\n    }\n    scene.target.worldToLocal(hit.position);\n    const goalTarget = scene.getTarget();\n    const { theta, phi } = this.spherical;\n    const psi = theta - scene.yaw;\n    const n2 = vector33.set(Math.sin(phi) * Math.sin(psi), Math.cos(phi), Math.sin(phi) * Math.cos(psi));\n    const dr = n2.dot(hit.position.sub(goalTarget));\n    goalTarget.add(n2.multiplyScalar(dr));\n    scene.setTarget(goalTarget.x, goalTarget.y, goalTarget.z);\n    this.setOrbit(void 0, void 0, this.goalSpherical.radius - dr);\n  }\n  onTouchChange(event) {\n    if (this.pointers.length === 1) {\n      this.touchMode = this.touchModeRotate;\n    } else {\n      if (this._disableZoom) {\n        this.touchMode = null;\n        this.element.removeEventListener(\"touchmove\", this.disableScroll);\n        return;\n      }\n      this.touchMode = this.touchDecided && this.touchMode === null ? null : this.touchModeZoom;\n      this.touchDecided = true;\n      this.element.addEventListener(\"touchmove\", this.disableScroll, { passive: false });\n      this.lastSeparation = this.twoTouchDistance(this.pointers[0], this.pointers[1]);\n      if (this.enablePan && this.touchMode != null) {\n        this.initializePan();\n        if (!event.altKey) {\n          this.scene.element[$panElement].style.opacity = 1;\n        }\n      }\n    }\n  }\n  onMouseDown(event) {\n    this.panPerPixel = 0;\n    if (this.enablePan && (event.button === 2 || event.ctrlKey || event.metaKey || event.shiftKey)) {\n      this.initializePan();\n      this.scene.element[$panElement].style.opacity = 1;\n    }\n    this.element.style.cursor = \"grabbing\";\n  }\n  /**\n   * Handles the orbit and Zoom key presses\n   * Uses constants for the increment.\n   * @param event The keyboard event for the .key value\n   * @returns boolean to indicate if the key event has been handled\n   */\n  orbitZoomKeyCodeHandler(event) {\n    let relevantKey = true;\n    switch (event.key) {\n      case \"PageUp\":\n        this.userAdjustOrbit(0, 0, ZOOM_SENSITIVITY);\n        break;\n      case \"PageDown\":\n        this.userAdjustOrbit(0, 0, -1 * ZOOM_SENSITIVITY);\n        break;\n      case \"ArrowUp\":\n        this.userAdjustOrbit(0, -KEYBOARD_ORBIT_INCREMENT, 0);\n        break;\n      case \"ArrowDown\":\n        this.userAdjustOrbit(0, KEYBOARD_ORBIT_INCREMENT, 0);\n        break;\n      case \"ArrowLeft\":\n        this.userAdjustOrbit(-KEYBOARD_ORBIT_INCREMENT, 0, 0);\n        break;\n      case \"ArrowRight\":\n        this.userAdjustOrbit(KEYBOARD_ORBIT_INCREMENT, 0, 0);\n        break;\n      default:\n        relevantKey = false;\n        break;\n    }\n    return relevantKey;\n  }\n  /**\n   * Handles the Pan key presses\n   * Uses constants for the increment.\n   * @param event The keyboard event for the .key value\n   * @returns boolean to indicate if the key event has been handled\n   */\n  panKeyCodeHandler(event) {\n    this.initializePan();\n    let relevantKey = true;\n    switch (event.key) {\n      case \"ArrowUp\":\n        this.movePan(0, -1 * PAN_KEY_INCREMENT);\n        break;\n      case \"ArrowDown\":\n        this.movePan(0, PAN_KEY_INCREMENT);\n        break;\n      case \"ArrowLeft\":\n        this.movePan(-1 * PAN_KEY_INCREMENT, 0);\n        break;\n      case \"ArrowRight\":\n        this.movePan(PAN_KEY_INCREMENT, 0);\n        break;\n      default:\n        relevantKey = false;\n        break;\n    }\n    return relevantKey;\n  }\n};\n\n// node_modules/@google/model-viewer/lib/utilities/animation.js\nvar easeInOutQuad = (t2) => t2 < 0.5 ? 2 * t2 * t2 : -1 + (4 - 2 * t2) * t2;\nvar interpolate = (start, end, ease = easeInOutQuad) => (time) => start + (end - start) * ease(time);\nvar sequence = (tracks, weights) => {\n  const cumulativeSum = (sum) => (value) => sum += value;\n  const times = weights.map(cumulativeSum(0));\n  return (time) => {\n    time = clamp2(time, 0, 1);\n    time *= times[times.length - 1];\n    const i = times.findIndex((val) => val >= time);\n    const start = i < 1 ? 0 : times[i - 1];\n    const end = times[i];\n    return tracks[i]((time - start) / (end - start));\n  };\n};\nvar timeline = (path) => {\n  const tracks = [];\n  const weights = [];\n  let lastValue = path.initialValue;\n  for (let i = 0; i < path.keyframes.length; ++i) {\n    const keyframe = path.keyframes[i];\n    const { value, frames } = keyframe;\n    const ease = keyframe.ease || easeInOutQuad;\n    const track = interpolate(lastValue, value, ease);\n    tracks.push(track);\n    weights.push(frames);\n    lastValue = value;\n  }\n  return sequence(tracks, weights);\n};\n\n// node_modules/@google/model-viewer/lib/features/controls.js\nvar __decorate6 = function(decorators, target2, key, desc) {\n  var c = arguments.length, r = c < 3 ? target2 : desc === null ? desc = Object.getOwnPropertyDescriptor(target2, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target2, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if (d = decorators[i])\n        r = (c < 3 ? d(r) : c > 3 ? d(target2, key, r) : d(target2, key)) || r;\n  return c > 3 && r && Object.defineProperty(target2, key, r), r;\n};\nvar PROMPT_ANIMATION_TIME = 5e3;\nvar wiggle = timeline({\n  initialValue: 0,\n  keyframes: [\n    { frames: 5, value: -1 },\n    { frames: 1, value: -1 },\n    { frames: 8, value: 1 },\n    { frames: 1, value: 1 },\n    { frames: 5, value: 0 },\n    { frames: 18, value: 0 }\n  ]\n});\nvar fade = timeline({\n  initialValue: 0,\n  keyframes: [\n    { frames: 1, value: 1 },\n    { frames: 5, value: 1 },\n    { frames: 1, value: 0 },\n    { frames: 6, value: 0 }\n  ]\n});\nvar DEFAULT_FOV_DEG = 30;\nvar DEFAULT_MIN_FOV_DEG = 12;\nvar DEFAULT_CAMERA_ORBIT = \"0deg 75deg 105%\";\nvar DEFAULT_CAMERA_TARGET = \"auto auto auto\";\nvar DEFAULT_FIELD_OF_VIEW = \"auto\";\nvar MINIMUM_RADIUS_RATIO = 2.2;\nvar AZIMUTHAL_QUADRANT_LABELS = [\"front\", \"right\", \"back\", \"left\"];\nvar POLAR_TRIENT_LABELS = [\"upper-\", \"\", \"lower-\"];\nvar DEFAULT_INTERACTION_PROMPT_THRESHOLD = 3e3;\nvar INTERACTION_PROMPT = \". Use mouse, touch or arrow keys to move.\";\nvar InteractionPromptStrategy = {\n  AUTO: \"auto\",\n  NONE: \"none\"\n};\nvar InteractionPromptStyle = {\n  BASIC: \"basic\",\n  WIGGLE: \"wiggle\"\n};\nvar TouchAction = {\n  PAN_Y: \"pan-y\",\n  PAN_X: \"pan-x\",\n  NONE: \"none\"\n};\nvar fieldOfViewIntrinsics = () => {\n  return {\n    basis: [degreesToRadians(numberNode(DEFAULT_FOV_DEG, \"deg\"))],\n    keywords: { auto: [null] }\n  };\n};\nvar minFieldOfViewIntrinsics = () => {\n  return {\n    basis: [degreesToRadians(numberNode(DEFAULT_MIN_FOV_DEG, \"deg\"))],\n    keywords: { auto: [null] }\n  };\n};\nvar cameraOrbitIntrinsics = (() => {\n  const defaultTerms = parseExpressions(DEFAULT_CAMERA_ORBIT)[0].terms;\n  const theta = normalizeUnit(defaultTerms[0]);\n  const phi = normalizeUnit(defaultTerms[1]);\n  return (element) => {\n    const radius = element[$scene].idealCameraDistance();\n    return {\n      basis: [theta, phi, numberNode(radius, \"m\")],\n      keywords: { auto: [null, null, numberNode(105, \"%\")] }\n    };\n  };\n})();\nvar minCameraOrbitIntrinsics = (element) => {\n  const radius = MINIMUM_RADIUS_RATIO * element[$scene].boundingSphere.radius;\n  return {\n    basis: [\n      numberNode(-Infinity, \"rad\"),\n      numberNode(Math.PI / 8, \"rad\"),\n      numberNode(radius, \"m\")\n    ],\n    keywords: { auto: [null, null, null] }\n  };\n};\nvar maxCameraOrbitIntrinsics = (element) => {\n  const orbitIntrinsics = cameraOrbitIntrinsics(element);\n  const evaluator = new StyleEvaluator([], orbitIntrinsics);\n  const defaultRadius = evaluator.evaluate()[2];\n  return {\n    basis: [\n      numberNode(Infinity, \"rad\"),\n      numberNode(Math.PI - Math.PI / 8, \"rad\"),\n      numberNode(defaultRadius, \"m\")\n    ],\n    keywords: { auto: [null, null, null] }\n  };\n};\nvar cameraTargetIntrinsics = (element) => {\n  const center = element[$scene].boundingBox.getCenter(new Vector3());\n  return {\n    basis: [\n      numberNode(center.x, \"m\"),\n      numberNode(center.y, \"m\"),\n      numberNode(center.z, \"m\")\n    ],\n    keywords: { auto: [null, null, null] }\n  };\n};\nvar HALF_PI = Math.PI / 2;\nvar THIRD_PI = Math.PI / 3;\nvar QUARTER_PI = HALF_PI / 2;\nvar TAU = 2 * Math.PI;\nvar $controls = Symbol(\"controls\");\nvar $panElement = Symbol(\"panElement\");\nvar $promptElement = Symbol(\"promptElement\");\nvar $promptAnimatedContainer = Symbol(\"promptAnimatedContainer\");\nvar $fingerAnimatedContainers = Symbol(\"fingerAnimatedContainers\");\nvar $deferInteractionPrompt = Symbol(\"deferInteractionPrompt\");\nvar $updateAria = Symbol(\"updateAria\");\nvar $updateCameraForRadius = Symbol(\"updateCameraForRadius\");\nvar $onChange = Symbol(\"onChange\");\nvar $onPointerChange = Symbol(\"onPointerChange\");\nvar $waitingToPromptUser = Symbol(\"waitingToPromptUser\");\nvar $userHasInteracted = Symbol(\"userHasInteracted\");\nvar $promptElementVisibleTime = Symbol(\"promptElementVisibleTime\");\nvar $lastPromptOffset = Symbol(\"lastPromptOffset\");\nvar $lastSpherical = Symbol(\"lastSpherical\");\nvar $jumpCamera = Symbol(\"jumpCamera\");\nvar $initialized = Symbol(\"initialized\");\nvar $maintainThetaPhi = Symbol(\"maintainThetaPhi\");\nvar $syncCameraOrbit = Symbol(\"syncCameraOrbit\");\nvar $syncFieldOfView = Symbol(\"syncFieldOfView\");\nvar $syncCameraTarget = Symbol(\"syncCameraTarget\");\nvar $syncMinCameraOrbit = Symbol(\"syncMinCameraOrbit\");\nvar $syncMaxCameraOrbit = Symbol(\"syncMaxCameraOrbit\");\nvar $syncMinFieldOfView = Symbol(\"syncMinFieldOfView\");\nvar $syncMaxFieldOfView = Symbol(\"syncMaxFieldOfView\");\nvar ControlsMixin = (ModelViewerElement2) => {\n  var _a12, _b11, _c6, _d5, _e4, _f4, _g2, _h2, _j2, _k2, _l2, _m2, _o2, _p, _q2;\n  class ControlsModelViewerElement extends ModelViewerElement2 {\n    constructor() {\n      super(...arguments);\n      this.cameraControls = false;\n      this.cameraOrbit = DEFAULT_CAMERA_ORBIT;\n      this.cameraTarget = DEFAULT_CAMERA_TARGET;\n      this.fieldOfView = DEFAULT_FIELD_OF_VIEW;\n      this.minCameraOrbit = \"auto\";\n      this.maxCameraOrbit = \"auto\";\n      this.minFieldOfView = \"auto\";\n      this.maxFieldOfView = \"auto\";\n      this.interactionPromptThreshold = DEFAULT_INTERACTION_PROMPT_THRESHOLD;\n      this.interactionPrompt = InteractionPromptStrategy.AUTO;\n      this.interactionPromptStyle = InteractionPromptStyle.WIGGLE;\n      this.orbitSensitivity = 1;\n      this.touchAction = TouchAction.NONE;\n      this.disableZoom = false;\n      this.disablePan = false;\n      this.disableTap = false;\n      this.interpolationDecay = DECAY_MILLISECONDS;\n      this[_a12] = this.shadowRoot.querySelector(\".interaction-prompt\");\n      this[_b11] = this.shadowRoot.querySelector(\"#prompt\");\n      this[_c6] = [\n        this.shadowRoot.querySelector(\"#finger0\"),\n        this.shadowRoot.querySelector(\"#finger1\")\n      ];\n      this[_d5] = this.shadowRoot.querySelector(\".pan-target\");\n      this[_e4] = 0;\n      this[_f4] = Infinity;\n      this[_g2] = false;\n      this[_h2] = false;\n      this[_j2] = new SmoothControls(this[$scene].camera, this[$userInputElement], this[$scene]);\n      this[_k2] = new Spherical();\n      this[_l2] = false;\n      this[_m2] = false;\n      this[_o2] = false;\n      this[_p] = ({ source }) => {\n        this[$updateAria]();\n        this[$needsRender]();\n        if (source === ChangeSource.USER_INTERACTION) {\n          this[$userHasInteracted] = true;\n          this[$deferInteractionPrompt]();\n        }\n        this.dispatchEvent(new CustomEvent(\"camera-change\", { detail: { source } }));\n      };\n      this[_q2] = (event) => {\n        if (event.type === \"pointer-change-start\") {\n          this[$container].classList.add(\"pointer-tumbling\");\n        } else {\n          this[$container].classList.remove(\"pointer-tumbling\");\n        }\n      };\n    }\n    get inputSensitivity() {\n      return this[$controls].inputSensitivity;\n    }\n    set inputSensitivity(value) {\n      this[$controls].inputSensitivity = value;\n    }\n    getCameraOrbit() {\n      const { theta, phi, radius } = this[$lastSpherical];\n      return {\n        theta,\n        phi,\n        radius,\n        toString() {\n          return `${this.theta}rad ${this.phi}rad ${this.radius}m`;\n        }\n      };\n    }\n    getCameraTarget() {\n      return toVector3D(this[$renderer].isPresenting ? this[$renderer].arRenderer.target : this[$scene].getTarget());\n    }\n    getFieldOfView() {\n      return this[$controls].getFieldOfView();\n    }\n    // Provided so user code does not have to parse these from attributes.\n    getMinimumFieldOfView() {\n      return this[$controls].options.minimumFieldOfView;\n    }\n    getMaximumFieldOfView() {\n      return this[$controls].options.maximumFieldOfView;\n    }\n    getIdealAspect() {\n      return this[$scene].idealAspect;\n    }\n    jumpCameraToGoal() {\n      this[$jumpCamera] = true;\n      this.requestUpdate($jumpCamera, false);\n    }\n    resetInteractionPrompt() {\n      this[$lastPromptOffset] = 0;\n      this[$promptElementVisibleTime] = Infinity;\n      this[$userHasInteracted] = false;\n      this[$waitingToPromptUser] = this.interactionPrompt === InteractionPromptStrategy.AUTO && this.cameraControls;\n    }\n    zoom(keyPresses) {\n      const event = new WheelEvent(\"wheel\", { deltaY: -30 * keyPresses });\n      this[$userInputElement].dispatchEvent(event);\n    }\n    connectedCallback() {\n      super.connectedCallback();\n      this[$controls].addEventListener(\"change\", this[$onChange]);\n      this[$controls].addEventListener(\"pointer-change-start\", this[$onPointerChange]);\n      this[$controls].addEventListener(\"pointer-change-end\", this[$onPointerChange]);\n    }\n    disconnectedCallback() {\n      super.disconnectedCallback();\n      this[$controls].removeEventListener(\"change\", this[$onChange]);\n      this[$controls].removeEventListener(\"pointer-change-start\", this[$onPointerChange]);\n      this[$controls].removeEventListener(\"pointer-change-end\", this[$onPointerChange]);\n    }\n    updated(changedProperties) {\n      super.updated(changedProperties);\n      const controls = this[$controls];\n      const scene = this[$scene];\n      if (changedProperties.has(\"cameraControls\")) {\n        if (this.cameraControls) {\n          controls.enableInteraction();\n          if (this.interactionPrompt === InteractionPromptStrategy.AUTO) {\n            this[$waitingToPromptUser] = true;\n          }\n        } else {\n          controls.disableInteraction();\n          this[$deferInteractionPrompt]();\n        }\n        this[$userInputElement].setAttribute(\"aria-label\", this[$ariaLabel]);\n      }\n      if (changedProperties.has(\"disableZoom\")) {\n        controls.disableZoom = this.disableZoom;\n      }\n      if (changedProperties.has(\"disablePan\")) {\n        controls.enablePan = !this.disablePan;\n      }\n      if (changedProperties.has(\"disableTap\")) {\n        controls.enableTap = !this.disableTap;\n      }\n      if (changedProperties.has(\"interactionPrompt\") || changedProperties.has(\"cameraControls\") || changedProperties.has(\"src\")) {\n        if (this.interactionPrompt === InteractionPromptStrategy.AUTO && this.cameraControls && !this[$userHasInteracted]) {\n          this[$waitingToPromptUser] = true;\n        } else {\n          this[$deferInteractionPrompt]();\n        }\n      }\n      if (changedProperties.has(\"interactionPromptStyle\")) {\n        this[$promptAnimatedContainer].style.opacity = this.interactionPromptStyle == InteractionPromptStyle.BASIC ? \"1\" : \"0\";\n      }\n      if (changedProperties.has(\"touchAction\")) {\n        const touchAction = this.touchAction;\n        controls.applyOptions({ touchAction });\n        controls.updateTouchActionStyle();\n      }\n      if (changedProperties.has(\"orbitSensitivity\")) {\n        controls.orbitSensitivity = this.orbitSensitivity;\n      }\n      if (changedProperties.has(\"interpolationDecay\")) {\n        controls.setDamperDecayTime(this.interpolationDecay);\n        scene.setTargetDamperDecayTime(this.interpolationDecay);\n      }\n      if (this[$jumpCamera] === true) {\n        Promise.resolve().then(() => {\n          controls.jumpToGoal();\n          scene.jumpToGoal();\n          this[$jumpCamera] = false;\n        });\n      }\n    }\n    async updateFraming() {\n      const scene = this[$scene];\n      const oldFramedFoV = scene.adjustedFoV(scene.framedFoVDeg);\n      await scene.updateFraming();\n      const newFramedFoV = scene.adjustedFoV(scene.framedFoVDeg);\n      const zoom = this[$controls].getFieldOfView() / oldFramedFoV;\n      this[$controls].setFieldOfView(newFramedFoV * zoom);\n      this[$maintainThetaPhi] = true;\n      this.requestUpdate(\"maxFieldOfView\");\n      this.requestUpdate(\"fieldOfView\");\n      this.requestUpdate(\"minCameraOrbit\");\n      this.requestUpdate(\"maxCameraOrbit\");\n      this.requestUpdate(\"cameraOrbit\");\n      await this.updateComplete;\n    }\n    interact(duration, finger0, finger1) {\n      const inputElement = this[$userInputElement];\n      const fingerElements = this[$fingerAnimatedContainers];\n      if (fingerElements[0].style.opacity === \"1\") {\n        console.warn(\"interact() failed because an existing interaction is running.\");\n        return;\n      }\n      const xy = new Array();\n      xy.push({ x: timeline(finger0.x), y: timeline(finger0.y) });\n      const positions = [{ x: xy[0].x(0), y: xy[0].y(0) }];\n      if (finger1 != null) {\n        xy.push({ x: timeline(finger1.x), y: timeline(finger1.y) });\n        positions.push({ x: xy[1].x(0), y: xy[1].y(0) });\n      }\n      let startTime = performance.now();\n      const { width, height } = this[$scene];\n      const dispatchTouches = (type) => {\n        for (const [i, position] of positions.entries()) {\n          const { style: style2 } = fingerElements[i];\n          style2.transform = `translateX(${width * position.x}px) translateY(${height * position.y}px)`;\n          if (type === \"pointerdown\") {\n            style2.opacity = \"1\";\n          } else if (type === \"pointerup\") {\n            style2.opacity = \"0\";\n          }\n          const init = {\n            pointerId: i - 5678,\n            pointerType: \"touch\",\n            target: inputElement,\n            clientX: width * position.x,\n            clientY: height * position.y,\n            altKey: true\n            // flag that this is not a user interaction\n          };\n          inputElement.dispatchEvent(new PointerEvent(type, init));\n        }\n      };\n      const moveTouches = () => {\n        const { changeSource } = this[$controls];\n        if (changeSource !== ChangeSource.AUTOMATIC || !inputElement.isConnected) {\n          for (const fingerElement of this[$fingerAnimatedContainers]) {\n            fingerElement.style.opacity = \"0\";\n          }\n          dispatchTouches(\"pointercancel\");\n          this.dispatchEvent(new CustomEvent(\"interact-stopped\", { detail: { source: changeSource } }));\n          document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n          return;\n        }\n        const time = Math.min(1, (performance.now() - startTime) / duration);\n        for (const [i, position] of positions.entries()) {\n          position.x = xy[i].x(time);\n          position.y = xy[i].y(time);\n        }\n        dispatchTouches(\"pointermove\");\n        if (time < 1) {\n          requestAnimationFrame(moveTouches);\n        } else {\n          dispatchTouches(\"pointerup\");\n          this.dispatchEvent(new CustomEvent(\"interact-stopped\", { detail: { source: changeSource } }));\n          document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n        }\n      };\n      const onVisibilityChange = () => {\n        let elapsed = 0;\n        if (document.visibilityState === \"hidden\") {\n          elapsed = performance.now() - startTime;\n        } else {\n          startTime = performance.now() - elapsed;\n        }\n      };\n      document.addEventListener(\"visibilitychange\", onVisibilityChange);\n      dispatchTouches(\"pointerdown\");\n      requestAnimationFrame(moveTouches);\n    }\n    [(_a12 = $promptElement, _b11 = $promptAnimatedContainer, _c6 = $fingerAnimatedContainers, _d5 = $panElement, _e4 = $lastPromptOffset, _f4 = $promptElementVisibleTime, _g2 = $userHasInteracted, _h2 = $waitingToPromptUser, _j2 = $controls, _k2 = $lastSpherical, _l2 = $jumpCamera, _m2 = $initialized, _o2 = $maintainThetaPhi, $syncFieldOfView)](style2) {\n      const scene = this[$scene];\n      scene.framedFoVDeg = style2[0] * 180 / Math.PI;\n      this[$controls].setFieldOfView(scene.adjustedFoV(scene.framedFoVDeg));\n    }\n    [$syncCameraOrbit](style2) {\n      const controls = this[$controls];\n      if (this[$maintainThetaPhi]) {\n        const { theta, phi } = this.getCameraOrbit();\n        style2[0] = theta;\n        style2[1] = phi;\n        this[$maintainThetaPhi] = false;\n      }\n      controls.changeSource = ChangeSource.NONE;\n      controls.setOrbit(style2[0], style2[1], style2[2]);\n    }\n    [$syncMinCameraOrbit](style2) {\n      this[$controls].applyOptions({\n        minimumAzimuthalAngle: style2[0],\n        minimumPolarAngle: style2[1],\n        minimumRadius: style2[2]\n      });\n      this.jumpCameraToGoal();\n    }\n    [$syncMaxCameraOrbit](style2) {\n      this[$controls].applyOptions({\n        maximumAzimuthalAngle: style2[0],\n        maximumPolarAngle: style2[1],\n        maximumRadius: style2[2]\n      });\n      this[$updateCameraForRadius](style2[2]);\n      this.jumpCameraToGoal();\n    }\n    [$syncMinFieldOfView](style2) {\n      this[$controls].applyOptions({ minimumFieldOfView: style2[0] * 180 / Math.PI });\n      this.jumpCameraToGoal();\n    }\n    [$syncMaxFieldOfView](style2) {\n      const fov2 = this[$scene].adjustedFoV(style2[0] * 180 / Math.PI);\n      this[$controls].applyOptions({ maximumFieldOfView: fov2 });\n      this.jumpCameraToGoal();\n    }\n    [$syncCameraTarget](style2) {\n      const [x2, y, z] = style2;\n      if (!this[$renderer].arRenderer.isPresenting) {\n        this[$scene].setTarget(x2, y, z);\n      }\n      this[$controls].changeSource = ChangeSource.NONE;\n      this[$renderer].arRenderer.updateTarget();\n    }\n    [$tick](time, delta) {\n      super[$tick](time, delta);\n      if (this[$renderer].isPresenting || !this[$getModelIsVisible]()) {\n        return;\n      }\n      const controls = this[$controls];\n      const scene = this[$scene];\n      const now = performance.now();\n      if (this[$waitingToPromptUser]) {\n        if (this.loaded && now > this[$loadedTime] + this.interactionPromptThreshold) {\n          this[$waitingToPromptUser] = false;\n          this[$promptElementVisibleTime] = now;\n          this[$promptElement].classList.add(\"visible\");\n        }\n      }\n      if (isFinite(this[$promptElementVisibleTime]) && this.interactionPromptStyle === InteractionPromptStyle.WIGGLE) {\n        const animationTime = (now - this[$promptElementVisibleTime]) / PROMPT_ANIMATION_TIME % 1;\n        const offset = wiggle(animationTime);\n        const opacity = fade(animationTime);\n        this[$promptAnimatedContainer].style.opacity = `${opacity}`;\n        if (offset !== this[$lastPromptOffset]) {\n          const xOffset = offset * scene.width * 0.05;\n          const deltaTheta = (offset - this[$lastPromptOffset]) * Math.PI / 16;\n          this[$promptAnimatedContainer].style.transform = `translateX(${xOffset}px)`;\n          controls.changeSource = ChangeSource.AUTOMATIC;\n          controls.adjustOrbit(deltaTheta, 0, 0);\n          this[$lastPromptOffset] = offset;\n        }\n      }\n      controls.update(time, delta);\n      if (scene.updateTarget(delta)) {\n        this[$onChange]({ type: \"change\", source: controls.changeSource });\n      }\n    }\n    [$deferInteractionPrompt]() {\n      this[$waitingToPromptUser] = false;\n      this[$promptElement].classList.remove(\"visible\");\n      this[$promptElementVisibleTime] = Infinity;\n    }\n    /**\n     * Updates the camera's near and far planes to enclose the scene when\n     * orbiting at the supplied radius.\n     */\n    [$updateCameraForRadius](radius) {\n      const maximumRadius = Math.max(this[$scene].boundingSphere.radius, radius);\n      const near = 0;\n      const far = 2 * maximumRadius;\n      this[$controls].updateNearFar(near, far);\n    }\n    [$updateAria]() {\n      const { theta, phi } = this[$controls].getCameraSpherical(this[$lastSpherical]);\n      const azimuthalQuadrant = (4 + Math.floor((theta % TAU + QUARTER_PI) / HALF_PI)) % 4;\n      const polarTrient = Math.floor(phi / THIRD_PI);\n      const azimuthalQuadrantLabel = AZIMUTHAL_QUADRANT_LABELS[azimuthalQuadrant];\n      const polarTrientLabel = POLAR_TRIENT_LABELS[polarTrient];\n      this[$updateStatus](`View from stage ${polarTrientLabel}${azimuthalQuadrantLabel}`);\n    }\n    get [$ariaLabel]() {\n      return super[$ariaLabel] + (this.cameraControls ? INTERACTION_PROMPT : \"\");\n    }\n    async [$onResize](event) {\n      const controls = this[$controls];\n      const scene = this[$scene];\n      const oldFramedFoV = scene.adjustedFoV(scene.framedFoVDeg);\n      super[$onResize](event);\n      const fovRatio = scene.adjustedFoV(scene.framedFoVDeg) / oldFramedFoV;\n      const fov2 = controls.getFieldOfView() * (isFinite(fovRatio) ? fovRatio : 1);\n      controls.updateAspect(this[$scene].aspect);\n      this.requestUpdate(\"maxFieldOfView\", this.maxFieldOfView);\n      await this.updateComplete;\n      this[$controls].setFieldOfView(fov2);\n      this.jumpCameraToGoal();\n    }\n    [$onModelLoad]() {\n      super[$onModelLoad]();\n      if (this[$initialized]) {\n        this[$maintainThetaPhi] = true;\n      } else {\n        this[$initialized] = true;\n      }\n      this.requestUpdate(\"maxFieldOfView\", this.maxFieldOfView);\n      this.requestUpdate(\"fieldOfView\", this.fieldOfView);\n      this.requestUpdate(\"minCameraOrbit\", this.minCameraOrbit);\n      this.requestUpdate(\"maxCameraOrbit\", this.maxCameraOrbit);\n      this.requestUpdate(\"cameraOrbit\", this.cameraOrbit);\n      this.requestUpdate(\"cameraTarget\", this.cameraTarget);\n      this.jumpCameraToGoal();\n    }\n  }\n  _p = $onChange, _q2 = $onPointerChange;\n  __decorate6([\n    property({ type: Boolean, attribute: \"camera-controls\" })\n  ], ControlsModelViewerElement.prototype, \"cameraControls\", void 0);\n  __decorate6([\n    style({\n      intrinsics: cameraOrbitIntrinsics,\n      observeEffects: true,\n      updateHandler: $syncCameraOrbit\n    }),\n    property({ type: String, attribute: \"camera-orbit\", hasChanged: () => true })\n  ], ControlsModelViewerElement.prototype, \"cameraOrbit\", void 0);\n  __decorate6([\n    style({\n      intrinsics: cameraTargetIntrinsics,\n      observeEffects: true,\n      updateHandler: $syncCameraTarget\n    }),\n    property({ type: String, attribute: \"camera-target\", hasChanged: () => true })\n  ], ControlsModelViewerElement.prototype, \"cameraTarget\", void 0);\n  __decorate6([\n    style({\n      intrinsics: fieldOfViewIntrinsics,\n      observeEffects: true,\n      updateHandler: $syncFieldOfView\n    }),\n    property({ type: String, attribute: \"field-of-view\", hasChanged: () => true })\n  ], ControlsModelViewerElement.prototype, \"fieldOfView\", void 0);\n  __decorate6([\n    style({\n      intrinsics: minCameraOrbitIntrinsics,\n      updateHandler: $syncMinCameraOrbit\n    }),\n    property({ type: String, attribute: \"min-camera-orbit\", hasChanged: () => true })\n  ], ControlsModelViewerElement.prototype, \"minCameraOrbit\", void 0);\n  __decorate6([\n    style({\n      intrinsics: maxCameraOrbitIntrinsics,\n      updateHandler: $syncMaxCameraOrbit\n    }),\n    property({ type: String, attribute: \"max-camera-orbit\", hasChanged: () => true })\n  ], ControlsModelViewerElement.prototype, \"maxCameraOrbit\", void 0);\n  __decorate6([\n    style({\n      intrinsics: minFieldOfViewIntrinsics,\n      updateHandler: $syncMinFieldOfView\n    }),\n    property({ type: String, attribute: \"min-field-of-view\", hasChanged: () => true })\n  ], ControlsModelViewerElement.prototype, \"minFieldOfView\", void 0);\n  __decorate6([\n    style({ intrinsics: fieldOfViewIntrinsics, updateHandler: $syncMaxFieldOfView }),\n    property({ type: String, attribute: \"max-field-of-view\", hasChanged: () => true })\n  ], ControlsModelViewerElement.prototype, \"maxFieldOfView\", void 0);\n  __decorate6([\n    property({ type: Number, attribute: \"interaction-prompt-threshold\" })\n  ], ControlsModelViewerElement.prototype, \"interactionPromptThreshold\", void 0);\n  __decorate6([\n    property({ type: String, attribute: \"interaction-prompt\" })\n  ], ControlsModelViewerElement.prototype, \"interactionPrompt\", void 0);\n  __decorate6([\n    property({ type: String, attribute: \"interaction-prompt-style\" })\n  ], ControlsModelViewerElement.prototype, \"interactionPromptStyle\", void 0);\n  __decorate6([\n    property({ type: Number, attribute: \"orbit-sensitivity\" })\n  ], ControlsModelViewerElement.prototype, \"orbitSensitivity\", void 0);\n  __decorate6([\n    property({ type: String, attribute: \"touch-action\" })\n  ], ControlsModelViewerElement.prototype, \"touchAction\", void 0);\n  __decorate6([\n    property({ type: Boolean, attribute: \"disable-zoom\" })\n  ], ControlsModelViewerElement.prototype, \"disableZoom\", void 0);\n  __decorate6([\n    property({ type: Boolean, attribute: \"disable-pan\" })\n  ], ControlsModelViewerElement.prototype, \"disablePan\", void 0);\n  __decorate6([\n    property({ type: Boolean, attribute: \"disable-tap\" })\n  ], ControlsModelViewerElement.prototype, \"disableTap\", void 0);\n  __decorate6([\n    property({ type: Number, attribute: \"interpolation-decay\" })\n  ], ControlsModelViewerElement.prototype, \"interpolationDecay\", void 0);\n  return ControlsModelViewerElement;\n};\n\n// node_modules/@google/model-viewer/lib/features/loading.js\nvar __decorate7 = function(decorators, target2, key, desc) {\n  var c = arguments.length, r = c < 3 ? target2 : desc === null ? desc = Object.getOwnPropertyDescriptor(target2, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target2, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if (d = decorators[i])\n        r = (c < 3 ? d(r) : c > 3 ? d(target2, key, r) : d(target2, key)) || r;\n  return c > 3 && r && Object.defineProperty(target2, key, r), r;\n};\nvar PROGRESS_BAR_UPDATE_THRESHOLD = 100;\nvar DEFAULT_DRACO_DECODER_LOCATION = \"https://www.gstatic.com/draco/versioned/decoders/1.4.1/\";\nvar DEFAULT_KTX2_TRANSCODER_LOCATION = \"https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/\";\nvar RevealStrategy = {\n  AUTO: \"auto\",\n  MANUAL: \"manual\"\n};\nvar LoadingStrategy = {\n  AUTO: \"auto\",\n  LAZY: \"lazy\",\n  EAGER: \"eager\"\n};\nvar $defaultProgressBarElement = Symbol(\"defaultProgressBarElement\");\nvar $posterContainerElement = Symbol(\"posterContainerElement\");\nvar $defaultPosterElement = Symbol(\"defaultPosterElement\");\nvar $shouldDismissPoster = Symbol(\"shouldDismissPoster\");\nvar $hidePoster = Symbol(\"hidePoster\");\nvar $modelIsRevealed = Symbol(\"modelIsRevealed\");\nvar $updateProgressBar = Symbol(\"updateProgressBar\");\nvar $ariaLabelCallToAction = Symbol(\"ariaLabelCallToAction\");\nvar $onProgress = Symbol(\"onProgress\");\nvar LoadingMixin = (ModelViewerElement2) => {\n  var _a12, _b11, _c6, _d5, _e4, _f4, _g2, _h2;\n  class LoadingModelViewerElement extends ModelViewerElement2 {\n    constructor(...args) {\n      super(...args);\n      this.poster = null;\n      this.reveal = RevealStrategy.AUTO;\n      this.loading = LoadingStrategy.AUTO;\n      this[_a12] = false;\n      this[_b11] = false;\n      this[_c6] = this.shadowRoot.querySelector(\".slot.poster\");\n      this[_d5] = this.shadowRoot.querySelector(\"#default-poster\");\n      this[_e4] = this.shadowRoot.querySelector(\"#default-progress-bar > .bar\");\n      this[_f4] = this[$defaultPosterElement].getAttribute(\"aria-label\");\n      this[_g2] = throttle((progress) => {\n        const parentNode = this[$defaultProgressBarElement].parentNode;\n        requestAnimationFrame(() => {\n          this[$defaultProgressBarElement].style.transform = `scaleX(${progress})`;\n          if (progress === 0) {\n            parentNode.removeChild(this[$defaultProgressBarElement]);\n            parentNode.appendChild(this[$defaultProgressBarElement]);\n          }\n          if (progress === 1) {\n            this[$defaultProgressBarElement].classList.add(\"hide\");\n          } else {\n            this[$defaultProgressBarElement].classList.remove(\"hide\");\n          }\n        });\n      }, PROGRESS_BAR_UPDATE_THRESHOLD);\n      this[_h2] = (event) => {\n        const progress = event.detail.totalProgress;\n        if (progress === 1) {\n          this[$updateProgressBar].flush();\n          if (this.loaded && (this[$shouldDismissPoster] || this.reveal === RevealStrategy.AUTO)) {\n            this[$hidePoster]();\n          }\n        }\n        this[$updateProgressBar](progress);\n        this.dispatchEvent(new CustomEvent(\"progress\", { detail: { totalProgress: progress } }));\n      };\n      const ModelViewerElement3 = self.ModelViewerElement || {};\n      const dracoDecoderLocation2 = ModelViewerElement3.dracoDecoderLocation || DEFAULT_DRACO_DECODER_LOCATION;\n      CachingGLTFLoader.setDRACODecoderLocation(dracoDecoderLocation2);\n      const ktx2TranscoderLocation2 = ModelViewerElement3.ktx2TranscoderLocation || DEFAULT_KTX2_TRANSCODER_LOCATION;\n      CachingGLTFLoader.setKTX2TranscoderLocation(ktx2TranscoderLocation2);\n      if (ModelViewerElement3.meshoptDecoderLocation) {\n        CachingGLTFLoader.setMeshoptDecoderLocation(ModelViewerElement3.meshoptDecoderLocation);\n      }\n    }\n    static set dracoDecoderLocation(value) {\n      CachingGLTFLoader.setDRACODecoderLocation(value);\n    }\n    static get dracoDecoderLocation() {\n      return CachingGLTFLoader.getDRACODecoderLocation();\n    }\n    static set ktx2TranscoderLocation(value) {\n      CachingGLTFLoader.setKTX2TranscoderLocation(value);\n    }\n    static get ktx2TranscoderLocation() {\n      return CachingGLTFLoader.getKTX2TranscoderLocation();\n    }\n    static set meshoptDecoderLocation(value) {\n      CachingGLTFLoader.setMeshoptDecoderLocation(value);\n    }\n    static get meshoptDecoderLocation() {\n      return CachingGLTFLoader.getMeshoptDecoderLocation();\n    }\n    /**\n     * If provided, the callback will be passed each resource URL before a\n     * request is sent. The callback may return the original URL, or a new URL\n     * to override loading behavior. This behavior can be used to load assets\n     * from .ZIP files, drag-and-drop APIs, and Data URIs.\n     */\n    static mapURLs(callback) {\n      Renderer.singleton.loader[$loader].manager.setURLModifier(callback);\n    }\n    /**\n     * Dismisses the poster, causing the model to load and render if\n     * necessary. This is currently effectively the same as interacting with\n     * the poster via user input.\n     */\n    dismissPoster() {\n      if (this.loaded) {\n        this[$hidePoster]();\n      } else {\n        this[$shouldDismissPoster] = true;\n        this[$updateSource]();\n      }\n    }\n    /**\n     * Displays the poster, hiding the 3D model. If this is called after the 3D\n     * model has been revealed, then it must be dismissed by a call to\n     * dismissPoster().\n     */\n    showPoster() {\n      const posterContainerElement = this[$posterContainerElement];\n      if (posterContainerElement.classList.contains(\"show\")) {\n        return;\n      }\n      posterContainerElement.classList.add(\"show\");\n      this[$userInputElement].classList.remove(\"show\");\n      const defaultPosterElement = this[$defaultPosterElement];\n      defaultPosterElement.removeAttribute(\"tabindex\");\n      defaultPosterElement.removeAttribute(\"aria-hidden\");\n      const oldVisibility = this.modelIsVisible;\n      this[$modelIsRevealed] = false;\n      this[$announceModelVisibility](oldVisibility);\n    }\n    /**\n     * Returns the model's bounding box dimensions in meters, independent of\n     * turntable rotation.\n     */\n    getDimensions() {\n      return toVector3D(this[$scene].size);\n    }\n    getBoundingBoxCenter() {\n      return toVector3D(this[$scene].boundingBox.getCenter(new Vector3()));\n    }\n    connectedCallback() {\n      super.connectedCallback();\n      this.showPoster();\n      this[$progressTracker].addEventListener(\"progress\", this[$onProgress]);\n    }\n    disconnectedCallback() {\n      super.disconnectedCallback();\n      this[$progressTracker].removeEventListener(\"progress\", this[$onProgress]);\n    }\n    async updated(changedProperties) {\n      super.updated(changedProperties);\n      if (changedProperties.has(\"poster\") && this.poster != null) {\n        this[$defaultPosterElement].style.backgroundImage = `url(${this.poster})`;\n      }\n      if (changedProperties.has(\"alt\")) {\n        this[$defaultPosterElement].setAttribute(\"aria-label\", this[$altDefaulted]);\n      }\n      if (changedProperties.has(\"reveal\") || changedProperties.has(\"loading\")) {\n        this[$updateSource]();\n      }\n    }\n    [(_a12 = $modelIsRevealed, _b11 = $shouldDismissPoster, _c6 = $posterContainerElement, _d5 = $defaultPosterElement, _e4 = $defaultProgressBarElement, _f4 = $ariaLabelCallToAction, _g2 = $updateProgressBar, _h2 = $onProgress, $shouldAttemptPreload)]() {\n      return !!this.src && (this[$shouldDismissPoster] || this.loading === LoadingStrategy.EAGER || this.reveal === RevealStrategy.AUTO && this[$isElementInViewport]);\n    }\n    [$hidePoster]() {\n      this[$shouldDismissPoster] = false;\n      const posterContainerElement = this[$posterContainerElement];\n      if (!posterContainerElement.classList.contains(\"show\")) {\n        return;\n      }\n      posterContainerElement.classList.remove(\"show\");\n      this[$userInputElement].classList.add(\"show\");\n      const oldVisibility = this.modelIsVisible;\n      this[$modelIsRevealed] = true;\n      this[$announceModelVisibility](oldVisibility);\n      const root = this.getRootNode();\n      if (root && root.activeElement === this) {\n        this[$userInputElement].focus();\n      }\n      const defaultPosterElement = this[$defaultPosterElement];\n      defaultPosterElement.setAttribute(\"aria-hidden\", \"true\");\n      defaultPosterElement.tabIndex = -1;\n      this.dispatchEvent(new CustomEvent(\"poster-dismissed\"));\n    }\n    [$getModelIsVisible]() {\n      return super[$getModelIsVisible]() && this[$modelIsRevealed];\n    }\n  }\n  __decorate7([\n    property({ type: String })\n  ], LoadingModelViewerElement.prototype, \"poster\", void 0);\n  __decorate7([\n    property({ type: String })\n  ], LoadingModelViewerElement.prototype, \"reveal\", void 0);\n  __decorate7([\n    property({ type: String })\n  ], LoadingModelViewerElement.prototype, \"loading\", void 0);\n  return LoadingModelViewerElement;\n};\n\n// node_modules/@google/model-viewer/lib/features/staging.js\nvar __decorate8 = function(decorators, target2, key, desc) {\n  var c = arguments.length, r = c < 3 ? target2 : desc === null ? desc = Object.getOwnPropertyDescriptor(target2, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target2, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if (d = decorators[i])\n        r = (c < 3 ? d(r) : c > 3 ? d(target2, key, r) : d(target2, key)) || r;\n  return c > 3 && r && Object.defineProperty(target2, key, r), r;\n};\nvar DEFAULT_ROTATION_SPEED = Math.PI / 32;\nvar AUTO_ROTATE_DELAY_DEFAULT = 3e3;\nvar rotationRateIntrinsics = {\n  basis: [degreesToRadians(numberNode(DEFAULT_ROTATION_SPEED, \"rad\"))],\n  keywords: { auto: [null] }\n};\nvar $autoRotateStartTime = Symbol(\"autoRotateStartTime\");\nvar $radiansPerSecond = Symbol(\"radiansPerSecond\");\nvar $syncRotationRate = Symbol(\"syncRotationRate\");\nvar $onCameraChange = Symbol(\"onCameraChange\");\nvar StagingMixin = (ModelViewerElement2) => {\n  var _a12, _b11, _c6;\n  class StagingModelViewerElement extends ModelViewerElement2 {\n    constructor() {\n      super(...arguments);\n      this.autoRotate = false;\n      this.autoRotateDelay = AUTO_ROTATE_DELAY_DEFAULT;\n      this.rotationPerSecond = \"auto\";\n      this[_a12] = performance.now();\n      this[_b11] = 0;\n      this[_c6] = (event) => {\n        if (!this.autoRotate) {\n          return;\n        }\n        if (event.detail.source === \"user-interaction\") {\n          this[$autoRotateStartTime] = performance.now();\n        }\n      };\n    }\n    connectedCallback() {\n      super.connectedCallback();\n      this.addEventListener(\"camera-change\", this[$onCameraChange]);\n      this[$autoRotateStartTime] = performance.now();\n    }\n    disconnectedCallback() {\n      super.disconnectedCallback();\n      this.removeEventListener(\"camera-change\", this[$onCameraChange]);\n      this[$autoRotateStartTime] = performance.now();\n    }\n    updated(changedProperties) {\n      super.updated(changedProperties);\n      if (changedProperties.has(\"autoRotate\")) {\n        this[$autoRotateStartTime] = performance.now();\n      }\n    }\n    [(_a12 = $autoRotateStartTime, _b11 = $radiansPerSecond, $syncRotationRate)](style2) {\n      this[$radiansPerSecond] = style2[0];\n    }\n    [$tick](time, delta) {\n      super[$tick](time, delta);\n      if (!this.autoRotate || !this[$getModelIsVisible]() || this[$renderer].isPresenting) {\n        return;\n      }\n      const rotationDelta = Math.min(delta, time - this[$autoRotateStartTime] - this.autoRotateDelay);\n      if (rotationDelta > 0) {\n        this[$scene].yaw = this.turntableRotation + this[$radiansPerSecond] * rotationDelta * 1e-3;\n      }\n    }\n    get turntableRotation() {\n      return this[$scene].yaw;\n    }\n    resetTurntableRotation(theta = 0) {\n      this[$scene].yaw = theta;\n    }\n  }\n  _c6 = $onCameraChange;\n  __decorate8([\n    property({ type: Boolean, attribute: \"auto-rotate\" })\n  ], StagingModelViewerElement.prototype, \"autoRotate\", void 0);\n  __decorate8([\n    property({ type: Number, attribute: \"auto-rotate-delay\" })\n  ], StagingModelViewerElement.prototype, \"autoRotateDelay\", void 0);\n  __decorate8([\n    style({ intrinsics: rotationRateIntrinsics, updateHandler: $syncRotationRate }),\n    property({ type: String, attribute: \"rotation-per-second\" })\n  ], StagingModelViewerElement.prototype, \"rotationPerSecond\", void 0);\n  return StagingModelViewerElement;\n};\n\n// node_modules/@google/model-viewer/lib/utilities/focus-visible.js\nvar FocusVisiblePolyfillMixin = (SuperClass) => {\n  var _a12;\n  const coordinateWithPolyfill = (instance) => {\n    if (instance.shadowRoot == null || instance.hasAttribute(\"data-js-focus-visible\")) {\n      return () => {\n      };\n    }\n    if (self.applyFocusVisiblePolyfill) {\n      self.applyFocusVisiblePolyfill(instance.shadowRoot);\n    } else {\n      const coordinationHandler = () => {\n        self.applyFocusVisiblePolyfill(instance.shadowRoot);\n      };\n      self.addEventListener(\"focus-visible-polyfill-ready\", coordinationHandler, { once: true });\n      return () => {\n        self.removeEventListener(\"focus-visible-polyfill-ready\", coordinationHandler);\n      };\n    }\n    return () => {\n    };\n  };\n  const $endPolyfillCoordination = Symbol(\"endPolyfillCoordination\");\n  class FocusVisibleCoordinator extends SuperClass {\n    constructor() {\n      super(...arguments);\n      this[_a12] = null;\n    }\n    // Attempt to coordinate with the polyfill when connected to the\n    // document:\n    connectedCallback() {\n      super.connectedCallback && super.connectedCallback();\n      if (this[$endPolyfillCoordination] == null) {\n        this[$endPolyfillCoordination] = coordinateWithPolyfill(this);\n      }\n    }\n    disconnectedCallback() {\n      super.disconnectedCallback && super.disconnectedCallback();\n      if (this[$endPolyfillCoordination] != null) {\n        this[$endPolyfillCoordination]();\n        this[$endPolyfillCoordination] = null;\n      }\n    }\n  }\n  _a12 = $endPolyfillCoordination;\n  ;\n  return FocusVisibleCoordinator;\n};\n\n// node_modules/@google/model-viewer/lib/model-viewer.js\nvar ModelViewerElement = AnnotationMixin(SceneGraphMixin(StagingMixin(EnvironmentMixin(ControlsMixin(ARMixin(LoadingMixin(AnimationMixin(FocusVisiblePolyfillMixin(ModelViewerElementBase)))))))));\ncustomElements.define(\"model-viewer\", ModelViewerElement);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/MediaRenderer/ModelViewer.js\nvar import_react = __toESM(require_react(), 1);\nvar ModelViewer = (() => import_react.default.forwardRef(function Model_Viewer({ src, alt, poster, style: style2, className }, ref) {\n  return (0, import_jsx_runtime.jsx)(\"div\", { style: { ...style2 }, className, ref, children: src ? (\n    // @ts-expect-error - model-viewer is not a standard HTML element\n    (0, import_jsx_runtime.jsx)(\"model-viewer\", { src, alt: alt || \"3D Model\", \"camera-controls\": true, poster: poster ? poster : null, style: { width: \"100%\", height: \"100%\" } })\n  ) : null });\n}))();\nvar ModelViewer_default = ModelViewer;\nexport {\n  ModelViewer_default as default\n};\n/*! Bundled license information:\n\nthree/build/three.module.js:\n  (**\n   * @license\n   * Copyright 2010-2022 Three.js Authors\n   * SPDX-License-Identifier: MIT\n   *)\n\n@google/model-viewer/lib/constants.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/utilities.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/environment.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/assets/close-material-svg.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/assets/controls-svg.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/assets/view-in-ar-material-svg.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/template.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/utilities/cache-eviction-policy.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/gltf-instance/VariantMaterialLoaderPlugin.js:\n  (* @license\n   * Copyright 2021 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/CachingGLTFLoader.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/gltf-instance/VariantMaterialExporterPlugin.js:\n  (* @license\n   * Copyright 2021 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/Damper.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/PlacementBox.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/ARRenderer.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/Debugger.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/GLTFInstance.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/gltf-instance/ModelViewerGLTFInstance.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/EnvironmentScene.js:\n  (* @license\n   * Copyright 2021 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/EnvironmentSceneAlt.js:\n  (* @license\n   * Copyright 2021 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/TextureUtils.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/Renderer.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/scene-graph/three-dom-element.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/scene-graph/image.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/scene-graph/sampler.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/scene-graph/texture.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/scene-graph/texture-info.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/scene-graph/pbr-metallic-roughness.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/scene-graph/material.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/scene-graph/model.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/scene-graph.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/styles/parsers.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/styles/conversions.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/Hotspot.js:\n  (* @license\n   * Copyright 2020 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/ModelUtils.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/Shadow.js:\n  (* @license\n   * Copyright 2022 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/ModelScene.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/utilities/data-conversion.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/utilities/progress-tracker.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/model-viewer-base.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/animation.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/annotation.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\nthree/examples/jsm/libs/fflate.module.js:\n  (*!\n  fflate - fast JavaScript compression/decompression\n  <https://101arrowz.github.io/fflate>\n  Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE\n  version 0.6.9\n  *)\n\n@google/model-viewer/lib/styles/deserializers.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/ar.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/styles/evaluators.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/styles/style-effector.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/decorators.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/three-components/SmoothControls.js:\n  (* @license\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/utilities/animation.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/controls.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/loading.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/features/staging.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n\n@google/model-viewer/lib/model-viewer.js:\n  (* @license\n   * Copyright 2019 Google LLC. All Rights Reserved.\n   * Licensed under the Apache License, Version 2.0 (the 'License');\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   *\n   *     http://www.apache.org/licenses/LICENSE-2.0\n   *\n   * Unless required by applicable law or agreed to in writing, software\n   * distributed under the License is distributed on an 'AS IS' BASIS,\n   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   * See the License for the specific language governing permissions and\n   * limitations under the License.\n   *)\n*/\n//# sourceMappingURL=ModelViewer-GZZWO7FG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/QRCodeRenderer-ZNSMXL36.js",
    "content": "\"use client\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/QRCode/QRCodeRenderer.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nvar import_react = __toESM(require_react(), 1);\n\n// node_modules/uqr/dist/index.mjs\nvar QrCodeDataType = ((QrCodeDataType2) => {\n  QrCodeDataType2[QrCodeDataType2[\"Border\"] = -1] = \"Border\";\n  QrCodeDataType2[QrCodeDataType2[\"Data\"] = 0] = \"Data\";\n  QrCodeDataType2[QrCodeDataType2[\"Function\"] = 1] = \"Function\";\n  QrCodeDataType2[QrCodeDataType2[\"Position\"] = 2] = \"Position\";\n  QrCodeDataType2[QrCodeDataType2[\"Timing\"] = 3] = \"Timing\";\n  QrCodeDataType2[QrCodeDataType2[\"Alignment\"] = 4] = \"Alignment\";\n  return QrCodeDataType2;\n})(QrCodeDataType || {});\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n  __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nvar LOW = [0, 1];\nvar MEDIUM = [1, 0];\nvar QUARTILE = [2, 3];\nvar HIGH = [3, 2];\nvar EccMap = {\n  L: LOW,\n  M: MEDIUM,\n  Q: QUARTILE,\n  H: HIGH\n};\nvar NUMERIC_REGEX = /^[0-9]*$/;\nvar ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+.\\/:-]*$/;\nvar ALPHANUMERIC_CHARSET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\";\nvar MIN_VERSION = 1;\nvar MAX_VERSION = 40;\nvar PENALTY_N1 = 3;\nvar PENALTY_N2 = 3;\nvar PENALTY_N3 = 40;\nvar PENALTY_N4 = 10;\nvar ECC_CODEWORDS_PER_BLOCK = [\n  // Version: (note that index 0 is for padding, and is set to an illegal value)\n  // 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n  [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n  // Low\n  [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],\n  // Medium\n  [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n  // Quartile\n  [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]\n  // High\n];\nvar NUM_ERROR_CORRECTION_BLOCKS = [\n  // Version: (note that index 0 is for padding, and is set to an illegal value)\n  // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n  [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],\n  // Low\n  [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],\n  // Medium\n  [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],\n  // Quartile\n  [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]\n  // High\n];\nvar QrCode = class {\n  /* -- Constructor (low level) and fields -- */\n  // Creates a new QR Code with the given version number,\n  // error correction level, data codeword bytes, and mask number.\n  // This is a low-level API that most users should not use directly.\n  // A mid-level API is the encodeSegments() function.\n  constructor(version, ecc, dataCodewords, msk) {\n    this.version = version;\n    this.ecc = ecc;\n    __publicField(this, \"size\");\n    __publicField(this, \"mask\");\n    __publicField(this, \"modules\", []);\n    __publicField(this, \"types\", []);\n    if (version < MIN_VERSION || version > MAX_VERSION)\n      throw new RangeError(\"Version value out of range\");\n    if (msk < -1 || msk > 7)\n      throw new RangeError(\"Mask value out of range\");\n    this.size = version * 4 + 17;\n    const row = Array.from({ length: this.size }, () => false);\n    for (let i = 0; i < this.size; i++) {\n      this.modules.push(row.slice());\n      this.types.push(row.map(() => 0));\n    }\n    this.drawFunctionPatterns();\n    const allCodewords = this.addEccAndInterleave(dataCodewords);\n    this.drawCodewords(allCodewords);\n    if (msk === -1) {\n      let minPenalty = 1e9;\n      for (let i = 0; i < 8; i++) {\n        this.applyMask(i);\n        this.drawFormatBits(i);\n        const penalty = this.getPenaltyScore();\n        if (penalty < minPenalty) {\n          msk = i;\n          minPenalty = penalty;\n        }\n        this.applyMask(i);\n      }\n    }\n    this.mask = msk;\n    this.applyMask(msk);\n    this.drawFormatBits(msk);\n  }\n  /* -- Accessor methods -- */\n  // Returns the color of the module (pixel) at the given coordinates, which is false\n  // for light or true for dark. The top left corner has the coordinates (x=0, y=0).\n  // If the given coordinates are out of bounds, then false (light) is returned.\n  getModule(x, y) {\n    return x >= 0 && x < this.size && y >= 0 && y < this.size && this.modules[y][x];\n  }\n  /* -- Private helper methods for constructor: Drawing function modules -- */\n  // Reads this object's version field, and draws and marks all function modules.\n  drawFunctionPatterns() {\n    for (let i = 0; i < this.size; i++) {\n      this.setFunctionModule(6, i, i % 2 === 0, QrCodeDataType.Timing);\n      this.setFunctionModule(i, 6, i % 2 === 0, QrCodeDataType.Timing);\n    }\n    this.drawFinderPattern(3, 3);\n    this.drawFinderPattern(this.size - 4, 3);\n    this.drawFinderPattern(3, this.size - 4);\n    const alignPatPos = this.getAlignmentPatternPositions();\n    const numAlign = alignPatPos.length;\n    for (let i = 0; i < numAlign; i++) {\n      for (let j = 0; j < numAlign; j++) {\n        if (!(i === 0 && j === 0 || i === 0 && j === numAlign - 1 || i === numAlign - 1 && j === 0))\n          this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j]);\n      }\n    }\n    this.drawFormatBits(0);\n    this.drawVersion();\n  }\n  // Draws two copies of the format bits (with its own error correction code)\n  // based on the given mask and this object's error correction level field.\n  drawFormatBits(mask) {\n    const data = this.ecc[1] << 3 | mask;\n    let rem = data;\n    for (let i = 0; i < 10; i++)\n      rem = rem << 1 ^ (rem >>> 9) * 1335;\n    const bits = (data << 10 | rem) ^ 21522;\n    for (let i = 0; i <= 5; i++)\n      this.setFunctionModule(8, i, getBit(bits, i));\n    this.setFunctionModule(8, 7, getBit(bits, 6));\n    this.setFunctionModule(8, 8, getBit(bits, 7));\n    this.setFunctionModule(7, 8, getBit(bits, 8));\n    for (let i = 9; i < 15; i++)\n      this.setFunctionModule(14 - i, 8, getBit(bits, i));\n    for (let i = 0; i < 8; i++)\n      this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i));\n    for (let i = 8; i < 15; i++)\n      this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i));\n    this.setFunctionModule(8, this.size - 8, true);\n  }\n  // Draws two copies of the version bits (with its own error correction code),\n  // based on this object's version field, iff 7 <= version <= 40.\n  drawVersion() {\n    if (this.version < 7)\n      return;\n    let rem = this.version;\n    for (let i = 0; i < 12; i++)\n      rem = rem << 1 ^ (rem >>> 11) * 7973;\n    const bits = this.version << 12 | rem;\n    for (let i = 0; i < 18; i++) {\n      const color = getBit(bits, i);\n      const a = this.size - 11 + i % 3;\n      const b = Math.floor(i / 3);\n      this.setFunctionModule(a, b, color);\n      this.setFunctionModule(b, a, color);\n    }\n  }\n  // Draws a 9*9 finder pattern including the border separator,\n  // with the center module at (x, y). Modules can be out of bounds.\n  drawFinderPattern(x, y) {\n    for (let dy = -4; dy <= 4; dy++) {\n      for (let dx = -4; dx <= 4; dx++) {\n        const dist = Math.max(Math.abs(dx), Math.abs(dy));\n        const xx = x + dx;\n        const yy = y + dy;\n        if (xx >= 0 && xx < this.size && yy >= 0 && yy < this.size)\n          this.setFunctionModule(xx, yy, dist !== 2 && dist !== 4, QrCodeDataType.Position);\n      }\n    }\n  }\n  // Draws a 5*5 alignment pattern, with the center module\n  // at (x, y). All modules must be in bounds.\n  drawAlignmentPattern(x, y) {\n    for (let dy = -2; dy <= 2; dy++) {\n      for (let dx = -2; dx <= 2; dx++) {\n        this.setFunctionModule(\n          x + dx,\n          y + dy,\n          Math.max(Math.abs(dx), Math.abs(dy)) !== 1,\n          QrCodeDataType.Alignment\n        );\n      }\n    }\n  }\n  // Sets the color of a module and marks it as a function module.\n  // Only used by the constructor. Coordinates must be in bounds.\n  setFunctionModule(x, y, isDark, type = QrCodeDataType.Function) {\n    this.modules[y][x] = isDark;\n    this.types[y][x] = type;\n  }\n  /* -- Private helper methods for constructor: Codewords and masking -- */\n  // Returns a new byte string representing the given data with the appropriate error correction\n  // codewords appended to it, based on this object's version and error correction level.\n  addEccAndInterleave(data) {\n    const ver = this.version;\n    const ecl = this.ecc;\n    if (data.length !== getNumDataCodewords(ver, ecl))\n      throw new RangeError(\"Invalid argument\");\n    const numBlocks = NUM_ERROR_CORRECTION_BLOCKS[ecl[0]][ver];\n    const blockEccLen = ECC_CODEWORDS_PER_BLOCK[ecl[0]][ver];\n    const rawCodewords = Math.floor(getNumRawDataModules(ver) / 8);\n    const numShortBlocks = numBlocks - rawCodewords % numBlocks;\n    const shortBlockLen = Math.floor(rawCodewords / numBlocks);\n    const blocks = [];\n    const rsDiv = reedSolomonComputeDivisor(blockEccLen);\n    for (let i = 0, k = 0; i < numBlocks; i++) {\n      const dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));\n      k += dat.length;\n      const ecc = reedSolomonComputeRemainder(dat, rsDiv);\n      if (i < numShortBlocks)\n        dat.push(0);\n      blocks.push(dat.concat(ecc));\n    }\n    const result = [];\n    for (let i = 0; i < blocks[0].length; i++) {\n      blocks.forEach((block, j) => {\n        if (i !== shortBlockLen - blockEccLen || j >= numShortBlocks)\n          result.push(block[i]);\n      });\n    }\n    return result;\n  }\n  // Draws the given sequence of 8-bit codewords (data and error correction) onto the entire\n  // data area of this QR Code. Function modules need to be marked off before this is called.\n  drawCodewords(data) {\n    if (data.length !== Math.floor(getNumRawDataModules(this.version) / 8))\n      throw new RangeError(\"Invalid argument\");\n    let i = 0;\n    for (let right = this.size - 1; right >= 1; right -= 2) {\n      if (right === 6)\n        right = 5;\n      for (let vert = 0; vert < this.size; vert++) {\n        for (let j = 0; j < 2; j++) {\n          const x = right - j;\n          const upward = (right + 1 & 2) === 0;\n          const y = upward ? this.size - 1 - vert : vert;\n          if (!this.types[y][x] && i < data.length * 8) {\n            this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7));\n            i++;\n          }\n        }\n      }\n    }\n  }\n  // XORs the codeword modules in this QR Code with the given mask pattern.\n  // The function modules must be marked and the codeword bits must be drawn\n  // before masking. Due to the arithmetic of XOR, calling applyMask() with\n  // the same mask value a second time will undo the mask. A final well-formed\n  // QR Code needs exactly one (not zero, two, etc.) mask applied.\n  applyMask(mask) {\n    if (mask < 0 || mask > 7)\n      throw new RangeError(\"Mask value out of range\");\n    for (let y = 0; y < this.size; y++) {\n      for (let x = 0; x < this.size; x++) {\n        let invert;\n        switch (mask) {\n          case 0:\n            invert = (x + y) % 2 === 0;\n            break;\n          case 1:\n            invert = y % 2 === 0;\n            break;\n          case 2:\n            invert = x % 3 === 0;\n            break;\n          case 3:\n            invert = (x + y) % 3 === 0;\n            break;\n          case 4:\n            invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 === 0;\n            break;\n          case 5:\n            invert = x * y % 2 + x * y % 3 === 0;\n            break;\n          case 6:\n            invert = (x * y % 2 + x * y % 3) % 2 === 0;\n            break;\n          case 7:\n            invert = ((x + y) % 2 + x * y % 3) % 2 === 0;\n            break;\n          default:\n            throw new Error(\"Unreachable\");\n        }\n        if (!this.types[y][x] && invert)\n          this.modules[y][x] = !this.modules[y][x];\n      }\n    }\n  }\n  // Calculates and returns the penalty score based on state of this QR Code's current modules.\n  // This is used by the automatic mask choice algorithm to find the mask pattern that yields the lowest score.\n  getPenaltyScore() {\n    let result = 0;\n    for (let y = 0; y < this.size; y++) {\n      let runColor = false;\n      let runX = 0;\n      const runHistory = [0, 0, 0, 0, 0, 0, 0];\n      for (let x = 0; x < this.size; x++) {\n        if (this.modules[y][x] === runColor) {\n          runX++;\n          if (runX === 5)\n            result += PENALTY_N1;\n          else if (runX > 5)\n            result++;\n        } else {\n          this.finderPenaltyAddHistory(runX, runHistory);\n          if (!runColor)\n            result += this.finderPenaltyCountPatterns(runHistory) * PENALTY_N3;\n          runColor = this.modules[y][x];\n          runX = 1;\n        }\n      }\n      result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * PENALTY_N3;\n    }\n    for (let x = 0; x < this.size; x++) {\n      let runColor = false;\n      let runY = 0;\n      const runHistory = [0, 0, 0, 0, 0, 0, 0];\n      for (let y = 0; y < this.size; y++) {\n        if (this.modules[y][x] === runColor) {\n          runY++;\n          if (runY === 5)\n            result += PENALTY_N1;\n          else if (runY > 5)\n            result++;\n        } else {\n          this.finderPenaltyAddHistory(runY, runHistory);\n          if (!runColor)\n            result += this.finderPenaltyCountPatterns(runHistory) * PENALTY_N3;\n          runColor = this.modules[y][x];\n          runY = 1;\n        }\n      }\n      result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * PENALTY_N3;\n    }\n    for (let y = 0; y < this.size - 1; y++) {\n      for (let x = 0; x < this.size - 1; x++) {\n        const color = this.modules[y][x];\n        if (color === this.modules[y][x + 1] && color === this.modules[y + 1][x] && color === this.modules[y + 1][x + 1])\n          result += PENALTY_N2;\n      }\n    }\n    let dark = 0;\n    for (const row of this.modules)\n      dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark);\n    const total = this.size * this.size;\n    const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;\n    result += k * PENALTY_N4;\n    return result;\n  }\n  /* -- Private helper functions -- */\n  // Returns an ascending list of positions of alignment patterns for this version number.\n  // Each position is in the range [0,177), and are used on both the x and y axes.\n  // This could be implemented as lookup table of 40 variable-length lists of integers.\n  getAlignmentPatternPositions() {\n    if (this.version === 1) {\n      return [];\n    } else {\n      const numAlign = Math.floor(this.version / 7) + 2;\n      const step = this.version === 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;\n      const result = [6];\n      for (let pos = this.size - 7; result.length < numAlign; pos -= step)\n        result.splice(1, 0, pos);\n      return result;\n    }\n  }\n  // Can only be called immediately after a light run is added, and\n  // returns either 0, 1, or 2. A helper function for getPenaltyScore().\n  finderPenaltyCountPatterns(runHistory) {\n    const n = runHistory[1];\n    const core = n > 0 && runHistory[2] === n && runHistory[3] === n * 3 && runHistory[4] === n && runHistory[5] === n;\n    return (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) + (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0);\n  }\n  // Must be called at the end of a line (row or column) of modules. A helper function for getPenaltyScore().\n  finderPenaltyTerminateAndCount(currentRunColor, currentRunLength, runHistory) {\n    if (currentRunColor) {\n      this.finderPenaltyAddHistory(currentRunLength, runHistory);\n      currentRunLength = 0;\n    }\n    currentRunLength += this.size;\n    this.finderPenaltyAddHistory(currentRunLength, runHistory);\n    return this.finderPenaltyCountPatterns(runHistory);\n  }\n  // Pushes the given value to the front and drops the last value. A helper function for getPenaltyScore().\n  finderPenaltyAddHistory(currentRunLength, runHistory) {\n    if (runHistory[0] === 0)\n      currentRunLength += this.size;\n    runHistory.pop();\n    runHistory.unshift(currentRunLength);\n  }\n};\nfunction appendBits(val, len, bb) {\n  if (len < 0 || len > 31 || val >>> len !== 0)\n    throw new RangeError(\"Value out of range\");\n  for (let i = len - 1; i >= 0; i--)\n    bb.push(val >>> i & 1);\n}\nfunction getBit(x, i) {\n  return (x >>> i & 1) !== 0;\n}\nvar QrSegment = class {\n  // Creates a new QR Code segment with the given attributes and data.\n  // The character count (numChars) must agree with the mode and the bit buffer length,\n  // but the constraint isn't checked. The given bit buffer is cloned and stored.\n  constructor(mode, numChars, bitData) {\n    this.mode = mode;\n    this.numChars = numChars;\n    this.bitData = bitData;\n    if (numChars < 0)\n      throw new RangeError(\"Invalid argument\");\n    this.bitData = bitData.slice();\n  }\n  /* -- Methods -- */\n  // Returns a new copy of the data bits of this segment.\n  getData() {\n    return this.bitData.slice();\n  }\n};\nvar MODE_NUMERIC = [1, 10, 12, 14];\nvar MODE_ALPHANUMERIC = [2, 9, 11, 13];\nvar MODE_BYTE = [4, 8, 16, 16];\nfunction numCharCountBits(mode, ver) {\n  return mode[Math.floor((ver + 7) / 17) + 1];\n}\nfunction makeBytes(data) {\n  const bb = [];\n  for (const b of data)\n    appendBits(b, 8, bb);\n  return new QrSegment(MODE_BYTE, data.length, bb);\n}\nfunction makeNumeric(digits) {\n  if (!isNumeric(digits))\n    throw new RangeError(\"String contains non-numeric characters\");\n  const bb = [];\n  for (let i = 0; i < digits.length; ) {\n    const n = Math.min(digits.length - i, 3);\n    appendBits(Number.parseInt(digits.substring(i, i + n), 10), n * 3 + 1, bb);\n    i += n;\n  }\n  return new QrSegment(MODE_NUMERIC, digits.length, bb);\n}\nfunction makeAlphanumeric(text) {\n  if (!isAlphanumeric(text))\n    throw new RangeError(\"String contains unencodable characters in alphanumeric mode\");\n  const bb = [];\n  let i;\n  for (i = 0; i + 2 <= text.length; i += 2) {\n    let temp = ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;\n    temp += ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));\n    appendBits(temp, 11, bb);\n  }\n  if (i < text.length)\n    appendBits(ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb);\n  return new QrSegment(MODE_ALPHANUMERIC, text.length, bb);\n}\nfunction makeSegments(text) {\n  if (text === \"\")\n    return [];\n  else if (isNumeric(text))\n    return [makeNumeric(text)];\n  else if (isAlphanumeric(text))\n    return [makeAlphanumeric(text)];\n  else\n    return [makeBytes(toUtf8ByteArray(text))];\n}\nfunction isNumeric(text) {\n  return NUMERIC_REGEX.test(text);\n}\nfunction isAlphanumeric(text) {\n  return ALPHANUMERIC_REGEX.test(text);\n}\nfunction getTotalBits(segs, version) {\n  let result = 0;\n  for (const seg of segs) {\n    const ccbits = numCharCountBits(seg.mode, version);\n    if (seg.numChars >= 1 << ccbits)\n      return Number.POSITIVE_INFINITY;\n    result += 4 + ccbits + seg.bitData.length;\n  }\n  return result;\n}\nfunction toUtf8ByteArray(str) {\n  str = encodeURI(str);\n  const result = [];\n  for (let i = 0; i < str.length; i++) {\n    if (str.charAt(i) !== \"%\") {\n      result.push(str.charCodeAt(i));\n    } else {\n      result.push(Number.parseInt(str.substring(i + 1, i + 3), 16));\n      i += 2;\n    }\n  }\n  return result;\n}\nfunction getNumRawDataModules(ver) {\n  if (ver < MIN_VERSION || ver > MAX_VERSION)\n    throw new RangeError(\"Version number out of range\");\n  let result = (16 * ver + 128) * ver + 64;\n  if (ver >= 2) {\n    const numAlign = Math.floor(ver / 7) + 2;\n    result -= (25 * numAlign - 10) * numAlign - 55;\n    if (ver >= 7)\n      result -= 36;\n  }\n  return result;\n}\nfunction getNumDataCodewords(ver, ecl) {\n  return Math.floor(getNumRawDataModules(ver) / 8) - ECC_CODEWORDS_PER_BLOCK[ecl[0]][ver] * NUM_ERROR_CORRECTION_BLOCKS[ecl[0]][ver];\n}\nfunction reedSolomonComputeDivisor(degree) {\n  if (degree < 1 || degree > 255)\n    throw new RangeError(\"Degree out of range\");\n  const result = [];\n  for (let i = 0; i < degree - 1; i++)\n    result.push(0);\n  result.push(1);\n  let root = 1;\n  for (let i = 0; i < degree; i++) {\n    for (let j = 0; j < result.length; j++) {\n      result[j] = reedSolomonMultiply(result[j], root);\n      if (j + 1 < result.length)\n        result[j] ^= result[j + 1];\n    }\n    root = reedSolomonMultiply(root, 2);\n  }\n  return result;\n}\nfunction reedSolomonComputeRemainder(data, divisor) {\n  const result = divisor.map((_) => 0);\n  for (const b of data) {\n    const factor = b ^ result.shift();\n    result.push(0);\n    divisor.forEach((coef, i) => result[i] ^= reedSolomonMultiply(coef, factor));\n  }\n  return result;\n}\nfunction reedSolomonMultiply(x, y) {\n  if (x >>> 8 !== 0 || y >>> 8 !== 0)\n    throw new RangeError(\"Byte out of range\");\n  let z = 0;\n  for (let i = 7; i >= 0; i--) {\n    z = z << 1 ^ (z >>> 7) * 285;\n    z ^= (y >>> i & 1) * x;\n  }\n  return z;\n}\nfunction encodeSegments(segs, ecl, minVersion = 1, maxVersion = 40, mask = -1, boostEcl = true) {\n  if (!(MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= MAX_VERSION) || mask < -1 || mask > 7)\n    throw new RangeError(\"Invalid value\");\n  let version;\n  let dataUsedBits;\n  for (version = minVersion; ; version++) {\n    const dataCapacityBits2 = getNumDataCodewords(version, ecl) * 8;\n    const usedBits = getTotalBits(segs, version);\n    if (usedBits <= dataCapacityBits2) {\n      dataUsedBits = usedBits;\n      break;\n    }\n    if (version >= maxVersion)\n      throw new RangeError(\"Data too long\");\n  }\n  for (const newEcl of [MEDIUM, QUARTILE, HIGH]) {\n    if (boostEcl && dataUsedBits <= getNumDataCodewords(version, newEcl) * 8)\n      ecl = newEcl;\n  }\n  const bb = [];\n  for (const seg of segs) {\n    appendBits(seg.mode[0], 4, bb);\n    appendBits(seg.numChars, numCharCountBits(seg.mode, version), bb);\n    for (const b of seg.getData())\n      bb.push(b);\n  }\n  const dataCapacityBits = getNumDataCodewords(version, ecl) * 8;\n  appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb);\n  appendBits(0, (8 - bb.length % 8) % 8, bb);\n  for (let padByte = 236; bb.length < dataCapacityBits; padByte ^= 236 ^ 17)\n    appendBits(padByte, 8, bb);\n  const dataCodewords = Array.from({ length: Math.ceil(bb.length / 8) }, () => 0);\n  bb.forEach((b, i) => dataCodewords[i >>> 3] |= b << 7 - (i & 7));\n  return new QrCode(version, ecl, dataCodewords, mask);\n}\nfunction encode(data, options) {\n  var _a;\n  const {\n    ecc = \"L\",\n    boostEcc = false,\n    minVersion = 1,\n    maxVersion = 40,\n    maskPattern = -1,\n    border = 1\n  } = options || {};\n  const segment = typeof data === \"string\" ? makeSegments(data) : Array.isArray(data) ? [makeBytes(data)] : void 0;\n  if (!segment)\n    throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof data}`);\n  const qr = encodeSegments(\n    segment,\n    EccMap[ecc],\n    minVersion,\n    maxVersion,\n    maskPattern,\n    boostEcc\n  );\n  const result = addBorder({\n    version: qr.version,\n    maskPattern: qr.mask,\n    size: qr.size,\n    data: qr.modules,\n    types: qr.types\n  }, border);\n  if (options == null ? void 0 : options.invert)\n    result.data = result.data.map((row) => row.map((mod) => !mod));\n  (_a = options == null ? void 0 : options.onEncoded) == null ? void 0 : _a.call(options, result);\n  return result;\n}\nfunction addBorder(input, border = 1) {\n  if (!border)\n    return input;\n  const { size } = input;\n  const newSize = size + border * 2;\n  input.size = newSize;\n  input.data.forEach((row) => {\n    for (let i = 0; i < border; i++) {\n      row.unshift(false);\n      row.push(false);\n    }\n  });\n  for (let i = 0; i < border; i++) {\n    input.data.unshift(Array.from({ length: newSize }, (_) => false));\n    input.data.push(Array.from({ length: newSize }, (_) => false));\n  }\n  const b = QrCodeDataType.Border;\n  input.types.forEach((row) => {\n    for (let i = 0; i < border; i++) {\n      row.unshift(b);\n      row.push(b);\n    }\n  });\n  for (let i = 0; i < border; i++) {\n    input.types.unshift(Array.from({ length: newSize }, (_) => b));\n    input.types.push(Array.from({ length: newSize }, (_) => b));\n  }\n  return input;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/QRCode/QRCodeRenderer.js\nfunction QRCodeRenderer({ ecl = \"M\", size: sizeProp = 200, uri, clearSize = 0, image, imageBackground = \"transparent\" }) {\n  const logoSize = clearSize;\n  const size = sizeProp - 10 * 2;\n  const dots = (0, import_react.useMemo)(() => {\n    const dotsArray = [];\n    const matrix = encode(uri, { ecc: ecl, border: 0 }).data;\n    const cellSize = size / matrix.length;\n    const qrList = [\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: 0, y: 1 }\n    ];\n    for (const { x, y } of qrList) {\n      const x1 = (matrix.length - 7) * cellSize * x;\n      const y1 = (matrix.length - 7) * cellSize * y;\n      for (let i = 0; i < 3; i++) {\n        dotsArray.push((0, import_jsx_runtime.jsx)(\"rect\", { fill: i % 2 !== 0 ? \"var(--ck-qr-background, var(--ck-body-background))\" : \"var(--ck-qr-dot-color)\", rx: (i - 2) * -5 + (i === 0 ? 2 : 3), ry: (i - 2) * -5 + (i === 0 ? 2 : 3), width: cellSize * (7 - i * 2), height: cellSize * (7 - i * 2), x: x1 + cellSize * i, y: y1 + cellSize * i }, `${i}-${x}-${y}`));\n      }\n    }\n    if (image) {\n      const x1 = (matrix.length - 7) * cellSize * 1;\n      const y1 = (matrix.length - 7) * cellSize * 1;\n      dotsArray.push((0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [(0, import_jsx_runtime.jsx)(\"rect\", { fill: imageBackground, rx: (0 - 2) * -5 + 2, ry: (0 - 2) * -5 + 2, width: cellSize * (7 - 0 * 2), height: cellSize * (7 - 0 * 2), x: x1 + cellSize * 0, y: y1 + cellSize * 0 }), (0, import_jsx_runtime.jsx)(\"foreignObject\", { width: cellSize * (7 - 0 * 2), height: cellSize * (7 - 0 * 2), x: x1 + cellSize * 0, y: y1 + cellSize * 0, children: (0, import_jsx_runtime.jsx)(\"div\", { style: { borderRadius: (0 - 2) * -5 + 2, overflow: \"hidden\" }, children: image }) })] }));\n    }\n    const clearArenaSize = Math.floor((logoSize + 25) / cellSize);\n    const matrixMiddleStart = matrix.length / 2 - clearArenaSize / 2;\n    const matrixMiddleEnd = matrix.length / 2 + clearArenaSize / 2 - 1;\n    matrix.forEach((row, i) => {\n      row.forEach((_, j) => {\n        var _a;\n        if ((_a = matrix[i]) == null ? void 0 : _a[j]) {\n          if (!(i < 7 && j < 7 || i > matrix.length - 8 && j < 7 || i < 7 && j > matrix.length - 8)) {\n            if (image || !(i > matrixMiddleStart && i < matrixMiddleEnd && j > matrixMiddleStart && j < matrixMiddleEnd)) {\n              dotsArray.push((0, import_jsx_runtime.jsx)(\"circle\", { cx: i * cellSize + cellSize / 2, cy: j * cellSize + cellSize / 2, fill: \"var(--ck-qr-dot-color)\", r: cellSize / 3 }, `circle-${i}-${// biome-ignore lint/suspicious/noArrayIndexKey: its the only thing available for the key here\n              j}`));\n            }\n          }\n        }\n      });\n    });\n    return dotsArray;\n  }, [ecl, image, imageBackground, logoSize, size, uri]);\n  return (0, import_jsx_runtime.jsxs)(\"svg\", { height: size, width: size, viewBox: `0 0 ${size} ${size}`, style: {\n    width: size,\n    height: size\n  }, role: \"presentation\", children: [(0, import_jsx_runtime.jsx)(\"rect\", { fill: \"transparent\", height: size, width: size }), dots] });\n}\nvar QRCodeRenderer_default = QRCodeRenderer;\nexport {\n  QRCodeRenderer_default as default\n};\n//# sourceMappingURL=QRCodeRenderer-ZNSMXL36.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/adapter-F5WOI5K5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/adapter/index.js\nvar wallet = {\n  id: \"adapter\",\n  name: \"Wallet\",\n  homepage: \"https://thirdweb.com\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=adapter-F5WOI5K5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ai-M4CK2DAC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/ai.hacken/index.js\nvar wallet = {\n  id: \"ai.hacken\",\n  name: \"hAI by Hacken\",\n  homepage: \"https://hacken.ai\",\n  image_id: \"d2ff6baf-5051-4bf2-edec-32450b451000\",\n  app: {\n    browser: \"https://hacken.ai\",\n    ios: \"https://apps.apple.com/us/app/hai-by-hacken/id1501384789\",\n    android: \"https://play.google.com/store/apps/details?id=com.hackenai.hackenaiapp&hl=en_US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"hai://\",\n    universal: \"https://hacken.ai\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=ai-M4CK2DAC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ai.spotonchain-Q44G73RV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/ai.spotonchain.platform/index.js\nvar wallet = {\n  id: \"ai.spotonchain.platform\",\n  name: \"Spot On Chain App\",\n  homepage: \"https://platform.spotonchain.ai\",\n  image_id: \"1bcb5ed6-f6c9-4b0d-f891-b70c48b93d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/spot-on-chain/id6449733489\",\n    android: \"https://play.google.com/store/apps/details?id=network.spotonchain\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"spotonchain://\",\n    universal: \"https://spotonchain.ai/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=ai.spotonchain-Q44G73RV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-3BIDNXMN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.ryipay/index.js\nvar wallet = {\n  id: \"app.ryipay\",\n  name: \"RYIPAY\",\n  homepage: \"https://ryipay.app/\",\n  image_id: \"2f0918f7-f135-4b62-4765-ac183f14e500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/ryipay-wallet/id1620995066\",\n    android: \"https://play.google.com/store/apps/details?id=io.ryi.pay\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ryipay://\",\n    universal: \"https://ryipay.page.link/3N7P\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-3BIDNXMN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-4OQAM2FO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.utorg/index.js\nvar wallet = {\n  id: \"app.utorg\",\n  name: \"UTORG\",\n  homepage: \"https://utorg.app\",\n  image_id: \"39c77c0b-d6ea-419d-92b7-513a5eac2c00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/utorg-bitcoin-crypto-wallet/id6444720908\",\n    android: \"https://play.google.com/store/apps/details?id=com.utorg\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"utorg://mainactivity\",\n    universal: \"https://link.utorg.com/zp0f\"\n  },\n  desktop: {\n    native: \"utorg://mainactivity\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-4OQAM2FO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-4WB6G67C.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.gamic/index.js\nvar wallet = {\n  id: \"app.gamic\",\n  name: \"Gamic\",\n  homepage: \"https://gamic.app\",\n  image_id: \"cf404c15-391c-4144-1ec0-17f1b119ed00\",\n  app: {\n    browser: \"https://gamic.app/\",\n    ios: \"https://apps.apple.com/us/app/gamic-spaces-chat-connect/id1673683070\",\n    android: \"https://play.google.com/store/apps/details?id=app.gamic.guild.gamic_guild_mobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"gamic://\",\n    universal: \"https://www.gamic.app/wc\"\n  },\n  desktop: {\n    native: \"gamic://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-4WB6G67C.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-5BPIXU3J.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.keplr/index.js\nvar wallet = {\n  id: \"app.keplr\",\n  name: \"Keplr\",\n  homepage: \"https://keplr.app\",\n  image_id: \"527324b0-3849-462b-9a1a-72b53bdfea00\",\n  app: {\n    browser: \"https://wallet.keplr.app\",\n    ios: \"https://apps.apple.com/us/app/keplr-wallet/id1567851089\",\n    android: \"https://play.google.com/store/apps/details?id=com.chainapsis.keplr&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/keplr/dmkamcknogkgcdfhhbddcghachkejeap?hl=en\",\n    firefox: \"https://addons.mozilla.org/en-US/firefox/addon/keplr/\",\n    safari: null,\n    edge: \"https://microsoftedge.microsoft.com/addons/detail/keplr/ocodgmmffbkkeecmadcijjhkmeohinei\",\n    opera: null\n  },\n  rdns: \"app.keplr\",\n  mobile: {\n    native: \"keplrwallet://wcV2\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-5BPIXU3J.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-5PJX72YN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.walletnow/index.js\nvar wallet = {\n  id: \"app.walletnow\",\n  name: \"NOW Wallet\",\n  homepage: \"https://walletnow.app/\",\n  image_id: \"b6ee4efc-f53e-475b-927b-a7ded6211700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/now-wallet-bitcoin-crypto/id1591216386\",\n    android: \"https://play.google.com/store/apps/details?id=com.nowwallet\",\n    mac: \"https://apps.apple.com/app/now-wallet-bitcoin-crypto/id1591216386\",\n    windows: \"https://apps.microsoft.com/detail/xpdc4v0j3zkvhh\",\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"nowwallet://\",\n    universal: \"https://walletnow.app.link\"\n  },\n  desktop: {\n    native: \"nowwallet://\",\n    universal: \"https://walletnow.app.link\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-5PJX72YN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-6X4TWE2O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.edge/index.js\nvar wallet = {\n  id: \"app.edge\",\n  name: \"Edge Wallet\",\n  homepage: \"https://edge.app/\",\n  image_id: \"f601bc29-4298-422f-dbf7-34dac2884f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/edge-bitcoin-wallet/id1344400091\",\n    android: \"https://play.google.com/store/apps/details?id=co.edgesecure.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"edge://\",\n    universal: \"https://deep.edge.app/wc\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-6X4TWE2O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-BJYH6WND.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.ammer/index.js\nvar wallet = {\n  id: \"app.ammer\",\n  name: \"Ammer Wallet\",\n  homepage: \"https://ammer.app/\",\n  image_id: \"7d38dd8e-92ee-44bf-1ca4-818531de1900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/ammer-wallet/id1599698329\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ammerwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-BJYH6WND.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-C6AFF7V2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.catecoin/index.js\nvar wallet = {\n  id: \"app.catecoin\",\n  name: \"Catecoin Wallet\",\n  homepage: \"https://catecoin.app\",\n  image_id: \"d017bc54-db4d-4f07-2de2-69790ce92400\",\n  app: {\n    browser: \"https://wallet.catecoin.club/\",\n    ios: \"https://apps.apple.com/app/id1637850589?platform=iphone\",\n    android: \"https://play.google.com/store/apps/details?id=com.crypto.wallet.catecoin\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"catecoin://\",\n    universal: \"https://catecoin.app/apple-app-site-association\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-C6AFF7V2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-CEHOPHKL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.nicegram/index.js\nvar wallet = {\n  id: \"app.nicegram\",\n  name: \"Nicegram Wallet\",\n  homepage: \"https://nicegram.app\",\n  image_id: \"929745a4-5830-480b-f6ab-bb3a854bc700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/apple-store/id1608870673\",\n    android: \"https://play.google.com/store/apps/details?id=app.nicegram\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ncg://wallet/home\",\n    universal: \"https://nicegram.app/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-CEHOPHKL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-FEBEDQ5O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.status/index.js\nvar wallet = {\n  id: \"app.status\",\n  name: \"Status\",\n  homepage: \"https://status.app/\",\n  image_id: \"1e5fb93a-3a0a-40b9-8a86-b14a775aae00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/status-gateway-to-ethereum/id1178893006\",\n    android: \"https://play.google.com/store/apps/details?id=im.status.ethereum\",\n    mac: \"https://status.app/help/getting-started\",\n    windows: \"https://status.app/help/getting-started\",\n    linux: \"https://status.app/help/getting-started\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"status-app://\",\n    universal: \"https://status.app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-FEBEDQ5O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-FXWSJIOW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.keeper-wallet/index.js\nvar wallet = {\n  id: \"app.keeper-wallet\",\n  name: \"Keeper\",\n  homepage: \"https://keeper-wallet.app\",\n  image_id: \"41f6ac85-8f4e-4d9f-b37b-92b43fa7f400\",\n  app: {\n    browser: \"https://chrome.google.com/webstore/detail/keeper-wallet/lpilbniiabackdjcionkobglmddfbcjo\",\n    ios: \"https://apps.apple.com/us/app/keeper-wallet/id6444443920\",\n    android: \"https://play.google.com/store/apps/details?id=app.keeper.wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://link.keeper-wallet.app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-FXWSJIOW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-HGBIYGYJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.dfinnwallet/index.js\nvar wallet = {\n  id: \"app.dfinnwallet\",\n  name: \"Dfinn Wallet\",\n  homepage: \"https://dfinnwallet.app\",\n  image_id: \"9a9c59ce-6346-4af8-db19-778533fb6000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/dfinn-wallet/id6451134219\",\n    android: \"https://play.google.com/store/apps/details?id=money.dfinn.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"dfinnwallet://\",\n    universal: \"https://dfinnwallet-link.vercel.app/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-HGBIYGYJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-HRMMGDE2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.linen/index.js\nvar wallet = {\n  id: \"app.linen\",\n  name: \"Linen\",\n  homepage: \"https://linen.app/\",\n  image_id: \"aff3e4e1-92a9-4066-f48f-3591947cf200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/linen-app-investing-in-defi/id1480509067\",\n    android: \"https://play.google.com/store/apps/details?id=app.linen.wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"linen://\",\n    universal: \"https://linen.app/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-HRMMGDE2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-IC2A3RDS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.stickey/index.js\nvar wallet = {\n  id: \"app.stickey\",\n  name: \"Stickey Wallet\",\n  homepage: \"https://stickey.app\",\n  image_id: \"12aab9fb-f3d4-4248-10e0-4eda17a5de00\",\n  app: {\n    browser: \"https://stickey.app\",\n    ios: \"https://apps.apple.com/app/id1671113083\",\n    android: \"https://play.google.com/store/apps/details?id=app.stickey\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"stickyapp://\",\n    universal: \"https://stickeyapp.page.link\"\n  },\n  desktop: {\n    native: \"stickyapp://\",\n    universal: \"https://stickeyapp.page.link\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-IC2A3RDS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-ICREXY5T.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.subwallet/index.js\nvar wallet = {\n  id: \"app.subwallet\",\n  name: \"SubWallet\",\n  homepage: \"https://www.subwallet.app/\",\n  image_id: \"03f5c08c-fb30-46a0-ca5c-d8fdd7250b00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/subwallet-polkadot-wallet/id1633050285\",\n    android: \"https://play.google.com/store/apps/details?id=app.subwallet.mobile&hl=en_US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/subwallet-polkadot-wallet/onhogfjeacnfoofkfgppdlbmlmnplgbn\",\n    firefox: \"https://addons.mozilla.org/en-US/firefox/addon/subwallet/\",\n    safari: null,\n    edge: \"https://chrome.google.com/webstore/detail/subwallet-polkadot-wallet/onhogfjeacnfoofkfgppdlbmlmnplgbn\",\n    opera: null\n  },\n  rdns: \"app.subwallet\",\n  mobile: {\n    native: \"subwallet://\",\n    universal: \"https://mobile.subwallet.app/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-ICREXY5T.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-IEYL7BOV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.phantom/index.js\nvar wallet = {\n  id: \"app.phantom\",\n  name: \"Phantom\",\n  homepage: \"https://phantom.app/\",\n  image_id: \"c38443bb-b3c1-4697-e569-408de3fcc100\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/phantom/bfnaelmomeimhlpmgjnjophhpkkoljpa\",\n    firefox: \"https://addons.mozilla.org/en-US/firefox/addon/phantom-app/\",\n    safari: null,\n    edge: \"https://chrome.google.com/webstore/detail/phantom/bfnaelmomeimhlpmgjnjophhpkkoljpa\",\n    opera: null\n  },\n  rdns: \"app.phantom\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-IEYL7BOV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-IVIV25DE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.backpack/index.js\nvar wallet = {\n  id: \"app.backpack\",\n  name: \"Backpack\",\n  homepage: \"https://backpack.app\",\n  image_id: \"71ca9daf-a31e-4d2a-fd01-f5dc2dc66900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/backpack-wallet-exchange/id6445964121\",\n    android: \"https://play.google.com/store/apps/details?id=app.backpack.mobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/backpack/aflkmfhebedbjioipglgcbcmnbpgliof\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"app.backpack\",\n  mobile: {\n    native: \"backpack://\",\n    universal: \"https://backpack.app/ul/v1\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-IVIV25DE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-J7XLYP5E.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.wombat/index.js\nvar wallet = {\n  id: \"app.wombat\",\n  name: \"Wombat\",\n  homepage: \"https://wombat.app\",\n  image_id: \"e675efa3-4ffc-4199-9c22-b9692baea900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/wombat-home-of-nft-gaming/id1474392110\",\n    android: \"https://play.google.com/store/apps/details?id=io.getwombat.android\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wombat-wc://\",\n    universal: null\n  },\n  desktop: {\n    native: \"wombat://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-J7XLYP5E.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-JGIJQHBM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.ultimate/index.js\nvar wallet = {\n  id: \"app.ultimate\",\n  name: \"Ultimate\",\n  homepage: \"https://ultimate.app/\",\n  image_id: \"1ed9823d-64dd-4ab6-2f3f-22c8ff228f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/id1629053410\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ultimate://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-JGIJQHBM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-JPKIQZES.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.coinstats/index.js\nvar wallet = {\n  id: \"app.coinstats\",\n  name: \"CoinStats\",\n  homepage: \"https://coinstats.app\",\n  image_id: \"b2a00908-f144-4a49-cc0a-9d7422ad5e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id1247849330\",\n    android: \"https://play.google.com/store/apps/details?id=com.coinstats.crypto.portfolio\",\n    mac: \"https://apps.apple.com/us/app/id1247849330\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"coinstats://\",\n    universal: \"http://coinstats.app\"\n  },\n  desktop: {\n    native: \"coinstats://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-JPKIQZES.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-KCNXS7XQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.omni/index.js\nvar wallet = {\n  id: \"app.omni\",\n  name: \"Omni\",\n  homepage: \"https://omni.app\",\n  image_id: \"2cd67b4c-282b-4809-e7c0-a88cd5116f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/de/app/steakwallet/id1569375204?l=en\",\n    android: \"https://play.google.com/store/apps/details?id=fi.steakwallet.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"omni://\",\n    universal: \"https://links.omni.app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-KCNXS7XQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-LUGTXPGI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.tofee/index.js\nvar wallet = {\n  id: \"app.tofee\",\n  name: \"Tofee Wallet Official\",\n  homepage: \"https://tofee.app/\",\n  image_id: \"d4dbb723-b1ec-4cfc-daab-1d559a151f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/in/app/tofee/id6504269605\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"tofee://wallet\",\n    universal: \"https://tofee.app/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-LUGTXPGI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-M6LRY2SK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.keyring/index.js\nvar wallet = {\n  id: \"app.keyring\",\n  name: \"KEYRING PRO\",\n  homepage: \"https://keyring.app/\",\n  image_id: \"dda0f0fb-34e8-4a57-dcea-b008e7d1ff00\",\n  app: {\n    browser: \"https://keyring.app/\",\n    ios: \"https://apps.apple.com/us/app/keyring-pro-wallet-management/id1546824976\",\n    android: \"https://play.google.com/store/apps/details?id=co.bacoor.keyring\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"keyring://\",\n    universal: \"https://keyring.app/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-M6LRY2SK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-MFHNNKPC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.clot/index.js\nvar wallet = {\n  id: \"app.clot\",\n  name: \"Clot\",\n  homepage: \"https://clot.app\",\n  image_id: \"a7d2716d-69b8-4422-9797-ed63b1f9c000\",\n  app: {\n    browser: \"https://clot.app\",\n    ios: \"https://apps.apple.com/app/clot-wallet/id1584113315\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"clot://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-MFHNNKPC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-MS6Z5MIK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.everspace/index.js\nvar wallet = {\n  id: \"app.everspace\",\n  name: \"Everspace\",\n  homepage: \"https://everspace.app\",\n  image_id: \"80eaa630-6392-4b0a-a604-0a0f808e4d00\",\n  app: {\n    browser: \"https://everspace.app/\",\n    ios: \"https://apps.apple.com/ru/app/everspace/id1585434994?l=en\",\n    android: \"https://play.google.com/store/apps/details?id=com.oberton.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"everspace://\",\n    universal: \"https://everspace.app/deeplink\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-MS6Z5MIK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-O5DHUCKC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.krystal/index.js\nvar wallet = {\n  id: \"app.krystal\",\n  name: \"Krystal\",\n  homepage: \"https://krystal.app/\",\n  image_id: \"d2b59965-4eb8-4828-d3d4-fbc0b3379e00\",\n  app: {\n    browser: \"https://defi.krystal.app/\",\n    ios: \"https://apps.apple.com/us/app/krystal-one-platform-all-defi/id1558105691\",\n    android: \"https://play.google.com/store/apps/details?id=com.kyrd.krystal\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"krystalwallet://\",\n    universal: \"https://wallet.krystal.app/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-O5DHUCKC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-OXRH4XRW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.m1nty/index.js\nvar wallet = {\n  id: \"app.m1nty\",\n  name: \"M1NTY\",\n  homepage: \"https://m1nty.app\",\n  image_id: \"6ccb7754-acd8-4de2-797e-a587a53d3900\",\n  app: {\n    browser: \"https://m1nty.app\",\n    ios: \"https://apps.apple.com/app/m1nty/id1643737318\",\n    android: \"https://play.google.com/store/apps/details?id=app.m1nty.android\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"m1nty://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-OXRH4XRW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-PUVYKP42.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.zeal/index.js\nvar wallet = {\n  id: \"app.zeal\",\n  name: \"Zeal\",\n  homepage: \"https://www.zeal.app/\",\n  image_id: \"5416fb0b-9aec-4ffe-b7cd-c04c79ea4300\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/zeal-wallet/heamnjbnflcikcggoiplibfommfbkjpj?hl=en&authuser=0\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"app.zeal\",\n  mobile: {\n    native: \"zeal://walletconnect/\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-PUVYKP42.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-QASKZRBP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.sinum/index.js\nvar wallet = {\n  id: \"app.sinum\",\n  name: \"Sinum\",\n  homepage: \"https://sinum.app/\",\n  image_id: \"560d5efa-3fd1-4ac4-9229-f720395ab500\",\n  app: {\n    browser: \"https://app.sinum.io\",\n    ios: \"https://apps.apple.com/gb/app/sinumapp/id6466151819?mt=8\",\n    android: \"https://play.google.com/store/apps/details?id=io.sinum.wallet&referrer=af_tranid%3DnU7l_g2aK5j8sdqWOykU7g%26c%3DMAIN+WEBSITE+TO+ANDROID%26pid%3DMAIN+ANDROID&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"sinum://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-QASKZRBP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-R4JLN24B.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.imem/index.js\nvar wallet = {\n  id: \"app.imem\",\n  name: \"iMe\",\n  homepage: \"https://imem.app/\",\n  image_id: \"25aa3abf-901b-4d82-bb89-c5ade54c0c00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/ime-messenger/id1450480822\",\n    android: \"https://play.google.com/store/apps/details?id=com.iMe.android\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-R4JLN24B.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-RQXR7MZ5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.core/index.js\nvar wallet = {\n  id: \"app.core\",\n  name: \"Core\",\n  homepage: \"https://core.app/?utm_source=referral&utm_medium=website&utm_campaign=walletconnect\",\n  image_id: \"35f9c46e-cc57-4aa7-315d-e6ccb2a1d600\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/core-crypto-wallet-nfts/id6443685999\",\n    android: \"https://play.google.com/store/apps/details?id=com.avaxwallet&hl=en_US&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/core-crypto-wallet-nft-ex/agoakfejjabomempkjlepdflaleeobhb\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"core://\",\n    universal: \"https://core.app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-RQXR7MZ5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-RRYWU2T6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.onto/index.js\nvar wallet = {\n  id: \"app.onto\",\n  name: \"ONTO\",\n  homepage: \"https://onto.app\",\n  image_id: \"14934596-632e-4b29-d45f-61109e959000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/onto-an-ontology-dapp/id1436009823\",\n    android: \"https://play.google.com/store/apps/details?id=com.github.ontio.onto\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ontoprovider://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-RRYWU2T6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-SFALV7Q7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.kabila/index.js\nvar wallet = {\n  id: \"app.kabila\",\n  name: \"Kabila Wallet\",\n  homepage: \"https://kabila.app/\",\n  image_id: \"e6263e25-7f31-4186-5ad4-75e17312c500\",\n  app: {\n    browser: \"https://wallet.kabila.app/\",\n    ios: \"https://apps.apple.com/es/app/kabila-wallet/id6467106529\",\n    android: \"https://play.google.com/store/apps/details?id=wallet.kabila.app&hl=es_419&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/kabila-wallet/cnoepnljjcacmnjnopbhjelpmfokpijm\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://wallet.kabila.app\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://wallet.kabila.app\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-SFALV7Q7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-VCRSWMVS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.pluswallet/index.js\nvar wallet = {\n  id: \"app.pluswallet\",\n  name: \"Plus Wallet\",\n  homepage: \"https://pluswallet.app\",\n  image_id: \"2c21491b-58ce-47bb-ace9-bdef71f43600\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/plus-wallet-app/id6467651848\",\n    android: \"https://play.google.com/store/apps/details?id=com.PlusWallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"pluswallet://\",\n    universal: \"https://pluswallet.app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-VCRSWMVS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-XKLTXZZ5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.herewallet/index.js\nvar wallet = {\n  id: \"app.herewallet\",\n  name: \"HERE Wallet\",\n  homepage: \"https://herewallet.app\",\n  image_id: \"21cadc07-2f45-4860-3358-83a2057b6300\",\n  app: {\n    browser: null,\n    ios: \"https://download.herewallet.app?ios\",\n    android: \"https://download.herewallet.app?android\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"herewallet://\",\n    universal: \"https://my.herewallet\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-XKLTXZZ5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-XMYPKI5F.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.beewallet/index.js\nvar wallet = {\n  id: \"app.beewallet\",\n  name: \"Bee Wallet\",\n  homepage: \"https://www.beewallet.app\",\n  image_id: \"f90bc33f-f085-40cf-7538-fae5ae84f900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/lt/app/bee-for-uniswap-pancakeswap/id1617257467\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"beewallet.app://\",\n    universal: \"https://beewallet.app/wc\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-XMYPKI5F.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-YG5QZHYU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.nightly/index.js\nvar wallet = {\n  id: \"app.nightly\",\n  name: \"Nightly\",\n  homepage: \"https://nightly.app\",\n  image_id: \"7fb6e288-6d7e-4f29-d934-8b3f229c2d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/pl/app/nightly-multichain-wallet/id6444768157\",\n    android: \"https://play.google.com/store/apps/details?id=com.nightlymobile&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/nightly/fiikommddbeccaoicoejoniammnalkfa\",\n    firefox: null,\n    safari: null,\n    edge: \"https://chromewebstore.google.com/detail/nightly/fiikommddbeccaoicoejoniammnalkfa\",\n    opera: \"https://chromewebstore.google.com/detail/nightly/fiikommddbeccaoicoejoniammnalkfa\"\n  },\n  rdns: \"app.nightly\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-YG5QZHYU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app-Z3ZKSY2N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.fizzwallet/index.js\nvar wallet = {\n  id: \"app.fizzwallet\",\n  name: \"Fizz\",\n  homepage: \"https://www.fizzwallet.app/\",\n  image_id: \"f9d4db84-2e9f-4fbe-684f-c1e921c98800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/kr/app/fizz-fun-ezzy-crypto-wallet/id6447460538\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"fizz://wallet-connect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app-Z3ZKSY2N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app.core-FOKZSNJL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.core.extension/index.js\nvar wallet = {\n  id: \"app.core.extension\",\n  name: \"Core\",\n  homepage: \"https://core.app/?utm_source=referral&utm_medium=website&utm_campaign=walletconnect\",\n  image_id: \"core.svg\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/core-crypto-wallet-nfts/id6443685999\",\n    android: \"https://play.google.com/store/apps/details?id=com.avaxwallet&hl=en_US&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/core-crypto-wallet-nft-ex/agoakfejjabomempkjlepdflaleeobhb\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"app.core.extension\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app.core-FOKZSNJL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/app.qubic-45GFYY2N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.qubic.wallet/index.js\nvar wallet = {\n  id: \"app.qubic.wallet\",\n  name: \"Qubic Wallet\",\n  homepage: \"https://wallet.qubic.app\",\n  image_id: \"535c91a5-a43c-4104-233c-439449ffcd00\",\n  app: {\n    browser: \"https://wallet.qubic.app\",\n    ios: \"https://apps.apple.com/app/qubic-%E6%9C%80%E7%B0%A1%E5%96%AE%E4%B8%8A%E6%89%8B%E7%9A%84%E8%99%9B%E6%93%AC%E8%B2%A8%E5%B9%A3%E9%8C%A2%E5%8C%85/id1563987988?itsct=apps_box_link&itscg=30200\",\n    android: \"https://play.google.com/store/apps/details?id=app.qubic.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"qubic://\",\n    universal: \"https://wallet.qubic.app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=app.qubic-45GFYY2N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/arweave-57OCWZ5C.js",
    "content": "import {\n  resolveArweaveScheme\n} from \"./chunk-6FLJU7W7.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  resolveArweaveScheme\n};\n//# sourceMappingURL=arweave-57OCWZ5C.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/auth-ZNEFTCXD.js",
    "content": "import {\n  authenticate,\n  authenticateWithRedirect,\n  getProfiles,\n  getUserEmail,\n  getUserPhoneNumber,\n  linkProfile,\n  preAuthenticate\n} from \"./chunk-65EUCVOP.js\";\nimport \"./chunk-6WNCTW75.js\";\nimport \"./chunk-QLJVAXYD.js\";\nimport \"./chunk-CLN3QXW2.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  authenticate,\n  authenticateWithRedirect,\n  getProfiles,\n  getUserEmail,\n  getUserPhoneNumber,\n  linkProfile,\n  preAuthenticate\n};\n//# sourceMappingURL=auth-ZNEFTCXD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/baby-VXQWXU2X.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/baby.smart/index.js\nvar wallet = {\n  id: \"baby.smart\",\n  name: \"Smart.Baby\",\n  homepage: \"https://smart.baby\",\n  image_id: \"7f408502-e3d1-48f1-a81f-654a3f338f00\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://smartbaby.oss-cn-hongkong.aliyuncs.com/wallet/20230912/e94cee9101074e54a717415cccd11a87.apk\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"smartbody://?uri=\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=baby-VXQWXU2X.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/balanceOf-77XLALLF.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  decodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IERC1155/read/balanceOf.js\nvar FN_SELECTOR = \"0x00fdd58e\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"_owner\"\n  },\n  {\n    type: \"uint256\",\n    name: \"tokenId\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint256\"\n  }\n];\nfunction isBalanceOfSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction encodeBalanceOfParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.owner, options.tokenId]);\n}\nfunction encodeBalanceOf(options) {\n  return FN_SELECTOR + encodeBalanceOfParams(options).slice(2);\n}\nfunction decodeBalanceOfResult(result) {\n  return decodeAbiParameters(FN_OUTPUTS, result)[0];\n}\nasync function balanceOf(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.owner, options.tokenId]\n  });\n}\nexport {\n  FN_SELECTOR,\n  balanceOf,\n  decodeBalanceOfResult,\n  encodeBalanceOf,\n  encodeBalanceOfParams,\n  isBalanceOfSupported\n};\n//# sourceMappingURL=balanceOf-77XLALLF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/biconomy-PIJEZ3DY.js",
    "content": "import {\n  ZERO_ADDRESS\n} from \"./chunk-673YCYST.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport {\n  keccak256\n} from \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport {\n  isHex\n} from \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/transaction/actions/gasless/providers/biconomy.js\nvar BATCH_ID = 0n;\nasync function prepareBiconomyTransaction({ account, serializableTransaction, transaction, gasless }) {\n  const forwarderContract = getContract({\n    address: gasless.relayerForwarderAddress,\n    chain: transaction.chain,\n    client: transaction.client\n  });\n  const nonce = await readContract({\n    contract: forwarderContract,\n    method: \"function getNonce(address,uint256) view returns (uint256)\",\n    params: [account.address, BATCH_ID]\n  });\n  const deadline = Math.floor(Date.now() / 1e3) + (gasless.deadlineSeconds ?? 3600);\n  const request = {\n    from: account.address,\n    to: serializableTransaction.to,\n    token: ZERO_ADDRESS,\n    txGas: serializableTransaction.gas,\n    tokenGasPrice: 0n,\n    batchId: BATCH_ID,\n    batchNonce: nonce,\n    deadline,\n    data: serializableTransaction.data\n  };\n  if (!request.to) {\n    throw new Error(\"Cannot send a transaction without a `to` address\");\n  }\n  if (!request.txGas) {\n    throw new Error(\"Cannot send a transaction without a `gas` value\");\n  }\n  if (!request.data) {\n    throw new Error(\"Cannot send a transaction without a `data` value\");\n  }\n  const message = encodeAbiParameters([\n    { type: \"address\" },\n    { type: \"address\" },\n    { type: \"address\" },\n    { type: \"uint256\" },\n    { type: \"uint256\" },\n    { type: \"uint256\" },\n    { type: \"uint256\" },\n    { type: \"bytes32\" }\n  ], [\n    request.from,\n    request.to,\n    request.token,\n    request.txGas,\n    request.tokenGasPrice,\n    request.batchId,\n    request.batchNonce,\n    keccak256(request.data)\n  ]);\n  const signature = await account.signMessage({ message });\n  return [request, signature];\n}\nasync function relayBiconomyTransaction(options) {\n  var _a;\n  const [request, signature] = await prepareBiconomyTransaction(options);\n  const response = await fetch(\"https://api.biconomy.io/api/v2/meta-tx/native\", {\n    method: \"POST\",\n    body: stringify({\n      apiId: options.gasless.apiId,\n      params: [request, signature],\n      from: request.from,\n      to: request.to,\n      gasLimit: request.txGas\n    }),\n    headers: {\n      \"x-api-key\": options.gasless.apiKey,\n      \"Content-Type\": \"application/json;charset=utf-8\"\n    }\n  });\n  if (!response.ok) {\n    (_a = response.body) == null ? void 0 : _a.cancel();\n    throw new Error(`Failed to send transaction: ${await response.text()}`);\n  }\n  const json = await response.json();\n  const transactionHash = json.txHash;\n  if (isHex(transactionHash)) {\n    return {\n      transactionHash,\n      chain: options.transaction.chain,\n      client: options.transaction.client\n    };\n  }\n  throw new Error(`Failed to send transaction: ${stringify(json)}`);\n}\nexport {\n  prepareBiconomyTransaction,\n  relayBiconomyTransaction\n};\n//# sourceMappingURL=biconomy-PIJEZ3DY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/buyFromListing-NAQIOY7I.js",
    "content": "import {\n  getListing,\n  isGetListingSupported,\n  isListingValid\n} from \"./chunk-M3WBOOWW.js\";\nimport \"./chunk-QLCPWJYR.js\";\nimport \"./chunk-GGVPULQZ.js\";\nimport \"./chunk-6RU56BH7.js\";\nimport \"./chunk-QVNJVROL.js\";\nimport {\n  once,\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport {\n  isNativeTokenAddress\n} from \"./chunk-673YCYST.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/marketplace/__generated__/IDirectListings/write/buyFromListing.js\nvar FN_SELECTOR = \"0x704232dc\";\nvar FN_INPUTS = [\n  {\n    type: \"uint256\",\n    name: \"_listingId\"\n  },\n  {\n    type: \"address\",\n    name: \"_buyFor\"\n  },\n  {\n    type: \"uint256\",\n    name: \"_quantity\"\n  },\n  {\n    type: \"address\",\n    name: \"_currency\"\n  },\n  {\n    type: \"uint256\",\n    name: \"_expectedTotalPrice\"\n  }\n];\nvar FN_OUTPUTS = [];\nfunction isBuyFromListingSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction buyFromListing(options) {\n  const asyncOptions = once(async () => {\n    return \"asyncParams\" in options ? await options.asyncParams() : options;\n  });\n  return prepareContractCall({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: async () => {\n      const resolvedOptions = await asyncOptions();\n      return [\n        resolvedOptions.listingId,\n        resolvedOptions.buyFor,\n        resolvedOptions.quantity,\n        resolvedOptions.currency,\n        resolvedOptions.expectedTotalPrice\n      ];\n    },\n    value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.value;\n    },\n    accessList: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.accessList;\n    },\n    gas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gas;\n    },\n    gasPrice: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gasPrice;\n    },\n    maxFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxFeePerGas;\n    },\n    maxPriorityFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxPriorityFeePerGas;\n    },\n    nonce: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.nonce;\n    },\n    extraGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.extraGas;\n    },\n    erc20Value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.erc20Value;\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/marketplace/direct-listings/write/buyFromListing.js\nfunction buyFromListing2(options) {\n  return buyFromListing({\n    contract: options.contract,\n    asyncParams: async () => {\n      const listing = await getListing({\n        contract: options.contract,\n        listingId: options.listingId\n      });\n      const listingValidity = await isListingValid({\n        contract: options.contract,\n        listing,\n        quantity: options.quantity\n      });\n      if (!listingValidity.valid) {\n        throw new Error(listingValidity.reason);\n      }\n      return {\n        listingId: options.listingId,\n        quantity: options.quantity,\n        buyFor: options.recipient,\n        currency: listing.currencyContractAddress,\n        expectedTotalPrice: listing.pricePerToken * options.quantity,\n        overrides: {\n          value: isNativeTokenAddress(listing.currencyContractAddress) ? listing.pricePerToken * options.quantity : 0n,\n          extraGas: 50000n\n          // add extra gas to account for router call\n        }\n      };\n    }\n  });\n}\nfunction isBuyFromListingSupported2(availableSelectors) {\n  return isBuyFromListingSupported(availableSelectors) && isGetListingSupported(availableSelectors);\n}\nexport {\n  buyFromListing2 as buyFromListing,\n  isBuyFromListingSupported2 as isBuyFromListingSupported\n};\n//# sourceMappingURL=buyFromListing-NAQIOY7I.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/cc-VULA5ISR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/cc.dropp/index.js\nvar wallet = {\n  id: \"cc.dropp\",\n  name: \"Dropp\",\n  homepage: \"https://dropp.cc/\",\n  image_id: \"526fb7ea-d0da-482a-ac84-7e38afea1700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/dropp-cc/id1544894404\",\n    android: \"https://play.google.com/store/apps/details?id=cc.dropp.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/dropp-extension/hgfpnmhnmmneldokmpncjmeijkapgbbf?hl=en-US\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"dropp://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=cc-VULA5ISR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/cc-XODV5KUP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/cc.avacus/index.js\nvar wallet = {\n  id: \"cc.avacus\",\n  name: \"Avacus\",\n  homepage: \"https://avacus.cc\",\n  image_id: \"a7106965-91cc-4a73-4688-c5c72ae0ed00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id6449657442\",\n    android: \"https://play.google.com/store/apps/details?id=io.sowaka.avacus\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"avacus://\",\n    universal: \"https://avacus.app.link\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=cc-XODV5KUP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/cc.localtrade-QLM7DIOM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/cc.localtrade.lab/index.js\nvar wallet = {\n  id: \"cc.localtrade.lab\",\n  name: \"LocalTrade Wallet\",\n  homepage: \"https://lab.localtrade.cc\",\n  image_id: \"fcc60983-74ae-484a-4242-87cb6f05f100\",\n  app: {\n    browser: \"https://docs.localtrade.cc/products/defi-wallet-mvp-for-ios\",\n    ios: \"https://apps.apple.com/app/localtrade-defi-wallet/id1602772298\",\n    android: \"https://play.google.com/store/apps/details?id=com.localtrade.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://ws.lab.localtrade.cc\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=cc.localtrade-QLM7DIOM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ccip-BECV2KBX.js",
    "content": "import {\n  ccipRequest,\n  offchainLookup,\n  offchainLookupAbiItem,\n  offchainLookupSignature\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  ccipRequest,\n  offchainLookup,\n  offchainLookupAbiItem,\n  offchainLookupSignature\n};\n//# sourceMappingURL=ccip-BECV2KBX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ch-DJKOH7L6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/ch.dssecurity/index.js\nvar wallet = {\n  id: \"ch.dssecurity\",\n  name: \"DS Security SA\",\n  homepage: \"https://www.dssecurity.ch\",\n  image_id: \"149a10a6-8914-44ea-424a-236017890100\",\n  app: {\n    browser: \"https://wiki.polygon.technology/docs/tools/wallets/metamask/config-polygon-on-metamask#polygon-scan\",\n    ios: \"https://dssecurity.ch\",\n    android: \"https://dssecurity.ch\",\n    mac: \"https://dssecurity.ch\",\n    windows: \"https://dssecurity.ch\",\n    linux: \"https://dssecurity.ch\",\n    chrome: \"https://dssecurity.ch\",\n    firefox: \"https://dssecurity.ch\",\n    safari: \"https://dssecurity.ch\",\n    edge: \"https://dssecurity.ch\",\n    opera: \"https://dssecurity.ch\"\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://www.coinbase.com/wallet/\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://www.coinbase.com/wallet/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=ch-DJKOH7L6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/checkContractWalletSignature-6DFUQS7E.js",
    "content": "import {\n  isValidSignature\n} from \"./chunk-U55JVTZU.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport {\n  hashMessage\n} from \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport {\n  isHex\n} from \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1271/checkContractWalletSignature.js\nvar MAGIC_VALUE = \"0x1626ba7e\";\nasync function checkContractWalletSignature(options) {\n  if (!isHex(options.signature)) {\n    throw new Error(\"The signature must be a valid hex string.\");\n  }\n  const result = await isValidSignature({\n    contract: options.contract,\n    hash: hashMessage(options.message),\n    signature: options.signature\n  });\n  return result === MAGIC_VALUE;\n}\nexport {\n  checkContractWalletSignature\n};\n//# sourceMappingURL=checkContractWalletSignature-6DFUQS7E.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/checkContractWalletSignedTypedData-SEVCYJA7.js",
    "content": "import {\n  isValidSignature\n} from \"./chunk-U55JVTZU.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport {\n  hashTypedData\n} from \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport {\n  isHex\n} from \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js\nvar MAGIC_VALUE = \"0x1626ba7e\";\nasync function checkContractWalletSignedTypedData(options) {\n  if (!isHex(options.signature)) {\n    throw new Error(\"The signature must be a valid hex string.\");\n  }\n  const result = await isValidSignature({\n    contract: options.contract,\n    hash: hashTypedData(options.data),\n    signature: options.signature\n  });\n  return result === MAGIC_VALUE;\n}\nexport {\n  checkContractWalletSignedTypedData\n};\n//# sourceMappingURL=checkContractWalletSignedTypedData-SEVCYJA7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-253DMNI3.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport {\n  decodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IDropSinglePhase/read/claimCondition.js\nvar FN_SELECTOR = \"0xd637ed59\";\nvar FN_INPUTS = [];\nvar FN_OUTPUTS = [\n  {\n    type: \"tuple\",\n    name: \"condition\",\n    components: [\n      {\n        type: \"uint256\",\n        name: \"startTimestamp\"\n      },\n      {\n        type: \"uint256\",\n        name: \"maxClaimableSupply\"\n      },\n      {\n        type: \"uint256\",\n        name: \"supplyClaimed\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantityLimitPerWallet\"\n      },\n      {\n        type: \"bytes32\",\n        name: \"merkleRoot\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      },\n      {\n        type: \"string\",\n        name: \"metadata\"\n      }\n    ]\n  }\n];\nfunction isClaimConditionSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction decodeClaimConditionResult(result) {\n  return decodeAbiParameters(FN_OUTPUTS, result)[0];\n}\nasync function claimCondition(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: []\n  });\n}\n\nexport {\n  FN_SELECTOR,\n  isClaimConditionSupported,\n  decodeClaimConditionResult,\n  claimCondition\n};\n//# sourceMappingURL=chunk-253DMNI3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-2HYPHUAF.js",
    "content": "import {\n  getDefaultAccountFactory\n} from \"./chunk-FNI7M3UI.js\";\nimport {\n  isContractDeployed\n} from \"./chunk-Q3TN3POE.js\";\nimport {\n  createWalletEmitter,\n  trackConnect\n} from \"./chunk-CLN3QXW2.js\";\nimport {\n  isZkSyncChain\n} from \"./chunk-7ZCK2FX5.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  getCachedChainIfExists\n} from \"./chunk-TFBEDS4S.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/smart/smart-wallet.js\nfunction smartWallet(createOptions) {\n  const emitter = createWalletEmitter();\n  let account = void 0;\n  let adminAccount = void 0;\n  let chain = void 0;\n  let lastConnectOptions;\n  const _smartWallet = {\n    id: \"smart\",\n    subscribe: emitter.subscribe,\n    getChain() {\n      if (!chain) {\n        return void 0;\n      }\n      chain = getCachedChainIfExists(chain.id) || chain;\n      return chain;\n    },\n    getConfig: () => createOptions,\n    getAccount: () => account,\n    getAdminAccount: () => adminAccount,\n    autoConnect: async (options) => {\n      const { connectSmartWallet } = await import(\"./smart-7AYCEGLU.js\");\n      const [connectedAccount, connectedChain] = await connectSmartWallet(_smartWallet, options, createOptions);\n      lastConnectOptions = options;\n      account = connectedAccount;\n      chain = connectedChain;\n      trackConnect({\n        client: options.client,\n        walletType: \"smart\",\n        walletAddress: account.address,\n        chainId: chain.id\n      });\n      return account;\n    },\n    connect: async (options) => {\n      const { connectSmartWallet } = await import(\"./smart-7AYCEGLU.js\");\n      const [connectedAccount, connectedChain] = await connectSmartWallet(_smartWallet, options, createOptions);\n      adminAccount = options.personalAccount;\n      lastConnectOptions = options;\n      account = connectedAccount;\n      chain = connectedChain;\n      trackConnect({\n        client: options.client,\n        walletType: \"smart\",\n        walletAddress: account.address,\n        chainId: chain.id\n      });\n      emitter.emit(\"accountChanged\", account);\n      return account;\n    },\n    disconnect: async () => {\n      account = void 0;\n      chain = void 0;\n      const { disconnectSmartWallet } = await import(\"./smart-7AYCEGLU.js\");\n      await disconnectSmartWallet(_smartWallet);\n      emitter.emit(\"disconnect\", void 0);\n    },\n    switchChain: async (newChain) => {\n      var _a;\n      if (!lastConnectOptions) {\n        throw new Error(\"Cannot switch chain without a previous connection\");\n      }\n      const isZksyncChain = await isZkSyncChain(newChain);\n      if (!isZksyncChain) {\n        const factory = getContract({\n          address: createOptions.factoryAddress || getDefaultAccountFactory((_a = createOptions.overrides) == null ? void 0 : _a.entrypointAddress),\n          chain: newChain,\n          client: lastConnectOptions.client\n        });\n        const isDeployed = await isContractDeployed(factory);\n        if (!isDeployed) {\n          throw new Error(`Factory contract not deployed on chain: ${newChain.id}`);\n        }\n      }\n      const { connectSmartWallet } = await import(\"./smart-7AYCEGLU.js\");\n      const [connectedAccount, connectedChain] = await connectSmartWallet(_smartWallet, { ...lastConnectOptions, chain: newChain }, createOptions);\n      account = connectedAccount;\n      chain = connectedChain;\n      emitter.emit(\"chainChanged\", newChain);\n    }\n  };\n  return _smartWallet;\n}\n\nexport {\n  smartWallet\n};\n//# sourceMappingURL=chunk-2HYPHUAF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-2MTJELC7.js",
    "content": "import {\n  __commonJS\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/react/cjs/react.development.js\nvar require_react_development = __commonJS({\n  \"node_modules/react/cjs/react.development.js\"(exports, module) {\n    \"use strict\";\n    if (true) {\n      (function() {\n        \"use strict\";\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n        }\n        var ReactVersion = \"18.3.1\";\n        var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n        var REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\n        var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n        var REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\n        var REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n        var REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\n        var REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\n        var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n        var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n        var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n        var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n        var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n        var REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\n        var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n        var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n        function getIteratorFn(maybeIterable) {\n          if (maybeIterable === null || typeof maybeIterable !== \"object\") {\n            return null;\n          }\n          var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n          if (typeof maybeIterator === \"function\") {\n            return maybeIterator;\n          }\n          return null;\n        }\n        var ReactCurrentDispatcher = {\n          /**\n           * @internal\n           * @type {ReactComponent}\n           */\n          current: null\n        };\n        var ReactCurrentBatchConfig = {\n          transition: null\n        };\n        var ReactCurrentActQueue = {\n          current: null,\n          // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n          isBatchingLegacy: false,\n          didScheduleLegacyUpdate: false\n        };\n        var ReactCurrentOwner = {\n          /**\n           * @internal\n           * @type {ReactComponent}\n           */\n          current: null\n        };\n        var ReactDebugCurrentFrame = {};\n        var currentExtraStackFrame = null;\n        function setExtraStackFrame(stack) {\n          {\n            currentExtraStackFrame = stack;\n          }\n        }\n        {\n          ReactDebugCurrentFrame.setExtraStackFrame = function(stack) {\n            {\n              currentExtraStackFrame = stack;\n            }\n          };\n          ReactDebugCurrentFrame.getCurrentStack = null;\n          ReactDebugCurrentFrame.getStackAddendum = function() {\n            var stack = \"\";\n            if (currentExtraStackFrame) {\n              stack += currentExtraStackFrame;\n            }\n            var impl = ReactDebugCurrentFrame.getCurrentStack;\n            if (impl) {\n              stack += impl() || \"\";\n            }\n            return stack;\n          };\n        }\n        var enableScopeAPI = false;\n        var enableCacheElement = false;\n        var enableTransitionTracing = false;\n        var enableLegacyHidden = false;\n        var enableDebugTracing = false;\n        var ReactSharedInternals = {\n          ReactCurrentDispatcher,\n          ReactCurrentBatchConfig,\n          ReactCurrentOwner\n        };\n        {\n          ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n          ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n        }\n        function warn(format) {\n          {\n            {\n              for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n                args[_key - 1] = arguments[_key];\n              }\n              printWarning(\"warn\", format, args);\n            }\n          }\n        }\n        function error(format) {\n          {\n            {\n              for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n                args[_key2 - 1] = arguments[_key2];\n              }\n              printWarning(\"error\", format, args);\n            }\n          }\n        }\n        function printWarning(level, format, args) {\n          {\n            var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame;\n            var stack = ReactDebugCurrentFrame2.getStackAddendum();\n            if (stack !== \"\") {\n              format += \"%s\";\n              args = args.concat([stack]);\n            }\n            var argsWithFormat = args.map(function(item) {\n              return String(item);\n            });\n            argsWithFormat.unshift(\"Warning: \" + format);\n            Function.prototype.apply.call(console[level], console, argsWithFormat);\n          }\n        }\n        var didWarnStateUpdateForUnmountedComponent = {};\n        function warnNoop(publicInstance, callerName) {\n          {\n            var _constructor = publicInstance.constructor;\n            var componentName = _constructor && (_constructor.displayName || _constructor.name) || \"ReactClass\";\n            var warningKey = componentName + \".\" + callerName;\n            if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n              return;\n            }\n            error(\"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\", callerName, componentName);\n            didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n          }\n        }\n        var ReactNoopUpdateQueue = {\n          /**\n           * Checks whether or not this composite component is mounted.\n           * @param {ReactClass} publicInstance The instance we want to test.\n           * @return {boolean} True if mounted, false otherwise.\n           * @protected\n           * @final\n           */\n          isMounted: function(publicInstance) {\n            return false;\n          },\n          /**\n           * Forces an update. This should only be invoked when it is known with\n           * certainty that we are **not** in a DOM transaction.\n           *\n           * You may want to call this when you know that some deeper aspect of the\n           * component's state has changed but `setState` was not called.\n           *\n           * This will not invoke `shouldComponentUpdate`, but it will invoke\n           * `componentWillUpdate` and `componentDidUpdate`.\n           *\n           * @param {ReactClass} publicInstance The instance that should rerender.\n           * @param {?function} callback Called after component is updated.\n           * @param {?string} callerName name of the calling function in the public API.\n           * @internal\n           */\n          enqueueForceUpdate: function(publicInstance, callback, callerName) {\n            warnNoop(publicInstance, \"forceUpdate\");\n          },\n          /**\n           * Replaces all of the state. Always use this or `setState` to mutate state.\n           * You should treat `this.state` as immutable.\n           *\n           * There is no guarantee that `this.state` will be immediately updated, so\n           * accessing `this.state` after calling this method may return the old value.\n           *\n           * @param {ReactClass} publicInstance The instance that should rerender.\n           * @param {object} completeState Next state.\n           * @param {?function} callback Called after component is updated.\n           * @param {?string} callerName name of the calling function in the public API.\n           * @internal\n           */\n          enqueueReplaceState: function(publicInstance, completeState, callback, callerName) {\n            warnNoop(publicInstance, \"replaceState\");\n          },\n          /**\n           * Sets a subset of the state. This only exists because _pendingState is\n           * internal. This provides a merging strategy that is not available to deep\n           * properties which is confusing. TODO: Expose pendingState or don't use it\n           * during the merge.\n           *\n           * @param {ReactClass} publicInstance The instance that should rerender.\n           * @param {object} partialState Next partial state to be merged with state.\n           * @param {?function} callback Called after component is updated.\n           * @param {?string} Name of the calling function in the public API.\n           * @internal\n           */\n          enqueueSetState: function(publicInstance, partialState, callback, callerName) {\n            warnNoop(publicInstance, \"setState\");\n          }\n        };\n        var assign = Object.assign;\n        var emptyObject = {};\n        {\n          Object.freeze(emptyObject);\n        }\n        function Component(props, context, updater) {\n          this.props = props;\n          this.context = context;\n          this.refs = emptyObject;\n          this.updater = updater || ReactNoopUpdateQueue;\n        }\n        Component.prototype.isReactComponent = {};\n        Component.prototype.setState = function(partialState, callback) {\n          if (typeof partialState !== \"object\" && typeof partialState !== \"function\" && partialState != null) {\n            throw new Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");\n          }\n          this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n        };\n        Component.prototype.forceUpdate = function(callback) {\n          this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n        };\n        {\n          var deprecatedAPIs = {\n            isMounted: [\"isMounted\", \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"],\n            replaceState: [\"replaceState\", \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"]\n          };\n          var defineDeprecationWarning = function(methodName, info) {\n            Object.defineProperty(Component.prototype, methodName, {\n              get: function() {\n                warn(\"%s(...) is deprecated in plain JavaScript React classes. %s\", info[0], info[1]);\n                return void 0;\n              }\n            });\n          };\n          for (var fnName in deprecatedAPIs) {\n            if (deprecatedAPIs.hasOwnProperty(fnName)) {\n              defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n            }\n          }\n        }\n        function ComponentDummy() {\n        }\n        ComponentDummy.prototype = Component.prototype;\n        function PureComponent(props, context, updater) {\n          this.props = props;\n          this.context = context;\n          this.refs = emptyObject;\n          this.updater = updater || ReactNoopUpdateQueue;\n        }\n        var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\n        pureComponentPrototype.constructor = PureComponent;\n        assign(pureComponentPrototype, Component.prototype);\n        pureComponentPrototype.isPureReactComponent = true;\n        function createRef() {\n          var refObject = {\n            current: null\n          };\n          {\n            Object.seal(refObject);\n          }\n          return refObject;\n        }\n        var isArrayImpl = Array.isArray;\n        function isArray(a) {\n          return isArrayImpl(a);\n        }\n        function typeName(value) {\n          {\n            var hasToStringTag = typeof Symbol === \"function\" && Symbol.toStringTag;\n            var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || \"Object\";\n            return type;\n          }\n        }\n        function willCoercionThrow(value) {\n          {\n            try {\n              testStringCoercion(value);\n              return false;\n            } catch (e) {\n              return true;\n            }\n          }\n        }\n        function testStringCoercion(value) {\n          return \"\" + value;\n        }\n        function checkKeyStringCoercion(value) {\n          {\n            if (willCoercionThrow(value)) {\n              error(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\", typeName(value));\n              return testStringCoercion(value);\n            }\n          }\n        }\n        function getWrappedName(outerType, innerType, wrapperName) {\n          var displayName = outerType.displayName;\n          if (displayName) {\n            return displayName;\n          }\n          var functionName = innerType.displayName || innerType.name || \"\";\n          return functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n        }\n        function getContextName(type) {\n          return type.displayName || \"Context\";\n        }\n        function getComponentNameFromType(type) {\n          if (type == null) {\n            return null;\n          }\n          {\n            if (typeof type.tag === \"number\") {\n              error(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\");\n            }\n          }\n          if (typeof type === \"function\") {\n            return type.displayName || type.name || null;\n          }\n          if (typeof type === \"string\") {\n            return type;\n          }\n          switch (type) {\n            case REACT_FRAGMENT_TYPE:\n              return \"Fragment\";\n            case REACT_PORTAL_TYPE:\n              return \"Portal\";\n            case REACT_PROFILER_TYPE:\n              return \"Profiler\";\n            case REACT_STRICT_MODE_TYPE:\n              return \"StrictMode\";\n            case REACT_SUSPENSE_TYPE:\n              return \"Suspense\";\n            case REACT_SUSPENSE_LIST_TYPE:\n              return \"SuspenseList\";\n          }\n          if (typeof type === \"object\") {\n            switch (type.$$typeof) {\n              case REACT_CONTEXT_TYPE:\n                var context = type;\n                return getContextName(context) + \".Consumer\";\n              case REACT_PROVIDER_TYPE:\n                var provider = type;\n                return getContextName(provider._context) + \".Provider\";\n              case REACT_FORWARD_REF_TYPE:\n                return getWrappedName(type, type.render, \"ForwardRef\");\n              case REACT_MEMO_TYPE:\n                var outerName = type.displayName || null;\n                if (outerName !== null) {\n                  return outerName;\n                }\n                return getComponentNameFromType(type.type) || \"Memo\";\n              case REACT_LAZY_TYPE: {\n                var lazyComponent = type;\n                var payload = lazyComponent._payload;\n                var init = lazyComponent._init;\n                try {\n                  return getComponentNameFromType(init(payload));\n                } catch (x) {\n                  return null;\n                }\n              }\n            }\n          }\n          return null;\n        }\n        var hasOwnProperty = Object.prototype.hasOwnProperty;\n        var RESERVED_PROPS = {\n          key: true,\n          ref: true,\n          __self: true,\n          __source: true\n        };\n        var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n        {\n          didWarnAboutStringRefs = {};\n        }\n        function hasValidRef(config) {\n          {\n            if (hasOwnProperty.call(config, \"ref\")) {\n              var getter = Object.getOwnPropertyDescriptor(config, \"ref\").get;\n              if (getter && getter.isReactWarning) {\n                return false;\n              }\n            }\n          }\n          return config.ref !== void 0;\n        }\n        function hasValidKey(config) {\n          {\n            if (hasOwnProperty.call(config, \"key\")) {\n              var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n              if (getter && getter.isReactWarning) {\n                return false;\n              }\n            }\n          }\n          return config.key !== void 0;\n        }\n        function defineKeyPropWarningGetter(props, displayName) {\n          var warnAboutAccessingKey = function() {\n            {\n              if (!specialPropKeyWarningShown) {\n                specialPropKeyWarningShown = true;\n                error(\"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", displayName);\n              }\n            }\n          };\n          warnAboutAccessingKey.isReactWarning = true;\n          Object.defineProperty(props, \"key\", {\n            get: warnAboutAccessingKey,\n            configurable: true\n          });\n        }\n        function defineRefPropWarningGetter(props, displayName) {\n          var warnAboutAccessingRef = function() {\n            {\n              if (!specialPropRefWarningShown) {\n                specialPropRefWarningShown = true;\n                error(\"%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", displayName);\n              }\n            }\n          };\n          warnAboutAccessingRef.isReactWarning = true;\n          Object.defineProperty(props, \"ref\", {\n            get: warnAboutAccessingRef,\n            configurable: true\n          });\n        }\n        function warnIfStringRefCannotBeAutoConverted(config) {\n          {\n            if (typeof config.ref === \"string\" && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n              var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n              if (!didWarnAboutStringRefs[componentName]) {\n                error('Component \"%s\" contains the string ref \"%s\". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n                didWarnAboutStringRefs[componentName] = true;\n              }\n            }\n          }\n        }\n        var ReactElement = function(type, key, ref, self, source, owner, props) {\n          var element = {\n            // This tag allows us to uniquely identify this as a React Element\n            $$typeof: REACT_ELEMENT_TYPE,\n            // Built-in properties that belong on the element\n            type,\n            key,\n            ref,\n            props,\n            // Record the component responsible for creating this element.\n            _owner: owner\n          };\n          {\n            element._store = {};\n            Object.defineProperty(element._store, \"validated\", {\n              configurable: false,\n              enumerable: false,\n              writable: true,\n              value: false\n            });\n            Object.defineProperty(element, \"_self\", {\n              configurable: false,\n              enumerable: false,\n              writable: false,\n              value: self\n            });\n            Object.defineProperty(element, \"_source\", {\n              configurable: false,\n              enumerable: false,\n              writable: false,\n              value: source\n            });\n            if (Object.freeze) {\n              Object.freeze(element.props);\n              Object.freeze(element);\n            }\n          }\n          return element;\n        };\n        function createElement(type, config, children) {\n          var propName;\n          var props = {};\n          var key = null;\n          var ref = null;\n          var self = null;\n          var source = null;\n          if (config != null) {\n            if (hasValidRef(config)) {\n              ref = config.ref;\n              {\n                warnIfStringRefCannotBeAutoConverted(config);\n              }\n            }\n            if (hasValidKey(config)) {\n              {\n                checkKeyStringCoercion(config.key);\n              }\n              key = \"\" + config.key;\n            }\n            self = config.__self === void 0 ? null : config.__self;\n            source = config.__source === void 0 ? null : config.__source;\n            for (propName in config) {\n              if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n                props[propName] = config[propName];\n              }\n            }\n          }\n          var childrenLength = arguments.length - 2;\n          if (childrenLength === 1) {\n            props.children = children;\n          } else if (childrenLength > 1) {\n            var childArray = Array(childrenLength);\n            for (var i = 0; i < childrenLength; i++) {\n              childArray[i] = arguments[i + 2];\n            }\n            {\n              if (Object.freeze) {\n                Object.freeze(childArray);\n              }\n            }\n            props.children = childArray;\n          }\n          if (type && type.defaultProps) {\n            var defaultProps = type.defaultProps;\n            for (propName in defaultProps) {\n              if (props[propName] === void 0) {\n                props[propName] = defaultProps[propName];\n              }\n            }\n          }\n          {\n            if (key || ref) {\n              var displayName = typeof type === \"function\" ? type.displayName || type.name || \"Unknown\" : type;\n              if (key) {\n                defineKeyPropWarningGetter(props, displayName);\n              }\n              if (ref) {\n                defineRefPropWarningGetter(props, displayName);\n              }\n            }\n          }\n          return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n        }\n        function cloneAndReplaceKey(oldElement, newKey) {\n          var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n          return newElement;\n        }\n        function cloneElement(element, config, children) {\n          if (element === null || element === void 0) {\n            throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n          }\n          var propName;\n          var props = assign({}, element.props);\n          var key = element.key;\n          var ref = element.ref;\n          var self = element._self;\n          var source = element._source;\n          var owner = element._owner;\n          if (config != null) {\n            if (hasValidRef(config)) {\n              ref = config.ref;\n              owner = ReactCurrentOwner.current;\n            }\n            if (hasValidKey(config)) {\n              {\n                checkKeyStringCoercion(config.key);\n              }\n              key = \"\" + config.key;\n            }\n            var defaultProps;\n            if (element.type && element.type.defaultProps) {\n              defaultProps = element.type.defaultProps;\n            }\n            for (propName in config) {\n              if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n                if (config[propName] === void 0 && defaultProps !== void 0) {\n                  props[propName] = defaultProps[propName];\n                } else {\n                  props[propName] = config[propName];\n                }\n              }\n            }\n          }\n          var childrenLength = arguments.length - 2;\n          if (childrenLength === 1) {\n            props.children = children;\n          } else if (childrenLength > 1) {\n            var childArray = Array(childrenLength);\n            for (var i = 0; i < childrenLength; i++) {\n              childArray[i] = arguments[i + 2];\n            }\n            props.children = childArray;\n          }\n          return ReactElement(element.type, key, ref, self, source, owner, props);\n        }\n        function isValidElement(object) {\n          return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n        }\n        var SEPARATOR = \".\";\n        var SUBSEPARATOR = \":\";\n        function escape(key) {\n          var escapeRegex = /[=:]/g;\n          var escaperLookup = {\n            \"=\": \"=0\",\n            \":\": \"=2\"\n          };\n          var escapedString = key.replace(escapeRegex, function(match) {\n            return escaperLookup[match];\n          });\n          return \"$\" + escapedString;\n        }\n        var didWarnAboutMaps = false;\n        var userProvidedKeyEscapeRegex = /\\/+/g;\n        function escapeUserProvidedKey(text) {\n          return text.replace(userProvidedKeyEscapeRegex, \"$&/\");\n        }\n        function getElementKey(element, index) {\n          if (typeof element === \"object\" && element !== null && element.key != null) {\n            {\n              checkKeyStringCoercion(element.key);\n            }\n            return escape(\"\" + element.key);\n          }\n          return index.toString(36);\n        }\n        function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n          var type = typeof children;\n          if (type === \"undefined\" || type === \"boolean\") {\n            children = null;\n          }\n          var invokeCallback = false;\n          if (children === null) {\n            invokeCallback = true;\n          } else {\n            switch (type) {\n              case \"string\":\n              case \"number\":\n                invokeCallback = true;\n                break;\n              case \"object\":\n                switch (children.$$typeof) {\n                  case REACT_ELEMENT_TYPE:\n                  case REACT_PORTAL_TYPE:\n                    invokeCallback = true;\n                }\n            }\n          }\n          if (invokeCallback) {\n            var _child = children;\n            var mappedChild = callback(_child);\n            var childKey = nameSoFar === \"\" ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n            if (isArray(mappedChild)) {\n              var escapedChildKey = \"\";\n              if (childKey != null) {\n                escapedChildKey = escapeUserProvidedKey(childKey) + \"/\";\n              }\n              mapIntoArray(mappedChild, array, escapedChildKey, \"\", function(c) {\n                return c;\n              });\n            } else if (mappedChild != null) {\n              if (isValidElement(mappedChild)) {\n                {\n                  if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n                    checkKeyStringCoercion(mappedChild.key);\n                  }\n                }\n                mappedChild = cloneAndReplaceKey(\n                  mappedChild,\n                  // Keep both the (mapped) and old keys if they differ, just as\n                  // traverseAllChildren used to do for objects as children\n                  escapedPrefix + // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n                  (mappedChild.key && (!_child || _child.key !== mappedChild.key) ? (\n                    // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n                    // eslint-disable-next-line react-internal/safe-string-coercion\n                    escapeUserProvidedKey(\"\" + mappedChild.key) + \"/\"\n                  ) : \"\") + childKey\n                );\n              }\n              array.push(mappedChild);\n            }\n            return 1;\n          }\n          var child;\n          var nextName;\n          var subtreeCount = 0;\n          var nextNamePrefix = nameSoFar === \"\" ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n          if (isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n              child = children[i];\n              nextName = nextNamePrefix + getElementKey(child, i);\n              subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n            }\n          } else {\n            var iteratorFn = getIteratorFn(children);\n            if (typeof iteratorFn === \"function\") {\n              var iterableChildren = children;\n              {\n                if (iteratorFn === iterableChildren.entries) {\n                  if (!didWarnAboutMaps) {\n                    warn(\"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\");\n                  }\n                  didWarnAboutMaps = true;\n                }\n              }\n              var iterator = iteratorFn.call(iterableChildren);\n              var step;\n              var ii = 0;\n              while (!(step = iterator.next()).done) {\n                child = step.value;\n                nextName = nextNamePrefix + getElementKey(child, ii++);\n                subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n              }\n            } else if (type === \"object\") {\n              var childrenString = String(children);\n              throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === \"[object Object]\" ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\" : childrenString) + \"). If you meant to render a collection of children, use an array instead.\");\n            }\n          }\n          return subtreeCount;\n        }\n        function mapChildren(children, func, context) {\n          if (children == null) {\n            return children;\n          }\n          var result = [];\n          var count = 0;\n          mapIntoArray(children, result, \"\", \"\", function(child) {\n            return func.call(context, child, count++);\n          });\n          return result;\n        }\n        function countChildren(children) {\n          var n = 0;\n          mapChildren(children, function() {\n            n++;\n          });\n          return n;\n        }\n        function forEachChildren(children, forEachFunc, forEachContext) {\n          mapChildren(children, function() {\n            forEachFunc.apply(this, arguments);\n          }, forEachContext);\n        }\n        function toArray(children) {\n          return mapChildren(children, function(child) {\n            return child;\n          }) || [];\n        }\n        function onlyChild(children) {\n          if (!isValidElement(children)) {\n            throw new Error(\"React.Children.only expected to receive a single React element child.\");\n          }\n          return children;\n        }\n        function createContext(defaultValue) {\n          var context = {\n            $$typeof: REACT_CONTEXT_TYPE,\n            // As a workaround to support multiple concurrent renderers, we categorize\n            // some renderers as primary and others as secondary. We only expect\n            // there to be two concurrent renderers at most: React Native (primary) and\n            // Fabric (secondary); React DOM (primary) and React ART (secondary).\n            // Secondary renderers store their context values on separate fields.\n            _currentValue: defaultValue,\n            _currentValue2: defaultValue,\n            // Used to track how many concurrent renderers this context currently\n            // supports within in a single renderer. Such as parallel server rendering.\n            _threadCount: 0,\n            // These are circular\n            Provider: null,\n            Consumer: null,\n            // Add these to use same hidden class in VM as ServerContext\n            _defaultValue: null,\n            _globalName: null\n          };\n          context.Provider = {\n            $$typeof: REACT_PROVIDER_TYPE,\n            _context: context\n          };\n          var hasWarnedAboutUsingNestedContextConsumers = false;\n          var hasWarnedAboutUsingConsumerProvider = false;\n          var hasWarnedAboutDisplayNameOnConsumer = false;\n          {\n            var Consumer = {\n              $$typeof: REACT_CONTEXT_TYPE,\n              _context: context\n            };\n            Object.defineProperties(Consumer, {\n              Provider: {\n                get: function() {\n                  if (!hasWarnedAboutUsingConsumerProvider) {\n                    hasWarnedAboutUsingConsumerProvider = true;\n                    error(\"Rendering <Context.Consumer.Provider> is not supported and will be removed in a future major release. Did you mean to render <Context.Provider> instead?\");\n                  }\n                  return context.Provider;\n                },\n                set: function(_Provider) {\n                  context.Provider = _Provider;\n                }\n              },\n              _currentValue: {\n                get: function() {\n                  return context._currentValue;\n                },\n                set: function(_currentValue) {\n                  context._currentValue = _currentValue;\n                }\n              },\n              _currentValue2: {\n                get: function() {\n                  return context._currentValue2;\n                },\n                set: function(_currentValue2) {\n                  context._currentValue2 = _currentValue2;\n                }\n              },\n              _threadCount: {\n                get: function() {\n                  return context._threadCount;\n                },\n                set: function(_threadCount) {\n                  context._threadCount = _threadCount;\n                }\n              },\n              Consumer: {\n                get: function() {\n                  if (!hasWarnedAboutUsingNestedContextConsumers) {\n                    hasWarnedAboutUsingNestedContextConsumers = true;\n                    error(\"Rendering <Context.Consumer.Consumer> is not supported and will be removed in a future major release. Did you mean to render <Context.Consumer> instead?\");\n                  }\n                  return context.Consumer;\n                }\n              },\n              displayName: {\n                get: function() {\n                  return context.displayName;\n                },\n                set: function(displayName) {\n                  if (!hasWarnedAboutDisplayNameOnConsumer) {\n                    warn(\"Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n                    hasWarnedAboutDisplayNameOnConsumer = true;\n                  }\n                }\n              }\n            });\n            context.Consumer = Consumer;\n          }\n          {\n            context._currentRenderer = null;\n            context._currentRenderer2 = null;\n          }\n          return context;\n        }\n        var Uninitialized = -1;\n        var Pending = 0;\n        var Resolved = 1;\n        var Rejected = 2;\n        function lazyInitializer(payload) {\n          if (payload._status === Uninitialized) {\n            var ctor = payload._result;\n            var thenable = ctor();\n            thenable.then(function(moduleObject2) {\n              if (payload._status === Pending || payload._status === Uninitialized) {\n                var resolved = payload;\n                resolved._status = Resolved;\n                resolved._result = moduleObject2;\n              }\n            }, function(error2) {\n              if (payload._status === Pending || payload._status === Uninitialized) {\n                var rejected = payload;\n                rejected._status = Rejected;\n                rejected._result = error2;\n              }\n            });\n            if (payload._status === Uninitialized) {\n              var pending = payload;\n              pending._status = Pending;\n              pending._result = thenable;\n            }\n          }\n          if (payload._status === Resolved) {\n            var moduleObject = payload._result;\n            {\n              if (moduleObject === void 0) {\n                error(\"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n  const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\", moduleObject);\n              }\n            }\n            {\n              if (!(\"default\" in moduleObject)) {\n                error(\"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n  const MyComponent = lazy(() => import('./MyComponent'))\", moduleObject);\n              }\n            }\n            return moduleObject.default;\n          } else {\n            throw payload._result;\n          }\n        }\n        function lazy(ctor) {\n          var payload = {\n            // We use these fields to store the result.\n            _status: Uninitialized,\n            _result: ctor\n          };\n          var lazyType = {\n            $$typeof: REACT_LAZY_TYPE,\n            _payload: payload,\n            _init: lazyInitializer\n          };\n          {\n            var defaultProps;\n            var propTypes;\n            Object.defineProperties(lazyType, {\n              defaultProps: {\n                configurable: true,\n                get: function() {\n                  return defaultProps;\n                },\n                set: function(newDefaultProps) {\n                  error(\"React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it.\");\n                  defaultProps = newDefaultProps;\n                  Object.defineProperty(lazyType, \"defaultProps\", {\n                    enumerable: true\n                  });\n                }\n              },\n              propTypes: {\n                configurable: true,\n                get: function() {\n                  return propTypes;\n                },\n                set: function(newPropTypes) {\n                  error(\"React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it.\");\n                  propTypes = newPropTypes;\n                  Object.defineProperty(lazyType, \"propTypes\", {\n                    enumerable: true\n                  });\n                }\n              }\n            });\n          }\n          return lazyType;\n        }\n        function forwardRef(render) {\n          {\n            if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n              error(\"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\");\n            } else if (typeof render !== \"function\") {\n              error(\"forwardRef requires a render function but was given %s.\", render === null ? \"null\" : typeof render);\n            } else {\n              if (render.length !== 0 && render.length !== 2) {\n                error(\"forwardRef render functions accept exactly two parameters: props and ref. %s\", render.length === 1 ? \"Did you forget to use the ref parameter?\" : \"Any additional parameter will be undefined.\");\n              }\n            }\n            if (render != null) {\n              if (render.defaultProps != null || render.propTypes != null) {\n                error(\"forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?\");\n              }\n            }\n          }\n          var elementType = {\n            $$typeof: REACT_FORWARD_REF_TYPE,\n            render\n          };\n          {\n            var ownName;\n            Object.defineProperty(elementType, \"displayName\", {\n              enumerable: false,\n              configurable: true,\n              get: function() {\n                return ownName;\n              },\n              set: function(name) {\n                ownName = name;\n                if (!render.name && !render.displayName) {\n                  render.displayName = name;\n                }\n              }\n            });\n          }\n          return elementType;\n        }\n        var REACT_MODULE_REFERENCE;\n        {\n          REACT_MODULE_REFERENCE = Symbol.for(\"react.module.reference\");\n        }\n        function isValidElementType(type) {\n          if (typeof type === \"string\" || typeof type === \"function\") {\n            return true;\n          }\n          if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {\n            return true;\n          }\n          if (typeof type === \"object\" && type !== null) {\n            if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n            // types supported by any Flight configuration anywhere since\n            // we don't know which Flight build this will end up being used\n            // with.\n            type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) {\n              return true;\n            }\n          }\n          return false;\n        }\n        function memo(type, compare) {\n          {\n            if (!isValidElementType(type)) {\n              error(\"memo: The first argument must be a component. Instead received: %s\", type === null ? \"null\" : typeof type);\n            }\n          }\n          var elementType = {\n            $$typeof: REACT_MEMO_TYPE,\n            type,\n            compare: compare === void 0 ? null : compare\n          };\n          {\n            var ownName;\n            Object.defineProperty(elementType, \"displayName\", {\n              enumerable: false,\n              configurable: true,\n              get: function() {\n                return ownName;\n              },\n              set: function(name) {\n                ownName = name;\n                if (!type.name && !type.displayName) {\n                  type.displayName = name;\n                }\n              }\n            });\n          }\n          return elementType;\n        }\n        function resolveDispatcher() {\n          var dispatcher = ReactCurrentDispatcher.current;\n          {\n            if (dispatcher === null) {\n              error(\"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\");\n            }\n          }\n          return dispatcher;\n        }\n        function useContext(Context) {\n          var dispatcher = resolveDispatcher();\n          {\n            if (Context._context !== void 0) {\n              var realContext = Context._context;\n              if (realContext.Consumer === Context) {\n                error(\"Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?\");\n              } else if (realContext.Provider === Context) {\n                error(\"Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?\");\n              }\n            }\n          }\n          return dispatcher.useContext(Context);\n        }\n        function useState(initialState) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useState(initialState);\n        }\n        function useReducer(reducer, initialArg, init) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useReducer(reducer, initialArg, init);\n        }\n        function useRef(initialValue) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useRef(initialValue);\n        }\n        function useEffect(create, deps) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useEffect(create, deps);\n        }\n        function useInsertionEffect(create, deps) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useInsertionEffect(create, deps);\n        }\n        function useLayoutEffect(create, deps) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useLayoutEffect(create, deps);\n        }\n        function useCallback(callback, deps) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useCallback(callback, deps);\n        }\n        function useMemo(create, deps) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useMemo(create, deps);\n        }\n        function useImperativeHandle(ref, create, deps) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useImperativeHandle(ref, create, deps);\n        }\n        function useDebugValue(value, formatterFn) {\n          {\n            var dispatcher = resolveDispatcher();\n            return dispatcher.useDebugValue(value, formatterFn);\n          }\n        }\n        function useTransition() {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useTransition();\n        }\n        function useDeferredValue(value) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useDeferredValue(value);\n        }\n        function useId() {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useId();\n        }\n        function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n          var dispatcher = resolveDispatcher();\n          return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n        }\n        var disabledDepth = 0;\n        var prevLog;\n        var prevInfo;\n        var prevWarn;\n        var prevError;\n        var prevGroup;\n        var prevGroupCollapsed;\n        var prevGroupEnd;\n        function disabledLog() {\n        }\n        disabledLog.__reactDisabledLog = true;\n        function disableLogs() {\n          {\n            if (disabledDepth === 0) {\n              prevLog = console.log;\n              prevInfo = console.info;\n              prevWarn = console.warn;\n              prevError = console.error;\n              prevGroup = console.group;\n              prevGroupCollapsed = console.groupCollapsed;\n              prevGroupEnd = console.groupEnd;\n              var props = {\n                configurable: true,\n                enumerable: true,\n                value: disabledLog,\n                writable: true\n              };\n              Object.defineProperties(console, {\n                info: props,\n                log: props,\n                warn: props,\n                error: props,\n                group: props,\n                groupCollapsed: props,\n                groupEnd: props\n              });\n            }\n            disabledDepth++;\n          }\n        }\n        function reenableLogs() {\n          {\n            disabledDepth--;\n            if (disabledDepth === 0) {\n              var props = {\n                configurable: true,\n                enumerable: true,\n                writable: true\n              };\n              Object.defineProperties(console, {\n                log: assign({}, props, {\n                  value: prevLog\n                }),\n                info: assign({}, props, {\n                  value: prevInfo\n                }),\n                warn: assign({}, props, {\n                  value: prevWarn\n                }),\n                error: assign({}, props, {\n                  value: prevError\n                }),\n                group: assign({}, props, {\n                  value: prevGroup\n                }),\n                groupCollapsed: assign({}, props, {\n                  value: prevGroupCollapsed\n                }),\n                groupEnd: assign({}, props, {\n                  value: prevGroupEnd\n                })\n              });\n            }\n            if (disabledDepth < 0) {\n              error(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\");\n            }\n          }\n        }\n        var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\n        var prefix;\n        function describeBuiltInComponentFrame(name, source, ownerFn) {\n          {\n            if (prefix === void 0) {\n              try {\n                throw Error();\n              } catch (x) {\n                var match = x.stack.trim().match(/\\n( *(at )?)/);\n                prefix = match && match[1] || \"\";\n              }\n            }\n            return \"\\n\" + prefix + name;\n          }\n        }\n        var reentry = false;\n        var componentFrameCache;\n        {\n          var PossiblyWeakMap = typeof WeakMap === \"function\" ? WeakMap : Map;\n          componentFrameCache = new PossiblyWeakMap();\n        }\n        function describeNativeComponentFrame(fn, construct) {\n          if (!fn || reentry) {\n            return \"\";\n          }\n          {\n            var frame = componentFrameCache.get(fn);\n            if (frame !== void 0) {\n              return frame;\n            }\n          }\n          var control;\n          reentry = true;\n          var previousPrepareStackTrace = Error.prepareStackTrace;\n          Error.prepareStackTrace = void 0;\n          var previousDispatcher;\n          {\n            previousDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = null;\n            disableLogs();\n          }\n          try {\n            if (construct) {\n              var Fake = function() {\n                throw Error();\n              };\n              Object.defineProperty(Fake.prototype, \"props\", {\n                set: function() {\n                  throw Error();\n                }\n              });\n              if (typeof Reflect === \"object\" && Reflect.construct) {\n                try {\n                  Reflect.construct(Fake, []);\n                } catch (x) {\n                  control = x;\n                }\n                Reflect.construct(fn, [], Fake);\n              } else {\n                try {\n                  Fake.call();\n                } catch (x) {\n                  control = x;\n                }\n                fn.call(Fake.prototype);\n              }\n            } else {\n              try {\n                throw Error();\n              } catch (x) {\n                control = x;\n              }\n              fn();\n            }\n          } catch (sample) {\n            if (sample && control && typeof sample.stack === \"string\") {\n              var sampleLines = sample.stack.split(\"\\n\");\n              var controlLines = control.stack.split(\"\\n\");\n              var s = sampleLines.length - 1;\n              var c = controlLines.length - 1;\n              while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n                c--;\n              }\n              for (; s >= 1 && c >= 0; s--, c--) {\n                if (sampleLines[s] !== controlLines[c]) {\n                  if (s !== 1 || c !== 1) {\n                    do {\n                      s--;\n                      c--;\n                      if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                        var _frame = \"\\n\" + sampleLines[s].replace(\" at new \", \" at \");\n                        if (fn.displayName && _frame.includes(\"<anonymous>\")) {\n                          _frame = _frame.replace(\"<anonymous>\", fn.displayName);\n                        }\n                        {\n                          if (typeof fn === \"function\") {\n                            componentFrameCache.set(fn, _frame);\n                          }\n                        }\n                        return _frame;\n                      }\n                    } while (s >= 1 && c >= 0);\n                  }\n                  break;\n                }\n              }\n            }\n          } finally {\n            reentry = false;\n            {\n              ReactCurrentDispatcher$1.current = previousDispatcher;\n              reenableLogs();\n            }\n            Error.prepareStackTrace = previousPrepareStackTrace;\n          }\n          var name = fn ? fn.displayName || fn.name : \"\";\n          var syntheticFrame = name ? describeBuiltInComponentFrame(name) : \"\";\n          {\n            if (typeof fn === \"function\") {\n              componentFrameCache.set(fn, syntheticFrame);\n            }\n          }\n          return syntheticFrame;\n        }\n        function describeFunctionComponentFrame(fn, source, ownerFn) {\n          {\n            return describeNativeComponentFrame(fn, false);\n          }\n        }\n        function shouldConstruct(Component2) {\n          var prototype = Component2.prototype;\n          return !!(prototype && prototype.isReactComponent);\n        }\n        function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n          if (type == null) {\n            return \"\";\n          }\n          if (typeof type === \"function\") {\n            {\n              return describeNativeComponentFrame(type, shouldConstruct(type));\n            }\n          }\n          if (typeof type === \"string\") {\n            return describeBuiltInComponentFrame(type);\n          }\n          switch (type) {\n            case REACT_SUSPENSE_TYPE:\n              return describeBuiltInComponentFrame(\"Suspense\");\n            case REACT_SUSPENSE_LIST_TYPE:\n              return describeBuiltInComponentFrame(\"SuspenseList\");\n          }\n          if (typeof type === \"object\") {\n            switch (type.$$typeof) {\n              case REACT_FORWARD_REF_TYPE:\n                return describeFunctionComponentFrame(type.render);\n              case REACT_MEMO_TYPE:\n                return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n              case REACT_LAZY_TYPE: {\n                var lazyComponent = type;\n                var payload = lazyComponent._payload;\n                var init = lazyComponent._init;\n                try {\n                  return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n                } catch (x) {\n                }\n              }\n            }\n          }\n          return \"\";\n        }\n        var loggedTypeFailures = {};\n        var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n        function setCurrentlyValidatingElement(element) {\n          {\n            if (element) {\n              var owner = element._owner;\n              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n              ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n            } else {\n              ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n            }\n          }\n        }\n        function checkPropTypes(typeSpecs, values, location, componentName, element) {\n          {\n            var has = Function.call.bind(hasOwnProperty);\n            for (var typeSpecName in typeSpecs) {\n              if (has(typeSpecs, typeSpecName)) {\n                var error$1 = void 0;\n                try {\n                  if (typeof typeSpecs[typeSpecName] !== \"function\") {\n                    var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n                    err.name = \"Invariant Violation\";\n                    throw err;\n                  }\n                  error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\");\n                } catch (ex) {\n                  error$1 = ex;\n                }\n                if (error$1 && !(error$1 instanceof Error)) {\n                  setCurrentlyValidatingElement(element);\n                  error(\"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\", componentName || \"React class\", location, typeSpecName, typeof error$1);\n                  setCurrentlyValidatingElement(null);\n                }\n                if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n                  loggedTypeFailures[error$1.message] = true;\n                  setCurrentlyValidatingElement(element);\n                  error(\"Failed %s type: %s\", location, error$1.message);\n                  setCurrentlyValidatingElement(null);\n                }\n              }\n            }\n          }\n        }\n        function setCurrentlyValidatingElement$1(element) {\n          {\n            if (element) {\n              var owner = element._owner;\n              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n              setExtraStackFrame(stack);\n            } else {\n              setExtraStackFrame(null);\n            }\n          }\n        }\n        var propTypesMisspellWarningShown;\n        {\n          propTypesMisspellWarningShown = false;\n        }\n        function getDeclarationErrorAddendum() {\n          if (ReactCurrentOwner.current) {\n            var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n            if (name) {\n              return \"\\n\\nCheck the render method of `\" + name + \"`.\";\n            }\n          }\n          return \"\";\n        }\n        function getSourceInfoErrorAddendum(source) {\n          if (source !== void 0) {\n            var fileName = source.fileName.replace(/^.*[\\\\\\/]/, \"\");\n            var lineNumber = source.lineNumber;\n            return \"\\n\\nCheck your code at \" + fileName + \":\" + lineNumber + \".\";\n          }\n          return \"\";\n        }\n        function getSourceInfoErrorAddendumForProps(elementProps) {\n          if (elementProps !== null && elementProps !== void 0) {\n            return getSourceInfoErrorAddendum(elementProps.__source);\n          }\n          return \"\";\n        }\n        var ownerHasKeyUseWarning = {};\n        function getCurrentComponentErrorInfo(parentType) {\n          var info = getDeclarationErrorAddendum();\n          if (!info) {\n            var parentName = typeof parentType === \"string\" ? parentType : parentType.displayName || parentType.name;\n            if (parentName) {\n              info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n            }\n          }\n          return info;\n        }\n        function validateExplicitKey(element, parentType) {\n          if (!element._store || element._store.validated || element.key != null) {\n            return;\n          }\n          element._store.validated = true;\n          var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n          if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n            return;\n          }\n          ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n          var childOwner = \"\";\n          if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n            childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n          }\n          {\n            setCurrentlyValidatingElement$1(element);\n            error('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n            setCurrentlyValidatingElement$1(null);\n          }\n        }\n        function validateChildKeys(node, parentType) {\n          if (typeof node !== \"object\") {\n            return;\n          }\n          if (isArray(node)) {\n            for (var i = 0; i < node.length; i++) {\n              var child = node[i];\n              if (isValidElement(child)) {\n                validateExplicitKey(child, parentType);\n              }\n            }\n          } else if (isValidElement(node)) {\n            if (node._store) {\n              node._store.validated = true;\n            }\n          } else if (node) {\n            var iteratorFn = getIteratorFn(node);\n            if (typeof iteratorFn === \"function\") {\n              if (iteratorFn !== node.entries) {\n                var iterator = iteratorFn.call(node);\n                var step;\n                while (!(step = iterator.next()).done) {\n                  if (isValidElement(step.value)) {\n                    validateExplicitKey(step.value, parentType);\n                  }\n                }\n              }\n            }\n          }\n        }\n        function validatePropTypes(element) {\n          {\n            var type = element.type;\n            if (type === null || type === void 0 || typeof type === \"string\") {\n              return;\n            }\n            var propTypes;\n            if (typeof type === \"function\") {\n              propTypes = type.propTypes;\n            } else if (typeof type === \"object\" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n            // Inner props are checked in the reconciler.\n            type.$$typeof === REACT_MEMO_TYPE)) {\n              propTypes = type.propTypes;\n            } else {\n              return;\n            }\n            if (propTypes) {\n              var name = getComponentNameFromType(type);\n              checkPropTypes(propTypes, element.props, \"prop\", name, element);\n            } else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) {\n              propTypesMisspellWarningShown = true;\n              var _name = getComponentNameFromType(type);\n              error(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\", _name || \"Unknown\");\n            }\n            if (typeof type.getDefaultProps === \"function\" && !type.getDefaultProps.isReactClassApproved) {\n              error(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\");\n            }\n          }\n        }\n        function validateFragmentProps(fragment) {\n          {\n            var keys = Object.keys(fragment.props);\n            for (var i = 0; i < keys.length; i++) {\n              var key = keys[i];\n              if (key !== \"children\" && key !== \"key\") {\n                setCurrentlyValidatingElement$1(fragment);\n                error(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\", key);\n                setCurrentlyValidatingElement$1(null);\n                break;\n              }\n            }\n            if (fragment.ref !== null) {\n              setCurrentlyValidatingElement$1(fragment);\n              error(\"Invalid attribute `ref` supplied to `React.Fragment`.\");\n              setCurrentlyValidatingElement$1(null);\n            }\n          }\n        }\n        function createElementWithValidation(type, props, children) {\n          var validType = isValidElementType(type);\n          if (!validType) {\n            var info = \"\";\n            if (type === void 0 || typeof type === \"object\" && type !== null && Object.keys(type).length === 0) {\n              info += \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n            }\n            var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n            if (sourceInfo) {\n              info += sourceInfo;\n            } else {\n              info += getDeclarationErrorAddendum();\n            }\n            var typeString;\n            if (type === null) {\n              typeString = \"null\";\n            } else if (isArray(type)) {\n              typeString = \"array\";\n            } else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) {\n              typeString = \"<\" + (getComponentNameFromType(type.type) || \"Unknown\") + \" />\";\n              info = \" Did you accidentally export a JSX literal instead of a component?\";\n            } else {\n              typeString = typeof type;\n            }\n            {\n              error(\"React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\", typeString, info);\n            }\n          }\n          var element = createElement.apply(this, arguments);\n          if (element == null) {\n            return element;\n          }\n          if (validType) {\n            for (var i = 2; i < arguments.length; i++) {\n              validateChildKeys(arguments[i], type);\n            }\n          }\n          if (type === REACT_FRAGMENT_TYPE) {\n            validateFragmentProps(element);\n          } else {\n            validatePropTypes(element);\n          }\n          return element;\n        }\n        var didWarnAboutDeprecatedCreateFactory = false;\n        function createFactoryWithValidation(type) {\n          var validatedFactory = createElementWithValidation.bind(null, type);\n          validatedFactory.type = type;\n          {\n            if (!didWarnAboutDeprecatedCreateFactory) {\n              didWarnAboutDeprecatedCreateFactory = true;\n              warn(\"React.createFactory() is deprecated and will be removed in a future major release. Consider using JSX or use React.createElement() directly instead.\");\n            }\n            Object.defineProperty(validatedFactory, \"type\", {\n              enumerable: false,\n              get: function() {\n                warn(\"Factory.type is deprecated. Access the class directly before passing it to createFactory.\");\n                Object.defineProperty(this, \"type\", {\n                  value: type\n                });\n                return type;\n              }\n            });\n          }\n          return validatedFactory;\n        }\n        function cloneElementWithValidation(element, props, children) {\n          var newElement = cloneElement.apply(this, arguments);\n          for (var i = 2; i < arguments.length; i++) {\n            validateChildKeys(arguments[i], newElement.type);\n          }\n          validatePropTypes(newElement);\n          return newElement;\n        }\n        function startTransition(scope, options) {\n          var prevTransition = ReactCurrentBatchConfig.transition;\n          ReactCurrentBatchConfig.transition = {};\n          var currentTransition = ReactCurrentBatchConfig.transition;\n          {\n            ReactCurrentBatchConfig.transition._updatedFibers = /* @__PURE__ */ new Set();\n          }\n          try {\n            scope();\n          } finally {\n            ReactCurrentBatchConfig.transition = prevTransition;\n            {\n              if (prevTransition === null && currentTransition._updatedFibers) {\n                var updatedFibersCount = currentTransition._updatedFibers.size;\n                if (updatedFibersCount > 10) {\n                  warn(\"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\");\n                }\n                currentTransition._updatedFibers.clear();\n              }\n            }\n          }\n        }\n        var didWarnAboutMessageChannel = false;\n        var enqueueTaskImpl = null;\n        function enqueueTask(task) {\n          if (enqueueTaskImpl === null) {\n            try {\n              var requireString = (\"require\" + Math.random()).slice(0, 7);\n              var nodeRequire = module && module[requireString];\n              enqueueTaskImpl = nodeRequire.call(module, \"timers\").setImmediate;\n            } catch (_err) {\n              enqueueTaskImpl = function(callback) {\n                {\n                  if (didWarnAboutMessageChannel === false) {\n                    didWarnAboutMessageChannel = true;\n                    if (typeof MessageChannel === \"undefined\") {\n                      error(\"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\");\n                    }\n                  }\n                }\n                var channel = new MessageChannel();\n                channel.port1.onmessage = callback;\n                channel.port2.postMessage(void 0);\n              };\n            }\n          }\n          return enqueueTaskImpl(task);\n        }\n        var actScopeDepth = 0;\n        var didWarnNoAwaitAct = false;\n        function act(callback) {\n          {\n            var prevActScopeDepth = actScopeDepth;\n            actScopeDepth++;\n            if (ReactCurrentActQueue.current === null) {\n              ReactCurrentActQueue.current = [];\n            }\n            var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n            var result;\n            try {\n              ReactCurrentActQueue.isBatchingLegacy = true;\n              result = callback();\n              if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n                var queue = ReactCurrentActQueue.current;\n                if (queue !== null) {\n                  ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n                  flushActQueue(queue);\n                }\n              }\n            } catch (error2) {\n              popActScope(prevActScopeDepth);\n              throw error2;\n            } finally {\n              ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n            }\n            if (result !== null && typeof result === \"object\" && typeof result.then === \"function\") {\n              var thenableResult = result;\n              var wasAwaited = false;\n              var thenable = {\n                then: function(resolve, reject) {\n                  wasAwaited = true;\n                  thenableResult.then(function(returnValue2) {\n                    popActScope(prevActScopeDepth);\n                    if (actScopeDepth === 0) {\n                      recursivelyFlushAsyncActWork(returnValue2, resolve, reject);\n                    } else {\n                      resolve(returnValue2);\n                    }\n                  }, function(error2) {\n                    popActScope(prevActScopeDepth);\n                    reject(error2);\n                  });\n                }\n              };\n              {\n                if (!didWarnNoAwaitAct && typeof Promise !== \"undefined\") {\n                  Promise.resolve().then(function() {\n                  }).then(function() {\n                    if (!wasAwaited) {\n                      didWarnNoAwaitAct = true;\n                      error(\"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\");\n                    }\n                  });\n                }\n              }\n              return thenable;\n            } else {\n              var returnValue = result;\n              popActScope(prevActScopeDepth);\n              if (actScopeDepth === 0) {\n                var _queue = ReactCurrentActQueue.current;\n                if (_queue !== null) {\n                  flushActQueue(_queue);\n                  ReactCurrentActQueue.current = null;\n                }\n                var _thenable = {\n                  then: function(resolve, reject) {\n                    if (ReactCurrentActQueue.current === null) {\n                      ReactCurrentActQueue.current = [];\n                      recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n                    } else {\n                      resolve(returnValue);\n                    }\n                  }\n                };\n                return _thenable;\n              } else {\n                var _thenable2 = {\n                  then: function(resolve, reject) {\n                    resolve(returnValue);\n                  }\n                };\n                return _thenable2;\n              }\n            }\n          }\n        }\n        function popActScope(prevActScopeDepth) {\n          {\n            if (prevActScopeDepth !== actScopeDepth - 1) {\n              error(\"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \");\n            }\n            actScopeDepth = prevActScopeDepth;\n          }\n        }\n        function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n          {\n            var queue = ReactCurrentActQueue.current;\n            if (queue !== null) {\n              try {\n                flushActQueue(queue);\n                enqueueTask(function() {\n                  if (queue.length === 0) {\n                    ReactCurrentActQueue.current = null;\n                    resolve(returnValue);\n                  } else {\n                    recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n                  }\n                });\n              } catch (error2) {\n                reject(error2);\n              }\n            } else {\n              resolve(returnValue);\n            }\n          }\n        }\n        var isFlushing = false;\n        function flushActQueue(queue) {\n          {\n            if (!isFlushing) {\n              isFlushing = true;\n              var i = 0;\n              try {\n                for (; i < queue.length; i++) {\n                  var callback = queue[i];\n                  do {\n                    callback = callback(true);\n                  } while (callback !== null);\n                }\n                queue.length = 0;\n              } catch (error2) {\n                queue = queue.slice(i + 1);\n                throw error2;\n              } finally {\n                isFlushing = false;\n              }\n            }\n          }\n        }\n        var createElement$1 = createElementWithValidation;\n        var cloneElement$1 = cloneElementWithValidation;\n        var createFactory = createFactoryWithValidation;\n        var Children = {\n          map: mapChildren,\n          forEach: forEachChildren,\n          count: countChildren,\n          toArray,\n          only: onlyChild\n        };\n        exports.Children = Children;\n        exports.Component = Component;\n        exports.Fragment = REACT_FRAGMENT_TYPE;\n        exports.Profiler = REACT_PROFILER_TYPE;\n        exports.PureComponent = PureComponent;\n        exports.StrictMode = REACT_STRICT_MODE_TYPE;\n        exports.Suspense = REACT_SUSPENSE_TYPE;\n        exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\n        exports.act = act;\n        exports.cloneElement = cloneElement$1;\n        exports.createContext = createContext;\n        exports.createElement = createElement$1;\n        exports.createFactory = createFactory;\n        exports.createRef = createRef;\n        exports.forwardRef = forwardRef;\n        exports.isValidElement = isValidElement;\n        exports.lazy = lazy;\n        exports.memo = memo;\n        exports.startTransition = startTransition;\n        exports.unstable_act = act;\n        exports.useCallback = useCallback;\n        exports.useContext = useContext;\n        exports.useDebugValue = useDebugValue;\n        exports.useDeferredValue = useDeferredValue;\n        exports.useEffect = useEffect;\n        exports.useId = useId;\n        exports.useImperativeHandle = useImperativeHandle;\n        exports.useInsertionEffect = useInsertionEffect;\n        exports.useLayoutEffect = useLayoutEffect;\n        exports.useMemo = useMemo;\n        exports.useReducer = useReducer;\n        exports.useRef = useRef;\n        exports.useState = useState;\n        exports.useSyncExternalStore = useSyncExternalStore;\n        exports.useTransition = useTransition;\n        exports.version = ReactVersion;\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n        }\n      })();\n    }\n  }\n});\n\n// node_modules/react/index.js\nvar require_react = __commonJS({\n  \"node_modules/react/index.js\"(exports, module) {\n    if (false) {\n      module.exports = null;\n    } else {\n      module.exports = require_react_development();\n    }\n  }\n});\n\nexport {\n  require_react\n};\n/*! Bundled license information:\n\nreact/cjs/react.development.js:\n  (**\n   * @license React\n   * react.development.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n*/\n//# sourceMappingURL=chunk-2MTJELC7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-2RRVHQYX.js",
    "content": "// node_modules/thirdweb/dist/esm/wallets/coinbase/utils.js\nasync function showCoinbasePopup(provider) {\n  var _a, _b;\n  await ((_b = (_a = provider == null ? void 0 : provider.communicator) == null ? void 0 : _a.waitForPopupLoaded) == null ? void 0 : _b.call(_a));\n}\n\nexport {\n  showCoinbasePopup\n};\n//# sourceMappingURL=chunk-2RRVHQYX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-35YKZJSE.js",
    "content": "// node_modules/proxy-compare/dist/index.modern.js\nvar e = Symbol();\nvar t = Symbol();\nvar s = Object.getPrototypeOf;\nvar c = /* @__PURE__ */ new WeakMap();\nvar l = (e2) => e2 && (c.has(e2) ? c.get(e2) : s(e2) === Object.prototype || s(e2) === Array.prototype);\nvar y = (e2) => l(e2) && e2[t] || null;\nvar h = (e2, t2 = true) => {\n  c.set(e2, t2);\n};\n\n// node_modules/valtio/esm/vanilla.mjs\nvar isObject = (x) => typeof x === \"object\" && x !== null;\nvar proxyStateMap = /* @__PURE__ */ new WeakMap();\nvar refSet = /* @__PURE__ */ new WeakSet();\nvar buildProxyFunction = (objectIs = Object.is, newProxy = (target, handler) => new Proxy(target, handler), canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer), defaultHandlePromise = (promise) => {\n  switch (promise.status) {\n    case \"fulfilled\":\n      return promise.value;\n    case \"rejected\":\n      throw promise.reason;\n    default:\n      throw promise;\n  }\n}, snapCache = /* @__PURE__ */ new WeakMap(), createSnapshot = (target, version, handlePromise = defaultHandlePromise) => {\n  const cache = snapCache.get(target);\n  if ((cache == null ? void 0 : cache[0]) === version) {\n    return cache[1];\n  }\n  const snap = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));\n  h(snap, true);\n  snapCache.set(target, [version, snap]);\n  Reflect.ownKeys(target).forEach((key) => {\n    if (Object.getOwnPropertyDescriptor(snap, key)) {\n      return;\n    }\n    const value = Reflect.get(target, key);\n    const desc = {\n      value,\n      enumerable: true,\n      // This is intentional to avoid copying with proxy-compare.\n      // It's still non-writable, so it avoids assigning a value.\n      configurable: true\n    };\n    if (refSet.has(value)) {\n      h(value, false);\n    } else if (value instanceof Promise) {\n      delete desc.value;\n      desc.get = () => handlePromise(value);\n    } else if (proxyStateMap.has(value)) {\n      const [target2, ensureVersion] = proxyStateMap.get(\n        value\n      );\n      desc.value = createSnapshot(\n        target2,\n        ensureVersion(),\n        handlePromise\n      );\n    }\n    Object.defineProperty(snap, key, desc);\n  });\n  return Object.preventExtensions(snap);\n}, proxyCache = /* @__PURE__ */ new WeakMap(), versionHolder = [1, 1], proxyFunction = (initialObject) => {\n  if (!isObject(initialObject)) {\n    throw new Error(\"object required\");\n  }\n  const found = proxyCache.get(initialObject);\n  if (found) {\n    return found;\n  }\n  let version = versionHolder[0];\n  const listeners = /* @__PURE__ */ new Set();\n  const notifyUpdate = (op, nextVersion = ++versionHolder[0]) => {\n    if (version !== nextVersion) {\n      version = nextVersion;\n      listeners.forEach((listener) => listener(op, nextVersion));\n    }\n  };\n  let checkVersion = versionHolder[1];\n  const ensureVersion = (nextCheckVersion = ++versionHolder[1]) => {\n    if (checkVersion !== nextCheckVersion && !listeners.size) {\n      checkVersion = nextCheckVersion;\n      propProxyStates.forEach(([propProxyState]) => {\n        const propVersion = propProxyState[1](nextCheckVersion);\n        if (propVersion > version) {\n          version = propVersion;\n        }\n      });\n    }\n    return version;\n  };\n  const createPropListener = (prop) => (op, nextVersion) => {\n    const newOp = [...op];\n    newOp[1] = [prop, ...newOp[1]];\n    notifyUpdate(newOp, nextVersion);\n  };\n  const propProxyStates = /* @__PURE__ */ new Map();\n  const addPropListener = (prop, propProxyState) => {\n    if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && propProxyStates.has(prop)) {\n      throw new Error(\"prop listener already exists\");\n    }\n    if (listeners.size) {\n      const remove = propProxyState[3](createPropListener(prop));\n      propProxyStates.set(prop, [propProxyState, remove]);\n    } else {\n      propProxyStates.set(prop, [propProxyState]);\n    }\n  };\n  const removePropListener = (prop) => {\n    var _a;\n    const entry = propProxyStates.get(prop);\n    if (entry) {\n      propProxyStates.delete(prop);\n      (_a = entry[1]) == null ? void 0 : _a.call(entry);\n    }\n  };\n  const addListener = (listener) => {\n    listeners.add(listener);\n    if (listeners.size === 1) {\n      propProxyStates.forEach(([propProxyState, prevRemove], prop) => {\n        if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && prevRemove) {\n          throw new Error(\"remove already exists\");\n        }\n        const remove = propProxyState[3](createPropListener(prop));\n        propProxyStates.set(prop, [propProxyState, remove]);\n      });\n    }\n    const removeListener = () => {\n      listeners.delete(listener);\n      if (listeners.size === 0) {\n        propProxyStates.forEach(([propProxyState, remove], prop) => {\n          if (remove) {\n            remove();\n            propProxyStates.set(prop, [propProxyState]);\n          }\n        });\n      }\n    };\n    return removeListener;\n  };\n  const baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));\n  const handler = {\n    deleteProperty(target, prop) {\n      const prevValue = Reflect.get(target, prop);\n      removePropListener(prop);\n      const deleted = Reflect.deleteProperty(target, prop);\n      if (deleted) {\n        notifyUpdate([\"delete\", [prop], prevValue]);\n      }\n      return deleted;\n    },\n    set(target, prop, value, receiver) {\n      const hasPrevValue = Reflect.has(target, prop);\n      const prevValue = Reflect.get(target, prop, receiver);\n      if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {\n        return true;\n      }\n      removePropListener(prop);\n      if (isObject(value)) {\n        value = y(value) || value;\n      }\n      let nextValue = value;\n      if (value instanceof Promise) {\n        value.then((v) => {\n          value.status = \"fulfilled\";\n          value.value = v;\n          notifyUpdate([\"resolve\", [prop], v]);\n        }).catch((e2) => {\n          value.status = \"rejected\";\n          value.reason = e2;\n          notifyUpdate([\"reject\", [prop], e2]);\n        });\n      } else {\n        if (!proxyStateMap.has(value) && canProxy(value)) {\n          nextValue = proxyFunction(value);\n        }\n        const childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);\n        if (childProxyState) {\n          addPropListener(prop, childProxyState);\n        }\n      }\n      Reflect.set(target, prop, nextValue, receiver);\n      notifyUpdate([\"set\", [prop], value, prevValue]);\n      return true;\n    }\n  };\n  const proxyObject = newProxy(baseObject, handler);\n  proxyCache.set(initialObject, proxyObject);\n  const proxyState = [\n    baseObject,\n    ensureVersion,\n    createSnapshot,\n    addListener\n  ];\n  proxyStateMap.set(proxyObject, proxyState);\n  Reflect.ownKeys(initialObject).forEach((key) => {\n    const desc = Object.getOwnPropertyDescriptor(\n      initialObject,\n      key\n    );\n    if (\"value\" in desc) {\n      proxyObject[key] = initialObject[key];\n      delete desc.value;\n      delete desc.writable;\n    }\n    Object.defineProperty(baseObject, key, desc);\n  });\n  return proxyObject;\n}) => [\n  // public functions\n  proxyFunction,\n  // shared state\n  proxyStateMap,\n  refSet,\n  // internal things\n  objectIs,\n  newProxy,\n  canProxy,\n  defaultHandlePromise,\n  snapCache,\n  createSnapshot,\n  proxyCache,\n  versionHolder\n];\nvar [defaultProxyFunction] = buildProxyFunction();\nfunction proxy(initialObject = {}) {\n  return defaultProxyFunction(initialObject);\n}\nfunction subscribe(proxyObject, callback, notifyInSync) {\n  const proxyState = proxyStateMap.get(proxyObject);\n  if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !proxyState) {\n    console.warn(\"Please use proxy object\");\n  }\n  let promise;\n  const ops = [];\n  const addListener = proxyState[3];\n  let isListenerActive = false;\n  const listener = (op) => {\n    ops.push(op);\n    if (notifyInSync) {\n      callback(ops.splice(0));\n      return;\n    }\n    if (!promise) {\n      promise = Promise.resolve().then(() => {\n        promise = void 0;\n        if (isListenerActive) {\n          callback(ops.splice(0));\n        }\n      });\n    }\n  };\n  const removeListener = addListener(listener);\n  isListenerActive = true;\n  return () => {\n    isListenerActive = false;\n    removeListener();\n  };\n}\nfunction snapshot(proxyObject, handlePromise) {\n  const proxyState = proxyStateMap.get(proxyObject);\n  if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !proxyState) {\n    console.warn(\"Please use proxy object\");\n  }\n  const [target, ensureVersion, createSnapshot] = proxyState;\n  return createSnapshot(target, ensureVersion(), handlePromise);\n}\n\n// node_modules/@walletconnect/modal-core/dist/index.js\nvar state$7 = proxy({\n  history: [\"ConnectWallet\"],\n  view: \"ConnectWallet\",\n  data: void 0\n});\nvar RouterCtrl = {\n  state: state$7,\n  subscribe(callback) {\n    return subscribe(state$7, () => callback(state$7));\n  },\n  push(view, data) {\n    if (view !== state$7.view) {\n      state$7.view = view;\n      if (data) {\n        state$7.data = data;\n      }\n      state$7.history.push(view);\n    }\n  },\n  reset(view) {\n    state$7.view = view;\n    state$7.history = [view];\n  },\n  replace(view) {\n    if (state$7.history.length > 1) {\n      state$7.history[state$7.history.length - 1] = view;\n      state$7.view = view;\n    }\n  },\n  goBack() {\n    if (state$7.history.length > 1) {\n      state$7.history.pop();\n      const [last] = state$7.history.slice(-1);\n      state$7.view = last;\n    }\n  },\n  setData(data) {\n    state$7.data = data;\n  }\n};\nvar CoreUtil = {\n  WALLETCONNECT_DEEPLINK_CHOICE: \"WALLETCONNECT_DEEPLINK_CHOICE\",\n  WCM_VERSION: \"WCM_VERSION\",\n  RECOMMENDED_WALLET_AMOUNT: 9,\n  isMobile() {\n    if (typeof window !== \"undefined\") {\n      return Boolean(\n        window.matchMedia(\"(pointer:coarse)\").matches || /Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini/u.test(navigator.userAgent)\n      );\n    }\n    return false;\n  },\n  isAndroid() {\n    return CoreUtil.isMobile() && navigator.userAgent.toLowerCase().includes(\"android\");\n  },\n  isIos() {\n    const ua = navigator.userAgent.toLowerCase();\n    return CoreUtil.isMobile() && (ua.includes(\"iphone\") || ua.includes(\"ipad\"));\n  },\n  isHttpUrl(url) {\n    return url.startsWith(\"http://\") || url.startsWith(\"https://\");\n  },\n  isArray(data) {\n    return Array.isArray(data) && data.length > 0;\n  },\n  isTelegram() {\n    return typeof window !== \"undefined\" && // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (Boolean(window.TelegramWebviewProxy) || // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Boolean(window.Telegram) || // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    Boolean(window.TelegramWebviewProxyProto));\n  },\n  formatNativeUrl(appUrl, wcUri, name) {\n    if (CoreUtil.isHttpUrl(appUrl)) {\n      return this.formatUniversalUrl(appUrl, wcUri, name);\n    }\n    let safeAppUrl = appUrl;\n    if (!safeAppUrl.includes(\"://\")) {\n      safeAppUrl = appUrl.replaceAll(\"/\", \"\").replaceAll(\":\", \"\");\n      safeAppUrl = `${safeAppUrl}://`;\n    }\n    if (!safeAppUrl.endsWith(\"/\")) {\n      safeAppUrl = `${safeAppUrl}/`;\n    }\n    this.setWalletConnectDeepLink(safeAppUrl, name);\n    const encodedWcUrl = encodeURIComponent(wcUri);\n    return `${safeAppUrl}wc?uri=${encodedWcUrl}`;\n  },\n  formatUniversalUrl(appUrl, wcUri, name) {\n    if (!CoreUtil.isHttpUrl(appUrl)) {\n      return this.formatNativeUrl(appUrl, wcUri, name);\n    }\n    let safeAppUrl = appUrl;\n    if (safeAppUrl.startsWith(\"https://t.me\")) {\n      const formattedUri = Buffer.from(wcUri).toString(\"base64\").replace(/[=]/g, \"\");\n      if (safeAppUrl.endsWith(\"/\")) {\n        safeAppUrl = safeAppUrl.slice(0, -1);\n      }\n      this.setWalletConnectDeepLink(safeAppUrl, name);\n      const url = new URL(safeAppUrl);\n      url.searchParams.set(\"startapp\", formattedUri);\n      const link = url.toString();\n      return link;\n    }\n    if (!safeAppUrl.endsWith(\"/\")) {\n      safeAppUrl = `${safeAppUrl}/`;\n    }\n    this.setWalletConnectDeepLink(safeAppUrl, name);\n    const encodedWcUrl = encodeURIComponent(wcUri);\n    return `${safeAppUrl}wc?uri=${encodedWcUrl}`;\n  },\n  async wait(miliseconds) {\n    return new Promise((resolve) => {\n      setTimeout(resolve, miliseconds);\n    });\n  },\n  openHref(href, target) {\n    const adjustedTarget = this.isTelegram() ? \"_blank\" : target;\n    window.open(href, adjustedTarget, \"noreferrer noopener\");\n  },\n  setWalletConnectDeepLink(href, name) {\n    try {\n      localStorage.setItem(CoreUtil.WALLETCONNECT_DEEPLINK_CHOICE, JSON.stringify({ href, name }));\n    } catch (e2) {\n      console.info(\"Unable to set WalletConnect deep link\");\n    }\n  },\n  setWalletConnectAndroidDeepLink(wcUri) {\n    try {\n      const [href] = wcUri.split(\"?\");\n      localStorage.setItem(\n        CoreUtil.WALLETCONNECT_DEEPLINK_CHOICE,\n        JSON.stringify({ href, name: \"Android\" })\n      );\n    } catch (e2) {\n      console.info(\"Unable to set WalletConnect android deep link\");\n    }\n  },\n  removeWalletConnectDeepLink() {\n    try {\n      localStorage.removeItem(CoreUtil.WALLETCONNECT_DEEPLINK_CHOICE);\n    } catch (e2) {\n      console.info(\"Unable to remove WalletConnect deep link\");\n    }\n  },\n  setModalVersionInStorage() {\n    try {\n      if (typeof localStorage !== \"undefined\") {\n        localStorage.setItem(CoreUtil.WCM_VERSION, \"2.7.0\");\n      }\n    } catch (e2) {\n      console.info(\"Unable to set Web3Modal version in storage\");\n    }\n  },\n  getWalletRouterData() {\n    var _a;\n    const routerData = (_a = RouterCtrl.state.data) == null ? void 0 : _a.Wallet;\n    if (!routerData) {\n      throw new Error('Missing \"Wallet\" view data');\n    }\n    return routerData;\n  }\n};\nvar isEnabled = typeof location !== \"undefined\" && (location.hostname.includes(\"localhost\") || location.protocol.includes(\"https\"));\nvar state$6 = proxy({\n  enabled: isEnabled,\n  userSessionId: \"\",\n  events: [],\n  connectedWalletId: void 0\n});\nvar EventsCtrl = {\n  state: state$6,\n  subscribe(callback) {\n    return subscribe(state$6.events, () => callback(snapshot(state$6.events[state$6.events.length - 1])));\n  },\n  initialize() {\n    if (state$6.enabled && typeof (crypto == null ? void 0 : crypto.randomUUID) !== \"undefined\") {\n      state$6.userSessionId = crypto.randomUUID();\n    }\n  },\n  setConnectedWalletId(connectedWalletId) {\n    state$6.connectedWalletId = connectedWalletId;\n  },\n  click(data) {\n    if (state$6.enabled) {\n      const event = {\n        type: \"CLICK\",\n        name: data.name,\n        userSessionId: state$6.userSessionId,\n        timestamp: Date.now(),\n        data\n      };\n      state$6.events.push(event);\n    }\n  },\n  track(data) {\n    if (state$6.enabled) {\n      const event = {\n        type: \"TRACK\",\n        name: data.name,\n        userSessionId: state$6.userSessionId,\n        timestamp: Date.now(),\n        data\n      };\n      state$6.events.push(event);\n    }\n  },\n  view(data) {\n    if (state$6.enabled) {\n      const event = {\n        type: \"VIEW\",\n        name: data.name,\n        userSessionId: state$6.userSessionId,\n        timestamp: Date.now(),\n        data\n      };\n      state$6.events.push(event);\n    }\n  }\n};\nvar state$5 = proxy({\n  chains: void 0,\n  walletConnectUri: void 0,\n  isAuth: false,\n  isCustomDesktop: false,\n  isCustomMobile: false,\n  isDataLoaded: false,\n  isUiLoaded: false\n});\nvar OptionsCtrl = {\n  state: state$5,\n  subscribe(callback) {\n    return subscribe(state$5, () => callback(state$5));\n  },\n  setChains(chains) {\n    state$5.chains = chains;\n  },\n  setWalletConnectUri(walletConnectUri) {\n    state$5.walletConnectUri = walletConnectUri;\n  },\n  setIsCustomDesktop(isCustomDesktop) {\n    state$5.isCustomDesktop = isCustomDesktop;\n  },\n  setIsCustomMobile(isCustomMobile) {\n    state$5.isCustomMobile = isCustomMobile;\n  },\n  setIsDataLoaded(isDataLoaded) {\n    state$5.isDataLoaded = isDataLoaded;\n  },\n  setIsUiLoaded(isUiLoaded) {\n    state$5.isUiLoaded = isUiLoaded;\n  },\n  setIsAuth(isAuth) {\n    state$5.isAuth = isAuth;\n  }\n};\nvar state$4 = proxy({\n  projectId: \"\",\n  mobileWallets: void 0,\n  desktopWallets: void 0,\n  walletImages: void 0,\n  chains: void 0,\n  enableAuthMode: false,\n  enableExplorer: true,\n  explorerExcludedWalletIds: void 0,\n  explorerRecommendedWalletIds: void 0,\n  termsOfServiceUrl: void 0,\n  privacyPolicyUrl: void 0\n});\nvar ConfigCtrl = {\n  state: state$4,\n  subscribe(callback) {\n    return subscribe(state$4, () => callback(state$4));\n  },\n  setConfig(config) {\n    var _a, _b;\n    EventsCtrl.initialize();\n    OptionsCtrl.setChains(config.chains);\n    OptionsCtrl.setIsAuth(Boolean(config.enableAuthMode));\n    OptionsCtrl.setIsCustomMobile(Boolean((_a = config.mobileWallets) == null ? void 0 : _a.length));\n    OptionsCtrl.setIsCustomDesktop(Boolean((_b = config.desktopWallets) == null ? void 0 : _b.length));\n    CoreUtil.setModalVersionInStorage();\n    Object.assign(state$4, config);\n  }\n};\nvar __defProp$2 = Object.defineProperty;\nvar __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$2 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$2 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$2 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$2.call(b, prop))\n      __defNormalProp$2(a, prop, b[prop]);\n  if (__getOwnPropSymbols$2)\n    for (var prop of __getOwnPropSymbols$2(b)) {\n      if (__propIsEnum$2.call(b, prop))\n        __defNormalProp$2(a, prop, b[prop]);\n    }\n  return a;\n};\nvar W3M_API = \"https://explorer-api.walletconnect.com\";\nvar SDK_TYPE = \"wcm\";\nvar SDK_VERSION = `js-${\"2.7.0\"}`;\nasync function fetchListings(endpoint, params) {\n  const allParams = __spreadValues$2({ sdkType: SDK_TYPE, sdkVersion: SDK_VERSION }, params);\n  const url = new URL(endpoint, W3M_API);\n  url.searchParams.append(\"projectId\", ConfigCtrl.state.projectId);\n  Object.entries(allParams).forEach(([key, value]) => {\n    if (value) {\n      url.searchParams.append(key, String(value));\n    }\n  });\n  const request = await fetch(url);\n  return request.json();\n}\nvar ExplorerUtil = {\n  async getDesktopListings(params) {\n    return fetchListings(\"/w3m/v1/getDesktopListings\", params);\n  },\n  async getMobileListings(params) {\n    return fetchListings(\"/w3m/v1/getMobileListings\", params);\n  },\n  async getInjectedListings(params) {\n    return fetchListings(\"/w3m/v1/getInjectedListings\", params);\n  },\n  async getAllListings(params) {\n    return fetchListings(\"/w3m/v1/getAllListings\", params);\n  },\n  getWalletImageUrl(imageId) {\n    return `${W3M_API}/w3m/v1/getWalletImage/${imageId}?projectId=${ConfigCtrl.state.projectId}&sdkType=${SDK_TYPE}&sdkVersion=${SDK_VERSION}`;\n  },\n  getAssetImageUrl(imageId) {\n    return `${W3M_API}/w3m/v1/getAssetImage/${imageId}?projectId=${ConfigCtrl.state.projectId}&sdkType=${SDK_TYPE}&sdkVersion=${SDK_VERSION}`;\n  }\n};\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;\nvar __hasOwnProp$1 = Object.prototype.hasOwnProperty;\nvar __propIsEnum$1 = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues$1 = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp$1.call(b, prop))\n      __defNormalProp$1(a, prop, b[prop]);\n  if (__getOwnPropSymbols$1)\n    for (var prop of __getOwnPropSymbols$1(b)) {\n      if (__propIsEnum$1.call(b, prop))\n        __defNormalProp$1(a, prop, b[prop]);\n    }\n  return a;\n};\nvar isMobile = CoreUtil.isMobile();\nvar state$3 = proxy({\n  wallets: { listings: [], total: 0, page: 1 },\n  search: { listings: [], total: 0, page: 1 },\n  recomendedWallets: []\n});\nvar ExplorerCtrl = {\n  state: state$3,\n  async getRecomendedWallets() {\n    const { explorerRecommendedWalletIds, explorerExcludedWalletIds } = ConfigCtrl.state;\n    if (explorerRecommendedWalletIds === \"NONE\" || explorerExcludedWalletIds === \"ALL\" && !explorerRecommendedWalletIds) {\n      return state$3.recomendedWallets;\n    }\n    if (CoreUtil.isArray(explorerRecommendedWalletIds)) {\n      const recommendedIds = explorerRecommendedWalletIds.join(\",\");\n      const params = { recommendedIds };\n      const { listings } = await ExplorerUtil.getAllListings(params);\n      const listingsArr = Object.values(listings);\n      listingsArr.sort((a, b) => {\n        const aIndex = explorerRecommendedWalletIds.indexOf(a.id);\n        const bIndex = explorerRecommendedWalletIds.indexOf(b.id);\n        return aIndex - bIndex;\n      });\n      state$3.recomendedWallets = listingsArr;\n    } else {\n      const { chains, isAuth } = OptionsCtrl.state;\n      const chainsFilter = chains == null ? void 0 : chains.join(\",\");\n      const isExcluded = CoreUtil.isArray(explorerExcludedWalletIds);\n      const params = {\n        page: 1,\n        sdks: isAuth ? \"auth_v1\" : void 0,\n        entries: CoreUtil.RECOMMENDED_WALLET_AMOUNT,\n        chains: chainsFilter,\n        version: 2,\n        excludedIds: isExcluded ? explorerExcludedWalletIds.join(\",\") : void 0\n      };\n      const { listings } = isMobile ? await ExplorerUtil.getMobileListings(params) : await ExplorerUtil.getDesktopListings(params);\n      state$3.recomendedWallets = Object.values(listings);\n    }\n    return state$3.recomendedWallets;\n  },\n  async getWallets(params) {\n    const extendedParams = __spreadValues$1({}, params);\n    const { explorerRecommendedWalletIds, explorerExcludedWalletIds } = ConfigCtrl.state;\n    const { recomendedWallets } = state$3;\n    if (explorerExcludedWalletIds === \"ALL\") {\n      return state$3.wallets;\n    }\n    if (recomendedWallets.length) {\n      extendedParams.excludedIds = recomendedWallets.map((wallet) => wallet.id).join(\",\");\n    } else if (CoreUtil.isArray(explorerRecommendedWalletIds)) {\n      extendedParams.excludedIds = explorerRecommendedWalletIds.join(\",\");\n    }\n    if (CoreUtil.isArray(explorerExcludedWalletIds)) {\n      extendedParams.excludedIds = [extendedParams.excludedIds, explorerExcludedWalletIds].filter(Boolean).join(\",\");\n    }\n    if (OptionsCtrl.state.isAuth) {\n      extendedParams.sdks = \"auth_v1\";\n    }\n    const { page, search } = params;\n    const { listings: listingsObj, total } = isMobile ? await ExplorerUtil.getMobileListings(extendedParams) : await ExplorerUtil.getDesktopListings(extendedParams);\n    const listings = Object.values(listingsObj);\n    const type = search ? \"search\" : \"wallets\";\n    state$3[type] = {\n      listings: [...state$3[type].listings, ...listings],\n      total,\n      page: page != null ? page : 1\n    };\n    return { listings, total };\n  },\n  getWalletImageUrl(imageId) {\n    return ExplorerUtil.getWalletImageUrl(imageId);\n  },\n  getAssetImageUrl(imageId) {\n    return ExplorerUtil.getAssetImageUrl(imageId);\n  },\n  resetSearch() {\n    state$3.search = { listings: [], total: 0, page: 1 };\n  }\n};\nvar state$2 = proxy({\n  open: false\n});\nvar ModalCtrl = {\n  state: state$2,\n  subscribe(callback) {\n    return subscribe(state$2, () => callback(state$2));\n  },\n  async open(options) {\n    return new Promise((resolve) => {\n      const { isUiLoaded, isDataLoaded } = OptionsCtrl.state;\n      CoreUtil.removeWalletConnectDeepLink();\n      OptionsCtrl.setWalletConnectUri(options == null ? void 0 : options.uri);\n      OptionsCtrl.setChains(options == null ? void 0 : options.chains);\n      RouterCtrl.reset(\"ConnectWallet\");\n      if (isUiLoaded && isDataLoaded) {\n        state$2.open = true;\n        resolve();\n      } else {\n        const interval = setInterval(() => {\n          const opts = OptionsCtrl.state;\n          if (opts.isUiLoaded && opts.isDataLoaded) {\n            clearInterval(interval);\n            state$2.open = true;\n            resolve();\n          }\n        }, 200);\n      }\n    });\n  },\n  close() {\n    state$2.open = false;\n  }\n};\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction isDarkMode() {\n  return typeof matchMedia !== \"undefined\" && matchMedia(\"(prefers-color-scheme: dark)\").matches;\n}\nvar state$1 = proxy({\n  themeMode: isDarkMode() ? \"dark\" : \"light\"\n});\nvar ThemeCtrl = {\n  state: state$1,\n  subscribe(callback) {\n    return subscribe(state$1, () => callback(state$1));\n  },\n  setThemeConfig(theme) {\n    const { themeMode, themeVariables } = theme;\n    if (themeMode) {\n      state$1.themeMode = themeMode;\n    }\n    if (themeVariables) {\n      state$1.themeVariables = __spreadValues({}, themeVariables);\n    }\n  }\n};\nvar state = proxy({\n  open: false,\n  message: \"\",\n  variant: \"success\"\n});\nvar ToastCtrl = {\n  state,\n  subscribe(callback) {\n    return subscribe(state, () => callback(state));\n  },\n  openToast(message, variant) {\n    state.open = true;\n    state.message = message;\n    state.variant = variant;\n  },\n  closeToast() {\n    state.open = false;\n  }\n};\n\nexport {\n  RouterCtrl,\n  CoreUtil,\n  EventsCtrl,\n  OptionsCtrl,\n  ConfigCtrl,\n  ExplorerCtrl,\n  ModalCtrl,\n  ThemeCtrl,\n  ToastCtrl\n};\n//# sourceMappingURL=chunk-35YKZJSE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-36FW3ZLE.js",
    "content": "import {\n  fetchTokenMetadata\n} from \"./chunk-4U2YWK76.js\";\nimport {\n  parseNFT\n} from \"./chunk-NOA36MVL.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IERC721A/read/tokenURI.js\nvar FN_SELECTOR = \"0xc87b56dd\";\nvar FN_INPUTS = [\n  {\n    type: \"uint256\",\n    name: \"_tokenId\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"string\"\n  }\n];\nfunction isTokenURISupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nasync function tokenURI(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.tokenId]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/read/getNFT.js\nasync function getNFT(options) {\n  const [uri, owner] = await Promise.all([\n    tokenURI(options).catch(() => null),\n    options.includeOwner ? import(\"./ownerOf-JJ32SN7R.js\").then((m) => m.ownerOf(options)).catch(() => null) : null\n  ]);\n  if (!(uri == null ? void 0 : uri.trim())) {\n    return parseNFT({\n      id: options.tokenId,\n      type: \"ERC721\",\n      uri: \"\"\n    }, {\n      tokenId: options.tokenId,\n      tokenUri: \"\",\n      type: \"ERC721\",\n      owner\n    });\n  }\n  return parseNFT(await fetchTokenMetadata({\n    client: options.contract.client,\n    tokenId: options.tokenId,\n    tokenUri: uri\n  }).catch(() => ({\n    id: options.tokenId,\n    type: \"ERC721\",\n    uri\n  })), {\n    tokenId: options.tokenId,\n    tokenUri: uri,\n    type: \"ERC721\",\n    owner\n  });\n}\n\nexport {\n  isTokenURISupported,\n  getNFT\n};\n//# sourceMappingURL=chunk-36FW3ZLE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-3DBHE3NE.js",
    "content": "// node_modules/thirdweb/dist/esm/reactive/store.js\nfunction createStore(initialValue) {\n  const listeners = /* @__PURE__ */ new Set();\n  let value = initialValue;\n  const notify = () => {\n    for (const listener of listeners) {\n      listener();\n    }\n  };\n  return {\n    getValue() {\n      return value;\n    },\n    setValue(newValue) {\n      if (newValue === value) {\n        return;\n      }\n      value = newValue;\n      notify();\n    },\n    subscribe(listener) {\n      listeners.add(listener);\n      return () => {\n        listeners.delete(listener);\n      };\n    }\n  };\n}\n\n// node_modules/thirdweb/dist/esm/transaction/transaction-store.js\nvar transactionsByAddress = /* @__PURE__ */ new Map();\nfunction getTransactionStore(address) {\n  const existingStore = transactionsByAddress.get(address);\n  if (existingStore) {\n    return existingStore;\n  }\n  const newStore = createStore([]);\n  transactionsByAddress.set(address, newStore);\n  return newStore;\n}\nfunction addTransactionToStore(options) {\n  const { address, transactionHash, chainId } = options;\n  const tranasctionStore = getTransactionStore(address);\n  tranasctionStore.setValue([\n    ...tranasctionStore.getValue(),\n    { transactionHash, chainId }\n  ]);\n  transactionsByAddress.set(address, tranasctionStore);\n}\n\nexport {\n  createStore,\n  getTransactionStore,\n  addTransactionToStore\n};\n//# sourceMappingURL=chunk-3DBHE3NE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-3GSJ2FQJ.js",
    "content": "import {\n  detectOS,\n  detectPlatform\n} from \"./chunk-P7ZDTV2E.js\";\nimport {\n  LruMap\n} from \"./chunk-SNQ54XRM.js\";\n\n// node_modules/thirdweb/dist/esm/version.js\nvar version = \"5.68.0\";\n\n// node_modules/thirdweb/dist/esm/utils/jwt/is-jwt.js\nfunction isJWT(str) {\n  return str.split(\".\").length === 3;\n}\n\n// node_modules/thirdweb/dist/esm/utils/process.js\nvar IS_DEV = (\n  // biome-ignore lint/nursery/noProcessEnv: ok in this file\n  true\n);\n\n// node_modules/thirdweb/dist/esm/utils/fetch.js\nvar DEFAULT_REQUEST_TIMEOUT = 6e4;\nfunction getClientFetch(client, ecosystem) {\n  async function fetchWithHeaders(url, init) {\n    const { requestTimeoutMs = DEFAULT_REQUEST_TIMEOUT, ...restInit } = init || {};\n    let headers = restInit.headers ? new Headers(restInit.headers) : void 0;\n    if (isThirdwebUrl(url)) {\n      if (!headers) {\n        headers = new Headers();\n      }\n      const authToken = client.secretKey && isJWT(client.secretKey) ? client.secretKey : void 0;\n      const secretKey = client.secretKey && !isJWT(client.secretKey) ? client.secretKey : void 0;\n      const clientId = client.clientId;\n      if (authToken && !isPayUrl(url) && !isInAppWalletUrl(url) && !isBundlerUrl(url)) {\n        headers.set(\"authorization\", `Bearer ${authToken}`);\n      } else if (secretKey) {\n        headers.set(\"x-secret-key\", secretKey);\n      } else if (clientId) {\n        headers.set(\"x-client-id\", clientId);\n      }\n      if (ecosystem) {\n        headers.set(\"x-ecosystem-id\", ecosystem.id);\n        if (ecosystem.partnerId) {\n          headers.set(\"x-ecosystem-partner-id\", ecosystem.partnerId);\n        }\n      }\n      for (const [key, value] of getPlatformHeaders()) {\n        headers.set(key, value);\n      }\n    }\n    let controller;\n    let abortTimeout;\n    if (requestTimeoutMs) {\n      controller = new AbortController();\n      abortTimeout = setTimeout(() => {\n        controller == null ? void 0 : controller.abort(\"timeout\");\n      }, requestTimeoutMs);\n    }\n    return fetch(url, {\n      ...restInit,\n      headers,\n      signal: controller == null ? void 0 : controller.signal\n    }).finally(() => {\n      if (abortTimeout) {\n        clearTimeout(abortTimeout);\n      }\n    });\n  }\n  return fetchWithHeaders;\n}\nvar THIRDWEB_DOMAINS = [\n  \".thirdweb.com\",\n  \".ipfscdn.io\",\n  // dev domains\n  \".thirdweb.dev\",\n  \".thirdweb-dev.com\"\n];\nvar IS_THIRDWEB_URL_CACHE = new LruMap(4096);\nfunction isThirdwebUrl(url) {\n  if (IS_THIRDWEB_URL_CACHE.has(url)) {\n    return IS_THIRDWEB_URL_CACHE.get(url);\n  }\n  try {\n    const { hostname } = new URL(url);\n    try {\n      if (IS_DEV) {\n        if (hostname === \"localhost\") {\n          IS_THIRDWEB_URL_CACHE.set(url, true);\n          return true;\n        }\n      }\n    } catch {\n    }\n    const is = THIRDWEB_DOMAINS.some((domain) => hostname.endsWith(domain));\n    IS_THIRDWEB_URL_CACHE.set(url, is);\n    return is;\n  } catch {\n    IS_THIRDWEB_URL_CACHE.set(url, false);\n    return false;\n  }\n}\nfunction isPayUrl(url) {\n  try {\n    const { hostname } = new URL(url);\n    return hostname.startsWith(\"pay.\");\n  } catch {\n    return false;\n  }\n}\nfunction isInAppWalletUrl(url) {\n  try {\n    const { hostname } = new URL(url);\n    return hostname.startsWith(\"in-app-wallet.\") || hostname.startsWith(\"embedded-wallet.\");\n  } catch {\n    return false;\n  }\n}\nfunction isBundlerUrl(url) {\n  try {\n    const { hostname } = new URL(url);\n    return hostname.endsWith(\".bundler.thirdweb.com\") || hostname.endsWith(\".bundler.thirdweb-dev.com\");\n  } catch {\n    return false;\n  }\n}\nvar SDK_NAME = \"unified-sdk\";\nvar previousPlatform;\nfunction getPlatformHeaders() {\n  if (previousPlatform) {\n    return previousPlatform;\n  }\n  let os = null;\n  if (typeof navigator !== \"undefined\") {\n    os = detectOS(navigator.userAgent);\n  }\n  let bundleId = void 0;\n  if (typeof globalThis !== \"undefined\" && \"Application\" in globalThis) {\n    bundleId = globalThis.Application.applicationId;\n  }\n  previousPlatform = Object.entries({\n    \"x-sdk-platform\": detectPlatform(),\n    \"x-sdk-version\": version,\n    \"x-sdk-os\": os ? parseOs(os) : \"unknown\",\n    \"x-sdk-name\": SDK_NAME,\n    ...bundleId ? { \"x-bundle-id\": bundleId } : {}\n  });\n  return previousPlatform;\n}\nfunction parseOs(os) {\n  const osLowerCased = os.toLowerCase();\n  if (osLowerCased.startsWith(\"win\")) {\n    return \"win\";\n  }\n  switch (os) {\n    case \"Mac OS\":\n      return \"mac\";\n    case \"iOS\":\n      return \"ios\";\n    case \"Android OS\":\n      return \"android\";\n    default:\n      return osLowerCased.replace(/\\s/gi, \"_\");\n  }\n}\n\nexport {\n  isJWT,\n  IS_DEV,\n  getClientFetch,\n  isThirdwebUrl\n};\n//# sourceMappingURL=chunk-3GSJ2FQJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-3ZOYRTTJ.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/type-guards.js\nfunction isObject(value) {\n  return typeof value === \"object\" && value !== null;\n}\nfunction isObjectWithKeys(value, keys = []) {\n  return isObject(value) && keys.every((key) => key in value);\n}\n\nexport {\n  isObjectWithKeys\n};\n//# sourceMappingURL=chunk-3ZOYRTTJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-4BCIASJM.js",
    "content": "import {\n  concat\n} from \"./chunk-Y3WKETHV.js\";\n\n// node_modules/thirdweb/dist/esm/utils/encoding/helpers/concat-hex.js\nfunction concatHex(values) {\n  return concat(...values);\n}\n\nexport {\n  concatHex\n};\n//# sourceMappingURL=chunk-4BCIASJM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-4OCU6WGG.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/sleep.js\nfunction sleep(ms) {\n  return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport {\n  sleep\n};\n//# sourceMappingURL=chunk-4OCU6WGG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-4PEUWIWY.js",
    "content": "import {\n  hexToBigInt\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_getBalance.js\nasync function eth_getBalance(request, params) {\n  const hexBalance = await request({\n    method: \"eth_getBalance\",\n    params: [params.address, params.blockTag || \"latest\"]\n  });\n  return hexToBigInt(hexBalance);\n}\n\nexport {\n  eth_getBalance\n};\n//# sourceMappingURL=chunk-4PEUWIWY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-4RRAU5V7.js",
    "content": "import {\n  decimals\n} from \"./chunk-QVNJVROL.js\";\nimport {\n  withCache\n} from \"./chunk-GOA7IGSB.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/read/decimals.js\nasync function decimals2(options) {\n  return withCache(() => decimals(options), {\n    cacheKey: `${options.contract.chain.id}:${options.contract.address}:decimals`,\n    // can never change, so cache forever\n    cacheTime: Number.POSITIVE_INFINITY\n  });\n}\n\nexport {\n  decimals2 as decimals\n};\n//# sourceMappingURL=chunk-4RRAU5V7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-4U2YWK76.js",
    "content": "import {\n  isBase64JSON,\n  parseBase64String\n} from \"./chunk-VJFQPB47.js\";\nimport {\n  numberToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/utils/nft/fetchTokenMetadata.js\nasync function fetchTokenMetadata(options) {\n  const { client, tokenId, tokenUri } = options;\n  if (isBase64JSON(tokenUri)) {\n    try {\n      return JSON.parse(parseBase64String(tokenUri));\n    } catch (e) {\n      console.error(\"Failed to fetch base64 encoded NFT\", { tokenId, tokenUri }, e);\n      throw e;\n    }\n  }\n  const { download } = await import(\"./download-F3MJUB7B.js\");\n  try {\n    if (!tokenUri.includes(\"{id}\")) {\n      return await (await download({ client, uri: tokenUri })).json();\n    }\n  } catch (e) {\n    console.error(\"Failed to fetch non-dynamic NFT\", { tokenId, tokenUri }, e);\n    throw e;\n  }\n  try {\n    try {\n      return await (await download({\n        client,\n        uri: tokenUri.replace(\"{id}\", numberToHex(tokenId, { size: 32 }).slice(2))\n      })).json();\n    } catch {\n      return await (await download({\n        client,\n        uri: tokenUri.replace(\"{id}\", tokenId.toString())\n      })).json();\n    }\n  } catch (e) {\n    console.error(\"Failed to fetch dynamic NFT\", { tokenId, tokenUri }, e);\n    throw e;\n  }\n}\n\nexport {\n  fetchTokenMetadata\n};\n//# sourceMappingURL=chunk-4U2YWK76.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-5CO5G7XZ.js",
    "content": "import {\n  resolveScheme\n} from \"./chunk-ZNEQLT5Q.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\n\n// node_modules/thirdweb/dist/esm/storage/download.js\nasync function download(options) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;\n  let url;\n  if (options.uri.startsWith(\"ar://\")) {\n    const { resolveArweaveScheme } = await import(\"./arweave-57OCWZ5C.js\");\n    url = resolveArweaveScheme(options);\n  } else {\n    url = resolveScheme(options);\n  }\n  const res = await getClientFetch(options.client)(url, {\n    keepalive: (_c = (_b = (_a = options.client.config) == null ? void 0 : _a.storage) == null ? void 0 : _b.fetch) == null ? void 0 : _c.keepalive,\n    headers: (_f = (_e = (_d = options.client.config) == null ? void 0 : _d.storage) == null ? void 0 : _e.fetch) == null ? void 0 : _f.headers,\n    requestTimeoutMs: options.requestTimeoutMs ?? ((_i = (_h = (_g = options.client.config) == null ? void 0 : _g.storage) == null ? void 0 : _h.fetch) == null ? void 0 : _i.requestTimeoutMs) ?? 6e4\n  });\n  if (!res.ok) {\n    (_j = res.body) == null ? void 0 : _j.cancel();\n    throw new Error(`Failed to download file: ${res.statusText}`);\n  }\n  return res;\n}\n\nexport {\n  download\n};\n//# sourceMappingURL=chunk-5CO5G7XZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-5EFACFVF.js",
    "content": "import {\n  eth_sendRawTransaction\n} from \"./chunk-MWAIX6LF.js\";\nimport {\n  toSerializableTransaction\n} from \"./chunk-JZC47WAY.js\";\nimport {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport {\n  encode\n} from \"./chunk-7QDK5KLB.js\";\nimport {\n  concatHex as concatHex2\n} from \"./chunk-4BCIASJM.js\";\nimport {\n  defineBlock,\n  defineChain,\n  defineTransaction,\n  defineTransactionReceipt,\n  formatLog,\n  serializeTransaction,\n  sha256,\n  toRlp\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  BaseError,\n  InvalidAddressError,\n  InvalidChainIdError,\n  concatHex,\n  defineTransactionRequest,\n  hexToBigInt,\n  hexToBytes,\n  hexToNumber,\n  isAddress,\n  maxUint16,\n  pad,\n  toBytes,\n  toHex as toHex2\n} from \"./chunk-GINVHONX.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport {\n  toHex,\n  uint8ArrayToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/utils/bigint.js\nfunction toBigInt(value) {\n  if ([\"string\", \"number\"].includes(typeof value) && !Number.isInteger(Number(value))) {\n    throw new Error(`Expected value to be an integer to convert to a bigint, got ${value} of type ${typeof value}`);\n  }\n  if (value instanceof Uint8Array) {\n    return BigInt(uint8ArrayToHex(value));\n  }\n  return BigInt(value);\n}\nvar replaceBigInts = (obj, replacer) => {\n  if (typeof obj === \"bigint\")\n    return replacer(obj);\n  if (Array.isArray(obj))\n    return obj.map((x) => replaceBigInts(x, replacer));\n  if (obj && typeof obj === \"object\")\n    return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, replaceBigInts(v, replacer)]));\n  return obj;\n};\n\n// node_modules/viem/_esm/zksync/constants/number.js\nvar gasPerPubdataDefault = 50000n;\nvar maxBytecodeSize = maxUint16 * 32n;\n\n// node_modules/viem/_esm/zksync/errors/transaction.js\nvar InvalidEip712TransactionError = class extends BaseError {\n  constructor() {\n    super([\n      \"Transaction is not an EIP712 transaction.\",\n      \"\",\n      \"Transaction must:\",\n      '  - include `type: \"eip712\"`',\n      \"  - include one of the following: `customSignature`, `paymaster`, `paymasterInput`, `gasPerPubdata`, `factoryDeps`\"\n    ].join(\"\\n\"), { name: \"InvalidEip712TransactionError\" });\n  }\n};\n\n// node_modules/viem/_esm/zksync/utils/isEip712Transaction.js\nfunction isEIP712Transaction(transaction) {\n  if (transaction.type === \"eip712\")\n    return true;\n  if (\"customSignature\" in transaction && transaction.customSignature || \"paymaster\" in transaction && transaction.paymaster || \"paymasterInput\" in transaction && transaction.paymasterInput || \"gasPerPubdata\" in transaction && typeof transaction.gasPerPubdata === \"bigint\" || \"factoryDeps\" in transaction && transaction.factoryDeps)\n    return true;\n  return false;\n}\n\n// node_modules/viem/_esm/zksync/utils/assertEip712Transaction.js\nfunction assertEip712Transaction(transaction) {\n  const { chainId, to, from, paymaster, paymasterInput } = transaction;\n  if (!isEIP712Transaction(transaction))\n    throw new InvalidEip712TransactionError();\n  if (!chainId || chainId <= 0)\n    throw new InvalidChainIdError({ chainId });\n  if (to && !isAddress(to))\n    throw new InvalidAddressError({ address: to });\n  if (from && !isAddress(from))\n    throw new InvalidAddressError({ address: from });\n  if (paymaster && !isAddress(paymaster))\n    throw new InvalidAddressError({ address: paymaster });\n  if (paymaster && !paymasterInput) {\n    throw new BaseError(\"`paymasterInput` must be provided when `paymaster` is defined\");\n  }\n  if (!paymaster && paymasterInput) {\n    throw new BaseError(\"`paymaster` must be provided when `paymasterInput` is defined\");\n  }\n}\n\n// node_modules/viem/_esm/zksync/serializers.js\nfunction serializeTransaction2(transaction, signature) {\n  if (isEIP712Transaction(transaction))\n    return serializeTransactionEIP712(transaction);\n  return serializeTransaction(transaction, signature);\n}\nvar serializers = {\n  transaction: serializeTransaction2\n};\nfunction serializeTransactionEIP712(transaction) {\n  const { chainId, gas, nonce, to, from, value, maxFeePerGas, maxPriorityFeePerGas, customSignature, factoryDeps, paymaster, paymasterInput, gasPerPubdata, data } = transaction;\n  assertEip712Transaction(transaction);\n  const serializedTransaction = [\n    nonce ? toHex2(nonce) : \"0x\",\n    maxPriorityFeePerGas ? toHex2(maxPriorityFeePerGas) : \"0x\",\n    maxFeePerGas ? toHex2(maxFeePerGas) : \"0x\",\n    gas ? toHex2(gas) : \"0x\",\n    to ?? \"0x\",\n    value ? toHex2(value) : \"0x\",\n    data ?? \"0x0\",\n    toHex2(chainId),\n    toHex2(\"\"),\n    toHex2(\"\"),\n    toHex2(chainId),\n    from ?? \"0x\",\n    gasPerPubdata ? toHex2(gasPerPubdata) : toHex2(gasPerPubdataDefault),\n    factoryDeps ?? [],\n    customSignature ?? \"0x\",\n    // EIP712 signature\n    paymaster && paymasterInput ? [paymaster, paymasterInput] : []\n  ];\n  return concatHex([\n    \"0x71\",\n    toRlp(serializedTransaction)\n  ]);\n}\n\n// node_modules/viem/_esm/zksync/errors/bytecode.js\nvar BytecodeLengthExceedsMaxSizeError = class extends BaseError {\n  constructor({ givenLength, maxBytecodeSize: maxBytecodeSize2 }) {\n    super(`Bytecode cannot be longer than ${maxBytecodeSize2} bytes. Given length: ${givenLength}`, { name: \"BytecodeLengthExceedsMaxSizeError\" });\n  }\n};\nvar BytecodeLengthInWordsMustBeOddError = class extends BaseError {\n  constructor({ givenLengthInWords }) {\n    super(`Bytecode length in 32-byte words must be odd. Given length in words: ${givenLengthInWords}`, { name: \"BytecodeLengthInWordsMustBeOddError\" });\n  }\n};\nvar BytecodeLengthMustBeDivisibleBy32Error = class extends BaseError {\n  constructor({ givenLength }) {\n    super(`The bytecode length in bytes must be divisible by 32. Given length: ${givenLength}`, { name: \"BytecodeLengthMustBeDivisibleBy32Error\" });\n  }\n};\n\n// node_modules/viem/_esm/zksync/utils/hashBytecode.js\nfunction hashBytecode(bytecode) {\n  const bytecodeBytes = toBytes(bytecode);\n  if (bytecodeBytes.length % 32 !== 0)\n    throw new BytecodeLengthMustBeDivisibleBy32Error({\n      givenLength: bytecodeBytes.length\n    });\n  if (bytecodeBytes.length > maxBytecodeSize)\n    throw new BytecodeLengthExceedsMaxSizeError({\n      givenLength: bytecodeBytes.length,\n      maxBytecodeSize\n    });\n  const hashStr = sha256(bytecodeBytes);\n  const hash = toBytes(hashStr);\n  const bytecodeLengthInWords = bytecodeBytes.length / 32;\n  if (bytecodeLengthInWords % 2 === 0) {\n    throw new BytecodeLengthInWordsMustBeOddError({\n      givenLengthInWords: bytecodeLengthInWords\n    });\n  }\n  const bytecodeLength = toBytes(bytecodeLengthInWords);\n  const bytecodeLengthPadded = pad(bytecodeLength, { size: 2 });\n  const codeHashVersion = new Uint8Array([1, 0]);\n  hash.set(codeHashVersion, 0);\n  hash.set(bytecodeLengthPadded, 2);\n  return hash;\n}\n\n// node_modules/viem/_esm/zksync/formatters.js\nvar formatters = {\n  block: defineBlock({\n    format(args) {\n      var _a;\n      const transactions = (_a = args.transactions) == null ? void 0 : _a.map((transaction) => {\n        var _a2;\n        if (typeof transaction === \"string\")\n          return transaction;\n        const formatted = (_a2 = formatters.transaction) == null ? void 0 : _a2.format(transaction);\n        if (formatted.typeHex === \"0x71\")\n          formatted.type = \"eip712\";\n        else if (formatted.typeHex === \"0xff\")\n          formatted.type = \"priority\";\n        return formatted;\n      });\n      return {\n        l1BatchNumber: args.l1BatchNumber ? hexToBigInt(args.l1BatchNumber) : null,\n        l1BatchTimestamp: args.l1BatchTimestamp ? hexToBigInt(args.l1BatchTimestamp) : null,\n        transactions\n      };\n    }\n  }),\n  transaction: defineTransaction({\n    format(args) {\n      const transaction = {};\n      if (args.type === \"0x71\")\n        transaction.type = \"eip712\";\n      else if (args.type === \"0xff\")\n        transaction.type = \"priority\";\n      return {\n        ...transaction,\n        l1BatchNumber: args.l1BatchNumber ? hexToBigInt(args.l1BatchNumber) : null,\n        l1BatchTxIndex: args.l1BatchTxIndex ? hexToBigInt(args.l1BatchTxIndex) : null\n      };\n    }\n  }),\n  transactionReceipt: defineTransactionReceipt({\n    format(args) {\n      return {\n        l1BatchNumber: args.l1BatchNumber ? hexToBigInt(args.l1BatchNumber) : null,\n        l1BatchTxIndex: args.l1BatchTxIndex ? hexToBigInt(args.l1BatchTxIndex) : null,\n        logs: args.logs.map((log) => {\n          return {\n            ...formatLog(log),\n            l1BatchNumber: log.l1BatchNumber ? hexToBigInt(log.l1BatchNumber) : null,\n            transactionLogIndex: hexToNumber(log.transactionLogIndex),\n            logType: log.logType\n          };\n        }),\n        l2ToL1Logs: args.l2ToL1Logs.map((l2ToL1Log) => {\n          return {\n            blockNumber: hexToBigInt(l2ToL1Log.blockHash),\n            blockHash: l2ToL1Log.blockHash,\n            l1BatchNumber: hexToBigInt(l2ToL1Log.l1BatchNumber),\n            transactionIndex: hexToBigInt(l2ToL1Log.transactionIndex),\n            shardId: hexToBigInt(l2ToL1Log.shardId),\n            isService: l2ToL1Log.isService,\n            sender: l2ToL1Log.sender,\n            key: l2ToL1Log.key,\n            value: l2ToL1Log.value,\n            transactionHash: l2ToL1Log.transactionHash,\n            logIndex: hexToBigInt(l2ToL1Log.logIndex)\n          };\n        })\n      };\n    }\n  }),\n  transactionRequest: defineTransactionRequest({\n    exclude: [\n      \"customSignature\",\n      \"factoryDeps\",\n      \"gasPerPubdata\",\n      \"paymaster\",\n      \"paymasterInput\"\n    ],\n    format(args) {\n      if (args.gasPerPubdata || args.paymaster && args.paymasterInput || args.factoryDeps || args.customSignature)\n        return {\n          eip712Meta: {\n            ...args.gasPerPubdata ? { gasPerPubdata: toHex2(args.gasPerPubdata) } : { gasPerPubdata: toHex2(gasPerPubdataDefault) },\n            ...args.paymaster && args.paymasterInput ? {\n              paymasterParams: {\n                paymaster: args.paymaster,\n                paymasterInput: Array.from(hexToBytes(args.paymasterInput))\n              }\n            } : {},\n            ...args.factoryDeps ? {\n              factoryDeps: args.factoryDeps.map((dep) => Array.from(hexToBytes(dep)))\n            } : {},\n            ...args.customSignature ? {\n              customSignature: Array.from(hexToBytes(args.customSignature))\n            } : {}\n          },\n          type: \"0x71\"\n        };\n      return {};\n    }\n  })\n};\n\n// node_modules/viem/_esm/zksync/utils/getEip712Domain.js\nvar getEip712Domain2 = (transaction) => {\n  assertEip712Transaction(transaction);\n  const message = transactionToMessage(transaction);\n  return {\n    domain: {\n      name: \"zkSync\",\n      version: \"2\",\n      chainId: transaction.chainId\n    },\n    types: {\n      Transaction: [\n        { name: \"txType\", type: \"uint256\" },\n        { name: \"from\", type: \"uint256\" },\n        { name: \"to\", type: \"uint256\" },\n        { name: \"gasLimit\", type: \"uint256\" },\n        { name: \"gasPerPubdataByteLimit\", type: \"uint256\" },\n        { name: \"maxFeePerGas\", type: \"uint256\" },\n        { name: \"maxPriorityFeePerGas\", type: \"uint256\" },\n        { name: \"paymaster\", type: \"uint256\" },\n        { name: \"nonce\", type: \"uint256\" },\n        { name: \"value\", type: \"uint256\" },\n        { name: \"data\", type: \"bytes\" },\n        { name: \"factoryDeps\", type: \"bytes32[]\" },\n        { name: \"paymasterInput\", type: \"bytes\" }\n      ]\n    },\n    primaryType: \"Transaction\",\n    message\n  };\n};\nfunction transactionToMessage(transaction) {\n  const { gas, nonce, to, from, value, maxFeePerGas, maxPriorityFeePerGas, factoryDeps, paymaster, paymasterInput, gasPerPubdata, data } = transaction;\n  return {\n    txType: 113n,\n    from: BigInt(from),\n    to: to ? BigInt(to) : 0n,\n    gasLimit: gas ?? 0n,\n    gasPerPubdataByteLimit: gasPerPubdata ?? gasPerPubdataDefault,\n    maxFeePerGas: maxFeePerGas ?? 0n,\n    maxPriorityFeePerGas: maxPriorityFeePerGas ?? 0n,\n    paymaster: paymaster ? BigInt(paymaster) : 0n,\n    nonce: nonce ? BigInt(nonce) : 0n,\n    value: value ?? 0n,\n    data: data ? data : \"0x0\",\n    factoryDeps: (factoryDeps == null ? void 0 : factoryDeps.map((dep) => toHex2(hashBytecode(dep)))) ?? [],\n    paymasterInput: paymasterInput ? paymasterInput : \"0x\"\n  };\n}\n\n// node_modules/viem/_esm/zksync/chainConfig.js\nvar chainConfig = {\n  formatters,\n  serializers,\n  custom: {\n    getEip712Domain: getEip712Domain2\n  }\n};\n\n// node_modules/viem/_esm/chains/definitions/zksync.js\nvar zksync = defineChain({\n  ...chainConfig,\n  id: 324,\n  name: \"ZKsync Era\",\n  network: \"zksync-era\",\n  nativeCurrency: {\n    decimals: 18,\n    name: \"Ether\",\n    symbol: \"ETH\"\n  },\n  rpcUrls: {\n    default: {\n      http: [\"https://mainnet.era.zksync.io\"],\n      webSocket: [\"wss://mainnet.era.zksync.io/ws\"]\n    }\n  },\n  blockExplorers: {\n    default: {\n      name: \"Etherscan\",\n      url: \"https://era.zksync.network/\",\n      apiUrl: \"https://api-era.zksync.network/api\"\n    },\n    native: {\n      name: \"ZKsync Explorer\",\n      url: \"https://explorer.zksync.io/\",\n      apiUrl: \"https://block-explorer-api.mainnet.zksync.io/api\"\n    }\n  },\n  contracts: {\n    multicall3: {\n      address: \"0xF9cda624FBC7e059355ce98a31693d299FACd963\"\n    },\n    universalSignatureVerifier: {\n      address: \"0xfB688330379976DA81eB64Fe4BF50d7401763B9C\",\n      blockCreated: 45659388\n    }\n  }\n});\n\n// node_modules/viem/_esm/chains/definitions/zksyncInMemoryNode.js\nvar zksyncInMemoryNode = defineChain({\n  ...chainConfig,\n  id: 260,\n  name: \"ZKsync InMemory Node\",\n  network: \"zksync-in-memory-node\",\n  nativeCurrency: { name: \"Ether\", symbol: \"ETH\", decimals: 18 },\n  rpcUrls: {\n    default: {\n      http: [\"http://localhost:8011\"]\n    }\n  },\n  testnet: true\n});\n\n// node_modules/viem/_esm/chains/definitions/zksyncLocalNode.js\nvar zksyncLocalNode = defineChain({\n  ...chainConfig,\n  id: 270,\n  name: \"ZKsync CLI Local Node\",\n  network: \"zksync-cli-local-node\",\n  nativeCurrency: { name: \"Ether\", symbol: \"ETH\", decimals: 18 },\n  rpcUrls: {\n    default: {\n      http: [\"http://localhost:3050\"]\n    }\n  },\n  testnet: true\n});\n\n// node_modules/viem/_esm/chains/definitions/zksyncSepoliaTestnet.js\nvar zksyncSepoliaTestnet = defineChain({\n  ...chainConfig,\n  id: 300,\n  name: \"ZKsync Sepolia Testnet\",\n  network: \"zksync-sepolia-testnet\",\n  nativeCurrency: { name: \"Ether\", symbol: \"ETH\", decimals: 18 },\n  rpcUrls: {\n    default: {\n      http: [\"https://sepolia.era.zksync.dev\"],\n      webSocket: [\"wss://sepolia.era.zksync.dev/ws\"]\n    }\n  },\n  blockExplorers: {\n    default: {\n      name: \"Etherscan\",\n      url: \"https://sepolia-era.zksync.network/\",\n      apiUrl: \"https://api-sepolia-era.zksync.network/api\"\n    },\n    native: {\n      name: \"ZKsync Explorer\",\n      url: \"https://sepolia.explorer.zksync.io/\",\n      blockExplorerApi: \"https://block-explorer-api.sepolia.zksync.dev/api\"\n    }\n  },\n  contracts: {\n    multicall3: {\n      address: \"0xF9cda624FBC7e059355ce98a31693d299FACd963\"\n    },\n    universalSignatureVerifier: {\n      address: \"0xfB688330379976DA81eB64Fe4BF50d7401763B9C\",\n      blockCreated: 3855712\n    }\n  },\n  testnet: true\n});\n\n// node_modules/thirdweb/dist/esm/transaction/actions/zksync/getEip721Domain.js\nvar gasPerPubdataDefault2 = 50000n;\nvar getEip712Domain3 = (transaction) => {\n  const message = transactionToMessage2(transaction);\n  return {\n    domain: {\n      name: \"zkSync\",\n      version: \"2\",\n      chainId: transaction.chainId\n    },\n    types: {\n      Transaction: [\n        { name: \"txType\", type: \"uint256\" },\n        { name: \"from\", type: \"uint256\" },\n        { name: \"to\", type: \"uint256\" },\n        { name: \"gasLimit\", type: \"uint256\" },\n        { name: \"gasPerPubdataByteLimit\", type: \"uint256\" },\n        { name: \"maxFeePerGas\", type: \"uint256\" },\n        { name: \"maxPriorityFeePerGas\", type: \"uint256\" },\n        { name: \"paymaster\", type: \"uint256\" },\n        { name: \"nonce\", type: \"uint256\" },\n        { name: \"value\", type: \"uint256\" },\n        { name: \"data\", type: \"bytes\" },\n        { name: \"factoryDeps\", type: \"bytes32[]\" },\n        { name: \"paymasterInput\", type: \"bytes\" }\n      ]\n    },\n    primaryType: \"Transaction\",\n    message\n  };\n};\nfunction transactionToMessage2(transaction) {\n  const { gas, nonce, to, from, value, maxFeePerGas, maxPriorityFeePerGas, paymaster, paymasterInput, gasPerPubdata, data, factoryDeps } = transaction;\n  return {\n    txType: 113n,\n    from: BigInt(from),\n    to: to ? BigInt(to) : 0n,\n    gasLimit: gas ?? 0n,\n    gasPerPubdataByteLimit: gasPerPubdata ?? gasPerPubdataDefault2,\n    maxFeePerGas: maxFeePerGas ?? 0n,\n    maxPriorityFeePerGas: maxPriorityFeePerGas ?? 0n,\n    paymaster: paymaster ? BigInt(paymaster) : 0n,\n    nonce: nonce ? BigInt(nonce) : 0n,\n    value: value ?? 0n,\n    data: data ? data : \"0x0\",\n    factoryDeps: (factoryDeps == null ? void 0 : factoryDeps.map((dep) => toHex(hashBytecode(dep)))) ?? [],\n    paymasterInput: paymasterInput ? paymasterInput : \"0x\"\n  };\n}\n\n// node_modules/thirdweb/dist/esm/transaction/actions/zksync/send-eip712-transaction.js\nasync function sendEip712Transaction2(options) {\n  const { account, transaction } = options;\n  const eip712Transaction = await populateEip712Transaction(options);\n  const hash = await signEip712Transaction2({\n    account,\n    eip712Transaction,\n    chainId: transaction.chain.id\n  });\n  const rpc = getRpcClient(transaction);\n  const result = await eth_sendRawTransaction(rpc, hash);\n  return {\n    transactionHash: result,\n    chain: transaction.chain,\n    client: transaction.client\n  };\n}\nasync function signEip712Transaction2(options) {\n  const { account, eip712Transaction, chainId } = options;\n  const eip712Domain = getEip712Domain3(eip712Transaction);\n  const customSignature = await account.signTypedData({\n    // biome-ignore lint/suspicious/noExplicitAny: TODO type properly\n    ...eip712Domain\n  });\n  return serializeTransactionEIP7122({\n    ...eip712Transaction,\n    chainId,\n    customSignature\n  });\n}\nasync function populateEip712Transaction(options) {\n  const { account, transaction } = options;\n  const { gas, maxFeePerGas, maxPriorityFeePerGas, gasPerPubdata } = await getZkGasFees({ transaction, from: getAddress(account.address) });\n  const serializableTransaction = await toSerializableTransaction({\n    transaction: {\n      ...transaction,\n      gas,\n      maxFeePerGas,\n      maxPriorityFeePerGas\n    },\n    from: account.address\n  });\n  return {\n    ...serializableTransaction,\n    ...transaction.eip712,\n    gasPerPubdata,\n    from: account.address\n  };\n}\nfunction serializeTransactionEIP7122(transaction) {\n  const { chainId, gas, nonce, to, from, value, maxFeePerGas, maxPriorityFeePerGas, customSignature, factoryDeps, paymaster, paymasterInput, gasPerPubdata, data } = transaction;\n  const serializedTransaction = [\n    nonce ? toHex(nonce) : \"0x\",\n    maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : \"0x\",\n    maxFeePerGas ? toHex(maxFeePerGas) : \"0x\",\n    gas ? toHex(gas) : \"0x\",\n    to ?? \"0x\",\n    value ? toHex(value) : \"0x\",\n    data ?? \"0x0\",\n    toHex(chainId),\n    toHex(\"\"),\n    toHex(\"\"),\n    toHex(chainId),\n    from ?? \"0x\",\n    gasPerPubdata ? toHex(gasPerPubdata) : toHex(gasPerPubdataDefault2),\n    factoryDeps ?? [],\n    customSignature ?? \"0x\",\n    // EIP712 signature\n    paymaster && paymasterInput ? [paymaster, paymasterInput] : []\n  ];\n  return concatHex2([\"0x71\", toRlp(serializedTransaction)]);\n}\nasync function getZkGasFees(args) {\n  const { transaction, from } = args;\n  let [gas, maxFeePerGas, maxPriorityFeePerGas, eip712] = await Promise.all([\n    resolvePromisedValue(transaction.gas),\n    resolvePromisedValue(transaction.maxFeePerGas),\n    resolvePromisedValue(transaction.maxPriorityFeePerGas),\n    resolvePromisedValue(transaction.eip712)\n  ]);\n  let gasPerPubdata = eip712 == null ? void 0 : eip712.gasPerPubdata;\n  if (!gas || !maxFeePerGas || !maxPriorityFeePerGas) {\n    const rpc = getRpcClient(transaction);\n    const params = await formatTransaction({ transaction, from });\n    const result = await rpc({\n      // biome-ignore lint/suspicious/noExplicitAny: TODO add to RPC method types\n      method: \"zks_estimateFee\",\n      // biome-ignore lint/suspicious/noExplicitAny: TODO add to RPC method types\n      params: [replaceBigInts(params, toHex)]\n    });\n    gas = toBigInt(result.gas_limit) * 2n;\n    const baseFee = toBigInt(result.max_fee_per_gas);\n    maxFeePerGas = baseFee * 2n;\n    maxPriorityFeePerGas = toBigInt(result.max_priority_fee_per_gas) || 1n;\n    gasPerPubdata = toBigInt(result.gas_per_pubdata_limit) * 2n;\n    if (gasPerPubdata < 50000n) {\n      gasPerPubdata = 50000n;\n    }\n  }\n  return {\n    gas,\n    maxFeePerGas,\n    maxPriorityFeePerGas,\n    gasPerPubdata\n  };\n}\nasync function formatTransaction(args) {\n  var _a;\n  const { transaction, from } = args;\n  const [data, to, value, eip712] = await Promise.all([\n    encode(transaction),\n    resolvePromisedValue(transaction.to),\n    resolvePromisedValue(transaction.value),\n    resolvePromisedValue(transaction.eip712)\n  ]);\n  const gasPerPubdata = eip712 == null ? void 0 : eip712.gasPerPubdata;\n  return {\n    from,\n    to,\n    data,\n    value,\n    gasPerPubdata,\n    eip712Meta: {\n      ...eip712,\n      gasPerPubdata: gasPerPubdata || 50000n,\n      factoryDeps: (_a = eip712 == null ? void 0 : eip712.factoryDeps) == null ? void 0 : _a.map((dep) => Array.from(hexToBytes(dep)))\n    },\n    type: \"0x71\"\n  };\n}\n\nexport {\n  sendEip712Transaction2 as sendEip712Transaction,\n  signEip712Transaction2 as signEip712Transaction,\n  populateEip712Transaction,\n  getZkGasFees\n};\n//# sourceMappingURL=chunk-5EFACFVF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-5THTWD2M.js",
    "content": "import {\n  sendTransaction\n} from \"./chunk-JTR2PIFP.js\";\nimport {\n  prepareTransaction\n} from \"./chunk-CNLOA7AS.js\";\nimport {\n  checksumAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  getCachedChain\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  hexToBigInt,\n  hexToNumber\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/request-handlers/send-raw-transaction.js\nasync function handleSendRawTransactionRequest(options) {\n  const { account, chainId, params: [rawTransaction] } = options;\n  if (!account.sendRawTransaction) {\n    throw new Error(\"The current account does not support sending raw transactions\");\n  }\n  const txResult = await account.sendRawTransaction({\n    rawTransaction,\n    chainId\n  });\n  return txResult.transactionHash;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/utils.js\nfunction validateAccountAddress(account, address) {\n  if (checksumAddress(account.address) !== checksumAddress(address)) {\n    throw new Error(`Failed to validate account address (${account.address}), differs from ${address}`);\n  }\n}\nfunction parseEip155ChainId(chainId) {\n  const chainIdParts = chainId.split(\":\");\n  const chainIdAsNumber = Number.parseInt(chainIdParts[1] ?? \"0\");\n  if (chainIdParts.length !== 2 || chainIdParts[0] !== \"eip155\" || chainIdAsNumber === 0 || !chainIdAsNumber) {\n    throw new Error(`Invalid chainId ${chainId}, should have the format 'eip155:1'`);\n  }\n  return chainIdAsNumber;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/request-handlers/send-transaction.js\nasync function handleSendTransactionRequest(options) {\n  const { account, chainId, thirdwebClient, params: [transaction] } = options;\n  if (transaction.from !== void 0) {\n    validateAccountAddress(account, transaction.from);\n  }\n  const preparedTransaction = prepareTransaction({\n    gas: transaction.gas ? hexToBigInt(transaction.gas) : void 0,\n    gasPrice: transaction.gasPrice ? hexToBigInt(transaction.gasPrice) : void 0,\n    value: transaction.value ? hexToBigInt(transaction.value) : void 0,\n    to: transaction.to,\n    data: transaction.data,\n    chain: getCachedChain(chainId),\n    client: thirdwebClient\n  });\n  const txResult = await sendTransaction({\n    transaction: preparedTransaction,\n    account\n  });\n  return txResult.transactionHash;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/request-handlers/sign-transaction.js\nasync function handleSignTransactionRequest(options) {\n  const { account, params: [transaction] } = options;\n  if (!account.signTransaction) {\n    throw new Error(\"The current account does not support signing transactions\");\n  }\n  if (transaction.from !== void 0) {\n    validateAccountAddress(account, transaction.from);\n  }\n  return account.signTransaction({\n    gas: transaction.gas ? hexToBigInt(transaction.gas) : void 0,\n    gasPrice: transaction.gasPrice ? hexToBigInt(transaction.gasPrice) : void 0,\n    value: transaction.value ? hexToBigInt(transaction.value) : void 0,\n    nonce: transaction.nonce ? hexToNumber(transaction.nonce) : void 0,\n    to: transaction.to,\n    data: transaction.data\n  });\n}\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/request-handlers/sign-typed-data.js\nasync function handleSignTypedDataRequest(options) {\n  const { account, params } = options;\n  validateAccountAddress(account, params[0]);\n  return account.signTypedData(\n    // The data could be sent to us as a string or object, depending on the level of parsing on the client side\n    typeof params[1] === \"string\" ? JSON.parse(params[1]) : params[1]\n  );\n}\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/request-handlers/sign.js\nasync function handleSignRequest(options) {\n  const { account, params } = options;\n  validateAccountAddress(account, params[1]);\n  return account.signMessage({ message: { raw: params[0] } });\n}\n\nexport {\n  handleSendRawTransactionRequest,\n  parseEip155ChainId,\n  handleSendTransactionRequest,\n  handleSignTransactionRequest,\n  handleSignTypedDataRequest,\n  handleSignRequest\n};\n//# sourceMappingURL=chunk-5THTWD2M.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-5U5XBS6S.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/url.js\nfunction isHttpUrl(url) {\n  return url.startsWith(\"http://\") || url.startsWith(\"https://\");\n}\nfunction formatUniversalUrl(appUrl, wcUri) {\n  if (!isHttpUrl(appUrl)) {\n    return formatNativeUrl(appUrl, wcUri);\n  }\n  let safeAppUrl = appUrl;\n  if (!safeAppUrl.endsWith(\"/\")) {\n    safeAppUrl = `${safeAppUrl}/`;\n  }\n  const encodedWcUrl = encodeURIComponent(wcUri);\n  return {\n    redirect: `${safeAppUrl}wc?uri=${encodedWcUrl}`,\n    href: safeAppUrl\n  };\n}\nfunction formatNativeUrl(appUrl, wcUri) {\n  if (isHttpUrl(appUrl)) {\n    return formatUniversalUrl(appUrl, wcUri);\n  }\n  let safeAppUrl = appUrl;\n  if (!safeAppUrl.includes(\"://\")) {\n    safeAppUrl = appUrl.replaceAll(\"/\", \"\").replaceAll(\":\", \"\");\n    safeAppUrl = `${safeAppUrl}://`;\n  }\n  if (!safeAppUrl.endsWith(\"/\")) {\n    safeAppUrl = `${safeAppUrl}/`;\n  }\n  const encodedWcUrl = encodeURIComponent(wcUri);\n  return {\n    redirect: `${safeAppUrl}wc?uri=${encodedWcUrl}`,\n    href: safeAppUrl\n  };\n}\nfunction formatWalletConnectUrl(appUrl, wcUri) {\n  return isHttpUrl(appUrl) ? formatUniversalUrl(appUrl, wcUri) : formatNativeUrl(appUrl, wcUri);\n}\nfunction formatExplorerTxUrl(explorerUrl, txHash) {\n  return `${explorerUrl.endsWith(\"/\") ? explorerUrl : `${explorerUrl}/`}tx/${txHash}`;\n}\nfunction formatExplorerAddressUrl(explorerUrl, address) {\n  return `${explorerUrl.endsWith(\"/\") ? explorerUrl : `${explorerUrl}/`}address/${address}`;\n}\n\nexport {\n  formatWalletConnectUrl,\n  formatExplorerTxUrl,\n  formatExplorerAddressUrl\n};\n//# sourceMappingURL=chunk-5U5XBS6S.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-65EUCVOP.js",
    "content": "import {\n  getOrCreateInAppWalletConnector\n} from \"./chunk-6WNCTW75.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/auth/index.js\nasync function getInAppWalletConnector(client, ecosystem) {\n  return getOrCreateInAppWalletConnector(client, async (client2) => {\n    const { InAppWebConnector } = await import(\"./web-connector-5CMXT4ED.js\");\n    return new InAppWebConnector({\n      client: client2,\n      ecosystem\n    });\n  }, ecosystem);\n}\nasync function getAuthenticatedUser(options) {\n  const { client, ecosystem } = options;\n  const connector = await getInAppWalletConnector(client, ecosystem);\n  const user = await connector.getUser();\n  switch (user.status) {\n    case \"Logged In, Wallet Initialized\": {\n      return user;\n    }\n  }\n  return void 0;\n}\nasync function getUserEmail(options) {\n  const user = await getAuthenticatedUser(options);\n  if (user && \"email\" in user.authDetails) {\n    return user.authDetails.email;\n  }\n  return void 0;\n}\nasync function getUserPhoneNumber(options) {\n  const user = await getAuthenticatedUser(options);\n  if (user && \"phoneNumber\" in user.authDetails) {\n    return user.authDetails.phoneNumber;\n  }\n  return void 0;\n}\nasync function preAuthenticate(args) {\n  const connector = await getInAppWalletConnector(args.client, args.ecosystem);\n  return connector.preAuthenticate(args);\n}\nasync function authenticate(args) {\n  const connector = await getInAppWalletConnector(args.client, args.ecosystem);\n  return connector.authenticate(args);\n}\nasync function authenticateWithRedirect(args) {\n  const connector = await getInAppWalletConnector(args.client, args.ecosystem);\n  if (!connector.authenticateWithRedirect) {\n    throw new Error(\"authenticateWithRedirect is not supported on this platform\");\n  }\n  return connector.authenticateWithRedirect(args.strategy, args.mode, args.redirectUrl);\n}\nasync function linkProfile(args) {\n  const connector = await getInAppWalletConnector(args.client, args.ecosystem);\n  return await connector.linkProfile(args);\n}\nasync function getProfiles(args) {\n  const connector = await getInAppWalletConnector(args.client, args.ecosystem);\n  return connector.getProfiles();\n}\n\nexport {\n  getUserEmail,\n  getUserPhoneNumber,\n  preAuthenticate,\n  authenticate,\n  authenticateWithRedirect,\n  linkProfile,\n  getProfiles\n};\n//# sourceMappingURL=chunk-65EUCVOP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-673YCYST.js",
    "content": "// node_modules/thirdweb/dist/esm/constants/addresses.js\nvar NATIVE_TOKEN_ADDRESS = \"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\";\nfunction isNativeTokenAddress(address) {\n  return address.toLowerCase() === NATIVE_TOKEN_ADDRESS;\n}\nvar ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\nexport {\n  NATIVE_TOKEN_ADDRESS,\n  isNativeTokenAddress,\n  ZERO_ADDRESS\n};\n//# sourceMappingURL=chunk-673YCYST.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-67BSOYLQ.js",
    "content": "import {\n  keccak_256\n} from \"./chunk-O6LGEXJ4.js\";\nimport {\n  hexToUint8Array,\n  isHex,\n  uint8ArrayToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/utils/hashing/keccak256.js\nfunction keccak256(value, to) {\n  const bytes = keccak_256(isHex(value, { strict: false }) ? hexToUint8Array(value) : value);\n  if (to === \"bytes\") {\n    return bytes;\n  }\n  return uint8ArrayToHex(bytes);\n}\n\nexport {\n  keccak256\n};\n//# sourceMappingURL=chunk-67BSOYLQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-6FLJU7W7.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/arweave.js\nvar DEFAULT_GATEWAY = \"https://arweave.net/{fileId}\";\nfunction resolveArweaveScheme(options) {\n  if (options.uri.startsWith(\"ar://\")) {\n    const fileId = options.uri.replace(\"ar://\", \"\");\n    if (options.gatewayUrl) {\n      const separator = options.gatewayUrl.endsWith(\"/\") ? \"\" : \"/\";\n      return `${options.gatewayUrl}${separator}${fileId}`;\n    }\n    return DEFAULT_GATEWAY.replace(\"{fileId}\", fileId);\n  }\n  if (options.uri.startsWith(\"http\")) {\n    return options.uri;\n  }\n  throw new Error(`Invalid URI scheme, expected \"ar://\" or \"http(s)://\"`);\n}\n\nexport {\n  resolveArweaveScheme\n};\n//# sourceMappingURL=chunk-6FLJU7W7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-6LAJV43E.js",
    "content": "// node_modules/@lit/reactive-element/development/css-tag.js\nvar NODE_MODE = false;\nvar global = NODE_MODE ? globalThis : window;\nvar supportsAdoptingStyleSheets = global.ShadowRoot && (global.ShadyCSS === void 0 || global.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar constructionToken = Symbol();\nvar cssTagCache = /* @__PURE__ */ new WeakMap();\nvar CSSResult = class {\n  constructor(cssText, strings, safeToken) {\n    this[\"_$cssResult$\"] = true;\n    if (safeToken !== constructionToken) {\n      throw new Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    }\n    this.cssText = cssText;\n    this._strings = strings;\n  }\n  // This is a getter so that it's lazy. In practice, this means stylesheets\n  // are not created until the first element instance is made.\n  get styleSheet() {\n    let styleSheet = this._styleSheet;\n    const strings = this._strings;\n    if (supportsAdoptingStyleSheets && styleSheet === void 0) {\n      const cacheable = strings !== void 0 && strings.length === 1;\n      if (cacheable) {\n        styleSheet = cssTagCache.get(strings);\n      }\n      if (styleSheet === void 0) {\n        (this._styleSheet = styleSheet = new CSSStyleSheet()).replaceSync(this.cssText);\n        if (cacheable) {\n          cssTagCache.set(strings, styleSheet);\n        }\n      }\n    }\n    return styleSheet;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar textFromCSSResult = (value) => {\n  if (value[\"_$cssResult$\"] === true) {\n    return value.cssText;\n  } else if (typeof value === \"number\") {\n    return value;\n  } else {\n    throw new Error(`Value passed to 'css' function must be a 'css' function result: ${value}. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`);\n  }\n};\nvar unsafeCSS = (value) => new CSSResult(typeof value === \"string\" ? value : String(value), void 0, constructionToken);\nvar css = (strings, ...values) => {\n  const cssText = strings.length === 1 ? strings[0] : values.reduce((acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1], strings[0]);\n  return new CSSResult(cssText, strings, constructionToken);\n};\nvar adoptStyles = (renderRoot, styles) => {\n  if (supportsAdoptingStyleSheets) {\n    renderRoot.adoptedStyleSheets = styles.map((s) => s instanceof CSSStyleSheet ? s : s.styleSheet);\n  } else {\n    styles.forEach((s) => {\n      const style = document.createElement(\"style\");\n      const nonce = global[\"litNonce\"];\n      if (nonce !== void 0) {\n        style.setAttribute(\"nonce\", nonce);\n      }\n      style.textContent = s.cssText;\n      renderRoot.appendChild(style);\n    });\n  }\n};\nvar cssResultFromStyleSheet = (sheet) => {\n  let cssText = \"\";\n  for (const rule of sheet.cssRules) {\n    cssText += rule.cssText;\n  }\n  return unsafeCSS(cssText);\n};\nvar getCompatibleStyle = supportsAdoptingStyleSheets || NODE_MODE && global.CSSStyleSheet === void 0 ? (s) => s : (s) => s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n\n// node_modules/lit-html/development/lit-html.js\nvar _a;\nvar _b;\nvar _c;\nvar _d;\nvar DEV_MODE = true;\nvar ENABLE_EXTRA_SECURITY_HOOKS = true;\nvar ENABLE_SHADYDOM_NOPATCH = true;\nvar NODE_MODE2 = false;\nvar global2 = NODE_MODE2 ? globalThis : window;\nvar debugLogEvent = DEV_MODE ? (event) => {\n  const shouldEmit = global2.emitLitDebugLogEvents;\n  if (!shouldEmit) {\n    return;\n  }\n  global2.dispatchEvent(new CustomEvent(\"lit-debug\", {\n    detail: event\n  }));\n} : void 0;\nvar debugLogRenderId = 0;\nvar issueWarning;\nif (DEV_MODE) {\n  (_a = global2.litIssuedWarnings) !== null && _a !== void 0 ? _a : global2.litIssuedWarnings = /* @__PURE__ */ new Set();\n  issueWarning = (code, warning) => {\n    warning += code ? ` See https://lit.dev/msg/${code} for more information.` : \"\";\n    if (!global2.litIssuedWarnings.has(warning)) {\n      console.warn(warning);\n      global2.litIssuedWarnings.add(warning);\n    }\n  };\n  issueWarning(\"dev-mode\", `Lit is in dev mode. Not recommended for production!`);\n}\nvar wrap = ENABLE_SHADYDOM_NOPATCH && ((_b = global2.ShadyDOM) === null || _b === void 0 ? void 0 : _b.inUse) && ((_c = global2.ShadyDOM) === null || _c === void 0 ? void 0 : _c.noPatch) === true ? global2.ShadyDOM.wrap : (node) => node;\nvar trustedTypes = global2.trustedTypes;\nvar policy = trustedTypes ? trustedTypes.createPolicy(\"lit-html\", {\n  createHTML: (s) => s\n}) : void 0;\nvar identityFunction = (value) => value;\nvar noopSanitizer = (_node, _name, _type) => identityFunction;\nvar setSanitizer = (newSanitizer) => {\n  if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n    return;\n  }\n  if (sanitizerFactoryInternal !== noopSanitizer) {\n    throw new Error(`Attempted to overwrite existing lit-html security policy. setSanitizeDOMValueFactory should be called at most once.`);\n  }\n  sanitizerFactoryInternal = newSanitizer;\n};\nvar _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n  sanitizerFactoryInternal = noopSanitizer;\n};\nvar createSanitizer = (node, name, type) => {\n  return sanitizerFactoryInternal(node, name, type);\n};\nvar boundAttributeSuffix = \"$lit$\";\nvar marker = `lit$${String(Math.random()).slice(9)}$`;\nvar markerMatch = \"?\" + marker;\nvar nodeMarker = `<${markerMatch}>`;\nvar d = NODE_MODE2 && global2.document === void 0 ? {\n  createTreeWalker() {\n    return {};\n  }\n} : document;\nvar createMarker = () => d.createComment(\"\");\nvar isPrimitive = (value) => value === null || typeof value != \"object\" && typeof value != \"function\";\nvar isArray = Array.isArray;\nvar isIterable = (value) => isArray(value) || // eslint-disable-next-line @typescript-eslint/no-explicit-any\ntypeof (value === null || value === void 0 ? void 0 : value[Symbol.iterator]) === \"function\";\nvar SPACE_CHAR = `[ \t\n\\f\\r]`;\nvar ATTR_VALUE_CHAR = `[^ \t\n\\f\\r\"'\\`<>=]`;\nvar NAME_CHAR = `[^\\\\s\"'>=/]`;\nvar textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar COMMENT_START = 1;\nvar TAG_NAME = 2;\nvar DYNAMIC_TAG_NAME = 3;\nvar commentEndRegex = /-->/g;\nvar comment2EndRegex = />/g;\nvar tagEndRegex = new RegExp(`>|${SPACE_CHAR}(?:(${NAME_CHAR}+)(${SPACE_CHAR}*=${SPACE_CHAR}*(?:${ATTR_VALUE_CHAR}|(\"|')|))|$)`, \"g\");\nvar ENTIRE_MATCH = 0;\nvar ATTRIBUTE_NAME = 1;\nvar SPACES_AND_EQUALS = 2;\nvar QUOTE_CHAR = 3;\nvar singleQuoteAttrEndRegex = /'/g;\nvar doubleQuoteAttrEndRegex = /\"/g;\nvar rawTextElement = /^(?:script|style|textarea|title)$/i;\nvar HTML_RESULT = 1;\nvar SVG_RESULT = 2;\nvar ATTRIBUTE_PART = 1;\nvar CHILD_PART = 2;\nvar PROPERTY_PART = 3;\nvar BOOLEAN_ATTRIBUTE_PART = 4;\nvar EVENT_PART = 5;\nvar ELEMENT_PART = 6;\nvar COMMENT_PART = 7;\nvar tag = (type) => (strings, ...values) => {\n  if (DEV_MODE && strings.some((s) => s === void 0)) {\n    console.warn(\"Some template strings are undefined.\\nThis is probably caused by illegal octal escape sequences.\");\n  }\n  return {\n    // This property needs to remain unminified.\n    [\"_$litType$\"]: type,\n    strings,\n    values\n  };\n};\nvar html = tag(HTML_RESULT);\nvar svg = tag(SVG_RESULT);\nvar noChange = Symbol.for(\"lit-noChange\");\nvar nothing = Symbol.for(\"lit-nothing\");\nvar templateCache = /* @__PURE__ */ new WeakMap();\nvar walker = d.createTreeWalker(d, 129, null, false);\nvar sanitizerFactoryInternal = noopSanitizer;\nfunction trustFromTemplateString(tsa, stringFromTSA) {\n  if (!Array.isArray(tsa) || !tsa.hasOwnProperty(\"raw\")) {\n    let message = \"invalid template strings array\";\n    if (DEV_MODE) {\n      message = `\n          Internal Error: expected template strings to be an array\n          with a 'raw' field. Faking a template strings array by\n          calling html or svg like an ordinary function is effectively\n          the same as calling unsafeHtml and can lead to major security\n          issues, e.g. opening your code up to XSS attacks.\n          If you're using the html or svg tagged template functions normally\n          and still seeing this error, please file a bug at\n          https://github.com/lit/lit/issues/new?template=bug_report.md\n          and include information about your build tooling, if any.\n        `.trim().replace(/\\n */g, \"\\n\");\n    }\n    throw new Error(message);\n  }\n  return policy !== void 0 ? policy.createHTML(stringFromTSA) : stringFromTSA;\n}\nvar getTemplateHtml = (strings, type) => {\n  const l = strings.length - 1;\n  const attrNames = [];\n  let html2 = type === SVG_RESULT ? \"<svg>\" : \"\";\n  let rawTextEndRegex;\n  let regex = textEndRegex;\n  for (let i = 0; i < l; i++) {\n    const s = strings[i];\n    let attrNameEndIndex = -1;\n    let attrName;\n    let lastIndex = 0;\n    let match;\n    while (lastIndex < s.length) {\n      regex.lastIndex = lastIndex;\n      match = regex.exec(s);\n      if (match === null) {\n        break;\n      }\n      lastIndex = regex.lastIndex;\n      if (regex === textEndRegex) {\n        if (match[COMMENT_START] === \"!--\") {\n          regex = commentEndRegex;\n        } else if (match[COMMENT_START] !== void 0) {\n          regex = comment2EndRegex;\n        } else if (match[TAG_NAME] !== void 0) {\n          if (rawTextElement.test(match[TAG_NAME])) {\n            rawTextEndRegex = new RegExp(`</${match[TAG_NAME]}`, \"g\");\n          }\n          regex = tagEndRegex;\n        } else if (match[DYNAMIC_TAG_NAME] !== void 0) {\n          if (DEV_MODE) {\n            throw new Error(\"Bindings in tag names are not supported. Please use static templates instead. See https://lit.dev/docs/templates/expressions/#static-expressions\");\n          }\n          regex = tagEndRegex;\n        }\n      } else if (regex === tagEndRegex) {\n        if (match[ENTIRE_MATCH] === \">\") {\n          regex = rawTextEndRegex !== null && rawTextEndRegex !== void 0 ? rawTextEndRegex : textEndRegex;\n          attrNameEndIndex = -1;\n        } else if (match[ATTRIBUTE_NAME] === void 0) {\n          attrNameEndIndex = -2;\n        } else {\n          attrNameEndIndex = regex.lastIndex - match[SPACES_AND_EQUALS].length;\n          attrName = match[ATTRIBUTE_NAME];\n          regex = match[QUOTE_CHAR] === void 0 ? tagEndRegex : match[QUOTE_CHAR] === '\"' ? doubleQuoteAttrEndRegex : singleQuoteAttrEndRegex;\n        }\n      } else if (regex === doubleQuoteAttrEndRegex || regex === singleQuoteAttrEndRegex) {\n        regex = tagEndRegex;\n      } else if (regex === commentEndRegex || regex === comment2EndRegex) {\n        regex = textEndRegex;\n      } else {\n        regex = tagEndRegex;\n        rawTextEndRegex = void 0;\n      }\n    }\n    if (DEV_MODE) {\n      console.assert(attrNameEndIndex === -1 || regex === tagEndRegex || regex === singleQuoteAttrEndRegex || regex === doubleQuoteAttrEndRegex, \"unexpected parse state B\");\n    }\n    const end = regex === tagEndRegex && strings[i + 1].startsWith(\"/>\") ? \" \" : \"\";\n    html2 += regex === textEndRegex ? s + nodeMarker : attrNameEndIndex >= 0 ? (attrNames.push(attrName), s.slice(0, attrNameEndIndex) + boundAttributeSuffix + s.slice(attrNameEndIndex)) + marker + end : s + marker + (attrNameEndIndex === -2 ? (attrNames.push(void 0), i) : end);\n  }\n  const htmlResult = html2 + (strings[l] || \"<?>\") + (type === SVG_RESULT ? \"</svg>\" : \"\");\n  return [trustFromTemplateString(strings, htmlResult), attrNames];\n};\nvar Template = class _Template {\n  constructor({ strings, [\"_$litType$\"]: type }, options) {\n    this.parts = [];\n    let node;\n    let nodeIndex = 0;\n    let attrNameIndex = 0;\n    const partCount = strings.length - 1;\n    const parts = this.parts;\n    const [html2, attrNames] = getTemplateHtml(strings, type);\n    this.el = _Template.createElement(html2, options);\n    walker.currentNode = this.el.content;\n    if (type === SVG_RESULT) {\n      const content = this.el.content;\n      const svgElement = content.firstChild;\n      svgElement.remove();\n      content.append(...svgElement.childNodes);\n    }\n    while ((node = walker.nextNode()) !== null && parts.length < partCount) {\n      if (node.nodeType === 1) {\n        if (DEV_MODE) {\n          const tag2 = node.localName;\n          if (/^(?:textarea|template)$/i.test(tag2) && node.innerHTML.includes(marker)) {\n            const m = `Expressions are not supported inside \\`${tag2}\\` elements. See https://lit.dev/msg/expression-in-${tag2} for more information.`;\n            if (tag2 === \"template\") {\n              throw new Error(m);\n            } else\n              issueWarning(\"\", m);\n          }\n        }\n        if (node.hasAttributes()) {\n          const attrsToRemove = [];\n          for (const name of node.getAttributeNames()) {\n            if (name.endsWith(boundAttributeSuffix) || name.startsWith(marker)) {\n              const realName = attrNames[attrNameIndex++];\n              attrsToRemove.push(name);\n              if (realName !== void 0) {\n                const value = node.getAttribute(realName.toLowerCase() + boundAttributeSuffix);\n                const statics = value.split(marker);\n                const m = /([.?@])?(.*)/.exec(realName);\n                parts.push({\n                  type: ATTRIBUTE_PART,\n                  index: nodeIndex,\n                  name: m[2],\n                  strings: statics,\n                  ctor: m[1] === \".\" ? PropertyPart : m[1] === \"?\" ? BooleanAttributePart : m[1] === \"@\" ? EventPart : AttributePart\n                });\n              } else {\n                parts.push({\n                  type: ELEMENT_PART,\n                  index: nodeIndex\n                });\n              }\n            }\n          }\n          for (const name of attrsToRemove) {\n            node.removeAttribute(name);\n          }\n        }\n        if (rawTextElement.test(node.tagName)) {\n          const strings2 = node.textContent.split(marker);\n          const lastIndex = strings2.length - 1;\n          if (lastIndex > 0) {\n            node.textContent = trustedTypes ? trustedTypes.emptyScript : \"\";\n            for (let i = 0; i < lastIndex; i++) {\n              node.append(strings2[i], createMarker());\n              walker.nextNode();\n              parts.push({ type: CHILD_PART, index: ++nodeIndex });\n            }\n            node.append(strings2[lastIndex], createMarker());\n          }\n        }\n      } else if (node.nodeType === 8) {\n        const data = node.data;\n        if (data === markerMatch) {\n          parts.push({ type: CHILD_PART, index: nodeIndex });\n        } else {\n          let i = -1;\n          while ((i = node.data.indexOf(marker, i + 1)) !== -1) {\n            parts.push({ type: COMMENT_PART, index: nodeIndex });\n            i += marker.length - 1;\n          }\n        }\n      }\n      nodeIndex++;\n    }\n    debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n      kind: \"template prep\",\n      template: this,\n      clonableTemplate: this.el,\n      parts: this.parts,\n      strings\n    });\n  }\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @nocollapse */\n  static createElement(html2, _options) {\n    const el = d.createElement(\"template\");\n    el.innerHTML = html2;\n    return el;\n  }\n};\nfunction resolveDirective(part, value, parent = part, attributeIndex) {\n  var _a5, _b4, _c4;\n  var _d3;\n  if (value === noChange) {\n    return value;\n  }\n  let currentDirective = attributeIndex !== void 0 ? (_a5 = parent.__directives) === null || _a5 === void 0 ? void 0 : _a5[attributeIndex] : parent.__directive;\n  const nextDirectiveConstructor = isPrimitive(value) ? void 0 : (\n    // This property needs to remain unminified.\n    value[\"_$litDirective$\"]\n  );\n  if ((currentDirective === null || currentDirective === void 0 ? void 0 : currentDirective.constructor) !== nextDirectiveConstructor) {\n    (_b4 = currentDirective === null || currentDirective === void 0 ? void 0 : currentDirective[\"_$notifyDirectiveConnectionChanged\"]) === null || _b4 === void 0 ? void 0 : _b4.call(currentDirective, false);\n    if (nextDirectiveConstructor === void 0) {\n      currentDirective = void 0;\n    } else {\n      currentDirective = new nextDirectiveConstructor(part);\n      currentDirective._$initialize(part, parent, attributeIndex);\n    }\n    if (attributeIndex !== void 0) {\n      ((_c4 = (_d3 = parent).__directives) !== null && _c4 !== void 0 ? _c4 : _d3.__directives = [])[attributeIndex] = currentDirective;\n    } else {\n      parent.__directive = currentDirective;\n    }\n  }\n  if (currentDirective !== void 0) {\n    value = resolveDirective(part, currentDirective._$resolve(part, value.values), currentDirective, attributeIndex);\n  }\n  return value;\n}\nvar TemplateInstance = class {\n  constructor(template, parent) {\n    this._$parts = [];\n    this._$disconnectableChildren = void 0;\n    this._$template = template;\n    this._$parent = parent;\n  }\n  // Called by ChildPart parentNode getter\n  get parentNode() {\n    return this._$parent.parentNode;\n  }\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n  // This method is separate from the constructor because we need to return a\n  // DocumentFragment and we don't want to hold onto it with an instance field.\n  _clone(options) {\n    var _a5;\n    const { el: { content }, parts } = this._$template;\n    const fragment = ((_a5 = options === null || options === void 0 ? void 0 : options.creationScope) !== null && _a5 !== void 0 ? _a5 : d).importNode(content, true);\n    walker.currentNode = fragment;\n    let node = walker.nextNode();\n    let nodeIndex = 0;\n    let partIndex = 0;\n    let templatePart = parts[0];\n    while (templatePart !== void 0) {\n      if (nodeIndex === templatePart.index) {\n        let part;\n        if (templatePart.type === CHILD_PART) {\n          part = new ChildPart(node, node.nextSibling, this, options);\n        } else if (templatePart.type === ATTRIBUTE_PART) {\n          part = new templatePart.ctor(node, templatePart.name, templatePart.strings, this, options);\n        } else if (templatePart.type === ELEMENT_PART) {\n          part = new ElementPart(node, this, options);\n        }\n        this._$parts.push(part);\n        templatePart = parts[++partIndex];\n      }\n      if (nodeIndex !== (templatePart === null || templatePart === void 0 ? void 0 : templatePart.index)) {\n        node = walker.nextNode();\n        nodeIndex++;\n      }\n    }\n    walker.currentNode = d;\n    return fragment;\n  }\n  _update(values) {\n    let i = 0;\n    for (const part of this._$parts) {\n      if (part !== void 0) {\n        debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n          kind: \"set part\",\n          part,\n          value: values[i],\n          valueIndex: i,\n          values,\n          templateInstance: this\n        });\n        if (part.strings !== void 0) {\n          part._$setValue(values, part, i);\n          i += part.strings.length - 2;\n        } else {\n          part._$setValue(values[i]);\n        }\n      }\n      i++;\n    }\n  }\n};\nvar ChildPart = class _ChildPart {\n  constructor(startNode, endNode, parent, options) {\n    var _a5;\n    this.type = CHILD_PART;\n    this._$committedValue = nothing;\n    this._$disconnectableChildren = void 0;\n    this._$startNode = startNode;\n    this._$endNode = endNode;\n    this._$parent = parent;\n    this.options = options;\n    this.__isConnected = (_a5 = options === null || options === void 0 ? void 0 : options.isConnected) !== null && _a5 !== void 0 ? _a5 : true;\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      this._textSanitizer = void 0;\n    }\n  }\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    var _a5, _b4;\n    return (_b4 = (_a5 = this._$parent) === null || _a5 === void 0 ? void 0 : _a5._$isConnected) !== null && _b4 !== void 0 ? _b4 : this.__isConnected;\n  }\n  /**\n   * The parent node into which the part renders its content.\n   *\n   * A ChildPart's content consists of a range of adjacent child nodes of\n   * `.parentNode`, possibly bordered by 'marker nodes' (`.startNode` and\n   * `.endNode`).\n   *\n   * - If both `.startNode` and `.endNode` are non-null, then the part's content\n   * consists of all siblings between `.startNode` and `.endNode`, exclusively.\n   *\n   * - If `.startNode` is non-null but `.endNode` is null, then the part's\n   * content consists of all siblings following `.startNode`, up to and\n   * including the last child of `.parentNode`. If `.endNode` is non-null, then\n   * `.startNode` will always be non-null.\n   *\n   * - If both `.endNode` and `.startNode` are null, then the part's content\n   * consists of all child nodes of `.parentNode`.\n   */\n  get parentNode() {\n    let parentNode = wrap(this._$startNode).parentNode;\n    const parent = this._$parent;\n    if (parent !== void 0 && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.nodeType) === 11) {\n      parentNode = parent.parentNode;\n    }\n    return parentNode;\n  }\n  /**\n   * The part's leading marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get startNode() {\n    return this._$startNode;\n  }\n  /**\n   * The part's trailing marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get endNode() {\n    return this._$endNode;\n  }\n  _$setValue(value, directiveParent = this) {\n    var _a5;\n    if (DEV_MODE && this.parentNode === null) {\n      throw new Error(`This \\`ChildPart\\` has no \\`parentNode\\` and therefore cannot accept a value. This likely means the element containing the part was manipulated in an unsupported way outside of Lit's control such that the part's marker nodes were ejected from DOM. For example, setting the element's \\`innerHTML\\` or \\`textContent\\` can do this.`);\n    }\n    value = resolveDirective(this, value, directiveParent);\n    if (isPrimitive(value)) {\n      if (value === nothing || value == null || value === \"\") {\n        if (this._$committedValue !== nothing) {\n          debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n            kind: \"commit nothing to child\",\n            start: this._$startNode,\n            end: this._$endNode,\n            parent: this._$parent,\n            options: this.options\n          });\n          this._$clear();\n        }\n        this._$committedValue = nothing;\n      } else if (value !== this._$committedValue && value !== noChange) {\n        this._commitText(value);\n      }\n    } else if (value[\"_$litType$\"] !== void 0) {\n      this._commitTemplateResult(value);\n    } else if (value.nodeType !== void 0) {\n      if (DEV_MODE && ((_a5 = this.options) === null || _a5 === void 0 ? void 0 : _a5.host) === value) {\n        this._commitText(`[probable mistake: rendered a template's host in itself (commonly caused by writing \\${this} in a template]`);\n        console.warn(`Attempted to render the template host`, value, `inside itself. This is almost always a mistake, and in dev mode `, `we render some warning text. In production however, we'll `, `render it, which will usually result in an error, and sometimes `, `in the element disappearing from the DOM.`);\n        return;\n      }\n      this._commitNode(value);\n    } else if (isIterable(value)) {\n      this._commitIterable(value);\n    } else {\n      this._commitText(value);\n    }\n  }\n  _insert(node) {\n    return wrap(wrap(this._$startNode).parentNode).insertBefore(node, this._$endNode);\n  }\n  _commitNode(value) {\n    var _a5;\n    if (this._$committedValue !== value) {\n      this._$clear();\n      if (ENABLE_EXTRA_SECURITY_HOOKS && sanitizerFactoryInternal !== noopSanitizer) {\n        const parentNodeName = (_a5 = this._$startNode.parentNode) === null || _a5 === void 0 ? void 0 : _a5.nodeName;\n        if (parentNodeName === \"STYLE\" || parentNodeName === \"SCRIPT\") {\n          let message = \"Forbidden\";\n          if (DEV_MODE) {\n            if (parentNodeName === \"STYLE\") {\n              message = `Lit does not support binding inside style nodes. This is a security risk, as style injection attacks can exfiltrate data and spoof UIs. Consider instead using css\\`...\\` literals to compose styles, and make do dynamic styling with css custom properties, ::parts, <slot>s, and by mutating the DOM rather than stylesheets.`;\n            } else {\n              message = `Lit does not support binding inside script nodes. This is a security risk, as it could allow arbitrary code execution.`;\n            }\n          }\n          throw new Error(message);\n        }\n      }\n      debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n        kind: \"commit node\",\n        start: this._$startNode,\n        parent: this._$parent,\n        value,\n        options: this.options\n      });\n      this._$committedValue = this._insert(value);\n    }\n  }\n  _commitText(value) {\n    if (this._$committedValue !== nothing && isPrimitive(this._$committedValue)) {\n      const node = wrap(this._$startNode).nextSibling;\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._textSanitizer === void 0) {\n          this._textSanitizer = createSanitizer(node, \"data\", \"property\");\n        }\n        value = this._textSanitizer(value);\n      }\n      debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n        kind: \"commit text\",\n        node,\n        value,\n        options: this.options\n      });\n      node.data = value;\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        const textNode = d.createTextNode(\"\");\n        this._commitNode(textNode);\n        if (this._textSanitizer === void 0) {\n          this._textSanitizer = createSanitizer(textNode, \"data\", \"property\");\n        }\n        value = this._textSanitizer(value);\n        debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n          kind: \"commit text\",\n          node: textNode,\n          value,\n          options: this.options\n        });\n        textNode.data = value;\n      } else {\n        this._commitNode(d.createTextNode(value));\n        debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n          kind: \"commit text\",\n          node: wrap(this._$startNode).nextSibling,\n          value,\n          options: this.options\n        });\n      }\n    }\n    this._$committedValue = value;\n  }\n  _commitTemplateResult(result) {\n    var _a5;\n    const { values, [\"_$litType$\"]: type } = result;\n    const template = typeof type === \"number\" ? this._$getTemplate(result) : (type.el === void 0 && (type.el = Template.createElement(trustFromTemplateString(type.h, type.h[0]), this.options)), type);\n    if (((_a5 = this._$committedValue) === null || _a5 === void 0 ? void 0 : _a5._$template) === template) {\n      debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n        kind: \"template updating\",\n        template,\n        instance: this._$committedValue,\n        parts: this._$committedValue._$parts,\n        options: this.options,\n        values\n      });\n      this._$committedValue._update(values);\n    } else {\n      const instance = new TemplateInstance(template, this);\n      const fragment = instance._clone(this.options);\n      debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n        kind: \"template instantiated\",\n        template,\n        instance,\n        parts: instance._$parts,\n        options: this.options,\n        fragment,\n        values\n      });\n      instance._update(values);\n      debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n        kind: \"template instantiated and updated\",\n        template,\n        instance,\n        parts: instance._$parts,\n        options: this.options,\n        fragment,\n        values\n      });\n      this._commitNode(fragment);\n      this._$committedValue = instance;\n    }\n  }\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @internal */\n  _$getTemplate(result) {\n    let template = templateCache.get(result.strings);\n    if (template === void 0) {\n      templateCache.set(result.strings, template = new Template(result));\n    }\n    return template;\n  }\n  _commitIterable(value) {\n    if (!isArray(this._$committedValue)) {\n      this._$committedValue = [];\n      this._$clear();\n    }\n    const itemParts = this._$committedValue;\n    let partIndex = 0;\n    let itemPart;\n    for (const item of value) {\n      if (partIndex === itemParts.length) {\n        itemParts.push(itemPart = new _ChildPart(this._insert(createMarker()), this._insert(createMarker()), this, this.options));\n      } else {\n        itemPart = itemParts[partIndex];\n      }\n      itemPart._$setValue(item);\n      partIndex++;\n    }\n    if (partIndex < itemParts.length) {\n      this._$clear(itemPart && wrap(itemPart._$endNode).nextSibling, partIndex);\n      itemParts.length = partIndex;\n    }\n  }\n  /**\n   * Removes the nodes contained within this Part from the DOM.\n   *\n   * @param start Start node to clear from, for clearing a subset of the part's\n   *     DOM (used when truncating iterables)\n   * @param from  When `start` is specified, the index within the iterable from\n   *     which ChildParts are being removed, used for disconnecting directives in\n   *     those Parts.\n   *\n   * @internal\n   */\n  _$clear(start = wrap(this._$startNode).nextSibling, from) {\n    var _a5;\n    (_a5 = this._$notifyConnectionChanged) === null || _a5 === void 0 ? void 0 : _a5.call(this, false, true, from);\n    while (start && start !== this._$endNode) {\n      const n = wrap(start).nextSibling;\n      wrap(start).remove();\n      start = n;\n    }\n  }\n  /**\n   * Implementation of RootPart's `isConnected`. Note that this metod\n   * should only be called on `RootPart`s (the `ChildPart` returned from a\n   * top-level `render()` call). It has no effect on non-root ChildParts.\n   * @param isConnected Whether to set\n   * @internal\n   */\n  setConnected(isConnected) {\n    var _a5;\n    if (this._$parent === void 0) {\n      this.__isConnected = isConnected;\n      (_a5 = this._$notifyConnectionChanged) === null || _a5 === void 0 ? void 0 : _a5.call(this, isConnected);\n    } else if (DEV_MODE) {\n      throw new Error(\"part.setConnected() may only be called on a RootPart returned from render().\");\n    }\n  }\n};\nvar AttributePart = class {\n  constructor(element, name, strings, parent, options) {\n    this.type = ATTRIBUTE_PART;\n    this._$committedValue = nothing;\n    this._$disconnectableChildren = void 0;\n    this.element = element;\n    this.name = name;\n    this._$parent = parent;\n    this.options = options;\n    if (strings.length > 2 || strings[0] !== \"\" || strings[1] !== \"\") {\n      this._$committedValue = new Array(strings.length - 1).fill(new String());\n      this.strings = strings;\n    } else {\n      this._$committedValue = nothing;\n    }\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      this._sanitizer = void 0;\n    }\n  }\n  get tagName() {\n    return this.element.tagName;\n  }\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n  /**\n   * Sets the value of this part by resolving the value from possibly multiple\n   * values and static strings and committing it to the DOM.\n   * If this part is single-valued, `this._strings` will be undefined, and the\n   * method will be called with a single value argument. If this part is\n   * multi-value, `this._strings` will be defined, and the method is called\n   * with the value array of the part's owning TemplateInstance, and an offset\n   * into the value array from which the values should be read.\n   * This method is overloaded this way to eliminate short-lived array slices\n   * of the template instance values, and allow a fast-path for single-valued\n   * parts.\n   *\n   * @param value The part value, or an array of values for multi-valued parts\n   * @param valueIndex the index to start reading values from. `undefined` for\n   *   single-valued parts\n   * @param noCommit causes the part to not commit its value to the DOM. Used\n   *   in hydration to prime attribute parts with their first-rendered value,\n   *   but not set the attribute, and in SSR to no-op the DOM operation and\n   *   capture the value for serialization.\n   *\n   * @internal\n   */\n  _$setValue(value, directiveParent = this, valueIndex, noCommit) {\n    const strings = this.strings;\n    let change = false;\n    if (strings === void 0) {\n      value = resolveDirective(this, value, directiveParent, 0);\n      change = !isPrimitive(value) || value !== this._$committedValue && value !== noChange;\n      if (change) {\n        this._$committedValue = value;\n      }\n    } else {\n      const values = value;\n      value = strings[0];\n      let i, v;\n      for (i = 0; i < strings.length - 1; i++) {\n        v = resolveDirective(this, values[valueIndex + i], directiveParent, i);\n        if (v === noChange) {\n          v = this._$committedValue[i];\n        }\n        change || (change = !isPrimitive(v) || v !== this._$committedValue[i]);\n        if (v === nothing) {\n          value = nothing;\n        } else if (value !== nothing) {\n          value += (v !== null && v !== void 0 ? v : \"\") + strings[i + 1];\n        }\n        this._$committedValue[i] = v;\n      }\n    }\n    if (change && !noCommit) {\n      this._commitValue(value);\n    }\n  }\n  /** @internal */\n  _commitValue(value) {\n    if (value === nothing) {\n      wrap(this.element).removeAttribute(this.name);\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._sanitizer === void 0) {\n          this._sanitizer = sanitizerFactoryInternal(this.element, this.name, \"attribute\");\n        }\n        value = this._sanitizer(value !== null && value !== void 0 ? value : \"\");\n      }\n      debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n        kind: \"commit attribute\",\n        element: this.element,\n        name: this.name,\n        value,\n        options: this.options\n      });\n      wrap(this.element).setAttribute(this.name, value !== null && value !== void 0 ? value : \"\");\n    }\n  }\n};\nvar PropertyPart = class extends AttributePart {\n  constructor() {\n    super(...arguments);\n    this.type = PROPERTY_PART;\n  }\n  /** @internal */\n  _commitValue(value) {\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      if (this._sanitizer === void 0) {\n        this._sanitizer = sanitizerFactoryInternal(this.element, this.name, \"property\");\n      }\n      value = this._sanitizer(value);\n    }\n    debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n      kind: \"commit property\",\n      element: this.element,\n      name: this.name,\n      value,\n      options: this.options\n    });\n    this.element[this.name] = value === nothing ? void 0 : value;\n  }\n};\nvar emptyStringForBooleanAttribute = trustedTypes ? trustedTypes.emptyScript : \"\";\nvar BooleanAttributePart = class extends AttributePart {\n  constructor() {\n    super(...arguments);\n    this.type = BOOLEAN_ATTRIBUTE_PART;\n  }\n  /** @internal */\n  _commitValue(value) {\n    debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n      kind: \"commit boolean attribute\",\n      element: this.element,\n      name: this.name,\n      value: !!(value && value !== nothing),\n      options: this.options\n    });\n    if (value && value !== nothing) {\n      wrap(this.element).setAttribute(this.name, emptyStringForBooleanAttribute);\n    } else {\n      wrap(this.element).removeAttribute(this.name);\n    }\n  }\n};\nvar EventPart = class extends AttributePart {\n  constructor(element, name, strings, parent, options) {\n    super(element, name, strings, parent, options);\n    this.type = EVENT_PART;\n    if (DEV_MODE && this.strings !== void 0) {\n      throw new Error(`A \\`<${element.localName}>\\` has a \\`@${name}=...\\` listener with invalid content. Event listeners in templates must have exactly one expression and no surrounding text.`);\n    }\n  }\n  // EventPart does not use the base _$setValue/_resolveValue implementation\n  // since the dirty checking is more complex\n  /** @internal */\n  _$setValue(newListener, directiveParent = this) {\n    var _a5;\n    newListener = (_a5 = resolveDirective(this, newListener, directiveParent, 0)) !== null && _a5 !== void 0 ? _a5 : nothing;\n    if (newListener === noChange) {\n      return;\n    }\n    const oldListener = this._$committedValue;\n    const shouldRemoveListener = newListener === nothing && oldListener !== nothing || newListener.capture !== oldListener.capture || newListener.once !== oldListener.once || newListener.passive !== oldListener.passive;\n    const shouldAddListener = newListener !== nothing && (oldListener === nothing || shouldRemoveListener);\n    debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n      kind: \"commit event listener\",\n      element: this.element,\n      name: this.name,\n      value: newListener,\n      options: this.options,\n      removeListener: shouldRemoveListener,\n      addListener: shouldAddListener,\n      oldListener\n    });\n    if (shouldRemoveListener) {\n      this.element.removeEventListener(this.name, this, oldListener);\n    }\n    if (shouldAddListener) {\n      this.element.addEventListener(this.name, this, newListener);\n    }\n    this._$committedValue = newListener;\n  }\n  handleEvent(event) {\n    var _a5, _b4;\n    if (typeof this._$committedValue === \"function\") {\n      this._$committedValue.call((_b4 = (_a5 = this.options) === null || _a5 === void 0 ? void 0 : _a5.host) !== null && _b4 !== void 0 ? _b4 : this.element, event);\n    } else {\n      this._$committedValue.handleEvent(event);\n    }\n  }\n};\nvar ElementPart = class {\n  constructor(element, parent, options) {\n    this.element = element;\n    this.type = ELEMENT_PART;\n    this._$disconnectableChildren = void 0;\n    this._$parent = parent;\n    this.options = options;\n  }\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n  _$setValue(value) {\n    debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n      kind: \"commit to element binding\",\n      element: this.element,\n      value,\n      options: this.options\n    });\n    resolveDirective(this, value);\n  }\n};\nvar polyfillSupport = DEV_MODE ? global2.litHtmlPolyfillSupportDevMode : global2.litHtmlPolyfillSupport;\npolyfillSupport === null || polyfillSupport === void 0 ? void 0 : polyfillSupport(Template, ChildPart);\n((_d = global2.litHtmlVersions) !== null && _d !== void 0 ? _d : global2.litHtmlVersions = []).push(\"2.8.0\");\nif (DEV_MODE && global2.litHtmlVersions.length > 1) {\n  issueWarning(\"multiple-versions\", `Multiple versions of Lit loaded. Loading multiple versions is not recommended.`);\n}\nvar render = (value, container, options) => {\n  var _a5, _b4;\n  if (DEV_MODE && container == null) {\n    throw new TypeError(`The container to render into may not be ${container}`);\n  }\n  const renderId = DEV_MODE ? debugLogRenderId++ : 0;\n  const partOwnerNode = (_a5 = options === null || options === void 0 ? void 0 : options.renderBefore) !== null && _a5 !== void 0 ? _a5 : container;\n  let part = partOwnerNode[\"_$litPart$\"];\n  debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n    kind: \"begin render\",\n    id: renderId,\n    value,\n    container,\n    options,\n    part\n  });\n  if (part === void 0) {\n    const endNode = (_b4 = options === null || options === void 0 ? void 0 : options.renderBefore) !== null && _b4 !== void 0 ? _b4 : null;\n    partOwnerNode[\"_$litPart$\"] = part = new ChildPart(container.insertBefore(createMarker(), endNode), endNode, void 0, options !== null && options !== void 0 ? options : {});\n  }\n  part._$setValue(value);\n  debugLogEvent === null || debugLogEvent === void 0 ? void 0 : debugLogEvent({\n    kind: \"end render\",\n    id: renderId,\n    value,\n    container,\n    options,\n    part\n  });\n  return part;\n};\nif (ENABLE_EXTRA_SECURITY_HOOKS) {\n  render.setSanitizer = setSanitizer;\n  render.createSanitizer = createSanitizer;\n  if (DEV_MODE) {\n    render._testOnlyClearSanitizerFactoryDoNotCallOrElse = _testOnlyClearSanitizerFactoryDoNotCallOrElse;\n  }\n}\n\n// node_modules/@lit/reactive-element/development/reactive-element.js\nvar _a2;\nvar _b2;\nvar _c2;\nvar _d2;\nvar _e;\nvar NODE_MODE3 = false;\nvar global3 = NODE_MODE3 ? globalThis : window;\nif (NODE_MODE3) {\n  (_a2 = global3.customElements) !== null && _a2 !== void 0 ? _a2 : global3.customElements = customElements;\n}\nvar DEV_MODE2 = true;\nvar requestUpdateThenable;\nvar issueWarning2;\nvar trustedTypes2 = global3.trustedTypes;\nvar emptyStringForBooleanAttribute2 = trustedTypes2 ? trustedTypes2.emptyScript : \"\";\nvar polyfillSupport2 = DEV_MODE2 ? global3.reactiveElementPolyfillSupportDevMode : global3.reactiveElementPolyfillSupport;\nif (DEV_MODE2) {\n  const issuedWarnings = (_b2 = global3.litIssuedWarnings) !== null && _b2 !== void 0 ? _b2 : global3.litIssuedWarnings = /* @__PURE__ */ new Set();\n  issueWarning2 = (code, warning) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (!issuedWarnings.has(warning)) {\n      console.warn(warning);\n      issuedWarnings.add(warning);\n    }\n  };\n  issueWarning2(\"dev-mode\", `Lit is in dev mode. Not recommended for production!`);\n  if (((_c2 = global3.ShadyDOM) === null || _c2 === void 0 ? void 0 : _c2.inUse) && polyfillSupport2 === void 0) {\n    issueWarning2(\"polyfill-support-missing\", `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but the \\`polyfill-support\\` module has not been loaded.`);\n  }\n  requestUpdateThenable = (name) => ({\n    then: (onfulfilled, _onrejected) => {\n      issueWarning2(\"request-update-promise\", `The \\`requestUpdate\\` method should no longer return a Promise but does so on \\`${name}\\`. Use \\`updateComplete\\` instead.`);\n      if (onfulfilled !== void 0) {\n        onfulfilled(false);\n      }\n    }\n  });\n}\nvar debugLogEvent2 = DEV_MODE2 ? (event) => {\n  const shouldEmit = global3.emitLitDebugLogEvents;\n  if (!shouldEmit) {\n    return;\n  }\n  global3.dispatchEvent(new CustomEvent(\"lit-debug\", {\n    detail: event\n  }));\n} : void 0;\nvar JSCompiler_renameProperty = (prop, _obj) => prop;\nvar defaultConverter = {\n  toAttribute(value, type) {\n    switch (type) {\n      case Boolean:\n        value = value ? emptyStringForBooleanAttribute2 : null;\n        break;\n      case Object:\n      case Array:\n        value = value == null ? value : JSON.stringify(value);\n        break;\n    }\n    return value;\n  },\n  fromAttribute(value, type) {\n    let fromValue = value;\n    switch (type) {\n      case Boolean:\n        fromValue = value !== null;\n        break;\n      case Number:\n        fromValue = value === null ? null : Number(value);\n        break;\n      case Object:\n      case Array:\n        try {\n          fromValue = JSON.parse(value);\n        } catch (e) {\n          fromValue = null;\n        }\n        break;\n    }\n    return fromValue;\n  }\n};\nvar notEqual = (value, old) => {\n  return old !== value && (old === old || value === value);\n};\nvar defaultPropertyDeclaration = {\n  attribute: true,\n  type: String,\n  converter: defaultConverter,\n  reflect: false,\n  hasChanged: notEqual\n};\nvar finalized = \"finalized\";\nvar ReactiveElement = class extends HTMLElement {\n  constructor() {\n    super();\n    this.__instanceProperties = /* @__PURE__ */ new Map();\n    this.isUpdatePending = false;\n    this.hasUpdated = false;\n    this.__reflectingProperty = null;\n    this.__initialize();\n  }\n  /**\n   * Adds an initializer function to the class that is called during instance\n   * construction.\n   *\n   * This is useful for code that runs against a `ReactiveElement`\n   * subclass, such as a decorator, that needs to do work for each\n   * instance, such as setting up a `ReactiveController`.\n   *\n   * ```ts\n   * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n   *   target.addInitializer((instance: ReactiveElement) => {\n   *     // This is run during construction of the element\n   *     new MyController(instance);\n   *   });\n   * }\n   * ```\n   *\n   * Decorating a field will then cause each instance to run an initializer\n   * that adds a controller:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   @myDecorator foo;\n   * }\n   * ```\n   *\n   * Initializers are stored per-constructor. Adding an initializer to a\n   * subclass does not add it to a superclass. Since initializers are run in\n   * constructors, initializers will run in order of the class hierarchy,\n   * starting with superclasses and progressing to the instance's class.\n   *\n   * @nocollapse\n   */\n  static addInitializer(initializer) {\n    var _a5;\n    this.finalize();\n    ((_a5 = this._initializers) !== null && _a5 !== void 0 ? _a5 : this._initializers = []).push(initializer);\n  }\n  /**\n   * Returns a list of attributes corresponding to the registered properties.\n   * @nocollapse\n   * @category attributes\n   */\n  static get observedAttributes() {\n    this.finalize();\n    const attributes = [];\n    this.elementProperties.forEach((v, p) => {\n      const attr = this.__attributeNameForProperty(p, v);\n      if (attr !== void 0) {\n        this.__attributeToPropertyMap.set(attr, p);\n        attributes.push(attr);\n      }\n    });\n    return attributes;\n  }\n  /**\n   * Creates a property accessor on the element prototype if one does not exist\n   * and stores a {@linkcode PropertyDeclaration} for the property with the\n   * given options. The property setter calls the property's `hasChanged`\n   * property option or uses a strict identity check to determine whether or not\n   * to request an update.\n   *\n   * This method may be overridden to customize properties; however,\n   * when doing so, it's important to call `super.createProperty` to ensure\n   * the property is setup correctly. This method calls\n   * `getPropertyDescriptor` internally to get a descriptor to install.\n   * To customize what properties do when they are get or set, override\n   * `getPropertyDescriptor`. To customize the options for a property,\n   * implement `createProperty` like this:\n   *\n   * ```ts\n   * static createProperty(name, options) {\n   *   options = Object.assign(options, {myOption: true});\n   *   super.createProperty(name, options);\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static createProperty(name, options = defaultPropertyDeclaration) {\n    var _a5;\n    if (options.state) {\n      options.attribute = false;\n    }\n    this.finalize();\n    this.elementProperties.set(name, options);\n    if (!options.noAccessor && !this.prototype.hasOwnProperty(name)) {\n      const key = typeof name === \"symbol\" ? Symbol() : `__${name}`;\n      const descriptor = this.getPropertyDescriptor(name, key, options);\n      if (descriptor !== void 0) {\n        Object.defineProperty(this.prototype, name, descriptor);\n        if (DEV_MODE2) {\n          if (!this.hasOwnProperty(\"__reactivePropertyKeys\")) {\n            this.__reactivePropertyKeys = new Set((_a5 = this.__reactivePropertyKeys) !== null && _a5 !== void 0 ? _a5 : []);\n          }\n          this.__reactivePropertyKeys.add(name);\n        }\n      }\n    }\n  }\n  /**\n   * Returns a property descriptor to be defined on the given named property.\n   * If no descriptor is returned, the property will not become an accessor.\n   * For example,\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   static getPropertyDescriptor(name, key, options) {\n   *     const defaultDescriptor =\n   *         super.getPropertyDescriptor(name, key, options);\n   *     const setter = defaultDescriptor.set;\n   *     return {\n   *       get: defaultDescriptor.get,\n   *       set(value) {\n   *         setter.call(this, value);\n   *         // custom action.\n   *       },\n   *       configurable: true,\n   *       enumerable: true\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static getPropertyDescriptor(name, key, options) {\n    return {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      get() {\n        return this[key];\n      },\n      set(value) {\n        const oldValue = this[name];\n        this[key] = value;\n        this.requestUpdate(name, oldValue, options);\n      },\n      configurable: true,\n      enumerable: true\n    };\n  }\n  /**\n   * Returns the property options associated with the given property.\n   * These options are defined with a `PropertyDeclaration` via the `properties`\n   * object or the `@property` decorator and are registered in\n   * `createProperty(...)`.\n   *\n   * Note, this method should be considered \"final\" and not overridden. To\n   * customize the options for a given property, override\n   * {@linkcode createProperty}.\n   *\n   * @nocollapse\n   * @final\n   * @category properties\n   */\n  static getPropertyOptions(name) {\n    return this.elementProperties.get(name) || defaultPropertyDeclaration;\n  }\n  /**\n   * Creates property accessors for registered properties, sets up element\n   * styling, and ensures any superclasses are also finalized. Returns true if\n   * the element was finalized.\n   * @nocollapse\n   */\n  static finalize() {\n    if (this.hasOwnProperty(finalized)) {\n      return false;\n    }\n    this[finalized] = true;\n    const superCtor = Object.getPrototypeOf(this);\n    superCtor.finalize();\n    if (superCtor._initializers !== void 0) {\n      this._initializers = [...superCtor._initializers];\n    }\n    this.elementProperties = new Map(superCtor.elementProperties);\n    this.__attributeToPropertyMap = /* @__PURE__ */ new Map();\n    if (this.hasOwnProperty(JSCompiler_renameProperty(\"properties\", this))) {\n      const props = this.properties;\n      const propKeys = [\n        ...Object.getOwnPropertyNames(props),\n        ...Object.getOwnPropertySymbols(props)\n      ];\n      for (const p of propKeys) {\n        this.createProperty(p, props[p]);\n      }\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n    if (DEV_MODE2) {\n      const warnRemovedOrRenamed = (name, renamed = false) => {\n        if (this.prototype.hasOwnProperty(name)) {\n          issueWarning2(renamed ? \"renamed-api\" : \"removed-api\", `\\`${name}\\` is implemented on class ${this.name}. It has been ${renamed ? \"renamed\" : \"removed\"} in this version of LitElement.`);\n        }\n      };\n      warnRemovedOrRenamed(\"initialize\");\n      warnRemovedOrRenamed(\"requestUpdateInternal\");\n      warnRemovedOrRenamed(\"_getUpdateComplete\", true);\n    }\n    return true;\n  }\n  /**\n   * Takes the styles the user supplied via the `static styles` property and\n   * returns the array of styles to apply to the element.\n   * Override this method to integrate into a style management system.\n   *\n   * Styles are deduplicated preserving the _last_ instance in the list. This\n   * is a performance optimization to avoid duplicated styles that can occur\n   * especially when composing via subclassing. The last item is kept to try\n   * to preserve the cascade order with the assumption that it's most important\n   * that last added styles override previous styles.\n   *\n   * @nocollapse\n   * @category styles\n   */\n  static finalizeStyles(styles) {\n    const elementStyles = [];\n    if (Array.isArray(styles)) {\n      const set = new Set(styles.flat(Infinity).reverse());\n      for (const s of set) {\n        elementStyles.unshift(getCompatibleStyle(s));\n      }\n    } else if (styles !== void 0) {\n      elementStyles.push(getCompatibleStyle(styles));\n    }\n    return elementStyles;\n  }\n  /**\n   * Returns the property name for the given attribute `name`.\n   * @nocollapse\n   */\n  static __attributeNameForProperty(name, options) {\n    const attribute = options.attribute;\n    return attribute === false ? void 0 : typeof attribute === \"string\" ? attribute : typeof name === \"string\" ? name.toLowerCase() : void 0;\n  }\n  /**\n   * Internal only override point for customizing work done when elements\n   * are constructed.\n   */\n  __initialize() {\n    var _a5;\n    this.__updatePromise = new Promise((res) => this.enableUpdating = res);\n    this._$changedProperties = /* @__PURE__ */ new Map();\n    this.__saveInstanceProperties();\n    this.requestUpdate();\n    (_a5 = this.constructor._initializers) === null || _a5 === void 0 ? void 0 : _a5.forEach((i) => i(this));\n  }\n  /**\n   * Registers a `ReactiveController` to participate in the element's reactive\n   * update cycle. The element automatically calls into any registered\n   * controllers during its lifecycle callbacks.\n   *\n   * If the element is connected when `addController()` is called, the\n   * controller's `hostConnected()` callback will be immediately called.\n   * @category controllers\n   */\n  addController(controller) {\n    var _a5, _b4;\n    ((_a5 = this.__controllers) !== null && _a5 !== void 0 ? _a5 : this.__controllers = []).push(controller);\n    if (this.renderRoot !== void 0 && this.isConnected) {\n      (_b4 = controller.hostConnected) === null || _b4 === void 0 ? void 0 : _b4.call(controller);\n    }\n  }\n  /**\n   * Removes a `ReactiveController` from the element.\n   * @category controllers\n   */\n  removeController(controller) {\n    var _a5;\n    (_a5 = this.__controllers) === null || _a5 === void 0 ? void 0 : _a5.splice(this.__controllers.indexOf(controller) >>> 0, 1);\n  }\n  /**\n   * Fixes any properties set on the instance before upgrade time.\n   * Otherwise these would shadow the accessor and break these properties.\n   * The properties are stored in a Map which is played back after the\n   * constructor runs. Note, on very old versions of Safari (<=9) or Chrome\n   * (<=41), properties created for native platform properties like (`id` or\n   * `name`) may not have default values set in the element constructor. On\n   * these browsers native properties appear on instances and therefore their\n   * default value will overwrite any element default (e.g. if the element sets\n   * this.id = 'id' in the constructor, the 'id' will become '' since this is\n   * the native platform default).\n   */\n  __saveInstanceProperties() {\n    this.constructor.elementProperties.forEach((_v, p) => {\n      if (this.hasOwnProperty(p)) {\n        this.__instanceProperties.set(p, this[p]);\n        delete this[p];\n      }\n    });\n  }\n  /**\n   * Returns the node into which the element should render and by default\n   * creates and returns an open shadowRoot. Implement to customize where the\n   * element's DOM is rendered. For example, to render into the element's\n   * childNodes, return `this`.\n   *\n   * @return Returns a node into which to render.\n   * @category rendering\n   */\n  createRenderRoot() {\n    var _a5;\n    const renderRoot = (_a5 = this.shadowRoot) !== null && _a5 !== void 0 ? _a5 : this.attachShadow(this.constructor.shadowRootOptions);\n    adoptStyles(renderRoot, this.constructor.elementStyles);\n    return renderRoot;\n  }\n  /**\n   * On first connection, creates the element's renderRoot, sets up\n   * element styling, and enables updating.\n   * @category lifecycle\n   */\n  connectedCallback() {\n    var _a5;\n    if (this.renderRoot === void 0) {\n      this.renderRoot = this.createRenderRoot();\n    }\n    this.enableUpdating(true);\n    (_a5 = this.__controllers) === null || _a5 === void 0 ? void 0 : _a5.forEach((c) => {\n      var _a6;\n      return (_a6 = c.hostConnected) === null || _a6 === void 0 ? void 0 : _a6.call(c);\n    });\n  }\n  /**\n   * Note, this method should be considered final and not overridden. It is\n   * overridden on the element instance with a function that triggers the first\n   * update.\n   * @category updates\n   */\n  enableUpdating(_requestedUpdate) {\n  }\n  /**\n   * Allows for `super.disconnectedCallback()` in extensions while\n   * reserving the possibility of making non-breaking feature additions\n   * when disconnecting at some point in the future.\n   * @category lifecycle\n   */\n  disconnectedCallback() {\n    var _a5;\n    (_a5 = this.__controllers) === null || _a5 === void 0 ? void 0 : _a5.forEach((c) => {\n      var _a6;\n      return (_a6 = c.hostDisconnected) === null || _a6 === void 0 ? void 0 : _a6.call(c);\n    });\n  }\n  /**\n   * Synchronizes property values when attributes change.\n   *\n   * Specifically, when an attribute is set, the corresponding property is set.\n   * You should rarely need to implement this callback. If this method is\n   * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n   * called.\n   *\n   * See [using the lifecycle callbacks](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_custom_elements#using_the_lifecycle_callbacks)\n   * on MDN for more information about the `attributeChangedCallback`.\n   * @category attributes\n   */\n  attributeChangedCallback(name, _old, value) {\n    this._$attributeToProperty(name, value);\n  }\n  __propertyToAttribute(name, value, options = defaultPropertyDeclaration) {\n    var _a5;\n    const attr = this.constructor.__attributeNameForProperty(name, options);\n    if (attr !== void 0 && options.reflect === true) {\n      const converter = ((_a5 = options.converter) === null || _a5 === void 0 ? void 0 : _a5.toAttribute) !== void 0 ? options.converter : defaultConverter;\n      const attrValue = converter.toAttribute(value, options.type);\n      if (DEV_MODE2 && this.constructor.enabledWarnings.indexOf(\"migration\") >= 0 && attrValue === void 0) {\n        issueWarning2(\"undefined-attribute-value\", `The attribute value for the ${name} property is undefined on element ${this.localName}. The attribute will be removed, but in the previous version of \\`ReactiveElement\\`, the attribute would not have changed.`);\n      }\n      this.__reflectingProperty = name;\n      if (attrValue == null) {\n        this.removeAttribute(attr);\n      } else {\n        this.setAttribute(attr, attrValue);\n      }\n      this.__reflectingProperty = null;\n    }\n  }\n  /** @internal */\n  _$attributeToProperty(name, value) {\n    var _a5;\n    const ctor = this.constructor;\n    const propName = ctor.__attributeToPropertyMap.get(name);\n    if (propName !== void 0 && this.__reflectingProperty !== propName) {\n      const options = ctor.getPropertyOptions(propName);\n      const converter = typeof options.converter === \"function\" ? { fromAttribute: options.converter } : ((_a5 = options.converter) === null || _a5 === void 0 ? void 0 : _a5.fromAttribute) !== void 0 ? options.converter : defaultConverter;\n      this.__reflectingProperty = propName;\n      this[propName] = converter.fromAttribute(\n        value,\n        options.type\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      );\n      this.__reflectingProperty = null;\n    }\n  }\n  /**\n   * Requests an update which is processed asynchronously. This should be called\n   * when an element should update based on some state not triggered by setting\n   * a reactive property. In this case, pass no arguments. It should also be\n   * called when manually implementing a property setter. In this case, pass the\n   * property `name` and `oldValue` to ensure that any configured property\n   * options are honored.\n   *\n   * @param name name of requesting property\n   * @param oldValue old value of requesting property\n   * @param options property options to use instead of the previously\n   *     configured options\n   * @category updates\n   */\n  requestUpdate(name, oldValue, options) {\n    let shouldRequestUpdate = true;\n    if (name !== void 0) {\n      options = options || this.constructor.getPropertyOptions(name);\n      const hasChanged = options.hasChanged || notEqual;\n      if (hasChanged(this[name], oldValue)) {\n        if (!this._$changedProperties.has(name)) {\n          this._$changedProperties.set(name, oldValue);\n        }\n        if (options.reflect === true && this.__reflectingProperty !== name) {\n          if (this.__reflectingProperties === void 0) {\n            this.__reflectingProperties = /* @__PURE__ */ new Map();\n          }\n          this.__reflectingProperties.set(name, options);\n        }\n      } else {\n        shouldRequestUpdate = false;\n      }\n    }\n    if (!this.isUpdatePending && shouldRequestUpdate) {\n      this.__updatePromise = this.__enqueueUpdate();\n    }\n    return DEV_MODE2 ? requestUpdateThenable(this.localName) : void 0;\n  }\n  /**\n   * Sets up the element to asynchronously update.\n   */\n  async __enqueueUpdate() {\n    this.isUpdatePending = true;\n    try {\n      await this.__updatePromise;\n    } catch (e) {\n      Promise.reject(e);\n    }\n    const result = this.scheduleUpdate();\n    if (result != null) {\n      await result;\n    }\n    return !this.isUpdatePending;\n  }\n  /**\n   * Schedules an element update. You can override this method to change the\n   * timing of updates by returning a Promise. The update will await the\n   * returned Promise, and you should resolve the Promise to allow the update\n   * to proceed. If this method is overridden, `super.scheduleUpdate()`\n   * must be called.\n   *\n   * For instance, to schedule updates to occur just before the next frame:\n   *\n   * ```ts\n   * override protected async scheduleUpdate(): Promise<unknown> {\n   *   await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n   *   super.scheduleUpdate();\n   * }\n   * ```\n   * @category updates\n   */\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  /**\n   * Performs an element update. Note, if an exception is thrown during the\n   * update, `firstUpdated` and `updated` will not be called.\n   *\n   * Call `performUpdate()` to immediately process a pending update. This should\n   * generally not be needed, but it can be done in rare cases when you need to\n   * update synchronously.\n   *\n   * Note: To ensure `performUpdate()` synchronously completes a pending update,\n   * it should not be overridden. In LitElement 2.x it was suggested to override\n   * `performUpdate()` to also customizing update scheduling. Instead, you should now\n   * override `scheduleUpdate()`. For backwards compatibility with LitElement 2.x,\n   * scheduling updates via `performUpdate()` continues to work, but will make\n   * also calling `performUpdate()` to synchronously process updates difficult.\n   *\n   * @category updates\n   */\n  performUpdate() {\n    var _a5, _b4;\n    if (!this.isUpdatePending) {\n      return;\n    }\n    debugLogEvent2 === null || debugLogEvent2 === void 0 ? void 0 : debugLogEvent2({ kind: \"update\" });\n    if (!this.hasUpdated) {\n      if (DEV_MODE2) {\n        const shadowedProperties = [];\n        (_a5 = this.constructor.__reactivePropertyKeys) === null || _a5 === void 0 ? void 0 : _a5.forEach((p) => {\n          var _a6;\n          if (this.hasOwnProperty(p) && !((_a6 = this.__instanceProperties) === null || _a6 === void 0 ? void 0 : _a6.has(p))) {\n            shadowedProperties.push(p);\n          }\n        });\n        if (shadowedProperties.length) {\n          throw new Error(`The following properties on element ${this.localName} will not trigger updates as expected because they are set using class fields: ${shadowedProperties.join(\", \")}. Native class fields and some compiled output will overwrite accessors used for detecting changes. See https://lit.dev/msg/class-field-shadowing for more information.`);\n        }\n      }\n    }\n    if (this.__instanceProperties) {\n      this.__instanceProperties.forEach((v, p) => this[p] = v);\n      this.__instanceProperties = void 0;\n    }\n    let shouldUpdate = false;\n    const changedProperties = this._$changedProperties;\n    try {\n      shouldUpdate = this.shouldUpdate(changedProperties);\n      if (shouldUpdate) {\n        this.willUpdate(changedProperties);\n        (_b4 = this.__controllers) === null || _b4 === void 0 ? void 0 : _b4.forEach((c) => {\n          var _a6;\n          return (_a6 = c.hostUpdate) === null || _a6 === void 0 ? void 0 : _a6.call(c);\n        });\n        this.update(changedProperties);\n      } else {\n        this.__markUpdated();\n      }\n    } catch (e) {\n      shouldUpdate = false;\n      this.__markUpdated();\n      throw e;\n    }\n    if (shouldUpdate) {\n      this._$didUpdate(changedProperties);\n    }\n  }\n  /**\n   * Invoked before `update()` to compute values needed during the update.\n   *\n   * Implement `willUpdate` to compute property values that depend on other\n   * properties and are used in the rest of the update process.\n   *\n   * ```ts\n   * willUpdate(changedProperties) {\n   *   // only need to check changed properties for an expensive computation.\n   *   if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n   *     this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n   *   }\n   * }\n   *\n   * render() {\n   *   return html`SHA: ${this.sha}`;\n   * }\n   * ```\n   *\n   * @category updates\n   */\n  willUpdate(_changedProperties) {\n  }\n  // Note, this is an override point for polyfill-support.\n  // @internal\n  _$didUpdate(changedProperties) {\n    var _a5;\n    (_a5 = this.__controllers) === null || _a5 === void 0 ? void 0 : _a5.forEach((c) => {\n      var _a6;\n      return (_a6 = c.hostUpdated) === null || _a6 === void 0 ? void 0 : _a6.call(c);\n    });\n    if (!this.hasUpdated) {\n      this.hasUpdated = true;\n      this.firstUpdated(changedProperties);\n    }\n    this.updated(changedProperties);\n    if (DEV_MODE2 && this.isUpdatePending && this.constructor.enabledWarnings.indexOf(\"change-in-update\") >= 0) {\n      issueWarning2(\"change-in-update\", `Element ${this.localName} scheduled an update (generally because a property was set) after an update completed, causing a new update to be scheduled. This is inefficient and should be avoided unless the next update can only be scheduled as a side effect of the previous update.`);\n    }\n  }\n  __markUpdated() {\n    this._$changedProperties = /* @__PURE__ */ new Map();\n    this.isUpdatePending = false;\n  }\n  /**\n   * Returns a Promise that resolves when the element has completed updating.\n   * The Promise value is a boolean that is `true` if the element completed the\n   * update without triggering another update. The Promise result is `false` if\n   * a property was set inside `updated()`. If the Promise is rejected, an\n   * exception was thrown during the update.\n   *\n   * To await additional asynchronous work, override the `getUpdateComplete`\n   * method. For example, it is sometimes useful to await a rendered element\n   * before fulfilling this Promise. To do this, first await\n   * `super.getUpdateComplete()`, then any subsequent state.\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  /**\n   * Override point for the `updateComplete` promise.\n   *\n   * It is not safe to override the `updateComplete` getter directly due to a\n   * limitation in TypeScript which means it is not possible to call a\n   * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n   * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n   * This method should be overridden instead. For example:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   override async getUpdateComplete() {\n   *     const result = await super.getUpdateComplete();\n   *     await this._myChild.updateComplete;\n   *     return result;\n   *   }\n   * }\n   * ```\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  getUpdateComplete() {\n    return this.__updatePromise;\n  }\n  /**\n   * Controls whether or not `update()` should be called when the element requests\n   * an update. By default, this method always returns `true`, but this can be\n   * customized to control when to update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  shouldUpdate(_changedProperties) {\n    return true;\n  }\n  /**\n   * Updates the element. This method reflects property values to attributes.\n   * It can be overridden to render and keep updated element DOM.\n   * Setting properties inside this method will *not* trigger\n   * another update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  update(_changedProperties) {\n    if (this.__reflectingProperties !== void 0) {\n      this.__reflectingProperties.forEach((v, k) => this.__propertyToAttribute(k, this[k], v));\n      this.__reflectingProperties = void 0;\n    }\n    this.__markUpdated();\n  }\n  /**\n   * Invoked whenever the element is updated. Implement to perform\n   * post-updating tasks via DOM APIs, for example, focusing an element.\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  updated(_changedProperties) {\n  }\n  /**\n   * Invoked when the element is first updated. Implement to perform one time\n   * work on the element after update.\n   *\n   * ```ts\n   * firstUpdated() {\n   *   this.renderRoot.getElementById('my-text-area').focus();\n   * }\n   * ```\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  firstUpdated(_changedProperties) {\n  }\n};\n_e = finalized;\nReactiveElement[_e] = true;\nReactiveElement.elementProperties = /* @__PURE__ */ new Map();\nReactiveElement.elementStyles = [];\nReactiveElement.shadowRootOptions = { mode: \"open\" };\npolyfillSupport2 === null || polyfillSupport2 === void 0 ? void 0 : polyfillSupport2({ ReactiveElement });\nif (DEV_MODE2) {\n  ReactiveElement.enabledWarnings = [\"change-in-update\"];\n  const ensureOwnWarnings = function(ctor) {\n    if (!ctor.hasOwnProperty(JSCompiler_renameProperty(\"enabledWarnings\", ctor))) {\n      ctor.enabledWarnings = ctor.enabledWarnings.slice();\n    }\n  };\n  ReactiveElement.enableWarning = function(warning) {\n    ensureOwnWarnings(this);\n    if (this.enabledWarnings.indexOf(warning) < 0) {\n      this.enabledWarnings.push(warning);\n    }\n  };\n  ReactiveElement.disableWarning = function(warning) {\n    ensureOwnWarnings(this);\n    const i = this.enabledWarnings.indexOf(warning);\n    if (i >= 0) {\n      this.enabledWarnings.splice(i, 1);\n    }\n  };\n}\n((_d2 = global3.reactiveElementVersions) !== null && _d2 !== void 0 ? _d2 : global3.reactiveElementVersions = []).push(\"1.6.3\");\nif (DEV_MODE2 && global3.reactiveElementVersions.length > 1) {\n  issueWarning2(\"multiple-versions\", `Multiple versions of Lit loaded. Loading multiple versions is not recommended.`);\n}\n\n// node_modules/lit-element/development/lit-element.js\nvar _a3;\nvar _b3;\nvar _c3;\nvar DEV_MODE3 = true;\nvar issueWarning3;\nif (DEV_MODE3) {\n  const issuedWarnings = (_a3 = globalThis.litIssuedWarnings) !== null && _a3 !== void 0 ? _a3 : globalThis.litIssuedWarnings = /* @__PURE__ */ new Set();\n  issueWarning3 = (code, warning) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (!issuedWarnings.has(warning)) {\n      console.warn(warning);\n      issuedWarnings.add(warning);\n    }\n  };\n}\nvar LitElement = class extends ReactiveElement {\n  constructor() {\n    super(...arguments);\n    this.renderOptions = { host: this };\n    this.__childPart = void 0;\n  }\n  /**\n   * @category rendering\n   */\n  createRenderRoot() {\n    var _a5;\n    var _b4;\n    const renderRoot = super.createRenderRoot();\n    (_a5 = (_b4 = this.renderOptions).renderBefore) !== null && _a5 !== void 0 ? _a5 : _b4.renderBefore = renderRoot.firstChild;\n    return renderRoot;\n  }\n  /**\n   * Updates the element. This method reflects property values to attributes\n   * and calls `render` to render DOM via lit-html. Setting properties inside\n   * this method will *not* trigger another update.\n   * @param changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  update(changedProperties) {\n    const value = this.render();\n    if (!this.hasUpdated) {\n      this.renderOptions.isConnected = this.isConnected;\n    }\n    super.update(changedProperties);\n    this.__childPart = render(value, this.renderRoot, this.renderOptions);\n  }\n  /**\n   * Invoked when the component is added to the document's DOM.\n   *\n   * In `connectedCallback()` you should setup tasks that should only occur when\n   * the element is connected to the document. The most common of these is\n   * adding event listeners to nodes external to the element, like a keydown\n   * event handler added to the window.\n   *\n   * ```ts\n   * connectedCallback() {\n   *   super.connectedCallback();\n   *   addEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * Typically, anything done in `connectedCallback()` should be undone when the\n   * element is disconnected, in `disconnectedCallback()`.\n   *\n   * @category lifecycle\n   */\n  connectedCallback() {\n    var _a5;\n    super.connectedCallback();\n    (_a5 = this.__childPart) === null || _a5 === void 0 ? void 0 : _a5.setConnected(true);\n  }\n  /**\n   * Invoked when the component is removed from the document's DOM.\n   *\n   * This callback is the main signal to the element that it may no longer be\n   * used. `disconnectedCallback()` should ensure that nothing is holding a\n   * reference to the element (such as event listeners added to nodes external\n   * to the element), so that it is free to be garbage collected.\n   *\n   * ```ts\n   * disconnectedCallback() {\n   *   super.disconnectedCallback();\n   *   window.removeEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * An element may be re-connected after being disconnected.\n   *\n   * @category lifecycle\n   */\n  disconnectedCallback() {\n    var _a5;\n    super.disconnectedCallback();\n    (_a5 = this.__childPart) === null || _a5 === void 0 ? void 0 : _a5.setConnected(false);\n  }\n  /**\n   * Invoked on each update to perform rendering tasks. This method may return\n   * any value renderable by lit-html's `ChildPart` - typically a\n   * `TemplateResult`. Setting properties inside this method will *not* trigger\n   * the element to update.\n   * @category rendering\n   */\n  render() {\n    return noChange;\n  }\n};\nLitElement[\"finalized\"] = true;\nLitElement[\"_$litElement$\"] = true;\n(_b3 = globalThis.litElementHydrateSupport) === null || _b3 === void 0 ? void 0 : _b3.call(globalThis, { LitElement });\nvar polyfillSupport3 = DEV_MODE3 ? globalThis.litElementPolyfillSupportDevMode : globalThis.litElementPolyfillSupport;\npolyfillSupport3 === null || polyfillSupport3 === void 0 ? void 0 : polyfillSupport3({ LitElement });\nif (DEV_MODE3) {\n  LitElement[\"finalize\"] = function() {\n    const finalized2 = ReactiveElement.finalize.call(this);\n    if (!finalized2) {\n      return false;\n    }\n    const warnRemovedOrRenamed = (obj, name, renamed = false) => {\n      if (obj.hasOwnProperty(name)) {\n        const ctorName = (typeof obj === \"function\" ? obj : obj.constructor).name;\n        issueWarning3(renamed ? \"renamed-api\" : \"removed-api\", `\\`${name}\\` is implemented on class ${ctorName}. It has been ${renamed ? \"renamed\" : \"removed\"} in this version of LitElement.`);\n      }\n    };\n    warnRemovedOrRenamed(this, \"render\");\n    warnRemovedOrRenamed(this, \"getStyles\", true);\n    warnRemovedOrRenamed(this.prototype, \"adoptStyles\");\n    return true;\n  };\n}\n((_c3 = globalThis.litElementVersions) !== null && _c3 !== void 0 ? _c3 : globalThis.litElementVersions = []).push(\"3.3.3\");\nif (DEV_MODE3 && globalThis.litElementVersions.length > 1) {\n  issueWarning3(\"multiple-versions\", `Multiple versions of Lit loaded. Loading multiple versions is not recommended.`);\n}\n\n// node_modules/@lit/reactive-element/development/decorators/custom-element.js\nvar legacyCustomElement = (tagName, clazz) => {\n  customElements.define(tagName, clazz);\n  return clazz;\n};\nvar standardCustomElement = (tagName, descriptor) => {\n  const { kind, elements } = descriptor;\n  return {\n    kind,\n    elements,\n    // This callback is called once the class is otherwise fully defined\n    finisher(clazz) {\n      customElements.define(tagName, clazz);\n    }\n  };\n};\nvar customElement = (tagName) => (classOrDescriptor) => typeof classOrDescriptor === \"function\" ? legacyCustomElement(tagName, classOrDescriptor) : standardCustomElement(tagName, classOrDescriptor);\n\n// node_modules/@lit/reactive-element/development/decorators/property.js\nvar standardProperty = (options, element) => {\n  if (element.kind === \"method\" && element.descriptor && !(\"value\" in element.descriptor)) {\n    return {\n      ...element,\n      finisher(clazz) {\n        clazz.createProperty(element.key, options);\n      }\n    };\n  } else {\n    return {\n      kind: \"field\",\n      key: Symbol(),\n      placement: \"own\",\n      descriptor: {},\n      // store the original key so subsequent decorators have access to it.\n      originalKey: element.key,\n      // When @babel/plugin-proposal-decorators implements initializers,\n      // do this instead of the initializer below. See:\n      // https://github.com/babel/babel/issues/9260 extras: [\n      //   {\n      //     kind: 'initializer',\n      //     placement: 'own',\n      //     initializer: descriptor.initializer,\n      //   }\n      // ],\n      initializer() {\n        if (typeof element.initializer === \"function\") {\n          this[element.key] = element.initializer.call(this);\n        }\n      },\n      finisher(clazz) {\n        clazz.createProperty(element.key, options);\n      }\n    };\n  }\n};\nvar legacyProperty = (options, proto, name) => {\n  proto.constructor.createProperty(name, options);\n};\nfunction property(options) {\n  return (protoOrDescriptor, name) => name !== void 0 ? legacyProperty(options, protoOrDescriptor, name) : standardProperty(options, protoOrDescriptor);\n}\n\n// node_modules/@lit/reactive-element/development/decorators/state.js\nfunction state(options) {\n  return property({\n    ...options,\n    state: true\n  });\n}\n\n// node_modules/@lit/reactive-element/development/decorators/query-assigned-elements.js\nvar _a4;\nvar NODE_MODE4 = false;\nvar global4 = NODE_MODE4 ? globalThis : window;\nvar slotAssignedElements = ((_a4 = global4.HTMLSlotElement) === null || _a4 === void 0 ? void 0 : _a4.prototype.assignedElements) != null ? (slot, opts) => slot.assignedElements(opts) : (slot, opts) => slot.assignedNodes(opts).filter((node) => node.nodeType === Node.ELEMENT_NODE);\n\nexport {\n  css,\n  ReactiveElement,\n  html,\n  svg,\n  noChange,\n  nothing,\n  render,\n  LitElement,\n  customElement,\n  property,\n  state\n};\n/*! Bundled license information:\n\n@lit/reactive-element/development/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/development/lit-html.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/reactive-element.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-element/development/lit-element.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/development/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/custom-element.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/property.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/state.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/base.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/event-options.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/query.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/query-all.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/query-async.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/development/decorators/query-assigned-nodes.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n//# sourceMappingURL=chunk-6LAJV43E.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-6RU56BH7.js",
    "content": "import {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport {\n  withCache\n} from \"./chunk-GOA7IGSB.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/common/__generated__/IContractMetadata/read/name.js\nvar FN_SELECTOR = \"0x06fdde03\";\nvar FN_INPUTS = [];\nvar FN_OUTPUTS = [\n  {\n    type: \"string\"\n  }\n];\nasync function name(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: []\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/common/read/name.js\nasync function name2(options) {\n  return withCache(() => name(options), {\n    cacheKey: `${options.contract.chain.id}:${options.contract.address}:name`,\n    // can never change, so cache forever\n    cacheTime: Number.POSITIVE_INFINITY\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/common/__generated__/IContractMetadata/read/symbol.js\nvar FN_SELECTOR2 = \"0x95d89b41\";\nvar FN_INPUTS2 = [];\nvar FN_OUTPUTS2 = [\n  {\n    type: \"string\"\n  }\n];\nasync function symbol(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2],\n    params: []\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/common/read/symbol.js\nasync function symbol2(options) {\n  return withCache(() => symbol(options), {\n    cacheKey: `${options.contract.chain.id}:${options.contract.address}:symbol`,\n    // can never change, so cache forever\n    cacheTime: Number.POSITIVE_INFINITY\n  });\n}\n\nexport {\n  name2 as name,\n  symbol2 as symbol\n};\n//# sourceMappingURL=chunk-6RU56BH7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-6WNCTW75.js",
    "content": "import {\n  getEcosystemInfo\n} from \"./chunk-QLJVAXYD.js\";\nimport {\n  createWalletEmitter,\n  trackConnect\n} from \"./chunk-CLN3QXW2.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  getCachedChainIfExists\n} from \"./chunk-TFBEDS4S.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/wallet/in-app-core.js\nvar connectorCache = /* @__PURE__ */ new Map();\nasync function getOrCreateInAppWalletConnector(client, connectorFactory, ecosystem) {\n  const key = stringify({ clientId: client.clientId, ecosystem });\n  if (connectorCache.has(key)) {\n    return connectorCache.get(key);\n  }\n  const connector = await connectorFactory(client);\n  connectorCache.set(key, connector);\n  return connector;\n}\nfunction createInAppWallet(args) {\n  const { createOptions: _createOptions, connectorFactory, ecosystem } = args;\n  const walletId = ecosystem ? ecosystem.id : \"inApp\";\n  const emitter = createWalletEmitter();\n  let createOptions = _createOptions;\n  let account = void 0;\n  let chain = void 0;\n  let client;\n  return {\n    id: walletId,\n    subscribe: emitter.subscribe,\n    getChain() {\n      if (!chain) {\n        return void 0;\n      }\n      chain = getCachedChainIfExists(chain.id) || chain;\n      return chain;\n    },\n    getConfig: () => createOptions,\n    getAccount: () => account,\n    autoConnect: async (options) => {\n      const { autoConnectInAppWallet } = await import(\"./wallet-ZUZOMGPE.js\");\n      const connector = await getOrCreateInAppWalletConnector(options.client, connectorFactory, ecosystem);\n      if (ecosystem) {\n        const ecosystemOptions = await getEcosystemInfo(ecosystem.id);\n        const smartAccountOptions = ecosystemOptions == null ? void 0 : ecosystemOptions.smartAccountOptions;\n        if (smartAccountOptions) {\n          const preferredChain = options.chain;\n          if (!preferredChain) {\n            throw new Error(\"Chain is required for ecosystem smart accounts, pass it via connect() or via UI components\");\n          }\n          createOptions = {\n            ...createOptions,\n            smartAccount: {\n              chain: preferredChain,\n              sponsorGas: smartAccountOptions.sponsorGas,\n              factoryAddress: smartAccountOptions.accountFactoryAddress\n            }\n          };\n        }\n      }\n      const [connectedAccount, connectedChain] = await autoConnectInAppWallet(options, createOptions, connector);\n      client = options.client;\n      account = connectedAccount;\n      chain = connectedChain;\n      trackConnect({\n        client: options.client,\n        ecosystem,\n        walletType: walletId,\n        walletAddress: account.address,\n        chainId: chain.id\n      });\n      return account;\n    },\n    connect: async (options) => {\n      const { connectInAppWallet } = await import(\"./wallet-ZUZOMGPE.js\");\n      const connector = await getOrCreateInAppWalletConnector(options.client, connectorFactory, ecosystem);\n      if (ecosystem) {\n        const ecosystemOptions = await getEcosystemInfo(ecosystem.id);\n        const smartAccountOptions = ecosystemOptions == null ? void 0 : ecosystemOptions.smartAccountOptions;\n        if (smartAccountOptions) {\n          const preferredChain = options.chain;\n          if (!preferredChain) {\n            throw new Error(\"Chain is required for ecosystem smart accounts, pass it via connect() or via UI components\");\n          }\n          createOptions = {\n            ...createOptions,\n            smartAccount: {\n              chain: preferredChain,\n              sponsorGas: smartAccountOptions.sponsorGas,\n              factoryAddress: smartAccountOptions.accountFactoryAddress\n            }\n          };\n        }\n      }\n      const [connectedAccount, connectedChain] = await connectInAppWallet(options, createOptions, connector);\n      client = options.client;\n      account = connectedAccount;\n      chain = connectedChain;\n      trackConnect({\n        client: options.client,\n        ecosystem,\n        walletType: walletId,\n        walletAddress: account.address,\n        chainId: chain.id\n      });\n      return account;\n    },\n    disconnect: async () => {\n      if (client) {\n        const connector = await getOrCreateInAppWalletConnector(client, connectorFactory, ecosystem);\n        const result = await connector.logout();\n        if (!result.success) {\n          throw new Error(\"Failed to logout\");\n        }\n      }\n      account = void 0;\n      chain = void 0;\n      emitter.emit(\"disconnect\", void 0);\n    },\n    switchChain: async (newChain) => {\n      if ((createOptions == null ? void 0 : createOptions.smartAccount) && client && account) {\n        const { autoConnectInAppWallet } = await import(\"./wallet-ZUZOMGPE.js\");\n        const connector = await getOrCreateInAppWalletConnector(client, connectorFactory, ecosystem);\n        if (ecosystem) {\n          const ecosystemOptions = await getEcosystemInfo(ecosystem.id);\n          const smartAccountOptions = ecosystemOptions == null ? void 0 : ecosystemOptions.smartAccountOptions;\n          if (smartAccountOptions) {\n            createOptions = {\n              ...createOptions,\n              smartAccount: {\n                chain: newChain,\n                sponsorGas: smartAccountOptions.sponsorGas,\n                factoryAddress: smartAccountOptions.accountFactoryAddress\n              }\n            };\n          }\n        }\n        const [connectedAccount, connectedChain] = await autoConnectInAppWallet({\n          chain: newChain,\n          client\n        }, createOptions, connector);\n        account = connectedAccount;\n        chain = connectedChain;\n      } else {\n        chain = newChain;\n      }\n      emitter.emit(\"chainChanged\", newChain);\n    }\n  };\n}\n\nexport {\n  getOrCreateInAppWalletConnector,\n  createInAppWallet\n};\n//# sourceMappingURL=chunk-6WNCTW75.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-6XF6HOWC.js",
    "content": "import {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport {\n  prepareTransaction\n} from \"./chunk-CNLOA7AS.js\";\nimport {\n  isAbiFunction,\n  prepareMethod\n} from \"./chunk-NPJBMLFY.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport {\n  parseAbiItem\n} from \"./chunk-GINVHONX.js\";\n\n// node_modules/thirdweb/dist/esm/transaction/prepare-contract-call.js\nfunction prepareContractCall(options) {\n  const { contract, method, params, ...rest } = options;\n  const preparedMethodPromise = () => (async () => {\n    var _a, _b;\n    if (Array.isArray(method)) {\n      return method;\n    }\n    if (isAbiFunction(method)) {\n      return prepareMethod(method);\n    }\n    if (typeof method === \"function\") {\n      return prepareMethod(\n        // @ts-expect-error - method *is* function in this case\n        await method(contract)\n      );\n    }\n    if (typeof method === \"string\" && method.startsWith(\"function \")) {\n      const abiItem = parseAbiItem(method);\n      if (abiItem.type === \"function\") {\n        return prepareMethod(abiItem);\n      }\n      throw new Error(`\"method\" passed is not of type \"function\"`);\n    }\n    if (contract.abi && ((_a = contract.abi) == null ? void 0 : _a.length) > 0) {\n      const abiFunction = (_b = contract.abi) == null ? void 0 : _b.find((item) => item.type === \"function\" && item.name === method);\n      if (abiFunction) {\n        return prepareMethod(abiFunction);\n      }\n    }\n    throw new Error(`Could not resolve method \"${method}\".`);\n  })();\n  return prepareTransaction({\n    ...rest,\n    // these always inferred from the contract\n    to: contract.address,\n    chain: contract.chain,\n    client: contract.client,\n    data: async () => {\n      let preparedM;\n      if (Array.isArray(method)) {\n        preparedM = method;\n      } else {\n        preparedM = await preparedMethodPromise();\n      }\n      if (preparedM[1].length === 0) {\n        return preparedM[0];\n      }\n      return preparedM[0] + encodeAbiParameters(\n        preparedM[1],\n        // @ts-expect-error - TODO: fix this type issue\n        await resolvePromisedValue(params ?? [])\n      ).slice(2);\n    }\n  }, {\n    preparedMethod: preparedMethodPromise,\n    contract\n  });\n}\n\n// node_modules/thirdweb/dist/esm/utils/promise/once.js\nfunction once(fn) {\n  let result;\n  return () => {\n    if (!result) {\n      result = fn();\n    }\n    return result;\n  };\n}\n\nexport {\n  prepareContractCall,\n  once\n};\n//# sourceMappingURL=chunk-6XF6HOWC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-7AY3QZZV.js",
    "content": "import {\n  hexToNumber,\n  isHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/utils/chains.js\nfunction getValidPublicRPCUrl(chain) {\n  return getValidChainRPCs(chain).map((rpc) => {\n    try {\n      const url = new URL(rpc);\n      if (url.hostname.endsWith(\".thirdweb.com\")) {\n        url.pathname = \"\";\n        url.search = \"\";\n      }\n      return url.toString();\n    } catch {\n      return rpc;\n    }\n  });\n}\nfunction getValidChainRPCs(chain, clientId, mode = \"http\") {\n  const processedRPCs = [];\n  for (const rpc of chain.rpc) {\n    if (mode === \"http\" && !rpc.startsWith(\"http\")) {\n      continue;\n    }\n    if (mode === \"ws\" && !rpc.startsWith(\"ws\")) {\n      continue;\n    }\n    if (rpc.includes(\"${THIRDWEB_API_KEY}\")) {\n      if (clientId) {\n        processedRPCs.push(rpc.replace(\"${THIRDWEB_API_KEY}\", clientId) + (typeof globalThis !== \"undefined\" && \"APP_BUNDLE_ID\" in globalThis ? (\n          // @ts-expect-error\n          `/?bundleId=${globalThis.APP_BUNDLE_ID}`\n        ) : \"\"));\n      } else {\n        processedRPCs.push(rpc.replace(\"${THIRDWEB_API_KEY}\", \"\"));\n      }\n    } else if (rpc.includes(\"${\")) {\n    } else {\n      processedRPCs.push(rpc);\n    }\n  }\n  if (processedRPCs.length === 0) {\n    throw new Error(`No RPC available for chainId \"${chain.chainId}\" with mode ${mode}`);\n  }\n  return processedRPCs;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/utils/normalizeChainId.js\nfunction normalizeChainId(chainId) {\n  if (typeof chainId === \"number\") {\n    return chainId;\n  }\n  if (isHex(chainId)) {\n    return hexToNumber(chainId);\n  }\n  if (typeof chainId === \"bigint\") {\n    return Number(chainId);\n  }\n  return Number.parseInt(chainId, 10);\n}\n\nexport {\n  getValidPublicRPCUrl,\n  normalizeChainId\n};\n//# sourceMappingURL=chunk-7AY3QZZV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-7ETS5GH6.js",
    "content": "import {\n  fetchTokenMetadata\n} from \"./chunk-4U2YWK76.js\";\nimport {\n  parseNFT\n} from \"./chunk-NOA36MVL.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IERC1155/read/totalSupply.js\nvar FN_SELECTOR = \"0xbd85b039\";\nvar FN_INPUTS = [\n  {\n    type: \"uint256\",\n    name: \"id\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint256\"\n  }\n];\nasync function totalSupply(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.id]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IERC1155/read/uri.js\nvar FN_SELECTOR2 = \"0x0e89341c\";\nvar FN_INPUTS2 = [\n  {\n    type: \"uint256\",\n    name: \"tokenId\"\n  }\n];\nvar FN_OUTPUTS2 = [\n  {\n    type: \"string\"\n  }\n];\nfunction isUriSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2]\n  });\n}\nasync function uri(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2],\n    params: [options.tokenId]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/read/getNFT.js\nasync function getNFT(options) {\n  const [tokenUri, supply] = await Promise.all([\n    uri({\n      contract: options.contract,\n      tokenId: options.tokenId\n    }),\n    totalSupply({\n      contract: options.contract,\n      id: options.tokenId\n      // in cases where the supply is not available -> fall back to 0\n    }).catch(() => 0n)\n  ]);\n  return parseNFT(await fetchTokenMetadata({\n    client: options.contract.client,\n    tokenId: options.tokenId,\n    tokenUri\n  }).catch(() => ({\n    id: options.tokenId,\n    type: \"ERC1155\",\n    uri: tokenUri\n  })), {\n    tokenId: options.tokenId,\n    tokenUri,\n    type: \"ERC1155\",\n    owner: null,\n    supply\n  });\n}\n\nexport {\n  isUriSupported,\n  getNFT\n};\n//# sourceMappingURL=chunk-7ETS5GH6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-7EY5MWB2.js",
    "content": "import {\n  sha256\n} from \"./chunk-O6UZ65WN.js\";\nimport {\n  Hash,\n  bytes,\n  concatBytes as concatBytes2,\n  exists,\n  hash,\n  randomBytes,\n  toBytes\n} from \"./chunk-ME5GAE4N.js\";\nimport {\n  aInRange,\n  abool,\n  abytes,\n  bitLen,\n  bitMask,\n  bytesToHex,\n  bytesToNumberBE,\n  bytesToNumberLE,\n  concatBytes,\n  createHmacDrbg,\n  ensureBytes,\n  hexToBytes,\n  inRange,\n  isBytes,\n  memoized,\n  numberToBytesBE,\n  numberToBytesLE,\n  numberToHexUnpadded,\n  utf8ToBytes,\n  utils_exports,\n  validateObject\n} from \"./chunk-SPELR2RL.js\";\n\n// node_modules/@noble/hashes/esm/hmac.js\nvar HMAC = class extends Hash {\n  constructor(hash2, _key) {\n    super();\n    this.finished = false;\n    this.destroyed = false;\n    hash(hash2);\n    const key = toBytes(_key);\n    this.iHash = hash2.create();\n    if (typeof this.iHash.update !== \"function\")\n      throw new Error(\"Expected instance of class which extends utils.Hash\");\n    this.blockLen = this.iHash.blockLen;\n    this.outputLen = this.iHash.outputLen;\n    const blockLen = this.blockLen;\n    const pad = new Uint8Array(blockLen);\n    pad.set(key.length > blockLen ? hash2.create().update(key).digest() : key);\n    for (let i = 0; i < pad.length; i++)\n      pad[i] ^= 54;\n    this.iHash.update(pad);\n    this.oHash = hash2.create();\n    for (let i = 0; i < pad.length; i++)\n      pad[i] ^= 54 ^ 92;\n    this.oHash.update(pad);\n    pad.fill(0);\n  }\n  update(buf) {\n    exists(this);\n    this.iHash.update(buf);\n    return this;\n  }\n  digestInto(out) {\n    exists(this);\n    bytes(out, this.outputLen);\n    this.finished = true;\n    this.iHash.digestInto(out);\n    this.oHash.update(out);\n    this.oHash.digestInto(out);\n    this.destroy();\n  }\n  digest() {\n    const out = new Uint8Array(this.oHash.outputLen);\n    this.digestInto(out);\n    return out;\n  }\n  _cloneInto(to) {\n    to || (to = Object.create(Object.getPrototypeOf(this), {}));\n    const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n    to = to;\n    to.finished = finished;\n    to.destroyed = destroyed;\n    to.blockLen = blockLen;\n    to.outputLen = outputLen;\n    to.oHash = oHash._cloneInto(to.oHash);\n    to.iHash = iHash._cloneInto(to.iHash);\n    return to;\n  }\n  destroy() {\n    this.destroyed = true;\n    this.oHash.destroy();\n    this.iHash.destroy();\n  }\n};\nvar hmac = (hash2, key, message) => new HMAC(hash2, key).update(message).digest();\nhmac.create = (hash2, key) => new HMAC(hash2, key);\n\n// node_modules/@noble/curves/esm/abstract/modular.js\nvar _0n = BigInt(0);\nvar _1n = BigInt(1);\nvar _2n = BigInt(2);\nvar _3n = BigInt(3);\nvar _4n = BigInt(4);\nvar _5n = BigInt(5);\nvar _8n = BigInt(8);\nvar _9n = BigInt(9);\nvar _16n = BigInt(16);\nfunction mod(a, b) {\n  const result = a % b;\n  return result >= _0n ? result : b + result;\n}\nfunction pow(num2, power, modulo) {\n  if (modulo <= _0n || power < _0n)\n    throw new Error(\"Expected power/modulo > 0\");\n  if (modulo === _1n)\n    return _0n;\n  let res = _1n;\n  while (power > _0n) {\n    if (power & _1n)\n      res = res * num2 % modulo;\n    num2 = num2 * num2 % modulo;\n    power >>= _1n;\n  }\n  return res;\n}\nfunction pow2(x, power, modulo) {\n  let res = x;\n  while (power-- > _0n) {\n    res *= res;\n    res %= modulo;\n  }\n  return res;\n}\nfunction invert(number, modulo) {\n  if (number === _0n || modulo <= _0n) {\n    throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n  }\n  let a = mod(number, modulo);\n  let b = modulo;\n  let x = _0n, y = _1n, u = _1n, v = _0n;\n  while (a !== _0n) {\n    const q = b / a;\n    const r = b % a;\n    const m = x - u * q;\n    const n = y - v * q;\n    b = a, a = r, x = u, y = v, u = m, v = n;\n  }\n  const gcd = b;\n  if (gcd !== _1n)\n    throw new Error(\"invert: does not exist\");\n  return mod(x, modulo);\n}\nfunction tonelliShanks(P) {\n  const legendreC = (P - _1n) / _2n;\n  let Q, S, Z;\n  for (Q = P - _1n, S = 0; Q % _2n === _0n; Q /= _2n, S++)\n    ;\n  for (Z = _2n; Z < P && pow(Z, legendreC, P) !== P - _1n; Z++)\n    ;\n  if (S === 1) {\n    const p1div4 = (P + _1n) / _4n;\n    return function tonelliFast(Fp2, n) {\n      const root = Fp2.pow(n, p1div4);\n      if (!Fp2.eql(Fp2.sqr(root), n))\n        throw new Error(\"Cannot find square root\");\n      return root;\n    };\n  }\n  const Q1div2 = (Q + _1n) / _2n;\n  return function tonelliSlow(Fp2, n) {\n    if (Fp2.pow(n, legendreC) === Fp2.neg(Fp2.ONE))\n      throw new Error(\"Cannot find square root\");\n    let r = S;\n    let g = Fp2.pow(Fp2.mul(Fp2.ONE, Z), Q);\n    let x = Fp2.pow(n, Q1div2);\n    let b = Fp2.pow(n, Q);\n    while (!Fp2.eql(b, Fp2.ONE)) {\n      if (Fp2.eql(b, Fp2.ZERO))\n        return Fp2.ZERO;\n      let m = 1;\n      for (let t2 = Fp2.sqr(b); m < r; m++) {\n        if (Fp2.eql(t2, Fp2.ONE))\n          break;\n        t2 = Fp2.sqr(t2);\n      }\n      const ge = Fp2.pow(g, _1n << BigInt(r - m - 1));\n      g = Fp2.sqr(ge);\n      x = Fp2.mul(x, ge);\n      b = Fp2.mul(b, g);\n      r = m;\n    }\n    return x;\n  };\n}\nfunction FpSqrt(P) {\n  if (P % _4n === _3n) {\n    const p1div4 = (P + _1n) / _4n;\n    return function sqrt3mod4(Fp2, n) {\n      const root = Fp2.pow(n, p1div4);\n      if (!Fp2.eql(Fp2.sqr(root), n))\n        throw new Error(\"Cannot find square root\");\n      return root;\n    };\n  }\n  if (P % _8n === _5n) {\n    const c1 = (P - _5n) / _8n;\n    return function sqrt5mod8(Fp2, n) {\n      const n2 = Fp2.mul(n, _2n);\n      const v = Fp2.pow(n2, c1);\n      const nv = Fp2.mul(n, v);\n      const i = Fp2.mul(Fp2.mul(nv, _2n), v);\n      const root = Fp2.mul(nv, Fp2.sub(i, Fp2.ONE));\n      if (!Fp2.eql(Fp2.sqr(root), n))\n        throw new Error(\"Cannot find square root\");\n      return root;\n    };\n  }\n  if (P % _16n === _9n) {\n  }\n  return tonelliShanks(P);\n}\nvar FIELD_FIELDS = [\n  \"create\",\n  \"isValid\",\n  \"is0\",\n  \"neg\",\n  \"inv\",\n  \"sqrt\",\n  \"sqr\",\n  \"eql\",\n  \"add\",\n  \"sub\",\n  \"mul\",\n  \"pow\",\n  \"div\",\n  \"addN\",\n  \"subN\",\n  \"mulN\",\n  \"sqrN\"\n];\nfunction validateField(field) {\n  const initial = {\n    ORDER: \"bigint\",\n    MASK: \"bigint\",\n    BYTES: \"isSafeInteger\",\n    BITS: \"isSafeInteger\"\n  };\n  const opts = FIELD_FIELDS.reduce((map, val) => {\n    map[val] = \"function\";\n    return map;\n  }, initial);\n  return validateObject(field, opts);\n}\nfunction FpPow(f, num2, power) {\n  if (power < _0n)\n    throw new Error(\"Expected power > 0\");\n  if (power === _0n)\n    return f.ONE;\n  if (power === _1n)\n    return num2;\n  let p = f.ONE;\n  let d = num2;\n  while (power > _0n) {\n    if (power & _1n)\n      p = f.mul(p, d);\n    d = f.sqr(d);\n    power >>= _1n;\n  }\n  return p;\n}\nfunction FpInvertBatch(f, nums) {\n  const tmp = new Array(nums.length);\n  const lastMultiplied = nums.reduce((acc, num2, i) => {\n    if (f.is0(num2))\n      return acc;\n    tmp[i] = acc;\n    return f.mul(acc, num2);\n  }, f.ONE);\n  const inverted = f.inv(lastMultiplied);\n  nums.reduceRight((acc, num2, i) => {\n    if (f.is0(num2))\n      return acc;\n    tmp[i] = f.mul(acc, tmp[i]);\n    return f.mul(acc, num2);\n  }, inverted);\n  return tmp;\n}\nfunction nLength(n, nBitLength) {\n  const _nBitLength = nBitLength !== void 0 ? nBitLength : n.toString(2).length;\n  const nByteLength = Math.ceil(_nBitLength / 8);\n  return { nBitLength: _nBitLength, nByteLength };\n}\nfunction Field(ORDER, bitLen2, isLE = false, redef = {}) {\n  if (ORDER <= _0n)\n    throw new Error(`Expected Field ORDER > 0, got ${ORDER}`);\n  const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen2);\n  if (BYTES > 2048)\n    throw new Error(\"Field lengths over 2048 bytes are not supported\");\n  const sqrtP = FpSqrt(ORDER);\n  const f = Object.freeze({\n    ORDER,\n    BITS,\n    BYTES,\n    MASK: bitMask(BITS),\n    ZERO: _0n,\n    ONE: _1n,\n    create: (num2) => mod(num2, ORDER),\n    isValid: (num2) => {\n      if (typeof num2 !== \"bigint\")\n        throw new Error(`Invalid field element: expected bigint, got ${typeof num2}`);\n      return _0n <= num2 && num2 < ORDER;\n    },\n    is0: (num2) => num2 === _0n,\n    isOdd: (num2) => (num2 & _1n) === _1n,\n    neg: (num2) => mod(-num2, ORDER),\n    eql: (lhs, rhs) => lhs === rhs,\n    sqr: (num2) => mod(num2 * num2, ORDER),\n    add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n    sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n    mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n    pow: (num2, power) => FpPow(f, num2, power),\n    div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n    // Same as above, but doesn't normalize\n    sqrN: (num2) => num2 * num2,\n    addN: (lhs, rhs) => lhs + rhs,\n    subN: (lhs, rhs) => lhs - rhs,\n    mulN: (lhs, rhs) => lhs * rhs,\n    inv: (num2) => invert(num2, ORDER),\n    sqrt: redef.sqrt || ((n) => sqrtP(f, n)),\n    invertBatch: (lst) => FpInvertBatch(f, lst),\n    // TODO: do we really need constant cmov?\n    // We don't have const-time bigints anyway, so probably will be not very useful\n    cmov: (a, b, c) => c ? b : a,\n    toBytes: (num2) => isLE ? numberToBytesLE(num2, BYTES) : numberToBytesBE(num2, BYTES),\n    fromBytes: (bytes2) => {\n      if (bytes2.length !== BYTES)\n        throw new Error(`Fp.fromBytes: expected ${BYTES}, got ${bytes2.length}`);\n      return isLE ? bytesToNumberLE(bytes2) : bytesToNumberBE(bytes2);\n    }\n  });\n  return Object.freeze(f);\n}\nfunction getFieldBytesLength(fieldOrder) {\n  if (typeof fieldOrder !== \"bigint\")\n    throw new Error(\"field order must be bigint\");\n  const bitLength = fieldOrder.toString(2).length;\n  return Math.ceil(bitLength / 8);\n}\nfunction getMinHashLength(fieldOrder) {\n  const length = getFieldBytesLength(fieldOrder);\n  return length + Math.ceil(length / 2);\n}\nfunction mapHashToField(key, fieldOrder, isLE = false) {\n  const len = key.length;\n  const fieldLen = getFieldBytesLength(fieldOrder);\n  const minLen = getMinHashLength(fieldOrder);\n  if (len < 16 || len < minLen || len > 1024)\n    throw new Error(`expected ${minLen}-1024 bytes of input, got ${len}`);\n  const num2 = isLE ? bytesToNumberBE(key) : bytesToNumberLE(key);\n  const reduced = mod(num2, fieldOrder - _1n) + _1n;\n  return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n\n// node_modules/@noble/curves/esm/abstract/curve.js\nvar _0n2 = BigInt(0);\nvar _1n2 = BigInt(1);\nvar pointPrecomputes = /* @__PURE__ */ new WeakMap();\nvar pointWindowSizes = /* @__PURE__ */ new WeakMap();\nfunction wNAF(c, bits) {\n  const constTimeNegate = (condition, item) => {\n    const neg = item.negate();\n    return condition ? neg : item;\n  };\n  const validateW = (W) => {\n    if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n      throw new Error(`Wrong window size=${W}, should be [1..${bits}]`);\n  };\n  const opts = (W) => {\n    validateW(W);\n    const windows = Math.ceil(bits / W) + 1;\n    const windowSize = 2 ** (W - 1);\n    return { windows, windowSize };\n  };\n  return {\n    constTimeNegate,\n    // non-const time multiplication ladder\n    unsafeLadder(elm, n) {\n      let p = c.ZERO;\n      let d = elm;\n      while (n > _0n2) {\n        if (n & _1n2)\n          p = p.add(d);\n        d = d.double();\n        n >>= _1n2;\n      }\n      return p;\n    },\n    /**\n     * Creates a wNAF precomputation window. Used for caching.\n     * Default window size is set by `utils.precompute()` and is equal to 8.\n     * Number of precomputed points depends on the curve size:\n     * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n     * - 𝑊 is the window size\n     * - 𝑛 is the bitlength of the curve order.\n     * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n     * @returns precomputed point tables flattened to a single array\n     */\n    precomputeWindow(elm, W) {\n      const { windows, windowSize } = opts(W);\n      const points = [];\n      let p = elm;\n      let base = p;\n      for (let window = 0; window < windows; window++) {\n        base = p;\n        points.push(base);\n        for (let i = 1; i < windowSize; i++) {\n          base = base.add(p);\n          points.push(base);\n        }\n        p = base.double();\n      }\n      return points;\n    },\n    /**\n     * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n     * @param W window size\n     * @param precomputes precomputed tables\n     * @param n scalar (we don't check here, but should be less than curve order)\n     * @returns real and fake (for const-time) points\n     */\n    wNAF(W, precomputes, n) {\n      const { windows, windowSize } = opts(W);\n      let p = c.ZERO;\n      let f = c.BASE;\n      const mask = BigInt(2 ** W - 1);\n      const maxNumber = 2 ** W;\n      const shiftBy = BigInt(W);\n      for (let window = 0; window < windows; window++) {\n        const offset = window * windowSize;\n        let wbits = Number(n & mask);\n        n >>= shiftBy;\n        if (wbits > windowSize) {\n          wbits -= maxNumber;\n          n += _1n2;\n        }\n        const offset1 = offset;\n        const offset2 = offset + Math.abs(wbits) - 1;\n        const cond1 = window % 2 !== 0;\n        const cond2 = wbits < 0;\n        if (wbits === 0) {\n          f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n        } else {\n          p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n        }\n      }\n      return { p, f };\n    },\n    wNAFCached(P, n, transform) {\n      const W = pointWindowSizes.get(P) || 1;\n      let comp = pointPrecomputes.get(P);\n      if (!comp) {\n        comp = this.precomputeWindow(P, W);\n        if (W !== 1)\n          pointPrecomputes.set(P, transform(comp));\n      }\n      return this.wNAF(W, comp, n);\n    },\n    // We calculate precomputes for elliptic curve point multiplication\n    // using windowed method. This specifies window size and\n    // stores precomputed values. Usually only base point would be precomputed.\n    setWindowSize(P, W) {\n      validateW(W);\n      pointWindowSizes.set(P, W);\n      pointPrecomputes.delete(P);\n    }\n  };\n}\nfunction pippenger(c, field, points, scalars) {\n  if (!Array.isArray(points) || !Array.isArray(scalars) || scalars.length !== points.length)\n    throw new Error(\"arrays of points and scalars must have equal length\");\n  scalars.forEach((s, i) => {\n    if (!field.isValid(s))\n      throw new Error(`wrong scalar at index ${i}`);\n  });\n  points.forEach((p, i) => {\n    if (!(p instanceof c))\n      throw new Error(`wrong point at index ${i}`);\n  });\n  const wbits = bitLen(BigInt(points.length));\n  const windowSize = wbits > 12 ? wbits - 3 : wbits > 4 ? wbits - 2 : wbits ? 2 : 1;\n  const MASK = (1 << windowSize) - 1;\n  const buckets = new Array(MASK + 1).fill(c.ZERO);\n  const lastBits = Math.floor((field.BITS - 1) / windowSize) * windowSize;\n  let sum = c.ZERO;\n  for (let i = lastBits; i >= 0; i -= windowSize) {\n    buckets.fill(c.ZERO);\n    for (let j = 0; j < scalars.length; j++) {\n      const scalar = scalars[j];\n      const wbits2 = Number(scalar >> BigInt(i) & BigInt(MASK));\n      buckets[wbits2] = buckets[wbits2].add(points[j]);\n    }\n    let resI = c.ZERO;\n    for (let j = buckets.length - 1, sumI = c.ZERO; j > 0; j--) {\n      sumI = sumI.add(buckets[j]);\n      resI = resI.add(sumI);\n    }\n    sum = sum.add(resI);\n    if (i !== 0)\n      for (let j = 0; j < windowSize; j++)\n        sum = sum.double();\n  }\n  return sum;\n}\nfunction validateBasic(curve) {\n  validateField(curve.Fp);\n  validateObject(curve, {\n    n: \"bigint\",\n    h: \"bigint\",\n    Gx: \"field\",\n    Gy: \"field\"\n  }, {\n    nBitLength: \"isSafeInteger\",\n    nByteLength: \"isSafeInteger\"\n  });\n  return Object.freeze({\n    ...nLength(curve.n, curve.nBitLength),\n    ...curve,\n    ...{ p: curve.Fp.ORDER }\n  });\n}\n\n// node_modules/@noble/curves/esm/abstract/weierstrass.js\nfunction validateSigVerOpts(opts) {\n  if (opts.lowS !== void 0)\n    abool(\"lowS\", opts.lowS);\n  if (opts.prehash !== void 0)\n    abool(\"prehash\", opts.prehash);\n}\nfunction validatePointOpts(curve) {\n  const opts = validateBasic(curve);\n  validateObject(opts, {\n    a: \"field\",\n    b: \"field\"\n  }, {\n    allowedPrivateKeyLengths: \"array\",\n    wrapPrivateKey: \"boolean\",\n    isTorsionFree: \"function\",\n    clearCofactor: \"function\",\n    allowInfinityPoint: \"boolean\",\n    fromBytes: \"function\",\n    toBytes: \"function\"\n  });\n  const { endo, Fp: Fp2, a } = opts;\n  if (endo) {\n    if (!Fp2.eql(a, Fp2.ZERO)) {\n      throw new Error(\"Endomorphism can only be defined for Koblitz curves that have a=0\");\n    }\n    if (typeof endo !== \"object\" || typeof endo.beta !== \"bigint\" || typeof endo.splitScalar !== \"function\") {\n      throw new Error(\"Expected endomorphism with beta: bigint and splitScalar: function\");\n    }\n  }\n  return Object.freeze({ ...opts });\n}\nvar { bytesToNumberBE: b2n, hexToBytes: h2b } = utils_exports;\nvar DER = {\n  // asn.1 DER encoding utils\n  Err: class DERErr extends Error {\n    constructor(m = \"\") {\n      super(m);\n    }\n  },\n  // Basic building block is TLV (Tag-Length-Value)\n  _tlv: {\n    encode: (tag, data) => {\n      const { Err: E } = DER;\n      if (tag < 0 || tag > 256)\n        throw new E(\"tlv.encode: wrong tag\");\n      if (data.length & 1)\n        throw new E(\"tlv.encode: unpadded data\");\n      const dataLen = data.length / 2;\n      const len = numberToHexUnpadded(dataLen);\n      if (len.length / 2 & 128)\n        throw new E(\"tlv.encode: long form length too big\");\n      const lenLen = dataLen > 127 ? numberToHexUnpadded(len.length / 2 | 128) : \"\";\n      return `${numberToHexUnpadded(tag)}${lenLen}${len}${data}`;\n    },\n    // v - value, l - left bytes (unparsed)\n    decode(tag, data) {\n      const { Err: E } = DER;\n      let pos = 0;\n      if (tag < 0 || tag > 256)\n        throw new E(\"tlv.encode: wrong tag\");\n      if (data.length < 2 || data[pos++] !== tag)\n        throw new E(\"tlv.decode: wrong tlv\");\n      const first = data[pos++];\n      const isLong = !!(first & 128);\n      let length = 0;\n      if (!isLong)\n        length = first;\n      else {\n        const lenLen = first & 127;\n        if (!lenLen)\n          throw new E(\"tlv.decode(long): indefinite length not supported\");\n        if (lenLen > 4)\n          throw new E(\"tlv.decode(long): byte length is too big\");\n        const lengthBytes = data.subarray(pos, pos + lenLen);\n        if (lengthBytes.length !== lenLen)\n          throw new E(\"tlv.decode: length bytes not complete\");\n        if (lengthBytes[0] === 0)\n          throw new E(\"tlv.decode(long): zero leftmost byte\");\n        for (const b of lengthBytes)\n          length = length << 8 | b;\n        pos += lenLen;\n        if (length < 128)\n          throw new E(\"tlv.decode(long): not minimal encoding\");\n      }\n      const v = data.subarray(pos, pos + length);\n      if (v.length !== length)\n        throw new E(\"tlv.decode: wrong value length\");\n      return { v, l: data.subarray(pos + length) };\n    }\n  },\n  // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n  // since we always use positive integers here. It must always be empty:\n  // - add zero byte if exists\n  // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n  _int: {\n    encode(num2) {\n      const { Err: E } = DER;\n      if (num2 < _0n3)\n        throw new E(\"integer: negative integers are not allowed\");\n      let hex = numberToHexUnpadded(num2);\n      if (Number.parseInt(hex[0], 16) & 8)\n        hex = \"00\" + hex;\n      if (hex.length & 1)\n        throw new E(\"unexpected assertion\");\n      return hex;\n    },\n    decode(data) {\n      const { Err: E } = DER;\n      if (data[0] & 128)\n        throw new E(\"Invalid signature integer: negative\");\n      if (data[0] === 0 && !(data[1] & 128))\n        throw new E(\"Invalid signature integer: unnecessary leading zero\");\n      return b2n(data);\n    }\n  },\n  toSig(hex) {\n    const { Err: E, _int: int, _tlv: tlv } = DER;\n    const data = typeof hex === \"string\" ? h2b(hex) : hex;\n    abytes(data);\n    const { v: seqBytes, l: seqLeftBytes } = tlv.decode(48, data);\n    if (seqLeftBytes.length)\n      throw new E(\"Invalid signature: left bytes after parsing\");\n    const { v: rBytes, l: rLeftBytes } = tlv.decode(2, seqBytes);\n    const { v: sBytes, l: sLeftBytes } = tlv.decode(2, rLeftBytes);\n    if (sLeftBytes.length)\n      throw new E(\"Invalid signature: left bytes after parsing\");\n    return { r: int.decode(rBytes), s: int.decode(sBytes) };\n  },\n  hexFromSig(sig) {\n    const { _tlv: tlv, _int: int } = DER;\n    const seq = `${tlv.encode(2, int.encode(sig.r))}${tlv.encode(2, int.encode(sig.s))}`;\n    return tlv.encode(48, seq);\n  }\n};\nvar _0n3 = BigInt(0);\nvar _1n3 = BigInt(1);\nvar _2n2 = BigInt(2);\nvar _3n2 = BigInt(3);\nvar _4n2 = BigInt(4);\nfunction weierstrassPoints(opts) {\n  const CURVE = validatePointOpts(opts);\n  const { Fp: Fp2 } = CURVE;\n  const Fn = Field(CURVE.n, CURVE.nBitLength);\n  const toBytes2 = CURVE.toBytes || ((_c, point, _isCompressed) => {\n    const a = point.toAffine();\n    return concatBytes(Uint8Array.from([4]), Fp2.toBytes(a.x), Fp2.toBytes(a.y));\n  });\n  const fromBytes = CURVE.fromBytes || ((bytes2) => {\n    const tail = bytes2.subarray(1);\n    const x = Fp2.fromBytes(tail.subarray(0, Fp2.BYTES));\n    const y = Fp2.fromBytes(tail.subarray(Fp2.BYTES, 2 * Fp2.BYTES));\n    return { x, y };\n  });\n  function weierstrassEquation(x) {\n    const { a, b } = CURVE;\n    const x2 = Fp2.sqr(x);\n    const x3 = Fp2.mul(x2, x);\n    return Fp2.add(Fp2.add(x3, Fp2.mul(x, a)), b);\n  }\n  if (!Fp2.eql(Fp2.sqr(CURVE.Gy), weierstrassEquation(CURVE.Gx)))\n    throw new Error(\"bad generator point: equation left != right\");\n  function isWithinCurveOrder(num2) {\n    return inRange(num2, _1n3, CURVE.n);\n  }\n  function normPrivateKeyToScalar(key) {\n    const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n: N } = CURVE;\n    if (lengths && typeof key !== \"bigint\") {\n      if (isBytes(key))\n        key = bytesToHex(key);\n      if (typeof key !== \"string\" || !lengths.includes(key.length))\n        throw new Error(\"Invalid key\");\n      key = key.padStart(nByteLength * 2, \"0\");\n    }\n    let num2;\n    try {\n      num2 = typeof key === \"bigint\" ? key : bytesToNumberBE(ensureBytes(\"private key\", key, nByteLength));\n    } catch (error) {\n      throw new Error(`private key must be ${nByteLength} bytes, hex or bigint, not ${typeof key}`);\n    }\n    if (wrapPrivateKey)\n      num2 = mod(num2, N);\n    aInRange(\"private key\", num2, _1n3, N);\n    return num2;\n  }\n  function assertPrjPoint(other) {\n    if (!(other instanceof Point2))\n      throw new Error(\"ProjectivePoint expected\");\n  }\n  const toAffineMemo = memoized((p, iz) => {\n    const { px: x, py: y, pz: z } = p;\n    if (Fp2.eql(z, Fp2.ONE))\n      return { x, y };\n    const is0 = p.is0();\n    if (iz == null)\n      iz = is0 ? Fp2.ONE : Fp2.inv(z);\n    const ax = Fp2.mul(x, iz);\n    const ay = Fp2.mul(y, iz);\n    const zz = Fp2.mul(z, iz);\n    if (is0)\n      return { x: Fp2.ZERO, y: Fp2.ZERO };\n    if (!Fp2.eql(zz, Fp2.ONE))\n      throw new Error(\"invZ was invalid\");\n    return { x: ax, y: ay };\n  });\n  const assertValidMemo = memoized((p) => {\n    if (p.is0()) {\n      if (CURVE.allowInfinityPoint && !Fp2.is0(p.py))\n        return;\n      throw new Error(\"bad point: ZERO\");\n    }\n    const { x, y } = p.toAffine();\n    if (!Fp2.isValid(x) || !Fp2.isValid(y))\n      throw new Error(\"bad point: x or y not FE\");\n    const left = Fp2.sqr(y);\n    const right = weierstrassEquation(x);\n    if (!Fp2.eql(left, right))\n      throw new Error(\"bad point: equation left != right\");\n    if (!p.isTorsionFree())\n      throw new Error(\"bad point: not in prime-order subgroup\");\n    return true;\n  });\n  class Point2 {\n    constructor(px, py, pz) {\n      this.px = px;\n      this.py = py;\n      this.pz = pz;\n      if (px == null || !Fp2.isValid(px))\n        throw new Error(\"x required\");\n      if (py == null || !Fp2.isValid(py))\n        throw new Error(\"y required\");\n      if (pz == null || !Fp2.isValid(pz))\n        throw new Error(\"z required\");\n      Object.freeze(this);\n    }\n    // Does not validate if the point is on-curve.\n    // Use fromHex instead, or call assertValidity() later.\n    static fromAffine(p) {\n      const { x, y } = p || {};\n      if (!p || !Fp2.isValid(x) || !Fp2.isValid(y))\n        throw new Error(\"invalid affine point\");\n      if (p instanceof Point2)\n        throw new Error(\"projective point not allowed\");\n      const is0 = (i) => Fp2.eql(i, Fp2.ZERO);\n      if (is0(x) && is0(y))\n        return Point2.ZERO;\n      return new Point2(x, y, Fp2.ONE);\n    }\n    get x() {\n      return this.toAffine().x;\n    }\n    get y() {\n      return this.toAffine().y;\n    }\n    /**\n     * Takes a bunch of Projective Points but executes only one\n     * inversion on all of them. Inversion is very slow operation,\n     * so this improves performance massively.\n     * Optimization: converts a list of projective points to a list of identical points with Z=1.\n     */\n    static normalizeZ(points) {\n      const toInv = Fp2.invertBatch(points.map((p) => p.pz));\n      return points.map((p, i) => p.toAffine(toInv[i])).map(Point2.fromAffine);\n    }\n    /**\n     * Converts hash string or Uint8Array to Point.\n     * @param hex short/long ECDSA hex\n     */\n    static fromHex(hex) {\n      const P = Point2.fromAffine(fromBytes(ensureBytes(\"pointHex\", hex)));\n      P.assertValidity();\n      return P;\n    }\n    // Multiplies generator point by privateKey.\n    static fromPrivateKey(privateKey) {\n      return Point2.BASE.multiply(normPrivateKeyToScalar(privateKey));\n    }\n    // Multiscalar Multiplication\n    static msm(points, scalars) {\n      return pippenger(Point2, Fn, points, scalars);\n    }\n    // \"Private method\", don't use it directly\n    _setWindowSize(windowSize) {\n      wnaf.setWindowSize(this, windowSize);\n    }\n    // A point on curve is valid if it conforms to equation.\n    assertValidity() {\n      assertValidMemo(this);\n    }\n    hasEvenY() {\n      const { y } = this.toAffine();\n      if (Fp2.isOdd)\n        return !Fp2.isOdd(y);\n      throw new Error(\"Field doesn't support isOdd\");\n    }\n    /**\n     * Compare one point to another.\n     */\n    equals(other) {\n      assertPrjPoint(other);\n      const { px: X1, py: Y1, pz: Z1 } = this;\n      const { px: X2, py: Y2, pz: Z2 } = other;\n      const U1 = Fp2.eql(Fp2.mul(X1, Z2), Fp2.mul(X2, Z1));\n      const U2 = Fp2.eql(Fp2.mul(Y1, Z2), Fp2.mul(Y2, Z1));\n      return U1 && U2;\n    }\n    /**\n     * Flips point to one corresponding to (x, -y) in Affine coordinates.\n     */\n    negate() {\n      return new Point2(this.px, Fp2.neg(this.py), this.pz);\n    }\n    // Renes-Costello-Batina exception-free doubling formula.\n    // There is 30% faster Jacobian formula, but it is not complete.\n    // https://eprint.iacr.org/2015/1060, algorithm 3\n    // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n    double() {\n      const { a, b } = CURVE;\n      const b3 = Fp2.mul(b, _3n2);\n      const { px: X1, py: Y1, pz: Z1 } = this;\n      let X3 = Fp2.ZERO, Y3 = Fp2.ZERO, Z3 = Fp2.ZERO;\n      let t0 = Fp2.mul(X1, X1);\n      let t1 = Fp2.mul(Y1, Y1);\n      let t2 = Fp2.mul(Z1, Z1);\n      let t3 = Fp2.mul(X1, Y1);\n      t3 = Fp2.add(t3, t3);\n      Z3 = Fp2.mul(X1, Z1);\n      Z3 = Fp2.add(Z3, Z3);\n      X3 = Fp2.mul(a, Z3);\n      Y3 = Fp2.mul(b3, t2);\n      Y3 = Fp2.add(X3, Y3);\n      X3 = Fp2.sub(t1, Y3);\n      Y3 = Fp2.add(t1, Y3);\n      Y3 = Fp2.mul(X3, Y3);\n      X3 = Fp2.mul(t3, X3);\n      Z3 = Fp2.mul(b3, Z3);\n      t2 = Fp2.mul(a, t2);\n      t3 = Fp2.sub(t0, t2);\n      t3 = Fp2.mul(a, t3);\n      t3 = Fp2.add(t3, Z3);\n      Z3 = Fp2.add(t0, t0);\n      t0 = Fp2.add(Z3, t0);\n      t0 = Fp2.add(t0, t2);\n      t0 = Fp2.mul(t0, t3);\n      Y3 = Fp2.add(Y3, t0);\n      t2 = Fp2.mul(Y1, Z1);\n      t2 = Fp2.add(t2, t2);\n      t0 = Fp2.mul(t2, t3);\n      X3 = Fp2.sub(X3, t0);\n      Z3 = Fp2.mul(t2, t1);\n      Z3 = Fp2.add(Z3, Z3);\n      Z3 = Fp2.add(Z3, Z3);\n      return new Point2(X3, Y3, Z3);\n    }\n    // Renes-Costello-Batina exception-free addition formula.\n    // There is 30% faster Jacobian formula, but it is not complete.\n    // https://eprint.iacr.org/2015/1060, algorithm 1\n    // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n    add(other) {\n      assertPrjPoint(other);\n      const { px: X1, py: Y1, pz: Z1 } = this;\n      const { px: X2, py: Y2, pz: Z2 } = other;\n      let X3 = Fp2.ZERO, Y3 = Fp2.ZERO, Z3 = Fp2.ZERO;\n      const a = CURVE.a;\n      const b3 = Fp2.mul(CURVE.b, _3n2);\n      let t0 = Fp2.mul(X1, X2);\n      let t1 = Fp2.mul(Y1, Y2);\n      let t2 = Fp2.mul(Z1, Z2);\n      let t3 = Fp2.add(X1, Y1);\n      let t4 = Fp2.add(X2, Y2);\n      t3 = Fp2.mul(t3, t4);\n      t4 = Fp2.add(t0, t1);\n      t3 = Fp2.sub(t3, t4);\n      t4 = Fp2.add(X1, Z1);\n      let t5 = Fp2.add(X2, Z2);\n      t4 = Fp2.mul(t4, t5);\n      t5 = Fp2.add(t0, t2);\n      t4 = Fp2.sub(t4, t5);\n      t5 = Fp2.add(Y1, Z1);\n      X3 = Fp2.add(Y2, Z2);\n      t5 = Fp2.mul(t5, X3);\n      X3 = Fp2.add(t1, t2);\n      t5 = Fp2.sub(t5, X3);\n      Z3 = Fp2.mul(a, t4);\n      X3 = Fp2.mul(b3, t2);\n      Z3 = Fp2.add(X3, Z3);\n      X3 = Fp2.sub(t1, Z3);\n      Z3 = Fp2.add(t1, Z3);\n      Y3 = Fp2.mul(X3, Z3);\n      t1 = Fp2.add(t0, t0);\n      t1 = Fp2.add(t1, t0);\n      t2 = Fp2.mul(a, t2);\n      t4 = Fp2.mul(b3, t4);\n      t1 = Fp2.add(t1, t2);\n      t2 = Fp2.sub(t0, t2);\n      t2 = Fp2.mul(a, t2);\n      t4 = Fp2.add(t4, t2);\n      t0 = Fp2.mul(t1, t4);\n      Y3 = Fp2.add(Y3, t0);\n      t0 = Fp2.mul(t5, t4);\n      X3 = Fp2.mul(t3, X3);\n      X3 = Fp2.sub(X3, t0);\n      t0 = Fp2.mul(t3, t1);\n      Z3 = Fp2.mul(t5, Z3);\n      Z3 = Fp2.add(Z3, t0);\n      return new Point2(X3, Y3, Z3);\n    }\n    subtract(other) {\n      return this.add(other.negate());\n    }\n    is0() {\n      return this.equals(Point2.ZERO);\n    }\n    wNAF(n) {\n      return wnaf.wNAFCached(this, n, Point2.normalizeZ);\n    }\n    /**\n     * Non-constant-time multiplication. Uses double-and-add algorithm.\n     * It's faster, but should only be used when you don't care about\n     * an exposed private key e.g. sig verification, which works over *public* keys.\n     */\n    multiplyUnsafe(sc) {\n      aInRange(\"scalar\", sc, _0n3, CURVE.n);\n      const I = Point2.ZERO;\n      if (sc === _0n3)\n        return I;\n      if (sc === _1n3)\n        return this;\n      const { endo } = CURVE;\n      if (!endo)\n        return wnaf.unsafeLadder(this, sc);\n      let { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n      let k1p = I;\n      let k2p = I;\n      let d = this;\n      while (k1 > _0n3 || k2 > _0n3) {\n        if (k1 & _1n3)\n          k1p = k1p.add(d);\n        if (k2 & _1n3)\n          k2p = k2p.add(d);\n        d = d.double();\n        k1 >>= _1n3;\n        k2 >>= _1n3;\n      }\n      if (k1neg)\n        k1p = k1p.negate();\n      if (k2neg)\n        k2p = k2p.negate();\n      k2p = new Point2(Fp2.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n      return k1p.add(k2p);\n    }\n    /**\n     * Constant time multiplication.\n     * Uses wNAF method. Windowed method may be 10% faster,\n     * but takes 2x longer to generate and consumes 2x memory.\n     * Uses precomputes when available.\n     * Uses endomorphism for Koblitz curves.\n     * @param scalar by which the point would be multiplied\n     * @returns New point\n     */\n    multiply(scalar) {\n      const { endo, n: N } = CURVE;\n      aInRange(\"scalar\", scalar, _1n3, N);\n      let point, fake;\n      if (endo) {\n        const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n        let { p: k1p, f: f1p } = this.wNAF(k1);\n        let { p: k2p, f: f2p } = this.wNAF(k2);\n        k1p = wnaf.constTimeNegate(k1neg, k1p);\n        k2p = wnaf.constTimeNegate(k2neg, k2p);\n        k2p = new Point2(Fp2.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n        point = k1p.add(k2p);\n        fake = f1p.add(f2p);\n      } else {\n        const { p, f } = this.wNAF(scalar);\n        point = p;\n        fake = f;\n      }\n      return Point2.normalizeZ([point, fake])[0];\n    }\n    /**\n     * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n     * Not using Strauss-Shamir trick: precomputation tables are faster.\n     * The trick could be useful if both P and Q are not G (not in our case).\n     * @returns non-zero affine point\n     */\n    multiplyAndAddUnsafe(Q, a, b) {\n      const G = Point2.BASE;\n      const mul = (P, a2) => a2 === _0n3 || a2 === _1n3 || !P.equals(G) ? P.multiplyUnsafe(a2) : P.multiply(a2);\n      const sum = mul(this, a).add(mul(Q, b));\n      return sum.is0() ? void 0 : sum;\n    }\n    // Converts Projective point to affine (x, y) coordinates.\n    // Can accept precomputed Z^-1 - for example, from invertBatch.\n    // (x, y, z) ∋ (x=x/z, y=y/z)\n    toAffine(iz) {\n      return toAffineMemo(this, iz);\n    }\n    isTorsionFree() {\n      const { h: cofactor, isTorsionFree } = CURVE;\n      if (cofactor === _1n3)\n        return true;\n      if (isTorsionFree)\n        return isTorsionFree(Point2, this);\n      throw new Error(\"isTorsionFree() has not been declared for the elliptic curve\");\n    }\n    clearCofactor() {\n      const { h: cofactor, clearCofactor } = CURVE;\n      if (cofactor === _1n3)\n        return this;\n      if (clearCofactor)\n        return clearCofactor(Point2, this);\n      return this.multiplyUnsafe(CURVE.h);\n    }\n    toRawBytes(isCompressed = true) {\n      abool(\"isCompressed\", isCompressed);\n      this.assertValidity();\n      return toBytes2(Point2, this, isCompressed);\n    }\n    toHex(isCompressed = true) {\n      abool(\"isCompressed\", isCompressed);\n      return bytesToHex(this.toRawBytes(isCompressed));\n    }\n  }\n  Point2.BASE = new Point2(CURVE.Gx, CURVE.Gy, Fp2.ONE);\n  Point2.ZERO = new Point2(Fp2.ZERO, Fp2.ONE, Fp2.ZERO);\n  const _bits = CURVE.nBitLength;\n  const wnaf = wNAF(Point2, CURVE.endo ? Math.ceil(_bits / 2) : _bits);\n  return {\n    CURVE,\n    ProjectivePoint: Point2,\n    normPrivateKeyToScalar,\n    weierstrassEquation,\n    isWithinCurveOrder\n  };\n}\nfunction validateOpts(curve) {\n  const opts = validateBasic(curve);\n  validateObject(opts, {\n    hash: \"hash\",\n    hmac: \"function\",\n    randomBytes: \"function\"\n  }, {\n    bits2int: \"function\",\n    bits2int_modN: \"function\",\n    lowS: \"boolean\"\n  });\n  return Object.freeze({ lowS: true, ...opts });\n}\nfunction weierstrass(curveDef) {\n  const CURVE = validateOpts(curveDef);\n  const { Fp: Fp2, n: CURVE_ORDER } = CURVE;\n  const compressedLen = Fp2.BYTES + 1;\n  const uncompressedLen = 2 * Fp2.BYTES + 1;\n  function modN2(a) {\n    return mod(a, CURVE_ORDER);\n  }\n  function invN(a) {\n    return invert(a, CURVE_ORDER);\n  }\n  const { ProjectivePoint: Point2, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder } = weierstrassPoints({\n    ...CURVE,\n    toBytes(_c, point, isCompressed) {\n      const a = point.toAffine();\n      const x = Fp2.toBytes(a.x);\n      const cat = concatBytes;\n      abool(\"isCompressed\", isCompressed);\n      if (isCompressed) {\n        return cat(Uint8Array.from([point.hasEvenY() ? 2 : 3]), x);\n      } else {\n        return cat(Uint8Array.from([4]), x, Fp2.toBytes(a.y));\n      }\n    },\n    fromBytes(bytes2) {\n      const len = bytes2.length;\n      const head = bytes2[0];\n      const tail = bytes2.subarray(1);\n      if (len === compressedLen && (head === 2 || head === 3)) {\n        const x = bytesToNumberBE(tail);\n        if (!inRange(x, _1n3, Fp2.ORDER))\n          throw new Error(\"Point is not on curve\");\n        const y2 = weierstrassEquation(x);\n        let y;\n        try {\n          y = Fp2.sqrt(y2);\n        } catch (sqrtError) {\n          const suffix = sqrtError instanceof Error ? \": \" + sqrtError.message : \"\";\n          throw new Error(\"Point is not on curve\" + suffix);\n        }\n        const isYOdd = (y & _1n3) === _1n3;\n        const isHeadOdd = (head & 1) === 1;\n        if (isHeadOdd !== isYOdd)\n          y = Fp2.neg(y);\n        return { x, y };\n      } else if (len === uncompressedLen && head === 4) {\n        const x = Fp2.fromBytes(tail.subarray(0, Fp2.BYTES));\n        const y = Fp2.fromBytes(tail.subarray(Fp2.BYTES, 2 * Fp2.BYTES));\n        return { x, y };\n      } else {\n        throw new Error(`Point of length ${len} was invalid. Expected ${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes`);\n      }\n    }\n  });\n  const numToNByteStr = (num2) => bytesToHex(numberToBytesBE(num2, CURVE.nByteLength));\n  function isBiggerThanHalfOrder(number) {\n    const HALF = CURVE_ORDER >> _1n3;\n    return number > HALF;\n  }\n  function normalizeS(s) {\n    return isBiggerThanHalfOrder(s) ? modN2(-s) : s;\n  }\n  const slcNum = (b, from, to) => bytesToNumberBE(b.slice(from, to));\n  class Signature {\n    constructor(r, s, recovery) {\n      this.r = r;\n      this.s = s;\n      this.recovery = recovery;\n      this.assertValidity();\n    }\n    // pair (bytes of r, bytes of s)\n    static fromCompact(hex) {\n      const l = CURVE.nByteLength;\n      hex = ensureBytes(\"compactSignature\", hex, l * 2);\n      return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n    }\n    // DER encoded ECDSA signature\n    // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n    static fromDER(hex) {\n      const { r, s } = DER.toSig(ensureBytes(\"DER\", hex));\n      return new Signature(r, s);\n    }\n    assertValidity() {\n      aInRange(\"r\", this.r, _1n3, CURVE_ORDER);\n      aInRange(\"s\", this.s, _1n3, CURVE_ORDER);\n    }\n    addRecoveryBit(recovery) {\n      return new Signature(this.r, this.s, recovery);\n    }\n    recoverPublicKey(msgHash) {\n      const { r, s, recovery: rec } = this;\n      const h = bits2int_modN(ensureBytes(\"msgHash\", msgHash));\n      if (rec == null || ![0, 1, 2, 3].includes(rec))\n        throw new Error(\"recovery id invalid\");\n      const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n      if (radj >= Fp2.ORDER)\n        throw new Error(\"recovery id 2 or 3 invalid\");\n      const prefix = (rec & 1) === 0 ? \"02\" : \"03\";\n      const R = Point2.fromHex(prefix + numToNByteStr(radj));\n      const ir = invN(radj);\n      const u1 = modN2(-h * ir);\n      const u2 = modN2(s * ir);\n      const Q = Point2.BASE.multiplyAndAddUnsafe(R, u1, u2);\n      if (!Q)\n        throw new Error(\"point at infinify\");\n      Q.assertValidity();\n      return Q;\n    }\n    // Signatures should be low-s, to prevent malleability.\n    hasHighS() {\n      return isBiggerThanHalfOrder(this.s);\n    }\n    normalizeS() {\n      return this.hasHighS() ? new Signature(this.r, modN2(-this.s), this.recovery) : this;\n    }\n    // DER-encoded\n    toDERRawBytes() {\n      return hexToBytes(this.toDERHex());\n    }\n    toDERHex() {\n      return DER.hexFromSig({ r: this.r, s: this.s });\n    }\n    // padded bytes of r, then padded bytes of s\n    toCompactRawBytes() {\n      return hexToBytes(this.toCompactHex());\n    }\n    toCompactHex() {\n      return numToNByteStr(this.r) + numToNByteStr(this.s);\n    }\n  }\n  const utils = {\n    isValidPrivateKey(privateKey) {\n      try {\n        normPrivateKeyToScalar(privateKey);\n        return true;\n      } catch (error) {\n        return false;\n      }\n    },\n    normPrivateKeyToScalar,\n    /**\n     * Produces cryptographically secure private key from random of size\n     * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n     */\n    randomPrivateKey: () => {\n      const length = getMinHashLength(CURVE.n);\n      return mapHashToField(CURVE.randomBytes(length), CURVE.n);\n    },\n    /**\n     * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n     * Allows to massively speed-up `point.multiply(scalar)`.\n     * @returns cached point\n     * @example\n     * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n     * fast.multiply(privKey); // much faster ECDH now\n     */\n    precompute(windowSize = 8, point = Point2.BASE) {\n      point._setWindowSize(windowSize);\n      point.multiply(BigInt(3));\n      return point;\n    }\n  };\n  function getPublicKey(privateKey, isCompressed = true) {\n    return Point2.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n  }\n  function isProbPub(item) {\n    const arr = isBytes(item);\n    const str = typeof item === \"string\";\n    const len = (arr || str) && item.length;\n    if (arr)\n      return len === compressedLen || len === uncompressedLen;\n    if (str)\n      return len === 2 * compressedLen || len === 2 * uncompressedLen;\n    if (item instanceof Point2)\n      return true;\n    return false;\n  }\n  function getSharedSecret(privateA, publicB, isCompressed = true) {\n    if (isProbPub(privateA))\n      throw new Error(\"first arg must be private key\");\n    if (!isProbPub(publicB))\n      throw new Error(\"second arg must be public key\");\n    const b = Point2.fromHex(publicB);\n    return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n  }\n  const bits2int = CURVE.bits2int || function(bytes2) {\n    const num2 = bytesToNumberBE(bytes2);\n    const delta = bytes2.length * 8 - CURVE.nBitLength;\n    return delta > 0 ? num2 >> BigInt(delta) : num2;\n  };\n  const bits2int_modN = CURVE.bits2int_modN || function(bytes2) {\n    return modN2(bits2int(bytes2));\n  };\n  const ORDER_MASK = bitMask(CURVE.nBitLength);\n  function int2octets(num2) {\n    aInRange(`num < 2^${CURVE.nBitLength}`, num2, _0n3, ORDER_MASK);\n    return numberToBytesBE(num2, CURVE.nByteLength);\n  }\n  function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n    if ([\"recovered\", \"canonical\"].some((k) => k in opts))\n      throw new Error(\"sign() legacy options not supported\");\n    const { hash: hash2, randomBytes: randomBytes2 } = CURVE;\n    let { lowS, prehash, extraEntropy: ent } = opts;\n    if (lowS == null)\n      lowS = true;\n    msgHash = ensureBytes(\"msgHash\", msgHash);\n    validateSigVerOpts(opts);\n    if (prehash)\n      msgHash = ensureBytes(\"prehashed msgHash\", hash2(msgHash));\n    const h1int = bits2int_modN(msgHash);\n    const d = normPrivateKeyToScalar(privateKey);\n    const seedArgs = [int2octets(d), int2octets(h1int)];\n    if (ent != null && ent !== false) {\n      const e = ent === true ? randomBytes2(Fp2.BYTES) : ent;\n      seedArgs.push(ensureBytes(\"extraEntropy\", e));\n    }\n    const seed = concatBytes(...seedArgs);\n    const m = h1int;\n    function k2sig(kBytes) {\n      const k = bits2int(kBytes);\n      if (!isWithinCurveOrder(k))\n        return;\n      const ik = invN(k);\n      const q = Point2.BASE.multiply(k).toAffine();\n      const r = modN2(q.x);\n      if (r === _0n3)\n        return;\n      const s = modN2(ik * modN2(m + r * d));\n      if (s === _0n3)\n        return;\n      let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n3);\n      let normS = s;\n      if (lowS && isBiggerThanHalfOrder(s)) {\n        normS = normalizeS(s);\n        recovery ^= 1;\n      }\n      return new Signature(r, normS, recovery);\n    }\n    return { seed, k2sig };\n  }\n  const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n  const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n  function sign(msgHash, privKey, opts = defaultSigOpts) {\n    const { seed, k2sig } = prepSig(msgHash, privKey, opts);\n    const C = CURVE;\n    const drbg = createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n    return drbg(seed, k2sig);\n  }\n  Point2.BASE._setWindowSize(8);\n  function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n    var _a;\n    const sg = signature;\n    msgHash = ensureBytes(\"msgHash\", msgHash);\n    publicKey = ensureBytes(\"publicKey\", publicKey);\n    if (\"strict\" in opts)\n      throw new Error(\"options.strict was renamed to lowS\");\n    validateSigVerOpts(opts);\n    const { lowS, prehash } = opts;\n    let _sig = void 0;\n    let P;\n    try {\n      if (typeof sg === \"string\" || isBytes(sg)) {\n        try {\n          _sig = Signature.fromDER(sg);\n        } catch (derError) {\n          if (!(derError instanceof DER.Err))\n            throw derError;\n          _sig = Signature.fromCompact(sg);\n        }\n      } else if (typeof sg === \"object\" && typeof sg.r === \"bigint\" && typeof sg.s === \"bigint\") {\n        const { r: r2, s: s2 } = sg;\n        _sig = new Signature(r2, s2);\n      } else {\n        throw new Error(\"PARSE\");\n      }\n      P = Point2.fromHex(publicKey);\n    } catch (error) {\n      if (error.message === \"PARSE\")\n        throw new Error(`signature must be Signature instance, Uint8Array or hex string`);\n      return false;\n    }\n    if (lowS && _sig.hasHighS())\n      return false;\n    if (prehash)\n      msgHash = CURVE.hash(msgHash);\n    const { r, s } = _sig;\n    const h = bits2int_modN(msgHash);\n    const is = invN(s);\n    const u1 = modN2(h * is);\n    const u2 = modN2(r * is);\n    const R = (_a = Point2.BASE.multiplyAndAddUnsafe(P, u1, u2)) == null ? void 0 : _a.toAffine();\n    if (!R)\n      return false;\n    const v = modN2(R.x);\n    return v === r;\n  }\n  return {\n    CURVE,\n    getPublicKey,\n    getSharedSecret,\n    sign,\n    verify,\n    ProjectivePoint: Point2,\n    Signature,\n    utils\n  };\n}\nfunction SWUFpSqrtRatio(Fp2, Z) {\n  const q = Fp2.ORDER;\n  let l = _0n3;\n  for (let o = q - _1n3; o % _2n2 === _0n3; o /= _2n2)\n    l += _1n3;\n  const c1 = l;\n  const _2n_pow_c1_1 = _2n2 << c1 - _1n3 - _1n3;\n  const _2n_pow_c1 = _2n_pow_c1_1 * _2n2;\n  const c2 = (q - _1n3) / _2n_pow_c1;\n  const c3 = (c2 - _1n3) / _2n2;\n  const c4 = _2n_pow_c1 - _1n3;\n  const c5 = _2n_pow_c1_1;\n  const c6 = Fp2.pow(Z, c2);\n  const c7 = Fp2.pow(Z, (c2 + _1n3) / _2n2);\n  let sqrtRatio = (u, v) => {\n    let tv1 = c6;\n    let tv2 = Fp2.pow(v, c4);\n    let tv3 = Fp2.sqr(tv2);\n    tv3 = Fp2.mul(tv3, v);\n    let tv5 = Fp2.mul(u, tv3);\n    tv5 = Fp2.pow(tv5, c3);\n    tv5 = Fp2.mul(tv5, tv2);\n    tv2 = Fp2.mul(tv5, v);\n    tv3 = Fp2.mul(tv5, u);\n    let tv4 = Fp2.mul(tv3, tv2);\n    tv5 = Fp2.pow(tv4, c5);\n    let isQR = Fp2.eql(tv5, Fp2.ONE);\n    tv2 = Fp2.mul(tv3, c7);\n    tv5 = Fp2.mul(tv4, tv1);\n    tv3 = Fp2.cmov(tv2, tv3, isQR);\n    tv4 = Fp2.cmov(tv5, tv4, isQR);\n    for (let i = c1; i > _1n3; i--) {\n      let tv52 = i - _2n2;\n      tv52 = _2n2 << tv52 - _1n3;\n      let tvv5 = Fp2.pow(tv4, tv52);\n      const e1 = Fp2.eql(tvv5, Fp2.ONE);\n      tv2 = Fp2.mul(tv3, tv1);\n      tv1 = Fp2.mul(tv1, tv1);\n      tvv5 = Fp2.mul(tv4, tv1);\n      tv3 = Fp2.cmov(tv2, tv3, e1);\n      tv4 = Fp2.cmov(tvv5, tv4, e1);\n    }\n    return { isValid: isQR, value: tv3 };\n  };\n  if (Fp2.ORDER % _4n2 === _3n2) {\n    const c12 = (Fp2.ORDER - _3n2) / _4n2;\n    const c22 = Fp2.sqrt(Fp2.neg(Z));\n    sqrtRatio = (u, v) => {\n      let tv1 = Fp2.sqr(v);\n      const tv2 = Fp2.mul(u, v);\n      tv1 = Fp2.mul(tv1, tv2);\n      let y1 = Fp2.pow(tv1, c12);\n      y1 = Fp2.mul(y1, tv2);\n      const y2 = Fp2.mul(y1, c22);\n      const tv3 = Fp2.mul(Fp2.sqr(y1), v);\n      const isQR = Fp2.eql(tv3, u);\n      let y = Fp2.cmov(y2, y1, isQR);\n      return { isValid: isQR, value: y };\n    };\n  }\n  return sqrtRatio;\n}\nfunction mapToCurveSimpleSWU(Fp2, opts) {\n  validateField(Fp2);\n  if (!Fp2.isValid(opts.A) || !Fp2.isValid(opts.B) || !Fp2.isValid(opts.Z))\n    throw new Error(\"mapToCurveSimpleSWU: invalid opts\");\n  const sqrtRatio = SWUFpSqrtRatio(Fp2, opts.Z);\n  if (!Fp2.isOdd)\n    throw new Error(\"Fp.isOdd is not implemented!\");\n  return (u) => {\n    let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n    tv1 = Fp2.sqr(u);\n    tv1 = Fp2.mul(tv1, opts.Z);\n    tv2 = Fp2.sqr(tv1);\n    tv2 = Fp2.add(tv2, tv1);\n    tv3 = Fp2.add(tv2, Fp2.ONE);\n    tv3 = Fp2.mul(tv3, opts.B);\n    tv4 = Fp2.cmov(opts.Z, Fp2.neg(tv2), !Fp2.eql(tv2, Fp2.ZERO));\n    tv4 = Fp2.mul(tv4, opts.A);\n    tv2 = Fp2.sqr(tv3);\n    tv6 = Fp2.sqr(tv4);\n    tv5 = Fp2.mul(tv6, opts.A);\n    tv2 = Fp2.add(tv2, tv5);\n    tv2 = Fp2.mul(tv2, tv3);\n    tv6 = Fp2.mul(tv6, tv4);\n    tv5 = Fp2.mul(tv6, opts.B);\n    tv2 = Fp2.add(tv2, tv5);\n    x = Fp2.mul(tv1, tv3);\n    const { isValid, value } = sqrtRatio(tv2, tv6);\n    y = Fp2.mul(tv1, u);\n    y = Fp2.mul(y, value);\n    x = Fp2.cmov(x, tv3, isValid);\n    y = Fp2.cmov(y, value, isValid);\n    const e1 = Fp2.isOdd(u) === Fp2.isOdd(y);\n    y = Fp2.cmov(Fp2.neg(y), y, e1);\n    x = Fp2.div(x, tv4);\n    return { x, y };\n  };\n}\n\n// node_modules/@noble/curves/esm/_shortw_utils.js\nfunction getHash(hash2) {\n  return {\n    hash: hash2,\n    hmac: (key, ...msgs) => hmac(hash2, key, concatBytes2(...msgs)),\n    randomBytes\n  };\n}\nfunction createCurve(curveDef, defHash) {\n  const create = (hash2) => weierstrass({ ...curveDef, ...getHash(hash2) });\n  return Object.freeze({ ...create(defHash), create });\n}\n\n// node_modules/@noble/curves/esm/abstract/hash-to-curve.js\nvar os2ip = bytesToNumberBE;\nfunction i2osp(value, length) {\n  anum(value);\n  anum(length);\n  if (value < 0 || value >= 1 << 8 * length) {\n    throw new Error(`bad I2OSP call: value=${value} length=${length}`);\n  }\n  const res = Array.from({ length }).fill(0);\n  for (let i = length - 1; i >= 0; i--) {\n    res[i] = value & 255;\n    value >>>= 8;\n  }\n  return new Uint8Array(res);\n}\nfunction strxor(a, b) {\n  const arr = new Uint8Array(a.length);\n  for (let i = 0; i < a.length; i++) {\n    arr[i] = a[i] ^ b[i];\n  }\n  return arr;\n}\nfunction anum(item) {\n  if (!Number.isSafeInteger(item))\n    throw new Error(\"number expected\");\n}\nfunction expand_message_xmd(msg, DST, lenInBytes, H) {\n  abytes(msg);\n  abytes(DST);\n  anum(lenInBytes);\n  if (DST.length > 255)\n    DST = H(concatBytes(utf8ToBytes(\"H2C-OVERSIZE-DST-\"), DST));\n  const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n  const ell = Math.ceil(lenInBytes / b_in_bytes);\n  if (lenInBytes > 65535 || ell > 255)\n    throw new Error(\"expand_message_xmd: invalid lenInBytes\");\n  const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n  const Z_pad = i2osp(0, r_in_bytes);\n  const l_i_b_str = i2osp(lenInBytes, 2);\n  const b = new Array(ell);\n  const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n  b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n  for (let i = 1; i <= ell; i++) {\n    const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n    b[i] = H(concatBytes(...args));\n  }\n  const pseudo_random_bytes = concatBytes(...b);\n  return pseudo_random_bytes.slice(0, lenInBytes);\n}\nfunction expand_message_xof(msg, DST, lenInBytes, k, H) {\n  abytes(msg);\n  abytes(DST);\n  anum(lenInBytes);\n  if (DST.length > 255) {\n    const dkLen = Math.ceil(2 * k / 8);\n    DST = H.create({ dkLen }).update(utf8ToBytes(\"H2C-OVERSIZE-DST-\")).update(DST).digest();\n  }\n  if (lenInBytes > 65535 || DST.length > 255)\n    throw new Error(\"expand_message_xof: invalid lenInBytes\");\n  return H.create({ dkLen: lenInBytes }).update(msg).update(i2osp(lenInBytes, 2)).update(DST).update(i2osp(DST.length, 1)).digest();\n}\nfunction hash_to_field(msg, count, options) {\n  validateObject(options, {\n    DST: \"stringOrUint8Array\",\n    p: \"bigint\",\n    m: \"isSafeInteger\",\n    k: \"isSafeInteger\",\n    hash: \"hash\"\n  });\n  const { p, k, m, hash: hash2, expand, DST: _DST } = options;\n  abytes(msg);\n  anum(count);\n  const DST = typeof _DST === \"string\" ? utf8ToBytes(_DST) : _DST;\n  const log2p = p.toString(2).length;\n  const L = Math.ceil((log2p + k) / 8);\n  const len_in_bytes = count * m * L;\n  let prb;\n  if (expand === \"xmd\") {\n    prb = expand_message_xmd(msg, DST, len_in_bytes, hash2);\n  } else if (expand === \"xof\") {\n    prb = expand_message_xof(msg, DST, len_in_bytes, k, hash2);\n  } else if (expand === \"_internal_pass\") {\n    prb = msg;\n  } else {\n    throw new Error('expand must be \"xmd\" or \"xof\"');\n  }\n  const u = new Array(count);\n  for (let i = 0; i < count; i++) {\n    const e = new Array(m);\n    for (let j = 0; j < m; j++) {\n      const elm_offset = L * (j + i * m);\n      const tv = prb.subarray(elm_offset, elm_offset + L);\n      e[j] = mod(os2ip(tv), p);\n    }\n    u[i] = e;\n  }\n  return u;\n}\nfunction isogenyMap(field, map) {\n  const COEFF = map.map((i) => Array.from(i).reverse());\n  return (x, y) => {\n    const [xNum, xDen, yNum, yDen] = COEFF.map((val) => val.reduce((acc, i) => field.add(field.mul(acc, x), i)));\n    x = field.div(xNum, xDen);\n    y = field.mul(y, field.div(yNum, yDen));\n    return { x, y };\n  };\n}\nfunction createHasher(Point2, mapToCurve, def) {\n  if (typeof mapToCurve !== \"function\")\n    throw new Error(\"mapToCurve() must be defined\");\n  return {\n    // Encodes byte string to elliptic curve.\n    // hash_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n    hashToCurve(msg, options) {\n      const u = hash_to_field(msg, 2, { ...def, DST: def.DST, ...options });\n      const u0 = Point2.fromAffine(mapToCurve(u[0]));\n      const u1 = Point2.fromAffine(mapToCurve(u[1]));\n      const P = u0.add(u1).clearCofactor();\n      P.assertValidity();\n      return P;\n    },\n    // Encodes byte string to elliptic curve.\n    // encode_to_curve from https://www.rfc-editor.org/rfc/rfc9380#section-3\n    encodeToCurve(msg, options) {\n      const u = hash_to_field(msg, 1, { ...def, DST: def.encodeDST, ...options });\n      const P = Point2.fromAffine(mapToCurve(u[0])).clearCofactor();\n      P.assertValidity();\n      return P;\n    },\n    // Same as encodeToCurve, but without hash\n    mapToCurve(scalars) {\n      if (!Array.isArray(scalars))\n        throw new Error(\"mapToCurve: expected array of bigints\");\n      for (const i of scalars)\n        if (typeof i !== \"bigint\")\n          throw new Error(`mapToCurve: expected array of bigints, got ${i} in array`);\n      const P = Point2.fromAffine(mapToCurve(scalars)).clearCofactor();\n      P.assertValidity();\n      return P;\n    }\n  };\n}\n\n// node_modules/@noble/curves/esm/secp256k1.js\nvar secp256k1P = BigInt(\"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f\");\nvar secp256k1N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\nvar _1n4 = BigInt(1);\nvar _2n3 = BigInt(2);\nvar divNearest = (a, b) => (a + b / _2n3) / b;\nfunction sqrtMod(y) {\n  const P = secp256k1P;\n  const _3n3 = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n  const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n  const b2 = y * y * y % P;\n  const b3 = b2 * b2 * y % P;\n  const b6 = pow2(b3, _3n3, P) * b3 % P;\n  const b9 = pow2(b6, _3n3, P) * b3 % P;\n  const b11 = pow2(b9, _2n3, P) * b2 % P;\n  const b22 = pow2(b11, _11n, P) * b11 % P;\n  const b44 = pow2(b22, _22n, P) * b22 % P;\n  const b88 = pow2(b44, _44n, P) * b44 % P;\n  const b176 = pow2(b88, _88n, P) * b88 % P;\n  const b220 = pow2(b176, _44n, P) * b44 % P;\n  const b223 = pow2(b220, _3n3, P) * b3 % P;\n  const t1 = pow2(b223, _23n, P) * b22 % P;\n  const t2 = pow2(t1, _6n, P) * b2 % P;\n  const root = pow2(t2, _2n3, P);\n  if (!Fp.eql(Fp.sqr(root), y))\n    throw new Error(\"Cannot find square root\");\n  return root;\n}\nvar Fp = Field(secp256k1P, void 0, void 0, { sqrt: sqrtMod });\nvar secp256k1 = createCurve({\n  a: BigInt(0),\n  // equation params: a, b\n  b: BigInt(7),\n  // Seem to be rigid: bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975\n  Fp,\n  // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n\n  n: secp256k1N,\n  // Curve order, total count of valid points in the field\n  // Base point (x, y) aka generator point\n  Gx: BigInt(\"55066263022277343669578718895168534326250603453777594175500187360389116729240\"),\n  Gy: BigInt(\"32670510020758816978083085130507043184471273380659243275938904335757337482424\"),\n  h: BigInt(1),\n  // Cofactor\n  lowS: true,\n  // Allow only low-S signatures by default in sign() and verify()\n  /**\n   * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n   * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n   * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n   * Explanation: https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066\n   */\n  endo: {\n    beta: BigInt(\"0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\"),\n    splitScalar: (k) => {\n      const n = secp256k1N;\n      const a1 = BigInt(\"0x3086d221a7d46bcde86c90e49284eb15\");\n      const b1 = -_1n4 * BigInt(\"0xe4437ed6010e88286f547fa90abfe4c3\");\n      const a2 = BigInt(\"0x114ca50f7a8e2f3f657c1108d9d44cfd8\");\n      const b2 = a1;\n      const POW_2_128 = BigInt(\"0x100000000000000000000000000000000\");\n      const c1 = divNearest(b2 * k, n);\n      const c2 = divNearest(-b1 * k, n);\n      let k1 = mod(k - c1 * a1 - c2 * a2, n);\n      let k2 = mod(-c1 * b1 - c2 * b2, n);\n      const k1neg = k1 > POW_2_128;\n      const k2neg = k2 > POW_2_128;\n      if (k1neg)\n        k1 = n - k1;\n      if (k2neg)\n        k2 = n - k2;\n      if (k1 > POW_2_128 || k2 > POW_2_128) {\n        throw new Error(\"splitScalar: Endomorphism failed, k=\" + k);\n      }\n      return { k1neg, k1, k2neg, k2 };\n    }\n  }\n}, sha256);\nvar _0n4 = BigInt(0);\nvar TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n  let tagP = TAGGED_HASH_PREFIXES[tag];\n  if (tagP === void 0) {\n    const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n    tagP = concatBytes(tagH, tagH);\n    TAGGED_HASH_PREFIXES[tag] = tagP;\n  }\n  return sha256(concatBytes(tagP, ...messages));\n}\nvar pointToBytes = (point) => point.toRawBytes(true).slice(1);\nvar numTo32b = (n) => numberToBytesBE(n, 32);\nvar modP = (x) => mod(x, secp256k1P);\nvar modN = (x) => mod(x, secp256k1N);\nvar Point = secp256k1.ProjectivePoint;\nvar GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);\nfunction schnorrGetExtPubKey(priv) {\n  let d_ = secp256k1.utils.normPrivateKeyToScalar(priv);\n  let p = Point.fromPrivateKey(d_);\n  const scalar = p.hasEvenY() ? d_ : modN(-d_);\n  return { scalar, bytes: pointToBytes(p) };\n}\nfunction lift_x(x) {\n  aInRange(\"x\", x, _1n4, secp256k1P);\n  const xx = modP(x * x);\n  const c = modP(xx * x + BigInt(7));\n  let y = sqrtMod(c);\n  if (y % _2n3 !== _0n4)\n    y = modP(-y);\n  const p = new Point(x, y, _1n4);\n  p.assertValidity();\n  return p;\n}\nvar num = bytesToNumberBE;\nfunction challenge(...args) {\n  return modN(num(taggedHash(\"BIP0340/challenge\", ...args)));\n}\nfunction schnorrGetPublicKey(privateKey) {\n  return schnorrGetExtPubKey(privateKey).bytes;\n}\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n  const m = ensureBytes(\"message\", message);\n  const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey);\n  const a = ensureBytes(\"auxRand\", auxRand, 32);\n  const t = numTo32b(d ^ num(taggedHash(\"BIP0340/aux\", a)));\n  const rand = taggedHash(\"BIP0340/nonce\", t, px, m);\n  const k_ = modN(num(rand));\n  if (k_ === _0n4)\n    throw new Error(\"sign failed: k is zero\");\n  const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_);\n  const e = challenge(rx, px, m);\n  const sig = new Uint8Array(64);\n  sig.set(rx, 0);\n  sig.set(numTo32b(modN(k + e * d)), 32);\n  if (!schnorrVerify(sig, m, px))\n    throw new Error(\"sign: Invalid signature produced\");\n  return sig;\n}\nfunction schnorrVerify(signature, message, publicKey) {\n  const sig = ensureBytes(\"signature\", signature, 64);\n  const m = ensureBytes(\"message\", message);\n  const pub = ensureBytes(\"publicKey\", publicKey, 32);\n  try {\n    const P = lift_x(num(pub));\n    const r = num(sig.subarray(0, 32));\n    if (!inRange(r, _1n4, secp256k1P))\n      return false;\n    const s = num(sig.subarray(32, 64));\n    if (!inRange(s, _1n4, secp256k1N))\n      return false;\n    const e = challenge(numTo32b(r), pointToBytes(P), m);\n    const R = GmulAdd(P, s, modN(-e));\n    if (!R || !R.hasEvenY() || R.toAffine().x !== r)\n      return false;\n    return true;\n  } catch (error) {\n    return false;\n  }\n}\nvar schnorr = (() => ({\n  getPublicKey: schnorrGetPublicKey,\n  sign: schnorrSign,\n  verify: schnorrVerify,\n  utils: {\n    randomPrivateKey: secp256k1.utils.randomPrivateKey,\n    lift_x,\n    pointToBytes,\n    numberToBytesBE,\n    bytesToNumberBE,\n    taggedHash,\n    mod\n  }\n}))();\nvar isoMap = (() => isogenyMap(Fp, [\n  // xNum\n  [\n    \"0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7\",\n    \"0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581\",\n    \"0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262\",\n    \"0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c\"\n  ],\n  // xDen\n  [\n    \"0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b\",\n    \"0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14\",\n    \"0x0000000000000000000000000000000000000000000000000000000000000001\"\n    // LAST 1\n  ],\n  // yNum\n  [\n    \"0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c\",\n    \"0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3\",\n    \"0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931\",\n    \"0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84\"\n  ],\n  // yDen\n  [\n    \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b\",\n    \"0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573\",\n    \"0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f\",\n    \"0x0000000000000000000000000000000000000000000000000000000000000001\"\n    // LAST 1\n  ]\n].map((i) => i.map((j) => BigInt(j)))))();\nvar mapSWU = (() => mapToCurveSimpleSWU(Fp, {\n  A: BigInt(\"0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533\"),\n  B: BigInt(\"1771\"),\n  Z: Fp.create(BigInt(\"-11\"))\n}))();\nvar htf = (() => createHasher(secp256k1.ProjectivePoint, (scalars) => {\n  const { x, y } = mapSWU(Fp.create(scalars[0]));\n  return isoMap(x, y);\n}, {\n  DST: \"secp256k1_XMD:SHA-256_SSWU_RO_\",\n  encodeDST: \"secp256k1_XMD:SHA-256_SSWU_NU_\",\n  p: Fp.ORDER,\n  m: 1,\n  k: 128,\n  expand: \"xmd\",\n  hash: sha256\n}))();\nvar hashToCurve = (() => htf.hashToCurve)();\nvar encodeToCurve = (() => htf.encodeToCurve)();\n\nexport {\n  secp256k1,\n  schnorr,\n  hashToCurve,\n  encodeToCurve\n};\n/*! Bundled license information:\n\n@noble/curves/esm/abstract/modular.js:\n  (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n\n@noble/curves/esm/abstract/curve.js:\n  (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n\n@noble/curves/esm/abstract/weierstrass.js:\n  (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n\n@noble/curves/esm/_shortw_utils.js:\n  (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n\n@noble/curves/esm/secp256k1.js:\n  (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n*/\n//# sourceMappingURL=chunk-7EY5MWB2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-7QDK5KLB.js",
    "content": "// node_modules/thirdweb/dist/esm/transaction/actions/encode.js\nvar encodeWeakMap = /* @__PURE__ */ new WeakMap();\nasync function encode(transaction) {\n  if (encodeWeakMap.has(transaction)) {\n    return encodeWeakMap.get(transaction);\n  }\n  const promise = (async () => {\n    const [data, extraData, { concatHex }] = await Promise.all([\n      getDataFromTx(transaction),\n      getExtraCallDataFromTx(transaction),\n      import(\"./concat-hex-2F4R6DIF.js\")\n    ]);\n    if (extraData) {\n      return concatHex([data, extraData]);\n    }\n    return data;\n  })();\n  encodeWeakMap.set(transaction, promise);\n  return promise;\n}\nasync function getDataFromTx(transaction) {\n  if (transaction.data === void 0) {\n    return \"0x\";\n  }\n  if (typeof transaction.data === \"function\") {\n    const data = await transaction.data();\n    if (!data) {\n      return \"0x\";\n    }\n    return data;\n  }\n  return transaction.data;\n}\nasync function getExtraCallDataFromTx(transaction) {\n  if (!transaction.extraCallData) {\n    return void 0;\n  }\n  if (typeof transaction.extraCallData === \"function\") {\n    const extraData = await transaction.extraCallData();\n    if (!extraData)\n      return void 0;\n    if (!extraData.startsWith(\"0x\")) {\n      throw Error(\"Invalid extra calldata - must be a hex string\");\n    }\n    if (extraData === \"0x\") {\n      return void 0;\n    }\n    return extraData;\n  }\n  if (!transaction.extraCallData.startsWith(\"0x\")) {\n    throw Error(\"Invalid extra calldata - must be a hex string\");\n  }\n  return transaction.extraCallData;\n}\n\nexport {\n  encode,\n  getDataFromTx,\n  getExtraCallDataFromTx\n};\n//# sourceMappingURL=chunk-7QDK5KLB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-7VZHRFCE.js",
    "content": "// node_modules/thirdweb/dist/esm/contract/contract.js\nfunction getContract(options) {\n  return options;\n}\n\nexport {\n  getContract\n};\n//# sourceMappingURL=chunk-7VZHRFCE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-7ZCK2FX5.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/any-evm/zksync/isZkSyncChain.js\nasync function isZkSyncChain(chain) {\n  if (chain.id === 1337 || chain.id === 31337) {\n    return false;\n  }\n  if (chain.id === 324 || chain.id === 300 || chain.id === 302 || chain.id === 11124 || chain.id === 282 || chain.id === 388 || chain.id === 4654 || chain.id === 333271 || chain.id === 37111 || chain.id === 978658 || chain.id === 531050104 || chain.id === 4457845 || chain.id === 2741) {\n    return true;\n  }\n  try {\n    const { getChainMetadata } = await import(\"./utils-RIDKW7H5.js\");\n    const chainMetadata = await getChainMetadata(chain);\n    return chainMetadata.stackType === \"zksync_stack\";\n  } catch {\n    return false;\n  }\n}\n\nexport {\n  isZkSyncChain\n};\n//# sourceMappingURL=chunk-7ZCK2FX5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-7ZNEOXS2.js",
    "content": "import {\n  LoadingScreen,\n  TextDivider,\n  WalletTypeRowButton,\n  compactModalMaxHeight,\n  openOauthSignInWindow,\n  useScreenContext\n} from \"./chunk-KWA5PGSC.js\";\nimport {\n  ConnectingScreen\n} from \"./chunk-MGEBXLXC.js\";\nimport {\n  linkProfile,\n  preAuthenticate\n} from \"./chunk-65EUCVOP.js\";\nimport {\n  AllWalletsUI_default,\n  createWallet,\n  isAndroid,\n  isIOS,\n  isMobile,\n  openWindow,\n  sortWallets\n} from \"./chunk-HO57TQQM.js\";\nimport {\n  Spinner,\n  WalletButtonEl,\n  WalletEntryButton,\n  useSetSelectionData\n} from \"./chunk-AARWH2GQ.js\";\nimport {\n  Button,\n  ButtonLink,\n  CheckIcon,\n  ChevronLeftIcon,\n  Container,\n  CopyIcon,\n  ExclamationTriangleIcon,\n  ExternalLinkIcon,\n  FingerPrintIcon,\n  IconButton,\n  Img,\n  Line,\n  Link,\n  ModalHeader,\n  ModalTitle,\n  OutlineWalletIcon,\n  ScreenBottomContainer,\n  Spacer,\n  StyledButton,\n  StyledDiv,\n  StyledUl,\n  Text,\n  WalletImage,\n  fadeInAnimation,\n  fontSize,\n  iconSize,\n  keyframes,\n  noScrollBar,\n  radius,\n  setLastAuthProvider,\n  spacing,\n  useConnectionManager,\n  useConnectionManagerCtx,\n  useCustomTheme,\n  useQuery,\n  useWalletInfo\n} from \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  formatWalletConnectUrl\n} from \"./chunk-5U5XBS6S.js\";\nimport {\n  isEcosystemWallet\n} from \"./chunk-XC5J5ANL.js\";\nimport {\n  getInstalledWalletProviders\n} from \"./chunk-PWFRCBEK.js\";\nimport {\n  COINBASE,\n  METAMASK,\n  RAINBOW,\n  ZERION\n} from \"./chunk-BZXRHH4X.js\";\nimport {\n  hasStoredPasskey\n} from \"./chunk-XTOEMUZK.js\";\nimport {\n  loginWithOauthRedirect\n} from \"./chunk-J7FYPWA5.js\";\nimport {\n  webLocalStorage\n} from \"./chunk-VIBS7Y3M.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  defineChain\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/GuestLogin.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nvar import_react = __toESM(require_react(), 1);\nfunction GuestLogin(props) {\n  var _a;\n  const ewLocale = props.locale;\n  const locale = ewLocale.socialLoginScreen;\n  const [authError, setAuthError] = (0, import_react.useState)(void 0);\n  const { done, wallet } = props;\n  const [status, setStatus] = (0, import_react.useState)(\"connecting\");\n  const handleGuestLogin = async () => {\n    var _a2, _b;\n    const connectOptions = {\n      client: props.client,\n      ecosystem: isEcosystemWallet(wallet) ? {\n        id: wallet.id,\n        partnerId: (_a2 = wallet.getConfig()) == null ? void 0 : _a2.partnerId\n      } : void 0,\n      strategy: \"guest\"\n    };\n    try {\n      await wallet.connect(connectOptions);\n      await setLastAuthProvider(\"guest\", webLocalStorage);\n      setStatus(\"connected\");\n      done();\n    } catch (e) {\n      setStatus(\"error\");\n      if (e instanceof Error && ((_b = e == null ? void 0 : e.message) == null ? void 0 : _b.includes(\"PAYMENT_METHOD_REQUIRED\"))) {\n        setAuthError(ewLocale.maxAccountsExceeded);\n      }\n      console.error(\"Error generating guest account\", e);\n    }\n  };\n  const guestLogin = (_a = props.state) == null ? void 0 : _a.guestLogin;\n  const socialLoginStarted = (0, import_react.useRef)(false);\n  (0, import_react.useEffect)(() => {\n    if (socialLoginStarted.current) {\n      return;\n    }\n    if (guestLogin) {\n      socialLoginStarted.current = true;\n      setStatus(\"connecting\");\n      guestLogin.connectionPromise.then(() => {\n        done();\n        setStatus(\"connected\");\n      }).catch((e) => {\n        setAuthError(e.message);\n        setStatus(\"error\");\n      });\n    }\n  }, [done, guestLogin]);\n  return (0, import_jsx_runtime.jsx)(Container, { animate: \"fadein\", flex: \"column\", fullHeight: true, children: (0, import_jsx_runtime.jsxs)(Container, { flex: \"column\", expand: true, p: \"lg\", style: {\n    paddingBottom: 0\n  }, children: [props.goBack && (0, import_jsx_runtime.jsx)(ModalHeader, { title: locale.title, onBack: props.goBack }), props.size === \"compact\" ? (0, import_jsx_runtime.jsx)(Spacer, { y: \"xl\" }) : null, (0, import_jsx_runtime.jsxs)(Container, { flex: \"column\", center: \"both\", expand: true, style: {\n    textAlign: \"center\",\n    minHeight: \"250px\"\n  }, children: [status !== \"error\" && (0, import_jsx_runtime.jsxs)(Container, { animate: \"fadein\", children: [(0, import_jsx_runtime.jsx)(Text, { color: \"primaryText\", center: true, multiline: true, style: {\n    maxWidth: \"250px\"\n  }, children: \"Generating your guest account\" }), (0, import_jsx_runtime.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime.jsx)(Container, { center: \"x\", flex: \"row\", children: (0, import_jsx_runtime.jsx)(Spinner, { size: \"lg\", color: \"accentText\" }) }), (0, import_jsx_runtime.jsx)(Spacer, { y: \"xxl\" })] }), status === \"error\" && (0, import_jsx_runtime.jsxs)(Container, { animate: \"fadein\", children: [authError ? (0, import_jsx_runtime.jsx)(Text, { center: true, color: \"danger\", children: authError }) : (0, import_jsx_runtime.jsx)(Text, { color: \"danger\", children: locale.failed }), (0, import_jsx_runtime.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime.jsx)(Button, { variant: \"primary\", onClick: handleGuestLogin, children: locale.retry }), (0, import_jsx_runtime.jsx)(Spacer, { y: \"xxl\" })] })] })] }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/OTPLoginUI.js\nvar import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);\nvar import_react3 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/FadeIn.js\nvar FadeIn = StyledDiv({\n  animation: `${fadeInAnimation} 0.15s ease-in`\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/OTPInput.js\nvar import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/input-otp/dist/index.mjs\nvar n = __toESM(require_react(), 1);\nvar U = __toESM(require_react(), 1);\nvar S = __toESM(require_react(), 1);\nvar Bt = Object.defineProperty;\nvar At = Object.defineProperties;\nvar kt = Object.getOwnPropertyDescriptors;\nvar Y = Object.getOwnPropertySymbols;\nvar gt = Object.prototype.hasOwnProperty;\nvar Et = Object.prototype.propertyIsEnumerable;\nvar vt = (r, s, e) => s in r ? Bt(r, s, { enumerable: true, configurable: true, writable: true, value: e }) : r[s] = e;\nvar St = (r, s) => {\n  for (var e in s || (s = {}))\n    gt.call(s, e) && vt(r, e, s[e]);\n  if (Y)\n    for (var e of Y(s))\n      Et.call(s, e) && vt(r, e, s[e]);\n  return r;\n};\nvar bt = (r, s) => At(r, kt(s));\nvar Pt = (r, s) => {\n  var e = {};\n  for (var u in r)\n    gt.call(r, u) && s.indexOf(u) < 0 && (e[u] = r[u]);\n  if (r != null && Y)\n    for (var u of Y(r))\n      s.indexOf(u) < 0 && Et.call(r, u) && (e[u] = r[u]);\n  return e;\n};\nfunction ht(r) {\n  let s = setTimeout(r, 0), e = setTimeout(r, 10), u = setTimeout(r, 50);\n  return [s, e, u];\n}\nfunction _t(r) {\n  let s = U.useRef();\n  return U.useEffect(() => {\n    s.current = r;\n  }), s.current;\n}\nvar Ot = 18;\nvar wt = 40;\nvar Gt = `${wt}px`;\nvar xt = [\"[data-lastpass-icon-root]\", \"com-1password-button\", \"[data-dashlanecreated]\", '[style$=\"2147483647 !important;\"]'].join(\",\");\nfunction Tt({ containerRef: r, inputRef: s, pushPasswordManagerStrategy: e, isFocused: u }) {\n  let [P, D] = S.useState(false), [G, H] = S.useState(false), [F, W] = S.useState(false), Z = S.useMemo(() => e === \"none\" ? false : (e === \"increase-width\" || e === \"experimental-no-flickering\") && P && G, [P, G, e]), T = S.useCallback(() => {\n    let f = r.current, h = s.current;\n    if (!f || !h || F || e === \"none\")\n      return;\n    let a = f, B = a.getBoundingClientRect().left + a.offsetWidth, A = a.getBoundingClientRect().top + a.offsetHeight / 2, z = B - Ot, q = A;\n    document.querySelectorAll(xt).length === 0 && document.elementFromPoint(z, q) === f || (D(true), W(true));\n  }, [r, s, F, e]);\n  return S.useEffect(() => {\n    let f = r.current;\n    if (!f || e === \"none\")\n      return;\n    function h() {\n      let A = window.innerWidth - f.getBoundingClientRect().right;\n      H(A >= wt);\n    }\n    h();\n    let a = setInterval(h, 1e3);\n    return () => {\n      clearInterval(a);\n    };\n  }, [r, e]), S.useEffect(() => {\n    let f = u || document.activeElement === s.current;\n    if (e === \"none\" || !f)\n      return;\n    let h = setTimeout(T, 0), a = setTimeout(T, 2e3), B = setTimeout(T, 5e3), A = setTimeout(() => {\n      W(true);\n    }, 6e3);\n    return () => {\n      clearTimeout(h), clearTimeout(a), clearTimeout(B), clearTimeout(A);\n    };\n  }, [s, u, e, T]), { hasPWMBadge: P, willPushPWMBadge: Z, PWM_BADGE_SPACE_WIDTH: Gt };\n}\nvar jt = n.createContext({});\nvar Lt = n.forwardRef((A, B) => {\n  var z = A, { value: r, onChange: s, maxLength: e, textAlign: u = \"left\", pattern: P, placeholder: D, inputMode: G = \"numeric\", onComplete: H, pushPasswordManagerStrategy: F = \"increase-width\", pasteTransformer: W, containerClassName: Z, noScriptCSSFallback: T = Nt, render: f, children: h } = z, a = Pt(z, [\"value\", \"onChange\", \"maxLength\", \"textAlign\", \"pattern\", \"placeholder\", \"inputMode\", \"onComplete\", \"pushPasswordManagerStrategy\", \"pasteTransformer\", \"containerClassName\", \"noScriptCSSFallback\", \"render\", \"children\"]);\n  var X, lt, ut, dt, ft;\n  let [q, nt] = n.useState(typeof a.defaultValue == \"string\" ? a.defaultValue : \"\"), i = r != null ? r : q, I = _t(i), x = n.useCallback((t) => {\n    s == null || s(t), nt(t);\n  }, [s]), m = n.useMemo(() => P ? typeof P == \"string\" ? new RegExp(P) : P : null, [P]), l = n.useRef(null), K = n.useRef(null), J = n.useRef({ value: i, onChange: x, isIOS: typeof window != \"undefined\" && ((lt = (X = window == null ? void 0 : window.CSS) == null ? void 0 : X.supports) == null ? void 0 : lt.call(X, \"-webkit-touch-callout\", \"none\")) }), V = n.useRef({ prev: [(ut = l.current) == null ? void 0 : ut.selectionStart, (dt = l.current) == null ? void 0 : dt.selectionEnd, (ft = l.current) == null ? void 0 : ft.selectionDirection] });\n  n.useImperativeHandle(B, () => l.current, []), n.useEffect(() => {\n    let t = l.current, o = K.current;\n    if (!t || !o)\n      return;\n    J.current.value !== t.value && J.current.onChange(t.value), V.current.prev = [t.selectionStart, t.selectionEnd, t.selectionDirection];\n    function d() {\n      if (document.activeElement !== t) {\n        L(null), N(null);\n        return;\n      }\n      let c = t.selectionStart, b = t.selectionEnd, mt = t.selectionDirection, v = t.maxLength, C = t.value, _ = V.current.prev, g = -1, E = -1, w;\n      if (C.length !== 0 && c !== null && b !== null) {\n        let Dt = c === b, Ht = c === C.length && C.length < v;\n        if (Dt && !Ht) {\n          let y = c;\n          if (y === 0)\n            g = 0, E = 1, w = \"forward\";\n          else if (y === v)\n            g = y - 1, E = y, w = \"backward\";\n          else if (v > 1 && C.length > 1) {\n            let et = 0;\n            if (_[0] !== null && _[1] !== null) {\n              w = y < _[1] ? \"backward\" : \"forward\";\n              let Wt = _[0] === _[1] && _[0] < v;\n              w === \"backward\" && !Wt && (et = -1);\n            }\n            g = et + y, E = et + y + 1;\n          }\n        }\n        g !== -1 && E !== -1 && g !== E && l.current.setSelectionRange(g, E, w);\n      }\n      let pt = g !== -1 ? g : c, Rt = E !== -1 ? E : b, yt = w != null ? w : mt;\n      L(pt), N(Rt), V.current.prev = [pt, Rt, yt];\n    }\n    if (document.addEventListener(\"selectionchange\", d, { capture: true }), d(), document.activeElement === t && Q(true), !document.getElementById(\"input-otp-style\")) {\n      let c = document.createElement(\"style\");\n      if (c.id = \"input-otp-style\", document.head.appendChild(c), c.sheet) {\n        let b = \"background: transparent !important; color: transparent !important; border-color: transparent !important; opacity: 0 !important; box-shadow: none !important; -webkit-box-shadow: none !important; -webkit-text-fill-color: transparent !important;\";\n        $(c.sheet, \"[data-input-otp]::selection { background: transparent !important; color: transparent !important; }\"), $(c.sheet, `[data-input-otp]:autofill { ${b} }`), $(c.sheet, `[data-input-otp]:-webkit-autofill { ${b} }`), $(c.sheet, \"@supports (-webkit-touch-callout: none) { [data-input-otp] { letter-spacing: -.6em !important; font-weight: 100 !important; font-stretch: ultra-condensed; font-optical-sizing: none !important; left: -1px !important; right: 1px !important; } }\"), $(c.sheet, \"[data-input-otp] + * { pointer-events: all !important; }\");\n      }\n    }\n    let p = () => {\n      o && o.style.setProperty(\"--root-height\", `${t.clientHeight}px`);\n    };\n    p();\n    let R = new ResizeObserver(p);\n    return R.observe(t), () => {\n      document.removeEventListener(\"selectionchange\", d, { capture: true }), R.disconnect();\n    };\n  }, []);\n  let [ot, rt] = n.useState(false), [j, Q] = n.useState(false), [M, L] = n.useState(null), [k, N] = n.useState(null);\n  n.useEffect(() => {\n    ht(() => {\n      var p, R, c, b;\n      (p = l.current) == null || p.dispatchEvent(new Event(\"input\"));\n      let t = (R = l.current) == null ? void 0 : R.selectionStart, o = (c = l.current) == null ? void 0 : c.selectionEnd, d = (b = l.current) == null ? void 0 : b.selectionDirection;\n      t !== null && o !== null && (L(t), N(o), V.current.prev = [t, o, d]);\n    });\n  }, [i, j]), n.useEffect(() => {\n    I !== void 0 && i !== I && I.length < e && i.length === e && (H == null || H(i));\n  }, [e, H, I, i]);\n  let O = Tt({ containerRef: K, inputRef: l, pushPasswordManagerStrategy: F, isFocused: j }), st = n.useCallback((t) => {\n    let o = t.currentTarget.value.slice(0, e);\n    if (o.length > 0 && m && !m.test(o)) {\n      t.preventDefault();\n      return;\n    }\n    typeof I == \"string\" && o.length < I.length && document.dispatchEvent(new Event(\"selectionchange\")), x(o);\n  }, [e, x, I, m]), at = n.useCallback(() => {\n    var t;\n    if (l.current) {\n      let o = Math.min(l.current.value.length, e - 1), d = l.current.value.length;\n      (t = l.current) == null || t.setSelectionRange(o, d), L(o), N(d);\n    }\n    Q(true);\n  }, [e]), ct = n.useCallback((t) => {\n    var g, E;\n    let o = l.current;\n    if (!W && (!J.current.isIOS || !t.clipboardData || !o))\n      return;\n    let d = t.clipboardData.getData(\"text/plain\"), p = W ? W(d) : d;\n    console.log({ _content: d, content: p }), t.preventDefault();\n    let R = (g = l.current) == null ? void 0 : g.selectionStart, c = (E = l.current) == null ? void 0 : E.selectionEnd, v = (R !== c ? i.slice(0, R) + p + i.slice(c) : i.slice(0, R) + p + i.slice(R)).slice(0, e);\n    if (v.length > 0 && m && !m.test(v))\n      return;\n    o.value = v, x(v);\n    let C = Math.min(v.length, e - 1), _ = v.length;\n    o.setSelectionRange(C, _), L(C), N(_);\n  }, [e, x, m, i]), It = n.useMemo(() => ({ position: \"relative\", cursor: a.disabled ? \"default\" : \"text\", userSelect: \"none\", WebkitUserSelect: \"none\", pointerEvents: \"none\" }), [a.disabled]), it = n.useMemo(() => ({ position: \"absolute\", inset: 0, width: O.willPushPWMBadge ? `calc(100% + ${O.PWM_BADGE_SPACE_WIDTH})` : \"100%\", clipPath: O.willPushPWMBadge ? `inset(0 ${O.PWM_BADGE_SPACE_WIDTH} 0 0)` : void 0, height: \"100%\", display: \"flex\", textAlign: u, opacity: \"1\", color: \"transparent\", pointerEvents: \"all\", background: \"transparent\", caretColor: \"transparent\", border: \"0 solid transparent\", outline: \"0 solid transparent\", boxShadow: \"none\", lineHeight: \"1\", letterSpacing: \"-.5em\", fontSize: \"var(--root-height)\", fontFamily: \"monospace\", fontVariantNumeric: \"tabular-nums\" }), [O.PWM_BADGE_SPACE_WIDTH, O.willPushPWMBadge, u]), Mt = n.useMemo(() => n.createElement(\"input\", bt(St({ autoComplete: a.autoComplete || \"one-time-code\" }, a), { \"data-input-otp\": true, \"data-input-otp-placeholder-shown\": i.length === 0 || void 0, \"data-input-otp-mss\": M, \"data-input-otp-mse\": k, inputMode: G, pattern: m == null ? void 0 : m.source, \"aria-placeholder\": D, style: it, maxLength: e, value: i, ref: l, onPaste: (t) => {\n    var o;\n    ct(t), (o = a.onPaste) == null || o.call(a, t);\n  }, onChange: st, onMouseOver: (t) => {\n    var o;\n    rt(true), (o = a.onMouseOver) == null || o.call(a, t);\n  }, onMouseLeave: (t) => {\n    var o;\n    rt(false), (o = a.onMouseLeave) == null || o.call(a, t);\n  }, onFocus: (t) => {\n    var o;\n    at(), (o = a.onFocus) == null || o.call(a, t);\n  }, onBlur: (t) => {\n    var o;\n    Q(false), (o = a.onBlur) == null || o.call(a, t);\n  } })), [st, at, ct, G, it, e, k, M, a, m == null ? void 0 : m.source, i]), tt = n.useMemo(() => ({ slots: Array.from({ length: e }).map((t, o) => {\n    var c;\n    let d = j && M !== null && k !== null && (M === k && o === M || o >= M && o < k), p = i[o] !== void 0 ? i[o] : null, R = i[0] !== void 0 ? null : (c = D == null ? void 0 : D[o]) != null ? c : null;\n    return { char: p, placeholderChar: R, isActive: d, hasFakeCaret: d && p === null };\n  }), isFocused: j, isHovering: !a.disabled && ot }), [j, ot, e, k, M, a.disabled, i]), Ct = n.useMemo(() => f ? f(tt) : n.createElement(jt.Provider, { value: tt }, h), [h, tt, f]);\n  return n.createElement(n.Fragment, null, T !== null && n.createElement(\"noscript\", null, n.createElement(\"style\", null, T)), n.createElement(\"div\", { ref: K, \"data-input-otp-container\": true, style: It, className: Z }, Ct, n.createElement(\"div\", { style: { position: \"absolute\", inset: 0, pointerEvents: \"none\" } }, Mt)));\n});\nLt.displayName = \"Input\";\nfunction $(r, s) {\n  try {\n    r.insertRule(s);\n  } catch (e) {\n    console.error(\"input-otp could not insert CSS rule:\", s);\n  }\n}\nvar Nt = `\n[data-input-otp] {\n  --nojs-bg: white !important;\n  --nojs-fg: black !important;\n\n  background-color: var(--nojs-bg) !important;\n  color: var(--nojs-fg) !important;\n  caret-color: var(--nojs-fg) !important;\n  letter-spacing: .25em !important;\n  text-align: center !important;\n  border: 1px solid var(--nojs-fg) !important;\n  border-radius: 4px !important;\n  width: 100% !important;\n}\n@media (prefers-color-scheme: dark) {\n  [data-input-otp] {\n    --nojs-bg: black !important;\n    --nojs-fg: white !important;\n  }\n}`;\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/OTPInput.js\nfunction OTPInput(props) {\n  return (0, import_jsx_runtime2.jsx)(OTPInputContainer, { children: (0, import_jsx_runtime2.jsx)(Lt, { onComplete: () => {\n    props.onEnter();\n  }, maxLength: 6, value: props.value, render: ({ slots }) => (0, import_jsx_runtime2.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"both\", children: slots.map((slot, idx) => (\n    // biome-ignore lint/suspicious/noArrayIndexKey: index is the only valid key here\n    (0, import_jsx_runtime2.jsx)(Slot, { ...slot, isInvalid: props.isInvalid }, idx)\n  )) }), onChange: (newValue) => {\n    props.setValue(newValue);\n  } }) });\n}\nvar OTPInputContainer = StyledDiv({\n  \"& input\": {\n    maxWidth: \"100%\"\n  }\n});\nfunction Slot(props) {\n  return (0, import_jsx_runtime2.jsxs)(OTPInputBox, { \"data-active\": props.isActive, \"data-error\": props.isInvalid, children: [props.char !== null && (0, import_jsx_runtime2.jsx)(\"div\", { children: props.char }), props.hasFakeCaret && (0, import_jsx_runtime2.jsx)(FakeCaret, {})] });\n}\nvar caretBlink = keyframes`\n  0%, 100% {\n    opacity: 0;\n  },\n  50% {\n    opacity: 1;\n  }\n  `;\nvar FakeCaret = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    position: \"absolute\",\n    pointerEvents: \"none\",\n    inset: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    animation: `${caretBlink} 1s infinite`,\n    \"&::before\": {\n      content: \"''\",\n      display: \"block\",\n      width: \"1.5px\",\n      height: \"1em\",\n      backgroundColor: theme.colors.primaryText\n    }\n  };\n});\nvar OTPInputBox = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    position: \"relative\",\n    width: \"40px\",\n    height: \"40px\",\n    textAlign: \"center\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    fontSize: fontSize.md,\n    padding: spacing.xs,\n    boxSizing: \"border-box\",\n    transition: \"color 200ms ease\",\n    border: `2px solid ${theme.colors.borderColor}`,\n    \"&[data-active='true']\": {\n      borderColor: theme.colors.accentText\n    },\n    color: theme.colors.primaryText,\n    borderRadius: radius.lg,\n    \"&[data-error='true']\": {\n      borderColor: theme.colors.danger\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/OTPLoginUI.js\nfunction OTPLoginUI(props) {\n  var _a;\n  const { wallet, done, goBack, userInfo } = props;\n  const isWideModal = props.size === \"wide\";\n  const locale = props.locale;\n  const [otpInput, setOtpInput] = (0, import_react3.useState)(\"\");\n  const [verifyStatus, setVerifyStatus] = (0, import_react3.useState)(\"idle\");\n  const [error, setError] = (0, import_react3.useState)();\n  const [accountStatus, setAccountStatus] = (0, import_react3.useState)(\"sending\");\n  const ecosystem = isEcosystemWallet(wallet) ? {\n    id: wallet.id,\n    partnerId: (_a = wallet.getConfig()) == null ? void 0 : _a.partnerId\n  } : void 0;\n  const [screen] = (0, import_react3.useState)(\"base\");\n  const sendEmailOrSms = (0, import_react3.useCallback)(async () => {\n    setOtpInput(\"\");\n    setVerifyStatus(\"idle\");\n    setAccountStatus(\"sending\");\n    try {\n      if (\"email\" in userInfo) {\n        await preAuthenticate({\n          ecosystem,\n          email: userInfo.email,\n          strategy: \"email\",\n          client: props.client\n        });\n        setAccountStatus(\"sent\");\n      } else if (\"phone\" in userInfo) {\n        await preAuthenticate({\n          ecosystem,\n          phoneNumber: userInfo.phone,\n          strategy: \"phone\",\n          client: props.client\n        });\n        setAccountStatus(\"sent\");\n      } else {\n        throw new Error(\"Invalid userInfo\");\n      }\n    } catch (e) {\n      console.error(e);\n      setVerifyStatus(\"idle\");\n      setAccountStatus(\"error\");\n    }\n  }, [props.client, userInfo, ecosystem]);\n  async function connect(otp) {\n    if (\"email\" in userInfo) {\n      await wallet.connect({\n        chain: props.chain,\n        strategy: \"email\",\n        email: userInfo.email,\n        verificationCode: otp,\n        client: props.client\n      });\n      await setLastAuthProvider(\"email\", webLocalStorage);\n    } else if (\"phone\" in userInfo) {\n      await wallet.connect({\n        chain: props.chain,\n        strategy: \"phone\",\n        phoneNumber: userInfo.phone,\n        verificationCode: otp,\n        client: props.client\n      });\n      await setLastAuthProvider(\"phone\", webLocalStorage);\n    } else {\n      throw new Error(\"Invalid userInfo\");\n    }\n  }\n  async function link(otp) {\n    if (\"email\" in userInfo) {\n      await linkProfile({\n        client: props.client,\n        strategy: \"email\",\n        email: userInfo.email,\n        verificationCode: otp,\n        ecosystem\n      });\n    } else if (\"phone\" in userInfo) {\n      await linkProfile({\n        client: props.client,\n        strategy: \"phone\",\n        phoneNumber: userInfo.phone,\n        verificationCode: otp,\n        ecosystem\n      });\n    }\n  }\n  const verify = async (otp) => {\n    var _a2;\n    if (otp.length !== 6) {\n      return;\n    }\n    setVerifyStatus(\"verifying\");\n    try {\n      if (props.isLinking) {\n        await link(otp);\n      } else {\n        await connect(otp);\n      }\n      done();\n      setVerifyStatus(\"valid\");\n    } catch (e) {\n      if (e instanceof Error && ((_a2 = e == null ? void 0 : e.message) == null ? void 0 : _a2.includes(\"PAYMENT_METHOD_REQUIRED\"))) {\n        setVerifyStatus(\"payment_required\");\n      } else if (e instanceof Error && (e.message.toLowerCase().includes(\"link\") || e.message.toLowerCase().includes(\"profile\"))) {\n        setVerifyStatus(\"linking_error\");\n        setError(e.message);\n      } else {\n        setVerifyStatus(\"invalid\");\n      }\n      console.error(\"Authentication Error\", e);\n    }\n  };\n  const emailSentOnMount = (0, import_react3.useRef)(false);\n  (0, import_react3.useEffect)(() => {\n    if (!emailSentOnMount.current) {\n      emailSentOnMount.current = true;\n      sendEmailOrSms();\n    }\n  }, [sendEmailOrSms]);\n  if (screen === \"base\") {\n    return (0, import_jsx_runtime3.jsxs)(Container, { fullHeight: true, flex: \"column\", animate: \"fadein\", children: [(0, import_jsx_runtime3.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime3.jsx)(ModalHeader, { title: locale.signIn, onBack: goBack }) }), (0, import_jsx_runtime3.jsx)(Container, { expand: true, flex: \"column\", center: \"y\", children: (0, import_jsx_runtime3.jsxs)(\"form\", { onSubmit: (e) => {\n      e.preventDefault();\n    }, children: [(0, import_jsx_runtime3.jsxs)(Container, { flex: \"column\", center: \"x\", px: \"lg\", children: [!isWideModal && (0, import_jsx_runtime3.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime3.jsx)(Text, { children: locale.emailLoginScreen.enterCodeSendTo }), (0, import_jsx_runtime3.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime3.jsx)(Text, { color: \"primaryText\", children: \"email\" in userInfo ? userInfo.email : userInfo.phone }), (0, import_jsx_runtime3.jsx)(Spacer, { y: \"xl\" })] }), (0, import_jsx_runtime3.jsx)(OTPInput, { isInvalid: verifyStatus === \"invalid\", digits: 6, value: otpInput, setValue: (value) => {\n      setOtpInput(value);\n      setVerifyStatus(\"idle\");\n    }, onEnter: () => {\n      verify(otpInput);\n    } }), verifyStatus === \"invalid\" && (0, import_jsx_runtime3.jsxs)(FadeIn, { children: [(0, import_jsx_runtime3.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime3.jsx)(Text, { size: \"sm\", color: \"danger\", center: true, children: locale.emailLoginScreen.invalidCode })] }), verifyStatus === \"linking_error\" && (0, import_jsx_runtime3.jsxs)(FadeIn, { children: [(0, import_jsx_runtime3.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime3.jsx)(Text, { size: \"sm\", color: \"danger\", center: true, children: error || \"Failed to verify code\" })] }), verifyStatus === \"payment_required\" && (0, import_jsx_runtime3.jsxs)(FadeIn, { children: [(0, import_jsx_runtime3.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime3.jsx)(Text, { size: \"sm\", color: \"danger\", center: true, children: locale.maxAccountsExceeded })] }), (0, import_jsx_runtime3.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime3.jsx)(Container, { px: isWideModal ? \"xxl\" : \"lg\", children: verifyStatus === \"verifying\" ? (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: (0, import_jsx_runtime3.jsx)(Container, { flex: \"row\", center: \"x\", animate: \"fadein\", children: (0, import_jsx_runtime3.jsx)(Spinner, { size: \"lg\", color: \"accentText\" }) }) }) : (0, import_jsx_runtime3.jsx)(Container, { animate: \"fadein\", children: (0, import_jsx_runtime3.jsx)(Button, { onClick: () => verify(otpInput), variant: \"accent\", type: \"submit\", style: {\n      width: \"100%\"\n    }, children: locale.emailLoginScreen.verify }) }, \"btn-container\") }), (0, import_jsx_runtime3.jsx)(Spacer, { y: \"xl\" }), !isWideModal && (0, import_jsx_runtime3.jsx)(Line, {}), (0, import_jsx_runtime3.jsxs)(Container, { p: isWideModal ? void 0 : \"lg\", children: [accountStatus === \"error\" && (0, import_jsx_runtime3.jsx)(Text, { size: \"sm\", center: true, color: \"danger\", children: locale.emailLoginScreen.failedToSendCode }), accountStatus === \"sending\" && (0, import_jsx_runtime3.jsxs)(Container, { flex: \"row\", center: \"both\", gap: \"xs\", style: {\n      textAlign: \"center\"\n    }, children: [(0, import_jsx_runtime3.jsx)(Text, { size: \"sm\", children: locale.emailLoginScreen.sendingCode }), (0, import_jsx_runtime3.jsx)(Spinner, { size: \"xs\", color: \"secondaryText\" })] }), accountStatus === \"sent\" && (0, import_jsx_runtime3.jsx)(LinkButton, { onClick: sendEmailOrSms, type: \"button\", children: locale.emailLoginScreen.resendCode })] })] }) })] });\n  }\n  return null;\n}\nvar LinkButton = StyledButton((_) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    color: theme.colors.accentText,\n    fontSize: fontSize.sm,\n    cursor: \"pointer\",\n    textAlign: \"center\",\n    fontWeight: 500,\n    width: \"100%\",\n    \"&:hover\": {\n      color: theme.colors.primaryText\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/PassKeyLogin.js\nvar import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);\nvar import_react4 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/ErrorState.js\nvar import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/AccentFailIcon.js\nvar import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);\nvar AccentFailIcon = (props) => {\n  return (0, import_jsx_runtime4.jsxs)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 109 109\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"presentation\", children: [(0, import_jsx_runtime4.jsxs)(\"g\", { clipPath: \"url(#clip0_4036_4155)\", children: [(0, import_jsx_runtime4.jsx)(\"path\", { d: \"M54.5 109C84.5995 109 109 84.5995 109 54.5C109 24.4005 84.5995 0 54.5 0C24.4005 0 0 24.4005 0 54.5C0 84.5995 24.4005 109 54.5 109Z\", fill: \"#4BABFF\" }), (0, import_jsx_runtime4.jsx)(\"path\", { d: \"M55 96C77.6437 96 96 77.6437 96 55C96 32.3563 77.6437 14 55 14C32.3563 14 14 32.3563 14 55C14 77.6437 32.3563 96 55 96Z\", fill: \"#1C85FF\" }), (0, import_jsx_runtime4.jsx)(\"path\", { d: \"M73.2352 69.389C73.7459 69.8997 74.0329 70.5924 74.0329 71.3147C74.0329 72.037 73.7459 72.7298 73.2352 73.2405C72.7244 73.7513 72.0317 74.0382 71.3094 74.0382C70.5871 74.0382 69.8944 73.7513 69.3836 73.2405L54.9992 58.8515L40.6102 73.236C40.0994 73.7467 39.4067 74.0337 38.6844 74.0337C37.9621 74.0337 37.2694 73.7467 36.7586 73.236C36.2479 72.7252 35.9609 72.0325 35.9609 71.3102C35.9609 70.5879 36.2479 69.8952 36.7586 69.3844L51.1476 55L36.7632 40.611C36.2524 40.1002 35.9655 39.4075 35.9655 38.6852C35.9655 37.9629 36.2524 37.2702 36.7632 36.7594C37.2739 36.2487 37.9666 35.9617 38.6889 35.9617C39.4112 35.9617 40.104 36.2487 40.6147 36.7594L54.9992 51.1484L69.3881 36.7572C69.8989 36.2464 70.5916 35.9595 71.3139 35.9595C72.0362 35.9595 72.729 36.2464 73.2397 36.7572C73.7505 37.2679 74.0374 37.9606 74.0374 38.6829C74.0374 39.4052 73.7505 40.098 73.2397 40.6087L58.8507 55L73.2352 69.389Z\", fill: \"url(#paint0_linear_4036_4155)\" })] }), (0, import_jsx_runtime4.jsxs)(\"defs\", { children: [(0, import_jsx_runtime4.jsxs)(\"linearGradient\", { id: \"paint0_linear_4036_4155\", x1: \"54.9992\", y1: \"35.9595\", x2: \"54.9992\", y2: \"74.0382\", gradientUnits: \"userSpaceOnUse\", children: [(0, import_jsx_runtime4.jsx)(\"stop\", { stopColor: \"white\" }), (0, import_jsx_runtime4.jsx)(\"stop\", { offset: \"1\", stopColor: \"#90CBFF\" })] }), (0, import_jsx_runtime4.jsx)(\"clipPath\", { id: \"clip0_4036_4155\", children: (0, import_jsx_runtime4.jsx)(\"rect\", { width: \"109\", height: \"109\", fill: \"white\" }) })] })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/ErrorState.js\nfunction ErrorState(props) {\n  return (0, import_jsx_runtime5.jsxs)(Container, { animate: \"fadein\", children: [(0, import_jsx_runtime5.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime5.jsx)(Container, { flex: \"row\", center: \"x\", children: (0, import_jsx_runtime5.jsx)(AccentFailIcon, { size: iconSize[\"3xl\"] }) }), (0, import_jsx_runtime5.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime5.jsx)(Text, { center: true, color: \"primaryText\", size: \"md\", children: props.title }), (0, import_jsx_runtime5.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime5.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime5.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: props.onTryAgain, children: \"Try Again\" })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/LoadingState.js\nvar import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);\nfunction LoadingState(props) {\n  return (0, import_jsx_runtime6.jsxs)(Container, { animate: \"fadein\", children: [(0, import_jsx_runtime6.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime6.jsxs)(Container, { flex: \"row\", center: \"x\", style: {\n    position: \"relative\"\n  }, children: [(0, import_jsx_runtime6.jsx)(Spinner, { size: \"4xl\", color: \"accentText\" }), (0, import_jsx_runtime6.jsx)(Container, { color: \"accentText\", style: {\n    position: \"absolute\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  }, children: props.icon })] }), (0, import_jsx_runtime6.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime6.jsx)(Text, { center: true, color: \"primaryText\", size: \"lg\", children: props.title }), (0, import_jsx_runtime6.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime6.jsx)(Text, { multiline: true, center: true, children: props.subtitle }), (0, import_jsx_runtime6.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime6.jsx)(Spacer, { y: \"xxl\" })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/PassKeyLogin.js\nfunction PassKeyLogin(props) {\n  const { wallet, done, client, chain, size, locale } = props;\n  const [screen, setScreen] = (0, import_react4.useState)(\"loading\");\n  const triggered = (0, import_react4.useRef)(false);\n  (0, import_react4.useEffect)(() => {\n    if (triggered.current) {\n      return;\n    }\n    triggered.current = true;\n    hasStoredPasskey(client, isEcosystemWallet(wallet.id) ? wallet.id : void 0).then((isStored) => {\n      if (isStored) {\n        setScreen(\"login\");\n      } else {\n        setScreen(\"select\");\n      }\n    }).catch(() => {\n      setScreen(\"select\");\n    });\n  }, [client, wallet.id]);\n  return (0, import_jsx_runtime7.jsxs)(Container, { animate: \"fadein\", fullHeight: true, flex: \"column\", children: [(0, import_jsx_runtime7.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime7.jsx)(ModalHeader, { title: props.isLinking ? locale.passkeys.linkPasskey : locale.passkeys.title, onBack: props.onBack }) }), (0, import_jsx_runtime7.jsx)(Container, { px: size === \"wide\" ? \"xxl\" : \"lg\", expand: true, flex: \"column\", center: \"y\", children: (0, import_jsx_runtime7.jsxs)(\"div\", { children: [screen === \"loading\" && (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [(0, import_jsx_runtime7.jsx)(LoadingScreen, {}), (0, import_jsx_runtime7.jsx)(Spacer, { y: \"xxl\" })] }), screen === \"select\" && (0, import_jsx_runtime7.jsx)(SelectLoginMethod, { onSignin: () => {\n    setScreen(\"login\");\n  }, onSignup: () => {\n    setScreen(\"signup\");\n  } }), screen === \"login\" && (0, import_jsx_runtime7.jsx)(LoginScreen, { wallet, client, done, onCreate: () => {\n    setScreen(\"signup\");\n  }, chain, isLinking: props.isLinking }), screen === \"signup\" && (0, import_jsx_runtime7.jsx)(SignupScreen, { wallet, client, done, chain, isLinking: props.isLinking })] }) })] });\n}\nfunction LoginScreen(props) {\n  const { wallet, done, client, chain } = props;\n  const [status, setStatus] = (0, import_react4.useState)(\"loading\");\n  const [error, setError] = (0, import_react4.useState)();\n  async function login() {\n    setStatus(\"loading\");\n    try {\n      if (props.isLinking) {\n        await linkProfile({\n          client,\n          strategy: \"passkey\",\n          type: \"sign-in\"\n        }).catch((e) => {\n          setError(e.message);\n          throw e;\n        });\n      } else {\n        await wallet.connect({\n          client,\n          strategy: \"passkey\",\n          type: \"sign-in\",\n          chain\n        });\n        await setLastAuthProvider(\"passkey\", webLocalStorage);\n      }\n      done();\n    } catch (e) {\n      console.error(\"Failed to login with passkey\", e);\n      setStatus(\"error\");\n    }\n  }\n  const triggered = (0, import_react4.useRef)(false);\n  (0, import_react4.useEffect)(() => {\n    if (triggered.current) {\n      return;\n    }\n    triggered.current = true;\n    login();\n  });\n  if (status === \"loading\") {\n    return (0, import_jsx_runtime7.jsx)(LoadingState, { title: \"Requesting Passkey\", subtitle: \"A pop-up prompt will appear to sign-in and verify your passkey\", icon: (0, import_jsx_runtime7.jsx)(FingerPrintIcon, { size: iconSize.xxl }) });\n  }\n  if (status === \"error\") {\n    return (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [(0, import_jsx_runtime7.jsx)(ErrorState, { onTryAgain: login, title: error || \"Failed to Login\" }), (0, import_jsx_runtime7.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime7.jsx)(Button, { variant: \"outline\", fullWidth: true, onClick: props.onCreate, children: \"Create a new Passkey\" }), (0, import_jsx_runtime7.jsx)(Spacer, { y: \"lg\" })] });\n  }\n  return null;\n}\nfunction SignupScreen(props) {\n  var _a;\n  const { wallet, done, client, chain } = props;\n  const [error, setError] = (0, import_react4.useState)();\n  const [status, setStatus] = (0, import_react4.useState)(\"loading\");\n  const ecosystem = isEcosystemWallet(wallet) ? {\n    id: wallet.id,\n    partnerId: (_a = wallet.getConfig()) == null ? void 0 : _a.partnerId\n  } : void 0;\n  async function signup() {\n    setStatus(\"loading\");\n    try {\n      if (props.isLinking) {\n        await linkProfile({\n          client,\n          strategy: \"passkey\",\n          type: \"sign-up\",\n          ecosystem\n        });\n      } else {\n        await wallet.connect({\n          client,\n          strategy: \"passkey\",\n          type: \"sign-up\",\n          chain\n        });\n        await setLastAuthProvider(\"passkey\", webLocalStorage);\n      }\n      done();\n    } catch (e) {\n      console.error(e);\n      if (e instanceof Error) {\n        setError(`Error creating passkey: ${e.message}`);\n      }\n      setStatus(\"error\");\n    }\n  }\n  const triggered = (0, import_react4.useRef)(false);\n  (0, import_react4.useEffect)(() => {\n    if (triggered.current) {\n      return;\n    }\n    triggered.current = true;\n    signup();\n  });\n  if (status === \"loading\") {\n    return (0, import_jsx_runtime7.jsx)(LoadingState, { title: \"Creating Passkey\", subtitle: \"A pop-up prompt will appear to sign-in and verify your passkey\", icon: (0, import_jsx_runtime7.jsx)(FingerPrintIcon, { size: iconSize.xxl }) });\n  }\n  if (status === \"error\") {\n    return (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [(0, import_jsx_runtime7.jsx)(ErrorState, { onTryAgain: signup, title: error || \"Failed to create passkey\" }), (0, import_jsx_runtime7.jsx)(Spacer, { y: \"lg\" })] });\n  }\n  return null;\n}\nfunction SelectLoginMethod(props) {\n  return (0, import_jsx_runtime7.jsxs)(Container, { children: [(0, import_jsx_runtime7.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime7.jsx)(Container, { flex: \"row\", center: \"x\", color: \"accentText\", children: (0, import_jsx_runtime7.jsx)(FingerPrintIcon, { size: iconSize[\"4xl\"] }) }), (0, import_jsx_runtime7.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime7.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime7.jsx)(Button, { variant: \"accent\", onClick: props.onSignup, fullWidth: true, children: \"Create a Passkey\" }), (0, import_jsx_runtime7.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime7.jsx)(Button, { variant: \"outline\", onClick: props.onSignin, fullWidth: true, children: \"I have a Passkey\" }), (0, import_jsx_runtime7.jsx)(Spacer, { y: \"lg\" })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/SocialLogin.js\nvar import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);\nvar import_react5 = __toESM(require_react(), 1);\nfunction SocialLogin(props) {\n  var _a, _b;\n  const ewLocale = props.locale;\n  const locale = ewLocale.socialLoginScreen;\n  const themeObj = useCustomTheme();\n  const ecosystem = isEcosystemWallet(props.wallet) ? {\n    id: props.wallet.id,\n    partnerId: (_a = props.wallet.getConfig()) == null ? void 0 : _a.partnerId\n  } : void 0;\n  const [authError, setAuthError] = (0, import_react5.useState)(void 0);\n  const { done, wallet } = props;\n  const [status, setStatus] = (0, import_react5.useState)(\"connecting\");\n  const handleSocialLogin = async () => {\n    var _a2, _b2, _c, _d;\n    const walletConfig = wallet.getConfig();\n    const authMode = walletConfig && \"auth\" in walletConfig ? ((_a2 = walletConfig == null ? void 0 : walletConfig.auth) == null ? void 0 : _a2.mode) ?? \"popup\" : \"popup\";\n    if (walletConfig && \"auth\" in walletConfig && authMode !== \"popup\" && !props.isLinking) {\n      return loginWithOauthRedirect({\n        authOption: props.socialAuth,\n        client: props.client,\n        ecosystem,\n        redirectUrl: (_b2 = walletConfig == null ? void 0 : walletConfig.auth) == null ? void 0 : _b2.redirectUrl,\n        mode: (_c = walletConfig == null ? void 0 : walletConfig.auth) == null ? void 0 : _c.mode\n      });\n    }\n    try {\n      const socialWindow = openOauthSignInWindow({\n        authOption: props.socialAuth,\n        themeObj,\n        client: props.client,\n        ecosystem\n      });\n      if (!socialWindow) {\n        throw new Error(`Failed to open ${props.socialAuth} login window`);\n      }\n      setStatus(\"connecting\");\n      if (props.isLinking) {\n        await linkProfile({\n          client: props.client,\n          strategy: props.socialAuth,\n          openedWindow: socialWindow,\n          closeOpenedWindow: (openedWindow) => {\n            openedWindow.close();\n          },\n          ecosystem\n        }).catch((e) => {\n          setAuthError(e.message);\n          throw e;\n        });\n      } else {\n        await wallet.connect({\n          chain: props.chain,\n          strategy: props.socialAuth,\n          openedWindow: socialWindow,\n          closeOpenedWindow: (openedWindow) => {\n            openedWindow.close();\n          },\n          client: props.client\n        });\n      }\n      await setLastAuthProvider(props.socialAuth, webLocalStorage);\n      setStatus(\"connected\");\n      done();\n    } catch (e) {\n      setStatus(\"error\");\n      if (e instanceof Error && ((_d = e == null ? void 0 : e.message) == null ? void 0 : _d.includes(\"PAYMENT_METHOD_REQUIRED\"))) {\n        setAuthError(ewLocale.maxAccountsExceeded);\n      }\n      console.error(`Error sign in with ${props.socialAuth}`, e);\n    }\n  };\n  const socialLogin = (_b = props.state) == null ? void 0 : _b.socialLogin;\n  const socialLoginStarted = (0, import_react5.useRef)(false);\n  (0, import_react5.useEffect)(() => {\n    if (socialLoginStarted.current) {\n      return;\n    }\n    if (socialLogin) {\n      socialLoginStarted.current = true;\n      setStatus(\"connecting\");\n      socialLogin.connectionPromise.then(() => {\n        done();\n        setStatus(\"connected\");\n      }).catch((e) => {\n        setAuthError(e.message);\n        setStatus(\"error\");\n      });\n    }\n  }, [done, socialLogin]);\n  return (0, import_jsx_runtime8.jsx)(Container, { animate: \"fadein\", flex: \"column\", fullHeight: true, children: (0, import_jsx_runtime8.jsxs)(Container, { flex: \"column\", expand: true, p: \"lg\", style: {\n    paddingBottom: 0\n  }, children: [props.goBack && (0, import_jsx_runtime8.jsx)(ModalHeader, { title: props.isLinking ? props.connectLocale.manageWallet.linkProfile : locale.title, onBack: props.goBack }), props.size === \"compact\" ? (0, import_jsx_runtime8.jsx)(Spacer, { y: \"xl\" }) : null, (0, import_jsx_runtime8.jsxs)(Container, { flex: \"column\", center: \"both\", expand: true, style: {\n    textAlign: \"center\",\n    minHeight: \"250px\"\n  }, children: [status !== \"error\" && (0, import_jsx_runtime8.jsxs)(Container, { animate: \"fadein\", children: [(0, import_jsx_runtime8.jsx)(Text, { color: \"primaryText\", center: true, multiline: true, style: {\n    maxWidth: \"250px\"\n  }, children: locale.instruction }), (0, import_jsx_runtime8.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime8.jsx)(Container, { center: \"x\", flex: \"row\", children: (0, import_jsx_runtime8.jsx)(Spinner, { size: \"lg\", color: \"accentText\" }) }), (0, import_jsx_runtime8.jsx)(Spacer, { y: \"xxl\" })] }), status === \"error\" && (0, import_jsx_runtime8.jsxs)(Container, { animate: \"fadein\", children: [authError ? (0, import_jsx_runtime8.jsx)(Text, { center: true, color: \"danger\", children: authError }) : (0, import_jsx_runtime8.jsx)(Text, { color: \"danger\", children: locale.failed }), (0, import_jsx_runtime8.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime8.jsx)(Button, { variant: \"primary\", onClick: handleSocialLogin, children: locale.retry }), (0, import_jsx_runtime8.jsx)(Spacer, { y: \"xxl\" })] })] })] }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/WalletAuth.js\nvar import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);\nvar import_react16 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useAddConnectedWallet.js\nfunction useAddConnectedWallet() {\n  const manager = useConnectionManagerCtx(\"useAddConnectedWallet\");\n  return manager.handleConnection;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/WalletSelector.js\nvar import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);\nvar import_react15 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/SmartWalletConnectUI.js\nvar import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);\nvar import_react14 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/smartWallet/locale/getSmartWalletLocale.js\nasync function getSmartWalletLocale(localeId) {\n  switch (localeId) {\n    case \"es_ES\":\n      return (await import(\"./es-UEK7RLXG.js\")).default;\n    case \"ja_JP\":\n      return (await import(\"./ja-6MH4WP2Z.js\")).default;\n    case \"tl_PH\":\n      return (await import(\"./tl-DDFVDALG.js\")).default;\n    case \"vi_VN\":\n      return (await import(\"./vi-4HLVRM5V.js\")).default;\n    case \"de_DE\":\n      return (await import(\"./de-OKZ4QL64.js\")).default;\n    case \"ko_KR\":\n      return (await import(\"./kr-LSVS4UQW.js\")).default;\n    case \"fr_FR\":\n      return (await import(\"./fr-HCZLKSNB.js\")).default;\n    default:\n      return (await import(\"./en-SB77EPNW.js\")).default;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/AnyWalletConnectUI.js\nvar import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);\nvar import_react13 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/injected/locale/getInjectedWalletLocale.js\nasync function getInjectedWalletLocale(locale) {\n  switch (locale) {\n    case \"es_ES\":\n      return (await import(\"./es-7RULN4RE.js\")).default;\n    case \"ja_JP\":\n      return (await import(\"./ja-HG2757OL.js\")).default;\n    case \"tl_PH\":\n      return (await import(\"./tl-AVOH7Y5Z.js\")).default;\n    case \"vi_VN\":\n      return (await import(\"./vi-JLTPQX3P.js\")).default;\n    case \"de_DE\":\n      return (await import(\"./de-WT7ZYIRL.js\")).default;\n    case \"ko_KR\":\n      return (await import(\"./kr-XDCZ7IIG.js\")).default;\n    case \"fr_FR\":\n      return (await import(\"./fr-2PO34MSK.js\")).default;\n    default:\n      return (await import(\"./en-GF35UFXC.js\")).default;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/GetStartedScreen.js\nvar import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);\nvar import_react8 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/AppleIcon.js\nvar import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);\nvar AppleIcon = (props) => {\n  return (0, import_jsx_runtime9.jsx)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: props.size, height: props.size, viewBox: \"0 0 23 28\", fill: \"none\", role: \"presentation\", children: (0, import_jsx_runtime9.jsx)(\"path\", { d: \"M22.4181 21.6041C22.008 22.5506 21.5224 23.422 20.9599 24.223C20.1931 25.3151 19.5652 26.0711 19.0814 26.4908C18.3313 27.1799 17.5277 27.5327 16.6671 27.5528C16.0493 27.5528 15.3043 27.3772 14.437 27.021C13.5669 26.6664 12.7673 26.4908 12.0362 26.4908C11.2694 26.4908 10.447 26.6664 9.56734 27.021C8.68636 27.3772 7.97665 27.5628 7.43403 27.5812C6.60879 27.6164 5.78624 27.2534 4.96519 26.4908C4.44116 26.0343 3.78569 25.2516 3.00047 24.1428C2.15799 22.9587 1.46536 21.5857 0.92274 20.0203C0.341611 18.3295 0.050293 16.6922 0.050293 15.1071C0.050293 13.2914 0.44307 11.7253 1.2298 10.413C1.84809 9.35886 2.67065 8.52734 3.70014 7.91691C4.72963 7.30648 5.84199 6.99541 7.03991 6.97551C7.69538 6.97551 8.55493 7.17804 9.6231 7.57607C10.6882 7.97544 11.3722 8.17797 11.672 8.17797C11.8962 8.17797 12.656 7.94116 13.944 7.46904C15.162 7.0312 16.19 6.84991 17.0321 6.92133C19.3141 7.10529 21.0285 8.00387 22.1687 9.62276C20.1278 10.858 19.1182 12.5881 19.1383 14.8076C19.1567 16.5363 19.7846 17.9749 21.0185 19.1172C21.5777 19.6473 22.2022 20.0571 22.897 20.3481C22.7463 20.7846 22.5872 21.2027 22.4181 21.6041ZM17.1845 1.03178C17.1845 2.38678 16.6889 3.65194 15.7011 4.82296C14.509 6.21507 13.0672 7.0195 11.5036 6.89256C11.4837 6.73 11.4721 6.55892 11.4721 6.37913C11.4721 5.07833 12.039 3.68622 13.0457 2.54798C13.5484 1.97167 14.1876 1.49247 14.9628 1.11021C15.7363 0.733653 16.4679 0.525407 17.156 0.489746C17.1761 0.670889 17.1845 0.85206 17.1845 1.03178Z\", fill: \"#959CA0\" }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/ChromeIcon.js\nvar import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);\nvar ChromeIcon = (props) => {\n  return (0, import_jsx_runtime10.jsx)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: props.size, height: props.size, viewBox: \"0 0 190.5 190.5\", role: \"presentation\", children: (0, import_jsx_runtime10.jsxs)(\"g\", { transform: \"translate(90.669 -507.469)\", children: [(0, import_jsx_runtime10.jsx)(\"path\", { d: \"M4.583 650.342c26.304 0 47.627-21.324 47.627-47.628s-21.323-47.628-47.627-47.628-47.627 21.324-47.627 47.628 21.323 47.628 47.627 47.628z\", fill: \"#fff\", clipPath: \"none\", mask: \"none\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M-36.664 626.539l-41.24-71.43c-8.362 14.479-12.765 30.904-12.765 47.625s4.401 33.146 12.762 47.625 20.387 26.503 34.868 34.86 30.908 12.755 47.628 12.75l41.24-71.43v-.011c-4.177 7.244-10.188 13.26-17.428 17.443a47.62 47.62 0 0 1-47.632.007 47.62 47.62 0 0 1-17.433-17.437z\", fill: \"#229342\", clipPath: \"none\", mask: \"none\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M45.826 626.536l-41.239 71.43c16.72.003 33.146-4.398 47.626-12.757s26.504-20.384 34.863-34.865a95.24 95.24 0 0 0 12.755-47.627c-.003-16.72-4.408-33.145-12.772-47.623H4.58l-.01.007a47.62 47.62 0 0 1 23.819 6.372c7.243 4.179 13.257 10.19 17.439 17.431a47.62 47.62 0 0 1-.001 47.633z\", fill: \"#fbc116\", clipPath: \"none\", mask: \"none\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M4.583 640.43c20.824 0 37.705-16.881 37.705-37.706s-16.881-37.705-37.705-37.705-37.705 16.881-37.705 37.705 16.881 37.706 37.705 37.706z\", fill: \"#1a73e8\", clipPath: \"none\", mask: \"none\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M4.583 555.097h82.479c-8.358-14.481-20.381-26.507-34.861-34.868a95.23 95.23 0 0 0-47.625-12.76c-16.72.001-33.145 4.404-47.623 12.767a95.23 95.23 0 0 0-34.856 34.872l41.24 71.43.011.006a47.62 47.62 0 0 1-.015-47.633c4.179-7.242 10.193-13.256 17.434-17.436s15.456-6.381 23.818-6.379z\", fill: \"#e33b2e\", clipPath: \"none\", mask: \"none\" })] }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/PlayStoreIcon.js\nvar import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);\nvar PlayStoreIcon = (props) => {\n  return (0, import_jsx_runtime11.jsxs)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: props.size, height: props.size, viewBox: \"0 0 23 26\", fill: \"none\", role: \"presentation\", children: [(0, import_jsx_runtime11.jsx)(\"path\", { d: \"M10.5832 12.0978L0.0976562 23.2275C0.0980507 23.2298 0.0988382 23.2317 0.0992076 23.2341C0.420793 24.4427 1.52467 25.3326 2.83473 25.3326C3.35844 25.3326 3.85012 25.191 4.27179 24.9424L4.30528 24.9228L16.1087 18.1117L10.5838 12.0977\", fill: \"#EB3131\" }), (0, import_jsx_runtime11.jsx)(\"path\", { d: \"M21.1922 10.2046L21.1821 10.1977L16.0862 7.2435L10.345 12.3523L16.1061 18.1127L21.1752 15.1879C22.0639 14.7081 22.6672 13.7712 22.6672 12.6908C22.6672 11.6182 22.072 10.6859 21.1922 10.2046Z\", fill: \"#F6B60B\" }), (0, import_jsx_runtime11.jsx)(\"path\", { d: \"M0.0961678 2.10416C0.0331317 2.33661 0 2.58009 0 2.83292V22.5002C0 22.7526 0.0327407 22.9969 0.0965672 23.2285L10.9441 12.3832L0.0965672 2.10444\", fill: \"#5778C5\" }), (0, import_jsx_runtime11.jsx)(\"path\", { d: \"M10.6603 12.6667L16.088 7.24061L4.29785 0.404818C3.8693 0.148138 3.36912 0 2.83391 0C1.52384 0 0.418474 0.891502 0.0968301 2.10147C0.0964356 2.10265 0.0964355 2.10347 0.0964355 2.1045L10.6603 12.6669\", fill: \"#3BAD49\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/QRCode.js\nvar import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);\nvar import_react7 = __toESM(require_react(), 1);\nvar QRCodeRenderer = (0, import_react7.lazy)(() => import(\"./QRCodeRenderer-ZNSMXL36.js\"));\nvar QRCode = (props) => {\n  const size = props.size || 310;\n  const placeholder = (0, import_jsx_runtime12.jsxs)(QRPlaceholder, { style: {\n    width: `${size}px`,\n    height: `${size}px`\n  }, children: [(0, import_jsx_runtime12.jsx)(\"span\", { \"data-v1\": true }), (0, import_jsx_runtime12.jsx)(\"span\", { \"data-v2\": true }), (0, import_jsx_runtime12.jsx)(\"span\", { \"data-v3\": true }), (0, import_jsx_runtime12.jsx)(\"div\", {})] });\n  return (0, import_jsx_runtime12.jsxs)(\"div\", { style: {\n    position: \"relative\",\n    display: \"flex\",\n    justifyContent: \"center\"\n  }, children: [props.qrCodeUri ? (0, import_jsx_runtime12.jsx)(import_react7.Suspense, { fallback: placeholder, children: (0, import_jsx_runtime12.jsx)(QRCodeContainer, { children: (0, import_jsx_runtime12.jsx)(QRCodeRenderer, { uri: props.qrCodeUri, size: size + 20, ecl: \"M\", clearSize: props.QRIcon ? 70 : void 0 }) }) }) : placeholder, props.QRIcon && (0, import_jsx_runtime12.jsx)(IconContainer, { children: props.QRIcon })] });\n};\nvar IconContainer = StyledDiv({\n  position: \"absolute\",\n  top: \"50%\",\n  left: \"50%\",\n  transform: \"translate(-50%, -50%)\",\n  display: \"flex\",\n  justifyContent: \"center\",\n  alignContent: \"center\",\n  zIndex: 1e3\n});\nvar QRCodeContainer = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    animation: `${fadeInAnimation} 600ms ease`,\n    \"--ck-qr-dot-color\": theme.colors.primaryText,\n    \"--ck-body-background\": theme.colors.modalBg,\n    \"--ck-qr-background\": theme.colors.modalBg\n  };\n});\nvar PlaceholderKeyframes = keyframes`\n  0%{ background-position: 100% 0; }\n  100%{ background-position: -100% 0; }\n`;\nvar QRPlaceholder = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    \"--color\": theme.colors.skeletonBg,\n    \"--bg\": theme.colors.modalBg,\n    overflow: \"hidden\",\n    position: \"relative\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: radius.md,\n    \"> div\": {\n      zIndex: 4,\n      position: \"relative\",\n      width: \"28%\",\n      height: \"28%\",\n      borderRadius: \"5px\",\n      background: \"var(--bg)\",\n      boxShadow: \"0 0 0 7px var(--bg)\"\n    },\n    \"> span\": {\n      zIndex: 4,\n      position: \"absolute\",\n      background: \"var(--color)\",\n      borderRadius: \"12px\",\n      width: \"13.25%\",\n      height: \"13.25%\",\n      boxShadow: \"0 0 0 4px var(--bg)\",\n      \"&:before\": {\n        content: '\"\"',\n        position: \"absolute\",\n        inset: \"9px\",\n        borderRadius: \"3px\",\n        boxShadow: \"0 0 0 4px var(--bg)\"\n      },\n      \"&[data-v1]\": {\n        top: 0,\n        left: 0\n      },\n      \"&[data-v2]\": {\n        top: 0,\n        right: 0\n      },\n      \"&[data-v3]\": {\n        bottom: 0,\n        left: 0\n      }\n    },\n    \"&:before\": {\n      zIndex: 3,\n      content: '\"\"',\n      position: \"absolute\",\n      inset: 0,\n      background: \"repeat\",\n      backgroundSize: \"1.888% 1.888%\",\n      backgroundImage: \"radial-gradient(var(--color) 41%, transparent 41%)\"\n    },\n    \"&::after\": {\n      zIndex: 100,\n      content: '\"\"',\n      position: \"absolute\",\n      inset: 0,\n      transform: \"scale(1.5) rotate(45deg)\",\n      background: \"linear-gradient(90deg, transparent 50%, var(--color), transparent)\",\n      backgroundSize: \"200% 100%\",\n      animation: `${PlaceholderKeyframes} 1000ms linear infinite both`\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/GetStartedScreen.js\nvar GetStartedScreen = ({ wallet, walletInfo, header, footer, onBack, locale, client }) => {\n  const [showScreen, setShowScreen] = (0, import_react8.useState)(\"base\");\n  const isScanScreen = showScreen === \"android-scan\" || showScreen === \"ios-scan\";\n  const handleBack = onBack ? () => {\n    if (showScreen === \"base\") {\n      onBack();\n    } else {\n      setShowScreen(\"base\");\n    }\n  } : void 0;\n  return (0, import_jsx_runtime13.jsx)(Container, { fullHeight: true, flex: \"column\", animate: \"fadein\", children: (0, import_jsx_runtime13.jsxs)(Container, { expand: true, flex: \"column\", p: \"lg\", children: [showScreen === \"android-scan\" && walletInfo.app.android && (0, import_jsx_runtime13.jsx)(InstallScanScreen, { platformIcon: (0, import_jsx_runtime13.jsx)(PlayStoreIcon, { size: iconSize.md }), url: walletInfo.app.android, platform: \"Google Play\", walletName: walletInfo.name, walletId: wallet.id, onBack: handleBack, locale: {\n    scanToDownload: locale.getStartedScreen.instruction\n  }, client }), showScreen === \"ios-scan\" && walletInfo.app.ios && (0, import_jsx_runtime13.jsx)(InstallScanScreen, { platformIcon: (0, import_jsx_runtime13.jsx)(AppleIcon, { size: iconSize.md }), url: walletInfo.app.ios, platform: \"App Store\", walletName: walletInfo.name, walletId: wallet.id, onBack: handleBack, locale: {\n    scanToDownload: locale.getStartedScreen.instruction\n  }, client }), showScreen === \"base\" && (0, import_jsx_runtime13.jsxs)(Container, { expand: true, flex: \"column\", children: [header || (0, import_jsx_runtime13.jsx)(ModalHeader, { onBack: handleBack, title: walletInfo.name }), (0, import_jsx_runtime13.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime13.jsx)(Container, { expand: true, animate: \"fadein\", flex: \"column\", center: \"y\", style: {\n    minHeight: \"250px\"\n  }, children: (0, import_jsx_runtime13.jsxs)(Container, { flex: \"column\", gap: \"xs\", children: [walletInfo.app.chrome && (0, import_jsx_runtime13.jsxs)(ButtonLink2, { onClick: () => {\n    openWindow(walletInfo.app.chrome || \"\");\n  }, children: [(0, import_jsx_runtime13.jsx)(ChromeIcon, { size: iconSize.lg }), (0, import_jsx_runtime13.jsx)(\"span\", { children: locale.download.chrome })] }), walletInfo.app.android && (0, import_jsx_runtime13.jsxs)(ButtonLink2, { as: \"button\", onClick: () => {\n    if (isMobile()) {\n      openWindow(walletInfo.app.android || \"\");\n    } else {\n      setShowScreen(\"android-scan\");\n    }\n  }, children: [(0, import_jsx_runtime13.jsx)(PlayStoreIcon, { size: iconSize.lg }), (0, import_jsx_runtime13.jsx)(\"span\", { children: locale.download.android })] }), walletInfo.app.ios && (0, import_jsx_runtime13.jsxs)(ButtonLink2, { as: \"button\", onClick: () => {\n    if (isMobile()) {\n      openWindow(walletInfo.app.ios || \"\");\n    } else {\n      setShowScreen(\"ios-scan\");\n    }\n  }, children: [(0, import_jsx_runtime13.jsx)(AppleIcon, { size: iconSize.lg }), (0, import_jsx_runtime13.jsx)(\"span\", { children: locale.download.iOS })] })] }) })] }), !isScanScreen && footer] }) });\n};\nvar InstallScanScreen = (props) => {\n  return (0, import_jsx_runtime13.jsxs)(Container, { animate: \"fadein\", expand: true, children: [(0, import_jsx_runtime13.jsx)(ModalHeader, { title: props.walletName, onBack: props.onBack }), (0, import_jsx_runtime13.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime13.jsxs)(Container, { flex: \"column\", expand: true, center: \"both\", style: {\n    textAlign: \"center\"\n  }, children: [(0, import_jsx_runtime13.jsx)(QRCode, { qrCodeUri: props.url, QRIcon: (0, import_jsx_runtime13.jsx)(WalletImage, { id: props.walletId, size: iconSize.xxl, client: props.client }) }), (0, import_jsx_runtime13.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime13.jsx)(Text, { multiline: true, center: true, balance: true, children: props.locale.scanToDownload }), (0, import_jsx_runtime13.jsx)(Spacer, { y: \"xs\" })] })] });\n};\nvar ButtonLink2 = StyledButton((_) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    textDecoration: \"none\",\n    padding: `${spacing.sm} ${spacing.md}`,\n    borderRadius: radius.sm,\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: spacing.md,\n    cursor: \"pointer\",\n    boxSizing: \"border-box\",\n    width: \"100%\",\n    fontWeight: 500,\n    color: theme.colors.secondaryButtonText,\n    background: theme.colors.secondaryButtonBg,\n    transition: \"100ms ease\",\n    \"&:hover\": {\n      background: theme.colors.secondaryButtonHoverBg,\n      textDecoration: \"none\",\n      color: theme.colors.primaryText\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/WalletConnectConnection.js\nvar import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);\nvar import_react10 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/utils/promise/wait.js\nfunction wait(ms) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, ms);\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/ScanScreen.js\nvar import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);\nvar import_react9 = __toESM(require_react(), 1);\nvar ScanScreen = (props) => {\n  const { connectModalSize, client } = props;\n  const [linkCopied, setLinkCopied] = (0, import_react9.useState)(false);\n  return (0, import_jsx_runtime14.jsxs)(Container, { fullHeight: true, flex: \"column\", animate: \"fadein\", children: [(0, import_jsx_runtime14.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime14.jsx)(ModalHeader, { onBack: props.onBack, title: props.walletName }) }), (0, import_jsx_runtime14.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime14.jsxs)(Container, { expand: true, flex: \"column\", px: \"lg\", center: \"both\", children: [!props.error && (0, import_jsx_runtime14.jsxs)(\"div\", { style: {\n    textAlign: \"center\"\n  }, children: [(0, import_jsx_runtime14.jsx)(QRCode, { qrCodeUri: props.qrCodeUri, QRIcon: (0, import_jsx_runtime14.jsx)(WalletImage, { size: iconSize.xxl, id: props.walletId, client }) }), (0, import_jsx_runtime14.jsx)(Spacer, { y: \"xs\" }), (0, import_jsx_runtime14.jsxs)(Button, { disabled: props.qrCodeUri === void 0, variant: \"link\", style: {\n    fontSize: \"12px\",\n    opacity: props.qrCodeUri === void 0 ? 0.5 : 1,\n    cursor: props.qrCodeUri === void 0 ? \"default\" : \"pointer\"\n  }, onClick: () => {\n    navigator.clipboard.writeText(props.qrCodeUri).then(() => {\n      setLinkCopied(true);\n      setTimeout(() => setLinkCopied(false), 3e3);\n    }).catch((err) => {\n      console.error(\"Failed to copy link to clipboard\", err);\n    });\n  }, children: [linkCopied ? (0, import_jsx_runtime14.jsx)(CheckIcon, { width: 14, height: 14 }) : (0, import_jsx_runtime14.jsx)(CopyIcon, { width: 14, height: 14 }), (0, import_jsx_runtime14.jsx)(\"span\", { style: { padding: \"0 4px\" }, children: \"Copy Link\" })] }), (0, import_jsx_runtime14.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime14.jsx)(Text, { center: true, multiline: true, balance: true, style: {\n    paddingInline: spacing.lg\n  }, children: props.qrScanInstruction })] }), props.error && (0, import_jsx_runtime14.jsxs)(Container, { animate: \"fadein\", style: {\n    width: \"100%\"\n  }, children: [(0, import_jsx_runtime14.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime14.jsx)(Container, { flex: \"row\", center: \"x\", children: (0, import_jsx_runtime14.jsx)(AccentFailIcon, { size: iconSize[\"3xl\"] }) }), (0, import_jsx_runtime14.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime14.jsx)(Text, { center: true, size: \"lg\", color: \"primaryText\", children: \"Connection Failed\" }), (0, import_jsx_runtime14.jsx)(Spacer, { y: \"3xl\" }), (0, import_jsx_runtime14.jsx)(Button, { fullWidth: true, variant: \"accent\", onClick: props.onRetry, children: \"Try again\" })] })] }), (0, import_jsx_runtime14.jsx)(Spacer, { y: \"lg\" }), props.onGetStarted && (0, import_jsx_runtime14.jsx)(ScreenBottomContainer, { style: {\n    border: connectModalSize === \"compact\" ? void 0 : \"none\"\n  }, children: (0, import_jsx_runtime14.jsx)(Button, { variant: \"link\", onClick: props.onGetStarted, style: {\n    fontSize: fontSize.sm,\n    textAlign: \"center\"\n  }, children: props.getStartedLink }) })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/WalletConnectConnection.js\nvar WalletConnectConnection = (props) => {\n  const { onBack, onGetStarted, wallet, walletInfo, locale, done } = props;\n  const [qrCodeUri, setQrCodeUri] = (0, import_react10.useState)();\n  const [errorConnecting, setErrorConnecting] = (0, import_react10.useState)(false);\n  const connect = (0, import_react10.useCallback)(() => {\n    var _a;\n    setErrorConnecting(false);\n    wallet.connect({\n      chain: props.chain,\n      client: props.client,\n      walletConnect: {\n        projectId: (_a = props.walletConnect) == null ? void 0 : _a.projectId,\n        showQrModal: false,\n        onDisplayUri(uri) {\n          const preferNative = walletInfo.mobile.native || walletInfo.mobile.universal;\n          try {\n            if (isMobile()) {\n              if (isAndroid()) {\n                if (preferNative) {\n                  openWindow(formatWalletConnectUrl(preferNative, uri).redirect);\n                }\n              } else if (isIOS()) {\n                if (preferNative) {\n                  openWindow(formatWalletConnectUrl(preferNative, uri).redirect);\n                }\n              } else {\n                const preferUniversal = walletInfo.mobile.universal || walletInfo.mobile.native;\n                if (preferUniversal) {\n                  openWindow(formatWalletConnectUrl(preferUniversal, uri).redirect);\n                }\n              }\n            } else {\n              setQrCodeUri(uri);\n            }\n          } catch {\n            setErrorConnecting(true);\n          }\n        },\n        optionalChains: props.chains\n      }\n    }).then(() => {\n      done();\n    }).catch((e) => {\n      setErrorConnecting(true);\n      console.error(e);\n    });\n  }, [\n    props.walletConnect,\n    walletInfo.mobile.native,\n    walletInfo.mobile.universal,\n    wallet,\n    props.chain,\n    props.client,\n    props.chains,\n    done\n  ]);\n  const scanStarted = (0, import_react10.useRef)(false);\n  (0, import_react10.useEffect)(() => {\n    if (scanStarted.current) {\n      return;\n    }\n    scanStarted.current = true;\n    connect();\n  }, [connect]);\n  if (isMobile()) {\n    return (0, import_jsx_runtime15.jsx)(ConnectingScreen, { locale: {\n      getStartedLink: locale.getStartedLink,\n      instruction: locale.connectionScreen.instruction,\n      tryAgain: locale.connectionScreen.retry,\n      inProgress: locale.connectionScreen.inProgress,\n      failed: locale.connectionScreen.failed\n    }, onBack, walletName: walletInfo.name, walletId: wallet.id, errorConnecting, onRetry: connect, onGetStarted, client: props.client, size: props.size });\n  }\n  return (0, import_jsx_runtime15.jsx)(ScanScreen, { qrScanInstruction: locale.scanScreen.instruction, onBack, onGetStarted, qrCodeUri, walletName: walletInfo.name, walletId: wallet.id, getStartedLink: locale.getStartedLink, error: errorConnecting, onRetry: connect, client: props.client, connectModalSize: props.size });\n};\nvar WalletConnectStandaloneConnection = (props) => {\n  const { onBack, wallet, walletInfo, locale, done, setModalVisibility } = props;\n  const [qrCodeUri, setQrCodeUri] = (0, import_react10.useState)();\n  const [errorConnecting, setErrorConnecting] = (0, import_react10.useState)(false);\n  const connect = (0, import_react10.useCallback)(() => {\n    var _a, _b;\n    setErrorConnecting(false);\n    if (isMobile()) {\n      let wcModalClosed = false;\n      wait(2e3).then(() => {\n        if (!wcModalClosed) {\n          setModalVisibility(false);\n        }\n      });\n      wallet.connect({\n        chain: props.chain,\n        client: props.client,\n        projectId: (_a = props.walletConnect) == null ? void 0 : _a.projectId,\n        showQrModal: true,\n        optionalChains: props.chains\n      }).then(() => {\n        wcModalClosed = true;\n        setModalVisibility(true);\n        done();\n      }).catch((e) => {\n        wcModalClosed = true;\n        setModalVisibility(true);\n        setErrorConnecting(true);\n        console.error(e);\n      });\n    } else {\n      wallet.connect({\n        chain: props.chain,\n        client: props.client,\n        projectId: (_b = props.walletConnect) == null ? void 0 : _b.projectId,\n        showQrModal: false,\n        onDisplayUri(uri) {\n          const platformUris = {\n            ios: walletInfo.mobile.native || \"\",\n            android: walletInfo.mobile.universal || \"\",\n            other: walletInfo.mobile.universal || \"\"\n          };\n          setQrCodeUri(uri);\n          if (isMobile()) {\n            if (isAndroid()) {\n              openWindow(`${platformUris.android}wc?uri=${encodeURIComponent(uri)}`);\n            } else if (isIOS()) {\n              openWindow(`${platformUris.ios}wc?uri=${encodeURIComponent(uri)}`);\n            } else {\n              openWindow(`${platformUris.other}wc?uri=${encodeURIComponent(uri)}`);\n            }\n          }\n        },\n        optionalChains: props.chains\n      }).then(() => {\n        done();\n      }).catch((e) => {\n        setErrorConnecting(true);\n        console.error(e);\n      });\n    }\n  }, [\n    props.walletConnect,\n    walletInfo.mobile.native,\n    walletInfo.mobile.universal,\n    wallet,\n    props.chain,\n    props.client,\n    props.chains,\n    done,\n    setModalVisibility\n  ]);\n  const scanStarted = (0, import_react10.useRef)(false);\n  (0, import_react10.useEffect)(() => {\n    if (scanStarted.current) {\n      return;\n    }\n    scanStarted.current = true;\n    connect();\n  }, [connect]);\n  if (isMobile()) {\n    return (0, import_jsx_runtime15.jsx)(ConnectingScreen, { locale: {\n      getStartedLink: locale.getStartedLink,\n      instruction: locale.connectionScreen.instruction,\n      tryAgain: locale.connectionScreen.retry,\n      inProgress: locale.connectionScreen.inProgress,\n      failed: locale.connectionScreen.failed\n    }, onBack, walletName: walletInfo.name, walletId: wallet.id, errorConnecting, onRetry: connect, client: props.client, size: props.size });\n  }\n  return (0, import_jsx_runtime15.jsx)(ScanScreen, { qrScanInstruction: locale.scanScreen.instruction, onBack, qrCodeUri, walletName: walletInfo.name, walletId: wallet.id, getStartedLink: locale.getStartedLink, error: errorConnecting, onRetry: connect, client: props.client, connectModalSize: props.size });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/DeepLinkConnectUI.js\nvar import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);\nvar DeepLinkConnectUI = (props) => {\n  return (0, import_jsx_runtime16.jsxs)(Container, { animate: \"fadein\", children: [(0, import_jsx_runtime16.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime16.jsx)(ModalHeader, { onBack: props.onBack, title: props.walletInfo.name }) }), (0, import_jsx_runtime16.jsx)(Container, { flex: \"row\", center: \"x\", animate: \"fadein\", py: \"3xl\", children: (0, import_jsx_runtime16.jsx)(PulsatingContainer, { children: (0, import_jsx_runtime16.jsx)(WalletImage, { id: props.wallet.id, client: props.client, size: \"80\" }) }) }), (0, import_jsx_runtime16.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime16.jsxs)(ButtonLink, { fullWidth: true, variant: \"accent\", href: `${props.deepLinkPrefix}${window.location.toString().replace(\"https://\", \"\")}`, gap: \"xs\", children: [\"Continue in \", props.walletInfo.name, (0, import_jsx_runtime16.jsx)(ExternalLinkIcon, { width: iconSize.sm, height: iconSize.sm })] }) })] });\n};\nvar pulseAnimation = keyframes`\n0% {\n  transform: scale(0.9);\n}\n100% {\n  opacity: 0;\n  transform: scale(1.4);\n}\n`;\nvar PulsatingContainer = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    position: \"relative\",\n    \"&::before\": {\n      content: '\"\"',\n      display: \"block\",\n      position: \"absolute\",\n      left: 0,\n      top: 0,\n      bottom: 0,\n      right: 0,\n      background: theme.colors.accentText,\n      animation: `${pulseAnimation} 2s cubic-bezier(0.175, 0.885, 0.32, 1.1) infinite`,\n      zIndex: -1,\n      borderRadius: radius.xl\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/InjectedConnectUI.js\nvar import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);\nvar import_react12 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/utils/wait.js\nvar wait2 = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/InjectedConnectUI.js\nvar InjectedConnectUI = (props) => {\n  const { wallet, done } = props;\n  const [errorConnecting, setErrorConnecting] = (0, import_react12.useState)(false);\n  const locale = props.locale;\n  const connectToExtension = (0, import_react12.useCallback)(async () => {\n    try {\n      connectPrompted.current = true;\n      setErrorConnecting(false);\n      await wait2(1e3);\n      await wallet.connect({\n        client: props.client,\n        chain: props.chain\n      });\n      done();\n    } catch (e) {\n      setErrorConnecting(true);\n      console.error(e);\n    }\n  }, [props.client, props.chain, done, wallet]);\n  const connectPrompted = (0, import_react12.useRef)(false);\n  (0, import_react12.useEffect)(() => {\n    if (connectPrompted.current) {\n      return;\n    }\n    connectToExtension();\n  }, [connectToExtension]);\n  return (0, import_jsx_runtime17.jsx)(ConnectingScreen, { locale: {\n    getStartedLink: locale.getStartedLink,\n    instruction: locale.connectionScreen.instruction,\n    tryAgain: locale.connectionScreen.retry,\n    inProgress: locale.connectionScreen.inProgress,\n    failed: locale.connectionScreen.failed\n  }, onBack: props.onBack, walletName: props.walletName, onGetStarted: props.onGetStarted, walletId: props.wallet.id, onRetry: () => {\n    connectToExtension();\n  }, errorConnecting, client: props.client, size: props.size });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/AnyWalletConnectUI.js\nvar CoinbaseSDKWalletConnectUI = (0, import_react13.lazy)(() => import(\"./CoinbaseSDKConnection-PPK2JHPJ.js\"));\nvar InAppWalletConnectUI = (0, import_react13.lazy)(() => import(\"./InAppWalletConnectUI-IYEPIHHJ.js\"));\nvar EcosystemWalletConnectUI = (0, import_react13.lazy)(() => import(\"./EcosystemWalletConnectUI-ANAXYA53.js\"));\nfunction AnyWalletConnectUI(props) {\n  var _a, _b;\n  const [screen, setScreen] = (0, import_react13.useState)(\"main\");\n  const { wallet } = props;\n  const walletInfo = useWalletInfo(props.wallet.id);\n  const localeId = props.connectLocale.id;\n  const localeFnQuery = useQuery({\n    queryKey: [\"injectedWalletLocale\", localeId, (_a = walletInfo.data) == null ? void 0 : _a.name],\n    queryFn: async () => {\n      return getInjectedWalletLocale(localeId);\n    },\n    refetchOnWindowFocus: false,\n    refetchOnMount: false\n  });\n  if (walletInfo.isLoading || !localeFnQuery.data) {\n    return (0, import_jsx_runtime18.jsx)(LoadingScreen, {});\n  }\n  const localeFn = localeFnQuery.data;\n  if (!walletInfo.data) {\n    const injectedProvider = getInstalledWalletProviders().find((w) => w.info.rdns === wallet.id);\n    if (injectedProvider) {\n      return (0, import_jsx_runtime18.jsx)(InjectedConnectUI, { wallet: props.wallet, walletName: injectedProvider.info.name, done: props.done, locale: localeFn(injectedProvider.info.name), onBack: props.onBack, chain: props.chain, client: props.client, size: props.size });\n    }\n    return (0, import_jsx_runtime18.jsxs)(Container, { animate: \"fadein\", fullHeight: true, flex: \"column\", children: [(0, import_jsx_runtime18.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime18.jsx)(ModalHeader, { title: \"Not Supported\", onBack: props.onBack }) }), (0, import_jsx_runtime18.jsxs)(Container, { flex: \"column\", expand: true, center: \"both\", p: \"lg\", style: {\n      minHeight: \"300px\"\n    }, children: [(0, import_jsx_runtime18.jsx)(AccentFailIcon, { size: iconSize[\"3xl\"] }), (0, import_jsx_runtime18.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime18.jsx)(Text, { color: \"primaryText\", center: true, children: \"Wallet is not supported\" }), (0, import_jsx_runtime18.jsx)(Spacer, { y: \"xxl\" })] })] });\n  }\n  const locale = localeFn(walletInfo.data.name);\n  const isInstalled = getInstalledWalletProviders().find((w) => w.info.rdns === walletInfo.data.rdns);\n  if (screen === \"get-started\") {\n    return (0, import_jsx_runtime18.jsx)(GetStartedScreen, { locale, wallet: props.wallet, walletInfo: walletInfo.data, onBack: () => {\n      setScreen(\"main\");\n    }, client: props.client });\n  }\n  if (walletInfo.data.deepLink && !isInstalled && ((_b = wallet.getConfig()) == null ? void 0 : _b.preferDeepLink) && isMobile()) {\n    return (0, import_jsx_runtime18.jsx)(DeepLinkConnectUI, { wallet: props.wallet, walletInfo: walletInfo.data, deepLinkPrefix: walletInfo.data.deepLink.mobile, locale, onGetStarted: () => {\n      setScreen(\"get-started\");\n    }, onBack: props.onBack, client: props.client });\n  }\n  if (walletInfo.data.rdns && isInstalled) {\n    return (0, import_jsx_runtime18.jsx)(InjectedConnectUI, { wallet: props.wallet, walletName: walletInfo.data.name, done: props.done, locale, onGetStarted: () => {\n      setScreen(\"get-started\");\n    }, onBack: props.onBack, chain: props.chain, client: props.client, size: props.size });\n  }\n  if (walletInfo.data.mobile.native || walletInfo.data.mobile.universal) {\n    return (0, import_jsx_runtime18.jsx)(WalletConnectConnection, { locale, onGetStarted: () => {\n      setScreen(\"get-started\");\n    }, onBack: props.onBack, done: props.done, wallet: props.wallet, walletInfo: walletInfo.data, chain: props.chain, chains: props.chains, client: props.client, size: props.size, walletConnect: props.walletConnect });\n  }\n  if (props.wallet.id === \"walletConnect\") {\n    return (0, import_jsx_runtime18.jsx)(WalletConnectStandaloneConnection, { locale, onBack: props.onBack, done: props.done, wallet: props.wallet, walletInfo: walletInfo.data, setModalVisibility: props.setModalVisibility, chain: props.chain, chains: props.chains, client: props.client, size: props.size, walletConnect: props.walletConnect });\n  }\n  if (props.wallet.id === \"inApp\" || props.wallet.id === \"embedded\") {\n    return (0, import_jsx_runtime18.jsx)(import_react13.Suspense, { fallback: (0, import_jsx_runtime18.jsx)(LoadingScreen, {}), children: (0, import_jsx_runtime18.jsx)(InAppWalletConnectUI, { wallet: props.wallet, done: props.done, goBack: props.onBack, chain: props.chain, client: props.client, size: props.size, walletConnect: props.walletConnect, connectLocale: props.connectLocale, meta: props.meta }) });\n  }\n  if (isEcosystemWallet(props.wallet.id)) {\n    return (0, import_jsx_runtime18.jsx)(import_react13.Suspense, { fallback: (0, import_jsx_runtime18.jsx)(LoadingScreen, {}), children: (0, import_jsx_runtime18.jsx)(EcosystemWalletConnectUI, { wallet: props.wallet, done: props.done, goBack: props.onBack, chain: props.chain, client: props.client, size: props.size, meta: props.meta, walletConnect: props.walletConnect, connectLocale: props.connectLocale }) });\n  }\n  if (props.wallet.id) {\n    return (0, import_jsx_runtime18.jsx)(import_react13.Suspense, { fallback: (0, import_jsx_runtime18.jsx)(LoadingScreen, {}), children: (0, import_jsx_runtime18.jsx)(CoinbaseSDKWalletConnectUI, { locale, onGetStarted: () => {\n      setScreen(\"get-started\");\n    }, onBack: props.onBack, done: props.done, wallet: props.wallet, walletInfo: walletInfo.data, chain: props.chain, client: props.client, size: props.size }) });\n  }\n  return (0, import_jsx_runtime18.jsx)(GetStartedScreen, { locale, wallet: props.wallet, walletInfo: walletInfo.data, onBack: props.onBack, client: props.client });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/SmartWalletConnectUI.js\nfunction SmartConnectUI(props) {\n  const personalWalletInfo = useWalletInfo(props.personalWallet.id);\n  const [keyConnected, setKeyConnected] = (0, import_react14.useState)(false);\n  if (!personalWalletInfo.data) {\n    return (0, import_jsx_runtime19.jsx)(LoadingScreen, {});\n  }\n  if (!keyConnected) {\n    return (0, import_jsx_runtime19.jsx)(AnyWalletConnectUI, { wallet: props.personalWallet, done: () => {\n      setKeyConnected(true);\n    }, onBack: props.onBack, setModalVisibility: props.setModalVisibility, chain: props.chain, chains: props.chains, client: props.client, meta: props.meta, size: props.size, walletConnect: props.walletConnect, connectLocale: props.connectLocale });\n  }\n  return (0, import_jsx_runtime19.jsx)(SmartWalletConnecting, { done: props.done, personalWallet: props.personalWallet, accountAbstraction: props.accountAbstraction, onBack: props.onBack, personalWalletInfo: personalWalletInfo.data, localeId: props.connectLocale.id, size: props.size, client: props.client });\n}\nfunction SmartWalletConnecting(props) {\n  var _a;\n  const localeQuery = useQuery({\n    queryKey: [\"getSmartWalletLocale\", props.localeId],\n    queryFn: () => getSmartWalletLocale(props.localeId)\n  });\n  const { chain: smartWalletChain } = props.accountAbstraction;\n  const { personalWallet } = props;\n  const { done } = props;\n  const [personalWalletChainId, setPersonalWalletChainId] = (0, import_react14.useState)((_a = personalWallet.getChain()) == null ? void 0 : _a.id);\n  (0, import_react14.useEffect)(() => {\n    const unsubChainChanged = personalWallet.subscribe(\"chainChanged\", (chain) => setPersonalWalletChainId(chain.id));\n    return () => {\n      unsubChainChanged();\n    };\n  }, [personalWallet]);\n  const wrongNetwork = personalWalletChainId !== smartWalletChain.id;\n  const [smartWalletConnectionStatus, setSmartWalletConnectionStatus] = (0, import_react14.useState)(\"idle\");\n  const [personalWalletChainSwitchStatus, setPersonalWalletChainSwitchStatus] = (0, import_react14.useState)(\"idle\");\n  const connectionManager = useConnectionManager();\n  const handleConnect = (0, import_react14.useCallback)(async () => {\n    if (!personalWallet) {\n      throw new Error(\"No personal wallet\");\n    }\n    setSmartWalletConnectionStatus(\"connecting\");\n    try {\n      const connected = await connectionManager.handleConnection(personalWallet, {\n        accountAbstraction: props.accountAbstraction,\n        client: props.client\n      });\n      done(connected);\n      setSmartWalletConnectionStatus(\"idle\");\n    } catch (e) {\n      console.error(e);\n      setSmartWalletConnectionStatus(\"connect-error\");\n    }\n  }, [\n    done,\n    personalWallet,\n    props.client,\n    props.accountAbstraction,\n    connectionManager\n  ]);\n  const connectStarted = (0, import_react14.useRef)(false);\n  (0, import_react14.useEffect)(() => {\n    if (!wrongNetwork && !connectStarted.current) {\n      handleConnect();\n      connectStarted.current = true;\n    }\n  }, [handleConnect, wrongNetwork]);\n  if (!localeQuery.data) {\n    return (0, import_jsx_runtime19.jsx)(LoadingScreen, {});\n  }\n  if (wrongNetwork) {\n    return (0, import_jsx_runtime19.jsxs)(Container, { fullHeight: true, animate: \"fadein\", flex: \"column\", children: [(0, import_jsx_runtime19.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime19.jsx)(ModalHeader, { title: props.personalWalletInfo.name, onBack: props.onBack }) }), props.size === \"compact\" && (0, import_jsx_runtime19.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime19.jsx)(Container, { expand: true, flex: \"column\", center: \"both\", p: \"lg\", children: (0, import_jsx_runtime19.jsxs)(Container, { p: props.size === \"wide\" ? \"lg\" : void 0, children: [(0, import_jsx_runtime19.jsx)(Container, { flex: \"row\", center: \"x\", color: \"danger\", children: (0, import_jsx_runtime19.jsx)(ExclamationTriangleIcon, { width: iconSize.lg, height: iconSize.lg }) }), (0, import_jsx_runtime19.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime19.jsx)(Text, { size: \"lg\", color: \"primaryText\", center: true, weight: 500, children: localeQuery.data.wrongNetworkScreen.title }), (0, import_jsx_runtime19.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime19.jsx)(Text, { multiline: true, center: true, children: localeQuery.data.wrongNetworkScreen.subtitle }), (0, import_jsx_runtime19.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime19.jsxs)(Container, { flex: \"column\", gap: \"md\", children: [(0, import_jsx_runtime19.jsxs)(Button, { type: \"button\", fullWidth: true, variant: \"accent\", style: {\n      display: \"flex\",\n      alignItems: \"center\",\n      gap: spacing.sm\n    }, onClick: async () => {\n      if (!personalWallet.switchChain) {\n        setPersonalWalletChainSwitchStatus(\"switch-error\");\n        throw new Error(\"No switchChain method\");\n      }\n      try {\n        setPersonalWalletChainSwitchStatus(\"switching\");\n        await personalWallet.switchChain(smartWalletChain);\n        const newChain = personalWallet.getChain();\n        if (newChain) {\n          setPersonalWalletChainId(newChain.id);\n        }\n        setPersonalWalletChainSwitchStatus(\"idle\");\n      } catch (e) {\n        console.error(e);\n        setPersonalWalletChainSwitchStatus(\"switch-error\");\n      }\n    }, children: [personalWalletChainSwitchStatus === \"switching\" ? \"Switching\" : \"Switch Network\", personalWalletChainSwitchStatus === \"switching\" && (0, import_jsx_runtime19.jsx)(Spinner, { size: \"sm\", color: \"accentButtonText\" })] }), (0, import_jsx_runtime19.jsxs)(Container, { flex: \"row\", gap: \"sm\", center: \"both\", color: \"danger\", style: {\n      textAlign: \"center\",\n      fontSize: fontSize.sm,\n      opacity: personalWalletChainSwitchStatus === \"switch-error\" ? 1 : 0,\n      transition: \"opacity 200ms ease\"\n    }, children: [(0, import_jsx_runtime19.jsx)(ExclamationTriangleIcon, { width: iconSize.sm, height: iconSize.sm }), (0, import_jsx_runtime19.jsx)(\"span\", { children: localeQuery.data.wrongNetworkScreen.failedToSwitch })] })] })] }) })] });\n  }\n  if (smartWalletConnectionStatus === \"connect-error\") {\n    return (0, import_jsx_runtime19.jsx)(Container, { fullHeight: true, animate: \"fadein\", flex: \"column\", center: \"both\", p: \"lg\", style: {\n      minHeight: \"300px\"\n    }, children: (0, import_jsx_runtime19.jsx)(Text, { color: \"danger\", children: localeQuery.data.failedToConnect }) });\n  }\n  return (0, import_jsx_runtime19.jsxs)(Container, { fullHeight: true, flex: \"column\", center: \"both\", style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime19.jsx)(Text, { color: \"primaryText\", multiline: true, center: true, children: localeQuery.data.connecting }), (0, import_jsx_runtime19.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime19.jsx)(Spinner, { color: \"accentText\", size: \"lg\" })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/TOS.js\nvar import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);\nfunction TOS(props) {\n  const { termsOfServiceUrl, privacyPolicyUrl, locale, requireApproval } = props;\n  if (!termsOfServiceUrl && !privacyPolicyUrl && !requireApproval) {\n    return null;\n  }\n  const bothGiven = termsOfServiceUrl && privacyPolicyUrl;\n  return (0, import_jsx_runtime20.jsx)(Container, { flex: \"row\", center: \"x\", children: (0, import_jsx_runtime20.jsxs)(Text, { size: \"xs\", multiline: true, balance: true, inline: true, center: true, style: {\n    maxWidth: \"250px\"\n  }, children: [requireApproval && (0, import_jsx_runtime20.jsx)(\"input\", { style: {\n    transform: \"translateY(3px)\",\n    marginRight: spacing[\"3xs\"]\n  }, type: \"checkbox\", onChange: props.onApprove, checked: props.isApproved, disabled: !requireApproval }), locale.prefix, \" \", termsOfServiceUrl && (0, import_jsx_runtime20.jsxs)(Link, { inline: true, size: \"xs\", href: termsOfServiceUrl, target: \"_blank\", style: {\n    whiteSpace: \"nowrap\"\n  }, children: [\" \", locale.termsOfService, \" \"] }), bothGiven && `${locale.and} `, privacyPolicyUrl && (0, import_jsx_runtime20.jsx)(Link, { inline: true, size: \"xs\", href: privacyPolicyUrl, target: \"_blank\", children: locale.privacyPolicy }), !privacyPolicyUrl && !termsOfServiceUrl && (0, import_jsx_runtime20.jsx)(Text, { inline: true, size: \"xs\", children: \"Terms of Service and Privacy Policy\" })] }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/PoweredByTW.js\nvar import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/ThirdwebTextIcon.js\nvar import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);\nvar ThirdwebTextIcon = (props) => {\n  return (0, import_jsx_runtime21.jsxs)(\"svg\", { width: props.height * 74 / 11, height: props.height, viewBox: \"0 0 74 11\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"presentation\", children: [(0, import_jsx_runtime21.jsx)(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M34.1489 0.373291C33.5297 0.373291 33.022 0.874761 33.022 1.51414C33.022 2.14097 33.5297 2.64244 34.1489 2.64244C34.7681 2.64244 35.2758 2.14097 35.2758 1.51414C35.2758 0.874761 34.7681 0.373291 34.1489 0.373291ZM35.1396 3.21913H33.1706V9.97644H35.1396V3.21913ZM21.6787 0.624035H23.5982V3.21914H25.0718V5.02444H23.5982V7.40642C23.5982 7.75745 23.8706 8.03326 24.205 8.03326H25.0594V9.95138H24.205C22.818 9.95138 21.6787 8.81054 21.6787 7.39389V5.0119H20.7871V3.20661H21.6787V0.624035ZM29.7652 3.0687C28.8736 3.0687 28.1677 3.44481 27.8953 4.03403V0.624035H25.9263V9.96392H27.8953V6.17782C27.8953 5.388 28.403 4.83639 29.1213 4.83639C29.8519 4.83639 30.2605 5.31278 30.2605 6.11514V9.97646H32.2295V5.8644C32.2295 4.10925 31.3379 3.0687 29.7652 3.0687ZM37.9507 3.2066V4.13432C38.2479 3.45734 38.9661 3.0687 39.8701 3.05616C40.0063 3.05616 40.1797 3.0687 40.3902 3.09377V4.97429C40.1921 4.93668 39.9692 4.9116 39.7339 4.9116C38.607 4.9116 37.9507 5.55098 37.9507 6.66675V9.96392H35.9817V3.2066H37.9507ZM45.9257 4.09672C45.7275 3.50749 44.9474 3.09378 43.9443 3.09378C43.0032 3.09378 42.2106 3.43227 41.5791 4.10926C40.9599 4.7737 40.6379 5.61367 40.6379 6.59154C40.6379 7.5694 40.9599 8.39683 41.5791 9.08635C42.2106 9.7508 43.0032 10.0893 43.9443 10.0893C44.9474 10.0893 45.7275 9.67558 45.9257 9.08635V9.97646H47.8946V0.624035H45.9257V4.09672ZM45.5294 7.79506C45.195 8.12102 44.7864 8.27146 44.3034 8.27146C43.8329 8.27146 43.4242 8.10848 43.1022 7.79506C42.7679 7.45657 42.6069 7.0554 42.6069 6.59154C42.6069 6.12767 42.7679 5.7265 43.1022 5.40054C43.4366 5.06205 43.8329 4.89907 44.3034 4.89907C44.7988 4.89907 45.2074 5.06205 45.5294 5.40054C45.8761 5.7265 46.0495 6.12767 46.0495 6.59154C46.0495 7.0554 45.8761 7.45657 45.5294 7.79506ZM53.5787 3.2442L55.3619 6.45361L56.5631 3.21913H58.4949L55.7458 10.3651L53.5787 6.47868L51.4115 10.3651L48.6748 3.21913H50.6066L51.7954 6.45361L53.5787 3.2442ZM61.7394 3.05616C60.7239 3.05616 59.8694 3.38212 59.2007 4.03403C58.5444 4.6734 58.2101 5.5259 58.2101 6.57899V6.64167C58.2101 7.69476 58.5444 8.54726 59.2007 9.18664C59.8818 9.81347 60.7487 10.1394 61.8384 10.1394C62.8539 10.1394 63.6836 9.93884 64.3151 9.52513V7.78252C63.6959 8.22131 62.9034 8.43443 61.9499 8.43443C60.9097 8.43443 60.2286 7.92042 60.1914 7.11807H65.0829C65.1077 6.91748 65.12 6.69182 65.12 6.46616C65.12 5.50083 64.7981 4.69848 64.1789 4.04657C63.5597 3.38212 62.73 3.05616 61.7394 3.05616ZM60.1914 5.82679C60.2038 5.51337 60.3648 5.25009 60.662 5.03697C60.9716 4.82385 61.3183 4.71101 61.7394 4.71101C62.5195 4.71101 63.1263 5.22502 63.1263 5.82679H60.1914ZM69.8135 3.09378C70.7546 3.09378 71.5472 3.43227 72.1663 4.10925C72.7979 4.78624 73.1199 5.60113 73.1199 6.579C73.1199 7.55686 72.7979 8.38429 72.1663 9.07381C71.5472 9.73826 70.7546 10.0768 69.8135 10.0768C68.8104 10.0768 68.0302 9.66304 67.8321 9.07381V9.96392H65.8631V0.624035H67.8321V4.09672C68.0302 3.50749 68.8104 3.09378 69.8135 3.09378ZM69.4543 8.27146C69.9249 8.27146 70.3212 8.12102 70.6555 7.79506C70.9899 7.45657 71.1509 7.05539 71.1509 6.59153C71.1509 6.12767 70.9899 5.7265 70.6555 5.40054C70.3336 5.06205 69.9249 4.89907 69.4543 4.89907C68.9714 4.89907 68.5627 5.06205 68.216 5.40054C67.8816 5.7265 67.7083 6.12767 67.7083 6.59153C67.7083 7.05539 67.8816 7.45657 68.216 7.79506C68.5503 8.10848 68.959 8.27146 69.4543 8.27146Z\", fill: \"currentColor\" }), (0, import_jsx_runtime21.jsx)(\"g\", { clipPath: \"url(#clip0_5017_2727)\", children: (0, import_jsx_runtime21.jsx)(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M0.045011 0.900694C-0.126602 0.467742 0.193222 0 0.661257 0H3.56697C3.83999 0 4.08181 0.162357 4.18322 0.413623L6.49609 6.18115C6.55849 6.33578 6.55849 6.50973 6.49609 6.66822L5.04128 10.2903C4.81896 10.8431 4.03111 10.8431 3.80879 10.2903L0.045011 0.900694ZM5.65759 0.881366C5.50158 0.45228 5.8214 0 6.28164 0H8.81292C9.09374 0 9.34336 0.173954 9.43697 0.432951L11.5392 6.20048C11.5899 6.34351 11.5899 6.502 11.5392 6.6489L10.2755 10.1164C10.0649 10.6962 9.23805 10.6962 9.02744 10.1164L5.65759 0.881366ZM11.3404 0C10.8724 0 10.5525 0.467742 10.7241 0.900694L14.4879 10.2903C14.7102 10.8431 15.4981 10.8431 15.7204 10.2903L17.1752 6.66822C17.2376 6.50973 17.2376 6.33578 17.1752 6.18115L14.8623 0.413623C14.7609 0.162357 14.5191 0 14.2461 0H11.3404Z\", fill: \"currentColor\" }) }), (0, import_jsx_runtime21.jsx)(\"defs\", { children: (0, import_jsx_runtime21.jsx)(\"clipPath\", { id: \"clip0_5017_2727\", children: (0, import_jsx_runtime21.jsx)(\"rect\", { width: \"17.219\", height: \"10.7049\", fill: \"white\" }) }) })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/PoweredByTW.js\nfunction PoweredByThirdweb() {\n  return (0, import_jsx_runtime22.jsx)(Link, { color: \"secondaryText\", hoverColor: \"primaryText\", target: \"_blank\", href: \"https://thirdweb.com/connect?utm_source=cw_text\", children: (0, import_jsx_runtime22.jsxs)(Container, { flex: \"row\", center: \"both\", style: {\n    color: \"currentColor\",\n    gap: 4\n  }, children: [(0, import_jsx_runtime22.jsx)(Text, { size: \"sm\", weight: 600, style: {\n    color: \"currentColor\"\n  }, children: \"Powered by\" }), (0, import_jsx_runtime22.jsx)(ThirdwebTextIcon, { height: 13 })] }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/WalletSelector.js\nvar InAppWalletSelectionUI = (0, import_react15.lazy)(() => import(\"./InAppWalletSelectionUI-QJ7CQPJG.js\"));\nvar inAppWalletId = \"inApp\";\nfunction WalletSelector(props) {\n  const [personalWallet, setPersonalWallet] = (0, import_react15.useState)(null);\n  if (!props.accountAbstraction) {\n    return (0, import_jsx_runtime23.jsx)(WalletSelectorInner, { ...props });\n  }\n  if (personalWallet) {\n    return (0, import_jsx_runtime23.jsx)(SmartConnectUI, { accountAbstraction: props.accountAbstraction, done: props.done, personalWallet, setModalVisibility: props.setModalVisibility, onBack: props.goBack, meta: props.meta, size: props.size, chain: props.chain, chains: props.chains, client: props.client, walletConnect: props.walletConnect, connectLocale: props.connectLocale });\n  }\n  return (0, import_jsx_runtime23.jsx)(WalletSelectorInner, { ...props, done: (w) => {\n    setPersonalWallet(w);\n  } });\n}\nvar WalletSelectorInner = (props) => {\n  const { walletIdsToHide } = props;\n  const isCompact = props.size === \"compact\";\n  const [isWalletGroupExpanded, setIsWalletGroupExpanded] = (0, import_react15.useState)(false);\n  const [approvedTOS, setApprovedTOS] = (0, import_react15.useState)(false);\n  const installedWallets = getInstalledWallets();\n  const propsWallets = props.wallets;\n  let _wallets = [...propsWallets];\n  for (const iW of installedWallets) {\n    if (!propsWallets.find((w) => w.id === iW.id)) {\n      _wallets.push(iW);\n    }\n  }\n  if (walletIdsToHide) {\n    _wallets = _wallets.filter((w) => !(walletIdsToHide == null ? void 0 : walletIdsToHide.includes(w.id)));\n  }\n  const localWalletConfig = false;\n  const nonLocalWalletConfigs = _wallets;\n  const socialWallets = nonLocalWalletConfigs.filter((w) => w.id === inAppWalletId);\n  const eoaWallets = sortWallets(nonLocalWalletConfigs.filter((w) => w.id !== inAppWalletId), props.recommendedWallets);\n  const continueAsGuest = localWalletConfig && (0, import_jsx_runtime23.jsx)(Button, { fullWidth: true, variant: isCompact ? \"outline\" : \"link\", style: !isCompact ? {\n    textAlign: \"left\",\n    justifyContent: \"flex-start\"\n  } : void 0, onClick: () => {\n    props.selectWallet(localWalletConfig);\n  }, \"data-test\": \"continue-as-guest-button\", children: props.connectLocale.continueAsGuest });\n  const enableTWIconLink = (0, import_react15.useRef)(false);\n  (0, import_react15.useEffect)(() => {\n    setTimeout(() => {\n      enableTWIconLink.current = true;\n    }, 1e3);\n  }, []);\n  const twTitle = props.modalHeader ? (0, import_jsx_runtime23.jsx)(ModalHeader, { title: props.modalHeader.title, onBack: props.modalHeader.onBack }) : (0, import_jsx_runtime23.jsxs)(Container, { gap: \"xxs\", center: \"y\", flex: \"row\", children: [!props.meta.titleIconUrl ? null : (0, import_jsx_runtime23.jsx)(Img, { src: props.meta.titleIconUrl, width: iconSize.md, height: iconSize.md, client: props.client }), (0, import_jsx_runtime23.jsxs)(ModalTitle, { children: [\" \", props.title, \" \"] })] });\n  const handleSelect = async (wallet) => {\n    props.selectWallet(wallet);\n  };\n  const connectAWallet = (0, import_jsx_runtime23.jsx)(WalletTypeRowButton, { client: props.client, icon: OutlineWalletIcon, onClick: () => {\n    setIsWalletGroupExpanded(true);\n  }, title: props.connectLocale.connectAWallet });\n  const newToWallets = (0, import_jsx_runtime23.jsxs)(Container, { flex: \"row\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime23.jsx)(Text, { color: \"secondaryText\", size: \"sm\", weight: 500, children: props.connectLocale.newToWallets }), (0, import_jsx_runtime23.jsx)(Link, { weight: 500, size: \"sm\", target: \"_blank\", href: \"https://blog.thirdweb.com/web3-wallet/\", children: props.connectLocale.getStarted })] });\n  const tos = props.meta.requireApproval || props.meta.termsOfServiceUrl || props.meta.privacyPolicyUrl ? (0, import_jsx_runtime23.jsx)(TOS, { termsOfServiceUrl: props.meta.termsOfServiceUrl, privacyPolicyUrl: props.meta.privacyPolicyUrl, locale: props.connectLocale.agreement, requireApproval: props.meta.requireApproval, isApproved: approvedTOS, onApprove: () => setApprovedTOS(!approvedTOS) }) : void 0;\n  let topSection;\n  let bottomSection;\n  if (!isCompact) {\n    topSection = (0, import_jsx_runtime23.jsx)(WalletSelection, { wallets: nonLocalWalletConfigs, selectWallet: handleSelect, done: props.done, goBack: props.goBack, onShowAll: props.onShowAll, client: props.client, connectLocale: props.connectLocale, size: props.size, recommendedWallets: props.recommendedWallets, chain: props.chain, showAllWallets: props.showAllWallets, diableSelectionDataReset: props.disableSelectionDataReset, disabled: props.meta.requireApproval && !approvedTOS });\n    if (continueAsGuest) {\n      bottomSection = (0, import_jsx_runtime23.jsx)(ScreenBottomContainer, { children: continueAsGuest });\n    }\n  } else {\n    if (socialWallets.length === 0) {\n      topSection = (0, import_jsx_runtime23.jsx)(WalletSelection, { wallets: nonLocalWalletConfigs, selectWallet: handleSelect, done: props.done, goBack: props.goBack, onShowAll: props.onShowAll, client: props.client, connectLocale: props.connectLocale, size: props.size, recommendedWallets: props.recommendedWallets, chain: props.chain, showAllWallets: props.showAllWallets, diableSelectionDataReset: props.disableSelectionDataReset, disabled: props.meta.requireApproval && !approvedTOS });\n      bottomSection = (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [(0, import_jsx_runtime23.jsx)(Line, {}), (0, import_jsx_runtime23.jsxs)(Container, { flex: \"column\", p: \"md\", gap: \"md\", children: [newToWallets, continueAsGuest] }), !continueAsGuest && (0, import_jsx_runtime23.jsx)(Line, {}), tos && (0, import_jsx_runtime23.jsx)(Container, { px: \"md\", style: {\n        paddingBottom: spacing.md,\n        paddingTop: continueAsGuest ? 0 : spacing.md\n      }, children: tos })] });\n    } else {\n      if (!isWalletGroupExpanded) {\n        topSection = (0, import_jsx_runtime23.jsxs)(Container, { px: \"xs\", children: [(0, import_jsx_runtime23.jsx)(WalletSelection, { wallets: socialWallets, selectWallet: handleSelect, done: props.done, goBack: props.goBack, client: props.client, connectLocale: props.connectLocale, size: props.size, recommendedWallets: props.recommendedWallets, chain: props.chain, showAllWallets: props.showAllWallets, diableSelectionDataReset: props.disableSelectionDataReset, disabled: props.meta.requireApproval && !approvedTOS }), eoaWallets.length > 0 && (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [(0, import_jsx_runtime23.jsx)(TextDivider, { text: props.connectLocale.or }), (0, import_jsx_runtime23.jsx)(Spacer, { y: \"lg\" })] })] });\n        if (eoaWallets.length === 0) {\n          bottomSection = tos || continueAsGuest ? (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [(0, import_jsx_runtime23.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime23.jsx)(Line, {}), continueAsGuest && (0, import_jsx_runtime23.jsxs)(Container, { p: \"lg\", children: [\" \", continueAsGuest] }), tos && (0, import_jsx_runtime23.jsxs)(Container, { p: \"md\", children: [\" \", tos, \" \"] })] }) : (0, import_jsx_runtime23.jsx)(Spacer, { y: \"sm\" });\n        } else {\n          if (eoaWallets.length > 1) {\n            bottomSection = (0, import_jsx_runtime23.jsxs)(Container, { flex: \"column\", style: { position: \"relative\" }, gap: \"sm\", children: [(0, import_jsx_runtime23.jsx)(GradientDiv, {}), (0, import_jsx_runtime23.jsxs)(Container, { px: \"lg\", flex: \"column\", gap: \"md\", children: [connectAWallet, continueAsGuest] }), tos ? (0, import_jsx_runtime23.jsxs)(Container, { p: \"md\", children: [\" \", tos, \" \"] }) : (0, import_jsx_runtime23.jsx)(Spacer, { y: \"xxs\" })] });\n          } else {\n            bottomSection = (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [(0, import_jsx_runtime23.jsx)(Container, { px: \"lg\", children: (0, import_jsx_runtime23.jsx)(WalletSelection, { wallets: eoaWallets, selectWallet: handleSelect, done: props.done, goBack: props.goBack, onShowAll: props.onShowAll, client: props.client, connectLocale: props.connectLocale, size: props.size, recommendedWallets: props.recommendedWallets, chain: props.chain, showAllWallets: props.showAllWallets, diableSelectionDataReset: props.disableSelectionDataReset, disabled: props.meta.requireApproval && !approvedTOS }) }), continueAsGuest && (0, import_jsx_runtime23.jsx)(Container, { flex: \"column\", px: \"lg\", gap: \"lg\", children: continueAsGuest }), tos ? (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [continueAsGuest ? (0, import_jsx_runtime23.jsx)(Spacer, { y: \"md\" }) : (0, import_jsx_runtime23.jsx)(Line, {}), (0, import_jsx_runtime23.jsxs)(Container, { p: \"md\", children: [\" \", tos, \" \"] })] }) : (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children: continueAsGuest && (0, import_jsx_runtime23.jsx)(Spacer, { y: \"xl\" }) })] });\n          }\n        }\n      } else {\n        topSection = (0, import_jsx_runtime23.jsx)(WalletSelection, { wallets: eoaWallets, selectWallet: handleSelect, done: props.done, goBack: props.goBack, onShowAll: props.onShowAll, client: props.client, connectLocale: props.connectLocale, size: props.size, recommendedWallets: props.recommendedWallets, chain: props.chain, showAllWallets: props.showAllWallets, diableSelectionDataReset: props.disableSelectionDataReset, disabled: props.meta.requireApproval && !approvedTOS });\n        bottomSection = (0, import_jsx_runtime23.jsx)(ScreenBottomContainer, { children: newToWallets });\n      }\n    }\n  }\n  const showHeader = !props.hideHeader || props.modalHeader;\n  return (0, import_jsx_runtime23.jsxs)(Container, { scrollY: true, flex: \"column\", animate: \"fadein\", fullHeight: true, style: {\n    maxHeight: props.size === \"compact\" ? compactModalMaxHeight : void 0\n  }, children: [showHeader && (0, import_jsx_runtime23.jsx)(Container, { p: \"lg\", children: isWalletGroupExpanded ? (0, import_jsx_runtime23.jsx)(ModalHeader, { title: twTitle, onBack: () => {\n    setIsWalletGroupExpanded(false);\n  } }) : twTitle }), (0, import_jsx_runtime23.jsxs)(Container, { expand: true, scrollY: true, px: \"md\", style: !showHeader ? {\n    paddingTop: spacing.lg\n  } : {\n    paddingTop: \"2px\"\n  }, children: [!showHeader && isWalletGroupExpanded && (0, import_jsx_runtime23.jsx)(Container, { flex: \"row\", center: \"y\", style: {\n    padding: spacing.sm,\n    paddingTop: 0\n  }, children: (0, import_jsx_runtime23.jsxs)(IconButton, { onClick: () => {\n    setIsWalletGroupExpanded(false);\n  }, style: {\n    gap: spacing.xxs,\n    transform: `translateX(-${spacing.xs})`,\n    paddingBlock: spacing.xxs,\n    paddingRight: spacing.xs\n  }, children: [(0, import_jsx_runtime23.jsx)(ChevronLeftIcon, { width: iconSize.sm, height: iconSize.sm }), props.connectLocale.goBackButton] }) }), topSection] }), bottomSection, isCompact && props.meta.showThirdwebBranding !== false && (0, import_jsx_runtime23.jsx)(Container, { py: \"md\", children: (0, import_jsx_runtime23.jsx)(PoweredByThirdweb, {}) })] });\n};\nvar _installedWallets = [];\nfunction getInstalledWallets() {\n  if (_installedWallets.length === 0) {\n    const providers = getInstalledWalletProviders();\n    const walletIds = providers.map((provider) => provider.info.rdns);\n    _installedWallets = walletIds.map((w) => createWallet(w));\n  }\n  return _installedWallets;\n}\nvar WalletSelection = (props) => {\n  const wallets = sortWallets(props.wallets, props.recommendedWallets);\n  const { screen } = useScreenContext();\n  const setSelectionData = useSetSelectionData();\n  return (0, import_jsx_runtime23.jsxs)(WalletList, { style: {\n    minHeight: \"100%\",\n    maxHeight: \"370px\"\n  }, children: [wallets.map((wallet) => {\n    const isActive = screen ? typeof screen === \"object\" && screen.id === wallet.id : false;\n    return (0, import_jsx_runtime23.jsx)(\"li\", { children: wallet.id === \"inApp\" && props.size === \"compact\" ? (0, import_jsx_runtime23.jsx)(import_react15.Suspense, { fallback: (0, import_jsx_runtime23.jsx)(LoadingScreen, { height: \"195px\" }), children: (0, import_jsx_runtime23.jsx)(InAppWalletSelectionUI, { done: () => props.done(wallet), select: () => props.selectWallet(wallet), wallet, goBack: props.goBack, client: props.client, connectLocale: props.connectLocale, size: props.size, recommendedWallets: props.recommendedWallets, chain: props.chain, disabled: props.disabled }) }) : (0, import_jsx_runtime23.jsx)(WalletEntryButton, { walletId: wallet.id, selectWallet: () => {\n      if (!props.diableSelectionDataReset) {\n        setSelectionData({});\n      }\n      props.selectWallet(wallet);\n    }, connectLocale: props.connectLocale, client: props.client, recommendedWallets: props.recommendedWallets, isActive, badge: void 0 }) }, wallet.id);\n  }), props.onShowAll && props.showAllWallets !== false && (0, import_jsx_runtime23.jsx)(ButtonContainer, { children: (0, import_jsx_runtime23.jsxs)(WalletButtonEl, { onClick: props.onShowAll, children: [(0, import_jsx_runtime23.jsxs)(ShowAllWalletsIcon, { children: [(0, import_jsx_runtime23.jsx)(\"div\", { \"data-dot\": true }), (0, import_jsx_runtime23.jsx)(\"div\", { \"data-dot\": true }), (0, import_jsx_runtime23.jsx)(\"div\", { \"data-dot\": true }), (0, import_jsx_runtime23.jsx)(\"div\", { \"data-dot\": true })] }), (0, import_jsx_runtime23.jsxs)(Container, { flex: \"row\", gap: \"xs\", children: [(0, import_jsx_runtime23.jsx)(Text, { color: \"primaryText\", children: \"All Wallets\" }), (0, import_jsx_runtime23.jsx)(BadgeText, { children: \" 350+ \" })] })] }) })] });\n};\nvar BadgeText = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    backgroundColor: theme.colors.secondaryButtonBg,\n    paddingBlock: \"3px\",\n    paddingInline: spacing.xxs,\n    fontSize: fontSize.xs,\n    borderRadius: radius.sm,\n    color: theme.colors.secondaryText\n  };\n});\nvar ButtonContainer = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    \"&:hover [data-dot]\": {\n      background: theme.colors.primaryText\n    }\n  };\n});\nvar ShowAllWalletsIcon = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    width: `${iconSize.xl}px`,\n    height: `${iconSize.xl}px`,\n    backgroundColor: theme.colors.tertiaryBg,\n    border: `2px solid ${theme.colors.borderColor}`,\n    borderRadius: radius.md,\n    display: \"grid\",\n    gridTemplateColumns: \"1fr 1fr\",\n    justifyItems: \"center\",\n    alignItems: \"center\",\n    padding: spacing.xs,\n    \"& div\": {\n      transition: \"background 200ms ease\",\n      background: theme.colors.secondaryText,\n      borderRadius: \"50%\",\n      width: \"10px\",\n      height: \"10px\"\n    }\n  };\n});\nvar WalletList = StyledUl({\n  all: \"unset\",\n  listStyleType: \"none\",\n  display: \"flex\",\n  flexDirection: \"column\",\n  gap: \"2px\",\n  boxSizing: \"border-box\",\n  overflowY: \"auto\",\n  flex: 1,\n  ...noScrollBar,\n  // to show the box-shadow of inputs that overflows\n  padding: \"2px\",\n  margin: \"-2px\",\n  marginBottom: 0,\n  paddingBottom: spacing.lg\n});\nvar GradientDiv = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  theme.colors.modalBg;\n  return {\n    height: spacing.lg,\n    position: \"absolute\",\n    top: `-${spacing.lg}`,\n    left: 0,\n    width: \"100%\",\n    background: `linear-gradient(to bottom, transparent 0%, ${theme.colors.modalBg} 80%)`,\n    pointerEvents: \"none\"\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/defaultWallets.js\nfunction getDefaultWallets(options) {\n  return [\n    createWallet(\"inApp\"),\n    createWallet(METAMASK),\n    createWallet(COINBASE, {\n      appMetadata: options == null ? void 0 : options.appMetadata,\n      chains: options == null ? void 0 : options.chains\n    }),\n    createWallet(RAINBOW),\n    createWallet(\"io.rabby\"),\n    createWallet(ZERION)\n  ];\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/WalletAuth.js\nfunction WalletAuth(props) {\n  var _a;\n  const { wallet, done } = props;\n  const addConnectedWallet = useAddConnectedWallet();\n  const walletToConnect = (0, import_react16.useRef)(void 0);\n  const [status, setStatus] = (0, import_react16.useState)(\"selecting\");\n  const [error, setError] = (0, import_react16.useState)();\n  const [showAll, setShowAll] = (0, import_react16.useState)(false);\n  const ecosystem = isEcosystemWallet(wallet) ? {\n    id: wallet.id,\n    partnerId: (_a = wallet.getConfig()) == null ? void 0 : _a.partnerId\n  } : void 0;\n  const back = () => {\n    setStatus(\"selecting\");\n    walletToConnect.current = void 0;\n    props.onBack();\n  };\n  async function login(walletToLink) {\n    setStatus(\"loading\");\n    walletToConnect.current = walletToLink;\n    try {\n      if (props.isLinking) {\n        await linkProfile({\n          client: props.client,\n          strategy: \"wallet\",\n          wallet: walletToLink,\n          chain: wallet.getChain() || defineChain(1),\n          ecosystem\n        }).catch((e) => {\n          setError(e.message);\n          throw e;\n        });\n      } else {\n        await wallet.connect({\n          client: props.client,\n          strategy: \"wallet\",\n          wallet: walletToLink,\n          chain: walletToLink.getChain() || defineChain(1)\n        });\n      }\n      addConnectedWallet(walletToLink);\n      done();\n    } catch {\n      setStatus(\"error\");\n    }\n  }\n  if (!walletToConnect.current) {\n    if (showAll) {\n      return (0, import_jsx_runtime24.jsx)(import_react16.Suspense, { fallback: (0, import_jsx_runtime24.jsx)(LoadingScreen, {}), children: (0, import_jsx_runtime24.jsx)(AllWalletsUI_default, { onBack: () => setShowAll(false), onSelect: async (newWallet) => {\n        login(newWallet);\n        setShowAll(false);\n      }, client: props.client, connectLocale: props.locale, recommendedWallets: void 0, specifiedWallets: [], size: props.size, disableSelectionDataReset: true }) });\n    }\n    return (0, import_jsx_runtime24.jsx)(WalletSelector, { title: props.locale.connectAWallet, wallets: getDefaultWallets(), selectWallet: async (newWallet) => {\n      login(newWallet);\n    }, onShowAll: () => {\n      setShowAll(true);\n    }, done: () => {\n    }, goBack: back, setModalVisibility: () => {\n    }, client: props.client, connectLocale: props.locale, hideHeader: false, recommendedWallets: void 0, chain: wallet.getChain(), showAllWallets: true, chains: [], size: props.size, meta: props.meta || {}, walletConnect: props.walletConnect, modalHeader: {\n      title: props.isLinking ? props.inAppLocale.linkWallet : props.inAppLocale.signInWithWallet,\n      onBack: back\n    }, walletIdsToHide: [\"inApp\"], disableSelectionDataReset: true });\n  }\n  return (0, import_jsx_runtime24.jsxs)(Container, { animate: \"fadein\", fullHeight: true, flex: \"column\", children: [(0, import_jsx_runtime24.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime24.jsx)(ModalHeader, { title: props.isLinking ? props.inAppLocale.linkWallet : props.inAppLocale.signInWithWallet, onBack: back }) }), (0, import_jsx_runtime24.jsx)(Container, { px: props.size === \"wide\" ? \"xxl\" : \"lg\", expand: true, flex: \"column\", center: \"y\", children: (0, import_jsx_runtime24.jsx)(\"div\", { children: status === \"error\" ? (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [(0, import_jsx_runtime24.jsx)(ErrorState, { onTryAgain: () => {\n    if (!walletToConnect.current) {\n      throw new Error(\"Failed to connect to unknown wallet\");\n    }\n    login(walletToConnect.current);\n  }, title: error || \"Failed to Login\" }), (0, import_jsx_runtime24.jsx)(Spacer, { y: \"lg\" })] }) : (0, import_jsx_runtime24.jsx)(import_jsx_runtime24.Fragment, { children: (0, import_jsx_runtime24.jsx)(LoadingState, { title: \"Sign in with your wallet\", subtitle: \"A pop-up prompt will appear to sign-in and verify your wallet\", icon: (0, import_jsx_runtime24.jsx)(WalletImage, { id: walletToConnect.current.id ?? \"\", size: iconSize.xl, client: props.client }) }) }) }) })] });\n}\n\nexport {\n  getDefaultWallets,\n  AccentFailIcon,\n  QRCode,\n  wait2 as wait,\n  GuestLogin,\n  OTPLoginUI,\n  PassKeyLogin,\n  SocialLogin,\n  TOS,\n  PoweredByThirdweb,\n  WalletAuth,\n  AnyWalletConnectUI,\n  SmartConnectUI,\n  WalletSelector\n};\n//# sourceMappingURL=chunk-7ZNEOXS2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-AARWH2GQ.js",
    "content": "import {\n  Container,\n  CustomThemeProvider,\n  Skeleton,\n  StyledButton,\n  StyledCircle,\n  StyledDiv,\n  StyledInput,\n  StyledLabel,\n  StyledSvg,\n  Text,\n  WalletImage,\n  fontSize,\n  iconSize,\n  keyframes,\n  radius,\n  spacing,\n  useCustomTheme,\n  useWalletInfo\n} from \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  getInstalledWalletProviders\n} from \"./chunk-PWFRCBEK.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/providers/wallet-ui-states-provider.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nvar import_react = __toESM(require_react(), 1);\nvar WalletModalOpen = (0, import_react.createContext)(false);\nvar SetWalletModalOpen = (0, import_react.createContext)(() => {\n});\nvar SelectionUIDataCtx = (0, import_react.createContext)({});\nvar SetSelectionUIDataCtx = (0, import_react.createContext)(() => {\n});\nvar WalletUIStatesProvider = (props) => {\n  const [isWalletModalOpen, setIsWalletModalOpen] = (0, import_react.useState)(props.isOpen);\n  const [selectionUIData, setSelectionUIData] = (0, import_react.useState)({});\n  return (0, import_jsx_runtime.jsx)(WalletModalOpen.Provider, { value: isWalletModalOpen, children: (0, import_jsx_runtime.jsx)(SetWalletModalOpen.Provider, { value: setIsWalletModalOpen, children: (0, import_jsx_runtime.jsx)(SelectionUIDataCtx.Provider, { value: selectionUIData, children: (0, import_jsx_runtime.jsx)(SetSelectionUIDataCtx.Provider, { value: setSelectionUIData, children: (0, import_jsx_runtime.jsx)(CustomThemeProvider, { theme: props.theme, children: props.children }) }) }) }) });\n};\nvar useIsWalletModalOpen = () => {\n  return (0, import_react.useContext)(WalletModalOpen);\n};\nvar useSetIsWalletModalOpen = () => {\n  const context = (0, import_react.useContext)(SetWalletModalOpen);\n  if (context === void 0) {\n    throw new Error(\"useSetWalletModalOpen must be used within a ThirdwebProvider\");\n  }\n  return context;\n};\nfunction useSetSelectionData() {\n  return (0, import_react.useContext)(SetSelectionUIDataCtx);\n}\nfunction useSelectionData() {\n  return (0, import_react.useContext)(SelectionUIDataCtx);\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Spinner.js\nvar import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);\nvar Spinner = (props) => {\n  const theme = useCustomTheme();\n  return (0, import_jsx_runtime2.jsx)(Svg, { style: {\n    width: `${iconSize[props.size]}px`,\n    height: `${iconSize[props.size]}px`\n  }, viewBox: \"0 0 50 50\", children: (0, import_jsx_runtime2.jsx)(Circle, { cx: \"25\", cy: \"25\", r: \"20\", fill: \"none\", stroke: theme.colors[props.color], strokeWidth: Number(iconSize[props.size]) > 64 ? \"2\" : \"4\" }) });\n};\nvar dashAnimation = keyframes`\n  0% {\n    stroke-dasharray: 1, 150;\n    stroke-dashoffset: 0;\n  }\n  50% {\n    stroke-dasharray: 90, 150;\n    stroke-dashoffset: -35;\n  }\n  100% {\n    stroke-dasharray: 90, 150;\n    stroke-dashoffset: -124;\n  }\n`;\nvar rotateAnimation = keyframes`\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nvar Svg = StyledSvg({\n  animation: `${rotateAnimation} 2s linear infinite`,\n  width: \"1em\",\n  height: \"1em\"\n});\nvar Circle = StyledCircle({\n  strokeLinecap: \"round\",\n  animation: `${dashAnimation} 1.5s ease-in-out infinite`\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/formElements.js\nvar Label = StyledLabel((props) => {\n  const theme = useCustomTheme();\n  return {\n    fontSize: fontSize.sm,\n    color: theme.colors[props.color || \"primaryText\"],\n    display: \"block\",\n    fontWeight: 500\n  };\n});\nvar Input = StyledInput((props) => {\n  const theme = useCustomTheme();\n  return {\n    fontSize: fontSize.md,\n    fontFamily: \"inherit\",\n    display: \"block\",\n    padding: props.sm ? spacing.sm : fontSize.sm,\n    boxSizing: \"border-box\",\n    width: \"100%\",\n    outline: \"none\",\n    border: \"none\",\n    borderRadius: radius.md,\n    color: theme.colors.primaryText,\n    WebkitAppearance: \"none\",\n    appearance: \"none\",\n    background: \"transparent\",\n    \"&::placeholder\": {\n      color: theme.colors.secondaryText\n    },\n    boxShadow: `0 0 0 1.5px ${props.variant === \"outline\" ? theme.colors.borderColor : \"transparent\"}`,\n    \"&:-webkit-autofill\": {\n      WebkitTextFillColor: theme.colors.primaryText,\n      WebkitBoxShadow: `0 0 0px 1000px ${theme.colors.inputAutofillBg} inset !important`,\n      boxShadow: `0 0 0px 1000px ${theme.colors.inputAutofillBg} inset !important`,\n      transition: \"background-color 5000s ease-in-out 0s\"\n    },\n    \"&:-webkit-autofill:focus\": {\n      WebkitBoxShadow: `0 0 0px 1000px ${theme.colors.inputAutofillBg} inset, 0 0 0 2px ${props.variant === \"outline\" ? theme.colors.accentText : \"transparent\"} !important`,\n      boxShadow: `0 0 0px 1000px ${theme.colors.inputAutofillBg} inset, 0 0 0 2px ${props.variant === \"outline\" ? theme.colors.accentText : \"transparent\"} !important`\n    },\n    \"&[data-placeholder='true']\": {\n      color: theme.colors.secondaryText\n    },\n    \"&:focus\": {\n      boxShadow: `0 0 0 2px ${theme.colors.accentText}`\n    },\n    \"&[data-focus='false']:focus\": {\n      boxShadow: \"none\"\n    },\n    \"&:not([type='password'])\": {\n      overflow: \"hidden\",\n      textOverflow: \"ellipsis\",\n      whiteSpace: \"nowrap\"\n    },\n    \"&[data-error='true']\": {\n      boxShadow: `0 0 0 2px ${theme.colors.danger} !important`\n    },\n    \"&[disabled]\": {\n      cursor: \"not-allowed\"\n    },\n    \"&[type='number']::-webkit-outer-spin-button, &[type='number']::-webkit-inner-spin-button\": {\n      WebkitAppearance: \"none\",\n      margin: 0\n    },\n    \"&[type='number']\": {\n      appearance: \"none\",\n      MozAppearance: \"textfield\"\n    }\n  };\n});\nvar InputContainer = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    display: \"flex\",\n    borderRadius: radius.md,\n    boxShadow: `0 0 0px 1px ${theme.colors.borderColor}`,\n    \"&:focus-within\": {\n      boxShadow: `0 0 0px 1px ${theme.colors.accentText}`\n    },\n    \"input:focus\": {\n      boxShadow: \"none\"\n    },\n    // show error ring on container instead of input\n    \"&[data-error='true']\": {\n      boxShadow: `0 0 0px 1px ${theme.colors.danger}`\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/WalletEntryButton.js\nvar import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);\nfunction WalletEntryButton(props) {\n  var _a, _b, _c;\n  const { walletId, selectWallet } = props;\n  const isRecommended = (_a = props.recommendedWallets) == null ? void 0 : _a.find((w) => w.id === walletId);\n  const walletInfo = useWalletInfo(walletId);\n  const walletName = ((_b = getInstalledWalletProviders().find((p) => p.info.rdns === walletId)) == null ? void 0 : _b.info.name) || ((_c = walletInfo.data) == null ? void 0 : _c.name);\n  const isInstalled = getInstalledWalletProviders().find((p) => p.info.rdns === walletId);\n  return (0, import_jsx_runtime3.jsxs)(WalletButtonEl, { type: \"button\", onClick: selectWallet, \"data-active\": props.isActive, children: [(0, import_jsx_runtime3.jsx)(WalletImage, { id: walletId, size: iconSize.xl, client: props.client }), (0, import_jsx_runtime3.jsxs)(Container, { flex: \"column\", gap: \"xxs\", expand: true, children: [walletName ? (0, import_jsx_runtime3.jsx)(Text, { color: \"primaryText\", weight: 600, children: walletName }) : (0, import_jsx_runtime3.jsx)(Skeleton, { width: \"100px\", height: fontSize.md }), props.badge ? (0, import_jsx_runtime3.jsx)(Text, { size: \"sm\", children: props.badge }) : isRecommended ? (0, import_jsx_runtime3.jsx)(Text, { size: \"sm\", children: props.connectLocale.recommended }) : isInstalled ? (0, import_jsx_runtime3.jsx)(Text, { size: \"sm\", children: props.connectLocale.installed }) : null] })] });\n}\nvar WalletButtonEl = StyledButton((_) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    display: \"flex\",\n    alignItems: \"center\",\n    gap: spacing.sm,\n    cursor: \"pointer\",\n    boxSizing: \"border-box\",\n    width: \"100%\",\n    color: theme.colors.secondaryText,\n    position: \"relative\",\n    borderRadius: radius.md,\n    padding: `${spacing.xs} ${spacing.xs}`,\n    \"&:hover\": {\n      backgroundColor: theme.colors.tertiaryBg,\n      transform: \"scale(1.01)\"\n    },\n    '&[data-active=\"true\"]': {\n      backgroundColor: theme.colors.tertiaryBg\n    },\n    transition: \"background-color 200ms ease, transform 200ms ease\"\n  };\n});\n\nexport {\n  WalletUIStatesProvider,\n  useIsWalletModalOpen,\n  useSetIsWalletModalOpen,\n  useSetSelectionData,\n  useSelectionData,\n  Spinner,\n  Label,\n  Input,\n  InputContainer,\n  WalletEntryButton,\n  WalletButtonEl\n};\n//# sourceMappingURL=chunk-AARWH2GQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-ADIC4TC2.js",
    "content": "import {\n  sendTransaction\n} from \"./chunk-JTR2PIFP.js\";\nimport {\n  waitForReceipt\n} from \"./chunk-JBQP4JIV.js\";\n\n// node_modules/thirdweb/dist/esm/transaction/actions/send-and-confirm-transaction.js\nasync function sendAndConfirmTransaction(options) {\n  const submittedTx = await sendTransaction(options);\n  return waitForReceipt(submittedTx);\n}\n\nexport {\n  sendAndConfirmTransaction\n};\n//# sourceMappingURL=chunk-ADIC4TC2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-AG4NO6K6.js",
    "content": "import {\n  isAbiFunction,\n  prepareMethod\n} from \"./chunk-NPJBMLFY.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport {\n  decodeAbiParameters,\n  parseAbiItem\n} from \"./chunk-GINVHONX.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport {\n  numberToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_call.js\nfunction encodeStateOverrides(overrides) {\n  return Object.fromEntries(Object.entries(overrides).map(([address, override]) => {\n    return [\n      address,\n      {\n        balance: override.balance ? numberToHex(override.balance) : void 0,\n        nonce: override.nonce ? numberToHex(override.nonce) : void 0,\n        code: override.code,\n        state: override.state,\n        stateDiff: override.stateDiff\n      }\n    ];\n  }));\n}\nasync function eth_call(request, params) {\n  const { blockNumber, blockTag, ...txRequest } = params;\n  const blockNumberHex = blockNumber ? numberToHex(blockNumber) : void 0;\n  const block = blockNumberHex || blockTag || \"latest\";\n  return await request({\n    method: \"eth_call\",\n    params: params.stateOverrides ? [\n      txRequest,\n      block,\n      encodeStateOverrides(params.stateOverrides)\n    ] : [txRequest, block]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/transaction/read-contract.js\nasync function readContract(options) {\n  const { contract, method, params } = options;\n  const resolvePreparedMethod = async () => {\n    var _a, _b;\n    if (Array.isArray(method)) {\n      return method;\n    }\n    if (isAbiFunction(method)) {\n      return prepareMethod(method);\n    }\n    if (typeof method === \"function\") {\n      return prepareMethod(\n        // @ts-expect-error - we're sure it's a function\n        await method(contract)\n      );\n    }\n    if (typeof method === \"string\" && method.startsWith(\"function \")) {\n      const abiItem = parseAbiItem(method);\n      if (abiItem.type === \"function\") {\n        return prepareMethod(abiItem);\n      }\n      throw new Error(`\"method\" passed is not of type \"function\"`);\n    }\n    if (contract.abi && ((_a = contract.abi) == null ? void 0 : _a.length) > 0) {\n      const abiFunction = (_b = contract.abi) == null ? void 0 : _b.find((item) => item.type === \"function\" && item.name === method);\n      if (abiFunction) {\n        return prepareMethod(abiFunction);\n      }\n    }\n    throw new Error(`Could not resolve method \"${method}\".`);\n  };\n  const [resolvedPreparedMethod, resolvedParams] = await Promise.all([\n    resolvePreparedMethod(),\n    typeof params === \"function\" ? params() : params\n  ]);\n  let encodedData;\n  if (resolvedPreparedMethod[1].length === 0) {\n    encodedData = resolvedPreparedMethod[0];\n  } else {\n    encodedData = resolvedPreparedMethod[0] + encodeAbiParameters(\n      resolvedPreparedMethod[1],\n      // @ts-expect-error - TODO: fix this type issue\n      resolvedParams\n    ).slice(2);\n  }\n  const rpcRequest = getRpcClient({\n    chain: contract.chain,\n    client: contract.client\n  });\n  const result = await eth_call(rpcRequest, {\n    data: encodedData,\n    to: contract.address,\n    from: options.from\n  });\n  const decoded = decodeAbiParameters(resolvedPreparedMethod[2], result);\n  if (Array.isArray(decoded) && decoded.length === 1) {\n    return decoded[0];\n  }\n  return decoded;\n}\n\nexport {\n  eth_call,\n  readContract\n};\n//# sourceMappingURL=chunk-AG4NO6K6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-AWMNEQRO.js",
    "content": "import {\n  once,\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/__generated__/IERC20/write/approve.js\nvar FN_SELECTOR = \"0x095ea7b3\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"spender\"\n  },\n  {\n    type: \"uint256\",\n    name: \"value\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"bool\"\n  }\n];\nfunction approve(options) {\n  const asyncOptions = once(async () => {\n    return \"asyncParams\" in options ? await options.asyncParams() : options;\n  });\n  return prepareContractCall({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: async () => {\n      const resolvedOptions = await asyncOptions();\n      return [resolvedOptions.spender, resolvedOptions.value];\n    },\n    value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.value;\n    },\n    accessList: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.accessList;\n    },\n    gas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gas;\n    },\n    gasPrice: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gasPrice;\n    },\n    maxFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxFeePerGas;\n    },\n    maxPriorityFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxPriorityFeePerGas;\n    },\n    nonce: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.nonce;\n    },\n    extraGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.extraGas;\n    },\n    erc20Value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.erc20Value;\n    }\n  });\n}\n\nexport {\n  approve\n};\n//# sourceMappingURL=chunk-AWMNEQRO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-B7XHB4Z2.js",
    "content": "import {\n  isHex\n} from \"./chunk-BBNNHC5G.js\";\nimport {\n  fromBoolean2 as fromBoolean,\n  fromHex,\n  fromNumber2 as fromNumber,\n  fromString2 as fromString\n} from \"./chunk-Y3WKETHV.js\";\n\n// node_modules/thirdweb/dist/esm/utils/encoding/to-bytes.js\nfunction toBytes(value, opts = {}) {\n  switch (typeof value) {\n    case \"number\":\n    case \"bigint\":\n      return numberToBytes(value, opts);\n    case \"boolean\":\n      return boolToBytes(value, opts);\n    default:\n      if (isHex(value)) {\n        return hexToBytes(value, opts);\n      }\n      return stringToBytes(value, opts);\n  }\n}\nfunction boolToBytes(value, opts = {}) {\n  return fromBoolean(value, opts);\n}\nfunction hexToBytes(hex_, opts = {}) {\n  return fromHex(hex_, opts);\n}\nfunction numberToBytes(value, opts) {\n  return fromNumber(value, opts);\n}\nfunction stringToBytes(value, opts = {}) {\n  return fromString(value, opts);\n}\n\nexport {\n  toBytes,\n  boolToBytes,\n  hexToBytes,\n  numberToBytes,\n  stringToBytes\n};\n//# sourceMappingURL=chunk-B7XHB4Z2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-BBNNHC5G.js",
    "content": "import {\n  fromBoolean,\n  fromBytes,\n  fromNumber,\n  fromString,\n  padLeft,\n  padRight,\n  toBigInt,\n  toBoolean,\n  toBytes,\n  toNumber,\n  toString,\n  validate\n} from \"./chunk-Y3WKETHV.js\";\n\n// node_modules/thirdweb/dist/esm/utils/encoding/helpers/is-hex.js\nfunction isHex(value, options = {}) {\n  return validate(value, options);\n}\n\n// node_modules/thirdweb/dist/esm/utils/encoding/hex.js\nfunction padHex(hex_, options = {}) {\n  const { dir, size = 32 } = options;\n  if (size === null) {\n    return hex_;\n  }\n  if (dir === \"right\") {\n    return padRight(hex_, size);\n  }\n  return padLeft(hex_, size);\n}\nfunction hexToString(hex, opts = {}) {\n  return toString(hex, opts);\n}\nfunction hexToBigInt(hex, opts = {}) {\n  return toBigInt(hex, opts);\n}\nfunction hexToNumber(hex, opts = {}) {\n  return toNumber(hex, opts);\n}\nfunction hexToBool(hex, opts = {}) {\n  return toBoolean(hex, opts);\n}\nfunction hexToUint8Array(hex, opts = {}) {\n  return toBytes(hex, opts);\n}\nfunction fromHex(hex, toOrOpts) {\n  const opts = typeof toOrOpts === \"string\" ? { to: toOrOpts } : toOrOpts;\n  switch (opts.to) {\n    case \"number\":\n      return hexToNumber(hex, opts);\n    case \"bigint\":\n      return hexToBigInt(hex, opts);\n    case \"string\":\n      return hexToString(hex, opts);\n    case \"boolean\":\n      return hexToBool(hex, opts);\n    default:\n      return hexToUint8Array(hex, opts);\n  }\n}\nfunction boolToHex(value, opts = {}) {\n  return fromBoolean(value, opts);\n}\nfunction uint8ArrayToHex(value, opts = {}) {\n  return fromBytes(value, opts);\n}\nfunction numberToHex(value_, opts = {}) {\n  return fromNumber(value_, opts);\n}\nfunction stringToHex(value_, opts = {}) {\n  return fromString(value_, opts);\n}\nfunction toHex(value, opts = {}) {\n  switch (typeof value) {\n    case \"number\":\n    case \"bigint\":\n      return numberToHex(value, opts);\n    case \"string\":\n      return stringToHex(value, opts);\n    case \"boolean\":\n      return boolToHex(value, opts);\n    default:\n      return uint8ArrayToHex(value, opts);\n  }\n}\n\nexport {\n  isHex,\n  padHex,\n  hexToString,\n  hexToBigInt,\n  hexToNumber,\n  hexToBool,\n  hexToUint8Array,\n  fromHex,\n  boolToHex,\n  uint8ArrayToHex,\n  numberToHex,\n  stringToHex,\n  toHex\n};\n//# sourceMappingURL=chunk-BBNNHC5G.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-BZXRHH4X.js",
    "content": "// node_modules/thirdweb/dist/esm/wallets/constants.js\nvar COINBASE = \"com.coinbase.wallet\";\nvar METAMASK = \"io.metamask\";\nvar RAINBOW = \"me.rainbow\";\nvar ZERION = \"io.zerion.wallet\";\n\nexport {\n  COINBASE,\n  METAMASK,\n  RAINBOW,\n  ZERION\n};\n//# sourceMappingURL=chunk-BZXRHH4X.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-CLN3QXW2.js",
    "content": "import {\n  track\n} from \"./chunk-N24CESYN.js\";\n\n// node_modules/thirdweb/dist/esm/analytics/track/connect.js\nasync function trackConnect(args) {\n  const { client, ecosystem, walletType, walletAddress, chainId } = args;\n  return track({\n    client,\n    ecosystem,\n    data: {\n      source: \"connectWallet\",\n      action: \"connect\",\n      walletType,\n      walletAddress,\n      chainId\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/utils/tiny-emitter.js\nfunction createEmitter() {\n  const subsribers = /* @__PURE__ */ new Map();\n  return {\n    subscribe(event, cb) {\n      var _a;\n      if (!subsribers.has(event)) {\n        subsribers.set(event, /* @__PURE__ */ new Set([cb]));\n      } else {\n        (_a = subsribers.get(event)) == null ? void 0 : _a.add(cb);\n      }\n      return () => {\n        const subscribers = subsribers.get(event);\n        if (subscribers) {\n          subscribers.delete(cb);\n        }\n      };\n    },\n    emit(event, data) {\n      const subscribers = subsribers.get(event);\n      if (subscribers) {\n        for (const cb of subscribers) {\n          cb(data);\n        }\n      }\n    }\n  };\n}\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-emitter.js\nfunction createWalletEmitter() {\n  return createEmitter();\n}\n\nexport {\n  trackConnect,\n  createWalletEmitter\n};\n//# sourceMappingURL=chunk-CLN3QXW2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-CNLOA7AS.js",
    "content": "// node_modules/thirdweb/dist/esm/transaction/prepare-transaction.js\nfunction prepareTransaction(options, info) {\n  if (info) {\n    options.__preparedMethod = info.preparedMethod;\n    options.__contract = info.contract;\n  }\n  return options;\n}\n\nexport {\n  prepareTransaction\n};\n//# sourceMappingURL=chunk-CNLOA7AS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-CXAZLQ2Z.js",
    "content": "import {\n  formatBlock\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  numberToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_getBlockByNumber.js\nasync function eth_getBlockByNumber(request, params) {\n  const blockTag = params.blockTag ?? \"latest\";\n  const includeTransactions = params.includeTransactions ?? false;\n  const blockNumberHex = params.blockNumber !== void 0 ? numberToHex(params.blockNumber) : void 0;\n  const block = await request({\n    method: \"eth_getBlockByNumber\",\n    params: [blockNumberHex || blockTag, includeTransactions]\n  });\n  if (!block) {\n    throw new Error(\"Block not found\");\n  }\n  return formatBlock(block);\n}\n\nexport {\n  eth_getBlockByNumber\n};\n//# sourceMappingURL=chunk-CXAZLQ2Z.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-CYVKJMZE.js",
    "content": "// node_modules/thirdweb/dist/esm/wallets/in-app/core/constants/settings.js\nvar IN_APP_WALLET_PATH = \"/sdk/2022-08-12/embedded-wallet\";\nvar WALLET_USER_ID_LOCAL_STORAGE_NAME = (cliekeytId) => `thirdwebEwsWalletUserId-${cliekeytId}`;\nvar AUTH_TOKEN_LOCAL_STORAGE_PREFIX = \"walletToken\";\nvar AUTH_TOKEN_LOCAL_STORAGE_NAME = (key) => {\n  return `${AUTH_TOKEN_LOCAL_STORAGE_PREFIX}-${key}`;\n};\nvar PASSKEY_CREDENTIAL_ID_LOCAL_STORAGE_NAME = (key) => {\n  return `passkey-credential-id-${key}`;\n};\nvar DEVICE_SHARE_LOCAL_STORAGE_PREFIX = \"a\";\nvar DEVICE_SHARE_LOCAL_STORAGE_NAME = (key, userId) => `${DEVICE_SHARE_LOCAL_STORAGE_PREFIX}-${key}-${userId}`;\nvar WALLET_CONNECT_SESSIONS_LOCAL_STORAGE_NAME = (key) => `walletConnectSessions-${key}`;\nvar GUEST_SESSION_LOCAL_STORAGE_NAME = (key) => `thirdweb_guest_session_id_${key}`;\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/authentication/client-scoped-storage.js\nvar data = /* @__PURE__ */ new Map();\nvar ClientScopedStorage = class {\n  /**\n   * @internal\n   */\n  constructor({ storage, clientId, ecosystem }) {\n    Object.defineProperty(this, \"key\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"storage\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"ecosystem\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.storage = storage;\n    this.key = getLocalStorageKey(clientId, ecosystem == null ? void 0 : ecosystem.id);\n    this.ecosystem = ecosystem;\n  }\n  async getItem(key) {\n    if (this.storage) {\n      return this.storage.getItem(key);\n    }\n    return data.get(key) ?? null;\n  }\n  async setItem(key, value) {\n    if (this.storage) {\n      return this.storage.setItem(key, value);\n    }\n    data.set(key, value);\n  }\n  async removeItem(key) {\n    const item = await this.getItem(key);\n    if (this.storage && item) {\n      this.storage.removeItem(key);\n      return true;\n    }\n    return false;\n  }\n  /**\n   * @internal\n   */\n  async getWalletConnectSessions() {\n    return this.getItem(WALLET_CONNECT_SESSIONS_LOCAL_STORAGE_NAME(this.key));\n  }\n  /**\n   * @internal\n   */\n  async saveWalletConnectSessions(stringifiedSessions) {\n    await this.setItem(WALLET_CONNECT_SESSIONS_LOCAL_STORAGE_NAME(this.key), stringifiedSessions);\n  }\n  /**\n   * @internal\n   */\n  async savePasskeyCredentialId(id) {\n    await this.setItem(PASSKEY_CREDENTIAL_ID_LOCAL_STORAGE_NAME(this.key), id);\n  }\n  /**\n   * @internal\n   */\n  async getPasskeyCredentialId() {\n    return this.getItem(PASSKEY_CREDENTIAL_ID_LOCAL_STORAGE_NAME(this.key));\n  }\n  /**\n   * @internal\n   */\n  async saveAuthCookie(cookie) {\n    await this.setItem(AUTH_TOKEN_LOCAL_STORAGE_NAME(this.key), cookie);\n  }\n  /**\n   * @internal\n   */\n  async getAuthCookie() {\n    return this.getItem(AUTH_TOKEN_LOCAL_STORAGE_NAME(this.key));\n  }\n  /**\n   * @internal\n   */\n  async removeAuthCookie() {\n    return this.removeItem(AUTH_TOKEN_LOCAL_STORAGE_NAME(this.key));\n  }\n  /**\n   * @internal\n   */\n  async saveDeviceShare(share, userId) {\n    await this.saveWalletUserId(userId);\n    await this.setItem(DEVICE_SHARE_LOCAL_STORAGE_NAME(this.key, userId), share);\n  }\n  /**\n   * @internal\n   */\n  async getDeviceShare() {\n    const userId = await this.getWalletUserId();\n    if (userId) {\n      return this.getItem(DEVICE_SHARE_LOCAL_STORAGE_NAME(this.key, userId));\n    }\n    return null;\n  }\n  /**\n   * @internal\n   */\n  async removeDeviceShare() {\n    const userId = await this.getWalletUserId();\n    if (userId) {\n      return this.removeItem(DEVICE_SHARE_LOCAL_STORAGE_NAME(this.key, userId));\n    }\n    return false;\n  }\n  /**\n   * @internal\n   */\n  async getWalletUserId() {\n    return this.getItem(WALLET_USER_ID_LOCAL_STORAGE_NAME(this.key));\n  }\n  /**\n   * @internal\n   */\n  async saveWalletUserId(userId) {\n    await this.setItem(WALLET_USER_ID_LOCAL_STORAGE_NAME(this.key), userId);\n  }\n  /**\n   * @internal\n   */\n  async removeWalletUserId() {\n    return this.removeItem(WALLET_USER_ID_LOCAL_STORAGE_NAME(this.key));\n  }\n  /**\n   * @internal\n   */\n  async getGuestSessionId() {\n    return this.getItem(GUEST_SESSION_LOCAL_STORAGE_NAME(this.key));\n  }\n  /**\n   * @internal\n   */\n  async saveGuestSessionId(sessionId) {\n    await this.setItem(GUEST_SESSION_LOCAL_STORAGE_NAME(this.key), sessionId);\n  }\n};\nvar getLocalStorageKey = (clientId, ecosystemId) => {\n  return `${clientId}${ecosystemId ? `-${ecosystemId}` : \"\"}`;\n};\n\nexport {\n  IN_APP_WALLET_PATH,\n  ClientScopedStorage\n};\n//# sourceMappingURL=chunk-CYVKJMZE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-DYKFWRMQ.js",
    "content": "import {\n  encodeEventTopics,\n  parseEventLogs\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  parseAbiItem,\n  toSignatureHash\n} from \"./chunk-GINVHONX.js\";\n\n// node_modules/thirdweb/dist/esm/event/utils.js\nfunction isAbiEvent(item) {\n  return !!(item && typeof item === \"object\" && \"type\" in item && item.type === \"event\");\n}\n\n// node_modules/thirdweb/dist/esm/event/prepare-event.js\nfunction prepareEvent(options) {\n  const { signature } = options;\n  let resolvedSignature;\n  if (isAbiEvent(signature)) {\n    resolvedSignature = signature;\n  } else {\n    resolvedSignature = parseAbiItem(signature);\n  }\n  return {\n    abiEvent: resolvedSignature,\n    hash: toSignatureHash(resolvedSignature),\n    // @ts-expect-error - TODO: investiagte why this complains, it works fine however\n    topics: encodeEventTopics({\n      abi: [resolvedSignature],\n      args: options.filters\n    })\n  };\n}\n\n// node_modules/thirdweb/dist/esm/event/actions/parse-logs.js\nfunction parseEventLogs2(options) {\n  const { logs, events, strict } = options;\n  return parseEventLogs({\n    logs,\n    abi: events.map((e) => e.abiEvent),\n    strict\n  });\n}\n\nexport {\n  isAbiEvent,\n  prepareEvent,\n  parseEventLogs2 as parseEventLogs\n};\n//# sourceMappingURL=chunk-DYKFWRMQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-EGJT3UEX.js",
    "content": "import {\n  GuestLogin,\n  OTPLoginUI,\n  PassKeyLogin,\n  PoweredByThirdweb,\n  SocialLogin,\n  TOS,\n  WalletAuth\n} from \"./chunk-7ZNEOXS2.js\";\nimport {\n  ConnectWalletSocialOptions,\n  LoadingScreen,\n  useInAppWalletLocale,\n  useScreenContext\n} from \"./chunk-KWA5PGSC.js\";\nimport {\n  useSelectionData,\n  useSetSelectionData\n} from \"./chunk-AARWH2GQ.js\";\nimport {\n  Container,\n  Img,\n  ModalHeader,\n  ModalTitle,\n  Skeleton,\n  Spacer,\n  iconSize,\n  radius,\n  useWalletInfo\n} from \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/ecosystem/EcosystemWalletConnectUI.js\nvar import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/ecosystem/EcosystemWalletFormUI.js\nvar import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);\nvar import_react = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/ecosystem/EcosystemWalletHeader.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nfunction EcosystemWalletHeader(props) {\n  var _a, _b, _c;\n  const walletInfo = useWalletInfo(props.wallet.id);\n  return (0, import_jsx_runtime.jsx)(ModalHeader, { onBack: props.onBack, title: walletInfo.isLoading ? (0, import_jsx_runtime.jsx)(Skeleton, { height: \"24px\", width: \"200px\" }) : (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [!((_a = walletInfo.data) == null ? void 0 : _a.image_id) ? null : (0, import_jsx_runtime.jsx)(Img, { src: (_b = walletInfo.data) == null ? void 0 : _b.image_id, style: {\n    borderRadius: radius.sm\n  }, width: iconSize.md, height: iconSize.md, client: props.client }), (0, import_jsx_runtime.jsx)(ModalTitle, { children: (_c = walletInfo.data) == null ? void 0 : _c.name })] }), leftAligned: true });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/ecosystem/EcosystemWalletFormUI.js\nfunction EcosystemWalletFormUIScreen(props) {\n  const isCompact = props.size === \"compact\";\n  const { initialScreen, screen } = useScreenContext();\n  const [isApproved, setIsApproved] = (0, import_react.useState)(false);\n  const onBack = screen === props.wallet && initialScreen === props.wallet ? void 0 : props.goBack;\n  return (0, import_jsx_runtime2.jsxs)(Container, { fullHeight: true, flex: \"column\", p: \"lg\", animate: \"fadein\", style: {\n    minHeight: \"250px\"\n  }, children: [props.isLinking ? (0, import_jsx_runtime2.jsx)(ModalHeader, { title: props.connectLocale.manageWallet.linkProfile, onBack }) : (0, import_jsx_runtime2.jsx)(EcosystemWalletHeader, { client: props.client, onBack: isCompact ? onBack : void 0, wallet: props.wallet }), (0, import_jsx_runtime2.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime2.jsx)(Container, { expand: true, flex: \"column\", center: \"y\", p: isCompact ? void 0 : \"lg\", children: (0, import_jsx_runtime2.jsx)(ConnectWalletSocialOptions, { disabled: props.meta.requireApproval && !isApproved, ...props }) }), isCompact && (props.meta.showThirdwebBranding !== false || props.meta.termsOfServiceUrl || props.meta.privacyPolicyUrl) && (0, import_jsx_runtime2.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime2.jsxs)(Container, { flex: \"column\", gap: \"lg\", children: [(0, import_jsx_runtime2.jsx)(TOS, { termsOfServiceUrl: props.meta.termsOfServiceUrl, privacyPolicyUrl: props.meta.privacyPolicyUrl, locale: props.connectLocale.agreement, requireApproval: props.meta.requireApproval, onApprove: () => {\n    setIsApproved(!isApproved);\n  }, isApproved }), props.meta.showThirdwebBranding !== false && (0, import_jsx_runtime2.jsx)(PoweredByThirdweb, {})] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/ecosystem/EcosystemWalletConnectUI.js\nfunction EcosystemWalletConnectUI(props) {\n  const data = useSelectionData();\n  const setSelectionData = useSetSelectionData();\n  const state = data;\n  const localeId = props.connectLocale.id;\n  const locale = useInAppWalletLocale(localeId);\n  if (!locale) {\n    return (0, import_jsx_runtime3.jsx)(LoadingScreen, {});\n  }\n  const goBackToMain = () => {\n    var _a;\n    if (props.size === \"compact\") {\n      (_a = props.goBack) == null ? void 0 : _a.call(props);\n    }\n    setSelectionData({});\n  };\n  const done = () => {\n    props.done();\n    setSelectionData({});\n  };\n  const otpUserInfo = (state == null ? void 0 : state.emailLogin) ? { email: state.emailLogin } : (state == null ? void 0 : state.phoneLogin) ? { phone: state.phoneLogin } : void 0;\n  if (otpUserInfo) {\n    return (0, import_jsx_runtime3.jsx)(OTPLoginUI, { userInfo: otpUserInfo, locale, done, goBack: goBackToMain, wallet: props.wallet, chain: props.chain, client: props.client, size: props.size, isLinking: props.isLinking });\n  }\n  if (state == null ? void 0 : state.passkeyLogin) {\n    return (0, import_jsx_runtime3.jsx)(PassKeyLogin, { locale: props.connectLocale, wallet: props.wallet, done, onBack: goBackToMain, chain: props.chain, client: props.client, size: props.size, isLinking: props.isLinking });\n  }\n  if (state == null ? void 0 : state.socialLogin) {\n    return (0, import_jsx_runtime3.jsx)(SocialLogin, { socialAuth: state.socialLogin.type, locale, done, goBack: goBackToMain, wallet: props.wallet, state, chain: props.chain, client: props.client, size: props.size, connectLocale: props.connectLocale, isLinking: props.isLinking });\n  }\n  if (state == null ? void 0 : state.walletLogin) {\n    return (0, import_jsx_runtime3.jsx)(WalletAuth, { meta: props.meta, inAppLocale: locale, walletConnect: props.walletConnect, wallet: props.wallet, client: props.client, size: props.size, done, onBack: goBackToMain || (() => setSelectionData({})), locale: props.connectLocale, isLinking: state.walletLogin.linking });\n  }\n  if (state == null ? void 0 : state.guestLogin) {\n    return (0, import_jsx_runtime3.jsx)(GuestLogin, { locale, done, goBack: goBackToMain, wallet: props.wallet, state, client: props.client, size: props.size, connectLocale: props.connectLocale });\n  }\n  return (0, import_jsx_runtime3.jsx)(EcosystemWalletFormUIScreen, { select: () => {\n  }, locale, done, goBack: props.goBack, wallet: props.wallet, chain: props.chain, client: props.client, size: props.size, connectLocale: props.connectLocale, meta: props.meta, isLinking: props.isLinking });\n}\nvar EcosystemWalletConnectUI_default = EcosystemWalletConnectUI;\n\nexport {\n  EcosystemWalletConnectUI_default\n};\n//# sourceMappingURL=chunk-EGJT3UEX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-EHYTL2NA.js",
    "content": "import {\n  __commonJS,\n  __esm,\n  __export,\n  __reExport,\n  __require,\n  __toCommonJS,\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/events/events.js\nvar require_events = __commonJS({\n  \"node_modules/events/events.js\"(exports, module) {\n    \"use strict\";\n    var R2 = typeof Reflect === \"object\" ? Reflect : null;\n    var ReflectApply = R2 && typeof R2.apply === \"function\" ? R2.apply : function ReflectApply2(target, receiver, args) {\n      return Function.prototype.apply.call(target, receiver, args);\n    };\n    var ReflectOwnKeys;\n    if (R2 && typeof R2.ownKeys === \"function\") {\n      ReflectOwnKeys = R2.ownKeys;\n    } else if (Object.getOwnPropertySymbols) {\n      ReflectOwnKeys = function ReflectOwnKeys2(target) {\n        return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n      };\n    } else {\n      ReflectOwnKeys = function ReflectOwnKeys2(target) {\n        return Object.getOwnPropertyNames(target);\n      };\n    }\n    function ProcessEmitWarning(warning) {\n      if (console && console.warn)\n        console.warn(warning);\n    }\n    var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) {\n      return value !== value;\n    };\n    function EventEmitter() {\n      EventEmitter.init.call(this);\n    }\n    module.exports = EventEmitter;\n    module.exports.once = once;\n    EventEmitter.EventEmitter = EventEmitter;\n    EventEmitter.prototype._events = void 0;\n    EventEmitter.prototype._eventsCount = 0;\n    EventEmitter.prototype._maxListeners = void 0;\n    var defaultMaxListeners = 10;\n    function checkListener(listener) {\n      if (typeof listener !== \"function\") {\n        throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n      }\n    }\n    Object.defineProperty(EventEmitter, \"defaultMaxListeners\", {\n      enumerable: true,\n      get: function() {\n        return defaultMaxListeners;\n      },\n      set: function(arg) {\n        if (typeof arg !== \"number\" || arg < 0 || NumberIsNaN(arg)) {\n          throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + \".\");\n        }\n        defaultMaxListeners = arg;\n      }\n    });\n    EventEmitter.init = function() {\n      if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) {\n        this._events = /* @__PURE__ */ Object.create(null);\n        this._eventsCount = 0;\n      }\n      this._maxListeners = this._maxListeners || void 0;\n    };\n    EventEmitter.prototype.setMaxListeners = function setMaxListeners(n5) {\n      if (typeof n5 !== \"number\" || n5 < 0 || NumberIsNaN(n5)) {\n        throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n5 + \".\");\n      }\n      this._maxListeners = n5;\n      return this;\n    };\n    function _getMaxListeners(that) {\n      if (that._maxListeners === void 0)\n        return EventEmitter.defaultMaxListeners;\n      return that._maxListeners;\n    }\n    EventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n      return _getMaxListeners(this);\n    };\n    EventEmitter.prototype.emit = function emit(type) {\n      var args = [];\n      for (var i4 = 1; i4 < arguments.length; i4++)\n        args.push(arguments[i4]);\n      var doError = type === \"error\";\n      var events = this._events;\n      if (events !== void 0)\n        doError = doError && events.error === void 0;\n      else if (!doError)\n        return false;\n      if (doError) {\n        var er3;\n        if (args.length > 0)\n          er3 = args[0];\n        if (er3 instanceof Error) {\n          throw er3;\n        }\n        var err = new Error(\"Unhandled error.\" + (er3 ? \" (\" + er3.message + \")\" : \"\"));\n        err.context = er3;\n        throw err;\n      }\n      var handler = events[type];\n      if (handler === void 0)\n        return false;\n      if (typeof handler === \"function\") {\n        ReflectApply(handler, this, args);\n      } else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i4 = 0; i4 < len; ++i4)\n          ReflectApply(listeners[i4], this, args);\n      }\n      return true;\n    };\n    function _addListener(target, type, listener, prepend) {\n      var m2;\n      var events;\n      var existing;\n      checkListener(listener);\n      events = target._events;\n      if (events === void 0) {\n        events = target._events = /* @__PURE__ */ Object.create(null);\n        target._eventsCount = 0;\n      } else {\n        if (events.newListener !== void 0) {\n          target.emit(\n            \"newListener\",\n            type,\n            listener.listener ? listener.listener : listener\n          );\n          events = target._events;\n        }\n        existing = events[type];\n      }\n      if (existing === void 0) {\n        existing = events[type] = listener;\n        ++target._eventsCount;\n      } else {\n        if (typeof existing === \"function\") {\n          existing = events[type] = prepend ? [listener, existing] : [existing, listener];\n        } else if (prepend) {\n          existing.unshift(listener);\n        } else {\n          existing.push(listener);\n        }\n        m2 = _getMaxListeners(target);\n        if (m2 > 0 && existing.length > m2 && !existing.warned) {\n          existing.warned = true;\n          var w4 = new Error(\"Possible EventEmitter memory leak detected. \" + existing.length + \" \" + String(type) + \" listeners added. Use emitter.setMaxListeners() to increase limit\");\n          w4.name = \"MaxListenersExceededWarning\";\n          w4.emitter = target;\n          w4.type = type;\n          w4.count = existing.length;\n          ProcessEmitWarning(w4);\n        }\n      }\n      return target;\n    }\n    EventEmitter.prototype.addListener = function addListener(type, listener) {\n      return _addListener(this, type, listener, false);\n    };\n    EventEmitter.prototype.on = EventEmitter.prototype.addListener;\n    EventEmitter.prototype.prependListener = function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n    function onceWrapper() {\n      if (!this.fired) {\n        this.target.removeListener(this.type, this.wrapFn);\n        this.fired = true;\n        if (arguments.length === 0)\n          return this.listener.call(this.target);\n        return this.listener.apply(this.target, arguments);\n      }\n    }\n    function _onceWrap(target, type, listener) {\n      var state = { fired: false, wrapFn: void 0, target, type, listener };\n      var wrapped = onceWrapper.bind(state);\n      wrapped.listener = listener;\n      state.wrapFn = wrapped;\n      return wrapped;\n    }\n    EventEmitter.prototype.once = function once2(type, listener) {\n      checkListener(listener);\n      this.on(type, _onceWrap(this, type, listener));\n      return this;\n    };\n    EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n    EventEmitter.prototype.removeListener = function removeListener(type, listener) {\n      var list, events, position, i4, originalListener;\n      checkListener(listener);\n      events = this._events;\n      if (events === void 0)\n        return this;\n      list = events[type];\n      if (list === void 0)\n        return this;\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = /* @__PURE__ */ Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit(\"removeListener\", type, list.listener || listener);\n        }\n      } else if (typeof list !== \"function\") {\n        position = -1;\n        for (i4 = list.length - 1; i4 >= 0; i4--) {\n          if (list[i4] === listener || list[i4].listener === listener) {\n            originalListener = list[i4].listener;\n            position = i4;\n            break;\n          }\n        }\n        if (position < 0)\n          return this;\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n        if (list.length === 1)\n          events[type] = list[0];\n        if (events.removeListener !== void 0)\n          this.emit(\"removeListener\", type, originalListener || listener);\n      }\n      return this;\n    };\n    EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n    EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n      var listeners, events, i4;\n      events = this._events;\n      if (events === void 0)\n        return this;\n      if (events.removeListener === void 0) {\n        if (arguments.length === 0) {\n          this._events = /* @__PURE__ */ Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== void 0) {\n          if (--this._eventsCount === 0)\n            this._events = /* @__PURE__ */ Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n      if (arguments.length === 0) {\n        var keys2 = Object.keys(events);\n        var key2;\n        for (i4 = 0; i4 < keys2.length; ++i4) {\n          key2 = keys2[i4];\n          if (key2 === \"removeListener\")\n            continue;\n          this.removeAllListeners(key2);\n        }\n        this.removeAllListeners(\"removeListener\");\n        this._events = /* @__PURE__ */ Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n      listeners = events[type];\n      if (typeof listeners === \"function\") {\n        this.removeListener(type, listeners);\n      } else if (listeners !== void 0) {\n        for (i4 = listeners.length - 1; i4 >= 0; i4--) {\n          this.removeListener(type, listeners[i4]);\n        }\n      }\n      return this;\n    };\n    function _listeners(target, type, unwrap) {\n      var events = target._events;\n      if (events === void 0)\n        return [];\n      var evlistener = events[type];\n      if (evlistener === void 0)\n        return [];\n      if (typeof evlistener === \"function\")\n        return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n      return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n    }\n    EventEmitter.prototype.listeners = function listeners(type) {\n      return _listeners(this, type, true);\n    };\n    EventEmitter.prototype.rawListeners = function rawListeners(type) {\n      return _listeners(this, type, false);\n    };\n    EventEmitter.listenerCount = function(emitter, type) {\n      if (typeof emitter.listenerCount === \"function\") {\n        return emitter.listenerCount(type);\n      } else {\n        return listenerCount.call(emitter, type);\n      }\n    };\n    EventEmitter.prototype.listenerCount = listenerCount;\n    function listenerCount(type) {\n      var events = this._events;\n      if (events !== void 0) {\n        var evlistener = events[type];\n        if (typeof evlistener === \"function\") {\n          return 1;\n        } else if (evlistener !== void 0) {\n          return evlistener.length;\n        }\n      }\n      return 0;\n    }\n    EventEmitter.prototype.eventNames = function eventNames() {\n      return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n    };\n    function arrayClone(arr, n5) {\n      var copy = new Array(n5);\n      for (var i4 = 0; i4 < n5; ++i4)\n        copy[i4] = arr[i4];\n      return copy;\n    }\n    function spliceOne(list, index) {\n      for (; index + 1 < list.length; index++)\n        list[index] = list[index + 1];\n      list.pop();\n    }\n    function unwrapListeners(arr) {\n      var ret = new Array(arr.length);\n      for (var i4 = 0; i4 < ret.length; ++i4) {\n        ret[i4] = arr[i4].listener || arr[i4];\n      }\n      return ret;\n    }\n    function once(emitter, name2) {\n      return new Promise(function(resolve, reject) {\n        function errorListener(err) {\n          emitter.removeListener(name2, resolver);\n          reject(err);\n        }\n        function resolver() {\n          if (typeof emitter.removeListener === \"function\") {\n            emitter.removeListener(\"error\", errorListener);\n          }\n          resolve([].slice.call(arguments));\n        }\n        ;\n        eventTargetAgnosticAddListener(emitter, name2, resolver, { once: true });\n        if (name2 !== \"error\") {\n          addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n        }\n      });\n    }\n    function addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n      if (typeof emitter.on === \"function\") {\n        eventTargetAgnosticAddListener(emitter, \"error\", handler, flags);\n      }\n    }\n    function eventTargetAgnosticAddListener(emitter, name2, listener, flags) {\n      if (typeof emitter.on === \"function\") {\n        if (flags.once) {\n          emitter.once(name2, listener);\n        } else {\n          emitter.on(name2, listener);\n        }\n      } else if (typeof emitter.addEventListener === \"function\") {\n        emitter.addEventListener(name2, function wrapListener(arg) {\n          if (flags.once) {\n            emitter.removeEventListener(name2, wrapListener);\n          }\n          listener(arg);\n        });\n      } else {\n        throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n      }\n    }\n  }\n});\n\n// node_modules/tslib/tslib.es6.js\nvar tslib_es6_exports = {};\n__export(tslib_es6_exports, {\n  __assign: () => __assign,\n  __asyncDelegator: () => __asyncDelegator,\n  __asyncGenerator: () => __asyncGenerator,\n  __asyncValues: () => __asyncValues,\n  __await: () => __await,\n  __awaiter: () => __awaiter,\n  __classPrivateFieldGet: () => __classPrivateFieldGet,\n  __classPrivateFieldSet: () => __classPrivateFieldSet,\n  __createBinding: () => __createBinding,\n  __decorate: () => __decorate,\n  __exportStar: () => __exportStar,\n  __extends: () => __extends,\n  __generator: () => __generator,\n  __importDefault: () => __importDefault,\n  __importStar: () => __importStar,\n  __makeTemplateObject: () => __makeTemplateObject,\n  __metadata: () => __metadata,\n  __param: () => __param,\n  __read: () => __read,\n  __rest: () => __rest,\n  __spread: () => __spread,\n  __spreadArrays: () => __spreadArrays,\n  __values: () => __values\n});\nfunction __extends(d3, b5) {\n  extendStatics(d3, b5);\n  function __() {\n    this.constructor = d3;\n  }\n  d3.prototype = b5 === null ? Object.create(b5) : (__.prototype = b5.prototype, new __());\n}\nfunction __rest(s3, e2) {\n  var t = {};\n  for (var p3 in s3)\n    if (Object.prototype.hasOwnProperty.call(s3, p3) && e2.indexOf(p3) < 0)\n      t[p3] = s3[p3];\n  if (s3 != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i4 = 0, p3 = Object.getOwnPropertySymbols(s3); i4 < p3.length; i4++) {\n      if (e2.indexOf(p3[i4]) < 0 && Object.prototype.propertyIsEnumerable.call(s3, p3[i4]))\n        t[p3[i4]] = s3[p3[i4]];\n    }\n  return t;\n}\nfunction __decorate(decorators, target, key2, desc) {\n  var c5 = arguments.length, r4 = c5 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key2) : desc, d3;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r4 = Reflect.decorate(decorators, target, key2, desc);\n  else\n    for (var i4 = decorators.length - 1; i4 >= 0; i4--)\n      if (d3 = decorators[i4])\n        r4 = (c5 < 3 ? d3(r4) : c5 > 3 ? d3(target, key2, r4) : d3(target, key2)) || r4;\n  return c5 > 3 && r4 && Object.defineProperty(target, key2, r4), r4;\n}\nfunction __param(paramIndex, decorator) {\n  return function(target, key2) {\n    decorator(target, key2, paramIndex);\n  };\n}\nfunction __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\")\n    return Reflect.metadata(metadataKey, metadataValue);\n}\nfunction __awaiter(thisArg, _arguments, P3, generator) {\n  function adopt(value) {\n    return value instanceof P3 ? value : new P3(function(resolve) {\n      resolve(value);\n    });\n  }\n  return new (P3 || (P3 = Promise))(function(resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e2) {\n        reject(e2);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e2) {\n        reject(e2);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\nfunction __generator(thisArg, body) {\n  var _4 = { label: 0, sent: function() {\n    if (t[0] & 1)\n      throw t[1];\n    return t[1];\n  }, trys: [], ops: [] }, f4, y6, t, g4;\n  return g4 = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g4[Symbol.iterator] = function() {\n    return this;\n  }), g4;\n  function verb(n5) {\n    return function(v5) {\n      return step([n5, v5]);\n    };\n  }\n  function step(op) {\n    if (f4)\n      throw new TypeError(\"Generator is already executing.\");\n    while (_4)\n      try {\n        if (f4 = 1, y6 && (t = op[0] & 2 ? y6[\"return\"] : op[0] ? y6[\"throw\"] || ((t = y6[\"return\"]) && t.call(y6), 0) : y6.next) && !(t = t.call(y6, op[1])).done)\n          return t;\n        if (y6 = 0, t)\n          op = [op[0] & 2, t.value];\n        switch (op[0]) {\n          case 0:\n          case 1:\n            t = op;\n            break;\n          case 4:\n            _4.label++;\n            return { value: op[1], done: false };\n          case 5:\n            _4.label++;\n            y6 = op[1];\n            op = [0];\n            continue;\n          case 7:\n            op = _4.ops.pop();\n            _4.trys.pop();\n            continue;\n          default:\n            if (!(t = _4.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n              _4 = 0;\n              continue;\n            }\n            if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n              _4.label = op[1];\n              break;\n            }\n            if (op[0] === 6 && _4.label < t[1]) {\n              _4.label = t[1];\n              t = op;\n              break;\n            }\n            if (t && _4.label < t[2]) {\n              _4.label = t[2];\n              _4.ops.push(op);\n              break;\n            }\n            if (t[2])\n              _4.ops.pop();\n            _4.trys.pop();\n            continue;\n        }\n        op = body.call(thisArg, _4);\n      } catch (e2) {\n        op = [6, e2];\n        y6 = 0;\n      } finally {\n        f4 = t = 0;\n      }\n    if (op[0] & 5)\n      throw op[1];\n    return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\nfunction __createBinding(o4, m2, k4, k22) {\n  if (k22 === void 0)\n    k22 = k4;\n  o4[k22] = m2[k4];\n}\nfunction __exportStar(m2, exports) {\n  for (var p3 in m2)\n    if (p3 !== \"default\" && !exports.hasOwnProperty(p3))\n      exports[p3] = m2[p3];\n}\nfunction __values(o4) {\n  var s3 = typeof Symbol === \"function\" && Symbol.iterator, m2 = s3 && o4[s3], i4 = 0;\n  if (m2)\n    return m2.call(o4);\n  if (o4 && typeof o4.length === \"number\")\n    return {\n      next: function() {\n        if (o4 && i4 >= o4.length)\n          o4 = void 0;\n        return { value: o4 && o4[i4++], done: !o4 };\n      }\n    };\n  throw new TypeError(s3 ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o4, n5) {\n  var m2 = typeof Symbol === \"function\" && o4[Symbol.iterator];\n  if (!m2)\n    return o4;\n  var i4 = m2.call(o4), r4, ar3 = [], e2;\n  try {\n    while ((n5 === void 0 || n5-- > 0) && !(r4 = i4.next()).done)\n      ar3.push(r4.value);\n  } catch (error) {\n    e2 = { error };\n  } finally {\n    try {\n      if (r4 && !r4.done && (m2 = i4[\"return\"]))\n        m2.call(i4);\n    } finally {\n      if (e2)\n        throw e2.error;\n    }\n  }\n  return ar3;\n}\nfunction __spread() {\n  for (var ar3 = [], i4 = 0; i4 < arguments.length; i4++)\n    ar3 = ar3.concat(__read(arguments[i4]));\n  return ar3;\n}\nfunction __spreadArrays() {\n  for (var s3 = 0, i4 = 0, il = arguments.length; i4 < il; i4++)\n    s3 += arguments[i4].length;\n  for (var r4 = Array(s3), k4 = 0, i4 = 0; i4 < il; i4++)\n    for (var a4 = arguments[i4], j2 = 0, jl = a4.length; j2 < jl; j2++, k4++)\n      r4[k4] = a4[j2];\n  return r4;\n}\nfunction __await(v5) {\n  return this instanceof __await ? (this.v = v5, this) : new __await(v5);\n}\nfunction __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator)\n    throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g4 = generator.apply(thisArg, _arguments || []), i4, q3 = [];\n  return i4 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i4[Symbol.asyncIterator] = function() {\n    return this;\n  }, i4;\n  function verb(n5) {\n    if (g4[n5])\n      i4[n5] = function(v5) {\n        return new Promise(function(a4, b5) {\n          q3.push([n5, v5, a4, b5]) > 1 || resume(n5, v5);\n        });\n      };\n  }\n  function resume(n5, v5) {\n    try {\n      step(g4[n5](v5));\n    } catch (e2) {\n      settle(q3[0][3], e2);\n    }\n  }\n  function step(r4) {\n    r4.value instanceof __await ? Promise.resolve(r4.value.v).then(fulfill, reject) : settle(q3[0][2], r4);\n  }\n  function fulfill(value) {\n    resume(\"next\", value);\n  }\n  function reject(value) {\n    resume(\"throw\", value);\n  }\n  function settle(f4, v5) {\n    if (f4(v5), q3.shift(), q3.length)\n      resume(q3[0][0], q3[0][1]);\n  }\n}\nfunction __asyncDelegator(o4) {\n  var i4, p3;\n  return i4 = {}, verb(\"next\"), verb(\"throw\", function(e2) {\n    throw e2;\n  }), verb(\"return\"), i4[Symbol.iterator] = function() {\n    return this;\n  }, i4;\n  function verb(n5, f4) {\n    i4[n5] = o4[n5] ? function(v5) {\n      return (p3 = !p3) ? { value: __await(o4[n5](v5)), done: n5 === \"return\" } : f4 ? f4(v5) : v5;\n    } : f4;\n  }\n}\nfunction __asyncValues(o4) {\n  if (!Symbol.asyncIterator)\n    throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m2 = o4[Symbol.asyncIterator], i4;\n  return m2 ? m2.call(o4) : (o4 = typeof __values === \"function\" ? __values(o4) : o4[Symbol.iterator](), i4 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i4[Symbol.asyncIterator] = function() {\n    return this;\n  }, i4);\n  function verb(n5) {\n    i4[n5] = o4[n5] && function(v5) {\n      return new Promise(function(resolve, reject) {\n        v5 = o4[n5](v5), settle(resolve, reject, v5.done, v5.value);\n      });\n    };\n  }\n  function settle(resolve, reject, d3, v5) {\n    Promise.resolve(v5).then(function(v6) {\n      resolve({ value: v6, done: d3 });\n    }, reject);\n  }\n}\nfunction __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) {\n    Object.defineProperty(cooked, \"raw\", { value: raw });\n  } else {\n    cooked.raw = raw;\n  }\n  return cooked;\n}\nfunction __importStar(mod) {\n  if (mod && mod.__esModule)\n    return mod;\n  var result = {};\n  if (mod != null) {\n    for (var k4 in mod)\n      if (Object.hasOwnProperty.call(mod, k4))\n        result[k4] = mod[k4];\n  }\n  result.default = mod;\n  return result;\n}\nfunction __importDefault(mod) {\n  return mod && mod.__esModule ? mod : { default: mod };\n}\nfunction __classPrivateFieldGet(receiver, privateMap) {\n  if (!privateMap.has(receiver)) {\n    throw new TypeError(\"attempted to get private field on non-instance\");\n  }\n  return privateMap.get(receiver);\n}\nfunction __classPrivateFieldSet(receiver, privateMap, value) {\n  if (!privateMap.has(receiver)) {\n    throw new TypeError(\"attempted to set private field on non-instance\");\n  }\n  privateMap.set(receiver, value);\n  return value;\n}\nvar extendStatics, __assign;\nvar init_tslib_es6 = __esm({\n  \"node_modules/tslib/tslib.es6.js\"() {\n    extendStatics = function(d3, b5) {\n      extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d4, b6) {\n        d4.__proto__ = b6;\n      } || function(d4, b6) {\n        for (var p3 in b6)\n          if (b6.hasOwnProperty(p3))\n            d4[p3] = b6[p3];\n      };\n      return extendStatics(d3, b5);\n    };\n    __assign = function() {\n      __assign = Object.assign || function __assign2(t) {\n        for (var s3, i4 = 1, n5 = arguments.length; i4 < n5; i4++) {\n          s3 = arguments[i4];\n          for (var p3 in s3)\n            if (Object.prototype.hasOwnProperty.call(s3, p3))\n              t[p3] = s3[p3];\n        }\n        return t;\n      };\n      return __assign.apply(this, arguments);\n    };\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/utils/delay.js\nvar require_delay = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/utils/delay.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.delay = void 0;\n    function delay(timeout) {\n      return new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(true);\n        }, timeout);\n      });\n    }\n    exports.delay = delay;\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/constants/misc.js\nvar require_misc = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/constants/misc.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\n    exports.ONE_HUNDRED = 100;\n    exports.ONE_THOUSAND = 1e3;\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/constants/time.js\nvar require_time = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/constants/time.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\n    exports.ONE_SECOND = 1;\n    exports.FIVE_SECONDS = 5;\n    exports.TEN_SECONDS = 10;\n    exports.THIRTY_SECONDS = 30;\n    exports.SIXTY_SECONDS = 60;\n    exports.ONE_MINUTE = exports.SIXTY_SECONDS;\n    exports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\n    exports.TEN_MINUTES = exports.ONE_MINUTE * 10;\n    exports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\n    exports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\n    exports.ONE_HOUR = exports.SIXTY_MINUTES;\n    exports.THREE_HOURS = exports.ONE_HOUR * 3;\n    exports.SIX_HOURS = exports.ONE_HOUR * 6;\n    exports.TWELVE_HOURS = exports.ONE_HOUR * 12;\n    exports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\n    exports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\n    exports.THREE_DAYS = exports.ONE_DAY * 3;\n    exports.FIVE_DAYS = exports.ONE_DAY * 5;\n    exports.SEVEN_DAYS = exports.ONE_DAY * 7;\n    exports.THIRTY_DAYS = exports.ONE_DAY * 30;\n    exports.ONE_WEEK = exports.SEVEN_DAYS;\n    exports.TWO_WEEKS = exports.ONE_WEEK * 2;\n    exports.THREE_WEEKS = exports.ONE_WEEK * 3;\n    exports.FOUR_WEEKS = exports.ONE_WEEK * 4;\n    exports.ONE_YEAR = exports.ONE_DAY * 365;\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/constants/index.js\nvar require_constants = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/constants/index.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports));\n    tslib_1.__exportStar(require_misc(), exports);\n    tslib_1.__exportStar(require_time(), exports);\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/utils/convert.js\nvar require_convert = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/utils/convert.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.fromMiliseconds = exports.toMiliseconds = void 0;\n    var constants_1 = require_constants();\n    function toMiliseconds(seconds) {\n      return seconds * constants_1.ONE_THOUSAND;\n    }\n    exports.toMiliseconds = toMiliseconds;\n    function fromMiliseconds2(miliseconds) {\n      return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n    }\n    exports.fromMiliseconds = fromMiliseconds2;\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/utils/index.js\nvar require_utils = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/utils/index.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports));\n    tslib_1.__exportStar(require_delay(), exports);\n    tslib_1.__exportStar(require_convert(), exports);\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/watch.js\nvar require_watch = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/watch.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.Watch = void 0;\n    var Watch = class {\n      constructor() {\n        this.timestamps = /* @__PURE__ */ new Map();\n      }\n      start(label) {\n        if (this.timestamps.has(label)) {\n          throw new Error(`Watch already started for label: ${label}`);\n        }\n        this.timestamps.set(label, { started: Date.now() });\n      }\n      stop(label) {\n        const timestamp = this.get(label);\n        if (typeof timestamp.elapsed !== \"undefined\") {\n          throw new Error(`Watch already stopped for label: ${label}`);\n        }\n        const elapsed = Date.now() - timestamp.started;\n        this.timestamps.set(label, { started: timestamp.started, elapsed });\n      }\n      get(label) {\n        const timestamp = this.timestamps.get(label);\n        if (typeof timestamp === \"undefined\") {\n          throw new Error(`No timestamp found for label: ${label}`);\n        }\n        return timestamp;\n      }\n      elapsed(label) {\n        const timestamp = this.get(label);\n        const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n        return elapsed;\n      }\n    };\n    exports.Watch = Watch;\n    exports.default = Watch;\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/types/watch.js\nvar require_watch2 = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/types/watch.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.IWatch = void 0;\n    var IWatch = class {\n    };\n    exports.IWatch = IWatch;\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/types/index.js\nvar require_types = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/types/index.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports));\n    tslib_1.__exportStar(require_watch2(), exports);\n  }\n});\n\n// node_modules/@walletconnect/time/dist/cjs/index.js\nvar require_cjs = __commonJS({\n  \"node_modules/@walletconnect/time/dist/cjs/index.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports));\n    tslib_1.__exportStar(require_utils(), exports);\n    tslib_1.__exportStar(require_watch(), exports);\n    tslib_1.__exportStar(require_types(), exports);\n    tslib_1.__exportStar(require_constants(), exports);\n  }\n});\n\n// node_modules/@walletconnect/window-getters/dist/cjs/index.js\nvar require_cjs2 = __commonJS({\n  \"node_modules/@walletconnect/window-getters/dist/cjs/index.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.getLocalStorage = exports.getLocalStorageOrThrow = exports.getCrypto = exports.getCryptoOrThrow = exports.getLocation = exports.getLocationOrThrow = exports.getNavigator = exports.getNavigatorOrThrow = exports.getDocument = exports.getDocumentOrThrow = exports.getFromWindowOrThrow = exports.getFromWindow = void 0;\n    function getFromWindow(name2) {\n      let res = void 0;\n      if (typeof window !== \"undefined\" && typeof window[name2] !== \"undefined\") {\n        res = window[name2];\n      }\n      return res;\n    }\n    exports.getFromWindow = getFromWindow;\n    function getFromWindowOrThrow(name2) {\n      const res = getFromWindow(name2);\n      if (!res) {\n        throw new Error(`${name2} is not defined in Window`);\n      }\n      return res;\n    }\n    exports.getFromWindowOrThrow = getFromWindowOrThrow;\n    function getDocumentOrThrow() {\n      return getFromWindowOrThrow(\"document\");\n    }\n    exports.getDocumentOrThrow = getDocumentOrThrow;\n    function getDocument() {\n      return getFromWindow(\"document\");\n    }\n    exports.getDocument = getDocument;\n    function getNavigatorOrThrow() {\n      return getFromWindowOrThrow(\"navigator\");\n    }\n    exports.getNavigatorOrThrow = getNavigatorOrThrow;\n    function getNavigator() {\n      return getFromWindow(\"navigator\");\n    }\n    exports.getNavigator = getNavigator;\n    function getLocationOrThrow() {\n      return getFromWindowOrThrow(\"location\");\n    }\n    exports.getLocationOrThrow = getLocationOrThrow;\n    function getLocation() {\n      return getFromWindow(\"location\");\n    }\n    exports.getLocation = getLocation;\n    function getCryptoOrThrow() {\n      return getFromWindowOrThrow(\"crypto\");\n    }\n    exports.getCryptoOrThrow = getCryptoOrThrow;\n    function getCrypto() {\n      return getFromWindow(\"crypto\");\n    }\n    exports.getCrypto = getCrypto;\n    function getLocalStorageOrThrow() {\n      return getFromWindowOrThrow(\"localStorage\");\n    }\n    exports.getLocalStorageOrThrow = getLocalStorageOrThrow;\n    function getLocalStorage() {\n      return getFromWindow(\"localStorage\");\n    }\n    exports.getLocalStorage = getLocalStorage;\n  }\n});\n\n// node_modules/@walletconnect/window-metadata/dist/cjs/index.js\nvar require_cjs3 = __commonJS({\n  \"node_modules/@walletconnect/window-metadata/dist/cjs/index.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.getWindowMetadata = void 0;\n    var window_getters_1 = require_cjs2();\n    function getWindowMetadata() {\n      let doc;\n      let loc;\n      try {\n        doc = window_getters_1.getDocumentOrThrow();\n        loc = window_getters_1.getLocationOrThrow();\n      } catch (e2) {\n        return null;\n      }\n      function getIcons() {\n        const links = doc.getElementsByTagName(\"link\");\n        const icons2 = [];\n        for (let i4 = 0; i4 < links.length; i4++) {\n          const link = links[i4];\n          const rel = link.getAttribute(\"rel\");\n          if (rel) {\n            if (rel.toLowerCase().indexOf(\"icon\") > -1) {\n              const href = link.getAttribute(\"href\");\n              if (href) {\n                if (href.toLowerCase().indexOf(\"https:\") === -1 && href.toLowerCase().indexOf(\"http:\") === -1 && href.indexOf(\"//\") !== 0) {\n                  let absoluteHref = loc.protocol + \"//\" + loc.host;\n                  if (href.indexOf(\"/\") === 0) {\n                    absoluteHref += href;\n                  } else {\n                    const path = loc.pathname.split(\"/\");\n                    path.pop();\n                    const finalPath = path.join(\"/\");\n                    absoluteHref += finalPath + \"/\" + href;\n                  }\n                  icons2.push(absoluteHref);\n                } else if (href.indexOf(\"//\") === 0) {\n                  const absoluteUrl = loc.protocol + href;\n                  icons2.push(absoluteUrl);\n                } else {\n                  icons2.push(href);\n                }\n              }\n            }\n          }\n        }\n        return icons2;\n      }\n      function getWindowMetadataOfAny(...args) {\n        const metaTags = doc.getElementsByTagName(\"meta\");\n        for (let i4 = 0; i4 < metaTags.length; i4++) {\n          const tag = metaTags[i4];\n          const attributes = [\"itemprop\", \"property\", \"name\"].map((target) => tag.getAttribute(target)).filter((attr) => {\n            if (attr) {\n              return args.includes(attr);\n            }\n            return false;\n          });\n          if (attributes.length && attributes) {\n            const content = tag.getAttribute(\"content\");\n            if (content) {\n              return content;\n            }\n          }\n        }\n        return \"\";\n      }\n      function getName() {\n        let name3 = getWindowMetadataOfAny(\"name\", \"og:site_name\", \"og:title\", \"twitter:title\");\n        if (!name3) {\n          name3 = doc.title;\n        }\n        return name3;\n      }\n      function getDescription() {\n        const description2 = getWindowMetadataOfAny(\"description\", \"og:description\", \"twitter:description\", \"keywords\");\n        return description2;\n      }\n      const name2 = getName();\n      const description = getDescription();\n      const url = loc.origin;\n      const icons = getIcons();\n      const meta = {\n        description,\n        url,\n        icons,\n        name: name2\n      };\n      return meta;\n    }\n    exports.getWindowMetadata = getWindowMetadata;\n  }\n});\n\n// node_modules/strict-uri-encode/index.js\nvar require_strict_uri_encode = __commonJS({\n  \"node_modules/strict-uri-encode/index.js\"(exports, module) {\n    \"use strict\";\n    module.exports = (str) => encodeURIComponent(str).replace(/[!'()*]/g, (x6) => `%${x6.charCodeAt(0).toString(16).toUpperCase()}`);\n  }\n});\n\n// node_modules/decode-uri-component/index.js\nvar require_decode_uri_component = __commonJS({\n  \"node_modules/decode-uri-component/index.js\"(exports, module) {\n    \"use strict\";\n    var token = \"%[a-f0-9]{2}\";\n    var singleMatcher = new RegExp(\"(\" + token + \")|([^%]+?)\", \"gi\");\n    var multiMatcher = new RegExp(\"(\" + token + \")+\", \"gi\");\n    function decodeComponents(components, split) {\n      try {\n        return [decodeURIComponent(components.join(\"\"))];\n      } catch (err) {\n      }\n      if (components.length === 1) {\n        return components;\n      }\n      split = split || 1;\n      var left = components.slice(0, split);\n      var right = components.slice(split);\n      return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n    }\n    function decode8(input) {\n      try {\n        return decodeURIComponent(input);\n      } catch (err) {\n        var tokens = input.match(singleMatcher) || [];\n        for (var i4 = 1; i4 < tokens.length; i4++) {\n          input = decodeComponents(tokens, i4).join(\"\");\n          tokens = input.match(singleMatcher) || [];\n        }\n        return input;\n      }\n    }\n    function customDecodeURIComponent(input) {\n      var replaceMap = {\n        \"%FE%FF\": \"��\",\n        \"%FF%FE\": \"��\"\n      };\n      var match = multiMatcher.exec(input);\n      while (match) {\n        try {\n          replaceMap[match[0]] = decodeURIComponent(match[0]);\n        } catch (err) {\n          var result = decode8(match[0]);\n          if (result !== match[0]) {\n            replaceMap[match[0]] = result;\n          }\n        }\n        match = multiMatcher.exec(input);\n      }\n      replaceMap[\"%C2\"] = \"�\";\n      var entries = Object.keys(replaceMap);\n      for (var i4 = 0; i4 < entries.length; i4++) {\n        var key2 = entries[i4];\n        input = input.replace(new RegExp(key2, \"g\"), replaceMap[key2]);\n      }\n      return input;\n    }\n    module.exports = function(encodedURI) {\n      if (typeof encodedURI !== \"string\") {\n        throw new TypeError(\"Expected `encodedURI` to be of type `string`, got `\" + typeof encodedURI + \"`\");\n      }\n      try {\n        encodedURI = encodedURI.replace(/\\+/g, \" \");\n        return decodeURIComponent(encodedURI);\n      } catch (err) {\n        return customDecodeURIComponent(encodedURI);\n      }\n    };\n  }\n});\n\n// node_modules/split-on-first/index.js\nvar require_split_on_first = __commonJS({\n  \"node_modules/split-on-first/index.js\"(exports, module) {\n    \"use strict\";\n    module.exports = (string2, separator) => {\n      if (!(typeof string2 === \"string\" && typeof separator === \"string\")) {\n        throw new TypeError(\"Expected the arguments to be of type `string`\");\n      }\n      if (separator === \"\") {\n        return [string2];\n      }\n      const separatorIndex = string2.indexOf(separator);\n      if (separatorIndex === -1) {\n        return [string2];\n      }\n      return [\n        string2.slice(0, separatorIndex),\n        string2.slice(separatorIndex + separator.length)\n      ];\n    };\n  }\n});\n\n// node_modules/filter-obj/index.js\nvar require_filter_obj = __commonJS({\n  \"node_modules/filter-obj/index.js\"(exports, module) {\n    \"use strict\";\n    module.exports = function(obj, predicate) {\n      var ret = {};\n      var keys2 = Object.keys(obj);\n      var isArr = Array.isArray(predicate);\n      for (var i4 = 0; i4 < keys2.length; i4++) {\n        var key2 = keys2[i4];\n        var val = obj[key2];\n        if (isArr ? predicate.indexOf(key2) !== -1 : predicate(key2, val, obj)) {\n          ret[key2] = val;\n        }\n      }\n      return ret;\n    };\n  }\n});\n\n// node_modules/query-string/index.js\nvar require_query_string = __commonJS({\n  \"node_modules/query-string/index.js\"(exports) {\n    \"use strict\";\n    var strictUriEncode = require_strict_uri_encode();\n    var decodeComponent = require_decode_uri_component();\n    var splitOnFirst = require_split_on_first();\n    var filterObject = require_filter_obj();\n    var isNullOrUndefined = (value) => value === null || value === void 0;\n    var encodeFragmentIdentifier = Symbol(\"encodeFragmentIdentifier\");\n    function encoderForArrayFormat(options) {\n      switch (options.arrayFormat) {\n        case \"index\":\n          return (key2) => (result, value) => {\n            const index = result.length;\n            if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n              return result;\n            }\n            if (value === null) {\n              return [...result, [encode8(key2, options), \"[\", index, \"]\"].join(\"\")];\n            }\n            return [\n              ...result,\n              [encode8(key2, options), \"[\", encode8(index, options), \"]=\", encode8(value, options)].join(\"\")\n            ];\n          };\n        case \"bracket\":\n          return (key2) => (result, value) => {\n            if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n              return result;\n            }\n            if (value === null) {\n              return [...result, [encode8(key2, options), \"[]\"].join(\"\")];\n            }\n            return [...result, [encode8(key2, options), \"[]=\", encode8(value, options)].join(\"\")];\n          };\n        case \"colon-list-separator\":\n          return (key2) => (result, value) => {\n            if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n              return result;\n            }\n            if (value === null) {\n              return [...result, [encode8(key2, options), \":list=\"].join(\"\")];\n            }\n            return [...result, [encode8(key2, options), \":list=\", encode8(value, options)].join(\"\")];\n          };\n        case \"comma\":\n        case \"separator\":\n        case \"bracket-separator\": {\n          const keyValueSep = options.arrayFormat === \"bracket-separator\" ? \"[]=\" : \"=\";\n          return (key2) => (result, value) => {\n            if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n              return result;\n            }\n            value = value === null ? \"\" : value;\n            if (result.length === 0) {\n              return [[encode8(key2, options), keyValueSep, encode8(value, options)].join(\"\")];\n            }\n            return [[result, encode8(value, options)].join(options.arrayFormatSeparator)];\n          };\n        }\n        default:\n          return (key2) => (result, value) => {\n            if (value === void 0 || options.skipNull && value === null || options.skipEmptyString && value === \"\") {\n              return result;\n            }\n            if (value === null) {\n              return [...result, encode8(key2, options)];\n            }\n            return [...result, [encode8(key2, options), \"=\", encode8(value, options)].join(\"\")];\n          };\n      }\n    }\n    function parserForArrayFormat(options) {\n      let result;\n      switch (options.arrayFormat) {\n        case \"index\":\n          return (key2, value, accumulator) => {\n            result = /\\[(\\d*)\\]$/.exec(key2);\n            key2 = key2.replace(/\\[\\d*\\]$/, \"\");\n            if (!result) {\n              accumulator[key2] = value;\n              return;\n            }\n            if (accumulator[key2] === void 0) {\n              accumulator[key2] = {};\n            }\n            accumulator[key2][result[1]] = value;\n          };\n        case \"bracket\":\n          return (key2, value, accumulator) => {\n            result = /(\\[\\])$/.exec(key2);\n            key2 = key2.replace(/\\[\\]$/, \"\");\n            if (!result) {\n              accumulator[key2] = value;\n              return;\n            }\n            if (accumulator[key2] === void 0) {\n              accumulator[key2] = [value];\n              return;\n            }\n            accumulator[key2] = [].concat(accumulator[key2], value);\n          };\n        case \"colon-list-separator\":\n          return (key2, value, accumulator) => {\n            result = /(:list)$/.exec(key2);\n            key2 = key2.replace(/:list$/, \"\");\n            if (!result) {\n              accumulator[key2] = value;\n              return;\n            }\n            if (accumulator[key2] === void 0) {\n              accumulator[key2] = [value];\n              return;\n            }\n            accumulator[key2] = [].concat(accumulator[key2], value);\n          };\n        case \"comma\":\n        case \"separator\":\n          return (key2, value, accumulator) => {\n            const isArray = typeof value === \"string\" && value.includes(options.arrayFormatSeparator);\n            const isEncodedArray = typeof value === \"string\" && !isArray && decode8(value, options).includes(options.arrayFormatSeparator);\n            value = isEncodedArray ? decode8(value, options) : value;\n            const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map((item) => decode8(item, options)) : value === null ? value : decode8(value, options);\n            accumulator[key2] = newValue;\n          };\n        case \"bracket-separator\":\n          return (key2, value, accumulator) => {\n            const isArray = /(\\[\\])$/.test(key2);\n            key2 = key2.replace(/\\[\\]$/, \"\");\n            if (!isArray) {\n              accumulator[key2] = value ? decode8(value, options) : value;\n              return;\n            }\n            const arrayValue = value === null ? [] : value.split(options.arrayFormatSeparator).map((item) => decode8(item, options));\n            if (accumulator[key2] === void 0) {\n              accumulator[key2] = arrayValue;\n              return;\n            }\n            accumulator[key2] = [].concat(accumulator[key2], arrayValue);\n          };\n        default:\n          return (key2, value, accumulator) => {\n            if (accumulator[key2] === void 0) {\n              accumulator[key2] = value;\n              return;\n            }\n            accumulator[key2] = [].concat(accumulator[key2], value);\n          };\n      }\n    }\n    function validateArrayFormatSeparator(value) {\n      if (typeof value !== \"string\" || value.length !== 1) {\n        throw new TypeError(\"arrayFormatSeparator must be single character string\");\n      }\n    }\n    function encode8(value, options) {\n      if (options.encode) {\n        return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n      }\n      return value;\n    }\n    function decode8(value, options) {\n      if (options.decode) {\n        return decodeComponent(value);\n      }\n      return value;\n    }\n    function keysSorter(input) {\n      if (Array.isArray(input)) {\n        return input.sort();\n      }\n      if (typeof input === \"object\") {\n        return keysSorter(Object.keys(input)).sort((a4, b5) => Number(a4) - Number(b5)).map((key2) => input[key2]);\n      }\n      return input;\n    }\n    function removeHash(input) {\n      const hashStart = input.indexOf(\"#\");\n      if (hashStart !== -1) {\n        input = input.slice(0, hashStart);\n      }\n      return input;\n    }\n    function getHash(url) {\n      let hash2 = \"\";\n      const hashStart = url.indexOf(\"#\");\n      if (hashStart !== -1) {\n        hash2 = url.slice(hashStart);\n      }\n      return hash2;\n    }\n    function extract(input) {\n      input = removeHash(input);\n      const queryStart = input.indexOf(\"?\");\n      if (queryStart === -1) {\n        return \"\";\n      }\n      return input.slice(queryStart + 1);\n    }\n    function parseValue(value, options) {\n      if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === \"string\" && value.trim() !== \"\")) {\n        value = Number(value);\n      } else if (options.parseBooleans && value !== null && (value.toLowerCase() === \"true\" || value.toLowerCase() === \"false\")) {\n        value = value.toLowerCase() === \"true\";\n      }\n      return value;\n    }\n    function parse2(query, options) {\n      options = Object.assign({\n        decode: true,\n        sort: true,\n        arrayFormat: \"none\",\n        arrayFormatSeparator: \",\",\n        parseNumbers: false,\n        parseBooleans: false\n      }, options);\n      validateArrayFormatSeparator(options.arrayFormatSeparator);\n      const formatter = parserForArrayFormat(options);\n      const ret = /* @__PURE__ */ Object.create(null);\n      if (typeof query !== \"string\") {\n        return ret;\n      }\n      query = query.trim().replace(/^[?#&]/, \"\");\n      if (!query) {\n        return ret;\n      }\n      for (const param of query.split(\"&\")) {\n        if (param === \"\") {\n          continue;\n        }\n        let [key2, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, \" \") : param, \"=\");\n        value = value === void 0 ? null : [\"comma\", \"separator\", \"bracket-separator\"].includes(options.arrayFormat) ? value : decode8(value, options);\n        formatter(decode8(key2, options), value, ret);\n      }\n      for (const key2 of Object.keys(ret)) {\n        const value = ret[key2];\n        if (typeof value === \"object\" && value !== null) {\n          for (const k4 of Object.keys(value)) {\n            value[k4] = parseValue(value[k4], options);\n          }\n        } else {\n          ret[key2] = parseValue(value, options);\n        }\n      }\n      if (options.sort === false) {\n        return ret;\n      }\n      return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key2) => {\n        const value = ret[key2];\n        if (Boolean(value) && typeof value === \"object\" && !Array.isArray(value)) {\n          result[key2] = keysSorter(value);\n        } else {\n          result[key2] = value;\n        }\n        return result;\n      }, /* @__PURE__ */ Object.create(null));\n    }\n    exports.extract = extract;\n    exports.parse = parse2;\n    exports.stringify = (object, options) => {\n      if (!object) {\n        return \"\";\n      }\n      options = Object.assign({\n        encode: true,\n        strict: true,\n        arrayFormat: \"none\",\n        arrayFormatSeparator: \",\"\n      }, options);\n      validateArrayFormatSeparator(options.arrayFormatSeparator);\n      const shouldFilter = (key2) => options.skipNull && isNullOrUndefined(object[key2]) || options.skipEmptyString && object[key2] === \"\";\n      const formatter = encoderForArrayFormat(options);\n      const objectCopy = {};\n      for (const key2 of Object.keys(object)) {\n        if (!shouldFilter(key2)) {\n          objectCopy[key2] = object[key2];\n        }\n      }\n      const keys2 = Object.keys(objectCopy);\n      if (options.sort !== false) {\n        keys2.sort(options.sort);\n      }\n      return keys2.map((key2) => {\n        const value = object[key2];\n        if (value === void 0) {\n          return \"\";\n        }\n        if (value === null) {\n          return encode8(key2, options);\n        }\n        if (Array.isArray(value)) {\n          if (value.length === 0 && options.arrayFormat === \"bracket-separator\") {\n            return encode8(key2, options) + \"[]\";\n          }\n          return value.reduce(formatter(key2), []).join(\"&\");\n        }\n        return encode8(key2, options) + \"=\" + encode8(value, options);\n      }).filter((x6) => x6.length > 0).join(\"&\");\n    };\n    exports.parseUrl = (url, options) => {\n      options = Object.assign({\n        decode: true\n      }, options);\n      const [url_, hash2] = splitOnFirst(url, \"#\");\n      return Object.assign(\n        {\n          url: url_.split(\"?\")[0] || \"\",\n          query: parse2(extract(url), options)\n        },\n        options && options.parseFragmentIdentifier && hash2 ? { fragmentIdentifier: decode8(hash2, options) } : {}\n      );\n    };\n    exports.stringifyUrl = (object, options) => {\n      options = Object.assign({\n        encode: true,\n        strict: true,\n        [encodeFragmentIdentifier]: true\n      }, options);\n      const url = removeHash(object.url).split(\"?\")[0] || \"\";\n      const queryFromUrl = exports.extract(object.url);\n      const parsedQueryFromUrl = exports.parse(queryFromUrl, { sort: false });\n      const query = Object.assign(parsedQueryFromUrl, object.query);\n      let queryString = exports.stringify(query, options);\n      if (queryString) {\n        queryString = `?${queryString}`;\n      }\n      let hash2 = getHash(object.url);\n      if (object.fragmentIdentifier) {\n        hash2 = `#${options[encodeFragmentIdentifier] ? encode8(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n      }\n      return `${url}${queryString}${hash2}`;\n    };\n    exports.pick = (input, filter, options) => {\n      options = Object.assign({\n        parseFragmentIdentifier: true,\n        [encodeFragmentIdentifier]: false\n      }, options);\n      const { url, query, fragmentIdentifier } = exports.parseUrl(input, options);\n      return exports.stringifyUrl({\n        url,\n        query: filterObject(query, filter),\n        fragmentIdentifier\n      }, options);\n    };\n    exports.exclude = (input, filter, options) => {\n      const exclusionFilter = Array.isArray(filter) ? (key2) => !filter.includes(key2) : (key2, value) => !filter(key2, value);\n      return exports.pick(input, exclusionFilter, options);\n    };\n  }\n});\n\n// node_modules/js-sha3/src/sha3.js\nvar require_sha3 = __commonJS({\n  \"node_modules/js-sha3/src/sha3.js\"(exports, module) {\n    (function() {\n      \"use strict\";\n      var INPUT_ERROR = \"input is invalid type\";\n      var FINALIZE_ERROR = \"finalize already called\";\n      var WINDOW = typeof window === \"object\";\n      var root = WINDOW ? window : {};\n      if (root.JS_SHA3_NO_WINDOW) {\n        WINDOW = false;\n      }\n      var WEB_WORKER = !WINDOW && typeof self === \"object\";\n      var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === \"object\" && process.versions && process.versions.node;\n      if (NODE_JS) {\n        root = global;\n      } else if (WEB_WORKER) {\n        root = self;\n      }\n      var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === \"object\" && module.exports;\n      var AMD = typeof define === \"function\" && define.amd;\n      var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== \"undefined\";\n      var HEX_CHARS = \"0123456789abcdef\".split(\"\");\n      var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n      var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n      var KECCAK_PADDING = [1, 256, 65536, 16777216];\n      var PADDING = [6, 1536, 393216, 100663296];\n      var SHIFT = [0, 8, 16, 24];\n      var RC = [\n        1,\n        0,\n        32898,\n        0,\n        32906,\n        2147483648,\n        2147516416,\n        2147483648,\n        32907,\n        0,\n        2147483649,\n        0,\n        2147516545,\n        2147483648,\n        32777,\n        2147483648,\n        138,\n        0,\n        136,\n        0,\n        2147516425,\n        0,\n        2147483658,\n        0,\n        2147516555,\n        0,\n        139,\n        2147483648,\n        32905,\n        2147483648,\n        32771,\n        2147483648,\n        32770,\n        2147483648,\n        128,\n        2147483648,\n        32778,\n        0,\n        2147483658,\n        2147483648,\n        2147516545,\n        2147483648,\n        32896,\n        2147483648,\n        2147483649,\n        0,\n        2147516424,\n        2147483648\n      ];\n      var BITS = [224, 256, 384, 512];\n      var SHAKE_BITS = [128, 256];\n      var OUTPUT_TYPES = [\"hex\", \"buffer\", \"arrayBuffer\", \"array\", \"digest\"];\n      var CSHAKE_BYTEPAD = {\n        \"128\": 168,\n        \"256\": 136\n      };\n      if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n        Array.isArray = function(obj) {\n          return Object.prototype.toString.call(obj) === \"[object Array]\";\n        };\n      }\n      if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n        ArrayBuffer.isView = function(obj) {\n          return typeof obj === \"object\" && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n        };\n      }\n      var createOutputMethod = function(bits2, padding2, outputType) {\n        return function(message) {\n          return new Keccak(bits2, padding2, bits2).update(message)[outputType]();\n        };\n      };\n      var createShakeOutputMethod = function(bits2, padding2, outputType) {\n        return function(message, outputBits) {\n          return new Keccak(bits2, padding2, outputBits).update(message)[outputType]();\n        };\n      };\n      var createCshakeOutputMethod = function(bits2, padding2, outputType) {\n        return function(message, outputBits, n5, s3) {\n          return methods[\"cshake\" + bits2].update(message, outputBits, n5, s3)[outputType]();\n        };\n      };\n      var createKmacOutputMethod = function(bits2, padding2, outputType) {\n        return function(key2, message, outputBits, s3) {\n          return methods[\"kmac\" + bits2].update(key2, message, outputBits, s3)[outputType]();\n        };\n      };\n      var createOutputMethods = function(method, createMethod2, bits2, padding2) {\n        for (var i5 = 0; i5 < OUTPUT_TYPES.length; ++i5) {\n          var type = OUTPUT_TYPES[i5];\n          method[type] = createMethod2(bits2, padding2, type);\n        }\n        return method;\n      };\n      var createMethod = function(bits2, padding2) {\n        var method = createOutputMethod(bits2, padding2, \"hex\");\n        method.create = function() {\n          return new Keccak(bits2, padding2, bits2);\n        };\n        method.update = function(message) {\n          return method.create().update(message);\n        };\n        return createOutputMethods(method, createOutputMethod, bits2, padding2);\n      };\n      var createShakeMethod = function(bits2, padding2) {\n        var method = createShakeOutputMethod(bits2, padding2, \"hex\");\n        method.create = function(outputBits) {\n          return new Keccak(bits2, padding2, outputBits);\n        };\n        method.update = function(message, outputBits) {\n          return method.create(outputBits).update(message);\n        };\n        return createOutputMethods(method, createShakeOutputMethod, bits2, padding2);\n      };\n      var createCshakeMethod = function(bits2, padding2) {\n        var w4 = CSHAKE_BYTEPAD[bits2];\n        var method = createCshakeOutputMethod(bits2, padding2, \"hex\");\n        method.create = function(outputBits, n5, s3) {\n          if (!n5 && !s3) {\n            return methods[\"shake\" + bits2].create(outputBits);\n          } else {\n            return new Keccak(bits2, padding2, outputBits).bytepad([n5, s3], w4);\n          }\n        };\n        method.update = function(message, outputBits, n5, s3) {\n          return method.create(outputBits, n5, s3).update(message);\n        };\n        return createOutputMethods(method, createCshakeOutputMethod, bits2, padding2);\n      };\n      var createKmacMethod = function(bits2, padding2) {\n        var w4 = CSHAKE_BYTEPAD[bits2];\n        var method = createKmacOutputMethod(bits2, padding2, \"hex\");\n        method.create = function(key2, outputBits, s3) {\n          return new Kmac(bits2, padding2, outputBits).bytepad([\"KMAC\", s3], w4).bytepad([key2], w4);\n        };\n        method.update = function(key2, message, outputBits, s3) {\n          return method.create(key2, outputBits, s3).update(message);\n        };\n        return createOutputMethods(method, createKmacOutputMethod, bits2, padding2);\n      };\n      var algorithms = [\n        { name: \"keccak\", padding: KECCAK_PADDING, bits: BITS, createMethod },\n        { name: \"sha3\", padding: PADDING, bits: BITS, createMethod },\n        { name: \"shake\", padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n        { name: \"cshake\", padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n        { name: \"kmac\", padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n      ];\n      var methods = {}, methodNames = [];\n      for (var i4 = 0; i4 < algorithms.length; ++i4) {\n        var algorithm = algorithms[i4];\n        var bits = algorithm.bits;\n        for (var j2 = 0; j2 < bits.length; ++j2) {\n          var methodName = algorithm.name + \"_\" + bits[j2];\n          methodNames.push(methodName);\n          methods[methodName] = algorithm.createMethod(bits[j2], algorithm.padding);\n          if (algorithm.name !== \"sha3\") {\n            var newMethodName = algorithm.name + bits[j2];\n            methodNames.push(newMethodName);\n            methods[newMethodName] = methods[methodName];\n          }\n        }\n      }\n      function Keccak(bits2, padding2, outputBits) {\n        this.blocks = [];\n        this.s = [];\n        this.padding = padding2;\n        this.outputBits = outputBits;\n        this.reset = true;\n        this.finalized = false;\n        this.block = 0;\n        this.start = 0;\n        this.blockCount = 1600 - (bits2 << 1) >> 5;\n        this.byteCount = this.blockCount << 2;\n        this.outputBlocks = outputBits >> 5;\n        this.extraBytes = (outputBits & 31) >> 3;\n        for (var i5 = 0; i5 < 50; ++i5) {\n          this.s[i5] = 0;\n        }\n      }\n      Keccak.prototype.update = function(message) {\n        if (this.finalized) {\n          throw new Error(FINALIZE_ERROR);\n        }\n        var notString, type = typeof message;\n        if (type !== \"string\") {\n          if (type === \"object\") {\n            if (message === null) {\n              throw new Error(INPUT_ERROR);\n            } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n              message = new Uint8Array(message);\n            } else if (!Array.isArray(message)) {\n              if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n                throw new Error(INPUT_ERROR);\n              }\n            }\n          } else {\n            throw new Error(INPUT_ERROR);\n          }\n          notString = true;\n        }\n        var blocks = this.blocks, byteCount = this.byteCount, length2 = message.length, blockCount = this.blockCount, index = 0, s3 = this.s, i5, code2;\n        while (index < length2) {\n          if (this.reset) {\n            this.reset = false;\n            blocks[0] = this.block;\n            for (i5 = 1; i5 < blockCount + 1; ++i5) {\n              blocks[i5] = 0;\n            }\n          }\n          if (notString) {\n            for (i5 = this.start; index < length2 && i5 < byteCount; ++index) {\n              blocks[i5 >> 2] |= message[index] << SHIFT[i5++ & 3];\n            }\n          } else {\n            for (i5 = this.start; index < length2 && i5 < byteCount; ++index) {\n              code2 = message.charCodeAt(index);\n              if (code2 < 128) {\n                blocks[i5 >> 2] |= code2 << SHIFT[i5++ & 3];\n              } else if (code2 < 2048) {\n                blocks[i5 >> 2] |= (192 | code2 >> 6) << SHIFT[i5++ & 3];\n                blocks[i5 >> 2] |= (128 | code2 & 63) << SHIFT[i5++ & 3];\n              } else if (code2 < 55296 || code2 >= 57344) {\n                blocks[i5 >> 2] |= (224 | code2 >> 12) << SHIFT[i5++ & 3];\n                blocks[i5 >> 2] |= (128 | code2 >> 6 & 63) << SHIFT[i5++ & 3];\n                blocks[i5 >> 2] |= (128 | code2 & 63) << SHIFT[i5++ & 3];\n              } else {\n                code2 = 65536 + ((code2 & 1023) << 10 | message.charCodeAt(++index) & 1023);\n                blocks[i5 >> 2] |= (240 | code2 >> 18) << SHIFT[i5++ & 3];\n                blocks[i5 >> 2] |= (128 | code2 >> 12 & 63) << SHIFT[i5++ & 3];\n                blocks[i5 >> 2] |= (128 | code2 >> 6 & 63) << SHIFT[i5++ & 3];\n                blocks[i5 >> 2] |= (128 | code2 & 63) << SHIFT[i5++ & 3];\n              }\n            }\n          }\n          this.lastByteIndex = i5;\n          if (i5 >= byteCount) {\n            this.start = i5 - byteCount;\n            this.block = blocks[blockCount];\n            for (i5 = 0; i5 < blockCount; ++i5) {\n              s3[i5] ^= blocks[i5];\n            }\n            f4(s3);\n            this.reset = true;\n          } else {\n            this.start = i5;\n          }\n        }\n        return this;\n      };\n      Keccak.prototype.encode = function(x6, right) {\n        var o4 = x6 & 255, n5 = 1;\n        var bytes = [o4];\n        x6 = x6 >> 8;\n        o4 = x6 & 255;\n        while (o4 > 0) {\n          bytes.unshift(o4);\n          x6 = x6 >> 8;\n          o4 = x6 & 255;\n          ++n5;\n        }\n        if (right) {\n          bytes.push(n5);\n        } else {\n          bytes.unshift(n5);\n        }\n        this.update(bytes);\n        return bytes.length;\n      };\n      Keccak.prototype.encodeString = function(str) {\n        var notString, type = typeof str;\n        if (type !== \"string\") {\n          if (type === \"object\") {\n            if (str === null) {\n              throw new Error(INPUT_ERROR);\n            } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n              str = new Uint8Array(str);\n            } else if (!Array.isArray(str)) {\n              if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n                throw new Error(INPUT_ERROR);\n              }\n            }\n          } else {\n            throw new Error(INPUT_ERROR);\n          }\n          notString = true;\n        }\n        var bytes = 0, length2 = str.length;\n        if (notString) {\n          bytes = length2;\n        } else {\n          for (var i5 = 0; i5 < str.length; ++i5) {\n            var code2 = str.charCodeAt(i5);\n            if (code2 < 128) {\n              bytes += 1;\n            } else if (code2 < 2048) {\n              bytes += 2;\n            } else if (code2 < 55296 || code2 >= 57344) {\n              bytes += 3;\n            } else {\n              code2 = 65536 + ((code2 & 1023) << 10 | str.charCodeAt(++i5) & 1023);\n              bytes += 4;\n            }\n          }\n        }\n        bytes += this.encode(bytes * 8);\n        this.update(str);\n        return bytes;\n      };\n      Keccak.prototype.bytepad = function(strs, w4) {\n        var bytes = this.encode(w4);\n        for (var i5 = 0; i5 < strs.length; ++i5) {\n          bytes += this.encodeString(strs[i5]);\n        }\n        var paddingBytes = w4 - bytes % w4;\n        var zeros2 = [];\n        zeros2.length = paddingBytes;\n        this.update(zeros2);\n        return this;\n      };\n      Keccak.prototype.finalize = function() {\n        if (this.finalized) {\n          return;\n        }\n        this.finalized = true;\n        var blocks = this.blocks, i5 = this.lastByteIndex, blockCount = this.blockCount, s3 = this.s;\n        blocks[i5 >> 2] |= this.padding[i5 & 3];\n        if (this.lastByteIndex === this.byteCount) {\n          blocks[0] = blocks[blockCount];\n          for (i5 = 1; i5 < blockCount + 1; ++i5) {\n            blocks[i5] = 0;\n          }\n        }\n        blocks[blockCount - 1] |= 2147483648;\n        for (i5 = 0; i5 < blockCount; ++i5) {\n          s3[i5] ^= blocks[i5];\n        }\n        f4(s3);\n      };\n      Keccak.prototype.toString = Keccak.prototype.hex = function() {\n        this.finalize();\n        var blockCount = this.blockCount, s3 = this.s, outputBlocks = this.outputBlocks, extraBytes = this.extraBytes, i5 = 0, j3 = 0;\n        var hex = \"\", block;\n        while (j3 < outputBlocks) {\n          for (i5 = 0; i5 < blockCount && j3 < outputBlocks; ++i5, ++j3) {\n            block = s3[i5];\n            hex += HEX_CHARS[block >> 4 & 15] + HEX_CHARS[block & 15] + HEX_CHARS[block >> 12 & 15] + HEX_CHARS[block >> 8 & 15] + HEX_CHARS[block >> 20 & 15] + HEX_CHARS[block >> 16 & 15] + HEX_CHARS[block >> 28 & 15] + HEX_CHARS[block >> 24 & 15];\n          }\n          if (j3 % blockCount === 0) {\n            f4(s3);\n            i5 = 0;\n          }\n        }\n        if (extraBytes) {\n          block = s3[i5];\n          hex += HEX_CHARS[block >> 4 & 15] + HEX_CHARS[block & 15];\n          if (extraBytes > 1) {\n            hex += HEX_CHARS[block >> 12 & 15] + HEX_CHARS[block >> 8 & 15];\n          }\n          if (extraBytes > 2) {\n            hex += HEX_CHARS[block >> 20 & 15] + HEX_CHARS[block >> 16 & 15];\n          }\n        }\n        return hex;\n      };\n      Keccak.prototype.arrayBuffer = function() {\n        this.finalize();\n        var blockCount = this.blockCount, s3 = this.s, outputBlocks = this.outputBlocks, extraBytes = this.extraBytes, i5 = 0, j3 = 0;\n        var bytes = this.outputBits >> 3;\n        var buffer;\n        if (extraBytes) {\n          buffer = new ArrayBuffer(outputBlocks + 1 << 2);\n        } else {\n          buffer = new ArrayBuffer(bytes);\n        }\n        var array = new Uint32Array(buffer);\n        while (j3 < outputBlocks) {\n          for (i5 = 0; i5 < blockCount && j3 < outputBlocks; ++i5, ++j3) {\n            array[j3] = s3[i5];\n          }\n          if (j3 % blockCount === 0) {\n            f4(s3);\n          }\n        }\n        if (extraBytes) {\n          array[i5] = s3[i5];\n          buffer = buffer.slice(0, bytes);\n        }\n        return buffer;\n      };\n      Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n      Keccak.prototype.digest = Keccak.prototype.array = function() {\n        this.finalize();\n        var blockCount = this.blockCount, s3 = this.s, outputBlocks = this.outputBlocks, extraBytes = this.extraBytes, i5 = 0, j3 = 0;\n        var array = [], offset, block;\n        while (j3 < outputBlocks) {\n          for (i5 = 0; i5 < blockCount && j3 < outputBlocks; ++i5, ++j3) {\n            offset = j3 << 2;\n            block = s3[i5];\n            array[offset] = block & 255;\n            array[offset + 1] = block >> 8 & 255;\n            array[offset + 2] = block >> 16 & 255;\n            array[offset + 3] = block >> 24 & 255;\n          }\n          if (j3 % blockCount === 0) {\n            f4(s3);\n          }\n        }\n        if (extraBytes) {\n          offset = j3 << 2;\n          block = s3[i5];\n          array[offset] = block & 255;\n          if (extraBytes > 1) {\n            array[offset + 1] = block >> 8 & 255;\n          }\n          if (extraBytes > 2) {\n            array[offset + 2] = block >> 16 & 255;\n          }\n        }\n        return array;\n      };\n      function Kmac(bits2, padding2, outputBits) {\n        Keccak.call(this, bits2, padding2, outputBits);\n      }\n      Kmac.prototype = new Keccak();\n      Kmac.prototype.finalize = function() {\n        this.encode(this.outputBits, true);\n        return Keccak.prototype.finalize.call(this);\n      };\n      var f4 = function(s3) {\n        var h5, l4, n5, c0, c1, c22, c32, c42, c5, c6, c7, c8, c9, b0, b1, b22, b32, b42, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b222, b23, b24, b25, b26, b27, b28, b29, b30, b31, b322, b33, b34, b35, b36, b37, b38, b39, b40, b41, b422, b43, b44, b45, b46, b47, b48, b49;\n        for (n5 = 0; n5 < 48; n5 += 2) {\n          c0 = s3[0] ^ s3[10] ^ s3[20] ^ s3[30] ^ s3[40];\n          c1 = s3[1] ^ s3[11] ^ s3[21] ^ s3[31] ^ s3[41];\n          c22 = s3[2] ^ s3[12] ^ s3[22] ^ s3[32] ^ s3[42];\n          c32 = s3[3] ^ s3[13] ^ s3[23] ^ s3[33] ^ s3[43];\n          c42 = s3[4] ^ s3[14] ^ s3[24] ^ s3[34] ^ s3[44];\n          c5 = s3[5] ^ s3[15] ^ s3[25] ^ s3[35] ^ s3[45];\n          c6 = s3[6] ^ s3[16] ^ s3[26] ^ s3[36] ^ s3[46];\n          c7 = s3[7] ^ s3[17] ^ s3[27] ^ s3[37] ^ s3[47];\n          c8 = s3[8] ^ s3[18] ^ s3[28] ^ s3[38] ^ s3[48];\n          c9 = s3[9] ^ s3[19] ^ s3[29] ^ s3[39] ^ s3[49];\n          h5 = c8 ^ (c22 << 1 | c32 >>> 31);\n          l4 = c9 ^ (c32 << 1 | c22 >>> 31);\n          s3[0] ^= h5;\n          s3[1] ^= l4;\n          s3[10] ^= h5;\n          s3[11] ^= l4;\n          s3[20] ^= h5;\n          s3[21] ^= l4;\n          s3[30] ^= h5;\n          s3[31] ^= l4;\n          s3[40] ^= h5;\n          s3[41] ^= l4;\n          h5 = c0 ^ (c42 << 1 | c5 >>> 31);\n          l4 = c1 ^ (c5 << 1 | c42 >>> 31);\n          s3[2] ^= h5;\n          s3[3] ^= l4;\n          s3[12] ^= h5;\n          s3[13] ^= l4;\n          s3[22] ^= h5;\n          s3[23] ^= l4;\n          s3[32] ^= h5;\n          s3[33] ^= l4;\n          s3[42] ^= h5;\n          s3[43] ^= l4;\n          h5 = c22 ^ (c6 << 1 | c7 >>> 31);\n          l4 = c32 ^ (c7 << 1 | c6 >>> 31);\n          s3[4] ^= h5;\n          s3[5] ^= l4;\n          s3[14] ^= h5;\n          s3[15] ^= l4;\n          s3[24] ^= h5;\n          s3[25] ^= l4;\n          s3[34] ^= h5;\n          s3[35] ^= l4;\n          s3[44] ^= h5;\n          s3[45] ^= l4;\n          h5 = c42 ^ (c8 << 1 | c9 >>> 31);\n          l4 = c5 ^ (c9 << 1 | c8 >>> 31);\n          s3[6] ^= h5;\n          s3[7] ^= l4;\n          s3[16] ^= h5;\n          s3[17] ^= l4;\n          s3[26] ^= h5;\n          s3[27] ^= l4;\n          s3[36] ^= h5;\n          s3[37] ^= l4;\n          s3[46] ^= h5;\n          s3[47] ^= l4;\n          h5 = c6 ^ (c0 << 1 | c1 >>> 31);\n          l4 = c7 ^ (c1 << 1 | c0 >>> 31);\n          s3[8] ^= h5;\n          s3[9] ^= l4;\n          s3[18] ^= h5;\n          s3[19] ^= l4;\n          s3[28] ^= h5;\n          s3[29] ^= l4;\n          s3[38] ^= h5;\n          s3[39] ^= l4;\n          s3[48] ^= h5;\n          s3[49] ^= l4;\n          b0 = s3[0];\n          b1 = s3[1];\n          b322 = s3[11] << 4 | s3[10] >>> 28;\n          b33 = s3[10] << 4 | s3[11] >>> 28;\n          b14 = s3[20] << 3 | s3[21] >>> 29;\n          b15 = s3[21] << 3 | s3[20] >>> 29;\n          b46 = s3[31] << 9 | s3[30] >>> 23;\n          b47 = s3[30] << 9 | s3[31] >>> 23;\n          b28 = s3[40] << 18 | s3[41] >>> 14;\n          b29 = s3[41] << 18 | s3[40] >>> 14;\n          b20 = s3[2] << 1 | s3[3] >>> 31;\n          b21 = s3[3] << 1 | s3[2] >>> 31;\n          b22 = s3[13] << 12 | s3[12] >>> 20;\n          b32 = s3[12] << 12 | s3[13] >>> 20;\n          b34 = s3[22] << 10 | s3[23] >>> 22;\n          b35 = s3[23] << 10 | s3[22] >>> 22;\n          b16 = s3[33] << 13 | s3[32] >>> 19;\n          b17 = s3[32] << 13 | s3[33] >>> 19;\n          b48 = s3[42] << 2 | s3[43] >>> 30;\n          b49 = s3[43] << 2 | s3[42] >>> 30;\n          b40 = s3[5] << 30 | s3[4] >>> 2;\n          b41 = s3[4] << 30 | s3[5] >>> 2;\n          b222 = s3[14] << 6 | s3[15] >>> 26;\n          b23 = s3[15] << 6 | s3[14] >>> 26;\n          b42 = s3[25] << 11 | s3[24] >>> 21;\n          b5 = s3[24] << 11 | s3[25] >>> 21;\n          b36 = s3[34] << 15 | s3[35] >>> 17;\n          b37 = s3[35] << 15 | s3[34] >>> 17;\n          b18 = s3[45] << 29 | s3[44] >>> 3;\n          b19 = s3[44] << 29 | s3[45] >>> 3;\n          b10 = s3[6] << 28 | s3[7] >>> 4;\n          b11 = s3[7] << 28 | s3[6] >>> 4;\n          b422 = s3[17] << 23 | s3[16] >>> 9;\n          b43 = s3[16] << 23 | s3[17] >>> 9;\n          b24 = s3[26] << 25 | s3[27] >>> 7;\n          b25 = s3[27] << 25 | s3[26] >>> 7;\n          b6 = s3[36] << 21 | s3[37] >>> 11;\n          b7 = s3[37] << 21 | s3[36] >>> 11;\n          b38 = s3[47] << 24 | s3[46] >>> 8;\n          b39 = s3[46] << 24 | s3[47] >>> 8;\n          b30 = s3[8] << 27 | s3[9] >>> 5;\n          b31 = s3[9] << 27 | s3[8] >>> 5;\n          b12 = s3[18] << 20 | s3[19] >>> 12;\n          b13 = s3[19] << 20 | s3[18] >>> 12;\n          b44 = s3[29] << 7 | s3[28] >>> 25;\n          b45 = s3[28] << 7 | s3[29] >>> 25;\n          b26 = s3[38] << 8 | s3[39] >>> 24;\n          b27 = s3[39] << 8 | s3[38] >>> 24;\n          b8 = s3[48] << 14 | s3[49] >>> 18;\n          b9 = s3[49] << 14 | s3[48] >>> 18;\n          s3[0] = b0 ^ ~b22 & b42;\n          s3[1] = b1 ^ ~b32 & b5;\n          s3[10] = b10 ^ ~b12 & b14;\n          s3[11] = b11 ^ ~b13 & b15;\n          s3[20] = b20 ^ ~b222 & b24;\n          s3[21] = b21 ^ ~b23 & b25;\n          s3[30] = b30 ^ ~b322 & b34;\n          s3[31] = b31 ^ ~b33 & b35;\n          s3[40] = b40 ^ ~b422 & b44;\n          s3[41] = b41 ^ ~b43 & b45;\n          s3[2] = b22 ^ ~b42 & b6;\n          s3[3] = b32 ^ ~b5 & b7;\n          s3[12] = b12 ^ ~b14 & b16;\n          s3[13] = b13 ^ ~b15 & b17;\n          s3[22] = b222 ^ ~b24 & b26;\n          s3[23] = b23 ^ ~b25 & b27;\n          s3[32] = b322 ^ ~b34 & b36;\n          s3[33] = b33 ^ ~b35 & b37;\n          s3[42] = b422 ^ ~b44 & b46;\n          s3[43] = b43 ^ ~b45 & b47;\n          s3[4] = b42 ^ ~b6 & b8;\n          s3[5] = b5 ^ ~b7 & b9;\n          s3[14] = b14 ^ ~b16 & b18;\n          s3[15] = b15 ^ ~b17 & b19;\n          s3[24] = b24 ^ ~b26 & b28;\n          s3[25] = b25 ^ ~b27 & b29;\n          s3[34] = b34 ^ ~b36 & b38;\n          s3[35] = b35 ^ ~b37 & b39;\n          s3[44] = b44 ^ ~b46 & b48;\n          s3[45] = b45 ^ ~b47 & b49;\n          s3[6] = b6 ^ ~b8 & b0;\n          s3[7] = b7 ^ ~b9 & b1;\n          s3[16] = b16 ^ ~b18 & b10;\n          s3[17] = b17 ^ ~b19 & b11;\n          s3[26] = b26 ^ ~b28 & b20;\n          s3[27] = b27 ^ ~b29 & b21;\n          s3[36] = b36 ^ ~b38 & b30;\n          s3[37] = b37 ^ ~b39 & b31;\n          s3[46] = b46 ^ ~b48 & b40;\n          s3[47] = b47 ^ ~b49 & b41;\n          s3[8] = b8 ^ ~b0 & b22;\n          s3[9] = b9 ^ ~b1 & b32;\n          s3[18] = b18 ^ ~b10 & b12;\n          s3[19] = b19 ^ ~b11 & b13;\n          s3[28] = b28 ^ ~b20 & b222;\n          s3[29] = b29 ^ ~b21 & b23;\n          s3[38] = b38 ^ ~b30 & b322;\n          s3[39] = b39 ^ ~b31 & b33;\n          s3[48] = b48 ^ ~b40 & b422;\n          s3[49] = b49 ^ ~b41 & b43;\n          s3[0] ^= RC[n5];\n          s3[1] ^= RC[n5 + 1];\n        }\n      };\n      if (COMMON_JS) {\n        module.exports = methods;\n      } else {\n        for (i4 = 0; i4 < methodNames.length; ++i4) {\n          root[methodNames[i4]] = methods[methodNames[i4]];\n        }\n        if (AMD) {\n          define(function() {\n            return methods;\n          });\n        }\n      }\n    })();\n  }\n});\n\n// browser-external:buffer\nvar require_buffer = __commonJS({\n  \"browser-external:buffer\"(exports, module) {\n    module.exports = Object.create(new Proxy({}, {\n      get(_4, key2) {\n        if (key2 !== \"__esModule\" && key2 !== \"__proto__\" && key2 !== \"constructor\" && key2 !== \"splice\") {\n          console.warn(`Module \"buffer\" has been externalized for browser compatibility. Cannot access \"buffer.${key2}\" in client code. See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`);\n        }\n      }\n    }));\n  }\n});\n\n// node_modules/bn.js/lib/bn.js\nvar require_bn = __commonJS({\n  \"node_modules/bn.js/lib/bn.js\"(exports, module) {\n    (function(module2, exports2) {\n      \"use strict\";\n      function assert2(val, msg) {\n        if (!val)\n          throw new Error(msg || \"Assertion failed\");\n      }\n      function inherits(ctor, superCtor) {\n        ctor.super_ = superCtor;\n        var TempCtor = function() {\n        };\n        TempCtor.prototype = superCtor.prototype;\n        ctor.prototype = new TempCtor();\n        ctor.prototype.constructor = ctor;\n      }\n      function BN3(number, base3, endian) {\n        if (BN3.isBN(number)) {\n          return number;\n        }\n        this.negative = 0;\n        this.words = null;\n        this.length = 0;\n        this.red = null;\n        if (number !== null) {\n          if (base3 === \"le\" || base3 === \"be\") {\n            endian = base3;\n            base3 = 10;\n          }\n          this._init(number || 0, base3 || 10, endian || \"be\");\n        }\n      }\n      if (typeof module2 === \"object\") {\n        module2.exports = BN3;\n      } else {\n        exports2.BN = BN3;\n      }\n      BN3.BN = BN3;\n      BN3.wordSize = 26;\n      var Buffer2;\n      try {\n        if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n          Buffer2 = window.Buffer;\n        } else {\n          Buffer2 = require_buffer().Buffer;\n        }\n      } catch (e2) {\n      }\n      BN3.isBN = function isBN(num) {\n        if (num instanceof BN3) {\n          return true;\n        }\n        return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN3.wordSize && Array.isArray(num.words);\n      };\n      BN3.max = function max(left, right) {\n        if (left.cmp(right) > 0)\n          return left;\n        return right;\n      };\n      BN3.min = function min(left, right) {\n        if (left.cmp(right) < 0)\n          return left;\n        return right;\n      };\n      BN3.prototype._init = function init2(number, base3, endian) {\n        if (typeof number === \"number\") {\n          return this._initNumber(number, base3, endian);\n        }\n        if (typeof number === \"object\") {\n          return this._initArray(number, base3, endian);\n        }\n        if (base3 === \"hex\") {\n          base3 = 16;\n        }\n        assert2(base3 === (base3 | 0) && base3 >= 2 && base3 <= 36);\n        number = number.toString().replace(/\\s+/g, \"\");\n        var start = 0;\n        if (number[0] === \"-\") {\n          start++;\n          this.negative = 1;\n        }\n        if (start < number.length) {\n          if (base3 === 16) {\n            this._parseHex(number, start, endian);\n          } else {\n            this._parseBase(number, base3, start);\n            if (endian === \"le\") {\n              this._initArray(this.toArray(), base3, endian);\n            }\n          }\n        }\n      };\n      BN3.prototype._initNumber = function _initNumber(number, base3, endian) {\n        if (number < 0) {\n          this.negative = 1;\n          number = -number;\n        }\n        if (number < 67108864) {\n          this.words = [number & 67108863];\n          this.length = 1;\n        } else if (number < 4503599627370496) {\n          this.words = [\n            number & 67108863,\n            number / 67108864 & 67108863\n          ];\n          this.length = 2;\n        } else {\n          assert2(number < 9007199254740992);\n          this.words = [\n            number & 67108863,\n            number / 67108864 & 67108863,\n            1\n          ];\n          this.length = 3;\n        }\n        if (endian !== \"le\")\n          return;\n        this._initArray(this.toArray(), base3, endian);\n      };\n      BN3.prototype._initArray = function _initArray(number, base3, endian) {\n        assert2(typeof number.length === \"number\");\n        if (number.length <= 0) {\n          this.words = [0];\n          this.length = 1;\n          return this;\n        }\n        this.length = Math.ceil(number.length / 3);\n        this.words = new Array(this.length);\n        for (var i4 = 0; i4 < this.length; i4++) {\n          this.words[i4] = 0;\n        }\n        var j2, w4;\n        var off = 0;\n        if (endian === \"be\") {\n          for (i4 = number.length - 1, j2 = 0; i4 >= 0; i4 -= 3) {\n            w4 = number[i4] | number[i4 - 1] << 8 | number[i4 - 2] << 16;\n            this.words[j2] |= w4 << off & 67108863;\n            this.words[j2 + 1] = w4 >>> 26 - off & 67108863;\n            off += 24;\n            if (off >= 26) {\n              off -= 26;\n              j2++;\n            }\n          }\n        } else if (endian === \"le\") {\n          for (i4 = 0, j2 = 0; i4 < number.length; i4 += 3) {\n            w4 = number[i4] | number[i4 + 1] << 8 | number[i4 + 2] << 16;\n            this.words[j2] |= w4 << off & 67108863;\n            this.words[j2 + 1] = w4 >>> 26 - off & 67108863;\n            off += 24;\n            if (off >= 26) {\n              off -= 26;\n              j2++;\n            }\n          }\n        }\n        return this._strip();\n      };\n      function parseHex4Bits(string2, index) {\n        var c5 = string2.charCodeAt(index);\n        if (c5 >= 48 && c5 <= 57) {\n          return c5 - 48;\n        } else if (c5 >= 65 && c5 <= 70) {\n          return c5 - 55;\n        } else if (c5 >= 97 && c5 <= 102) {\n          return c5 - 87;\n        } else {\n          assert2(false, \"Invalid character in \" + string2);\n        }\n      }\n      function parseHexByte(string2, lowerBound, index) {\n        var r4 = parseHex4Bits(string2, index);\n        if (index - 1 >= lowerBound) {\n          r4 |= parseHex4Bits(string2, index - 1) << 4;\n        }\n        return r4;\n      }\n      BN3.prototype._parseHex = function _parseHex(number, start, endian) {\n        this.length = Math.ceil((number.length - start) / 6);\n        this.words = new Array(this.length);\n        for (var i4 = 0; i4 < this.length; i4++) {\n          this.words[i4] = 0;\n        }\n        var off = 0;\n        var j2 = 0;\n        var w4;\n        if (endian === \"be\") {\n          for (i4 = number.length - 1; i4 >= start; i4 -= 2) {\n            w4 = parseHexByte(number, start, i4) << off;\n            this.words[j2] |= w4 & 67108863;\n            if (off >= 18) {\n              off -= 18;\n              j2 += 1;\n              this.words[j2] |= w4 >>> 26;\n            } else {\n              off += 8;\n            }\n          }\n        } else {\n          var parseLength = number.length - start;\n          for (i4 = parseLength % 2 === 0 ? start + 1 : start; i4 < number.length; i4 += 2) {\n            w4 = parseHexByte(number, start, i4) << off;\n            this.words[j2] |= w4 & 67108863;\n            if (off >= 18) {\n              off -= 18;\n              j2 += 1;\n              this.words[j2] |= w4 >>> 26;\n            } else {\n              off += 8;\n            }\n          }\n        }\n        this._strip();\n      };\n      function parseBase(str, start, end, mul3) {\n        var r4 = 0;\n        var b5 = 0;\n        var len = Math.min(str.length, end);\n        for (var i4 = start; i4 < len; i4++) {\n          var c5 = str.charCodeAt(i4) - 48;\n          r4 *= mul3;\n          if (c5 >= 49) {\n            b5 = c5 - 49 + 10;\n          } else if (c5 >= 17) {\n            b5 = c5 - 17 + 10;\n          } else {\n            b5 = c5;\n          }\n          assert2(c5 >= 0 && b5 < mul3, \"Invalid character\");\n          r4 += b5;\n        }\n        return r4;\n      }\n      BN3.prototype._parseBase = function _parseBase(number, base3, start) {\n        this.words = [0];\n        this.length = 1;\n        for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base3) {\n          limbLen++;\n        }\n        limbLen--;\n        limbPow = limbPow / base3 | 0;\n        var total = number.length - start;\n        var mod = total % limbLen;\n        var end = Math.min(total, total - mod) + start;\n        var word = 0;\n        for (var i4 = start; i4 < end; i4 += limbLen) {\n          word = parseBase(number, i4, i4 + limbLen, base3);\n          this.imuln(limbPow);\n          if (this.words[0] + word < 67108864) {\n            this.words[0] += word;\n          } else {\n            this._iaddn(word);\n          }\n        }\n        if (mod !== 0) {\n          var pow = 1;\n          word = parseBase(number, i4, number.length, base3);\n          for (i4 = 0; i4 < mod; i4++) {\n            pow *= base3;\n          }\n          this.imuln(pow);\n          if (this.words[0] + word < 67108864) {\n            this.words[0] += word;\n          } else {\n            this._iaddn(word);\n          }\n        }\n        this._strip();\n      };\n      BN3.prototype.copy = function copy(dest) {\n        dest.words = new Array(this.length);\n        for (var i4 = 0; i4 < this.length; i4++) {\n          dest.words[i4] = this.words[i4];\n        }\n        dest.length = this.length;\n        dest.negative = this.negative;\n        dest.red = this.red;\n      };\n      function move(dest, src2) {\n        dest.words = src2.words;\n        dest.length = src2.length;\n        dest.negative = src2.negative;\n        dest.red = src2.red;\n      }\n      BN3.prototype._move = function _move(dest) {\n        move(dest, this);\n      };\n      BN3.prototype.clone = function clone() {\n        var r4 = new BN3(null);\n        this.copy(r4);\n        return r4;\n      };\n      BN3.prototype._expand = function _expand(size) {\n        while (this.length < size) {\n          this.words[this.length++] = 0;\n        }\n        return this;\n      };\n      BN3.prototype._strip = function strip() {\n        while (this.length > 1 && this.words[this.length - 1] === 0) {\n          this.length--;\n        }\n        return this._normSign();\n      };\n      BN3.prototype._normSign = function _normSign() {\n        if (this.length === 1 && this.words[0] === 0) {\n          this.negative = 0;\n        }\n        return this;\n      };\n      if (typeof Symbol !== \"undefined\" && typeof Symbol.for === \"function\") {\n        try {\n          BN3.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = inspect4;\n        } catch (e2) {\n          BN3.prototype.inspect = inspect4;\n        }\n      } else {\n        BN3.prototype.inspect = inspect4;\n      }\n      function inspect4() {\n        return (this.red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n      }\n      var zeros2 = [\n        \"\",\n        \"0\",\n        \"00\",\n        \"000\",\n        \"0000\",\n        \"00000\",\n        \"000000\",\n        \"0000000\",\n        \"00000000\",\n        \"000000000\",\n        \"0000000000\",\n        \"00000000000\",\n        \"000000000000\",\n        \"0000000000000\",\n        \"00000000000000\",\n        \"000000000000000\",\n        \"0000000000000000\",\n        \"00000000000000000\",\n        \"000000000000000000\",\n        \"0000000000000000000\",\n        \"00000000000000000000\",\n        \"000000000000000000000\",\n        \"0000000000000000000000\",\n        \"00000000000000000000000\",\n        \"000000000000000000000000\",\n        \"0000000000000000000000000\"\n      ];\n      var groupSizes = [\n        0,\n        0,\n        25,\n        16,\n        12,\n        11,\n        10,\n        9,\n        8,\n        8,\n        7,\n        7,\n        7,\n        7,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5\n      ];\n      var groupBases = [\n        0,\n        0,\n        33554432,\n        43046721,\n        16777216,\n        48828125,\n        60466176,\n        40353607,\n        16777216,\n        43046721,\n        1e7,\n        19487171,\n        35831808,\n        62748517,\n        7529536,\n        11390625,\n        16777216,\n        24137569,\n        34012224,\n        47045881,\n        64e6,\n        4084101,\n        5153632,\n        6436343,\n        7962624,\n        9765625,\n        11881376,\n        14348907,\n        17210368,\n        20511149,\n        243e5,\n        28629151,\n        33554432,\n        39135393,\n        45435424,\n        52521875,\n        60466176\n      ];\n      BN3.prototype.toString = function toString3(base3, padding2) {\n        base3 = base3 || 10;\n        padding2 = padding2 | 0 || 1;\n        var out;\n        if (base3 === 16 || base3 === \"hex\") {\n          out = \"\";\n          var off = 0;\n          var carry = 0;\n          for (var i4 = 0; i4 < this.length; i4++) {\n            var w4 = this.words[i4];\n            var word = ((w4 << off | carry) & 16777215).toString(16);\n            carry = w4 >>> 24 - off & 16777215;\n            off += 2;\n            if (off >= 26) {\n              off -= 26;\n              i4--;\n            }\n            if (carry !== 0 || i4 !== this.length - 1) {\n              out = zeros2[6 - word.length] + word + out;\n            } else {\n              out = word + out;\n            }\n          }\n          if (carry !== 0) {\n            out = carry.toString(16) + out;\n          }\n          while (out.length % padding2 !== 0) {\n            out = \"0\" + out;\n          }\n          if (this.negative !== 0) {\n            out = \"-\" + out;\n          }\n          return out;\n        }\n        if (base3 === (base3 | 0) && base3 >= 2 && base3 <= 36) {\n          var groupSize = groupSizes[base3];\n          var groupBase = groupBases[base3];\n          out = \"\";\n          var c5 = this.clone();\n          c5.negative = 0;\n          while (!c5.isZero()) {\n            var r4 = c5.modrn(groupBase).toString(base3);\n            c5 = c5.idivn(groupBase);\n            if (!c5.isZero()) {\n              out = zeros2[groupSize - r4.length] + r4 + out;\n            } else {\n              out = r4 + out;\n            }\n          }\n          if (this.isZero()) {\n            out = \"0\" + out;\n          }\n          while (out.length % padding2 !== 0) {\n            out = \"0\" + out;\n          }\n          if (this.negative !== 0) {\n            out = \"-\" + out;\n          }\n          return out;\n        }\n        assert2(false, \"Base should be between 2 and 36\");\n      };\n      BN3.prototype.toNumber = function toNumber() {\n        var ret = this.words[0];\n        if (this.length === 2) {\n          ret += this.words[1] * 67108864;\n        } else if (this.length === 3 && this.words[2] === 1) {\n          ret += 4503599627370496 + this.words[1] * 67108864;\n        } else if (this.length > 2) {\n          assert2(false, \"Number can only safely store up to 53 bits\");\n        }\n        return this.negative !== 0 ? -ret : ret;\n      };\n      BN3.prototype.toJSON = function toJSON2() {\n        return this.toString(16, 2);\n      };\n      if (Buffer2) {\n        BN3.prototype.toBuffer = function toBuffer(endian, length2) {\n          return this.toArrayLike(Buffer2, endian, length2);\n        };\n      }\n      BN3.prototype.toArray = function toArray(endian, length2) {\n        return this.toArrayLike(Array, endian, length2);\n      };\n      var allocate = function allocate2(ArrayType, size) {\n        if (ArrayType.allocUnsafe) {\n          return ArrayType.allocUnsafe(size);\n        }\n        return new ArrayType(size);\n      };\n      BN3.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length2) {\n        this._strip();\n        var byteLength = this.byteLength();\n        var reqLength = length2 || Math.max(1, byteLength);\n        assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n        assert2(reqLength > 0, \"Requested array length <= 0\");\n        var res = allocate(ArrayType, reqLength);\n        var postfix = endian === \"le\" ? \"LE\" : \"BE\";\n        this[\"_toArrayLike\" + postfix](res, byteLength);\n        return res;\n      };\n      BN3.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {\n        var position = 0;\n        var carry = 0;\n        for (var i4 = 0, shift = 0; i4 < this.length; i4++) {\n          var word = this.words[i4] << shift | carry;\n          res[position++] = word & 255;\n          if (position < res.length) {\n            res[position++] = word >> 8 & 255;\n          }\n          if (position < res.length) {\n            res[position++] = word >> 16 & 255;\n          }\n          if (shift === 6) {\n            if (position < res.length) {\n              res[position++] = word >> 24 & 255;\n            }\n            carry = 0;\n            shift = 0;\n          } else {\n            carry = word >>> 24;\n            shift += 2;\n          }\n        }\n        if (position < res.length) {\n          res[position++] = carry;\n          while (position < res.length) {\n            res[position++] = 0;\n          }\n        }\n      };\n      BN3.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {\n        var position = res.length - 1;\n        var carry = 0;\n        for (var i4 = 0, shift = 0; i4 < this.length; i4++) {\n          var word = this.words[i4] << shift | carry;\n          res[position--] = word & 255;\n          if (position >= 0) {\n            res[position--] = word >> 8 & 255;\n          }\n          if (position >= 0) {\n            res[position--] = word >> 16 & 255;\n          }\n          if (shift === 6) {\n            if (position >= 0) {\n              res[position--] = word >> 24 & 255;\n            }\n            carry = 0;\n            shift = 0;\n          } else {\n            carry = word >>> 24;\n            shift += 2;\n          }\n        }\n        if (position >= 0) {\n          res[position--] = carry;\n          while (position >= 0) {\n            res[position--] = 0;\n          }\n        }\n      };\n      if (Math.clz32) {\n        BN3.prototype._countBits = function _countBits(w4) {\n          return 32 - Math.clz32(w4);\n        };\n      } else {\n        BN3.prototype._countBits = function _countBits(w4) {\n          var t = w4;\n          var r4 = 0;\n          if (t >= 4096) {\n            r4 += 13;\n            t >>>= 13;\n          }\n          if (t >= 64) {\n            r4 += 7;\n            t >>>= 7;\n          }\n          if (t >= 8) {\n            r4 += 4;\n            t >>>= 4;\n          }\n          if (t >= 2) {\n            r4 += 2;\n            t >>>= 2;\n          }\n          return r4 + t;\n        };\n      }\n      BN3.prototype._zeroBits = function _zeroBits(w4) {\n        if (w4 === 0)\n          return 26;\n        var t = w4;\n        var r4 = 0;\n        if ((t & 8191) === 0) {\n          r4 += 13;\n          t >>>= 13;\n        }\n        if ((t & 127) === 0) {\n          r4 += 7;\n          t >>>= 7;\n        }\n        if ((t & 15) === 0) {\n          r4 += 4;\n          t >>>= 4;\n        }\n        if ((t & 3) === 0) {\n          r4 += 2;\n          t >>>= 2;\n        }\n        if ((t & 1) === 0) {\n          r4++;\n        }\n        return r4;\n      };\n      BN3.prototype.bitLength = function bitLength() {\n        var w4 = this.words[this.length - 1];\n        var hi2 = this._countBits(w4);\n        return (this.length - 1) * 26 + hi2;\n      };\n      function toBitArray(num) {\n        var w4 = new Array(num.bitLength());\n        for (var bit = 0; bit < w4.length; bit++) {\n          var off = bit / 26 | 0;\n          var wbit = bit % 26;\n          w4[bit] = num.words[off] >>> wbit & 1;\n        }\n        return w4;\n      }\n      BN3.prototype.zeroBits = function zeroBits() {\n        if (this.isZero())\n          return 0;\n        var r4 = 0;\n        for (var i4 = 0; i4 < this.length; i4++) {\n          var b5 = this._zeroBits(this.words[i4]);\n          r4 += b5;\n          if (b5 !== 26)\n            break;\n        }\n        return r4;\n      };\n      BN3.prototype.byteLength = function byteLength() {\n        return Math.ceil(this.bitLength() / 8);\n      };\n      BN3.prototype.toTwos = function toTwos(width) {\n        if (this.negative !== 0) {\n          return this.abs().inotn(width).iaddn(1);\n        }\n        return this.clone();\n      };\n      BN3.prototype.fromTwos = function fromTwos(width) {\n        if (this.testn(width - 1)) {\n          return this.notn(width).iaddn(1).ineg();\n        }\n        return this.clone();\n      };\n      BN3.prototype.isNeg = function isNeg() {\n        return this.negative !== 0;\n      };\n      BN3.prototype.neg = function neg3() {\n        return this.clone().ineg();\n      };\n      BN3.prototype.ineg = function ineg() {\n        if (!this.isZero()) {\n          this.negative ^= 1;\n        }\n        return this;\n      };\n      BN3.prototype.iuor = function iuor(num) {\n        while (this.length < num.length) {\n          this.words[this.length++] = 0;\n        }\n        for (var i4 = 0; i4 < num.length; i4++) {\n          this.words[i4] = this.words[i4] | num.words[i4];\n        }\n        return this._strip();\n      };\n      BN3.prototype.ior = function ior(num) {\n        assert2((this.negative | num.negative) === 0);\n        return this.iuor(num);\n      };\n      BN3.prototype.or = function or3(num) {\n        if (this.length > num.length)\n          return this.clone().ior(num);\n        return num.clone().ior(this);\n      };\n      BN3.prototype.uor = function uor(num) {\n        if (this.length > num.length)\n          return this.clone().iuor(num);\n        return num.clone().iuor(this);\n      };\n      BN3.prototype.iuand = function iuand(num) {\n        var b5;\n        if (this.length > num.length) {\n          b5 = num;\n        } else {\n          b5 = this;\n        }\n        for (var i4 = 0; i4 < b5.length; i4++) {\n          this.words[i4] = this.words[i4] & num.words[i4];\n        }\n        this.length = b5.length;\n        return this._strip();\n      };\n      BN3.prototype.iand = function iand(num) {\n        assert2((this.negative | num.negative) === 0);\n        return this.iuand(num);\n      };\n      BN3.prototype.and = function and(num) {\n        if (this.length > num.length)\n          return this.clone().iand(num);\n        return num.clone().iand(this);\n      };\n      BN3.prototype.uand = function uand(num) {\n        if (this.length > num.length)\n          return this.clone().iuand(num);\n        return num.clone().iuand(this);\n      };\n      BN3.prototype.iuxor = function iuxor(num) {\n        var a4;\n        var b5;\n        if (this.length > num.length) {\n          a4 = this;\n          b5 = num;\n        } else {\n          a4 = num;\n          b5 = this;\n        }\n        for (var i4 = 0; i4 < b5.length; i4++) {\n          this.words[i4] = a4.words[i4] ^ b5.words[i4];\n        }\n        if (this !== a4) {\n          for (; i4 < a4.length; i4++) {\n            this.words[i4] = a4.words[i4];\n          }\n        }\n        this.length = a4.length;\n        return this._strip();\n      };\n      BN3.prototype.ixor = function ixor(num) {\n        assert2((this.negative | num.negative) === 0);\n        return this.iuxor(num);\n      };\n      BN3.prototype.xor = function xor2(num) {\n        if (this.length > num.length)\n          return this.clone().ixor(num);\n        return num.clone().ixor(this);\n      };\n      BN3.prototype.uxor = function uxor(num) {\n        if (this.length > num.length)\n          return this.clone().iuxor(num);\n        return num.clone().iuxor(this);\n      };\n      BN3.prototype.inotn = function inotn(width) {\n        assert2(typeof width === \"number\" && width >= 0);\n        var bytesNeeded = Math.ceil(width / 26) | 0;\n        var bitsLeft = width % 26;\n        this._expand(bytesNeeded);\n        if (bitsLeft > 0) {\n          bytesNeeded--;\n        }\n        for (var i4 = 0; i4 < bytesNeeded; i4++) {\n          this.words[i4] = ~this.words[i4] & 67108863;\n        }\n        if (bitsLeft > 0) {\n          this.words[i4] = ~this.words[i4] & 67108863 >> 26 - bitsLeft;\n        }\n        return this._strip();\n      };\n      BN3.prototype.notn = function notn(width) {\n        return this.clone().inotn(width);\n      };\n      BN3.prototype.setn = function setn(bit, val) {\n        assert2(typeof bit === \"number\" && bit >= 0);\n        var off = bit / 26 | 0;\n        var wbit = bit % 26;\n        this._expand(off + 1);\n        if (val) {\n          this.words[off] = this.words[off] | 1 << wbit;\n        } else {\n          this.words[off] = this.words[off] & ~(1 << wbit);\n        }\n        return this._strip();\n      };\n      BN3.prototype.iadd = function iadd(num) {\n        var r4;\n        if (this.negative !== 0 && num.negative === 0) {\n          this.negative = 0;\n          r4 = this.isub(num);\n          this.negative ^= 1;\n          return this._normSign();\n        } else if (this.negative === 0 && num.negative !== 0) {\n          num.negative = 0;\n          r4 = this.isub(num);\n          num.negative = 1;\n          return r4._normSign();\n        }\n        var a4, b5;\n        if (this.length > num.length) {\n          a4 = this;\n          b5 = num;\n        } else {\n          a4 = num;\n          b5 = this;\n        }\n        var carry = 0;\n        for (var i4 = 0; i4 < b5.length; i4++) {\n          r4 = (a4.words[i4] | 0) + (b5.words[i4] | 0) + carry;\n          this.words[i4] = r4 & 67108863;\n          carry = r4 >>> 26;\n        }\n        for (; carry !== 0 && i4 < a4.length; i4++) {\n          r4 = (a4.words[i4] | 0) + carry;\n          this.words[i4] = r4 & 67108863;\n          carry = r4 >>> 26;\n        }\n        this.length = a4.length;\n        if (carry !== 0) {\n          this.words[this.length] = carry;\n          this.length++;\n        } else if (a4 !== this) {\n          for (; i4 < a4.length; i4++) {\n            this.words[i4] = a4.words[i4];\n          }\n        }\n        return this;\n      };\n      BN3.prototype.add = function add3(num) {\n        var res;\n        if (num.negative !== 0 && this.negative === 0) {\n          num.negative = 0;\n          res = this.sub(num);\n          num.negative ^= 1;\n          return res;\n        } else if (num.negative === 0 && this.negative !== 0) {\n          this.negative = 0;\n          res = num.sub(this);\n          this.negative = 1;\n          return res;\n        }\n        if (this.length > num.length)\n          return this.clone().iadd(num);\n        return num.clone().iadd(this);\n      };\n      BN3.prototype.isub = function isub(num) {\n        if (num.negative !== 0) {\n          num.negative = 0;\n          var r4 = this.iadd(num);\n          num.negative = 1;\n          return r4._normSign();\n        } else if (this.negative !== 0) {\n          this.negative = 0;\n          this.iadd(num);\n          this.negative = 1;\n          return this._normSign();\n        }\n        var cmp = this.cmp(num);\n        if (cmp === 0) {\n          this.negative = 0;\n          this.length = 1;\n          this.words[0] = 0;\n          return this;\n        }\n        var a4, b5;\n        if (cmp > 0) {\n          a4 = this;\n          b5 = num;\n        } else {\n          a4 = num;\n          b5 = this;\n        }\n        var carry = 0;\n        for (var i4 = 0; i4 < b5.length; i4++) {\n          r4 = (a4.words[i4] | 0) - (b5.words[i4] | 0) + carry;\n          carry = r4 >> 26;\n          this.words[i4] = r4 & 67108863;\n        }\n        for (; carry !== 0 && i4 < a4.length; i4++) {\n          r4 = (a4.words[i4] | 0) + carry;\n          carry = r4 >> 26;\n          this.words[i4] = r4 & 67108863;\n        }\n        if (carry === 0 && i4 < a4.length && a4 !== this) {\n          for (; i4 < a4.length; i4++) {\n            this.words[i4] = a4.words[i4];\n          }\n        }\n        this.length = Math.max(this.length, i4);\n        if (a4 !== this) {\n          this.negative = 1;\n        }\n        return this._strip();\n      };\n      BN3.prototype.sub = function sub(num) {\n        return this.clone().isub(num);\n      };\n      function smallMulTo(self2, num, out) {\n        out.negative = num.negative ^ self2.negative;\n        var len = self2.length + num.length | 0;\n        out.length = len;\n        len = len - 1 | 0;\n        var a4 = self2.words[0] | 0;\n        var b5 = num.words[0] | 0;\n        var r4 = a4 * b5;\n        var lo2 = r4 & 67108863;\n        var carry = r4 / 67108864 | 0;\n        out.words[0] = lo2;\n        for (var k4 = 1; k4 < len; k4++) {\n          var ncarry = carry >>> 26;\n          var rword = carry & 67108863;\n          var maxJ = Math.min(k4, num.length - 1);\n          for (var j2 = Math.max(0, k4 - self2.length + 1); j2 <= maxJ; j2++) {\n            var i4 = k4 - j2 | 0;\n            a4 = self2.words[i4] | 0;\n            b5 = num.words[j2] | 0;\n            r4 = a4 * b5 + rword;\n            ncarry += r4 / 67108864 | 0;\n            rword = r4 & 67108863;\n          }\n          out.words[k4] = rword | 0;\n          carry = ncarry | 0;\n        }\n        if (carry !== 0) {\n          out.words[k4] = carry | 0;\n        } else {\n          out.length--;\n        }\n        return out._strip();\n      }\n      var comb10MulTo = function comb10MulTo2(self2, num, out) {\n        var a4 = self2.words;\n        var b5 = num.words;\n        var o4 = out.words;\n        var c5 = 0;\n        var lo2;\n        var mid;\n        var hi2;\n        var a0 = a4[0] | 0;\n        var al0 = a0 & 8191;\n        var ah0 = a0 >>> 13;\n        var a1 = a4[1] | 0;\n        var al1 = a1 & 8191;\n        var ah1 = a1 >>> 13;\n        var a22 = a4[2] | 0;\n        var al2 = a22 & 8191;\n        var ah2 = a22 >>> 13;\n        var a32 = a4[3] | 0;\n        var al3 = a32 & 8191;\n        var ah3 = a32 >>> 13;\n        var a42 = a4[4] | 0;\n        var al4 = a42 & 8191;\n        var ah4 = a42 >>> 13;\n        var a5 = a4[5] | 0;\n        var al5 = a5 & 8191;\n        var ah5 = a5 >>> 13;\n        var a6 = a4[6] | 0;\n        var al6 = a6 & 8191;\n        var ah6 = a6 >>> 13;\n        var a7 = a4[7] | 0;\n        var al7 = a7 & 8191;\n        var ah7 = a7 >>> 13;\n        var a8 = a4[8] | 0;\n        var al8 = a8 & 8191;\n        var ah8 = a8 >>> 13;\n        var a9 = a4[9] | 0;\n        var al9 = a9 & 8191;\n        var ah9 = a9 >>> 13;\n        var b0 = b5[0] | 0;\n        var bl0 = b0 & 8191;\n        var bh0 = b0 >>> 13;\n        var b1 = b5[1] | 0;\n        var bl1 = b1 & 8191;\n        var bh1 = b1 >>> 13;\n        var b22 = b5[2] | 0;\n        var bl2 = b22 & 8191;\n        var bh2 = b22 >>> 13;\n        var b32 = b5[3] | 0;\n        var bl3 = b32 & 8191;\n        var bh3 = b32 >>> 13;\n        var b42 = b5[4] | 0;\n        var bl4 = b42 & 8191;\n        var bh4 = b42 >>> 13;\n        var b52 = b5[5] | 0;\n        var bl5 = b52 & 8191;\n        var bh5 = b52 >>> 13;\n        var b6 = b5[6] | 0;\n        var bl6 = b6 & 8191;\n        var bh6 = b6 >>> 13;\n        var b7 = b5[7] | 0;\n        var bl7 = b7 & 8191;\n        var bh7 = b7 >>> 13;\n        var b8 = b5[8] | 0;\n        var bl8 = b8 & 8191;\n        var bh8 = b8 >>> 13;\n        var b9 = b5[9] | 0;\n        var bl9 = b9 & 8191;\n        var bh9 = b9 >>> 13;\n        out.negative = self2.negative ^ num.negative;\n        out.length = 19;\n        lo2 = Math.imul(al0, bl0);\n        mid = Math.imul(al0, bh0);\n        mid = mid + Math.imul(ah0, bl0) | 0;\n        hi2 = Math.imul(ah0, bh0);\n        var w0 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n        w0 &= 67108863;\n        lo2 = Math.imul(al1, bl0);\n        mid = Math.imul(al1, bh0);\n        mid = mid + Math.imul(ah1, bl0) | 0;\n        hi2 = Math.imul(ah1, bh0);\n        lo2 = lo2 + Math.imul(al0, bl1) | 0;\n        mid = mid + Math.imul(al0, bh1) | 0;\n        mid = mid + Math.imul(ah0, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh1) | 0;\n        var w1 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n        w1 &= 67108863;\n        lo2 = Math.imul(al2, bl0);\n        mid = Math.imul(al2, bh0);\n        mid = mid + Math.imul(ah2, bl0) | 0;\n        hi2 = Math.imul(ah2, bh0);\n        lo2 = lo2 + Math.imul(al1, bl1) | 0;\n        mid = mid + Math.imul(al1, bh1) | 0;\n        mid = mid + Math.imul(ah1, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh1) | 0;\n        lo2 = lo2 + Math.imul(al0, bl2) | 0;\n        mid = mid + Math.imul(al0, bh2) | 0;\n        mid = mid + Math.imul(ah0, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh2) | 0;\n        var w22 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n        w22 &= 67108863;\n        lo2 = Math.imul(al3, bl0);\n        mid = Math.imul(al3, bh0);\n        mid = mid + Math.imul(ah3, bl0) | 0;\n        hi2 = Math.imul(ah3, bh0);\n        lo2 = lo2 + Math.imul(al2, bl1) | 0;\n        mid = mid + Math.imul(al2, bh1) | 0;\n        mid = mid + Math.imul(ah2, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh1) | 0;\n        lo2 = lo2 + Math.imul(al1, bl2) | 0;\n        mid = mid + Math.imul(al1, bh2) | 0;\n        mid = mid + Math.imul(ah1, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh2) | 0;\n        lo2 = lo2 + Math.imul(al0, bl3) | 0;\n        mid = mid + Math.imul(al0, bh3) | 0;\n        mid = mid + Math.imul(ah0, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh3) | 0;\n        var w32 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n        w32 &= 67108863;\n        lo2 = Math.imul(al4, bl0);\n        mid = Math.imul(al4, bh0);\n        mid = mid + Math.imul(ah4, bl0) | 0;\n        hi2 = Math.imul(ah4, bh0);\n        lo2 = lo2 + Math.imul(al3, bl1) | 0;\n        mid = mid + Math.imul(al3, bh1) | 0;\n        mid = mid + Math.imul(ah3, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh1) | 0;\n        lo2 = lo2 + Math.imul(al2, bl2) | 0;\n        mid = mid + Math.imul(al2, bh2) | 0;\n        mid = mid + Math.imul(ah2, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh2) | 0;\n        lo2 = lo2 + Math.imul(al1, bl3) | 0;\n        mid = mid + Math.imul(al1, bh3) | 0;\n        mid = mid + Math.imul(ah1, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh3) | 0;\n        lo2 = lo2 + Math.imul(al0, bl4) | 0;\n        mid = mid + Math.imul(al0, bh4) | 0;\n        mid = mid + Math.imul(ah0, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh4) | 0;\n        var w4 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n        w4 &= 67108863;\n        lo2 = Math.imul(al5, bl0);\n        mid = Math.imul(al5, bh0);\n        mid = mid + Math.imul(ah5, bl0) | 0;\n        hi2 = Math.imul(ah5, bh0);\n        lo2 = lo2 + Math.imul(al4, bl1) | 0;\n        mid = mid + Math.imul(al4, bh1) | 0;\n        mid = mid + Math.imul(ah4, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh1) | 0;\n        lo2 = lo2 + Math.imul(al3, bl2) | 0;\n        mid = mid + Math.imul(al3, bh2) | 0;\n        mid = mid + Math.imul(ah3, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh2) | 0;\n        lo2 = lo2 + Math.imul(al2, bl3) | 0;\n        mid = mid + Math.imul(al2, bh3) | 0;\n        mid = mid + Math.imul(ah2, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh3) | 0;\n        lo2 = lo2 + Math.imul(al1, bl4) | 0;\n        mid = mid + Math.imul(al1, bh4) | 0;\n        mid = mid + Math.imul(ah1, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh4) | 0;\n        lo2 = lo2 + Math.imul(al0, bl5) | 0;\n        mid = mid + Math.imul(al0, bh5) | 0;\n        mid = mid + Math.imul(ah0, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh5) | 0;\n        var w5 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n        w5 &= 67108863;\n        lo2 = Math.imul(al6, bl0);\n        mid = Math.imul(al6, bh0);\n        mid = mid + Math.imul(ah6, bl0) | 0;\n        hi2 = Math.imul(ah6, bh0);\n        lo2 = lo2 + Math.imul(al5, bl1) | 0;\n        mid = mid + Math.imul(al5, bh1) | 0;\n        mid = mid + Math.imul(ah5, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh1) | 0;\n        lo2 = lo2 + Math.imul(al4, bl2) | 0;\n        mid = mid + Math.imul(al4, bh2) | 0;\n        mid = mid + Math.imul(ah4, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh2) | 0;\n        lo2 = lo2 + Math.imul(al3, bl3) | 0;\n        mid = mid + Math.imul(al3, bh3) | 0;\n        mid = mid + Math.imul(ah3, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh3) | 0;\n        lo2 = lo2 + Math.imul(al2, bl4) | 0;\n        mid = mid + Math.imul(al2, bh4) | 0;\n        mid = mid + Math.imul(ah2, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh4) | 0;\n        lo2 = lo2 + Math.imul(al1, bl5) | 0;\n        mid = mid + Math.imul(al1, bh5) | 0;\n        mid = mid + Math.imul(ah1, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh5) | 0;\n        lo2 = lo2 + Math.imul(al0, bl6) | 0;\n        mid = mid + Math.imul(al0, bh6) | 0;\n        mid = mid + Math.imul(ah0, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh6) | 0;\n        var w6 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n        w6 &= 67108863;\n        lo2 = Math.imul(al7, bl0);\n        mid = Math.imul(al7, bh0);\n        mid = mid + Math.imul(ah7, bl0) | 0;\n        hi2 = Math.imul(ah7, bh0);\n        lo2 = lo2 + Math.imul(al6, bl1) | 0;\n        mid = mid + Math.imul(al6, bh1) | 0;\n        mid = mid + Math.imul(ah6, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh1) | 0;\n        lo2 = lo2 + Math.imul(al5, bl2) | 0;\n        mid = mid + Math.imul(al5, bh2) | 0;\n        mid = mid + Math.imul(ah5, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh2) | 0;\n        lo2 = lo2 + Math.imul(al4, bl3) | 0;\n        mid = mid + Math.imul(al4, bh3) | 0;\n        mid = mid + Math.imul(ah4, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh3) | 0;\n        lo2 = lo2 + Math.imul(al3, bl4) | 0;\n        mid = mid + Math.imul(al3, bh4) | 0;\n        mid = mid + Math.imul(ah3, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh4) | 0;\n        lo2 = lo2 + Math.imul(al2, bl5) | 0;\n        mid = mid + Math.imul(al2, bh5) | 0;\n        mid = mid + Math.imul(ah2, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh5) | 0;\n        lo2 = lo2 + Math.imul(al1, bl6) | 0;\n        mid = mid + Math.imul(al1, bh6) | 0;\n        mid = mid + Math.imul(ah1, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh6) | 0;\n        lo2 = lo2 + Math.imul(al0, bl7) | 0;\n        mid = mid + Math.imul(al0, bh7) | 0;\n        mid = mid + Math.imul(ah0, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh7) | 0;\n        var w7 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n        w7 &= 67108863;\n        lo2 = Math.imul(al8, bl0);\n        mid = Math.imul(al8, bh0);\n        mid = mid + Math.imul(ah8, bl0) | 0;\n        hi2 = Math.imul(ah8, bh0);\n        lo2 = lo2 + Math.imul(al7, bl1) | 0;\n        mid = mid + Math.imul(al7, bh1) | 0;\n        mid = mid + Math.imul(ah7, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh1) | 0;\n        lo2 = lo2 + Math.imul(al6, bl2) | 0;\n        mid = mid + Math.imul(al6, bh2) | 0;\n        mid = mid + Math.imul(ah6, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh2) | 0;\n        lo2 = lo2 + Math.imul(al5, bl3) | 0;\n        mid = mid + Math.imul(al5, bh3) | 0;\n        mid = mid + Math.imul(ah5, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh3) | 0;\n        lo2 = lo2 + Math.imul(al4, bl4) | 0;\n        mid = mid + Math.imul(al4, bh4) | 0;\n        mid = mid + Math.imul(ah4, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh4) | 0;\n        lo2 = lo2 + Math.imul(al3, bl5) | 0;\n        mid = mid + Math.imul(al3, bh5) | 0;\n        mid = mid + Math.imul(ah3, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh5) | 0;\n        lo2 = lo2 + Math.imul(al2, bl6) | 0;\n        mid = mid + Math.imul(al2, bh6) | 0;\n        mid = mid + Math.imul(ah2, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh6) | 0;\n        lo2 = lo2 + Math.imul(al1, bl7) | 0;\n        mid = mid + Math.imul(al1, bh7) | 0;\n        mid = mid + Math.imul(ah1, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh7) | 0;\n        lo2 = lo2 + Math.imul(al0, bl8) | 0;\n        mid = mid + Math.imul(al0, bh8) | 0;\n        mid = mid + Math.imul(ah0, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh8) | 0;\n        var w8 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n        w8 &= 67108863;\n        lo2 = Math.imul(al9, bl0);\n        mid = Math.imul(al9, bh0);\n        mid = mid + Math.imul(ah9, bl0) | 0;\n        hi2 = Math.imul(ah9, bh0);\n        lo2 = lo2 + Math.imul(al8, bl1) | 0;\n        mid = mid + Math.imul(al8, bh1) | 0;\n        mid = mid + Math.imul(ah8, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh1) | 0;\n        lo2 = lo2 + Math.imul(al7, bl2) | 0;\n        mid = mid + Math.imul(al7, bh2) | 0;\n        mid = mid + Math.imul(ah7, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh2) | 0;\n        lo2 = lo2 + Math.imul(al6, bl3) | 0;\n        mid = mid + Math.imul(al6, bh3) | 0;\n        mid = mid + Math.imul(ah6, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh3) | 0;\n        lo2 = lo2 + Math.imul(al5, bl4) | 0;\n        mid = mid + Math.imul(al5, bh4) | 0;\n        mid = mid + Math.imul(ah5, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh4) | 0;\n        lo2 = lo2 + Math.imul(al4, bl5) | 0;\n        mid = mid + Math.imul(al4, bh5) | 0;\n        mid = mid + Math.imul(ah4, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh5) | 0;\n        lo2 = lo2 + Math.imul(al3, bl6) | 0;\n        mid = mid + Math.imul(al3, bh6) | 0;\n        mid = mid + Math.imul(ah3, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh6) | 0;\n        lo2 = lo2 + Math.imul(al2, bl7) | 0;\n        mid = mid + Math.imul(al2, bh7) | 0;\n        mid = mid + Math.imul(ah2, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh7) | 0;\n        lo2 = lo2 + Math.imul(al1, bl8) | 0;\n        mid = mid + Math.imul(al1, bh8) | 0;\n        mid = mid + Math.imul(ah1, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh8) | 0;\n        lo2 = lo2 + Math.imul(al0, bl9) | 0;\n        mid = mid + Math.imul(al0, bh9) | 0;\n        mid = mid + Math.imul(ah0, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh9) | 0;\n        var w9 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n        w9 &= 67108863;\n        lo2 = Math.imul(al9, bl1);\n        mid = Math.imul(al9, bh1);\n        mid = mid + Math.imul(ah9, bl1) | 0;\n        hi2 = Math.imul(ah9, bh1);\n        lo2 = lo2 + Math.imul(al8, bl2) | 0;\n        mid = mid + Math.imul(al8, bh2) | 0;\n        mid = mid + Math.imul(ah8, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh2) | 0;\n        lo2 = lo2 + Math.imul(al7, bl3) | 0;\n        mid = mid + Math.imul(al7, bh3) | 0;\n        mid = mid + Math.imul(ah7, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh3) | 0;\n        lo2 = lo2 + Math.imul(al6, bl4) | 0;\n        mid = mid + Math.imul(al6, bh4) | 0;\n        mid = mid + Math.imul(ah6, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh4) | 0;\n        lo2 = lo2 + Math.imul(al5, bl5) | 0;\n        mid = mid + Math.imul(al5, bh5) | 0;\n        mid = mid + Math.imul(ah5, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh5) | 0;\n        lo2 = lo2 + Math.imul(al4, bl6) | 0;\n        mid = mid + Math.imul(al4, bh6) | 0;\n        mid = mid + Math.imul(ah4, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh6) | 0;\n        lo2 = lo2 + Math.imul(al3, bl7) | 0;\n        mid = mid + Math.imul(al3, bh7) | 0;\n        mid = mid + Math.imul(ah3, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh7) | 0;\n        lo2 = lo2 + Math.imul(al2, bl8) | 0;\n        mid = mid + Math.imul(al2, bh8) | 0;\n        mid = mid + Math.imul(ah2, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh8) | 0;\n        lo2 = lo2 + Math.imul(al1, bl9) | 0;\n        mid = mid + Math.imul(al1, bh9) | 0;\n        mid = mid + Math.imul(ah1, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh9) | 0;\n        var w10 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n        w10 &= 67108863;\n        lo2 = Math.imul(al9, bl2);\n        mid = Math.imul(al9, bh2);\n        mid = mid + Math.imul(ah9, bl2) | 0;\n        hi2 = Math.imul(ah9, bh2);\n        lo2 = lo2 + Math.imul(al8, bl3) | 0;\n        mid = mid + Math.imul(al8, bh3) | 0;\n        mid = mid + Math.imul(ah8, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh3) | 0;\n        lo2 = lo2 + Math.imul(al7, bl4) | 0;\n        mid = mid + Math.imul(al7, bh4) | 0;\n        mid = mid + Math.imul(ah7, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh4) | 0;\n        lo2 = lo2 + Math.imul(al6, bl5) | 0;\n        mid = mid + Math.imul(al6, bh5) | 0;\n        mid = mid + Math.imul(ah6, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh5) | 0;\n        lo2 = lo2 + Math.imul(al5, bl6) | 0;\n        mid = mid + Math.imul(al5, bh6) | 0;\n        mid = mid + Math.imul(ah5, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh6) | 0;\n        lo2 = lo2 + Math.imul(al4, bl7) | 0;\n        mid = mid + Math.imul(al4, bh7) | 0;\n        mid = mid + Math.imul(ah4, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh7) | 0;\n        lo2 = lo2 + Math.imul(al3, bl8) | 0;\n        mid = mid + Math.imul(al3, bh8) | 0;\n        mid = mid + Math.imul(ah3, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh8) | 0;\n        lo2 = lo2 + Math.imul(al2, bl9) | 0;\n        mid = mid + Math.imul(al2, bh9) | 0;\n        mid = mid + Math.imul(ah2, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh9) | 0;\n        var w11 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n        w11 &= 67108863;\n        lo2 = Math.imul(al9, bl3);\n        mid = Math.imul(al9, bh3);\n        mid = mid + Math.imul(ah9, bl3) | 0;\n        hi2 = Math.imul(ah9, bh3);\n        lo2 = lo2 + Math.imul(al8, bl4) | 0;\n        mid = mid + Math.imul(al8, bh4) | 0;\n        mid = mid + Math.imul(ah8, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh4) | 0;\n        lo2 = lo2 + Math.imul(al7, bl5) | 0;\n        mid = mid + Math.imul(al7, bh5) | 0;\n        mid = mid + Math.imul(ah7, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh5) | 0;\n        lo2 = lo2 + Math.imul(al6, bl6) | 0;\n        mid = mid + Math.imul(al6, bh6) | 0;\n        mid = mid + Math.imul(ah6, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh6) | 0;\n        lo2 = lo2 + Math.imul(al5, bl7) | 0;\n        mid = mid + Math.imul(al5, bh7) | 0;\n        mid = mid + Math.imul(ah5, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh7) | 0;\n        lo2 = lo2 + Math.imul(al4, bl8) | 0;\n        mid = mid + Math.imul(al4, bh8) | 0;\n        mid = mid + Math.imul(ah4, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh8) | 0;\n        lo2 = lo2 + Math.imul(al3, bl9) | 0;\n        mid = mid + Math.imul(al3, bh9) | 0;\n        mid = mid + Math.imul(ah3, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh9) | 0;\n        var w12 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n        w12 &= 67108863;\n        lo2 = Math.imul(al9, bl4);\n        mid = Math.imul(al9, bh4);\n        mid = mid + Math.imul(ah9, bl4) | 0;\n        hi2 = Math.imul(ah9, bh4);\n        lo2 = lo2 + Math.imul(al8, bl5) | 0;\n        mid = mid + Math.imul(al8, bh5) | 0;\n        mid = mid + Math.imul(ah8, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh5) | 0;\n        lo2 = lo2 + Math.imul(al7, bl6) | 0;\n        mid = mid + Math.imul(al7, bh6) | 0;\n        mid = mid + Math.imul(ah7, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh6) | 0;\n        lo2 = lo2 + Math.imul(al6, bl7) | 0;\n        mid = mid + Math.imul(al6, bh7) | 0;\n        mid = mid + Math.imul(ah6, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh7) | 0;\n        lo2 = lo2 + Math.imul(al5, bl8) | 0;\n        mid = mid + Math.imul(al5, bh8) | 0;\n        mid = mid + Math.imul(ah5, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh8) | 0;\n        lo2 = lo2 + Math.imul(al4, bl9) | 0;\n        mid = mid + Math.imul(al4, bh9) | 0;\n        mid = mid + Math.imul(ah4, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh9) | 0;\n        var w13 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n        w13 &= 67108863;\n        lo2 = Math.imul(al9, bl5);\n        mid = Math.imul(al9, bh5);\n        mid = mid + Math.imul(ah9, bl5) | 0;\n        hi2 = Math.imul(ah9, bh5);\n        lo2 = lo2 + Math.imul(al8, bl6) | 0;\n        mid = mid + Math.imul(al8, bh6) | 0;\n        mid = mid + Math.imul(ah8, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh6) | 0;\n        lo2 = lo2 + Math.imul(al7, bl7) | 0;\n        mid = mid + Math.imul(al7, bh7) | 0;\n        mid = mid + Math.imul(ah7, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh7) | 0;\n        lo2 = lo2 + Math.imul(al6, bl8) | 0;\n        mid = mid + Math.imul(al6, bh8) | 0;\n        mid = mid + Math.imul(ah6, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh8) | 0;\n        lo2 = lo2 + Math.imul(al5, bl9) | 0;\n        mid = mid + Math.imul(al5, bh9) | 0;\n        mid = mid + Math.imul(ah5, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh9) | 0;\n        var w14 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n        w14 &= 67108863;\n        lo2 = Math.imul(al9, bl6);\n        mid = Math.imul(al9, bh6);\n        mid = mid + Math.imul(ah9, bl6) | 0;\n        hi2 = Math.imul(ah9, bh6);\n        lo2 = lo2 + Math.imul(al8, bl7) | 0;\n        mid = mid + Math.imul(al8, bh7) | 0;\n        mid = mid + Math.imul(ah8, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh7) | 0;\n        lo2 = lo2 + Math.imul(al7, bl8) | 0;\n        mid = mid + Math.imul(al7, bh8) | 0;\n        mid = mid + Math.imul(ah7, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh8) | 0;\n        lo2 = lo2 + Math.imul(al6, bl9) | 0;\n        mid = mid + Math.imul(al6, bh9) | 0;\n        mid = mid + Math.imul(ah6, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh9) | 0;\n        var w15 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n        w15 &= 67108863;\n        lo2 = Math.imul(al9, bl7);\n        mid = Math.imul(al9, bh7);\n        mid = mid + Math.imul(ah9, bl7) | 0;\n        hi2 = Math.imul(ah9, bh7);\n        lo2 = lo2 + Math.imul(al8, bl8) | 0;\n        mid = mid + Math.imul(al8, bh8) | 0;\n        mid = mid + Math.imul(ah8, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh8) | 0;\n        lo2 = lo2 + Math.imul(al7, bl9) | 0;\n        mid = mid + Math.imul(al7, bh9) | 0;\n        mid = mid + Math.imul(ah7, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh9) | 0;\n        var w16 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n        w16 &= 67108863;\n        lo2 = Math.imul(al9, bl8);\n        mid = Math.imul(al9, bh8);\n        mid = mid + Math.imul(ah9, bl8) | 0;\n        hi2 = Math.imul(ah9, bh8);\n        lo2 = lo2 + Math.imul(al8, bl9) | 0;\n        mid = mid + Math.imul(al8, bh9) | 0;\n        mid = mid + Math.imul(ah8, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh9) | 0;\n        var w17 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n        w17 &= 67108863;\n        lo2 = Math.imul(al9, bl9);\n        mid = Math.imul(al9, bh9);\n        mid = mid + Math.imul(ah9, bl9) | 0;\n        hi2 = Math.imul(ah9, bh9);\n        var w18 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n        w18 &= 67108863;\n        o4[0] = w0;\n        o4[1] = w1;\n        o4[2] = w22;\n        o4[3] = w32;\n        o4[4] = w4;\n        o4[5] = w5;\n        o4[6] = w6;\n        o4[7] = w7;\n        o4[8] = w8;\n        o4[9] = w9;\n        o4[10] = w10;\n        o4[11] = w11;\n        o4[12] = w12;\n        o4[13] = w13;\n        o4[14] = w14;\n        o4[15] = w15;\n        o4[16] = w16;\n        o4[17] = w17;\n        o4[18] = w18;\n        if (c5 !== 0) {\n          o4[19] = c5;\n          out.length++;\n        }\n        return out;\n      };\n      if (!Math.imul) {\n        comb10MulTo = smallMulTo;\n      }\n      function bigMulTo(self2, num, out) {\n        out.negative = num.negative ^ self2.negative;\n        out.length = self2.length + num.length;\n        var carry = 0;\n        var hncarry = 0;\n        for (var k4 = 0; k4 < out.length - 1; k4++) {\n          var ncarry = hncarry;\n          hncarry = 0;\n          var rword = carry & 67108863;\n          var maxJ = Math.min(k4, num.length - 1);\n          for (var j2 = Math.max(0, k4 - self2.length + 1); j2 <= maxJ; j2++) {\n            var i4 = k4 - j2;\n            var a4 = self2.words[i4] | 0;\n            var b5 = num.words[j2] | 0;\n            var r4 = a4 * b5;\n            var lo2 = r4 & 67108863;\n            ncarry = ncarry + (r4 / 67108864 | 0) | 0;\n            lo2 = lo2 + rword | 0;\n            rword = lo2 & 67108863;\n            ncarry = ncarry + (lo2 >>> 26) | 0;\n            hncarry += ncarry >>> 26;\n            ncarry &= 67108863;\n          }\n          out.words[k4] = rword;\n          carry = ncarry;\n          ncarry = hncarry;\n        }\n        if (carry !== 0) {\n          out.words[k4] = carry;\n        } else {\n          out.length--;\n        }\n        return out._strip();\n      }\n      function jumboMulTo(self2, num, out) {\n        return bigMulTo(self2, num, out);\n      }\n      BN3.prototype.mulTo = function mulTo(num, out) {\n        var res;\n        var len = this.length + num.length;\n        if (this.length === 10 && num.length === 10) {\n          res = comb10MulTo(this, num, out);\n        } else if (len < 63) {\n          res = smallMulTo(this, num, out);\n        } else if (len < 1024) {\n          res = bigMulTo(this, num, out);\n        } else {\n          res = jumboMulTo(this, num, out);\n        }\n        return res;\n      };\n      function FFTM(x6, y6) {\n        this.x = x6;\n        this.y = y6;\n      }\n      FFTM.prototype.makeRBT = function makeRBT(N11) {\n        var t = new Array(N11);\n        var l4 = BN3.prototype._countBits(N11) - 1;\n        for (var i4 = 0; i4 < N11; i4++) {\n          t[i4] = this.revBin(i4, l4, N11);\n        }\n        return t;\n      };\n      FFTM.prototype.revBin = function revBin(x6, l4, N11) {\n        if (x6 === 0 || x6 === N11 - 1)\n          return x6;\n        var rb = 0;\n        for (var i4 = 0; i4 < l4; i4++) {\n          rb |= (x6 & 1) << l4 - i4 - 1;\n          x6 >>= 1;\n        }\n        return rb;\n      };\n      FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N11) {\n        for (var i4 = 0; i4 < N11; i4++) {\n          rtws[i4] = rws[rbt[i4]];\n          itws[i4] = iws[rbt[i4]];\n        }\n      };\n      FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N11, rbt) {\n        this.permute(rbt, rws, iws, rtws, itws, N11);\n        for (var s3 = 1; s3 < N11; s3 <<= 1) {\n          var l4 = s3 << 1;\n          var rtwdf = Math.cos(2 * Math.PI / l4);\n          var itwdf = Math.sin(2 * Math.PI / l4);\n          for (var p3 = 0; p3 < N11; p3 += l4) {\n            var rtwdf_ = rtwdf;\n            var itwdf_ = itwdf;\n            for (var j2 = 0; j2 < s3; j2++) {\n              var re3 = rtws[p3 + j2];\n              var ie2 = itws[p3 + j2];\n              var ro2 = rtws[p3 + j2 + s3];\n              var io2 = itws[p3 + j2 + s3];\n              var rx = rtwdf_ * ro2 - itwdf_ * io2;\n              io2 = rtwdf_ * io2 + itwdf_ * ro2;\n              ro2 = rx;\n              rtws[p3 + j2] = re3 + ro2;\n              itws[p3 + j2] = ie2 + io2;\n              rtws[p3 + j2 + s3] = re3 - ro2;\n              itws[p3 + j2 + s3] = ie2 - io2;\n              if (j2 !== l4) {\n                rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n                itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n                rtwdf_ = rx;\n              }\n            }\n          }\n        }\n      };\n      FFTM.prototype.guessLen13b = function guessLen13b(n5, m2) {\n        var N11 = Math.max(m2, n5) | 1;\n        var odd = N11 & 1;\n        var i4 = 0;\n        for (N11 = N11 / 2 | 0; N11; N11 = N11 >>> 1) {\n          i4++;\n        }\n        return 1 << i4 + 1 + odd;\n      };\n      FFTM.prototype.conjugate = function conjugate(rws, iws, N11) {\n        if (N11 <= 1)\n          return;\n        for (var i4 = 0; i4 < N11 / 2; i4++) {\n          var t = rws[i4];\n          rws[i4] = rws[N11 - i4 - 1];\n          rws[N11 - i4 - 1] = t;\n          t = iws[i4];\n          iws[i4] = -iws[N11 - i4 - 1];\n          iws[N11 - i4 - 1] = -t;\n        }\n      };\n      FFTM.prototype.normalize13b = function normalize13b(ws2, N11) {\n        var carry = 0;\n        for (var i4 = 0; i4 < N11 / 2; i4++) {\n          var w4 = Math.round(ws2[2 * i4 + 1] / N11) * 8192 + Math.round(ws2[2 * i4] / N11) + carry;\n          ws2[i4] = w4 & 67108863;\n          if (w4 < 67108864) {\n            carry = 0;\n          } else {\n            carry = w4 / 67108864 | 0;\n          }\n        }\n        return ws2;\n      };\n      FFTM.prototype.convert13b = function convert13b(ws2, len, rws, N11) {\n        var carry = 0;\n        for (var i4 = 0; i4 < len; i4++) {\n          carry = carry + (ws2[i4] | 0);\n          rws[2 * i4] = carry & 8191;\n          carry = carry >>> 13;\n          rws[2 * i4 + 1] = carry & 8191;\n          carry = carry >>> 13;\n        }\n        for (i4 = 2 * len; i4 < N11; ++i4) {\n          rws[i4] = 0;\n        }\n        assert2(carry === 0);\n        assert2((carry & ~8191) === 0);\n      };\n      FFTM.prototype.stub = function stub(N11) {\n        var ph = new Array(N11);\n        for (var i4 = 0; i4 < N11; i4++) {\n          ph[i4] = 0;\n        }\n        return ph;\n      };\n      FFTM.prototype.mulp = function mulp(x6, y6, out) {\n        var N11 = 2 * this.guessLen13b(x6.length, y6.length);\n        var rbt = this.makeRBT(N11);\n        var _4 = this.stub(N11);\n        var rws = new Array(N11);\n        var rwst = new Array(N11);\n        var iwst = new Array(N11);\n        var nrws = new Array(N11);\n        var nrwst = new Array(N11);\n        var niwst = new Array(N11);\n        var rmws = out.words;\n        rmws.length = N11;\n        this.convert13b(x6.words, x6.length, rws, N11);\n        this.convert13b(y6.words, y6.length, nrws, N11);\n        this.transform(rws, _4, rwst, iwst, N11, rbt);\n        this.transform(nrws, _4, nrwst, niwst, N11, rbt);\n        for (var i4 = 0; i4 < N11; i4++) {\n          var rx = rwst[i4] * nrwst[i4] - iwst[i4] * niwst[i4];\n          iwst[i4] = rwst[i4] * niwst[i4] + iwst[i4] * nrwst[i4];\n          rwst[i4] = rx;\n        }\n        this.conjugate(rwst, iwst, N11);\n        this.transform(rwst, iwst, rmws, _4, N11, rbt);\n        this.conjugate(rmws, _4, N11);\n        this.normalize13b(rmws, N11);\n        out.negative = x6.negative ^ y6.negative;\n        out.length = x6.length + y6.length;\n        return out._strip();\n      };\n      BN3.prototype.mul = function mul3(num) {\n        var out = new BN3(null);\n        out.words = new Array(this.length + num.length);\n        return this.mulTo(num, out);\n      };\n      BN3.prototype.mulf = function mulf(num) {\n        var out = new BN3(null);\n        out.words = new Array(this.length + num.length);\n        return jumboMulTo(this, num, out);\n      };\n      BN3.prototype.imul = function imul(num) {\n        return this.clone().mulTo(num, this);\n      };\n      BN3.prototype.imuln = function imuln(num) {\n        var isNegNum = num < 0;\n        if (isNegNum)\n          num = -num;\n        assert2(typeof num === \"number\");\n        assert2(num < 67108864);\n        var carry = 0;\n        for (var i4 = 0; i4 < this.length; i4++) {\n          var w4 = (this.words[i4] | 0) * num;\n          var lo2 = (w4 & 67108863) + (carry & 67108863);\n          carry >>= 26;\n          carry += w4 / 67108864 | 0;\n          carry += lo2 >>> 26;\n          this.words[i4] = lo2 & 67108863;\n        }\n        if (carry !== 0) {\n          this.words[i4] = carry;\n          this.length++;\n        }\n        return isNegNum ? this.ineg() : this;\n      };\n      BN3.prototype.muln = function muln(num) {\n        return this.clone().imuln(num);\n      };\n      BN3.prototype.sqr = function sqr() {\n        return this.mul(this);\n      };\n      BN3.prototype.isqr = function isqr() {\n        return this.imul(this.clone());\n      };\n      BN3.prototype.pow = function pow(num) {\n        var w4 = toBitArray(num);\n        if (w4.length === 0)\n          return new BN3(1);\n        var res = this;\n        for (var i4 = 0; i4 < w4.length; i4++, res = res.sqr()) {\n          if (w4[i4] !== 0)\n            break;\n        }\n        if (++i4 < w4.length) {\n          for (var q3 = res.sqr(); i4 < w4.length; i4++, q3 = q3.sqr()) {\n            if (w4[i4] === 0)\n              continue;\n            res = res.mul(q3);\n          }\n        }\n        return res;\n      };\n      BN3.prototype.iushln = function iushln(bits) {\n        assert2(typeof bits === \"number\" && bits >= 0);\n        var r4 = bits % 26;\n        var s3 = (bits - r4) / 26;\n        var carryMask = 67108863 >>> 26 - r4 << 26 - r4;\n        var i4;\n        if (r4 !== 0) {\n          var carry = 0;\n          for (i4 = 0; i4 < this.length; i4++) {\n            var newCarry = this.words[i4] & carryMask;\n            var c5 = (this.words[i4] | 0) - newCarry << r4;\n            this.words[i4] = c5 | carry;\n            carry = newCarry >>> 26 - r4;\n          }\n          if (carry) {\n            this.words[i4] = carry;\n            this.length++;\n          }\n        }\n        if (s3 !== 0) {\n          for (i4 = this.length - 1; i4 >= 0; i4--) {\n            this.words[i4 + s3] = this.words[i4];\n          }\n          for (i4 = 0; i4 < s3; i4++) {\n            this.words[i4] = 0;\n          }\n          this.length += s3;\n        }\n        return this._strip();\n      };\n      BN3.prototype.ishln = function ishln(bits) {\n        assert2(this.negative === 0);\n        return this.iushln(bits);\n      };\n      BN3.prototype.iushrn = function iushrn(bits, hint, extended) {\n        assert2(typeof bits === \"number\" && bits >= 0);\n        var h5;\n        if (hint) {\n          h5 = (hint - hint % 26) / 26;\n        } else {\n          h5 = 0;\n        }\n        var r4 = bits % 26;\n        var s3 = Math.min((bits - r4) / 26, this.length);\n        var mask = 67108863 ^ 67108863 >>> r4 << r4;\n        var maskedWords = extended;\n        h5 -= s3;\n        h5 = Math.max(0, h5);\n        if (maskedWords) {\n          for (var i4 = 0; i4 < s3; i4++) {\n            maskedWords.words[i4] = this.words[i4];\n          }\n          maskedWords.length = s3;\n        }\n        if (s3 === 0) {\n        } else if (this.length > s3) {\n          this.length -= s3;\n          for (i4 = 0; i4 < this.length; i4++) {\n            this.words[i4] = this.words[i4 + s3];\n          }\n        } else {\n          this.words[0] = 0;\n          this.length = 1;\n        }\n        var carry = 0;\n        for (i4 = this.length - 1; i4 >= 0 && (carry !== 0 || i4 >= h5); i4--) {\n          var word = this.words[i4] | 0;\n          this.words[i4] = carry << 26 - r4 | word >>> r4;\n          carry = word & mask;\n        }\n        if (maskedWords && carry !== 0) {\n          maskedWords.words[maskedWords.length++] = carry;\n        }\n        if (this.length === 0) {\n          this.words[0] = 0;\n          this.length = 1;\n        }\n        return this._strip();\n      };\n      BN3.prototype.ishrn = function ishrn(bits, hint, extended) {\n        assert2(this.negative === 0);\n        return this.iushrn(bits, hint, extended);\n      };\n      BN3.prototype.shln = function shln(bits) {\n        return this.clone().ishln(bits);\n      };\n      BN3.prototype.ushln = function ushln(bits) {\n        return this.clone().iushln(bits);\n      };\n      BN3.prototype.shrn = function shrn(bits) {\n        return this.clone().ishrn(bits);\n      };\n      BN3.prototype.ushrn = function ushrn(bits) {\n        return this.clone().iushrn(bits);\n      };\n      BN3.prototype.testn = function testn(bit) {\n        assert2(typeof bit === \"number\" && bit >= 0);\n        var r4 = bit % 26;\n        var s3 = (bit - r4) / 26;\n        var q3 = 1 << r4;\n        if (this.length <= s3)\n          return false;\n        var w4 = this.words[s3];\n        return !!(w4 & q3);\n      };\n      BN3.prototype.imaskn = function imaskn(bits) {\n        assert2(typeof bits === \"number\" && bits >= 0);\n        var r4 = bits % 26;\n        var s3 = (bits - r4) / 26;\n        assert2(this.negative === 0, \"imaskn works only with positive numbers\");\n        if (this.length <= s3) {\n          return this;\n        }\n        if (r4 !== 0) {\n          s3++;\n        }\n        this.length = Math.min(s3, this.length);\n        if (r4 !== 0) {\n          var mask = 67108863 ^ 67108863 >>> r4 << r4;\n          this.words[this.length - 1] &= mask;\n        }\n        return this._strip();\n      };\n      BN3.prototype.maskn = function maskn(bits) {\n        return this.clone().imaskn(bits);\n      };\n      BN3.prototype.iaddn = function iaddn(num) {\n        assert2(typeof num === \"number\");\n        assert2(num < 67108864);\n        if (num < 0)\n          return this.isubn(-num);\n        if (this.negative !== 0) {\n          if (this.length === 1 && (this.words[0] | 0) <= num) {\n            this.words[0] = num - (this.words[0] | 0);\n            this.negative = 0;\n            return this;\n          }\n          this.negative = 0;\n          this.isubn(num);\n          this.negative = 1;\n          return this;\n        }\n        return this._iaddn(num);\n      };\n      BN3.prototype._iaddn = function _iaddn(num) {\n        this.words[0] += num;\n        for (var i4 = 0; i4 < this.length && this.words[i4] >= 67108864; i4++) {\n          this.words[i4] -= 67108864;\n          if (i4 === this.length - 1) {\n            this.words[i4 + 1] = 1;\n          } else {\n            this.words[i4 + 1]++;\n          }\n        }\n        this.length = Math.max(this.length, i4 + 1);\n        return this;\n      };\n      BN3.prototype.isubn = function isubn(num) {\n        assert2(typeof num === \"number\");\n        assert2(num < 67108864);\n        if (num < 0)\n          return this.iaddn(-num);\n        if (this.negative !== 0) {\n          this.negative = 0;\n          this.iaddn(num);\n          this.negative = 1;\n          return this;\n        }\n        this.words[0] -= num;\n        if (this.length === 1 && this.words[0] < 0) {\n          this.words[0] = -this.words[0];\n          this.negative = 1;\n        } else {\n          for (var i4 = 0; i4 < this.length && this.words[i4] < 0; i4++) {\n            this.words[i4] += 67108864;\n            this.words[i4 + 1] -= 1;\n          }\n        }\n        return this._strip();\n      };\n      BN3.prototype.addn = function addn(num) {\n        return this.clone().iaddn(num);\n      };\n      BN3.prototype.subn = function subn(num) {\n        return this.clone().isubn(num);\n      };\n      BN3.prototype.iabs = function iabs() {\n        this.negative = 0;\n        return this;\n      };\n      BN3.prototype.abs = function abs() {\n        return this.clone().iabs();\n      };\n      BN3.prototype._ishlnsubmul = function _ishlnsubmul(num, mul3, shift) {\n        var len = num.length + shift;\n        var i4;\n        this._expand(len);\n        var w4;\n        var carry = 0;\n        for (i4 = 0; i4 < num.length; i4++) {\n          w4 = (this.words[i4 + shift] | 0) + carry;\n          var right = (num.words[i4] | 0) * mul3;\n          w4 -= right & 67108863;\n          carry = (w4 >> 26) - (right / 67108864 | 0);\n          this.words[i4 + shift] = w4 & 67108863;\n        }\n        for (; i4 < this.length - shift; i4++) {\n          w4 = (this.words[i4 + shift] | 0) + carry;\n          carry = w4 >> 26;\n          this.words[i4 + shift] = w4 & 67108863;\n        }\n        if (carry === 0)\n          return this._strip();\n        assert2(carry === -1);\n        carry = 0;\n        for (i4 = 0; i4 < this.length; i4++) {\n          w4 = -(this.words[i4] | 0) + carry;\n          carry = w4 >> 26;\n          this.words[i4] = w4 & 67108863;\n        }\n        this.negative = 1;\n        return this._strip();\n      };\n      BN3.prototype._wordDiv = function _wordDiv(num, mode) {\n        var shift = this.length - num.length;\n        var a4 = this.clone();\n        var b5 = num;\n        var bhi = b5.words[b5.length - 1] | 0;\n        var bhiBits = this._countBits(bhi);\n        shift = 26 - bhiBits;\n        if (shift !== 0) {\n          b5 = b5.ushln(shift);\n          a4.iushln(shift);\n          bhi = b5.words[b5.length - 1] | 0;\n        }\n        var m2 = a4.length - b5.length;\n        var q3;\n        if (mode !== \"mod\") {\n          q3 = new BN3(null);\n          q3.length = m2 + 1;\n          q3.words = new Array(q3.length);\n          for (var i4 = 0; i4 < q3.length; i4++) {\n            q3.words[i4] = 0;\n          }\n        }\n        var diff = a4.clone()._ishlnsubmul(b5, 1, m2);\n        if (diff.negative === 0) {\n          a4 = diff;\n          if (q3) {\n            q3.words[m2] = 1;\n          }\n        }\n        for (var j2 = m2 - 1; j2 >= 0; j2--) {\n          var qj = (a4.words[b5.length + j2] | 0) * 67108864 + (a4.words[b5.length + j2 - 1] | 0);\n          qj = Math.min(qj / bhi | 0, 67108863);\n          a4._ishlnsubmul(b5, qj, j2);\n          while (a4.negative !== 0) {\n            qj--;\n            a4.negative = 0;\n            a4._ishlnsubmul(b5, 1, j2);\n            if (!a4.isZero()) {\n              a4.negative ^= 1;\n            }\n          }\n          if (q3) {\n            q3.words[j2] = qj;\n          }\n        }\n        if (q3) {\n          q3._strip();\n        }\n        a4._strip();\n        if (mode !== \"div\" && shift !== 0) {\n          a4.iushrn(shift);\n        }\n        return {\n          div: q3 || null,\n          mod: a4\n        };\n      };\n      BN3.prototype.divmod = function divmod(num, mode, positive) {\n        assert2(!num.isZero());\n        if (this.isZero()) {\n          return {\n            div: new BN3(0),\n            mod: new BN3(0)\n          };\n        }\n        var div, mod, res;\n        if (this.negative !== 0 && num.negative === 0) {\n          res = this.neg().divmod(num, mode);\n          if (mode !== \"mod\") {\n            div = res.div.neg();\n          }\n          if (mode !== \"div\") {\n            mod = res.mod.neg();\n            if (positive && mod.negative !== 0) {\n              mod.iadd(num);\n            }\n          }\n          return {\n            div,\n            mod\n          };\n        }\n        if (this.negative === 0 && num.negative !== 0) {\n          res = this.divmod(num.neg(), mode);\n          if (mode !== \"mod\") {\n            div = res.div.neg();\n          }\n          return {\n            div,\n            mod: res.mod\n          };\n        }\n        if ((this.negative & num.negative) !== 0) {\n          res = this.neg().divmod(num.neg(), mode);\n          if (mode !== \"div\") {\n            mod = res.mod.neg();\n            if (positive && mod.negative !== 0) {\n              mod.isub(num);\n            }\n          }\n          return {\n            div: res.div,\n            mod\n          };\n        }\n        if (num.length > this.length || this.cmp(num) < 0) {\n          return {\n            div: new BN3(0),\n            mod: this\n          };\n        }\n        if (num.length === 1) {\n          if (mode === \"div\") {\n            return {\n              div: this.divn(num.words[0]),\n              mod: null\n            };\n          }\n          if (mode === \"mod\") {\n            return {\n              div: null,\n              mod: new BN3(this.modrn(num.words[0]))\n            };\n          }\n          return {\n            div: this.divn(num.words[0]),\n            mod: new BN3(this.modrn(num.words[0]))\n          };\n        }\n        return this._wordDiv(num, mode);\n      };\n      BN3.prototype.div = function div(num) {\n        return this.divmod(num, \"div\", false).div;\n      };\n      BN3.prototype.mod = function mod(num) {\n        return this.divmod(num, \"mod\", false).mod;\n      };\n      BN3.prototype.umod = function umod(num) {\n        return this.divmod(num, \"mod\", true).mod;\n      };\n      BN3.prototype.divRound = function divRound(num) {\n        var dm = this.divmod(num);\n        if (dm.mod.isZero())\n          return dm.div;\n        var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n        var half = num.ushrn(1);\n        var r22 = num.andln(1);\n        var cmp = mod.cmp(half);\n        if (cmp < 0 || r22 === 1 && cmp === 0)\n          return dm.div;\n        return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n      };\n      BN3.prototype.modrn = function modrn(num) {\n        var isNegNum = num < 0;\n        if (isNegNum)\n          num = -num;\n        assert2(num <= 67108863);\n        var p3 = (1 << 26) % num;\n        var acc = 0;\n        for (var i4 = this.length - 1; i4 >= 0; i4--) {\n          acc = (p3 * acc + (this.words[i4] | 0)) % num;\n        }\n        return isNegNum ? -acc : acc;\n      };\n      BN3.prototype.modn = function modn(num) {\n        return this.modrn(num);\n      };\n      BN3.prototype.idivn = function idivn(num) {\n        var isNegNum = num < 0;\n        if (isNegNum)\n          num = -num;\n        assert2(num <= 67108863);\n        var carry = 0;\n        for (var i4 = this.length - 1; i4 >= 0; i4--) {\n          var w4 = (this.words[i4] | 0) + carry * 67108864;\n          this.words[i4] = w4 / num | 0;\n          carry = w4 % num;\n        }\n        this._strip();\n        return isNegNum ? this.ineg() : this;\n      };\n      BN3.prototype.divn = function divn(num) {\n        return this.clone().idivn(num);\n      };\n      BN3.prototype.egcd = function egcd(p3) {\n        assert2(p3.negative === 0);\n        assert2(!p3.isZero());\n        var x6 = this;\n        var y6 = p3.clone();\n        if (x6.negative !== 0) {\n          x6 = x6.umod(p3);\n        } else {\n          x6 = x6.clone();\n        }\n        var A3 = new BN3(1);\n        var B4 = new BN3(0);\n        var C5 = new BN3(0);\n        var D4 = new BN3(1);\n        var g4 = 0;\n        while (x6.isEven() && y6.isEven()) {\n          x6.iushrn(1);\n          y6.iushrn(1);\n          ++g4;\n        }\n        var yp = y6.clone();\n        var xp = x6.clone();\n        while (!x6.isZero()) {\n          for (var i4 = 0, im = 1; (x6.words[0] & im) === 0 && i4 < 26; ++i4, im <<= 1)\n            ;\n          if (i4 > 0) {\n            x6.iushrn(i4);\n            while (i4-- > 0) {\n              if (A3.isOdd() || B4.isOdd()) {\n                A3.iadd(yp);\n                B4.isub(xp);\n              }\n              A3.iushrn(1);\n              B4.iushrn(1);\n            }\n          }\n          for (var j2 = 0, jm = 1; (y6.words[0] & jm) === 0 && j2 < 26; ++j2, jm <<= 1)\n            ;\n          if (j2 > 0) {\n            y6.iushrn(j2);\n            while (j2-- > 0) {\n              if (C5.isOdd() || D4.isOdd()) {\n                C5.iadd(yp);\n                D4.isub(xp);\n              }\n              C5.iushrn(1);\n              D4.iushrn(1);\n            }\n          }\n          if (x6.cmp(y6) >= 0) {\n            x6.isub(y6);\n            A3.isub(C5);\n            B4.isub(D4);\n          } else {\n            y6.isub(x6);\n            C5.isub(A3);\n            D4.isub(B4);\n          }\n        }\n        return {\n          a: C5,\n          b: D4,\n          gcd: y6.iushln(g4)\n        };\n      };\n      BN3.prototype._invmp = function _invmp(p3) {\n        assert2(p3.negative === 0);\n        assert2(!p3.isZero());\n        var a4 = this;\n        var b5 = p3.clone();\n        if (a4.negative !== 0) {\n          a4 = a4.umod(p3);\n        } else {\n          a4 = a4.clone();\n        }\n        var x1 = new BN3(1);\n        var x22 = new BN3(0);\n        var delta = b5.clone();\n        while (a4.cmpn(1) > 0 && b5.cmpn(1) > 0) {\n          for (var i4 = 0, im = 1; (a4.words[0] & im) === 0 && i4 < 26; ++i4, im <<= 1)\n            ;\n          if (i4 > 0) {\n            a4.iushrn(i4);\n            while (i4-- > 0) {\n              if (x1.isOdd()) {\n                x1.iadd(delta);\n              }\n              x1.iushrn(1);\n            }\n          }\n          for (var j2 = 0, jm = 1; (b5.words[0] & jm) === 0 && j2 < 26; ++j2, jm <<= 1)\n            ;\n          if (j2 > 0) {\n            b5.iushrn(j2);\n            while (j2-- > 0) {\n              if (x22.isOdd()) {\n                x22.iadd(delta);\n              }\n              x22.iushrn(1);\n            }\n          }\n          if (a4.cmp(b5) >= 0) {\n            a4.isub(b5);\n            x1.isub(x22);\n          } else {\n            b5.isub(a4);\n            x22.isub(x1);\n          }\n        }\n        var res;\n        if (a4.cmpn(1) === 0) {\n          res = x1;\n        } else {\n          res = x22;\n        }\n        if (res.cmpn(0) < 0) {\n          res.iadd(p3);\n        }\n        return res;\n      };\n      BN3.prototype.gcd = function gcd(num) {\n        if (this.isZero())\n          return num.abs();\n        if (num.isZero())\n          return this.abs();\n        var a4 = this.clone();\n        var b5 = num.clone();\n        a4.negative = 0;\n        b5.negative = 0;\n        for (var shift = 0; a4.isEven() && b5.isEven(); shift++) {\n          a4.iushrn(1);\n          b5.iushrn(1);\n        }\n        do {\n          while (a4.isEven()) {\n            a4.iushrn(1);\n          }\n          while (b5.isEven()) {\n            b5.iushrn(1);\n          }\n          var r4 = a4.cmp(b5);\n          if (r4 < 0) {\n            var t = a4;\n            a4 = b5;\n            b5 = t;\n          } else if (r4 === 0 || b5.cmpn(1) === 0) {\n            break;\n          }\n          a4.isub(b5);\n        } while (true);\n        return b5.iushln(shift);\n      };\n      BN3.prototype.invm = function invm(num) {\n        return this.egcd(num).a.umod(num);\n      };\n      BN3.prototype.isEven = function isEven() {\n        return (this.words[0] & 1) === 0;\n      };\n      BN3.prototype.isOdd = function isOdd() {\n        return (this.words[0] & 1) === 1;\n      };\n      BN3.prototype.andln = function andln(num) {\n        return this.words[0] & num;\n      };\n      BN3.prototype.bincn = function bincn(bit) {\n        assert2(typeof bit === \"number\");\n        var r4 = bit % 26;\n        var s3 = (bit - r4) / 26;\n        var q3 = 1 << r4;\n        if (this.length <= s3) {\n          this._expand(s3 + 1);\n          this.words[s3] |= q3;\n          return this;\n        }\n        var carry = q3;\n        for (var i4 = s3; carry !== 0 && i4 < this.length; i4++) {\n          var w4 = this.words[i4] | 0;\n          w4 += carry;\n          carry = w4 >>> 26;\n          w4 &= 67108863;\n          this.words[i4] = w4;\n        }\n        if (carry !== 0) {\n          this.words[i4] = carry;\n          this.length++;\n        }\n        return this;\n      };\n      BN3.prototype.isZero = function isZero() {\n        return this.length === 1 && this.words[0] === 0;\n      };\n      BN3.prototype.cmpn = function cmpn(num) {\n        var negative = num < 0;\n        if (this.negative !== 0 && !negative)\n          return -1;\n        if (this.negative === 0 && negative)\n          return 1;\n        this._strip();\n        var res;\n        if (this.length > 1) {\n          res = 1;\n        } else {\n          if (negative) {\n            num = -num;\n          }\n          assert2(num <= 67108863, \"Number is too big\");\n          var w4 = this.words[0] | 0;\n          res = w4 === num ? 0 : w4 < num ? -1 : 1;\n        }\n        if (this.negative !== 0)\n          return -res | 0;\n        return res;\n      };\n      BN3.prototype.cmp = function cmp(num) {\n        if (this.negative !== 0 && num.negative === 0)\n          return -1;\n        if (this.negative === 0 && num.negative !== 0)\n          return 1;\n        var res = this.ucmp(num);\n        if (this.negative !== 0)\n          return -res | 0;\n        return res;\n      };\n      BN3.prototype.ucmp = function ucmp(num) {\n        if (this.length > num.length)\n          return 1;\n        if (this.length < num.length)\n          return -1;\n        var res = 0;\n        for (var i4 = this.length - 1; i4 >= 0; i4--) {\n          var a4 = this.words[i4] | 0;\n          var b5 = num.words[i4] | 0;\n          if (a4 === b5)\n            continue;\n          if (a4 < b5) {\n            res = -1;\n          } else if (a4 > b5) {\n            res = 1;\n          }\n          break;\n        }\n        return res;\n      };\n      BN3.prototype.gtn = function gtn(num) {\n        return this.cmpn(num) === 1;\n      };\n      BN3.prototype.gt = function gt4(num) {\n        return this.cmp(num) === 1;\n      };\n      BN3.prototype.gten = function gten(num) {\n        return this.cmpn(num) >= 0;\n      };\n      BN3.prototype.gte = function gte(num) {\n        return this.cmp(num) >= 0;\n      };\n      BN3.prototype.ltn = function ltn(num) {\n        return this.cmpn(num) === -1;\n      };\n      BN3.prototype.lt = function lt3(num) {\n        return this.cmp(num) === -1;\n      };\n      BN3.prototype.lten = function lten(num) {\n        return this.cmpn(num) <= 0;\n      };\n      BN3.prototype.lte = function lte(num) {\n        return this.cmp(num) <= 0;\n      };\n      BN3.prototype.eqn = function eqn(num) {\n        return this.cmpn(num) === 0;\n      };\n      BN3.prototype.eq = function eq4(num) {\n        return this.cmp(num) === 0;\n      };\n      BN3.red = function red(num) {\n        return new Red(num);\n      };\n      BN3.prototype.toRed = function toRed(ctx) {\n        assert2(!this.red, \"Already a number in reduction context\");\n        assert2(this.negative === 0, \"red works only with positives\");\n        return ctx.convertTo(this)._forceRed(ctx);\n      };\n      BN3.prototype.fromRed = function fromRed() {\n        assert2(this.red, \"fromRed works only with numbers in reduction context\");\n        return this.red.convertFrom(this);\n      };\n      BN3.prototype._forceRed = function _forceRed(ctx) {\n        this.red = ctx;\n        return this;\n      };\n      BN3.prototype.forceRed = function forceRed(ctx) {\n        assert2(!this.red, \"Already a number in reduction context\");\n        return this._forceRed(ctx);\n      };\n      BN3.prototype.redAdd = function redAdd(num) {\n        assert2(this.red, \"redAdd works only with red numbers\");\n        return this.red.add(this, num);\n      };\n      BN3.prototype.redIAdd = function redIAdd(num) {\n        assert2(this.red, \"redIAdd works only with red numbers\");\n        return this.red.iadd(this, num);\n      };\n      BN3.prototype.redSub = function redSub(num) {\n        assert2(this.red, \"redSub works only with red numbers\");\n        return this.red.sub(this, num);\n      };\n      BN3.prototype.redISub = function redISub(num) {\n        assert2(this.red, \"redISub works only with red numbers\");\n        return this.red.isub(this, num);\n      };\n      BN3.prototype.redShl = function redShl(num) {\n        assert2(this.red, \"redShl works only with red numbers\");\n        return this.red.shl(this, num);\n      };\n      BN3.prototype.redMul = function redMul(num) {\n        assert2(this.red, \"redMul works only with red numbers\");\n        this.red._verify2(this, num);\n        return this.red.mul(this, num);\n      };\n      BN3.prototype.redIMul = function redIMul(num) {\n        assert2(this.red, \"redMul works only with red numbers\");\n        this.red._verify2(this, num);\n        return this.red.imul(this, num);\n      };\n      BN3.prototype.redSqr = function redSqr() {\n        assert2(this.red, \"redSqr works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.sqr(this);\n      };\n      BN3.prototype.redISqr = function redISqr() {\n        assert2(this.red, \"redISqr works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.isqr(this);\n      };\n      BN3.prototype.redSqrt = function redSqrt() {\n        assert2(this.red, \"redSqrt works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.sqrt(this);\n      };\n      BN3.prototype.redInvm = function redInvm() {\n        assert2(this.red, \"redInvm works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.invm(this);\n      };\n      BN3.prototype.redNeg = function redNeg() {\n        assert2(this.red, \"redNeg works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.neg(this);\n      };\n      BN3.prototype.redPow = function redPow(num) {\n        assert2(this.red && !num.red, \"redPow(normalNum)\");\n        this.red._verify1(this);\n        return this.red.pow(this, num);\n      };\n      var primes = {\n        k256: null,\n        p224: null,\n        p192: null,\n        p25519: null\n      };\n      function MPrime(name2, p3) {\n        this.name = name2;\n        this.p = new BN3(p3, 16);\n        this.n = this.p.bitLength();\n        this.k = new BN3(1).iushln(this.n).isub(this.p);\n        this.tmp = this._tmp();\n      }\n      MPrime.prototype._tmp = function _tmp() {\n        var tmp = new BN3(null);\n        tmp.words = new Array(Math.ceil(this.n / 13));\n        return tmp;\n      };\n      MPrime.prototype.ireduce = function ireduce(num) {\n        var r4 = num;\n        var rlen;\n        do {\n          this.split(r4, this.tmp);\n          r4 = this.imulK(r4);\n          r4 = r4.iadd(this.tmp);\n          rlen = r4.bitLength();\n        } while (rlen > this.n);\n        var cmp = rlen < this.n ? -1 : r4.ucmp(this.p);\n        if (cmp === 0) {\n          r4.words[0] = 0;\n          r4.length = 1;\n        } else if (cmp > 0) {\n          r4.isub(this.p);\n        } else {\n          if (r4.strip !== void 0) {\n            r4.strip();\n          } else {\n            r4._strip();\n          }\n        }\n        return r4;\n      };\n      MPrime.prototype.split = function split(input, out) {\n        input.iushrn(this.n, 0, out);\n      };\n      MPrime.prototype.imulK = function imulK(num) {\n        return num.imul(this.k);\n      };\n      function K256() {\n        MPrime.call(\n          this,\n          \"k256\",\n          \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\"\n        );\n      }\n      inherits(K256, MPrime);\n      K256.prototype.split = function split(input, output) {\n        var mask = 4194303;\n        var outLen = Math.min(input.length, 9);\n        for (var i4 = 0; i4 < outLen; i4++) {\n          output.words[i4] = input.words[i4];\n        }\n        output.length = outLen;\n        if (input.length <= 9) {\n          input.words[0] = 0;\n          input.length = 1;\n          return;\n        }\n        var prev = input.words[9];\n        output.words[output.length++] = prev & mask;\n        for (i4 = 10; i4 < input.length; i4++) {\n          var next = input.words[i4] | 0;\n          input.words[i4 - 10] = (next & mask) << 4 | prev >>> 22;\n          prev = next;\n        }\n        prev >>>= 22;\n        input.words[i4 - 10] = prev;\n        if (prev === 0 && input.length > 10) {\n          input.length -= 10;\n        } else {\n          input.length -= 9;\n        }\n      };\n      K256.prototype.imulK = function imulK(num) {\n        num.words[num.length] = 0;\n        num.words[num.length + 1] = 0;\n        num.length += 2;\n        var lo2 = 0;\n        for (var i4 = 0; i4 < num.length; i4++) {\n          var w4 = num.words[i4] | 0;\n          lo2 += w4 * 977;\n          num.words[i4] = lo2 & 67108863;\n          lo2 = w4 * 64 + (lo2 / 67108864 | 0);\n        }\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n          if (num.words[num.length - 1] === 0) {\n            num.length--;\n          }\n        }\n        return num;\n      };\n      function P224() {\n        MPrime.call(\n          this,\n          \"p224\",\n          \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\"\n        );\n      }\n      inherits(P224, MPrime);\n      function P192() {\n        MPrime.call(\n          this,\n          \"p192\",\n          \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\"\n        );\n      }\n      inherits(P192, MPrime);\n      function P25519() {\n        MPrime.call(\n          this,\n          \"25519\",\n          \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\"\n        );\n      }\n      inherits(P25519, MPrime);\n      P25519.prototype.imulK = function imulK(num) {\n        var carry = 0;\n        for (var i4 = 0; i4 < num.length; i4++) {\n          var hi2 = (num.words[i4] | 0) * 19 + carry;\n          var lo2 = hi2 & 67108863;\n          hi2 >>>= 26;\n          num.words[i4] = lo2;\n          carry = hi2;\n        }\n        if (carry !== 0) {\n          num.words[num.length++] = carry;\n        }\n        return num;\n      };\n      BN3._prime = function prime(name2) {\n        if (primes[name2])\n          return primes[name2];\n        var prime2;\n        if (name2 === \"k256\") {\n          prime2 = new K256();\n        } else if (name2 === \"p224\") {\n          prime2 = new P224();\n        } else if (name2 === \"p192\") {\n          prime2 = new P192();\n        } else if (name2 === \"p25519\") {\n          prime2 = new P25519();\n        } else {\n          throw new Error(\"Unknown prime \" + name2);\n        }\n        primes[name2] = prime2;\n        return prime2;\n      };\n      function Red(m2) {\n        if (typeof m2 === \"string\") {\n          var prime = BN3._prime(m2);\n          this.m = prime.p;\n          this.prime = prime;\n        } else {\n          assert2(m2.gtn(1), \"modulus must be greater than 1\");\n          this.m = m2;\n          this.prime = null;\n        }\n      }\n      Red.prototype._verify1 = function _verify1(a4) {\n        assert2(a4.negative === 0, \"red works only with positives\");\n        assert2(a4.red, \"red works only with red numbers\");\n      };\n      Red.prototype._verify2 = function _verify2(a4, b5) {\n        assert2((a4.negative | b5.negative) === 0, \"red works only with positives\");\n        assert2(\n          a4.red && a4.red === b5.red,\n          \"red works only with red numbers\"\n        );\n      };\n      Red.prototype.imod = function imod(a4) {\n        if (this.prime)\n          return this.prime.ireduce(a4)._forceRed(this);\n        move(a4, a4.umod(this.m)._forceRed(this));\n        return a4;\n      };\n      Red.prototype.neg = function neg3(a4) {\n        if (a4.isZero()) {\n          return a4.clone();\n        }\n        return this.m.sub(a4)._forceRed(this);\n      };\n      Red.prototype.add = function add3(a4, b5) {\n        this._verify2(a4, b5);\n        var res = a4.add(b5);\n        if (res.cmp(this.m) >= 0) {\n          res.isub(this.m);\n        }\n        return res._forceRed(this);\n      };\n      Red.prototype.iadd = function iadd(a4, b5) {\n        this._verify2(a4, b5);\n        var res = a4.iadd(b5);\n        if (res.cmp(this.m) >= 0) {\n          res.isub(this.m);\n        }\n        return res;\n      };\n      Red.prototype.sub = function sub(a4, b5) {\n        this._verify2(a4, b5);\n        var res = a4.sub(b5);\n        if (res.cmpn(0) < 0) {\n          res.iadd(this.m);\n        }\n        return res._forceRed(this);\n      };\n      Red.prototype.isub = function isub(a4, b5) {\n        this._verify2(a4, b5);\n        var res = a4.isub(b5);\n        if (res.cmpn(0) < 0) {\n          res.iadd(this.m);\n        }\n        return res;\n      };\n      Red.prototype.shl = function shl(a4, num) {\n        this._verify1(a4);\n        return this.imod(a4.ushln(num));\n      };\n      Red.prototype.imul = function imul(a4, b5) {\n        this._verify2(a4, b5);\n        return this.imod(a4.imul(b5));\n      };\n      Red.prototype.mul = function mul3(a4, b5) {\n        this._verify2(a4, b5);\n        return this.imod(a4.mul(b5));\n      };\n      Red.prototype.isqr = function isqr(a4) {\n        return this.imul(a4, a4.clone());\n      };\n      Red.prototype.sqr = function sqr(a4) {\n        return this.mul(a4, a4);\n      };\n      Red.prototype.sqrt = function sqrt(a4) {\n        if (a4.isZero())\n          return a4.clone();\n        var mod3 = this.m.andln(3);\n        assert2(mod3 % 2 === 1);\n        if (mod3 === 3) {\n          var pow = this.m.add(new BN3(1)).iushrn(2);\n          return this.pow(a4, pow);\n        }\n        var q3 = this.m.subn(1);\n        var s3 = 0;\n        while (!q3.isZero() && q3.andln(1) === 0) {\n          s3++;\n          q3.iushrn(1);\n        }\n        assert2(!q3.isZero());\n        var one = new BN3(1).toRed(this);\n        var nOne = one.redNeg();\n        var lpow = this.m.subn(1).iushrn(1);\n        var z6 = this.m.bitLength();\n        z6 = new BN3(2 * z6 * z6).toRed(this);\n        while (this.pow(z6, lpow).cmp(nOne) !== 0) {\n          z6.redIAdd(nOne);\n        }\n        var c5 = this.pow(z6, q3);\n        var r4 = this.pow(a4, q3.addn(1).iushrn(1));\n        var t = this.pow(a4, q3);\n        var m2 = s3;\n        while (t.cmp(one) !== 0) {\n          var tmp = t;\n          for (var i4 = 0; tmp.cmp(one) !== 0; i4++) {\n            tmp = tmp.redSqr();\n          }\n          assert2(i4 < m2);\n          var b5 = this.pow(c5, new BN3(1).iushln(m2 - i4 - 1));\n          r4 = r4.redMul(b5);\n          c5 = b5.redSqr();\n          t = t.redMul(c5);\n          m2 = i4;\n        }\n        return r4;\n      };\n      Red.prototype.invm = function invm(a4) {\n        var inv = a4._invmp(this.m);\n        if (inv.negative !== 0) {\n          inv.negative = 0;\n          return this.imod(inv).redNeg();\n        } else {\n          return this.imod(inv);\n        }\n      };\n      Red.prototype.pow = function pow(a4, num) {\n        if (num.isZero())\n          return new BN3(1).toRed(this);\n        if (num.cmpn(1) === 0)\n          return a4.clone();\n        var windowSize = 4;\n        var wnd = new Array(1 << windowSize);\n        wnd[0] = new BN3(1).toRed(this);\n        wnd[1] = a4;\n        for (var i4 = 2; i4 < wnd.length; i4++) {\n          wnd[i4] = this.mul(wnd[i4 - 1], a4);\n        }\n        var res = wnd[0];\n        var current = 0;\n        var currentLen = 0;\n        var start = num.bitLength() % 26;\n        if (start === 0) {\n          start = 26;\n        }\n        for (i4 = num.length - 1; i4 >= 0; i4--) {\n          var word = num.words[i4];\n          for (var j2 = start - 1; j2 >= 0; j2--) {\n            var bit = word >> j2 & 1;\n            if (res !== wnd[0]) {\n              res = this.sqr(res);\n            }\n            if (bit === 0 && current === 0) {\n              currentLen = 0;\n              continue;\n            }\n            current <<= 1;\n            current |= bit;\n            currentLen++;\n            if (currentLen !== windowSize && (i4 !== 0 || j2 !== 0))\n              continue;\n            res = this.mul(res, wnd[current]);\n            currentLen = 0;\n            current = 0;\n          }\n          start = 26;\n        }\n        return res;\n      };\n      Red.prototype.convertTo = function convertTo(num) {\n        var r4 = num.umod(this.m);\n        return r4 === num ? r4.clone() : r4;\n      };\n      Red.prototype.convertFrom = function convertFrom(num) {\n        var res = num.clone();\n        res.red = null;\n        return res;\n      };\n      BN3.mont = function mont(num) {\n        return new Mont(num);\n      };\n      function Mont(m2) {\n        Red.call(this, m2);\n        this.shift = this.m.bitLength();\n        if (this.shift % 26 !== 0) {\n          this.shift += 26 - this.shift % 26;\n        }\n        this.r = new BN3(1).iushln(this.shift);\n        this.r2 = this.imod(this.r.sqr());\n        this.rinv = this.r._invmp(this.m);\n        this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n        this.minv = this.minv.umod(this.r);\n        this.minv = this.r.sub(this.minv);\n      }\n      inherits(Mont, Red);\n      Mont.prototype.convertTo = function convertTo(num) {\n        return this.imod(num.ushln(this.shift));\n      };\n      Mont.prototype.convertFrom = function convertFrom(num) {\n        var r4 = this.imod(num.mul(this.rinv));\n        r4.red = null;\n        return r4;\n      };\n      Mont.prototype.imul = function imul(a4, b5) {\n        if (a4.isZero() || b5.isZero()) {\n          a4.words[0] = 0;\n          a4.length = 1;\n          return a4;\n        }\n        var t = a4.imul(b5);\n        var c5 = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n        var u3 = t.isub(c5).iushrn(this.shift);\n        var res = u3;\n        if (u3.cmp(this.m) >= 0) {\n          res = u3.isub(this.m);\n        } else if (u3.cmpn(0) < 0) {\n          res = u3.iadd(this.m);\n        }\n        return res._forceRed(this);\n      };\n      Mont.prototype.mul = function mul3(a4, b5) {\n        if (a4.isZero() || b5.isZero())\n          return new BN3(0)._forceRed(this);\n        var t = a4.mul(b5);\n        var c5 = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n        var u3 = t.isub(c5).iushrn(this.shift);\n        var res = u3;\n        if (u3.cmp(this.m) >= 0) {\n          res = u3.isub(this.m);\n        } else if (u3.cmpn(0) < 0) {\n          res = u3.iadd(this.m);\n        }\n        return res._forceRed(this);\n      };\n      Mont.prototype.invm = function invm(a4) {\n        var res = this.imod(a4._invmp(this.m).mul(this.r2));\n        return res._forceRed(this);\n      };\n    })(typeof module === \"undefined\" || module, exports);\n  }\n});\n\n// node_modules/minimalistic-assert/index.js\nvar require_minimalistic_assert = __commonJS({\n  \"node_modules/minimalistic-assert/index.js\"(exports, module) {\n    module.exports = assert2;\n    function assert2(val, msg) {\n      if (!val)\n        throw new Error(msg || \"Assertion failed\");\n    }\n    assert2.equal = function assertEqual2(l4, r4, msg) {\n      if (l4 != r4)\n        throw new Error(msg || \"Assertion failed: \" + l4 + \" != \" + r4);\n    };\n  }\n});\n\n// node_modules/inherits/inherits_browser.js\nvar require_inherits_browser = __commonJS({\n  \"node_modules/inherits/inherits_browser.js\"(exports, module) {\n    if (typeof Object.create === \"function\") {\n      module.exports = function inherits(ctor, superCtor) {\n        if (superCtor) {\n          ctor.super_ = superCtor;\n          ctor.prototype = Object.create(superCtor.prototype, {\n            constructor: {\n              value: ctor,\n              enumerable: false,\n              writable: true,\n              configurable: true\n            }\n          });\n        }\n      };\n    } else {\n      module.exports = function inherits(ctor, superCtor) {\n        if (superCtor) {\n          ctor.super_ = superCtor;\n          var TempCtor = function() {\n          };\n          TempCtor.prototype = superCtor.prototype;\n          ctor.prototype = new TempCtor();\n          ctor.prototype.constructor = ctor;\n        }\n      };\n    }\n  }\n});\n\n// node_modules/hash.js/lib/hash/utils.js\nvar require_utils2 = __commonJS({\n  \"node_modules/hash.js/lib/hash/utils.js\"(exports) {\n    \"use strict\";\n    var assert2 = require_minimalistic_assert();\n    var inherits = require_inherits_browser();\n    exports.inherits = inherits;\n    function isSurrogatePair(msg, i4) {\n      if ((msg.charCodeAt(i4) & 64512) !== 55296) {\n        return false;\n      }\n      if (i4 < 0 || i4 + 1 >= msg.length) {\n        return false;\n      }\n      return (msg.charCodeAt(i4 + 1) & 64512) === 56320;\n    }\n    function toArray(msg, enc) {\n      if (Array.isArray(msg))\n        return msg.slice();\n      if (!msg)\n        return [];\n      var res = [];\n      if (typeof msg === \"string\") {\n        if (!enc) {\n          var p3 = 0;\n          for (var i4 = 0; i4 < msg.length; i4++) {\n            var c5 = msg.charCodeAt(i4);\n            if (c5 < 128) {\n              res[p3++] = c5;\n            } else if (c5 < 2048) {\n              res[p3++] = c5 >> 6 | 192;\n              res[p3++] = c5 & 63 | 128;\n            } else if (isSurrogatePair(msg, i4)) {\n              c5 = 65536 + ((c5 & 1023) << 10) + (msg.charCodeAt(++i4) & 1023);\n              res[p3++] = c5 >> 18 | 240;\n              res[p3++] = c5 >> 12 & 63 | 128;\n              res[p3++] = c5 >> 6 & 63 | 128;\n              res[p3++] = c5 & 63 | 128;\n            } else {\n              res[p3++] = c5 >> 12 | 224;\n              res[p3++] = c5 >> 6 & 63 | 128;\n              res[p3++] = c5 & 63 | 128;\n            }\n          }\n        } else if (enc === \"hex\") {\n          msg = msg.replace(/[^a-z0-9]+/ig, \"\");\n          if (msg.length % 2 !== 0)\n            msg = \"0\" + msg;\n          for (i4 = 0; i4 < msg.length; i4 += 2)\n            res.push(parseInt(msg[i4] + msg[i4 + 1], 16));\n        }\n      } else {\n        for (i4 = 0; i4 < msg.length; i4++)\n          res[i4] = msg[i4] | 0;\n      }\n      return res;\n    }\n    exports.toArray = toArray;\n    function toHex2(msg) {\n      var res = \"\";\n      for (var i4 = 0; i4 < msg.length; i4++)\n        res += zero2(msg[i4].toString(16));\n      return res;\n    }\n    exports.toHex = toHex2;\n    function htonl(w4) {\n      var res = w4 >>> 24 | w4 >>> 8 & 65280 | w4 << 8 & 16711680 | (w4 & 255) << 24;\n      return res >>> 0;\n    }\n    exports.htonl = htonl;\n    function toHex32(msg, endian) {\n      var res = \"\";\n      for (var i4 = 0; i4 < msg.length; i4++) {\n        var w4 = msg[i4];\n        if (endian === \"little\")\n          w4 = htonl(w4);\n        res += zero8(w4.toString(16));\n      }\n      return res;\n    }\n    exports.toHex32 = toHex32;\n    function zero2(word) {\n      if (word.length === 1)\n        return \"0\" + word;\n      else\n        return word;\n    }\n    exports.zero2 = zero2;\n    function zero8(word) {\n      if (word.length === 7)\n        return \"0\" + word;\n      else if (word.length === 6)\n        return \"00\" + word;\n      else if (word.length === 5)\n        return \"000\" + word;\n      else if (word.length === 4)\n        return \"0000\" + word;\n      else if (word.length === 3)\n        return \"00000\" + word;\n      else if (word.length === 2)\n        return \"000000\" + word;\n      else if (word.length === 1)\n        return \"0000000\" + word;\n      else\n        return word;\n    }\n    exports.zero8 = zero8;\n    function join32(msg, start, end, endian) {\n      var len = end - start;\n      assert2(len % 4 === 0);\n      var res = new Array(len / 4);\n      for (var i4 = 0, k4 = start; i4 < res.length; i4++, k4 += 4) {\n        var w4;\n        if (endian === \"big\")\n          w4 = msg[k4] << 24 | msg[k4 + 1] << 16 | msg[k4 + 2] << 8 | msg[k4 + 3];\n        else\n          w4 = msg[k4 + 3] << 24 | msg[k4 + 2] << 16 | msg[k4 + 1] << 8 | msg[k4];\n        res[i4] = w4 >>> 0;\n      }\n      return res;\n    }\n    exports.join32 = join32;\n    function split32(msg, endian) {\n      var res = new Array(msg.length * 4);\n      for (var i4 = 0, k4 = 0; i4 < msg.length; i4++, k4 += 4) {\n        var m2 = msg[i4];\n        if (endian === \"big\") {\n          res[k4] = m2 >>> 24;\n          res[k4 + 1] = m2 >>> 16 & 255;\n          res[k4 + 2] = m2 >>> 8 & 255;\n          res[k4 + 3] = m2 & 255;\n        } else {\n          res[k4 + 3] = m2 >>> 24;\n          res[k4 + 2] = m2 >>> 16 & 255;\n          res[k4 + 1] = m2 >>> 8 & 255;\n          res[k4] = m2 & 255;\n        }\n      }\n      return res;\n    }\n    exports.split32 = split32;\n    function rotr32(w4, b5) {\n      return w4 >>> b5 | w4 << 32 - b5;\n    }\n    exports.rotr32 = rotr32;\n    function rotl32(w4, b5) {\n      return w4 << b5 | w4 >>> 32 - b5;\n    }\n    exports.rotl32 = rotl32;\n    function sum32(a4, b5) {\n      return a4 + b5 >>> 0;\n    }\n    exports.sum32 = sum32;\n    function sum32_3(a4, b5, c5) {\n      return a4 + b5 + c5 >>> 0;\n    }\n    exports.sum32_3 = sum32_3;\n    function sum32_4(a4, b5, c5, d3) {\n      return a4 + b5 + c5 + d3 >>> 0;\n    }\n    exports.sum32_4 = sum32_4;\n    function sum32_5(a4, b5, c5, d3, e2) {\n      return a4 + b5 + c5 + d3 + e2 >>> 0;\n    }\n    exports.sum32_5 = sum32_5;\n    function sum64(buf, pos, ah, al) {\n      var bh = buf[pos];\n      var bl = buf[pos + 1];\n      var lo2 = al + bl >>> 0;\n      var hi2 = (lo2 < al ? 1 : 0) + ah + bh;\n      buf[pos] = hi2 >>> 0;\n      buf[pos + 1] = lo2;\n    }\n    exports.sum64 = sum64;\n    function sum64_hi(ah, al, bh, bl) {\n      var lo2 = al + bl >>> 0;\n      var hi2 = (lo2 < al ? 1 : 0) + ah + bh;\n      return hi2 >>> 0;\n    }\n    exports.sum64_hi = sum64_hi;\n    function sum64_lo(ah, al, bh, bl) {\n      var lo2 = al + bl;\n      return lo2 >>> 0;\n    }\n    exports.sum64_lo = sum64_lo;\n    function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n      var carry = 0;\n      var lo2 = al;\n      lo2 = lo2 + bl >>> 0;\n      carry += lo2 < al ? 1 : 0;\n      lo2 = lo2 + cl >>> 0;\n      carry += lo2 < cl ? 1 : 0;\n      lo2 = lo2 + dl >>> 0;\n      carry += lo2 < dl ? 1 : 0;\n      var hi2 = ah + bh + ch + dh + carry;\n      return hi2 >>> 0;\n    }\n    exports.sum64_4_hi = sum64_4_hi;\n    function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n      var lo2 = al + bl + cl + dl;\n      return lo2 >>> 0;\n    }\n    exports.sum64_4_lo = sum64_4_lo;\n    function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n      var carry = 0;\n      var lo2 = al;\n      lo2 = lo2 + bl >>> 0;\n      carry += lo2 < al ? 1 : 0;\n      lo2 = lo2 + cl >>> 0;\n      carry += lo2 < cl ? 1 : 0;\n      lo2 = lo2 + dl >>> 0;\n      carry += lo2 < dl ? 1 : 0;\n      lo2 = lo2 + el >>> 0;\n      carry += lo2 < el ? 1 : 0;\n      var hi2 = ah + bh + ch + dh + eh + carry;\n      return hi2 >>> 0;\n    }\n    exports.sum64_5_hi = sum64_5_hi;\n    function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n      var lo2 = al + bl + cl + dl + el;\n      return lo2 >>> 0;\n    }\n    exports.sum64_5_lo = sum64_5_lo;\n    function rotr64_hi(ah, al, num) {\n      var r4 = al << 32 - num | ah >>> num;\n      return r4 >>> 0;\n    }\n    exports.rotr64_hi = rotr64_hi;\n    function rotr64_lo(ah, al, num) {\n      var r4 = ah << 32 - num | al >>> num;\n      return r4 >>> 0;\n    }\n    exports.rotr64_lo = rotr64_lo;\n    function shr64_hi(ah, al, num) {\n      return ah >>> num;\n    }\n    exports.shr64_hi = shr64_hi;\n    function shr64_lo(ah, al, num) {\n      var r4 = ah << 32 - num | al >>> num;\n      return r4 >>> 0;\n    }\n    exports.shr64_lo = shr64_lo;\n  }\n});\n\n// node_modules/hash.js/lib/hash/common.js\nvar require_common = __commonJS({\n  \"node_modules/hash.js/lib/hash/common.js\"(exports) {\n    \"use strict\";\n    var utils = require_utils2();\n    var assert2 = require_minimalistic_assert();\n    function BlockHash() {\n      this.pending = null;\n      this.pendingTotal = 0;\n      this.blockSize = this.constructor.blockSize;\n      this.outSize = this.constructor.outSize;\n      this.hmacStrength = this.constructor.hmacStrength;\n      this.padLength = this.constructor.padLength / 8;\n      this.endian = \"big\";\n      this._delta8 = this.blockSize / 8;\n      this._delta32 = this.blockSize / 32;\n    }\n    exports.BlockHash = BlockHash;\n    BlockHash.prototype.update = function update2(msg, enc) {\n      msg = utils.toArray(msg, enc);\n      if (!this.pending)\n        this.pending = msg;\n      else\n        this.pending = this.pending.concat(msg);\n      this.pendingTotal += msg.length;\n      if (this.pending.length >= this._delta8) {\n        msg = this.pending;\n        var r4 = msg.length % this._delta8;\n        this.pending = msg.slice(msg.length - r4, msg.length);\n        if (this.pending.length === 0)\n          this.pending = null;\n        msg = utils.join32(msg, 0, msg.length - r4, this.endian);\n        for (var i4 = 0; i4 < msg.length; i4 += this._delta32)\n          this._update(msg, i4, i4 + this._delta32);\n      }\n      return this;\n    };\n    BlockHash.prototype.digest = function digest2(enc) {\n      this.update(this._pad());\n      assert2(this.pending === null);\n      return this._digest(enc);\n    };\n    BlockHash.prototype._pad = function pad() {\n      var len = this.pendingTotal;\n      var bytes = this._delta8;\n      var k4 = bytes - (len + this.padLength) % bytes;\n      var res = new Array(k4 + this.padLength);\n      res[0] = 128;\n      for (var i4 = 1; i4 < k4; i4++)\n        res[i4] = 0;\n      len <<= 3;\n      if (this.endian === \"big\") {\n        for (var t = 8; t < this.padLength; t++)\n          res[i4++] = 0;\n        res[i4++] = 0;\n        res[i4++] = 0;\n        res[i4++] = 0;\n        res[i4++] = 0;\n        res[i4++] = len >>> 24 & 255;\n        res[i4++] = len >>> 16 & 255;\n        res[i4++] = len >>> 8 & 255;\n        res[i4++] = len & 255;\n      } else {\n        res[i4++] = len & 255;\n        res[i4++] = len >>> 8 & 255;\n        res[i4++] = len >>> 16 & 255;\n        res[i4++] = len >>> 24 & 255;\n        res[i4++] = 0;\n        res[i4++] = 0;\n        res[i4++] = 0;\n        res[i4++] = 0;\n        for (t = 8; t < this.padLength; t++)\n          res[i4++] = 0;\n      }\n      return res;\n    };\n  }\n});\n\n// node_modules/hash.js/lib/hash/sha/common.js\nvar require_common2 = __commonJS({\n  \"node_modules/hash.js/lib/hash/sha/common.js\"(exports) {\n    \"use strict\";\n    var utils = require_utils2();\n    var rotr32 = utils.rotr32;\n    function ft_1(s3, x6, y6, z6) {\n      if (s3 === 0)\n        return ch32(x6, y6, z6);\n      if (s3 === 1 || s3 === 3)\n        return p32(x6, y6, z6);\n      if (s3 === 2)\n        return maj32(x6, y6, z6);\n    }\n    exports.ft_1 = ft_1;\n    function ch32(x6, y6, z6) {\n      return x6 & y6 ^ ~x6 & z6;\n    }\n    exports.ch32 = ch32;\n    function maj32(x6, y6, z6) {\n      return x6 & y6 ^ x6 & z6 ^ y6 & z6;\n    }\n    exports.maj32 = maj32;\n    function p32(x6, y6, z6) {\n      return x6 ^ y6 ^ z6;\n    }\n    exports.p32 = p32;\n    function s0_256(x6) {\n      return rotr32(x6, 2) ^ rotr32(x6, 13) ^ rotr32(x6, 22);\n    }\n    exports.s0_256 = s0_256;\n    function s1_256(x6) {\n      return rotr32(x6, 6) ^ rotr32(x6, 11) ^ rotr32(x6, 25);\n    }\n    exports.s1_256 = s1_256;\n    function g0_256(x6) {\n      return rotr32(x6, 7) ^ rotr32(x6, 18) ^ x6 >>> 3;\n    }\n    exports.g0_256 = g0_256;\n    function g1_256(x6) {\n      return rotr32(x6, 17) ^ rotr32(x6, 19) ^ x6 >>> 10;\n    }\n    exports.g1_256 = g1_256;\n  }\n});\n\n// node_modules/hash.js/lib/hash/sha/1.js\nvar require__ = __commonJS({\n  \"node_modules/hash.js/lib/hash/sha/1.js\"(exports, module) {\n    \"use strict\";\n    var utils = require_utils2();\n    var common = require_common();\n    var shaCommon = require_common2();\n    var rotl32 = utils.rotl32;\n    var sum32 = utils.sum32;\n    var sum32_5 = utils.sum32_5;\n    var ft_1 = shaCommon.ft_1;\n    var BlockHash = common.BlockHash;\n    var sha1_K = [\n      1518500249,\n      1859775393,\n      2400959708,\n      3395469782\n    ];\n    function SHA1() {\n      if (!(this instanceof SHA1))\n        return new SHA1();\n      BlockHash.call(this);\n      this.h = [\n        1732584193,\n        4023233417,\n        2562383102,\n        271733878,\n        3285377520\n      ];\n      this.W = new Array(80);\n    }\n    utils.inherits(SHA1, BlockHash);\n    module.exports = SHA1;\n    SHA1.blockSize = 512;\n    SHA1.outSize = 160;\n    SHA1.hmacStrength = 80;\n    SHA1.padLength = 64;\n    SHA1.prototype._update = function _update(msg, start) {\n      var W3 = this.W;\n      for (var i4 = 0; i4 < 16; i4++)\n        W3[i4] = msg[start + i4];\n      for (; i4 < W3.length; i4++)\n        W3[i4] = rotl32(W3[i4 - 3] ^ W3[i4 - 8] ^ W3[i4 - 14] ^ W3[i4 - 16], 1);\n      var a4 = this.h[0];\n      var b5 = this.h[1];\n      var c5 = this.h[2];\n      var d3 = this.h[3];\n      var e2 = this.h[4];\n      for (i4 = 0; i4 < W3.length; i4++) {\n        var s3 = ~~(i4 / 20);\n        var t = sum32_5(rotl32(a4, 5), ft_1(s3, b5, c5, d3), e2, W3[i4], sha1_K[s3]);\n        e2 = d3;\n        d3 = c5;\n        c5 = rotl32(b5, 30);\n        b5 = a4;\n        a4 = t;\n      }\n      this.h[0] = sum32(this.h[0], a4);\n      this.h[1] = sum32(this.h[1], b5);\n      this.h[2] = sum32(this.h[2], c5);\n      this.h[3] = sum32(this.h[3], d3);\n      this.h[4] = sum32(this.h[4], e2);\n    };\n    SHA1.prototype._digest = function digest2(enc) {\n      if (enc === \"hex\")\n        return utils.toHex32(this.h, \"big\");\n      else\n        return utils.split32(this.h, \"big\");\n    };\n  }\n});\n\n// node_modules/hash.js/lib/hash/sha/256.js\nvar require__2 = __commonJS({\n  \"node_modules/hash.js/lib/hash/sha/256.js\"(exports, module) {\n    \"use strict\";\n    var utils = require_utils2();\n    var common = require_common();\n    var shaCommon = require_common2();\n    var assert2 = require_minimalistic_assert();\n    var sum32 = utils.sum32;\n    var sum32_4 = utils.sum32_4;\n    var sum32_5 = utils.sum32_5;\n    var ch32 = shaCommon.ch32;\n    var maj32 = shaCommon.maj32;\n    var s0_256 = shaCommon.s0_256;\n    var s1_256 = shaCommon.s1_256;\n    var g0_256 = shaCommon.g0_256;\n    var g1_256 = shaCommon.g1_256;\n    var BlockHash = common.BlockHash;\n    var sha256_K = [\n      1116352408,\n      1899447441,\n      3049323471,\n      3921009573,\n      961987163,\n      1508970993,\n      2453635748,\n      2870763221,\n      3624381080,\n      310598401,\n      607225278,\n      1426881987,\n      1925078388,\n      2162078206,\n      2614888103,\n      3248222580,\n      3835390401,\n      4022224774,\n      264347078,\n      604807628,\n      770255983,\n      1249150122,\n      1555081692,\n      1996064986,\n      2554220882,\n      2821834349,\n      2952996808,\n      3210313671,\n      3336571891,\n      3584528711,\n      113926993,\n      338241895,\n      666307205,\n      773529912,\n      1294757372,\n      1396182291,\n      1695183700,\n      1986661051,\n      2177026350,\n      2456956037,\n      2730485921,\n      2820302411,\n      3259730800,\n      3345764771,\n      3516065817,\n      3600352804,\n      4094571909,\n      275423344,\n      430227734,\n      506948616,\n      659060556,\n      883997877,\n      958139571,\n      1322822218,\n      1537002063,\n      1747873779,\n      1955562222,\n      2024104815,\n      2227730452,\n      2361852424,\n      2428436474,\n      2756734187,\n      3204031479,\n      3329325298\n    ];\n    function SHA256() {\n      if (!(this instanceof SHA256))\n        return new SHA256();\n      BlockHash.call(this);\n      this.h = [\n        1779033703,\n        3144134277,\n        1013904242,\n        2773480762,\n        1359893119,\n        2600822924,\n        528734635,\n        1541459225\n      ];\n      this.k = sha256_K;\n      this.W = new Array(64);\n    }\n    utils.inherits(SHA256, BlockHash);\n    module.exports = SHA256;\n    SHA256.blockSize = 512;\n    SHA256.outSize = 256;\n    SHA256.hmacStrength = 192;\n    SHA256.padLength = 64;\n    SHA256.prototype._update = function _update(msg, start) {\n      var W3 = this.W;\n      for (var i4 = 0; i4 < 16; i4++)\n        W3[i4] = msg[start + i4];\n      for (; i4 < W3.length; i4++)\n        W3[i4] = sum32_4(g1_256(W3[i4 - 2]), W3[i4 - 7], g0_256(W3[i4 - 15]), W3[i4 - 16]);\n      var a4 = this.h[0];\n      var b5 = this.h[1];\n      var c5 = this.h[2];\n      var d3 = this.h[3];\n      var e2 = this.h[4];\n      var f4 = this.h[5];\n      var g4 = this.h[6];\n      var h5 = this.h[7];\n      assert2(this.k.length === W3.length);\n      for (i4 = 0; i4 < W3.length; i4++) {\n        var T1 = sum32_5(h5, s1_256(e2), ch32(e2, f4, g4), this.k[i4], W3[i4]);\n        var T2 = sum32(s0_256(a4), maj32(a4, b5, c5));\n        h5 = g4;\n        g4 = f4;\n        f4 = e2;\n        e2 = sum32(d3, T1);\n        d3 = c5;\n        c5 = b5;\n        b5 = a4;\n        a4 = sum32(T1, T2);\n      }\n      this.h[0] = sum32(this.h[0], a4);\n      this.h[1] = sum32(this.h[1], b5);\n      this.h[2] = sum32(this.h[2], c5);\n      this.h[3] = sum32(this.h[3], d3);\n      this.h[4] = sum32(this.h[4], e2);\n      this.h[5] = sum32(this.h[5], f4);\n      this.h[6] = sum32(this.h[6], g4);\n      this.h[7] = sum32(this.h[7], h5);\n    };\n    SHA256.prototype._digest = function digest2(enc) {\n      if (enc === \"hex\")\n        return utils.toHex32(this.h, \"big\");\n      else\n        return utils.split32(this.h, \"big\");\n    };\n  }\n});\n\n// node_modules/hash.js/lib/hash/sha/224.js\nvar require__3 = __commonJS({\n  \"node_modules/hash.js/lib/hash/sha/224.js\"(exports, module) {\n    \"use strict\";\n    var utils = require_utils2();\n    var SHA256 = require__2();\n    function SHA224() {\n      if (!(this instanceof SHA224))\n        return new SHA224();\n      SHA256.call(this);\n      this.h = [\n        3238371032,\n        914150663,\n        812702999,\n        4144912697,\n        4290775857,\n        1750603025,\n        1694076839,\n        3204075428\n      ];\n    }\n    utils.inherits(SHA224, SHA256);\n    module.exports = SHA224;\n    SHA224.blockSize = 512;\n    SHA224.outSize = 224;\n    SHA224.hmacStrength = 192;\n    SHA224.padLength = 64;\n    SHA224.prototype._digest = function digest2(enc) {\n      if (enc === \"hex\")\n        return utils.toHex32(this.h.slice(0, 7), \"big\");\n      else\n        return utils.split32(this.h.slice(0, 7), \"big\");\n    };\n  }\n});\n\n// node_modules/hash.js/lib/hash/sha/512.js\nvar require__4 = __commonJS({\n  \"node_modules/hash.js/lib/hash/sha/512.js\"(exports, module) {\n    \"use strict\";\n    var utils = require_utils2();\n    var common = require_common();\n    var assert2 = require_minimalistic_assert();\n    var rotr64_hi = utils.rotr64_hi;\n    var rotr64_lo = utils.rotr64_lo;\n    var shr64_hi = utils.shr64_hi;\n    var shr64_lo = utils.shr64_lo;\n    var sum64 = utils.sum64;\n    var sum64_hi = utils.sum64_hi;\n    var sum64_lo = utils.sum64_lo;\n    var sum64_4_hi = utils.sum64_4_hi;\n    var sum64_4_lo = utils.sum64_4_lo;\n    var sum64_5_hi = utils.sum64_5_hi;\n    var sum64_5_lo = utils.sum64_5_lo;\n    var BlockHash = common.BlockHash;\n    var sha512_K = [\n      1116352408,\n      3609767458,\n      1899447441,\n      602891725,\n      3049323471,\n      3964484399,\n      3921009573,\n      2173295548,\n      961987163,\n      4081628472,\n      1508970993,\n      3053834265,\n      2453635748,\n      2937671579,\n      2870763221,\n      3664609560,\n      3624381080,\n      2734883394,\n      310598401,\n      1164996542,\n      607225278,\n      1323610764,\n      1426881987,\n      3590304994,\n      1925078388,\n      4068182383,\n      2162078206,\n      991336113,\n      2614888103,\n      633803317,\n      3248222580,\n      3479774868,\n      3835390401,\n      2666613458,\n      4022224774,\n      944711139,\n      264347078,\n      2341262773,\n      604807628,\n      2007800933,\n      770255983,\n      1495990901,\n      1249150122,\n      1856431235,\n      1555081692,\n      3175218132,\n      1996064986,\n      2198950837,\n      2554220882,\n      3999719339,\n      2821834349,\n      766784016,\n      2952996808,\n      2566594879,\n      3210313671,\n      3203337956,\n      3336571891,\n      1034457026,\n      3584528711,\n      2466948901,\n      113926993,\n      3758326383,\n      338241895,\n      168717936,\n      666307205,\n      1188179964,\n      773529912,\n      1546045734,\n      1294757372,\n      1522805485,\n      1396182291,\n      2643833823,\n      1695183700,\n      2343527390,\n      1986661051,\n      1014477480,\n      2177026350,\n      1206759142,\n      2456956037,\n      344077627,\n      2730485921,\n      1290863460,\n      2820302411,\n      3158454273,\n      3259730800,\n      3505952657,\n      3345764771,\n      106217008,\n      3516065817,\n      3606008344,\n      3600352804,\n      1432725776,\n      4094571909,\n      1467031594,\n      275423344,\n      851169720,\n      430227734,\n      3100823752,\n      506948616,\n      1363258195,\n      659060556,\n      3750685593,\n      883997877,\n      3785050280,\n      958139571,\n      3318307427,\n      1322822218,\n      3812723403,\n      1537002063,\n      2003034995,\n      1747873779,\n      3602036899,\n      1955562222,\n      1575990012,\n      2024104815,\n      1125592928,\n      2227730452,\n      2716904306,\n      2361852424,\n      442776044,\n      2428436474,\n      593698344,\n      2756734187,\n      3733110249,\n      3204031479,\n      2999351573,\n      3329325298,\n      3815920427,\n      3391569614,\n      3928383900,\n      3515267271,\n      566280711,\n      3940187606,\n      3454069534,\n      4118630271,\n      4000239992,\n      116418474,\n      1914138554,\n      174292421,\n      2731055270,\n      289380356,\n      3203993006,\n      460393269,\n      320620315,\n      685471733,\n      587496836,\n      852142971,\n      1086792851,\n      1017036298,\n      365543100,\n      1126000580,\n      2618297676,\n      1288033470,\n      3409855158,\n      1501505948,\n      4234509866,\n      1607167915,\n      987167468,\n      1816402316,\n      1246189591\n    ];\n    function SHA512() {\n      if (!(this instanceof SHA512))\n        return new SHA512();\n      BlockHash.call(this);\n      this.h = [\n        1779033703,\n        4089235720,\n        3144134277,\n        2227873595,\n        1013904242,\n        4271175723,\n        2773480762,\n        1595750129,\n        1359893119,\n        2917565137,\n        2600822924,\n        725511199,\n        528734635,\n        4215389547,\n        1541459225,\n        327033209\n      ];\n      this.k = sha512_K;\n      this.W = new Array(160);\n    }\n    utils.inherits(SHA512, BlockHash);\n    module.exports = SHA512;\n    SHA512.blockSize = 1024;\n    SHA512.outSize = 512;\n    SHA512.hmacStrength = 192;\n    SHA512.padLength = 128;\n    SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n      var W3 = this.W;\n      for (var i4 = 0; i4 < 32; i4++)\n        W3[i4] = msg[start + i4];\n      for (; i4 < W3.length; i4 += 2) {\n        var c0_hi = g1_512_hi(W3[i4 - 4], W3[i4 - 3]);\n        var c0_lo = g1_512_lo(W3[i4 - 4], W3[i4 - 3]);\n        var c1_hi = W3[i4 - 14];\n        var c1_lo = W3[i4 - 13];\n        var c2_hi = g0_512_hi(W3[i4 - 30], W3[i4 - 29]);\n        var c2_lo = g0_512_lo(W3[i4 - 30], W3[i4 - 29]);\n        var c3_hi = W3[i4 - 32];\n        var c3_lo = W3[i4 - 31];\n        W3[i4] = sum64_4_hi(\n          c0_hi,\n          c0_lo,\n          c1_hi,\n          c1_lo,\n          c2_hi,\n          c2_lo,\n          c3_hi,\n          c3_lo\n        );\n        W3[i4 + 1] = sum64_4_lo(\n          c0_hi,\n          c0_lo,\n          c1_hi,\n          c1_lo,\n          c2_hi,\n          c2_lo,\n          c3_hi,\n          c3_lo\n        );\n      }\n    };\n    SHA512.prototype._update = function _update(msg, start) {\n      this._prepareBlock(msg, start);\n      var W3 = this.W;\n      var ah = this.h[0];\n      var al = this.h[1];\n      var bh = this.h[2];\n      var bl = this.h[3];\n      var ch = this.h[4];\n      var cl = this.h[5];\n      var dh = this.h[6];\n      var dl = this.h[7];\n      var eh = this.h[8];\n      var el = this.h[9];\n      var fh = this.h[10];\n      var fl = this.h[11];\n      var gh = this.h[12];\n      var gl = this.h[13];\n      var hh = this.h[14];\n      var hl = this.h[15];\n      assert2(this.k.length === W3.length);\n      for (var i4 = 0; i4 < W3.length; i4 += 2) {\n        var c0_hi = hh;\n        var c0_lo = hl;\n        var c1_hi = s1_512_hi(eh, el);\n        var c1_lo = s1_512_lo(eh, el);\n        var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n        var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n        var c3_hi = this.k[i4];\n        var c3_lo = this.k[i4 + 1];\n        var c4_hi = W3[i4];\n        var c4_lo = W3[i4 + 1];\n        var T1_hi = sum64_5_hi(\n          c0_hi,\n          c0_lo,\n          c1_hi,\n          c1_lo,\n          c2_hi,\n          c2_lo,\n          c3_hi,\n          c3_lo,\n          c4_hi,\n          c4_lo\n        );\n        var T1_lo = sum64_5_lo(\n          c0_hi,\n          c0_lo,\n          c1_hi,\n          c1_lo,\n          c2_hi,\n          c2_lo,\n          c3_hi,\n          c3_lo,\n          c4_hi,\n          c4_lo\n        );\n        c0_hi = s0_512_hi(ah, al);\n        c0_lo = s0_512_lo(ah, al);\n        c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n        c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n        var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n        var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n        hh = gh;\n        hl = gl;\n        gh = fh;\n        gl = fl;\n        fh = eh;\n        fl = el;\n        eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n        el = sum64_lo(dl, dl, T1_hi, T1_lo);\n        dh = ch;\n        dl = cl;\n        ch = bh;\n        cl = bl;\n        bh = ah;\n        bl = al;\n        ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n        al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n      }\n      sum64(this.h, 0, ah, al);\n      sum64(this.h, 2, bh, bl);\n      sum64(this.h, 4, ch, cl);\n      sum64(this.h, 6, dh, dl);\n      sum64(this.h, 8, eh, el);\n      sum64(this.h, 10, fh, fl);\n      sum64(this.h, 12, gh, gl);\n      sum64(this.h, 14, hh, hl);\n    };\n    SHA512.prototype._digest = function digest2(enc) {\n      if (enc === \"hex\")\n        return utils.toHex32(this.h, \"big\");\n      else\n        return utils.split32(this.h, \"big\");\n    };\n    function ch64_hi(xh, xl, yh, yl, zh) {\n      var r4 = xh & yh ^ ~xh & zh;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function ch64_lo(xh, xl, yh, yl, zh, zl) {\n      var r4 = xl & yl ^ ~xl & zl;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function maj64_hi(xh, xl, yh, yl, zh) {\n      var r4 = xh & yh ^ xh & zh ^ yh & zh;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function maj64_lo(xh, xl, yh, yl, zh, zl) {\n      var r4 = xl & yl ^ xl & zl ^ yl & zl;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function s0_512_hi(xh, xl) {\n      var c0_hi = rotr64_hi(xh, xl, 28);\n      var c1_hi = rotr64_hi(xl, xh, 2);\n      var c2_hi = rotr64_hi(xl, xh, 7);\n      var r4 = c0_hi ^ c1_hi ^ c2_hi;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function s0_512_lo(xh, xl) {\n      var c0_lo = rotr64_lo(xh, xl, 28);\n      var c1_lo = rotr64_lo(xl, xh, 2);\n      var c2_lo = rotr64_lo(xl, xh, 7);\n      var r4 = c0_lo ^ c1_lo ^ c2_lo;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function s1_512_hi(xh, xl) {\n      var c0_hi = rotr64_hi(xh, xl, 14);\n      var c1_hi = rotr64_hi(xh, xl, 18);\n      var c2_hi = rotr64_hi(xl, xh, 9);\n      var r4 = c0_hi ^ c1_hi ^ c2_hi;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function s1_512_lo(xh, xl) {\n      var c0_lo = rotr64_lo(xh, xl, 14);\n      var c1_lo = rotr64_lo(xh, xl, 18);\n      var c2_lo = rotr64_lo(xl, xh, 9);\n      var r4 = c0_lo ^ c1_lo ^ c2_lo;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function g0_512_hi(xh, xl) {\n      var c0_hi = rotr64_hi(xh, xl, 1);\n      var c1_hi = rotr64_hi(xh, xl, 8);\n      var c2_hi = shr64_hi(xh, xl, 7);\n      var r4 = c0_hi ^ c1_hi ^ c2_hi;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function g0_512_lo(xh, xl) {\n      var c0_lo = rotr64_lo(xh, xl, 1);\n      var c1_lo = rotr64_lo(xh, xl, 8);\n      var c2_lo = shr64_lo(xh, xl, 7);\n      var r4 = c0_lo ^ c1_lo ^ c2_lo;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function g1_512_hi(xh, xl) {\n      var c0_hi = rotr64_hi(xh, xl, 19);\n      var c1_hi = rotr64_hi(xl, xh, 29);\n      var c2_hi = shr64_hi(xh, xl, 6);\n      var r4 = c0_hi ^ c1_hi ^ c2_hi;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n    function g1_512_lo(xh, xl) {\n      var c0_lo = rotr64_lo(xh, xl, 19);\n      var c1_lo = rotr64_lo(xl, xh, 29);\n      var c2_lo = shr64_lo(xh, xl, 6);\n      var r4 = c0_lo ^ c1_lo ^ c2_lo;\n      if (r4 < 0)\n        r4 += 4294967296;\n      return r4;\n    }\n  }\n});\n\n// node_modules/hash.js/lib/hash/sha/384.js\nvar require__5 = __commonJS({\n  \"node_modules/hash.js/lib/hash/sha/384.js\"(exports, module) {\n    \"use strict\";\n    var utils = require_utils2();\n    var SHA512 = require__4();\n    function SHA384() {\n      if (!(this instanceof SHA384))\n        return new SHA384();\n      SHA512.call(this);\n      this.h = [\n        3418070365,\n        3238371032,\n        1654270250,\n        914150663,\n        2438529370,\n        812702999,\n        355462360,\n        4144912697,\n        1731405415,\n        4290775857,\n        2394180231,\n        1750603025,\n        3675008525,\n        1694076839,\n        1203062813,\n        3204075428\n      ];\n    }\n    utils.inherits(SHA384, SHA512);\n    module.exports = SHA384;\n    SHA384.blockSize = 1024;\n    SHA384.outSize = 384;\n    SHA384.hmacStrength = 192;\n    SHA384.padLength = 128;\n    SHA384.prototype._digest = function digest2(enc) {\n      if (enc === \"hex\")\n        return utils.toHex32(this.h.slice(0, 12), \"big\");\n      else\n        return utils.split32(this.h.slice(0, 12), \"big\");\n    };\n  }\n});\n\n// node_modules/hash.js/lib/hash/sha.js\nvar require_sha = __commonJS({\n  \"node_modules/hash.js/lib/hash/sha.js\"(exports) {\n    \"use strict\";\n    exports.sha1 = require__();\n    exports.sha224 = require__3();\n    exports.sha256 = require__2();\n    exports.sha384 = require__5();\n    exports.sha512 = require__4();\n  }\n});\n\n// node_modules/hash.js/lib/hash/ripemd.js\nvar require_ripemd = __commonJS({\n  \"node_modules/hash.js/lib/hash/ripemd.js\"(exports) {\n    \"use strict\";\n    var utils = require_utils2();\n    var common = require_common();\n    var rotl32 = utils.rotl32;\n    var sum32 = utils.sum32;\n    var sum32_3 = utils.sum32_3;\n    var sum32_4 = utils.sum32_4;\n    var BlockHash = common.BlockHash;\n    function RIPEMD160() {\n      if (!(this instanceof RIPEMD160))\n        return new RIPEMD160();\n      BlockHash.call(this);\n      this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];\n      this.endian = \"little\";\n    }\n    utils.inherits(RIPEMD160, BlockHash);\n    exports.ripemd160 = RIPEMD160;\n    RIPEMD160.blockSize = 512;\n    RIPEMD160.outSize = 160;\n    RIPEMD160.hmacStrength = 192;\n    RIPEMD160.padLength = 64;\n    RIPEMD160.prototype._update = function update2(msg, start) {\n      var A3 = this.h[0];\n      var B4 = this.h[1];\n      var C5 = this.h[2];\n      var D4 = this.h[3];\n      var E3 = this.h[4];\n      var Ah = A3;\n      var Bh = B4;\n      var Ch = C5;\n      var Dh = D4;\n      var Eh = E3;\n      for (var j2 = 0; j2 < 80; j2++) {\n        var T2 = sum32(\n          rotl32(\n            sum32_4(A3, f4(j2, B4, C5, D4), msg[r4[j2] + start], K3(j2)),\n            s3[j2]\n          ),\n          E3\n        );\n        A3 = E3;\n        E3 = D4;\n        D4 = rotl32(C5, 10);\n        C5 = B4;\n        B4 = T2;\n        T2 = sum32(\n          rotl32(\n            sum32_4(Ah, f4(79 - j2, Bh, Ch, Dh), msg[rh[j2] + start], Kh(j2)),\n            sh[j2]\n          ),\n          Eh\n        );\n        Ah = Eh;\n        Eh = Dh;\n        Dh = rotl32(Ch, 10);\n        Ch = Bh;\n        Bh = T2;\n      }\n      T2 = sum32_3(this.h[1], C5, Dh);\n      this.h[1] = sum32_3(this.h[2], D4, Eh);\n      this.h[2] = sum32_3(this.h[3], E3, Ah);\n      this.h[3] = sum32_3(this.h[4], A3, Bh);\n      this.h[4] = sum32_3(this.h[0], B4, Ch);\n      this.h[0] = T2;\n    };\n    RIPEMD160.prototype._digest = function digest2(enc) {\n      if (enc === \"hex\")\n        return utils.toHex32(this.h, \"little\");\n      else\n        return utils.split32(this.h, \"little\");\n    };\n    function f4(j2, x6, y6, z6) {\n      if (j2 <= 15)\n        return x6 ^ y6 ^ z6;\n      else if (j2 <= 31)\n        return x6 & y6 | ~x6 & z6;\n      else if (j2 <= 47)\n        return (x6 | ~y6) ^ z6;\n      else if (j2 <= 63)\n        return x6 & z6 | y6 & ~z6;\n      else\n        return x6 ^ (y6 | ~z6);\n    }\n    function K3(j2) {\n      if (j2 <= 15)\n        return 0;\n      else if (j2 <= 31)\n        return 1518500249;\n      else if (j2 <= 47)\n        return 1859775393;\n      else if (j2 <= 63)\n        return 2400959708;\n      else\n        return 2840853838;\n    }\n    function Kh(j2) {\n      if (j2 <= 15)\n        return 1352829926;\n      else if (j2 <= 31)\n        return 1548603684;\n      else if (j2 <= 47)\n        return 1836072691;\n      else if (j2 <= 63)\n        return 2053994217;\n      else\n        return 0;\n    }\n    var r4 = [\n      0,\n      1,\n      2,\n      3,\n      4,\n      5,\n      6,\n      7,\n      8,\n      9,\n      10,\n      11,\n      12,\n      13,\n      14,\n      15,\n      7,\n      4,\n      13,\n      1,\n      10,\n      6,\n      15,\n      3,\n      12,\n      0,\n      9,\n      5,\n      2,\n      14,\n      11,\n      8,\n      3,\n      10,\n      14,\n      4,\n      9,\n      15,\n      8,\n      1,\n      2,\n      7,\n      0,\n      6,\n      13,\n      11,\n      5,\n      12,\n      1,\n      9,\n      11,\n      10,\n      0,\n      8,\n      12,\n      4,\n      13,\n      3,\n      7,\n      15,\n      14,\n      5,\n      6,\n      2,\n      4,\n      0,\n      5,\n      9,\n      7,\n      12,\n      2,\n      10,\n      14,\n      1,\n      3,\n      8,\n      11,\n      6,\n      15,\n      13\n    ];\n    var rh = [\n      5,\n      14,\n      7,\n      0,\n      9,\n      2,\n      11,\n      4,\n      13,\n      6,\n      15,\n      8,\n      1,\n      10,\n      3,\n      12,\n      6,\n      11,\n      3,\n      7,\n      0,\n      13,\n      5,\n      10,\n      14,\n      15,\n      8,\n      12,\n      4,\n      9,\n      1,\n      2,\n      15,\n      5,\n      1,\n      3,\n      7,\n      14,\n      6,\n      9,\n      11,\n      8,\n      12,\n      2,\n      10,\n      0,\n      4,\n      13,\n      8,\n      6,\n      4,\n      1,\n      3,\n      11,\n      15,\n      0,\n      5,\n      12,\n      2,\n      13,\n      9,\n      7,\n      10,\n      14,\n      12,\n      15,\n      10,\n      4,\n      1,\n      5,\n      8,\n      7,\n      6,\n      2,\n      13,\n      14,\n      0,\n      3,\n      9,\n      11\n    ];\n    var s3 = [\n      11,\n      14,\n      15,\n      12,\n      5,\n      8,\n      7,\n      9,\n      11,\n      13,\n      14,\n      15,\n      6,\n      7,\n      9,\n      8,\n      7,\n      6,\n      8,\n      13,\n      11,\n      9,\n      7,\n      15,\n      7,\n      12,\n      15,\n      9,\n      11,\n      7,\n      13,\n      12,\n      11,\n      13,\n      6,\n      7,\n      14,\n      9,\n      13,\n      15,\n      14,\n      8,\n      13,\n      6,\n      5,\n      12,\n      7,\n      5,\n      11,\n      12,\n      14,\n      15,\n      14,\n      15,\n      9,\n      8,\n      9,\n      14,\n      5,\n      6,\n      8,\n      6,\n      5,\n      12,\n      9,\n      15,\n      5,\n      11,\n      6,\n      8,\n      13,\n      12,\n      5,\n      12,\n      13,\n      14,\n      11,\n      8,\n      5,\n      6\n    ];\n    var sh = [\n      8,\n      9,\n      9,\n      11,\n      13,\n      15,\n      15,\n      5,\n      7,\n      7,\n      8,\n      11,\n      14,\n      14,\n      12,\n      6,\n      9,\n      13,\n      15,\n      7,\n      12,\n      8,\n      9,\n      11,\n      7,\n      7,\n      12,\n      7,\n      6,\n      15,\n      13,\n      11,\n      9,\n      7,\n      15,\n      11,\n      8,\n      6,\n      6,\n      14,\n      12,\n      13,\n      5,\n      14,\n      13,\n      13,\n      7,\n      5,\n      15,\n      5,\n      8,\n      11,\n      14,\n      14,\n      6,\n      14,\n      6,\n      9,\n      12,\n      9,\n      12,\n      5,\n      15,\n      8,\n      8,\n      5,\n      12,\n      9,\n      12,\n      5,\n      14,\n      6,\n      8,\n      13,\n      6,\n      5,\n      15,\n      13,\n      11,\n      11\n    ];\n  }\n});\n\n// node_modules/hash.js/lib/hash/hmac.js\nvar require_hmac = __commonJS({\n  \"node_modules/hash.js/lib/hash/hmac.js\"(exports, module) {\n    \"use strict\";\n    var utils = require_utils2();\n    var assert2 = require_minimalistic_assert();\n    function Hmac(hash2, key2, enc) {\n      if (!(this instanceof Hmac))\n        return new Hmac(hash2, key2, enc);\n      this.Hash = hash2;\n      this.blockSize = hash2.blockSize / 8;\n      this.outSize = hash2.outSize / 8;\n      this.inner = null;\n      this.outer = null;\n      this._init(utils.toArray(key2, enc));\n    }\n    module.exports = Hmac;\n    Hmac.prototype._init = function init2(key2) {\n      if (key2.length > this.blockSize)\n        key2 = new this.Hash().update(key2).digest();\n      assert2(key2.length <= this.blockSize);\n      for (var i4 = key2.length; i4 < this.blockSize; i4++)\n        key2.push(0);\n      for (i4 = 0; i4 < key2.length; i4++)\n        key2[i4] ^= 54;\n      this.inner = new this.Hash().update(key2);\n      for (i4 = 0; i4 < key2.length; i4++)\n        key2[i4] ^= 106;\n      this.outer = new this.Hash().update(key2);\n    };\n    Hmac.prototype.update = function update2(msg, enc) {\n      this.inner.update(msg, enc);\n      return this;\n    };\n    Hmac.prototype.digest = function digest2(enc) {\n      this.outer.update(this.inner.digest());\n      return this.outer.digest(enc);\n    };\n  }\n});\n\n// node_modules/hash.js/lib/hash.js\nvar require_hash = __commonJS({\n  \"node_modules/hash.js/lib/hash.js\"(exports) {\n    var hash2 = exports;\n    hash2.utils = require_utils2();\n    hash2.common = require_common();\n    hash2.sha = require_sha();\n    hash2.ripemd = require_ripemd();\n    hash2.hmac = require_hmac();\n    hash2.sha1 = hash2.sha.sha1;\n    hash2.sha256 = hash2.sha.sha256;\n    hash2.sha224 = hash2.sha.sha224;\n    hash2.sha384 = hash2.sha.sha384;\n    hash2.sha512 = hash2.sha.sha512;\n    hash2.ripemd160 = hash2.ripemd.ripemd160;\n  }\n});\n\n// node_modules/@stablelib/int/lib/int.js\nvar require_int = __commonJS({\n  \"node_modules/@stablelib/int/lib/int.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function imulShim(a4, b5) {\n      var ah = a4 >>> 16 & 65535, al = a4 & 65535;\n      var bh = b5 >>> 16 & 65535, bl = b5 & 65535;\n      return al * bl + (ah * bl + al * bh << 16 >>> 0) | 0;\n    }\n    exports.mul = Math.imul || imulShim;\n    function add3(a4, b5) {\n      return a4 + b5 | 0;\n    }\n    exports.add = add3;\n    function sub(a4, b5) {\n      return a4 - b5 | 0;\n    }\n    exports.sub = sub;\n    function rotl(x6, n5) {\n      return x6 << n5 | x6 >>> 32 - n5;\n    }\n    exports.rotl = rotl;\n    function rotr(x6, n5) {\n      return x6 << 32 - n5 | x6 >>> n5;\n    }\n    exports.rotr = rotr;\n    function isIntegerShim(n5) {\n      return typeof n5 === \"number\" && isFinite(n5) && Math.floor(n5) === n5;\n    }\n    exports.isInteger = Number.isInteger || isIntegerShim;\n    exports.MAX_SAFE_INTEGER = 9007199254740991;\n    exports.isSafeInteger = function(n5) {\n      return exports.isInteger(n5) && (n5 >= -exports.MAX_SAFE_INTEGER && n5 <= exports.MAX_SAFE_INTEGER);\n    };\n  }\n});\n\n// node_modules/@stablelib/binary/lib/binary.js\nvar require_binary = __commonJS({\n  \"node_modules/@stablelib/binary/lib/binary.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var int_1 = require_int();\n    function readInt16BE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      return (array[offset + 0] << 8 | array[offset + 1]) << 16 >> 16;\n    }\n    exports.readInt16BE = readInt16BE;\n    function readUint16BE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      return (array[offset + 0] << 8 | array[offset + 1]) >>> 0;\n    }\n    exports.readUint16BE = readUint16BE;\n    function readInt16LE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      return (array[offset + 1] << 8 | array[offset]) << 16 >> 16;\n    }\n    exports.readInt16LE = readInt16LE;\n    function readUint16LE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      return (array[offset + 1] << 8 | array[offset]) >>> 0;\n    }\n    exports.readUint16LE = readUint16LE;\n    function writeUint16BE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(2);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      out[offset + 0] = value >>> 8;\n      out[offset + 1] = value >>> 0;\n      return out;\n    }\n    exports.writeUint16BE = writeUint16BE;\n    exports.writeInt16BE = writeUint16BE;\n    function writeUint16LE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(2);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      out[offset + 0] = value >>> 0;\n      out[offset + 1] = value >>> 8;\n      return out;\n    }\n    exports.writeUint16LE = writeUint16LE;\n    exports.writeInt16LE = writeUint16LE;\n    function readInt32BE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      return array[offset] << 24 | array[offset + 1] << 16 | array[offset + 2] << 8 | array[offset + 3];\n    }\n    exports.readInt32BE = readInt32BE;\n    function readUint32BE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      return (array[offset] << 24 | array[offset + 1] << 16 | array[offset + 2] << 8 | array[offset + 3]) >>> 0;\n    }\n    exports.readUint32BE = readUint32BE;\n    function readInt32LE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      return array[offset + 3] << 24 | array[offset + 2] << 16 | array[offset + 1] << 8 | array[offset];\n    }\n    exports.readInt32LE = readInt32LE;\n    function readUint32LE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      return (array[offset + 3] << 24 | array[offset + 2] << 16 | array[offset + 1] << 8 | array[offset]) >>> 0;\n    }\n    exports.readUint32LE = readUint32LE;\n    function writeUint32BE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(4);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      out[offset + 0] = value >>> 24;\n      out[offset + 1] = value >>> 16;\n      out[offset + 2] = value >>> 8;\n      out[offset + 3] = value >>> 0;\n      return out;\n    }\n    exports.writeUint32BE = writeUint32BE;\n    exports.writeInt32BE = writeUint32BE;\n    function writeUint32LE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(4);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      out[offset + 0] = value >>> 0;\n      out[offset + 1] = value >>> 8;\n      out[offset + 2] = value >>> 16;\n      out[offset + 3] = value >>> 24;\n      return out;\n    }\n    exports.writeUint32LE = writeUint32LE;\n    exports.writeInt32LE = writeUint32LE;\n    function readInt64BE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var hi2 = readInt32BE(array, offset);\n      var lo2 = readInt32BE(array, offset + 4);\n      return hi2 * 4294967296 + lo2 - (lo2 >> 31) * 4294967296;\n    }\n    exports.readInt64BE = readInt64BE;\n    function readUint64BE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var hi2 = readUint32BE(array, offset);\n      var lo2 = readUint32BE(array, offset + 4);\n      return hi2 * 4294967296 + lo2;\n    }\n    exports.readUint64BE = readUint64BE;\n    function readInt64LE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var lo2 = readInt32LE(array, offset);\n      var hi2 = readInt32LE(array, offset + 4);\n      return hi2 * 4294967296 + lo2 - (lo2 >> 31) * 4294967296;\n    }\n    exports.readInt64LE = readInt64LE;\n    function readUint64LE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var lo2 = readUint32LE(array, offset);\n      var hi2 = readUint32LE(array, offset + 4);\n      return hi2 * 4294967296 + lo2;\n    }\n    exports.readUint64LE = readUint64LE;\n    function writeUint64BE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(8);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      writeUint32BE(value / 4294967296 >>> 0, out, offset);\n      writeUint32BE(value >>> 0, out, offset + 4);\n      return out;\n    }\n    exports.writeUint64BE = writeUint64BE;\n    exports.writeInt64BE = writeUint64BE;\n    function writeUint64LE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(8);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      writeUint32LE(value >>> 0, out, offset);\n      writeUint32LE(value / 4294967296 >>> 0, out, offset + 4);\n      return out;\n    }\n    exports.writeUint64LE = writeUint64LE;\n    exports.writeInt64LE = writeUint64LE;\n    function readUintBE(bitLength, array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      if (bitLength % 8 !== 0) {\n        throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n      }\n      if (bitLength / 8 > array.length - offset) {\n        throw new Error(\"readUintBE: array is too short for the given bitLength\");\n      }\n      var result = 0;\n      var mul3 = 1;\n      for (var i4 = bitLength / 8 + offset - 1; i4 >= offset; i4--) {\n        result += array[i4] * mul3;\n        mul3 *= 256;\n      }\n      return result;\n    }\n    exports.readUintBE = readUintBE;\n    function readUintLE(bitLength, array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      if (bitLength % 8 !== 0) {\n        throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n      }\n      if (bitLength / 8 > array.length - offset) {\n        throw new Error(\"readUintLE: array is too short for the given bitLength\");\n      }\n      var result = 0;\n      var mul3 = 1;\n      for (var i4 = offset; i4 < offset + bitLength / 8; i4++) {\n        result += array[i4] * mul3;\n        mul3 *= 256;\n      }\n      return result;\n    }\n    exports.readUintLE = readUintLE;\n    function writeUintBE(bitLength, value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(bitLength / 8);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      if (bitLength % 8 !== 0) {\n        throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n      }\n      if (!int_1.isSafeInteger(value)) {\n        throw new Error(\"writeUintBE value must be an integer\");\n      }\n      var div = 1;\n      for (var i4 = bitLength / 8 + offset - 1; i4 >= offset; i4--) {\n        out[i4] = value / div & 255;\n        div *= 256;\n      }\n      return out;\n    }\n    exports.writeUintBE = writeUintBE;\n    function writeUintLE(bitLength, value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(bitLength / 8);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      if (bitLength % 8 !== 0) {\n        throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n      }\n      if (!int_1.isSafeInteger(value)) {\n        throw new Error(\"writeUintLE value must be an integer\");\n      }\n      var div = 1;\n      for (var i4 = offset; i4 < offset + bitLength / 8; i4++) {\n        out[i4] = value / div & 255;\n        div *= 256;\n      }\n      return out;\n    }\n    exports.writeUintLE = writeUintLE;\n    function readFloat32BE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n      return view.getFloat32(offset);\n    }\n    exports.readFloat32BE = readFloat32BE;\n    function readFloat32LE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n      return view.getFloat32(offset, true);\n    }\n    exports.readFloat32LE = readFloat32LE;\n    function readFloat64BE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n      return view.getFloat64(offset);\n    }\n    exports.readFloat64BE = readFloat64BE;\n    function readFloat64LE(array, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n      return view.getFloat64(offset, true);\n    }\n    exports.readFloat64LE = readFloat64LE;\n    function writeFloat32BE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(4);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n      view.setFloat32(offset, value);\n      return out;\n    }\n    exports.writeFloat32BE = writeFloat32BE;\n    function writeFloat32LE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(4);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n      view.setFloat32(offset, value, true);\n      return out;\n    }\n    exports.writeFloat32LE = writeFloat32LE;\n    function writeFloat64BE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(8);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n      view.setFloat64(offset, value);\n      return out;\n    }\n    exports.writeFloat64BE = writeFloat64BE;\n    function writeFloat64LE(value, out, offset) {\n      if (out === void 0) {\n        out = new Uint8Array(8);\n      }\n      if (offset === void 0) {\n        offset = 0;\n      }\n      var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n      view.setFloat64(offset, value, true);\n      return out;\n    }\n    exports.writeFloat64LE = writeFloat64LE;\n  }\n});\n\n// node_modules/@stablelib/wipe/lib/wipe.js\nvar require_wipe = __commonJS({\n  \"node_modules/@stablelib/wipe/lib/wipe.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function wipe(array) {\n      for (var i4 = 0; i4 < array.length; i4++) {\n        array[i4] = 0;\n      }\n      return array;\n    }\n    exports.wipe = wipe;\n  }\n});\n\n// node_modules/@stablelib/chacha/lib/chacha.js\nvar require_chacha = __commonJS({\n  \"node_modules/@stablelib/chacha/lib/chacha.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var binary_1 = require_binary();\n    var wipe_1 = require_wipe();\n    var ROUNDS = 20;\n    function core(out, input, key2) {\n      var j0 = 1634760805;\n      var j1 = 857760878;\n      var j2 = 2036477234;\n      var j3 = 1797285236;\n      var j4 = key2[3] << 24 | key2[2] << 16 | key2[1] << 8 | key2[0];\n      var j5 = key2[7] << 24 | key2[6] << 16 | key2[5] << 8 | key2[4];\n      var j6 = key2[11] << 24 | key2[10] << 16 | key2[9] << 8 | key2[8];\n      var j7 = key2[15] << 24 | key2[14] << 16 | key2[13] << 8 | key2[12];\n      var j8 = key2[19] << 24 | key2[18] << 16 | key2[17] << 8 | key2[16];\n      var j9 = key2[23] << 24 | key2[22] << 16 | key2[21] << 8 | key2[20];\n      var j10 = key2[27] << 24 | key2[26] << 16 | key2[25] << 8 | key2[24];\n      var j11 = key2[31] << 24 | key2[30] << 16 | key2[29] << 8 | key2[28];\n      var j12 = input[3] << 24 | input[2] << 16 | input[1] << 8 | input[0];\n      var j13 = input[7] << 24 | input[6] << 16 | input[5] << 8 | input[4];\n      var j14 = input[11] << 24 | input[10] << 16 | input[9] << 8 | input[8];\n      var j15 = input[15] << 24 | input[14] << 16 | input[13] << 8 | input[12];\n      var x0 = j0;\n      var x1 = j1;\n      var x22 = j2;\n      var x32 = j3;\n      var x42 = j4;\n      var x52 = j5;\n      var x6 = j6;\n      var x7 = j7;\n      var x8 = j8;\n      var x9 = j9;\n      var x10 = j10;\n      var x11 = j11;\n      var x12 = j12;\n      var x13 = j13;\n      var x14 = j14;\n      var x15 = j15;\n      for (var i4 = 0; i4 < ROUNDS; i4 += 2) {\n        x0 = x0 + x42 | 0;\n        x12 ^= x0;\n        x12 = x12 >>> 32 - 16 | x12 << 16;\n        x8 = x8 + x12 | 0;\n        x42 ^= x8;\n        x42 = x42 >>> 32 - 12 | x42 << 12;\n        x1 = x1 + x52 | 0;\n        x13 ^= x1;\n        x13 = x13 >>> 32 - 16 | x13 << 16;\n        x9 = x9 + x13 | 0;\n        x52 ^= x9;\n        x52 = x52 >>> 32 - 12 | x52 << 12;\n        x22 = x22 + x6 | 0;\n        x14 ^= x22;\n        x14 = x14 >>> 32 - 16 | x14 << 16;\n        x10 = x10 + x14 | 0;\n        x6 ^= x10;\n        x6 = x6 >>> 32 - 12 | x6 << 12;\n        x32 = x32 + x7 | 0;\n        x15 ^= x32;\n        x15 = x15 >>> 32 - 16 | x15 << 16;\n        x11 = x11 + x15 | 0;\n        x7 ^= x11;\n        x7 = x7 >>> 32 - 12 | x7 << 12;\n        x22 = x22 + x6 | 0;\n        x14 ^= x22;\n        x14 = x14 >>> 32 - 8 | x14 << 8;\n        x10 = x10 + x14 | 0;\n        x6 ^= x10;\n        x6 = x6 >>> 32 - 7 | x6 << 7;\n        x32 = x32 + x7 | 0;\n        x15 ^= x32;\n        x15 = x15 >>> 32 - 8 | x15 << 8;\n        x11 = x11 + x15 | 0;\n        x7 ^= x11;\n        x7 = x7 >>> 32 - 7 | x7 << 7;\n        x1 = x1 + x52 | 0;\n        x13 ^= x1;\n        x13 = x13 >>> 32 - 8 | x13 << 8;\n        x9 = x9 + x13 | 0;\n        x52 ^= x9;\n        x52 = x52 >>> 32 - 7 | x52 << 7;\n        x0 = x0 + x42 | 0;\n        x12 ^= x0;\n        x12 = x12 >>> 32 - 8 | x12 << 8;\n        x8 = x8 + x12 | 0;\n        x42 ^= x8;\n        x42 = x42 >>> 32 - 7 | x42 << 7;\n        x0 = x0 + x52 | 0;\n        x15 ^= x0;\n        x15 = x15 >>> 32 - 16 | x15 << 16;\n        x10 = x10 + x15 | 0;\n        x52 ^= x10;\n        x52 = x52 >>> 32 - 12 | x52 << 12;\n        x1 = x1 + x6 | 0;\n        x12 ^= x1;\n        x12 = x12 >>> 32 - 16 | x12 << 16;\n        x11 = x11 + x12 | 0;\n        x6 ^= x11;\n        x6 = x6 >>> 32 - 12 | x6 << 12;\n        x22 = x22 + x7 | 0;\n        x13 ^= x22;\n        x13 = x13 >>> 32 - 16 | x13 << 16;\n        x8 = x8 + x13 | 0;\n        x7 ^= x8;\n        x7 = x7 >>> 32 - 12 | x7 << 12;\n        x32 = x32 + x42 | 0;\n        x14 ^= x32;\n        x14 = x14 >>> 32 - 16 | x14 << 16;\n        x9 = x9 + x14 | 0;\n        x42 ^= x9;\n        x42 = x42 >>> 32 - 12 | x42 << 12;\n        x22 = x22 + x7 | 0;\n        x13 ^= x22;\n        x13 = x13 >>> 32 - 8 | x13 << 8;\n        x8 = x8 + x13 | 0;\n        x7 ^= x8;\n        x7 = x7 >>> 32 - 7 | x7 << 7;\n        x32 = x32 + x42 | 0;\n        x14 ^= x32;\n        x14 = x14 >>> 32 - 8 | x14 << 8;\n        x9 = x9 + x14 | 0;\n        x42 ^= x9;\n        x42 = x42 >>> 32 - 7 | x42 << 7;\n        x1 = x1 + x6 | 0;\n        x12 ^= x1;\n        x12 = x12 >>> 32 - 8 | x12 << 8;\n        x11 = x11 + x12 | 0;\n        x6 ^= x11;\n        x6 = x6 >>> 32 - 7 | x6 << 7;\n        x0 = x0 + x52 | 0;\n        x15 ^= x0;\n        x15 = x15 >>> 32 - 8 | x15 << 8;\n        x10 = x10 + x15 | 0;\n        x52 ^= x10;\n        x52 = x52 >>> 32 - 7 | x52 << 7;\n      }\n      binary_1.writeUint32LE(x0 + j0 | 0, out, 0);\n      binary_1.writeUint32LE(x1 + j1 | 0, out, 4);\n      binary_1.writeUint32LE(x22 + j2 | 0, out, 8);\n      binary_1.writeUint32LE(x32 + j3 | 0, out, 12);\n      binary_1.writeUint32LE(x42 + j4 | 0, out, 16);\n      binary_1.writeUint32LE(x52 + j5 | 0, out, 20);\n      binary_1.writeUint32LE(x6 + j6 | 0, out, 24);\n      binary_1.writeUint32LE(x7 + j7 | 0, out, 28);\n      binary_1.writeUint32LE(x8 + j8 | 0, out, 32);\n      binary_1.writeUint32LE(x9 + j9 | 0, out, 36);\n      binary_1.writeUint32LE(x10 + j10 | 0, out, 40);\n      binary_1.writeUint32LE(x11 + j11 | 0, out, 44);\n      binary_1.writeUint32LE(x12 + j12 | 0, out, 48);\n      binary_1.writeUint32LE(x13 + j13 | 0, out, 52);\n      binary_1.writeUint32LE(x14 + j14 | 0, out, 56);\n      binary_1.writeUint32LE(x15 + j15 | 0, out, 60);\n    }\n    function streamXOR(key2, nonce, src2, dst, nonceInplaceCounterLength) {\n      if (nonceInplaceCounterLength === void 0) {\n        nonceInplaceCounterLength = 0;\n      }\n      if (key2.length !== 32) {\n        throw new Error(\"ChaCha: key size must be 32 bytes\");\n      }\n      if (dst.length < src2.length) {\n        throw new Error(\"ChaCha: destination is shorter than source\");\n      }\n      var nc;\n      var counterLength;\n      if (nonceInplaceCounterLength === 0) {\n        if (nonce.length !== 8 && nonce.length !== 12) {\n          throw new Error(\"ChaCha nonce must be 8 or 12 bytes\");\n        }\n        nc = new Uint8Array(16);\n        counterLength = nc.length - nonce.length;\n        nc.set(nonce, counterLength);\n      } else {\n        if (nonce.length !== 16) {\n          throw new Error(\"ChaCha nonce with counter must be 16 bytes\");\n        }\n        nc = nonce;\n        counterLength = nonceInplaceCounterLength;\n      }\n      var block = new Uint8Array(64);\n      for (var i4 = 0; i4 < src2.length; i4 += 64) {\n        core(block, nc, key2);\n        for (var j2 = i4; j2 < i4 + 64 && j2 < src2.length; j2++) {\n          dst[j2] = src2[j2] ^ block[j2 - i4];\n        }\n        incrementCounter(nc, 0, counterLength);\n      }\n      wipe_1.wipe(block);\n      if (nonceInplaceCounterLength === 0) {\n        wipe_1.wipe(nc);\n      }\n      return dst;\n    }\n    exports.streamXOR = streamXOR;\n    function stream(key2, nonce, dst, nonceInplaceCounterLength) {\n      if (nonceInplaceCounterLength === void 0) {\n        nonceInplaceCounterLength = 0;\n      }\n      wipe_1.wipe(dst);\n      return streamXOR(key2, nonce, dst, dst, nonceInplaceCounterLength);\n    }\n    exports.stream = stream;\n    function incrementCounter(counter, pos, len) {\n      var carry = 1;\n      while (len--) {\n        carry = carry + (counter[pos] & 255) | 0;\n        counter[pos] = carry & 255;\n        carry >>>= 8;\n        pos++;\n      }\n      if (carry > 0) {\n        throw new Error(\"ChaCha: counter overflow\");\n      }\n    }\n  }\n});\n\n// node_modules/@stablelib/constant-time/lib/constant-time.js\nvar require_constant_time = __commonJS({\n  \"node_modules/@stablelib/constant-time/lib/constant-time.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function select(subject, resultIfOne, resultIfZero) {\n      return ~(subject - 1) & resultIfOne | subject - 1 & resultIfZero;\n    }\n    exports.select = select;\n    function lessOrEqual(a4, b5) {\n      return (a4 | 0) - (b5 | 0) - 1 >>> 31 & 1;\n    }\n    exports.lessOrEqual = lessOrEqual;\n    function compare2(a4, b5) {\n      if (a4.length !== b5.length) {\n        return 0;\n      }\n      var result = 0;\n      for (var i4 = 0; i4 < a4.length; i4++) {\n        result |= a4[i4] ^ b5[i4];\n      }\n      return 1 & result - 1 >>> 8;\n    }\n    exports.compare = compare2;\n    function equal(a4, b5) {\n      if (a4.length === 0 || b5.length === 0) {\n        return false;\n      }\n      return compare2(a4, b5) !== 0;\n    }\n    exports.equal = equal;\n  }\n});\n\n// node_modules/@stablelib/poly1305/lib/poly1305.js\nvar require_poly1305 = __commonJS({\n  \"node_modules/@stablelib/poly1305/lib/poly1305.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var constant_time_1 = require_constant_time();\n    var wipe_1 = require_wipe();\n    exports.DIGEST_LENGTH = 16;\n    var Poly1305 = (\n      /** @class */\n      function() {\n        function Poly13052(key2) {\n          this.digestLength = exports.DIGEST_LENGTH;\n          this._buffer = new Uint8Array(16);\n          this._r = new Uint16Array(10);\n          this._h = new Uint16Array(10);\n          this._pad = new Uint16Array(8);\n          this._leftover = 0;\n          this._fin = 0;\n          this._finished = false;\n          var t0 = key2[0] | key2[1] << 8;\n          this._r[0] = t0 & 8191;\n          var t1 = key2[2] | key2[3] << 8;\n          this._r[1] = (t0 >>> 13 | t1 << 3) & 8191;\n          var t2 = key2[4] | key2[5] << 8;\n          this._r[2] = (t1 >>> 10 | t2 << 6) & 7939;\n          var t3 = key2[6] | key2[7] << 8;\n          this._r[3] = (t2 >>> 7 | t3 << 9) & 8191;\n          var t4 = key2[8] | key2[9] << 8;\n          this._r[4] = (t3 >>> 4 | t4 << 12) & 255;\n          this._r[5] = t4 >>> 1 & 8190;\n          var t5 = key2[10] | key2[11] << 8;\n          this._r[6] = (t4 >>> 14 | t5 << 2) & 8191;\n          var t6 = key2[12] | key2[13] << 8;\n          this._r[7] = (t5 >>> 11 | t6 << 5) & 8065;\n          var t7 = key2[14] | key2[15] << 8;\n          this._r[8] = (t6 >>> 8 | t7 << 8) & 8191;\n          this._r[9] = t7 >>> 5 & 127;\n          this._pad[0] = key2[16] | key2[17] << 8;\n          this._pad[1] = key2[18] | key2[19] << 8;\n          this._pad[2] = key2[20] | key2[21] << 8;\n          this._pad[3] = key2[22] | key2[23] << 8;\n          this._pad[4] = key2[24] | key2[25] << 8;\n          this._pad[5] = key2[26] | key2[27] << 8;\n          this._pad[6] = key2[28] | key2[29] << 8;\n          this._pad[7] = key2[30] | key2[31] << 8;\n        }\n        Poly13052.prototype._blocks = function(m2, mpos, bytes) {\n          var hibit = this._fin ? 0 : 1 << 11;\n          var h0 = this._h[0], h1 = this._h[1], h22 = this._h[2], h32 = this._h[3], h42 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];\n          var r0 = this._r[0], r1 = this._r[1], r22 = this._r[2], r32 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];\n          while (bytes >= 16) {\n            var t0 = m2[mpos + 0] | m2[mpos + 1] << 8;\n            h0 += t0 & 8191;\n            var t1 = m2[mpos + 2] | m2[mpos + 3] << 8;\n            h1 += (t0 >>> 13 | t1 << 3) & 8191;\n            var t2 = m2[mpos + 4] | m2[mpos + 5] << 8;\n            h22 += (t1 >>> 10 | t2 << 6) & 8191;\n            var t3 = m2[mpos + 6] | m2[mpos + 7] << 8;\n            h32 += (t2 >>> 7 | t3 << 9) & 8191;\n            var t4 = m2[mpos + 8] | m2[mpos + 9] << 8;\n            h42 += (t3 >>> 4 | t4 << 12) & 8191;\n            h5 += t4 >>> 1 & 8191;\n            var t5 = m2[mpos + 10] | m2[mpos + 11] << 8;\n            h6 += (t4 >>> 14 | t5 << 2) & 8191;\n            var t6 = m2[mpos + 12] | m2[mpos + 13] << 8;\n            h7 += (t5 >>> 11 | t6 << 5) & 8191;\n            var t7 = m2[mpos + 14] | m2[mpos + 15] << 8;\n            h8 += (t6 >>> 8 | t7 << 8) & 8191;\n            h9 += t7 >>> 5 | hibit;\n            var c5 = 0;\n            var d0 = c5;\n            d0 += h0 * r0;\n            d0 += h1 * (5 * r9);\n            d0 += h22 * (5 * r8);\n            d0 += h32 * (5 * r7);\n            d0 += h42 * (5 * r6);\n            c5 = d0 >>> 13;\n            d0 &= 8191;\n            d0 += h5 * (5 * r5);\n            d0 += h6 * (5 * r4);\n            d0 += h7 * (5 * r32);\n            d0 += h8 * (5 * r22);\n            d0 += h9 * (5 * r1);\n            c5 += d0 >>> 13;\n            d0 &= 8191;\n            var d1 = c5;\n            d1 += h0 * r1;\n            d1 += h1 * r0;\n            d1 += h22 * (5 * r9);\n            d1 += h32 * (5 * r8);\n            d1 += h42 * (5 * r7);\n            c5 = d1 >>> 13;\n            d1 &= 8191;\n            d1 += h5 * (5 * r6);\n            d1 += h6 * (5 * r5);\n            d1 += h7 * (5 * r4);\n            d1 += h8 * (5 * r32);\n            d1 += h9 * (5 * r22);\n            c5 += d1 >>> 13;\n            d1 &= 8191;\n            var d22 = c5;\n            d22 += h0 * r22;\n            d22 += h1 * r1;\n            d22 += h22 * r0;\n            d22 += h32 * (5 * r9);\n            d22 += h42 * (5 * r8);\n            c5 = d22 >>> 13;\n            d22 &= 8191;\n            d22 += h5 * (5 * r7);\n            d22 += h6 * (5 * r6);\n            d22 += h7 * (5 * r5);\n            d22 += h8 * (5 * r4);\n            d22 += h9 * (5 * r32);\n            c5 += d22 >>> 13;\n            d22 &= 8191;\n            var d3 = c5;\n            d3 += h0 * r32;\n            d3 += h1 * r22;\n            d3 += h22 * r1;\n            d3 += h32 * r0;\n            d3 += h42 * (5 * r9);\n            c5 = d3 >>> 13;\n            d3 &= 8191;\n            d3 += h5 * (5 * r8);\n            d3 += h6 * (5 * r7);\n            d3 += h7 * (5 * r6);\n            d3 += h8 * (5 * r5);\n            d3 += h9 * (5 * r4);\n            c5 += d3 >>> 13;\n            d3 &= 8191;\n            var d4 = c5;\n            d4 += h0 * r4;\n            d4 += h1 * r32;\n            d4 += h22 * r22;\n            d4 += h32 * r1;\n            d4 += h42 * r0;\n            c5 = d4 >>> 13;\n            d4 &= 8191;\n            d4 += h5 * (5 * r9);\n            d4 += h6 * (5 * r8);\n            d4 += h7 * (5 * r7);\n            d4 += h8 * (5 * r6);\n            d4 += h9 * (5 * r5);\n            c5 += d4 >>> 13;\n            d4 &= 8191;\n            var d5 = c5;\n            d5 += h0 * r5;\n            d5 += h1 * r4;\n            d5 += h22 * r32;\n            d5 += h32 * r22;\n            d5 += h42 * r1;\n            c5 = d5 >>> 13;\n            d5 &= 8191;\n            d5 += h5 * r0;\n            d5 += h6 * (5 * r9);\n            d5 += h7 * (5 * r8);\n            d5 += h8 * (5 * r7);\n            d5 += h9 * (5 * r6);\n            c5 += d5 >>> 13;\n            d5 &= 8191;\n            var d6 = c5;\n            d6 += h0 * r6;\n            d6 += h1 * r5;\n            d6 += h22 * r4;\n            d6 += h32 * r32;\n            d6 += h42 * r22;\n            c5 = d6 >>> 13;\n            d6 &= 8191;\n            d6 += h5 * r1;\n            d6 += h6 * r0;\n            d6 += h7 * (5 * r9);\n            d6 += h8 * (5 * r8);\n            d6 += h9 * (5 * r7);\n            c5 += d6 >>> 13;\n            d6 &= 8191;\n            var d7 = c5;\n            d7 += h0 * r7;\n            d7 += h1 * r6;\n            d7 += h22 * r5;\n            d7 += h32 * r4;\n            d7 += h42 * r32;\n            c5 = d7 >>> 13;\n            d7 &= 8191;\n            d7 += h5 * r22;\n            d7 += h6 * r1;\n            d7 += h7 * r0;\n            d7 += h8 * (5 * r9);\n            d7 += h9 * (5 * r8);\n            c5 += d7 >>> 13;\n            d7 &= 8191;\n            var d8 = c5;\n            d8 += h0 * r8;\n            d8 += h1 * r7;\n            d8 += h22 * r6;\n            d8 += h32 * r5;\n            d8 += h42 * r4;\n            c5 = d8 >>> 13;\n            d8 &= 8191;\n            d8 += h5 * r32;\n            d8 += h6 * r22;\n            d8 += h7 * r1;\n            d8 += h8 * r0;\n            d8 += h9 * (5 * r9);\n            c5 += d8 >>> 13;\n            d8 &= 8191;\n            var d9 = c5;\n            d9 += h0 * r9;\n            d9 += h1 * r8;\n            d9 += h22 * r7;\n            d9 += h32 * r6;\n            d9 += h42 * r5;\n            c5 = d9 >>> 13;\n            d9 &= 8191;\n            d9 += h5 * r4;\n            d9 += h6 * r32;\n            d9 += h7 * r22;\n            d9 += h8 * r1;\n            d9 += h9 * r0;\n            c5 += d9 >>> 13;\n            d9 &= 8191;\n            c5 = (c5 << 2) + c5 | 0;\n            c5 = c5 + d0 | 0;\n            d0 = c5 & 8191;\n            c5 = c5 >>> 13;\n            d1 += c5;\n            h0 = d0;\n            h1 = d1;\n            h22 = d22;\n            h32 = d3;\n            h42 = d4;\n            h5 = d5;\n            h6 = d6;\n            h7 = d7;\n            h8 = d8;\n            h9 = d9;\n            mpos += 16;\n            bytes -= 16;\n          }\n          this._h[0] = h0;\n          this._h[1] = h1;\n          this._h[2] = h22;\n          this._h[3] = h32;\n          this._h[4] = h42;\n          this._h[5] = h5;\n          this._h[6] = h6;\n          this._h[7] = h7;\n          this._h[8] = h8;\n          this._h[9] = h9;\n        };\n        Poly13052.prototype.finish = function(mac, macpos) {\n          if (macpos === void 0) {\n            macpos = 0;\n          }\n          var g4 = new Uint16Array(10);\n          var c5;\n          var mask;\n          var f4;\n          var i4;\n          if (this._leftover) {\n            i4 = this._leftover;\n            this._buffer[i4++] = 1;\n            for (; i4 < 16; i4++) {\n              this._buffer[i4] = 0;\n            }\n            this._fin = 1;\n            this._blocks(this._buffer, 0, 16);\n          }\n          c5 = this._h[1] >>> 13;\n          this._h[1] &= 8191;\n          for (i4 = 2; i4 < 10; i4++) {\n            this._h[i4] += c5;\n            c5 = this._h[i4] >>> 13;\n            this._h[i4] &= 8191;\n          }\n          this._h[0] += c5 * 5;\n          c5 = this._h[0] >>> 13;\n          this._h[0] &= 8191;\n          this._h[1] += c5;\n          c5 = this._h[1] >>> 13;\n          this._h[1] &= 8191;\n          this._h[2] += c5;\n          g4[0] = this._h[0] + 5;\n          c5 = g4[0] >>> 13;\n          g4[0] &= 8191;\n          for (i4 = 1; i4 < 10; i4++) {\n            g4[i4] = this._h[i4] + c5;\n            c5 = g4[i4] >>> 13;\n            g4[i4] &= 8191;\n          }\n          g4[9] -= 1 << 13;\n          mask = (c5 ^ 1) - 1;\n          for (i4 = 0; i4 < 10; i4++) {\n            g4[i4] &= mask;\n          }\n          mask = ~mask;\n          for (i4 = 0; i4 < 10; i4++) {\n            this._h[i4] = this._h[i4] & mask | g4[i4];\n          }\n          this._h[0] = (this._h[0] | this._h[1] << 13) & 65535;\n          this._h[1] = (this._h[1] >>> 3 | this._h[2] << 10) & 65535;\n          this._h[2] = (this._h[2] >>> 6 | this._h[3] << 7) & 65535;\n          this._h[3] = (this._h[3] >>> 9 | this._h[4] << 4) & 65535;\n          this._h[4] = (this._h[4] >>> 12 | this._h[5] << 1 | this._h[6] << 14) & 65535;\n          this._h[5] = (this._h[6] >>> 2 | this._h[7] << 11) & 65535;\n          this._h[6] = (this._h[7] >>> 5 | this._h[8] << 8) & 65535;\n          this._h[7] = (this._h[8] >>> 8 | this._h[9] << 5) & 65535;\n          f4 = this._h[0] + this._pad[0];\n          this._h[0] = f4 & 65535;\n          for (i4 = 1; i4 < 8; i4++) {\n            f4 = (this._h[i4] + this._pad[i4] | 0) + (f4 >>> 16) | 0;\n            this._h[i4] = f4 & 65535;\n          }\n          mac[macpos + 0] = this._h[0] >>> 0;\n          mac[macpos + 1] = this._h[0] >>> 8;\n          mac[macpos + 2] = this._h[1] >>> 0;\n          mac[macpos + 3] = this._h[1] >>> 8;\n          mac[macpos + 4] = this._h[2] >>> 0;\n          mac[macpos + 5] = this._h[2] >>> 8;\n          mac[macpos + 6] = this._h[3] >>> 0;\n          mac[macpos + 7] = this._h[3] >>> 8;\n          mac[macpos + 8] = this._h[4] >>> 0;\n          mac[macpos + 9] = this._h[4] >>> 8;\n          mac[macpos + 10] = this._h[5] >>> 0;\n          mac[macpos + 11] = this._h[5] >>> 8;\n          mac[macpos + 12] = this._h[6] >>> 0;\n          mac[macpos + 13] = this._h[6] >>> 8;\n          mac[macpos + 14] = this._h[7] >>> 0;\n          mac[macpos + 15] = this._h[7] >>> 8;\n          this._finished = true;\n          return this;\n        };\n        Poly13052.prototype.update = function(m2) {\n          var mpos = 0;\n          var bytes = m2.length;\n          var want;\n          if (this._leftover) {\n            want = 16 - this._leftover;\n            if (want > bytes) {\n              want = bytes;\n            }\n            for (var i4 = 0; i4 < want; i4++) {\n              this._buffer[this._leftover + i4] = m2[mpos + i4];\n            }\n            bytes -= want;\n            mpos += want;\n            this._leftover += want;\n            if (this._leftover < 16) {\n              return this;\n            }\n            this._blocks(this._buffer, 0, 16);\n            this._leftover = 0;\n          }\n          if (bytes >= 16) {\n            want = bytes - bytes % 16;\n            this._blocks(m2, mpos, want);\n            mpos += want;\n            bytes -= want;\n          }\n          if (bytes) {\n            for (var i4 = 0; i4 < bytes; i4++) {\n              this._buffer[this._leftover + i4] = m2[mpos + i4];\n            }\n            this._leftover += bytes;\n          }\n          return this;\n        };\n        Poly13052.prototype.digest = function() {\n          if (this._finished) {\n            throw new Error(\"Poly1305 was finished\");\n          }\n          var mac = new Uint8Array(16);\n          this.finish(mac);\n          return mac;\n        };\n        Poly13052.prototype.clean = function() {\n          wipe_1.wipe(this._buffer);\n          wipe_1.wipe(this._r);\n          wipe_1.wipe(this._h);\n          wipe_1.wipe(this._pad);\n          this._leftover = 0;\n          this._fin = 0;\n          this._finished = true;\n          return this;\n        };\n        return Poly13052;\n      }()\n    );\n    exports.Poly1305 = Poly1305;\n    function oneTimeAuth(key2, data) {\n      var h5 = new Poly1305(key2);\n      h5.update(data);\n      var digest2 = h5.digest();\n      h5.clean();\n      return digest2;\n    }\n    exports.oneTimeAuth = oneTimeAuth;\n    function equal(a4, b5) {\n      if (a4.length !== exports.DIGEST_LENGTH || b5.length !== exports.DIGEST_LENGTH) {\n        return false;\n      }\n      return constant_time_1.equal(a4, b5);\n    }\n    exports.equal = equal;\n  }\n});\n\n// node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js\nvar require_chacha20poly1305 = __commonJS({\n  \"node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var chacha_1 = require_chacha();\n    var poly1305_1 = require_poly1305();\n    var wipe_1 = require_wipe();\n    var binary_1 = require_binary();\n    var constant_time_1 = require_constant_time();\n    exports.KEY_LENGTH = 32;\n    exports.NONCE_LENGTH = 12;\n    exports.TAG_LENGTH = 16;\n    var ZEROS = new Uint8Array(16);\n    var ChaCha20Poly1305 = (\n      /** @class */\n      function() {\n        function ChaCha20Poly13052(key2) {\n          this.nonceLength = exports.NONCE_LENGTH;\n          this.tagLength = exports.TAG_LENGTH;\n          if (key2.length !== exports.KEY_LENGTH) {\n            throw new Error(\"ChaCha20Poly1305 needs 32-byte key\");\n          }\n          this._key = new Uint8Array(key2);\n        }\n        ChaCha20Poly13052.prototype.seal = function(nonce, plaintext, associatedData, dst) {\n          if (nonce.length > 16) {\n            throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n          }\n          var counter = new Uint8Array(16);\n          counter.set(nonce, counter.length - nonce.length);\n          var authKey = new Uint8Array(32);\n          chacha_1.stream(this._key, counter, authKey, 4);\n          var resultLength = plaintext.length + this.tagLength;\n          var result;\n          if (dst) {\n            if (dst.length !== resultLength) {\n              throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n            }\n            result = dst;\n          } else {\n            result = new Uint8Array(resultLength);\n          }\n          chacha_1.streamXOR(this._key, counter, plaintext, result, 4);\n          this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n          wipe_1.wipe(counter);\n          return result;\n        };\n        ChaCha20Poly13052.prototype.open = function(nonce, sealed, associatedData, dst) {\n          if (nonce.length > 16) {\n            throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n          }\n          if (sealed.length < this.tagLength) {\n            return null;\n          }\n          var counter = new Uint8Array(16);\n          counter.set(nonce, counter.length - nonce.length);\n          var authKey = new Uint8Array(32);\n          chacha_1.stream(this._key, counter, authKey, 4);\n          var calculatedTag = new Uint8Array(this.tagLength);\n          this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n          if (!constant_time_1.equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n            return null;\n          }\n          var resultLength = sealed.length - this.tagLength;\n          var result;\n          if (dst) {\n            if (dst.length !== resultLength) {\n              throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n            }\n            result = dst;\n          } else {\n            result = new Uint8Array(resultLength);\n          }\n          chacha_1.streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n          wipe_1.wipe(counter);\n          return result;\n        };\n        ChaCha20Poly13052.prototype.clean = function() {\n          wipe_1.wipe(this._key);\n          return this;\n        };\n        ChaCha20Poly13052.prototype._authenticate = function(tagOut, authKey, ciphertext, associatedData) {\n          var h5 = new poly1305_1.Poly1305(authKey);\n          if (associatedData) {\n            h5.update(associatedData);\n            if (associatedData.length % 16 > 0) {\n              h5.update(ZEROS.subarray(associatedData.length % 16));\n            }\n          }\n          h5.update(ciphertext);\n          if (ciphertext.length % 16 > 0) {\n            h5.update(ZEROS.subarray(ciphertext.length % 16));\n          }\n          var length2 = new Uint8Array(8);\n          if (associatedData) {\n            binary_1.writeUint64LE(associatedData.length, length2);\n          }\n          h5.update(length2);\n          binary_1.writeUint64LE(ciphertext.length, length2);\n          h5.update(length2);\n          var tag = h5.digest();\n          for (var i4 = 0; i4 < tag.length; i4++) {\n            tagOut[i4] = tag[i4];\n          }\n          h5.clean();\n          wipe_1.wipe(tag);\n          wipe_1.wipe(length2);\n        };\n        return ChaCha20Poly13052;\n      }()\n    );\n    exports.ChaCha20Poly1305 = ChaCha20Poly1305;\n  }\n});\n\n// node_modules/@stablelib/hash/lib/hash.js\nvar require_hash2 = __commonJS({\n  \"node_modules/@stablelib/hash/lib/hash.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function isSerializableHash(h5) {\n      return typeof h5.saveState !== \"undefined\" && typeof h5.restoreState !== \"undefined\" && typeof h5.cleanSavedState !== \"undefined\";\n    }\n    exports.isSerializableHash = isSerializableHash;\n  }\n});\n\n// node_modules/@stablelib/hmac/lib/hmac.js\nvar require_hmac2 = __commonJS({\n  \"node_modules/@stablelib/hmac/lib/hmac.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var hash_1 = require_hash2();\n    var constant_time_1 = require_constant_time();\n    var wipe_1 = require_wipe();\n    var HMAC = (\n      /** @class */\n      function() {\n        function HMAC2(hash2, key2) {\n          this._finished = false;\n          this._inner = new hash2();\n          this._outer = new hash2();\n          this.blockSize = this._outer.blockSize;\n          this.digestLength = this._outer.digestLength;\n          var pad = new Uint8Array(this.blockSize);\n          if (key2.length > this.blockSize) {\n            this._inner.update(key2).finish(pad).clean();\n          } else {\n            pad.set(key2);\n          }\n          for (var i4 = 0; i4 < pad.length; i4++) {\n            pad[i4] ^= 54;\n          }\n          this._inner.update(pad);\n          for (var i4 = 0; i4 < pad.length; i4++) {\n            pad[i4] ^= 54 ^ 92;\n          }\n          this._outer.update(pad);\n          if (hash_1.isSerializableHash(this._inner) && hash_1.isSerializableHash(this._outer)) {\n            this._innerKeyedState = this._inner.saveState();\n            this._outerKeyedState = this._outer.saveState();\n          }\n          wipe_1.wipe(pad);\n        }\n        HMAC2.prototype.reset = function() {\n          if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n            throw new Error(\"hmac: can't reset() because hash doesn't implement restoreState()\");\n          }\n          this._inner.restoreState(this._innerKeyedState);\n          this._outer.restoreState(this._outerKeyedState);\n          this._finished = false;\n          return this;\n        };\n        HMAC2.prototype.clean = function() {\n          if (hash_1.isSerializableHash(this._inner)) {\n            this._inner.cleanSavedState(this._innerKeyedState);\n          }\n          if (hash_1.isSerializableHash(this._outer)) {\n            this._outer.cleanSavedState(this._outerKeyedState);\n          }\n          this._inner.clean();\n          this._outer.clean();\n        };\n        HMAC2.prototype.update = function(data) {\n          this._inner.update(data);\n          return this;\n        };\n        HMAC2.prototype.finish = function(out) {\n          if (this._finished) {\n            this._outer.finish(out);\n            return this;\n          }\n          this._inner.finish(out);\n          this._outer.update(out.subarray(0, this.digestLength)).finish(out);\n          this._finished = true;\n          return this;\n        };\n        HMAC2.prototype.digest = function() {\n          var out = new Uint8Array(this.digestLength);\n          this.finish(out);\n          return out;\n        };\n        HMAC2.prototype.saveState = function() {\n          if (!hash_1.isSerializableHash(this._inner)) {\n            throw new Error(\"hmac: can't saveState() because hash doesn't implement it\");\n          }\n          return this._inner.saveState();\n        };\n        HMAC2.prototype.restoreState = function(savedState) {\n          if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n            throw new Error(\"hmac: can't restoreState() because hash doesn't implement it\");\n          }\n          this._inner.restoreState(savedState);\n          this._outer.restoreState(this._outerKeyedState);\n          this._finished = false;\n          return this;\n        };\n        HMAC2.prototype.cleanSavedState = function(savedState) {\n          if (!hash_1.isSerializableHash(this._inner)) {\n            throw new Error(\"hmac: can't cleanSavedState() because hash doesn't implement it\");\n          }\n          this._inner.cleanSavedState(savedState);\n        };\n        return HMAC2;\n      }()\n    );\n    exports.HMAC = HMAC;\n    function hmac2(hash2, key2, data) {\n      var h5 = new HMAC(hash2, key2);\n      h5.update(data);\n      var digest2 = h5.digest();\n      h5.clean();\n      return digest2;\n    }\n    exports.hmac = hmac2;\n    exports.equal = constant_time_1.equal;\n  }\n});\n\n// node_modules/@stablelib/hkdf/lib/hkdf.js\nvar require_hkdf = __commonJS({\n  \"node_modules/@stablelib/hkdf/lib/hkdf.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var hmac_1 = require_hmac2();\n    var wipe_1 = require_wipe();\n    var HKDF = (\n      /** @class */\n      function() {\n        function HKDF2(hash2, key2, salt, info) {\n          if (salt === void 0) {\n            salt = new Uint8Array(0);\n          }\n          this._counter = new Uint8Array(1);\n          this._hash = hash2;\n          this._info = info;\n          var okm = hmac_1.hmac(this._hash, salt, key2);\n          this._hmac = new hmac_1.HMAC(hash2, okm);\n          this._buffer = new Uint8Array(this._hmac.digestLength);\n          this._bufpos = this._buffer.length;\n        }\n        HKDF2.prototype._fillBuffer = function() {\n          this._counter[0]++;\n          var ctr = this._counter[0];\n          if (ctr === 0) {\n            throw new Error(\"hkdf: cannot expand more\");\n          }\n          this._hmac.reset();\n          if (ctr > 1) {\n            this._hmac.update(this._buffer);\n          }\n          if (this._info) {\n            this._hmac.update(this._info);\n          }\n          this._hmac.update(this._counter);\n          this._hmac.finish(this._buffer);\n          this._bufpos = 0;\n        };\n        HKDF2.prototype.expand = function(length2) {\n          var out = new Uint8Array(length2);\n          for (var i4 = 0; i4 < out.length; i4++) {\n            if (this._bufpos === this._buffer.length) {\n              this._fillBuffer();\n            }\n            out[i4] = this._buffer[this._bufpos++];\n          }\n          return out;\n        };\n        HKDF2.prototype.clean = function() {\n          this._hmac.clean();\n          wipe_1.wipe(this._buffer);\n          wipe_1.wipe(this._counter);\n          this._bufpos = 0;\n        };\n        return HKDF2;\n      }()\n    );\n    exports.HKDF = HKDF;\n  }\n});\n\n// node_modules/@stablelib/random/lib/source/browser.js\nvar require_browser = __commonJS({\n  \"node_modules/@stablelib/random/lib/source/browser.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.BrowserRandomSource = void 0;\n    var QUOTA = 65536;\n    var BrowserRandomSource = class {\n      constructor() {\n        this.isAvailable = false;\n        this.isInstantiated = false;\n        const browserCrypto = typeof self !== \"undefined\" ? self.crypto || self.msCrypto : null;\n        if (browserCrypto && browserCrypto.getRandomValues !== void 0) {\n          this._crypto = browserCrypto;\n          this.isAvailable = true;\n          this.isInstantiated = true;\n        }\n      }\n      randomBytes(length2) {\n        if (!this.isAvailable || !this._crypto) {\n          throw new Error(\"Browser random byte generator is not available.\");\n        }\n        const out = new Uint8Array(length2);\n        for (let i4 = 0; i4 < out.length; i4 += QUOTA) {\n          this._crypto.getRandomValues(out.subarray(i4, i4 + Math.min(out.length - i4, QUOTA)));\n        }\n        return out;\n      }\n    };\n    exports.BrowserRandomSource = BrowserRandomSource;\n  }\n});\n\n// browser-external:crypto\nvar require_crypto = __commonJS({\n  \"browser-external:crypto\"(exports, module) {\n    module.exports = Object.create(new Proxy({}, {\n      get(_4, key2) {\n        if (key2 !== \"__esModule\" && key2 !== \"__proto__\" && key2 !== \"constructor\" && key2 !== \"splice\") {\n          console.warn(`Module \"crypto\" has been externalized for browser compatibility. Cannot access \"crypto.${key2}\" in client code. See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`);\n        }\n      }\n    }));\n  }\n});\n\n// node_modules/@stablelib/random/lib/source/node.js\nvar require_node = __commonJS({\n  \"node_modules/@stablelib/random/lib/source/node.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.NodeRandomSource = void 0;\n    var wipe_1 = require_wipe();\n    var NodeRandomSource = class {\n      constructor() {\n        this.isAvailable = false;\n        this.isInstantiated = false;\n        if (typeof __require !== \"undefined\") {\n          const nodeCrypto = require_crypto();\n          if (nodeCrypto && nodeCrypto.randomBytes) {\n            this._crypto = nodeCrypto;\n            this.isAvailable = true;\n            this.isInstantiated = true;\n          }\n        }\n      }\n      randomBytes(length2) {\n        if (!this.isAvailable || !this._crypto) {\n          throw new Error(\"Node.js random byte generator is not available.\");\n        }\n        let buffer = this._crypto.randomBytes(length2);\n        if (buffer.length !== length2) {\n          throw new Error(\"NodeRandomSource: got fewer bytes than requested\");\n        }\n        const out = new Uint8Array(length2);\n        for (let i4 = 0; i4 < out.length; i4++) {\n          out[i4] = buffer[i4];\n        }\n        (0, wipe_1.wipe)(buffer);\n        return out;\n      }\n    };\n    exports.NodeRandomSource = NodeRandomSource;\n  }\n});\n\n// node_modules/@stablelib/random/lib/source/system.js\nvar require_system = __commonJS({\n  \"node_modules/@stablelib/random/lib/source/system.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.SystemRandomSource = void 0;\n    var browser_1 = require_browser();\n    var node_1 = require_node();\n    var SystemRandomSource = class {\n      constructor() {\n        this.isAvailable = false;\n        this.name = \"\";\n        this._source = new browser_1.BrowserRandomSource();\n        if (this._source.isAvailable) {\n          this.isAvailable = true;\n          this.name = \"Browser\";\n          return;\n        }\n        this._source = new node_1.NodeRandomSource();\n        if (this._source.isAvailable) {\n          this.isAvailable = true;\n          this.name = \"Node\";\n          return;\n        }\n      }\n      randomBytes(length2) {\n        if (!this.isAvailable) {\n          throw new Error(\"System random byte generator is not available.\");\n        }\n        return this._source.randomBytes(length2);\n      }\n    };\n    exports.SystemRandomSource = SystemRandomSource;\n  }\n});\n\n// node_modules/@stablelib/random/lib/random.js\nvar require_random = __commonJS({\n  \"node_modules/@stablelib/random/lib/random.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.randomStringForEntropy = exports.randomString = exports.randomUint32 = exports.randomBytes = exports.defaultRandomSource = void 0;\n    var system_1 = require_system();\n    var binary_1 = require_binary();\n    var wipe_1 = require_wipe();\n    exports.defaultRandomSource = new system_1.SystemRandomSource();\n    function randomBytes2(length2, prng = exports.defaultRandomSource) {\n      return prng.randomBytes(length2);\n    }\n    exports.randomBytes = randomBytes2;\n    function randomUint32(prng = exports.defaultRandomSource) {\n      const buf = randomBytes2(4, prng);\n      const result = (0, binary_1.readUint32LE)(buf);\n      (0, wipe_1.wipe)(buf);\n      return result;\n    }\n    exports.randomUint32 = randomUint32;\n    var ALPHANUMERIC = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n    function randomString(length2, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n      if (charset.length < 2) {\n        throw new Error(\"randomString charset is too short\");\n      }\n      if (charset.length > 256) {\n        throw new Error(\"randomString charset is too long\");\n      }\n      let out = \"\";\n      const charsLen = charset.length;\n      const maxByte = 256 - 256 % charsLen;\n      while (length2 > 0) {\n        const buf = randomBytes2(Math.ceil(length2 * 256 / maxByte), prng);\n        for (let i4 = 0; i4 < buf.length && length2 > 0; i4++) {\n          const randomByte = buf[i4];\n          if (randomByte < maxByte) {\n            out += charset.charAt(randomByte % charsLen);\n            length2--;\n          }\n        }\n        (0, wipe_1.wipe)(buf);\n      }\n      return out;\n    }\n    exports.randomString = randomString;\n    function randomStringForEntropy(bits, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n      const length2 = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));\n      return randomString(length2, charset, prng);\n    }\n    exports.randomStringForEntropy = randomStringForEntropy;\n  }\n});\n\n// node_modules/@stablelib/sha256/lib/sha256.js\nvar require_sha256 = __commonJS({\n  \"node_modules/@stablelib/sha256/lib/sha256.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var binary_1 = require_binary();\n    var wipe_1 = require_wipe();\n    exports.DIGEST_LENGTH = 32;\n    exports.BLOCK_SIZE = 64;\n    var SHA256 = (\n      /** @class */\n      function() {\n        function SHA2562() {\n          this.digestLength = exports.DIGEST_LENGTH;\n          this.blockSize = exports.BLOCK_SIZE;\n          this._state = new Int32Array(8);\n          this._temp = new Int32Array(64);\n          this._buffer = new Uint8Array(128);\n          this._bufferLength = 0;\n          this._bytesHashed = 0;\n          this._finished = false;\n          this.reset();\n        }\n        SHA2562.prototype._initState = function() {\n          this._state[0] = 1779033703;\n          this._state[1] = 3144134277;\n          this._state[2] = 1013904242;\n          this._state[3] = 2773480762;\n          this._state[4] = 1359893119;\n          this._state[5] = 2600822924;\n          this._state[6] = 528734635;\n          this._state[7] = 1541459225;\n        };\n        SHA2562.prototype.reset = function() {\n          this._initState();\n          this._bufferLength = 0;\n          this._bytesHashed = 0;\n          this._finished = false;\n          return this;\n        };\n        SHA2562.prototype.clean = function() {\n          wipe_1.wipe(this._buffer);\n          wipe_1.wipe(this._temp);\n          this.reset();\n        };\n        SHA2562.prototype.update = function(data, dataLength) {\n          if (dataLength === void 0) {\n            dataLength = data.length;\n          }\n          if (this._finished) {\n            throw new Error(\"SHA256: can't update because hash was finished.\");\n          }\n          var dataPos = 0;\n          this._bytesHashed += dataLength;\n          if (this._bufferLength > 0) {\n            while (this._bufferLength < this.blockSize && dataLength > 0) {\n              this._buffer[this._bufferLength++] = data[dataPos++];\n              dataLength--;\n            }\n            if (this._bufferLength === this.blockSize) {\n              hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n              this._bufferLength = 0;\n            }\n          }\n          if (dataLength >= this.blockSize) {\n            dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n            dataLength %= this.blockSize;\n          }\n          while (dataLength > 0) {\n            this._buffer[this._bufferLength++] = data[dataPos++];\n            dataLength--;\n          }\n          return this;\n        };\n        SHA2562.prototype.finish = function(out) {\n          if (!this._finished) {\n            var bytesHashed = this._bytesHashed;\n            var left = this._bufferLength;\n            var bitLenHi = bytesHashed / 536870912 | 0;\n            var bitLenLo = bytesHashed << 3;\n            var padLength = bytesHashed % 64 < 56 ? 64 : 128;\n            this._buffer[left] = 128;\n            for (var i4 = left + 1; i4 < padLength - 8; i4++) {\n              this._buffer[i4] = 0;\n            }\n            binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n            binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n            hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n            this._finished = true;\n          }\n          for (var i4 = 0; i4 < this.digestLength / 4; i4++) {\n            binary_1.writeUint32BE(this._state[i4], out, i4 * 4);\n          }\n          return this;\n        };\n        SHA2562.prototype.digest = function() {\n          var out = new Uint8Array(this.digestLength);\n          this.finish(out);\n          return out;\n        };\n        SHA2562.prototype.saveState = function() {\n          if (this._finished) {\n            throw new Error(\"SHA256: cannot save finished state\");\n          }\n          return {\n            state: new Int32Array(this._state),\n            buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : void 0,\n            bufferLength: this._bufferLength,\n            bytesHashed: this._bytesHashed\n          };\n        };\n        SHA2562.prototype.restoreState = function(savedState) {\n          this._state.set(savedState.state);\n          this._bufferLength = savedState.bufferLength;\n          if (savedState.buffer) {\n            this._buffer.set(savedState.buffer);\n          }\n          this._bytesHashed = savedState.bytesHashed;\n          this._finished = false;\n          return this;\n        };\n        SHA2562.prototype.cleanSavedState = function(savedState) {\n          wipe_1.wipe(savedState.state);\n          if (savedState.buffer) {\n            wipe_1.wipe(savedState.buffer);\n          }\n          savedState.bufferLength = 0;\n          savedState.bytesHashed = 0;\n        };\n        return SHA2562;\n      }()\n    );\n    exports.SHA256 = SHA256;\n    var K3 = new Int32Array([\n      1116352408,\n      1899447441,\n      3049323471,\n      3921009573,\n      961987163,\n      1508970993,\n      2453635748,\n      2870763221,\n      3624381080,\n      310598401,\n      607225278,\n      1426881987,\n      1925078388,\n      2162078206,\n      2614888103,\n      3248222580,\n      3835390401,\n      4022224774,\n      264347078,\n      604807628,\n      770255983,\n      1249150122,\n      1555081692,\n      1996064986,\n      2554220882,\n      2821834349,\n      2952996808,\n      3210313671,\n      3336571891,\n      3584528711,\n      113926993,\n      338241895,\n      666307205,\n      773529912,\n      1294757372,\n      1396182291,\n      1695183700,\n      1986661051,\n      2177026350,\n      2456956037,\n      2730485921,\n      2820302411,\n      3259730800,\n      3345764771,\n      3516065817,\n      3600352804,\n      4094571909,\n      275423344,\n      430227734,\n      506948616,\n      659060556,\n      883997877,\n      958139571,\n      1322822218,\n      1537002063,\n      1747873779,\n      1955562222,\n      2024104815,\n      2227730452,\n      2361852424,\n      2428436474,\n      2756734187,\n      3204031479,\n      3329325298\n    ]);\n    function hashBlocks(w4, v5, p3, pos, len) {\n      while (len >= 64) {\n        var a4 = v5[0];\n        var b5 = v5[1];\n        var c5 = v5[2];\n        var d3 = v5[3];\n        var e2 = v5[4];\n        var f4 = v5[5];\n        var g4 = v5[6];\n        var h5 = v5[7];\n        for (var i4 = 0; i4 < 16; i4++) {\n          var j2 = pos + i4 * 4;\n          w4[i4] = binary_1.readUint32BE(p3, j2);\n        }\n        for (var i4 = 16; i4 < 64; i4++) {\n          var u3 = w4[i4 - 2];\n          var t1 = (u3 >>> 17 | u3 << 32 - 17) ^ (u3 >>> 19 | u3 << 32 - 19) ^ u3 >>> 10;\n          u3 = w4[i4 - 15];\n          var t2 = (u3 >>> 7 | u3 << 32 - 7) ^ (u3 >>> 18 | u3 << 32 - 18) ^ u3 >>> 3;\n          w4[i4] = (t1 + w4[i4 - 7] | 0) + (t2 + w4[i4 - 16] | 0);\n        }\n        for (var i4 = 0; i4 < 64; i4++) {\n          var t1 = (((e2 >>> 6 | e2 << 32 - 6) ^ (e2 >>> 11 | e2 << 32 - 11) ^ (e2 >>> 25 | e2 << 32 - 25)) + (e2 & f4 ^ ~e2 & g4) | 0) + (h5 + (K3[i4] + w4[i4] | 0) | 0) | 0;\n          var t2 = ((a4 >>> 2 | a4 << 32 - 2) ^ (a4 >>> 13 | a4 << 32 - 13) ^ (a4 >>> 22 | a4 << 32 - 22)) + (a4 & b5 ^ a4 & c5 ^ b5 & c5) | 0;\n          h5 = g4;\n          g4 = f4;\n          f4 = e2;\n          e2 = d3 + t1 | 0;\n          d3 = c5;\n          c5 = b5;\n          b5 = a4;\n          a4 = t1 + t2 | 0;\n        }\n        v5[0] += a4;\n        v5[1] += b5;\n        v5[2] += c5;\n        v5[3] += d3;\n        v5[4] += e2;\n        v5[5] += f4;\n        v5[6] += g4;\n        v5[7] += h5;\n        pos += 64;\n        len -= 64;\n      }\n      return pos;\n    }\n    function hash2(data) {\n      var h5 = new SHA256();\n      h5.update(data);\n      var digest2 = h5.digest();\n      h5.clean();\n      return digest2;\n    }\n    exports.hash = hash2;\n  }\n});\n\n// node_modules/@stablelib/x25519/lib/x25519.js\nvar require_x25519 = __commonJS({\n  \"node_modules/@stablelib/x25519/lib/x25519.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.sharedKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.scalarMultBase = exports.scalarMult = exports.SHARED_KEY_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = void 0;\n    var random_1 = require_random();\n    var wipe_1 = require_wipe();\n    exports.PUBLIC_KEY_LENGTH = 32;\n    exports.SECRET_KEY_LENGTH = 32;\n    exports.SHARED_KEY_LENGTH = 32;\n    function gf(init2) {\n      const r4 = new Float64Array(16);\n      if (init2) {\n        for (let i4 = 0; i4 < init2.length; i4++) {\n          r4[i4] = init2[i4];\n        }\n      }\n      return r4;\n    }\n    var _9 = new Uint8Array(32);\n    _9[0] = 9;\n    var _121665 = gf([56129, 1]);\n    function car25519(o4) {\n      let c5 = 1;\n      for (let i4 = 0; i4 < 16; i4++) {\n        let v5 = o4[i4] + c5 + 65535;\n        c5 = Math.floor(v5 / 65536);\n        o4[i4] = v5 - c5 * 65536;\n      }\n      o4[0] += c5 - 1 + 37 * (c5 - 1);\n    }\n    function sel25519(p3, q3, b5) {\n      const c5 = ~(b5 - 1);\n      for (let i4 = 0; i4 < 16; i4++) {\n        const t = c5 & (p3[i4] ^ q3[i4]);\n        p3[i4] ^= t;\n        q3[i4] ^= t;\n      }\n    }\n    function pack25519(o4, n5) {\n      const m2 = gf();\n      const t = gf();\n      for (let i4 = 0; i4 < 16; i4++) {\n        t[i4] = n5[i4];\n      }\n      car25519(t);\n      car25519(t);\n      car25519(t);\n      for (let j2 = 0; j2 < 2; j2++) {\n        m2[0] = t[0] - 65517;\n        for (let i4 = 1; i4 < 15; i4++) {\n          m2[i4] = t[i4] - 65535 - (m2[i4 - 1] >> 16 & 1);\n          m2[i4 - 1] &= 65535;\n        }\n        m2[15] = t[15] - 32767 - (m2[14] >> 16 & 1);\n        const b5 = m2[15] >> 16 & 1;\n        m2[14] &= 65535;\n        sel25519(t, m2, 1 - b5);\n      }\n      for (let i4 = 0; i4 < 16; i4++) {\n        o4[2 * i4] = t[i4] & 255;\n        o4[2 * i4 + 1] = t[i4] >> 8;\n      }\n    }\n    function unpack25519(o4, n5) {\n      for (let i4 = 0; i4 < 16; i4++) {\n        o4[i4] = n5[2 * i4] + (n5[2 * i4 + 1] << 8);\n      }\n      o4[15] &= 32767;\n    }\n    function add3(o4, a4, b5) {\n      for (let i4 = 0; i4 < 16; i4++) {\n        o4[i4] = a4[i4] + b5[i4];\n      }\n    }\n    function sub(o4, a4, b5) {\n      for (let i4 = 0; i4 < 16; i4++) {\n        o4[i4] = a4[i4] - b5[i4];\n      }\n    }\n    function mul3(o4, a4, b5) {\n      let v5, c5, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b5[0], b1 = b5[1], b22 = b5[2], b32 = b5[3], b42 = b5[4], b52 = b5[5], b6 = b5[6], b7 = b5[7], b8 = b5[8], b9 = b5[9], b10 = b5[10], b11 = b5[11], b12 = b5[12], b13 = b5[13], b14 = b5[14], b15 = b5[15];\n      v5 = a4[0];\n      t0 += v5 * b0;\n      t1 += v5 * b1;\n      t2 += v5 * b22;\n      t3 += v5 * b32;\n      t4 += v5 * b42;\n      t5 += v5 * b52;\n      t6 += v5 * b6;\n      t7 += v5 * b7;\n      t8 += v5 * b8;\n      t9 += v5 * b9;\n      t10 += v5 * b10;\n      t11 += v5 * b11;\n      t12 += v5 * b12;\n      t13 += v5 * b13;\n      t14 += v5 * b14;\n      t15 += v5 * b15;\n      v5 = a4[1];\n      t1 += v5 * b0;\n      t2 += v5 * b1;\n      t3 += v5 * b22;\n      t4 += v5 * b32;\n      t5 += v5 * b42;\n      t6 += v5 * b52;\n      t7 += v5 * b6;\n      t8 += v5 * b7;\n      t9 += v5 * b8;\n      t10 += v5 * b9;\n      t11 += v5 * b10;\n      t12 += v5 * b11;\n      t13 += v5 * b12;\n      t14 += v5 * b13;\n      t15 += v5 * b14;\n      t16 += v5 * b15;\n      v5 = a4[2];\n      t2 += v5 * b0;\n      t3 += v5 * b1;\n      t4 += v5 * b22;\n      t5 += v5 * b32;\n      t6 += v5 * b42;\n      t7 += v5 * b52;\n      t8 += v5 * b6;\n      t9 += v5 * b7;\n      t10 += v5 * b8;\n      t11 += v5 * b9;\n      t12 += v5 * b10;\n      t13 += v5 * b11;\n      t14 += v5 * b12;\n      t15 += v5 * b13;\n      t16 += v5 * b14;\n      t17 += v5 * b15;\n      v5 = a4[3];\n      t3 += v5 * b0;\n      t4 += v5 * b1;\n      t5 += v5 * b22;\n      t6 += v5 * b32;\n      t7 += v5 * b42;\n      t8 += v5 * b52;\n      t9 += v5 * b6;\n      t10 += v5 * b7;\n      t11 += v5 * b8;\n      t12 += v5 * b9;\n      t13 += v5 * b10;\n      t14 += v5 * b11;\n      t15 += v5 * b12;\n      t16 += v5 * b13;\n      t17 += v5 * b14;\n      t18 += v5 * b15;\n      v5 = a4[4];\n      t4 += v5 * b0;\n      t5 += v5 * b1;\n      t6 += v5 * b22;\n      t7 += v5 * b32;\n      t8 += v5 * b42;\n      t9 += v5 * b52;\n      t10 += v5 * b6;\n      t11 += v5 * b7;\n      t12 += v5 * b8;\n      t13 += v5 * b9;\n      t14 += v5 * b10;\n      t15 += v5 * b11;\n      t16 += v5 * b12;\n      t17 += v5 * b13;\n      t18 += v5 * b14;\n      t19 += v5 * b15;\n      v5 = a4[5];\n      t5 += v5 * b0;\n      t6 += v5 * b1;\n      t7 += v5 * b22;\n      t8 += v5 * b32;\n      t9 += v5 * b42;\n      t10 += v5 * b52;\n      t11 += v5 * b6;\n      t12 += v5 * b7;\n      t13 += v5 * b8;\n      t14 += v5 * b9;\n      t15 += v5 * b10;\n      t16 += v5 * b11;\n      t17 += v5 * b12;\n      t18 += v5 * b13;\n      t19 += v5 * b14;\n      t20 += v5 * b15;\n      v5 = a4[6];\n      t6 += v5 * b0;\n      t7 += v5 * b1;\n      t8 += v5 * b22;\n      t9 += v5 * b32;\n      t10 += v5 * b42;\n      t11 += v5 * b52;\n      t12 += v5 * b6;\n      t13 += v5 * b7;\n      t14 += v5 * b8;\n      t15 += v5 * b9;\n      t16 += v5 * b10;\n      t17 += v5 * b11;\n      t18 += v5 * b12;\n      t19 += v5 * b13;\n      t20 += v5 * b14;\n      t21 += v5 * b15;\n      v5 = a4[7];\n      t7 += v5 * b0;\n      t8 += v5 * b1;\n      t9 += v5 * b22;\n      t10 += v5 * b32;\n      t11 += v5 * b42;\n      t12 += v5 * b52;\n      t13 += v5 * b6;\n      t14 += v5 * b7;\n      t15 += v5 * b8;\n      t16 += v5 * b9;\n      t17 += v5 * b10;\n      t18 += v5 * b11;\n      t19 += v5 * b12;\n      t20 += v5 * b13;\n      t21 += v5 * b14;\n      t22 += v5 * b15;\n      v5 = a4[8];\n      t8 += v5 * b0;\n      t9 += v5 * b1;\n      t10 += v5 * b22;\n      t11 += v5 * b32;\n      t12 += v5 * b42;\n      t13 += v5 * b52;\n      t14 += v5 * b6;\n      t15 += v5 * b7;\n      t16 += v5 * b8;\n      t17 += v5 * b9;\n      t18 += v5 * b10;\n      t19 += v5 * b11;\n      t20 += v5 * b12;\n      t21 += v5 * b13;\n      t22 += v5 * b14;\n      t23 += v5 * b15;\n      v5 = a4[9];\n      t9 += v5 * b0;\n      t10 += v5 * b1;\n      t11 += v5 * b22;\n      t12 += v5 * b32;\n      t13 += v5 * b42;\n      t14 += v5 * b52;\n      t15 += v5 * b6;\n      t16 += v5 * b7;\n      t17 += v5 * b8;\n      t18 += v5 * b9;\n      t19 += v5 * b10;\n      t20 += v5 * b11;\n      t21 += v5 * b12;\n      t22 += v5 * b13;\n      t23 += v5 * b14;\n      t24 += v5 * b15;\n      v5 = a4[10];\n      t10 += v5 * b0;\n      t11 += v5 * b1;\n      t12 += v5 * b22;\n      t13 += v5 * b32;\n      t14 += v5 * b42;\n      t15 += v5 * b52;\n      t16 += v5 * b6;\n      t17 += v5 * b7;\n      t18 += v5 * b8;\n      t19 += v5 * b9;\n      t20 += v5 * b10;\n      t21 += v5 * b11;\n      t22 += v5 * b12;\n      t23 += v5 * b13;\n      t24 += v5 * b14;\n      t25 += v5 * b15;\n      v5 = a4[11];\n      t11 += v5 * b0;\n      t12 += v5 * b1;\n      t13 += v5 * b22;\n      t14 += v5 * b32;\n      t15 += v5 * b42;\n      t16 += v5 * b52;\n      t17 += v5 * b6;\n      t18 += v5 * b7;\n      t19 += v5 * b8;\n      t20 += v5 * b9;\n      t21 += v5 * b10;\n      t22 += v5 * b11;\n      t23 += v5 * b12;\n      t24 += v5 * b13;\n      t25 += v5 * b14;\n      t26 += v5 * b15;\n      v5 = a4[12];\n      t12 += v5 * b0;\n      t13 += v5 * b1;\n      t14 += v5 * b22;\n      t15 += v5 * b32;\n      t16 += v5 * b42;\n      t17 += v5 * b52;\n      t18 += v5 * b6;\n      t19 += v5 * b7;\n      t20 += v5 * b8;\n      t21 += v5 * b9;\n      t22 += v5 * b10;\n      t23 += v5 * b11;\n      t24 += v5 * b12;\n      t25 += v5 * b13;\n      t26 += v5 * b14;\n      t27 += v5 * b15;\n      v5 = a4[13];\n      t13 += v5 * b0;\n      t14 += v5 * b1;\n      t15 += v5 * b22;\n      t16 += v5 * b32;\n      t17 += v5 * b42;\n      t18 += v5 * b52;\n      t19 += v5 * b6;\n      t20 += v5 * b7;\n      t21 += v5 * b8;\n      t22 += v5 * b9;\n      t23 += v5 * b10;\n      t24 += v5 * b11;\n      t25 += v5 * b12;\n      t26 += v5 * b13;\n      t27 += v5 * b14;\n      t28 += v5 * b15;\n      v5 = a4[14];\n      t14 += v5 * b0;\n      t15 += v5 * b1;\n      t16 += v5 * b22;\n      t17 += v5 * b32;\n      t18 += v5 * b42;\n      t19 += v5 * b52;\n      t20 += v5 * b6;\n      t21 += v5 * b7;\n      t22 += v5 * b8;\n      t23 += v5 * b9;\n      t24 += v5 * b10;\n      t25 += v5 * b11;\n      t26 += v5 * b12;\n      t27 += v5 * b13;\n      t28 += v5 * b14;\n      t29 += v5 * b15;\n      v5 = a4[15];\n      t15 += v5 * b0;\n      t16 += v5 * b1;\n      t17 += v5 * b22;\n      t18 += v5 * b32;\n      t19 += v5 * b42;\n      t20 += v5 * b52;\n      t21 += v5 * b6;\n      t22 += v5 * b7;\n      t23 += v5 * b8;\n      t24 += v5 * b9;\n      t25 += v5 * b10;\n      t26 += v5 * b11;\n      t27 += v5 * b12;\n      t28 += v5 * b13;\n      t29 += v5 * b14;\n      t30 += v5 * b15;\n      t0 += 38 * t16;\n      t1 += 38 * t17;\n      t2 += 38 * t18;\n      t3 += 38 * t19;\n      t4 += 38 * t20;\n      t5 += 38 * t21;\n      t6 += 38 * t22;\n      t7 += 38 * t23;\n      t8 += 38 * t24;\n      t9 += 38 * t25;\n      t10 += 38 * t26;\n      t11 += 38 * t27;\n      t12 += 38 * t28;\n      t13 += 38 * t29;\n      t14 += 38 * t30;\n      c5 = 1;\n      v5 = t0 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t0 = v5 - c5 * 65536;\n      v5 = t1 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t1 = v5 - c5 * 65536;\n      v5 = t2 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t2 = v5 - c5 * 65536;\n      v5 = t3 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t3 = v5 - c5 * 65536;\n      v5 = t4 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t4 = v5 - c5 * 65536;\n      v5 = t5 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t5 = v5 - c5 * 65536;\n      v5 = t6 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t6 = v5 - c5 * 65536;\n      v5 = t7 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t7 = v5 - c5 * 65536;\n      v5 = t8 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t8 = v5 - c5 * 65536;\n      v5 = t9 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t9 = v5 - c5 * 65536;\n      v5 = t10 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t10 = v5 - c5 * 65536;\n      v5 = t11 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t11 = v5 - c5 * 65536;\n      v5 = t12 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t12 = v5 - c5 * 65536;\n      v5 = t13 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t13 = v5 - c5 * 65536;\n      v5 = t14 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t14 = v5 - c5 * 65536;\n      v5 = t15 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t15 = v5 - c5 * 65536;\n      t0 += c5 - 1 + 37 * (c5 - 1);\n      c5 = 1;\n      v5 = t0 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t0 = v5 - c5 * 65536;\n      v5 = t1 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t1 = v5 - c5 * 65536;\n      v5 = t2 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t2 = v5 - c5 * 65536;\n      v5 = t3 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t3 = v5 - c5 * 65536;\n      v5 = t4 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t4 = v5 - c5 * 65536;\n      v5 = t5 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t5 = v5 - c5 * 65536;\n      v5 = t6 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t6 = v5 - c5 * 65536;\n      v5 = t7 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t7 = v5 - c5 * 65536;\n      v5 = t8 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t8 = v5 - c5 * 65536;\n      v5 = t9 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t9 = v5 - c5 * 65536;\n      v5 = t10 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t10 = v5 - c5 * 65536;\n      v5 = t11 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t11 = v5 - c5 * 65536;\n      v5 = t12 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t12 = v5 - c5 * 65536;\n      v5 = t13 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t13 = v5 - c5 * 65536;\n      v5 = t14 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t14 = v5 - c5 * 65536;\n      v5 = t15 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t15 = v5 - c5 * 65536;\n      t0 += c5 - 1 + 37 * (c5 - 1);\n      o4[0] = t0;\n      o4[1] = t1;\n      o4[2] = t2;\n      o4[3] = t3;\n      o4[4] = t4;\n      o4[5] = t5;\n      o4[6] = t6;\n      o4[7] = t7;\n      o4[8] = t8;\n      o4[9] = t9;\n      o4[10] = t10;\n      o4[11] = t11;\n      o4[12] = t12;\n      o4[13] = t13;\n      o4[14] = t14;\n      o4[15] = t15;\n    }\n    function square(o4, a4) {\n      mul3(o4, a4, a4);\n    }\n    function inv25519(o4, inp) {\n      const c5 = gf();\n      for (let i4 = 0; i4 < 16; i4++) {\n        c5[i4] = inp[i4];\n      }\n      for (let i4 = 253; i4 >= 0; i4--) {\n        square(c5, c5);\n        if (i4 !== 2 && i4 !== 4) {\n          mul3(c5, c5, inp);\n        }\n      }\n      for (let i4 = 0; i4 < 16; i4++) {\n        o4[i4] = c5[i4];\n      }\n    }\n    function scalarMult(n5, p3) {\n      const z6 = new Uint8Array(32);\n      const x6 = new Float64Array(80);\n      const a4 = gf(), b5 = gf(), c5 = gf(), d3 = gf(), e2 = gf(), f4 = gf();\n      for (let i4 = 0; i4 < 31; i4++) {\n        z6[i4] = n5[i4];\n      }\n      z6[31] = n5[31] & 127 | 64;\n      z6[0] &= 248;\n      unpack25519(x6, p3);\n      for (let i4 = 0; i4 < 16; i4++) {\n        b5[i4] = x6[i4];\n      }\n      a4[0] = d3[0] = 1;\n      for (let i4 = 254; i4 >= 0; --i4) {\n        const r4 = z6[i4 >>> 3] >>> (i4 & 7) & 1;\n        sel25519(a4, b5, r4);\n        sel25519(c5, d3, r4);\n        add3(e2, a4, c5);\n        sub(a4, a4, c5);\n        add3(c5, b5, d3);\n        sub(b5, b5, d3);\n        square(d3, e2);\n        square(f4, a4);\n        mul3(a4, c5, a4);\n        mul3(c5, b5, e2);\n        add3(e2, a4, c5);\n        sub(a4, a4, c5);\n        square(b5, a4);\n        sub(c5, d3, f4);\n        mul3(a4, c5, _121665);\n        add3(a4, a4, d3);\n        mul3(c5, c5, a4);\n        mul3(a4, d3, f4);\n        mul3(d3, b5, x6);\n        square(b5, e2);\n        sel25519(a4, b5, r4);\n        sel25519(c5, d3, r4);\n      }\n      for (let i4 = 0; i4 < 16; i4++) {\n        x6[i4 + 16] = a4[i4];\n        x6[i4 + 32] = c5[i4];\n        x6[i4 + 48] = b5[i4];\n        x6[i4 + 64] = d3[i4];\n      }\n      const x32 = x6.subarray(32);\n      const x16 = x6.subarray(16);\n      inv25519(x32, x32);\n      mul3(x16, x16, x32);\n      const q3 = new Uint8Array(32);\n      pack25519(q3, x16);\n      return q3;\n    }\n    exports.scalarMult = scalarMult;\n    function scalarMultBase(n5) {\n      return scalarMult(n5, _9);\n    }\n    exports.scalarMultBase = scalarMultBase;\n    function generateKeyPairFromSeed2(seed) {\n      if (seed.length !== exports.SECRET_KEY_LENGTH) {\n        throw new Error(`x25519: seed must be ${exports.SECRET_KEY_LENGTH} bytes`);\n      }\n      const secretKey = new Uint8Array(seed);\n      const publicKey = scalarMultBase(secretKey);\n      return {\n        publicKey,\n        secretKey\n      };\n    }\n    exports.generateKeyPairFromSeed = generateKeyPairFromSeed2;\n    function generateKeyPair3(prng) {\n      const seed = (0, random_1.randomBytes)(32, prng);\n      const result = generateKeyPairFromSeed2(seed);\n      (0, wipe_1.wipe)(seed);\n      return result;\n    }\n    exports.generateKeyPair = generateKeyPair3;\n    function sharedKey2(mySecretKey, theirPublicKey, rejectZero = false) {\n      if (mySecretKey.length !== exports.PUBLIC_KEY_LENGTH) {\n        throw new Error(\"X25519: incorrect secret key length\");\n      }\n      if (theirPublicKey.length !== exports.PUBLIC_KEY_LENGTH) {\n        throw new Error(\"X25519: incorrect public key length\");\n      }\n      const result = scalarMult(mySecretKey, theirPublicKey);\n      if (rejectZero) {\n        let zeros2 = 0;\n        for (let i4 = 0; i4 < result.length; i4++) {\n          zeros2 |= result[i4];\n        }\n        if (zeros2 === 0) {\n          throw new Error(\"X25519: invalid shared key\");\n        }\n      }\n      return result;\n    }\n    exports.sharedKey = sharedKey2;\n  }\n});\n\n// node_modules/elliptic/package.json\nvar require_package = __commonJS({\n  \"node_modules/elliptic/package.json\"(exports, module) {\n    module.exports = {\n      name: \"elliptic\",\n      version: \"6.6.0\",\n      description: \"EC cryptography\",\n      main: \"lib/elliptic.js\",\n      files: [\n        \"lib\"\n      ],\n      scripts: {\n        lint: \"eslint lib test\",\n        \"lint:fix\": \"npm run lint -- --fix\",\n        unit: \"istanbul test _mocha --reporter=spec test/index.js\",\n        test: \"npm run lint && npm run unit\",\n        version: \"grunt dist && git add dist/\"\n      },\n      repository: {\n        type: \"git\",\n        url: \"git@github.com:indutny/elliptic\"\n      },\n      keywords: [\n        \"EC\",\n        \"Elliptic\",\n        \"curve\",\n        \"Cryptography\"\n      ],\n      author: \"Fedor Indutny <fedor@indutny.com>\",\n      license: \"MIT\",\n      bugs: {\n        url: \"https://github.com/indutny/elliptic/issues\"\n      },\n      homepage: \"https://github.com/indutny/elliptic\",\n      devDependencies: {\n        brfs: \"^2.0.2\",\n        coveralls: \"^3.1.0\",\n        eslint: \"^7.6.0\",\n        grunt: \"^1.2.1\",\n        \"grunt-browserify\": \"^5.3.0\",\n        \"grunt-cli\": \"^1.3.2\",\n        \"grunt-contrib-connect\": \"^3.0.0\",\n        \"grunt-contrib-copy\": \"^1.0.0\",\n        \"grunt-contrib-uglify\": \"^5.0.0\",\n        \"grunt-mocha-istanbul\": \"^5.0.2\",\n        \"grunt-saucelabs\": \"^9.0.1\",\n        istanbul: \"^0.4.5\",\n        mocha: \"^8.0.1\"\n      },\n      dependencies: {\n        \"bn.js\": \"^4.11.9\",\n        brorand: \"^1.1.0\",\n        \"hash.js\": \"^1.0.0\",\n        \"hmac-drbg\": \"^1.0.1\",\n        inherits: \"^2.0.4\",\n        \"minimalistic-assert\": \"^1.0.1\",\n        \"minimalistic-crypto-utils\": \"^1.0.1\"\n      }\n    };\n  }\n});\n\n// node_modules/elliptic/node_modules/bn.js/lib/bn.js\nvar require_bn2 = __commonJS({\n  \"node_modules/elliptic/node_modules/bn.js/lib/bn.js\"(exports, module) {\n    (function(module2, exports2) {\n      \"use strict\";\n      function assert2(val, msg) {\n        if (!val)\n          throw new Error(msg || \"Assertion failed\");\n      }\n      function inherits(ctor, superCtor) {\n        ctor.super_ = superCtor;\n        var TempCtor = function() {\n        };\n        TempCtor.prototype = superCtor.prototype;\n        ctor.prototype = new TempCtor();\n        ctor.prototype.constructor = ctor;\n      }\n      function BN3(number, base3, endian) {\n        if (BN3.isBN(number)) {\n          return number;\n        }\n        this.negative = 0;\n        this.words = null;\n        this.length = 0;\n        this.red = null;\n        if (number !== null) {\n          if (base3 === \"le\" || base3 === \"be\") {\n            endian = base3;\n            base3 = 10;\n          }\n          this._init(number || 0, base3 || 10, endian || \"be\");\n        }\n      }\n      if (typeof module2 === \"object\") {\n        module2.exports = BN3;\n      } else {\n        exports2.BN = BN3;\n      }\n      BN3.BN = BN3;\n      BN3.wordSize = 26;\n      var Buffer2;\n      try {\n        if (typeof window !== \"undefined\" && typeof window.Buffer !== \"undefined\") {\n          Buffer2 = window.Buffer;\n        } else {\n          Buffer2 = require_buffer().Buffer;\n        }\n      } catch (e2) {\n      }\n      BN3.isBN = function isBN(num) {\n        if (num instanceof BN3) {\n          return true;\n        }\n        return num !== null && typeof num === \"object\" && num.constructor.wordSize === BN3.wordSize && Array.isArray(num.words);\n      };\n      BN3.max = function max(left, right) {\n        if (left.cmp(right) > 0)\n          return left;\n        return right;\n      };\n      BN3.min = function min(left, right) {\n        if (left.cmp(right) < 0)\n          return left;\n        return right;\n      };\n      BN3.prototype._init = function init2(number, base3, endian) {\n        if (typeof number === \"number\") {\n          return this._initNumber(number, base3, endian);\n        }\n        if (typeof number === \"object\") {\n          return this._initArray(number, base3, endian);\n        }\n        if (base3 === \"hex\") {\n          base3 = 16;\n        }\n        assert2(base3 === (base3 | 0) && base3 >= 2 && base3 <= 36);\n        number = number.toString().replace(/\\s+/g, \"\");\n        var start = 0;\n        if (number[0] === \"-\") {\n          start++;\n          this.negative = 1;\n        }\n        if (start < number.length) {\n          if (base3 === 16) {\n            this._parseHex(number, start, endian);\n          } else {\n            this._parseBase(number, base3, start);\n            if (endian === \"le\") {\n              this._initArray(this.toArray(), base3, endian);\n            }\n          }\n        }\n      };\n      BN3.prototype._initNumber = function _initNumber(number, base3, endian) {\n        if (number < 0) {\n          this.negative = 1;\n          number = -number;\n        }\n        if (number < 67108864) {\n          this.words = [number & 67108863];\n          this.length = 1;\n        } else if (number < 4503599627370496) {\n          this.words = [\n            number & 67108863,\n            number / 67108864 & 67108863\n          ];\n          this.length = 2;\n        } else {\n          assert2(number < 9007199254740992);\n          this.words = [\n            number & 67108863,\n            number / 67108864 & 67108863,\n            1\n          ];\n          this.length = 3;\n        }\n        if (endian !== \"le\")\n          return;\n        this._initArray(this.toArray(), base3, endian);\n      };\n      BN3.prototype._initArray = function _initArray(number, base3, endian) {\n        assert2(typeof number.length === \"number\");\n        if (number.length <= 0) {\n          this.words = [0];\n          this.length = 1;\n          return this;\n        }\n        this.length = Math.ceil(number.length / 3);\n        this.words = new Array(this.length);\n        for (var i4 = 0; i4 < this.length; i4++) {\n          this.words[i4] = 0;\n        }\n        var j2, w4;\n        var off = 0;\n        if (endian === \"be\") {\n          for (i4 = number.length - 1, j2 = 0; i4 >= 0; i4 -= 3) {\n            w4 = number[i4] | number[i4 - 1] << 8 | number[i4 - 2] << 16;\n            this.words[j2] |= w4 << off & 67108863;\n            this.words[j2 + 1] = w4 >>> 26 - off & 67108863;\n            off += 24;\n            if (off >= 26) {\n              off -= 26;\n              j2++;\n            }\n          }\n        } else if (endian === \"le\") {\n          for (i4 = 0, j2 = 0; i4 < number.length; i4 += 3) {\n            w4 = number[i4] | number[i4 + 1] << 8 | number[i4 + 2] << 16;\n            this.words[j2] |= w4 << off & 67108863;\n            this.words[j2 + 1] = w4 >>> 26 - off & 67108863;\n            off += 24;\n            if (off >= 26) {\n              off -= 26;\n              j2++;\n            }\n          }\n        }\n        return this.strip();\n      };\n      function parseHex4Bits(string2, index) {\n        var c5 = string2.charCodeAt(index);\n        if (c5 >= 65 && c5 <= 70) {\n          return c5 - 55;\n        } else if (c5 >= 97 && c5 <= 102) {\n          return c5 - 87;\n        } else {\n          return c5 - 48 & 15;\n        }\n      }\n      function parseHexByte(string2, lowerBound, index) {\n        var r4 = parseHex4Bits(string2, index);\n        if (index - 1 >= lowerBound) {\n          r4 |= parseHex4Bits(string2, index - 1) << 4;\n        }\n        return r4;\n      }\n      BN3.prototype._parseHex = function _parseHex(number, start, endian) {\n        this.length = Math.ceil((number.length - start) / 6);\n        this.words = new Array(this.length);\n        for (var i4 = 0; i4 < this.length; i4++) {\n          this.words[i4] = 0;\n        }\n        var off = 0;\n        var j2 = 0;\n        var w4;\n        if (endian === \"be\") {\n          for (i4 = number.length - 1; i4 >= start; i4 -= 2) {\n            w4 = parseHexByte(number, start, i4) << off;\n            this.words[j2] |= w4 & 67108863;\n            if (off >= 18) {\n              off -= 18;\n              j2 += 1;\n              this.words[j2] |= w4 >>> 26;\n            } else {\n              off += 8;\n            }\n          }\n        } else {\n          var parseLength = number.length - start;\n          for (i4 = parseLength % 2 === 0 ? start + 1 : start; i4 < number.length; i4 += 2) {\n            w4 = parseHexByte(number, start, i4) << off;\n            this.words[j2] |= w4 & 67108863;\n            if (off >= 18) {\n              off -= 18;\n              j2 += 1;\n              this.words[j2] |= w4 >>> 26;\n            } else {\n              off += 8;\n            }\n          }\n        }\n        this.strip();\n      };\n      function parseBase(str, start, end, mul3) {\n        var r4 = 0;\n        var len = Math.min(str.length, end);\n        for (var i4 = start; i4 < len; i4++) {\n          var c5 = str.charCodeAt(i4) - 48;\n          r4 *= mul3;\n          if (c5 >= 49) {\n            r4 += c5 - 49 + 10;\n          } else if (c5 >= 17) {\n            r4 += c5 - 17 + 10;\n          } else {\n            r4 += c5;\n          }\n        }\n        return r4;\n      }\n      BN3.prototype._parseBase = function _parseBase(number, base3, start) {\n        this.words = [0];\n        this.length = 1;\n        for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base3) {\n          limbLen++;\n        }\n        limbLen--;\n        limbPow = limbPow / base3 | 0;\n        var total = number.length - start;\n        var mod = total % limbLen;\n        var end = Math.min(total, total - mod) + start;\n        var word = 0;\n        for (var i4 = start; i4 < end; i4 += limbLen) {\n          word = parseBase(number, i4, i4 + limbLen, base3);\n          this.imuln(limbPow);\n          if (this.words[0] + word < 67108864) {\n            this.words[0] += word;\n          } else {\n            this._iaddn(word);\n          }\n        }\n        if (mod !== 0) {\n          var pow = 1;\n          word = parseBase(number, i4, number.length, base3);\n          for (i4 = 0; i4 < mod; i4++) {\n            pow *= base3;\n          }\n          this.imuln(pow);\n          if (this.words[0] + word < 67108864) {\n            this.words[0] += word;\n          } else {\n            this._iaddn(word);\n          }\n        }\n        this.strip();\n      };\n      BN3.prototype.copy = function copy(dest) {\n        dest.words = new Array(this.length);\n        for (var i4 = 0; i4 < this.length; i4++) {\n          dest.words[i4] = this.words[i4];\n        }\n        dest.length = this.length;\n        dest.negative = this.negative;\n        dest.red = this.red;\n      };\n      BN3.prototype.clone = function clone() {\n        var r4 = new BN3(null);\n        this.copy(r4);\n        return r4;\n      };\n      BN3.prototype._expand = function _expand(size) {\n        while (this.length < size) {\n          this.words[this.length++] = 0;\n        }\n        return this;\n      };\n      BN3.prototype.strip = function strip() {\n        while (this.length > 1 && this.words[this.length - 1] === 0) {\n          this.length--;\n        }\n        return this._normSign();\n      };\n      BN3.prototype._normSign = function _normSign() {\n        if (this.length === 1 && this.words[0] === 0) {\n          this.negative = 0;\n        }\n        return this;\n      };\n      BN3.prototype.inspect = function inspect4() {\n        return (this.red ? \"<BN-R: \" : \"<BN: \") + this.toString(16) + \">\";\n      };\n      var zeros2 = [\n        \"\",\n        \"0\",\n        \"00\",\n        \"000\",\n        \"0000\",\n        \"00000\",\n        \"000000\",\n        \"0000000\",\n        \"00000000\",\n        \"000000000\",\n        \"0000000000\",\n        \"00000000000\",\n        \"000000000000\",\n        \"0000000000000\",\n        \"00000000000000\",\n        \"000000000000000\",\n        \"0000000000000000\",\n        \"00000000000000000\",\n        \"000000000000000000\",\n        \"0000000000000000000\",\n        \"00000000000000000000\",\n        \"000000000000000000000\",\n        \"0000000000000000000000\",\n        \"00000000000000000000000\",\n        \"000000000000000000000000\",\n        \"0000000000000000000000000\"\n      ];\n      var groupSizes = [\n        0,\n        0,\n        25,\n        16,\n        12,\n        11,\n        10,\n        9,\n        8,\n        8,\n        7,\n        7,\n        7,\n        7,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        6,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5,\n        5\n      ];\n      var groupBases = [\n        0,\n        0,\n        33554432,\n        43046721,\n        16777216,\n        48828125,\n        60466176,\n        40353607,\n        16777216,\n        43046721,\n        1e7,\n        19487171,\n        35831808,\n        62748517,\n        7529536,\n        11390625,\n        16777216,\n        24137569,\n        34012224,\n        47045881,\n        64e6,\n        4084101,\n        5153632,\n        6436343,\n        7962624,\n        9765625,\n        11881376,\n        14348907,\n        17210368,\n        20511149,\n        243e5,\n        28629151,\n        33554432,\n        39135393,\n        45435424,\n        52521875,\n        60466176\n      ];\n      BN3.prototype.toString = function toString3(base3, padding2) {\n        base3 = base3 || 10;\n        padding2 = padding2 | 0 || 1;\n        var out;\n        if (base3 === 16 || base3 === \"hex\") {\n          out = \"\";\n          var off = 0;\n          var carry = 0;\n          for (var i4 = 0; i4 < this.length; i4++) {\n            var w4 = this.words[i4];\n            var word = ((w4 << off | carry) & 16777215).toString(16);\n            carry = w4 >>> 24 - off & 16777215;\n            off += 2;\n            if (off >= 26) {\n              off -= 26;\n              i4--;\n            }\n            if (carry !== 0 || i4 !== this.length - 1) {\n              out = zeros2[6 - word.length] + word + out;\n            } else {\n              out = word + out;\n            }\n          }\n          if (carry !== 0) {\n            out = carry.toString(16) + out;\n          }\n          while (out.length % padding2 !== 0) {\n            out = \"0\" + out;\n          }\n          if (this.negative !== 0) {\n            out = \"-\" + out;\n          }\n          return out;\n        }\n        if (base3 === (base3 | 0) && base3 >= 2 && base3 <= 36) {\n          var groupSize = groupSizes[base3];\n          var groupBase = groupBases[base3];\n          out = \"\";\n          var c5 = this.clone();\n          c5.negative = 0;\n          while (!c5.isZero()) {\n            var r4 = c5.modn(groupBase).toString(base3);\n            c5 = c5.idivn(groupBase);\n            if (!c5.isZero()) {\n              out = zeros2[groupSize - r4.length] + r4 + out;\n            } else {\n              out = r4 + out;\n            }\n          }\n          if (this.isZero()) {\n            out = \"0\" + out;\n          }\n          while (out.length % padding2 !== 0) {\n            out = \"0\" + out;\n          }\n          if (this.negative !== 0) {\n            out = \"-\" + out;\n          }\n          return out;\n        }\n        assert2(false, \"Base should be between 2 and 36\");\n      };\n      BN3.prototype.toNumber = function toNumber() {\n        var ret = this.words[0];\n        if (this.length === 2) {\n          ret += this.words[1] * 67108864;\n        } else if (this.length === 3 && this.words[2] === 1) {\n          ret += 4503599627370496 + this.words[1] * 67108864;\n        } else if (this.length > 2) {\n          assert2(false, \"Number can only safely store up to 53 bits\");\n        }\n        return this.negative !== 0 ? -ret : ret;\n      };\n      BN3.prototype.toJSON = function toJSON2() {\n        return this.toString(16);\n      };\n      BN3.prototype.toBuffer = function toBuffer(endian, length2) {\n        assert2(typeof Buffer2 !== \"undefined\");\n        return this.toArrayLike(Buffer2, endian, length2);\n      };\n      BN3.prototype.toArray = function toArray(endian, length2) {\n        return this.toArrayLike(Array, endian, length2);\n      };\n      BN3.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length2) {\n        var byteLength = this.byteLength();\n        var reqLength = length2 || Math.max(1, byteLength);\n        assert2(byteLength <= reqLength, \"byte array longer than desired length\");\n        assert2(reqLength > 0, \"Requested array length <= 0\");\n        this.strip();\n        var littleEndian = endian === \"le\";\n        var res = new ArrayType(reqLength);\n        var b5, i4;\n        var q3 = this.clone();\n        if (!littleEndian) {\n          for (i4 = 0; i4 < reqLength - byteLength; i4++) {\n            res[i4] = 0;\n          }\n          for (i4 = 0; !q3.isZero(); i4++) {\n            b5 = q3.andln(255);\n            q3.iushrn(8);\n            res[reqLength - i4 - 1] = b5;\n          }\n        } else {\n          for (i4 = 0; !q3.isZero(); i4++) {\n            b5 = q3.andln(255);\n            q3.iushrn(8);\n            res[i4] = b5;\n          }\n          for (; i4 < reqLength; i4++) {\n            res[i4] = 0;\n          }\n        }\n        return res;\n      };\n      if (Math.clz32) {\n        BN3.prototype._countBits = function _countBits(w4) {\n          return 32 - Math.clz32(w4);\n        };\n      } else {\n        BN3.prototype._countBits = function _countBits(w4) {\n          var t = w4;\n          var r4 = 0;\n          if (t >= 4096) {\n            r4 += 13;\n            t >>>= 13;\n          }\n          if (t >= 64) {\n            r4 += 7;\n            t >>>= 7;\n          }\n          if (t >= 8) {\n            r4 += 4;\n            t >>>= 4;\n          }\n          if (t >= 2) {\n            r4 += 2;\n            t >>>= 2;\n          }\n          return r4 + t;\n        };\n      }\n      BN3.prototype._zeroBits = function _zeroBits(w4) {\n        if (w4 === 0)\n          return 26;\n        var t = w4;\n        var r4 = 0;\n        if ((t & 8191) === 0) {\n          r4 += 13;\n          t >>>= 13;\n        }\n        if ((t & 127) === 0) {\n          r4 += 7;\n          t >>>= 7;\n        }\n        if ((t & 15) === 0) {\n          r4 += 4;\n          t >>>= 4;\n        }\n        if ((t & 3) === 0) {\n          r4 += 2;\n          t >>>= 2;\n        }\n        if ((t & 1) === 0) {\n          r4++;\n        }\n        return r4;\n      };\n      BN3.prototype.bitLength = function bitLength() {\n        var w4 = this.words[this.length - 1];\n        var hi2 = this._countBits(w4);\n        return (this.length - 1) * 26 + hi2;\n      };\n      function toBitArray(num) {\n        var w4 = new Array(num.bitLength());\n        for (var bit = 0; bit < w4.length; bit++) {\n          var off = bit / 26 | 0;\n          var wbit = bit % 26;\n          w4[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n        }\n        return w4;\n      }\n      BN3.prototype.zeroBits = function zeroBits() {\n        if (this.isZero())\n          return 0;\n        var r4 = 0;\n        for (var i4 = 0; i4 < this.length; i4++) {\n          var b5 = this._zeroBits(this.words[i4]);\n          r4 += b5;\n          if (b5 !== 26)\n            break;\n        }\n        return r4;\n      };\n      BN3.prototype.byteLength = function byteLength() {\n        return Math.ceil(this.bitLength() / 8);\n      };\n      BN3.prototype.toTwos = function toTwos(width) {\n        if (this.negative !== 0) {\n          return this.abs().inotn(width).iaddn(1);\n        }\n        return this.clone();\n      };\n      BN3.prototype.fromTwos = function fromTwos(width) {\n        if (this.testn(width - 1)) {\n          return this.notn(width).iaddn(1).ineg();\n        }\n        return this.clone();\n      };\n      BN3.prototype.isNeg = function isNeg() {\n        return this.negative !== 0;\n      };\n      BN3.prototype.neg = function neg3() {\n        return this.clone().ineg();\n      };\n      BN3.prototype.ineg = function ineg() {\n        if (!this.isZero()) {\n          this.negative ^= 1;\n        }\n        return this;\n      };\n      BN3.prototype.iuor = function iuor(num) {\n        while (this.length < num.length) {\n          this.words[this.length++] = 0;\n        }\n        for (var i4 = 0; i4 < num.length; i4++) {\n          this.words[i4] = this.words[i4] | num.words[i4];\n        }\n        return this.strip();\n      };\n      BN3.prototype.ior = function ior(num) {\n        assert2((this.negative | num.negative) === 0);\n        return this.iuor(num);\n      };\n      BN3.prototype.or = function or3(num) {\n        if (this.length > num.length)\n          return this.clone().ior(num);\n        return num.clone().ior(this);\n      };\n      BN3.prototype.uor = function uor(num) {\n        if (this.length > num.length)\n          return this.clone().iuor(num);\n        return num.clone().iuor(this);\n      };\n      BN3.prototype.iuand = function iuand(num) {\n        var b5;\n        if (this.length > num.length) {\n          b5 = num;\n        } else {\n          b5 = this;\n        }\n        for (var i4 = 0; i4 < b5.length; i4++) {\n          this.words[i4] = this.words[i4] & num.words[i4];\n        }\n        this.length = b5.length;\n        return this.strip();\n      };\n      BN3.prototype.iand = function iand(num) {\n        assert2((this.negative | num.negative) === 0);\n        return this.iuand(num);\n      };\n      BN3.prototype.and = function and(num) {\n        if (this.length > num.length)\n          return this.clone().iand(num);\n        return num.clone().iand(this);\n      };\n      BN3.prototype.uand = function uand(num) {\n        if (this.length > num.length)\n          return this.clone().iuand(num);\n        return num.clone().iuand(this);\n      };\n      BN3.prototype.iuxor = function iuxor(num) {\n        var a4;\n        var b5;\n        if (this.length > num.length) {\n          a4 = this;\n          b5 = num;\n        } else {\n          a4 = num;\n          b5 = this;\n        }\n        for (var i4 = 0; i4 < b5.length; i4++) {\n          this.words[i4] = a4.words[i4] ^ b5.words[i4];\n        }\n        if (this !== a4) {\n          for (; i4 < a4.length; i4++) {\n            this.words[i4] = a4.words[i4];\n          }\n        }\n        this.length = a4.length;\n        return this.strip();\n      };\n      BN3.prototype.ixor = function ixor(num) {\n        assert2((this.negative | num.negative) === 0);\n        return this.iuxor(num);\n      };\n      BN3.prototype.xor = function xor2(num) {\n        if (this.length > num.length)\n          return this.clone().ixor(num);\n        return num.clone().ixor(this);\n      };\n      BN3.prototype.uxor = function uxor(num) {\n        if (this.length > num.length)\n          return this.clone().iuxor(num);\n        return num.clone().iuxor(this);\n      };\n      BN3.prototype.inotn = function inotn(width) {\n        assert2(typeof width === \"number\" && width >= 0);\n        var bytesNeeded = Math.ceil(width / 26) | 0;\n        var bitsLeft = width % 26;\n        this._expand(bytesNeeded);\n        if (bitsLeft > 0) {\n          bytesNeeded--;\n        }\n        for (var i4 = 0; i4 < bytesNeeded; i4++) {\n          this.words[i4] = ~this.words[i4] & 67108863;\n        }\n        if (bitsLeft > 0) {\n          this.words[i4] = ~this.words[i4] & 67108863 >> 26 - bitsLeft;\n        }\n        return this.strip();\n      };\n      BN3.prototype.notn = function notn(width) {\n        return this.clone().inotn(width);\n      };\n      BN3.prototype.setn = function setn(bit, val) {\n        assert2(typeof bit === \"number\" && bit >= 0);\n        var off = bit / 26 | 0;\n        var wbit = bit % 26;\n        this._expand(off + 1);\n        if (val) {\n          this.words[off] = this.words[off] | 1 << wbit;\n        } else {\n          this.words[off] = this.words[off] & ~(1 << wbit);\n        }\n        return this.strip();\n      };\n      BN3.prototype.iadd = function iadd(num) {\n        var r4;\n        if (this.negative !== 0 && num.negative === 0) {\n          this.negative = 0;\n          r4 = this.isub(num);\n          this.negative ^= 1;\n          return this._normSign();\n        } else if (this.negative === 0 && num.negative !== 0) {\n          num.negative = 0;\n          r4 = this.isub(num);\n          num.negative = 1;\n          return r4._normSign();\n        }\n        var a4, b5;\n        if (this.length > num.length) {\n          a4 = this;\n          b5 = num;\n        } else {\n          a4 = num;\n          b5 = this;\n        }\n        var carry = 0;\n        for (var i4 = 0; i4 < b5.length; i4++) {\n          r4 = (a4.words[i4] | 0) + (b5.words[i4] | 0) + carry;\n          this.words[i4] = r4 & 67108863;\n          carry = r4 >>> 26;\n        }\n        for (; carry !== 0 && i4 < a4.length; i4++) {\n          r4 = (a4.words[i4] | 0) + carry;\n          this.words[i4] = r4 & 67108863;\n          carry = r4 >>> 26;\n        }\n        this.length = a4.length;\n        if (carry !== 0) {\n          this.words[this.length] = carry;\n          this.length++;\n        } else if (a4 !== this) {\n          for (; i4 < a4.length; i4++) {\n            this.words[i4] = a4.words[i4];\n          }\n        }\n        return this;\n      };\n      BN3.prototype.add = function add3(num) {\n        var res;\n        if (num.negative !== 0 && this.negative === 0) {\n          num.negative = 0;\n          res = this.sub(num);\n          num.negative ^= 1;\n          return res;\n        } else if (num.negative === 0 && this.negative !== 0) {\n          this.negative = 0;\n          res = num.sub(this);\n          this.negative = 1;\n          return res;\n        }\n        if (this.length > num.length)\n          return this.clone().iadd(num);\n        return num.clone().iadd(this);\n      };\n      BN3.prototype.isub = function isub(num) {\n        if (num.negative !== 0) {\n          num.negative = 0;\n          var r4 = this.iadd(num);\n          num.negative = 1;\n          return r4._normSign();\n        } else if (this.negative !== 0) {\n          this.negative = 0;\n          this.iadd(num);\n          this.negative = 1;\n          return this._normSign();\n        }\n        var cmp = this.cmp(num);\n        if (cmp === 0) {\n          this.negative = 0;\n          this.length = 1;\n          this.words[0] = 0;\n          return this;\n        }\n        var a4, b5;\n        if (cmp > 0) {\n          a4 = this;\n          b5 = num;\n        } else {\n          a4 = num;\n          b5 = this;\n        }\n        var carry = 0;\n        for (var i4 = 0; i4 < b5.length; i4++) {\n          r4 = (a4.words[i4] | 0) - (b5.words[i4] | 0) + carry;\n          carry = r4 >> 26;\n          this.words[i4] = r4 & 67108863;\n        }\n        for (; carry !== 0 && i4 < a4.length; i4++) {\n          r4 = (a4.words[i4] | 0) + carry;\n          carry = r4 >> 26;\n          this.words[i4] = r4 & 67108863;\n        }\n        if (carry === 0 && i4 < a4.length && a4 !== this) {\n          for (; i4 < a4.length; i4++) {\n            this.words[i4] = a4.words[i4];\n          }\n        }\n        this.length = Math.max(this.length, i4);\n        if (a4 !== this) {\n          this.negative = 1;\n        }\n        return this.strip();\n      };\n      BN3.prototype.sub = function sub(num) {\n        return this.clone().isub(num);\n      };\n      function smallMulTo(self2, num, out) {\n        out.negative = num.negative ^ self2.negative;\n        var len = self2.length + num.length | 0;\n        out.length = len;\n        len = len - 1 | 0;\n        var a4 = self2.words[0] | 0;\n        var b5 = num.words[0] | 0;\n        var r4 = a4 * b5;\n        var lo2 = r4 & 67108863;\n        var carry = r4 / 67108864 | 0;\n        out.words[0] = lo2;\n        for (var k4 = 1; k4 < len; k4++) {\n          var ncarry = carry >>> 26;\n          var rword = carry & 67108863;\n          var maxJ = Math.min(k4, num.length - 1);\n          for (var j2 = Math.max(0, k4 - self2.length + 1); j2 <= maxJ; j2++) {\n            var i4 = k4 - j2 | 0;\n            a4 = self2.words[i4] | 0;\n            b5 = num.words[j2] | 0;\n            r4 = a4 * b5 + rword;\n            ncarry += r4 / 67108864 | 0;\n            rword = r4 & 67108863;\n          }\n          out.words[k4] = rword | 0;\n          carry = ncarry | 0;\n        }\n        if (carry !== 0) {\n          out.words[k4] = carry | 0;\n        } else {\n          out.length--;\n        }\n        return out.strip();\n      }\n      var comb10MulTo = function comb10MulTo2(self2, num, out) {\n        var a4 = self2.words;\n        var b5 = num.words;\n        var o4 = out.words;\n        var c5 = 0;\n        var lo2;\n        var mid;\n        var hi2;\n        var a0 = a4[0] | 0;\n        var al0 = a0 & 8191;\n        var ah0 = a0 >>> 13;\n        var a1 = a4[1] | 0;\n        var al1 = a1 & 8191;\n        var ah1 = a1 >>> 13;\n        var a22 = a4[2] | 0;\n        var al2 = a22 & 8191;\n        var ah2 = a22 >>> 13;\n        var a32 = a4[3] | 0;\n        var al3 = a32 & 8191;\n        var ah3 = a32 >>> 13;\n        var a42 = a4[4] | 0;\n        var al4 = a42 & 8191;\n        var ah4 = a42 >>> 13;\n        var a5 = a4[5] | 0;\n        var al5 = a5 & 8191;\n        var ah5 = a5 >>> 13;\n        var a6 = a4[6] | 0;\n        var al6 = a6 & 8191;\n        var ah6 = a6 >>> 13;\n        var a7 = a4[7] | 0;\n        var al7 = a7 & 8191;\n        var ah7 = a7 >>> 13;\n        var a8 = a4[8] | 0;\n        var al8 = a8 & 8191;\n        var ah8 = a8 >>> 13;\n        var a9 = a4[9] | 0;\n        var al9 = a9 & 8191;\n        var ah9 = a9 >>> 13;\n        var b0 = b5[0] | 0;\n        var bl0 = b0 & 8191;\n        var bh0 = b0 >>> 13;\n        var b1 = b5[1] | 0;\n        var bl1 = b1 & 8191;\n        var bh1 = b1 >>> 13;\n        var b22 = b5[2] | 0;\n        var bl2 = b22 & 8191;\n        var bh2 = b22 >>> 13;\n        var b32 = b5[3] | 0;\n        var bl3 = b32 & 8191;\n        var bh3 = b32 >>> 13;\n        var b42 = b5[4] | 0;\n        var bl4 = b42 & 8191;\n        var bh4 = b42 >>> 13;\n        var b52 = b5[5] | 0;\n        var bl5 = b52 & 8191;\n        var bh5 = b52 >>> 13;\n        var b6 = b5[6] | 0;\n        var bl6 = b6 & 8191;\n        var bh6 = b6 >>> 13;\n        var b7 = b5[7] | 0;\n        var bl7 = b7 & 8191;\n        var bh7 = b7 >>> 13;\n        var b8 = b5[8] | 0;\n        var bl8 = b8 & 8191;\n        var bh8 = b8 >>> 13;\n        var b9 = b5[9] | 0;\n        var bl9 = b9 & 8191;\n        var bh9 = b9 >>> 13;\n        out.negative = self2.negative ^ num.negative;\n        out.length = 19;\n        lo2 = Math.imul(al0, bl0);\n        mid = Math.imul(al0, bh0);\n        mid = mid + Math.imul(ah0, bl0) | 0;\n        hi2 = Math.imul(ah0, bh0);\n        var w0 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n        w0 &= 67108863;\n        lo2 = Math.imul(al1, bl0);\n        mid = Math.imul(al1, bh0);\n        mid = mid + Math.imul(ah1, bl0) | 0;\n        hi2 = Math.imul(ah1, bh0);\n        lo2 = lo2 + Math.imul(al0, bl1) | 0;\n        mid = mid + Math.imul(al0, bh1) | 0;\n        mid = mid + Math.imul(ah0, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh1) | 0;\n        var w1 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n        w1 &= 67108863;\n        lo2 = Math.imul(al2, bl0);\n        mid = Math.imul(al2, bh0);\n        mid = mid + Math.imul(ah2, bl0) | 0;\n        hi2 = Math.imul(ah2, bh0);\n        lo2 = lo2 + Math.imul(al1, bl1) | 0;\n        mid = mid + Math.imul(al1, bh1) | 0;\n        mid = mid + Math.imul(ah1, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh1) | 0;\n        lo2 = lo2 + Math.imul(al0, bl2) | 0;\n        mid = mid + Math.imul(al0, bh2) | 0;\n        mid = mid + Math.imul(ah0, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh2) | 0;\n        var w22 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w22 >>> 26) | 0;\n        w22 &= 67108863;\n        lo2 = Math.imul(al3, bl0);\n        mid = Math.imul(al3, bh0);\n        mid = mid + Math.imul(ah3, bl0) | 0;\n        hi2 = Math.imul(ah3, bh0);\n        lo2 = lo2 + Math.imul(al2, bl1) | 0;\n        mid = mid + Math.imul(al2, bh1) | 0;\n        mid = mid + Math.imul(ah2, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh1) | 0;\n        lo2 = lo2 + Math.imul(al1, bl2) | 0;\n        mid = mid + Math.imul(al1, bh2) | 0;\n        mid = mid + Math.imul(ah1, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh2) | 0;\n        lo2 = lo2 + Math.imul(al0, bl3) | 0;\n        mid = mid + Math.imul(al0, bh3) | 0;\n        mid = mid + Math.imul(ah0, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh3) | 0;\n        var w32 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w32 >>> 26) | 0;\n        w32 &= 67108863;\n        lo2 = Math.imul(al4, bl0);\n        mid = Math.imul(al4, bh0);\n        mid = mid + Math.imul(ah4, bl0) | 0;\n        hi2 = Math.imul(ah4, bh0);\n        lo2 = lo2 + Math.imul(al3, bl1) | 0;\n        mid = mid + Math.imul(al3, bh1) | 0;\n        mid = mid + Math.imul(ah3, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh1) | 0;\n        lo2 = lo2 + Math.imul(al2, bl2) | 0;\n        mid = mid + Math.imul(al2, bh2) | 0;\n        mid = mid + Math.imul(ah2, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh2) | 0;\n        lo2 = lo2 + Math.imul(al1, bl3) | 0;\n        mid = mid + Math.imul(al1, bh3) | 0;\n        mid = mid + Math.imul(ah1, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh3) | 0;\n        lo2 = lo2 + Math.imul(al0, bl4) | 0;\n        mid = mid + Math.imul(al0, bh4) | 0;\n        mid = mid + Math.imul(ah0, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh4) | 0;\n        var w4 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n        w4 &= 67108863;\n        lo2 = Math.imul(al5, bl0);\n        mid = Math.imul(al5, bh0);\n        mid = mid + Math.imul(ah5, bl0) | 0;\n        hi2 = Math.imul(ah5, bh0);\n        lo2 = lo2 + Math.imul(al4, bl1) | 0;\n        mid = mid + Math.imul(al4, bh1) | 0;\n        mid = mid + Math.imul(ah4, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh1) | 0;\n        lo2 = lo2 + Math.imul(al3, bl2) | 0;\n        mid = mid + Math.imul(al3, bh2) | 0;\n        mid = mid + Math.imul(ah3, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh2) | 0;\n        lo2 = lo2 + Math.imul(al2, bl3) | 0;\n        mid = mid + Math.imul(al2, bh3) | 0;\n        mid = mid + Math.imul(ah2, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh3) | 0;\n        lo2 = lo2 + Math.imul(al1, bl4) | 0;\n        mid = mid + Math.imul(al1, bh4) | 0;\n        mid = mid + Math.imul(ah1, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh4) | 0;\n        lo2 = lo2 + Math.imul(al0, bl5) | 0;\n        mid = mid + Math.imul(al0, bh5) | 0;\n        mid = mid + Math.imul(ah0, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh5) | 0;\n        var w5 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n        w5 &= 67108863;\n        lo2 = Math.imul(al6, bl0);\n        mid = Math.imul(al6, bh0);\n        mid = mid + Math.imul(ah6, bl0) | 0;\n        hi2 = Math.imul(ah6, bh0);\n        lo2 = lo2 + Math.imul(al5, bl1) | 0;\n        mid = mid + Math.imul(al5, bh1) | 0;\n        mid = mid + Math.imul(ah5, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh1) | 0;\n        lo2 = lo2 + Math.imul(al4, bl2) | 0;\n        mid = mid + Math.imul(al4, bh2) | 0;\n        mid = mid + Math.imul(ah4, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh2) | 0;\n        lo2 = lo2 + Math.imul(al3, bl3) | 0;\n        mid = mid + Math.imul(al3, bh3) | 0;\n        mid = mid + Math.imul(ah3, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh3) | 0;\n        lo2 = lo2 + Math.imul(al2, bl4) | 0;\n        mid = mid + Math.imul(al2, bh4) | 0;\n        mid = mid + Math.imul(ah2, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh4) | 0;\n        lo2 = lo2 + Math.imul(al1, bl5) | 0;\n        mid = mid + Math.imul(al1, bh5) | 0;\n        mid = mid + Math.imul(ah1, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh5) | 0;\n        lo2 = lo2 + Math.imul(al0, bl6) | 0;\n        mid = mid + Math.imul(al0, bh6) | 0;\n        mid = mid + Math.imul(ah0, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh6) | 0;\n        var w6 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n        w6 &= 67108863;\n        lo2 = Math.imul(al7, bl0);\n        mid = Math.imul(al7, bh0);\n        mid = mid + Math.imul(ah7, bl0) | 0;\n        hi2 = Math.imul(ah7, bh0);\n        lo2 = lo2 + Math.imul(al6, bl1) | 0;\n        mid = mid + Math.imul(al6, bh1) | 0;\n        mid = mid + Math.imul(ah6, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh1) | 0;\n        lo2 = lo2 + Math.imul(al5, bl2) | 0;\n        mid = mid + Math.imul(al5, bh2) | 0;\n        mid = mid + Math.imul(ah5, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh2) | 0;\n        lo2 = lo2 + Math.imul(al4, bl3) | 0;\n        mid = mid + Math.imul(al4, bh3) | 0;\n        mid = mid + Math.imul(ah4, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh3) | 0;\n        lo2 = lo2 + Math.imul(al3, bl4) | 0;\n        mid = mid + Math.imul(al3, bh4) | 0;\n        mid = mid + Math.imul(ah3, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh4) | 0;\n        lo2 = lo2 + Math.imul(al2, bl5) | 0;\n        mid = mid + Math.imul(al2, bh5) | 0;\n        mid = mid + Math.imul(ah2, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh5) | 0;\n        lo2 = lo2 + Math.imul(al1, bl6) | 0;\n        mid = mid + Math.imul(al1, bh6) | 0;\n        mid = mid + Math.imul(ah1, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh6) | 0;\n        lo2 = lo2 + Math.imul(al0, bl7) | 0;\n        mid = mid + Math.imul(al0, bh7) | 0;\n        mid = mid + Math.imul(ah0, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh7) | 0;\n        var w7 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n        w7 &= 67108863;\n        lo2 = Math.imul(al8, bl0);\n        mid = Math.imul(al8, bh0);\n        mid = mid + Math.imul(ah8, bl0) | 0;\n        hi2 = Math.imul(ah8, bh0);\n        lo2 = lo2 + Math.imul(al7, bl1) | 0;\n        mid = mid + Math.imul(al7, bh1) | 0;\n        mid = mid + Math.imul(ah7, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh1) | 0;\n        lo2 = lo2 + Math.imul(al6, bl2) | 0;\n        mid = mid + Math.imul(al6, bh2) | 0;\n        mid = mid + Math.imul(ah6, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh2) | 0;\n        lo2 = lo2 + Math.imul(al5, bl3) | 0;\n        mid = mid + Math.imul(al5, bh3) | 0;\n        mid = mid + Math.imul(ah5, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh3) | 0;\n        lo2 = lo2 + Math.imul(al4, bl4) | 0;\n        mid = mid + Math.imul(al4, bh4) | 0;\n        mid = mid + Math.imul(ah4, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh4) | 0;\n        lo2 = lo2 + Math.imul(al3, bl5) | 0;\n        mid = mid + Math.imul(al3, bh5) | 0;\n        mid = mid + Math.imul(ah3, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh5) | 0;\n        lo2 = lo2 + Math.imul(al2, bl6) | 0;\n        mid = mid + Math.imul(al2, bh6) | 0;\n        mid = mid + Math.imul(ah2, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh6) | 0;\n        lo2 = lo2 + Math.imul(al1, bl7) | 0;\n        mid = mid + Math.imul(al1, bh7) | 0;\n        mid = mid + Math.imul(ah1, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh7) | 0;\n        lo2 = lo2 + Math.imul(al0, bl8) | 0;\n        mid = mid + Math.imul(al0, bh8) | 0;\n        mid = mid + Math.imul(ah0, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh8) | 0;\n        var w8 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n        w8 &= 67108863;\n        lo2 = Math.imul(al9, bl0);\n        mid = Math.imul(al9, bh0);\n        mid = mid + Math.imul(ah9, bl0) | 0;\n        hi2 = Math.imul(ah9, bh0);\n        lo2 = lo2 + Math.imul(al8, bl1) | 0;\n        mid = mid + Math.imul(al8, bh1) | 0;\n        mid = mid + Math.imul(ah8, bl1) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh1) | 0;\n        lo2 = lo2 + Math.imul(al7, bl2) | 0;\n        mid = mid + Math.imul(al7, bh2) | 0;\n        mid = mid + Math.imul(ah7, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh2) | 0;\n        lo2 = lo2 + Math.imul(al6, bl3) | 0;\n        mid = mid + Math.imul(al6, bh3) | 0;\n        mid = mid + Math.imul(ah6, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh3) | 0;\n        lo2 = lo2 + Math.imul(al5, bl4) | 0;\n        mid = mid + Math.imul(al5, bh4) | 0;\n        mid = mid + Math.imul(ah5, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh4) | 0;\n        lo2 = lo2 + Math.imul(al4, bl5) | 0;\n        mid = mid + Math.imul(al4, bh5) | 0;\n        mid = mid + Math.imul(ah4, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh5) | 0;\n        lo2 = lo2 + Math.imul(al3, bl6) | 0;\n        mid = mid + Math.imul(al3, bh6) | 0;\n        mid = mid + Math.imul(ah3, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh6) | 0;\n        lo2 = lo2 + Math.imul(al2, bl7) | 0;\n        mid = mid + Math.imul(al2, bh7) | 0;\n        mid = mid + Math.imul(ah2, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh7) | 0;\n        lo2 = lo2 + Math.imul(al1, bl8) | 0;\n        mid = mid + Math.imul(al1, bh8) | 0;\n        mid = mid + Math.imul(ah1, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh8) | 0;\n        lo2 = lo2 + Math.imul(al0, bl9) | 0;\n        mid = mid + Math.imul(al0, bh9) | 0;\n        mid = mid + Math.imul(ah0, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah0, bh9) | 0;\n        var w9 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n        w9 &= 67108863;\n        lo2 = Math.imul(al9, bl1);\n        mid = Math.imul(al9, bh1);\n        mid = mid + Math.imul(ah9, bl1) | 0;\n        hi2 = Math.imul(ah9, bh1);\n        lo2 = lo2 + Math.imul(al8, bl2) | 0;\n        mid = mid + Math.imul(al8, bh2) | 0;\n        mid = mid + Math.imul(ah8, bl2) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh2) | 0;\n        lo2 = lo2 + Math.imul(al7, bl3) | 0;\n        mid = mid + Math.imul(al7, bh3) | 0;\n        mid = mid + Math.imul(ah7, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh3) | 0;\n        lo2 = lo2 + Math.imul(al6, bl4) | 0;\n        mid = mid + Math.imul(al6, bh4) | 0;\n        mid = mid + Math.imul(ah6, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh4) | 0;\n        lo2 = lo2 + Math.imul(al5, bl5) | 0;\n        mid = mid + Math.imul(al5, bh5) | 0;\n        mid = mid + Math.imul(ah5, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh5) | 0;\n        lo2 = lo2 + Math.imul(al4, bl6) | 0;\n        mid = mid + Math.imul(al4, bh6) | 0;\n        mid = mid + Math.imul(ah4, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh6) | 0;\n        lo2 = lo2 + Math.imul(al3, bl7) | 0;\n        mid = mid + Math.imul(al3, bh7) | 0;\n        mid = mid + Math.imul(ah3, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh7) | 0;\n        lo2 = lo2 + Math.imul(al2, bl8) | 0;\n        mid = mid + Math.imul(al2, bh8) | 0;\n        mid = mid + Math.imul(ah2, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh8) | 0;\n        lo2 = lo2 + Math.imul(al1, bl9) | 0;\n        mid = mid + Math.imul(al1, bh9) | 0;\n        mid = mid + Math.imul(ah1, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah1, bh9) | 0;\n        var w10 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n        w10 &= 67108863;\n        lo2 = Math.imul(al9, bl2);\n        mid = Math.imul(al9, bh2);\n        mid = mid + Math.imul(ah9, bl2) | 0;\n        hi2 = Math.imul(ah9, bh2);\n        lo2 = lo2 + Math.imul(al8, bl3) | 0;\n        mid = mid + Math.imul(al8, bh3) | 0;\n        mid = mid + Math.imul(ah8, bl3) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh3) | 0;\n        lo2 = lo2 + Math.imul(al7, bl4) | 0;\n        mid = mid + Math.imul(al7, bh4) | 0;\n        mid = mid + Math.imul(ah7, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh4) | 0;\n        lo2 = lo2 + Math.imul(al6, bl5) | 0;\n        mid = mid + Math.imul(al6, bh5) | 0;\n        mid = mid + Math.imul(ah6, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh5) | 0;\n        lo2 = lo2 + Math.imul(al5, bl6) | 0;\n        mid = mid + Math.imul(al5, bh6) | 0;\n        mid = mid + Math.imul(ah5, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh6) | 0;\n        lo2 = lo2 + Math.imul(al4, bl7) | 0;\n        mid = mid + Math.imul(al4, bh7) | 0;\n        mid = mid + Math.imul(ah4, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh7) | 0;\n        lo2 = lo2 + Math.imul(al3, bl8) | 0;\n        mid = mid + Math.imul(al3, bh8) | 0;\n        mid = mid + Math.imul(ah3, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh8) | 0;\n        lo2 = lo2 + Math.imul(al2, bl9) | 0;\n        mid = mid + Math.imul(al2, bh9) | 0;\n        mid = mid + Math.imul(ah2, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah2, bh9) | 0;\n        var w11 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n        w11 &= 67108863;\n        lo2 = Math.imul(al9, bl3);\n        mid = Math.imul(al9, bh3);\n        mid = mid + Math.imul(ah9, bl3) | 0;\n        hi2 = Math.imul(ah9, bh3);\n        lo2 = lo2 + Math.imul(al8, bl4) | 0;\n        mid = mid + Math.imul(al8, bh4) | 0;\n        mid = mid + Math.imul(ah8, bl4) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh4) | 0;\n        lo2 = lo2 + Math.imul(al7, bl5) | 0;\n        mid = mid + Math.imul(al7, bh5) | 0;\n        mid = mid + Math.imul(ah7, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh5) | 0;\n        lo2 = lo2 + Math.imul(al6, bl6) | 0;\n        mid = mid + Math.imul(al6, bh6) | 0;\n        mid = mid + Math.imul(ah6, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh6) | 0;\n        lo2 = lo2 + Math.imul(al5, bl7) | 0;\n        mid = mid + Math.imul(al5, bh7) | 0;\n        mid = mid + Math.imul(ah5, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh7) | 0;\n        lo2 = lo2 + Math.imul(al4, bl8) | 0;\n        mid = mid + Math.imul(al4, bh8) | 0;\n        mid = mid + Math.imul(ah4, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh8) | 0;\n        lo2 = lo2 + Math.imul(al3, bl9) | 0;\n        mid = mid + Math.imul(al3, bh9) | 0;\n        mid = mid + Math.imul(ah3, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah3, bh9) | 0;\n        var w12 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n        w12 &= 67108863;\n        lo2 = Math.imul(al9, bl4);\n        mid = Math.imul(al9, bh4);\n        mid = mid + Math.imul(ah9, bl4) | 0;\n        hi2 = Math.imul(ah9, bh4);\n        lo2 = lo2 + Math.imul(al8, bl5) | 0;\n        mid = mid + Math.imul(al8, bh5) | 0;\n        mid = mid + Math.imul(ah8, bl5) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh5) | 0;\n        lo2 = lo2 + Math.imul(al7, bl6) | 0;\n        mid = mid + Math.imul(al7, bh6) | 0;\n        mid = mid + Math.imul(ah7, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh6) | 0;\n        lo2 = lo2 + Math.imul(al6, bl7) | 0;\n        mid = mid + Math.imul(al6, bh7) | 0;\n        mid = mid + Math.imul(ah6, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh7) | 0;\n        lo2 = lo2 + Math.imul(al5, bl8) | 0;\n        mid = mid + Math.imul(al5, bh8) | 0;\n        mid = mid + Math.imul(ah5, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh8) | 0;\n        lo2 = lo2 + Math.imul(al4, bl9) | 0;\n        mid = mid + Math.imul(al4, bh9) | 0;\n        mid = mid + Math.imul(ah4, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah4, bh9) | 0;\n        var w13 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n        w13 &= 67108863;\n        lo2 = Math.imul(al9, bl5);\n        mid = Math.imul(al9, bh5);\n        mid = mid + Math.imul(ah9, bl5) | 0;\n        hi2 = Math.imul(ah9, bh5);\n        lo2 = lo2 + Math.imul(al8, bl6) | 0;\n        mid = mid + Math.imul(al8, bh6) | 0;\n        mid = mid + Math.imul(ah8, bl6) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh6) | 0;\n        lo2 = lo2 + Math.imul(al7, bl7) | 0;\n        mid = mid + Math.imul(al7, bh7) | 0;\n        mid = mid + Math.imul(ah7, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh7) | 0;\n        lo2 = lo2 + Math.imul(al6, bl8) | 0;\n        mid = mid + Math.imul(al6, bh8) | 0;\n        mid = mid + Math.imul(ah6, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh8) | 0;\n        lo2 = lo2 + Math.imul(al5, bl9) | 0;\n        mid = mid + Math.imul(al5, bh9) | 0;\n        mid = mid + Math.imul(ah5, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah5, bh9) | 0;\n        var w14 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n        w14 &= 67108863;\n        lo2 = Math.imul(al9, bl6);\n        mid = Math.imul(al9, bh6);\n        mid = mid + Math.imul(ah9, bl6) | 0;\n        hi2 = Math.imul(ah9, bh6);\n        lo2 = lo2 + Math.imul(al8, bl7) | 0;\n        mid = mid + Math.imul(al8, bh7) | 0;\n        mid = mid + Math.imul(ah8, bl7) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh7) | 0;\n        lo2 = lo2 + Math.imul(al7, bl8) | 0;\n        mid = mid + Math.imul(al7, bh8) | 0;\n        mid = mid + Math.imul(ah7, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh8) | 0;\n        lo2 = lo2 + Math.imul(al6, bl9) | 0;\n        mid = mid + Math.imul(al6, bh9) | 0;\n        mid = mid + Math.imul(ah6, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah6, bh9) | 0;\n        var w15 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n        w15 &= 67108863;\n        lo2 = Math.imul(al9, bl7);\n        mid = Math.imul(al9, bh7);\n        mid = mid + Math.imul(ah9, bl7) | 0;\n        hi2 = Math.imul(ah9, bh7);\n        lo2 = lo2 + Math.imul(al8, bl8) | 0;\n        mid = mid + Math.imul(al8, bh8) | 0;\n        mid = mid + Math.imul(ah8, bl8) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh8) | 0;\n        lo2 = lo2 + Math.imul(al7, bl9) | 0;\n        mid = mid + Math.imul(al7, bh9) | 0;\n        mid = mid + Math.imul(ah7, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah7, bh9) | 0;\n        var w16 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n        w16 &= 67108863;\n        lo2 = Math.imul(al9, bl8);\n        mid = Math.imul(al9, bh8);\n        mid = mid + Math.imul(ah9, bl8) | 0;\n        hi2 = Math.imul(ah9, bh8);\n        lo2 = lo2 + Math.imul(al8, bl9) | 0;\n        mid = mid + Math.imul(al8, bh9) | 0;\n        mid = mid + Math.imul(ah8, bl9) | 0;\n        hi2 = hi2 + Math.imul(ah8, bh9) | 0;\n        var w17 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n        w17 &= 67108863;\n        lo2 = Math.imul(al9, bl9);\n        mid = Math.imul(al9, bh9);\n        mid = mid + Math.imul(ah9, bl9) | 0;\n        hi2 = Math.imul(ah9, bh9);\n        var w18 = (c5 + lo2 | 0) + ((mid & 8191) << 13) | 0;\n        c5 = (hi2 + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n        w18 &= 67108863;\n        o4[0] = w0;\n        o4[1] = w1;\n        o4[2] = w22;\n        o4[3] = w32;\n        o4[4] = w4;\n        o4[5] = w5;\n        o4[6] = w6;\n        o4[7] = w7;\n        o4[8] = w8;\n        o4[9] = w9;\n        o4[10] = w10;\n        o4[11] = w11;\n        o4[12] = w12;\n        o4[13] = w13;\n        o4[14] = w14;\n        o4[15] = w15;\n        o4[16] = w16;\n        o4[17] = w17;\n        o4[18] = w18;\n        if (c5 !== 0) {\n          o4[19] = c5;\n          out.length++;\n        }\n        return out;\n      };\n      if (!Math.imul) {\n        comb10MulTo = smallMulTo;\n      }\n      function bigMulTo(self2, num, out) {\n        out.negative = num.negative ^ self2.negative;\n        out.length = self2.length + num.length;\n        var carry = 0;\n        var hncarry = 0;\n        for (var k4 = 0; k4 < out.length - 1; k4++) {\n          var ncarry = hncarry;\n          hncarry = 0;\n          var rword = carry & 67108863;\n          var maxJ = Math.min(k4, num.length - 1);\n          for (var j2 = Math.max(0, k4 - self2.length + 1); j2 <= maxJ; j2++) {\n            var i4 = k4 - j2;\n            var a4 = self2.words[i4] | 0;\n            var b5 = num.words[j2] | 0;\n            var r4 = a4 * b5;\n            var lo2 = r4 & 67108863;\n            ncarry = ncarry + (r4 / 67108864 | 0) | 0;\n            lo2 = lo2 + rword | 0;\n            rword = lo2 & 67108863;\n            ncarry = ncarry + (lo2 >>> 26) | 0;\n            hncarry += ncarry >>> 26;\n            ncarry &= 67108863;\n          }\n          out.words[k4] = rword;\n          carry = ncarry;\n          ncarry = hncarry;\n        }\n        if (carry !== 0) {\n          out.words[k4] = carry;\n        } else {\n          out.length--;\n        }\n        return out.strip();\n      }\n      function jumboMulTo(self2, num, out) {\n        var fftm = new FFTM();\n        return fftm.mulp(self2, num, out);\n      }\n      BN3.prototype.mulTo = function mulTo(num, out) {\n        var res;\n        var len = this.length + num.length;\n        if (this.length === 10 && num.length === 10) {\n          res = comb10MulTo(this, num, out);\n        } else if (len < 63) {\n          res = smallMulTo(this, num, out);\n        } else if (len < 1024) {\n          res = bigMulTo(this, num, out);\n        } else {\n          res = jumboMulTo(this, num, out);\n        }\n        return res;\n      };\n      function FFTM(x6, y6) {\n        this.x = x6;\n        this.y = y6;\n      }\n      FFTM.prototype.makeRBT = function makeRBT(N11) {\n        var t = new Array(N11);\n        var l4 = BN3.prototype._countBits(N11) - 1;\n        for (var i4 = 0; i4 < N11; i4++) {\n          t[i4] = this.revBin(i4, l4, N11);\n        }\n        return t;\n      };\n      FFTM.prototype.revBin = function revBin(x6, l4, N11) {\n        if (x6 === 0 || x6 === N11 - 1)\n          return x6;\n        var rb = 0;\n        for (var i4 = 0; i4 < l4; i4++) {\n          rb |= (x6 & 1) << l4 - i4 - 1;\n          x6 >>= 1;\n        }\n        return rb;\n      };\n      FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N11) {\n        for (var i4 = 0; i4 < N11; i4++) {\n          rtws[i4] = rws[rbt[i4]];\n          itws[i4] = iws[rbt[i4]];\n        }\n      };\n      FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N11, rbt) {\n        this.permute(rbt, rws, iws, rtws, itws, N11);\n        for (var s3 = 1; s3 < N11; s3 <<= 1) {\n          var l4 = s3 << 1;\n          var rtwdf = Math.cos(2 * Math.PI / l4);\n          var itwdf = Math.sin(2 * Math.PI / l4);\n          for (var p3 = 0; p3 < N11; p3 += l4) {\n            var rtwdf_ = rtwdf;\n            var itwdf_ = itwdf;\n            for (var j2 = 0; j2 < s3; j2++) {\n              var re3 = rtws[p3 + j2];\n              var ie2 = itws[p3 + j2];\n              var ro2 = rtws[p3 + j2 + s3];\n              var io2 = itws[p3 + j2 + s3];\n              var rx = rtwdf_ * ro2 - itwdf_ * io2;\n              io2 = rtwdf_ * io2 + itwdf_ * ro2;\n              ro2 = rx;\n              rtws[p3 + j2] = re3 + ro2;\n              itws[p3 + j2] = ie2 + io2;\n              rtws[p3 + j2 + s3] = re3 - ro2;\n              itws[p3 + j2 + s3] = ie2 - io2;\n              if (j2 !== l4) {\n                rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n                itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n                rtwdf_ = rx;\n              }\n            }\n          }\n        }\n      };\n      FFTM.prototype.guessLen13b = function guessLen13b(n5, m2) {\n        var N11 = Math.max(m2, n5) | 1;\n        var odd = N11 & 1;\n        var i4 = 0;\n        for (N11 = N11 / 2 | 0; N11; N11 = N11 >>> 1) {\n          i4++;\n        }\n        return 1 << i4 + 1 + odd;\n      };\n      FFTM.prototype.conjugate = function conjugate(rws, iws, N11) {\n        if (N11 <= 1)\n          return;\n        for (var i4 = 0; i4 < N11 / 2; i4++) {\n          var t = rws[i4];\n          rws[i4] = rws[N11 - i4 - 1];\n          rws[N11 - i4 - 1] = t;\n          t = iws[i4];\n          iws[i4] = -iws[N11 - i4 - 1];\n          iws[N11 - i4 - 1] = -t;\n        }\n      };\n      FFTM.prototype.normalize13b = function normalize13b(ws2, N11) {\n        var carry = 0;\n        for (var i4 = 0; i4 < N11 / 2; i4++) {\n          var w4 = Math.round(ws2[2 * i4 + 1] / N11) * 8192 + Math.round(ws2[2 * i4] / N11) + carry;\n          ws2[i4] = w4 & 67108863;\n          if (w4 < 67108864) {\n            carry = 0;\n          } else {\n            carry = w4 / 67108864 | 0;\n          }\n        }\n        return ws2;\n      };\n      FFTM.prototype.convert13b = function convert13b(ws2, len, rws, N11) {\n        var carry = 0;\n        for (var i4 = 0; i4 < len; i4++) {\n          carry = carry + (ws2[i4] | 0);\n          rws[2 * i4] = carry & 8191;\n          carry = carry >>> 13;\n          rws[2 * i4 + 1] = carry & 8191;\n          carry = carry >>> 13;\n        }\n        for (i4 = 2 * len; i4 < N11; ++i4) {\n          rws[i4] = 0;\n        }\n        assert2(carry === 0);\n        assert2((carry & ~8191) === 0);\n      };\n      FFTM.prototype.stub = function stub(N11) {\n        var ph = new Array(N11);\n        for (var i4 = 0; i4 < N11; i4++) {\n          ph[i4] = 0;\n        }\n        return ph;\n      };\n      FFTM.prototype.mulp = function mulp(x6, y6, out) {\n        var N11 = 2 * this.guessLen13b(x6.length, y6.length);\n        var rbt = this.makeRBT(N11);\n        var _4 = this.stub(N11);\n        var rws = new Array(N11);\n        var rwst = new Array(N11);\n        var iwst = new Array(N11);\n        var nrws = new Array(N11);\n        var nrwst = new Array(N11);\n        var niwst = new Array(N11);\n        var rmws = out.words;\n        rmws.length = N11;\n        this.convert13b(x6.words, x6.length, rws, N11);\n        this.convert13b(y6.words, y6.length, nrws, N11);\n        this.transform(rws, _4, rwst, iwst, N11, rbt);\n        this.transform(nrws, _4, nrwst, niwst, N11, rbt);\n        for (var i4 = 0; i4 < N11; i4++) {\n          var rx = rwst[i4] * nrwst[i4] - iwst[i4] * niwst[i4];\n          iwst[i4] = rwst[i4] * niwst[i4] + iwst[i4] * nrwst[i4];\n          rwst[i4] = rx;\n        }\n        this.conjugate(rwst, iwst, N11);\n        this.transform(rwst, iwst, rmws, _4, N11, rbt);\n        this.conjugate(rmws, _4, N11);\n        this.normalize13b(rmws, N11);\n        out.negative = x6.negative ^ y6.negative;\n        out.length = x6.length + y6.length;\n        return out.strip();\n      };\n      BN3.prototype.mul = function mul3(num) {\n        var out = new BN3(null);\n        out.words = new Array(this.length + num.length);\n        return this.mulTo(num, out);\n      };\n      BN3.prototype.mulf = function mulf(num) {\n        var out = new BN3(null);\n        out.words = new Array(this.length + num.length);\n        return jumboMulTo(this, num, out);\n      };\n      BN3.prototype.imul = function imul(num) {\n        return this.clone().mulTo(num, this);\n      };\n      BN3.prototype.imuln = function imuln(num) {\n        assert2(typeof num === \"number\");\n        assert2(num < 67108864);\n        var carry = 0;\n        for (var i4 = 0; i4 < this.length; i4++) {\n          var w4 = (this.words[i4] | 0) * num;\n          var lo2 = (w4 & 67108863) + (carry & 67108863);\n          carry >>= 26;\n          carry += w4 / 67108864 | 0;\n          carry += lo2 >>> 26;\n          this.words[i4] = lo2 & 67108863;\n        }\n        if (carry !== 0) {\n          this.words[i4] = carry;\n          this.length++;\n        }\n        return this;\n      };\n      BN3.prototype.muln = function muln(num) {\n        return this.clone().imuln(num);\n      };\n      BN3.prototype.sqr = function sqr() {\n        return this.mul(this);\n      };\n      BN3.prototype.isqr = function isqr() {\n        return this.imul(this.clone());\n      };\n      BN3.prototype.pow = function pow(num) {\n        var w4 = toBitArray(num);\n        if (w4.length === 0)\n          return new BN3(1);\n        var res = this;\n        for (var i4 = 0; i4 < w4.length; i4++, res = res.sqr()) {\n          if (w4[i4] !== 0)\n            break;\n        }\n        if (++i4 < w4.length) {\n          for (var q3 = res.sqr(); i4 < w4.length; i4++, q3 = q3.sqr()) {\n            if (w4[i4] === 0)\n              continue;\n            res = res.mul(q3);\n          }\n        }\n        return res;\n      };\n      BN3.prototype.iushln = function iushln(bits) {\n        assert2(typeof bits === \"number\" && bits >= 0);\n        var r4 = bits % 26;\n        var s3 = (bits - r4) / 26;\n        var carryMask = 67108863 >>> 26 - r4 << 26 - r4;\n        var i4;\n        if (r4 !== 0) {\n          var carry = 0;\n          for (i4 = 0; i4 < this.length; i4++) {\n            var newCarry = this.words[i4] & carryMask;\n            var c5 = (this.words[i4] | 0) - newCarry << r4;\n            this.words[i4] = c5 | carry;\n            carry = newCarry >>> 26 - r4;\n          }\n          if (carry) {\n            this.words[i4] = carry;\n            this.length++;\n          }\n        }\n        if (s3 !== 0) {\n          for (i4 = this.length - 1; i4 >= 0; i4--) {\n            this.words[i4 + s3] = this.words[i4];\n          }\n          for (i4 = 0; i4 < s3; i4++) {\n            this.words[i4] = 0;\n          }\n          this.length += s3;\n        }\n        return this.strip();\n      };\n      BN3.prototype.ishln = function ishln(bits) {\n        assert2(this.negative === 0);\n        return this.iushln(bits);\n      };\n      BN3.prototype.iushrn = function iushrn(bits, hint, extended) {\n        assert2(typeof bits === \"number\" && bits >= 0);\n        var h5;\n        if (hint) {\n          h5 = (hint - hint % 26) / 26;\n        } else {\n          h5 = 0;\n        }\n        var r4 = bits % 26;\n        var s3 = Math.min((bits - r4) / 26, this.length);\n        var mask = 67108863 ^ 67108863 >>> r4 << r4;\n        var maskedWords = extended;\n        h5 -= s3;\n        h5 = Math.max(0, h5);\n        if (maskedWords) {\n          for (var i4 = 0; i4 < s3; i4++) {\n            maskedWords.words[i4] = this.words[i4];\n          }\n          maskedWords.length = s3;\n        }\n        if (s3 === 0) {\n        } else if (this.length > s3) {\n          this.length -= s3;\n          for (i4 = 0; i4 < this.length; i4++) {\n            this.words[i4] = this.words[i4 + s3];\n          }\n        } else {\n          this.words[0] = 0;\n          this.length = 1;\n        }\n        var carry = 0;\n        for (i4 = this.length - 1; i4 >= 0 && (carry !== 0 || i4 >= h5); i4--) {\n          var word = this.words[i4] | 0;\n          this.words[i4] = carry << 26 - r4 | word >>> r4;\n          carry = word & mask;\n        }\n        if (maskedWords && carry !== 0) {\n          maskedWords.words[maskedWords.length++] = carry;\n        }\n        if (this.length === 0) {\n          this.words[0] = 0;\n          this.length = 1;\n        }\n        return this.strip();\n      };\n      BN3.prototype.ishrn = function ishrn(bits, hint, extended) {\n        assert2(this.negative === 0);\n        return this.iushrn(bits, hint, extended);\n      };\n      BN3.prototype.shln = function shln(bits) {\n        return this.clone().ishln(bits);\n      };\n      BN3.prototype.ushln = function ushln(bits) {\n        return this.clone().iushln(bits);\n      };\n      BN3.prototype.shrn = function shrn(bits) {\n        return this.clone().ishrn(bits);\n      };\n      BN3.prototype.ushrn = function ushrn(bits) {\n        return this.clone().iushrn(bits);\n      };\n      BN3.prototype.testn = function testn(bit) {\n        assert2(typeof bit === \"number\" && bit >= 0);\n        var r4 = bit % 26;\n        var s3 = (bit - r4) / 26;\n        var q3 = 1 << r4;\n        if (this.length <= s3)\n          return false;\n        var w4 = this.words[s3];\n        return !!(w4 & q3);\n      };\n      BN3.prototype.imaskn = function imaskn(bits) {\n        assert2(typeof bits === \"number\" && bits >= 0);\n        var r4 = bits % 26;\n        var s3 = (bits - r4) / 26;\n        assert2(this.negative === 0, \"imaskn works only with positive numbers\");\n        if (this.length <= s3) {\n          return this;\n        }\n        if (r4 !== 0) {\n          s3++;\n        }\n        this.length = Math.min(s3, this.length);\n        if (r4 !== 0) {\n          var mask = 67108863 ^ 67108863 >>> r4 << r4;\n          this.words[this.length - 1] &= mask;\n        }\n        return this.strip();\n      };\n      BN3.prototype.maskn = function maskn(bits) {\n        return this.clone().imaskn(bits);\n      };\n      BN3.prototype.iaddn = function iaddn(num) {\n        assert2(typeof num === \"number\");\n        assert2(num < 67108864);\n        if (num < 0)\n          return this.isubn(-num);\n        if (this.negative !== 0) {\n          if (this.length === 1 && (this.words[0] | 0) < num) {\n            this.words[0] = num - (this.words[0] | 0);\n            this.negative = 0;\n            return this;\n          }\n          this.negative = 0;\n          this.isubn(num);\n          this.negative = 1;\n          return this;\n        }\n        return this._iaddn(num);\n      };\n      BN3.prototype._iaddn = function _iaddn(num) {\n        this.words[0] += num;\n        for (var i4 = 0; i4 < this.length && this.words[i4] >= 67108864; i4++) {\n          this.words[i4] -= 67108864;\n          if (i4 === this.length - 1) {\n            this.words[i4 + 1] = 1;\n          } else {\n            this.words[i4 + 1]++;\n          }\n        }\n        this.length = Math.max(this.length, i4 + 1);\n        return this;\n      };\n      BN3.prototype.isubn = function isubn(num) {\n        assert2(typeof num === \"number\");\n        assert2(num < 67108864);\n        if (num < 0)\n          return this.iaddn(-num);\n        if (this.negative !== 0) {\n          this.negative = 0;\n          this.iaddn(num);\n          this.negative = 1;\n          return this;\n        }\n        this.words[0] -= num;\n        if (this.length === 1 && this.words[0] < 0) {\n          this.words[0] = -this.words[0];\n          this.negative = 1;\n        } else {\n          for (var i4 = 0; i4 < this.length && this.words[i4] < 0; i4++) {\n            this.words[i4] += 67108864;\n            this.words[i4 + 1] -= 1;\n          }\n        }\n        return this.strip();\n      };\n      BN3.prototype.addn = function addn(num) {\n        return this.clone().iaddn(num);\n      };\n      BN3.prototype.subn = function subn(num) {\n        return this.clone().isubn(num);\n      };\n      BN3.prototype.iabs = function iabs() {\n        this.negative = 0;\n        return this;\n      };\n      BN3.prototype.abs = function abs() {\n        return this.clone().iabs();\n      };\n      BN3.prototype._ishlnsubmul = function _ishlnsubmul(num, mul3, shift) {\n        var len = num.length + shift;\n        var i4;\n        this._expand(len);\n        var w4;\n        var carry = 0;\n        for (i4 = 0; i4 < num.length; i4++) {\n          w4 = (this.words[i4 + shift] | 0) + carry;\n          var right = (num.words[i4] | 0) * mul3;\n          w4 -= right & 67108863;\n          carry = (w4 >> 26) - (right / 67108864 | 0);\n          this.words[i4 + shift] = w4 & 67108863;\n        }\n        for (; i4 < this.length - shift; i4++) {\n          w4 = (this.words[i4 + shift] | 0) + carry;\n          carry = w4 >> 26;\n          this.words[i4 + shift] = w4 & 67108863;\n        }\n        if (carry === 0)\n          return this.strip();\n        assert2(carry === -1);\n        carry = 0;\n        for (i4 = 0; i4 < this.length; i4++) {\n          w4 = -(this.words[i4] | 0) + carry;\n          carry = w4 >> 26;\n          this.words[i4] = w4 & 67108863;\n        }\n        this.negative = 1;\n        return this.strip();\n      };\n      BN3.prototype._wordDiv = function _wordDiv(num, mode) {\n        var shift = this.length - num.length;\n        var a4 = this.clone();\n        var b5 = num;\n        var bhi = b5.words[b5.length - 1] | 0;\n        var bhiBits = this._countBits(bhi);\n        shift = 26 - bhiBits;\n        if (shift !== 0) {\n          b5 = b5.ushln(shift);\n          a4.iushln(shift);\n          bhi = b5.words[b5.length - 1] | 0;\n        }\n        var m2 = a4.length - b5.length;\n        var q3;\n        if (mode !== \"mod\") {\n          q3 = new BN3(null);\n          q3.length = m2 + 1;\n          q3.words = new Array(q3.length);\n          for (var i4 = 0; i4 < q3.length; i4++) {\n            q3.words[i4] = 0;\n          }\n        }\n        var diff = a4.clone()._ishlnsubmul(b5, 1, m2);\n        if (diff.negative === 0) {\n          a4 = diff;\n          if (q3) {\n            q3.words[m2] = 1;\n          }\n        }\n        for (var j2 = m2 - 1; j2 >= 0; j2--) {\n          var qj = (a4.words[b5.length + j2] | 0) * 67108864 + (a4.words[b5.length + j2 - 1] | 0);\n          qj = Math.min(qj / bhi | 0, 67108863);\n          a4._ishlnsubmul(b5, qj, j2);\n          while (a4.negative !== 0) {\n            qj--;\n            a4.negative = 0;\n            a4._ishlnsubmul(b5, 1, j2);\n            if (!a4.isZero()) {\n              a4.negative ^= 1;\n            }\n          }\n          if (q3) {\n            q3.words[j2] = qj;\n          }\n        }\n        if (q3) {\n          q3.strip();\n        }\n        a4.strip();\n        if (mode !== \"div\" && shift !== 0) {\n          a4.iushrn(shift);\n        }\n        return {\n          div: q3 || null,\n          mod: a4\n        };\n      };\n      BN3.prototype.divmod = function divmod(num, mode, positive) {\n        assert2(!num.isZero());\n        if (this.isZero()) {\n          return {\n            div: new BN3(0),\n            mod: new BN3(0)\n          };\n        }\n        var div, mod, res;\n        if (this.negative !== 0 && num.negative === 0) {\n          res = this.neg().divmod(num, mode);\n          if (mode !== \"mod\") {\n            div = res.div.neg();\n          }\n          if (mode !== \"div\") {\n            mod = res.mod.neg();\n            if (positive && mod.negative !== 0) {\n              mod.iadd(num);\n            }\n          }\n          return {\n            div,\n            mod\n          };\n        }\n        if (this.negative === 0 && num.negative !== 0) {\n          res = this.divmod(num.neg(), mode);\n          if (mode !== \"mod\") {\n            div = res.div.neg();\n          }\n          return {\n            div,\n            mod: res.mod\n          };\n        }\n        if ((this.negative & num.negative) !== 0) {\n          res = this.neg().divmod(num.neg(), mode);\n          if (mode !== \"div\") {\n            mod = res.mod.neg();\n            if (positive && mod.negative !== 0) {\n              mod.isub(num);\n            }\n          }\n          return {\n            div: res.div,\n            mod\n          };\n        }\n        if (num.length > this.length || this.cmp(num) < 0) {\n          return {\n            div: new BN3(0),\n            mod: this\n          };\n        }\n        if (num.length === 1) {\n          if (mode === \"div\") {\n            return {\n              div: this.divn(num.words[0]),\n              mod: null\n            };\n          }\n          if (mode === \"mod\") {\n            return {\n              div: null,\n              mod: new BN3(this.modn(num.words[0]))\n            };\n          }\n          return {\n            div: this.divn(num.words[0]),\n            mod: new BN3(this.modn(num.words[0]))\n          };\n        }\n        return this._wordDiv(num, mode);\n      };\n      BN3.prototype.div = function div(num) {\n        return this.divmod(num, \"div\", false).div;\n      };\n      BN3.prototype.mod = function mod(num) {\n        return this.divmod(num, \"mod\", false).mod;\n      };\n      BN3.prototype.umod = function umod(num) {\n        return this.divmod(num, \"mod\", true).mod;\n      };\n      BN3.prototype.divRound = function divRound(num) {\n        var dm = this.divmod(num);\n        if (dm.mod.isZero())\n          return dm.div;\n        var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n        var half = num.ushrn(1);\n        var r22 = num.andln(1);\n        var cmp = mod.cmp(half);\n        if (cmp < 0 || r22 === 1 && cmp === 0)\n          return dm.div;\n        return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n      };\n      BN3.prototype.modn = function modn(num) {\n        assert2(num <= 67108863);\n        var p3 = (1 << 26) % num;\n        var acc = 0;\n        for (var i4 = this.length - 1; i4 >= 0; i4--) {\n          acc = (p3 * acc + (this.words[i4] | 0)) % num;\n        }\n        return acc;\n      };\n      BN3.prototype.idivn = function idivn(num) {\n        assert2(num <= 67108863);\n        var carry = 0;\n        for (var i4 = this.length - 1; i4 >= 0; i4--) {\n          var w4 = (this.words[i4] | 0) + carry * 67108864;\n          this.words[i4] = w4 / num | 0;\n          carry = w4 % num;\n        }\n        return this.strip();\n      };\n      BN3.prototype.divn = function divn(num) {\n        return this.clone().idivn(num);\n      };\n      BN3.prototype.egcd = function egcd(p3) {\n        assert2(p3.negative === 0);\n        assert2(!p3.isZero());\n        var x6 = this;\n        var y6 = p3.clone();\n        if (x6.negative !== 0) {\n          x6 = x6.umod(p3);\n        } else {\n          x6 = x6.clone();\n        }\n        var A3 = new BN3(1);\n        var B4 = new BN3(0);\n        var C5 = new BN3(0);\n        var D4 = new BN3(1);\n        var g4 = 0;\n        while (x6.isEven() && y6.isEven()) {\n          x6.iushrn(1);\n          y6.iushrn(1);\n          ++g4;\n        }\n        var yp = y6.clone();\n        var xp = x6.clone();\n        while (!x6.isZero()) {\n          for (var i4 = 0, im = 1; (x6.words[0] & im) === 0 && i4 < 26; ++i4, im <<= 1)\n            ;\n          if (i4 > 0) {\n            x6.iushrn(i4);\n            while (i4-- > 0) {\n              if (A3.isOdd() || B4.isOdd()) {\n                A3.iadd(yp);\n                B4.isub(xp);\n              }\n              A3.iushrn(1);\n              B4.iushrn(1);\n            }\n          }\n          for (var j2 = 0, jm = 1; (y6.words[0] & jm) === 0 && j2 < 26; ++j2, jm <<= 1)\n            ;\n          if (j2 > 0) {\n            y6.iushrn(j2);\n            while (j2-- > 0) {\n              if (C5.isOdd() || D4.isOdd()) {\n                C5.iadd(yp);\n                D4.isub(xp);\n              }\n              C5.iushrn(1);\n              D4.iushrn(1);\n            }\n          }\n          if (x6.cmp(y6) >= 0) {\n            x6.isub(y6);\n            A3.isub(C5);\n            B4.isub(D4);\n          } else {\n            y6.isub(x6);\n            C5.isub(A3);\n            D4.isub(B4);\n          }\n        }\n        return {\n          a: C5,\n          b: D4,\n          gcd: y6.iushln(g4)\n        };\n      };\n      BN3.prototype._invmp = function _invmp(p3) {\n        assert2(p3.negative === 0);\n        assert2(!p3.isZero());\n        var a4 = this;\n        var b5 = p3.clone();\n        if (a4.negative !== 0) {\n          a4 = a4.umod(p3);\n        } else {\n          a4 = a4.clone();\n        }\n        var x1 = new BN3(1);\n        var x22 = new BN3(0);\n        var delta = b5.clone();\n        while (a4.cmpn(1) > 0 && b5.cmpn(1) > 0) {\n          for (var i4 = 0, im = 1; (a4.words[0] & im) === 0 && i4 < 26; ++i4, im <<= 1)\n            ;\n          if (i4 > 0) {\n            a4.iushrn(i4);\n            while (i4-- > 0) {\n              if (x1.isOdd()) {\n                x1.iadd(delta);\n              }\n              x1.iushrn(1);\n            }\n          }\n          for (var j2 = 0, jm = 1; (b5.words[0] & jm) === 0 && j2 < 26; ++j2, jm <<= 1)\n            ;\n          if (j2 > 0) {\n            b5.iushrn(j2);\n            while (j2-- > 0) {\n              if (x22.isOdd()) {\n                x22.iadd(delta);\n              }\n              x22.iushrn(1);\n            }\n          }\n          if (a4.cmp(b5) >= 0) {\n            a4.isub(b5);\n            x1.isub(x22);\n          } else {\n            b5.isub(a4);\n            x22.isub(x1);\n          }\n        }\n        var res;\n        if (a4.cmpn(1) === 0) {\n          res = x1;\n        } else {\n          res = x22;\n        }\n        if (res.cmpn(0) < 0) {\n          res.iadd(p3);\n        }\n        return res;\n      };\n      BN3.prototype.gcd = function gcd(num) {\n        if (this.isZero())\n          return num.abs();\n        if (num.isZero())\n          return this.abs();\n        var a4 = this.clone();\n        var b5 = num.clone();\n        a4.negative = 0;\n        b5.negative = 0;\n        for (var shift = 0; a4.isEven() && b5.isEven(); shift++) {\n          a4.iushrn(1);\n          b5.iushrn(1);\n        }\n        do {\n          while (a4.isEven()) {\n            a4.iushrn(1);\n          }\n          while (b5.isEven()) {\n            b5.iushrn(1);\n          }\n          var r4 = a4.cmp(b5);\n          if (r4 < 0) {\n            var t = a4;\n            a4 = b5;\n            b5 = t;\n          } else if (r4 === 0 || b5.cmpn(1) === 0) {\n            break;\n          }\n          a4.isub(b5);\n        } while (true);\n        return b5.iushln(shift);\n      };\n      BN3.prototype.invm = function invm(num) {\n        return this.egcd(num).a.umod(num);\n      };\n      BN3.prototype.isEven = function isEven() {\n        return (this.words[0] & 1) === 0;\n      };\n      BN3.prototype.isOdd = function isOdd() {\n        return (this.words[0] & 1) === 1;\n      };\n      BN3.prototype.andln = function andln(num) {\n        return this.words[0] & num;\n      };\n      BN3.prototype.bincn = function bincn(bit) {\n        assert2(typeof bit === \"number\");\n        var r4 = bit % 26;\n        var s3 = (bit - r4) / 26;\n        var q3 = 1 << r4;\n        if (this.length <= s3) {\n          this._expand(s3 + 1);\n          this.words[s3] |= q3;\n          return this;\n        }\n        var carry = q3;\n        for (var i4 = s3; carry !== 0 && i4 < this.length; i4++) {\n          var w4 = this.words[i4] | 0;\n          w4 += carry;\n          carry = w4 >>> 26;\n          w4 &= 67108863;\n          this.words[i4] = w4;\n        }\n        if (carry !== 0) {\n          this.words[i4] = carry;\n          this.length++;\n        }\n        return this;\n      };\n      BN3.prototype.isZero = function isZero() {\n        return this.length === 1 && this.words[0] === 0;\n      };\n      BN3.prototype.cmpn = function cmpn(num) {\n        var negative = num < 0;\n        if (this.negative !== 0 && !negative)\n          return -1;\n        if (this.negative === 0 && negative)\n          return 1;\n        this.strip();\n        var res;\n        if (this.length > 1) {\n          res = 1;\n        } else {\n          if (negative) {\n            num = -num;\n          }\n          assert2(num <= 67108863, \"Number is too big\");\n          var w4 = this.words[0] | 0;\n          res = w4 === num ? 0 : w4 < num ? -1 : 1;\n        }\n        if (this.negative !== 0)\n          return -res | 0;\n        return res;\n      };\n      BN3.prototype.cmp = function cmp(num) {\n        if (this.negative !== 0 && num.negative === 0)\n          return -1;\n        if (this.negative === 0 && num.negative !== 0)\n          return 1;\n        var res = this.ucmp(num);\n        if (this.negative !== 0)\n          return -res | 0;\n        return res;\n      };\n      BN3.prototype.ucmp = function ucmp(num) {\n        if (this.length > num.length)\n          return 1;\n        if (this.length < num.length)\n          return -1;\n        var res = 0;\n        for (var i4 = this.length - 1; i4 >= 0; i4--) {\n          var a4 = this.words[i4] | 0;\n          var b5 = num.words[i4] | 0;\n          if (a4 === b5)\n            continue;\n          if (a4 < b5) {\n            res = -1;\n          } else if (a4 > b5) {\n            res = 1;\n          }\n          break;\n        }\n        return res;\n      };\n      BN3.prototype.gtn = function gtn(num) {\n        return this.cmpn(num) === 1;\n      };\n      BN3.prototype.gt = function gt4(num) {\n        return this.cmp(num) === 1;\n      };\n      BN3.prototype.gten = function gten(num) {\n        return this.cmpn(num) >= 0;\n      };\n      BN3.prototype.gte = function gte(num) {\n        return this.cmp(num) >= 0;\n      };\n      BN3.prototype.ltn = function ltn(num) {\n        return this.cmpn(num) === -1;\n      };\n      BN3.prototype.lt = function lt3(num) {\n        return this.cmp(num) === -1;\n      };\n      BN3.prototype.lten = function lten(num) {\n        return this.cmpn(num) <= 0;\n      };\n      BN3.prototype.lte = function lte(num) {\n        return this.cmp(num) <= 0;\n      };\n      BN3.prototype.eqn = function eqn(num) {\n        return this.cmpn(num) === 0;\n      };\n      BN3.prototype.eq = function eq4(num) {\n        return this.cmp(num) === 0;\n      };\n      BN3.red = function red(num) {\n        return new Red(num);\n      };\n      BN3.prototype.toRed = function toRed(ctx) {\n        assert2(!this.red, \"Already a number in reduction context\");\n        assert2(this.negative === 0, \"red works only with positives\");\n        return ctx.convertTo(this)._forceRed(ctx);\n      };\n      BN3.prototype.fromRed = function fromRed() {\n        assert2(this.red, \"fromRed works only with numbers in reduction context\");\n        return this.red.convertFrom(this);\n      };\n      BN3.prototype._forceRed = function _forceRed(ctx) {\n        this.red = ctx;\n        return this;\n      };\n      BN3.prototype.forceRed = function forceRed(ctx) {\n        assert2(!this.red, \"Already a number in reduction context\");\n        return this._forceRed(ctx);\n      };\n      BN3.prototype.redAdd = function redAdd(num) {\n        assert2(this.red, \"redAdd works only with red numbers\");\n        return this.red.add(this, num);\n      };\n      BN3.prototype.redIAdd = function redIAdd(num) {\n        assert2(this.red, \"redIAdd works only with red numbers\");\n        return this.red.iadd(this, num);\n      };\n      BN3.prototype.redSub = function redSub(num) {\n        assert2(this.red, \"redSub works only with red numbers\");\n        return this.red.sub(this, num);\n      };\n      BN3.prototype.redISub = function redISub(num) {\n        assert2(this.red, \"redISub works only with red numbers\");\n        return this.red.isub(this, num);\n      };\n      BN3.prototype.redShl = function redShl(num) {\n        assert2(this.red, \"redShl works only with red numbers\");\n        return this.red.shl(this, num);\n      };\n      BN3.prototype.redMul = function redMul(num) {\n        assert2(this.red, \"redMul works only with red numbers\");\n        this.red._verify2(this, num);\n        return this.red.mul(this, num);\n      };\n      BN3.prototype.redIMul = function redIMul(num) {\n        assert2(this.red, \"redMul works only with red numbers\");\n        this.red._verify2(this, num);\n        return this.red.imul(this, num);\n      };\n      BN3.prototype.redSqr = function redSqr() {\n        assert2(this.red, \"redSqr works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.sqr(this);\n      };\n      BN3.prototype.redISqr = function redISqr() {\n        assert2(this.red, \"redISqr works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.isqr(this);\n      };\n      BN3.prototype.redSqrt = function redSqrt() {\n        assert2(this.red, \"redSqrt works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.sqrt(this);\n      };\n      BN3.prototype.redInvm = function redInvm() {\n        assert2(this.red, \"redInvm works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.invm(this);\n      };\n      BN3.prototype.redNeg = function redNeg() {\n        assert2(this.red, \"redNeg works only with red numbers\");\n        this.red._verify1(this);\n        return this.red.neg(this);\n      };\n      BN3.prototype.redPow = function redPow(num) {\n        assert2(this.red && !num.red, \"redPow(normalNum)\");\n        this.red._verify1(this);\n        return this.red.pow(this, num);\n      };\n      var primes = {\n        k256: null,\n        p224: null,\n        p192: null,\n        p25519: null\n      };\n      function MPrime(name2, p3) {\n        this.name = name2;\n        this.p = new BN3(p3, 16);\n        this.n = this.p.bitLength();\n        this.k = new BN3(1).iushln(this.n).isub(this.p);\n        this.tmp = this._tmp();\n      }\n      MPrime.prototype._tmp = function _tmp() {\n        var tmp = new BN3(null);\n        tmp.words = new Array(Math.ceil(this.n / 13));\n        return tmp;\n      };\n      MPrime.prototype.ireduce = function ireduce(num) {\n        var r4 = num;\n        var rlen;\n        do {\n          this.split(r4, this.tmp);\n          r4 = this.imulK(r4);\n          r4 = r4.iadd(this.tmp);\n          rlen = r4.bitLength();\n        } while (rlen > this.n);\n        var cmp = rlen < this.n ? -1 : r4.ucmp(this.p);\n        if (cmp === 0) {\n          r4.words[0] = 0;\n          r4.length = 1;\n        } else if (cmp > 0) {\n          r4.isub(this.p);\n        } else {\n          if (r4.strip !== void 0) {\n            r4.strip();\n          } else {\n            r4._strip();\n          }\n        }\n        return r4;\n      };\n      MPrime.prototype.split = function split(input, out) {\n        input.iushrn(this.n, 0, out);\n      };\n      MPrime.prototype.imulK = function imulK(num) {\n        return num.imul(this.k);\n      };\n      function K256() {\n        MPrime.call(\n          this,\n          \"k256\",\n          \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\"\n        );\n      }\n      inherits(K256, MPrime);\n      K256.prototype.split = function split(input, output) {\n        var mask = 4194303;\n        var outLen = Math.min(input.length, 9);\n        for (var i4 = 0; i4 < outLen; i4++) {\n          output.words[i4] = input.words[i4];\n        }\n        output.length = outLen;\n        if (input.length <= 9) {\n          input.words[0] = 0;\n          input.length = 1;\n          return;\n        }\n        var prev = input.words[9];\n        output.words[output.length++] = prev & mask;\n        for (i4 = 10; i4 < input.length; i4++) {\n          var next = input.words[i4] | 0;\n          input.words[i4 - 10] = (next & mask) << 4 | prev >>> 22;\n          prev = next;\n        }\n        prev >>>= 22;\n        input.words[i4 - 10] = prev;\n        if (prev === 0 && input.length > 10) {\n          input.length -= 10;\n        } else {\n          input.length -= 9;\n        }\n      };\n      K256.prototype.imulK = function imulK(num) {\n        num.words[num.length] = 0;\n        num.words[num.length + 1] = 0;\n        num.length += 2;\n        var lo2 = 0;\n        for (var i4 = 0; i4 < num.length; i4++) {\n          var w4 = num.words[i4] | 0;\n          lo2 += w4 * 977;\n          num.words[i4] = lo2 & 67108863;\n          lo2 = w4 * 64 + (lo2 / 67108864 | 0);\n        }\n        if (num.words[num.length - 1] === 0) {\n          num.length--;\n          if (num.words[num.length - 1] === 0) {\n            num.length--;\n          }\n        }\n        return num;\n      };\n      function P224() {\n        MPrime.call(\n          this,\n          \"p224\",\n          \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\"\n        );\n      }\n      inherits(P224, MPrime);\n      function P192() {\n        MPrime.call(\n          this,\n          \"p192\",\n          \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\"\n        );\n      }\n      inherits(P192, MPrime);\n      function P25519() {\n        MPrime.call(\n          this,\n          \"25519\",\n          \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\"\n        );\n      }\n      inherits(P25519, MPrime);\n      P25519.prototype.imulK = function imulK(num) {\n        var carry = 0;\n        for (var i4 = 0; i4 < num.length; i4++) {\n          var hi2 = (num.words[i4] | 0) * 19 + carry;\n          var lo2 = hi2 & 67108863;\n          hi2 >>>= 26;\n          num.words[i4] = lo2;\n          carry = hi2;\n        }\n        if (carry !== 0) {\n          num.words[num.length++] = carry;\n        }\n        return num;\n      };\n      BN3._prime = function prime(name2) {\n        if (primes[name2])\n          return primes[name2];\n        var prime2;\n        if (name2 === \"k256\") {\n          prime2 = new K256();\n        } else if (name2 === \"p224\") {\n          prime2 = new P224();\n        } else if (name2 === \"p192\") {\n          prime2 = new P192();\n        } else if (name2 === \"p25519\") {\n          prime2 = new P25519();\n        } else {\n          throw new Error(\"Unknown prime \" + name2);\n        }\n        primes[name2] = prime2;\n        return prime2;\n      };\n      function Red(m2) {\n        if (typeof m2 === \"string\") {\n          var prime = BN3._prime(m2);\n          this.m = prime.p;\n          this.prime = prime;\n        } else {\n          assert2(m2.gtn(1), \"modulus must be greater than 1\");\n          this.m = m2;\n          this.prime = null;\n        }\n      }\n      Red.prototype._verify1 = function _verify1(a4) {\n        assert2(a4.negative === 0, \"red works only with positives\");\n        assert2(a4.red, \"red works only with red numbers\");\n      };\n      Red.prototype._verify2 = function _verify2(a4, b5) {\n        assert2((a4.negative | b5.negative) === 0, \"red works only with positives\");\n        assert2(\n          a4.red && a4.red === b5.red,\n          \"red works only with red numbers\"\n        );\n      };\n      Red.prototype.imod = function imod(a4) {\n        if (this.prime)\n          return this.prime.ireduce(a4)._forceRed(this);\n        return a4.umod(this.m)._forceRed(this);\n      };\n      Red.prototype.neg = function neg3(a4) {\n        if (a4.isZero()) {\n          return a4.clone();\n        }\n        return this.m.sub(a4)._forceRed(this);\n      };\n      Red.prototype.add = function add3(a4, b5) {\n        this._verify2(a4, b5);\n        var res = a4.add(b5);\n        if (res.cmp(this.m) >= 0) {\n          res.isub(this.m);\n        }\n        return res._forceRed(this);\n      };\n      Red.prototype.iadd = function iadd(a4, b5) {\n        this._verify2(a4, b5);\n        var res = a4.iadd(b5);\n        if (res.cmp(this.m) >= 0) {\n          res.isub(this.m);\n        }\n        return res;\n      };\n      Red.prototype.sub = function sub(a4, b5) {\n        this._verify2(a4, b5);\n        var res = a4.sub(b5);\n        if (res.cmpn(0) < 0) {\n          res.iadd(this.m);\n        }\n        return res._forceRed(this);\n      };\n      Red.prototype.isub = function isub(a4, b5) {\n        this._verify2(a4, b5);\n        var res = a4.isub(b5);\n        if (res.cmpn(0) < 0) {\n          res.iadd(this.m);\n        }\n        return res;\n      };\n      Red.prototype.shl = function shl(a4, num) {\n        this._verify1(a4);\n        return this.imod(a4.ushln(num));\n      };\n      Red.prototype.imul = function imul(a4, b5) {\n        this._verify2(a4, b5);\n        return this.imod(a4.imul(b5));\n      };\n      Red.prototype.mul = function mul3(a4, b5) {\n        this._verify2(a4, b5);\n        return this.imod(a4.mul(b5));\n      };\n      Red.prototype.isqr = function isqr(a4) {\n        return this.imul(a4, a4.clone());\n      };\n      Red.prototype.sqr = function sqr(a4) {\n        return this.mul(a4, a4);\n      };\n      Red.prototype.sqrt = function sqrt(a4) {\n        if (a4.isZero())\n          return a4.clone();\n        var mod3 = this.m.andln(3);\n        assert2(mod3 % 2 === 1);\n        if (mod3 === 3) {\n          var pow = this.m.add(new BN3(1)).iushrn(2);\n          return this.pow(a4, pow);\n        }\n        var q3 = this.m.subn(1);\n        var s3 = 0;\n        while (!q3.isZero() && q3.andln(1) === 0) {\n          s3++;\n          q3.iushrn(1);\n        }\n        assert2(!q3.isZero());\n        var one = new BN3(1).toRed(this);\n        var nOne = one.redNeg();\n        var lpow = this.m.subn(1).iushrn(1);\n        var z6 = this.m.bitLength();\n        z6 = new BN3(2 * z6 * z6).toRed(this);\n        while (this.pow(z6, lpow).cmp(nOne) !== 0) {\n          z6.redIAdd(nOne);\n        }\n        var c5 = this.pow(z6, q3);\n        var r4 = this.pow(a4, q3.addn(1).iushrn(1));\n        var t = this.pow(a4, q3);\n        var m2 = s3;\n        while (t.cmp(one) !== 0) {\n          var tmp = t;\n          for (var i4 = 0; tmp.cmp(one) !== 0; i4++) {\n            tmp = tmp.redSqr();\n          }\n          assert2(i4 < m2);\n          var b5 = this.pow(c5, new BN3(1).iushln(m2 - i4 - 1));\n          r4 = r4.redMul(b5);\n          c5 = b5.redSqr();\n          t = t.redMul(c5);\n          m2 = i4;\n        }\n        return r4;\n      };\n      Red.prototype.invm = function invm(a4) {\n        var inv = a4._invmp(this.m);\n        if (inv.negative !== 0) {\n          inv.negative = 0;\n          return this.imod(inv).redNeg();\n        } else {\n          return this.imod(inv);\n        }\n      };\n      Red.prototype.pow = function pow(a4, num) {\n        if (num.isZero())\n          return new BN3(1).toRed(this);\n        if (num.cmpn(1) === 0)\n          return a4.clone();\n        var windowSize = 4;\n        var wnd = new Array(1 << windowSize);\n        wnd[0] = new BN3(1).toRed(this);\n        wnd[1] = a4;\n        for (var i4 = 2; i4 < wnd.length; i4++) {\n          wnd[i4] = this.mul(wnd[i4 - 1], a4);\n        }\n        var res = wnd[0];\n        var current = 0;\n        var currentLen = 0;\n        var start = num.bitLength() % 26;\n        if (start === 0) {\n          start = 26;\n        }\n        for (i4 = num.length - 1; i4 >= 0; i4--) {\n          var word = num.words[i4];\n          for (var j2 = start - 1; j2 >= 0; j2--) {\n            var bit = word >> j2 & 1;\n            if (res !== wnd[0]) {\n              res = this.sqr(res);\n            }\n            if (bit === 0 && current === 0) {\n              currentLen = 0;\n              continue;\n            }\n            current <<= 1;\n            current |= bit;\n            currentLen++;\n            if (currentLen !== windowSize && (i4 !== 0 || j2 !== 0))\n              continue;\n            res = this.mul(res, wnd[current]);\n            currentLen = 0;\n            current = 0;\n          }\n          start = 26;\n        }\n        return res;\n      };\n      Red.prototype.convertTo = function convertTo(num) {\n        var r4 = num.umod(this.m);\n        return r4 === num ? r4.clone() : r4;\n      };\n      Red.prototype.convertFrom = function convertFrom(num) {\n        var res = num.clone();\n        res.red = null;\n        return res;\n      };\n      BN3.mont = function mont(num) {\n        return new Mont(num);\n      };\n      function Mont(m2) {\n        Red.call(this, m2);\n        this.shift = this.m.bitLength();\n        if (this.shift % 26 !== 0) {\n          this.shift += 26 - this.shift % 26;\n        }\n        this.r = new BN3(1).iushln(this.shift);\n        this.r2 = this.imod(this.r.sqr());\n        this.rinv = this.r._invmp(this.m);\n        this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n        this.minv = this.minv.umod(this.r);\n        this.minv = this.r.sub(this.minv);\n      }\n      inherits(Mont, Red);\n      Mont.prototype.convertTo = function convertTo(num) {\n        return this.imod(num.ushln(this.shift));\n      };\n      Mont.prototype.convertFrom = function convertFrom(num) {\n        var r4 = this.imod(num.mul(this.rinv));\n        r4.red = null;\n        return r4;\n      };\n      Mont.prototype.imul = function imul(a4, b5) {\n        if (a4.isZero() || b5.isZero()) {\n          a4.words[0] = 0;\n          a4.length = 1;\n          return a4;\n        }\n        var t = a4.imul(b5);\n        var c5 = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n        var u3 = t.isub(c5).iushrn(this.shift);\n        var res = u3;\n        if (u3.cmp(this.m) >= 0) {\n          res = u3.isub(this.m);\n        } else if (u3.cmpn(0) < 0) {\n          res = u3.iadd(this.m);\n        }\n        return res._forceRed(this);\n      };\n      Mont.prototype.mul = function mul3(a4, b5) {\n        if (a4.isZero() || b5.isZero())\n          return new BN3(0)._forceRed(this);\n        var t = a4.mul(b5);\n        var c5 = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n        var u3 = t.isub(c5).iushrn(this.shift);\n        var res = u3;\n        if (u3.cmp(this.m) >= 0) {\n          res = u3.isub(this.m);\n        } else if (u3.cmpn(0) < 0) {\n          res = u3.iadd(this.m);\n        }\n        return res._forceRed(this);\n      };\n      Mont.prototype.invm = function invm(a4) {\n        var res = this.imod(a4._invmp(this.m).mul(this.r2));\n        return res._forceRed(this);\n      };\n    })(typeof module === \"undefined\" || module, exports);\n  }\n});\n\n// node_modules/minimalistic-crypto-utils/lib/utils.js\nvar require_utils3 = __commonJS({\n  \"node_modules/minimalistic-crypto-utils/lib/utils.js\"(exports) {\n    \"use strict\";\n    var utils = exports;\n    function toArray(msg, enc) {\n      if (Array.isArray(msg))\n        return msg.slice();\n      if (!msg)\n        return [];\n      var res = [];\n      if (typeof msg !== \"string\") {\n        for (var i4 = 0; i4 < msg.length; i4++)\n          res[i4] = msg[i4] | 0;\n        return res;\n      }\n      if (enc === \"hex\") {\n        msg = msg.replace(/[^a-z0-9]+/ig, \"\");\n        if (msg.length % 2 !== 0)\n          msg = \"0\" + msg;\n        for (var i4 = 0; i4 < msg.length; i4 += 2)\n          res.push(parseInt(msg[i4] + msg[i4 + 1], 16));\n      } else {\n        for (var i4 = 0; i4 < msg.length; i4++) {\n          var c5 = msg.charCodeAt(i4);\n          var hi2 = c5 >> 8;\n          var lo2 = c5 & 255;\n          if (hi2)\n            res.push(hi2, lo2);\n          else\n            res.push(lo2);\n        }\n      }\n      return res;\n    }\n    utils.toArray = toArray;\n    function zero2(word) {\n      if (word.length === 1)\n        return \"0\" + word;\n      else\n        return word;\n    }\n    utils.zero2 = zero2;\n    function toHex2(msg) {\n      var res = \"\";\n      for (var i4 = 0; i4 < msg.length; i4++)\n        res += zero2(msg[i4].toString(16));\n      return res;\n    }\n    utils.toHex = toHex2;\n    utils.encode = function encode8(arr, enc) {\n      if (enc === \"hex\")\n        return toHex2(arr);\n      else\n        return arr;\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/utils.js\nvar require_utils4 = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/utils.js\"(exports) {\n    \"use strict\";\n    var utils = exports;\n    var BN3 = require_bn2();\n    var minAssert = require_minimalistic_assert();\n    var minUtils = require_utils3();\n    utils.assert = minAssert;\n    utils.toArray = minUtils.toArray;\n    utils.zero2 = minUtils.zero2;\n    utils.toHex = minUtils.toHex;\n    utils.encode = minUtils.encode;\n    function getNAF2(num, w4, bits) {\n      var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n      var i4;\n      for (i4 = 0; i4 < naf.length; i4 += 1) {\n        naf[i4] = 0;\n      }\n      var ws2 = 1 << w4 + 1;\n      var k4 = num.clone();\n      for (i4 = 0; i4 < naf.length; i4++) {\n        var z6;\n        var mod = k4.andln(ws2 - 1);\n        if (k4.isOdd()) {\n          if (mod > (ws2 >> 1) - 1)\n            z6 = (ws2 >> 1) - mod;\n          else\n            z6 = mod;\n          k4.isubn(z6);\n        } else {\n          z6 = 0;\n        }\n        naf[i4] = z6;\n        k4.iushrn(1);\n      }\n      return naf;\n    }\n    utils.getNAF = getNAF2;\n    function getJSF2(k1, k22) {\n      var jsf = [\n        [],\n        []\n      ];\n      k1 = k1.clone();\n      k22 = k22.clone();\n      var d1 = 0;\n      var d22 = 0;\n      var m8;\n      while (k1.cmpn(-d1) > 0 || k22.cmpn(-d22) > 0) {\n        var m14 = k1.andln(3) + d1 & 3;\n        var m24 = k22.andln(3) + d22 & 3;\n        if (m14 === 3)\n          m14 = -1;\n        if (m24 === 3)\n          m24 = -1;\n        var u1;\n        if ((m14 & 1) === 0) {\n          u1 = 0;\n        } else {\n          m8 = k1.andln(7) + d1 & 7;\n          if ((m8 === 3 || m8 === 5) && m24 === 2)\n            u1 = -m14;\n          else\n            u1 = m14;\n        }\n        jsf[0].push(u1);\n        var u22;\n        if ((m24 & 1) === 0) {\n          u22 = 0;\n        } else {\n          m8 = k22.andln(7) + d22 & 7;\n          if ((m8 === 3 || m8 === 5) && m14 === 2)\n            u22 = -m24;\n          else\n            u22 = m24;\n        }\n        jsf[1].push(u22);\n        if (2 * d1 === u1 + 1)\n          d1 = 1 - d1;\n        if (2 * d22 === u22 + 1)\n          d22 = 1 - d22;\n        k1.iushrn(1);\n        k22.iushrn(1);\n      }\n      return jsf;\n    }\n    utils.getJSF = getJSF2;\n    function cachedProperty(obj, name2, computer) {\n      var key2 = \"_\" + name2;\n      obj.prototype[name2] = function cachedProperty2() {\n        return this[key2] !== void 0 ? this[key2] : this[key2] = computer.call(this);\n      };\n    }\n    utils.cachedProperty = cachedProperty;\n    function parseBytes(bytes) {\n      return typeof bytes === \"string\" ? utils.toArray(bytes, \"hex\") : bytes;\n    }\n    utils.parseBytes = parseBytes;\n    function intFromLE(bytes) {\n      return new BN3(bytes, \"hex\", \"le\");\n    }\n    utils.intFromLE = intFromLE;\n  }\n});\n\n// node_modules/brorand/index.js\nvar require_brorand = __commonJS({\n  \"node_modules/brorand/index.js\"(exports, module) {\n    var r4;\n    module.exports = function rand2(len) {\n      if (!r4)\n        r4 = new Rand(null);\n      return r4.generate(len);\n    };\n    function Rand(rand2) {\n      this.rand = rand2;\n    }\n    module.exports.Rand = Rand;\n    Rand.prototype.generate = function generate2(len) {\n      return this._rand(len);\n    };\n    Rand.prototype._rand = function _rand(n5) {\n      if (this.rand.getBytes)\n        return this.rand.getBytes(n5);\n      var res = new Uint8Array(n5);\n      for (var i4 = 0; i4 < res.length; i4++)\n        res[i4] = this.rand.getByte();\n      return res;\n    };\n    if (typeof self === \"object\") {\n      if (self.crypto && self.crypto.getRandomValues) {\n        Rand.prototype._rand = function _rand(n5) {\n          var arr = new Uint8Array(n5);\n          self.crypto.getRandomValues(arr);\n          return arr;\n        };\n      } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n        Rand.prototype._rand = function _rand(n5) {\n          var arr = new Uint8Array(n5);\n          self.msCrypto.getRandomValues(arr);\n          return arr;\n        };\n      } else if (typeof window === \"object\") {\n        Rand.prototype._rand = function() {\n          throw new Error(\"Not implemented yet\");\n        };\n      }\n    } else {\n      try {\n        crypto2 = require_crypto();\n        if (typeof crypto2.randomBytes !== \"function\")\n          throw new Error(\"Not supported\");\n        Rand.prototype._rand = function _rand(n5) {\n          return crypto2.randomBytes(n5);\n        };\n      } catch (e2) {\n      }\n    }\n    var crypto2;\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/curve/base.js\nvar require_base = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/curve/base.js\"(exports, module) {\n    \"use strict\";\n    var BN3 = require_bn2();\n    var utils = require_utils4();\n    var getNAF2 = utils.getNAF;\n    var getJSF2 = utils.getJSF;\n    var assert2 = utils.assert;\n    function BaseCurve2(type, conf) {\n      this.type = type;\n      this.p = new BN3(conf.p, 16);\n      this.red = conf.prime ? BN3.red(conf.prime) : BN3.mont(this.p);\n      this.zero = new BN3(0).toRed(this.red);\n      this.one = new BN3(1).toRed(this.red);\n      this.two = new BN3(2).toRed(this.red);\n      this.n = conf.n && new BN3(conf.n, 16);\n      this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n      this._wnafT1 = new Array(4);\n      this._wnafT2 = new Array(4);\n      this._wnafT3 = new Array(4);\n      this._wnafT4 = new Array(4);\n      this._bitLength = this.n ? this.n.bitLength() : 0;\n      var adjustCount = this.n && this.p.div(this.n);\n      if (!adjustCount || adjustCount.cmpn(100) > 0) {\n        this.redN = null;\n      } else {\n        this._maxwellTrick = true;\n        this.redN = this.n.toRed(this.red);\n      }\n    }\n    module.exports = BaseCurve2;\n    BaseCurve2.prototype.point = function point3() {\n      throw new Error(\"Not implemented\");\n    };\n    BaseCurve2.prototype.validate = function validate5() {\n      throw new Error(\"Not implemented\");\n    };\n    BaseCurve2.prototype._fixedNafMul = function _fixedNafMul2(p3, k4) {\n      assert2(p3.precomputed);\n      var doubles = p3._getDoubles();\n      var naf = getNAF2(k4, 1, this._bitLength);\n      var I5 = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n      I5 /= 3;\n      var repr = [];\n      var j2;\n      var nafW;\n      for (j2 = 0; j2 < naf.length; j2 += doubles.step) {\n        nafW = 0;\n        for (var l4 = j2 + doubles.step - 1; l4 >= j2; l4--)\n          nafW = (nafW << 1) + naf[l4];\n        repr.push(nafW);\n      }\n      var a4 = this.jpoint(null, null, null);\n      var b5 = this.jpoint(null, null, null);\n      for (var i4 = I5; i4 > 0; i4--) {\n        for (j2 = 0; j2 < repr.length; j2++) {\n          nafW = repr[j2];\n          if (nafW === i4)\n            b5 = b5.mixedAdd(doubles.points[j2]);\n          else if (nafW === -i4)\n            b5 = b5.mixedAdd(doubles.points[j2].neg());\n        }\n        a4 = a4.add(b5);\n      }\n      return a4.toP();\n    };\n    BaseCurve2.prototype._wnafMul = function _wnafMul2(p3, k4) {\n      var w4 = 4;\n      var nafPoints = p3._getNAFPoints(w4);\n      w4 = nafPoints.wnd;\n      var wnd = nafPoints.points;\n      var naf = getNAF2(k4, w4, this._bitLength);\n      var acc = this.jpoint(null, null, null);\n      for (var i4 = naf.length - 1; i4 >= 0; i4--) {\n        for (var l4 = 0; i4 >= 0 && naf[i4] === 0; i4--)\n          l4++;\n        if (i4 >= 0)\n          l4++;\n        acc = acc.dblp(l4);\n        if (i4 < 0)\n          break;\n        var z6 = naf[i4];\n        assert2(z6 !== 0);\n        if (p3.type === \"affine\") {\n          if (z6 > 0)\n            acc = acc.mixedAdd(wnd[z6 - 1 >> 1]);\n          else\n            acc = acc.mixedAdd(wnd[-z6 - 1 >> 1].neg());\n        } else {\n          if (z6 > 0)\n            acc = acc.add(wnd[z6 - 1 >> 1]);\n          else\n            acc = acc.add(wnd[-z6 - 1 >> 1].neg());\n        }\n      }\n      return p3.type === \"affine\" ? acc.toP() : acc;\n    };\n    BaseCurve2.prototype._wnafMulAdd = function _wnafMulAdd2(defW, points, coeffs, len, jacobianResult) {\n      var wndWidth = this._wnafT1;\n      var wnd = this._wnafT2;\n      var naf = this._wnafT3;\n      var max = 0;\n      var i4;\n      var j2;\n      var p3;\n      for (i4 = 0; i4 < len; i4++) {\n        p3 = points[i4];\n        var nafPoints = p3._getNAFPoints(defW);\n        wndWidth[i4] = nafPoints.wnd;\n        wnd[i4] = nafPoints.points;\n      }\n      for (i4 = len - 1; i4 >= 1; i4 -= 2) {\n        var a4 = i4 - 1;\n        var b5 = i4;\n        if (wndWidth[a4] !== 1 || wndWidth[b5] !== 1) {\n          naf[a4] = getNAF2(coeffs[a4], wndWidth[a4], this._bitLength);\n          naf[b5] = getNAF2(coeffs[b5], wndWidth[b5], this._bitLength);\n          max = Math.max(naf[a4].length, max);\n          max = Math.max(naf[b5].length, max);\n          continue;\n        }\n        var comb = [\n          points[a4],\n          /* 1 */\n          null,\n          /* 3 */\n          null,\n          /* 5 */\n          points[b5]\n          /* 7 */\n        ];\n        if (points[a4].y.cmp(points[b5].y) === 0) {\n          comb[1] = points[a4].add(points[b5]);\n          comb[2] = points[a4].toJ().mixedAdd(points[b5].neg());\n        } else if (points[a4].y.cmp(points[b5].y.redNeg()) === 0) {\n          comb[1] = points[a4].toJ().mixedAdd(points[b5]);\n          comb[2] = points[a4].add(points[b5].neg());\n        } else {\n          comb[1] = points[a4].toJ().mixedAdd(points[b5]);\n          comb[2] = points[a4].toJ().mixedAdd(points[b5].neg());\n        }\n        var index = [\n          -3,\n          /* -1 -1 */\n          -1,\n          /* -1 0 */\n          -5,\n          /* -1 1 */\n          -7,\n          /* 0 -1 */\n          0,\n          /* 0 0 */\n          7,\n          /* 0 1 */\n          5,\n          /* 1 -1 */\n          1,\n          /* 1 0 */\n          3\n          /* 1 1 */\n        ];\n        var jsf = getJSF2(coeffs[a4], coeffs[b5]);\n        max = Math.max(jsf[0].length, max);\n        naf[a4] = new Array(max);\n        naf[b5] = new Array(max);\n        for (j2 = 0; j2 < max; j2++) {\n          var ja = jsf[0][j2] | 0;\n          var jb = jsf[1][j2] | 0;\n          naf[a4][j2] = index[(ja + 1) * 3 + (jb + 1)];\n          naf[b5][j2] = 0;\n          wnd[a4] = comb;\n        }\n      }\n      var acc = this.jpoint(null, null, null);\n      var tmp = this._wnafT4;\n      for (i4 = max; i4 >= 0; i4--) {\n        var k4 = 0;\n        while (i4 >= 0) {\n          var zero = true;\n          for (j2 = 0; j2 < len; j2++) {\n            tmp[j2] = naf[j2][i4] | 0;\n            if (tmp[j2] !== 0)\n              zero = false;\n          }\n          if (!zero)\n            break;\n          k4++;\n          i4--;\n        }\n        if (i4 >= 0)\n          k4++;\n        acc = acc.dblp(k4);\n        if (i4 < 0)\n          break;\n        for (j2 = 0; j2 < len; j2++) {\n          var z6 = tmp[j2];\n          p3;\n          if (z6 === 0)\n            continue;\n          else if (z6 > 0)\n            p3 = wnd[j2][z6 - 1 >> 1];\n          else if (z6 < 0)\n            p3 = wnd[j2][-z6 - 1 >> 1].neg();\n          if (p3.type === \"affine\")\n            acc = acc.mixedAdd(p3);\n          else\n            acc = acc.add(p3);\n        }\n      }\n      for (i4 = 0; i4 < len; i4++)\n        wnd[i4] = null;\n      if (jacobianResult)\n        return acc;\n      else\n        return acc.toP();\n    };\n    function BasePoint2(curve, type) {\n      this.curve = curve;\n      this.type = type;\n      this.precomputed = null;\n    }\n    BaseCurve2.BasePoint = BasePoint2;\n    BasePoint2.prototype.eq = function eq4() {\n      throw new Error(\"Not implemented\");\n    };\n    BasePoint2.prototype.validate = function validate5() {\n      return this.curve.validate(this);\n    };\n    BaseCurve2.prototype.decodePoint = function decodePoint2(bytes, enc) {\n      bytes = utils.toArray(bytes, enc);\n      var len = this.p.byteLength();\n      if ((bytes[0] === 4 || bytes[0] === 6 || bytes[0] === 7) && bytes.length - 1 === 2 * len) {\n        if (bytes[0] === 6)\n          assert2(bytes[bytes.length - 1] % 2 === 0);\n        else if (bytes[0] === 7)\n          assert2(bytes[bytes.length - 1] % 2 === 1);\n        var res = this.point(\n          bytes.slice(1, 1 + len),\n          bytes.slice(1 + len, 1 + 2 * len)\n        );\n        return res;\n      } else if ((bytes[0] === 2 || bytes[0] === 3) && bytes.length - 1 === len) {\n        return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 3);\n      }\n      throw new Error(\"Unknown point format\");\n    };\n    BasePoint2.prototype.encodeCompressed = function encodeCompressed2(enc) {\n      return this.encode(enc, true);\n    };\n    BasePoint2.prototype._encode = function _encode2(compact) {\n      var len = this.curve.p.byteLength();\n      var x6 = this.getX().toArray(\"be\", len);\n      if (compact)\n        return [this.getY().isEven() ? 2 : 3].concat(x6);\n      return [4].concat(x6, this.getY().toArray(\"be\", len));\n    };\n    BasePoint2.prototype.encode = function encode8(enc, compact) {\n      return utils.encode(this._encode(compact), enc);\n    };\n    BasePoint2.prototype.precompute = function precompute2(power) {\n      if (this.precomputed)\n        return this;\n      var precomputed = {\n        doubles: null,\n        naf: null,\n        beta: null\n      };\n      precomputed.naf = this._getNAFPoints(8);\n      precomputed.doubles = this._getDoubles(4, power);\n      precomputed.beta = this._getBeta();\n      this.precomputed = precomputed;\n      return this;\n    };\n    BasePoint2.prototype._hasDoubles = function _hasDoubles2(k4) {\n      if (!this.precomputed)\n        return false;\n      var doubles = this.precomputed.doubles;\n      if (!doubles)\n        return false;\n      return doubles.points.length >= Math.ceil((k4.bitLength() + 1) / doubles.step);\n    };\n    BasePoint2.prototype._getDoubles = function _getDoubles2(step, power) {\n      if (this.precomputed && this.precomputed.doubles)\n        return this.precomputed.doubles;\n      var doubles = [this];\n      var acc = this;\n      for (var i4 = 0; i4 < power; i4 += step) {\n        for (var j2 = 0; j2 < step; j2++)\n          acc = acc.dbl();\n        doubles.push(acc);\n      }\n      return {\n        step,\n        points: doubles\n      };\n    };\n    BasePoint2.prototype._getNAFPoints = function _getNAFPoints2(wnd) {\n      if (this.precomputed && this.precomputed.naf)\n        return this.precomputed.naf;\n      var res = [this];\n      var max = (1 << wnd) - 1;\n      var dbl3 = max === 1 ? null : this.dbl();\n      for (var i4 = 1; i4 < max; i4++)\n        res[i4] = res[i4 - 1].add(dbl3);\n      return {\n        wnd,\n        points: res\n      };\n    };\n    BasePoint2.prototype._getBeta = function _getBeta3() {\n      return null;\n    };\n    BasePoint2.prototype.dblp = function dblp3(k4) {\n      var r4 = this;\n      for (var i4 = 0; i4 < k4; i4++)\n        r4 = r4.dbl();\n      return r4;\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/curve/short.js\nvar require_short = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/curve/short.js\"(exports, module) {\n    \"use strict\";\n    var utils = require_utils4();\n    var BN3 = require_bn2();\n    var inherits = require_inherits_browser();\n    var Base = require_base();\n    var assert2 = utils.assert;\n    function ShortCurve2(conf) {\n      Base.call(this, \"short\", conf);\n      this.a = new BN3(conf.a, 16).toRed(this.red);\n      this.b = new BN3(conf.b, 16).toRed(this.red);\n      this.tinv = this.two.redInvm();\n      this.zeroA = this.a.fromRed().cmpn(0) === 0;\n      this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n      this.endo = this._getEndomorphism(conf);\n      this._endoWnafT1 = new Array(4);\n      this._endoWnafT2 = new Array(4);\n    }\n    inherits(ShortCurve2, Base);\n    module.exports = ShortCurve2;\n    ShortCurve2.prototype._getEndomorphism = function _getEndomorphism2(conf) {\n      if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n        return;\n      var beta;\n      var lambda;\n      if (conf.beta) {\n        beta = new BN3(conf.beta, 16).toRed(this.red);\n      } else {\n        var betas = this._getEndoRoots(this.p);\n        beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n        beta = beta.toRed(this.red);\n      }\n      if (conf.lambda) {\n        lambda = new BN3(conf.lambda, 16);\n      } else {\n        var lambdas = this._getEndoRoots(this.n);\n        if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n          lambda = lambdas[0];\n        } else {\n          lambda = lambdas[1];\n          assert2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n        }\n      }\n      var basis;\n      if (conf.basis) {\n        basis = conf.basis.map(function(vec) {\n          return {\n            a: new BN3(vec.a, 16),\n            b: new BN3(vec.b, 16)\n          };\n        });\n      } else {\n        basis = this._getEndoBasis(lambda);\n      }\n      return {\n        beta,\n        lambda,\n        basis\n      };\n    };\n    ShortCurve2.prototype._getEndoRoots = function _getEndoRoots2(num) {\n      var red = num === this.p ? this.red : BN3.mont(num);\n      var tinv = new BN3(2).toRed(red).redInvm();\n      var ntinv = tinv.redNeg();\n      var s3 = new BN3(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n      var l1 = ntinv.redAdd(s3).fromRed();\n      var l22 = ntinv.redSub(s3).fromRed();\n      return [l1, l22];\n    };\n    ShortCurve2.prototype._getEndoBasis = function _getEndoBasis2(lambda) {\n      var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n      var u3 = lambda;\n      var v5 = this.n.clone();\n      var x1 = new BN3(1);\n      var y1 = new BN3(0);\n      var x22 = new BN3(0);\n      var y22 = new BN3(1);\n      var a0;\n      var b0;\n      var a1;\n      var b1;\n      var a22;\n      var b22;\n      var prevR;\n      var i4 = 0;\n      var r4;\n      var x6;\n      while (u3.cmpn(0) !== 0) {\n        var q3 = v5.div(u3);\n        r4 = v5.sub(q3.mul(u3));\n        x6 = x22.sub(q3.mul(x1));\n        var y6 = y22.sub(q3.mul(y1));\n        if (!a1 && r4.cmp(aprxSqrt) < 0) {\n          a0 = prevR.neg();\n          b0 = x1;\n          a1 = r4.neg();\n          b1 = x6;\n        } else if (a1 && ++i4 === 2) {\n          break;\n        }\n        prevR = r4;\n        v5 = u3;\n        u3 = r4;\n        x22 = x1;\n        x1 = x6;\n        y22 = y1;\n        y1 = y6;\n      }\n      a22 = r4.neg();\n      b22 = x6;\n      var len1 = a1.sqr().add(b1.sqr());\n      var len2 = a22.sqr().add(b22.sqr());\n      if (len2.cmp(len1) >= 0) {\n        a22 = a0;\n        b22 = b0;\n      }\n      if (a1.negative) {\n        a1 = a1.neg();\n        b1 = b1.neg();\n      }\n      if (a22.negative) {\n        a22 = a22.neg();\n        b22 = b22.neg();\n      }\n      return [\n        { a: a1, b: b1 },\n        { a: a22, b: b22 }\n      ];\n    };\n    ShortCurve2.prototype._endoSplit = function _endoSplit2(k4) {\n      var basis = this.endo.basis;\n      var v1 = basis[0];\n      var v22 = basis[1];\n      var c1 = v22.b.mul(k4).divRound(this.n);\n      var c22 = v1.b.neg().mul(k4).divRound(this.n);\n      var p1 = c1.mul(v1.a);\n      var p22 = c22.mul(v22.a);\n      var q1 = c1.mul(v1.b);\n      var q22 = c22.mul(v22.b);\n      var k1 = k4.sub(p1).sub(p22);\n      var k22 = q1.add(q22).neg();\n      return { k1, k2: k22 };\n    };\n    ShortCurve2.prototype.pointFromX = function pointFromX2(x6, odd) {\n      x6 = new BN3(x6, 16);\n      if (!x6.red)\n        x6 = x6.toRed(this.red);\n      var y22 = x6.redSqr().redMul(x6).redIAdd(x6.redMul(this.a)).redIAdd(this.b);\n      var y6 = y22.redSqrt();\n      if (y6.redSqr().redSub(y22).cmp(this.zero) !== 0)\n        throw new Error(\"invalid point\");\n      var isOdd = y6.fromRed().isOdd();\n      if (odd && !isOdd || !odd && isOdd)\n        y6 = y6.redNeg();\n      return this.point(x6, y6);\n    };\n    ShortCurve2.prototype.validate = function validate5(point3) {\n      if (point3.inf)\n        return true;\n      var x6 = point3.x;\n      var y6 = point3.y;\n      var ax = this.a.redMul(x6);\n      var rhs = x6.redSqr().redMul(x6).redIAdd(ax).redIAdd(this.b);\n      return y6.redSqr().redISub(rhs).cmpn(0) === 0;\n    };\n    ShortCurve2.prototype._endoWnafMulAdd = function _endoWnafMulAdd2(points, coeffs, jacobianResult) {\n      var npoints = this._endoWnafT1;\n      var ncoeffs = this._endoWnafT2;\n      for (var i4 = 0; i4 < points.length; i4++) {\n        var split = this._endoSplit(coeffs[i4]);\n        var p3 = points[i4];\n        var beta = p3._getBeta();\n        if (split.k1.negative) {\n          split.k1.ineg();\n          p3 = p3.neg(true);\n        }\n        if (split.k2.negative) {\n          split.k2.ineg();\n          beta = beta.neg(true);\n        }\n        npoints[i4 * 2] = p3;\n        npoints[i4 * 2 + 1] = beta;\n        ncoeffs[i4 * 2] = split.k1;\n        ncoeffs[i4 * 2 + 1] = split.k2;\n      }\n      var res = this._wnafMulAdd(1, npoints, ncoeffs, i4 * 2, jacobianResult);\n      for (var j2 = 0; j2 < i4 * 2; j2++) {\n        npoints[j2] = null;\n        ncoeffs[j2] = null;\n      }\n      return res;\n    };\n    function Point2(curve, x6, y6, isRed) {\n      Base.BasePoint.call(this, curve, \"affine\");\n      if (x6 === null && y6 === null) {\n        this.x = null;\n        this.y = null;\n        this.inf = true;\n      } else {\n        this.x = new BN3(x6, 16);\n        this.y = new BN3(y6, 16);\n        if (isRed) {\n          this.x.forceRed(this.curve.red);\n          this.y.forceRed(this.curve.red);\n        }\n        if (!this.x.red)\n          this.x = this.x.toRed(this.curve.red);\n        if (!this.y.red)\n          this.y = this.y.toRed(this.curve.red);\n        this.inf = false;\n      }\n    }\n    inherits(Point2, Base.BasePoint);\n    ShortCurve2.prototype.point = function point3(x6, y6, isRed) {\n      return new Point2(this, x6, y6, isRed);\n    };\n    ShortCurve2.prototype.pointFromJSON = function pointFromJSON2(obj, red) {\n      return Point2.fromJSON(this, obj, red);\n    };\n    Point2.prototype._getBeta = function _getBeta3() {\n      if (!this.curve.endo)\n        return;\n      var pre = this.precomputed;\n      if (pre && pre.beta)\n        return pre.beta;\n      var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n      if (pre) {\n        var curve = this.curve;\n        var endoMul = function(p3) {\n          return curve.point(p3.x.redMul(curve.endo.beta), p3.y);\n        };\n        pre.beta = beta;\n        beta.precomputed = {\n          beta: null,\n          naf: pre.naf && {\n            wnd: pre.naf.wnd,\n            points: pre.naf.points.map(endoMul)\n          },\n          doubles: pre.doubles && {\n            step: pre.doubles.step,\n            points: pre.doubles.points.map(endoMul)\n          }\n        };\n      }\n      return beta;\n    };\n    Point2.prototype.toJSON = function toJSON2() {\n      if (!this.precomputed)\n        return [this.x, this.y];\n      return [this.x, this.y, this.precomputed && {\n        doubles: this.precomputed.doubles && {\n          step: this.precomputed.doubles.step,\n          points: this.precomputed.doubles.points.slice(1)\n        },\n        naf: this.precomputed.naf && {\n          wnd: this.precomputed.naf.wnd,\n          points: this.precomputed.naf.points.slice(1)\n        }\n      }];\n    };\n    Point2.fromJSON = function fromJSON2(curve, obj, red) {\n      if (typeof obj === \"string\")\n        obj = JSON.parse(obj);\n      var res = curve.point(obj[0], obj[1], red);\n      if (!obj[2])\n        return res;\n      function obj2point(obj2) {\n        return curve.point(obj2[0], obj2[1], red);\n      }\n      var pre = obj[2];\n      res.precomputed = {\n        beta: null,\n        doubles: pre.doubles && {\n          step: pre.doubles.step,\n          points: [res].concat(pre.doubles.points.map(obj2point))\n        },\n        naf: pre.naf && {\n          wnd: pre.naf.wnd,\n          points: [res].concat(pre.naf.points.map(obj2point))\n        }\n      };\n      return res;\n    };\n    Point2.prototype.inspect = function inspect4() {\n      if (this.isInfinity())\n        return \"<EC Point Infinity>\";\n      return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \">\";\n    };\n    Point2.prototype.isInfinity = function isInfinity3() {\n      return this.inf;\n    };\n    Point2.prototype.add = function add3(p3) {\n      if (this.inf)\n        return p3;\n      if (p3.inf)\n        return this;\n      if (this.eq(p3))\n        return this.dbl();\n      if (this.neg().eq(p3))\n        return this.curve.point(null, null);\n      if (this.x.cmp(p3.x) === 0)\n        return this.curve.point(null, null);\n      var c5 = this.y.redSub(p3.y);\n      if (c5.cmpn(0) !== 0)\n        c5 = c5.redMul(this.x.redSub(p3.x).redInvm());\n      var nx = c5.redSqr().redISub(this.x).redISub(p3.x);\n      var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n      return this.curve.point(nx, ny);\n    };\n    Point2.prototype.dbl = function dbl3() {\n      if (this.inf)\n        return this;\n      var ys1 = this.y.redAdd(this.y);\n      if (ys1.cmpn(0) === 0)\n        return this.curve.point(null, null);\n      var a4 = this.curve.a;\n      var x22 = this.x.redSqr();\n      var dyinv = ys1.redInvm();\n      var c5 = x22.redAdd(x22).redIAdd(x22).redIAdd(a4).redMul(dyinv);\n      var nx = c5.redSqr().redISub(this.x.redAdd(this.x));\n      var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n      return this.curve.point(nx, ny);\n    };\n    Point2.prototype.getX = function getX2() {\n      return this.x.fromRed();\n    };\n    Point2.prototype.getY = function getY2() {\n      return this.y.fromRed();\n    };\n    Point2.prototype.mul = function mul3(k4) {\n      k4 = new BN3(k4, 16);\n      if (this.isInfinity())\n        return this;\n      else if (this._hasDoubles(k4))\n        return this.curve._fixedNafMul(this, k4);\n      else if (this.curve.endo)\n        return this.curve._endoWnafMulAdd([this], [k4]);\n      else\n        return this.curve._wnafMul(this, k4);\n    };\n    Point2.prototype.mulAdd = function mulAdd2(k1, p22, k22) {\n      var points = [this, p22];\n      var coeffs = [k1, k22];\n      if (this.curve.endo)\n        return this.curve._endoWnafMulAdd(points, coeffs);\n      else\n        return this.curve._wnafMulAdd(1, points, coeffs, 2);\n    };\n    Point2.prototype.jmulAdd = function jmulAdd2(k1, p22, k22) {\n      var points = [this, p22];\n      var coeffs = [k1, k22];\n      if (this.curve.endo)\n        return this.curve._endoWnafMulAdd(points, coeffs, true);\n      else\n        return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n    };\n    Point2.prototype.eq = function eq4(p3) {\n      return this === p3 || this.inf === p3.inf && (this.inf || this.x.cmp(p3.x) === 0 && this.y.cmp(p3.y) === 0);\n    };\n    Point2.prototype.neg = function neg3(_precompute) {\n      if (this.inf)\n        return this;\n      var res = this.curve.point(this.x, this.y.redNeg());\n      if (_precompute && this.precomputed) {\n        var pre = this.precomputed;\n        var negate = function(p3) {\n          return p3.neg();\n        };\n        res.precomputed = {\n          naf: pre.naf && {\n            wnd: pre.naf.wnd,\n            points: pre.naf.points.map(negate)\n          },\n          doubles: pre.doubles && {\n            step: pre.doubles.step,\n            points: pre.doubles.points.map(negate)\n          }\n        };\n      }\n      return res;\n    };\n    Point2.prototype.toJ = function toJ2() {\n      if (this.inf)\n        return this.curve.jpoint(null, null, null);\n      var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n      return res;\n    };\n    function JPoint2(curve, x6, y6, z6) {\n      Base.BasePoint.call(this, curve, \"jacobian\");\n      if (x6 === null && y6 === null && z6 === null) {\n        this.x = this.curve.one;\n        this.y = this.curve.one;\n        this.z = new BN3(0);\n      } else {\n        this.x = new BN3(x6, 16);\n        this.y = new BN3(y6, 16);\n        this.z = new BN3(z6, 16);\n      }\n      if (!this.x.red)\n        this.x = this.x.toRed(this.curve.red);\n      if (!this.y.red)\n        this.y = this.y.toRed(this.curve.red);\n      if (!this.z.red)\n        this.z = this.z.toRed(this.curve.red);\n      this.zOne = this.z === this.curve.one;\n    }\n    inherits(JPoint2, Base.BasePoint);\n    ShortCurve2.prototype.jpoint = function jpoint2(x6, y6, z6) {\n      return new JPoint2(this, x6, y6, z6);\n    };\n    JPoint2.prototype.toP = function toP2() {\n      if (this.isInfinity())\n        return this.curve.point(null, null);\n      var zinv = this.z.redInvm();\n      var zinv2 = zinv.redSqr();\n      var ax = this.x.redMul(zinv2);\n      var ay = this.y.redMul(zinv2).redMul(zinv);\n      return this.curve.point(ax, ay);\n    };\n    JPoint2.prototype.neg = function neg3() {\n      return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n    };\n    JPoint2.prototype.add = function add3(p3) {\n      if (this.isInfinity())\n        return p3;\n      if (p3.isInfinity())\n        return this;\n      var pz2 = p3.z.redSqr();\n      var z22 = this.z.redSqr();\n      var u1 = this.x.redMul(pz2);\n      var u22 = p3.x.redMul(z22);\n      var s1 = this.y.redMul(pz2.redMul(p3.z));\n      var s22 = p3.y.redMul(z22.redMul(this.z));\n      var h5 = u1.redSub(u22);\n      var r4 = s1.redSub(s22);\n      if (h5.cmpn(0) === 0) {\n        if (r4.cmpn(0) !== 0)\n          return this.curve.jpoint(null, null, null);\n        else\n          return this.dbl();\n      }\n      var h22 = h5.redSqr();\n      var h32 = h22.redMul(h5);\n      var v5 = u1.redMul(h22);\n      var nx = r4.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n      var ny = r4.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n      var nz = this.z.redMul(p3.z).redMul(h5);\n      return this.curve.jpoint(nx, ny, nz);\n    };\n    JPoint2.prototype.mixedAdd = function mixedAdd2(p3) {\n      if (this.isInfinity())\n        return p3.toJ();\n      if (p3.isInfinity())\n        return this;\n      var z22 = this.z.redSqr();\n      var u1 = this.x;\n      var u22 = p3.x.redMul(z22);\n      var s1 = this.y;\n      var s22 = p3.y.redMul(z22).redMul(this.z);\n      var h5 = u1.redSub(u22);\n      var r4 = s1.redSub(s22);\n      if (h5.cmpn(0) === 0) {\n        if (r4.cmpn(0) !== 0)\n          return this.curve.jpoint(null, null, null);\n        else\n          return this.dbl();\n      }\n      var h22 = h5.redSqr();\n      var h32 = h22.redMul(h5);\n      var v5 = u1.redMul(h22);\n      var nx = r4.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n      var ny = r4.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n      var nz = this.z.redMul(h5);\n      return this.curve.jpoint(nx, ny, nz);\n    };\n    JPoint2.prototype.dblp = function dblp3(pow) {\n      if (pow === 0)\n        return this;\n      if (this.isInfinity())\n        return this;\n      if (!pow)\n        return this.dbl();\n      var i4;\n      if (this.curve.zeroA || this.curve.threeA) {\n        var r4 = this;\n        for (i4 = 0; i4 < pow; i4++)\n          r4 = r4.dbl();\n        return r4;\n      }\n      var a4 = this.curve.a;\n      var tinv = this.curve.tinv;\n      var jx = this.x;\n      var jy = this.y;\n      var jz = this.z;\n      var jz4 = jz.redSqr().redSqr();\n      var jyd = jy.redAdd(jy);\n      for (i4 = 0; i4 < pow; i4++) {\n        var jx2 = jx.redSqr();\n        var jyd2 = jyd.redSqr();\n        var jyd4 = jyd2.redSqr();\n        var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a4.redMul(jz4));\n        var t1 = jx.redMul(jyd2);\n        var nx = c5.redSqr().redISub(t1.redAdd(t1));\n        var t2 = t1.redISub(nx);\n        var dny = c5.redMul(t2);\n        dny = dny.redIAdd(dny).redISub(jyd4);\n        var nz = jyd.redMul(jz);\n        if (i4 + 1 < pow)\n          jz4 = jz4.redMul(jyd4);\n        jx = nx;\n        jz = nz;\n        jyd = dny;\n      }\n      return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n    };\n    JPoint2.prototype.dbl = function dbl3() {\n      if (this.isInfinity())\n        return this;\n      if (this.curve.zeroA)\n        return this._zeroDbl();\n      else if (this.curve.threeA)\n        return this._threeDbl();\n      else\n        return this._dbl();\n    };\n    JPoint2.prototype._zeroDbl = function _zeroDbl2() {\n      var nx;\n      var ny;\n      var nz;\n      if (this.zOne) {\n        var xx = this.x.redSqr();\n        var yy = this.y.redSqr();\n        var yyyy = yy.redSqr();\n        var s3 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n        s3 = s3.redIAdd(s3);\n        var m2 = xx.redAdd(xx).redIAdd(xx);\n        var t = m2.redSqr().redISub(s3).redISub(s3);\n        var yyyy8 = yyyy.redIAdd(yyyy);\n        yyyy8 = yyyy8.redIAdd(yyyy8);\n        yyyy8 = yyyy8.redIAdd(yyyy8);\n        nx = t;\n        ny = m2.redMul(s3.redISub(t)).redISub(yyyy8);\n        nz = this.y.redAdd(this.y);\n      } else {\n        var a4 = this.x.redSqr();\n        var b5 = this.y.redSqr();\n        var c5 = b5.redSqr();\n        var d3 = this.x.redAdd(b5).redSqr().redISub(a4).redISub(c5);\n        d3 = d3.redIAdd(d3);\n        var e2 = a4.redAdd(a4).redIAdd(a4);\n        var f4 = e2.redSqr();\n        var c8 = c5.redIAdd(c5);\n        c8 = c8.redIAdd(c8);\n        c8 = c8.redIAdd(c8);\n        nx = f4.redISub(d3).redISub(d3);\n        ny = e2.redMul(d3.redISub(nx)).redISub(c8);\n        nz = this.y.redMul(this.z);\n        nz = nz.redIAdd(nz);\n      }\n      return this.curve.jpoint(nx, ny, nz);\n    };\n    JPoint2.prototype._threeDbl = function _threeDbl2() {\n      var nx;\n      var ny;\n      var nz;\n      if (this.zOne) {\n        var xx = this.x.redSqr();\n        var yy = this.y.redSqr();\n        var yyyy = yy.redSqr();\n        var s3 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n        s3 = s3.redIAdd(s3);\n        var m2 = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n        var t = m2.redSqr().redISub(s3).redISub(s3);\n        nx = t;\n        var yyyy8 = yyyy.redIAdd(yyyy);\n        yyyy8 = yyyy8.redIAdd(yyyy8);\n        yyyy8 = yyyy8.redIAdd(yyyy8);\n        ny = m2.redMul(s3.redISub(t)).redISub(yyyy8);\n        nz = this.y.redAdd(this.y);\n      } else {\n        var delta = this.z.redSqr();\n        var gamma = this.y.redSqr();\n        var beta = this.x.redMul(gamma);\n        var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n        alpha = alpha.redAdd(alpha).redIAdd(alpha);\n        var beta4 = beta.redIAdd(beta);\n        beta4 = beta4.redIAdd(beta4);\n        var beta8 = beta4.redAdd(beta4);\n        nx = alpha.redSqr().redISub(beta8);\n        nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n        var ggamma8 = gamma.redSqr();\n        ggamma8 = ggamma8.redIAdd(ggamma8);\n        ggamma8 = ggamma8.redIAdd(ggamma8);\n        ggamma8 = ggamma8.redIAdd(ggamma8);\n        ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n      }\n      return this.curve.jpoint(nx, ny, nz);\n    };\n    JPoint2.prototype._dbl = function _dbl2() {\n      var a4 = this.curve.a;\n      var jx = this.x;\n      var jy = this.y;\n      var jz = this.z;\n      var jz4 = jz.redSqr().redSqr();\n      var jx2 = jx.redSqr();\n      var jy2 = jy.redSqr();\n      var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a4.redMul(jz4));\n      var jxd4 = jx.redAdd(jx);\n      jxd4 = jxd4.redIAdd(jxd4);\n      var t1 = jxd4.redMul(jy2);\n      var nx = c5.redSqr().redISub(t1.redAdd(t1));\n      var t2 = t1.redISub(nx);\n      var jyd8 = jy2.redSqr();\n      jyd8 = jyd8.redIAdd(jyd8);\n      jyd8 = jyd8.redIAdd(jyd8);\n      jyd8 = jyd8.redIAdd(jyd8);\n      var ny = c5.redMul(t2).redISub(jyd8);\n      var nz = jy.redAdd(jy).redMul(jz);\n      return this.curve.jpoint(nx, ny, nz);\n    };\n    JPoint2.prototype.trpl = function trpl2() {\n      if (!this.curve.zeroA)\n        return this.dbl().add(this);\n      var xx = this.x.redSqr();\n      var yy = this.y.redSqr();\n      var zz = this.z.redSqr();\n      var yyyy = yy.redSqr();\n      var m2 = xx.redAdd(xx).redIAdd(xx);\n      var mm = m2.redSqr();\n      var e2 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n      e2 = e2.redIAdd(e2);\n      e2 = e2.redAdd(e2).redIAdd(e2);\n      e2 = e2.redISub(mm);\n      var ee3 = e2.redSqr();\n      var t = yyyy.redIAdd(yyyy);\n      t = t.redIAdd(t);\n      t = t.redIAdd(t);\n      t = t.redIAdd(t);\n      var u3 = m2.redIAdd(e2).redSqr().redISub(mm).redISub(ee3).redISub(t);\n      var yyu4 = yy.redMul(u3);\n      yyu4 = yyu4.redIAdd(yyu4);\n      yyu4 = yyu4.redIAdd(yyu4);\n      var nx = this.x.redMul(ee3).redISub(yyu4);\n      nx = nx.redIAdd(nx);\n      nx = nx.redIAdd(nx);\n      var ny = this.y.redMul(u3.redMul(t.redISub(u3)).redISub(e2.redMul(ee3)));\n      ny = ny.redIAdd(ny);\n      ny = ny.redIAdd(ny);\n      ny = ny.redIAdd(ny);\n      var nz = this.z.redAdd(e2).redSqr().redISub(zz).redISub(ee3);\n      return this.curve.jpoint(nx, ny, nz);\n    };\n    JPoint2.prototype.mul = function mul3(k4, kbase) {\n      k4 = new BN3(k4, kbase);\n      return this.curve._wnafMul(this, k4);\n    };\n    JPoint2.prototype.eq = function eq4(p3) {\n      if (p3.type === \"affine\")\n        return this.eq(p3.toJ());\n      if (this === p3)\n        return true;\n      var z22 = this.z.redSqr();\n      var pz2 = p3.z.redSqr();\n      if (this.x.redMul(pz2).redISub(p3.x.redMul(z22)).cmpn(0) !== 0)\n        return false;\n      var z32 = z22.redMul(this.z);\n      var pz3 = pz2.redMul(p3.z);\n      return this.y.redMul(pz3).redISub(p3.y.redMul(z32)).cmpn(0) === 0;\n    };\n    JPoint2.prototype.eqXToP = function eqXToP2(x6) {\n      var zs2 = this.z.redSqr();\n      var rx = x6.toRed(this.curve.red).redMul(zs2);\n      if (this.x.cmp(rx) === 0)\n        return true;\n      var xc = x6.clone();\n      var t = this.curve.redN.redMul(zs2);\n      for (; ; ) {\n        xc.iadd(this.curve.n);\n        if (xc.cmp(this.curve.p) >= 0)\n          return false;\n        rx.redIAdd(t);\n        if (this.x.cmp(rx) === 0)\n          return true;\n      }\n    };\n    JPoint2.prototype.inspect = function inspect4() {\n      if (this.isInfinity())\n        return \"<EC JPoint Infinity>\";\n      return \"<EC JPoint x: \" + this.x.toString(16, 2) + \" y: \" + this.y.toString(16, 2) + \" z: \" + this.z.toString(16, 2) + \">\";\n    };\n    JPoint2.prototype.isInfinity = function isInfinity3() {\n      return this.z.cmpn(0) === 0;\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/curve/mont.js\nvar require_mont = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/curve/mont.js\"(exports, module) {\n    \"use strict\";\n    var BN3 = require_bn2();\n    var inherits = require_inherits_browser();\n    var Base = require_base();\n    var utils = require_utils4();\n    function MontCurve(conf) {\n      Base.call(this, \"mont\", conf);\n      this.a = new BN3(conf.a, 16).toRed(this.red);\n      this.b = new BN3(conf.b, 16).toRed(this.red);\n      this.i4 = new BN3(4).toRed(this.red).redInvm();\n      this.two = new BN3(2).toRed(this.red);\n      this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n    }\n    inherits(MontCurve, Base);\n    module.exports = MontCurve;\n    MontCurve.prototype.validate = function validate5(point3) {\n      var x6 = point3.normalize().x;\n      var x22 = x6.redSqr();\n      var rhs = x22.redMul(x6).redAdd(x22.redMul(this.a)).redAdd(x6);\n      var y6 = rhs.redSqrt();\n      return y6.redSqr().cmp(rhs) === 0;\n    };\n    function Point2(curve, x6, z6) {\n      Base.BasePoint.call(this, curve, \"projective\");\n      if (x6 === null && z6 === null) {\n        this.x = this.curve.one;\n        this.z = this.curve.zero;\n      } else {\n        this.x = new BN3(x6, 16);\n        this.z = new BN3(z6, 16);\n        if (!this.x.red)\n          this.x = this.x.toRed(this.curve.red);\n        if (!this.z.red)\n          this.z = this.z.toRed(this.curve.red);\n      }\n    }\n    inherits(Point2, Base.BasePoint);\n    MontCurve.prototype.decodePoint = function decodePoint2(bytes, enc) {\n      return this.point(utils.toArray(bytes, enc), 1);\n    };\n    MontCurve.prototype.point = function point3(x6, z6) {\n      return new Point2(this, x6, z6);\n    };\n    MontCurve.prototype.pointFromJSON = function pointFromJSON2(obj) {\n      return Point2.fromJSON(this, obj);\n    };\n    Point2.prototype.precompute = function precompute2() {\n    };\n    Point2.prototype._encode = function _encode2() {\n      return this.getX().toArray(\"be\", this.curve.p.byteLength());\n    };\n    Point2.fromJSON = function fromJSON2(curve, obj) {\n      return new Point2(curve, obj[0], obj[1] || curve.one);\n    };\n    Point2.prototype.inspect = function inspect4() {\n      if (this.isInfinity())\n        return \"<EC Point Infinity>\";\n      return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n    };\n    Point2.prototype.isInfinity = function isInfinity3() {\n      return this.z.cmpn(0) === 0;\n    };\n    Point2.prototype.dbl = function dbl3() {\n      var a4 = this.x.redAdd(this.z);\n      var aa = a4.redSqr();\n      var b5 = this.x.redSub(this.z);\n      var bb = b5.redSqr();\n      var c5 = aa.redSub(bb);\n      var nx = aa.redMul(bb);\n      var nz = c5.redMul(bb.redAdd(this.curve.a24.redMul(c5)));\n      return this.curve.point(nx, nz);\n    };\n    Point2.prototype.add = function add3() {\n      throw new Error(\"Not supported on Montgomery curve\");\n    };\n    Point2.prototype.diffAdd = function diffAdd(p3, diff) {\n      var a4 = this.x.redAdd(this.z);\n      var b5 = this.x.redSub(this.z);\n      var c5 = p3.x.redAdd(p3.z);\n      var d3 = p3.x.redSub(p3.z);\n      var da = d3.redMul(a4);\n      var cb = c5.redMul(b5);\n      var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n      var nz = diff.x.redMul(da.redISub(cb).redSqr());\n      return this.curve.point(nx, nz);\n    };\n    Point2.prototype.mul = function mul3(k4) {\n      var t = k4.clone();\n      var a4 = this;\n      var b5 = this.curve.point(null, null);\n      var c5 = this;\n      for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n        bits.push(t.andln(1));\n      for (var i4 = bits.length - 1; i4 >= 0; i4--) {\n        if (bits[i4] === 0) {\n          a4 = a4.diffAdd(b5, c5);\n          b5 = b5.dbl();\n        } else {\n          b5 = a4.diffAdd(b5, c5);\n          a4 = a4.dbl();\n        }\n      }\n      return b5;\n    };\n    Point2.prototype.mulAdd = function mulAdd2() {\n      throw new Error(\"Not supported on Montgomery curve\");\n    };\n    Point2.prototype.jumlAdd = function jumlAdd() {\n      throw new Error(\"Not supported on Montgomery curve\");\n    };\n    Point2.prototype.eq = function eq4(other) {\n      return this.getX().cmp(other.getX()) === 0;\n    };\n    Point2.prototype.normalize = function normalize() {\n      this.x = this.x.redMul(this.z.redInvm());\n      this.z = this.curve.one;\n      return this;\n    };\n    Point2.prototype.getX = function getX2() {\n      this.normalize();\n      return this.x.fromRed();\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/curve/edwards.js\nvar require_edwards = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/curve/edwards.js\"(exports, module) {\n    \"use strict\";\n    var utils = require_utils4();\n    var BN3 = require_bn2();\n    var inherits = require_inherits_browser();\n    var Base = require_base();\n    var assert2 = utils.assert;\n    function EdwardsCurve(conf) {\n      this.twisted = (conf.a | 0) !== 1;\n      this.mOneA = this.twisted && (conf.a | 0) === -1;\n      this.extended = this.mOneA;\n      Base.call(this, \"edwards\", conf);\n      this.a = new BN3(conf.a, 16).umod(this.red.m);\n      this.a = this.a.toRed(this.red);\n      this.c = new BN3(conf.c, 16).toRed(this.red);\n      this.c2 = this.c.redSqr();\n      this.d = new BN3(conf.d, 16).toRed(this.red);\n      this.dd = this.d.redAdd(this.d);\n      assert2(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n      this.oneC = (conf.c | 0) === 1;\n    }\n    inherits(EdwardsCurve, Base);\n    module.exports = EdwardsCurve;\n    EdwardsCurve.prototype._mulA = function _mulA(num) {\n      if (this.mOneA)\n        return num.redNeg();\n      else\n        return this.a.redMul(num);\n    };\n    EdwardsCurve.prototype._mulC = function _mulC(num) {\n      if (this.oneC)\n        return num;\n      else\n        return this.c.redMul(num);\n    };\n    EdwardsCurve.prototype.jpoint = function jpoint2(x6, y6, z6, t) {\n      return this.point(x6, y6, z6, t);\n    };\n    EdwardsCurve.prototype.pointFromX = function pointFromX2(x6, odd) {\n      x6 = new BN3(x6, 16);\n      if (!x6.red)\n        x6 = x6.toRed(this.red);\n      var x22 = x6.redSqr();\n      var rhs = this.c2.redSub(this.a.redMul(x22));\n      var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x22));\n      var y22 = rhs.redMul(lhs.redInvm());\n      var y6 = y22.redSqrt();\n      if (y6.redSqr().redSub(y22).cmp(this.zero) !== 0)\n        throw new Error(\"invalid point\");\n      var isOdd = y6.fromRed().isOdd();\n      if (odd && !isOdd || !odd && isOdd)\n        y6 = y6.redNeg();\n      return this.point(x6, y6);\n    };\n    EdwardsCurve.prototype.pointFromY = function pointFromY(y6, odd) {\n      y6 = new BN3(y6, 16);\n      if (!y6.red)\n        y6 = y6.toRed(this.red);\n      var y22 = y6.redSqr();\n      var lhs = y22.redSub(this.c2);\n      var rhs = y22.redMul(this.d).redMul(this.c2).redSub(this.a);\n      var x22 = lhs.redMul(rhs.redInvm());\n      if (x22.cmp(this.zero) === 0) {\n        if (odd)\n          throw new Error(\"invalid point\");\n        else\n          return this.point(this.zero, y6);\n      }\n      var x6 = x22.redSqrt();\n      if (x6.redSqr().redSub(x22).cmp(this.zero) !== 0)\n        throw new Error(\"invalid point\");\n      if (x6.fromRed().isOdd() !== odd)\n        x6 = x6.redNeg();\n      return this.point(x6, y6);\n    };\n    EdwardsCurve.prototype.validate = function validate5(point3) {\n      if (point3.isInfinity())\n        return true;\n      point3.normalize();\n      var x22 = point3.x.redSqr();\n      var y22 = point3.y.redSqr();\n      var lhs = x22.redMul(this.a).redAdd(y22);\n      var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x22).redMul(y22)));\n      return lhs.cmp(rhs) === 0;\n    };\n    function Point2(curve, x6, y6, z6, t) {\n      Base.BasePoint.call(this, curve, \"projective\");\n      if (x6 === null && y6 === null && z6 === null) {\n        this.x = this.curve.zero;\n        this.y = this.curve.one;\n        this.z = this.curve.one;\n        this.t = this.curve.zero;\n        this.zOne = true;\n      } else {\n        this.x = new BN3(x6, 16);\n        this.y = new BN3(y6, 16);\n        this.z = z6 ? new BN3(z6, 16) : this.curve.one;\n        this.t = t && new BN3(t, 16);\n        if (!this.x.red)\n          this.x = this.x.toRed(this.curve.red);\n        if (!this.y.red)\n          this.y = this.y.toRed(this.curve.red);\n        if (!this.z.red)\n          this.z = this.z.toRed(this.curve.red);\n        if (this.t && !this.t.red)\n          this.t = this.t.toRed(this.curve.red);\n        this.zOne = this.z === this.curve.one;\n        if (this.curve.extended && !this.t) {\n          this.t = this.x.redMul(this.y);\n          if (!this.zOne)\n            this.t = this.t.redMul(this.z.redInvm());\n        }\n      }\n    }\n    inherits(Point2, Base.BasePoint);\n    EdwardsCurve.prototype.pointFromJSON = function pointFromJSON2(obj) {\n      return Point2.fromJSON(this, obj);\n    };\n    EdwardsCurve.prototype.point = function point3(x6, y6, z6, t) {\n      return new Point2(this, x6, y6, z6, t);\n    };\n    Point2.fromJSON = function fromJSON2(curve, obj) {\n      return new Point2(curve, obj[0], obj[1], obj[2]);\n    };\n    Point2.prototype.inspect = function inspect4() {\n      if (this.isInfinity())\n        return \"<EC Point Infinity>\";\n      return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \" z: \" + this.z.fromRed().toString(16, 2) + \">\";\n    };\n    Point2.prototype.isInfinity = function isInfinity3() {\n      return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);\n    };\n    Point2.prototype._extDbl = function _extDbl() {\n      var a4 = this.x.redSqr();\n      var b5 = this.y.redSqr();\n      var c5 = this.z.redSqr();\n      c5 = c5.redIAdd(c5);\n      var d3 = this.curve._mulA(a4);\n      var e2 = this.x.redAdd(this.y).redSqr().redISub(a4).redISub(b5);\n      var g4 = d3.redAdd(b5);\n      var f4 = g4.redSub(c5);\n      var h5 = d3.redSub(b5);\n      var nx = e2.redMul(f4);\n      var ny = g4.redMul(h5);\n      var nt3 = e2.redMul(h5);\n      var nz = f4.redMul(g4);\n      return this.curve.point(nx, ny, nz, nt3);\n    };\n    Point2.prototype._projDbl = function _projDbl() {\n      var b5 = this.x.redAdd(this.y).redSqr();\n      var c5 = this.x.redSqr();\n      var d3 = this.y.redSqr();\n      var nx;\n      var ny;\n      var nz;\n      var e2;\n      var h5;\n      var j2;\n      if (this.curve.twisted) {\n        e2 = this.curve._mulA(c5);\n        var f4 = e2.redAdd(d3);\n        if (this.zOne) {\n          nx = b5.redSub(c5).redSub(d3).redMul(f4.redSub(this.curve.two));\n          ny = f4.redMul(e2.redSub(d3));\n          nz = f4.redSqr().redSub(f4).redSub(f4);\n        } else {\n          h5 = this.z.redSqr();\n          j2 = f4.redSub(h5).redISub(h5);\n          nx = b5.redSub(c5).redISub(d3).redMul(j2);\n          ny = f4.redMul(e2.redSub(d3));\n          nz = f4.redMul(j2);\n        }\n      } else {\n        e2 = c5.redAdd(d3);\n        h5 = this.curve._mulC(this.z).redSqr();\n        j2 = e2.redSub(h5).redSub(h5);\n        nx = this.curve._mulC(b5.redISub(e2)).redMul(j2);\n        ny = this.curve._mulC(e2).redMul(c5.redISub(d3));\n        nz = e2.redMul(j2);\n      }\n      return this.curve.point(nx, ny, nz);\n    };\n    Point2.prototype.dbl = function dbl3() {\n      if (this.isInfinity())\n        return this;\n      if (this.curve.extended)\n        return this._extDbl();\n      else\n        return this._projDbl();\n    };\n    Point2.prototype._extAdd = function _extAdd(p3) {\n      var a4 = this.y.redSub(this.x).redMul(p3.y.redSub(p3.x));\n      var b5 = this.y.redAdd(this.x).redMul(p3.y.redAdd(p3.x));\n      var c5 = this.t.redMul(this.curve.dd).redMul(p3.t);\n      var d3 = this.z.redMul(p3.z.redAdd(p3.z));\n      var e2 = b5.redSub(a4);\n      var f4 = d3.redSub(c5);\n      var g4 = d3.redAdd(c5);\n      var h5 = b5.redAdd(a4);\n      var nx = e2.redMul(f4);\n      var ny = g4.redMul(h5);\n      var nt3 = e2.redMul(h5);\n      var nz = f4.redMul(g4);\n      return this.curve.point(nx, ny, nz, nt3);\n    };\n    Point2.prototype._projAdd = function _projAdd(p3) {\n      var a4 = this.z.redMul(p3.z);\n      var b5 = a4.redSqr();\n      var c5 = this.x.redMul(p3.x);\n      var d3 = this.y.redMul(p3.y);\n      var e2 = this.curve.d.redMul(c5).redMul(d3);\n      var f4 = b5.redSub(e2);\n      var g4 = b5.redAdd(e2);\n      var tmp = this.x.redAdd(this.y).redMul(p3.x.redAdd(p3.y)).redISub(c5).redISub(d3);\n      var nx = a4.redMul(f4).redMul(tmp);\n      var ny;\n      var nz;\n      if (this.curve.twisted) {\n        ny = a4.redMul(g4).redMul(d3.redSub(this.curve._mulA(c5)));\n        nz = f4.redMul(g4);\n      } else {\n        ny = a4.redMul(g4).redMul(d3.redSub(c5));\n        nz = this.curve._mulC(f4).redMul(g4);\n      }\n      return this.curve.point(nx, ny, nz);\n    };\n    Point2.prototype.add = function add3(p3) {\n      if (this.isInfinity())\n        return p3;\n      if (p3.isInfinity())\n        return this;\n      if (this.curve.extended)\n        return this._extAdd(p3);\n      else\n        return this._projAdd(p3);\n    };\n    Point2.prototype.mul = function mul3(k4) {\n      if (this._hasDoubles(k4))\n        return this.curve._fixedNafMul(this, k4);\n      else\n        return this.curve._wnafMul(this, k4);\n    };\n    Point2.prototype.mulAdd = function mulAdd2(k1, p3, k22) {\n      return this.curve._wnafMulAdd(1, [this, p3], [k1, k22], 2, false);\n    };\n    Point2.prototype.jmulAdd = function jmulAdd2(k1, p3, k22) {\n      return this.curve._wnafMulAdd(1, [this, p3], [k1, k22], 2, true);\n    };\n    Point2.prototype.normalize = function normalize() {\n      if (this.zOne)\n        return this;\n      var zi2 = this.z.redInvm();\n      this.x = this.x.redMul(zi2);\n      this.y = this.y.redMul(zi2);\n      if (this.t)\n        this.t = this.t.redMul(zi2);\n      this.z = this.curve.one;\n      this.zOne = true;\n      return this;\n    };\n    Point2.prototype.neg = function neg3() {\n      return this.curve.point(\n        this.x.redNeg(),\n        this.y,\n        this.z,\n        this.t && this.t.redNeg()\n      );\n    };\n    Point2.prototype.getX = function getX2() {\n      this.normalize();\n      return this.x.fromRed();\n    };\n    Point2.prototype.getY = function getY2() {\n      this.normalize();\n      return this.y.fromRed();\n    };\n    Point2.prototype.eq = function eq4(other) {\n      return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n    };\n    Point2.prototype.eqXToP = function eqXToP2(x6) {\n      var rx = x6.toRed(this.curve.red).redMul(this.z);\n      if (this.x.cmp(rx) === 0)\n        return true;\n      var xc = x6.clone();\n      var t = this.curve.redN.redMul(this.z);\n      for (; ; ) {\n        xc.iadd(this.curve.n);\n        if (xc.cmp(this.curve.p) >= 0)\n          return false;\n        rx.redIAdd(t);\n        if (this.x.cmp(rx) === 0)\n          return true;\n      }\n    };\n    Point2.prototype.toP = Point2.prototype.normalize;\n    Point2.prototype.mixedAdd = Point2.prototype.add;\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/curve/index.js\nvar require_curve = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/curve/index.js\"(exports) {\n    \"use strict\";\n    var curve = exports;\n    curve.base = require_base();\n    curve.short = require_short();\n    curve.mont = require_mont();\n    curve.edwards = require_edwards();\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js\nvar require_secp256k1 = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js\"(exports, module) {\n    module.exports = {\n      doubles: {\n        step: 4,\n        points: [\n          [\n            \"e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a\",\n            \"f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821\"\n          ],\n          [\n            \"8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508\",\n            \"11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf\"\n          ],\n          [\n            \"175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739\",\n            \"d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695\"\n          ],\n          [\n            \"363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640\",\n            \"4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9\"\n          ],\n          [\n            \"8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c\",\n            \"4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36\"\n          ],\n          [\n            \"723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda\",\n            \"96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f\"\n          ],\n          [\n            \"eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa\",\n            \"5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999\"\n          ],\n          [\n            \"100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0\",\n            \"cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09\"\n          ],\n          [\n            \"e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d\",\n            \"9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d\"\n          ],\n          [\n            \"feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d\",\n            \"e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088\"\n          ],\n          [\n            \"da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1\",\n            \"9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d\"\n          ],\n          [\n            \"53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0\",\n            \"5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8\"\n          ],\n          [\n            \"8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047\",\n            \"10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a\"\n          ],\n          [\n            \"385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862\",\n            \"283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453\"\n          ],\n          [\n            \"6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7\",\n            \"7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160\"\n          ],\n          [\n            \"3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd\",\n            \"56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0\"\n          ],\n          [\n            \"85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83\",\n            \"7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6\"\n          ],\n          [\n            \"948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a\",\n            \"53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589\"\n          ],\n          [\n            \"6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8\",\n            \"bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17\"\n          ],\n          [\n            \"e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d\",\n            \"4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda\"\n          ],\n          [\n            \"e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725\",\n            \"7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd\"\n          ],\n          [\n            \"213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754\",\n            \"4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2\"\n          ],\n          [\n            \"4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c\",\n            \"17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6\"\n          ],\n          [\n            \"fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6\",\n            \"6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f\"\n          ],\n          [\n            \"76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39\",\n            \"c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01\"\n          ],\n          [\n            \"c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891\",\n            \"893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3\"\n          ],\n          [\n            \"d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b\",\n            \"febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f\"\n          ],\n          [\n            \"b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03\",\n            \"2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7\"\n          ],\n          [\n            \"e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d\",\n            \"eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78\"\n          ],\n          [\n            \"a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070\",\n            \"7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1\"\n          ],\n          [\n            \"90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4\",\n            \"e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150\"\n          ],\n          [\n            \"8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da\",\n            \"662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82\"\n          ],\n          [\n            \"e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11\",\n            \"1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc\"\n          ],\n          [\n            \"8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e\",\n            \"efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b\"\n          ],\n          [\n            \"e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41\",\n            \"2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51\"\n          ],\n          [\n            \"b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef\",\n            \"67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45\"\n          ],\n          [\n            \"d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8\",\n            \"db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120\"\n          ],\n          [\n            \"324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d\",\n            \"648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84\"\n          ],\n          [\n            \"4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96\",\n            \"35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d\"\n          ],\n          [\n            \"9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd\",\n            \"ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d\"\n          ],\n          [\n            \"6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5\",\n            \"9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8\"\n          ],\n          [\n            \"a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266\",\n            \"40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8\"\n          ],\n          [\n            \"7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71\",\n            \"34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac\"\n          ],\n          [\n            \"928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac\",\n            \"c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f\"\n          ],\n          [\n            \"85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751\",\n            \"1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962\"\n          ],\n          [\n            \"ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e\",\n            \"493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907\"\n          ],\n          [\n            \"827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241\",\n            \"c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec\"\n          ],\n          [\n            \"eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3\",\n            \"be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d\"\n          ],\n          [\n            \"e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f\",\n            \"4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414\"\n          ],\n          [\n            \"1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19\",\n            \"aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd\"\n          ],\n          [\n            \"146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be\",\n            \"b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0\"\n          ],\n          [\n            \"fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9\",\n            \"6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811\"\n          ],\n          [\n            \"da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2\",\n            \"8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1\"\n          ],\n          [\n            \"a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13\",\n            \"7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c\"\n          ],\n          [\n            \"174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c\",\n            \"ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73\"\n          ],\n          [\n            \"959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba\",\n            \"2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd\"\n          ],\n          [\n            \"d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151\",\n            \"e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405\"\n          ],\n          [\n            \"64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073\",\n            \"d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589\"\n          ],\n          [\n            \"8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458\",\n            \"38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e\"\n          ],\n          [\n            \"13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b\",\n            \"69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27\"\n          ],\n          [\n            \"bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366\",\n            \"d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1\"\n          ],\n          [\n            \"8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa\",\n            \"40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482\"\n          ],\n          [\n            \"8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0\",\n            \"620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945\"\n          ],\n          [\n            \"dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787\",\n            \"7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573\"\n          ],\n          [\n            \"f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e\",\n            \"ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82\"\n          ]\n        ]\n      },\n      naf: {\n        wnd: 7,\n        points: [\n          [\n            \"f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9\",\n            \"388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672\"\n          ],\n          [\n            \"2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4\",\n            \"d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6\"\n          ],\n          [\n            \"5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc\",\n            \"6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da\"\n          ],\n          [\n            \"acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe\",\n            \"cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37\"\n          ],\n          [\n            \"774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb\",\n            \"d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b\"\n          ],\n          [\n            \"f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8\",\n            \"ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81\"\n          ],\n          [\n            \"d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e\",\n            \"581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58\"\n          ],\n          [\n            \"defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34\",\n            \"4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77\"\n          ],\n          [\n            \"2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c\",\n            \"85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a\"\n          ],\n          [\n            \"352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5\",\n            \"321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c\"\n          ],\n          [\n            \"2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f\",\n            \"2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67\"\n          ],\n          [\n            \"9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714\",\n            \"73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402\"\n          ],\n          [\n            \"daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729\",\n            \"a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55\"\n          ],\n          [\n            \"c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db\",\n            \"2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482\"\n          ],\n          [\n            \"6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4\",\n            \"e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82\"\n          ],\n          [\n            \"1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5\",\n            \"b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396\"\n          ],\n          [\n            \"605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479\",\n            \"2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49\"\n          ],\n          [\n            \"62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d\",\n            \"80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf\"\n          ],\n          [\n            \"80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f\",\n            \"1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a\"\n          ],\n          [\n            \"7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb\",\n            \"d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7\"\n          ],\n          [\n            \"d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9\",\n            \"eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933\"\n          ],\n          [\n            \"49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963\",\n            \"758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a\"\n          ],\n          [\n            \"77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74\",\n            \"958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6\"\n          ],\n          [\n            \"f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530\",\n            \"e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37\"\n          ],\n          [\n            \"463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b\",\n            \"5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e\"\n          ],\n          [\n            \"f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247\",\n            \"cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6\"\n          ],\n          [\n            \"caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1\",\n            \"cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476\"\n          ],\n          [\n            \"2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120\",\n            \"4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40\"\n          ],\n          [\n            \"7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435\",\n            \"91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61\"\n          ],\n          [\n            \"754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18\",\n            \"673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683\"\n          ],\n          [\n            \"e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8\",\n            \"59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5\"\n          ],\n          [\n            \"186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb\",\n            \"3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b\"\n          ],\n          [\n            \"df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f\",\n            \"55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417\"\n          ],\n          [\n            \"5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143\",\n            \"efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868\"\n          ],\n          [\n            \"290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba\",\n            \"e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a\"\n          ],\n          [\n            \"af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45\",\n            \"f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6\"\n          ],\n          [\n            \"766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a\",\n            \"744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996\"\n          ],\n          [\n            \"59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e\",\n            \"c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e\"\n          ],\n          [\n            \"f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8\",\n            \"e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d\"\n          ],\n          [\n            \"7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c\",\n            \"30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2\"\n          ],\n          [\n            \"948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519\",\n            \"e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e\"\n          ],\n          [\n            \"7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab\",\n            \"100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437\"\n          ],\n          [\n            \"3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca\",\n            \"ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311\"\n          ],\n          [\n            \"d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf\",\n            \"8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4\"\n          ],\n          [\n            \"1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610\",\n            \"68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575\"\n          ],\n          [\n            \"733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4\",\n            \"f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d\"\n          ],\n          [\n            \"15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c\",\n            \"d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d\"\n          ],\n          [\n            \"a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940\",\n            \"edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629\"\n          ],\n          [\n            \"e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980\",\n            \"a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06\"\n          ],\n          [\n            \"311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3\",\n            \"66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374\"\n          ],\n          [\n            \"34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf\",\n            \"9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee\"\n          ],\n          [\n            \"f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63\",\n            \"4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1\"\n          ],\n          [\n            \"d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448\",\n            \"fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b\"\n          ],\n          [\n            \"32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf\",\n            \"5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661\"\n          ],\n          [\n            \"7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5\",\n            \"8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6\"\n          ],\n          [\n            \"ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6\",\n            \"8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e\"\n          ],\n          [\n            \"16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5\",\n            \"5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d\"\n          ],\n          [\n            \"eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99\",\n            \"f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc\"\n          ],\n          [\n            \"78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51\",\n            \"f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4\"\n          ],\n          [\n            \"494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5\",\n            \"42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c\"\n          ],\n          [\n            \"a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5\",\n            \"204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b\"\n          ],\n          [\n            \"c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997\",\n            \"4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913\"\n          ],\n          [\n            \"841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881\",\n            \"73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154\"\n          ],\n          [\n            \"5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5\",\n            \"39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865\"\n          ],\n          [\n            \"36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66\",\n            \"d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc\"\n          ],\n          [\n            \"336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726\",\n            \"ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224\"\n          ],\n          [\n            \"8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede\",\n            \"6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e\"\n          ],\n          [\n            \"1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94\",\n            \"60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6\"\n          ],\n          [\n            \"85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31\",\n            \"3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511\"\n          ],\n          [\n            \"29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51\",\n            \"b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b\"\n          ],\n          [\n            \"a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252\",\n            \"ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2\"\n          ],\n          [\n            \"4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5\",\n            \"cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c\"\n          ],\n          [\n            \"d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b\",\n            \"6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3\"\n          ],\n          [\n            \"ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4\",\n            \"322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d\"\n          ],\n          [\n            \"af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f\",\n            \"6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700\"\n          ],\n          [\n            \"e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889\",\n            \"2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4\"\n          ],\n          [\n            \"591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246\",\n            \"b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196\"\n          ],\n          [\n            \"11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984\",\n            \"998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4\"\n          ],\n          [\n            \"3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a\",\n            \"b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257\"\n          ],\n          [\n            \"cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030\",\n            \"bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13\"\n          ],\n          [\n            \"c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197\",\n            \"6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096\"\n          ],\n          [\n            \"c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593\",\n            \"c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38\"\n          ],\n          [\n            \"a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef\",\n            \"21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f\"\n          ],\n          [\n            \"347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38\",\n            \"60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448\"\n          ],\n          [\n            \"da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a\",\n            \"49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a\"\n          ],\n          [\n            \"c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111\",\n            \"5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4\"\n          ],\n          [\n            \"4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502\",\n            \"7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437\"\n          ],\n          [\n            \"3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea\",\n            \"be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7\"\n          ],\n          [\n            \"cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26\",\n            \"8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d\"\n          ],\n          [\n            \"b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986\",\n            \"39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a\"\n          ],\n          [\n            \"d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e\",\n            \"62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54\"\n          ],\n          [\n            \"48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4\",\n            \"25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77\"\n          ],\n          [\n            \"dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda\",\n            \"ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517\"\n          ],\n          [\n            \"6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859\",\n            \"cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10\"\n          ],\n          [\n            \"e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f\",\n            \"f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125\"\n          ],\n          [\n            \"eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c\",\n            \"6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e\"\n          ],\n          [\n            \"13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942\",\n            \"fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1\"\n          ],\n          [\n            \"ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a\",\n            \"1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2\"\n          ],\n          [\n            \"b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80\",\n            \"5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423\"\n          ],\n          [\n            \"ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d\",\n            \"438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8\"\n          ],\n          [\n            \"8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1\",\n            \"cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758\"\n          ],\n          [\n            \"52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63\",\n            \"c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375\"\n          ],\n          [\n            \"e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352\",\n            \"6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d\"\n          ],\n          [\n            \"7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193\",\n            \"ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec\"\n          ],\n          [\n            \"5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00\",\n            \"9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0\"\n          ],\n          [\n            \"32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58\",\n            \"ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c\"\n          ],\n          [\n            \"e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7\",\n            \"d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4\"\n          ],\n          [\n            \"8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8\",\n            \"c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f\"\n          ],\n          [\n            \"4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e\",\n            \"67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649\"\n          ],\n          [\n            \"3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d\",\n            \"cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826\"\n          ],\n          [\n            \"674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b\",\n            \"299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5\"\n          ],\n          [\n            \"d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f\",\n            \"f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87\"\n          ],\n          [\n            \"30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6\",\n            \"462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b\"\n          ],\n          [\n            \"be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297\",\n            \"62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc\"\n          ],\n          [\n            \"93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a\",\n            \"7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c\"\n          ],\n          [\n            \"b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c\",\n            \"ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f\"\n          ],\n          [\n            \"d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52\",\n            \"4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a\"\n          ],\n          [\n            \"d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb\",\n            \"bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46\"\n          ],\n          [\n            \"463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065\",\n            \"bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f\"\n          ],\n          [\n            \"7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917\",\n            \"603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03\"\n          ],\n          [\n            \"74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9\",\n            \"cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08\"\n          ],\n          [\n            \"30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3\",\n            \"553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8\"\n          ],\n          [\n            \"9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57\",\n            \"712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373\"\n          ],\n          [\n            \"176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66\",\n            \"ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3\"\n          ],\n          [\n            \"75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8\",\n            \"9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8\"\n          ],\n          [\n            \"809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721\",\n            \"9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1\"\n          ],\n          [\n            \"1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180\",\n            \"4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9\"\n          ]\n        ]\n      }\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/curves.js\nvar require_curves = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/curves.js\"(exports) {\n    \"use strict\";\n    var curves = exports;\n    var hash2 = require_hash();\n    var curve = require_curve();\n    var utils = require_utils4();\n    var assert2 = utils.assert;\n    function PresetCurve(options) {\n      if (options.type === \"short\")\n        this.curve = new curve.short(options);\n      else if (options.type === \"edwards\")\n        this.curve = new curve.edwards(options);\n      else\n        this.curve = new curve.mont(options);\n      this.g = this.curve.g;\n      this.n = this.curve.n;\n      this.hash = options.hash;\n      assert2(this.g.validate(), \"Invalid curve\");\n      assert2(this.g.mul(this.n).isInfinity(), \"Invalid curve, G*N != O\");\n    }\n    curves.PresetCurve = PresetCurve;\n    function defineCurve(name2, options) {\n      Object.defineProperty(curves, name2, {\n        configurable: true,\n        enumerable: true,\n        get: function() {\n          var curve2 = new PresetCurve(options);\n          Object.defineProperty(curves, name2, {\n            configurable: true,\n            enumerable: true,\n            value: curve2\n          });\n          return curve2;\n        }\n      });\n    }\n    defineCurve(\"p192\", {\n      type: \"short\",\n      prime: \"p192\",\n      p: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",\n      a: \"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",\n      b: \"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",\n      n: \"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",\n      hash: hash2.sha256,\n      gRed: false,\n      g: [\n        \"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\n        \"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"\n      ]\n    });\n    defineCurve(\"p224\", {\n      type: \"short\",\n      prime: \"p224\",\n      p: \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",\n      a: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",\n      b: \"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",\n      n: \"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",\n      hash: hash2.sha256,\n      gRed: false,\n      g: [\n        \"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\n        \"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"\n      ]\n    });\n    defineCurve(\"p256\", {\n      type: \"short\",\n      prime: null,\n      p: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",\n      a: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",\n      b: \"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",\n      n: \"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",\n      hash: hash2.sha256,\n      gRed: false,\n      g: [\n        \"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\n        \"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"\n      ]\n    });\n    defineCurve(\"p384\", {\n      type: \"short\",\n      prime: null,\n      p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",\n      a: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",\n      b: \"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",\n      n: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",\n      hash: hash2.sha384,\n      gRed: false,\n      g: [\n        \"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\n        \"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"\n      ]\n    });\n    defineCurve(\"p521\", {\n      type: \"short\",\n      prime: null,\n      p: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",\n      a: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",\n      b: \"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",\n      n: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",\n      hash: hash2.sha512,\n      gRed: false,\n      g: [\n        \"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\n        \"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"\n      ]\n    });\n    defineCurve(\"curve25519\", {\n      type: \"mont\",\n      prime: \"p25519\",\n      p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n      a: \"76d06\",\n      b: \"1\",\n      n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n      hash: hash2.sha256,\n      gRed: false,\n      g: [\n        \"9\"\n      ]\n    });\n    defineCurve(\"ed25519\", {\n      type: \"edwards\",\n      prime: \"p25519\",\n      p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n      a: \"-1\",\n      c: \"1\",\n      // -121665 * (121666^(-1)) (mod P)\n      d: \"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",\n      n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n      hash: hash2.sha256,\n      gRed: false,\n      g: [\n        \"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\n        // 4/5\n        \"6666666666666666666666666666666666666666666666666666666666666658\"\n      ]\n    });\n    var pre;\n    try {\n      pre = require_secp256k1();\n    } catch (e2) {\n      pre = void 0;\n    }\n    defineCurve(\"secp256k1\", {\n      type: \"short\",\n      prime: \"k256\",\n      p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",\n      a: \"0\",\n      b: \"7\",\n      n: \"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",\n      h: \"1\",\n      hash: hash2.sha256,\n      // Precomputed endomorphism\n      beta: \"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",\n      lambda: \"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",\n      basis: [\n        {\n          a: \"3086d221a7d46bcde86c90e49284eb15\",\n          b: \"-e4437ed6010e88286f547fa90abfe4c3\"\n        },\n        {\n          a: \"114ca50f7a8e2f3f657c1108d9d44cfd8\",\n          b: \"3086d221a7d46bcde86c90e49284eb15\"\n        }\n      ],\n      gRed: false,\n      g: [\n        \"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\n        \"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",\n        pre\n      ]\n    });\n  }\n});\n\n// node_modules/hmac-drbg/lib/hmac-drbg.js\nvar require_hmac_drbg = __commonJS({\n  \"node_modules/hmac-drbg/lib/hmac-drbg.js\"(exports, module) {\n    \"use strict\";\n    var hash2 = require_hash();\n    var utils = require_utils3();\n    var assert2 = require_minimalistic_assert();\n    function HmacDRBG2(options) {\n      if (!(this instanceof HmacDRBG2))\n        return new HmacDRBG2(options);\n      this.hash = options.hash;\n      this.predResist = !!options.predResist;\n      this.outLen = this.hash.outSize;\n      this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n      this._reseed = null;\n      this.reseedInterval = null;\n      this.K = null;\n      this.V = null;\n      var entropy = utils.toArray(options.entropy, options.entropyEnc || \"hex\");\n      var nonce = utils.toArray(options.nonce, options.nonceEnc || \"hex\");\n      var pers = utils.toArray(options.pers, options.persEnc || \"hex\");\n      assert2(\n        entropy.length >= this.minEntropy / 8,\n        \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\"\n      );\n      this._init(entropy, nonce, pers);\n    }\n    module.exports = HmacDRBG2;\n    HmacDRBG2.prototype._init = function init2(entropy, nonce, pers) {\n      var seed = entropy.concat(nonce).concat(pers);\n      this.K = new Array(this.outLen / 8);\n      this.V = new Array(this.outLen / 8);\n      for (var i4 = 0; i4 < this.V.length; i4++) {\n        this.K[i4] = 0;\n        this.V[i4] = 1;\n      }\n      this._update(seed);\n      this._reseed = 1;\n      this.reseedInterval = 281474976710656;\n    };\n    HmacDRBG2.prototype._hmac = function hmac2() {\n      return new hash2.hmac(this.hash, this.K);\n    };\n    HmacDRBG2.prototype._update = function update2(seed) {\n      var kmac = this._hmac().update(this.V).update([0]);\n      if (seed)\n        kmac = kmac.update(seed);\n      this.K = kmac.digest();\n      this.V = this._hmac().update(this.V).digest();\n      if (!seed)\n        return;\n      this.K = this._hmac().update(this.V).update([1]).update(seed).digest();\n      this.V = this._hmac().update(this.V).digest();\n    };\n    HmacDRBG2.prototype.reseed = function reseed2(entropy, entropyEnc, add3, addEnc) {\n      if (typeof entropyEnc !== \"string\") {\n        addEnc = add3;\n        add3 = entropyEnc;\n        entropyEnc = null;\n      }\n      entropy = utils.toArray(entropy, entropyEnc);\n      add3 = utils.toArray(add3, addEnc);\n      assert2(\n        entropy.length >= this.minEntropy / 8,\n        \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\"\n      );\n      this._update(entropy.concat(add3 || []));\n      this._reseed = 1;\n    };\n    HmacDRBG2.prototype.generate = function generate2(len, enc, add3, addEnc) {\n      if (this._reseed > this.reseedInterval)\n        throw new Error(\"Reseed is required\");\n      if (typeof enc !== \"string\") {\n        addEnc = add3;\n        add3 = enc;\n        enc = null;\n      }\n      if (add3) {\n        add3 = utils.toArray(add3, addEnc || \"hex\");\n        this._update(add3);\n      }\n      var temp = [];\n      while (temp.length < len) {\n        this.V = this._hmac().update(this.V).digest();\n        temp = temp.concat(this.V);\n      }\n      var res = temp.slice(0, len);\n      this._update(add3);\n      this._reseed++;\n      return utils.encode(res, enc);\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/ec/key.js\nvar require_key = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/ec/key.js\"(exports, module) {\n    \"use strict\";\n    var BN3 = require_bn2();\n    var utils = require_utils4();\n    var assert2 = utils.assert;\n    function KeyPair2(ec2, options) {\n      this.ec = ec2;\n      this.priv = null;\n      this.pub = null;\n      if (options.priv)\n        this._importPrivate(options.priv, options.privEnc);\n      if (options.pub)\n        this._importPublic(options.pub, options.pubEnc);\n    }\n    module.exports = KeyPair2;\n    KeyPair2.fromPublic = function fromPublic2(ec2, pub, enc) {\n      if (pub instanceof KeyPair2)\n        return pub;\n      return new KeyPair2(ec2, {\n        pub,\n        pubEnc: enc\n      });\n    };\n    KeyPair2.fromPrivate = function fromPrivate2(ec2, priv, enc) {\n      if (priv instanceof KeyPair2)\n        return priv;\n      return new KeyPair2(ec2, {\n        priv,\n        privEnc: enc\n      });\n    };\n    KeyPair2.prototype.validate = function validate5() {\n      var pub = this.getPublic();\n      if (pub.isInfinity())\n        return { result: false, reason: \"Invalid public key\" };\n      if (!pub.validate())\n        return { result: false, reason: \"Public key is not a point\" };\n      if (!pub.mul(this.ec.curve.n).isInfinity())\n        return { result: false, reason: \"Public key * N != O\" };\n      return { result: true, reason: null };\n    };\n    KeyPair2.prototype.getPublic = function getPublic2(compact, enc) {\n      if (typeof compact === \"string\") {\n        enc = compact;\n        compact = null;\n      }\n      if (!this.pub)\n        this.pub = this.ec.g.mul(this.priv);\n      if (!enc)\n        return this.pub;\n      return this.pub.encode(enc, compact);\n    };\n    KeyPair2.prototype.getPrivate = function getPrivate2(enc) {\n      if (enc === \"hex\")\n        return this.priv.toString(16, 2);\n      else\n        return this.priv;\n    };\n    KeyPair2.prototype._importPrivate = function _importPrivate2(key2, enc) {\n      this.priv = new BN3(key2, enc || 16);\n      this.priv = this.priv.umod(this.ec.curve.n);\n    };\n    KeyPair2.prototype._importPublic = function _importPublic2(key2, enc) {\n      if (key2.x || key2.y) {\n        if (this.ec.curve.type === \"mont\") {\n          assert2(key2.x, \"Need x coordinate\");\n        } else if (this.ec.curve.type === \"short\" || this.ec.curve.type === \"edwards\") {\n          assert2(key2.x && key2.y, \"Need both x and y coordinate\");\n        }\n        this.pub = this.ec.curve.point(key2.x, key2.y);\n        return;\n      }\n      this.pub = this.ec.curve.decodePoint(key2, enc);\n    };\n    KeyPair2.prototype.derive = function derive2(pub) {\n      if (!pub.validate()) {\n        assert2(pub.validate(), \"public point not validated\");\n      }\n      return pub.mul(this.priv).getX();\n    };\n    KeyPair2.prototype.sign = function sign4(msg, enc, options) {\n      return this.ec.sign(msg, this, enc, options);\n    };\n    KeyPair2.prototype.verify = function verify4(msg, signature2, options) {\n      return this.ec.verify(msg, signature2, this, void 0, options);\n    };\n    KeyPair2.prototype.inspect = function inspect4() {\n      return \"<Key priv: \" + (this.priv && this.priv.toString(16, 2)) + \" pub: \" + (this.pub && this.pub.inspect()) + \" >\";\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/ec/signature.js\nvar require_signature = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/ec/signature.js\"(exports, module) {\n    \"use strict\";\n    var BN3 = require_bn2();\n    var utils = require_utils4();\n    var assert2 = utils.assert;\n    function Signature2(options, enc) {\n      if (options instanceof Signature2)\n        return options;\n      if (this._importDER(options, enc))\n        return;\n      assert2(options.r && options.s, \"Signature without r or s\");\n      this.r = new BN3(options.r, 16);\n      this.s = new BN3(options.s, 16);\n      if (options.recoveryParam === void 0)\n        this.recoveryParam = null;\n      else\n        this.recoveryParam = options.recoveryParam;\n    }\n    module.exports = Signature2;\n    function Position2() {\n      this.place = 0;\n    }\n    function getLength2(buf, p3) {\n      var initial = buf[p3.place++];\n      if (!(initial & 128)) {\n        return initial;\n      }\n      var octetLen = initial & 15;\n      if (octetLen === 0 || octetLen > 4) {\n        return false;\n      }\n      if (buf[p3.place] === 0) {\n        return false;\n      }\n      var val = 0;\n      for (var i4 = 0, off = p3.place; i4 < octetLen; i4++, off++) {\n        val <<= 8;\n        val |= buf[off];\n        val >>>= 0;\n      }\n      if (val <= 127) {\n        return false;\n      }\n      p3.place = off;\n      return val;\n    }\n    function rmPadding2(buf) {\n      var i4 = 0;\n      var len = buf.length - 1;\n      while (!buf[i4] && !(buf[i4 + 1] & 128) && i4 < len) {\n        i4++;\n      }\n      if (i4 === 0) {\n        return buf;\n      }\n      return buf.slice(i4);\n    }\n    Signature2.prototype._importDER = function _importDER2(data, enc) {\n      data = utils.toArray(data, enc);\n      var p3 = new Position2();\n      if (data[p3.place++] !== 48) {\n        return false;\n      }\n      var len = getLength2(data, p3);\n      if (len === false) {\n        return false;\n      }\n      if (len + p3.place !== data.length) {\n        return false;\n      }\n      if (data[p3.place++] !== 2) {\n        return false;\n      }\n      var rlen = getLength2(data, p3);\n      if (rlen === false) {\n        return false;\n      }\n      if ((data[p3.place] & 128) !== 0) {\n        return false;\n      }\n      var r4 = data.slice(p3.place, rlen + p3.place);\n      p3.place += rlen;\n      if (data[p3.place++] !== 2) {\n        return false;\n      }\n      var slen = getLength2(data, p3);\n      if (slen === false) {\n        return false;\n      }\n      if (data.length !== slen + p3.place) {\n        return false;\n      }\n      if ((data[p3.place] & 128) !== 0) {\n        return false;\n      }\n      var s3 = data.slice(p3.place, slen + p3.place);\n      if (r4[0] === 0) {\n        if (r4[1] & 128) {\n          r4 = r4.slice(1);\n        } else {\n          return false;\n        }\n      }\n      if (s3[0] === 0) {\n        if (s3[1] & 128) {\n          s3 = s3.slice(1);\n        } else {\n          return false;\n        }\n      }\n      this.r = new BN3(r4);\n      this.s = new BN3(s3);\n      this.recoveryParam = null;\n      return true;\n    };\n    function constructLength2(arr, len) {\n      if (len < 128) {\n        arr.push(len);\n        return;\n      }\n      var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n      arr.push(octets | 128);\n      while (--octets) {\n        arr.push(len >>> (octets << 3) & 255);\n      }\n      arr.push(len);\n    }\n    Signature2.prototype.toDER = function toDER2(enc) {\n      var r4 = this.r.toArray();\n      var s3 = this.s.toArray();\n      if (r4[0] & 128)\n        r4 = [0].concat(r4);\n      if (s3[0] & 128)\n        s3 = [0].concat(s3);\n      r4 = rmPadding2(r4);\n      s3 = rmPadding2(s3);\n      while (!s3[0] && !(s3[1] & 128)) {\n        s3 = s3.slice(1);\n      }\n      var arr = [2];\n      constructLength2(arr, r4.length);\n      arr = arr.concat(r4);\n      arr.push(2);\n      constructLength2(arr, s3.length);\n      var backHalf = arr.concat(s3);\n      var res = [48];\n      constructLength2(res, backHalf.length);\n      res = res.concat(backHalf);\n      return utils.encode(res, enc);\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/ec/index.js\nvar require_ec = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/ec/index.js\"(exports, module) {\n    \"use strict\";\n    var BN3 = require_bn2();\n    var HmacDRBG2 = require_hmac_drbg();\n    var utils = require_utils4();\n    var curves = require_curves();\n    var rand2 = require_brorand();\n    var assert2 = utils.assert;\n    var KeyPair2 = require_key();\n    var Signature2 = require_signature();\n    function EC2(options) {\n      if (!(this instanceof EC2))\n        return new EC2(options);\n      if (typeof options === \"string\") {\n        assert2(\n          Object.prototype.hasOwnProperty.call(curves, options),\n          \"Unknown curve \" + options\n        );\n        options = curves[options];\n      }\n      if (options instanceof curves.PresetCurve)\n        options = { curve: options };\n      this.curve = options.curve.curve;\n      this.n = this.curve.n;\n      this.nh = this.n.ushrn(1);\n      this.g = this.curve.g;\n      this.g = options.curve.g;\n      this.g.precompute(options.curve.n.bitLength() + 1);\n      this.hash = options.hash || options.curve.hash;\n    }\n    module.exports = EC2;\n    EC2.prototype.keyPair = function keyPair2(options) {\n      return new KeyPair2(this, options);\n    };\n    EC2.prototype.keyFromPrivate = function keyFromPrivate2(priv, enc) {\n      return KeyPair2.fromPrivate(this, priv, enc);\n    };\n    EC2.prototype.keyFromPublic = function keyFromPublic2(pub, enc) {\n      return KeyPair2.fromPublic(this, pub, enc);\n    };\n    EC2.prototype.genKeyPair = function genKeyPair2(options) {\n      if (!options)\n        options = {};\n      var drbg = new HmacDRBG2({\n        hash: this.hash,\n        pers: options.pers,\n        persEnc: options.persEnc || \"utf8\",\n        entropy: options.entropy || rand2(this.hash.hmacStrength),\n        entropyEnc: options.entropy && options.entropyEnc || \"utf8\",\n        nonce: this.n.toArray()\n      });\n      var bytes = this.n.byteLength();\n      var ns2 = this.n.sub(new BN3(2));\n      for (; ; ) {\n        var priv = new BN3(drbg.generate(bytes));\n        if (priv.cmp(ns2) > 0)\n          continue;\n        priv.iaddn(1);\n        return this.keyFromPrivate(priv);\n      }\n    };\n    EC2.prototype._truncateToN = function _truncateToN2(msg, truncOnly, bitLength) {\n      var byteLength;\n      if (BN3.isBN(msg) || typeof msg === \"number\") {\n        msg = new BN3(msg, 16);\n        byteLength = msg.byteLength();\n      } else if (typeof msg === \"object\") {\n        byteLength = msg.length;\n        msg = new BN3(msg, 16);\n      } else {\n        var str = msg.toString();\n        byteLength = str.length + 1 >>> 1;\n        msg = new BN3(str, 16);\n      }\n      if (typeof bitLength !== \"number\") {\n        bitLength = byteLength * 8;\n      }\n      var delta = bitLength - this.n.bitLength();\n      if (delta > 0)\n        msg = msg.ushrn(delta);\n      if (!truncOnly && msg.cmp(this.n) >= 0)\n        return msg.sub(this.n);\n      else\n        return msg;\n    };\n    EC2.prototype.sign = function sign4(msg, key2, enc, options) {\n      if (typeof enc === \"object\") {\n        options = enc;\n        enc = null;\n      }\n      if (!options)\n        options = {};\n      key2 = this.keyFromPrivate(key2, enc);\n      msg = this._truncateToN(msg, false, options.msgBitLength);\n      var bytes = this.n.byteLength();\n      var bkey = key2.getPrivate().toArray(\"be\", bytes);\n      var nonce = msg.toArray(\"be\", bytes);\n      var drbg = new HmacDRBG2({\n        hash: this.hash,\n        entropy: bkey,\n        nonce,\n        pers: options.pers,\n        persEnc: options.persEnc || \"utf8\"\n      });\n      var ns1 = this.n.sub(new BN3(1));\n      for (var iter = 0; ; iter++) {\n        var k4 = options.k ? options.k(iter) : new BN3(drbg.generate(this.n.byteLength()));\n        k4 = this._truncateToN(k4, true);\n        if (k4.cmpn(1) <= 0 || k4.cmp(ns1) >= 0)\n          continue;\n        var kp = this.g.mul(k4);\n        if (kp.isInfinity())\n          continue;\n        var kpX = kp.getX();\n        var r4 = kpX.umod(this.n);\n        if (r4.cmpn(0) === 0)\n          continue;\n        var s3 = k4.invm(this.n).mul(r4.mul(key2.getPrivate()).iadd(msg));\n        s3 = s3.umod(this.n);\n        if (s3.cmpn(0) === 0)\n          continue;\n        var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r4) !== 0 ? 2 : 0);\n        if (options.canonical && s3.cmp(this.nh) > 0) {\n          s3 = this.n.sub(s3);\n          recoveryParam ^= 1;\n        }\n        return new Signature2({ r: r4, s: s3, recoveryParam });\n      }\n    };\n    EC2.prototype.verify = function verify4(msg, signature2, key2, enc, options) {\n      if (!options)\n        options = {};\n      msg = this._truncateToN(msg, false, options.msgBitLength);\n      key2 = this.keyFromPublic(key2, enc);\n      signature2 = new Signature2(signature2, \"hex\");\n      var r4 = signature2.r;\n      var s3 = signature2.s;\n      if (r4.cmpn(1) < 0 || r4.cmp(this.n) >= 0)\n        return false;\n      if (s3.cmpn(1) < 0 || s3.cmp(this.n) >= 0)\n        return false;\n      var sinv = s3.invm(this.n);\n      var u1 = sinv.mul(msg).umod(this.n);\n      var u22 = sinv.mul(r4).umod(this.n);\n      var p3;\n      if (!this.curve._maxwellTrick) {\n        p3 = this.g.mulAdd(u1, key2.getPublic(), u22);\n        if (p3.isInfinity())\n          return false;\n        return p3.getX().umod(this.n).cmp(r4) === 0;\n      }\n      p3 = this.g.jmulAdd(u1, key2.getPublic(), u22);\n      if (p3.isInfinity())\n        return false;\n      return p3.eqXToP(r4);\n    };\n    EC2.prototype.recoverPubKey = function(msg, signature2, j2, enc) {\n      assert2((3 & j2) === j2, \"The recovery param is more than two bits\");\n      signature2 = new Signature2(signature2, enc);\n      var n5 = this.n;\n      var e2 = new BN3(msg);\n      var r4 = signature2.r;\n      var s3 = signature2.s;\n      var isYOdd = j2 & 1;\n      var isSecondKey = j2 >> 1;\n      if (r4.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n        throw new Error(\"Unable to find sencond key candinate\");\n      if (isSecondKey)\n        r4 = this.curve.pointFromX(r4.add(this.curve.n), isYOdd);\n      else\n        r4 = this.curve.pointFromX(r4, isYOdd);\n      var rInv = signature2.r.invm(n5);\n      var s1 = n5.sub(e2).mul(rInv).umod(n5);\n      var s22 = s3.mul(rInv).umod(n5);\n      return this.g.mulAdd(s1, r4, s22);\n    };\n    EC2.prototype.getKeyRecoveryParam = function(e2, signature2, Q2, enc) {\n      signature2 = new Signature2(signature2, enc);\n      if (signature2.recoveryParam !== null)\n        return signature2.recoveryParam;\n      for (var i4 = 0; i4 < 4; i4++) {\n        var Qprime;\n        try {\n          Qprime = this.recoverPubKey(e2, signature2, i4);\n        } catch (e3) {\n          continue;\n        }\n        if (Qprime.eq(Q2))\n          return i4;\n      }\n      throw new Error(\"Unable to find valid recovery factor\");\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/eddsa/key.js\nvar require_key2 = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/eddsa/key.js\"(exports, module) {\n    \"use strict\";\n    var utils = require_utils4();\n    var assert2 = utils.assert;\n    var parseBytes = utils.parseBytes;\n    var cachedProperty = utils.cachedProperty;\n    function KeyPair2(eddsa, params) {\n      this.eddsa = eddsa;\n      this._secret = parseBytes(params.secret);\n      if (eddsa.isPoint(params.pub))\n        this._pub = params.pub;\n      else\n        this._pubBytes = parseBytes(params.pub);\n    }\n    KeyPair2.fromPublic = function fromPublic2(eddsa, pub) {\n      if (pub instanceof KeyPair2)\n        return pub;\n      return new KeyPair2(eddsa, { pub });\n    };\n    KeyPair2.fromSecret = function fromSecret(eddsa, secret) {\n      if (secret instanceof KeyPair2)\n        return secret;\n      return new KeyPair2(eddsa, { secret });\n    };\n    KeyPair2.prototype.secret = function secret() {\n      return this._secret;\n    };\n    cachedProperty(KeyPair2, \"pubBytes\", function pubBytes() {\n      return this.eddsa.encodePoint(this.pub());\n    });\n    cachedProperty(KeyPair2, \"pub\", function pub() {\n      if (this._pubBytes)\n        return this.eddsa.decodePoint(this._pubBytes);\n      return this.eddsa.g.mul(this.priv());\n    });\n    cachedProperty(KeyPair2, \"privBytes\", function privBytes() {\n      var eddsa = this.eddsa;\n      var hash2 = this.hash();\n      var lastIx = eddsa.encodingLength - 1;\n      var a4 = hash2.slice(0, eddsa.encodingLength);\n      a4[0] &= 248;\n      a4[lastIx] &= 127;\n      a4[lastIx] |= 64;\n      return a4;\n    });\n    cachedProperty(KeyPair2, \"priv\", function priv() {\n      return this.eddsa.decodeInt(this.privBytes());\n    });\n    cachedProperty(KeyPair2, \"hash\", function hash2() {\n      return this.eddsa.hash().update(this.secret()).digest();\n    });\n    cachedProperty(KeyPair2, \"messagePrefix\", function messagePrefix2() {\n      return this.hash().slice(this.eddsa.encodingLength);\n    });\n    KeyPair2.prototype.sign = function sign4(message) {\n      assert2(this._secret, \"KeyPair can only verify\");\n      return this.eddsa.sign(message, this);\n    };\n    KeyPair2.prototype.verify = function verify4(message, sig) {\n      return this.eddsa.verify(message, sig, this);\n    };\n    KeyPair2.prototype.getSecret = function getSecret(enc) {\n      assert2(this._secret, \"KeyPair is public only\");\n      return utils.encode(this.secret(), enc);\n    };\n    KeyPair2.prototype.getPublic = function getPublic2(enc) {\n      return utils.encode(this.pubBytes(), enc);\n    };\n    module.exports = KeyPair2;\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/eddsa/signature.js\nvar require_signature2 = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/eddsa/signature.js\"(exports, module) {\n    \"use strict\";\n    var BN3 = require_bn2();\n    var utils = require_utils4();\n    var assert2 = utils.assert;\n    var cachedProperty = utils.cachedProperty;\n    var parseBytes = utils.parseBytes;\n    function Signature2(eddsa, sig) {\n      this.eddsa = eddsa;\n      if (typeof sig !== \"object\")\n        sig = parseBytes(sig);\n      if (Array.isArray(sig)) {\n        assert2(sig.length === eddsa.encodingLength * 2, \"Signature has invalid size\");\n        sig = {\n          R: sig.slice(0, eddsa.encodingLength),\n          S: sig.slice(eddsa.encodingLength)\n        };\n      }\n      assert2(sig.R && sig.S, \"Signature without R or S\");\n      if (eddsa.isPoint(sig.R))\n        this._R = sig.R;\n      if (sig.S instanceof BN3)\n        this._S = sig.S;\n      this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n      this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n    }\n    cachedProperty(Signature2, \"S\", function S6() {\n      return this.eddsa.decodeInt(this.Sencoded());\n    });\n    cachedProperty(Signature2, \"R\", function R2() {\n      return this.eddsa.decodePoint(this.Rencoded());\n    });\n    cachedProperty(Signature2, \"Rencoded\", function Rencoded() {\n      return this.eddsa.encodePoint(this.R());\n    });\n    cachedProperty(Signature2, \"Sencoded\", function Sencoded() {\n      return this.eddsa.encodeInt(this.S());\n    });\n    Signature2.prototype.toBytes = function toBytes() {\n      return this.Rencoded().concat(this.Sencoded());\n    };\n    Signature2.prototype.toHex = function toHex2() {\n      return utils.encode(this.toBytes(), \"hex\").toUpperCase();\n    };\n    module.exports = Signature2;\n  }\n});\n\n// node_modules/elliptic/lib/elliptic/eddsa/index.js\nvar require_eddsa = __commonJS({\n  \"node_modules/elliptic/lib/elliptic/eddsa/index.js\"(exports, module) {\n    \"use strict\";\n    var hash2 = require_hash();\n    var curves = require_curves();\n    var utils = require_utils4();\n    var assert2 = utils.assert;\n    var parseBytes = utils.parseBytes;\n    var KeyPair2 = require_key2();\n    var Signature2 = require_signature2();\n    function EDDSA(curve) {\n      assert2(curve === \"ed25519\", \"only tested with ed25519 so far\");\n      if (!(this instanceof EDDSA))\n        return new EDDSA(curve);\n      curve = curves[curve].curve;\n      this.curve = curve;\n      this.g = curve.g;\n      this.g.precompute(curve.n.bitLength() + 1);\n      this.pointClass = curve.point().constructor;\n      this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n      this.hash = hash2.sha512;\n    }\n    module.exports = EDDSA;\n    EDDSA.prototype.sign = function sign4(message, secret) {\n      message = parseBytes(message);\n      var key2 = this.keyFromSecret(secret);\n      var r4 = this.hashInt(key2.messagePrefix(), message);\n      var R2 = this.g.mul(r4);\n      var Rencoded = this.encodePoint(R2);\n      var s_ = this.hashInt(Rencoded, key2.pubBytes(), message).mul(key2.priv());\n      var S6 = r4.add(s_).umod(this.curve.n);\n      return this.makeSignature({ R: R2, S: S6, Rencoded });\n    };\n    EDDSA.prototype.verify = function verify4(message, sig, pub) {\n      message = parseBytes(message);\n      sig = this.makeSignature(sig);\n      if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n        return false;\n      }\n      var key2 = this.keyFromPublic(pub);\n      var h5 = this.hashInt(sig.Rencoded(), key2.pubBytes(), message);\n      var SG = this.g.mul(sig.S());\n      var RplusAh = sig.R().add(key2.pub().mul(h5));\n      return RplusAh.eq(SG);\n    };\n    EDDSA.prototype.hashInt = function hashInt() {\n      var hash3 = this.hash();\n      for (var i4 = 0; i4 < arguments.length; i4++)\n        hash3.update(arguments[i4]);\n      return utils.intFromLE(hash3.digest()).umod(this.curve.n);\n    };\n    EDDSA.prototype.keyFromPublic = function keyFromPublic2(pub) {\n      return KeyPair2.fromPublic(this, pub);\n    };\n    EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n      return KeyPair2.fromSecret(this, secret);\n    };\n    EDDSA.prototype.makeSignature = function makeSignature(sig) {\n      if (sig instanceof Signature2)\n        return sig;\n      return new Signature2(this, sig);\n    };\n    EDDSA.prototype.encodePoint = function encodePoint(point3) {\n      var enc = point3.getY().toArray(\"le\", this.encodingLength);\n      enc[this.encodingLength - 1] |= point3.getX().isOdd() ? 128 : 0;\n      return enc;\n    };\n    EDDSA.prototype.decodePoint = function decodePoint2(bytes) {\n      bytes = utils.parseBytes(bytes);\n      var lastIx = bytes.length - 1;\n      var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~128);\n      var xIsOdd = (bytes[lastIx] & 128) !== 0;\n      var y6 = utils.intFromLE(normed);\n      return this.curve.pointFromY(y6, xIsOdd);\n    };\n    EDDSA.prototype.encodeInt = function encodeInt(num) {\n      return num.toArray(\"le\", this.encodingLength);\n    };\n    EDDSA.prototype.decodeInt = function decodeInt(bytes) {\n      return utils.intFromLE(bytes);\n    };\n    EDDSA.prototype.isPoint = function isPoint(val) {\n      return val instanceof this.pointClass;\n    };\n  }\n});\n\n// node_modules/elliptic/lib/elliptic.js\nvar require_elliptic = __commonJS({\n  \"node_modules/elliptic/lib/elliptic.js\"(exports) {\n    \"use strict\";\n    var elliptic = exports;\n    elliptic.version = require_package().version;\n    elliptic.utils = require_utils4();\n    elliptic.rand = require_brorand();\n    elliptic.curve = require_curve();\n    elliptic.curves = require_curves();\n    elliptic.ec = require_ec();\n    elliptic.eddsa = require_eddsa();\n  }\n});\n\n// node_modules/@stablelib/sha512/lib/sha512.js\nvar require_sha512 = __commonJS({\n  \"node_modules/@stablelib/sha512/lib/sha512.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var binary_1 = require_binary();\n    var wipe_1 = require_wipe();\n    exports.DIGEST_LENGTH = 64;\n    exports.BLOCK_SIZE = 128;\n    var SHA512 = (\n      /** @class */\n      function() {\n        function SHA5122() {\n          this.digestLength = exports.DIGEST_LENGTH;\n          this.blockSize = exports.BLOCK_SIZE;\n          this._stateHi = new Int32Array(8);\n          this._stateLo = new Int32Array(8);\n          this._tempHi = new Int32Array(16);\n          this._tempLo = new Int32Array(16);\n          this._buffer = new Uint8Array(256);\n          this._bufferLength = 0;\n          this._bytesHashed = 0;\n          this._finished = false;\n          this.reset();\n        }\n        SHA5122.prototype._initState = function() {\n          this._stateHi[0] = 1779033703;\n          this._stateHi[1] = 3144134277;\n          this._stateHi[2] = 1013904242;\n          this._stateHi[3] = 2773480762;\n          this._stateHi[4] = 1359893119;\n          this._stateHi[5] = 2600822924;\n          this._stateHi[6] = 528734635;\n          this._stateHi[7] = 1541459225;\n          this._stateLo[0] = 4089235720;\n          this._stateLo[1] = 2227873595;\n          this._stateLo[2] = 4271175723;\n          this._stateLo[3] = 1595750129;\n          this._stateLo[4] = 2917565137;\n          this._stateLo[5] = 725511199;\n          this._stateLo[6] = 4215389547;\n          this._stateLo[7] = 327033209;\n        };\n        SHA5122.prototype.reset = function() {\n          this._initState();\n          this._bufferLength = 0;\n          this._bytesHashed = 0;\n          this._finished = false;\n          return this;\n        };\n        SHA5122.prototype.clean = function() {\n          wipe_1.wipe(this._buffer);\n          wipe_1.wipe(this._tempHi);\n          wipe_1.wipe(this._tempLo);\n          this.reset();\n        };\n        SHA5122.prototype.update = function(data, dataLength) {\n          if (dataLength === void 0) {\n            dataLength = data.length;\n          }\n          if (this._finished) {\n            throw new Error(\"SHA512: can't update because hash was finished.\");\n          }\n          var dataPos = 0;\n          this._bytesHashed += dataLength;\n          if (this._bufferLength > 0) {\n            while (this._bufferLength < exports.BLOCK_SIZE && dataLength > 0) {\n              this._buffer[this._bufferLength++] = data[dataPos++];\n              dataLength--;\n            }\n            if (this._bufferLength === this.blockSize) {\n              hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, this.blockSize);\n              this._bufferLength = 0;\n            }\n          }\n          if (dataLength >= this.blockSize) {\n            dataPos = hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, data, dataPos, dataLength);\n            dataLength %= this.blockSize;\n          }\n          while (dataLength > 0) {\n            this._buffer[this._bufferLength++] = data[dataPos++];\n            dataLength--;\n          }\n          return this;\n        };\n        SHA5122.prototype.finish = function(out) {\n          if (!this._finished) {\n            var bytesHashed = this._bytesHashed;\n            var left = this._bufferLength;\n            var bitLenHi = bytesHashed / 536870912 | 0;\n            var bitLenLo = bytesHashed << 3;\n            var padLength = bytesHashed % 128 < 112 ? 128 : 256;\n            this._buffer[left] = 128;\n            for (var i4 = left + 1; i4 < padLength - 8; i4++) {\n              this._buffer[i4] = 0;\n            }\n            binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n            binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n            hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, padLength);\n            this._finished = true;\n          }\n          for (var i4 = 0; i4 < this.digestLength / 8; i4++) {\n            binary_1.writeUint32BE(this._stateHi[i4], out, i4 * 8);\n            binary_1.writeUint32BE(this._stateLo[i4], out, i4 * 8 + 4);\n          }\n          return this;\n        };\n        SHA5122.prototype.digest = function() {\n          var out = new Uint8Array(this.digestLength);\n          this.finish(out);\n          return out;\n        };\n        SHA5122.prototype.saveState = function() {\n          if (this._finished) {\n            throw new Error(\"SHA256: cannot save finished state\");\n          }\n          return {\n            stateHi: new Int32Array(this._stateHi),\n            stateLo: new Int32Array(this._stateLo),\n            buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : void 0,\n            bufferLength: this._bufferLength,\n            bytesHashed: this._bytesHashed\n          };\n        };\n        SHA5122.prototype.restoreState = function(savedState) {\n          this._stateHi.set(savedState.stateHi);\n          this._stateLo.set(savedState.stateLo);\n          this._bufferLength = savedState.bufferLength;\n          if (savedState.buffer) {\n            this._buffer.set(savedState.buffer);\n          }\n          this._bytesHashed = savedState.bytesHashed;\n          this._finished = false;\n          return this;\n        };\n        SHA5122.prototype.cleanSavedState = function(savedState) {\n          wipe_1.wipe(savedState.stateHi);\n          wipe_1.wipe(savedState.stateLo);\n          if (savedState.buffer) {\n            wipe_1.wipe(savedState.buffer);\n          }\n          savedState.bufferLength = 0;\n          savedState.bytesHashed = 0;\n        };\n        return SHA5122;\n      }()\n    );\n    exports.SHA512 = SHA512;\n    var K3 = new Int32Array([\n      1116352408,\n      3609767458,\n      1899447441,\n      602891725,\n      3049323471,\n      3964484399,\n      3921009573,\n      2173295548,\n      961987163,\n      4081628472,\n      1508970993,\n      3053834265,\n      2453635748,\n      2937671579,\n      2870763221,\n      3664609560,\n      3624381080,\n      2734883394,\n      310598401,\n      1164996542,\n      607225278,\n      1323610764,\n      1426881987,\n      3590304994,\n      1925078388,\n      4068182383,\n      2162078206,\n      991336113,\n      2614888103,\n      633803317,\n      3248222580,\n      3479774868,\n      3835390401,\n      2666613458,\n      4022224774,\n      944711139,\n      264347078,\n      2341262773,\n      604807628,\n      2007800933,\n      770255983,\n      1495990901,\n      1249150122,\n      1856431235,\n      1555081692,\n      3175218132,\n      1996064986,\n      2198950837,\n      2554220882,\n      3999719339,\n      2821834349,\n      766784016,\n      2952996808,\n      2566594879,\n      3210313671,\n      3203337956,\n      3336571891,\n      1034457026,\n      3584528711,\n      2466948901,\n      113926993,\n      3758326383,\n      338241895,\n      168717936,\n      666307205,\n      1188179964,\n      773529912,\n      1546045734,\n      1294757372,\n      1522805485,\n      1396182291,\n      2643833823,\n      1695183700,\n      2343527390,\n      1986661051,\n      1014477480,\n      2177026350,\n      1206759142,\n      2456956037,\n      344077627,\n      2730485921,\n      1290863460,\n      2820302411,\n      3158454273,\n      3259730800,\n      3505952657,\n      3345764771,\n      106217008,\n      3516065817,\n      3606008344,\n      3600352804,\n      1432725776,\n      4094571909,\n      1467031594,\n      275423344,\n      851169720,\n      430227734,\n      3100823752,\n      506948616,\n      1363258195,\n      659060556,\n      3750685593,\n      883997877,\n      3785050280,\n      958139571,\n      3318307427,\n      1322822218,\n      3812723403,\n      1537002063,\n      2003034995,\n      1747873779,\n      3602036899,\n      1955562222,\n      1575990012,\n      2024104815,\n      1125592928,\n      2227730452,\n      2716904306,\n      2361852424,\n      442776044,\n      2428436474,\n      593698344,\n      2756734187,\n      3733110249,\n      3204031479,\n      2999351573,\n      3329325298,\n      3815920427,\n      3391569614,\n      3928383900,\n      3515267271,\n      566280711,\n      3940187606,\n      3454069534,\n      4118630271,\n      4000239992,\n      116418474,\n      1914138554,\n      174292421,\n      2731055270,\n      289380356,\n      3203993006,\n      460393269,\n      320620315,\n      685471733,\n      587496836,\n      852142971,\n      1086792851,\n      1017036298,\n      365543100,\n      1126000580,\n      2618297676,\n      1288033470,\n      3409855158,\n      1501505948,\n      4234509866,\n      1607167915,\n      987167468,\n      1816402316,\n      1246189591\n    ]);\n    function hashBlocks(wh, wl, hh, hl, m2, pos, len) {\n      var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n      var h5, l4;\n      var th, tl;\n      var a4, b5, c5, d3;\n      while (len >= 128) {\n        for (var i4 = 0; i4 < 16; i4++) {\n          var j2 = 8 * i4 + pos;\n          wh[i4] = binary_1.readUint32BE(m2, j2);\n          wl[i4] = binary_1.readUint32BE(m2, j2 + 4);\n        }\n        for (var i4 = 0; i4 < 80; i4++) {\n          var bh0 = ah0;\n          var bh1 = ah1;\n          var bh2 = ah2;\n          var bh3 = ah3;\n          var bh4 = ah4;\n          var bh5 = ah5;\n          var bh6 = ah6;\n          var bh7 = ah7;\n          var bl0 = al0;\n          var bl1 = al1;\n          var bl2 = al2;\n          var bl3 = al3;\n          var bl4 = al4;\n          var bl5 = al5;\n          var bl6 = al6;\n          var bl7 = al7;\n          h5 = ah7;\n          l4 = al7;\n          a4 = l4 & 65535;\n          b5 = l4 >>> 16;\n          c5 = h5 & 65535;\n          d3 = h5 >>> 16;\n          h5 = (ah4 >>> 14 | al4 << 32 - 14) ^ (ah4 >>> 18 | al4 << 32 - 18) ^ (al4 >>> 41 - 32 | ah4 << 32 - (41 - 32));\n          l4 = (al4 >>> 14 | ah4 << 32 - 14) ^ (al4 >>> 18 | ah4 << 32 - 18) ^ (ah4 >>> 41 - 32 | al4 << 32 - (41 - 32));\n          a4 += l4 & 65535;\n          b5 += l4 >>> 16;\n          c5 += h5 & 65535;\n          d3 += h5 >>> 16;\n          h5 = ah4 & ah5 ^ ~ah4 & ah6;\n          l4 = al4 & al5 ^ ~al4 & al6;\n          a4 += l4 & 65535;\n          b5 += l4 >>> 16;\n          c5 += h5 & 65535;\n          d3 += h5 >>> 16;\n          h5 = K3[i4 * 2];\n          l4 = K3[i4 * 2 + 1];\n          a4 += l4 & 65535;\n          b5 += l4 >>> 16;\n          c5 += h5 & 65535;\n          d3 += h5 >>> 16;\n          h5 = wh[i4 % 16];\n          l4 = wl[i4 % 16];\n          a4 += l4 & 65535;\n          b5 += l4 >>> 16;\n          c5 += h5 & 65535;\n          d3 += h5 >>> 16;\n          b5 += a4 >>> 16;\n          c5 += b5 >>> 16;\n          d3 += c5 >>> 16;\n          th = c5 & 65535 | d3 << 16;\n          tl = a4 & 65535 | b5 << 16;\n          h5 = th;\n          l4 = tl;\n          a4 = l4 & 65535;\n          b5 = l4 >>> 16;\n          c5 = h5 & 65535;\n          d3 = h5 >>> 16;\n          h5 = (ah0 >>> 28 | al0 << 32 - 28) ^ (al0 >>> 34 - 32 | ah0 << 32 - (34 - 32)) ^ (al0 >>> 39 - 32 | ah0 << 32 - (39 - 32));\n          l4 = (al0 >>> 28 | ah0 << 32 - 28) ^ (ah0 >>> 34 - 32 | al0 << 32 - (34 - 32)) ^ (ah0 >>> 39 - 32 | al0 << 32 - (39 - 32));\n          a4 += l4 & 65535;\n          b5 += l4 >>> 16;\n          c5 += h5 & 65535;\n          d3 += h5 >>> 16;\n          h5 = ah0 & ah1 ^ ah0 & ah2 ^ ah1 & ah2;\n          l4 = al0 & al1 ^ al0 & al2 ^ al1 & al2;\n          a4 += l4 & 65535;\n          b5 += l4 >>> 16;\n          c5 += h5 & 65535;\n          d3 += h5 >>> 16;\n          b5 += a4 >>> 16;\n          c5 += b5 >>> 16;\n          d3 += c5 >>> 16;\n          bh7 = c5 & 65535 | d3 << 16;\n          bl7 = a4 & 65535 | b5 << 16;\n          h5 = bh3;\n          l4 = bl3;\n          a4 = l4 & 65535;\n          b5 = l4 >>> 16;\n          c5 = h5 & 65535;\n          d3 = h5 >>> 16;\n          h5 = th;\n          l4 = tl;\n          a4 += l4 & 65535;\n          b5 += l4 >>> 16;\n          c5 += h5 & 65535;\n          d3 += h5 >>> 16;\n          b5 += a4 >>> 16;\n          c5 += b5 >>> 16;\n          d3 += c5 >>> 16;\n          bh3 = c5 & 65535 | d3 << 16;\n          bl3 = a4 & 65535 | b5 << 16;\n          ah1 = bh0;\n          ah2 = bh1;\n          ah3 = bh2;\n          ah4 = bh3;\n          ah5 = bh4;\n          ah6 = bh5;\n          ah7 = bh6;\n          ah0 = bh7;\n          al1 = bl0;\n          al2 = bl1;\n          al3 = bl2;\n          al4 = bl3;\n          al5 = bl4;\n          al6 = bl5;\n          al7 = bl6;\n          al0 = bl7;\n          if (i4 % 16 === 15) {\n            for (var j2 = 0; j2 < 16; j2++) {\n              h5 = wh[j2];\n              l4 = wl[j2];\n              a4 = l4 & 65535;\n              b5 = l4 >>> 16;\n              c5 = h5 & 65535;\n              d3 = h5 >>> 16;\n              h5 = wh[(j2 + 9) % 16];\n              l4 = wl[(j2 + 9) % 16];\n              a4 += l4 & 65535;\n              b5 += l4 >>> 16;\n              c5 += h5 & 65535;\n              d3 += h5 >>> 16;\n              th = wh[(j2 + 1) % 16];\n              tl = wl[(j2 + 1) % 16];\n              h5 = (th >>> 1 | tl << 32 - 1) ^ (th >>> 8 | tl << 32 - 8) ^ th >>> 7;\n              l4 = (tl >>> 1 | th << 32 - 1) ^ (tl >>> 8 | th << 32 - 8) ^ (tl >>> 7 | th << 32 - 7);\n              a4 += l4 & 65535;\n              b5 += l4 >>> 16;\n              c5 += h5 & 65535;\n              d3 += h5 >>> 16;\n              th = wh[(j2 + 14) % 16];\n              tl = wl[(j2 + 14) % 16];\n              h5 = (th >>> 19 | tl << 32 - 19) ^ (tl >>> 61 - 32 | th << 32 - (61 - 32)) ^ th >>> 6;\n              l4 = (tl >>> 19 | th << 32 - 19) ^ (th >>> 61 - 32 | tl << 32 - (61 - 32)) ^ (tl >>> 6 | th << 32 - 6);\n              a4 += l4 & 65535;\n              b5 += l4 >>> 16;\n              c5 += h5 & 65535;\n              d3 += h5 >>> 16;\n              b5 += a4 >>> 16;\n              c5 += b5 >>> 16;\n              d3 += c5 >>> 16;\n              wh[j2] = c5 & 65535 | d3 << 16;\n              wl[j2] = a4 & 65535 | b5 << 16;\n            }\n          }\n        }\n        h5 = ah0;\n        l4 = al0;\n        a4 = l4 & 65535;\n        b5 = l4 >>> 16;\n        c5 = h5 & 65535;\n        d3 = h5 >>> 16;\n        h5 = hh[0];\n        l4 = hl[0];\n        a4 += l4 & 65535;\n        b5 += l4 >>> 16;\n        c5 += h5 & 65535;\n        d3 += h5 >>> 16;\n        b5 += a4 >>> 16;\n        c5 += b5 >>> 16;\n        d3 += c5 >>> 16;\n        hh[0] = ah0 = c5 & 65535 | d3 << 16;\n        hl[0] = al0 = a4 & 65535 | b5 << 16;\n        h5 = ah1;\n        l4 = al1;\n        a4 = l4 & 65535;\n        b5 = l4 >>> 16;\n        c5 = h5 & 65535;\n        d3 = h5 >>> 16;\n        h5 = hh[1];\n        l4 = hl[1];\n        a4 += l4 & 65535;\n        b5 += l4 >>> 16;\n        c5 += h5 & 65535;\n        d3 += h5 >>> 16;\n        b5 += a4 >>> 16;\n        c5 += b5 >>> 16;\n        d3 += c5 >>> 16;\n        hh[1] = ah1 = c5 & 65535 | d3 << 16;\n        hl[1] = al1 = a4 & 65535 | b5 << 16;\n        h5 = ah2;\n        l4 = al2;\n        a4 = l4 & 65535;\n        b5 = l4 >>> 16;\n        c5 = h5 & 65535;\n        d3 = h5 >>> 16;\n        h5 = hh[2];\n        l4 = hl[2];\n        a4 += l4 & 65535;\n        b5 += l4 >>> 16;\n        c5 += h5 & 65535;\n        d3 += h5 >>> 16;\n        b5 += a4 >>> 16;\n        c5 += b5 >>> 16;\n        d3 += c5 >>> 16;\n        hh[2] = ah2 = c5 & 65535 | d3 << 16;\n        hl[2] = al2 = a4 & 65535 | b5 << 16;\n        h5 = ah3;\n        l4 = al3;\n        a4 = l4 & 65535;\n        b5 = l4 >>> 16;\n        c5 = h5 & 65535;\n        d3 = h5 >>> 16;\n        h5 = hh[3];\n        l4 = hl[3];\n        a4 += l4 & 65535;\n        b5 += l4 >>> 16;\n        c5 += h5 & 65535;\n        d3 += h5 >>> 16;\n        b5 += a4 >>> 16;\n        c5 += b5 >>> 16;\n        d3 += c5 >>> 16;\n        hh[3] = ah3 = c5 & 65535 | d3 << 16;\n        hl[3] = al3 = a4 & 65535 | b5 << 16;\n        h5 = ah4;\n        l4 = al4;\n        a4 = l4 & 65535;\n        b5 = l4 >>> 16;\n        c5 = h5 & 65535;\n        d3 = h5 >>> 16;\n        h5 = hh[4];\n        l4 = hl[4];\n        a4 += l4 & 65535;\n        b5 += l4 >>> 16;\n        c5 += h5 & 65535;\n        d3 += h5 >>> 16;\n        b5 += a4 >>> 16;\n        c5 += b5 >>> 16;\n        d3 += c5 >>> 16;\n        hh[4] = ah4 = c5 & 65535 | d3 << 16;\n        hl[4] = al4 = a4 & 65535 | b5 << 16;\n        h5 = ah5;\n        l4 = al5;\n        a4 = l4 & 65535;\n        b5 = l4 >>> 16;\n        c5 = h5 & 65535;\n        d3 = h5 >>> 16;\n        h5 = hh[5];\n        l4 = hl[5];\n        a4 += l4 & 65535;\n        b5 += l4 >>> 16;\n        c5 += h5 & 65535;\n        d3 += h5 >>> 16;\n        b5 += a4 >>> 16;\n        c5 += b5 >>> 16;\n        d3 += c5 >>> 16;\n        hh[5] = ah5 = c5 & 65535 | d3 << 16;\n        hl[5] = al5 = a4 & 65535 | b5 << 16;\n        h5 = ah6;\n        l4 = al6;\n        a4 = l4 & 65535;\n        b5 = l4 >>> 16;\n        c5 = h5 & 65535;\n        d3 = h5 >>> 16;\n        h5 = hh[6];\n        l4 = hl[6];\n        a4 += l4 & 65535;\n        b5 += l4 >>> 16;\n        c5 += h5 & 65535;\n        d3 += h5 >>> 16;\n        b5 += a4 >>> 16;\n        c5 += b5 >>> 16;\n        d3 += c5 >>> 16;\n        hh[6] = ah6 = c5 & 65535 | d3 << 16;\n        hl[6] = al6 = a4 & 65535 | b5 << 16;\n        h5 = ah7;\n        l4 = al7;\n        a4 = l4 & 65535;\n        b5 = l4 >>> 16;\n        c5 = h5 & 65535;\n        d3 = h5 >>> 16;\n        h5 = hh[7];\n        l4 = hl[7];\n        a4 += l4 & 65535;\n        b5 += l4 >>> 16;\n        c5 += h5 & 65535;\n        d3 += h5 >>> 16;\n        b5 += a4 >>> 16;\n        c5 += b5 >>> 16;\n        d3 += c5 >>> 16;\n        hh[7] = ah7 = c5 & 65535 | d3 << 16;\n        hl[7] = al7 = a4 & 65535 | b5 << 16;\n        pos += 128;\n        len -= 128;\n      }\n      return pos;\n    }\n    function hash2(data) {\n      var h5 = new SHA512();\n      h5.update(data);\n      var digest2 = h5.digest();\n      h5.clean();\n      return digest2;\n    }\n    exports.hash = hash2;\n  }\n});\n\n// node_modules/@stablelib/ed25519/lib/ed25519.js\nvar require_ed25519 = __commonJS({\n  \"node_modules/@stablelib/ed25519/lib/ed25519.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.convertSecretKeyToX25519 = exports.convertPublicKeyToX25519 = exports.verify = exports.sign = exports.extractPublicKeyFromSecretKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.SEED_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = exports.SIGNATURE_LENGTH = void 0;\n    var random_1 = require_random();\n    var sha512_1 = require_sha512();\n    var wipe_1 = require_wipe();\n    exports.SIGNATURE_LENGTH = 64;\n    exports.PUBLIC_KEY_LENGTH = 32;\n    exports.SECRET_KEY_LENGTH = 64;\n    exports.SEED_LENGTH = 32;\n    function gf(init2) {\n      const r4 = new Float64Array(16);\n      if (init2) {\n        for (let i4 = 0; i4 < init2.length; i4++) {\n          r4[i4] = init2[i4];\n        }\n      }\n      return r4;\n    }\n    var _9 = new Uint8Array(32);\n    _9[0] = 9;\n    var gf0 = gf();\n    var gf1 = gf([1]);\n    var D4 = gf([\n      30883,\n      4953,\n      19914,\n      30187,\n      55467,\n      16705,\n      2637,\n      112,\n      59544,\n      30585,\n      16505,\n      36039,\n      65139,\n      11119,\n      27886,\n      20995\n    ]);\n    var D22 = gf([\n      61785,\n      9906,\n      39828,\n      60374,\n      45398,\n      33411,\n      5274,\n      224,\n      53552,\n      61171,\n      33010,\n      6542,\n      64743,\n      22239,\n      55772,\n      9222\n    ]);\n    var X3 = gf([\n      54554,\n      36645,\n      11616,\n      51542,\n      42930,\n      38181,\n      51040,\n      26924,\n      56412,\n      64982,\n      57905,\n      49316,\n      21502,\n      52590,\n      14035,\n      8553\n    ]);\n    var Y2 = gf([\n      26200,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214,\n      26214\n    ]);\n    var I5 = gf([\n      41136,\n      18958,\n      6951,\n      50414,\n      58488,\n      44335,\n      6150,\n      12099,\n      55207,\n      15867,\n      153,\n      11085,\n      57099,\n      20417,\n      9344,\n      11139\n    ]);\n    function set25519(r4, a4) {\n      for (let i4 = 0; i4 < 16; i4++) {\n        r4[i4] = a4[i4] | 0;\n      }\n    }\n    function car25519(o4) {\n      let c5 = 1;\n      for (let i4 = 0; i4 < 16; i4++) {\n        let v5 = o4[i4] + c5 + 65535;\n        c5 = Math.floor(v5 / 65536);\n        o4[i4] = v5 - c5 * 65536;\n      }\n      o4[0] += c5 - 1 + 37 * (c5 - 1);\n    }\n    function sel25519(p3, q3, b5) {\n      const c5 = ~(b5 - 1);\n      for (let i4 = 0; i4 < 16; i4++) {\n        const t = c5 & (p3[i4] ^ q3[i4]);\n        p3[i4] ^= t;\n        q3[i4] ^= t;\n      }\n    }\n    function pack25519(o4, n5) {\n      const m2 = gf();\n      const t = gf();\n      for (let i4 = 0; i4 < 16; i4++) {\n        t[i4] = n5[i4];\n      }\n      car25519(t);\n      car25519(t);\n      car25519(t);\n      for (let j2 = 0; j2 < 2; j2++) {\n        m2[0] = t[0] - 65517;\n        for (let i4 = 1; i4 < 15; i4++) {\n          m2[i4] = t[i4] - 65535 - (m2[i4 - 1] >> 16 & 1);\n          m2[i4 - 1] &= 65535;\n        }\n        m2[15] = t[15] - 32767 - (m2[14] >> 16 & 1);\n        const b5 = m2[15] >> 16 & 1;\n        m2[14] &= 65535;\n        sel25519(t, m2, 1 - b5);\n      }\n      for (let i4 = 0; i4 < 16; i4++) {\n        o4[2 * i4] = t[i4] & 255;\n        o4[2 * i4 + 1] = t[i4] >> 8;\n      }\n    }\n    function verify32(x6, y6) {\n      let d3 = 0;\n      for (let i4 = 0; i4 < 32; i4++) {\n        d3 |= x6[i4] ^ y6[i4];\n      }\n      return (1 & d3 - 1 >>> 8) - 1;\n    }\n    function neq25519(a4, b5) {\n      const c5 = new Uint8Array(32);\n      const d3 = new Uint8Array(32);\n      pack25519(c5, a4);\n      pack25519(d3, b5);\n      return verify32(c5, d3);\n    }\n    function par25519(a4) {\n      const d3 = new Uint8Array(32);\n      pack25519(d3, a4);\n      return d3[0] & 1;\n    }\n    function unpack25519(o4, n5) {\n      for (let i4 = 0; i4 < 16; i4++) {\n        o4[i4] = n5[2 * i4] + (n5[2 * i4 + 1] << 8);\n      }\n      o4[15] &= 32767;\n    }\n    function add3(o4, a4, b5) {\n      for (let i4 = 0; i4 < 16; i4++) {\n        o4[i4] = a4[i4] + b5[i4];\n      }\n    }\n    function sub(o4, a4, b5) {\n      for (let i4 = 0; i4 < 16; i4++) {\n        o4[i4] = a4[i4] - b5[i4];\n      }\n    }\n    function mul3(o4, a4, b5) {\n      let v5, c5, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b5[0], b1 = b5[1], b22 = b5[2], b32 = b5[3], b42 = b5[4], b52 = b5[5], b6 = b5[6], b7 = b5[7], b8 = b5[8], b9 = b5[9], b10 = b5[10], b11 = b5[11], b12 = b5[12], b13 = b5[13], b14 = b5[14], b15 = b5[15];\n      v5 = a4[0];\n      t0 += v5 * b0;\n      t1 += v5 * b1;\n      t2 += v5 * b22;\n      t3 += v5 * b32;\n      t4 += v5 * b42;\n      t5 += v5 * b52;\n      t6 += v5 * b6;\n      t7 += v5 * b7;\n      t8 += v5 * b8;\n      t9 += v5 * b9;\n      t10 += v5 * b10;\n      t11 += v5 * b11;\n      t12 += v5 * b12;\n      t13 += v5 * b13;\n      t14 += v5 * b14;\n      t15 += v5 * b15;\n      v5 = a4[1];\n      t1 += v5 * b0;\n      t2 += v5 * b1;\n      t3 += v5 * b22;\n      t4 += v5 * b32;\n      t5 += v5 * b42;\n      t6 += v5 * b52;\n      t7 += v5 * b6;\n      t8 += v5 * b7;\n      t9 += v5 * b8;\n      t10 += v5 * b9;\n      t11 += v5 * b10;\n      t12 += v5 * b11;\n      t13 += v5 * b12;\n      t14 += v5 * b13;\n      t15 += v5 * b14;\n      t16 += v5 * b15;\n      v5 = a4[2];\n      t2 += v5 * b0;\n      t3 += v5 * b1;\n      t4 += v5 * b22;\n      t5 += v5 * b32;\n      t6 += v5 * b42;\n      t7 += v5 * b52;\n      t8 += v5 * b6;\n      t9 += v5 * b7;\n      t10 += v5 * b8;\n      t11 += v5 * b9;\n      t12 += v5 * b10;\n      t13 += v5 * b11;\n      t14 += v5 * b12;\n      t15 += v5 * b13;\n      t16 += v5 * b14;\n      t17 += v5 * b15;\n      v5 = a4[3];\n      t3 += v5 * b0;\n      t4 += v5 * b1;\n      t5 += v5 * b22;\n      t6 += v5 * b32;\n      t7 += v5 * b42;\n      t8 += v5 * b52;\n      t9 += v5 * b6;\n      t10 += v5 * b7;\n      t11 += v5 * b8;\n      t12 += v5 * b9;\n      t13 += v5 * b10;\n      t14 += v5 * b11;\n      t15 += v5 * b12;\n      t16 += v5 * b13;\n      t17 += v5 * b14;\n      t18 += v5 * b15;\n      v5 = a4[4];\n      t4 += v5 * b0;\n      t5 += v5 * b1;\n      t6 += v5 * b22;\n      t7 += v5 * b32;\n      t8 += v5 * b42;\n      t9 += v5 * b52;\n      t10 += v5 * b6;\n      t11 += v5 * b7;\n      t12 += v5 * b8;\n      t13 += v5 * b9;\n      t14 += v5 * b10;\n      t15 += v5 * b11;\n      t16 += v5 * b12;\n      t17 += v5 * b13;\n      t18 += v5 * b14;\n      t19 += v5 * b15;\n      v5 = a4[5];\n      t5 += v5 * b0;\n      t6 += v5 * b1;\n      t7 += v5 * b22;\n      t8 += v5 * b32;\n      t9 += v5 * b42;\n      t10 += v5 * b52;\n      t11 += v5 * b6;\n      t12 += v5 * b7;\n      t13 += v5 * b8;\n      t14 += v5 * b9;\n      t15 += v5 * b10;\n      t16 += v5 * b11;\n      t17 += v5 * b12;\n      t18 += v5 * b13;\n      t19 += v5 * b14;\n      t20 += v5 * b15;\n      v5 = a4[6];\n      t6 += v5 * b0;\n      t7 += v5 * b1;\n      t8 += v5 * b22;\n      t9 += v5 * b32;\n      t10 += v5 * b42;\n      t11 += v5 * b52;\n      t12 += v5 * b6;\n      t13 += v5 * b7;\n      t14 += v5 * b8;\n      t15 += v5 * b9;\n      t16 += v5 * b10;\n      t17 += v5 * b11;\n      t18 += v5 * b12;\n      t19 += v5 * b13;\n      t20 += v5 * b14;\n      t21 += v5 * b15;\n      v5 = a4[7];\n      t7 += v5 * b0;\n      t8 += v5 * b1;\n      t9 += v5 * b22;\n      t10 += v5 * b32;\n      t11 += v5 * b42;\n      t12 += v5 * b52;\n      t13 += v5 * b6;\n      t14 += v5 * b7;\n      t15 += v5 * b8;\n      t16 += v5 * b9;\n      t17 += v5 * b10;\n      t18 += v5 * b11;\n      t19 += v5 * b12;\n      t20 += v5 * b13;\n      t21 += v5 * b14;\n      t22 += v5 * b15;\n      v5 = a4[8];\n      t8 += v5 * b0;\n      t9 += v5 * b1;\n      t10 += v5 * b22;\n      t11 += v5 * b32;\n      t12 += v5 * b42;\n      t13 += v5 * b52;\n      t14 += v5 * b6;\n      t15 += v5 * b7;\n      t16 += v5 * b8;\n      t17 += v5 * b9;\n      t18 += v5 * b10;\n      t19 += v5 * b11;\n      t20 += v5 * b12;\n      t21 += v5 * b13;\n      t22 += v5 * b14;\n      t23 += v5 * b15;\n      v5 = a4[9];\n      t9 += v5 * b0;\n      t10 += v5 * b1;\n      t11 += v5 * b22;\n      t12 += v5 * b32;\n      t13 += v5 * b42;\n      t14 += v5 * b52;\n      t15 += v5 * b6;\n      t16 += v5 * b7;\n      t17 += v5 * b8;\n      t18 += v5 * b9;\n      t19 += v5 * b10;\n      t20 += v5 * b11;\n      t21 += v5 * b12;\n      t22 += v5 * b13;\n      t23 += v5 * b14;\n      t24 += v5 * b15;\n      v5 = a4[10];\n      t10 += v5 * b0;\n      t11 += v5 * b1;\n      t12 += v5 * b22;\n      t13 += v5 * b32;\n      t14 += v5 * b42;\n      t15 += v5 * b52;\n      t16 += v5 * b6;\n      t17 += v5 * b7;\n      t18 += v5 * b8;\n      t19 += v5 * b9;\n      t20 += v5 * b10;\n      t21 += v5 * b11;\n      t22 += v5 * b12;\n      t23 += v5 * b13;\n      t24 += v5 * b14;\n      t25 += v5 * b15;\n      v5 = a4[11];\n      t11 += v5 * b0;\n      t12 += v5 * b1;\n      t13 += v5 * b22;\n      t14 += v5 * b32;\n      t15 += v5 * b42;\n      t16 += v5 * b52;\n      t17 += v5 * b6;\n      t18 += v5 * b7;\n      t19 += v5 * b8;\n      t20 += v5 * b9;\n      t21 += v5 * b10;\n      t22 += v5 * b11;\n      t23 += v5 * b12;\n      t24 += v5 * b13;\n      t25 += v5 * b14;\n      t26 += v5 * b15;\n      v5 = a4[12];\n      t12 += v5 * b0;\n      t13 += v5 * b1;\n      t14 += v5 * b22;\n      t15 += v5 * b32;\n      t16 += v5 * b42;\n      t17 += v5 * b52;\n      t18 += v5 * b6;\n      t19 += v5 * b7;\n      t20 += v5 * b8;\n      t21 += v5 * b9;\n      t22 += v5 * b10;\n      t23 += v5 * b11;\n      t24 += v5 * b12;\n      t25 += v5 * b13;\n      t26 += v5 * b14;\n      t27 += v5 * b15;\n      v5 = a4[13];\n      t13 += v5 * b0;\n      t14 += v5 * b1;\n      t15 += v5 * b22;\n      t16 += v5 * b32;\n      t17 += v5 * b42;\n      t18 += v5 * b52;\n      t19 += v5 * b6;\n      t20 += v5 * b7;\n      t21 += v5 * b8;\n      t22 += v5 * b9;\n      t23 += v5 * b10;\n      t24 += v5 * b11;\n      t25 += v5 * b12;\n      t26 += v5 * b13;\n      t27 += v5 * b14;\n      t28 += v5 * b15;\n      v5 = a4[14];\n      t14 += v5 * b0;\n      t15 += v5 * b1;\n      t16 += v5 * b22;\n      t17 += v5 * b32;\n      t18 += v5 * b42;\n      t19 += v5 * b52;\n      t20 += v5 * b6;\n      t21 += v5 * b7;\n      t22 += v5 * b8;\n      t23 += v5 * b9;\n      t24 += v5 * b10;\n      t25 += v5 * b11;\n      t26 += v5 * b12;\n      t27 += v5 * b13;\n      t28 += v5 * b14;\n      t29 += v5 * b15;\n      v5 = a4[15];\n      t15 += v5 * b0;\n      t16 += v5 * b1;\n      t17 += v5 * b22;\n      t18 += v5 * b32;\n      t19 += v5 * b42;\n      t20 += v5 * b52;\n      t21 += v5 * b6;\n      t22 += v5 * b7;\n      t23 += v5 * b8;\n      t24 += v5 * b9;\n      t25 += v5 * b10;\n      t26 += v5 * b11;\n      t27 += v5 * b12;\n      t28 += v5 * b13;\n      t29 += v5 * b14;\n      t30 += v5 * b15;\n      t0 += 38 * t16;\n      t1 += 38 * t17;\n      t2 += 38 * t18;\n      t3 += 38 * t19;\n      t4 += 38 * t20;\n      t5 += 38 * t21;\n      t6 += 38 * t22;\n      t7 += 38 * t23;\n      t8 += 38 * t24;\n      t9 += 38 * t25;\n      t10 += 38 * t26;\n      t11 += 38 * t27;\n      t12 += 38 * t28;\n      t13 += 38 * t29;\n      t14 += 38 * t30;\n      c5 = 1;\n      v5 = t0 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t0 = v5 - c5 * 65536;\n      v5 = t1 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t1 = v5 - c5 * 65536;\n      v5 = t2 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t2 = v5 - c5 * 65536;\n      v5 = t3 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t3 = v5 - c5 * 65536;\n      v5 = t4 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t4 = v5 - c5 * 65536;\n      v5 = t5 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t5 = v5 - c5 * 65536;\n      v5 = t6 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t6 = v5 - c5 * 65536;\n      v5 = t7 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t7 = v5 - c5 * 65536;\n      v5 = t8 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t8 = v5 - c5 * 65536;\n      v5 = t9 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t9 = v5 - c5 * 65536;\n      v5 = t10 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t10 = v5 - c5 * 65536;\n      v5 = t11 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t11 = v5 - c5 * 65536;\n      v5 = t12 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t12 = v5 - c5 * 65536;\n      v5 = t13 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t13 = v5 - c5 * 65536;\n      v5 = t14 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t14 = v5 - c5 * 65536;\n      v5 = t15 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t15 = v5 - c5 * 65536;\n      t0 += c5 - 1 + 37 * (c5 - 1);\n      c5 = 1;\n      v5 = t0 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t0 = v5 - c5 * 65536;\n      v5 = t1 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t1 = v5 - c5 * 65536;\n      v5 = t2 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t2 = v5 - c5 * 65536;\n      v5 = t3 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t3 = v5 - c5 * 65536;\n      v5 = t4 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t4 = v5 - c5 * 65536;\n      v5 = t5 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t5 = v5 - c5 * 65536;\n      v5 = t6 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t6 = v5 - c5 * 65536;\n      v5 = t7 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t7 = v5 - c5 * 65536;\n      v5 = t8 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t8 = v5 - c5 * 65536;\n      v5 = t9 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t9 = v5 - c5 * 65536;\n      v5 = t10 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t10 = v5 - c5 * 65536;\n      v5 = t11 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t11 = v5 - c5 * 65536;\n      v5 = t12 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t12 = v5 - c5 * 65536;\n      v5 = t13 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t13 = v5 - c5 * 65536;\n      v5 = t14 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t14 = v5 - c5 * 65536;\n      v5 = t15 + c5 + 65535;\n      c5 = Math.floor(v5 / 65536);\n      t15 = v5 - c5 * 65536;\n      t0 += c5 - 1 + 37 * (c5 - 1);\n      o4[0] = t0;\n      o4[1] = t1;\n      o4[2] = t2;\n      o4[3] = t3;\n      o4[4] = t4;\n      o4[5] = t5;\n      o4[6] = t6;\n      o4[7] = t7;\n      o4[8] = t8;\n      o4[9] = t9;\n      o4[10] = t10;\n      o4[11] = t11;\n      o4[12] = t12;\n      o4[13] = t13;\n      o4[14] = t14;\n      o4[15] = t15;\n    }\n    function square(o4, a4) {\n      mul3(o4, a4, a4);\n    }\n    function inv25519(o4, i4) {\n      const c5 = gf();\n      let a4;\n      for (a4 = 0; a4 < 16; a4++) {\n        c5[a4] = i4[a4];\n      }\n      for (a4 = 253; a4 >= 0; a4--) {\n        square(c5, c5);\n        if (a4 !== 2 && a4 !== 4) {\n          mul3(c5, c5, i4);\n        }\n      }\n      for (a4 = 0; a4 < 16; a4++) {\n        o4[a4] = c5[a4];\n      }\n    }\n    function pow2523(o4, i4) {\n      const c5 = gf();\n      let a4;\n      for (a4 = 0; a4 < 16; a4++) {\n        c5[a4] = i4[a4];\n      }\n      for (a4 = 250; a4 >= 0; a4--) {\n        square(c5, c5);\n        if (a4 !== 1) {\n          mul3(c5, c5, i4);\n        }\n      }\n      for (a4 = 0; a4 < 16; a4++) {\n        o4[a4] = c5[a4];\n      }\n    }\n    function edadd(p3, q3) {\n      const a4 = gf(), b5 = gf(), c5 = gf(), d3 = gf(), e2 = gf(), f4 = gf(), g4 = gf(), h5 = gf(), t = gf();\n      sub(a4, p3[1], p3[0]);\n      sub(t, q3[1], q3[0]);\n      mul3(a4, a4, t);\n      add3(b5, p3[0], p3[1]);\n      add3(t, q3[0], q3[1]);\n      mul3(b5, b5, t);\n      mul3(c5, p3[3], q3[3]);\n      mul3(c5, c5, D22);\n      mul3(d3, p3[2], q3[2]);\n      add3(d3, d3, d3);\n      sub(e2, b5, a4);\n      sub(f4, d3, c5);\n      add3(g4, d3, c5);\n      add3(h5, b5, a4);\n      mul3(p3[0], e2, f4);\n      mul3(p3[1], h5, g4);\n      mul3(p3[2], g4, f4);\n      mul3(p3[3], e2, h5);\n    }\n    function cswap(p3, q3, b5) {\n      for (let i4 = 0; i4 < 4; i4++) {\n        sel25519(p3[i4], q3[i4], b5);\n      }\n    }\n    function pack(r4, p3) {\n      const tx = gf(), ty = gf(), zi2 = gf();\n      inv25519(zi2, p3[2]);\n      mul3(tx, p3[0], zi2);\n      mul3(ty, p3[1], zi2);\n      pack25519(r4, ty);\n      r4[31] ^= par25519(tx) << 7;\n    }\n    function scalarmult(p3, q3, s3) {\n      set25519(p3[0], gf0);\n      set25519(p3[1], gf1);\n      set25519(p3[2], gf1);\n      set25519(p3[3], gf0);\n      for (let i4 = 255; i4 >= 0; --i4) {\n        const b5 = s3[i4 / 8 | 0] >> (i4 & 7) & 1;\n        cswap(p3, q3, b5);\n        edadd(q3, p3);\n        edadd(p3, p3);\n        cswap(p3, q3, b5);\n      }\n    }\n    function scalarbase(p3, s3) {\n      const q3 = [gf(), gf(), gf(), gf()];\n      set25519(q3[0], X3);\n      set25519(q3[1], Y2);\n      set25519(q3[2], gf1);\n      mul3(q3[3], X3, Y2);\n      scalarmult(p3, q3, s3);\n    }\n    function generateKeyPairFromSeed2(seed) {\n      if (seed.length !== exports.SEED_LENGTH) {\n        throw new Error(`ed25519: seed must be ${exports.SEED_LENGTH} bytes`);\n      }\n      const d3 = (0, sha512_1.hash)(seed);\n      d3[0] &= 248;\n      d3[31] &= 127;\n      d3[31] |= 64;\n      const publicKey = new Uint8Array(32);\n      const p3 = [gf(), gf(), gf(), gf()];\n      scalarbase(p3, d3);\n      pack(publicKey, p3);\n      const secretKey = new Uint8Array(64);\n      secretKey.set(seed);\n      secretKey.set(publicKey, 32);\n      return {\n        publicKey,\n        secretKey\n      };\n    }\n    exports.generateKeyPairFromSeed = generateKeyPairFromSeed2;\n    function generateKeyPair3(prng) {\n      const seed = (0, random_1.randomBytes)(32, prng);\n      const result = generateKeyPairFromSeed2(seed);\n      (0, wipe_1.wipe)(seed);\n      return result;\n    }\n    exports.generateKeyPair = generateKeyPair3;\n    function extractPublicKeyFromSecretKey(secretKey) {\n      if (secretKey.length !== exports.SECRET_KEY_LENGTH) {\n        throw new Error(`ed25519: secret key must be ${exports.SECRET_KEY_LENGTH} bytes`);\n      }\n      return new Uint8Array(secretKey.subarray(32));\n    }\n    exports.extractPublicKeyFromSecretKey = extractPublicKeyFromSecretKey;\n    var L3 = new Float64Array([\n      237,\n      211,\n      245,\n      92,\n      26,\n      99,\n      18,\n      88,\n      214,\n      156,\n      247,\n      162,\n      222,\n      249,\n      222,\n      20,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      16\n    ]);\n    function modL(r4, x6) {\n      let carry;\n      let i4;\n      let j2;\n      let k4;\n      for (i4 = 63; i4 >= 32; --i4) {\n        carry = 0;\n        for (j2 = i4 - 32, k4 = i4 - 12; j2 < k4; ++j2) {\n          x6[j2] += carry - 16 * x6[i4] * L3[j2 - (i4 - 32)];\n          carry = Math.floor((x6[j2] + 128) / 256);\n          x6[j2] -= carry * 256;\n        }\n        x6[j2] += carry;\n        x6[i4] = 0;\n      }\n      carry = 0;\n      for (j2 = 0; j2 < 32; j2++) {\n        x6[j2] += carry - (x6[31] >> 4) * L3[j2];\n        carry = x6[j2] >> 8;\n        x6[j2] &= 255;\n      }\n      for (j2 = 0; j2 < 32; j2++) {\n        x6[j2] -= carry * L3[j2];\n      }\n      for (i4 = 0; i4 < 32; i4++) {\n        x6[i4 + 1] += x6[i4] >> 8;\n        r4[i4] = x6[i4] & 255;\n      }\n    }\n    function reduce(r4) {\n      const x6 = new Float64Array(64);\n      for (let i4 = 0; i4 < 64; i4++) {\n        x6[i4] = r4[i4];\n      }\n      for (let i4 = 0; i4 < 64; i4++) {\n        r4[i4] = 0;\n      }\n      modL(r4, x6);\n    }\n    function sign4(secretKey, message) {\n      const x6 = new Float64Array(64);\n      const p3 = [gf(), gf(), gf(), gf()];\n      const d3 = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n      d3[0] &= 248;\n      d3[31] &= 127;\n      d3[31] |= 64;\n      const signature2 = new Uint8Array(64);\n      signature2.set(d3.subarray(32), 32);\n      const hs = new sha512_1.SHA512();\n      hs.update(signature2.subarray(32));\n      hs.update(message);\n      const r4 = hs.digest();\n      hs.clean();\n      reduce(r4);\n      scalarbase(p3, r4);\n      pack(signature2, p3);\n      hs.reset();\n      hs.update(signature2.subarray(0, 32));\n      hs.update(secretKey.subarray(32));\n      hs.update(message);\n      const h5 = hs.digest();\n      reduce(h5);\n      for (let i4 = 0; i4 < 32; i4++) {\n        x6[i4] = r4[i4];\n      }\n      for (let i4 = 0; i4 < 32; i4++) {\n        for (let j2 = 0; j2 < 32; j2++) {\n          x6[i4 + j2] += h5[i4] * d3[j2];\n        }\n      }\n      modL(signature2.subarray(32), x6);\n      return signature2;\n    }\n    exports.sign = sign4;\n    function unpackneg(r4, p3) {\n      const t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n      set25519(r4[2], gf1);\n      unpack25519(r4[1], p3);\n      square(num, r4[1]);\n      mul3(den, num, D4);\n      sub(num, num, r4[2]);\n      add3(den, r4[2], den);\n      square(den2, den);\n      square(den4, den2);\n      mul3(den6, den4, den2);\n      mul3(t, den6, num);\n      mul3(t, t, den);\n      pow2523(t, t);\n      mul3(t, t, num);\n      mul3(t, t, den);\n      mul3(t, t, den);\n      mul3(r4[0], t, den);\n      square(chk, r4[0]);\n      mul3(chk, chk, den);\n      if (neq25519(chk, num)) {\n        mul3(r4[0], r4[0], I5);\n      }\n      square(chk, r4[0]);\n      mul3(chk, chk, den);\n      if (neq25519(chk, num)) {\n        return -1;\n      }\n      if (par25519(r4[0]) === p3[31] >> 7) {\n        sub(r4[0], gf0, r4[0]);\n      }\n      mul3(r4[3], r4[0], r4[1]);\n      return 0;\n    }\n    function verify4(publicKey, message, signature2) {\n      const t = new Uint8Array(32);\n      const p3 = [gf(), gf(), gf(), gf()];\n      const q3 = [gf(), gf(), gf(), gf()];\n      if (signature2.length !== exports.SIGNATURE_LENGTH) {\n        throw new Error(`ed25519: signature must be ${exports.SIGNATURE_LENGTH} bytes`);\n      }\n      if (unpackneg(q3, publicKey)) {\n        return false;\n      }\n      const hs = new sha512_1.SHA512();\n      hs.update(signature2.subarray(0, 32));\n      hs.update(publicKey);\n      hs.update(message);\n      const h5 = hs.digest();\n      reduce(h5);\n      scalarmult(p3, q3, h5);\n      scalarbase(q3, signature2.subarray(32));\n      edadd(p3, q3);\n      pack(t, p3);\n      if (verify32(signature2, t)) {\n        return false;\n      }\n      return true;\n    }\n    exports.verify = verify4;\n    function convertPublicKeyToX25519(publicKey) {\n      let q3 = [gf(), gf(), gf(), gf()];\n      if (unpackneg(q3, publicKey)) {\n        throw new Error(\"Ed25519: invalid public key\");\n      }\n      let a4 = gf();\n      let b5 = gf();\n      let y6 = q3[1];\n      add3(a4, gf1, y6);\n      sub(b5, gf1, y6);\n      inv25519(b5, b5);\n      mul3(a4, a4, b5);\n      let z6 = new Uint8Array(32);\n      pack25519(z6, a4);\n      return z6;\n    }\n    exports.convertPublicKeyToX25519 = convertPublicKeyToX25519;\n    function convertSecretKeyToX25519(secretKey) {\n      const d3 = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n      d3[0] &= 248;\n      d3[31] &= 127;\n      d3[31] |= 64;\n      const o4 = new Uint8Array(d3.subarray(0, 32));\n      (0, wipe_1.wipe)(d3);\n      return o4;\n    }\n    exports.convertSecretKeyToX25519 = convertSecretKeyToX25519;\n  }\n});\n\n// node_modules/quick-format-unescaped/index.js\nvar require_quick_format_unescaped = __commonJS({\n  \"node_modules/quick-format-unescaped/index.js\"(exports, module) {\n    \"use strict\";\n    function tryStringify(o4) {\n      try {\n        return JSON.stringify(o4);\n      } catch (e2) {\n        return '\"[Circular]\"';\n      }\n    }\n    module.exports = format;\n    function format(f4, args, opts) {\n      var ss2 = opts && opts.stringify || tryStringify;\n      var offset = 1;\n      if (typeof f4 === \"object\" && f4 !== null) {\n        var len = args.length + offset;\n        if (len === 1)\n          return f4;\n        var objects = new Array(len);\n        objects[0] = ss2(f4);\n        for (var index = 1; index < len; index++) {\n          objects[index] = ss2(args[index]);\n        }\n        return objects.join(\" \");\n      }\n      if (typeof f4 !== \"string\") {\n        return f4;\n      }\n      var argLen = args.length;\n      if (argLen === 0)\n        return f4;\n      var str = \"\";\n      var a4 = 1 - offset;\n      var lastPos = -1;\n      var flen = f4 && f4.length || 0;\n      for (var i4 = 0; i4 < flen; ) {\n        if (f4.charCodeAt(i4) === 37 && i4 + 1 < flen) {\n          lastPos = lastPos > -1 ? lastPos : 0;\n          switch (f4.charCodeAt(i4 + 1)) {\n            case 100:\n            case 102:\n              if (a4 >= argLen)\n                break;\n              if (args[a4] == null)\n                break;\n              if (lastPos < i4)\n                str += f4.slice(lastPos, i4);\n              str += Number(args[a4]);\n              lastPos = i4 + 2;\n              i4++;\n              break;\n            case 105:\n              if (a4 >= argLen)\n                break;\n              if (args[a4] == null)\n                break;\n              if (lastPos < i4)\n                str += f4.slice(lastPos, i4);\n              str += Math.floor(Number(args[a4]));\n              lastPos = i4 + 2;\n              i4++;\n              break;\n            case 79:\n            case 111:\n            case 106:\n              if (a4 >= argLen)\n                break;\n              if (args[a4] === void 0)\n                break;\n              if (lastPos < i4)\n                str += f4.slice(lastPos, i4);\n              var type = typeof args[a4];\n              if (type === \"string\") {\n                str += \"'\" + args[a4] + \"'\";\n                lastPos = i4 + 2;\n                i4++;\n                break;\n              }\n              if (type === \"function\") {\n                str += args[a4].name || \"<anonymous>\";\n                lastPos = i4 + 2;\n                i4++;\n                break;\n              }\n              str += ss2(args[a4]);\n              lastPos = i4 + 2;\n              i4++;\n              break;\n            case 115:\n              if (a4 >= argLen)\n                break;\n              if (lastPos < i4)\n                str += f4.slice(lastPos, i4);\n              str += String(args[a4]);\n              lastPos = i4 + 2;\n              i4++;\n              break;\n            case 37:\n              if (lastPos < i4)\n                str += f4.slice(lastPos, i4);\n              str += \"%\";\n              lastPos = i4 + 2;\n              i4++;\n              a4--;\n              break;\n          }\n          ++a4;\n        }\n        ++i4;\n      }\n      if (lastPos === -1)\n        return f4;\n      else if (lastPos < flen) {\n        str += f4.slice(lastPos);\n      }\n      return str;\n    }\n  }\n});\n\n// node_modules/pino/browser.js\nvar require_browser2 = __commonJS({\n  \"node_modules/pino/browser.js\"(exports, module) {\n    \"use strict\";\n    var format = require_quick_format_unescaped();\n    module.exports = pino;\n    var _console = pfGlobalThisOrFallback().console || {};\n    var stdSerializers = {\n      mapHttpRequest: mock,\n      mapHttpResponse: mock,\n      wrapRequestSerializer: passthrough,\n      wrapResponseSerializer: passthrough,\n      wrapErrorSerializer: passthrough,\n      req: mock,\n      res: mock,\n      err: asErrValue\n    };\n    function shouldSerialize(serialize, serializers) {\n      if (Array.isArray(serialize)) {\n        const hasToFilter = serialize.filter(function(k4) {\n          return k4 !== \"!stdSerializers.err\";\n        });\n        return hasToFilter;\n      } else if (serialize === true) {\n        return Object.keys(serializers);\n      }\n      return false;\n    }\n    function pino(opts) {\n      opts = opts || {};\n      opts.browser = opts.browser || {};\n      const transmit2 = opts.browser.transmit;\n      if (transmit2 && typeof transmit2.send !== \"function\") {\n        throw Error(\"pino: transmit option must have a send function\");\n      }\n      const proto = opts.browser.write || _console;\n      if (opts.browser.write)\n        opts.browser.asObject = true;\n      const serializers = opts.serializers || {};\n      const serialize = shouldSerialize(opts.browser.serialize, serializers);\n      let stdErrSerialize = opts.browser.serialize;\n      if (Array.isArray(opts.browser.serialize) && opts.browser.serialize.indexOf(\"!stdSerializers.err\") > -1)\n        stdErrSerialize = false;\n      const levels = [\"error\", \"fatal\", \"warn\", \"info\", \"debug\", \"trace\"];\n      if (typeof proto === \"function\") {\n        proto.error = proto.fatal = proto.warn = proto.info = proto.debug = proto.trace = proto;\n      }\n      if (opts.enabled === false)\n        opts.level = \"silent\";\n      const level = opts.level || \"info\";\n      const logger12 = Object.create(proto);\n      if (!logger12.log)\n        logger12.log = noop;\n      Object.defineProperty(logger12, \"levelVal\", {\n        get: getLevelVal\n      });\n      Object.defineProperty(logger12, \"level\", {\n        get: getLevel,\n        set: setLevel\n      });\n      const setOpts = {\n        transmit: transmit2,\n        serialize,\n        asObject: opts.browser.asObject,\n        levels,\n        timestamp: getTimeFunction(opts)\n      };\n      logger12.levels = pino.levels;\n      logger12.level = level;\n      logger12.setMaxListeners = logger12.getMaxListeners = logger12.emit = logger12.addListener = logger12.on = logger12.prependListener = logger12.once = logger12.prependOnceListener = logger12.removeListener = logger12.removeAllListeners = logger12.listeners = logger12.listenerCount = logger12.eventNames = logger12.write = logger12.flush = noop;\n      logger12.serializers = serializers;\n      logger12._serialize = serialize;\n      logger12._stdErrSerialize = stdErrSerialize;\n      logger12.child = child;\n      if (transmit2)\n        logger12._logEvent = createLogEventShape();\n      function getLevelVal() {\n        return this.level === \"silent\" ? Infinity : this.levels.values[this.level];\n      }\n      function getLevel() {\n        return this._level;\n      }\n      function setLevel(level2) {\n        if (level2 !== \"silent\" && !this.levels.values[level2]) {\n          throw Error(\"unknown level \" + level2);\n        }\n        this._level = level2;\n        set2(setOpts, logger12, \"error\", \"log\");\n        set2(setOpts, logger12, \"fatal\", \"error\");\n        set2(setOpts, logger12, \"warn\", \"error\");\n        set2(setOpts, logger12, \"info\", \"log\");\n        set2(setOpts, logger12, \"debug\", \"log\");\n        set2(setOpts, logger12, \"trace\", \"log\");\n      }\n      function child(bindings, childOptions) {\n        if (!bindings) {\n          throw new Error(\"missing bindings for child Pino\");\n        }\n        childOptions = childOptions || {};\n        if (serialize && bindings.serializers) {\n          childOptions.serializers = bindings.serializers;\n        }\n        const childOptionsSerializers = childOptions.serializers;\n        if (serialize && childOptionsSerializers) {\n          var childSerializers = Object.assign({}, serializers, childOptionsSerializers);\n          var childSerialize = opts.browser.serialize === true ? Object.keys(childSerializers) : serialize;\n          delete bindings.serializers;\n          applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize);\n        }\n        function Child(parent) {\n          this._childLevel = (parent._childLevel | 0) + 1;\n          this.error = bind(parent, bindings, \"error\");\n          this.fatal = bind(parent, bindings, \"fatal\");\n          this.warn = bind(parent, bindings, \"warn\");\n          this.info = bind(parent, bindings, \"info\");\n          this.debug = bind(parent, bindings, \"debug\");\n          this.trace = bind(parent, bindings, \"trace\");\n          if (childSerializers) {\n            this.serializers = childSerializers;\n            this._serialize = childSerialize;\n          }\n          if (transmit2) {\n            this._logEvent = createLogEventShape(\n              [].concat(parent._logEvent.bindings, bindings)\n            );\n          }\n        }\n        Child.prototype = this;\n        return new Child(this);\n      }\n      return logger12;\n    }\n    pino.levels = {\n      values: {\n        fatal: 60,\n        error: 50,\n        warn: 40,\n        info: 30,\n        debug: 20,\n        trace: 10\n      },\n      labels: {\n        10: \"trace\",\n        20: \"debug\",\n        30: \"info\",\n        40: \"warn\",\n        50: \"error\",\n        60: \"fatal\"\n      }\n    };\n    pino.stdSerializers = stdSerializers;\n    pino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime });\n    function set2(opts, logger12, level, fallback) {\n      const proto = Object.getPrototypeOf(logger12);\n      logger12[level] = logger12.levelVal > logger12.levels.values[level] ? noop : proto[level] ? proto[level] : _console[level] || _console[fallback] || noop;\n      wrap(opts, logger12, level);\n    }\n    function wrap(opts, logger12, level) {\n      if (!opts.transmit && logger12[level] === noop)\n        return;\n      logger12[level] = function(write) {\n        return function LOG() {\n          const ts2 = opts.timestamp();\n          const args = new Array(arguments.length);\n          const proto = Object.getPrototypeOf && Object.getPrototypeOf(this) === _console ? _console : this;\n          for (var i4 = 0; i4 < args.length; i4++)\n            args[i4] = arguments[i4];\n          if (opts.serialize && !opts.asObject) {\n            applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize);\n          }\n          if (opts.asObject)\n            write.call(proto, asObject(this, level, args, ts2));\n          else\n            write.apply(proto, args);\n          if (opts.transmit) {\n            const transmitLevel = opts.transmit.level || logger12.level;\n            const transmitValue = pino.levels.values[transmitLevel];\n            const methodValue = pino.levels.values[level];\n            if (methodValue < transmitValue)\n              return;\n            transmit(this, {\n              ts: ts2,\n              methodLevel: level,\n              methodValue,\n              transmitLevel,\n              transmitValue: pino.levels.values[opts.transmit.level || logger12.level],\n              send: opts.transmit.send,\n              val: logger12.levelVal\n            }, args);\n          }\n        };\n      }(logger12[level]);\n    }\n    function asObject(logger12, level, args, ts2) {\n      if (logger12._serialize)\n        applySerializers(args, logger12._serialize, logger12.serializers, logger12._stdErrSerialize);\n      const argsCloned = args.slice();\n      let msg = argsCloned[0];\n      const o4 = {};\n      if (ts2) {\n        o4.time = ts2;\n      }\n      o4.level = pino.levels.values[level];\n      let lvl = (logger12._childLevel | 0) + 1;\n      if (lvl < 1)\n        lvl = 1;\n      if (msg !== null && typeof msg === \"object\") {\n        while (lvl-- && typeof argsCloned[0] === \"object\") {\n          Object.assign(o4, argsCloned.shift());\n        }\n        msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : void 0;\n      } else if (typeof msg === \"string\")\n        msg = format(argsCloned.shift(), argsCloned);\n      if (msg !== void 0)\n        o4.msg = msg;\n      return o4;\n    }\n    function applySerializers(args, serialize, serializers, stdErrSerialize) {\n      for (const i4 in args) {\n        if (stdErrSerialize && args[i4] instanceof Error) {\n          args[i4] = pino.stdSerializers.err(args[i4]);\n        } else if (typeof args[i4] === \"object\" && !Array.isArray(args[i4])) {\n          for (const k4 in args[i4]) {\n            if (serialize && serialize.indexOf(k4) > -1 && k4 in serializers) {\n              args[i4][k4] = serializers[k4](args[i4][k4]);\n            }\n          }\n        }\n      }\n    }\n    function bind(parent, bindings, level) {\n      return function() {\n        const args = new Array(1 + arguments.length);\n        args[0] = bindings;\n        for (var i4 = 1; i4 < args.length; i4++) {\n          args[i4] = arguments[i4 - 1];\n        }\n        return parent[level].apply(this, args);\n      };\n    }\n    function transmit(logger12, opts, args) {\n      const send = opts.send;\n      const ts2 = opts.ts;\n      const methodLevel = opts.methodLevel;\n      const methodValue = opts.methodValue;\n      const val = opts.val;\n      const bindings = logger12._logEvent.bindings;\n      applySerializers(\n        args,\n        logger12._serialize || Object.keys(logger12.serializers),\n        logger12.serializers,\n        logger12._stdErrSerialize === void 0 ? true : logger12._stdErrSerialize\n      );\n      logger12._logEvent.ts = ts2;\n      logger12._logEvent.messages = args.filter(function(arg) {\n        return bindings.indexOf(arg) === -1;\n      });\n      logger12._logEvent.level.label = methodLevel;\n      logger12._logEvent.level.value = methodValue;\n      send(methodLevel, logger12._logEvent, val);\n      logger12._logEvent = createLogEventShape(bindings);\n    }\n    function createLogEventShape(bindings) {\n      return {\n        ts: 0,\n        messages: [],\n        bindings: bindings || [],\n        level: { label: \"\", value: 0 }\n      };\n    }\n    function asErrValue(err) {\n      const obj = {\n        type: err.constructor.name,\n        msg: err.message,\n        stack: err.stack\n      };\n      for (const key2 in err) {\n        if (obj[key2] === void 0) {\n          obj[key2] = err[key2];\n        }\n      }\n      return obj;\n    }\n    function getTimeFunction(opts) {\n      if (typeof opts.timestamp === \"function\") {\n        return opts.timestamp;\n      }\n      if (opts.timestamp === false) {\n        return nullTime;\n      }\n      return epochTime;\n    }\n    function mock() {\n      return {};\n    }\n    function passthrough(a4) {\n      return a4;\n    }\n    function noop() {\n    }\n    function nullTime() {\n      return false;\n    }\n    function epochTime() {\n      return Date.now();\n    }\n    function unixTime() {\n      return Math.round(Date.now() / 1e3);\n    }\n    function isoTime() {\n      return new Date(Date.now()).toISOString();\n    }\n    function pfGlobalThisOrFallback() {\n      function defd(o4) {\n        return typeof o4 !== \"undefined\" && o4;\n      }\n      try {\n        if (typeof globalThis !== \"undefined\")\n          return globalThis;\n        Object.defineProperty(Object.prototype, \"globalThis\", {\n          get: function() {\n            delete Object.prototype.globalThis;\n            return this.globalThis = this;\n          },\n          configurable: true\n        });\n        return globalThis;\n      } catch (e2) {\n        return defd(self) || defd(window) || defd(this) || {};\n      }\n    }\n  }\n});\n\n// node_modules/@walletconnect/environment/dist/cjs/crypto.js\nvar require_crypto2 = __commonJS({\n  \"node_modules/@walletconnect/environment/dist/cjs/crypto.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.isBrowserCryptoAvailable = exports.getSubtleCrypto = exports.getBrowerCrypto = void 0;\n    function getBrowerCrypto() {\n      return (global === null || global === void 0 ? void 0 : global.crypto) || (global === null || global === void 0 ? void 0 : global.msCrypto) || {};\n    }\n    exports.getBrowerCrypto = getBrowerCrypto;\n    function getSubtleCrypto() {\n      const browserCrypto = getBrowerCrypto();\n      return browserCrypto.subtle || browserCrypto.webkitSubtle;\n    }\n    exports.getSubtleCrypto = getSubtleCrypto;\n    function isBrowserCryptoAvailable() {\n      return !!getBrowerCrypto() && !!getSubtleCrypto();\n    }\n    exports.isBrowserCryptoAvailable = isBrowserCryptoAvailable;\n  }\n});\n\n// node_modules/@walletconnect/environment/dist/cjs/env.js\nvar require_env = __commonJS({\n  \"node_modules/@walletconnect/environment/dist/cjs/env.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.isBrowser = exports.isNode = exports.isReactNative = void 0;\n    function isReactNative() {\n      return typeof document === \"undefined\" && typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\";\n    }\n    exports.isReactNative = isReactNative;\n    function isNode2() {\n      return typeof process !== \"undefined\" && typeof process.versions !== \"undefined\" && typeof process.versions.node !== \"undefined\";\n    }\n    exports.isNode = isNode2;\n    function isBrowser() {\n      return !isReactNative() && !isNode2();\n    }\n    exports.isBrowser = isBrowser;\n  }\n});\n\n// node_modules/@walletconnect/environment/dist/cjs/index.js\nvar require_cjs4 = __commonJS({\n  \"node_modules/@walletconnect/environment/dist/cjs/index.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports));\n    tslib_1.__exportStar(require_crypto2(), exports);\n    tslib_1.__exportStar(require_env(), exports);\n  }\n});\n\n// node_modules/ws/browser.js\nvar require_browser3 = __commonJS({\n  \"node_modules/ws/browser.js\"(exports, module) {\n    \"use strict\";\n    module.exports = function() {\n      throw new Error(\n        \"ws does not work in the browser. Browser clients must use the native WebSocket object\"\n      );\n    };\n  }\n});\n\n// node_modules/lodash.isequal/index.js\nvar require_lodash = __commonJS({\n  \"node_modules/lodash.isequal/index.js\"(exports, module) {\n    var LARGE_ARRAY_SIZE = 200;\n    var HASH_UNDEFINED = \"__lodash_hash_undefined__\";\n    var COMPARE_PARTIAL_FLAG = 1;\n    var COMPARE_UNORDERED_FLAG = 2;\n    var MAX_SAFE_INTEGER2 = 9007199254740991;\n    var argsTag = \"[object Arguments]\";\n    var arrayTag = \"[object Array]\";\n    var asyncTag = \"[object AsyncFunction]\";\n    var boolTag = \"[object Boolean]\";\n    var dateTag = \"[object Date]\";\n    var errorTag = \"[object Error]\";\n    var funcTag = \"[object Function]\";\n    var genTag = \"[object GeneratorFunction]\";\n    var mapTag = \"[object Map]\";\n    var numberTag = \"[object Number]\";\n    var nullTag = \"[object Null]\";\n    var objectTag = \"[object Object]\";\n    var promiseTag = \"[object Promise]\";\n    var proxyTag = \"[object Proxy]\";\n    var regexpTag = \"[object RegExp]\";\n    var setTag = \"[object Set]\";\n    var stringTag = \"[object String]\";\n    var symbolTag = \"[object Symbol]\";\n    var undefinedTag = \"[object Undefined]\";\n    var weakMapTag = \"[object WeakMap]\";\n    var arrayBufferTag = \"[object ArrayBuffer]\";\n    var dataViewTag = \"[object DataView]\";\n    var float32Tag = \"[object Float32Array]\";\n    var float64Tag = \"[object Float64Array]\";\n    var int8Tag = \"[object Int8Array]\";\n    var int16Tag = \"[object Int16Array]\";\n    var int32Tag = \"[object Int32Array]\";\n    var uint8Tag = \"[object Uint8Array]\";\n    var uint8ClampedTag = \"[object Uint8ClampedArray]\";\n    var uint16Tag = \"[object Uint16Array]\";\n    var uint32Tag = \"[object Uint32Array]\";\n    var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n    var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n    var reIsUint = /^(?:0|[1-9]\\d*)$/;\n    var typedArrayTags = {};\n    typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\n    typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n    var freeGlobal = typeof global == \"object\" && global && global.Object === Object && global;\n    var freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\n    var root = freeGlobal || freeSelf || Function(\"return this\")();\n    var freeExports = typeof exports == \"object\" && exports && !exports.nodeType && exports;\n    var freeModule = freeExports && typeof module == \"object\" && module && !module.nodeType && module;\n    var moduleExports = freeModule && freeModule.exports === freeExports;\n    var freeProcess = moduleExports && freeGlobal.process;\n    var nodeUtil = function() {\n      try {\n        return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n      } catch (e2) {\n      }\n    }();\n    var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n    function arrayFilter(array, predicate) {\n      var index = -1, length2 = array == null ? 0 : array.length, resIndex = 0, result = [];\n      while (++index < length2) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n    function arrayPush(array, values) {\n      var index = -1, length2 = values.length, offset = array.length;\n      while (++index < length2) {\n        array[offset + index] = values[index];\n      }\n      return array;\n    }\n    function arraySome(array, predicate) {\n      var index = -1, length2 = array == null ? 0 : array.length;\n      while (++index < length2) {\n        if (predicate(array[index], index, array)) {\n          return true;\n        }\n      }\n      return false;\n    }\n    function baseTimes(n5, iteratee) {\n      var index = -1, result = Array(n5);\n      while (++index < n5) {\n        result[index] = iteratee(index);\n      }\n      return result;\n    }\n    function baseUnary(func) {\n      return function(value) {\n        return func(value);\n      };\n    }\n    function cacheHas(cache, key2) {\n      return cache.has(key2);\n    }\n    function getValue(object, key2) {\n      return object == null ? void 0 : object[key2];\n    }\n    function mapToArray(map) {\n      var index = -1, result = Array(map.size);\n      map.forEach(function(value, key2) {\n        result[++index] = [key2, value];\n      });\n      return result;\n    }\n    function overArg(func, transform) {\n      return function(arg) {\n        return func(transform(arg));\n      };\n    }\n    function setToArray(set2) {\n      var index = -1, result = Array(set2.size);\n      set2.forEach(function(value) {\n        result[++index] = value;\n      });\n      return result;\n    }\n    var arrayProto = Array.prototype;\n    var funcProto = Function.prototype;\n    var objectProto = Object.prototype;\n    var coreJsData = root[\"__core-js_shared__\"];\n    var funcToString = funcProto.toString;\n    var hasOwnProperty = objectProto.hasOwnProperty;\n    var maskSrcKey = function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || \"\");\n      return uid ? \"Symbol(src)_1.\" + uid : \"\";\n    }();\n    var nativeObjectToString = objectProto.toString;\n    var reIsNative = RegExp(\n      \"^\" + funcToString.call(hasOwnProperty).replace(reRegExpChar, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n    );\n    var Buffer2 = moduleExports ? root.Buffer : void 0;\n    var Symbol2 = root.Symbol;\n    var Uint8Array2 = root.Uint8Array;\n    var propertyIsEnumerable = objectProto.propertyIsEnumerable;\n    var splice = arrayProto.splice;\n    var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;\n    var nativeGetSymbols = Object.getOwnPropertySymbols;\n    var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;\n    var nativeKeys = overArg(Object.keys, Object);\n    var DataView2 = getNative(root, \"DataView\");\n    var Map2 = getNative(root, \"Map\");\n    var Promise2 = getNative(root, \"Promise\");\n    var Set2 = getNative(root, \"Set\");\n    var WeakMap = getNative(root, \"WeakMap\");\n    var nativeCreate = getNative(Object, \"create\");\n    var dataViewCtorString = toSource(DataView2);\n    var mapCtorString = toSource(Map2);\n    var promiseCtorString = toSource(Promise2);\n    var setCtorString = toSource(Set2);\n    var weakMapCtorString = toSource(WeakMap);\n    var symbolProto = Symbol2 ? Symbol2.prototype : void 0;\n    var symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;\n    function Hash(entries) {\n      var index = -1, length2 = entries == null ? 0 : entries.length;\n      this.clear();\n      while (++index < length2) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n    function hashDelete(key2) {\n      var result = this.has(key2) && delete this.__data__[key2];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n    function hashGet(key2) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key2];\n        return result === HASH_UNDEFINED ? void 0 : result;\n      }\n      return hasOwnProperty.call(data, key2) ? data[key2] : void 0;\n    }\n    function hashHas(key2) {\n      var data = this.__data__;\n      return nativeCreate ? data[key2] !== void 0 : hasOwnProperty.call(data, key2);\n    }\n    function hashSet(key2, value) {\n      var data = this.__data__;\n      this.size += this.has(key2) ? 0 : 1;\n      data[key2] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;\n      return this;\n    }\n    Hash.prototype.clear = hashClear;\n    Hash.prototype[\"delete\"] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n    function ListCache(entries) {\n      var index = -1, length2 = entries == null ? 0 : entries.length;\n      this.clear();\n      while (++index < length2) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n    function listCacheDelete(key2) {\n      var data = this.__data__, index = assocIndexOf(data, key2);\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n    function listCacheGet(key2) {\n      var data = this.__data__, index = assocIndexOf(data, key2);\n      return index < 0 ? void 0 : data[index][1];\n    }\n    function listCacheHas(key2) {\n      return assocIndexOf(this.__data__, key2) > -1;\n    }\n    function listCacheSet(key2, value) {\n      var data = this.__data__, index = assocIndexOf(data, key2);\n      if (index < 0) {\n        ++this.size;\n        data.push([key2, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype[\"delete\"] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n    function MapCache(entries) {\n      var index = -1, length2 = entries == null ? 0 : entries.length;\n      this.clear();\n      while (++index < length2) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        \"hash\": new Hash(),\n        \"map\": new (Map2 || ListCache)(),\n        \"string\": new Hash()\n      };\n    }\n    function mapCacheDelete(key2) {\n      var result = getMapData(this, key2)[\"delete\"](key2);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n    function mapCacheGet(key2) {\n      return getMapData(this, key2).get(key2);\n    }\n    function mapCacheHas(key2) {\n      return getMapData(this, key2).has(key2);\n    }\n    function mapCacheSet(key2, value) {\n      var data = getMapData(this, key2), size = data.size;\n      data.set(key2, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype[\"delete\"] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n    function SetCache(values) {\n      var index = -1, length2 = values == null ? 0 : values.length;\n      this.__data__ = new MapCache();\n      while (++index < length2) {\n        this.add(values[index]);\n      }\n    }\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n    function stackClear() {\n      this.__data__ = new ListCache();\n      this.size = 0;\n    }\n    function stackDelete(key2) {\n      var data = this.__data__, result = data[\"delete\"](key2);\n      this.size = data.size;\n      return result;\n    }\n    function stackGet(key2) {\n      return this.__data__.get(key2);\n    }\n    function stackHas(key2) {\n      return this.__data__.has(key2);\n    }\n    function stackSet(key2, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {\n          pairs.push([key2, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key2, value);\n      this.size = data.size;\n      return this;\n    }\n    Stack.prototype.clear = stackClear;\n    Stack.prototype[\"delete\"] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length2 = result.length;\n      for (var key2 in value) {\n        if ((inherited || hasOwnProperty.call(value, key2)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.\n        (key2 == \"length\" || // Node.js 0.10 has enumerable non-index properties on buffers.\n        isBuff && (key2 == \"offset\" || key2 == \"parent\") || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n        isType && (key2 == \"buffer\" || key2 == \"byteLength\" || key2 == \"byteOffset\") || // Skip index properties.\n        isIndex(key2, length2)))) {\n          result.push(key2);\n        }\n      }\n      return result;\n    }\n    function assocIndexOf(array, key2) {\n      var length2 = array.length;\n      while (length2--) {\n        if (eq4(array[length2][0], key2)) {\n          return length2;\n        }\n      }\n      return -1;\n    }\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === void 0 ? undefinedTag : nullTag;\n      }\n      return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n    }\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n      var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack());\n        return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty.call(other, \"__wrapped__\");\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n          stack || (stack = new Stack());\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack());\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key2 in Object(object)) {\n        if (hasOwnProperty.call(object, key2) && key2 != \"constructor\") {\n          result.push(key2);\n        }\n      }\n      return result;\n    }\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      var stacked = stack.get(array);\n      if (stacked && stack.get(other)) {\n        return stacked == other;\n      }\n      var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : void 0;\n      stack.set(array, other);\n      stack.set(other, array);\n      while (++index < arrLength) {\n        var arrValue = array[index], othValue = other[index];\n        if (customizer) {\n          var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== void 0) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        if (seen) {\n          if (!arraySome(other, function(othValue2, othIndex) {\n            if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n            result = false;\n            break;\n          }\n        } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n          result = false;\n          break;\n        }\n      }\n      stack[\"delete\"](array);\n      stack[\"delete\"](other);\n      return result;\n    }\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n        case arrayBufferTag:\n          if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {\n            return false;\n          }\n          return true;\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          return eq4(+object, +other);\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n        case regexpTag:\n        case stringTag:\n          return object == other + \"\";\n        case mapTag:\n          var convert = mapToArray;\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack[\"delete\"](object);\n          return result;\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key2 = objProps[index];\n        if (!(isPartial ? key2 in other : hasOwnProperty.call(other, key2))) {\n          return false;\n        }\n      }\n      var stacked = stack.get(object);\n      if (stacked && stack.get(other)) {\n        return stacked == other;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key2 = objProps[index];\n        var objValue = object[key2], othValue = other[key2];\n        if (customizer) {\n          var compared = isPartial ? customizer(othValue, objValue, key2, other, object, stack) : customizer(objValue, othValue, key2, object, other, stack);\n        }\n        if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key2 == \"constructor\");\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor, othCtor = other.constructor;\n        if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack[\"delete\"](object);\n      stack[\"delete\"](other);\n      return result;\n    }\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys2, getSymbols);\n    }\n    function getMapData(map, key2) {\n      var data = map.__data__;\n      return isKeyable(key2) ? data[typeof key2 == \"string\" ? \"string\" : \"hash\"] : data.map;\n    }\n    function getNative(object, key2) {\n      var value = getValue(object, key2);\n      return baseIsNative(value) ? value : void 0;\n    }\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n      try {\n        value[symToStringTag] = void 0;\n        var unmasked = true;\n      } catch (e2) {\n      }\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n    var getTag = baseGetTag;\n    if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n      getTag = function(value) {\n        var result = baseGetTag(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : \"\";\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString:\n              return dataViewTag;\n            case mapCtorString:\n              return mapTag;\n            case promiseCtorString:\n              return promiseTag;\n            case setCtorString:\n              return setTag;\n            case weakMapCtorString:\n              return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n    function isIndex(value, length2) {\n      length2 = length2 == null ? MAX_SAFE_INTEGER2 : length2;\n      return !!length2 && (typeof value == \"number\" || reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length2);\n    }\n    function isKeyable(value) {\n      var type = typeof value;\n      return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n    }\n    function isMasked(func) {\n      return !!maskSrcKey && maskSrcKey in func;\n    }\n    function isPrototype(value) {\n      var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto;\n      return value === proto;\n    }\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e2) {\n        }\n        try {\n          return func + \"\";\n        } catch (e2) {\n        }\n      }\n      return \"\";\n    }\n    function eq4(value, other) {\n      return value === other || value !== value && other !== other;\n    }\n    var isArguments = baseIsArguments(function() {\n      return arguments;\n    }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, \"callee\") && !propertyIsEnumerable.call(value, \"callee\");\n    };\n    var isArray = Array.isArray;\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n    var isBuffer = nativeIsBuffer || stubFalse;\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n    function isLength(value) {\n      return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;\n    }\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == \"object\" || type == \"function\");\n    }\n    function isObjectLike(value) {\n      return value != null && typeof value == \"object\";\n    }\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n    function keys2(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n    function stubArray() {\n      return [];\n    }\n    function stubFalse() {\n      return false;\n    }\n    module.exports = isEqual;\n  }\n});\n\n// node_modules/detect-browser/es/index.js\nvar __spreadArray = function(to2, from3, pack) {\n  if (pack || arguments.length === 2)\n    for (var i4 = 0, l4 = from3.length, ar3; i4 < l4; i4++) {\n      if (ar3 || !(i4 in from3)) {\n        if (!ar3)\n          ar3 = Array.prototype.slice.call(from3, 0, i4);\n        ar3[i4] = from3[i4];\n      }\n    }\n  return to2.concat(ar3 || Array.prototype.slice.call(from3));\n};\nvar BrowserInfo = (\n  /** @class */\n  function() {\n    function BrowserInfo2(name2, version12, os) {\n      this.name = name2;\n      this.version = version12;\n      this.os = os;\n      this.type = \"browser\";\n    }\n    return BrowserInfo2;\n  }()\n);\nvar NodeInfo = (\n  /** @class */\n  function() {\n    function NodeInfo2(version12) {\n      this.version = version12;\n      this.type = \"node\";\n      this.name = \"node\";\n      this.os = process.platform;\n    }\n    return NodeInfo2;\n  }()\n);\nvar SearchBotDeviceInfo = (\n  /** @class */\n  function() {\n    function SearchBotDeviceInfo2(name2, version12, os, bot) {\n      this.name = name2;\n      this.version = version12;\n      this.os = os;\n      this.bot = bot;\n      this.type = \"bot-device\";\n    }\n    return SearchBotDeviceInfo2;\n  }()\n);\nvar BotInfo = (\n  /** @class */\n  function() {\n    function BotInfo2() {\n      this.type = \"bot\";\n      this.bot = true;\n      this.name = \"bot\";\n      this.version = null;\n      this.os = null;\n    }\n    return BotInfo2;\n  }()\n);\nvar ReactNativeInfo = (\n  /** @class */\n  function() {\n    function ReactNativeInfo2() {\n      this.type = \"react-native\";\n      this.name = \"react-native\";\n      this.version = null;\n      this.os = null;\n    }\n    return ReactNativeInfo2;\n  }()\n);\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n  [\"aol\", /AOLShield\\/([0-9\\._]+)/],\n  [\"edge\", /Edge\\/([0-9\\._]+)/],\n  [\"edge-ios\", /EdgiOS\\/([0-9\\._]+)/],\n  [\"yandexbrowser\", /YaBrowser\\/([0-9\\._]+)/],\n  [\"kakaotalk\", /KAKAOTALK\\s([0-9\\.]+)/],\n  [\"samsung\", /SamsungBrowser\\/([0-9\\.]+)/],\n  [\"silk\", /\\bSilk\\/([0-9._-]+)\\b/],\n  [\"miui\", /MiuiBrowser\\/([0-9\\.]+)$/],\n  [\"beaker\", /BeakerBrowser\\/([0-9\\.]+)/],\n  [\"edge-chromium\", /EdgA?\\/([0-9\\.]+)/],\n  [\n    \"chromium-webview\",\n    /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/\n  ],\n  [\"chrome\", /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n  [\"phantomjs\", /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n  [\"crios\", /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n  [\"firefox\", /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n  [\"fxios\", /FxiOS\\/([0-9\\.]+)/],\n  [\"opera-mini\", /Opera Mini.*Version\\/([0-9\\.]+)/],\n  [\"opera\", /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n  [\"opera\", /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n  [\"pie\", /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n  [\"pie\", /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n  [\"netfront\", /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n  [\"ie\", /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n  [\"ie\", /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n  [\"ie\", /MSIE\\s(7\\.0)/],\n  [\"bb10\", /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n  [\"android\", /Android\\s([0-9\\.]+)/],\n  [\"ios\", /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n  [\"safari\", /Version\\/([0-9\\._]+).*Safari/],\n  [\"facebook\", /FB[AS]V\\/([0-9\\.]+)/],\n  [\"instagram\", /Instagram\\s([0-9\\.]+)/],\n  [\"ios-webview\", /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n  [\"ios-webview\", /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n  [\"curl\", /^curl\\/([0-9\\.]+)$/],\n  [\"searchbot\", SEARCHBOX_UA_REGEX]\n];\nvar operatingSystemRules = [\n  [\"iOS\", /iP(hone|od|ad)/],\n  [\"Android OS\", /Android/],\n  [\"BlackBerry OS\", /BlackBerry|BB10/],\n  [\"Windows Mobile\", /IEMobile/],\n  [\"Amazon OS\", /Kindle/],\n  [\"Windows 3.11\", /Win16/],\n  [\"Windows 95\", /(Windows 95)|(Win95)|(Windows_95)/],\n  [\"Windows 98\", /(Windows 98)|(Win98)/],\n  [\"Windows 2000\", /(Windows NT 5.0)|(Windows 2000)/],\n  [\"Windows XP\", /(Windows NT 5.1)|(Windows XP)/],\n  [\"Windows Server 2003\", /(Windows NT 5.2)/],\n  [\"Windows Vista\", /(Windows NT 6.0)/],\n  [\"Windows 7\", /(Windows NT 6.1)/],\n  [\"Windows 8\", /(Windows NT 6.2)/],\n  [\"Windows 8.1\", /(Windows NT 6.3)/],\n  [\"Windows 10\", /(Windows NT 10.0)/],\n  [\"Windows ME\", /Windows ME/],\n  [\"Windows CE\", /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n  [\"Open BSD\", /OpenBSD/],\n  [\"Sun OS\", /SunOS/],\n  [\"Chrome OS\", /CrOS/],\n  [\"Linux\", /(Linux)|(X11)/],\n  [\"Mac OS\", /(Mac_PowerPC)|(Macintosh)/],\n  [\"QNX\", /QNX/],\n  [\"BeOS\", /BeOS/],\n  [\"OS/2\", /OS\\/2/]\n];\nfunction detect(userAgent) {\n  if (!!userAgent) {\n    return parseUserAgent(userAgent);\n  }\n  if (typeof document === \"undefined\" && typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\") {\n    return new ReactNativeInfo();\n  }\n  if (typeof navigator !== \"undefined\") {\n    return parseUserAgent(navigator.userAgent);\n  }\n  return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n  return ua !== \"\" && userAgentRules.reduce(function(matched, _a) {\n    var browser = _a[0], regex = _a[1];\n    if (matched) {\n      return matched;\n    }\n    var uaMatch = regex.exec(ua);\n    return !!uaMatch && [browser, uaMatch];\n  }, false);\n}\nfunction parseUserAgent(ua) {\n  var matchedRule = matchUserAgent(ua);\n  if (!matchedRule) {\n    return null;\n  }\n  var name2 = matchedRule[0], match = matchedRule[1];\n  if (name2 === \"searchbot\") {\n    return new BotInfo();\n  }\n  var versionParts = match[1] && match[1].split(\".\").join(\"_\").split(\"_\").slice(0, 3);\n  if (versionParts) {\n    if (versionParts.length < REQUIRED_VERSION_PARTS) {\n      versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n    }\n  } else {\n    versionParts = [];\n  }\n  var version12 = versionParts.join(\".\");\n  var os = detectOS(ua);\n  var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n  if (searchBotMatch && searchBotMatch[1]) {\n    return new SearchBotDeviceInfo(name2, version12, os, searchBotMatch[1]);\n  }\n  return new BrowserInfo(name2, version12, os);\n}\nfunction detectOS(ua) {\n  for (var ii2 = 0, count = operatingSystemRules.length; ii2 < count; ii2++) {\n    var _a = operatingSystemRules[ii2], os = _a[0], regex = _a[1];\n    var match = regex.exec(ua);\n    if (match) {\n      return os;\n    }\n  }\n  return null;\n}\nfunction getNodeVersion() {\n  var isNode2 = typeof process !== \"undefined\" && process.version;\n  return isNode2 ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n  var output = [];\n  for (var ii2 = 0; ii2 < count; ii2++) {\n    output.push(\"0\");\n  }\n  return output;\n}\n\n// node_modules/@walletconnect/utils/dist/index.es.js\nvar import_time2 = __toESM(require_cjs());\nvar import_window_getters = __toESM(require_cjs2());\nvar import_window_metadata = __toESM(require_cjs3());\nvar q = __toESM(require_query_string());\n\n// node_modules/@ethersproject/keccak256/lib.esm/index.js\nvar import_js_sha3 = __toESM(require_sha3());\n\n// node_modules/@ethersproject/logger/lib.esm/_version.js\nvar version = \"logger/5.7.0\";\n\n// node_modules/@ethersproject/logger/lib.esm/index.js\nvar _permanentCensorErrors = false;\nvar _censorErrors = false;\nvar LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nvar _logLevel = LogLevels[\"default\"];\nvar _globalLogger = null;\nfunction _checkNormalize() {\n  try {\n    const missing = [];\n    [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n      try {\n        if (\"test\".normalize(form) !== \"test\") {\n          throw new Error(\"bad normalize\");\n        }\n        ;\n      } catch (error) {\n        missing.push(form);\n      }\n    });\n    if (missing.length) {\n      throw new Error(\"missing \" + missing.join(\", \"));\n    }\n    if (String.fromCharCode(233).normalize(\"NFD\") !== String.fromCharCode(101, 769)) {\n      throw new Error(\"broken implementation\");\n    }\n  } catch (error) {\n    return error.message;\n  }\n  return null;\n}\nvar _normalizeError = _checkNormalize();\nvar LogLevel;\n(function(LogLevel2) {\n  LogLevel2[\"DEBUG\"] = \"DEBUG\";\n  LogLevel2[\"INFO\"] = \"INFO\";\n  LogLevel2[\"WARNING\"] = \"WARNING\";\n  LogLevel2[\"ERROR\"] = \"ERROR\";\n  LogLevel2[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nvar ErrorCode;\n(function(ErrorCode2) {\n  ErrorCode2[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n  ErrorCode2[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n  ErrorCode2[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n  ErrorCode2[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n  ErrorCode2[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n  ErrorCode2[\"TIMEOUT\"] = \"TIMEOUT\";\n  ErrorCode2[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n  ErrorCode2[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n  ErrorCode2[\"MISSING_NEW\"] = \"MISSING_NEW\";\n  ErrorCode2[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n  ErrorCode2[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n  ErrorCode2[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n  ErrorCode2[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n  ErrorCode2[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n  ErrorCode2[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n  ErrorCode2[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n  ErrorCode2[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n  ErrorCode2[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n  ErrorCode2[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\nvar HEX = \"0123456789abcdef\";\nvar Logger = class _Logger {\n  constructor(version12) {\n    Object.defineProperty(this, \"version\", {\n      enumerable: true,\n      value: version12,\n      writable: false\n    });\n  }\n  _log(logLevel, args) {\n    const level = logLevel.toLowerCase();\n    if (LogLevels[level] == null) {\n      this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n    }\n    if (_logLevel > LogLevels[level]) {\n      return;\n    }\n    console.log.apply(console, args);\n  }\n  debug(...args) {\n    this._log(_Logger.levels.DEBUG, args);\n  }\n  info(...args) {\n    this._log(_Logger.levels.INFO, args);\n  }\n  warn(...args) {\n    this._log(_Logger.levels.WARNING, args);\n  }\n  makeError(message, code2, params) {\n    if (_censorErrors) {\n      return this.makeError(\"censored error\", code2, {});\n    }\n    if (!code2) {\n      code2 = _Logger.errors.UNKNOWN_ERROR;\n    }\n    if (!params) {\n      params = {};\n    }\n    const messageDetails = [];\n    Object.keys(params).forEach((key2) => {\n      const value = params[key2];\n      try {\n        if (value instanceof Uint8Array) {\n          let hex = \"\";\n          for (let i4 = 0; i4 < value.length; i4++) {\n            hex += HEX[value[i4] >> 4];\n            hex += HEX[value[i4] & 15];\n          }\n          messageDetails.push(key2 + \"=Uint8Array(0x\" + hex + \")\");\n        } else {\n          messageDetails.push(key2 + \"=\" + JSON.stringify(value));\n        }\n      } catch (error2) {\n        messageDetails.push(key2 + \"=\" + JSON.stringify(params[key2].toString()));\n      }\n    });\n    messageDetails.push(`code=${code2}`);\n    messageDetails.push(`version=${this.version}`);\n    const reason = message;\n    let url = \"\";\n    switch (code2) {\n      case ErrorCode.NUMERIC_FAULT: {\n        url = \"NUMERIC_FAULT\";\n        const fault = message;\n        switch (fault) {\n          case \"overflow\":\n          case \"underflow\":\n          case \"division-by-zero\":\n            url += \"-\" + fault;\n            break;\n          case \"negative-power\":\n          case \"negative-width\":\n            url += \"-unsupported\";\n            break;\n          case \"unbound-bitwise-result\":\n            url += \"-unbound-result\";\n            break;\n        }\n        break;\n      }\n      case ErrorCode.CALL_EXCEPTION:\n      case ErrorCode.INSUFFICIENT_FUNDS:\n      case ErrorCode.MISSING_NEW:\n      case ErrorCode.NONCE_EXPIRED:\n      case ErrorCode.REPLACEMENT_UNDERPRICED:\n      case ErrorCode.TRANSACTION_REPLACED:\n      case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n        url = code2;\n        break;\n    }\n    if (url) {\n      message += \" [ See: https://links.ethers.org/v5-errors-\" + url + \" ]\";\n    }\n    if (messageDetails.length) {\n      message += \" (\" + messageDetails.join(\", \") + \")\";\n    }\n    const error = new Error(message);\n    error.reason = reason;\n    error.code = code2;\n    Object.keys(params).forEach(function(key2) {\n      error[key2] = params[key2];\n    });\n    return error;\n  }\n  throwError(message, code2, params) {\n    throw this.makeError(message, code2, params);\n  }\n  throwArgumentError(message, name2, value) {\n    return this.throwError(message, _Logger.errors.INVALID_ARGUMENT, {\n      argument: name2,\n      value\n    });\n  }\n  assert(condition, message, code2, params) {\n    if (!!condition) {\n      return;\n    }\n    this.throwError(message, code2, params);\n  }\n  assertArgument(condition, message, name2, value) {\n    if (!!condition) {\n      return;\n    }\n    this.throwArgumentError(message, name2, value);\n  }\n  checkNormalize(message) {\n    if (message == null) {\n      message = \"platform missing String.prototype.normalize\";\n    }\n    if (_normalizeError) {\n      this.throwError(\"platform missing String.prototype.normalize\", _Logger.errors.UNSUPPORTED_OPERATION, {\n        operation: \"String.prototype.normalize\",\n        form: _normalizeError\n      });\n    }\n  }\n  checkSafeUint53(value, message) {\n    if (typeof value !== \"number\") {\n      return;\n    }\n    if (message == null) {\n      message = \"value not safe\";\n    }\n    if (value < 0 || value >= 9007199254740991) {\n      this.throwError(message, _Logger.errors.NUMERIC_FAULT, {\n        operation: \"checkSafeInteger\",\n        fault: \"out-of-safe-range\",\n        value\n      });\n    }\n    if (value % 1) {\n      this.throwError(message, _Logger.errors.NUMERIC_FAULT, {\n        operation: \"checkSafeInteger\",\n        fault: \"non-integer\",\n        value\n      });\n    }\n  }\n  checkArgumentCount(count, expectedCount, message) {\n    if (message) {\n      message = \": \" + message;\n    } else {\n      message = \"\";\n    }\n    if (count < expectedCount) {\n      this.throwError(\"missing argument\" + message, _Logger.errors.MISSING_ARGUMENT, {\n        count,\n        expectedCount\n      });\n    }\n    if (count > expectedCount) {\n      this.throwError(\"too many arguments\" + message, _Logger.errors.UNEXPECTED_ARGUMENT, {\n        count,\n        expectedCount\n      });\n    }\n  }\n  checkNew(target, kind) {\n    if (target === Object || target == null) {\n      this.throwError(\"missing new\", _Logger.errors.MISSING_NEW, { name: kind.name });\n    }\n  }\n  checkAbstract(target, kind) {\n    if (target === kind) {\n      this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", _Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n    } else if (target === Object || target == null) {\n      this.throwError(\"missing new\", _Logger.errors.MISSING_NEW, { name: kind.name });\n    }\n  }\n  static globalLogger() {\n    if (!_globalLogger) {\n      _globalLogger = new _Logger(version);\n    }\n    return _globalLogger;\n  }\n  static setCensorship(censorship, permanent) {\n    if (!censorship && permanent) {\n      this.globalLogger().throwError(\"cannot permanently disable censorship\", _Logger.errors.UNSUPPORTED_OPERATION, {\n        operation: \"setCensorship\"\n      });\n    }\n    if (_permanentCensorErrors) {\n      if (!censorship) {\n        return;\n      }\n      this.globalLogger().throwError(\"error censorship permanent\", _Logger.errors.UNSUPPORTED_OPERATION, {\n        operation: \"setCensorship\"\n      });\n    }\n    _censorErrors = !!censorship;\n    _permanentCensorErrors = !!permanent;\n  }\n  static setLogLevel(logLevel) {\n    const level = LogLevels[logLevel.toLowerCase()];\n    if (level == null) {\n      _Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n      return;\n    }\n    _logLevel = level;\n  }\n  static from(version12) {\n    return new _Logger(version12);\n  }\n};\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n\n// node_modules/@ethersproject/bytes/lib.esm/_version.js\nvar version2 = \"bytes/5.7.0\";\n\n// node_modules/@ethersproject/bytes/lib.esm/index.js\nvar logger = new Logger(version2);\nfunction isHexable(value) {\n  return !!value.toHexString;\n}\nfunction addSlice(array) {\n  if (array.slice) {\n    return array;\n  }\n  array.slice = function() {\n    const args = Array.prototype.slice.call(arguments);\n    return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n  };\n  return array;\n}\nfunction isBytesLike(value) {\n  return isHexString(value) && !(value.length % 2) || isBytes(value);\n}\nfunction isInteger(value) {\n  return typeof value === \"number\" && value == value && value % 1 === 0;\n}\nfunction isBytes(value) {\n  if (value == null) {\n    return false;\n  }\n  if (value.constructor === Uint8Array) {\n    return true;\n  }\n  if (typeof value === \"string\") {\n    return false;\n  }\n  if (!isInteger(value.length) || value.length < 0) {\n    return false;\n  }\n  for (let i4 = 0; i4 < value.length; i4++) {\n    const v5 = value[i4];\n    if (!isInteger(v5) || v5 < 0 || v5 >= 256) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction arrayify(value, options) {\n  if (!options) {\n    options = {};\n  }\n  if (typeof value === \"number\") {\n    logger.checkSafeUint53(value, \"invalid arrayify value\");\n    const result = [];\n    while (value) {\n      result.unshift(value & 255);\n      value = parseInt(String(value / 256));\n    }\n    if (result.length === 0) {\n      result.push(0);\n    }\n    return addSlice(new Uint8Array(result));\n  }\n  if (options.allowMissingPrefix && typeof value === \"string\" && value.substring(0, 2) !== \"0x\") {\n    value = \"0x\" + value;\n  }\n  if (isHexable(value)) {\n    value = value.toHexString();\n  }\n  if (isHexString(value)) {\n    let hex = value.substring(2);\n    if (hex.length % 2) {\n      if (options.hexPad === \"left\") {\n        hex = \"0\" + hex;\n      } else if (options.hexPad === \"right\") {\n        hex += \"0\";\n      } else {\n        logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n      }\n    }\n    const result = [];\n    for (let i4 = 0; i4 < hex.length; i4 += 2) {\n      result.push(parseInt(hex.substring(i4, i4 + 2), 16));\n    }\n    return addSlice(new Uint8Array(result));\n  }\n  if (isBytes(value)) {\n    return addSlice(new Uint8Array(value));\n  }\n  return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nfunction concat(items) {\n  const objects = items.map((item) => arrayify(item));\n  const length2 = objects.reduce((accum, item) => accum + item.length, 0);\n  const result = new Uint8Array(length2);\n  objects.reduce((offset, object) => {\n    result.set(object, offset);\n    return offset + object.length;\n  }, 0);\n  return addSlice(result);\n}\nfunction zeroPad(value, length2) {\n  value = arrayify(value);\n  if (value.length > length2) {\n    logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n  }\n  const result = new Uint8Array(length2);\n  result.set(value, length2 - value.length);\n  return addSlice(result);\n}\nfunction isHexString(value, length2) {\n  if (typeof value !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n    return false;\n  }\n  if (length2 && value.length !== 2 + 2 * length2) {\n    return false;\n  }\n  return true;\n}\nvar HexCharacters = \"0123456789abcdef\";\nfunction hexlify(value, options) {\n  if (!options) {\n    options = {};\n  }\n  if (typeof value === \"number\") {\n    logger.checkSafeUint53(value, \"invalid hexlify value\");\n    let hex = \"\";\n    while (value) {\n      hex = HexCharacters[value & 15] + hex;\n      value = Math.floor(value / 16);\n    }\n    if (hex.length) {\n      if (hex.length % 2) {\n        hex = \"0\" + hex;\n      }\n      return \"0x\" + hex;\n    }\n    return \"0x00\";\n  }\n  if (typeof value === \"bigint\") {\n    value = value.toString(16);\n    if (value.length % 2) {\n      return \"0x0\" + value;\n    }\n    return \"0x\" + value;\n  }\n  if (options.allowMissingPrefix && typeof value === \"string\" && value.substring(0, 2) !== \"0x\") {\n    value = \"0x\" + value;\n  }\n  if (isHexable(value)) {\n    return value.toHexString();\n  }\n  if (isHexString(value)) {\n    if (value.length % 2) {\n      if (options.hexPad === \"left\") {\n        value = \"0x0\" + value.substring(2);\n      } else if (options.hexPad === \"right\") {\n        value += \"0\";\n      } else {\n        logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n      }\n    }\n    return value.toLowerCase();\n  }\n  if (isBytes(value)) {\n    let result = \"0x\";\n    for (let i4 = 0; i4 < value.length; i4++) {\n      let v5 = value[i4];\n      result += HexCharacters[(v5 & 240) >> 4] + HexCharacters[v5 & 15];\n    }\n    return result;\n  }\n  return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\nfunction hexDataLength(data) {\n  if (typeof data !== \"string\") {\n    data = hexlify(data);\n  } else if (!isHexString(data) || data.length % 2) {\n    return null;\n  }\n  return (data.length - 2) / 2;\n}\nfunction hexDataSlice(data, offset, endOffset) {\n  if (typeof data !== \"string\") {\n    data = hexlify(data);\n  } else if (!isHexString(data) || data.length % 2) {\n    logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n  }\n  offset = 2 + 2 * offset;\n  if (endOffset != null) {\n    return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n  }\n  return \"0x\" + data.substring(offset);\n}\nfunction hexZeroPad(value, length2) {\n  if (typeof value !== \"string\") {\n    value = hexlify(value);\n  } else if (!isHexString(value)) {\n    logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n  }\n  if (value.length > 2 * length2 + 2) {\n    logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n  }\n  while (value.length < 2 * length2 + 2) {\n    value = \"0x0\" + value.substring(2);\n  }\n  return value;\n}\nfunction splitSignature(signature2) {\n  const result = {\n    r: \"0x\",\n    s: \"0x\",\n    _vs: \"0x\",\n    recoveryParam: 0,\n    v: 0,\n    yParityAndS: \"0x\",\n    compact: \"0x\"\n  };\n  if (isBytesLike(signature2)) {\n    let bytes = arrayify(signature2);\n    if (bytes.length === 64) {\n      result.v = 27 + (bytes[32] >> 7);\n      bytes[32] &= 127;\n      result.r = hexlify(bytes.slice(0, 32));\n      result.s = hexlify(bytes.slice(32, 64));\n    } else if (bytes.length === 65) {\n      result.r = hexlify(bytes.slice(0, 32));\n      result.s = hexlify(bytes.slice(32, 64));\n      result.v = bytes[64];\n    } else {\n      logger.throwArgumentError(\"invalid signature string\", \"signature\", signature2);\n    }\n    if (result.v < 27) {\n      if (result.v === 0 || result.v === 1) {\n        result.v += 27;\n      } else {\n        logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature2);\n      }\n    }\n    result.recoveryParam = 1 - result.v % 2;\n    if (result.recoveryParam) {\n      bytes[32] |= 128;\n    }\n    result._vs = hexlify(bytes.slice(32, 64));\n  } else {\n    result.r = signature2.r;\n    result.s = signature2.s;\n    result.v = signature2.v;\n    result.recoveryParam = signature2.recoveryParam;\n    result._vs = signature2._vs;\n    if (result._vs != null) {\n      const vs4 = zeroPad(arrayify(result._vs), 32);\n      result._vs = hexlify(vs4);\n      const recoveryParam = vs4[0] >= 128 ? 1 : 0;\n      if (result.recoveryParam == null) {\n        result.recoveryParam = recoveryParam;\n      } else if (result.recoveryParam !== recoveryParam) {\n        logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature2);\n      }\n      vs4[0] &= 127;\n      const s3 = hexlify(vs4);\n      if (result.s == null) {\n        result.s = s3;\n      } else if (result.s !== s3) {\n        logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature2);\n      }\n    }\n    if (result.recoveryParam == null) {\n      if (result.v == null) {\n        logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature2);\n      } else if (result.v === 0 || result.v === 1) {\n        result.recoveryParam = result.v;\n      } else {\n        result.recoveryParam = 1 - result.v % 2;\n      }\n    } else {\n      if (result.v == null) {\n        result.v = 27 + result.recoveryParam;\n      } else {\n        const recId = result.v === 0 || result.v === 1 ? result.v : 1 - result.v % 2;\n        if (result.recoveryParam !== recId) {\n          logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature2);\n        }\n      }\n    }\n    if (result.r == null || !isHexString(result.r)) {\n      logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature2);\n    } else {\n      result.r = hexZeroPad(result.r, 32);\n    }\n    if (result.s == null || !isHexString(result.s)) {\n      logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature2);\n    } else {\n      result.s = hexZeroPad(result.s, 32);\n    }\n    const vs3 = arrayify(result.s);\n    if (vs3[0] >= 128) {\n      logger.throwArgumentError(\"signature s out of range\", \"signature\", signature2);\n    }\n    if (result.recoveryParam) {\n      vs3[0] |= 128;\n    }\n    const _vs = hexlify(vs3);\n    if (result._vs) {\n      if (!isHexString(result._vs)) {\n        logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature2);\n      }\n      result._vs = hexZeroPad(result._vs, 32);\n    }\n    if (result._vs == null) {\n      result._vs = _vs;\n    } else if (result._vs !== _vs) {\n      logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature2);\n    }\n  }\n  result.yParityAndS = result._vs;\n  result.compact = result.r + result.yParityAndS.substring(2);\n  return result;\n}\n\n// node_modules/@ethersproject/keccak256/lib.esm/index.js\nfunction keccak256(data) {\n  return \"0x\" + import_js_sha3.default.keccak_256(arrayify(data));\n}\n\n// node_modules/@ethersproject/bignumber/lib.esm/bignumber.js\nvar import_bn = __toESM(require_bn());\n\n// node_modules/@ethersproject/bignumber/lib.esm/_version.js\nvar version3 = \"bignumber/5.7.0\";\n\n// node_modules/@ethersproject/bignumber/lib.esm/bignumber.js\nvar BN = import_bn.default.BN;\nvar logger2 = new Logger(version3);\nvar _constructorGuard = {};\nvar MAX_SAFE = 9007199254740991;\nfunction isBigNumberish(value) {\n  return value != null && (BigNumber.isBigNumber(value) || typeof value === \"number\" && value % 1 === 0 || typeof value === \"string\" && !!value.match(/^-?[0-9]+$/) || isHexString(value) || typeof value === \"bigint\" || isBytes(value));\n}\nvar _warnedToStringRadix = false;\nvar BigNumber = class _BigNumber {\n  constructor(constructorGuard, hex) {\n    if (constructorGuard !== _constructorGuard) {\n      logger2.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n        operation: \"new (BigNumber)\"\n      });\n    }\n    this._hex = hex;\n    this._isBigNumber = true;\n    Object.freeze(this);\n  }\n  fromTwos(value) {\n    return toBigNumber(toBN(this).fromTwos(value));\n  }\n  toTwos(value) {\n    return toBigNumber(toBN(this).toTwos(value));\n  }\n  abs() {\n    if (this._hex[0] === \"-\") {\n      return _BigNumber.from(this._hex.substring(1));\n    }\n    return this;\n  }\n  add(other) {\n    return toBigNumber(toBN(this).add(toBN(other)));\n  }\n  sub(other) {\n    return toBigNumber(toBN(this).sub(toBN(other)));\n  }\n  div(other) {\n    const o4 = _BigNumber.from(other);\n    if (o4.isZero()) {\n      throwFault(\"division-by-zero\", \"div\");\n    }\n    return toBigNumber(toBN(this).div(toBN(other)));\n  }\n  mul(other) {\n    return toBigNumber(toBN(this).mul(toBN(other)));\n  }\n  mod(other) {\n    const value = toBN(other);\n    if (value.isNeg()) {\n      throwFault(\"division-by-zero\", \"mod\");\n    }\n    return toBigNumber(toBN(this).umod(value));\n  }\n  pow(other) {\n    const value = toBN(other);\n    if (value.isNeg()) {\n      throwFault(\"negative-power\", \"pow\");\n    }\n    return toBigNumber(toBN(this).pow(value));\n  }\n  and(other) {\n    const value = toBN(other);\n    if (this.isNegative() || value.isNeg()) {\n      throwFault(\"unbound-bitwise-result\", \"and\");\n    }\n    return toBigNumber(toBN(this).and(value));\n  }\n  or(other) {\n    const value = toBN(other);\n    if (this.isNegative() || value.isNeg()) {\n      throwFault(\"unbound-bitwise-result\", \"or\");\n    }\n    return toBigNumber(toBN(this).or(value));\n  }\n  xor(other) {\n    const value = toBN(other);\n    if (this.isNegative() || value.isNeg()) {\n      throwFault(\"unbound-bitwise-result\", \"xor\");\n    }\n    return toBigNumber(toBN(this).xor(value));\n  }\n  mask(value) {\n    if (this.isNegative() || value < 0) {\n      throwFault(\"negative-width\", \"mask\");\n    }\n    return toBigNumber(toBN(this).maskn(value));\n  }\n  shl(value) {\n    if (this.isNegative() || value < 0) {\n      throwFault(\"negative-width\", \"shl\");\n    }\n    return toBigNumber(toBN(this).shln(value));\n  }\n  shr(value) {\n    if (this.isNegative() || value < 0) {\n      throwFault(\"negative-width\", \"shr\");\n    }\n    return toBigNumber(toBN(this).shrn(value));\n  }\n  eq(other) {\n    return toBN(this).eq(toBN(other));\n  }\n  lt(other) {\n    return toBN(this).lt(toBN(other));\n  }\n  lte(other) {\n    return toBN(this).lte(toBN(other));\n  }\n  gt(other) {\n    return toBN(this).gt(toBN(other));\n  }\n  gte(other) {\n    return toBN(this).gte(toBN(other));\n  }\n  isNegative() {\n    return this._hex[0] === \"-\";\n  }\n  isZero() {\n    return toBN(this).isZero();\n  }\n  toNumber() {\n    try {\n      return toBN(this).toNumber();\n    } catch (error) {\n      throwFault(\"overflow\", \"toNumber\", this.toString());\n    }\n    return null;\n  }\n  toBigInt() {\n    try {\n      return BigInt(this.toString());\n    } catch (e2) {\n    }\n    return logger2.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n      value: this.toString()\n    });\n  }\n  toString() {\n    if (arguments.length > 0) {\n      if (arguments[0] === 10) {\n        if (!_warnedToStringRadix) {\n          _warnedToStringRadix = true;\n          logger2.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n        }\n      } else if (arguments[0] === 16) {\n        logger2.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n      } else {\n        logger2.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n      }\n    }\n    return toBN(this).toString(10);\n  }\n  toHexString() {\n    return this._hex;\n  }\n  toJSON(key2) {\n    return { type: \"BigNumber\", hex: this.toHexString() };\n  }\n  static from(value) {\n    if (value instanceof _BigNumber) {\n      return value;\n    }\n    if (typeof value === \"string\") {\n      if (value.match(/^-?0x[0-9a-f]+$/i)) {\n        return new _BigNumber(_constructorGuard, toHex(value));\n      }\n      if (value.match(/^-?[0-9]+$/)) {\n        return new _BigNumber(_constructorGuard, toHex(new BN(value)));\n      }\n      return logger2.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n    }\n    if (typeof value === \"number\") {\n      if (value % 1) {\n        throwFault(\"underflow\", \"BigNumber.from\", value);\n      }\n      if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n        throwFault(\"overflow\", \"BigNumber.from\", value);\n      }\n      return _BigNumber.from(String(value));\n    }\n    const anyValue = value;\n    if (typeof anyValue === \"bigint\") {\n      return _BigNumber.from(anyValue.toString());\n    }\n    if (isBytes(anyValue)) {\n      return _BigNumber.from(hexlify(anyValue));\n    }\n    if (anyValue) {\n      if (anyValue.toHexString) {\n        const hex = anyValue.toHexString();\n        if (typeof hex === \"string\") {\n          return _BigNumber.from(hex);\n        }\n      } else {\n        let hex = anyValue._hex;\n        if (hex == null && anyValue.type === \"BigNumber\") {\n          hex = anyValue.hex;\n        }\n        if (typeof hex === \"string\") {\n          if (isHexString(hex) || hex[0] === \"-\" && isHexString(hex.substring(1))) {\n            return _BigNumber.from(hex);\n          }\n        }\n      }\n    }\n    return logger2.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n  }\n  static isBigNumber(value) {\n    return !!(value && value._isBigNumber);\n  }\n};\nfunction toHex(value) {\n  if (typeof value !== \"string\") {\n    return toHex(value.toString(16));\n  }\n  if (value[0] === \"-\") {\n    value = value.substring(1);\n    if (value[0] === \"-\") {\n      logger2.throwArgumentError(\"invalid hex\", \"value\", value);\n    }\n    value = toHex(value);\n    if (value === \"0x00\") {\n      return value;\n    }\n    return \"-\" + value;\n  }\n  if (value.substring(0, 2) !== \"0x\") {\n    value = \"0x\" + value;\n  }\n  if (value === \"0x\") {\n    return \"0x00\";\n  }\n  if (value.length % 2) {\n    value = \"0x0\" + value.substring(2);\n  }\n  while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n    value = \"0x\" + value.substring(4);\n  }\n  return value;\n}\nfunction toBigNumber(value) {\n  return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n  const hex = BigNumber.from(value).toHexString();\n  if (hex[0] === \"-\") {\n    return new BN(\"-\" + hex.substring(3), 16);\n  }\n  return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n  const params = { fault, operation };\n  if (value != null) {\n    params.value = value;\n  }\n  return logger2.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\nfunction _base36To16(value) {\n  return new BN(value, 36).toString(16);\n}\n\n// node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js\nvar logger3 = new Logger(version3);\nvar _constructorGuard2 = {};\nvar Zero = BigNumber.from(0);\nvar NegativeOne = BigNumber.from(-1);\nfunction throwFault2(message, fault, operation, value) {\n  const params = { fault, operation };\n  if (value !== void 0) {\n    params.value = value;\n  }\n  return logger3.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\nvar zeros = \"0\";\nwhile (zeros.length < 256) {\n  zeros += zeros;\n}\nfunction getMultiplier(decimals) {\n  if (typeof decimals !== \"number\") {\n    try {\n      decimals = BigNumber.from(decimals).toNumber();\n    } catch (e2) {\n    }\n  }\n  if (typeof decimals === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n    return \"1\" + zeros.substring(0, decimals);\n  }\n  return logger3.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nfunction formatFixed(value, decimals) {\n  if (decimals == null) {\n    decimals = 0;\n  }\n  const multiplier = getMultiplier(decimals);\n  value = BigNumber.from(value);\n  const negative = value.lt(Zero);\n  if (negative) {\n    value = value.mul(NegativeOne);\n  }\n  let fraction = value.mod(multiplier).toString();\n  while (fraction.length < multiplier.length - 1) {\n    fraction = \"0\" + fraction;\n  }\n  fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n  const whole = value.div(multiplier).toString();\n  if (multiplier.length === 1) {\n    value = whole;\n  } else {\n    value = whole + \".\" + fraction;\n  }\n  if (negative) {\n    value = \"-\" + value;\n  }\n  return value;\n}\nfunction parseFixed(value, decimals) {\n  if (decimals == null) {\n    decimals = 0;\n  }\n  const multiplier = getMultiplier(decimals);\n  if (typeof value !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n    logger3.throwArgumentError(\"invalid decimal value\", \"value\", value);\n  }\n  const negative = value.substring(0, 1) === \"-\";\n  if (negative) {\n    value = value.substring(1);\n  }\n  if (value === \".\") {\n    logger3.throwArgumentError(\"missing value\", \"value\", value);\n  }\n  const comps = value.split(\".\");\n  if (comps.length > 2) {\n    logger3.throwArgumentError(\"too many decimal points\", \"value\", value);\n  }\n  let whole = comps[0], fraction = comps[1];\n  if (!whole) {\n    whole = \"0\";\n  }\n  if (!fraction) {\n    fraction = \"0\";\n  }\n  while (fraction[fraction.length - 1] === \"0\") {\n    fraction = fraction.substring(0, fraction.length - 1);\n  }\n  if (fraction.length > multiplier.length - 1) {\n    throwFault2(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n  }\n  if (fraction === \"\") {\n    fraction = \"0\";\n  }\n  while (fraction.length < multiplier.length - 1) {\n    fraction += \"0\";\n  }\n  const wholeValue = BigNumber.from(whole);\n  const fractionValue = BigNumber.from(fraction);\n  let wei = wholeValue.mul(multiplier).add(fractionValue);\n  if (negative) {\n    wei = wei.mul(NegativeOne);\n  }\n  return wei;\n}\nvar FixedFormat = class _FixedFormat {\n  constructor(constructorGuard, signed2, width, decimals) {\n    if (constructorGuard !== _constructorGuard2) {\n      logger3.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n        operation: \"new FixedFormat\"\n      });\n    }\n    this.signed = signed2;\n    this.width = width;\n    this.decimals = decimals;\n    this.name = (signed2 ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n    this._multiplier = getMultiplier(decimals);\n    Object.freeze(this);\n  }\n  static from(value) {\n    if (value instanceof _FixedFormat) {\n      return value;\n    }\n    if (typeof value === \"number\") {\n      value = `fixed128x${value}`;\n    }\n    let signed2 = true;\n    let width = 128;\n    let decimals = 18;\n    if (typeof value === \"string\") {\n      if (value === \"fixed\") {\n      } else if (value === \"ufixed\") {\n        signed2 = false;\n      } else {\n        const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n        if (!match) {\n          logger3.throwArgumentError(\"invalid fixed format\", \"format\", value);\n        }\n        signed2 = match[1] !== \"u\";\n        width = parseInt(match[2]);\n        decimals = parseInt(match[3]);\n      }\n    } else if (value) {\n      const check = (key2, type, defaultValue) => {\n        if (value[key2] == null) {\n          return defaultValue;\n        }\n        if (typeof value[key2] !== type) {\n          logger3.throwArgumentError(\"invalid fixed format (\" + key2 + \" not \" + type + \")\", \"format.\" + key2, value[key2]);\n        }\n        return value[key2];\n      };\n      signed2 = check(\"signed\", \"boolean\", signed2);\n      width = check(\"width\", \"number\", width);\n      decimals = check(\"decimals\", \"number\", decimals);\n    }\n    if (width % 8) {\n      logger3.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n    }\n    if (decimals > 80) {\n      logger3.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n    }\n    return new _FixedFormat(_constructorGuard2, signed2, width, decimals);\n  }\n};\nvar FixedNumber = class _FixedNumber {\n  constructor(constructorGuard, hex, value, format) {\n    if (constructorGuard !== _constructorGuard2) {\n      logger3.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n        operation: \"new FixedFormat\"\n      });\n    }\n    this.format = format;\n    this._hex = hex;\n    this._value = value;\n    this._isFixedNumber = true;\n    Object.freeze(this);\n  }\n  _checkFormat(other) {\n    if (this.format.name !== other.format.name) {\n      logger3.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n    }\n  }\n  addUnsafe(other) {\n    this._checkFormat(other);\n    const a4 = parseFixed(this._value, this.format.decimals);\n    const b5 = parseFixed(other._value, other.format.decimals);\n    return _FixedNumber.fromValue(a4.add(b5), this.format.decimals, this.format);\n  }\n  subUnsafe(other) {\n    this._checkFormat(other);\n    const a4 = parseFixed(this._value, this.format.decimals);\n    const b5 = parseFixed(other._value, other.format.decimals);\n    return _FixedNumber.fromValue(a4.sub(b5), this.format.decimals, this.format);\n  }\n  mulUnsafe(other) {\n    this._checkFormat(other);\n    const a4 = parseFixed(this._value, this.format.decimals);\n    const b5 = parseFixed(other._value, other.format.decimals);\n    return _FixedNumber.fromValue(a4.mul(b5).div(this.format._multiplier), this.format.decimals, this.format);\n  }\n  divUnsafe(other) {\n    this._checkFormat(other);\n    const a4 = parseFixed(this._value, this.format.decimals);\n    const b5 = parseFixed(other._value, other.format.decimals);\n    return _FixedNumber.fromValue(a4.mul(this.format._multiplier).div(b5), this.format.decimals, this.format);\n  }\n  floor() {\n    const comps = this.toString().split(\".\");\n    if (comps.length === 1) {\n      comps.push(\"0\");\n    }\n    let result = _FixedNumber.from(comps[0], this.format);\n    const hasFraction = !comps[1].match(/^(0*)$/);\n    if (this.isNegative() && hasFraction) {\n      result = result.subUnsafe(ONE.toFormat(result.format));\n    }\n    return result;\n  }\n  ceiling() {\n    const comps = this.toString().split(\".\");\n    if (comps.length === 1) {\n      comps.push(\"0\");\n    }\n    let result = _FixedNumber.from(comps[0], this.format);\n    const hasFraction = !comps[1].match(/^(0*)$/);\n    if (!this.isNegative() && hasFraction) {\n      result = result.addUnsafe(ONE.toFormat(result.format));\n    }\n    return result;\n  }\n  // @TODO: Support other rounding algorithms\n  round(decimals) {\n    if (decimals == null) {\n      decimals = 0;\n    }\n    const comps = this.toString().split(\".\");\n    if (comps.length === 1) {\n      comps.push(\"0\");\n    }\n    if (decimals < 0 || decimals > 80 || decimals % 1) {\n      logger3.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n    }\n    if (comps[1].length <= decimals) {\n      return this;\n    }\n    const factor = _FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n    const bump = BUMP.toFormat(this.format);\n    return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n  }\n  isZero() {\n    return this._value === \"0.0\" || this._value === \"0\";\n  }\n  isNegative() {\n    return this._value[0] === \"-\";\n  }\n  toString() {\n    return this._value;\n  }\n  toHexString(width) {\n    if (width == null) {\n      return this._hex;\n    }\n    if (width % 8) {\n      logger3.throwArgumentError(\"invalid byte width\", \"width\", width);\n    }\n    const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n    return hexZeroPad(hex, width / 8);\n  }\n  toUnsafeFloat() {\n    return parseFloat(this.toString());\n  }\n  toFormat(format) {\n    return _FixedNumber.fromString(this._value, format);\n  }\n  static fromValue(value, decimals, format) {\n    if (format == null && decimals != null && !isBigNumberish(decimals)) {\n      format = decimals;\n      decimals = null;\n    }\n    if (decimals == null) {\n      decimals = 0;\n    }\n    if (format == null) {\n      format = \"fixed\";\n    }\n    return _FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n  }\n  static fromString(value, format) {\n    if (format == null) {\n      format = \"fixed\";\n    }\n    const fixedFormat = FixedFormat.from(format);\n    const numeric = parseFixed(value, fixedFormat.decimals);\n    if (!fixedFormat.signed && numeric.lt(Zero)) {\n      throwFault2(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n    }\n    let hex = null;\n    if (fixedFormat.signed) {\n      hex = numeric.toTwos(fixedFormat.width).toHexString();\n    } else {\n      hex = numeric.toHexString();\n      hex = hexZeroPad(hex, fixedFormat.width / 8);\n    }\n    const decimal = formatFixed(numeric, fixedFormat.decimals);\n    return new _FixedNumber(_constructorGuard2, hex, decimal, fixedFormat);\n  }\n  static fromBytes(value, format) {\n    if (format == null) {\n      format = \"fixed\";\n    }\n    const fixedFormat = FixedFormat.from(format);\n    if (arrayify(value).length > fixedFormat.width / 8) {\n      throw new Error(\"overflow\");\n    }\n    let numeric = BigNumber.from(value);\n    if (fixedFormat.signed) {\n      numeric = numeric.fromTwos(fixedFormat.width);\n    }\n    const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n    const decimal = formatFixed(numeric, fixedFormat.decimals);\n    return new _FixedNumber(_constructorGuard2, hex, decimal, fixedFormat);\n  }\n  static from(value, format) {\n    if (typeof value === \"string\") {\n      return _FixedNumber.fromString(value, format);\n    }\n    if (isBytes(value)) {\n      return _FixedNumber.fromBytes(value, format);\n    }\n    try {\n      return _FixedNumber.fromValue(value, 0, format);\n    } catch (error) {\n      if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n        throw error;\n      }\n    }\n    return logger3.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n  }\n  static isFixedNumber(value) {\n    return !!(value && value._isFixedNumber);\n  }\n};\nvar ONE = FixedNumber.from(1);\nvar BUMP = FixedNumber.from(\"0.5\");\n\n// node_modules/@ethersproject/constants/lib.esm/bignumbers.js\nvar NegativeOne2 = BigNumber.from(-1);\nvar Zero2 = BigNumber.from(0);\nvar One = BigNumber.from(1);\nvar Two = BigNumber.from(2);\nvar WeiPerEther = BigNumber.from(\"1000000000000000000\");\nvar MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nvar MinInt256 = BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\");\nvar MaxInt256 = BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\n// node_modules/@ethersproject/strings/lib.esm/_version.js\nvar version4 = \"strings/5.7.0\";\n\n// node_modules/@ethersproject/strings/lib.esm/utf8.js\nvar logger4 = new Logger(version4);\nvar UnicodeNormalizationForm;\n(function(UnicodeNormalizationForm2) {\n  UnicodeNormalizationForm2[\"current\"] = \"\";\n  UnicodeNormalizationForm2[\"NFC\"] = \"NFC\";\n  UnicodeNormalizationForm2[\"NFD\"] = \"NFD\";\n  UnicodeNormalizationForm2[\"NFKC\"] = \"NFKC\";\n  UnicodeNormalizationForm2[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\nvar Utf8ErrorReason;\n(function(Utf8ErrorReason2) {\n  Utf8ErrorReason2[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n  Utf8ErrorReason2[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n  Utf8ErrorReason2[\"OVERRUN\"] = \"string overrun\";\n  Utf8ErrorReason2[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n  Utf8ErrorReason2[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n  Utf8ErrorReason2[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n  Utf8ErrorReason2[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n  return logger4.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n  if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n    let i4 = 0;\n    for (let o4 = offset + 1; o4 < bytes.length; o4++) {\n      if (bytes[o4] >> 6 !== 2) {\n        break;\n      }\n      i4++;\n    }\n    return i4;\n  }\n  if (reason === Utf8ErrorReason.OVERRUN) {\n    return bytes.length - offset - 1;\n  }\n  return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n  if (reason === Utf8ErrorReason.OVERLONG) {\n    output.push(badCodepoint);\n    return 0;\n  }\n  output.push(65533);\n  return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\nvar Utf8ErrorFuncs = Object.freeze({\n  error: errorFunc,\n  ignore: ignoreFunc,\n  replace: replaceFunc\n});\nfunction toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n  if (form != UnicodeNormalizationForm.current) {\n    logger4.checkNormalize();\n    str = str.normalize(form);\n  }\n  let result = [];\n  for (let i4 = 0; i4 < str.length; i4++) {\n    const c5 = str.charCodeAt(i4);\n    if (c5 < 128) {\n      result.push(c5);\n    } else if (c5 < 2048) {\n      result.push(c5 >> 6 | 192);\n      result.push(c5 & 63 | 128);\n    } else if ((c5 & 64512) == 55296) {\n      i4++;\n      const c22 = str.charCodeAt(i4);\n      if (i4 >= str.length || (c22 & 64512) !== 56320) {\n        throw new Error(\"invalid utf-8 string\");\n      }\n      const pair = 65536 + ((c5 & 1023) << 10) + (c22 & 1023);\n      result.push(pair >> 18 | 240);\n      result.push(pair >> 12 & 63 | 128);\n      result.push(pair >> 6 & 63 | 128);\n      result.push(pair & 63 | 128);\n    } else {\n      result.push(c5 >> 12 | 224);\n      result.push(c5 >> 6 & 63 | 128);\n      result.push(c5 & 63 | 128);\n    }\n  }\n  return arrayify(result);\n}\n\n// node_modules/@ethersproject/strings/lib.esm/idna.js\nfunction bytes2(data) {\n  if (data.length % 4 !== 0) {\n    throw new Error(\"bad data\");\n  }\n  let result = [];\n  for (let i4 = 0; i4 < data.length; i4 += 4) {\n    result.push(parseInt(data.substring(i4, i4 + 4), 16));\n  }\n  return result;\n}\nfunction createTable(data, func) {\n  if (!func) {\n    func = function(value) {\n      return [parseInt(value, 16)];\n    };\n  }\n  let lo2 = 0;\n  let result = {};\n  data.split(\",\").forEach((pair) => {\n    let comps = pair.split(\":\");\n    lo2 += parseInt(comps[0], 16);\n    result[lo2] = func(comps[1]);\n  });\n  return result;\n}\nfunction createRangeTable(data) {\n  let hi2 = 0;\n  return data.split(\",\").map((v5) => {\n    let comps = v5.split(\"-\");\n    if (comps.length === 1) {\n      comps[1] = \"0\";\n    } else if (comps[1] === \"\") {\n      comps[1] = \"1\";\n    }\n    let lo2 = hi2 + parseInt(comps[0], 16);\n    hi2 = parseInt(comps[1], 16);\n    return { l: lo2, h: hi2 };\n  });\n}\nvar Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\nvar Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v5) => parseInt(v5, 16));\nvar Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nvar Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nvar Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nvar Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\n\n// node_modules/@ethersproject/hash/lib.esm/_version.js\nvar version5 = \"hash/5.7.0\";\n\n// node_modules/@ethersproject/base64/lib.esm/base64.js\nfunction decode(textData) {\n  textData = atob(textData);\n  const data = [];\n  for (let i4 = 0; i4 < textData.length; i4++) {\n    data.push(textData.charCodeAt(i4));\n  }\n  return arrayify(data);\n}\n\n// node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js\nfunction flat(array, depth) {\n  if (depth == null) {\n    depth = 1;\n  }\n  const result = [];\n  const forEach = result.forEach;\n  const flatDeep = function(arr, depth2) {\n    forEach.call(arr, function(val) {\n      if (depth2 > 0 && Array.isArray(val)) {\n        flatDeep(val, depth2 - 1);\n      } else {\n        result.push(val);\n      }\n    });\n  };\n  flatDeep(array, depth);\n  return result;\n}\nfunction fromEntries(array) {\n  const result = {};\n  for (let i4 = 0; i4 < array.length; i4++) {\n    const value = array[i4];\n    result[value[0]] = value[1];\n  }\n  return result;\n}\nfunction decode_arithmetic(bytes) {\n  let pos = 0;\n  function u16() {\n    return bytes[pos++] << 8 | bytes[pos++];\n  }\n  let symbol_count = u16();\n  let total = 1;\n  let acc = [0, 1];\n  for (let i4 = 1; i4 < symbol_count; i4++) {\n    acc.push(total += u16());\n  }\n  let skip = u16();\n  let pos_payload = pos;\n  pos += skip;\n  let read_width = 0;\n  let read_buffer = 0;\n  function read_bit() {\n    if (read_width == 0) {\n      read_buffer = read_buffer << 8 | bytes[pos++];\n      read_width = 8;\n    }\n    return read_buffer >> --read_width & 1;\n  }\n  const N11 = 31;\n  const FULL = Math.pow(2, N11);\n  const HALF = FULL >>> 1;\n  const QRTR = HALF >> 1;\n  const MASK = FULL - 1;\n  let register = 0;\n  for (let i4 = 0; i4 < N11; i4++)\n    register = register << 1 | read_bit();\n  let symbols = [];\n  let low = 0;\n  let range = FULL;\n  while (true) {\n    let value = Math.floor(((register - low + 1) * total - 1) / range);\n    let start = 0;\n    let end = symbol_count;\n    while (end - start > 1) {\n      let mid = start + end >>> 1;\n      if (value < acc[mid]) {\n        end = mid;\n      } else {\n        start = mid;\n      }\n    }\n    if (start == 0)\n      break;\n    symbols.push(start);\n    let a4 = low + Math.floor(range * acc[start] / total);\n    let b5 = low + Math.floor(range * acc[start + 1] / total) - 1;\n    while (((a4 ^ b5) & HALF) == 0) {\n      register = register << 1 & MASK | read_bit();\n      a4 = a4 << 1 & MASK;\n      b5 = b5 << 1 & MASK | 1;\n    }\n    while (a4 & ~b5 & QRTR) {\n      register = register & HALF | register << 1 & MASK >>> 1 | read_bit();\n      a4 = a4 << 1 ^ HALF;\n      b5 = (b5 ^ HALF) << 1 | HALF | 1;\n    }\n    low = a4;\n    range = 1 + b5 - a4;\n  }\n  let offset = symbol_count - 4;\n  return symbols.map((x6) => {\n    switch (x6 - offset) {\n      case 3:\n        return offset + 65792 + (bytes[pos_payload++] << 16 | bytes[pos_payload++] << 8 | bytes[pos_payload++]);\n      case 2:\n        return offset + 256 + (bytes[pos_payload++] << 8 | bytes[pos_payload++]);\n      case 1:\n        return offset + bytes[pos_payload++];\n      default:\n        return x6 - 1;\n    }\n  });\n}\nfunction read_payload(v5) {\n  let pos = 0;\n  return () => v5[pos++];\n}\nfunction read_compressed_payload(bytes) {\n  return read_payload(decode_arithmetic(bytes));\n}\nfunction signed(i4) {\n  return i4 & 1 ? ~i4 >> 1 : i4 >> 1;\n}\nfunction read_counts(n5, next) {\n  let v5 = Array(n5);\n  for (let i4 = 0; i4 < n5; i4++)\n    v5[i4] = 1 + next();\n  return v5;\n}\nfunction read_ascending(n5, next) {\n  let v5 = Array(n5);\n  for (let i4 = 0, x6 = -1; i4 < n5; i4++)\n    v5[i4] = x6 += 1 + next();\n  return v5;\n}\nfunction read_deltas(n5, next) {\n  let v5 = Array(n5);\n  for (let i4 = 0, x6 = 0; i4 < n5; i4++)\n    v5[i4] = x6 += signed(next());\n  return v5;\n}\nfunction read_member_array(next, lookup) {\n  let v5 = read_ascending(next(), next);\n  let n5 = next();\n  let vX = read_ascending(n5, next);\n  let vN = read_counts(n5, next);\n  for (let i4 = 0; i4 < n5; i4++) {\n    for (let j2 = 0; j2 < vN[i4]; j2++) {\n      v5.push(vX[i4] + j2);\n    }\n  }\n  return lookup ? v5.map((x6) => lookup[x6]) : v5;\n}\nfunction read_mapped_map(next) {\n  let ret = [];\n  while (true) {\n    let w4 = next();\n    if (w4 == 0)\n      break;\n    ret.push(read_linear_table(w4, next));\n  }\n  while (true) {\n    let w4 = next() - 1;\n    if (w4 < 0)\n      break;\n    ret.push(read_replacement_table(w4, next));\n  }\n  return fromEntries(flat(ret));\n}\nfunction read_zero_terminated_array(next) {\n  let v5 = [];\n  while (true) {\n    let i4 = next();\n    if (i4 == 0)\n      break;\n    v5.push(i4);\n  }\n  return v5;\n}\nfunction read_transposed(n5, w4, next) {\n  let m2 = Array(n5).fill(void 0).map(() => []);\n  for (let i4 = 0; i4 < w4; i4++) {\n    read_deltas(n5, next).forEach((x6, j2) => m2[j2].push(x6));\n  }\n  return m2;\n}\nfunction read_linear_table(w4, next) {\n  let dx = 1 + next();\n  let dy = next();\n  let vN = read_zero_terminated_array(next);\n  let m2 = read_transposed(vN.length, 1 + w4, next);\n  return flat(m2.map((v5, i4) => {\n    const x6 = v5[0], ys3 = v5.slice(1);\n    return Array(vN[i4]).fill(void 0).map((_4, j2) => {\n      let j_dy = j2 * dy;\n      return [x6 + j2 * dx, ys3.map((y6) => y6 + j_dy)];\n    });\n  }));\n}\nfunction read_replacement_table(w4, next) {\n  let n5 = 1 + next();\n  let m2 = read_transposed(n5, 1 + w4, next);\n  return m2.map((v5) => [v5[0], v5.slice(1)]);\n}\nfunction read_emoji_trie(next) {\n  let sorted = read_member_array(next).sort((a4, b5) => a4 - b5);\n  return read2();\n  function read2() {\n    let branches = [];\n    while (true) {\n      let keys2 = read_member_array(next, sorted);\n      if (keys2.length == 0)\n        break;\n      branches.push({ set: new Set(keys2), node: read2() });\n    }\n    branches.sort((a4, b5) => b5.set.size - a4.set.size);\n    let temp = next();\n    let valid = temp % 3;\n    temp = temp / 3 | 0;\n    let fe0f = !!(temp & 1);\n    temp >>= 1;\n    let save = temp == 1;\n    let check = temp == 2;\n    return { branches, valid, fe0f, save, check };\n  }\n}\n\n// node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js\nfunction getData() {\n  return read_compressed_payload(decode(\"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\"));\n}\n\n// node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js\nvar r = getData();\nvar VALID = new Set(read_member_array(r));\nvar IGNORED = new Set(read_member_array(r));\nvar MAPPED = read_mapped_map(r);\nvar EMOJI_ROOT = read_emoji_trie(r);\n\n// node_modules/@ethersproject/hash/lib.esm/namehash.js\nvar logger5 = new Logger(version5);\nvar Zeros = new Uint8Array(32);\nZeros.fill(0);\n\n// node_modules/@ethersproject/hash/lib.esm/message.js\nvar messagePrefix = \"\u0019Ethereum Signed Message:\\n\";\nfunction hashMessage(message) {\n  if (typeof message === \"string\") {\n    message = toUtf8Bytes(message);\n  }\n  return keccak256(concat([\n    toUtf8Bytes(messagePrefix),\n    toUtf8Bytes(String(message.length)),\n    message\n  ]));\n}\n\n// node_modules/@ethersproject/rlp/lib.esm/_version.js\nvar version6 = \"rlp/5.7.0\";\n\n// node_modules/@ethersproject/rlp/lib.esm/index.js\nvar logger6 = new Logger(version6);\n\n// node_modules/@ethersproject/address/lib.esm/_version.js\nvar version7 = \"address/5.7.0\";\n\n// node_modules/@ethersproject/address/lib.esm/index.js\nvar logger7 = new Logger(version7);\nfunction getChecksumAddress(address) {\n  if (!isHexString(address, 20)) {\n    logger7.throwArgumentError(\"invalid address\", \"address\", address);\n  }\n  address = address.toLowerCase();\n  const chars = address.substring(2).split(\"\");\n  const expanded = new Uint8Array(40);\n  for (let i4 = 0; i4 < 40; i4++) {\n    expanded[i4] = chars[i4].charCodeAt(0);\n  }\n  const hashed = arrayify(keccak256(expanded));\n  for (let i4 = 0; i4 < 40; i4 += 2) {\n    if (hashed[i4 >> 1] >> 4 >= 8) {\n      chars[i4] = chars[i4].toUpperCase();\n    }\n    if ((hashed[i4 >> 1] & 15) >= 8) {\n      chars[i4 + 1] = chars[i4 + 1].toUpperCase();\n    }\n  }\n  return \"0x\" + chars.join(\"\");\n}\nvar MAX_SAFE_INTEGER = 9007199254740991;\nfunction log10(x6) {\n  if (Math.log10) {\n    return Math.log10(x6);\n  }\n  return Math.log(x6) / Math.LN10;\n}\nvar ibanLookup = {};\nfor (let i4 = 0; i4 < 10; i4++) {\n  ibanLookup[String(i4)] = String(i4);\n}\nfor (let i4 = 0; i4 < 26; i4++) {\n  ibanLookup[String.fromCharCode(65 + i4)] = String(10 + i4);\n}\nvar safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n  address = address.toUpperCase();\n  address = address.substring(4) + address.substring(0, 2) + \"00\";\n  let expanded = address.split(\"\").map((c5) => {\n    return ibanLookup[c5];\n  }).join(\"\");\n  while (expanded.length >= safeDigits) {\n    let block = expanded.substring(0, safeDigits);\n    expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n  }\n  let checksum = String(98 - parseInt(expanded, 10) % 97);\n  while (checksum.length < 2) {\n    checksum = \"0\" + checksum;\n  }\n  return checksum;\n}\nfunction getAddress(address) {\n  let result = null;\n  if (typeof address !== \"string\") {\n    logger7.throwArgumentError(\"invalid address\", \"address\", address);\n  }\n  if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n    if (address.substring(0, 2) !== \"0x\") {\n      address = \"0x\" + address;\n    }\n    result = getChecksumAddress(address);\n    if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n      logger7.throwArgumentError(\"bad address checksum\", \"address\", address);\n    }\n  } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n    if (address.substring(2, 4) !== ibanChecksum(address)) {\n      logger7.throwArgumentError(\"bad icap checksum\", \"address\", address);\n    }\n    result = _base36To16(address.substring(4));\n    while (result.length < 40) {\n      result = \"0\" + result;\n    }\n    result = getChecksumAddress(\"0x\" + result);\n  } else {\n    logger7.throwArgumentError(\"invalid address\", \"address\", address);\n  }\n  return result;\n}\n\n// node_modules/@ethersproject/properties/lib.esm/_version.js\nvar version8 = \"properties/5.7.0\";\n\n// node_modules/@ethersproject/properties/lib.esm/index.js\nvar logger8 = new Logger(version8);\nfunction defineReadOnly(object, name2, value) {\n  Object.defineProperty(object, name2, {\n    enumerable: true,\n    value,\n    writable: false\n  });\n}\n\n// node_modules/@ethersproject/hash/lib.esm/typed-data.js\nvar logger9 = new Logger(version5);\nvar padding = new Uint8Array(32);\npadding.fill(0);\nvar NegativeOne3 = BigNumber.from(-1);\nvar Zero3 = BigNumber.from(0);\nvar One2 = BigNumber.from(1);\nvar MaxUint2562 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nvar hexTrue = hexZeroPad(One2.toHexString(), 32);\nvar hexFalse = hexZeroPad(Zero3.toHexString(), 32);\nfunction checkString(key2) {\n  return function(value) {\n    if (typeof value !== \"string\") {\n      logger9.throwArgumentError(`invalid domain value for ${JSON.stringify(key2)}`, `domain.${key2}`, value);\n    }\n    return value;\n  };\n}\nvar domainChecks = {\n  name: checkString(\"name\"),\n  version: checkString(\"version\"),\n  chainId: function(value) {\n    try {\n      return BigNumber.from(value).toString();\n    } catch (error) {\n    }\n    return logger9.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n  },\n  verifyingContract: function(value) {\n    try {\n      return getAddress(value).toLowerCase();\n    } catch (error) {\n    }\n    return logger9.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n  },\n  salt: function(value) {\n    try {\n      const bytes = arrayify(value);\n      if (bytes.length !== 32) {\n        throw new Error(\"bad length\");\n      }\n      return hexlify(bytes);\n    } catch (error) {\n    }\n    return logger9.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n  }\n};\n\n// node_modules/@ethersproject/signing-key/lib.esm/elliptic.js\nvar import_bn2 = __toESM(require_bn());\nvar import_hash = __toESM(require_hash());\nfunction createCommonjsModule(fn, basedir, module) {\n  return module = {\n    path: basedir,\n    exports: {},\n    require: function(path, base3) {\n      return commonjsRequire(path, base3 === void 0 || base3 === null ? module.path : base3);\n    }\n  }, fn(module, module.exports), module.exports;\n}\nfunction commonjsRequire() {\n  throw new Error(\"Dynamic requires are not currently supported by @rollup/plugin-commonjs\");\n}\nvar minimalisticAssert = assert;\nfunction assert(val, msg) {\n  if (!val)\n    throw new Error(msg || \"Assertion failed\");\n}\nassert.equal = function assertEqual(l4, r4, msg) {\n  if (l4 != r4)\n    throw new Error(msg || \"Assertion failed: \" + l4 + \" != \" + r4);\n};\nvar utils_1 = createCommonjsModule(function(module, exports) {\n  \"use strict\";\n  var utils = exports;\n  function toArray(msg, enc) {\n    if (Array.isArray(msg))\n      return msg.slice();\n    if (!msg)\n      return [];\n    var res = [];\n    if (typeof msg !== \"string\") {\n      for (var i4 = 0; i4 < msg.length; i4++)\n        res[i4] = msg[i4] | 0;\n      return res;\n    }\n    if (enc === \"hex\") {\n      msg = msg.replace(/[^a-z0-9]+/ig, \"\");\n      if (msg.length % 2 !== 0)\n        msg = \"0\" + msg;\n      for (var i4 = 0; i4 < msg.length; i4 += 2)\n        res.push(parseInt(msg[i4] + msg[i4 + 1], 16));\n    } else {\n      for (var i4 = 0; i4 < msg.length; i4++) {\n        var c5 = msg.charCodeAt(i4);\n        var hi2 = c5 >> 8;\n        var lo2 = c5 & 255;\n        if (hi2)\n          res.push(hi2, lo2);\n        else\n          res.push(lo2);\n      }\n    }\n    return res;\n  }\n  utils.toArray = toArray;\n  function zero2(word) {\n    if (word.length === 1)\n      return \"0\" + word;\n    else\n      return word;\n  }\n  utils.zero2 = zero2;\n  function toHex2(msg) {\n    var res = \"\";\n    for (var i4 = 0; i4 < msg.length; i4++)\n      res += zero2(msg[i4].toString(16));\n    return res;\n  }\n  utils.toHex = toHex2;\n  utils.encode = function encode8(arr, enc) {\n    if (enc === \"hex\")\n      return toHex2(arr);\n    else\n      return arr;\n  };\n});\nvar utils_1$1 = createCommonjsModule(function(module, exports) {\n  \"use strict\";\n  var utils = exports;\n  utils.assert = minimalisticAssert;\n  utils.toArray = utils_1.toArray;\n  utils.zero2 = utils_1.zero2;\n  utils.toHex = utils_1.toHex;\n  utils.encode = utils_1.encode;\n  function getNAF2(num, w4, bits) {\n    var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n    naf.fill(0);\n    var ws2 = 1 << w4 + 1;\n    var k4 = num.clone();\n    for (var i4 = 0; i4 < naf.length; i4++) {\n      var z6;\n      var mod = k4.andln(ws2 - 1);\n      if (k4.isOdd()) {\n        if (mod > (ws2 >> 1) - 1)\n          z6 = (ws2 >> 1) - mod;\n        else\n          z6 = mod;\n        k4.isubn(z6);\n      } else {\n        z6 = 0;\n      }\n      naf[i4] = z6;\n      k4.iushrn(1);\n    }\n    return naf;\n  }\n  utils.getNAF = getNAF2;\n  function getJSF2(k1, k22) {\n    var jsf = [\n      [],\n      []\n    ];\n    k1 = k1.clone();\n    k22 = k22.clone();\n    var d1 = 0;\n    var d22 = 0;\n    var m8;\n    while (k1.cmpn(-d1) > 0 || k22.cmpn(-d22) > 0) {\n      var m14 = k1.andln(3) + d1 & 3;\n      var m24 = k22.andln(3) + d22 & 3;\n      if (m14 === 3)\n        m14 = -1;\n      if (m24 === 3)\n        m24 = -1;\n      var u1;\n      if ((m14 & 1) === 0) {\n        u1 = 0;\n      } else {\n        m8 = k1.andln(7) + d1 & 7;\n        if ((m8 === 3 || m8 === 5) && m24 === 2)\n          u1 = -m14;\n        else\n          u1 = m14;\n      }\n      jsf[0].push(u1);\n      var u22;\n      if ((m24 & 1) === 0) {\n        u22 = 0;\n      } else {\n        m8 = k22.andln(7) + d22 & 7;\n        if ((m8 === 3 || m8 === 5) && m14 === 2)\n          u22 = -m24;\n        else\n          u22 = m24;\n      }\n      jsf[1].push(u22);\n      if (2 * d1 === u1 + 1)\n        d1 = 1 - d1;\n      if (2 * d22 === u22 + 1)\n        d22 = 1 - d22;\n      k1.iushrn(1);\n      k22.iushrn(1);\n    }\n    return jsf;\n  }\n  utils.getJSF = getJSF2;\n  function cachedProperty(obj, name2, computer) {\n    var key2 = \"_\" + name2;\n    obj.prototype[name2] = function cachedProperty2() {\n      return this[key2] !== void 0 ? this[key2] : this[key2] = computer.call(this);\n    };\n  }\n  utils.cachedProperty = cachedProperty;\n  function parseBytes(bytes) {\n    return typeof bytes === \"string\" ? utils.toArray(bytes, \"hex\") : bytes;\n  }\n  utils.parseBytes = parseBytes;\n  function intFromLE(bytes) {\n    return new import_bn2.default(bytes, \"hex\", \"le\");\n  }\n  utils.intFromLE = intFromLE;\n});\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\nfunction BaseCurve(type, conf) {\n  this.type = type;\n  this.p = new import_bn2.default(conf.p, 16);\n  this.red = conf.prime ? import_bn2.default.red(conf.prime) : import_bn2.default.mont(this.p);\n  this.zero = new import_bn2.default(0).toRed(this.red);\n  this.one = new import_bn2.default(1).toRed(this.red);\n  this.two = new import_bn2.default(2).toRed(this.red);\n  this.n = conf.n && new import_bn2.default(conf.n, 16);\n  this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n  this._wnafT1 = new Array(4);\n  this._wnafT2 = new Array(4);\n  this._wnafT3 = new Array(4);\n  this._wnafT4 = new Array(4);\n  this._bitLength = this.n ? this.n.bitLength() : 0;\n  var adjustCount = this.n && this.p.div(this.n);\n  if (!adjustCount || adjustCount.cmpn(100) > 0) {\n    this.redN = null;\n  } else {\n    this._maxwellTrick = true;\n    this.redN = this.n.toRed(this.red);\n  }\n}\nvar base = BaseCurve;\nBaseCurve.prototype.point = function point() {\n  throw new Error(\"Not implemented\");\n};\nBaseCurve.prototype.validate = function validate() {\n  throw new Error(\"Not implemented\");\n};\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p3, k4) {\n  assert$1(p3.precomputed);\n  var doubles = p3._getDoubles();\n  var naf = getNAF(k4, 1, this._bitLength);\n  var I5 = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n  I5 /= 3;\n  var repr = [];\n  var j2;\n  var nafW;\n  for (j2 = 0; j2 < naf.length; j2 += doubles.step) {\n    nafW = 0;\n    for (var l4 = j2 + doubles.step - 1; l4 >= j2; l4--)\n      nafW = (nafW << 1) + naf[l4];\n    repr.push(nafW);\n  }\n  var a4 = this.jpoint(null, null, null);\n  var b5 = this.jpoint(null, null, null);\n  for (var i4 = I5; i4 > 0; i4--) {\n    for (j2 = 0; j2 < repr.length; j2++) {\n      nafW = repr[j2];\n      if (nafW === i4)\n        b5 = b5.mixedAdd(doubles.points[j2]);\n      else if (nafW === -i4)\n        b5 = b5.mixedAdd(doubles.points[j2].neg());\n    }\n    a4 = a4.add(b5);\n  }\n  return a4.toP();\n};\nBaseCurve.prototype._wnafMul = function _wnafMul(p3, k4) {\n  var w4 = 4;\n  var nafPoints = p3._getNAFPoints(w4);\n  w4 = nafPoints.wnd;\n  var wnd = nafPoints.points;\n  var naf = getNAF(k4, w4, this._bitLength);\n  var acc = this.jpoint(null, null, null);\n  for (var i4 = naf.length - 1; i4 >= 0; i4--) {\n    for (var l4 = 0; i4 >= 0 && naf[i4] === 0; i4--)\n      l4++;\n    if (i4 >= 0)\n      l4++;\n    acc = acc.dblp(l4);\n    if (i4 < 0)\n      break;\n    var z6 = naf[i4];\n    assert$1(z6 !== 0);\n    if (p3.type === \"affine\") {\n      if (z6 > 0)\n        acc = acc.mixedAdd(wnd[z6 - 1 >> 1]);\n      else\n        acc = acc.mixedAdd(wnd[-z6 - 1 >> 1].neg());\n    } else {\n      if (z6 > 0)\n        acc = acc.add(wnd[z6 - 1 >> 1]);\n      else\n        acc = acc.add(wnd[-z6 - 1 >> 1].neg());\n    }\n  }\n  return p3.type === \"affine\" ? acc.toP() : acc;\n};\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n  var wndWidth = this._wnafT1;\n  var wnd = this._wnafT2;\n  var naf = this._wnafT3;\n  var max = 0;\n  var i4;\n  var j2;\n  var p3;\n  for (i4 = 0; i4 < len; i4++) {\n    p3 = points[i4];\n    var nafPoints = p3._getNAFPoints(defW);\n    wndWidth[i4] = nafPoints.wnd;\n    wnd[i4] = nafPoints.points;\n  }\n  for (i4 = len - 1; i4 >= 1; i4 -= 2) {\n    var a4 = i4 - 1;\n    var b5 = i4;\n    if (wndWidth[a4] !== 1 || wndWidth[b5] !== 1) {\n      naf[a4] = getNAF(coeffs[a4], wndWidth[a4], this._bitLength);\n      naf[b5] = getNAF(coeffs[b5], wndWidth[b5], this._bitLength);\n      max = Math.max(naf[a4].length, max);\n      max = Math.max(naf[b5].length, max);\n      continue;\n    }\n    var comb = [\n      points[a4],\n      /* 1 */\n      null,\n      /* 3 */\n      null,\n      /* 5 */\n      points[b5]\n      /* 7 */\n    ];\n    if (points[a4].y.cmp(points[b5].y) === 0) {\n      comb[1] = points[a4].add(points[b5]);\n      comb[2] = points[a4].toJ().mixedAdd(points[b5].neg());\n    } else if (points[a4].y.cmp(points[b5].y.redNeg()) === 0) {\n      comb[1] = points[a4].toJ().mixedAdd(points[b5]);\n      comb[2] = points[a4].add(points[b5].neg());\n    } else {\n      comb[1] = points[a4].toJ().mixedAdd(points[b5]);\n      comb[2] = points[a4].toJ().mixedAdd(points[b5].neg());\n    }\n    var index = [\n      -3,\n      /* -1 -1 */\n      -1,\n      /* -1 0 */\n      -5,\n      /* -1 1 */\n      -7,\n      /* 0 -1 */\n      0,\n      /* 0 0 */\n      7,\n      /* 0 1 */\n      5,\n      /* 1 -1 */\n      1,\n      /* 1 0 */\n      3\n      /* 1 1 */\n    ];\n    var jsf = getJSF(coeffs[a4], coeffs[b5]);\n    max = Math.max(jsf[0].length, max);\n    naf[a4] = new Array(max);\n    naf[b5] = new Array(max);\n    for (j2 = 0; j2 < max; j2++) {\n      var ja = jsf[0][j2] | 0;\n      var jb = jsf[1][j2] | 0;\n      naf[a4][j2] = index[(ja + 1) * 3 + (jb + 1)];\n      naf[b5][j2] = 0;\n      wnd[a4] = comb;\n    }\n  }\n  var acc = this.jpoint(null, null, null);\n  var tmp = this._wnafT4;\n  for (i4 = max; i4 >= 0; i4--) {\n    var k4 = 0;\n    while (i4 >= 0) {\n      var zero = true;\n      for (j2 = 0; j2 < len; j2++) {\n        tmp[j2] = naf[j2][i4] | 0;\n        if (tmp[j2] !== 0)\n          zero = false;\n      }\n      if (!zero)\n        break;\n      k4++;\n      i4--;\n    }\n    if (i4 >= 0)\n      k4++;\n    acc = acc.dblp(k4);\n    if (i4 < 0)\n      break;\n    for (j2 = 0; j2 < len; j2++) {\n      var z6 = tmp[j2];\n      p3;\n      if (z6 === 0)\n        continue;\n      else if (z6 > 0)\n        p3 = wnd[j2][z6 - 1 >> 1];\n      else if (z6 < 0)\n        p3 = wnd[j2][-z6 - 1 >> 1].neg();\n      if (p3.type === \"affine\")\n        acc = acc.mixedAdd(p3);\n      else\n        acc = acc.add(p3);\n    }\n  }\n  for (i4 = 0; i4 < len; i4++)\n    wnd[i4] = null;\n  if (jacobianResult)\n    return acc;\n  else\n    return acc.toP();\n};\nfunction BasePoint(curve, type) {\n  this.curve = curve;\n  this.type = type;\n  this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\nBasePoint.prototype.eq = function eq() {\n  throw new Error(\"Not implemented\");\n};\nBasePoint.prototype.validate = function validate2() {\n  return this.curve.validate(this);\n};\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n  bytes = utils_1$1.toArray(bytes, enc);\n  var len = this.p.byteLength();\n  if ((bytes[0] === 4 || bytes[0] === 6 || bytes[0] === 7) && bytes.length - 1 === 2 * len) {\n    if (bytes[0] === 6)\n      assert$1(bytes[bytes.length - 1] % 2 === 0);\n    else if (bytes[0] === 7)\n      assert$1(bytes[bytes.length - 1] % 2 === 1);\n    var res = this.point(\n      bytes.slice(1, 1 + len),\n      bytes.slice(1 + len, 1 + 2 * len)\n    );\n    return res;\n  } else if ((bytes[0] === 2 || bytes[0] === 3) && bytes.length - 1 === len) {\n    return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 3);\n  }\n  throw new Error(\"Unknown point format\");\n};\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n  return this.encode(enc, true);\n};\nBasePoint.prototype._encode = function _encode(compact) {\n  var len = this.curve.p.byteLength();\n  var x6 = this.getX().toArray(\"be\", len);\n  if (compact)\n    return [this.getY().isEven() ? 2 : 3].concat(x6);\n  return [4].concat(x6, this.getY().toArray(\"be\", len));\n};\nBasePoint.prototype.encode = function encode3(enc, compact) {\n  return utils_1$1.encode(this._encode(compact), enc);\n};\nBasePoint.prototype.precompute = function precompute(power) {\n  if (this.precomputed)\n    return this;\n  var precomputed = {\n    doubles: null,\n    naf: null,\n    beta: null\n  };\n  precomputed.naf = this._getNAFPoints(8);\n  precomputed.doubles = this._getDoubles(4, power);\n  precomputed.beta = this._getBeta();\n  this.precomputed = precomputed;\n  return this;\n};\nBasePoint.prototype._hasDoubles = function _hasDoubles(k4) {\n  if (!this.precomputed)\n    return false;\n  var doubles = this.precomputed.doubles;\n  if (!doubles)\n    return false;\n  return doubles.points.length >= Math.ceil((k4.bitLength() + 1) / doubles.step);\n};\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n  if (this.precomputed && this.precomputed.doubles)\n    return this.precomputed.doubles;\n  var doubles = [this];\n  var acc = this;\n  for (var i4 = 0; i4 < power; i4 += step) {\n    for (var j2 = 0; j2 < step; j2++)\n      acc = acc.dbl();\n    doubles.push(acc);\n  }\n  return {\n    step,\n    points: doubles\n  };\n};\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n  if (this.precomputed && this.precomputed.naf)\n    return this.precomputed.naf;\n  var res = [this];\n  var max = (1 << wnd) - 1;\n  var dbl3 = max === 1 ? null : this.dbl();\n  for (var i4 = 1; i4 < max; i4++)\n    res[i4] = res[i4 - 1].add(dbl3);\n  return {\n    wnd,\n    points: res\n  };\n};\nBasePoint.prototype._getBeta = function _getBeta() {\n  return null;\n};\nBasePoint.prototype.dblp = function dblp(k4) {\n  var r4 = this;\n  for (var i4 = 0; i4 < k4; i4++)\n    r4 = r4.dbl();\n  return r4;\n};\nvar inherits_browser = createCommonjsModule(function(module) {\n  if (typeof Object.create === \"function\") {\n    module.exports = function inherits(ctor, superCtor) {\n      if (superCtor) {\n        ctor.super_ = superCtor;\n        ctor.prototype = Object.create(superCtor.prototype, {\n          constructor: {\n            value: ctor,\n            enumerable: false,\n            writable: true,\n            configurable: true\n          }\n        });\n      }\n    };\n  } else {\n    module.exports = function inherits(ctor, superCtor) {\n      if (superCtor) {\n        ctor.super_ = superCtor;\n        var TempCtor = function() {\n        };\n        TempCtor.prototype = superCtor.prototype;\n        ctor.prototype = new TempCtor();\n        ctor.prototype.constructor = ctor;\n      }\n    };\n  }\n});\nvar assert$2 = utils_1$1.assert;\nfunction ShortCurve(conf) {\n  base.call(this, \"short\", conf);\n  this.a = new import_bn2.default(conf.a, 16).toRed(this.red);\n  this.b = new import_bn2.default(conf.b, 16).toRed(this.red);\n  this.tinv = this.two.redInvm();\n  this.zeroA = this.a.fromRed().cmpn(0) === 0;\n  this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n  this.endo = this._getEndomorphism(conf);\n  this._endoWnafT1 = new Array(4);\n  this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n  if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n    return;\n  var beta;\n  var lambda;\n  if (conf.beta) {\n    beta = new import_bn2.default(conf.beta, 16).toRed(this.red);\n  } else {\n    var betas = this._getEndoRoots(this.p);\n    beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n    beta = beta.toRed(this.red);\n  }\n  if (conf.lambda) {\n    lambda = new import_bn2.default(conf.lambda, 16);\n  } else {\n    var lambdas = this._getEndoRoots(this.n);\n    if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n      lambda = lambdas[0];\n    } else {\n      lambda = lambdas[1];\n      assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n    }\n  }\n  var basis;\n  if (conf.basis) {\n    basis = conf.basis.map(function(vec) {\n      return {\n        a: new import_bn2.default(vec.a, 16),\n        b: new import_bn2.default(vec.b, 16)\n      };\n    });\n  } else {\n    basis = this._getEndoBasis(lambda);\n  }\n  return {\n    beta,\n    lambda,\n    basis\n  };\n};\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n  var red = num === this.p ? this.red : import_bn2.default.mont(num);\n  var tinv = new import_bn2.default(2).toRed(red).redInvm();\n  var ntinv = tinv.redNeg();\n  var s3 = new import_bn2.default(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n  var l1 = ntinv.redAdd(s3).fromRed();\n  var l22 = ntinv.redSub(s3).fromRed();\n  return [l1, l22];\n};\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n  var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n  var u3 = lambda;\n  var v5 = this.n.clone();\n  var x1 = new import_bn2.default(1);\n  var y1 = new import_bn2.default(0);\n  var x22 = new import_bn2.default(0);\n  var y22 = new import_bn2.default(1);\n  var a0;\n  var b0;\n  var a1;\n  var b1;\n  var a22;\n  var b22;\n  var prevR;\n  var i4 = 0;\n  var r4;\n  var x6;\n  while (u3.cmpn(0) !== 0) {\n    var q3 = v5.div(u3);\n    r4 = v5.sub(q3.mul(u3));\n    x6 = x22.sub(q3.mul(x1));\n    var y6 = y22.sub(q3.mul(y1));\n    if (!a1 && r4.cmp(aprxSqrt) < 0) {\n      a0 = prevR.neg();\n      b0 = x1;\n      a1 = r4.neg();\n      b1 = x6;\n    } else if (a1 && ++i4 === 2) {\n      break;\n    }\n    prevR = r4;\n    v5 = u3;\n    u3 = r4;\n    x22 = x1;\n    x1 = x6;\n    y22 = y1;\n    y1 = y6;\n  }\n  a22 = r4.neg();\n  b22 = x6;\n  var len1 = a1.sqr().add(b1.sqr());\n  var len2 = a22.sqr().add(b22.sqr());\n  if (len2.cmp(len1) >= 0) {\n    a22 = a0;\n    b22 = b0;\n  }\n  if (a1.negative) {\n    a1 = a1.neg();\n    b1 = b1.neg();\n  }\n  if (a22.negative) {\n    a22 = a22.neg();\n    b22 = b22.neg();\n  }\n  return [\n    { a: a1, b: b1 },\n    { a: a22, b: b22 }\n  ];\n};\nShortCurve.prototype._endoSplit = function _endoSplit(k4) {\n  var basis = this.endo.basis;\n  var v1 = basis[0];\n  var v22 = basis[1];\n  var c1 = v22.b.mul(k4).divRound(this.n);\n  var c22 = v1.b.neg().mul(k4).divRound(this.n);\n  var p1 = c1.mul(v1.a);\n  var p22 = c22.mul(v22.a);\n  var q1 = c1.mul(v1.b);\n  var q22 = c22.mul(v22.b);\n  var k1 = k4.sub(p1).sub(p22);\n  var k22 = q1.add(q22).neg();\n  return { k1, k2: k22 };\n};\nShortCurve.prototype.pointFromX = function pointFromX(x6, odd) {\n  x6 = new import_bn2.default(x6, 16);\n  if (!x6.red)\n    x6 = x6.toRed(this.red);\n  var y22 = x6.redSqr().redMul(x6).redIAdd(x6.redMul(this.a)).redIAdd(this.b);\n  var y6 = y22.redSqrt();\n  if (y6.redSqr().redSub(y22).cmp(this.zero) !== 0)\n    throw new Error(\"invalid point\");\n  var isOdd = y6.fromRed().isOdd();\n  if (odd && !isOdd || !odd && isOdd)\n    y6 = y6.redNeg();\n  return this.point(x6, y6);\n};\nShortCurve.prototype.validate = function validate3(point3) {\n  if (point3.inf)\n    return true;\n  var x6 = point3.x;\n  var y6 = point3.y;\n  var ax = this.a.redMul(x6);\n  var rhs = x6.redSqr().redMul(x6).redIAdd(ax).redIAdd(this.b);\n  return y6.redSqr().redISub(rhs).cmpn(0) === 0;\n};\nShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n  var npoints = this._endoWnafT1;\n  var ncoeffs = this._endoWnafT2;\n  for (var i4 = 0; i4 < points.length; i4++) {\n    var split = this._endoSplit(coeffs[i4]);\n    var p3 = points[i4];\n    var beta = p3._getBeta();\n    if (split.k1.negative) {\n      split.k1.ineg();\n      p3 = p3.neg(true);\n    }\n    if (split.k2.negative) {\n      split.k2.ineg();\n      beta = beta.neg(true);\n    }\n    npoints[i4 * 2] = p3;\n    npoints[i4 * 2 + 1] = beta;\n    ncoeffs[i4 * 2] = split.k1;\n    ncoeffs[i4 * 2 + 1] = split.k2;\n  }\n  var res = this._wnafMulAdd(1, npoints, ncoeffs, i4 * 2, jacobianResult);\n  for (var j2 = 0; j2 < i4 * 2; j2++) {\n    npoints[j2] = null;\n    ncoeffs[j2] = null;\n  }\n  return res;\n};\nfunction Point(curve, x6, y6, isRed) {\n  base.BasePoint.call(this, curve, \"affine\");\n  if (x6 === null && y6 === null) {\n    this.x = null;\n    this.y = null;\n    this.inf = true;\n  } else {\n    this.x = new import_bn2.default(x6, 16);\n    this.y = new import_bn2.default(y6, 16);\n    if (isRed) {\n      this.x.forceRed(this.curve.red);\n      this.y.forceRed(this.curve.red);\n    }\n    if (!this.x.red)\n      this.x = this.x.toRed(this.curve.red);\n    if (!this.y.red)\n      this.y = this.y.toRed(this.curve.red);\n    this.inf = false;\n  }\n}\ninherits_browser(Point, base.BasePoint);\nShortCurve.prototype.point = function point2(x6, y6, isRed) {\n  return new Point(this, x6, y6, isRed);\n};\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n  return Point.fromJSON(this, obj, red);\n};\nPoint.prototype._getBeta = function _getBeta2() {\n  if (!this.curve.endo)\n    return;\n  var pre = this.precomputed;\n  if (pre && pre.beta)\n    return pre.beta;\n  var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n  if (pre) {\n    var curve = this.curve;\n    var endoMul = function(p3) {\n      return curve.point(p3.x.redMul(curve.endo.beta), p3.y);\n    };\n    pre.beta = beta;\n    beta.precomputed = {\n      beta: null,\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(endoMul)\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(endoMul)\n      }\n    };\n  }\n  return beta;\n};\nPoint.prototype.toJSON = function toJSON() {\n  if (!this.precomputed)\n    return [this.x, this.y];\n  return [this.x, this.y, this.precomputed && {\n    doubles: this.precomputed.doubles && {\n      step: this.precomputed.doubles.step,\n      points: this.precomputed.doubles.points.slice(1)\n    },\n    naf: this.precomputed.naf && {\n      wnd: this.precomputed.naf.wnd,\n      points: this.precomputed.naf.points.slice(1)\n    }\n  }];\n};\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n  if (typeof obj === \"string\")\n    obj = JSON.parse(obj);\n  var res = curve.point(obj[0], obj[1], red);\n  if (!obj[2])\n    return res;\n  function obj2point(obj2) {\n    return curve.point(obj2[0], obj2[1], red);\n  }\n  var pre = obj[2];\n  res.precomputed = {\n    beta: null,\n    doubles: pre.doubles && {\n      step: pre.doubles.step,\n      points: [res].concat(pre.doubles.points.map(obj2point))\n    },\n    naf: pre.naf && {\n      wnd: pre.naf.wnd,\n      points: [res].concat(pre.naf.points.map(obj2point))\n    }\n  };\n  return res;\n};\nPoint.prototype.inspect = function inspect() {\n  if (this.isInfinity())\n    return \"<EC Point Infinity>\";\n  return \"<EC Point x: \" + this.x.fromRed().toString(16, 2) + \" y: \" + this.y.fromRed().toString(16, 2) + \">\";\n};\nPoint.prototype.isInfinity = function isInfinity() {\n  return this.inf;\n};\nPoint.prototype.add = function add(p3) {\n  if (this.inf)\n    return p3;\n  if (p3.inf)\n    return this;\n  if (this.eq(p3))\n    return this.dbl();\n  if (this.neg().eq(p3))\n    return this.curve.point(null, null);\n  if (this.x.cmp(p3.x) === 0)\n    return this.curve.point(null, null);\n  var c5 = this.y.redSub(p3.y);\n  if (c5.cmpn(0) !== 0)\n    c5 = c5.redMul(this.x.redSub(p3.x).redInvm());\n  var nx = c5.redSqr().redISub(this.x).redISub(p3.x);\n  var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\nPoint.prototype.dbl = function dbl() {\n  if (this.inf)\n    return this;\n  var ys1 = this.y.redAdd(this.y);\n  if (ys1.cmpn(0) === 0)\n    return this.curve.point(null, null);\n  var a4 = this.curve.a;\n  var x22 = this.x.redSqr();\n  var dyinv = ys1.redInvm();\n  var c5 = x22.redAdd(x22).redIAdd(x22).redIAdd(a4).redMul(dyinv);\n  var nx = c5.redSqr().redISub(this.x.redAdd(this.x));\n  var ny = c5.redMul(this.x.redSub(nx)).redISub(this.y);\n  return this.curve.point(nx, ny);\n};\nPoint.prototype.getX = function getX() {\n  return this.x.fromRed();\n};\nPoint.prototype.getY = function getY() {\n  return this.y.fromRed();\n};\nPoint.prototype.mul = function mul(k4) {\n  k4 = new import_bn2.default(k4, 16);\n  if (this.isInfinity())\n    return this;\n  else if (this._hasDoubles(k4))\n    return this.curve._fixedNafMul(this, k4);\n  else if (this.curve.endo)\n    return this.curve._endoWnafMulAdd([this], [k4]);\n  else\n    return this.curve._wnafMul(this, k4);\n};\nPoint.prototype.mulAdd = function mulAdd(k1, p22, k22) {\n  var points = [this, p22];\n  var coeffs = [k1, k22];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\nPoint.prototype.jmulAdd = function jmulAdd(k1, p22, k22) {\n  var points = [this, p22];\n  var coeffs = [k1, k22];\n  if (this.curve.endo)\n    return this.curve._endoWnafMulAdd(points, coeffs, true);\n  else\n    return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\nPoint.prototype.eq = function eq2(p3) {\n  return this === p3 || this.inf === p3.inf && (this.inf || this.x.cmp(p3.x) === 0 && this.y.cmp(p3.y) === 0);\n};\nPoint.prototype.neg = function neg(_precompute) {\n  if (this.inf)\n    return this;\n  var res = this.curve.point(this.x, this.y.redNeg());\n  if (_precompute && this.precomputed) {\n    var pre = this.precomputed;\n    var negate = function(p3) {\n      return p3.neg();\n    };\n    res.precomputed = {\n      naf: pre.naf && {\n        wnd: pre.naf.wnd,\n        points: pre.naf.points.map(negate)\n      },\n      doubles: pre.doubles && {\n        step: pre.doubles.step,\n        points: pre.doubles.points.map(negate)\n      }\n    };\n  }\n  return res;\n};\nPoint.prototype.toJ = function toJ() {\n  if (this.inf)\n    return this.curve.jpoint(null, null, null);\n  var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n  return res;\n};\nfunction JPoint(curve, x6, y6, z6) {\n  base.BasePoint.call(this, curve, \"jacobian\");\n  if (x6 === null && y6 === null && z6 === null) {\n    this.x = this.curve.one;\n    this.y = this.curve.one;\n    this.z = new import_bn2.default(0);\n  } else {\n    this.x = new import_bn2.default(x6, 16);\n    this.y = new import_bn2.default(y6, 16);\n    this.z = new import_bn2.default(z6, 16);\n  }\n  if (!this.x.red)\n    this.x = this.x.toRed(this.curve.red);\n  if (!this.y.red)\n    this.y = this.y.toRed(this.curve.red);\n  if (!this.z.red)\n    this.z = this.z.toRed(this.curve.red);\n  this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\nShortCurve.prototype.jpoint = function jpoint(x6, y6, z6) {\n  return new JPoint(this, x6, y6, z6);\n};\nJPoint.prototype.toP = function toP() {\n  if (this.isInfinity())\n    return this.curve.point(null, null);\n  var zinv = this.z.redInvm();\n  var zinv2 = zinv.redSqr();\n  var ax = this.x.redMul(zinv2);\n  var ay = this.y.redMul(zinv2).redMul(zinv);\n  return this.curve.point(ax, ay);\n};\nJPoint.prototype.neg = function neg2() {\n  return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\nJPoint.prototype.add = function add2(p3) {\n  if (this.isInfinity())\n    return p3;\n  if (p3.isInfinity())\n    return this;\n  var pz2 = p3.z.redSqr();\n  var z22 = this.z.redSqr();\n  var u1 = this.x.redMul(pz2);\n  var u22 = p3.x.redMul(z22);\n  var s1 = this.y.redMul(pz2.redMul(p3.z));\n  var s22 = p3.y.redMul(z22.redMul(this.z));\n  var h5 = u1.redSub(u22);\n  var r4 = s1.redSub(s22);\n  if (h5.cmpn(0) === 0) {\n    if (r4.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n  var h22 = h5.redSqr();\n  var h32 = h22.redMul(h5);\n  var v5 = u1.redMul(h22);\n  var nx = r4.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n  var ny = r4.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n  var nz = this.z.redMul(p3.z).redMul(h5);\n  return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.mixedAdd = function mixedAdd(p3) {\n  if (this.isInfinity())\n    return p3.toJ();\n  if (p3.isInfinity())\n    return this;\n  var z22 = this.z.redSqr();\n  var u1 = this.x;\n  var u22 = p3.x.redMul(z22);\n  var s1 = this.y;\n  var s22 = p3.y.redMul(z22).redMul(this.z);\n  var h5 = u1.redSub(u22);\n  var r4 = s1.redSub(s22);\n  if (h5.cmpn(0) === 0) {\n    if (r4.cmpn(0) !== 0)\n      return this.curve.jpoint(null, null, null);\n    else\n      return this.dbl();\n  }\n  var h22 = h5.redSqr();\n  var h32 = h22.redMul(h5);\n  var v5 = u1.redMul(h22);\n  var nx = r4.redSqr().redIAdd(h32).redISub(v5).redISub(v5);\n  var ny = r4.redMul(v5.redISub(nx)).redISub(s1.redMul(h32));\n  var nz = this.z.redMul(h5);\n  return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.dblp = function dblp2(pow) {\n  if (pow === 0)\n    return this;\n  if (this.isInfinity())\n    return this;\n  if (!pow)\n    return this.dbl();\n  var i4;\n  if (this.curve.zeroA || this.curve.threeA) {\n    var r4 = this;\n    for (i4 = 0; i4 < pow; i4++)\n      r4 = r4.dbl();\n    return r4;\n  }\n  var a4 = this.curve.a;\n  var tinv = this.curve.tinv;\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n  var jyd = jy.redAdd(jy);\n  for (i4 = 0; i4 < pow; i4++) {\n    var jx2 = jx.redSqr();\n    var jyd2 = jyd.redSqr();\n    var jyd4 = jyd2.redSqr();\n    var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a4.redMul(jz4));\n    var t1 = jx.redMul(jyd2);\n    var nx = c5.redSqr().redISub(t1.redAdd(t1));\n    var t2 = t1.redISub(nx);\n    var dny = c5.redMul(t2);\n    dny = dny.redIAdd(dny).redISub(jyd4);\n    var nz = jyd.redMul(jz);\n    if (i4 + 1 < pow)\n      jz4 = jz4.redMul(jyd4);\n    jx = nx;\n    jz = nz;\n    jyd = dny;\n  }\n  return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\nJPoint.prototype.dbl = function dbl2() {\n  if (this.isInfinity())\n    return this;\n  if (this.curve.zeroA)\n    return this._zeroDbl();\n  else if (this.curve.threeA)\n    return this._threeDbl();\n  else\n    return this._dbl();\n};\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n  var nx;\n  var ny;\n  var nz;\n  if (this.zOne) {\n    var xx = this.x.redSqr();\n    var yy = this.y.redSqr();\n    var yyyy = yy.redSqr();\n    var s3 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s3 = s3.redIAdd(s3);\n    var m2 = xx.redAdd(xx).redIAdd(xx);\n    var t = m2.redSqr().redISub(s3).redISub(s3);\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    nx = t;\n    ny = m2.redMul(s3.redISub(t)).redISub(yyyy8);\n    nz = this.y.redAdd(this.y);\n  } else {\n    var a4 = this.x.redSqr();\n    var b5 = this.y.redSqr();\n    var c5 = b5.redSqr();\n    var d3 = this.x.redAdd(b5).redSqr().redISub(a4).redISub(c5);\n    d3 = d3.redIAdd(d3);\n    var e2 = a4.redAdd(a4).redIAdd(a4);\n    var f4 = e2.redSqr();\n    var c8 = c5.redIAdd(c5);\n    c8 = c8.redIAdd(c8);\n    c8 = c8.redIAdd(c8);\n    nx = f4.redISub(d3).redISub(d3);\n    ny = e2.redMul(d3.redISub(nx)).redISub(c8);\n    nz = this.y.redMul(this.z);\n    nz = nz.redIAdd(nz);\n  }\n  return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype._threeDbl = function _threeDbl() {\n  var nx;\n  var ny;\n  var nz;\n  if (this.zOne) {\n    var xx = this.x.redSqr();\n    var yy = this.y.redSqr();\n    var yyyy = yy.redSqr();\n    var s3 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n    s3 = s3.redIAdd(s3);\n    var m2 = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n    var t = m2.redSqr().redISub(s3).redISub(s3);\n    nx = t;\n    var yyyy8 = yyyy.redIAdd(yyyy);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    yyyy8 = yyyy8.redIAdd(yyyy8);\n    ny = m2.redMul(s3.redISub(t)).redISub(yyyy8);\n    nz = this.y.redAdd(this.y);\n  } else {\n    var delta = this.z.redSqr();\n    var gamma = this.y.redSqr();\n    var beta = this.x.redMul(gamma);\n    var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n    alpha = alpha.redAdd(alpha).redIAdd(alpha);\n    var beta4 = beta.redIAdd(beta);\n    beta4 = beta4.redIAdd(beta4);\n    var beta8 = beta4.redAdd(beta4);\n    nx = alpha.redSqr().redISub(beta8);\n    nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n    var ggamma8 = gamma.redSqr();\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ggamma8 = ggamma8.redIAdd(ggamma8);\n    ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n  }\n  return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype._dbl = function _dbl() {\n  var a4 = this.curve.a;\n  var jx = this.x;\n  var jy = this.y;\n  var jz = this.z;\n  var jz4 = jz.redSqr().redSqr();\n  var jx2 = jx.redSqr();\n  var jy2 = jy.redSqr();\n  var c5 = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a4.redMul(jz4));\n  var jxd4 = jx.redAdd(jx);\n  jxd4 = jxd4.redIAdd(jxd4);\n  var t1 = jxd4.redMul(jy2);\n  var nx = c5.redSqr().redISub(t1.redAdd(t1));\n  var t2 = t1.redISub(nx);\n  var jyd8 = jy2.redSqr();\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  jyd8 = jyd8.redIAdd(jyd8);\n  var ny = c5.redMul(t2).redISub(jyd8);\n  var nz = jy.redAdd(jy).redMul(jz);\n  return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.trpl = function trpl() {\n  if (!this.curve.zeroA)\n    return this.dbl().add(this);\n  var xx = this.x.redSqr();\n  var yy = this.y.redSqr();\n  var zz = this.z.redSqr();\n  var yyyy = yy.redSqr();\n  var m2 = xx.redAdd(xx).redIAdd(xx);\n  var mm = m2.redSqr();\n  var e2 = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n  e2 = e2.redIAdd(e2);\n  e2 = e2.redAdd(e2).redIAdd(e2);\n  e2 = e2.redISub(mm);\n  var ee3 = e2.redSqr();\n  var t = yyyy.redIAdd(yyyy);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  t = t.redIAdd(t);\n  var u3 = m2.redIAdd(e2).redSqr().redISub(mm).redISub(ee3).redISub(t);\n  var yyu4 = yy.redMul(u3);\n  yyu4 = yyu4.redIAdd(yyu4);\n  yyu4 = yyu4.redIAdd(yyu4);\n  var nx = this.x.redMul(ee3).redISub(yyu4);\n  nx = nx.redIAdd(nx);\n  nx = nx.redIAdd(nx);\n  var ny = this.y.redMul(u3.redMul(t.redISub(u3)).redISub(e2.redMul(ee3)));\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  ny = ny.redIAdd(ny);\n  var nz = this.z.redAdd(e2).redSqr().redISub(zz).redISub(ee3);\n  return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.mul = function mul2(k4, kbase) {\n  k4 = new import_bn2.default(k4, kbase);\n  return this.curve._wnafMul(this, k4);\n};\nJPoint.prototype.eq = function eq3(p3) {\n  if (p3.type === \"affine\")\n    return this.eq(p3.toJ());\n  if (this === p3)\n    return true;\n  var z22 = this.z.redSqr();\n  var pz2 = p3.z.redSqr();\n  if (this.x.redMul(pz2).redISub(p3.x.redMul(z22)).cmpn(0) !== 0)\n    return false;\n  var z32 = z22.redMul(this.z);\n  var pz3 = pz2.redMul(p3.z);\n  return this.y.redMul(pz3).redISub(p3.y.redMul(z32)).cmpn(0) === 0;\n};\nJPoint.prototype.eqXToP = function eqXToP(x6) {\n  var zs2 = this.z.redSqr();\n  var rx = x6.toRed(this.curve.red).redMul(zs2);\n  if (this.x.cmp(rx) === 0)\n    return true;\n  var xc = x6.clone();\n  var t = this.curve.redN.redMul(zs2);\n  for (; ; ) {\n    xc.iadd(this.curve.n);\n    if (xc.cmp(this.curve.p) >= 0)\n      return false;\n    rx.redIAdd(t);\n    if (this.x.cmp(rx) === 0)\n      return true;\n  }\n};\nJPoint.prototype.inspect = function inspect2() {\n  if (this.isInfinity())\n    return \"<EC JPoint Infinity>\";\n  return \"<EC JPoint x: \" + this.x.toString(16, 2) + \" y: \" + this.y.toString(16, 2) + \" z: \" + this.z.toString(16, 2) + \">\";\n};\nJPoint.prototype.isInfinity = function isInfinity2() {\n  return this.z.cmpn(0) === 0;\n};\nvar curve_1 = createCommonjsModule(function(module, exports) {\n  \"use strict\";\n  var curve = exports;\n  curve.base = base;\n  curve.short = short_1;\n  curve.mont = /*RicMoo:ethers:require(./mont)*/\n  null;\n  curve.edwards = /*RicMoo:ethers:require(./edwards)*/\n  null;\n});\nvar curves_1 = createCommonjsModule(function(module, exports) {\n  \"use strict\";\n  var curves = exports;\n  var assert2 = utils_1$1.assert;\n  function PresetCurve(options) {\n    if (options.type === \"short\")\n      this.curve = new curve_1.short(options);\n    else if (options.type === \"edwards\")\n      this.curve = new curve_1.edwards(options);\n    else\n      this.curve = new curve_1.mont(options);\n    this.g = this.curve.g;\n    this.n = this.curve.n;\n    this.hash = options.hash;\n    assert2(this.g.validate(), \"Invalid curve\");\n    assert2(this.g.mul(this.n).isInfinity(), \"Invalid curve, G*N != O\");\n  }\n  curves.PresetCurve = PresetCurve;\n  function defineCurve(name2, options) {\n    Object.defineProperty(curves, name2, {\n      configurable: true,\n      enumerable: true,\n      get: function() {\n        var curve = new PresetCurve(options);\n        Object.defineProperty(curves, name2, {\n          configurable: true,\n          enumerable: true,\n          value: curve\n        });\n        return curve;\n      }\n    });\n  }\n  defineCurve(\"p192\", {\n    type: \"short\",\n    prime: \"p192\",\n    p: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",\n    a: \"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",\n    b: \"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",\n    n: \"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",\n    hash: import_hash.default.sha256,\n    gRed: false,\n    g: [\n      \"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\n      \"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"\n    ]\n  });\n  defineCurve(\"p224\", {\n    type: \"short\",\n    prime: \"p224\",\n    p: \"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",\n    a: \"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",\n    b: \"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",\n    n: \"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",\n    hash: import_hash.default.sha256,\n    gRed: false,\n    g: [\n      \"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\n      \"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"\n    ]\n  });\n  defineCurve(\"p256\", {\n    type: \"short\",\n    prime: null,\n    p: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",\n    a: \"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",\n    b: \"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",\n    n: \"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",\n    hash: import_hash.default.sha256,\n    gRed: false,\n    g: [\n      \"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\n      \"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"\n    ]\n  });\n  defineCurve(\"p384\", {\n    type: \"short\",\n    prime: null,\n    p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",\n    a: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",\n    b: \"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",\n    n: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",\n    hash: import_hash.default.sha384,\n    gRed: false,\n    g: [\n      \"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\n      \"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"\n    ]\n  });\n  defineCurve(\"p521\", {\n    type: \"short\",\n    prime: null,\n    p: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",\n    a: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",\n    b: \"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",\n    n: \"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",\n    hash: import_hash.default.sha512,\n    gRed: false,\n    g: [\n      \"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\n      \"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"\n    ]\n  });\n  defineCurve(\"curve25519\", {\n    type: \"mont\",\n    prime: \"p25519\",\n    p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n    a: \"76d06\",\n    b: \"1\",\n    n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n    hash: import_hash.default.sha256,\n    gRed: false,\n    g: [\n      \"9\"\n    ]\n  });\n  defineCurve(\"ed25519\", {\n    type: \"edwards\",\n    prime: \"p25519\",\n    p: \"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",\n    a: \"-1\",\n    c: \"1\",\n    // -121665 * (121666^(-1)) (mod P)\n    d: \"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",\n    n: \"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",\n    hash: import_hash.default.sha256,\n    gRed: false,\n    g: [\n      \"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\n      // 4/5\n      \"6666666666666666666666666666666666666666666666666666666666666658\"\n    ]\n  });\n  var pre;\n  try {\n    pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/\n    null.crash();\n  } catch (e2) {\n    pre = void 0;\n  }\n  defineCurve(\"secp256k1\", {\n    type: \"short\",\n    prime: \"k256\",\n    p: \"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",\n    a: \"0\",\n    b: \"7\",\n    n: \"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",\n    h: \"1\",\n    hash: import_hash.default.sha256,\n    // Precomputed endomorphism\n    beta: \"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",\n    lambda: \"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",\n    basis: [\n      {\n        a: \"3086d221a7d46bcde86c90e49284eb15\",\n        b: \"-e4437ed6010e88286f547fa90abfe4c3\"\n      },\n      {\n        a: \"114ca50f7a8e2f3f657c1108d9d44cfd8\",\n        b: \"3086d221a7d46bcde86c90e49284eb15\"\n      }\n    ],\n    gRed: false,\n    g: [\n      \"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\n      \"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",\n      pre\n    ]\n  });\n});\nfunction HmacDRBG(options) {\n  if (!(this instanceof HmacDRBG))\n    return new HmacDRBG(options);\n  this.hash = options.hash;\n  this.predResist = !!options.predResist;\n  this.outLen = this.hash.outSize;\n  this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n  this._reseed = null;\n  this.reseedInterval = null;\n  this.K = null;\n  this.V = null;\n  var entropy = utils_1.toArray(options.entropy, options.entropyEnc || \"hex\");\n  var nonce = utils_1.toArray(options.nonce, options.nonceEnc || \"hex\");\n  var pers = utils_1.toArray(options.pers, options.persEnc || \"hex\");\n  minimalisticAssert(\n    entropy.length >= this.minEntropy / 8,\n    \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\"\n  );\n  this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n  var seed = entropy.concat(nonce).concat(pers);\n  this.K = new Array(this.outLen / 8);\n  this.V = new Array(this.outLen / 8);\n  for (var i4 = 0; i4 < this.V.length; i4++) {\n    this.K[i4] = 0;\n    this.V[i4] = 1;\n  }\n  this._update(seed);\n  this._reseed = 1;\n  this.reseedInterval = 281474976710656;\n};\nHmacDRBG.prototype._hmac = function hmac() {\n  return new import_hash.default.hmac(this.hash, this.K);\n};\nHmacDRBG.prototype._update = function update(seed) {\n  var kmac = this._hmac().update(this.V).update([0]);\n  if (seed)\n    kmac = kmac.update(seed);\n  this.K = kmac.digest();\n  this.V = this._hmac().update(this.V).digest();\n  if (!seed)\n    return;\n  this.K = this._hmac().update(this.V).update([1]).update(seed).digest();\n  this.V = this._hmac().update(this.V).digest();\n};\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add3, addEnc) {\n  if (typeof entropyEnc !== \"string\") {\n    addEnc = add3;\n    add3 = entropyEnc;\n    entropyEnc = null;\n  }\n  entropy = utils_1.toArray(entropy, entropyEnc);\n  add3 = utils_1.toArray(add3, addEnc);\n  minimalisticAssert(\n    entropy.length >= this.minEntropy / 8,\n    \"Not enough entropy. Minimum is: \" + this.minEntropy + \" bits\"\n  );\n  this._update(entropy.concat(add3 || []));\n  this._reseed = 1;\n};\nHmacDRBG.prototype.generate = function generate(len, enc, add3, addEnc) {\n  if (this._reseed > this.reseedInterval)\n    throw new Error(\"Reseed is required\");\n  if (typeof enc !== \"string\") {\n    addEnc = add3;\n    add3 = enc;\n    enc = null;\n  }\n  if (add3) {\n    add3 = utils_1.toArray(add3, addEnc || \"hex\");\n    this._update(add3);\n  }\n  var temp = [];\n  while (temp.length < len) {\n    this.V = this._hmac().update(this.V).digest();\n    temp = temp.concat(this.V);\n  }\n  var res = temp.slice(0, len);\n  this._update(add3);\n  this._reseed++;\n  return utils_1.encode(res, enc);\n};\nvar assert$3 = utils_1$1.assert;\nfunction KeyPair(ec2, options) {\n  this.ec = ec2;\n  this.priv = null;\n  this.pub = null;\n  if (options.priv)\n    this._importPrivate(options.priv, options.privEnc);\n  if (options.pub)\n    this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\nKeyPair.fromPublic = function fromPublic(ec2, pub, enc) {\n  if (pub instanceof KeyPair)\n    return pub;\n  return new KeyPair(ec2, {\n    pub,\n    pubEnc: enc\n  });\n};\nKeyPair.fromPrivate = function fromPrivate(ec2, priv, enc) {\n  if (priv instanceof KeyPair)\n    return priv;\n  return new KeyPair(ec2, {\n    priv,\n    privEnc: enc\n  });\n};\nKeyPair.prototype.validate = function validate4() {\n  var pub = this.getPublic();\n  if (pub.isInfinity())\n    return { result: false, reason: \"Invalid public key\" };\n  if (!pub.validate())\n    return { result: false, reason: \"Public key is not a point\" };\n  if (!pub.mul(this.ec.curve.n).isInfinity())\n    return { result: false, reason: \"Public key * N != O\" };\n  return { result: true, reason: null };\n};\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n  if (typeof compact === \"string\") {\n    enc = compact;\n    compact = null;\n  }\n  if (!this.pub)\n    this.pub = this.ec.g.mul(this.priv);\n  if (!enc)\n    return this.pub;\n  return this.pub.encode(enc, compact);\n};\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n  if (enc === \"hex\")\n    return this.priv.toString(16, 2);\n  else\n    return this.priv;\n};\nKeyPair.prototype._importPrivate = function _importPrivate(key2, enc) {\n  this.priv = new import_bn2.default(key2, enc || 16);\n  this.priv = this.priv.umod(this.ec.curve.n);\n};\nKeyPair.prototype._importPublic = function _importPublic(key2, enc) {\n  if (key2.x || key2.y) {\n    if (this.ec.curve.type === \"mont\") {\n      assert$3(key2.x, \"Need x coordinate\");\n    } else if (this.ec.curve.type === \"short\" || this.ec.curve.type === \"edwards\") {\n      assert$3(key2.x && key2.y, \"Need both x and y coordinate\");\n    }\n    this.pub = this.ec.curve.point(key2.x, key2.y);\n    return;\n  }\n  this.pub = this.ec.curve.decodePoint(key2, enc);\n};\nKeyPair.prototype.derive = function derive(pub) {\n  if (!pub.validate()) {\n    assert$3(pub.validate(), \"public point not validated\");\n  }\n  return pub.mul(this.priv).getX();\n};\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n  return this.ec.sign(msg, this, enc, options);\n};\nKeyPair.prototype.verify = function verify(msg, signature2) {\n  return this.ec.verify(msg, signature2, this);\n};\nKeyPair.prototype.inspect = function inspect3() {\n  return \"<Key priv: \" + (this.priv && this.priv.toString(16, 2)) + \" pub: \" + (this.pub && this.pub.inspect()) + \" >\";\n};\nvar assert$4 = utils_1$1.assert;\nfunction Signature(options, enc) {\n  if (options instanceof Signature)\n    return options;\n  if (this._importDER(options, enc))\n    return;\n  assert$4(options.r && options.s, \"Signature without r or s\");\n  this.r = new import_bn2.default(options.r, 16);\n  this.s = new import_bn2.default(options.s, 16);\n  if (options.recoveryParam === void 0)\n    this.recoveryParam = null;\n  else\n    this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\nfunction Position() {\n  this.place = 0;\n}\nfunction getLength(buf, p3) {\n  var initial = buf[p3.place++];\n  if (!(initial & 128)) {\n    return initial;\n  }\n  var octetLen = initial & 15;\n  if (octetLen === 0 || octetLen > 4) {\n    return false;\n  }\n  var val = 0;\n  for (var i4 = 0, off = p3.place; i4 < octetLen; i4++, off++) {\n    val <<= 8;\n    val |= buf[off];\n    val >>>= 0;\n  }\n  if (val <= 127) {\n    return false;\n  }\n  p3.place = off;\n  return val;\n}\nfunction rmPadding(buf) {\n  var i4 = 0;\n  var len = buf.length - 1;\n  while (!buf[i4] && !(buf[i4 + 1] & 128) && i4 < len) {\n    i4++;\n  }\n  if (i4 === 0) {\n    return buf;\n  }\n  return buf.slice(i4);\n}\nSignature.prototype._importDER = function _importDER(data, enc) {\n  data = utils_1$1.toArray(data, enc);\n  var p3 = new Position();\n  if (data[p3.place++] !== 48) {\n    return false;\n  }\n  var len = getLength(data, p3);\n  if (len === false) {\n    return false;\n  }\n  if (len + p3.place !== data.length) {\n    return false;\n  }\n  if (data[p3.place++] !== 2) {\n    return false;\n  }\n  var rlen = getLength(data, p3);\n  if (rlen === false) {\n    return false;\n  }\n  var r4 = data.slice(p3.place, rlen + p3.place);\n  p3.place += rlen;\n  if (data[p3.place++] !== 2) {\n    return false;\n  }\n  var slen = getLength(data, p3);\n  if (slen === false) {\n    return false;\n  }\n  if (data.length !== slen + p3.place) {\n    return false;\n  }\n  var s3 = data.slice(p3.place, slen + p3.place);\n  if (r4[0] === 0) {\n    if (r4[1] & 128) {\n      r4 = r4.slice(1);\n    } else {\n      return false;\n    }\n  }\n  if (s3[0] === 0) {\n    if (s3[1] & 128) {\n      s3 = s3.slice(1);\n    } else {\n      return false;\n    }\n  }\n  this.r = new import_bn2.default(r4);\n  this.s = new import_bn2.default(s3);\n  this.recoveryParam = null;\n  return true;\n};\nfunction constructLength(arr, len) {\n  if (len < 128) {\n    arr.push(len);\n    return;\n  }\n  var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n  arr.push(octets | 128);\n  while (--octets) {\n    arr.push(len >>> (octets << 3) & 255);\n  }\n  arr.push(len);\n}\nSignature.prototype.toDER = function toDER(enc) {\n  var r4 = this.r.toArray();\n  var s3 = this.s.toArray();\n  if (r4[0] & 128)\n    r4 = [0].concat(r4);\n  if (s3[0] & 128)\n    s3 = [0].concat(s3);\n  r4 = rmPadding(r4);\n  s3 = rmPadding(s3);\n  while (!s3[0] && !(s3[1] & 128)) {\n    s3 = s3.slice(1);\n  }\n  var arr = [2];\n  constructLength(arr, r4.length);\n  arr = arr.concat(r4);\n  arr.push(2);\n  constructLength(arr, s3.length);\n  var backHalf = arr.concat(s3);\n  var res = [48];\n  constructLength(res, backHalf.length);\n  res = res.concat(backHalf);\n  return utils_1$1.encode(res, enc);\n};\nvar rand = (\n  /*RicMoo:ethers:require(brorand)*/\n  function() {\n    throw new Error(\"unsupported\");\n  }\n);\nvar assert$5 = utils_1$1.assert;\nfunction EC(options) {\n  if (!(this instanceof EC))\n    return new EC(options);\n  if (typeof options === \"string\") {\n    assert$5(\n      Object.prototype.hasOwnProperty.call(curves_1, options),\n      \"Unknown curve \" + options\n    );\n    options = curves_1[options];\n  }\n  if (options instanceof curves_1.PresetCurve)\n    options = { curve: options };\n  this.curve = options.curve.curve;\n  this.n = this.curve.n;\n  this.nh = this.n.ushrn(1);\n  this.g = this.curve.g;\n  this.g = options.curve.g;\n  this.g.precompute(options.curve.n.bitLength() + 1);\n  this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\nEC.prototype.keyPair = function keyPair(options) {\n  return new key(this, options);\n};\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n  return key.fromPrivate(this, priv, enc);\n};\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n  return key.fromPublic(this, pub, enc);\n};\nEC.prototype.genKeyPair = function genKeyPair(options) {\n  if (!options)\n    options = {};\n  var drbg = new hmacDrbg({\n    hash: this.hash,\n    pers: options.pers,\n    persEnc: options.persEnc || \"utf8\",\n    entropy: options.entropy || rand(this.hash.hmacStrength),\n    entropyEnc: options.entropy && options.entropyEnc || \"utf8\",\n    nonce: this.n.toArray()\n  });\n  var bytes = this.n.byteLength();\n  var ns2 = this.n.sub(new import_bn2.default(2));\n  for (; ; ) {\n    var priv = new import_bn2.default(drbg.generate(bytes));\n    if (priv.cmp(ns2) > 0)\n      continue;\n    priv.iaddn(1);\n    return this.keyFromPrivate(priv);\n  }\n};\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n  var delta = msg.byteLength() * 8 - this.n.bitLength();\n  if (delta > 0)\n    msg = msg.ushrn(delta);\n  if (!truncOnly && msg.cmp(this.n) >= 0)\n    return msg.sub(this.n);\n  else\n    return msg;\n};\nEC.prototype.sign = function sign2(msg, key2, enc, options) {\n  if (typeof enc === \"object\") {\n    options = enc;\n    enc = null;\n  }\n  if (!options)\n    options = {};\n  key2 = this.keyFromPrivate(key2, enc);\n  msg = this._truncateToN(new import_bn2.default(msg, 16));\n  var bytes = this.n.byteLength();\n  var bkey = key2.getPrivate().toArray(\"be\", bytes);\n  var nonce = msg.toArray(\"be\", bytes);\n  var drbg = new hmacDrbg({\n    hash: this.hash,\n    entropy: bkey,\n    nonce,\n    pers: options.pers,\n    persEnc: options.persEnc || \"utf8\"\n  });\n  var ns1 = this.n.sub(new import_bn2.default(1));\n  for (var iter = 0; ; iter++) {\n    var k4 = options.k ? options.k(iter) : new import_bn2.default(drbg.generate(this.n.byteLength()));\n    k4 = this._truncateToN(k4, true);\n    if (k4.cmpn(1) <= 0 || k4.cmp(ns1) >= 0)\n      continue;\n    var kp = this.g.mul(k4);\n    if (kp.isInfinity())\n      continue;\n    var kpX = kp.getX();\n    var r4 = kpX.umod(this.n);\n    if (r4.cmpn(0) === 0)\n      continue;\n    var s3 = k4.invm(this.n).mul(r4.mul(key2.getPrivate()).iadd(msg));\n    s3 = s3.umod(this.n);\n    if (s3.cmpn(0) === 0)\n      continue;\n    var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r4) !== 0 ? 2 : 0);\n    if (options.canonical && s3.cmp(this.nh) > 0) {\n      s3 = this.n.sub(s3);\n      recoveryParam ^= 1;\n    }\n    return new signature({ r: r4, s: s3, recoveryParam });\n  }\n};\nEC.prototype.verify = function verify2(msg, signature$1, key2, enc) {\n  msg = this._truncateToN(new import_bn2.default(msg, 16));\n  key2 = this.keyFromPublic(key2, enc);\n  signature$1 = new signature(signature$1, \"hex\");\n  var r4 = signature$1.r;\n  var s3 = signature$1.s;\n  if (r4.cmpn(1) < 0 || r4.cmp(this.n) >= 0)\n    return false;\n  if (s3.cmpn(1) < 0 || s3.cmp(this.n) >= 0)\n    return false;\n  var sinv = s3.invm(this.n);\n  var u1 = sinv.mul(msg).umod(this.n);\n  var u22 = sinv.mul(r4).umod(this.n);\n  var p3;\n  if (!this.curve._maxwellTrick) {\n    p3 = this.g.mulAdd(u1, key2.getPublic(), u22);\n    if (p3.isInfinity())\n      return false;\n    return p3.getX().umod(this.n).cmp(r4) === 0;\n  }\n  p3 = this.g.jmulAdd(u1, key2.getPublic(), u22);\n  if (p3.isInfinity())\n    return false;\n  return p3.eqXToP(r4);\n};\nEC.prototype.recoverPubKey = function(msg, signature$1, j2, enc) {\n  assert$5((3 & j2) === j2, \"The recovery param is more than two bits\");\n  signature$1 = new signature(signature$1, enc);\n  var n5 = this.n;\n  var e2 = new import_bn2.default(msg);\n  var r4 = signature$1.r;\n  var s3 = signature$1.s;\n  var isYOdd = j2 & 1;\n  var isSecondKey = j2 >> 1;\n  if (r4.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n    throw new Error(\"Unable to find sencond key candinate\");\n  if (isSecondKey)\n    r4 = this.curve.pointFromX(r4.add(this.curve.n), isYOdd);\n  else\n    r4 = this.curve.pointFromX(r4, isYOdd);\n  var rInv = signature$1.r.invm(n5);\n  var s1 = n5.sub(e2).mul(rInv).umod(n5);\n  var s22 = s3.mul(rInv).umod(n5);\n  return this.g.mulAdd(s1, r4, s22);\n};\nEC.prototype.getKeyRecoveryParam = function(e2, signature$1, Q2, enc) {\n  signature$1 = new signature(signature$1, enc);\n  if (signature$1.recoveryParam !== null)\n    return signature$1.recoveryParam;\n  for (var i4 = 0; i4 < 4; i4++) {\n    var Qprime;\n    try {\n      Qprime = this.recoverPubKey(e2, signature$1, i4);\n    } catch (e3) {\n      continue;\n    }\n    if (Qprime.eq(Q2))\n      return i4;\n  }\n  throw new Error(\"Unable to find valid recovery factor\");\n};\nvar elliptic_1 = createCommonjsModule(function(module, exports) {\n  \"use strict\";\n  var elliptic = exports;\n  elliptic.version = /*RicMoo:ethers*/\n  { version: \"6.5.4\" }.version;\n  elliptic.utils = utils_1$1;\n  elliptic.rand = /*RicMoo:ethers:require(brorand)*/\n  function() {\n    throw new Error(\"unsupported\");\n  };\n  elliptic.curve = curve_1;\n  elliptic.curves = curves_1;\n  elliptic.ec = ec;\n  elliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/\n  null;\n});\nvar EC$1 = elliptic_1.ec;\n\n// node_modules/@ethersproject/signing-key/lib.esm/_version.js\nvar version9 = \"signing-key/5.7.0\";\n\n// node_modules/@ethersproject/signing-key/lib.esm/index.js\nvar logger10 = new Logger(version9);\nvar _curve = null;\nfunction getCurve() {\n  if (!_curve) {\n    _curve = new EC$1(\"secp256k1\");\n  }\n  return _curve;\n}\nvar SigningKey = class {\n  constructor(privateKey) {\n    defineReadOnly(this, \"curve\", \"secp256k1\");\n    defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n    if (hexDataLength(this.privateKey) !== 32) {\n      logger10.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n    }\n    const keyPair2 = getCurve().keyFromPrivate(arrayify(this.privateKey));\n    defineReadOnly(this, \"publicKey\", \"0x\" + keyPair2.getPublic(false, \"hex\"));\n    defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair2.getPublic(true, \"hex\"));\n    defineReadOnly(this, \"_isSigningKey\", true);\n  }\n  _addPoint(other) {\n    const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n    const p1 = getCurve().keyFromPublic(arrayify(other));\n    return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n  }\n  signDigest(digest2) {\n    const keyPair2 = getCurve().keyFromPrivate(arrayify(this.privateKey));\n    const digestBytes = arrayify(digest2);\n    if (digestBytes.length !== 32) {\n      logger10.throwArgumentError(\"bad digest length\", \"digest\", digest2);\n    }\n    const signature2 = keyPair2.sign(digestBytes, { canonical: true });\n    return splitSignature({\n      recoveryParam: signature2.recoveryParam,\n      r: hexZeroPad(\"0x\" + signature2.r.toString(16), 32),\n      s: hexZeroPad(\"0x\" + signature2.s.toString(16), 32)\n    });\n  }\n  computeSharedSecret(otherKey) {\n    const keyPair2 = getCurve().keyFromPrivate(arrayify(this.privateKey));\n    const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n    return hexZeroPad(\"0x\" + keyPair2.derive(otherKeyPair.getPublic()).toString(16), 32);\n  }\n  static isSigningKey(value) {\n    return !!(value && value._isSigningKey);\n  }\n};\nfunction recoverPublicKey(digest2, signature2) {\n  const sig = splitSignature(signature2);\n  const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n  return \"0x\" + getCurve().recoverPubKey(arrayify(digest2), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nfunction computePublicKey(key2, compressed) {\n  const bytes = arrayify(key2);\n  if (bytes.length === 32) {\n    const signingKey = new SigningKey(bytes);\n    if (compressed) {\n      return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n    }\n    return signingKey.publicKey;\n  } else if (bytes.length === 33) {\n    if (compressed) {\n      return hexlify(bytes);\n    }\n    return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n  } else if (bytes.length === 65) {\n    if (!compressed) {\n      return hexlify(bytes);\n    }\n    return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n  }\n  return logger10.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n// node_modules/@ethersproject/transactions/lib.esm/_version.js\nvar version10 = \"transactions/5.7.0\";\n\n// node_modules/@ethersproject/transactions/lib.esm/index.js\nvar logger11 = new Logger(version10);\nvar TransactionTypes;\n(function(TransactionTypes2) {\n  TransactionTypes2[TransactionTypes2[\"legacy\"] = 0] = \"legacy\";\n  TransactionTypes2[TransactionTypes2[\"eip2930\"] = 1] = \"eip2930\";\n  TransactionTypes2[TransactionTypes2[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\nfunction computeAddress(key2) {\n  const publicKey = computePublicKey(key2);\n  return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nfunction recoverAddress(digest2, signature2) {\n  return computeAddress(recoverPublicKey(arrayify(digest2), signature2));\n}\n\n// node_modules/@walletconnect/utils/dist/index.es.js\nvar import_chacha20poly1305 = __toESM(require_chacha20poly1305());\nvar import_hkdf = __toESM(require_hkdf());\nvar import_random2 = __toESM(require_random());\nvar import_sha256 = __toESM(require_sha256());\nvar _e = __toESM(require_x25519());\n\n// node_modules/uint8arrays/esm/src/alloc.js\nfunction allocUnsafe(size = 0) {\n  if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n    return globalThis.Buffer.allocUnsafe(size);\n  }\n  return new Uint8Array(size);\n}\n\n// node_modules/uint8arrays/esm/src/concat.js\nfunction concat2(arrays, length2) {\n  if (!length2) {\n    length2 = arrays.reduce((acc, curr) => acc + curr.length, 0);\n  }\n  const output = allocUnsafe(length2);\n  let offset = 0;\n  for (const arr of arrays) {\n    output.set(arr, offset);\n    offset += arr.length;\n  }\n  return output;\n}\n\n// node_modules/multiformats/esm/src/bases/identity.js\nvar identity_exports = {};\n__export(identity_exports, {\n  identity: () => identity\n});\n\n// node_modules/multiformats/esm/vendor/base-x.js\nfunction base2(ALPHABET, name2) {\n  if (ALPHABET.length >= 255) {\n    throw new TypeError(\"Alphabet too long\");\n  }\n  var BASE_MAP = new Uint8Array(256);\n  for (var j2 = 0; j2 < BASE_MAP.length; j2++) {\n    BASE_MAP[j2] = 255;\n  }\n  for (var i4 = 0; i4 < ALPHABET.length; i4++) {\n    var x6 = ALPHABET.charAt(i4);\n    var xc = x6.charCodeAt(0);\n    if (BASE_MAP[xc] !== 255) {\n      throw new TypeError(x6 + \" is ambiguous\");\n    }\n    BASE_MAP[xc] = i4;\n  }\n  var BASE = ALPHABET.length;\n  var LEADER = ALPHABET.charAt(0);\n  var FACTOR = Math.log(BASE) / Math.log(256);\n  var iFACTOR = Math.log(256) / Math.log(BASE);\n  function encode8(source) {\n    if (source instanceof Uint8Array)\n      ;\n    else if (ArrayBuffer.isView(source)) {\n      source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n    } else if (Array.isArray(source)) {\n      source = Uint8Array.from(source);\n    }\n    if (!(source instanceof Uint8Array)) {\n      throw new TypeError(\"Expected Uint8Array\");\n    }\n    if (source.length === 0) {\n      return \"\";\n    }\n    var zeroes = 0;\n    var length2 = 0;\n    var pbegin = 0;\n    var pend = source.length;\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++;\n      zeroes++;\n    }\n    var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n    var b58 = new Uint8Array(size);\n    while (pbegin !== pend) {\n      var carry = source[pbegin];\n      var i5 = 0;\n      for (var it1 = size - 1; (carry !== 0 || i5 < length2) && it1 !== -1; it1--, i5++) {\n        carry += 256 * b58[it1] >>> 0;\n        b58[it1] = carry % BASE >>> 0;\n        carry = carry / BASE >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error(\"Non-zero carry\");\n      }\n      length2 = i5;\n      pbegin++;\n    }\n    var it22 = size - length2;\n    while (it22 !== size && b58[it22] === 0) {\n      it22++;\n    }\n    var str = LEADER.repeat(zeroes);\n    for (; it22 < size; ++it22) {\n      str += ALPHABET.charAt(b58[it22]);\n    }\n    return str;\n  }\n  function decodeUnsafe(source) {\n    if (typeof source !== \"string\") {\n      throw new TypeError(\"Expected String\");\n    }\n    if (source.length === 0) {\n      return new Uint8Array();\n    }\n    var psz = 0;\n    if (source[psz] === \" \") {\n      return;\n    }\n    var zeroes = 0;\n    var length2 = 0;\n    while (source[psz] === LEADER) {\n      zeroes++;\n      psz++;\n    }\n    var size = (source.length - psz) * FACTOR + 1 >>> 0;\n    var b256 = new Uint8Array(size);\n    while (source[psz]) {\n      var carry = BASE_MAP[source.charCodeAt(psz)];\n      if (carry === 255) {\n        return;\n      }\n      var i5 = 0;\n      for (var it32 = size - 1; (carry !== 0 || i5 < length2) && it32 !== -1; it32--, i5++) {\n        carry += BASE * b256[it32] >>> 0;\n        b256[it32] = carry % 256 >>> 0;\n        carry = carry / 256 >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error(\"Non-zero carry\");\n      }\n      length2 = i5;\n      psz++;\n    }\n    if (source[psz] === \" \") {\n      return;\n    }\n    var it4 = size - length2;\n    while (it4 !== size && b256[it4] === 0) {\n      it4++;\n    }\n    var vch = new Uint8Array(zeroes + (size - it4));\n    var j3 = zeroes;\n    while (it4 !== size) {\n      vch[j3++] = b256[it4++];\n    }\n    return vch;\n  }\n  function decode8(string2) {\n    var buffer = decodeUnsafe(string2);\n    if (buffer) {\n      return buffer;\n    }\n    throw new Error(`Non-${name2} character`);\n  }\n  return {\n    encode: encode8,\n    decodeUnsafe,\n    decode: decode8\n  };\n}\nvar src = base2;\nvar _brrp__multiformats_scope_baseX = src;\nvar base_x_default = _brrp__multiformats_scope_baseX;\n\n// node_modules/multiformats/esm/src/bytes.js\nvar empty = new Uint8Array(0);\nvar equals = (aa, bb) => {\n  if (aa === bb)\n    return true;\n  if (aa.byteLength !== bb.byteLength) {\n    return false;\n  }\n  for (let ii2 = 0; ii2 < aa.byteLength; ii2++) {\n    if (aa[ii2] !== bb[ii2]) {\n      return false;\n    }\n  }\n  return true;\n};\nvar coerce = (o4) => {\n  if (o4 instanceof Uint8Array && o4.constructor.name === \"Uint8Array\")\n    return o4;\n  if (o4 instanceof ArrayBuffer)\n    return new Uint8Array(o4);\n  if (ArrayBuffer.isView(o4)) {\n    return new Uint8Array(o4.buffer, o4.byteOffset, o4.byteLength);\n  }\n  throw new Error(\"Unknown type, must be binary type\");\n};\nvar fromString = (str) => new TextEncoder().encode(str);\nvar toString = (b5) => new TextDecoder().decode(b5);\n\n// node_modules/multiformats/esm/src/bases/base.js\nvar Encoder = class {\n  constructor(name2, prefix, baseEncode) {\n    this.name = name2;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n  }\n  encode(bytes) {\n    if (bytes instanceof Uint8Array) {\n      return `${this.prefix}${this.baseEncode(bytes)}`;\n    } else {\n      throw Error(\"Unknown type, must be binary type\");\n    }\n  }\n};\nvar Decoder = class {\n  constructor(name2, prefix, baseDecode) {\n    this.name = name2;\n    this.prefix = prefix;\n    if (prefix.codePointAt(0) === void 0) {\n      throw new Error(\"Invalid prefix character\");\n    }\n    this.prefixCodePoint = prefix.codePointAt(0);\n    this.baseDecode = baseDecode;\n  }\n  decode(text) {\n    if (typeof text === \"string\") {\n      if (text.codePointAt(0) !== this.prefixCodePoint) {\n        throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n      }\n      return this.baseDecode(text.slice(this.prefix.length));\n    } else {\n      throw Error(\"Can only multibase decode strings\");\n    }\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n};\nvar ComposedDecoder = class {\n  constructor(decoders) {\n    this.decoders = decoders;\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n  decode(input) {\n    const prefix = input[0];\n    const decoder = this.decoders[prefix];\n    if (decoder) {\n      return decoder.decode(input);\n    } else {\n      throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n    }\n  }\n};\nvar or = (left, right) => new ComposedDecoder({\n  ...left.decoders || { [left.prefix]: left },\n  ...right.decoders || { [right.prefix]: right }\n});\nvar Codec = class {\n  constructor(name2, prefix, baseEncode, baseDecode) {\n    this.name = name2;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n    this.baseDecode = baseDecode;\n    this.encoder = new Encoder(name2, prefix, baseEncode);\n    this.decoder = new Decoder(name2, prefix, baseDecode);\n  }\n  encode(input) {\n    return this.encoder.encode(input);\n  }\n  decode(input) {\n    return this.decoder.decode(input);\n  }\n};\nvar from = ({ name: name2, prefix, encode: encode8, decode: decode8 }) => new Codec(name2, prefix, encode8, decode8);\nvar baseX = ({ prefix, name: name2, alphabet: alphabet2 }) => {\n  const { encode: encode8, decode: decode8 } = base_x_default(alphabet2, name2);\n  return from({\n    prefix,\n    name: name2,\n    encode: encode8,\n    decode: (text) => coerce(decode8(text))\n  });\n};\nvar decode3 = (string2, alphabet2, bitsPerChar, name2) => {\n  const codes = {};\n  for (let i4 = 0; i4 < alphabet2.length; ++i4) {\n    codes[alphabet2[i4]] = i4;\n  }\n  let end = string2.length;\n  while (string2[end - 1] === \"=\") {\n    --end;\n  }\n  const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n  let bits = 0;\n  let buffer = 0;\n  let written = 0;\n  for (let i4 = 0; i4 < end; ++i4) {\n    const value = codes[string2[i4]];\n    if (value === void 0) {\n      throw new SyntaxError(`Non-${name2} character`);\n    }\n    buffer = buffer << bitsPerChar | value;\n    bits += bitsPerChar;\n    if (bits >= 8) {\n      bits -= 8;\n      out[written++] = 255 & buffer >> bits;\n    }\n  }\n  if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n    throw new SyntaxError(\"Unexpected end of data\");\n  }\n  return out;\n};\nvar encode4 = (data, alphabet2, bitsPerChar) => {\n  const pad = alphabet2[alphabet2.length - 1] === \"=\";\n  const mask = (1 << bitsPerChar) - 1;\n  let out = \"\";\n  let bits = 0;\n  let buffer = 0;\n  for (let i4 = 0; i4 < data.length; ++i4) {\n    buffer = buffer << 8 | data[i4];\n    bits += 8;\n    while (bits > bitsPerChar) {\n      bits -= bitsPerChar;\n      out += alphabet2[mask & buffer >> bits];\n    }\n  }\n  if (bits) {\n    out += alphabet2[mask & buffer << bitsPerChar - bits];\n  }\n  if (pad) {\n    while (out.length * bitsPerChar & 7) {\n      out += \"=\";\n    }\n  }\n  return out;\n};\nvar rfc4648 = ({ name: name2, prefix, bitsPerChar, alphabet: alphabet2 }) => {\n  return from({\n    prefix,\n    name: name2,\n    encode(input) {\n      return encode4(input, alphabet2, bitsPerChar);\n    },\n    decode(input) {\n      return decode3(input, alphabet2, bitsPerChar, name2);\n    }\n  });\n};\n\n// node_modules/multiformats/esm/src/bases/identity.js\nvar identity = from({\n  prefix: \"\\0\",\n  name: \"identity\",\n  encode: (buf) => toString(buf),\n  decode: (str) => fromString(str)\n});\n\n// node_modules/multiformats/esm/src/bases/base2.js\nvar base2_exports = {};\n__export(base2_exports, {\n  base2: () => base22\n});\nvar base22 = rfc4648({\n  prefix: \"0\",\n  name: \"base2\",\n  alphabet: \"01\",\n  bitsPerChar: 1\n});\n\n// node_modules/multiformats/esm/src/bases/base8.js\nvar base8_exports = {};\n__export(base8_exports, {\n  base8: () => base8\n});\nvar base8 = rfc4648({\n  prefix: \"7\",\n  name: \"base8\",\n  alphabet: \"01234567\",\n  bitsPerChar: 3\n});\n\n// node_modules/multiformats/esm/src/bases/base10.js\nvar base10_exports = {};\n__export(base10_exports, {\n  base10: () => base10\n});\nvar base10 = baseX({\n  prefix: \"9\",\n  name: \"base10\",\n  alphabet: \"0123456789\"\n});\n\n// node_modules/multiformats/esm/src/bases/base16.js\nvar base16_exports = {};\n__export(base16_exports, {\n  base16: () => base16,\n  base16upper: () => base16upper\n});\nvar base16 = rfc4648({\n  prefix: \"f\",\n  name: \"base16\",\n  alphabet: \"0123456789abcdef\",\n  bitsPerChar: 4\n});\nvar base16upper = rfc4648({\n  prefix: \"F\",\n  name: \"base16upper\",\n  alphabet: \"0123456789ABCDEF\",\n  bitsPerChar: 4\n});\n\n// node_modules/multiformats/esm/src/bases/base32.js\nvar base32_exports = {};\n__export(base32_exports, {\n  base32: () => base32,\n  base32hex: () => base32hex,\n  base32hexpad: () => base32hexpad,\n  base32hexpadupper: () => base32hexpadupper,\n  base32hexupper: () => base32hexupper,\n  base32pad: () => base32pad,\n  base32padupper: () => base32padupper,\n  base32upper: () => base32upper,\n  base32z: () => base32z\n});\nvar base32 = rfc4648({\n  prefix: \"b\",\n  name: \"base32\",\n  alphabet: \"abcdefghijklmnopqrstuvwxyz234567\",\n  bitsPerChar: 5\n});\nvar base32upper = rfc4648({\n  prefix: \"B\",\n  name: \"base32upper\",\n  alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\",\n  bitsPerChar: 5\n});\nvar base32pad = rfc4648({\n  prefix: \"c\",\n  name: \"base32pad\",\n  alphabet: \"abcdefghijklmnopqrstuvwxyz234567=\",\n  bitsPerChar: 5\n});\nvar base32padupper = rfc4648({\n  prefix: \"C\",\n  name: \"base32padupper\",\n  alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=\",\n  bitsPerChar: 5\n});\nvar base32hex = rfc4648({\n  prefix: \"v\",\n  name: \"base32hex\",\n  alphabet: \"0123456789abcdefghijklmnopqrstuv\",\n  bitsPerChar: 5\n});\nvar base32hexupper = rfc4648({\n  prefix: \"V\",\n  name: \"base32hexupper\",\n  alphabet: \"0123456789ABCDEFGHIJKLMNOPQRSTUV\",\n  bitsPerChar: 5\n});\nvar base32hexpad = rfc4648({\n  prefix: \"t\",\n  name: \"base32hexpad\",\n  alphabet: \"0123456789abcdefghijklmnopqrstuv=\",\n  bitsPerChar: 5\n});\nvar base32hexpadupper = rfc4648({\n  prefix: \"T\",\n  name: \"base32hexpadupper\",\n  alphabet: \"0123456789ABCDEFGHIJKLMNOPQRSTUV=\",\n  bitsPerChar: 5\n});\nvar base32z = rfc4648({\n  prefix: \"h\",\n  name: \"base32z\",\n  alphabet: \"ybndrfg8ejkmcpqxot1uwisza345h769\",\n  bitsPerChar: 5\n});\n\n// node_modules/multiformats/esm/src/bases/base36.js\nvar base36_exports = {};\n__export(base36_exports, {\n  base36: () => base36,\n  base36upper: () => base36upper\n});\nvar base36 = baseX({\n  prefix: \"k\",\n  name: \"base36\",\n  alphabet: \"0123456789abcdefghijklmnopqrstuvwxyz\"\n});\nvar base36upper = baseX({\n  prefix: \"K\",\n  name: \"base36upper\",\n  alphabet: \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n});\n\n// node_modules/multiformats/esm/src/bases/base58.js\nvar base58_exports = {};\n__export(base58_exports, {\n  base58btc: () => base58btc,\n  base58flickr: () => base58flickr\n});\nvar base58btc = baseX({\n  name: \"base58btc\",\n  prefix: \"z\",\n  alphabet: \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\"\n});\nvar base58flickr = baseX({\n  name: \"base58flickr\",\n  prefix: \"Z\",\n  alphabet: \"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ\"\n});\n\n// node_modules/multiformats/esm/src/bases/base64.js\nvar base64_exports = {};\n__export(base64_exports, {\n  base64: () => base64,\n  base64pad: () => base64pad,\n  base64url: () => base64url,\n  base64urlpad: () => base64urlpad\n});\nvar base64 = rfc4648({\n  prefix: \"m\",\n  name: \"base64\",\n  alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",\n  bitsPerChar: 6\n});\nvar base64pad = rfc4648({\n  prefix: \"M\",\n  name: \"base64pad\",\n  alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",\n  bitsPerChar: 6\n});\nvar base64url = rfc4648({\n  prefix: \"u\",\n  name: \"base64url\",\n  alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\",\n  bitsPerChar: 6\n});\nvar base64urlpad = rfc4648({\n  prefix: \"U\",\n  name: \"base64urlpad\",\n  alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=\",\n  bitsPerChar: 6\n});\n\n// node_modules/multiformats/esm/src/bases/base256emoji.js\nvar base256emoji_exports = {};\n__export(base256emoji_exports, {\n  base256emoji: () => base256emoji\n});\nvar alphabet = Array.from(\"🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂\");\nvar alphabetBytesToChars = alphabet.reduce((p3, c5, i4) => {\n  p3[i4] = c5;\n  return p3;\n}, []);\nvar alphabetCharsToBytes = alphabet.reduce((p3, c5, i4) => {\n  p3[c5.codePointAt(0)] = i4;\n  return p3;\n}, []);\nfunction encode5(data) {\n  return data.reduce((p3, c5) => {\n    p3 += alphabetBytesToChars[c5];\n    return p3;\n  }, \"\");\n}\nfunction decode4(str) {\n  const byts = [];\n  for (const char of str) {\n    const byt = alphabetCharsToBytes[char.codePointAt(0)];\n    if (byt === void 0) {\n      throw new Error(`Non-base256emoji character: ${char}`);\n    }\n    byts.push(byt);\n  }\n  return new Uint8Array(byts);\n}\nvar base256emoji = from({\n  prefix: \"🚀\",\n  name: \"base256emoji\",\n  encode: encode5,\n  decode: decode4\n});\n\n// node_modules/multiformats/esm/src/hashes/sha2-browser.js\nvar sha2_browser_exports = {};\n__export(sha2_browser_exports, {\n  sha256: () => sha256,\n  sha512: () => sha512\n});\n\n// node_modules/multiformats/esm/vendor/varint.js\nvar encode_1 = encode6;\nvar MSB = 128;\nvar REST = 127;\nvar MSBALL = ~REST;\nvar INT = Math.pow(2, 31);\nfunction encode6(num, out, offset) {\n  out = out || [];\n  offset = offset || 0;\n  var oldOffset = offset;\n  while (num >= INT) {\n    out[offset++] = num & 255 | MSB;\n    num /= 128;\n  }\n  while (num & MSBALL) {\n    out[offset++] = num & 255 | MSB;\n    num >>>= 7;\n  }\n  out[offset] = num | 0;\n  encode6.bytes = offset - oldOffset + 1;\n  return out;\n}\nvar decode5 = read;\nvar MSB$1 = 128;\nvar REST$1 = 127;\nfunction read(buf, offset) {\n  var res = 0, offset = offset || 0, shift = 0, counter = offset, b5, l4 = buf.length;\n  do {\n    if (counter >= l4) {\n      read.bytes = 0;\n      throw new RangeError(\"Could not decode varint\");\n    }\n    b5 = buf[counter++];\n    res += shift < 28 ? (b5 & REST$1) << shift : (b5 & REST$1) * Math.pow(2, shift);\n    shift += 7;\n  } while (b5 >= MSB$1);\n  read.bytes = counter - offset;\n  return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function(value) {\n  return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n  encode: encode_1,\n  decode: decode5,\n  encodingLength: length\n};\nvar _brrp_varint = varint;\nvar varint_default = _brrp_varint;\n\n// node_modules/multiformats/esm/src/varint.js\nvar decode6 = (data, offset = 0) => {\n  const code2 = varint_default.decode(data, offset);\n  return [\n    code2,\n    varint_default.decode.bytes\n  ];\n};\nvar encodeTo = (int, target, offset = 0) => {\n  varint_default.encode(int, target, offset);\n  return target;\n};\nvar encodingLength = (int) => {\n  return varint_default.encodingLength(int);\n};\n\n// node_modules/multiformats/esm/src/hashes/digest.js\nvar create = (code2, digest2) => {\n  const size = digest2.byteLength;\n  const sizeOffset = encodingLength(code2);\n  const digestOffset = sizeOffset + encodingLength(size);\n  const bytes = new Uint8Array(digestOffset + size);\n  encodeTo(code2, bytes, 0);\n  encodeTo(size, bytes, sizeOffset);\n  bytes.set(digest2, digestOffset);\n  return new Digest(code2, size, digest2, bytes);\n};\nvar decode7 = (multihash) => {\n  const bytes = coerce(multihash);\n  const [code2, sizeOffset] = decode6(bytes);\n  const [size, digestOffset] = decode6(bytes.subarray(sizeOffset));\n  const digest2 = bytes.subarray(sizeOffset + digestOffset);\n  if (digest2.byteLength !== size) {\n    throw new Error(\"Incorrect length\");\n  }\n  return new Digest(code2, size, digest2, bytes);\n};\nvar equals2 = (a4, b5) => {\n  if (a4 === b5) {\n    return true;\n  } else {\n    return a4.code === b5.code && a4.size === b5.size && equals(a4.bytes, b5.bytes);\n  }\n};\nvar Digest = class {\n  constructor(code2, size, digest2, bytes) {\n    this.code = code2;\n    this.size = size;\n    this.digest = digest2;\n    this.bytes = bytes;\n  }\n};\n\n// node_modules/multiformats/esm/src/hashes/hasher.js\nvar from2 = ({ name: name2, code: code2, encode: encode8 }) => new Hasher(name2, code2, encode8);\nvar Hasher = class {\n  constructor(name2, code2, encode8) {\n    this.name = name2;\n    this.code = code2;\n    this.encode = encode8;\n  }\n  digest(input) {\n    if (input instanceof Uint8Array) {\n      const result = this.encode(input);\n      return result instanceof Uint8Array ? create(this.code, result) : result.then((digest2) => create(this.code, digest2));\n    } else {\n      throw Error(\"Unknown type, must be binary type\");\n    }\n  }\n};\n\n// node_modules/multiformats/esm/src/hashes/sha2-browser.js\nvar sha = (name2) => async (data) => new Uint8Array(await crypto.subtle.digest(name2, data));\nvar sha256 = from2({\n  name: \"sha2-256\",\n  code: 18,\n  encode: sha(\"SHA-256\")\n});\nvar sha512 = from2({\n  name: \"sha2-512\",\n  code: 19,\n  encode: sha(\"SHA-512\")\n});\n\n// node_modules/multiformats/esm/src/hashes/identity.js\nvar identity_exports2 = {};\n__export(identity_exports2, {\n  identity: () => identity2\n});\nvar code = 0;\nvar name = \"identity\";\nvar encode7 = coerce;\nvar digest = (input) => create(code, encode7(input));\nvar identity2 = {\n  code,\n  name,\n  encode: encode7,\n  digest\n};\n\n// node_modules/multiformats/esm/src/codecs/json.js\nvar textEncoder = new TextEncoder();\nvar textDecoder = new TextDecoder();\n\n// node_modules/multiformats/esm/src/cid.js\nvar CID = class _CID {\n  constructor(version12, code2, multihash, bytes) {\n    this.code = code2;\n    this.version = version12;\n    this.multihash = multihash;\n    this.bytes = bytes;\n    this.byteOffset = bytes.byteOffset;\n    this.byteLength = bytes.byteLength;\n    this.asCID = this;\n    this._baseCache = /* @__PURE__ */ new Map();\n    Object.defineProperties(this, {\n      byteOffset: hidden,\n      byteLength: hidden,\n      code: readonly,\n      version: readonly,\n      multihash: readonly,\n      bytes: readonly,\n      _baseCache: hidden,\n      asCID: hidden\n    });\n  }\n  toV0() {\n    switch (this.version) {\n      case 0: {\n        return this;\n      }\n      default: {\n        const { code: code2, multihash } = this;\n        if (code2 !== DAG_PB_CODE) {\n          throw new Error(\"Cannot convert a non dag-pb CID to CIDv0\");\n        }\n        if (multihash.code !== SHA_256_CODE) {\n          throw new Error(\"Cannot convert non sha2-256 multihash CID to CIDv0\");\n        }\n        return _CID.createV0(multihash);\n      }\n    }\n  }\n  toV1() {\n    switch (this.version) {\n      case 0: {\n        const { code: code2, digest: digest2 } = this.multihash;\n        const multihash = create(code2, digest2);\n        return _CID.createV1(this.code, multihash);\n      }\n      case 1: {\n        return this;\n      }\n      default: {\n        throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n      }\n    }\n  }\n  equals(other) {\n    return other && this.code === other.code && this.version === other.version && equals2(this.multihash, other.multihash);\n  }\n  toString(base3) {\n    const { bytes, version: version12, _baseCache } = this;\n    switch (version12) {\n      case 0:\n        return toStringV0(bytes, _baseCache, base3 || base58btc.encoder);\n      default:\n        return toStringV1(bytes, _baseCache, base3 || base32.encoder);\n    }\n  }\n  toJSON() {\n    return {\n      code: this.code,\n      version: this.version,\n      hash: this.multihash.bytes\n    };\n  }\n  get [Symbol.toStringTag]() {\n    return \"CID\";\n  }\n  [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n    return \"CID(\" + this.toString() + \")\";\n  }\n  static isCID(value) {\n    deprecate(/^0\\.0/, IS_CID_DEPRECATION);\n    return !!(value && (value[cidSymbol] || value.asCID === value));\n  }\n  get toBaseEncodedString() {\n    throw new Error(\"Deprecated, use .toString()\");\n  }\n  get codec() {\n    throw new Error('\"codec\" property is deprecated, use integer \"code\" property instead');\n  }\n  get buffer() {\n    throw new Error(\"Deprecated .buffer property, use .bytes to get Uint8Array instead\");\n  }\n  get multibaseName() {\n    throw new Error('\"multibaseName\" property is deprecated');\n  }\n  get prefix() {\n    throw new Error('\"prefix\" property is deprecated');\n  }\n  static asCID(value) {\n    if (value instanceof _CID) {\n      return value;\n    } else if (value != null && value.asCID === value) {\n      const { version: version12, code: code2, multihash, bytes } = value;\n      return new _CID(version12, code2, multihash, bytes || encodeCID(version12, code2, multihash.bytes));\n    } else if (value != null && value[cidSymbol] === true) {\n      const { version: version12, multihash, code: code2 } = value;\n      const digest2 = decode7(multihash);\n      return _CID.create(version12, code2, digest2);\n    } else {\n      return null;\n    }\n  }\n  static create(version12, code2, digest2) {\n    if (typeof code2 !== \"number\") {\n      throw new Error(\"String codecs are no longer supported\");\n    }\n    switch (version12) {\n      case 0: {\n        if (code2 !== DAG_PB_CODE) {\n          throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);\n        } else {\n          return new _CID(version12, code2, digest2, digest2.bytes);\n        }\n      }\n      case 1: {\n        const bytes = encodeCID(version12, code2, digest2.bytes);\n        return new _CID(version12, code2, digest2, bytes);\n      }\n      default: {\n        throw new Error(\"Invalid version\");\n      }\n    }\n  }\n  static createV0(digest2) {\n    return _CID.create(0, DAG_PB_CODE, digest2);\n  }\n  static createV1(code2, digest2) {\n    return _CID.create(1, code2, digest2);\n  }\n  static decode(bytes) {\n    const [cid, remainder] = _CID.decodeFirst(bytes);\n    if (remainder.length) {\n      throw new Error(\"Incorrect length\");\n    }\n    return cid;\n  }\n  static decodeFirst(bytes) {\n    const specs = _CID.inspectBytes(bytes);\n    const prefixSize = specs.size - specs.multihashSize;\n    const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n    if (multihashBytes.byteLength !== specs.multihashSize) {\n      throw new Error(\"Incorrect length\");\n    }\n    const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n    const digest2 = new Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n    const cid = specs.version === 0 ? _CID.createV0(digest2) : _CID.createV1(specs.codec, digest2);\n    return [\n      cid,\n      bytes.subarray(specs.size)\n    ];\n  }\n  static inspectBytes(initialBytes) {\n    let offset = 0;\n    const next = () => {\n      const [i4, length2] = decode6(initialBytes.subarray(offset));\n      offset += length2;\n      return i4;\n    };\n    let version12 = next();\n    let codec = DAG_PB_CODE;\n    if (version12 === 18) {\n      version12 = 0;\n      offset = 0;\n    } else if (version12 === 1) {\n      codec = next();\n    }\n    if (version12 !== 0 && version12 !== 1) {\n      throw new RangeError(`Invalid CID version ${version12}`);\n    }\n    const prefixSize = offset;\n    const multihashCode = next();\n    const digestSize = next();\n    const size = offset + digestSize;\n    const multihashSize = size - prefixSize;\n    return {\n      version: version12,\n      codec,\n      multihashCode,\n      digestSize,\n      multihashSize,\n      size\n    };\n  }\n  static parse(source, base3) {\n    const [prefix, bytes] = parseCIDtoBytes(source, base3);\n    const cid = _CID.decode(bytes);\n    cid._baseCache.set(prefix, source);\n    return cid;\n  }\n};\nvar parseCIDtoBytes = (source, base3) => {\n  switch (source[0]) {\n    case \"Q\": {\n      const decoder = base3 || base58btc;\n      return [\n        base58btc.prefix,\n        decoder.decode(`${base58btc.prefix}${source}`)\n      ];\n    }\n    case base58btc.prefix: {\n      const decoder = base3 || base58btc;\n      return [\n        base58btc.prefix,\n        decoder.decode(source)\n      ];\n    }\n    case base32.prefix: {\n      const decoder = base3 || base32;\n      return [\n        base32.prefix,\n        decoder.decode(source)\n      ];\n    }\n    default: {\n      if (base3 == null) {\n        throw Error(\"To parse non base32 or base58btc encoded CID multibase decoder must be provided\");\n      }\n      return [\n        source[0],\n        base3.decode(source)\n      ];\n    }\n  }\n};\nvar toStringV0 = (bytes, cache, base3) => {\n  const { prefix } = base3;\n  if (prefix !== base58btc.prefix) {\n    throw Error(`Cannot string encode V0 in ${base3.name} encoding`);\n  }\n  const cid = cache.get(prefix);\n  if (cid == null) {\n    const cid2 = base3.encode(bytes).slice(1);\n    cache.set(prefix, cid2);\n    return cid2;\n  } else {\n    return cid;\n  }\n};\nvar toStringV1 = (bytes, cache, base3) => {\n  const { prefix } = base3;\n  const cid = cache.get(prefix);\n  if (cid == null) {\n    const cid2 = base3.encode(bytes);\n    cache.set(prefix, cid2);\n    return cid2;\n  } else {\n    return cid;\n  }\n};\nvar DAG_PB_CODE = 112;\nvar SHA_256_CODE = 18;\nvar encodeCID = (version12, code2, multihash) => {\n  const codeOffset = encodingLength(version12);\n  const hashOffset = codeOffset + encodingLength(code2);\n  const bytes = new Uint8Array(hashOffset + multihash.byteLength);\n  encodeTo(version12, bytes, 0);\n  encodeTo(code2, bytes, codeOffset);\n  bytes.set(multihash, hashOffset);\n  return bytes;\n};\nvar cidSymbol = Symbol.for(\"@ipld/js-cid/CID\");\nvar readonly = {\n  writable: false,\n  configurable: false,\n  enumerable: true\n};\nvar hidden = {\n  writable: false,\n  enumerable: false,\n  configurable: false\n};\nvar version11 = \"0.0.0-dev\";\nvar deprecate = (range, message) => {\n  if (range.test(version11)) {\n    console.warn(message);\n  } else {\n    throw new Error(message);\n  }\n};\nvar IS_CID_DEPRECATION = `CID.isCID(v) is deprecated and will be removed in the next major release.\nFollowing code pattern:\n\nif (CID.isCID(value)) {\n  doSomethingWithCID(value)\n}\n\nIs replaced with:\n\nconst cid = CID.asCID(value)\nif (cid) {\n  // Make sure to use cid instead of value\n  doSomethingWithCID(cid)\n}\n`;\n\n// node_modules/multiformats/esm/src/basics.js\nvar bases = {\n  ...identity_exports,\n  ...base2_exports,\n  ...base8_exports,\n  ...base10_exports,\n  ...base16_exports,\n  ...base32_exports,\n  ...base36_exports,\n  ...base58_exports,\n  ...base64_exports,\n  ...base256emoji_exports\n};\nvar hashes = {\n  ...sha2_browser_exports,\n  ...identity_exports2\n};\n\n// node_modules/uint8arrays/esm/src/util/bases.js\nfunction createCodec(name2, prefix, encode8, decode8) {\n  return {\n    name: name2,\n    prefix,\n    encoder: {\n      name: name2,\n      prefix,\n      encode: encode8\n    },\n    decoder: { decode: decode8 }\n  };\n}\nvar string = createCodec(\"utf8\", \"u\", (buf) => {\n  const decoder = new TextDecoder(\"utf8\");\n  return \"u\" + decoder.decode(buf);\n}, (str) => {\n  const encoder = new TextEncoder();\n  return encoder.encode(str.substring(1));\n});\nvar ascii = createCodec(\"ascii\", \"a\", (buf) => {\n  let string2 = \"a\";\n  for (let i4 = 0; i4 < buf.length; i4++) {\n    string2 += String.fromCharCode(buf[i4]);\n  }\n  return string2;\n}, (str) => {\n  str = str.substring(1);\n  const buf = allocUnsafe(str.length);\n  for (let i4 = 0; i4 < str.length; i4++) {\n    buf[i4] = str.charCodeAt(i4);\n  }\n  return buf;\n});\nvar BASES = {\n  utf8: string,\n  \"utf-8\": string,\n  hex: bases.base16,\n  latin1: ascii,\n  ascii,\n  binary: ascii,\n  ...bases\n};\nvar bases_default = BASES;\n\n// node_modules/uint8arrays/esm/src/from-string.js\nfunction fromString2(string2, encoding = \"utf8\") {\n  const base3 = bases_default[encoding];\n  if (!base3) {\n    throw new Error(`Unsupported encoding \"${encoding}\"`);\n  }\n  if ((encoding === \"utf8\" || encoding === \"utf-8\") && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return globalThis.Buffer.from(string2, \"utf8\");\n  }\n  return base3.decoder.decode(`${base3.prefix}${string2}`);\n}\n\n// node_modules/uint8arrays/esm/src/to-string.js\nfunction toString2(array, encoding = \"utf8\") {\n  const base3 = bases_default[encoding];\n  if (!base3) {\n    throw new Error(`Unsupported encoding \"${encoding}\"`);\n  }\n  if ((encoding === \"utf8\" || encoding === \"utf-8\") && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString(\"utf8\");\n  }\n  return base3.encoder.encode(array).substring(1);\n}\n\n// node_modules/@walletconnect/utils/dist/index.es.js\nvar import_elliptic2 = __toESM(require_elliptic());\n\n// node_modules/@walletconnect/relay-auth/dist/esm/api.js\nvar ed25519 = __toESM(require_ed25519());\nvar import_random = __toESM(require_random());\nvar import_time = __toESM(require_cjs());\n\n// node_modules/@walletconnect/relay-auth/dist/esm/constants.js\nvar JWT_IRIDIUM_ALG = \"EdDSA\";\nvar JWT_IRIDIUM_TYP = \"JWT\";\nvar JWT_DELIMITER = \".\";\nvar JWT_ENCODING = \"base64url\";\nvar JSON_ENCODING = \"utf8\";\nvar DATA_ENCODING = \"utf8\";\nvar DID_DELIMITER = \":\";\nvar DID_PREFIX = \"did\";\nvar DID_METHOD = \"key\";\nvar MULTICODEC_ED25519_ENCODING = \"base58btc\";\nvar MULTICODEC_ED25519_BASE = \"z\";\nvar MULTICODEC_ED25519_HEADER = \"K36\";\nvar KEY_PAIR_SEED_LENGTH = 32;\n\n// node_modules/@walletconnect/safe-json/dist/esm/index.js\nvar JSONStringify = (data) => JSON.stringify(data, (_4, value) => typeof value === \"bigint\" ? value.toString() + \"n\" : value);\nvar JSONParse = (json) => {\n  const numbersBiggerThanMaxInt = /([\\[:])?(\\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\\}\\]])/g;\n  const serializedData = json.replace(numbersBiggerThanMaxInt, '$1\"$2n\"$3');\n  return JSON.parse(serializedData, (_4, value) => {\n    const isCustomFormatBigInt = typeof value === \"string\" && value.match(/^\\d+n$/);\n    if (isCustomFormatBigInt)\n      return BigInt(value.substring(0, value.length - 1));\n    return value;\n  });\n};\nfunction safeJsonParse(value) {\n  if (typeof value !== \"string\") {\n    throw new Error(`Cannot safe json parse value of type ${typeof value}`);\n  }\n  try {\n    return JSONParse(value);\n  } catch (_a) {\n    return value;\n  }\n}\nfunction safeJsonStringify(value) {\n  return typeof value === \"string\" ? value : JSONStringify(value) || \"\";\n}\n\n// node_modules/@walletconnect/relay-auth/dist/esm/utils.js\nfunction decodeJSON(str) {\n  return safeJsonParse(toString2(fromString2(str, JWT_ENCODING), JSON_ENCODING));\n}\nfunction encodeJSON(val) {\n  return toString2(fromString2(safeJsonStringify(val), JSON_ENCODING), JWT_ENCODING);\n}\nfunction encodeIss(publicKey) {\n  const header = fromString2(MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_ENCODING);\n  const multicodec = MULTICODEC_ED25519_BASE + toString2(concat2([header, publicKey]), MULTICODEC_ED25519_ENCODING);\n  return [DID_PREFIX, DID_METHOD, multicodec].join(DID_DELIMITER);\n}\nfunction encodeSig(bytes) {\n  return toString2(bytes, JWT_ENCODING);\n}\nfunction decodeSig(encoded) {\n  return fromString2(encoded, JWT_ENCODING);\n}\nfunction encodeData(params) {\n  return fromString2([encodeJSON(params.header), encodeJSON(params.payload)].join(JWT_DELIMITER), DATA_ENCODING);\n}\nfunction encodeJWT(params) {\n  return [\n    encodeJSON(params.header),\n    encodeJSON(params.payload),\n    encodeSig(params.signature)\n  ].join(JWT_DELIMITER);\n}\nfunction decodeJWT(jwt) {\n  const params = jwt.split(JWT_DELIMITER);\n  const header = decodeJSON(params[0]);\n  const payload = decodeJSON(params[1]);\n  const signature2 = decodeSig(params[2]);\n  const data = fromString2(params.slice(0, 2).join(JWT_DELIMITER), DATA_ENCODING);\n  return { header, payload, signature: signature2, data };\n}\n\n// node_modules/@walletconnect/relay-auth/dist/esm/api.js\nfunction generateKeyPair(seed = (0, import_random.randomBytes)(KEY_PAIR_SEED_LENGTH)) {\n  return ed25519.generateKeyPairFromSeed(seed);\n}\nasync function signJWT(sub, aud, ttl, keyPair2, iat = (0, import_time.fromMiliseconds)(Date.now())) {\n  const header = { alg: JWT_IRIDIUM_ALG, typ: JWT_IRIDIUM_TYP };\n  const iss = encodeIss(keyPair2.publicKey);\n  const exp = iat + ttl;\n  const payload = { iss, sub, aud, iat, exp };\n  const data = encodeData({ header, payload });\n  const signature2 = ed25519.sign(keyPair2.secretKey, data);\n  return encodeJWT({ header, payload, signature: signature2 });\n}\n\n// node_modules/@walletconnect/relay-api/dist/index.es.js\nvar C = { waku: { publish: \"waku_publish\", batchPublish: \"waku_batchPublish\", subscribe: \"waku_subscribe\", batchSubscribe: \"waku_batchSubscribe\", subscription: \"waku_subscription\", unsubscribe: \"waku_unsubscribe\", batchUnsubscribe: \"waku_batchUnsubscribe\", batchFetchMessages: \"waku_batchFetchMessages\" }, irn: { publish: \"irn_publish\", batchPublish: \"irn_batchPublish\", subscribe: \"irn_subscribe\", batchSubscribe: \"irn_batchSubscribe\", subscription: \"irn_subscription\", unsubscribe: \"irn_unsubscribe\", batchUnsubscribe: \"irn_batchUnsubscribe\", batchFetchMessages: \"irn_batchFetchMessages\" }, iridium: { publish: \"iridium_publish\", batchPublish: \"iridium_batchPublish\", subscribe: \"iridium_subscribe\", batchSubscribe: \"iridium_batchSubscribe\", subscription: \"iridium_subscription\", unsubscribe: \"iridium_unsubscribe\", batchUnsubscribe: \"iridium_batchUnsubscribe\", batchFetchMessages: \"iridium_batchFetchMessages\" } };\n\n// node_modules/@walletconnect/utils/dist/index.es.js\nvar H = \":\";\nfunction re(e2) {\n  const [n5, t] = e2.split(H);\n  return { namespace: n5, reference: t };\n}\nfunction mt(e2, n5 = []) {\n  const t = [];\n  return Object.keys(e2).forEach((r4) => {\n    if (n5.length && !n5.includes(r4))\n      return;\n    const o4 = e2[r4];\n    t.push(...o4.accounts);\n  }), t;\n}\nfunction W(e2, n5) {\n  return e2.includes(\":\") ? [e2] : n5.chains || [];\n}\nvar gt = Object.defineProperty;\nvar Ke = Object.getOwnPropertySymbols;\nvar vt = Object.prototype.hasOwnProperty;\nvar bt = Object.prototype.propertyIsEnumerable;\nvar Le = (e2, n5, t) => n5 in e2 ? gt(e2, n5, { enumerable: true, configurable: true, writable: true, value: t }) : e2[n5] = t;\nvar Fe = (e2, n5) => {\n  for (var t in n5 || (n5 = {}))\n    vt.call(n5, t) && Le(e2, t, n5[t]);\n  if (Ke)\n    for (var t of Ke(n5))\n      bt.call(n5, t) && Le(e2, t, n5[t]);\n  return e2;\n};\nvar qe = \"ReactNative\";\nvar y = { reactNative: \"react-native\", node: \"node\", browser: \"browser\", unknown: \"unknown\" };\nvar He = \"js\";\nfunction ce() {\n  return typeof process < \"u\" && typeof process.versions < \"u\" && typeof process.versions.node < \"u\";\n}\nfunction _() {\n  return !(0, import_window_getters.getDocument)() && !!(0, import_window_getters.getNavigator)() && navigator.product === qe;\n}\nfunction V() {\n  return !ce() && !!(0, import_window_getters.getNavigator)() && !!(0, import_window_getters.getDocument)();\n}\nfunction P() {\n  return _() ? y.reactNative : ce() ? y.node : V() ? y.browser : y.unknown;\n}\nfunction Ot() {\n  var e2;\n  try {\n    return _() && typeof global < \"u\" && typeof (global == null ? void 0 : global.Application) < \"u\" ? (e2 = global.Application) == null ? void 0 : e2.applicationId : void 0;\n  } catch {\n    return;\n  }\n}\nfunction We(e2, n5) {\n  let t = q.parse(e2);\n  return t = Fe(Fe({}, t), n5), e2 = q.stringify(t), e2;\n}\nfunction Nt() {\n  return (0, import_window_metadata.getWindowMetadata)() || { name: \"\", description: \"\", url: \"\", icons: [\"\"] };\n}\nfunction Je() {\n  if (P() === y.reactNative && typeof global < \"u\" && typeof (global == null ? void 0 : global.Platform) < \"u\") {\n    const { OS: t, Version: r4 } = global.Platform;\n    return [t, r4].join(\"-\");\n  }\n  const e2 = detect();\n  if (e2 === null)\n    return \"unknown\";\n  const n5 = e2.os ? e2.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n  return e2.type === \"browser\" ? [n5, e2.name, e2.version].join(\"-\") : [n5, e2.version].join(\"-\");\n}\nfunction ze() {\n  var e2;\n  const n5 = P();\n  return n5 === y.browser ? [n5, ((e2 = (0, import_window_getters.getLocation)()) == null ? void 0 : e2.host) || \"unknown\"].join(\":\") : n5;\n}\nfunction Ge(e2, n5, t) {\n  const r4 = Je(), o4 = ze();\n  return [[e2, n5].join(\"-\"), [He, t].join(\"-\"), r4, o4].join(\"/\");\n}\nfunction $t({ protocol: e2, version: n5, relayUrl: t, sdkVersion: r4, auth: o4, projectId: s3, useOnCloseEvent: i4, bundleId: u3 }) {\n  const l4 = t.split(\"?\"), c5 = Ge(e2, n5, r4), d3 = { auth: o4, ua: c5, projectId: s3, useOnCloseEvent: i4 || void 0, origin: u3 || void 0 }, a4 = We(l4[1] || \"\", d3);\n  return l4[0] + \"?\" + a4;\n}\nfunction $(e2, n5) {\n  return e2.filter((t) => n5.includes(t)).length === e2.length;\n}\nfunction Tt(e2) {\n  return Object.fromEntries(e2.entries());\n}\nfunction Pt(e2) {\n  return new Map(Object.entries(e2));\n}\nfunction _t(e2 = import_time2.FIVE_MINUTES, n5) {\n  const t = (0, import_time2.toMiliseconds)(e2 || import_time2.FIVE_MINUTES);\n  let r4, o4, s3;\n  return { resolve: (i4) => {\n    s3 && r4 && (clearTimeout(s3), r4(i4));\n  }, reject: (i4) => {\n    s3 && o4 && (clearTimeout(s3), o4(i4));\n  }, done: () => new Promise((i4, u3) => {\n    s3 = setTimeout(() => {\n      u3(new Error(n5));\n    }, t), r4 = i4, o4 = u3;\n  }) };\n}\nfunction kt(e2, n5, t) {\n  return new Promise(async (r4, o4) => {\n    const s3 = setTimeout(() => o4(new Error(t)), n5);\n    try {\n      const i4 = await e2;\n      r4(i4);\n    } catch (i4) {\n      o4(i4);\n    }\n    clearTimeout(s3);\n  });\n}\nfunction ae(e2, n5) {\n  if (typeof n5 == \"string\" && n5.startsWith(`${e2}:`))\n    return n5;\n  if (e2.toLowerCase() === \"topic\") {\n    if (typeof n5 != \"string\")\n      throw new Error('Value must be \"string\" for expirer target type: topic');\n    return `topic:${n5}`;\n  } else if (e2.toLowerCase() === \"id\") {\n    if (typeof n5 != \"number\")\n      throw new Error('Value must be \"number\" for expirer target type: id');\n    return `id:${n5}`;\n  }\n  throw new Error(`Unknown expirer target type: ${e2}`);\n}\nfunction Dt(e2) {\n  return ae(\"topic\", e2);\n}\nfunction xt(e2) {\n  return ae(\"id\", e2);\n}\nfunction Vt(e2) {\n  const [n5, t] = e2.split(\":\"), r4 = { id: void 0, topic: void 0 };\n  if (n5 === \"topic\" && typeof t == \"string\")\n    r4.topic = t;\n  else if (n5 === \"id\" && Number.isInteger(Number(t)))\n    r4.id = Number(t);\n  else\n    throw new Error(`Invalid target, expected id:number or topic:string, got ${n5}:${t}`);\n  return r4;\n}\nfunction Mt(e2, n5) {\n  return (0, import_time2.fromMiliseconds)((n5 || Date.now()) + (0, import_time2.toMiliseconds)(e2));\n}\nfunction Kt(e2) {\n  return Date.now() >= (0, import_time2.toMiliseconds)(e2);\n}\nfunction Lt(e2, n5) {\n  return `${e2}${n5 ? `:${n5}` : \"\"}`;\n}\nfunction N(e2 = [], n5 = []) {\n  return [.../* @__PURE__ */ new Set([...e2, ...n5])];\n}\nasync function Ft({ id: e2, topic: n5, wcDeepLink: t }) {\n  var r4;\n  try {\n    if (!t)\n      return;\n    const o4 = typeof t == \"string\" ? JSON.parse(t) : t, s3 = o4 == null ? void 0 : o4.href;\n    if (typeof s3 != \"string\")\n      return;\n    const i4 = Xe(s3, e2, n5), u3 = P();\n    if (u3 === y.browser) {\n      if (!((r4 = (0, import_window_getters.getDocument)()) != null && r4.hasFocus())) {\n        console.warn(\"Document does not have focus, skipping deeplink.\");\n        return;\n      }\n      i4.startsWith(\"https://\") || i4.startsWith(\"http://\") ? window.open(i4, \"_blank\", \"noreferrer noopener\") : window.open(i4, en() ? \"_blank\" : \"_self\", \"noreferrer noopener\");\n    } else\n      u3 === y.reactNative && typeof (global == null ? void 0 : global.Linking) < \"u\" && await global.Linking.openURL(i4);\n  } catch (o4) {\n    console.error(o4);\n  }\n}\nfunction Xe(e2, n5, t) {\n  const r4 = `requestId=${n5}&sessionTopic=${t}`;\n  e2.endsWith(\"/\") && (e2 = e2.slice(0, -1));\n  let o4 = `${e2}`;\n  if (e2.startsWith(\"https://t.me\")) {\n    const s3 = e2.includes(\"?\") ? \"&startapp=\" : \"?startapp=\";\n    o4 = `${o4}${s3}${nn(r4, true)}`;\n  } else\n    o4 = `${o4}/wc?${r4}`;\n  return o4;\n}\nasync function qt(e2, n5) {\n  let t = \"\";\n  try {\n    if (V() && (t = localStorage.getItem(n5), t))\n      return t;\n    t = await e2.getItem(n5);\n  } catch (r4) {\n    console.error(r4);\n  }\n  return t;\n}\nfunction Bt(e2, n5) {\n  if (!e2.includes(n5))\n    return null;\n  const t = e2.split(/([&,?,=])/), r4 = t.indexOf(n5);\n  return t[r4 + 2];\n}\nfunction Ht() {\n  return typeof crypto < \"u\" && crypto != null && crypto.randomUUID ? crypto.randomUUID() : \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (e2) => {\n    const n5 = Math.random() * 16 | 0;\n    return (e2 === \"x\" ? n5 : n5 & 3 | 8).toString(16);\n  });\n}\nfunction Wt() {\n  return typeof process < \"u\" && process.env.IS_VITEST === \"true\";\n}\nfunction en() {\n  return typeof window < \"u\" && (!!window.TelegramWebviewProxy || !!window.Telegram || !!window.TelegramWebviewProxyProto);\n}\nfunction nn(e2, n5 = false) {\n  const t = Buffer.from(e2).toString(\"base64\");\n  return n5 ? t.replace(/[=]/g, \"\") : t;\n}\nfunction le(e2) {\n  return Buffer.from(e2, \"base64\").toString(\"utf-8\");\n}\nvar Jt = \"https://rpc.walletconnect.org/v1\";\nasync function tn(e2, n5, t, r4, o4, s3) {\n  switch (t.t) {\n    case \"eip191\":\n      return rn(e2, n5, t.s);\n    case \"eip1271\":\n      return await on(e2, n5, t.s, r4, o4, s3);\n    default:\n      throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${t.t}`);\n  }\n}\nfunction rn(e2, n5, t) {\n  return recoverAddress(hashMessage(n5), t).toLowerCase() === e2.toLowerCase();\n}\nasync function on(e2, n5, t, r4, o4, s3) {\n  const i4 = re(r4);\n  if (!i4.namespace || !i4.reference)\n    throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r4}`);\n  try {\n    const u3 = \"0x1626ba7e\", l4 = \"0000000000000000000000000000000000000000000000000000000000000040\", c5 = \"0000000000000000000000000000000000000000000000000000000000000041\", d3 = t.substring(2), a4 = hashMessage(n5).substring(2), f4 = u3 + a4 + l4 + c5 + d3, h5 = await fetch(`${s3 || Jt}/?chainId=${r4}&projectId=${o4}`, { method: \"POST\", body: JSON.stringify({ id: zt(), jsonrpc: \"2.0\", method: \"eth_call\", params: [{ to: e2, data: f4 }, \"latest\"] }) }), { result: p3 } = await h5.json();\n    return p3 ? p3.slice(0, u3.length).toLowerCase() === u3.toLowerCase() : false;\n  } catch (u3) {\n    return console.error(\"isValidEip1271Signature: \", u3), false;\n  }\n}\nfunction zt() {\n  return Date.now() + Math.floor(Math.random() * 1e3);\n}\nvar Gt = Object.defineProperty;\nvar Yt = Object.defineProperties;\nvar Qt = Object.getOwnPropertyDescriptors;\nvar sn = Object.getOwnPropertySymbols;\nvar Zt = Object.prototype.hasOwnProperty;\nvar Xt = Object.prototype.propertyIsEnumerable;\nvar cn = (e2, n5, t) => n5 in e2 ? Gt(e2, n5, { enumerable: true, configurable: true, writable: true, value: t }) : e2[n5] = t;\nvar de = (e2, n5) => {\n  for (var t in n5 || (n5 = {}))\n    Zt.call(n5, t) && cn(e2, t, n5[t]);\n  if (sn)\n    for (var t of sn(n5))\n      Xt.call(n5, t) && cn(e2, t, n5[t]);\n  return e2;\n};\nvar an = (e2, n5) => Yt(e2, Qt(n5));\nvar er = \"did:pkh:\";\nvar z = (e2) => e2 == null ? void 0 : e2.split(\":\");\nvar un = (e2) => {\n  const n5 = e2 && z(e2);\n  if (n5)\n    return e2.includes(er) ? n5[3] : n5[1];\n};\nvar ln = (e2) => {\n  const n5 = e2 && z(e2);\n  if (n5)\n    return n5[2] + \":\" + n5[3];\n};\nvar fe = (e2) => {\n  const n5 = e2 && z(e2);\n  if (n5)\n    return n5.pop();\n};\nasync function nr(e2) {\n  const { cacao: n5, projectId: t } = e2, { s: r4, p: o4 } = n5, s3 = dn(o4, o4.iss), i4 = fe(o4.iss);\n  return await tn(i4, s3, r4, ln(o4.iss), t);\n}\nvar dn = (e2, n5) => {\n  const t = `${e2.domain} wants you to sign in with your Ethereum account:`, r4 = fe(n5);\n  if (!e2.aud && !e2.uri)\n    throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n  let o4 = e2.statement || void 0;\n  const s3 = `URI: ${e2.aud || e2.uri}`, i4 = `Version: ${e2.version}`, u3 = `Chain ID: ${un(n5)}`, l4 = `Nonce: ${e2.nonce}`, c5 = `Issued At: ${e2.iat}`, d3 = e2.exp ? `Expiration Time: ${e2.exp}` : void 0, a4 = e2.nbf ? `Not Before: ${e2.nbf}` : void 0, f4 = e2.requestId ? `Request ID: ${e2.requestId}` : void 0, h5 = e2.resources ? `Resources:${e2.resources.map((m2) => `\n- ${m2}`).join(\"\")}` : void 0, p3 = Y(e2.resources);\n  if (p3) {\n    const m2 = R(p3);\n    o4 = he(o4, m2);\n  }\n  return [t, r4, \"\", o4, \"\", s3, i4, u3, l4, c5, d3, a4, f4, h5].filter((m2) => m2 != null).join(`\n`);\n};\nfunction hn(e2) {\n  return Buffer.from(JSON.stringify(e2)).toString(\"base64\");\n}\nfunction yn(e2) {\n  return JSON.parse(Buffer.from(e2, \"base64\").toString(\"utf-8\"));\n}\nfunction O(e2) {\n  if (!e2)\n    throw new Error(\"No recap provided, value is undefined\");\n  if (!e2.att)\n    throw new Error(\"No `att` property found\");\n  const n5 = Object.keys(e2.att);\n  if (!(n5 != null && n5.length))\n    throw new Error(\"No resources found in `att` property\");\n  n5.forEach((t) => {\n    const r4 = e2.att[t];\n    if (Array.isArray(r4))\n      throw new Error(`Resource must be an object: ${t}`);\n    if (typeof r4 != \"object\")\n      throw new Error(`Resource must be an object: ${t}`);\n    if (!Object.keys(r4).length)\n      throw new Error(`Resource object is empty: ${t}`);\n    Object.keys(r4).forEach((o4) => {\n      const s3 = r4[o4];\n      if (!Array.isArray(s3))\n        throw new Error(`Ability limits ${o4} must be an array of objects, found: ${s3}`);\n      if (!s3.length)\n        throw new Error(`Value of ${o4} is empty array, must be an array with objects`);\n      s3.forEach((i4) => {\n        if (typeof i4 != \"object\")\n          throw new Error(`Ability limits (${o4}) must be an array of objects, found: ${i4}`);\n      });\n    });\n  });\n}\nfunction gn(e2, n5, t, r4 = {}) {\n  return t == null ? void 0 : t.sort((o4, s3) => o4.localeCompare(s3)), { att: { [e2]: pe(n5, t, r4) } };\n}\nfunction pe(e2, n5, t = {}) {\n  n5 = n5 == null ? void 0 : n5.sort((o4, s3) => o4.localeCompare(s3));\n  const r4 = n5.map((o4) => ({ [`${e2}/${o4}`]: [t] }));\n  return Object.assign({}, ...r4);\n}\nfunction G(e2) {\n  return O(e2), `urn:recap:${hn(e2).replace(/=/g, \"\")}`;\n}\nfunction R(e2) {\n  const n5 = yn(e2.replace(\"urn:recap:\", \"\"));\n  return O(n5), n5;\n}\nfunction ir(e2, n5, t) {\n  const r4 = gn(e2, n5, t);\n  return G(r4);\n}\nfunction me(e2) {\n  return e2 && e2.includes(\"urn:recap:\");\n}\nfunction cr(e2, n5) {\n  const t = R(e2), r4 = R(n5), o4 = bn(t, r4);\n  return G(o4);\n}\nfunction bn(e2, n5) {\n  O(e2), O(n5);\n  const t = Object.keys(e2.att).concat(Object.keys(n5.att)).sort((o4, s3) => o4.localeCompare(s3)), r4 = { att: {} };\n  return t.forEach((o4) => {\n    var s3, i4;\n    Object.keys(((s3 = e2.att) == null ? void 0 : s3[o4]) || {}).concat(Object.keys(((i4 = n5.att) == null ? void 0 : i4[o4]) || {})).sort((u3, l4) => u3.localeCompare(l4)).forEach((u3) => {\n      var l4, c5;\n      r4.att[o4] = an(de({}, r4.att[o4]), { [u3]: ((l4 = e2.att[o4]) == null ? void 0 : l4[u3]) || ((c5 = n5.att[o4]) == null ? void 0 : c5[u3]) });\n    });\n  }), r4;\n}\nfunction he(e2 = \"\", n5) {\n  O(n5);\n  const t = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n  if (e2.includes(t))\n    return e2;\n  const r4 = [];\n  let o4 = 0;\n  Object.keys(n5.att).forEach((u3) => {\n    const l4 = Object.keys(n5.att[u3]).map((a4) => ({ ability: a4.split(\"/\")[0], action: a4.split(\"/\")[1] }));\n    l4.sort((a4, f4) => a4.action.localeCompare(f4.action));\n    const c5 = {};\n    l4.forEach((a4) => {\n      c5[a4.ability] || (c5[a4.ability] = []), c5[a4.ability].push(a4.action);\n    });\n    const d3 = Object.keys(c5).map((a4) => (o4++, `(${o4}) '${a4}': '${c5[a4].join(\"', '\")}' for '${u3}'.`));\n    r4.push(d3.join(\", \").replace(\".,\", \".\"));\n  });\n  const s3 = r4.join(\" \"), i4 = `${t}${s3}`;\n  return `${e2 ? e2 + \" \" : \"\"}${i4}`;\n}\nfunction ar(e2) {\n  var n5;\n  const t = R(e2);\n  O(t);\n  const r4 = (n5 = t.att) == null ? void 0 : n5.eip155;\n  return r4 ? Object.keys(r4).map((o4) => o4.split(\"/\")[1]) : [];\n}\nfunction ur(e2) {\n  const n5 = R(e2);\n  O(n5);\n  const t = [];\n  return Object.values(n5.att).forEach((r4) => {\n    Object.values(r4).forEach((o4) => {\n      var s3;\n      (s3 = o4 == null ? void 0 : o4[0]) != null && s3.chains && t.push(o4[0].chains);\n    });\n  }), [...new Set(t.flat())];\n}\nfunction Y(e2) {\n  if (!e2)\n    return;\n  const n5 = e2 == null ? void 0 : e2[e2.length - 1];\n  return me(n5) ? n5 : void 0;\n}\nvar ye = \"base10\";\nvar g = \"base16\";\nvar ge = \"base64pad\";\nvar lr = \"base64url\";\nvar k = \"utf8\";\nvar ve = 0;\nvar D = 1;\nvar M = 2;\nvar dr = 0;\nvar wn = 1;\nvar K = 12;\nvar be = 32;\nfunction fr() {\n  const e2 = _e.generateKeyPair();\n  return { privateKey: toString2(e2.secretKey, g), publicKey: toString2(e2.publicKey, g) };\n}\nfunction pr() {\n  const e2 = (0, import_random2.randomBytes)(be);\n  return toString2(e2, g);\n}\nfunction mr(e2, n5) {\n  const t = _e.sharedKey(fromString2(e2, g), fromString2(n5, g), true), r4 = new import_hkdf.HKDF(import_sha256.SHA256, t).expand(be);\n  return toString2(r4, g);\n}\nfunction hr(e2) {\n  const n5 = (0, import_sha256.hash)(fromString2(e2, g));\n  return toString2(n5, g);\n}\nfunction yr(e2) {\n  const n5 = (0, import_sha256.hash)(fromString2(e2, k));\n  return toString2(n5, g);\n}\nfunction Ee(e2) {\n  return fromString2(`${e2}`, ye);\n}\nfunction A(e2) {\n  return Number(toString2(e2, ye));\n}\nfunction gr(e2) {\n  const n5 = Ee(typeof e2.type < \"u\" ? e2.type : ve);\n  if (A(n5) === D && typeof e2.senderPublicKey > \"u\")\n    throw new Error(\"Missing sender public key for type 1 envelope\");\n  const t = typeof e2.senderPublicKey < \"u\" ? fromString2(e2.senderPublicKey, g) : void 0, r4 = typeof e2.iv < \"u\" ? fromString2(e2.iv, g) : (0, import_random2.randomBytes)(K), o4 = new import_chacha20poly1305.ChaCha20Poly1305(fromString2(e2.symKey, g)).seal(r4, fromString2(e2.message, k));\n  return we({ type: n5, sealed: o4, iv: r4, senderPublicKey: t, encoding: e2.encoding });\n}\nfunction vr(e2, n5) {\n  const t = Ee(M), r4 = (0, import_random2.randomBytes)(K), o4 = fromString2(e2, k);\n  return we({ type: t, sealed: o4, iv: r4, encoding: n5 });\n}\nfunction br(e2) {\n  const n5 = new import_chacha20poly1305.ChaCha20Poly1305(fromString2(e2.symKey, g)), { sealed: t, iv: r4 } = Q({ encoded: e2.encoded, encoding: e2 == null ? void 0 : e2.encoding }), o4 = n5.open(r4, t);\n  if (o4 === null)\n    throw new Error(\"Failed to decrypt\");\n  return toString2(o4, k);\n}\nfunction Er(e2, n5) {\n  const { sealed: t } = Q({ encoded: e2, encoding: n5 });\n  return toString2(t, k);\n}\nfunction we(e2) {\n  const { encoding: n5 = ge } = e2;\n  if (A(e2.type) === M)\n    return toString2(concat2([e2.type, e2.sealed]), n5);\n  if (A(e2.type) === D) {\n    if (typeof e2.senderPublicKey > \"u\")\n      throw new Error(\"Missing sender public key for type 1 envelope\");\n    return toString2(concat2([e2.type, e2.senderPublicKey, e2.iv, e2.sealed]), n5);\n  }\n  return toString2(concat2([e2.type, e2.iv, e2.sealed]), n5);\n}\nfunction Q(e2) {\n  const { encoded: n5, encoding: t = ge } = e2, r4 = fromString2(n5, t), o4 = r4.slice(dr, wn), s3 = wn;\n  if (A(o4) === D) {\n    const c5 = s3 + be, d3 = c5 + K, a4 = r4.slice(s3, c5), f4 = r4.slice(c5, d3), h5 = r4.slice(d3);\n    return { type: o4, sealed: h5, iv: f4, senderPublicKey: a4 };\n  }\n  if (A(o4) === M) {\n    const c5 = r4.slice(s3), d3 = (0, import_random2.randomBytes)(K);\n    return { type: o4, sealed: c5, iv: d3 };\n  }\n  const i4 = s3 + K, u3 = r4.slice(s3, i4), l4 = r4.slice(i4);\n  return { type: o4, sealed: l4, iv: u3 };\n}\nfunction wr(e2, n5) {\n  const t = Q({ encoded: e2, encoding: n5 == null ? void 0 : n5.encoding });\n  return On({ type: A(t.type), senderPublicKey: typeof t.senderPublicKey < \"u\" ? toString2(t.senderPublicKey, g) : void 0, receiverPublicKey: n5 == null ? void 0 : n5.receiverPublicKey });\n}\nfunction On(e2) {\n  const n5 = (e2 == null ? void 0 : e2.type) || ve;\n  if (n5 === D) {\n    if (typeof (e2 == null ? void 0 : e2.senderPublicKey) > \"u\")\n      throw new Error(\"missing sender public key\");\n    if (typeof (e2 == null ? void 0 : e2.receiverPublicKey) > \"u\")\n      throw new Error(\"missing receiver public key\");\n  }\n  return { type: n5, senderPublicKey: e2 == null ? void 0 : e2.senderPublicKey, receiverPublicKey: e2 == null ? void 0 : e2.receiverPublicKey };\n}\nfunction Or(e2) {\n  return e2.type === D && typeof e2.senderPublicKey == \"string\" && typeof e2.receiverPublicKey == \"string\";\n}\nfunction Nr(e2) {\n  return e2.type === M;\n}\nfunction Nn(e2) {\n  return new import_elliptic2.ec(\"p256\").keyFromPublic({ x: Buffer.from(e2.x, \"base64\").toString(\"hex\"), y: Buffer.from(e2.y, \"base64\").toString(\"hex\") }, \"hex\");\n}\nfunction Sr(e2) {\n  let n5 = e2.replace(/-/g, \"+\").replace(/_/g, \"/\");\n  const t = n5.length % 4;\n  return t > 0 && (n5 += \"=\".repeat(4 - t)), n5;\n}\nfunction $r(e2) {\n  return Buffer.from(Sr(e2), \"base64\");\n}\nfunction Rr(e2, n5) {\n  const [t, r4, o4] = e2.split(\".\"), s3 = $r(o4);\n  if (s3.length !== 64)\n    throw new Error(\"Invalid signature length\");\n  const i4 = s3.slice(0, 32).toString(\"hex\"), u3 = s3.slice(32, 64).toString(\"hex\"), l4 = `${t}.${r4}`, c5 = new import_sha256.SHA256().update(Buffer.from(l4)).digest(), d3 = Nn(n5), a4 = Buffer.from(c5).toString(\"hex\");\n  if (!d3.verify(a4, { r: i4, s: u3 }))\n    throw new Error(\"Invalid signature\");\n  return decodeJWT(e2).payload;\n}\nvar Sn = \"irn\";\nfunction Ir(e2) {\n  return (e2 == null ? void 0 : e2.relay) || { protocol: Sn };\n}\nfunction jr(e2) {\n  const n5 = C[e2];\n  if (typeof n5 > \"u\")\n    throw new Error(`Relay Protocol not supported: ${e2}`);\n  return n5;\n}\nvar Tr = Object.defineProperty;\nvar Pr = Object.defineProperties;\nvar Ar = Object.getOwnPropertyDescriptors;\nvar $n = Object.getOwnPropertySymbols;\nvar Cr = Object.prototype.hasOwnProperty;\nvar Ur = Object.prototype.propertyIsEnumerable;\nvar Rn = (e2, n5, t) => n5 in e2 ? Tr(e2, n5, { enumerable: true, configurable: true, writable: true, value: t }) : e2[n5] = t;\nvar In = (e2, n5) => {\n  for (var t in n5 || (n5 = {}))\n    Cr.call(n5, t) && Rn(e2, t, n5[t]);\n  if ($n)\n    for (var t of $n(n5))\n      Ur.call(n5, t) && Rn(e2, t, n5[t]);\n  return e2;\n};\nvar _r = (e2, n5) => Pr(e2, Ar(n5));\nfunction jn(e2, n5 = \"-\") {\n  const t = {}, r4 = \"relay\" + n5;\n  return Object.keys(e2).forEach((o4) => {\n    if (o4.startsWith(r4)) {\n      const s3 = o4.replace(r4, \"\"), i4 = e2[o4];\n      t[s3] = i4;\n    }\n  }), t;\n}\nfunction kr(e2) {\n  if (!e2.includes(\"wc:\")) {\n    const l4 = le(e2);\n    l4 != null && l4.includes(\"wc:\") && (e2 = l4);\n  }\n  e2 = e2.includes(\"wc://\") ? e2.replace(\"wc://\", \"\") : e2, e2 = e2.includes(\"wc:\") ? e2.replace(\"wc:\", \"\") : e2;\n  const n5 = e2.indexOf(\":\"), t = e2.indexOf(\"?\") !== -1 ? e2.indexOf(\"?\") : void 0, r4 = e2.substring(0, n5), o4 = e2.substring(n5 + 1, t).split(\"@\"), s3 = typeof t < \"u\" ? e2.substring(t) : \"\", i4 = q.parse(s3), u3 = typeof i4.methods == \"string\" ? i4.methods.split(\",\") : void 0;\n  return { protocol: r4, topic: Tn(o4[0]), version: parseInt(o4[1], 10), symKey: i4.symKey, relay: jn(i4), methods: u3, expiryTimestamp: i4.expiryTimestamp ? parseInt(i4.expiryTimestamp, 10) : void 0 };\n}\nfunction Tn(e2) {\n  return e2.startsWith(\"//\") ? e2.substring(2) : e2;\n}\nfunction Pn(e2, n5 = \"-\") {\n  const t = \"relay\", r4 = {};\n  return Object.keys(e2).forEach((o4) => {\n    const s3 = t + n5 + o4;\n    e2[o4] && (r4[s3] = e2[o4]);\n  }), r4;\n}\nfunction Dr(e2) {\n  return `${e2.protocol}:${e2.topic}@${e2.version}?` + q.stringify(In(_r(In({ symKey: e2.symKey }, Pn(e2.relay)), { expiryTimestamp: e2.expiryTimestamp }), e2.methods ? { methods: e2.methods.join(\",\") } : {}));\n}\nfunction xr(e2, n5, t) {\n  return `${e2}?wc_ev=${t}&topic=${n5}`;\n}\nfunction C2(e2) {\n  const n5 = [];\n  return e2.forEach((t) => {\n    const [r4, o4] = t.split(\":\");\n    n5.push(`${r4}:${o4}`);\n  }), n5;\n}\nfunction Un(e2) {\n  const n5 = [];\n  return Object.values(e2).forEach((t) => {\n    n5.push(...C2(t.accounts));\n  }), n5;\n}\nfunction _n(e2, n5) {\n  const t = [];\n  return Object.values(e2).forEach((r4) => {\n    C2(r4.accounts).includes(n5) && t.push(...r4.methods);\n  }), t;\n}\nfunction kn(e2, n5) {\n  const t = [];\n  return Object.values(e2).forEach((r4) => {\n    C2(r4.accounts).includes(n5) && t.push(...r4.events);\n  }), t;\n}\nfunction Oe(e2) {\n  return e2.includes(\":\");\n}\nfunction Dn(e2) {\n  return Oe(e2) ? e2.split(\":\")[0] : e2;\n}\nfunction xn(e2) {\n  const n5 = {};\n  return e2 == null ? void 0 : e2.forEach((t) => {\n    const [r4, o4] = t.split(\":\");\n    n5[r4] || (n5[r4] = { accounts: [], chains: [], events: [] }), n5[r4].accounts.push(t), n5[r4].chains.push(`${r4}:${o4}`);\n  }), n5;\n}\nfunction Jr(e2, n5) {\n  n5 = n5.map((r4) => r4.replace(\"did:pkh:\", \"\"));\n  const t = xn(n5);\n  for (const [r4, o4] of Object.entries(t))\n    o4.methods ? o4.methods = N(o4.methods, e2) : o4.methods = e2, o4.events = [\"chainChanged\", \"accountsChanged\"];\n  return t;\n}\nvar Vn = { INVALID_METHOD: { message: \"Invalid method.\", code: 1001 }, INVALID_EVENT: { message: \"Invalid event.\", code: 1002 }, INVALID_UPDATE_REQUEST: { message: \"Invalid update request.\", code: 1003 }, INVALID_EXTEND_REQUEST: { message: \"Invalid extend request.\", code: 1004 }, INVALID_SESSION_SETTLE_REQUEST: { message: \"Invalid session settle request.\", code: 1005 }, UNAUTHORIZED_METHOD: { message: \"Unauthorized method.\", code: 3001 }, UNAUTHORIZED_EVENT: { message: \"Unauthorized event.\", code: 3002 }, UNAUTHORIZED_UPDATE_REQUEST: { message: \"Unauthorized update request.\", code: 3003 }, UNAUTHORIZED_EXTEND_REQUEST: { message: \"Unauthorized extend request.\", code: 3004 }, USER_REJECTED: { message: \"User rejected.\", code: 5e3 }, USER_REJECTED_CHAINS: { message: \"User rejected chains.\", code: 5001 }, USER_REJECTED_METHODS: { message: \"User rejected methods.\", code: 5002 }, USER_REJECTED_EVENTS: { message: \"User rejected events.\", code: 5003 }, UNSUPPORTED_CHAINS: { message: \"Unsupported chains.\", code: 5100 }, UNSUPPORTED_METHODS: { message: \"Unsupported methods.\", code: 5101 }, UNSUPPORTED_EVENTS: { message: \"Unsupported events.\", code: 5102 }, UNSUPPORTED_ACCOUNTS: { message: \"Unsupported accounts.\", code: 5103 }, UNSUPPORTED_NAMESPACE_KEY: { message: \"Unsupported namespace key.\", code: 5104 }, USER_DISCONNECTED: { message: \"User disconnected.\", code: 6e3 }, SESSION_SETTLEMENT_FAILED: { message: \"Session settlement failed.\", code: 7e3 }, WC_METHOD_UNSUPPORTED: { message: \"Unsupported wc_ method.\", code: 10001 } };\nvar Mn = { NOT_INITIALIZED: { message: \"Not initialized.\", code: 1 }, NO_MATCHING_KEY: { message: \"No matching key.\", code: 2 }, RESTORE_WILL_OVERRIDE: { message: \"Restore will override.\", code: 3 }, RESUBSCRIBED: { message: \"Resubscribed.\", code: 4 }, MISSING_OR_INVALID: { message: \"Missing or invalid.\", code: 5 }, EXPIRED: { message: \"Expired.\", code: 6 }, UNKNOWN_TYPE: { message: \"Unknown type.\", code: 7 }, MISMATCHED_TOPIC: { message: \"Mismatched topic.\", code: 8 }, NON_CONFORMING_NAMESPACES: { message: \"Non conforming namespaces.\", code: 9 } };\nfunction S(e2, n5) {\n  const { message: t, code: r4 } = Mn[e2];\n  return { message: n5 ? `${t} ${n5}` : t, code: r4 };\n}\nfunction U(e2, n5) {\n  const { message: t, code: r4 } = Vn[e2];\n  return { message: n5 ? `${t} ${n5}` : t, code: r4 };\n}\nfunction L(e2, n5) {\n  return Array.isArray(e2) ? typeof n5 < \"u\" && e2.length ? e2.every(n5) : true : false;\n}\nfunction Z(e2) {\n  return Object.getPrototypeOf(e2) === Object.prototype && Object.keys(e2).length;\n}\nfunction I(e2) {\n  return typeof e2 > \"u\";\n}\nfunction b(e2, n5) {\n  return n5 && I(e2) ? true : typeof e2 == \"string\" && !!e2.trim().length;\n}\nfunction X(e2, n5) {\n  return n5 && I(e2) ? true : typeof e2 == \"number\" && !isNaN(e2);\n}\nfunction zr(e2, n5) {\n  const { requiredNamespaces: t } = n5, r4 = Object.keys(e2.namespaces), o4 = Object.keys(t);\n  let s3 = true;\n  return $(o4, r4) ? (r4.forEach((i4) => {\n    const { accounts: u3, methods: l4, events: c5 } = e2.namespaces[i4], d3 = C2(u3), a4 = t[i4];\n    (!$(W(i4, a4), d3) || !$(a4.methods, l4) || !$(a4.events, c5)) && (s3 = false);\n  }), s3) : false;\n}\nfunction F(e2) {\n  return b(e2, false) && e2.includes(\":\") ? e2.split(\":\").length === 2 : false;\n}\nfunction Kn(e2) {\n  if (b(e2, false) && e2.includes(\":\")) {\n    const n5 = e2.split(\":\");\n    if (n5.length === 3) {\n      const t = n5[0] + \":\" + n5[1];\n      return !!n5[2] && F(t);\n    }\n  }\n  return false;\n}\nfunction Gr(e2) {\n  function n5(t) {\n    try {\n      return typeof new URL(t) < \"u\";\n    } catch {\n      return false;\n    }\n  }\n  try {\n    if (b(e2, false)) {\n      if (n5(e2))\n        return true;\n      const t = le(e2);\n      return n5(t);\n    }\n  } catch {\n  }\n  return false;\n}\nfunction Yr(e2) {\n  var n5;\n  return (n5 = e2 == null ? void 0 : e2.proposer) == null ? void 0 : n5.publicKey;\n}\nfunction Qr(e2) {\n  return e2 == null ? void 0 : e2.topic;\n}\nfunction Zr(e2, n5) {\n  let t = null;\n  return b(e2 == null ? void 0 : e2.publicKey, false) || (t = S(\"MISSING_OR_INVALID\", `${n5} controller public key should be a string`)), t;\n}\nfunction Se(e2) {\n  let n5 = true;\n  return L(e2) ? e2.length && (n5 = e2.every((t) => b(t, false))) : n5 = false, n5;\n}\nfunction Ln(e2, n5, t) {\n  let r4 = null;\n  return L(n5) && n5.length ? n5.forEach((o4) => {\n    r4 || F(o4) || (r4 = U(\"UNSUPPORTED_CHAINS\", `${t}, chain ${o4} should be a string and conform to \"namespace:chainId\" format`));\n  }) : F(e2) || (r4 = U(\"UNSUPPORTED_CHAINS\", `${t}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`)), r4;\n}\nfunction Fn(e2, n5, t) {\n  let r4 = null;\n  return Object.entries(e2).forEach(([o4, s3]) => {\n    if (r4)\n      return;\n    const i4 = Ln(o4, W(o4, s3), `${n5} ${t}`);\n    i4 && (r4 = i4);\n  }), r4;\n}\nfunction qn(e2, n5) {\n  let t = null;\n  return L(e2) ? e2.forEach((r4) => {\n    t || Kn(r4) || (t = U(\"UNSUPPORTED_ACCOUNTS\", `${n5}, account ${r4} should be a string and conform to \"namespace:chainId:address\" format`));\n  }) : t = U(\"UNSUPPORTED_ACCOUNTS\", `${n5}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`), t;\n}\nfunction Bn(e2, n5) {\n  let t = null;\n  return Object.values(e2).forEach((r4) => {\n    if (t)\n      return;\n    const o4 = qn(r4 == null ? void 0 : r4.accounts, `${n5} namespace`);\n    o4 && (t = o4);\n  }), t;\n}\nfunction Hn(e2, n5) {\n  let t = null;\n  return Se(e2 == null ? void 0 : e2.methods) ? Se(e2 == null ? void 0 : e2.events) || (t = U(\"UNSUPPORTED_EVENTS\", `${n5}, events should be an array of strings or empty array for no events`)) : t = U(\"UNSUPPORTED_METHODS\", `${n5}, methods should be an array of strings or empty array for no methods`), t;\n}\nfunction $e(e2, n5) {\n  let t = null;\n  return Object.values(e2).forEach((r4) => {\n    if (t)\n      return;\n    const o4 = Hn(r4, `${n5}, namespace`);\n    o4 && (t = o4);\n  }), t;\n}\nfunction Xr(e2, n5, t) {\n  let r4 = null;\n  if (e2 && Z(e2)) {\n    const o4 = $e(e2, n5);\n    o4 && (r4 = o4);\n    const s3 = Fn(e2, n5, t);\n    s3 && (r4 = s3);\n  } else\n    r4 = S(\"MISSING_OR_INVALID\", `${n5}, ${t} should be an object with data`);\n  return r4;\n}\nfunction Wn(e2, n5) {\n  let t = null;\n  if (e2 && Z(e2)) {\n    const r4 = $e(e2, n5);\n    r4 && (t = r4);\n    const o4 = Bn(e2, n5);\n    o4 && (t = o4);\n  } else\n    t = S(\"MISSING_OR_INVALID\", `${n5}, namespaces should be an object with data`);\n  return t;\n}\nfunction Jn(e2) {\n  return b(e2.protocol, true);\n}\nfunction eo(e2, n5) {\n  let t = false;\n  return n5 && !e2 ? t = true : e2 && L(e2) && e2.length && e2.forEach((r4) => {\n    t = Jn(r4);\n  }), t;\n}\nfunction no(e2) {\n  return typeof e2 == \"number\";\n}\nfunction to(e2) {\n  return typeof e2 < \"u\" && typeof e2 !== null;\n}\nfunction ro(e2) {\n  return !(!e2 || typeof e2 != \"object\" || !e2.code || !X(e2.code, false) || !e2.message || !b(e2.message, false));\n}\nfunction oo(e2) {\n  return !(I(e2) || !b(e2.method, false));\n}\nfunction so(e2) {\n  return !(I(e2) || I(e2.result) && I(e2.error) || !X(e2.id, false) || !b(e2.jsonrpc, false));\n}\nfunction io(e2) {\n  return !(I(e2) || !b(e2.name, false));\n}\nfunction co(e2, n5) {\n  return !(!F(n5) || !Un(e2).includes(n5));\n}\nfunction ao(e2, n5, t) {\n  return b(t, false) ? _n(e2, n5).includes(t) : false;\n}\nfunction uo(e2, n5, t) {\n  return b(t, false) ? kn(e2, n5).includes(t) : false;\n}\nfunction zn(e2, n5, t) {\n  let r4 = null;\n  const o4 = lo(e2), s3 = fo(n5), i4 = Object.keys(o4), u3 = Object.keys(s3), l4 = Gn(Object.keys(e2)), c5 = Gn(Object.keys(n5)), d3 = l4.filter((a4) => !c5.includes(a4));\n  return d3.length && (r4 = S(\"NON_CONFORMING_NAMESPACES\", `${t} namespaces keys don't satisfy requiredNamespaces.\n      Required: ${d3.toString()}\n      Received: ${Object.keys(n5).toString()}`)), $(i4, u3) || (r4 = S(\"NON_CONFORMING_NAMESPACES\", `${t} namespaces chains don't satisfy required namespaces.\n      Required: ${i4.toString()}\n      Approved: ${u3.toString()}`)), Object.keys(n5).forEach((a4) => {\n    if (!a4.includes(\":\") || r4)\n      return;\n    const f4 = C2(n5[a4].accounts);\n    f4.includes(a4) || (r4 = S(\"NON_CONFORMING_NAMESPACES\", `${t} namespaces accounts don't satisfy namespace accounts for ${a4}\n        Required: ${a4}\n        Approved: ${f4.toString()}`));\n  }), i4.forEach((a4) => {\n    r4 || ($(o4[a4].methods, s3[a4].methods) ? $(o4[a4].events, s3[a4].events) || (r4 = S(\"NON_CONFORMING_NAMESPACES\", `${t} namespaces events don't satisfy namespace events for ${a4}`)) : r4 = S(\"NON_CONFORMING_NAMESPACES\", `${t} namespaces methods don't satisfy namespace methods for ${a4}`));\n  }), r4;\n}\nfunction lo(e2) {\n  const n5 = {};\n  return Object.keys(e2).forEach((t) => {\n    var r4;\n    t.includes(\":\") ? n5[t] = e2[t] : (r4 = e2[t].chains) == null || r4.forEach((o4) => {\n      n5[o4] = { methods: e2[t].methods, events: e2[t].events };\n    });\n  }), n5;\n}\nfunction Gn(e2) {\n  return [...new Set(e2.map((n5) => n5.includes(\":\") ? n5.split(\":\")[0] : n5))];\n}\nfunction fo(e2) {\n  const n5 = {};\n  return Object.keys(e2).forEach((t) => {\n    if (t.includes(\":\"))\n      n5[t] = e2[t];\n    else {\n      const r4 = C2(e2[t].accounts);\n      r4 == null ? void 0 : r4.forEach((o4) => {\n        n5[o4] = { accounts: e2[t].accounts.filter((s3) => s3.includes(`${o4}:`)), methods: e2[t].methods, events: e2[t].events };\n      });\n    }\n  }), n5;\n}\nfunction po(e2, n5) {\n  return X(e2, false) && e2 <= n5.max && e2 >= n5.min;\n}\nfunction mo() {\n  const e2 = P();\n  return new Promise((n5) => {\n    switch (e2) {\n      case y.browser:\n        n5(Yn());\n        break;\n      case y.reactNative:\n        n5(Qn());\n        break;\n      case y.node:\n        n5(Zn());\n        break;\n      default:\n        n5(true);\n    }\n  });\n}\nfunction Yn() {\n  return V() && (navigator == null ? void 0 : navigator.onLine);\n}\nasync function Qn() {\n  if (_() && typeof global < \"u\" && global != null && global.NetInfo) {\n    const e2 = await (global == null ? void 0 : global.NetInfo.fetch());\n    return e2 == null ? void 0 : e2.isConnected;\n  }\n  return true;\n}\nfunction Zn() {\n  return true;\n}\nfunction ho(e2) {\n  switch (P()) {\n    case y.browser:\n      Xn(e2);\n      break;\n    case y.reactNative:\n      et(e2);\n      break;\n    case y.node:\n      break;\n  }\n}\nfunction Xn(e2) {\n  !_() && V() && (window.addEventListener(\"online\", () => e2(true)), window.addEventListener(\"offline\", () => e2(false)));\n}\nfunction et(e2) {\n  _() && typeof global < \"u\" && global != null && global.NetInfo && (global == null ? void 0 : global.NetInfo.addEventListener((n5) => e2(n5 == null ? void 0 : n5.isConnected)));\n}\nvar Re = {};\nvar yo = class {\n  static get(n5) {\n    return Re[n5];\n  }\n  static set(n5, t) {\n    Re[n5] = t;\n  }\n  static delete(n5) {\n    delete Re[n5];\n  }\n};\n\n// node_modules/@walletconnect/logger/dist/index.es.js\nvar import_pino = __toESM(require_browser2());\nvar import_pino2 = __toESM(require_browser2());\nvar c = { level: \"info\" };\nvar n = \"custom_context\";\nvar l = 1e3 * 1024;\nvar O2 = class {\n  constructor(e2) {\n    this.nodeValue = e2, this.sizeInBytes = new TextEncoder().encode(this.nodeValue).length, this.next = null;\n  }\n  get value() {\n    return this.nodeValue;\n  }\n  get size() {\n    return this.sizeInBytes;\n  }\n};\nvar d = class {\n  constructor(e2) {\n    this.head = null, this.tail = null, this.lengthInNodes = 0, this.maxSizeInBytes = e2, this.sizeInBytes = 0;\n  }\n  append(e2) {\n    const t = new O2(e2);\n    if (t.size > this.maxSizeInBytes)\n      throw new Error(`[LinkedList] Value too big to insert into list: ${e2} with size ${t.size}`);\n    for (; this.size + t.size > this.maxSizeInBytes; )\n      this.shift();\n    this.head ? (this.tail && (this.tail.next = t), this.tail = t) : (this.head = t, this.tail = t), this.lengthInNodes++, this.sizeInBytes += t.size;\n  }\n  shift() {\n    if (!this.head)\n      return;\n    const e2 = this.head;\n    this.head = this.head.next, this.head || (this.tail = null), this.lengthInNodes--, this.sizeInBytes -= e2.size;\n  }\n  toArray() {\n    const e2 = [];\n    let t = this.head;\n    for (; t !== null; )\n      e2.push(t.value), t = t.next;\n    return e2;\n  }\n  get length() {\n    return this.lengthInNodes;\n  }\n  get size() {\n    return this.sizeInBytes;\n  }\n  toOrderedArray() {\n    return Array.from(this);\n  }\n  [Symbol.iterator]() {\n    let e2 = this.head;\n    return { next: () => {\n      if (!e2)\n        return { done: true, value: null };\n      const t = e2.value;\n      return e2 = e2.next, { done: false, value: t };\n    } };\n  }\n};\nvar L2 = class {\n  constructor(e2, t = l) {\n    this.level = e2 ?? \"error\", this.levelValue = import_pino.levels.values[this.level], this.MAX_LOG_SIZE_IN_BYTES = t, this.logs = new d(this.MAX_LOG_SIZE_IN_BYTES);\n  }\n  forwardToConsole(e2, t) {\n    t === import_pino.levels.values.error ? console.error(e2) : t === import_pino.levels.values.warn ? console.warn(e2) : t === import_pino.levels.values.debug ? console.debug(e2) : t === import_pino.levels.values.trace ? console.trace(e2) : console.log(e2);\n  }\n  appendToLogs(e2) {\n    this.logs.append(safeJsonStringify({ timestamp: (/* @__PURE__ */ new Date()).toISOString(), log: e2 }));\n    const t = typeof e2 == \"string\" ? JSON.parse(e2).level : e2.level;\n    t >= this.levelValue && this.forwardToConsole(e2, t);\n  }\n  getLogs() {\n    return this.logs;\n  }\n  clearLogs() {\n    this.logs = new d(this.MAX_LOG_SIZE_IN_BYTES);\n  }\n  getLogArray() {\n    return Array.from(this.logs);\n  }\n  logsToBlob(e2) {\n    const t = this.getLogArray();\n    return t.push(safeJsonStringify({ extraMetadata: e2 })), new Blob(t, { type: \"application/json\" });\n  }\n};\nvar m = class {\n  constructor(e2, t = l) {\n    this.baseChunkLogger = new L2(e2, t);\n  }\n  write(e2) {\n    this.baseChunkLogger.appendToLogs(e2);\n  }\n  getLogs() {\n    return this.baseChunkLogger.getLogs();\n  }\n  clearLogs() {\n    this.baseChunkLogger.clearLogs();\n  }\n  getLogArray() {\n    return this.baseChunkLogger.getLogArray();\n  }\n  logsToBlob(e2) {\n    return this.baseChunkLogger.logsToBlob(e2);\n  }\n  downloadLogsBlobInBrowser(e2) {\n    const t = URL.createObjectURL(this.logsToBlob(e2)), o4 = document.createElement(\"a\");\n    o4.href = t, o4.download = `walletconnect-logs-${(/* @__PURE__ */ new Date()).toISOString()}.txt`, document.body.appendChild(o4), o4.click(), document.body.removeChild(o4), URL.revokeObjectURL(t);\n  }\n};\nvar B2 = class {\n  constructor(e2, t = l) {\n    this.baseChunkLogger = new L2(e2, t);\n  }\n  write(e2) {\n    this.baseChunkLogger.appendToLogs(e2);\n  }\n  getLogs() {\n    return this.baseChunkLogger.getLogs();\n  }\n  clearLogs() {\n    this.baseChunkLogger.clearLogs();\n  }\n  getLogArray() {\n    return this.baseChunkLogger.getLogArray();\n  }\n  logsToBlob(e2) {\n    return this.baseChunkLogger.logsToBlob(e2);\n  }\n};\nvar x = Object.defineProperty;\nvar S2 = Object.defineProperties;\nvar _2 = Object.getOwnPropertyDescriptors;\nvar p = Object.getOwnPropertySymbols;\nvar T = Object.prototype.hasOwnProperty;\nvar z2 = Object.prototype.propertyIsEnumerable;\nvar f = (r4, e2, t) => e2 in r4 ? x(r4, e2, { enumerable: true, configurable: true, writable: true, value: t }) : r4[e2] = t;\nvar i = (r4, e2) => {\n  for (var t in e2 || (e2 = {}))\n    T.call(e2, t) && f(r4, t, e2[t]);\n  if (p)\n    for (var t of p(e2))\n      z2.call(e2, t) && f(r4, t, e2[t]);\n  return r4;\n};\nvar g2 = (r4, e2) => S2(r4, _2(e2));\nfunction k2(r4) {\n  return g2(i({}, r4), { level: (r4 == null ? void 0 : r4.level) || c.level });\n}\nfunction v(r4, e2 = n) {\n  return r4[e2] || \"\";\n}\nfunction b2(r4, e2, t = n) {\n  return r4[t] = e2, r4;\n}\nfunction y2(r4, e2 = n) {\n  let t = \"\";\n  return typeof r4.bindings > \"u\" ? t = v(r4, e2) : t = r4.bindings().context || \"\", t;\n}\nfunction w(r4, e2, t = n) {\n  const o4 = y2(r4, t);\n  return o4.trim() ? `${o4}/${e2}` : e2;\n}\nfunction E(r4, e2, t = n) {\n  const o4 = w(r4, e2, t), a4 = r4.child({ context: o4 });\n  return b2(a4, o4, t);\n}\nfunction C3(r4) {\n  var e2, t;\n  const o4 = new m((e2 = r4.opts) == null ? void 0 : e2.level, r4.maxSizeInBytes);\n  return { logger: (0, import_pino.default)(g2(i({}, r4.opts), { level: \"trace\", browser: g2(i({}, (t = r4.opts) == null ? void 0 : t.browser), { write: (a4) => o4.write(a4) }) })), chunkLoggerController: o4 };\n}\nfunction I2(r4) {\n  var e2;\n  const t = new B2((e2 = r4.opts) == null ? void 0 : e2.level, r4.maxSizeInBytes);\n  return { logger: (0, import_pino.default)(g2(i({}, r4.opts), { level: \"trace\" }), t), chunkLoggerController: t };\n}\nfunction A2(r4) {\n  return typeof r4.loggerOverride < \"u\" && typeof r4.loggerOverride != \"string\" ? { logger: r4.loggerOverride, chunkLoggerController: null } : typeof window < \"u\" ? C3(r4) : I2(r4);\n}\n\n// node_modules/@walletconnect/jsonrpc-utils/dist/esm/constants.js\nvar PARSE_ERROR = \"PARSE_ERROR\";\nvar INVALID_REQUEST = \"INVALID_REQUEST\";\nvar METHOD_NOT_FOUND = \"METHOD_NOT_FOUND\";\nvar INVALID_PARAMS = \"INVALID_PARAMS\";\nvar INTERNAL_ERROR = \"INTERNAL_ERROR\";\nvar SERVER_ERROR = \"SERVER_ERROR\";\nvar RESERVED_ERROR_CODES = [-32700, -32600, -32601, -32602, -32603];\nvar SERVER_ERROR_CODE_RANGE = [-32e3, -32099];\nvar STANDARD_ERROR_MAP = {\n  [PARSE_ERROR]: { code: -32700, message: \"Parse error\" },\n  [INVALID_REQUEST]: { code: -32600, message: \"Invalid Request\" },\n  [METHOD_NOT_FOUND]: { code: -32601, message: \"Method not found\" },\n  [INVALID_PARAMS]: { code: -32602, message: \"Invalid params\" },\n  [INTERNAL_ERROR]: { code: -32603, message: \"Internal error\" },\n  [SERVER_ERROR]: { code: -32e3, message: \"Server error\" }\n};\nvar DEFAULT_ERROR = SERVER_ERROR;\n\n// node_modules/@walletconnect/jsonrpc-utils/dist/esm/error.js\nfunction isServerErrorCode(code2) {\n  return code2 <= SERVER_ERROR_CODE_RANGE[0] && code2 >= SERVER_ERROR_CODE_RANGE[1];\n}\nfunction isReservedErrorCode(code2) {\n  return RESERVED_ERROR_CODES.includes(code2);\n}\nfunction isValidErrorCode(code2) {\n  return typeof code2 === \"number\";\n}\nfunction getError(type) {\n  if (!Object.keys(STANDARD_ERROR_MAP).includes(type)) {\n    return STANDARD_ERROR_MAP[DEFAULT_ERROR];\n  }\n  return STANDARD_ERROR_MAP[type];\n}\nfunction getErrorByCode(code2) {\n  const match = Object.values(STANDARD_ERROR_MAP).find((e2) => e2.code === code2);\n  if (!match) {\n    return STANDARD_ERROR_MAP[DEFAULT_ERROR];\n  }\n  return match;\n}\nfunction validateJsonRpcError(response) {\n  if (typeof response.error.code === \"undefined\") {\n    return { valid: false, error: \"Missing code for JSON-RPC error\" };\n  }\n  if (typeof response.error.message === \"undefined\") {\n    return { valid: false, error: \"Missing message for JSON-RPC error\" };\n  }\n  if (!isValidErrorCode(response.error.code)) {\n    return {\n      valid: false,\n      error: `Invalid error code type for JSON-RPC: ${response.error.code}`\n    };\n  }\n  if (isReservedErrorCode(response.error.code)) {\n    const error = getErrorByCode(response.error.code);\n    if (error.message !== STANDARD_ERROR_MAP[DEFAULT_ERROR].message && response.error.message === error.message) {\n      return {\n        valid: false,\n        error: `Invalid error code message for JSON-RPC: ${response.error.code}`\n      };\n    }\n  }\n  return { valid: true };\n}\nfunction parseConnectionError(e2, url, type) {\n  return e2.message.includes(\"getaddrinfo ENOTFOUND\") || e2.message.includes(\"connect ECONNREFUSED\") ? new Error(`Unavailable ${type} RPC url at ${url}`) : e2;\n}\n\n// node_modules/@walletconnect/jsonrpc-utils/dist/esm/format.js\nfunction payloadId(entropy = 3) {\n  const date = Date.now() * Math.pow(10, entropy);\n  const extra = Math.floor(Math.random() * Math.pow(10, entropy));\n  return date + extra;\n}\nfunction getBigIntRpcId(entropy = 6) {\n  return BigInt(payloadId(entropy));\n}\nfunction formatJsonRpcRequest(method, params, id2) {\n  return {\n    id: id2 || payloadId(),\n    jsonrpc: \"2.0\",\n    method,\n    params\n  };\n}\nfunction formatJsonRpcResult(id2, result) {\n  return {\n    id: id2,\n    jsonrpc: \"2.0\",\n    result\n  };\n}\nfunction formatJsonRpcError(id2, error, data) {\n  return {\n    id: id2,\n    jsonrpc: \"2.0\",\n    error: formatErrorMessage(error, data)\n  };\n}\nfunction formatErrorMessage(error, data) {\n  if (typeof error === \"undefined\") {\n    return getError(INTERNAL_ERROR);\n  }\n  if (typeof error === \"string\") {\n    error = Object.assign(Object.assign({}, getError(SERVER_ERROR)), { message: error });\n  }\n  if (typeof data !== \"undefined\") {\n    error.data = data;\n  }\n  if (isReservedErrorCode(error.code)) {\n    error = getErrorByCode(error.code);\n  }\n  return error;\n}\n\n// node_modules/@walletconnect/jsonrpc-utils/dist/esm/index.js\nvar esm_exports = {};\n__export(esm_exports, {\n  DEFAULT_ERROR: () => DEFAULT_ERROR,\n  IBaseJsonRpcProvider: () => n2,\n  IEvents: () => e,\n  IJsonRpcConnection: () => o,\n  IJsonRpcProvider: () => r2,\n  INTERNAL_ERROR: () => INTERNAL_ERROR,\n  INVALID_PARAMS: () => INVALID_PARAMS,\n  INVALID_REQUEST: () => INVALID_REQUEST,\n  METHOD_NOT_FOUND: () => METHOD_NOT_FOUND,\n  PARSE_ERROR: () => PARSE_ERROR,\n  RESERVED_ERROR_CODES: () => RESERVED_ERROR_CODES,\n  SERVER_ERROR: () => SERVER_ERROR,\n  SERVER_ERROR_CODE_RANGE: () => SERVER_ERROR_CODE_RANGE,\n  STANDARD_ERROR_MAP: () => STANDARD_ERROR_MAP,\n  formatErrorMessage: () => formatErrorMessage,\n  formatJsonRpcError: () => formatJsonRpcError,\n  formatJsonRpcRequest: () => formatJsonRpcRequest,\n  formatJsonRpcResult: () => formatJsonRpcResult,\n  getBigIntRpcId: () => getBigIntRpcId,\n  getError: () => getError,\n  getErrorByCode: () => getErrorByCode,\n  isHttpUrl: () => isHttpUrl,\n  isJsonRpcError: () => isJsonRpcError,\n  isJsonRpcPayload: () => isJsonRpcPayload,\n  isJsonRpcRequest: () => isJsonRpcRequest,\n  isJsonRpcResponse: () => isJsonRpcResponse,\n  isJsonRpcResult: () => isJsonRpcResult,\n  isJsonRpcValidationInvalid: () => isJsonRpcValidationInvalid,\n  isLocalhostUrl: () => isLocalhostUrl,\n  isNodeJs: () => isNodeJs,\n  isReservedErrorCode: () => isReservedErrorCode,\n  isServerErrorCode: () => isServerErrorCode,\n  isValidDefaultRoute: () => isValidDefaultRoute,\n  isValidErrorCode: () => isValidErrorCode,\n  isValidLeadingWildcardRoute: () => isValidLeadingWildcardRoute,\n  isValidRoute: () => isValidRoute,\n  isValidTrailingWildcardRoute: () => isValidTrailingWildcardRoute,\n  isValidWildcardRoute: () => isValidWildcardRoute,\n  isWsUrl: () => isWsUrl,\n  parseConnectionError: () => parseConnectionError,\n  payloadId: () => payloadId,\n  validateJsonRpcError: () => validateJsonRpcError\n});\n\n// node_modules/@walletconnect/jsonrpc-utils/dist/esm/env.js\nvar env_exports = {};\n__export(env_exports, {\n  isNodeJs: () => isNodeJs\n});\nvar import_environment = __toESM(require_cjs4());\n__reExport(env_exports, __toESM(require_cjs4()));\nvar isNodeJs = import_environment.isNode;\n\n// node_modules/@walletconnect/jsonrpc-utils/dist/esm/index.js\n__reExport(esm_exports, env_exports);\n\n// node_modules/@walletconnect/jsonrpc-utils/dist/esm/routing.js\nfunction isValidRoute(route) {\n  if (route.includes(\"*\")) {\n    return isValidWildcardRoute(route);\n  }\n  if (/\\W/g.test(route)) {\n    return false;\n  }\n  return true;\n}\nfunction isValidDefaultRoute(route) {\n  return route === \"*\";\n}\nfunction isValidWildcardRoute(route) {\n  if (isValidDefaultRoute(route)) {\n    return true;\n  }\n  if (!route.includes(\"*\")) {\n    return false;\n  }\n  if (route.split(\"*\").length !== 2) {\n    return false;\n  }\n  if (route.split(\"*\").filter((x6) => x6.trim() === \"\").length !== 1) {\n    return false;\n  }\n  return true;\n}\nfunction isValidLeadingWildcardRoute(route) {\n  return !isValidDefaultRoute(route) && isValidWildcardRoute(route) && !route.split(\"*\")[0].trim();\n}\nfunction isValidTrailingWildcardRoute(route) {\n  return !isValidDefaultRoute(route) && isValidWildcardRoute(route) && !route.split(\"*\")[1].trim();\n}\n\n// node_modules/@walletconnect/jsonrpc-types/dist/index.es.js\nvar e = class {\n};\nvar o = class extends e {\n  constructor(c5) {\n    super();\n  }\n};\nvar n2 = class extends e {\n  constructor() {\n    super();\n  }\n};\nvar r2 = class extends n2 {\n  constructor(c5) {\n    super();\n  }\n};\n\n// node_modules/@walletconnect/jsonrpc-utils/dist/esm/url.js\nvar HTTP_REGEX = \"^https?:\";\nvar WS_REGEX = \"^wss?:\";\nfunction getUrlProtocol(url) {\n  const matches = url.match(new RegExp(/^\\w+:/, \"gi\"));\n  if (!matches || !matches.length)\n    return;\n  return matches[0];\n}\nfunction matchRegexProtocol(url, regex) {\n  const protocol = getUrlProtocol(url);\n  if (typeof protocol === \"undefined\")\n    return false;\n  return new RegExp(regex).test(protocol);\n}\nfunction isHttpUrl(url) {\n  return matchRegexProtocol(url, HTTP_REGEX);\n}\nfunction isWsUrl(url) {\n  return matchRegexProtocol(url, WS_REGEX);\n}\nfunction isLocalhostUrl(url) {\n  return new RegExp(\"wss?://localhost(:d{2,5})?\").test(url);\n}\n\n// node_modules/@walletconnect/jsonrpc-utils/dist/esm/validators.js\nfunction isJsonRpcPayload(payload) {\n  return typeof payload === \"object\" && \"id\" in payload && \"jsonrpc\" in payload && payload.jsonrpc === \"2.0\";\n}\nfunction isJsonRpcRequest(payload) {\n  return isJsonRpcPayload(payload) && \"method\" in payload;\n}\nfunction isJsonRpcResponse(payload) {\n  return isJsonRpcPayload(payload) && (isJsonRpcResult(payload) || isJsonRpcError(payload));\n}\nfunction isJsonRpcResult(payload) {\n  return \"result\" in payload;\n}\nfunction isJsonRpcError(payload) {\n  return \"error\" in payload;\n}\nfunction isJsonRpcValidationInvalid(validation) {\n  return \"error\" in validation && validation.valid === false;\n}\n\n// node_modules/@walletconnect/jsonrpc-provider/dist/index.es.js\nvar import_events = __toESM(require_events());\nvar o2 = class extends r2 {\n  constructor(t) {\n    super(t), this.events = new import_events.EventEmitter(), this.hasRegisteredEventListeners = false, this.connection = this.setConnection(t), this.connection.connected && this.registerEventListeners();\n  }\n  async connect(t = this.connection) {\n    await this.open(t);\n  }\n  async disconnect() {\n    await this.close();\n  }\n  on(t, e2) {\n    this.events.on(t, e2);\n  }\n  once(t, e2) {\n    this.events.once(t, e2);\n  }\n  off(t, e2) {\n    this.events.off(t, e2);\n  }\n  removeListener(t, e2) {\n    this.events.removeListener(t, e2);\n  }\n  async request(t, e2) {\n    return this.requestStrict(formatJsonRpcRequest(t.method, t.params || [], t.id || getBigIntRpcId().toString()), e2);\n  }\n  async requestStrict(t, e2) {\n    return new Promise(async (i4, s3) => {\n      if (!this.connection.connected)\n        try {\n          await this.open();\n        } catch (n5) {\n          s3(n5);\n        }\n      this.events.on(`${t.id}`, (n5) => {\n        isJsonRpcError(n5) ? s3(n5.error) : i4(n5.result);\n      });\n      try {\n        await this.connection.send(t, e2);\n      } catch (n5) {\n        s3(n5);\n      }\n    });\n  }\n  setConnection(t = this.connection) {\n    return t;\n  }\n  onPayload(t) {\n    this.events.emit(\"payload\", t), isJsonRpcResponse(t) ? this.events.emit(`${t.id}`, t) : this.events.emit(\"message\", { type: t.method, data: t.params });\n  }\n  onClose(t) {\n    t && t.code === 3e3 && this.events.emit(\"error\", new Error(`WebSocket connection closed abnormally with code: ${t.code} ${t.reason ? `(${t.reason})` : \"\"}`)), this.events.emit(\"disconnect\");\n  }\n  async open(t = this.connection) {\n    this.connection === t && this.connection.connected || (this.connection.connected && this.close(), typeof t == \"string\" && (await this.connection.open(t), t = this.connection), this.connection = this.setConnection(t), await this.connection.open(), this.registerEventListeners(), this.events.emit(\"connect\"));\n  }\n  async close() {\n    await this.connection.close();\n  }\n  registerEventListeners() {\n    this.hasRegisteredEventListeners || (this.connection.on(\"payload\", (t) => this.onPayload(t)), this.connection.on(\"close\", (t) => this.onClose(t)), this.connection.on(\"error\", (t) => this.events.emit(\"error\", t)), this.connection.on(\"register_error\", (t) => this.onClose()), this.hasRegisteredEventListeners = true);\n  }\n};\n\n// node_modules/@walletconnect/core/dist/index.es.js\nvar import_events7 = __toESM(require_events());\n\n// node_modules/@walletconnect/heartbeat/dist/index.es.js\nvar import_events2 = __toESM(require_events());\nvar import_time3 = __toESM(require_cjs());\n\n// node_modules/@walletconnect/events/dist/esm/events.js\nvar IEvents = class {\n};\n\n// node_modules/@walletconnect/heartbeat/dist/index.es.js\nvar n3 = class extends IEvents {\n  constructor(e2) {\n    super();\n  }\n};\nvar s2 = import_time3.FIVE_SECONDS;\nvar r3 = { pulse: \"heartbeat_pulse\" };\nvar i2 = class _i extends n3 {\n  constructor(e2) {\n    super(e2), this.events = new import_events2.EventEmitter(), this.interval = s2, this.interval = (e2 == null ? void 0 : e2.interval) || s2;\n  }\n  static async init(e2) {\n    const t = new _i(e2);\n    return await t.init(), t;\n  }\n  async init() {\n    await this.initialize();\n  }\n  stop() {\n    clearInterval(this.intervalRef);\n  }\n  on(e2, t) {\n    this.events.on(e2, t);\n  }\n  once(e2, t) {\n    this.events.once(e2, t);\n  }\n  off(e2, t) {\n    this.events.off(e2, t);\n  }\n  removeListener(e2, t) {\n    this.events.removeListener(e2, t);\n  }\n  async initialize() {\n    this.intervalRef = setInterval(() => this.pulse(), (0, import_time3.toMiliseconds)(this.interval));\n  }\n  pulse() {\n    this.events.emit(r3.pulse);\n  }\n};\n\n// node_modules/destr/dist/index.mjs\nvar suspectProtoRx = /\"(?:_|\\\\u0{2}5[Ff]){2}(?:p|\\\\u0{2}70)(?:r|\\\\u0{2}72)(?:o|\\\\u0{2}6[Ff])(?:t|\\\\u0{2}74)(?:o|\\\\u0{2}6[Ff])(?:_|\\\\u0{2}5[Ff]){2}\"\\s*:/;\nvar suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/;\nvar JsonSigRx = /^\\s*[\"[{]|^\\s*-?\\d{1,16}(\\.\\d{1,17})?([Ee][+-]?\\d+)?\\s*$/;\nfunction jsonParseTransform(key2, value) {\n  if (key2 === \"__proto__\" || key2 === \"constructor\" && value && typeof value === \"object\" && \"prototype\" in value) {\n    warnKeyDropped(key2);\n    return;\n  }\n  return value;\n}\nfunction warnKeyDropped(key2) {\n  console.warn(`[destr] Dropping \"${key2}\" key to prevent prototype pollution.`);\n}\nfunction destr(value, options = {}) {\n  if (typeof value !== \"string\") {\n    return value;\n  }\n  const _value = value.trim();\n  if (\n    // eslint-disable-next-line unicorn/prefer-at\n    value[0] === '\"' && value.endsWith('\"') && !value.includes(\"\\\\\")\n  ) {\n    return _value.slice(1, -1);\n  }\n  if (_value.length <= 9) {\n    const _lval = _value.toLowerCase();\n    if (_lval === \"true\") {\n      return true;\n    }\n    if (_lval === \"false\") {\n      return false;\n    }\n    if (_lval === \"undefined\") {\n      return void 0;\n    }\n    if (_lval === \"null\") {\n      return null;\n    }\n    if (_lval === \"nan\") {\n      return Number.NaN;\n    }\n    if (_lval === \"infinity\") {\n      return Number.POSITIVE_INFINITY;\n    }\n    if (_lval === \"-infinity\") {\n      return Number.NEGATIVE_INFINITY;\n    }\n  }\n  if (!JsonSigRx.test(value)) {\n    if (options.strict) {\n      throw new SyntaxError(\"[destr] Invalid JSON\");\n    }\n    return value;\n  }\n  try {\n    if (suspectProtoRx.test(value) || suspectConstructorRx.test(value)) {\n      if (options.strict) {\n        throw new Error(\"[destr] Possible prototype pollution\");\n      }\n      return JSON.parse(value, jsonParseTransform);\n    }\n    return JSON.parse(value);\n  } catch (error) {\n    if (options.strict) {\n      throw error;\n    }\n    return value;\n  }\n}\n\n// node_modules/unstorage/dist/shared/unstorage.d569726e.mjs\nfunction wrapToPromise(value) {\n  if (!value || typeof value.then !== \"function\") {\n    return Promise.resolve(value);\n  }\n  return value;\n}\nfunction asyncCall(function_, ...arguments_) {\n  try {\n    return wrapToPromise(function_(...arguments_));\n  } catch (error) {\n    return Promise.reject(error);\n  }\n}\nfunction isPrimitive(value) {\n  const type = typeof value;\n  return value === null || type !== \"object\" && type !== \"function\";\n}\nfunction isPureObject(value) {\n  const proto = Object.getPrototypeOf(value);\n  return !proto || proto.isPrototypeOf(Object);\n}\nfunction stringify2(value) {\n  if (isPrimitive(value)) {\n    return String(value);\n  }\n  if (isPureObject(value) || Array.isArray(value)) {\n    return JSON.stringify(value);\n  }\n  if (typeof value.toJSON === \"function\") {\n    return stringify2(value.toJSON());\n  }\n  throw new Error(\"[unstorage] Cannot stringify value!\");\n}\nfunction checkBufferSupport() {\n  if (typeof Buffer === \"undefined\") {\n    throw new TypeError(\"[unstorage] Buffer is not supported!\");\n  }\n}\nvar BASE64_PREFIX = \"base64:\";\nfunction serializeRaw(value) {\n  if (typeof value === \"string\") {\n    return value;\n  }\n  checkBufferSupport();\n  const base642 = Buffer.from(value).toString(\"base64\");\n  return BASE64_PREFIX + base642;\n}\nfunction deserializeRaw(value) {\n  if (typeof value !== \"string\") {\n    return value;\n  }\n  if (!value.startsWith(BASE64_PREFIX)) {\n    return value;\n  }\n  checkBufferSupport();\n  return Buffer.from(value.slice(BASE64_PREFIX.length), \"base64\");\n}\nfunction normalizeKey(key2) {\n  if (!key2) {\n    return \"\";\n  }\n  return key2.split(\"?\")[0].replace(/[/\\\\]/g, \":\").replace(/:+/g, \":\").replace(/^:|:$/g, \"\");\n}\nfunction joinKeys(...keys2) {\n  return normalizeKey(keys2.join(\":\"));\n}\nfunction normalizeBaseKey(base3) {\n  base3 = normalizeKey(base3);\n  return base3 ? base3 + \":\" : \"\";\n}\n\n// node_modules/unstorage/dist/index.mjs\nfunction defineDriver(factory) {\n  return factory;\n}\nvar DRIVER_NAME = \"memory\";\nvar memory = defineDriver(() => {\n  const data = /* @__PURE__ */ new Map();\n  return {\n    name: DRIVER_NAME,\n    getInstance: () => data,\n    hasItem(key2) {\n      return data.has(key2);\n    },\n    getItem(key2) {\n      return data.get(key2) ?? null;\n    },\n    getItemRaw(key2) {\n      return data.get(key2) ?? null;\n    },\n    setItem(key2, value) {\n      data.set(key2, value);\n    },\n    setItemRaw(key2, value) {\n      data.set(key2, value);\n    },\n    removeItem(key2) {\n      data.delete(key2);\n    },\n    getKeys() {\n      return [...data.keys()];\n    },\n    clear() {\n      data.clear();\n    },\n    dispose() {\n      data.clear();\n    }\n  };\n});\nfunction createStorage(options = {}) {\n  const context = {\n    mounts: { \"\": options.driver || memory() },\n    mountpoints: [\"\"],\n    watching: false,\n    watchListeners: [],\n    unwatch: {}\n  };\n  const getMount = (key2) => {\n    for (const base3 of context.mountpoints) {\n      if (key2.startsWith(base3)) {\n        return {\n          base: base3,\n          relativeKey: key2.slice(base3.length),\n          driver: context.mounts[base3]\n        };\n      }\n    }\n    return {\n      base: \"\",\n      relativeKey: key2,\n      driver: context.mounts[\"\"]\n    };\n  };\n  const getMounts = (base3, includeParent) => {\n    return context.mountpoints.filter(\n      (mountpoint) => mountpoint.startsWith(base3) || includeParent && base3.startsWith(mountpoint)\n    ).map((mountpoint) => ({\n      relativeBase: base3.length > mountpoint.length ? base3.slice(mountpoint.length) : void 0,\n      mountpoint,\n      driver: context.mounts[mountpoint]\n    }));\n  };\n  const onChange = (event, key2) => {\n    if (!context.watching) {\n      return;\n    }\n    key2 = normalizeKey(key2);\n    for (const listener of context.watchListeners) {\n      listener(event, key2);\n    }\n  };\n  const startWatch = async () => {\n    if (context.watching) {\n      return;\n    }\n    context.watching = true;\n    for (const mountpoint in context.mounts) {\n      context.unwatch[mountpoint] = await watch(\n        context.mounts[mountpoint],\n        onChange,\n        mountpoint\n      );\n    }\n  };\n  const stopWatch = async () => {\n    if (!context.watching) {\n      return;\n    }\n    for (const mountpoint in context.unwatch) {\n      await context.unwatch[mountpoint]();\n    }\n    context.unwatch = {};\n    context.watching = false;\n  };\n  const runBatch = (items, commonOptions, cb) => {\n    const batches = /* @__PURE__ */ new Map();\n    const getBatch = (mount) => {\n      let batch = batches.get(mount.base);\n      if (!batch) {\n        batch = {\n          driver: mount.driver,\n          base: mount.base,\n          items: []\n        };\n        batches.set(mount.base, batch);\n      }\n      return batch;\n    };\n    for (const item of items) {\n      const isStringItem = typeof item === \"string\";\n      const key2 = normalizeKey(isStringItem ? item : item.key);\n      const value = isStringItem ? void 0 : item.value;\n      const options2 = isStringItem || !item.options ? commonOptions : { ...commonOptions, ...item.options };\n      const mount = getMount(key2);\n      getBatch(mount).items.push({\n        key: key2,\n        value,\n        relativeKey: mount.relativeKey,\n        options: options2\n      });\n    }\n    return Promise.all([...batches.values()].map((batch) => cb(batch))).then(\n      (r4) => r4.flat()\n    );\n  };\n  const storage = {\n    // Item\n    hasItem(key2, opts = {}) {\n      key2 = normalizeKey(key2);\n      const { relativeKey, driver } = getMount(key2);\n      return asyncCall(driver.hasItem, relativeKey, opts);\n    },\n    getItem(key2, opts = {}) {\n      key2 = normalizeKey(key2);\n      const { relativeKey, driver } = getMount(key2);\n      return asyncCall(driver.getItem, relativeKey, opts).then(\n        (value) => destr(value)\n      );\n    },\n    getItems(items, commonOptions) {\n      return runBatch(items, commonOptions, (batch) => {\n        if (batch.driver.getItems) {\n          return asyncCall(\n            batch.driver.getItems,\n            batch.items.map((item) => ({\n              key: item.relativeKey,\n              options: item.options\n            })),\n            commonOptions\n          ).then(\n            (r4) => r4.map((item) => ({\n              key: joinKeys(batch.base, item.key),\n              value: destr(item.value)\n            }))\n          );\n        }\n        return Promise.all(\n          batch.items.map((item) => {\n            return asyncCall(\n              batch.driver.getItem,\n              item.relativeKey,\n              item.options\n            ).then((value) => ({\n              key: item.key,\n              value: destr(value)\n            }));\n          })\n        );\n      });\n    },\n    getItemRaw(key2, opts = {}) {\n      key2 = normalizeKey(key2);\n      const { relativeKey, driver } = getMount(key2);\n      if (driver.getItemRaw) {\n        return asyncCall(driver.getItemRaw, relativeKey, opts);\n      }\n      return asyncCall(driver.getItem, relativeKey, opts).then(\n        (value) => deserializeRaw(value)\n      );\n    },\n    async setItem(key2, value, opts = {}) {\n      if (value === void 0) {\n        return storage.removeItem(key2);\n      }\n      key2 = normalizeKey(key2);\n      const { relativeKey, driver } = getMount(key2);\n      if (!driver.setItem) {\n        return;\n      }\n      await asyncCall(driver.setItem, relativeKey, stringify2(value), opts);\n      if (!driver.watch) {\n        onChange(\"update\", key2);\n      }\n    },\n    async setItems(items, commonOptions) {\n      await runBatch(items, commonOptions, async (batch) => {\n        if (batch.driver.setItems) {\n          return asyncCall(\n            batch.driver.setItems,\n            batch.items.map((item) => ({\n              key: item.relativeKey,\n              value: stringify2(item.value),\n              options: item.options\n            })),\n            commonOptions\n          );\n        }\n        if (!batch.driver.setItem) {\n          return;\n        }\n        await Promise.all(\n          batch.items.map((item) => {\n            return asyncCall(\n              batch.driver.setItem,\n              item.relativeKey,\n              stringify2(item.value),\n              item.options\n            );\n          })\n        );\n      });\n    },\n    async setItemRaw(key2, value, opts = {}) {\n      if (value === void 0) {\n        return storage.removeItem(key2, opts);\n      }\n      key2 = normalizeKey(key2);\n      const { relativeKey, driver } = getMount(key2);\n      if (driver.setItemRaw) {\n        await asyncCall(driver.setItemRaw, relativeKey, value, opts);\n      } else if (driver.setItem) {\n        await asyncCall(driver.setItem, relativeKey, serializeRaw(value), opts);\n      } else {\n        return;\n      }\n      if (!driver.watch) {\n        onChange(\"update\", key2);\n      }\n    },\n    async removeItem(key2, opts = {}) {\n      if (typeof opts === \"boolean\") {\n        opts = { removeMeta: opts };\n      }\n      key2 = normalizeKey(key2);\n      const { relativeKey, driver } = getMount(key2);\n      if (!driver.removeItem) {\n        return;\n      }\n      await asyncCall(driver.removeItem, relativeKey, opts);\n      if (opts.removeMeta || opts.removeMata) {\n        await asyncCall(driver.removeItem, relativeKey + \"$\", opts);\n      }\n      if (!driver.watch) {\n        onChange(\"remove\", key2);\n      }\n    },\n    // Meta\n    async getMeta(key2, opts = {}) {\n      if (typeof opts === \"boolean\") {\n        opts = { nativeOnly: opts };\n      }\n      key2 = normalizeKey(key2);\n      const { relativeKey, driver } = getMount(key2);\n      const meta = /* @__PURE__ */ Object.create(null);\n      if (driver.getMeta) {\n        Object.assign(meta, await asyncCall(driver.getMeta, relativeKey, opts));\n      }\n      if (!opts.nativeOnly) {\n        const value = await asyncCall(\n          driver.getItem,\n          relativeKey + \"$\",\n          opts\n        ).then((value_) => destr(value_));\n        if (value && typeof value === \"object\") {\n          if (typeof value.atime === \"string\") {\n            value.atime = new Date(value.atime);\n          }\n          if (typeof value.mtime === \"string\") {\n            value.mtime = new Date(value.mtime);\n          }\n          Object.assign(meta, value);\n        }\n      }\n      return meta;\n    },\n    setMeta(key2, value, opts = {}) {\n      return this.setItem(key2 + \"$\", value, opts);\n    },\n    removeMeta(key2, opts = {}) {\n      return this.removeItem(key2 + \"$\", opts);\n    },\n    // Keys\n    async getKeys(base3, opts = {}) {\n      base3 = normalizeBaseKey(base3);\n      const mounts = getMounts(base3, true);\n      let maskedMounts = [];\n      const allKeys = [];\n      for (const mount of mounts) {\n        const rawKeys = await asyncCall(\n          mount.driver.getKeys,\n          mount.relativeBase,\n          opts\n        );\n        for (const key2 of rawKeys) {\n          const fullKey = mount.mountpoint + normalizeKey(key2);\n          if (!maskedMounts.some((p3) => fullKey.startsWith(p3))) {\n            allKeys.push(fullKey);\n          }\n        }\n        maskedMounts = [\n          mount.mountpoint,\n          ...maskedMounts.filter((p3) => !p3.startsWith(mount.mountpoint))\n        ];\n      }\n      return base3 ? allKeys.filter(\n        (key2) => key2.startsWith(base3) && key2[key2.length - 1] !== \"$\"\n      ) : allKeys.filter((key2) => key2[key2.length - 1] !== \"$\");\n    },\n    // Utils\n    async clear(base3, opts = {}) {\n      base3 = normalizeBaseKey(base3);\n      await Promise.all(\n        getMounts(base3, false).map(async (m2) => {\n          if (m2.driver.clear) {\n            return asyncCall(m2.driver.clear, m2.relativeBase, opts);\n          }\n          if (m2.driver.removeItem) {\n            const keys2 = await m2.driver.getKeys(m2.relativeBase || \"\", opts);\n            return Promise.all(\n              keys2.map((key2) => m2.driver.removeItem(key2, opts))\n            );\n          }\n        })\n      );\n    },\n    async dispose() {\n      await Promise.all(\n        Object.values(context.mounts).map((driver) => dispose(driver))\n      );\n    },\n    async watch(callback) {\n      await startWatch();\n      context.watchListeners.push(callback);\n      return async () => {\n        context.watchListeners = context.watchListeners.filter(\n          (listener) => listener !== callback\n        );\n        if (context.watchListeners.length === 0) {\n          await stopWatch();\n        }\n      };\n    },\n    async unwatch() {\n      context.watchListeners = [];\n      await stopWatch();\n    },\n    // Mount\n    mount(base3, driver) {\n      base3 = normalizeBaseKey(base3);\n      if (base3 && context.mounts[base3]) {\n        throw new Error(`already mounted at ${base3}`);\n      }\n      if (base3) {\n        context.mountpoints.push(base3);\n        context.mountpoints.sort((a4, b5) => b5.length - a4.length);\n      }\n      context.mounts[base3] = driver;\n      if (context.watching) {\n        Promise.resolve(watch(driver, onChange, base3)).then((unwatcher) => {\n          context.unwatch[base3] = unwatcher;\n        }).catch(console.error);\n      }\n      return storage;\n    },\n    async unmount(base3, _dispose = true) {\n      base3 = normalizeBaseKey(base3);\n      if (!base3 || !context.mounts[base3]) {\n        return;\n      }\n      if (context.watching && base3 in context.unwatch) {\n        context.unwatch[base3]();\n        delete context.unwatch[base3];\n      }\n      if (_dispose) {\n        await dispose(context.mounts[base3]);\n      }\n      context.mountpoints = context.mountpoints.filter((key2) => key2 !== base3);\n      delete context.mounts[base3];\n    },\n    getMount(key2 = \"\") {\n      key2 = normalizeKey(key2) + \":\";\n      const m2 = getMount(key2);\n      return {\n        driver: m2.driver,\n        base: m2.base\n      };\n    },\n    getMounts(base3 = \"\", opts = {}) {\n      base3 = normalizeKey(base3);\n      const mounts = getMounts(base3, opts.parents);\n      return mounts.map((m2) => ({\n        driver: m2.driver,\n        base: m2.mountpoint\n      }));\n    },\n    // Aliases\n    keys: (base3, opts = {}) => storage.getKeys(base3, opts),\n    get: (key2, opts = {}) => storage.getItem(key2, opts),\n    set: (key2, value, opts = {}) => storage.setItem(key2, value, opts),\n    has: (key2, opts = {}) => storage.hasItem(key2, opts),\n    del: (key2, opts = {}) => storage.removeItem(key2, opts),\n    remove: (key2, opts = {}) => storage.removeItem(key2, opts)\n  };\n  return storage;\n}\nfunction watch(driver, onChange, base3) {\n  return driver.watch ? driver.watch((event, key2) => onChange(event, base3 + key2)) : () => {\n  };\n}\nasync function dispose(driver) {\n  if (typeof driver.dispose === \"function\") {\n    await asyncCall(driver.dispose);\n  }\n}\n\n// node_modules/idb-keyval/dist/index.js\nfunction promisifyRequest(request) {\n  return new Promise((resolve, reject) => {\n    request.oncomplete = request.onsuccess = () => resolve(request.result);\n    request.onabort = request.onerror = () => reject(request.error);\n  });\n}\nfunction createStore(dbName, storeName) {\n  const request = indexedDB.open(dbName);\n  request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n  const dbp = promisifyRequest(request);\n  return (txMode, callback) => dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nvar defaultGetStoreFunc;\nfunction defaultGetStore() {\n  if (!defaultGetStoreFunc) {\n    defaultGetStoreFunc = createStore(\"keyval-store\", \"keyval\");\n  }\n  return defaultGetStoreFunc;\n}\nfunction get(key2, customStore = defaultGetStore()) {\n  return customStore(\"readonly\", (store) => promisifyRequest(store.get(key2)));\n}\nfunction set(key2, value, customStore = defaultGetStore()) {\n  return customStore(\"readwrite\", (store) => {\n    store.put(value, key2);\n    return promisifyRequest(store.transaction);\n  });\n}\nfunction del(key2, customStore = defaultGetStore()) {\n  return customStore(\"readwrite\", (store) => {\n    store.delete(key2);\n    return promisifyRequest(store.transaction);\n  });\n}\nfunction clear(customStore = defaultGetStore()) {\n  return customStore(\"readwrite\", (store) => {\n    store.clear();\n    return promisifyRequest(store.transaction);\n  });\n}\nfunction eachCursor(store, callback) {\n  store.openCursor().onsuccess = function() {\n    if (!this.result)\n      return;\n    callback(this.result);\n    this.result.continue();\n  };\n  return promisifyRequest(store.transaction);\n}\nfunction keys(customStore = defaultGetStore()) {\n  return customStore(\"readonly\", (store) => {\n    if (store.getAllKeys) {\n      return promisifyRequest(store.getAllKeys());\n    }\n    const items = [];\n    return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n  });\n}\n\n// node_modules/@walletconnect/keyvaluestorage/dist/index.es.js\nvar x2 = \"idb-keyval\";\nvar z3 = (i4 = {}) => {\n  const t = i4.base && i4.base.length > 0 ? `${i4.base}:` : \"\", e2 = (s3) => t + s3;\n  let n5;\n  return i4.dbName && i4.storeName && (n5 = createStore(i4.dbName, i4.storeName)), { name: x2, options: i4, async hasItem(s3) {\n    return !(typeof await get(e2(s3), n5) > \"u\");\n  }, async getItem(s3) {\n    return await get(e2(s3), n5) ?? null;\n  }, setItem(s3, a4) {\n    return set(e2(s3), a4, n5);\n  }, removeItem(s3) {\n    return del(e2(s3), n5);\n  }, getKeys() {\n    return keys(n5);\n  }, clear() {\n    return clear(n5);\n  } };\n};\nvar D2 = \"WALLET_CONNECT_V2_INDEXED_DB\";\nvar E2 = \"keyvaluestorage\";\nvar _3 = class {\n  constructor() {\n    this.indexedDb = createStorage({ driver: z3({ dbName: D2, storeName: E2 }) });\n  }\n  async getKeys() {\n    return this.indexedDb.getKeys();\n  }\n  async getEntries() {\n    return (await this.indexedDb.getItems(await this.indexedDb.getKeys())).map((t) => [t.key, t.value]);\n  }\n  async getItem(t) {\n    const e2 = await this.indexedDb.getItem(t);\n    if (e2 !== null)\n      return e2;\n  }\n  async setItem(t, e2) {\n    await this.indexedDb.setItem(t, safeJsonStringify(e2));\n  }\n  async removeItem(t) {\n    await this.indexedDb.removeItem(t);\n  }\n};\nvar l3 = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nvar c3 = { exports: {} };\n(function() {\n  let i4;\n  function t() {\n  }\n  i4 = t, i4.prototype.getItem = function(e2) {\n    return this.hasOwnProperty(e2) ? String(this[e2]) : null;\n  }, i4.prototype.setItem = function(e2, n5) {\n    this[e2] = String(n5);\n  }, i4.prototype.removeItem = function(e2) {\n    delete this[e2];\n  }, i4.prototype.clear = function() {\n    const e2 = this;\n    Object.keys(e2).forEach(function(n5) {\n      e2[n5] = void 0, delete e2[n5];\n    });\n  }, i4.prototype.key = function(e2) {\n    return e2 = e2 || 0, Object.keys(this)[e2];\n  }, i4.prototype.__defineGetter__(\"length\", function() {\n    return Object.keys(this).length;\n  }), typeof l3 < \"u\" && l3.localStorage ? c3.exports = l3.localStorage : typeof window < \"u\" && window.localStorage ? c3.exports = window.localStorage : c3.exports = new t();\n})();\nfunction k3(i4) {\n  var t;\n  return [i4[0], safeJsonParse((t = i4[1]) != null ? t : \"\")];\n}\nvar K2 = class {\n  constructor() {\n    this.localStorage = c3.exports;\n  }\n  async getKeys() {\n    return Object.keys(this.localStorage);\n  }\n  async getEntries() {\n    return Object.entries(this.localStorage).map(k3);\n  }\n  async getItem(t) {\n    const e2 = this.localStorage.getItem(t);\n    if (e2 !== null)\n      return safeJsonParse(e2);\n  }\n  async setItem(t, e2) {\n    this.localStorage.setItem(t, safeJsonStringify(e2));\n  }\n  async removeItem(t) {\n    this.localStorage.removeItem(t);\n  }\n};\nvar N10 = \"wc_storage_version\";\nvar y3 = 1;\nvar O3 = async (i4, t, e2) => {\n  const n5 = N10, s3 = await t.getItem(n5);\n  if (s3 && s3 >= y3) {\n    e2(t);\n    return;\n  }\n  const a4 = await i4.getKeys();\n  if (!a4.length) {\n    e2(t);\n    return;\n  }\n  const m2 = [];\n  for (; a4.length; ) {\n    const r4 = a4.shift();\n    if (!r4)\n      continue;\n    const o4 = r4.toLowerCase();\n    if (o4.includes(\"wc@\") || o4.includes(\"walletconnect\") || o4.includes(\"wc_\") || o4.includes(\"wallet_connect\")) {\n      const f4 = await i4.getItem(r4);\n      await t.setItem(r4, f4), m2.push(r4);\n    }\n  }\n  await t.setItem(n5, y3), e2(t), j(i4, m2);\n};\nvar j = async (i4, t) => {\n  t.length && t.forEach(async (e2) => {\n    await i4.removeItem(e2);\n  });\n};\nvar h2 = class {\n  constructor() {\n    this.initialized = false, this.setInitialized = (e2) => {\n      this.storage = e2, this.initialized = true;\n    };\n    const t = new K2();\n    this.storage = t;\n    try {\n      const e2 = new _3();\n      O3(t, e2, this.setInitialized);\n    } catch {\n      this.initialized = true;\n    }\n  }\n  async getKeys() {\n    return await this.initialize(), this.storage.getKeys();\n  }\n  async getEntries() {\n    return await this.initialize(), this.storage.getEntries();\n  }\n  async getItem(t) {\n    return await this.initialize(), this.storage.getItem(t);\n  }\n  async setItem(t, e2) {\n    return await this.initialize(), this.storage.setItem(t, e2);\n  }\n  async removeItem(t) {\n    return await this.initialize(), this.storage.removeItem(t);\n  }\n  async initialize() {\n    this.initialized || await new Promise((t) => {\n      const e2 = setInterval(() => {\n        this.initialized && (clearInterval(e2), t());\n      }, 20);\n    });\n  }\n};\n\n// node_modules/@walletconnect/types/dist/index.es.js\nvar import_events5 = __toESM(require_events());\nvar n4 = class extends IEvents {\n  constructor(s3) {\n    super(), this.opts = s3, this.protocol = \"wc\", this.version = 2;\n  }\n};\nvar h3 = class extends IEvents {\n  constructor(s3, t) {\n    super(), this.core = s3, this.logger = t, this.records = /* @__PURE__ */ new Map();\n  }\n};\nvar a2 = class {\n  constructor(s3, t) {\n    this.logger = s3, this.core = t;\n  }\n};\nvar g3 = class extends IEvents {\n  constructor(s3, t) {\n    super(), this.relayer = s3, this.logger = t;\n  }\n};\nvar u = class extends IEvents {\n  constructor(s3) {\n    super();\n  }\n};\nvar p2 = class {\n  constructor(s3, t, e2, f4) {\n    this.core = s3, this.logger = t, this.name = e2;\n  }\n};\nvar d2 = class extends IEvents {\n  constructor(s3, t) {\n    super(), this.relayer = s3, this.logger = t;\n  }\n};\nvar x3 = class extends IEvents {\n  constructor(s3, t) {\n    super(), this.core = s3, this.logger = t;\n  }\n};\nvar y4 = class {\n  constructor(s3, t, e2) {\n    this.core = s3, this.logger = t, this.store = e2;\n  }\n};\nvar v2 = class {\n  constructor(s3, t) {\n    this.projectId = s3, this.logger = t;\n  }\n};\nvar C4 = class {\n  constructor(s3, t, e2) {\n    this.core = s3, this.logger = t, this.telemetryEnabled = e2;\n  }\n};\nvar S3 = class {\n  constructor(s3) {\n    this.opts = s3, this.protocol = \"wc\", this.version = 2;\n  }\n};\nvar M2 = class {\n  constructor(s3) {\n    this.client = s3;\n  }\n};\n\n// node_modules/@walletconnect/core/dist/index.es.js\nvar import_time4 = __toESM(require_cjs());\n\n// node_modules/@walletconnect/jsonrpc-ws-connection/dist/index.es.js\nvar import_events6 = __toESM(require_events());\nvar w2 = () => typeof WebSocket < \"u\" ? WebSocket : typeof global < \"u\" && typeof global.WebSocket < \"u\" ? global.WebSocket : typeof window < \"u\" && typeof window.WebSocket < \"u\" ? window.WebSocket : typeof self < \"u\" && typeof self.WebSocket < \"u\" ? self.WebSocket : require_browser3();\nvar b3 = () => typeof WebSocket < \"u\" || typeof global < \"u\" && typeof global.WebSocket < \"u\" || typeof window < \"u\" && typeof window.WebSocket < \"u\" || typeof self < \"u\" && typeof self.WebSocket < \"u\";\nvar a3 = (c5) => c5.split(\"?\")[0];\nvar h4 = 10;\nvar S4 = w2();\nvar f2 = class {\n  constructor(e2) {\n    if (this.url = e2, this.events = new import_events6.EventEmitter(), this.registering = false, !isWsUrl(e2))\n      throw new Error(`Provided URL is not compatible with WebSocket connection: ${e2}`);\n    this.url = e2;\n  }\n  get connected() {\n    return typeof this.socket < \"u\";\n  }\n  get connecting() {\n    return this.registering;\n  }\n  on(e2, t) {\n    this.events.on(e2, t);\n  }\n  once(e2, t) {\n    this.events.once(e2, t);\n  }\n  off(e2, t) {\n    this.events.off(e2, t);\n  }\n  removeListener(e2, t) {\n    this.events.removeListener(e2, t);\n  }\n  async open(e2 = this.url) {\n    await this.register(e2);\n  }\n  async close() {\n    return new Promise((e2, t) => {\n      if (typeof this.socket > \"u\") {\n        t(new Error(\"Connection already closed\"));\n        return;\n      }\n      this.socket.onclose = (n5) => {\n        this.onClose(n5), e2();\n      }, this.socket.close();\n    });\n  }\n  async send(e2) {\n    typeof this.socket > \"u\" && (this.socket = await this.register());\n    try {\n      this.socket.send(safeJsonStringify(e2));\n    } catch (t) {\n      this.onError(e2.id, t);\n    }\n  }\n  register(e2 = this.url) {\n    if (!isWsUrl(e2))\n      throw new Error(`Provided URL is not compatible with WebSocket connection: ${e2}`);\n    if (this.registering) {\n      const t = this.events.getMaxListeners();\n      return (this.events.listenerCount(\"register_error\") >= t || this.events.listenerCount(\"open\") >= t) && this.events.setMaxListeners(t + 1), new Promise((n5, o4) => {\n        this.events.once(\"register_error\", (s3) => {\n          this.resetMaxListeners(), o4(s3);\n        }), this.events.once(\"open\", () => {\n          if (this.resetMaxListeners(), typeof this.socket > \"u\")\n            return o4(new Error(\"WebSocket connection is missing or invalid\"));\n          n5(this.socket);\n        });\n      });\n    }\n    return this.url = e2, this.registering = true, new Promise((t, n5) => {\n      const o4 = new URLSearchParams(e2).get(\"origin\"), s3 = (0, esm_exports.isReactNative)() ? { headers: { origin: o4 } } : { rejectUnauthorized: !isLocalhostUrl(e2) }, i4 = new S4(e2, [], s3);\n      b3() ? i4.onerror = (r4) => {\n        const l4 = r4;\n        n5(this.emitError(l4.error));\n      } : i4.on(\"error\", (r4) => {\n        n5(this.emitError(r4));\n      }), i4.onopen = () => {\n        this.onOpen(i4), t(i4);\n      };\n    });\n  }\n  onOpen(e2) {\n    e2.onmessage = (t) => this.onPayload(t), e2.onclose = (t) => this.onClose(t), this.socket = e2, this.registering = false, this.events.emit(\"open\");\n  }\n  onClose(e2) {\n    this.socket = void 0, this.registering = false, this.events.emit(\"close\", e2);\n  }\n  onPayload(e2) {\n    if (typeof e2.data > \"u\")\n      return;\n    const t = typeof e2.data == \"string\" ? safeJsonParse(e2.data) : e2.data;\n    this.events.emit(\"payload\", t);\n  }\n  onError(e2, t) {\n    const n5 = this.parseError(t), o4 = n5.message || n5.toString(), s3 = formatJsonRpcError(e2, o4);\n    this.events.emit(\"payload\", s3);\n  }\n  parseError(e2, t = this.url) {\n    return parseConnectionError(e2, a3(t), \"WS\");\n  }\n  resetMaxListeners() {\n    this.events.getMaxListeners() > h4 && this.events.setMaxListeners(h4);\n  }\n  emitError(e2) {\n    const t = this.parseError(new Error((e2 == null ? void 0 : e2.message) || `WebSocket connection failed for host: ${a3(this.url)}`));\n    return this.events.emit(\"register_error\", t), t;\n  }\n};\n\n// node_modules/@walletconnect/core/dist/index.es.js\nvar import_lodash = __toESM(require_lodash());\nvar import_window_getters2 = __toESM(require_cjs2());\nvar ye2 = \"wc\";\nvar De = 2;\nvar ie = \"core\";\nvar x4 = `${ye2}@2:${ie}:`;\nvar Ye = { name: ie, logger: \"error\" };\nvar Je2 = { database: \":memory:\" };\nvar Xe2 = \"crypto\";\nvar me2 = \"client_ed25519_seed\";\nvar We2 = import_time4.ONE_DAY;\nvar Ze = \"keychain\";\nvar Qe = \"0.3\";\nvar et2 = \"messages\";\nvar tt = \"0.3\";\nvar it2 = import_time4.SIX_HOURS;\nvar st2 = \"publisher\";\nvar rt = \"irn\";\nvar nt = \"error\";\nvar be2 = \"wss://relay.walletconnect.org\";\nvar ot = \"relayer\";\nvar v3 = { message: \"relayer_message\", message_ack: \"relayer_message_ack\", connect: \"relayer_connect\", disconnect: \"relayer_disconnect\", error: \"relayer_error\", connection_stalled: \"relayer_connection_stalled\", transport_closed: \"relayer_transport_closed\", publish: \"relayer_publish\" };\nvar at2 = \"_subscription\";\nvar I3 = { payload: \"payload\", connect: \"connect\", disconnect: \"disconnect\", error: \"error\" };\nvar ht = 0.1;\nvar se = \"2.17.2\";\nvar M3 = { link_mode: \"link_mode\", relay: \"relay\" };\nvar ct = \"0.3\";\nvar lt = \"WALLETCONNECT_CLIENT_ID\";\nvar fe2 = \"WALLETCONNECT_LINK_MODE_APPS\";\nvar O4 = { created: \"subscription_created\", deleted: \"subscription_deleted\", expired: \"subscription_expired\", disabled: \"subscription_disabled\", sync: \"subscription_sync\", resubscribed: \"subscription_resubscribed\" };\nvar ut2 = \"subscription\";\nvar dt = \"0.3\";\nvar pt = import_time4.FIVE_SECONDS * 1e3;\nvar gt2 = \"pairing\";\nvar yt = \"0.3\";\nvar B3 = { wc_pairingDelete: { req: { ttl: import_time4.ONE_DAY, prompt: false, tag: 1e3 }, res: { ttl: import_time4.ONE_DAY, prompt: false, tag: 1001 } }, wc_pairingPing: { req: { ttl: import_time4.THIRTY_SECONDS, prompt: false, tag: 1002 }, res: { ttl: import_time4.THIRTY_SECONDS, prompt: false, tag: 1003 } }, unregistered_method: { req: { ttl: import_time4.ONE_DAY, prompt: false, tag: 0 }, res: { ttl: import_time4.ONE_DAY, prompt: false, tag: 0 } } };\nvar V2 = { create: \"pairing_create\", expire: \"pairing_expire\", delete: \"pairing_delete\", ping: \"pairing_ping\" };\nvar P2 = { created: \"history_created\", updated: \"history_updated\", deleted: \"history_deleted\", sync: \"history_sync\" };\nvar Dt2 = \"history\";\nvar mt2 = \"0.3\";\nvar bt2 = \"expirer\";\nvar S5 = { created: \"expirer_created\", deleted: \"expirer_deleted\", expired: \"expirer_expired\", sync: \"expirer_sync\" };\nvar ft = \"0.3\";\nvar _t2 = \"verify-api\";\nvar vs = \"https://verify.walletconnect.com\";\nvar Et = \"https://verify.walletconnect.org\";\nvar J = Et;\nvar vt2 = `${J}/v3`;\nvar wt = [vs, Et];\nvar It = \"echo\";\nvar Tt2 = \"https://echo.walletconnect.com\";\nvar z4 = { pairing_started: \"pairing_started\", pairing_uri_validation_success: \"pairing_uri_validation_success\", pairing_uri_not_expired: \"pairing_uri_not_expired\", store_new_pairing: \"store_new_pairing\", subscribing_pairing_topic: \"subscribing_pairing_topic\", subscribe_pairing_topic_success: \"subscribe_pairing_topic_success\", existing_pairing: \"existing_pairing\", pairing_not_expired: \"pairing_not_expired\", emit_inactive_pairing: \"emit_inactive_pairing\", emit_session_proposal: \"emit_session_proposal\", subscribing_to_pairing_topic: \"subscribing_to_pairing_topic\" };\nvar $2 = { no_wss_connection: \"no_wss_connection\", no_internet_connection: \"no_internet_connection\", malformed_pairing_uri: \"malformed_pairing_uri\", active_pairing_already_exists: \"active_pairing_already_exists\", subscribe_pairing_topic_failure: \"subscribe_pairing_topic_failure\", pairing_expired: \"pairing_expired\", proposal_expired: \"proposal_expired\", proposal_listener_not_found: \"proposal_listener_not_found\" };\nvar Is = { session_approve_started: \"session_approve_started\", proposal_not_expired: \"proposal_not_expired\", session_namespaces_validation_success: \"session_namespaces_validation_success\", create_session_topic: \"create_session_topic\", subscribing_session_topic: \"subscribing_session_topic\", subscribe_session_topic_success: \"subscribe_session_topic_success\", publishing_session_approve: \"publishing_session_approve\", session_approve_publish_success: \"session_approve_publish_success\", store_session: \"store_session\", publishing_session_settle: \"publishing_session_settle\", session_settle_publish_success: \"session_settle_publish_success\" };\nvar Ts = { no_internet_connection: \"no_internet_connection\", no_wss_connection: \"no_wss_connection\", proposal_expired: \"proposal_expired\", subscribe_session_topic_failure: \"subscribe_session_topic_failure\", session_approve_publish_failure: \"session_approve_publish_failure\", session_settle_publish_failure: \"session_settle_publish_failure\", session_approve_namespace_validation_failure: \"session_approve_namespace_validation_failure\", proposal_not_found: \"proposal_not_found\" };\nvar Cs = { authenticated_session_approve_started: \"authenticated_session_approve_started\", authenticated_session_not_expired: \"authenticated_session_not_expired\", chains_caip2_compliant: \"chains_caip2_compliant\", chains_evm_compliant: \"chains_evm_compliant\", create_authenticated_session_topic: \"create_authenticated_session_topic\", cacaos_verified: \"cacaos_verified\", store_authenticated_session: \"store_authenticated_session\", subscribing_authenticated_session_topic: \"subscribing_authenticated_session_topic\", subscribe_authenticated_session_topic_success: \"subscribe_authenticated_session_topic_success\", publishing_authenticated_session_approve: \"publishing_authenticated_session_approve\", authenticated_session_approve_publish_success: \"authenticated_session_approve_publish_success\" };\nvar Ps = { no_internet_connection: \"no_internet_connection\", no_wss_connection: \"no_wss_connection\", missing_session_authenticate_request: \"missing_session_authenticate_request\", session_authenticate_request_expired: \"session_authenticate_request_expired\", chains_caip2_compliant_failure: \"chains_caip2_compliant_failure\", chains_evm_compliant_failure: \"chains_evm_compliant_failure\", invalid_cacao: \"invalid_cacao\", subscribe_authenticated_session_topic_failure: \"subscribe_authenticated_session_topic_failure\", authenticated_session_approve_publish_failure: \"authenticated_session_approve_publish_failure\", authenticated_session_pending_request_not_found: \"authenticated_session_pending_request_not_found\" };\nvar Ct = 0.1;\nvar Pt2 = \"event-client\";\nvar St = 86400;\nvar Rt = \"https://pulse.walletconnect.org/batch\";\nfunction Ss(o4, e2) {\n  if (o4.length >= 255)\n    throw new TypeError(\"Alphabet too long\");\n  for (var t = new Uint8Array(256), s3 = 0; s3 < t.length; s3++)\n    t[s3] = 255;\n  for (var i4 = 0; i4 < o4.length; i4++) {\n    var r4 = o4.charAt(i4), n5 = r4.charCodeAt(0);\n    if (t[n5] !== 255)\n      throw new TypeError(r4 + \" is ambiguous\");\n    t[n5] = i4;\n  }\n  var a4 = o4.length, h5 = o4.charAt(0), c5 = Math.log(a4) / Math.log(256), l4 = Math.log(256) / Math.log(a4);\n  function p3(u3) {\n    if (u3 instanceof Uint8Array || (ArrayBuffer.isView(u3) ? u3 = new Uint8Array(u3.buffer, u3.byteOffset, u3.byteLength) : Array.isArray(u3) && (u3 = Uint8Array.from(u3))), !(u3 instanceof Uint8Array))\n      throw new TypeError(\"Expected Uint8Array\");\n    if (u3.length === 0)\n      return \"\";\n    for (var g4 = 0, _4 = 0, y6 = 0, b5 = u3.length; y6 !== b5 && u3[y6] === 0; )\n      y6++, g4++;\n    for (var A3 = (b5 - y6) * l4 + 1 >>> 0, T2 = new Uint8Array(A3); y6 !== b5; ) {\n      for (var N11 = u3[y6], k4 = 0, R2 = A3 - 1; (N11 !== 0 || k4 < _4) && R2 !== -1; R2--, k4++)\n        N11 += 256 * T2[R2] >>> 0, T2[R2] = N11 % a4 >>> 0, N11 = N11 / a4 >>> 0;\n      if (N11 !== 0)\n        throw new Error(\"Non-zero carry\");\n      _4 = k4, y6++;\n    }\n    for (var L3 = A3 - _4; L3 !== A3 && T2[L3] === 0; )\n      L3++;\n    for (var Q2 = h5.repeat(g4); L3 < A3; ++L3)\n      Q2 += o4.charAt(T2[L3]);\n    return Q2;\n  }\n  function D4(u3) {\n    if (typeof u3 != \"string\")\n      throw new TypeError(\"Expected String\");\n    if (u3.length === 0)\n      return new Uint8Array();\n    var g4 = 0;\n    if (u3[g4] !== \" \") {\n      for (var _4 = 0, y6 = 0; u3[g4] === h5; )\n        _4++, g4++;\n      for (var b5 = (u3.length - g4) * c5 + 1 >>> 0, A3 = new Uint8Array(b5); u3[g4]; ) {\n        var T2 = t[u3.charCodeAt(g4)];\n        if (T2 === 255)\n          return;\n        for (var N11 = 0, k4 = b5 - 1; (T2 !== 0 || N11 < y6) && k4 !== -1; k4--, N11++)\n          T2 += a4 * A3[k4] >>> 0, A3[k4] = T2 % 256 >>> 0, T2 = T2 / 256 >>> 0;\n        if (T2 !== 0)\n          throw new Error(\"Non-zero carry\");\n        y6 = N11, g4++;\n      }\n      if (u3[g4] !== \" \") {\n        for (var R2 = b5 - y6; R2 !== b5 && A3[R2] === 0; )\n          R2++;\n        for (var L3 = new Uint8Array(_4 + (b5 - R2)), Q2 = _4; R2 !== b5; )\n          L3[Q2++] = A3[R2++];\n        return L3;\n      }\n    }\n  }\n  function m2(u3) {\n    var g4 = D4(u3);\n    if (g4)\n      return g4;\n    throw new Error(`Non-${e2} character`);\n  }\n  return { encode: p3, decodeUnsafe: D4, decode: m2 };\n}\nvar Rs = Ss;\nvar xs = Rs;\nvar xt2 = (o4) => {\n  if (o4 instanceof Uint8Array && o4.constructor.name === \"Uint8Array\")\n    return o4;\n  if (o4 instanceof ArrayBuffer)\n    return new Uint8Array(o4);\n  if (ArrayBuffer.isView(o4))\n    return new Uint8Array(o4.buffer, o4.byteOffset, o4.byteLength);\n  throw new Error(\"Unknown type, must be binary type\");\n};\nvar Os = (o4) => new TextEncoder().encode(o4);\nvar As = (o4) => new TextDecoder().decode(o4);\nvar Ns = class {\n  constructor(e2, t, s3) {\n    this.name = e2, this.prefix = t, this.baseEncode = s3;\n  }\n  encode(e2) {\n    if (e2 instanceof Uint8Array)\n      return `${this.prefix}${this.baseEncode(e2)}`;\n    throw Error(\"Unknown type, must be binary type\");\n  }\n};\nvar zs = class {\n  constructor(e2, t, s3) {\n    if (this.name = e2, this.prefix = t, t.codePointAt(0) === void 0)\n      throw new Error(\"Invalid prefix character\");\n    this.prefixCodePoint = t.codePointAt(0), this.baseDecode = s3;\n  }\n  decode(e2) {\n    if (typeof e2 == \"string\") {\n      if (e2.codePointAt(0) !== this.prefixCodePoint)\n        throw Error(`Unable to decode multibase string ${JSON.stringify(e2)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);\n      return this.baseDecode(e2.slice(this.prefix.length));\n    } else\n      throw Error(\"Can only multibase decode strings\");\n  }\n  or(e2) {\n    return Ot2(this, e2);\n  }\n};\nvar Ls = class {\n  constructor(e2) {\n    this.decoders = e2;\n  }\n  or(e2) {\n    return Ot2(this, e2);\n  }\n  decode(e2) {\n    const t = e2[0], s3 = this.decoders[t];\n    if (s3)\n      return s3.decode(e2);\n    throw RangeError(`Unable to decode multibase string ${JSON.stringify(e2)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);\n  }\n};\nvar Ot2 = (o4, e2) => new Ls({ ...o4.decoders || { [o4.prefix]: o4 }, ...e2.decoders || { [e2.prefix]: e2 } });\nvar $s = class {\n  constructor(e2, t, s3, i4) {\n    this.name = e2, this.prefix = t, this.baseEncode = s3, this.baseDecode = i4, this.encoder = new Ns(e2, t, s3), this.decoder = new zs(e2, t, i4);\n  }\n  encode(e2) {\n    return this.encoder.encode(e2);\n  }\n  decode(e2) {\n    return this.decoder.decode(e2);\n  }\n};\nvar re2 = ({ name: o4, prefix: e2, encode: t, decode: s3 }) => new $s(o4, e2, t, s3);\nvar X2 = ({ prefix: o4, name: e2, alphabet: t }) => {\n  const { encode: s3, decode: i4 } = xs(t, e2);\n  return re2({ prefix: o4, name: e2, encode: s3, decode: (r4) => xt2(i4(r4)) });\n};\nvar ks = (o4, e2, t, s3) => {\n  const i4 = {};\n  for (let l4 = 0; l4 < e2.length; ++l4)\n    i4[e2[l4]] = l4;\n  let r4 = o4.length;\n  for (; o4[r4 - 1] === \"=\"; )\n    --r4;\n  const n5 = new Uint8Array(r4 * t / 8 | 0);\n  let a4 = 0, h5 = 0, c5 = 0;\n  for (let l4 = 0; l4 < r4; ++l4) {\n    const p3 = i4[o4[l4]];\n    if (p3 === void 0)\n      throw new SyntaxError(`Non-${s3} character`);\n    h5 = h5 << t | p3, a4 += t, a4 >= 8 && (a4 -= 8, n5[c5++] = 255 & h5 >> a4);\n  }\n  if (a4 >= t || 255 & h5 << 8 - a4)\n    throw new SyntaxError(\"Unexpected end of data\");\n  return n5;\n};\nvar Ms = (o4, e2, t) => {\n  const s3 = e2[e2.length - 1] === \"=\", i4 = (1 << t) - 1;\n  let r4 = \"\", n5 = 0, a4 = 0;\n  for (let h5 = 0; h5 < o4.length; ++h5)\n    for (a4 = a4 << 8 | o4[h5], n5 += 8; n5 > t; )\n      n5 -= t, r4 += e2[i4 & a4 >> n5];\n  if (n5 && (r4 += e2[i4 & a4 << t - n5]), s3)\n    for (; r4.length * t & 7; )\n      r4 += \"=\";\n  return r4;\n};\nvar f3 = ({ name: o4, prefix: e2, bitsPerChar: t, alphabet: s3 }) => re2({ prefix: e2, name: o4, encode(i4) {\n  return Ms(i4, s3, t);\n}, decode(i4) {\n  return ks(i4, s3, t, o4);\n} });\nvar Us = re2({ prefix: \"\\0\", name: \"identity\", encode: (o4) => As(o4), decode: (o4) => Os(o4) });\nvar Fs = Object.freeze({ __proto__: null, identity: Us });\nvar Ks = f3({ prefix: \"0\", name: \"base2\", alphabet: \"01\", bitsPerChar: 1 });\nvar Bs = Object.freeze({ __proto__: null, base2: Ks });\nvar Vs = f3({ prefix: \"7\", name: \"base8\", alphabet: \"01234567\", bitsPerChar: 3 });\nvar js = Object.freeze({ __proto__: null, base8: Vs });\nvar qs = X2({ prefix: \"9\", name: \"base10\", alphabet: \"0123456789\" });\nvar Gs = Object.freeze({ __proto__: null, base10: qs });\nvar Hs = f3({ prefix: \"f\", name: \"base16\", alphabet: \"0123456789abcdef\", bitsPerChar: 4 });\nvar Ys = f3({ prefix: \"F\", name: \"base16upper\", alphabet: \"0123456789ABCDEF\", bitsPerChar: 4 });\nvar Js = Object.freeze({ __proto__: null, base16: Hs, base16upper: Ys });\nvar Xs = f3({ prefix: \"b\", name: \"base32\", alphabet: \"abcdefghijklmnopqrstuvwxyz234567\", bitsPerChar: 5 });\nvar Ws = f3({ prefix: \"B\", name: \"base32upper\", alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\", bitsPerChar: 5 });\nvar Zs = f3({ prefix: \"c\", name: \"base32pad\", alphabet: \"abcdefghijklmnopqrstuvwxyz234567=\", bitsPerChar: 5 });\nvar Qs = f3({ prefix: \"C\", name: \"base32padupper\", alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=\", bitsPerChar: 5 });\nvar er2 = f3({ prefix: \"v\", name: \"base32hex\", alphabet: \"0123456789abcdefghijklmnopqrstuv\", bitsPerChar: 5 });\nvar tr = f3({ prefix: \"V\", name: \"base32hexupper\", alphabet: \"0123456789ABCDEFGHIJKLMNOPQRSTUV\", bitsPerChar: 5 });\nvar ir2 = f3({ prefix: \"t\", name: \"base32hexpad\", alphabet: \"0123456789abcdefghijklmnopqrstuv=\", bitsPerChar: 5 });\nvar sr = f3({ prefix: \"T\", name: \"base32hexpadupper\", alphabet: \"0123456789ABCDEFGHIJKLMNOPQRSTUV=\", bitsPerChar: 5 });\nvar rr = f3({ prefix: \"h\", name: \"base32z\", alphabet: \"ybndrfg8ejkmcpqxot1uwisza345h769\", bitsPerChar: 5 });\nvar nr2 = Object.freeze({ __proto__: null, base32: Xs, base32upper: Ws, base32pad: Zs, base32padupper: Qs, base32hex: er2, base32hexupper: tr, base32hexpad: ir2, base32hexpadupper: sr, base32z: rr });\nvar or2 = X2({ prefix: \"k\", name: \"base36\", alphabet: \"0123456789abcdefghijklmnopqrstuvwxyz\" });\nvar ar2 = X2({ prefix: \"K\", name: \"base36upper\", alphabet: \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\" });\nvar hr2 = Object.freeze({ __proto__: null, base36: or2, base36upper: ar2 });\nvar cr2 = X2({ name: \"base58btc\", prefix: \"z\", alphabet: \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\" });\nvar lr2 = X2({ name: \"base58flickr\", prefix: \"Z\", alphabet: \"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ\" });\nvar ur2 = Object.freeze({ __proto__: null, base58btc: cr2, base58flickr: lr2 });\nvar dr2 = f3({ prefix: \"m\", name: \"base64\", alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", bitsPerChar: 6 });\nvar pr2 = f3({ prefix: \"M\", name: \"base64pad\", alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\", bitsPerChar: 6 });\nvar gr2 = f3({ prefix: \"u\", name: \"base64url\", alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\", bitsPerChar: 6 });\nvar yr2 = f3({ prefix: \"U\", name: \"base64urlpad\", alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=\", bitsPerChar: 6 });\nvar Dr2 = Object.freeze({ __proto__: null, base64: dr2, base64pad: pr2, base64url: gr2, base64urlpad: yr2 });\nvar At = Array.from(\"🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂\");\nvar mr2 = At.reduce((o4, e2, t) => (o4[t] = e2, o4), []);\nvar br2 = At.reduce((o4, e2, t) => (o4[e2.codePointAt(0)] = t, o4), []);\nfunction fr2(o4) {\n  return o4.reduce((e2, t) => (e2 += mr2[t], e2), \"\");\n}\nfunction _r2(o4) {\n  const e2 = [];\n  for (const t of o4) {\n    const s3 = br2[t.codePointAt(0)];\n    if (s3 === void 0)\n      throw new Error(`Non-base256emoji character: ${t}`);\n    e2.push(s3);\n  }\n  return new Uint8Array(e2);\n}\nvar Er2 = re2({ prefix: \"🚀\", name: \"base256emoji\", encode: fr2, decode: _r2 });\nvar vr2 = Object.freeze({ __proto__: null, base256emoji: Er2 });\nvar wr2 = zt2;\nvar Nt2 = 128;\nvar Ir2 = 127;\nvar Tr2 = ~Ir2;\nvar Cr2 = Math.pow(2, 31);\nfunction zt2(o4, e2, t) {\n  e2 = e2 || [], t = t || 0;\n  for (var s3 = t; o4 >= Cr2; )\n    e2[t++] = o4 & 255 | Nt2, o4 /= 128;\n  for (; o4 & Tr2; )\n    e2[t++] = o4 & 255 | Nt2, o4 >>>= 7;\n  return e2[t] = o4 | 0, zt2.bytes = t - s3 + 1, e2;\n}\nvar Pr2 = _e2;\nvar Sr2 = 128;\nvar Lt2 = 127;\nfunction _e2(o4, s3) {\n  var t = 0, s3 = s3 || 0, i4 = 0, r4 = s3, n5, a4 = o4.length;\n  do {\n    if (r4 >= a4)\n      throw _e2.bytes = 0, new RangeError(\"Could not decode varint\");\n    n5 = o4[r4++], t += i4 < 28 ? (n5 & Lt2) << i4 : (n5 & Lt2) * Math.pow(2, i4), i4 += 7;\n  } while (n5 >= Sr2);\n  return _e2.bytes = r4 - s3, t;\n}\nvar Rr2 = Math.pow(2, 7);\nvar xr2 = Math.pow(2, 14);\nvar Or2 = Math.pow(2, 21);\nvar Ar2 = Math.pow(2, 28);\nvar Nr2 = Math.pow(2, 35);\nvar zr2 = Math.pow(2, 42);\nvar Lr = Math.pow(2, 49);\nvar $r2 = Math.pow(2, 56);\nvar kr2 = Math.pow(2, 63);\nvar Mr = function(o4) {\n  return o4 < Rr2 ? 1 : o4 < xr2 ? 2 : o4 < Or2 ? 3 : o4 < Ar2 ? 4 : o4 < Nr2 ? 5 : o4 < zr2 ? 6 : o4 < Lr ? 7 : o4 < $r2 ? 8 : o4 < kr2 ? 9 : 10;\n};\nvar Ur2 = { encode: wr2, decode: Pr2, encodingLength: Mr };\nvar $t2 = Ur2;\nvar kt2 = (o4, e2, t = 0) => ($t2.encode(o4, e2, t), e2);\nvar Mt2 = (o4) => $t2.encodingLength(o4);\nvar Ee2 = (o4, e2) => {\n  const t = e2.byteLength, s3 = Mt2(o4), i4 = s3 + Mt2(t), r4 = new Uint8Array(i4 + t);\n  return kt2(o4, r4, 0), kt2(t, r4, s3), r4.set(e2, i4), new Fr(o4, t, e2, r4);\n};\nvar Fr = class {\n  constructor(e2, t, s3, i4) {\n    this.code = e2, this.size = t, this.digest = s3, this.bytes = i4;\n  }\n};\nvar Ut = ({ name: o4, code: e2, encode: t }) => new Kr(o4, e2, t);\nvar Kr = class {\n  constructor(e2, t, s3) {\n    this.name = e2, this.code = t, this.encode = s3;\n  }\n  digest(e2) {\n    if (e2 instanceof Uint8Array) {\n      const t = this.encode(e2);\n      return t instanceof Uint8Array ? Ee2(this.code, t) : t.then((s3) => Ee2(this.code, s3));\n    } else\n      throw Error(\"Unknown type, must be binary type\");\n  }\n};\nvar Ft2 = (o4) => async (e2) => new Uint8Array(await crypto.subtle.digest(o4, e2));\nvar Br = Ut({ name: \"sha2-256\", code: 18, encode: Ft2(\"SHA-256\") });\nvar Vr = Ut({ name: \"sha2-512\", code: 19, encode: Ft2(\"SHA-512\") });\nvar jr2 = Object.freeze({ __proto__: null, sha256: Br, sha512: Vr });\nvar Kt2 = 0;\nvar qr = \"identity\";\nvar Bt2 = xt2;\nvar Gr2 = (o4) => Ee2(Kt2, Bt2(o4));\nvar Hr = { code: Kt2, name: qr, encode: Bt2, digest: Gr2 };\nvar Yr2 = Object.freeze({ __proto__: null, identity: Hr });\nnew TextEncoder(), new TextDecoder();\nvar Vt2 = { ...Fs, ...Bs, ...js, ...Gs, ...Js, ...nr2, ...hr2, ...ur2, ...Dr2, ...vr2 };\n({ ...jr2, ...Yr2 });\nfunction Jr2(o4 = 0) {\n  return globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null ? globalThis.Buffer.allocUnsafe(o4) : new Uint8Array(o4);\n}\nfunction jt(o4, e2, t, s3) {\n  return { name: o4, prefix: e2, encoder: { name: o4, prefix: e2, encode: t }, decoder: { decode: s3 } };\n}\nvar qt2 = jt(\"utf8\", \"u\", (o4) => \"u\" + new TextDecoder(\"utf8\").decode(o4), (o4) => new TextEncoder().encode(o4.substring(1)));\nvar ve2 = jt(\"ascii\", \"a\", (o4) => {\n  let e2 = \"a\";\n  for (let t = 0; t < o4.length; t++)\n    e2 += String.fromCharCode(o4[t]);\n  return e2;\n}, (o4) => {\n  o4 = o4.substring(1);\n  const e2 = Jr2(o4.length);\n  for (let t = 0; t < o4.length; t++)\n    e2[t] = o4.charCodeAt(t);\n  return e2;\n});\nvar Xr2 = { utf8: qt2, \"utf-8\": qt2, hex: Vt2.base16, latin1: ve2, ascii: ve2, binary: ve2, ...Vt2 };\nfunction Wr(o4, e2 = \"utf8\") {\n  const t = Xr2[e2];\n  if (!t)\n    throw new Error(`Unsupported encoding \"${e2}\"`);\n  return (e2 === \"utf8\" || e2 === \"utf-8\") && globalThis.Buffer != null && globalThis.Buffer.from != null ? globalThis.Buffer.from(o4, \"utf8\") : t.decoder.decode(`${t.prefix}${o4}`);\n}\nvar Gt2 = class {\n  constructor(e2, t) {\n    this.core = e2, this.logger = t, this.keychain = /* @__PURE__ */ new Map(), this.name = Ze, this.version = Qe, this.initialized = false, this.storagePrefix = x4, this.init = async () => {\n      if (!this.initialized) {\n        const s3 = await this.getKeyChain();\n        typeof s3 < \"u\" && (this.keychain = s3), this.initialized = true;\n      }\n    }, this.has = (s3) => (this.isInitialized(), this.keychain.has(s3)), this.set = async (s3, i4) => {\n      this.isInitialized(), this.keychain.set(s3, i4), await this.persist();\n    }, this.get = (s3) => {\n      this.isInitialized();\n      const i4 = this.keychain.get(s3);\n      if (typeof i4 > \"u\") {\n        const { message: r4 } = S(\"NO_MATCHING_KEY\", `${this.name}: ${s3}`);\n        throw new Error(r4);\n      }\n      return i4;\n    }, this.del = async (s3) => {\n      this.isInitialized(), this.keychain.delete(s3), await this.persist();\n    }, this.core = e2, this.logger = E(t, this.name);\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n  async setKeyChain(e2) {\n    await this.core.storage.setItem(this.storageKey, Tt(e2));\n  }\n  async getKeyChain() {\n    const e2 = await this.core.storage.getItem(this.storageKey);\n    return typeof e2 < \"u\" ? Pt(e2) : void 0;\n  }\n  async persist() {\n    await this.setKeyChain(this.keychain);\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: e2 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(e2);\n    }\n  }\n};\nvar Ht2 = class {\n  constructor(e2, t, s3) {\n    this.core = e2, this.logger = t, this.name = Xe2, this.randomSessionIdentifier = pr(), this.initialized = false, this.init = async () => {\n      this.initialized || (await this.keychain.init(), this.initialized = true);\n    }, this.hasKeys = (i4) => (this.isInitialized(), this.keychain.has(i4)), this.getClientId = async () => {\n      this.isInitialized();\n      const i4 = await this.getClientSeed(), r4 = generateKeyPair(i4);\n      return encodeIss(r4.publicKey);\n    }, this.generateKeyPair = () => {\n      this.isInitialized();\n      const i4 = fr();\n      return this.setPrivateKey(i4.publicKey, i4.privateKey);\n    }, this.signJWT = async (i4) => {\n      this.isInitialized();\n      const r4 = await this.getClientSeed(), n5 = generateKeyPair(r4), a4 = this.randomSessionIdentifier, h5 = We2;\n      return await signJWT(a4, i4, h5, n5);\n    }, this.generateSharedKey = (i4, r4, n5) => {\n      this.isInitialized();\n      const a4 = this.getPrivateKey(i4), h5 = mr(a4, r4);\n      return this.setSymKey(h5, n5);\n    }, this.setSymKey = async (i4, r4) => {\n      this.isInitialized();\n      const n5 = r4 || hr(i4);\n      return await this.keychain.set(n5, i4), n5;\n    }, this.deleteKeyPair = async (i4) => {\n      this.isInitialized(), await this.keychain.del(i4);\n    }, this.deleteSymKey = async (i4) => {\n      this.isInitialized(), await this.keychain.del(i4);\n    }, this.encode = async (i4, r4, n5) => {\n      this.isInitialized();\n      const a4 = On(n5), h5 = safeJsonStringify(r4);\n      if (Nr(a4))\n        return vr(h5, n5 == null ? void 0 : n5.encoding);\n      if (Or(a4)) {\n        const D4 = a4.senderPublicKey, m2 = a4.receiverPublicKey;\n        i4 = await this.generateSharedKey(D4, m2);\n      }\n      const c5 = this.getSymKey(i4), { type: l4, senderPublicKey: p3 } = a4;\n      return gr({ type: l4, symKey: c5, message: h5, senderPublicKey: p3, encoding: n5 == null ? void 0 : n5.encoding });\n    }, this.decode = async (i4, r4, n5) => {\n      this.isInitialized();\n      const a4 = wr(r4, n5);\n      if (Nr(a4)) {\n        const h5 = Er(r4, n5 == null ? void 0 : n5.encoding);\n        return safeJsonParse(h5);\n      }\n      if (Or(a4)) {\n        const h5 = a4.receiverPublicKey, c5 = a4.senderPublicKey;\n        i4 = await this.generateSharedKey(h5, c5);\n      }\n      try {\n        const h5 = this.getSymKey(i4), c5 = br({ symKey: h5, encoded: r4, encoding: n5 == null ? void 0 : n5.encoding });\n        return safeJsonParse(c5);\n      } catch (h5) {\n        this.logger.error(`Failed to decode message from topic: '${i4}', clientId: '${await this.getClientId()}'`), this.logger.error(h5);\n      }\n    }, this.getPayloadType = (i4, r4 = ge) => {\n      const n5 = Q({ encoded: i4, encoding: r4 });\n      return A(n5.type);\n    }, this.getPayloadSenderPublicKey = (i4, r4 = ge) => {\n      const n5 = Q({ encoded: i4, encoding: r4 });\n      return n5.senderPublicKey ? toString2(n5.senderPublicKey, g) : void 0;\n    }, this.core = e2, this.logger = E(t, this.name), this.keychain = s3 || new Gt2(this.core, this.logger);\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  async setPrivateKey(e2, t) {\n    return await this.keychain.set(e2, t), e2;\n  }\n  getPrivateKey(e2) {\n    return this.keychain.get(e2);\n  }\n  async getClientSeed() {\n    let e2 = \"\";\n    try {\n      e2 = this.keychain.get(me2);\n    } catch {\n      e2 = pr(), await this.keychain.set(me2, e2);\n    }\n    return Wr(e2, \"base16\");\n  }\n  getSymKey(e2) {\n    return this.keychain.get(e2);\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: e2 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(e2);\n    }\n  }\n};\nvar Yt2 = class extends a2 {\n  constructor(e2, t) {\n    super(e2, t), this.logger = e2, this.core = t, this.messages = /* @__PURE__ */ new Map(), this.name = et2, this.version = tt, this.initialized = false, this.storagePrefix = x4, this.init = async () => {\n      if (!this.initialized) {\n        this.logger.trace(\"Initialized\");\n        try {\n          const s3 = await this.getRelayerMessages();\n          typeof s3 < \"u\" && (this.messages = s3), this.logger.debug(`Successfully Restored records for ${this.name}`), this.logger.trace({ type: \"method\", method: \"restore\", size: this.messages.size });\n        } catch (s3) {\n          this.logger.debug(`Failed to Restore records for ${this.name}`), this.logger.error(s3);\n        } finally {\n          this.initialized = true;\n        }\n      }\n    }, this.set = async (s3, i4) => {\n      this.isInitialized();\n      const r4 = yr(i4);\n      let n5 = this.messages.get(s3);\n      return typeof n5 > \"u\" && (n5 = {}), typeof n5[r4] < \"u\" || (n5[r4] = i4, this.messages.set(s3, n5), await this.persist()), r4;\n    }, this.get = (s3) => {\n      this.isInitialized();\n      let i4 = this.messages.get(s3);\n      return typeof i4 > \"u\" && (i4 = {}), i4;\n    }, this.has = (s3, i4) => {\n      this.isInitialized();\n      const r4 = this.get(s3), n5 = yr(i4);\n      return typeof r4[n5] < \"u\";\n    }, this.del = async (s3) => {\n      this.isInitialized(), this.messages.delete(s3), await this.persist();\n    }, this.logger = E(e2, this.name), this.core = t;\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n  async setRelayerMessages(e2) {\n    await this.core.storage.setItem(this.storageKey, Tt(e2));\n  }\n  async getRelayerMessages() {\n    const e2 = await this.core.storage.getItem(this.storageKey);\n    return typeof e2 < \"u\" ? Pt(e2) : void 0;\n  }\n  async persist() {\n    await this.setRelayerMessages(this.messages);\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: e2 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(e2);\n    }\n  }\n};\nvar Zr2 = class extends g3 {\n  constructor(e2, t) {\n    super(e2, t), this.relayer = e2, this.logger = t, this.events = new import_events7.EventEmitter(), this.name = st2, this.queue = /* @__PURE__ */ new Map(), this.publishTimeout = (0, import_time4.toMiliseconds)(import_time4.ONE_MINUTE), this.failedPublishTimeout = (0, import_time4.toMiliseconds)(import_time4.ONE_SECOND), this.needsTransportRestart = false, this.publish = async (s3, i4, r4) => {\n      var n5;\n      this.logger.debug(\"Publishing Payload\"), this.logger.trace({ type: \"method\", method: \"publish\", params: { topic: s3, message: i4, opts: r4 } });\n      const a4 = (r4 == null ? void 0 : r4.ttl) || it2, h5 = Ir(r4), c5 = (r4 == null ? void 0 : r4.prompt) || false, l4 = (r4 == null ? void 0 : r4.tag) || 0, p3 = (r4 == null ? void 0 : r4.id) || getBigIntRpcId().toString(), D4 = { topic: s3, message: i4, opts: { ttl: a4, relay: h5, prompt: c5, tag: l4, id: p3, attestation: r4 == null ? void 0 : r4.attestation } }, m2 = `Failed to publish payload, please try again. id:${p3} tag:${l4}`, u3 = Date.now();\n      let g4, _4 = 1;\n      try {\n        for (; g4 === void 0; ) {\n          if (Date.now() - u3 > this.publishTimeout)\n            throw new Error(m2);\n          this.logger.trace({ id: p3, attempts: _4 }, `publisher.publish - attempt ${_4}`), g4 = await await kt(this.rpcPublish(s3, i4, a4, h5, c5, l4, p3, r4 == null ? void 0 : r4.attestation).catch((y6) => this.logger.warn(y6)), this.publishTimeout, m2), _4++, g4 || await new Promise((y6) => setTimeout(y6, this.failedPublishTimeout));\n        }\n        this.relayer.events.emit(v3.publish, D4), this.logger.debug(\"Successfully Published Payload\"), this.logger.trace({ type: \"method\", method: \"publish\", params: { id: p3, topic: s3, message: i4, opts: r4 } });\n      } catch (y6) {\n        if (this.logger.debug(\"Failed to Publish Payload\"), this.logger.error(y6), (n5 = r4 == null ? void 0 : r4.internal) != null && n5.throwOnFailedPublish)\n          throw y6;\n        this.queue.set(p3, D4);\n      }\n    }, this.on = (s3, i4) => {\n      this.events.on(s3, i4);\n    }, this.once = (s3, i4) => {\n      this.events.once(s3, i4);\n    }, this.off = (s3, i4) => {\n      this.events.off(s3, i4);\n    }, this.removeListener = (s3, i4) => {\n      this.events.removeListener(s3, i4);\n    }, this.relayer = e2, this.logger = E(t, this.name), this.registerEventListeners();\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  rpcPublish(e2, t, s3, i4, r4, n5, a4, h5) {\n    var c5, l4, p3, D4;\n    const m2 = { method: jr(i4.protocol).publish, params: { topic: e2, message: t, ttl: s3, prompt: r4, tag: n5, attestation: h5 }, id: a4 };\n    return I((c5 = m2.params) == null ? void 0 : c5.prompt) && ((l4 = m2.params) == null || delete l4.prompt), I((p3 = m2.params) == null ? void 0 : p3.tag) && ((D4 = m2.params) == null || delete D4.tag), this.logger.debug(\"Outgoing Relay Payload\"), this.logger.trace({ type: \"message\", direction: \"outgoing\", request: m2 }), this.relayer.request(m2);\n  }\n  removeRequestFromQueue(e2) {\n    this.queue.delete(e2);\n  }\n  checkQueue() {\n    this.queue.forEach(async (e2) => {\n      const { topic: t, message: s3, opts: i4 } = e2;\n      await this.publish(t, s3, i4);\n    });\n  }\n  registerEventListeners() {\n    this.relayer.core.heartbeat.on(r3.pulse, () => {\n      if (this.needsTransportRestart) {\n        this.needsTransportRestart = false, this.relayer.events.emit(v3.connection_stalled);\n        return;\n      }\n      this.checkQueue();\n    }), this.relayer.on(v3.message_ack, (e2) => {\n      this.removeRequestFromQueue(e2.id.toString());\n    });\n  }\n};\nvar Qr2 = class {\n  constructor() {\n    this.map = /* @__PURE__ */ new Map(), this.set = (e2, t) => {\n      const s3 = this.get(e2);\n      this.exists(e2, t) || this.map.set(e2, [...s3, t]);\n    }, this.get = (e2) => this.map.get(e2) || [], this.exists = (e2, t) => this.get(e2).includes(t), this.delete = (e2, t) => {\n      if (typeof t > \"u\") {\n        this.map.delete(e2);\n        return;\n      }\n      if (!this.map.has(e2))\n        return;\n      const s3 = this.get(e2);\n      if (!this.exists(e2, t))\n        return;\n      const i4 = s3.filter((r4) => r4 !== t);\n      if (!i4.length) {\n        this.map.delete(e2);\n        return;\n      }\n      this.map.set(e2, i4);\n    }, this.clear = () => {\n      this.map.clear();\n    };\n  }\n  get topics() {\n    return Array.from(this.map.keys());\n  }\n};\nvar en2 = Object.defineProperty;\nvar tn2 = Object.defineProperties;\nvar sn2 = Object.getOwnPropertyDescriptors;\nvar Jt2 = Object.getOwnPropertySymbols;\nvar rn2 = Object.prototype.hasOwnProperty;\nvar nn2 = Object.prototype.propertyIsEnumerable;\nvar Xt2 = (o4, e2, t) => e2 in o4 ? en2(o4, e2, { enumerable: true, configurable: true, writable: true, value: t }) : o4[e2] = t;\nvar W2 = (o4, e2) => {\n  for (var t in e2 || (e2 = {}))\n    rn2.call(e2, t) && Xt2(o4, t, e2[t]);\n  if (Jt2)\n    for (var t of Jt2(e2))\n      nn2.call(e2, t) && Xt2(o4, t, e2[t]);\n  return o4;\n};\nvar we2 = (o4, e2) => tn2(o4, sn2(e2));\nvar Wt2 = class extends d2 {\n  constructor(e2, t) {\n    super(e2, t), this.relayer = e2, this.logger = t, this.subscriptions = /* @__PURE__ */ new Map(), this.topicMap = new Qr2(), this.events = new import_events7.EventEmitter(), this.name = ut2, this.version = dt, this.pending = /* @__PURE__ */ new Map(), this.cached = [], this.initialized = false, this.pendingSubscriptionWatchLabel = \"pending_sub_watch_label\", this.pollingInterval = 20, this.storagePrefix = x4, this.subscribeTimeout = (0, import_time4.toMiliseconds)(import_time4.ONE_MINUTE), this.restartInProgress = false, this.batchSubscribeTopicsLimit = 500, this.pendingBatchMessages = [], this.init = async () => {\n      this.initialized || (this.logger.trace(\"Initialized\"), this.registerEventListeners(), this.clientId = await this.relayer.core.crypto.getClientId(), await this.restore()), this.initialized = true;\n    }, this.subscribe = async (s3, i4) => {\n      this.isInitialized(), this.logger.debug(\"Subscribing Topic\"), this.logger.trace({ type: \"method\", method: \"subscribe\", params: { topic: s3, opts: i4 } });\n      try {\n        const r4 = Ir(i4), n5 = { topic: s3, relay: r4, transportType: i4 == null ? void 0 : i4.transportType };\n        this.pending.set(s3, n5);\n        const a4 = await this.rpcSubscribe(s3, r4, i4);\n        return typeof a4 == \"string\" && (this.onSubscribe(a4, n5), this.logger.debug(\"Successfully Subscribed Topic\"), this.logger.trace({ type: \"method\", method: \"subscribe\", params: { topic: s3, opts: i4 } })), a4;\n      } catch (r4) {\n        throw this.logger.debug(\"Failed to Subscribe Topic\"), this.logger.error(r4), r4;\n      }\n    }, this.unsubscribe = async (s3, i4) => {\n      await this.restartToComplete(), this.isInitialized(), typeof (i4 == null ? void 0 : i4.id) < \"u\" ? await this.unsubscribeById(s3, i4.id, i4) : await this.unsubscribeByTopic(s3, i4);\n    }, this.isSubscribed = async (s3) => {\n      if (this.topics.includes(s3))\n        return true;\n      const i4 = `${this.pendingSubscriptionWatchLabel}_${s3}`;\n      return await new Promise((r4, n5) => {\n        const a4 = new import_time4.Watch();\n        a4.start(i4);\n        const h5 = setInterval(() => {\n          !this.pending.has(s3) && this.topics.includes(s3) && (clearInterval(h5), a4.stop(i4), r4(true)), a4.elapsed(i4) >= pt && (clearInterval(h5), a4.stop(i4), n5(new Error(\"Subscription resolution timeout\")));\n        }, this.pollingInterval);\n      }).catch(() => false);\n    }, this.on = (s3, i4) => {\n      this.events.on(s3, i4);\n    }, this.once = (s3, i4) => {\n      this.events.once(s3, i4);\n    }, this.off = (s3, i4) => {\n      this.events.off(s3, i4);\n    }, this.removeListener = (s3, i4) => {\n      this.events.removeListener(s3, i4);\n    }, this.start = async () => {\n      await this.onConnect();\n    }, this.stop = async () => {\n      await this.onDisconnect();\n    }, this.restart = async () => {\n      this.restartInProgress = true, await this.restore(), await this.reset(), this.restartInProgress = false;\n    }, this.relayer = e2, this.logger = E(t, this.name), this.clientId = \"\";\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  get storageKey() {\n    return this.storagePrefix + this.version + this.relayer.core.customStoragePrefix + \"//\" + this.name;\n  }\n  get length() {\n    return this.subscriptions.size;\n  }\n  get ids() {\n    return Array.from(this.subscriptions.keys());\n  }\n  get values() {\n    return Array.from(this.subscriptions.values());\n  }\n  get topics() {\n    return this.topicMap.topics;\n  }\n  hasSubscription(e2, t) {\n    let s3 = false;\n    try {\n      s3 = this.getSubscription(e2).topic === t;\n    } catch {\n    }\n    return s3;\n  }\n  onEnable() {\n    this.cached = [], this.initialized = true;\n  }\n  onDisable() {\n    this.cached = this.values, this.subscriptions.clear(), this.topicMap.clear();\n  }\n  async unsubscribeByTopic(e2, t) {\n    const s3 = this.topicMap.get(e2);\n    await Promise.all(s3.map(async (i4) => await this.unsubscribeById(e2, i4, t)));\n  }\n  async unsubscribeById(e2, t, s3) {\n    this.logger.debug(\"Unsubscribing Topic\"), this.logger.trace({ type: \"method\", method: \"unsubscribe\", params: { topic: e2, id: t, opts: s3 } });\n    try {\n      const i4 = Ir(s3);\n      await this.rpcUnsubscribe(e2, t, i4);\n      const r4 = U(\"USER_DISCONNECTED\", `${this.name}, ${e2}`);\n      await this.onUnsubscribe(e2, t, r4), this.logger.debug(\"Successfully Unsubscribed Topic\"), this.logger.trace({ type: \"method\", method: \"unsubscribe\", params: { topic: e2, id: t, opts: s3 } });\n    } catch (i4) {\n      throw this.logger.debug(\"Failed to Unsubscribe Topic\"), this.logger.error(i4), i4;\n    }\n  }\n  async rpcSubscribe(e2, t, s3) {\n    var i4;\n    (s3 == null ? void 0 : s3.transportType) === M3.relay && await this.restartToComplete();\n    const r4 = { method: jr(t.protocol).subscribe, params: { topic: e2 } };\n    this.logger.debug(\"Outgoing Relay Payload\"), this.logger.trace({ type: \"payload\", direction: \"outgoing\", request: r4 });\n    const n5 = (i4 = s3 == null ? void 0 : s3.internal) == null ? void 0 : i4.throwOnFailedPublish;\n    try {\n      const a4 = yr(e2 + this.clientId);\n      if ((s3 == null ? void 0 : s3.transportType) === M3.link_mode)\n        return setTimeout(() => {\n          (this.relayer.connected || this.relayer.connecting) && this.relayer.request(r4).catch((c5) => this.logger.warn(c5));\n        }, (0, import_time4.toMiliseconds)(import_time4.ONE_SECOND)), a4;\n      const h5 = await kt(this.relayer.request(r4).catch((c5) => this.logger.warn(c5)), this.subscribeTimeout, `Subscribing to ${e2} failed, please try again`);\n      if (!h5 && n5)\n        throw new Error(`Subscribing to ${e2} failed, please try again`);\n      return h5 ? a4 : null;\n    } catch (a4) {\n      if (this.logger.debug(\"Outgoing Relay Subscribe Payload stalled\"), this.relayer.events.emit(v3.connection_stalled), n5)\n        throw a4;\n    }\n    return null;\n  }\n  async rpcBatchSubscribe(e2) {\n    if (!e2.length)\n      return;\n    const t = e2[0].relay, s3 = { method: jr(t.protocol).batchSubscribe, params: { topics: e2.map((i4) => i4.topic) } };\n    this.logger.debug(\"Outgoing Relay Payload\"), this.logger.trace({ type: \"payload\", direction: \"outgoing\", request: s3 });\n    try {\n      return await await kt(this.relayer.request(s3).catch((i4) => this.logger.warn(i4)), this.subscribeTimeout);\n    } catch {\n      this.relayer.events.emit(v3.connection_stalled);\n    }\n  }\n  async rpcBatchFetchMessages(e2) {\n    if (!e2.length)\n      return;\n    const t = e2[0].relay, s3 = { method: jr(t.protocol).batchFetchMessages, params: { topics: e2.map((r4) => r4.topic) } };\n    this.logger.debug(\"Outgoing Relay Payload\"), this.logger.trace({ type: \"payload\", direction: \"outgoing\", request: s3 });\n    let i4;\n    try {\n      i4 = await await kt(this.relayer.request(s3).catch((r4) => this.logger.warn(r4)), this.subscribeTimeout);\n    } catch {\n      this.relayer.events.emit(v3.connection_stalled);\n    }\n    return i4;\n  }\n  rpcUnsubscribe(e2, t, s3) {\n    const i4 = { method: jr(s3.protocol).unsubscribe, params: { topic: e2, id: t } };\n    return this.logger.debug(\"Outgoing Relay Payload\"), this.logger.trace({ type: \"payload\", direction: \"outgoing\", request: i4 }), this.relayer.request(i4);\n  }\n  onSubscribe(e2, t) {\n    this.setSubscription(e2, we2(W2({}, t), { id: e2 })), this.pending.delete(t.topic);\n  }\n  onBatchSubscribe(e2) {\n    e2.length && e2.forEach((t) => {\n      this.setSubscription(t.id, W2({}, t)), this.pending.delete(t.topic);\n    });\n  }\n  async onUnsubscribe(e2, t, s3) {\n    this.events.removeAllListeners(t), this.hasSubscription(t, e2) && this.deleteSubscription(t, s3), await this.relayer.messages.del(e2);\n  }\n  async setRelayerSubscriptions(e2) {\n    await this.relayer.core.storage.setItem(this.storageKey, e2);\n  }\n  async getRelayerSubscriptions() {\n    return await this.relayer.core.storage.getItem(this.storageKey);\n  }\n  setSubscription(e2, t) {\n    this.logger.debug(\"Setting subscription\"), this.logger.trace({ type: \"method\", method: \"setSubscription\", id: e2, subscription: t }), this.addSubscription(e2, t);\n  }\n  addSubscription(e2, t) {\n    this.subscriptions.set(e2, W2({}, t)), this.topicMap.set(t.topic, e2), this.events.emit(O4.created, t);\n  }\n  getSubscription(e2) {\n    this.logger.debug(\"Getting subscription\"), this.logger.trace({ type: \"method\", method: \"getSubscription\", id: e2 });\n    const t = this.subscriptions.get(e2);\n    if (!t) {\n      const { message: s3 } = S(\"NO_MATCHING_KEY\", `${this.name}: ${e2}`);\n      throw new Error(s3);\n    }\n    return t;\n  }\n  deleteSubscription(e2, t) {\n    this.logger.debug(\"Deleting subscription\"), this.logger.trace({ type: \"method\", method: \"deleteSubscription\", id: e2, reason: t });\n    const s3 = this.getSubscription(e2);\n    this.subscriptions.delete(e2), this.topicMap.delete(s3.topic, e2), this.events.emit(O4.deleted, we2(W2({}, s3), { reason: t }));\n  }\n  async persist() {\n    await this.setRelayerSubscriptions(this.values), this.events.emit(O4.sync);\n  }\n  async reset() {\n    if (this.cached.length) {\n      const e2 = Math.ceil(this.cached.length / this.batchSubscribeTopicsLimit);\n      for (let t = 0; t < e2; t++) {\n        const s3 = this.cached.splice(0, this.batchSubscribeTopicsLimit);\n        await this.batchFetchMessages(s3), await this.batchSubscribe(s3);\n      }\n    }\n    this.events.emit(O4.resubscribed);\n  }\n  async restore() {\n    try {\n      const e2 = await this.getRelayerSubscriptions();\n      if (typeof e2 > \"u\" || !e2.length)\n        return;\n      if (this.subscriptions.size) {\n        const { message: t } = S(\"RESTORE_WILL_OVERRIDE\", this.name);\n        throw this.logger.error(t), this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`), new Error(t);\n      }\n      this.cached = e2, this.logger.debug(`Successfully Restored subscriptions for ${this.name}`), this.logger.trace({ type: \"method\", method: \"restore\", subscriptions: this.values });\n    } catch (e2) {\n      this.logger.debug(`Failed to Restore subscriptions for ${this.name}`), this.logger.error(e2);\n    }\n  }\n  async batchSubscribe(e2) {\n    if (!e2.length)\n      return;\n    const t = await this.rpcBatchSubscribe(e2);\n    L(t) && this.onBatchSubscribe(t.map((s3, i4) => we2(W2({}, e2[i4]), { id: s3 })));\n  }\n  async batchFetchMessages(e2) {\n    if (!e2.length)\n      return;\n    this.logger.trace(`Fetching batch messages for ${e2.length} subscriptions`);\n    const t = await this.rpcBatchFetchMessages(e2);\n    t && t.messages && (this.pendingBatchMessages = this.pendingBatchMessages.concat(t.messages));\n  }\n  async onConnect() {\n    await this.restart(), this.onEnable();\n  }\n  onDisconnect() {\n    this.onDisable();\n  }\n  async checkPending() {\n    if (!this.initialized || !this.relayer.connected)\n      return;\n    const e2 = [];\n    this.pending.forEach((t) => {\n      e2.push(t);\n    }), await this.batchSubscribe(e2), this.pendingBatchMessages.length && (await this.relayer.handleBatchMessageEvents(this.pendingBatchMessages), this.pendingBatchMessages = []);\n  }\n  registerEventListeners() {\n    this.relayer.core.heartbeat.on(r3.pulse, async () => {\n      await this.checkPending();\n    }), this.events.on(O4.created, async (e2) => {\n      const t = O4.created;\n      this.logger.info(`Emitting ${t}`), this.logger.debug({ type: \"event\", event: t, data: e2 }), await this.persist();\n    }), this.events.on(O4.deleted, async (e2) => {\n      const t = O4.deleted;\n      this.logger.info(`Emitting ${t}`), this.logger.debug({ type: \"event\", event: t, data: e2 }), await this.persist();\n    });\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: e2 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(e2);\n    }\n  }\n  async restartToComplete() {\n    !this.relayer.connected && !this.relayer.connecting && await this.relayer.transportOpen(), this.restartInProgress && await new Promise((e2) => {\n      const t = setInterval(() => {\n        this.restartInProgress || (clearInterval(t), e2());\n      }, this.pollingInterval);\n    });\n  }\n};\nvar on2 = Object.defineProperty;\nvar Zt2 = Object.getOwnPropertySymbols;\nvar an2 = Object.prototype.hasOwnProperty;\nvar hn2 = Object.prototype.propertyIsEnumerable;\nvar Qt2 = (o4, e2, t) => e2 in o4 ? on2(o4, e2, { enumerable: true, configurable: true, writable: true, value: t }) : o4[e2] = t;\nvar ei = (o4, e2) => {\n  for (var t in e2 || (e2 = {}))\n    an2.call(e2, t) && Qt2(o4, t, e2[t]);\n  if (Zt2)\n    for (var t of Zt2(e2))\n      hn2.call(e2, t) && Qt2(o4, t, e2[t]);\n  return o4;\n};\nvar ti = class extends u {\n  constructor(e2) {\n    super(e2), this.protocol = \"wc\", this.version = 2, this.events = new import_events7.EventEmitter(), this.name = ot, this.transportExplicitlyClosed = false, this.initialized = false, this.connectionAttemptInProgress = false, this.connectionStatusPollingInterval = 20, this.staleConnectionErrors = [\"socket hang up\", \"stalled\", \"interrupted\"], this.hasExperiencedNetworkDisruption = false, this.requestsInFlight = /* @__PURE__ */ new Map(), this.heartBeatTimeout = (0, import_time4.toMiliseconds)(import_time4.THIRTY_SECONDS + import_time4.ONE_SECOND), this.request = async (t) => {\n      var s3, i4;\n      this.logger.debug(\"Publishing Request Payload\");\n      const r4 = t.id || getBigIntRpcId().toString();\n      await this.toEstablishConnection();\n      try {\n        const n5 = this.provider.request(t);\n        this.requestsInFlight.set(r4, { promise: n5, request: t }), this.logger.trace({ id: r4, method: t.method, topic: (s3 = t.params) == null ? void 0 : s3.topic }, \"relayer.request - attempt to publish...\");\n        const a4 = await new Promise(async (h5, c5) => {\n          const l4 = () => {\n            c5(new Error(`relayer.request - publish interrupted, id: ${r4}`));\n          };\n          this.provider.on(I3.disconnect, l4);\n          const p3 = await n5;\n          this.provider.off(I3.disconnect, l4), h5(p3);\n        });\n        return this.logger.trace({ id: r4, method: t.method, topic: (i4 = t.params) == null ? void 0 : i4.topic }, \"relayer.request - published\"), a4;\n      } catch (n5) {\n        throw this.logger.debug(`Failed to Publish Request: ${r4}`), n5;\n      } finally {\n        this.requestsInFlight.delete(r4);\n      }\n    }, this.resetPingTimeout = () => {\n      if (ce())\n        try {\n          clearTimeout(this.pingTimeout), this.pingTimeout = setTimeout(() => {\n            var t, s3, i4;\n            (i4 = (s3 = (t = this.provider) == null ? void 0 : t.connection) == null ? void 0 : s3.socket) == null || i4.terminate();\n          }, this.heartBeatTimeout);\n        } catch (t) {\n          this.logger.warn(t);\n        }\n    }, this.onPayloadHandler = (t) => {\n      this.onProviderPayload(t), this.resetPingTimeout();\n    }, this.onConnectHandler = () => {\n      this.logger.trace(\"relayer connected\"), this.startPingTimeout(), this.events.emit(v3.connect);\n    }, this.onDisconnectHandler = () => {\n      this.logger.trace(\"relayer disconnected\"), this.onProviderDisconnect();\n    }, this.onProviderErrorHandler = (t) => {\n      this.logger.error(t), this.events.emit(v3.error, t), this.logger.info(\"Fatal socket error received, closing transport\"), this.transportClose();\n    }, this.registerProviderListeners = () => {\n      this.provider.on(I3.payload, this.onPayloadHandler), this.provider.on(I3.connect, this.onConnectHandler), this.provider.on(I3.disconnect, this.onDisconnectHandler), this.provider.on(I3.error, this.onProviderErrorHandler);\n    }, this.core = e2.core, this.logger = typeof e2.logger < \"u\" && typeof e2.logger != \"string\" ? E(e2.logger, this.name) : (0, import_pino2.default)(k2({ level: e2.logger || nt })), this.messages = new Yt2(this.logger, e2.core), this.subscriber = new Wt2(this, this.logger), this.publisher = new Zr2(this, this.logger), this.relayUrl = (e2 == null ? void 0 : e2.relayUrl) || be2, this.projectId = e2.projectId, this.bundleId = Ot(), this.provider = {};\n  }\n  async init() {\n    if (this.logger.trace(\"Initialized\"), this.registerEventListeners(), await Promise.all([this.messages.init(), this.subscriber.init()]), this.initialized = true, this.subscriber.cached.length > 0)\n      try {\n        await this.transportOpen();\n      } catch (e2) {\n        this.logger.warn(e2);\n      }\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  get connected() {\n    var e2, t, s3;\n    return ((s3 = (t = (e2 = this.provider) == null ? void 0 : e2.connection) == null ? void 0 : t.socket) == null ? void 0 : s3.readyState) === 1;\n  }\n  get connecting() {\n    var e2, t, s3;\n    return ((s3 = (t = (e2 = this.provider) == null ? void 0 : e2.connection) == null ? void 0 : t.socket) == null ? void 0 : s3.readyState) === 0;\n  }\n  async publish(e2, t, s3) {\n    this.isInitialized(), await this.publisher.publish(e2, t, s3), await this.recordMessageEvent({ topic: e2, message: t, publishedAt: Date.now(), transportType: M3.relay });\n  }\n  async subscribe(e2, t) {\n    var s3, i4, r4;\n    this.isInitialized(), (t == null ? void 0 : t.transportType) === \"relay\" && await this.toEstablishConnection();\n    const n5 = typeof ((s3 = t == null ? void 0 : t.internal) == null ? void 0 : s3.throwOnFailedPublish) > \"u\" ? true : (i4 = t == null ? void 0 : t.internal) == null ? void 0 : i4.throwOnFailedPublish;\n    let a4 = ((r4 = this.subscriber.topicMap.get(e2)) == null ? void 0 : r4[0]) || \"\", h5;\n    const c5 = (l4) => {\n      l4.topic === e2 && (this.subscriber.off(O4.created, c5), h5());\n    };\n    return await Promise.all([new Promise((l4) => {\n      h5 = l4, this.subscriber.on(O4.created, c5);\n    }), new Promise(async (l4, p3) => {\n      a4 = await this.subscriber.subscribe(e2, ei({ internal: { throwOnFailedPublish: n5 } }, t)).catch((D4) => {\n        n5 && p3(D4);\n      }) || a4, l4();\n    })]), a4;\n  }\n  async unsubscribe(e2, t) {\n    this.isInitialized(), await this.subscriber.unsubscribe(e2, t);\n  }\n  on(e2, t) {\n    this.events.on(e2, t);\n  }\n  once(e2, t) {\n    this.events.once(e2, t);\n  }\n  off(e2, t) {\n    this.events.off(e2, t);\n  }\n  removeListener(e2, t) {\n    this.events.removeListener(e2, t);\n  }\n  async transportDisconnect() {\n    if (!this.hasExperiencedNetworkDisruption && this.connected && this.requestsInFlight.size > 0)\n      try {\n        await Promise.all(Array.from(this.requestsInFlight.values()).map((e2) => e2.promise));\n      } catch (e2) {\n        this.logger.warn(e2);\n      }\n    this.provider.disconnect && (this.hasExperiencedNetworkDisruption || this.connected) ? await kt(this.provider.disconnect(), 2e3, \"provider.disconnect()\").catch(() => this.onProviderDisconnect()) : this.onProviderDisconnect();\n  }\n  async transportClose() {\n    this.transportExplicitlyClosed = true, await this.transportDisconnect();\n  }\n  async transportOpen(e2) {\n    await this.confirmOnlineStateOrThrow(), e2 && e2 !== this.relayUrl && (this.relayUrl = e2, await this.transportDisconnect()), await this.createProvider(), this.connectionAttemptInProgress = true, this.transportExplicitlyClosed = false;\n    try {\n      await new Promise(async (t, s3) => {\n        const i4 = () => {\n          this.provider.off(I3.disconnect, i4), s3(new Error(\"Connection interrupted while trying to subscribe\"));\n        };\n        this.provider.on(I3.disconnect, i4), await kt(this.provider.connect(), (0, import_time4.toMiliseconds)(import_time4.ONE_MINUTE), `Socket stalled when trying to connect to ${this.relayUrl}`).catch((r4) => {\n          s3(r4);\n        }).finally(() => {\n          clearTimeout(this.reconnectTimeout), this.reconnectTimeout = void 0;\n        }), this.subscriber.start().catch((r4) => {\n          this.logger.error(r4), this.onDisconnectHandler();\n        }), this.hasExperiencedNetworkDisruption = false, t();\n      });\n    } catch (t) {\n      this.logger.error(t);\n      const s3 = t;\n      if (this.hasExperiencedNetworkDisruption = true, !this.isConnectionStalled(s3.message))\n        throw t;\n    } finally {\n      this.connectionAttemptInProgress = false;\n    }\n  }\n  async restartTransport(e2) {\n    this.connectionAttemptInProgress || (this.relayUrl = e2 || this.relayUrl, await this.confirmOnlineStateOrThrow(), await this.transportClose(), await this.transportOpen());\n  }\n  async confirmOnlineStateOrThrow() {\n    if (!await mo())\n      throw new Error(\"No internet connection detected. Please restart your network and try again.\");\n  }\n  async handleBatchMessageEvents(e2) {\n    if ((e2 == null ? void 0 : e2.length) === 0) {\n      this.logger.trace(\"Batch message events is empty. Ignoring...\");\n      return;\n    }\n    const t = e2.sort((s3, i4) => s3.publishedAt - i4.publishedAt);\n    this.logger.trace(`Batch of ${t.length} message events sorted`);\n    for (const s3 of t)\n      try {\n        await this.onMessageEvent(s3);\n      } catch (i4) {\n        this.logger.warn(i4);\n      }\n    this.logger.trace(`Batch of ${t.length} message events processed`);\n  }\n  async onLinkMessageEvent(e2, t) {\n    const { topic: s3 } = e2;\n    if (!t.sessionExists) {\n      const i4 = Mt(import_time4.FIVE_MINUTES), r4 = { topic: s3, expiry: i4, relay: { protocol: \"irn\" }, active: false };\n      await this.core.pairing.pairings.set(s3, r4);\n    }\n    this.events.emit(v3.message, e2), await this.recordMessageEvent(e2);\n  }\n  startPingTimeout() {\n    var e2, t, s3, i4, r4;\n    if (ce())\n      try {\n        (t = (e2 = this.provider) == null ? void 0 : e2.connection) != null && t.socket && ((r4 = (i4 = (s3 = this.provider) == null ? void 0 : s3.connection) == null ? void 0 : i4.socket) == null || r4.once(\"ping\", () => {\n          this.resetPingTimeout();\n        })), this.resetPingTimeout();\n      } catch (n5) {\n        this.logger.warn(n5);\n      }\n  }\n  isConnectionStalled(e2) {\n    return this.staleConnectionErrors.some((t) => e2.includes(t));\n  }\n  async createProvider() {\n    this.provider.connection && this.unregisterProviderListeners();\n    const e2 = await this.core.crypto.signJWT(this.relayUrl);\n    this.provider = new o2(new f2($t({ sdkVersion: se, protocol: this.protocol, version: this.version, relayUrl: this.relayUrl, projectId: this.projectId, auth: e2, useOnCloseEvent: true, bundleId: this.bundleId }))), this.registerProviderListeners();\n  }\n  async recordMessageEvent(e2) {\n    const { topic: t, message: s3 } = e2;\n    await this.messages.set(t, s3);\n  }\n  async shouldIgnoreMessageEvent(e2) {\n    const { topic: t, message: s3 } = e2;\n    if (!s3 || s3.length === 0)\n      return this.logger.debug(`Ignoring invalid/empty message: ${s3}`), true;\n    if (!await this.subscriber.isSubscribed(t))\n      return this.logger.debug(`Ignoring message for non-subscribed topic ${t}`), true;\n    const i4 = this.messages.has(t, s3);\n    return i4 && this.logger.debug(`Ignoring duplicate message: ${s3}`), i4;\n  }\n  async onProviderPayload(e2) {\n    if (this.logger.debug(\"Incoming Relay Payload\"), this.logger.trace({ type: \"payload\", direction: \"incoming\", payload: e2 }), isJsonRpcRequest(e2)) {\n      if (!e2.method.endsWith(at2))\n        return;\n      const t = e2.params, { topic: s3, message: i4, publishedAt: r4, attestation: n5 } = t.data, a4 = { topic: s3, message: i4, publishedAt: r4, transportType: M3.relay, attestation: n5 };\n      this.logger.debug(\"Emitting Relayer Payload\"), this.logger.trace(ei({ type: \"event\", event: t.id }, a4)), this.events.emit(t.id, a4), await this.acknowledgePayload(e2), await this.onMessageEvent(a4);\n    } else\n      isJsonRpcResponse(e2) && this.events.emit(v3.message_ack, e2);\n  }\n  async onMessageEvent(e2) {\n    await this.shouldIgnoreMessageEvent(e2) || (this.events.emit(v3.message, e2), await this.recordMessageEvent(e2));\n  }\n  async acknowledgePayload(e2) {\n    const t = formatJsonRpcResult(e2.id, true);\n    await this.provider.connection.send(t);\n  }\n  unregisterProviderListeners() {\n    this.provider.off(I3.payload, this.onPayloadHandler), this.provider.off(I3.connect, this.onConnectHandler), this.provider.off(I3.disconnect, this.onDisconnectHandler), this.provider.off(I3.error, this.onProviderErrorHandler), clearTimeout(this.pingTimeout);\n  }\n  async registerEventListeners() {\n    let e2 = await mo();\n    ho(async (t) => {\n      e2 !== t && (e2 = t, t ? await this.restartTransport().catch((s3) => this.logger.error(s3)) : (this.hasExperiencedNetworkDisruption = true, await this.transportDisconnect(), this.transportExplicitlyClosed = false));\n    });\n  }\n  async onProviderDisconnect() {\n    await this.subscriber.stop(), this.requestsInFlight.clear(), clearTimeout(this.pingTimeout), this.events.emit(v3.disconnect), this.connectionAttemptInProgress = false, !this.transportExplicitlyClosed && (this.reconnectTimeout || (this.reconnectTimeout = setTimeout(async () => {\n      await this.transportOpen().catch((e2) => this.logger.error(e2));\n    }, (0, import_time4.toMiliseconds)(ht))));\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: e2 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(e2);\n    }\n  }\n  async toEstablishConnection() {\n    await this.confirmOnlineStateOrThrow(), !this.connected && (this.connectionAttemptInProgress && await new Promise((e2) => {\n      const t = setInterval(() => {\n        this.connected && (clearInterval(t), e2());\n      }, this.connectionStatusPollingInterval);\n    }), await this.transportOpen());\n  }\n};\nvar cn2 = Object.defineProperty;\nvar ii = Object.getOwnPropertySymbols;\nvar ln2 = Object.prototype.hasOwnProperty;\nvar un2 = Object.prototype.propertyIsEnumerable;\nvar si = (o4, e2, t) => e2 in o4 ? cn2(o4, e2, { enumerable: true, configurable: true, writable: true, value: t }) : o4[e2] = t;\nvar ri = (o4, e2) => {\n  for (var t in e2 || (e2 = {}))\n    ln2.call(e2, t) && si(o4, t, e2[t]);\n  if (ii)\n    for (var t of ii(e2))\n      un2.call(e2, t) && si(o4, t, e2[t]);\n  return o4;\n};\nvar ni = class extends p2 {\n  constructor(e2, t, s3, i4 = x4, r4 = void 0) {\n    super(e2, t, s3, i4), this.core = e2, this.logger = t, this.name = s3, this.map = /* @__PURE__ */ new Map(), this.version = ct, this.cached = [], this.initialized = false, this.storagePrefix = x4, this.recentlyDeleted = [], this.recentlyDeletedLimit = 200, this.init = async () => {\n      this.initialized || (this.logger.trace(\"Initialized\"), await this.restore(), this.cached.forEach((n5) => {\n        this.getKey && n5 !== null && !I(n5) ? this.map.set(this.getKey(n5), n5) : Yr(n5) ? this.map.set(n5.id, n5) : Qr(n5) && this.map.set(n5.topic, n5);\n      }), this.cached = [], this.initialized = true);\n    }, this.set = async (n5, a4) => {\n      this.isInitialized(), this.map.has(n5) ? await this.update(n5, a4) : (this.logger.debug(\"Setting value\"), this.logger.trace({ type: \"method\", method: \"set\", key: n5, value: a4 }), this.map.set(n5, a4), await this.persist());\n    }, this.get = (n5) => (this.isInitialized(), this.logger.debug(\"Getting value\"), this.logger.trace({ type: \"method\", method: \"get\", key: n5 }), this.getData(n5)), this.getAll = (n5) => (this.isInitialized(), n5 ? this.values.filter((a4) => Object.keys(n5).every((h5) => (0, import_lodash.default)(a4[h5], n5[h5]))) : this.values), this.update = async (n5, a4) => {\n      this.isInitialized(), this.logger.debug(\"Updating value\"), this.logger.trace({ type: \"method\", method: \"update\", key: n5, update: a4 });\n      const h5 = ri(ri({}, this.getData(n5)), a4);\n      this.map.set(n5, h5), await this.persist();\n    }, this.delete = async (n5, a4) => {\n      this.isInitialized(), this.map.has(n5) && (this.logger.debug(\"Deleting value\"), this.logger.trace({ type: \"method\", method: \"delete\", key: n5, reason: a4 }), this.map.delete(n5), this.addToRecentlyDeleted(n5), await this.persist());\n    }, this.logger = E(t, this.name), this.storagePrefix = i4, this.getKey = r4;\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n  get length() {\n    return this.map.size;\n  }\n  get keys() {\n    return Array.from(this.map.keys());\n  }\n  get values() {\n    return Array.from(this.map.values());\n  }\n  addToRecentlyDeleted(e2) {\n    this.recentlyDeleted.push(e2), this.recentlyDeleted.length >= this.recentlyDeletedLimit && this.recentlyDeleted.splice(0, this.recentlyDeletedLimit / 2);\n  }\n  async setDataStore(e2) {\n    await this.core.storage.setItem(this.storageKey, e2);\n  }\n  async getDataStore() {\n    return await this.core.storage.getItem(this.storageKey);\n  }\n  getData(e2) {\n    const t = this.map.get(e2);\n    if (!t) {\n      if (this.recentlyDeleted.includes(e2)) {\n        const { message: i4 } = S(\"MISSING_OR_INVALID\", `Record was recently deleted - ${this.name}: ${e2}`);\n        throw this.logger.error(i4), new Error(i4);\n      }\n      const { message: s3 } = S(\"NO_MATCHING_KEY\", `${this.name}: ${e2}`);\n      throw this.logger.error(s3), new Error(s3);\n    }\n    return t;\n  }\n  async persist() {\n    await this.setDataStore(this.values);\n  }\n  async restore() {\n    try {\n      const e2 = await this.getDataStore();\n      if (typeof e2 > \"u\" || !e2.length)\n        return;\n      if (this.map.size) {\n        const { message: t } = S(\"RESTORE_WILL_OVERRIDE\", this.name);\n        throw this.logger.error(t), new Error(t);\n      }\n      this.cached = e2, this.logger.debug(`Successfully Restored value for ${this.name}`), this.logger.trace({ type: \"method\", method: \"restore\", value: this.values });\n    } catch (e2) {\n      this.logger.debug(`Failed to Restore value for ${this.name}`), this.logger.error(e2);\n    }\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: e2 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(e2);\n    }\n  }\n};\nvar oi = class {\n  constructor(e2, t) {\n    this.core = e2, this.logger = t, this.name = gt2, this.version = yt, this.events = new import_events7.default(), this.initialized = false, this.storagePrefix = x4, this.ignoredPayloadTypes = [D], this.registeredMethods = [], this.init = async () => {\n      this.initialized || (await this.pairings.init(), await this.cleanup(), this.registerRelayerEvents(), this.registerExpirerEvents(), this.initialized = true, this.logger.trace(\"Initialized\"));\n    }, this.register = ({ methods: s3 }) => {\n      this.isInitialized(), this.registeredMethods = [.../* @__PURE__ */ new Set([...this.registeredMethods, ...s3])];\n    }, this.create = async (s3) => {\n      this.isInitialized();\n      const i4 = pr(), r4 = await this.core.crypto.setSymKey(i4), n5 = Mt(import_time4.FIVE_MINUTES), a4 = { protocol: rt }, h5 = { topic: r4, expiry: n5, relay: a4, active: false, methods: s3 == null ? void 0 : s3.methods }, c5 = Dr({ protocol: this.core.protocol, version: this.core.version, topic: r4, symKey: i4, relay: a4, expiryTimestamp: n5, methods: s3 == null ? void 0 : s3.methods });\n      return this.events.emit(V2.create, h5), this.core.expirer.set(r4, n5), await this.pairings.set(r4, h5), await this.core.relayer.subscribe(r4, { transportType: s3 == null ? void 0 : s3.transportType }), { topic: r4, uri: c5 };\n    }, this.pair = async (s3) => {\n      this.isInitialized();\n      const i4 = this.core.eventClient.createEvent({ properties: { topic: s3 == null ? void 0 : s3.uri, trace: [z4.pairing_started] } });\n      this.isValidPair(s3, i4);\n      const { topic: r4, symKey: n5, relay: a4, expiryTimestamp: h5, methods: c5 } = kr(s3.uri);\n      i4.props.properties.topic = r4, i4.addTrace(z4.pairing_uri_validation_success), i4.addTrace(z4.pairing_uri_not_expired);\n      let l4;\n      if (this.pairings.keys.includes(r4)) {\n        if (l4 = this.pairings.get(r4), i4.addTrace(z4.existing_pairing), l4.active)\n          throw i4.setError($2.active_pairing_already_exists), new Error(`Pairing already exists: ${r4}. Please try again with a new connection URI.`);\n        i4.addTrace(z4.pairing_not_expired);\n      }\n      const p3 = h5 || Mt(import_time4.FIVE_MINUTES), D4 = { topic: r4, relay: a4, expiry: p3, active: false, methods: c5 };\n      this.core.expirer.set(r4, p3), await this.pairings.set(r4, D4), i4.addTrace(z4.store_new_pairing), s3.activatePairing && await this.activate({ topic: r4 }), this.events.emit(V2.create, D4), i4.addTrace(z4.emit_inactive_pairing), this.core.crypto.keychain.has(r4) || await this.core.crypto.setSymKey(n5, r4), i4.addTrace(z4.subscribing_pairing_topic);\n      try {\n        await this.core.relayer.confirmOnlineStateOrThrow();\n      } catch {\n        i4.setError($2.no_internet_connection);\n      }\n      try {\n        await this.core.relayer.subscribe(r4, { relay: a4 });\n      } catch (m2) {\n        throw i4.setError($2.subscribe_pairing_topic_failure), m2;\n      }\n      return i4.addTrace(z4.subscribe_pairing_topic_success), D4;\n    }, this.activate = async ({ topic: s3 }) => {\n      this.isInitialized();\n      const i4 = Mt(import_time4.THIRTY_DAYS);\n      this.core.expirer.set(s3, i4), await this.pairings.update(s3, { active: true, expiry: i4 });\n    }, this.ping = async (s3) => {\n      this.isInitialized(), await this.isValidPing(s3);\n      const { topic: i4 } = s3;\n      if (this.pairings.keys.includes(i4)) {\n        const r4 = await this.sendRequest(i4, \"wc_pairingPing\", {}), { done: n5, resolve: a4, reject: h5 } = _t();\n        this.events.once(Lt(\"pairing_ping\", r4), ({ error: c5 }) => {\n          c5 ? h5(c5) : a4();\n        }), await n5();\n      }\n    }, this.updateExpiry = async ({ topic: s3, expiry: i4 }) => {\n      this.isInitialized(), await this.pairings.update(s3, { expiry: i4 });\n    }, this.updateMetadata = async ({ topic: s3, metadata: i4 }) => {\n      this.isInitialized(), await this.pairings.update(s3, { peerMetadata: i4 });\n    }, this.getPairings = () => (this.isInitialized(), this.pairings.values), this.disconnect = async (s3) => {\n      this.isInitialized(), await this.isValidDisconnect(s3);\n      const { topic: i4 } = s3;\n      this.pairings.keys.includes(i4) && (await this.sendRequest(i4, \"wc_pairingDelete\", U(\"USER_DISCONNECTED\")), await this.deletePairing(i4));\n    }, this.formatUriFromPairing = (s3) => {\n      this.isInitialized();\n      const { topic: i4, relay: r4, expiry: n5, methods: a4 } = s3, h5 = this.core.crypto.keychain.get(i4);\n      return Dr({ protocol: this.core.protocol, version: this.core.version, topic: i4, symKey: h5, relay: r4, expiryTimestamp: n5, methods: a4 });\n    }, this.sendRequest = async (s3, i4, r4) => {\n      const n5 = formatJsonRpcRequest(i4, r4), a4 = await this.core.crypto.encode(s3, n5), h5 = B3[i4].req;\n      return this.core.history.set(s3, n5), this.core.relayer.publish(s3, a4, h5), n5.id;\n    }, this.sendResult = async (s3, i4, r4) => {\n      const n5 = formatJsonRpcResult(s3, r4), a4 = await this.core.crypto.encode(i4, n5), h5 = await this.core.history.get(i4, s3), c5 = B3[h5.request.method].res;\n      await this.core.relayer.publish(i4, a4, c5), await this.core.history.resolve(n5);\n    }, this.sendError = async (s3, i4, r4) => {\n      const n5 = formatJsonRpcError(s3, r4), a4 = await this.core.crypto.encode(i4, n5), h5 = await this.core.history.get(i4, s3), c5 = B3[h5.request.method] ? B3[h5.request.method].res : B3.unregistered_method.res;\n      await this.core.relayer.publish(i4, a4, c5), await this.core.history.resolve(n5);\n    }, this.deletePairing = async (s3, i4) => {\n      await this.core.relayer.unsubscribe(s3), await Promise.all([this.pairings.delete(s3, U(\"USER_DISCONNECTED\")), this.core.crypto.deleteSymKey(s3), i4 ? Promise.resolve() : this.core.expirer.del(s3)]);\n    }, this.cleanup = async () => {\n      const s3 = this.pairings.getAll().filter((i4) => Kt(i4.expiry));\n      await Promise.all(s3.map((i4) => this.deletePairing(i4.topic)));\n    }, this.onRelayEventRequest = (s3) => {\n      const { topic: i4, payload: r4 } = s3;\n      switch (r4.method) {\n        case \"wc_pairingPing\":\n          return this.onPairingPingRequest(i4, r4);\n        case \"wc_pairingDelete\":\n          return this.onPairingDeleteRequest(i4, r4);\n        default:\n          return this.onUnknownRpcMethodRequest(i4, r4);\n      }\n    }, this.onRelayEventResponse = async (s3) => {\n      const { topic: i4, payload: r4 } = s3, n5 = (await this.core.history.get(i4, r4.id)).request.method;\n      switch (n5) {\n        case \"wc_pairingPing\":\n          return this.onPairingPingResponse(i4, r4);\n        default:\n          return this.onUnknownRpcMethodResponse(n5);\n      }\n    }, this.onPairingPingRequest = async (s3, i4) => {\n      const { id: r4 } = i4;\n      try {\n        this.isValidPing({ topic: s3 }), await this.sendResult(r4, s3, true), this.events.emit(V2.ping, { id: r4, topic: s3 });\n      } catch (n5) {\n        await this.sendError(r4, s3, n5), this.logger.error(n5);\n      }\n    }, this.onPairingPingResponse = (s3, i4) => {\n      const { id: r4 } = i4;\n      setTimeout(() => {\n        isJsonRpcResult(i4) ? this.events.emit(Lt(\"pairing_ping\", r4), {}) : isJsonRpcError(i4) && this.events.emit(Lt(\"pairing_ping\", r4), { error: i4.error });\n      }, 500);\n    }, this.onPairingDeleteRequest = async (s3, i4) => {\n      const { id: r4 } = i4;\n      try {\n        this.isValidDisconnect({ topic: s3 }), await this.deletePairing(s3), this.events.emit(V2.delete, { id: r4, topic: s3 });\n      } catch (n5) {\n        await this.sendError(r4, s3, n5), this.logger.error(n5);\n      }\n    }, this.onUnknownRpcMethodRequest = async (s3, i4) => {\n      const { id: r4, method: n5 } = i4;\n      try {\n        if (this.registeredMethods.includes(n5))\n          return;\n        const a4 = U(\"WC_METHOD_UNSUPPORTED\", n5);\n        await this.sendError(r4, s3, a4), this.logger.error(a4);\n      } catch (a4) {\n        await this.sendError(r4, s3, a4), this.logger.error(a4);\n      }\n    }, this.onUnknownRpcMethodResponse = (s3) => {\n      this.registeredMethods.includes(s3) || this.logger.error(U(\"WC_METHOD_UNSUPPORTED\", s3));\n    }, this.isValidPair = (s3, i4) => {\n      var r4;\n      if (!to(s3)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `pair() params: ${s3}`);\n        throw i4.setError($2.malformed_pairing_uri), new Error(a4);\n      }\n      if (!Gr(s3.uri)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `pair() uri: ${s3.uri}`);\n        throw i4.setError($2.malformed_pairing_uri), new Error(a4);\n      }\n      const n5 = kr(s3 == null ? void 0 : s3.uri);\n      if (!((r4 = n5 == null ? void 0 : n5.relay) != null && r4.protocol)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", \"pair() uri#relay-protocol\");\n        throw i4.setError($2.malformed_pairing_uri), new Error(a4);\n      }\n      if (!(n5 != null && n5.symKey)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", \"pair() uri#symKey\");\n        throw i4.setError($2.malformed_pairing_uri), new Error(a4);\n      }\n      if (n5 != null && n5.expiryTimestamp && (0, import_time4.toMiliseconds)(n5 == null ? void 0 : n5.expiryTimestamp) < Date.now()) {\n        i4.setError($2.pairing_expired);\n        const { message: a4 } = S(\"EXPIRED\", \"pair() URI has expired. Please try again with a new connection URI.\");\n        throw new Error(a4);\n      }\n    }, this.isValidPing = async (s3) => {\n      if (!to(s3)) {\n        const { message: r4 } = S(\"MISSING_OR_INVALID\", `ping() params: ${s3}`);\n        throw new Error(r4);\n      }\n      const { topic: i4 } = s3;\n      await this.isValidPairingTopic(i4);\n    }, this.isValidDisconnect = async (s3) => {\n      if (!to(s3)) {\n        const { message: r4 } = S(\"MISSING_OR_INVALID\", `disconnect() params: ${s3}`);\n        throw new Error(r4);\n      }\n      const { topic: i4 } = s3;\n      await this.isValidPairingTopic(i4);\n    }, this.isValidPairingTopic = async (s3) => {\n      if (!b(s3, false)) {\n        const { message: i4 } = S(\"MISSING_OR_INVALID\", `pairing topic should be a string: ${s3}`);\n        throw new Error(i4);\n      }\n      if (!this.pairings.keys.includes(s3)) {\n        const { message: i4 } = S(\"NO_MATCHING_KEY\", `pairing topic doesn't exist: ${s3}`);\n        throw new Error(i4);\n      }\n      if (Kt(this.pairings.get(s3).expiry)) {\n        await this.deletePairing(s3);\n        const { message: i4 } = S(\"EXPIRED\", `pairing topic: ${s3}`);\n        throw new Error(i4);\n      }\n    }, this.core = e2, this.logger = E(t, this.name), this.pairings = new ni(this.core, this.logger, this.name, this.storagePrefix);\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: e2 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(e2);\n    }\n  }\n  registerRelayerEvents() {\n    this.core.relayer.on(v3.message, async (e2) => {\n      const { topic: t, message: s3, transportType: i4 } = e2;\n      if (!this.pairings.keys.includes(t) || i4 === M3.link_mode || this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(s3)))\n        return;\n      const r4 = await this.core.crypto.decode(t, s3);\n      try {\n        isJsonRpcRequest(r4) ? (this.core.history.set(t, r4), this.onRelayEventRequest({ topic: t, payload: r4 })) : isJsonRpcResponse(r4) && (await this.core.history.resolve(r4), await this.onRelayEventResponse({ topic: t, payload: r4 }), this.core.history.delete(t, r4.id));\n      } catch (n5) {\n        this.logger.error(n5);\n      }\n    });\n  }\n  registerExpirerEvents() {\n    this.core.expirer.on(S5.expired, async (e2) => {\n      const { topic: t } = Vt(e2.target);\n      t && this.pairings.keys.includes(t) && (await this.deletePairing(t, true), this.events.emit(V2.expire, { topic: t }));\n    });\n  }\n};\nvar ai = class extends h3 {\n  constructor(e2, t) {\n    super(e2, t), this.core = e2, this.logger = t, this.records = /* @__PURE__ */ new Map(), this.events = new import_events7.EventEmitter(), this.name = Dt2, this.version = mt2, this.cached = [], this.initialized = false, this.storagePrefix = x4, this.init = async () => {\n      this.initialized || (this.logger.trace(\"Initialized\"), await this.restore(), this.cached.forEach((s3) => this.records.set(s3.id, s3)), this.cached = [], this.registerEventListeners(), this.initialized = true);\n    }, this.set = (s3, i4, r4) => {\n      if (this.isInitialized(), this.logger.debug(\"Setting JSON-RPC request history record\"), this.logger.trace({ type: \"method\", method: \"set\", topic: s3, request: i4, chainId: r4 }), this.records.has(i4.id))\n        return;\n      const n5 = { id: i4.id, topic: s3, request: { method: i4.method, params: i4.params || null }, chainId: r4, expiry: Mt(import_time4.THIRTY_DAYS) };\n      this.records.set(n5.id, n5), this.persist(), this.events.emit(P2.created, n5);\n    }, this.resolve = async (s3) => {\n      if (this.isInitialized(), this.logger.debug(\"Updating JSON-RPC response history record\"), this.logger.trace({ type: \"method\", method: \"update\", response: s3 }), !this.records.has(s3.id))\n        return;\n      const i4 = await this.getRecord(s3.id);\n      typeof i4.response > \"u\" && (i4.response = isJsonRpcError(s3) ? { error: s3.error } : { result: s3.result }, this.records.set(i4.id, i4), this.persist(), this.events.emit(P2.updated, i4));\n    }, this.get = async (s3, i4) => (this.isInitialized(), this.logger.debug(\"Getting record\"), this.logger.trace({ type: \"method\", method: \"get\", topic: s3, id: i4 }), await this.getRecord(i4)), this.delete = (s3, i4) => {\n      this.isInitialized(), this.logger.debug(\"Deleting record\"), this.logger.trace({ type: \"method\", method: \"delete\", id: i4 }), this.values.forEach((r4) => {\n        if (r4.topic === s3) {\n          if (typeof i4 < \"u\" && r4.id !== i4)\n            return;\n          this.records.delete(r4.id), this.events.emit(P2.deleted, r4);\n        }\n      }), this.persist();\n    }, this.exists = async (s3, i4) => (this.isInitialized(), this.records.has(i4) ? (await this.getRecord(i4)).topic === s3 : false), this.on = (s3, i4) => {\n      this.events.on(s3, i4);\n    }, this.once = (s3, i4) => {\n      this.events.once(s3, i4);\n    }, this.off = (s3, i4) => {\n      this.events.off(s3, i4);\n    }, this.removeListener = (s3, i4) => {\n      this.events.removeListener(s3, i4);\n    }, this.logger = E(t, this.name);\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n  get size() {\n    return this.records.size;\n  }\n  get keys() {\n    return Array.from(this.records.keys());\n  }\n  get values() {\n    return Array.from(this.records.values());\n  }\n  get pending() {\n    const e2 = [];\n    return this.values.forEach((t) => {\n      if (typeof t.response < \"u\")\n        return;\n      const s3 = { topic: t.topic, request: formatJsonRpcRequest(t.request.method, t.request.params, t.id), chainId: t.chainId };\n      return e2.push(s3);\n    }), e2;\n  }\n  async setJsonRpcRecords(e2) {\n    await this.core.storage.setItem(this.storageKey, e2);\n  }\n  async getJsonRpcRecords() {\n    return await this.core.storage.getItem(this.storageKey);\n  }\n  getRecord(e2) {\n    this.isInitialized();\n    const t = this.records.get(e2);\n    if (!t) {\n      const { message: s3 } = S(\"NO_MATCHING_KEY\", `${this.name}: ${e2}`);\n      throw new Error(s3);\n    }\n    return t;\n  }\n  async persist() {\n    await this.setJsonRpcRecords(this.values), this.events.emit(P2.sync);\n  }\n  async restore() {\n    try {\n      const e2 = await this.getJsonRpcRecords();\n      if (typeof e2 > \"u\" || !e2.length)\n        return;\n      if (this.records.size) {\n        const { message: t } = S(\"RESTORE_WILL_OVERRIDE\", this.name);\n        throw this.logger.error(t), new Error(t);\n      }\n      this.cached = e2, this.logger.debug(`Successfully Restored records for ${this.name}`), this.logger.trace({ type: \"method\", method: \"restore\", records: this.values });\n    } catch (e2) {\n      this.logger.debug(`Failed to Restore records for ${this.name}`), this.logger.error(e2);\n    }\n  }\n  registerEventListeners() {\n    this.events.on(P2.created, (e2) => {\n      const t = P2.created;\n      this.logger.info(`Emitting ${t}`), this.logger.debug({ type: \"event\", event: t, record: e2 });\n    }), this.events.on(P2.updated, (e2) => {\n      const t = P2.updated;\n      this.logger.info(`Emitting ${t}`), this.logger.debug({ type: \"event\", event: t, record: e2 });\n    }), this.events.on(P2.deleted, (e2) => {\n      const t = P2.deleted;\n      this.logger.info(`Emitting ${t}`), this.logger.debug({ type: \"event\", event: t, record: e2 });\n    }), this.core.heartbeat.on(r3.pulse, () => {\n      this.cleanup();\n    });\n  }\n  cleanup() {\n    try {\n      this.isInitialized();\n      let e2 = false;\n      this.records.forEach((t) => {\n        (0, import_time4.toMiliseconds)(t.expiry || 0) - Date.now() <= 0 && (this.logger.info(`Deleting expired history log: ${t.id}`), this.records.delete(t.id), this.events.emit(P2.deleted, t, false), e2 = true);\n      }), e2 && this.persist();\n    } catch (e2) {\n      this.logger.warn(e2);\n    }\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: e2 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(e2);\n    }\n  }\n};\nvar hi = class extends x3 {\n  constructor(e2, t) {\n    super(e2, t), this.core = e2, this.logger = t, this.expirations = /* @__PURE__ */ new Map(), this.events = new import_events7.EventEmitter(), this.name = bt2, this.version = ft, this.cached = [], this.initialized = false, this.storagePrefix = x4, this.init = async () => {\n      this.initialized || (this.logger.trace(\"Initialized\"), await this.restore(), this.cached.forEach((s3) => this.expirations.set(s3.target, s3)), this.cached = [], this.registerEventListeners(), this.initialized = true);\n    }, this.has = (s3) => {\n      try {\n        const i4 = this.formatTarget(s3);\n        return typeof this.getExpiration(i4) < \"u\";\n      } catch {\n        return false;\n      }\n    }, this.set = (s3, i4) => {\n      this.isInitialized();\n      const r4 = this.formatTarget(s3), n5 = { target: r4, expiry: i4 };\n      this.expirations.set(r4, n5), this.checkExpiry(r4, n5), this.events.emit(S5.created, { target: r4, expiration: n5 });\n    }, this.get = (s3) => {\n      this.isInitialized();\n      const i4 = this.formatTarget(s3);\n      return this.getExpiration(i4);\n    }, this.del = (s3) => {\n      if (this.isInitialized(), this.has(s3)) {\n        const i4 = this.formatTarget(s3), r4 = this.getExpiration(i4);\n        this.expirations.delete(i4), this.events.emit(S5.deleted, { target: i4, expiration: r4 });\n      }\n    }, this.on = (s3, i4) => {\n      this.events.on(s3, i4);\n    }, this.once = (s3, i4) => {\n      this.events.once(s3, i4);\n    }, this.off = (s3, i4) => {\n      this.events.off(s3, i4);\n    }, this.removeListener = (s3, i4) => {\n      this.events.removeListener(s3, i4);\n    }, this.logger = E(t, this.name);\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  get storageKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//\" + this.name;\n  }\n  get length() {\n    return this.expirations.size;\n  }\n  get keys() {\n    return Array.from(this.expirations.keys());\n  }\n  get values() {\n    return Array.from(this.expirations.values());\n  }\n  formatTarget(e2) {\n    if (typeof e2 == \"string\")\n      return Dt(e2);\n    if (typeof e2 == \"number\")\n      return xt(e2);\n    const { message: t } = S(\"UNKNOWN_TYPE\", `Target type: ${typeof e2}`);\n    throw new Error(t);\n  }\n  async setExpirations(e2) {\n    await this.core.storage.setItem(this.storageKey, e2);\n  }\n  async getExpirations() {\n    return await this.core.storage.getItem(this.storageKey);\n  }\n  async persist() {\n    await this.setExpirations(this.values), this.events.emit(S5.sync);\n  }\n  async restore() {\n    try {\n      const e2 = await this.getExpirations();\n      if (typeof e2 > \"u\" || !e2.length)\n        return;\n      if (this.expirations.size) {\n        const { message: t } = S(\"RESTORE_WILL_OVERRIDE\", this.name);\n        throw this.logger.error(t), new Error(t);\n      }\n      this.cached = e2, this.logger.debug(`Successfully Restored expirations for ${this.name}`), this.logger.trace({ type: \"method\", method: \"restore\", expirations: this.values });\n    } catch (e2) {\n      this.logger.debug(`Failed to Restore expirations for ${this.name}`), this.logger.error(e2);\n    }\n  }\n  getExpiration(e2) {\n    const t = this.expirations.get(e2);\n    if (!t) {\n      const { message: s3 } = S(\"NO_MATCHING_KEY\", `${this.name}: ${e2}`);\n      throw this.logger.warn(s3), new Error(s3);\n    }\n    return t;\n  }\n  checkExpiry(e2, t) {\n    const { expiry: s3 } = t;\n    (0, import_time4.toMiliseconds)(s3) - Date.now() <= 0 && this.expire(e2, t);\n  }\n  expire(e2, t) {\n    this.expirations.delete(e2), this.events.emit(S5.expired, { target: e2, expiration: t });\n  }\n  checkExpirations() {\n    this.core.relayer.connected && this.expirations.forEach((e2, t) => this.checkExpiry(t, e2));\n  }\n  registerEventListeners() {\n    this.core.heartbeat.on(r3.pulse, () => this.checkExpirations()), this.events.on(S5.created, (e2) => {\n      const t = S5.created;\n      this.logger.info(`Emitting ${t}`), this.logger.debug({ type: \"event\", event: t, data: e2 }), this.persist();\n    }), this.events.on(S5.expired, (e2) => {\n      const t = S5.expired;\n      this.logger.info(`Emitting ${t}`), this.logger.debug({ type: \"event\", event: t, data: e2 }), this.persist();\n    }), this.events.on(S5.deleted, (e2) => {\n      const t = S5.deleted;\n      this.logger.info(`Emitting ${t}`), this.logger.debug({ type: \"event\", event: t, data: e2 }), this.persist();\n    });\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: e2 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(e2);\n    }\n  }\n};\nvar ci = class extends y4 {\n  constructor(e2, t, s3) {\n    super(e2, t, s3), this.core = e2, this.logger = t, this.store = s3, this.name = _t2, this.verifyUrlV3 = vt2, this.storagePrefix = x4, this.version = De, this.init = async () => {\n      var i4;\n      this.isDevEnv || (this.publicKey = await this.store.getItem(this.storeKey), this.publicKey && (0, import_time4.toMiliseconds)((i4 = this.publicKey) == null ? void 0 : i4.expiresAt) < Date.now() && (this.logger.debug(\"verify v2 public key expired\"), await this.removePublicKey()));\n    }, this.register = async (i4) => {\n      if (!V() || this.isDevEnv)\n        return;\n      const r4 = window.location.origin, { id: n5, decryptedId: a4 } = i4, h5 = `${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${r4}&id=${n5}&decryptedId=${a4}`;\n      try {\n        const c5 = (0, import_window_getters2.getDocument)(), l4 = this.startAbortTimer(import_time4.ONE_SECOND * 5), p3 = await new Promise((D4, m2) => {\n          const u3 = () => {\n            window.removeEventListener(\"message\", _4), c5.body.removeChild(g4), m2(\"attestation aborted\");\n          };\n          this.abortController.signal.addEventListener(\"abort\", u3);\n          const g4 = c5.createElement(\"iframe\");\n          g4.src = h5, g4.style.display = \"none\", g4.addEventListener(\"error\", u3, { signal: this.abortController.signal });\n          const _4 = (y6) => {\n            if (y6.data && typeof y6.data == \"string\")\n              try {\n                const b5 = JSON.parse(y6.data);\n                if (b5.type === \"verify_attestation\") {\n                  if (decodeJWT(b5.attestation).payload.id !== n5)\n                    return;\n                  clearInterval(l4), c5.body.removeChild(g4), this.abortController.signal.removeEventListener(\"abort\", u3), window.removeEventListener(\"message\", _4), D4(b5.attestation === null ? \"\" : b5.attestation);\n                }\n              } catch (b5) {\n                this.logger.warn(b5);\n              }\n          };\n          c5.body.appendChild(g4), window.addEventListener(\"message\", _4, { signal: this.abortController.signal });\n        });\n        return this.logger.debug(\"jwt attestation\", p3), p3;\n      } catch (c5) {\n        this.logger.warn(c5);\n      }\n      return \"\";\n    }, this.resolve = async (i4) => {\n      if (this.isDevEnv)\n        return \"\";\n      const { attestationId: r4, hash: n5, encryptedId: a4 } = i4;\n      if (r4 === \"\") {\n        this.logger.debug(\"resolve: attestationId is empty, skipping\");\n        return;\n      }\n      if (r4) {\n        if (decodeJWT(r4).payload.id !== a4)\n          return;\n        const c5 = await this.isValidJwtAttestation(r4);\n        if (c5) {\n          if (!c5.isVerified) {\n            this.logger.warn(\"resolve: jwt attestation: origin url not verified\");\n            return;\n          }\n          return c5;\n        }\n      }\n      if (!n5)\n        return;\n      const h5 = this.getVerifyUrl(i4 == null ? void 0 : i4.verifyUrl);\n      return this.fetchAttestation(n5, h5);\n    }, this.fetchAttestation = async (i4, r4) => {\n      this.logger.debug(`resolving attestation: ${i4} from url: ${r4}`);\n      const n5 = this.startAbortTimer(import_time4.ONE_SECOND * 5), a4 = await fetch(`${r4}/attestation/${i4}?v2Supported=true`, { signal: this.abortController.signal });\n      return clearTimeout(n5), a4.status === 200 ? await a4.json() : void 0;\n    }, this.getVerifyUrl = (i4) => {\n      let r4 = i4 || J;\n      return wt.includes(r4) || (this.logger.info(`verify url: ${r4}, not included in trusted list, assigning default: ${J}`), r4 = J), r4;\n    }, this.fetchPublicKey = async () => {\n      try {\n        this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);\n        const i4 = this.startAbortTimer(import_time4.FIVE_SECONDS), r4 = await fetch(`${this.verifyUrlV3}/public-key`, { signal: this.abortController.signal });\n        return clearTimeout(i4), await r4.json();\n      } catch (i4) {\n        this.logger.warn(i4);\n      }\n    }, this.persistPublicKey = async (i4) => {\n      this.logger.debug(\"persisting public key to local storage\", i4), await this.store.setItem(this.storeKey, i4), this.publicKey = i4;\n    }, this.removePublicKey = async () => {\n      this.logger.debug(\"removing verify v2 public key from storage\"), await this.store.removeItem(this.storeKey), this.publicKey = void 0;\n    }, this.isValidJwtAttestation = async (i4) => {\n      const r4 = await this.getPublicKey();\n      try {\n        if (r4)\n          return this.validateAttestation(i4, r4);\n      } catch (a4) {\n        this.logger.error(a4), this.logger.warn(\"error validating attestation\");\n      }\n      const n5 = await this.fetchAndPersistPublicKey();\n      try {\n        if (n5)\n          return this.validateAttestation(i4, n5);\n      } catch (a4) {\n        this.logger.error(a4), this.logger.warn(\"error validating attestation\");\n      }\n    }, this.getPublicKey = async () => this.publicKey ? this.publicKey : await this.fetchAndPersistPublicKey(), this.fetchAndPersistPublicKey = async () => {\n      if (this.fetchPromise)\n        return await this.fetchPromise, this.publicKey;\n      this.fetchPromise = new Promise(async (r4) => {\n        const n5 = await this.fetchPublicKey();\n        n5 && (await this.persistPublicKey(n5), r4(n5));\n      });\n      const i4 = await this.fetchPromise;\n      return this.fetchPromise = void 0, i4;\n    }, this.validateAttestation = (i4, r4) => {\n      const n5 = Rr(i4, r4.publicKey), a4 = { hasExpired: (0, import_time4.toMiliseconds)(n5.exp) < Date.now(), payload: n5 };\n      if (a4.hasExpired)\n        throw this.logger.warn(\"resolve: jwt attestation expired\"), new Error(\"JWT attestation expired\");\n      return { origin: a4.payload.origin, isScam: a4.payload.isScam, isVerified: a4.payload.isVerified };\n    }, this.logger = E(t, this.name), this.abortController = new AbortController(), this.isDevEnv = Wt(), this.init();\n  }\n  get storeKey() {\n    return this.storagePrefix + this.version + this.core.customStoragePrefix + \"//verify:public:key\";\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  startAbortTimer(e2) {\n    return this.abortController = new AbortController(), setTimeout(() => this.abortController.abort(), (0, import_time4.toMiliseconds)(e2));\n  }\n};\nvar li = class extends v2 {\n  constructor(e2, t) {\n    super(e2, t), this.projectId = e2, this.logger = t, this.context = It, this.registerDeviceToken = async (s3) => {\n      const { clientId: i4, token: r4, notificationType: n5, enableEncrypted: a4 = false } = s3, h5 = `${Tt2}/${this.projectId}/clients`;\n      await fetch(h5, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify({ client_id: i4, type: n5, token: r4, always_raw: a4 }) });\n    }, this.logger = E(t, this.context);\n  }\n};\nvar dn2 = Object.defineProperty;\nvar ui = Object.getOwnPropertySymbols;\nvar pn = Object.prototype.hasOwnProperty;\nvar gn2 = Object.prototype.propertyIsEnumerable;\nvar di = (o4, e2, t) => e2 in o4 ? dn2(o4, e2, { enumerable: true, configurable: true, writable: true, value: t }) : o4[e2] = t;\nvar Z2 = (o4, e2) => {\n  for (var t in e2 || (e2 = {}))\n    pn.call(e2, t) && di(o4, t, e2[t]);\n  if (ui)\n    for (var t of ui(e2))\n      gn2.call(e2, t) && di(o4, t, e2[t]);\n  return o4;\n};\nvar pi = class extends C4 {\n  constructor(e2, t, s3 = true) {\n    super(e2, t, s3), this.core = e2, this.logger = t, this.context = Pt2, this.storagePrefix = x4, this.storageVersion = Ct, this.events = /* @__PURE__ */ new Map(), this.shouldPersist = false, this.init = async () => {\n      if (!Wt())\n        try {\n          const i4 = { eventId: Ht(), timestamp: Date.now(), domain: this.getAppDomain(), props: { event: \"INIT\", type: \"\", properties: { client_id: await this.core.crypto.getClientId(), user_agent: Ge(this.core.relayer.protocol, this.core.relayer.version, se) } } };\n          await this.sendEvent([i4]);\n        } catch (i4) {\n          this.logger.warn(i4);\n        }\n    }, this.createEvent = (i4) => {\n      const { event: r4 = \"ERROR\", type: n5 = \"\", properties: { topic: a4, trace: h5 } } = i4, c5 = Ht(), l4 = this.core.projectId || \"\", p3 = Date.now(), D4 = Z2({ eventId: c5, timestamp: p3, props: { event: r4, type: n5, properties: { topic: a4, trace: h5 } }, bundleId: l4, domain: this.getAppDomain() }, this.setMethods(c5));\n      return this.telemetryEnabled && (this.events.set(c5, D4), this.shouldPersist = true), D4;\n    }, this.getEvent = (i4) => {\n      const { eventId: r4, topic: n5 } = i4;\n      if (r4)\n        return this.events.get(r4);\n      const a4 = Array.from(this.events.values()).find((h5) => h5.props.properties.topic === n5);\n      if (a4)\n        return Z2(Z2({}, a4), this.setMethods(a4.eventId));\n    }, this.deleteEvent = (i4) => {\n      const { eventId: r4 } = i4;\n      this.events.delete(r4), this.shouldPersist = true;\n    }, this.setEventListeners = () => {\n      this.core.heartbeat.on(r3.pulse, async () => {\n        this.shouldPersist && await this.persist(), this.events.forEach((i4) => {\n          (0, import_time4.fromMiliseconds)(Date.now()) - (0, import_time4.fromMiliseconds)(i4.timestamp) > St && (this.events.delete(i4.eventId), this.shouldPersist = true);\n        });\n      });\n    }, this.setMethods = (i4) => ({ addTrace: (r4) => this.addTrace(i4, r4), setError: (r4) => this.setError(i4, r4) }), this.addTrace = (i4, r4) => {\n      const n5 = this.events.get(i4);\n      n5 && (n5.props.properties.trace.push(r4), this.events.set(i4, n5), this.shouldPersist = true);\n    }, this.setError = (i4, r4) => {\n      const n5 = this.events.get(i4);\n      n5 && (n5.props.type = r4, n5.timestamp = Date.now(), this.events.set(i4, n5), this.shouldPersist = true);\n    }, this.persist = async () => {\n      await this.core.storage.setItem(this.storageKey, Array.from(this.events.values())), this.shouldPersist = false;\n    }, this.restore = async () => {\n      try {\n        const i4 = await this.core.storage.getItem(this.storageKey) || [];\n        if (!i4.length)\n          return;\n        i4.forEach((r4) => {\n          this.events.set(r4.eventId, Z2(Z2({}, r4), this.setMethods(r4.eventId)));\n        });\n      } catch (i4) {\n        this.logger.warn(i4);\n      }\n    }, this.submit = async () => {\n      if (!this.telemetryEnabled || this.events.size === 0)\n        return;\n      const i4 = [];\n      for (const [r4, n5] of this.events)\n        n5.props.type && i4.push(n5);\n      if (i4.length !== 0)\n        try {\n          if ((await this.sendEvent(i4)).ok)\n            for (const r4 of i4)\n              this.events.delete(r4.eventId), this.shouldPersist = true;\n        } catch (r4) {\n          this.logger.warn(r4);\n        }\n    }, this.sendEvent = async (i4) => {\n      const r4 = this.getAppDomain() ? \"\" : \"&sp=desktop\";\n      return await fetch(`${Rt}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${se}${r4}`, { method: \"POST\", body: JSON.stringify(i4) });\n    }, this.getAppDomain = () => Nt().url, this.logger = E(t, this.context), this.telemetryEnabled = s3, s3 ? this.restore().then(async () => {\n      await this.submit(), this.setEventListeners();\n    }) : this.persist();\n  }\n  get storageKey() {\n    return this.storagePrefix + this.storageVersion + this.core.customStoragePrefix + \"//\" + this.context;\n  }\n};\nvar yn2 = Object.defineProperty;\nvar gi = Object.getOwnPropertySymbols;\nvar Dn2 = Object.prototype.hasOwnProperty;\nvar mn = Object.prototype.propertyIsEnumerable;\nvar yi = (o4, e2, t) => e2 in o4 ? yn2(o4, e2, { enumerable: true, configurable: true, writable: true, value: t }) : o4[e2] = t;\nvar Di = (o4, e2) => {\n  for (var t in e2 || (e2 = {}))\n    Dn2.call(e2, t) && yi(o4, t, e2[t]);\n  if (gi)\n    for (var t of gi(e2))\n      mn.call(e2, t) && yi(o4, t, e2[t]);\n  return o4;\n};\nvar ne2 = class _ne extends n4 {\n  constructor(e2) {\n    var t;\n    super(e2), this.protocol = ye2, this.version = De, this.name = ie, this.events = new import_events7.EventEmitter(), this.initialized = false, this.on = (n5, a4) => this.events.on(n5, a4), this.once = (n5, a4) => this.events.once(n5, a4), this.off = (n5, a4) => this.events.off(n5, a4), this.removeListener = (n5, a4) => this.events.removeListener(n5, a4), this.dispatchEnvelope = ({ topic: n5, message: a4, sessionExists: h5 }) => {\n      if (!n5 || !a4)\n        return;\n      const c5 = { topic: n5, message: a4, publishedAt: Date.now(), transportType: M3.link_mode };\n      this.relayer.onLinkMessageEvent(c5, { sessionExists: h5 });\n    }, this.projectId = e2 == null ? void 0 : e2.projectId, this.relayUrl = (e2 == null ? void 0 : e2.relayUrl) || be2, this.customStoragePrefix = e2 != null && e2.customStoragePrefix ? `:${e2.customStoragePrefix}` : \"\";\n    const s3 = k2({ level: typeof (e2 == null ? void 0 : e2.logger) == \"string\" && e2.logger ? e2.logger : Ye.logger }), { logger: i4, chunkLoggerController: r4 } = A2({ opts: s3, maxSizeInBytes: e2 == null ? void 0 : e2.maxLogBlobSizeInBytes, loggerOverride: e2 == null ? void 0 : e2.logger });\n    this.logChunkController = r4, (t = this.logChunkController) != null && t.downloadLogsBlobInBrowser && (window.downloadLogsBlobInBrowser = async () => {\n      var n5, a4;\n      (n5 = this.logChunkController) != null && n5.downloadLogsBlobInBrowser && ((a4 = this.logChunkController) == null || a4.downloadLogsBlobInBrowser({ clientId: await this.crypto.getClientId() }));\n    }), this.logger = E(i4, this.name), this.heartbeat = new i2(), this.crypto = new Ht2(this, this.logger, e2 == null ? void 0 : e2.keychain), this.history = new ai(this, this.logger), this.expirer = new hi(this, this.logger), this.storage = e2 != null && e2.storage ? e2.storage : new h2(Di(Di({}, Je2), e2 == null ? void 0 : e2.storageOptions)), this.relayer = new ti({ core: this, logger: this.logger, relayUrl: this.relayUrl, projectId: this.projectId }), this.pairing = new oi(this, this.logger), this.verify = new ci(this, this.logger, this.storage), this.echoClient = new li(this.projectId || \"\", this.logger), this.linkModeSupportedApps = [], this.eventClient = new pi(this, this.logger, e2 == null ? void 0 : e2.telemetryEnabled);\n  }\n  static async init(e2) {\n    const t = new _ne(e2);\n    await t.initialize();\n    const s3 = await t.crypto.getClientId();\n    return await t.storage.setItem(lt, s3), t;\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  async start() {\n    this.initialized || await this.initialize();\n  }\n  async getLogsBlob() {\n    var e2;\n    return (e2 = this.logChunkController) == null ? void 0 : e2.logsToBlob({ clientId: await this.crypto.getClientId() });\n  }\n  async addLinkModeSupportedApp(e2) {\n    this.linkModeSupportedApps.includes(e2) || (this.linkModeSupportedApps.push(e2), await this.storage.setItem(fe2, this.linkModeSupportedApps));\n  }\n  async initialize() {\n    this.logger.trace(\"Initialized\");\n    try {\n      await this.crypto.init(), await this.history.init(), await this.expirer.init(), await this.relayer.init(), await this.heartbeat.init(), await this.pairing.init(), this.eventClient.init(), this.linkModeSupportedApps = await this.storage.getItem(fe2) || [], this.initialized = true, this.logger.info(\"Core Initialization Success\");\n    } catch (e2) {\n      throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`, e2), this.logger.error(e2.message), e2;\n    }\n  }\n};\nvar bn2 = ne2;\n\n// node_modules/@walletconnect/sign-client/dist/index.es.js\nvar import_events8 = __toESM(require_events());\nvar import_time5 = __toESM(require_cjs());\nvar be3 = \"wc\";\nvar Ce3 = 2;\nvar Le2 = \"client\";\nvar ye3 = `${be3}@${Ce3}:${Le2}:`;\nvar we3 = { name: Le2, logger: \"error\", controller: false, relayUrl: \"wss://relay.walletconnect.org\" };\nvar xe = \"WALLETCONNECT_DEEPLINK_CHOICE\";\nvar st3 = \"proposal\";\nvar it3 = \"Proposal expired\";\nvar rt2 = \"session\";\nvar z5 = import_time5.SEVEN_DAYS;\nvar nt2 = \"engine\";\nvar v4 = { wc_sessionPropose: { req: { ttl: import_time5.FIVE_MINUTES, prompt: true, tag: 1100 }, res: { ttl: import_time5.FIVE_MINUTES, prompt: false, tag: 1101 }, reject: { ttl: import_time5.FIVE_MINUTES, prompt: false, tag: 1120 }, autoReject: { ttl: import_time5.FIVE_MINUTES, prompt: false, tag: 1121 } }, wc_sessionSettle: { req: { ttl: import_time5.FIVE_MINUTES, prompt: false, tag: 1102 }, res: { ttl: import_time5.FIVE_MINUTES, prompt: false, tag: 1103 } }, wc_sessionUpdate: { req: { ttl: import_time5.ONE_DAY, prompt: false, tag: 1104 }, res: { ttl: import_time5.ONE_DAY, prompt: false, tag: 1105 } }, wc_sessionExtend: { req: { ttl: import_time5.ONE_DAY, prompt: false, tag: 1106 }, res: { ttl: import_time5.ONE_DAY, prompt: false, tag: 1107 } }, wc_sessionRequest: { req: { ttl: import_time5.FIVE_MINUTES, prompt: true, tag: 1108 }, res: { ttl: import_time5.FIVE_MINUTES, prompt: false, tag: 1109 } }, wc_sessionEvent: { req: { ttl: import_time5.FIVE_MINUTES, prompt: true, tag: 1110 }, res: { ttl: import_time5.FIVE_MINUTES, prompt: false, tag: 1111 } }, wc_sessionDelete: { req: { ttl: import_time5.ONE_DAY, prompt: false, tag: 1112 }, res: { ttl: import_time5.ONE_DAY, prompt: false, tag: 1113 } }, wc_sessionPing: { req: { ttl: import_time5.ONE_DAY, prompt: false, tag: 1114 }, res: { ttl: import_time5.ONE_DAY, prompt: false, tag: 1115 } }, wc_sessionAuthenticate: { req: { ttl: import_time5.ONE_HOUR, prompt: true, tag: 1116 }, res: { ttl: import_time5.ONE_HOUR, prompt: false, tag: 1117 }, reject: { ttl: import_time5.FIVE_MINUTES, prompt: false, tag: 1118 }, autoReject: { ttl: import_time5.FIVE_MINUTES, prompt: false, tag: 1119 } } };\nvar me3 = { min: import_time5.FIVE_MINUTES, max: import_time5.SEVEN_DAYS };\nvar x5 = { idle: \"IDLE\", active: \"ACTIVE\" };\nvar ot2 = \"request\";\nvar at3 = [\"wc_sessionPropose\", \"wc_sessionRequest\", \"wc_authRequest\", \"wc_sessionAuthenticate\"];\nvar ct2 = \"wc\";\nvar lt2 = \"auth\";\nvar pt2 = \"authKeys\";\nvar ht2 = \"pairingTopics\";\nvar dt2 = \"requests\";\nvar oe2 = `${ct2}@${1.5}:${lt2}:`;\nvar ae3 = `${oe2}:PUB_KEY`;\nvar ys2 = Object.defineProperty;\nvar ws = Object.defineProperties;\nvar ms = Object.getOwnPropertyDescriptors;\nvar ut3 = Object.getOwnPropertySymbols;\nvar _s = Object.prototype.hasOwnProperty;\nvar Es = Object.prototype.propertyIsEnumerable;\nvar gt3 = (q3, o4, e2) => o4 in q3 ? ys2(q3, o4, { enumerable: true, configurable: true, writable: true, value: e2 }) : q3[o4] = e2;\nvar I4 = (q3, o4) => {\n  for (var e2 in o4 || (o4 = {}))\n    _s.call(o4, e2) && gt3(q3, e2, o4[e2]);\n  if (ut3)\n    for (var e2 of ut3(o4))\n      Es.call(o4, e2) && gt3(q3, e2, o4[e2]);\n  return q3;\n};\nvar D3 = (q3, o4) => ws(q3, ms(o4));\nvar Rs2 = class extends M2 {\n  constructor(o4) {\n    super(o4), this.name = nt2, this.events = new import_events8.default(), this.initialized = false, this.requestQueue = { state: x5.idle, queue: [] }, this.sessionRequestQueue = { state: x5.idle, queue: [] }, this.requestQueueDelay = import_time5.ONE_SECOND, this.expectedPairingMethodMap = /* @__PURE__ */ new Map(), this.recentlyDeletedMap = /* @__PURE__ */ new Map(), this.recentlyDeletedLimit = 200, this.relayMessageCache = [], this.init = async () => {\n      this.initialized || (await this.cleanup(), this.registerRelayerEvents(), this.registerExpirerEvents(), this.registerPairingEvents(), await this.registerLinkModeListeners(), this.client.core.pairing.register({ methods: Object.keys(v4) }), this.initialized = true, setTimeout(() => {\n        this.sessionRequestQueue.queue = this.getPendingSessionRequests(), this.processSessionRequestQueue();\n      }, (0, import_time5.toMiliseconds)(this.requestQueueDelay)));\n    }, this.connect = async (e2) => {\n      this.isInitialized(), await this.confirmOnlineStateOrThrow();\n      const t = D3(I4({}, e2), { requiredNamespaces: e2.requiredNamespaces || {}, optionalNamespaces: e2.optionalNamespaces || {} });\n      await this.isValidConnect(t);\n      const { pairingTopic: s3, requiredNamespaces: i4, optionalNamespaces: r4, sessionProperties: n5, relays: a4 } = t;\n      let c5 = s3, h5, p3 = false;\n      try {\n        c5 && (p3 = this.client.core.pairing.pairings.get(c5).active);\n      } catch (E3) {\n        throw this.client.logger.error(`connect() -> pairing.get(${c5}) failed`), E3;\n      }\n      if (!c5 || !p3) {\n        const { topic: E3, uri: S6 } = await this.client.core.pairing.create();\n        c5 = E3, h5 = S6;\n      }\n      if (!c5) {\n        const { message: E3 } = S(\"NO_MATCHING_KEY\", `connect() pairing topic: ${c5}`);\n        throw new Error(E3);\n      }\n      const d3 = await this.client.core.crypto.generateKeyPair(), l4 = v4.wc_sessionPropose.req.ttl || import_time5.FIVE_MINUTES, w4 = Mt(l4), m2 = I4({ requiredNamespaces: i4, optionalNamespaces: r4, relays: a4 ?? [{ protocol: rt }], proposer: { publicKey: d3, metadata: this.client.metadata }, expiryTimestamp: w4, pairingTopic: c5 }, n5 && { sessionProperties: n5 }), { reject: y6, resolve: _4, done: R2 } = _t(l4, it3);\n      this.events.once(Lt(\"session_connect\"), async ({ error: E3, session: S6 }) => {\n        if (E3)\n          y6(E3);\n        else if (S6) {\n          S6.self.publicKey = d3;\n          const M4 = D3(I4({}, S6), { pairingTopic: m2.pairingTopic, requiredNamespaces: m2.requiredNamespaces, optionalNamespaces: m2.optionalNamespaces, transportType: M3.relay });\n          await this.client.session.set(S6.topic, M4), await this.setExpiry(S6.topic, S6.expiry), c5 && await this.client.core.pairing.updateMetadata({ topic: c5, metadata: S6.peer.metadata }), this.cleanupDuplicatePairings(M4), _4(M4);\n        }\n      });\n      const V3 = await this.sendRequest({ topic: c5, method: \"wc_sessionPropose\", params: m2, throwOnFailedPublish: true });\n      return await this.setProposal(V3, I4({ id: V3 }, m2)), { uri: h5, approval: R2 };\n    }, this.pair = async (e2) => {\n      this.isInitialized(), await this.confirmOnlineStateOrThrow();\n      try {\n        return await this.client.core.pairing.pair(e2);\n      } catch (t) {\n        throw this.client.logger.error(\"pair() failed\"), t;\n      }\n    }, this.approve = async (e2) => {\n      var t, s3, i4;\n      const r4 = this.client.core.eventClient.createEvent({ properties: { topic: (t = e2 == null ? void 0 : e2.id) == null ? void 0 : t.toString(), trace: [Is.session_approve_started] } });\n      try {\n        this.isInitialized(), await this.confirmOnlineStateOrThrow();\n      } catch (N11) {\n        throw r4.setError(Ts.no_internet_connection), N11;\n      }\n      try {\n        await this.isValidProposalId(e2 == null ? void 0 : e2.id);\n      } catch (N11) {\n        throw this.client.logger.error(`approve() -> proposal.get(${e2 == null ? void 0 : e2.id}) failed`), r4.setError(Ts.proposal_not_found), N11;\n      }\n      try {\n        await this.isValidApprove(e2);\n      } catch (N11) {\n        throw this.client.logger.error(\"approve() -> isValidApprove() failed\"), r4.setError(Ts.session_approve_namespace_validation_failure), N11;\n      }\n      const { id: n5, relayProtocol: a4, namespaces: c5, sessionProperties: h5, sessionConfig: p3 } = e2, d3 = this.client.proposal.get(n5);\n      this.client.core.eventClient.deleteEvent({ eventId: r4.eventId });\n      const { pairingTopic: l4, proposer: w4, requiredNamespaces: m2, optionalNamespaces: y6 } = d3;\n      let _4 = (s3 = this.client.core.eventClient) == null ? void 0 : s3.getEvent({ topic: l4 });\n      _4 || (_4 = (i4 = this.client.core.eventClient) == null ? void 0 : i4.createEvent({ type: Is.session_approve_started, properties: { topic: l4, trace: [Is.session_approve_started, Is.session_namespaces_validation_success] } }));\n      const R2 = await this.client.core.crypto.generateKeyPair(), V3 = w4.publicKey, E3 = await this.client.core.crypto.generateSharedKey(R2, V3), S6 = I4(I4({ relay: { protocol: a4 ?? \"irn\" }, namespaces: c5, controller: { publicKey: R2, metadata: this.client.metadata }, expiry: Mt(z5) }, h5 && { sessionProperties: h5 }), p3 && { sessionConfig: p3 }), M4 = M3.relay;\n      _4.addTrace(Is.subscribing_session_topic);\n      try {\n        await this.client.core.relayer.subscribe(E3, { transportType: M4 });\n      } catch (N11) {\n        throw _4.setError(Ts.subscribe_session_topic_failure), N11;\n      }\n      _4.addTrace(Is.subscribe_session_topic_success);\n      const W3 = D3(I4({}, S6), { topic: E3, requiredNamespaces: m2, optionalNamespaces: y6, pairingTopic: l4, acknowledged: false, self: S6.controller, peer: { publicKey: w4.publicKey, metadata: w4.metadata }, controller: R2, transportType: M3.relay });\n      await this.client.session.set(E3, W3), _4.addTrace(Is.store_session);\n      try {\n        _4.addTrace(Is.publishing_session_settle), await this.sendRequest({ topic: E3, method: \"wc_sessionSettle\", params: S6, throwOnFailedPublish: true }).catch((N11) => {\n          throw _4 == null ? void 0 : _4.setError(Ts.session_settle_publish_failure), N11;\n        }), _4.addTrace(Is.session_settle_publish_success), _4.addTrace(Is.publishing_session_approve), await this.sendResult({ id: n5, topic: l4, result: { relay: { protocol: a4 ?? \"irn\" }, responderPublicKey: R2 }, throwOnFailedPublish: true }).catch((N11) => {\n          throw _4 == null ? void 0 : _4.setError(Ts.session_approve_publish_failure), N11;\n        }), _4.addTrace(Is.session_approve_publish_success);\n      } catch (N11) {\n        throw this.client.logger.error(N11), this.client.session.delete(E3, U(\"USER_DISCONNECTED\")), await this.client.core.relayer.unsubscribe(E3), N11;\n      }\n      return this.client.core.eventClient.deleteEvent({ eventId: _4.eventId }), await this.client.core.pairing.updateMetadata({ topic: l4, metadata: w4.metadata }), await this.client.proposal.delete(n5, U(\"USER_DISCONNECTED\")), await this.client.core.pairing.activate({ topic: l4 }), await this.setExpiry(E3, Mt(z5)), { topic: E3, acknowledged: () => Promise.resolve(this.client.session.get(E3)) };\n    }, this.reject = async (e2) => {\n      this.isInitialized(), await this.confirmOnlineStateOrThrow();\n      try {\n        await this.isValidReject(e2);\n      } catch (r4) {\n        throw this.client.logger.error(\"reject() -> isValidReject() failed\"), r4;\n      }\n      const { id: t, reason: s3 } = e2;\n      let i4;\n      try {\n        i4 = this.client.proposal.get(t).pairingTopic;\n      } catch (r4) {\n        throw this.client.logger.error(`reject() -> proposal.get(${t}) failed`), r4;\n      }\n      i4 && (await this.sendError({ id: t, topic: i4, error: s3, rpcOpts: v4.wc_sessionPropose.reject }), await this.client.proposal.delete(t, U(\"USER_DISCONNECTED\")));\n    }, this.update = async (e2) => {\n      this.isInitialized(), await this.confirmOnlineStateOrThrow();\n      try {\n        await this.isValidUpdate(e2);\n      } catch (p3) {\n        throw this.client.logger.error(\"update() -> isValidUpdate() failed\"), p3;\n      }\n      const { topic: t, namespaces: s3 } = e2, { done: i4, resolve: r4, reject: n5 } = _t(), a4 = payloadId(), c5 = getBigIntRpcId().toString(), h5 = this.client.session.get(t).namespaces;\n      return this.events.once(Lt(\"session_update\", a4), ({ error: p3 }) => {\n        p3 ? n5(p3) : r4();\n      }), await this.client.session.update(t, { namespaces: s3 }), await this.sendRequest({ topic: t, method: \"wc_sessionUpdate\", params: { namespaces: s3 }, throwOnFailedPublish: true, clientRpcId: a4, relayRpcId: c5 }).catch((p3) => {\n        this.client.logger.error(p3), this.client.session.update(t, { namespaces: h5 }), n5(p3);\n      }), { acknowledged: i4 };\n    }, this.extend = async (e2) => {\n      this.isInitialized(), await this.confirmOnlineStateOrThrow();\n      try {\n        await this.isValidExtend(e2);\n      } catch (a4) {\n        throw this.client.logger.error(\"extend() -> isValidExtend() failed\"), a4;\n      }\n      const { topic: t } = e2, s3 = payloadId(), { done: i4, resolve: r4, reject: n5 } = _t();\n      return this.events.once(Lt(\"session_extend\", s3), ({ error: a4 }) => {\n        a4 ? n5(a4) : r4();\n      }), await this.setExpiry(t, Mt(z5)), this.sendRequest({ topic: t, method: \"wc_sessionExtend\", params: {}, clientRpcId: s3, throwOnFailedPublish: true }).catch((a4) => {\n        n5(a4);\n      }), { acknowledged: i4 };\n    }, this.request = async (e2) => {\n      this.isInitialized();\n      try {\n        await this.isValidRequest(e2);\n      } catch (w4) {\n        throw this.client.logger.error(\"request() -> isValidRequest() failed\"), w4;\n      }\n      const { chainId: t, request: s3, topic: i4, expiry: r4 = v4.wc_sessionRequest.req.ttl } = e2, n5 = this.client.session.get(i4);\n      (n5 == null ? void 0 : n5.transportType) === M3.relay && await this.confirmOnlineStateOrThrow();\n      const a4 = payloadId(), c5 = getBigIntRpcId().toString(), { done: h5, resolve: p3, reject: d3 } = _t(r4, \"Request expired. Please try again.\");\n      this.events.once(Lt(\"session_request\", a4), ({ error: w4, result: m2 }) => {\n        w4 ? d3(w4) : p3(m2);\n      });\n      const l4 = this.getAppLinkIfEnabled(n5.peer.metadata, n5.transportType);\n      return l4 ? (await this.sendRequest({ clientRpcId: a4, relayRpcId: c5, topic: i4, method: \"wc_sessionRequest\", params: { request: D3(I4({}, s3), { expiryTimestamp: Mt(r4) }), chainId: t }, expiry: r4, throwOnFailedPublish: true, appLink: l4 }).catch((w4) => d3(w4)), this.client.events.emit(\"session_request_sent\", { topic: i4, request: s3, chainId: t, id: a4 }), await h5()) : await Promise.all([new Promise(async (w4) => {\n        await this.sendRequest({ clientRpcId: a4, relayRpcId: c5, topic: i4, method: \"wc_sessionRequest\", params: { request: D3(I4({}, s3), { expiryTimestamp: Mt(r4) }), chainId: t }, expiry: r4, throwOnFailedPublish: true }).catch((m2) => d3(m2)), this.client.events.emit(\"session_request_sent\", { topic: i4, request: s3, chainId: t, id: a4 }), w4();\n      }), new Promise(async (w4) => {\n        var m2;\n        if (!((m2 = n5.sessionConfig) != null && m2.disableDeepLink)) {\n          const y6 = await qt(this.client.core.storage, xe);\n          await Ft({ id: a4, topic: i4, wcDeepLink: y6 });\n        }\n        w4();\n      }), h5()]).then((w4) => w4[2]);\n    }, this.respond = async (e2) => {\n      this.isInitialized(), await this.isValidRespond(e2);\n      const { topic: t, response: s3 } = e2, { id: i4 } = s3, r4 = this.client.session.get(t);\n      r4.transportType === M3.relay && await this.confirmOnlineStateOrThrow();\n      const n5 = this.getAppLinkIfEnabled(r4.peer.metadata, r4.transportType);\n      isJsonRpcResult(s3) ? await this.sendResult({ id: i4, topic: t, result: s3.result, throwOnFailedPublish: true, appLink: n5 }) : isJsonRpcError(s3) && await this.sendError({ id: i4, topic: t, error: s3.error, appLink: n5 }), this.cleanupAfterResponse(e2);\n    }, this.ping = async (e2) => {\n      this.isInitialized(), await this.confirmOnlineStateOrThrow();\n      try {\n        await this.isValidPing(e2);\n      } catch (s3) {\n        throw this.client.logger.error(\"ping() -> isValidPing() failed\"), s3;\n      }\n      const { topic: t } = e2;\n      if (this.client.session.keys.includes(t)) {\n        const s3 = payloadId(), i4 = getBigIntRpcId().toString(), { done: r4, resolve: n5, reject: a4 } = _t();\n        this.events.once(Lt(\"session_ping\", s3), ({ error: c5 }) => {\n          c5 ? a4(c5) : n5();\n        }), await Promise.all([this.sendRequest({ topic: t, method: \"wc_sessionPing\", params: {}, throwOnFailedPublish: true, clientRpcId: s3, relayRpcId: i4 }), r4()]);\n      } else\n        this.client.core.pairing.pairings.keys.includes(t) && await this.client.core.pairing.ping({ topic: t });\n    }, this.emit = async (e2) => {\n      this.isInitialized(), await this.confirmOnlineStateOrThrow(), await this.isValidEmit(e2);\n      const { topic: t, event: s3, chainId: i4 } = e2, r4 = getBigIntRpcId().toString();\n      await this.sendRequest({ topic: t, method: \"wc_sessionEvent\", params: { event: s3, chainId: i4 }, throwOnFailedPublish: true, relayRpcId: r4 });\n    }, this.disconnect = async (e2) => {\n      this.isInitialized(), await this.confirmOnlineStateOrThrow(), await this.isValidDisconnect(e2);\n      const { topic: t } = e2;\n      if (this.client.session.keys.includes(t))\n        await this.sendRequest({ topic: t, method: \"wc_sessionDelete\", params: U(\"USER_DISCONNECTED\"), throwOnFailedPublish: true }), await this.deleteSession({ topic: t, emitEvent: false });\n      else if (this.client.core.pairing.pairings.keys.includes(t))\n        await this.client.core.pairing.disconnect({ topic: t });\n      else {\n        const { message: s3 } = S(\"MISMATCHED_TOPIC\", `Session or pairing topic not found: ${t}`);\n        throw new Error(s3);\n      }\n    }, this.find = (e2) => (this.isInitialized(), this.client.session.getAll().filter((t) => zr(t, e2))), this.getPendingSessionRequests = () => this.client.pendingRequest.getAll(), this.authenticate = async (e2, t) => {\n      var s3;\n      this.isInitialized(), this.isValidAuthenticate(e2);\n      const i4 = t && this.client.core.linkModeSupportedApps.includes(t) && ((s3 = this.client.metadata.redirect) == null ? void 0 : s3.linkMode), r4 = i4 ? M3.link_mode : M3.relay;\n      r4 === M3.relay && await this.confirmOnlineStateOrThrow();\n      const { chains: n5, statement: a4 = \"\", uri: c5, domain: h5, nonce: p3, type: d3, exp: l4, nbf: w4, methods: m2 = [], expiry: y6 } = e2, _4 = [...e2.resources || []], { topic: R2, uri: V3 } = await this.client.core.pairing.create({ methods: [\"wc_sessionAuthenticate\"], transportType: r4 });\n      this.client.logger.info({ message: \"Generated new pairing\", pairing: { topic: R2, uri: V3 } });\n      const E3 = await this.client.core.crypto.generateKeyPair(), S6 = hr(E3);\n      if (await Promise.all([this.client.auth.authKeys.set(ae3, { responseTopic: S6, publicKey: E3 }), this.client.auth.pairingTopics.set(S6, { topic: S6, pairingTopic: R2 })]), await this.client.core.relayer.subscribe(S6, { transportType: r4 }), this.client.logger.info(`sending request to new pairing topic: ${R2}`), m2.length > 0) {\n        const { namespace: O5 } = re(n5[0]);\n        let T2 = ir(O5, \"request\", m2);\n        Y(_4) && (T2 = cr(T2, _4.pop())), _4.push(T2);\n      }\n      const M4 = y6 && y6 > v4.wc_sessionAuthenticate.req.ttl ? y6 : v4.wc_sessionAuthenticate.req.ttl, W3 = { authPayload: { type: d3 ?? \"caip122\", chains: n5, statement: a4, aud: c5, domain: h5, version: \"1\", nonce: p3, iat: (/* @__PURE__ */ new Date()).toISOString(), exp: l4, nbf: w4, resources: _4 }, requester: { publicKey: E3, metadata: this.client.metadata }, expiryTimestamp: Mt(M4) }, N11 = { eip155: { chains: n5, methods: [.../* @__PURE__ */ new Set([\"personal_sign\", ...m2])], events: [\"chainChanged\", \"accountsChanged\"] } }, De2 = { requiredNamespaces: {}, optionalNamespaces: N11, relays: [{ protocol: \"irn\" }], pairingTopic: R2, proposer: { publicKey: E3, metadata: this.client.metadata }, expiryTimestamp: Mt(v4.wc_sessionPropose.req.ttl) }, { done: wt2, resolve: Ve, reject: Ee3 } = _t(M4, \"Request expired\"), ce2 = async ({ error: O5, session: T2 }) => {\n        if (this.events.off(Lt(\"session_request\", G2), Re2), O5)\n          Ee3(O5);\n        else if (T2) {\n          T2.self.publicKey = E3, await this.client.session.set(T2.topic, T2), await this.setExpiry(T2.topic, T2.expiry), R2 && await this.client.core.pairing.updateMetadata({ topic: R2, metadata: T2.peer.metadata });\n          const le2 = this.client.session.get(T2.topic);\n          await this.deleteProposal(Z3), Ve({ session: le2 });\n        }\n      }, Re2 = async (O5) => {\n        var T2, le2, Me;\n        if (await this.deletePendingAuthRequest(G2, { message: \"fulfilled\", code: 0 }), O5.error) {\n          const te = U(\"WC_METHOD_UNSUPPORTED\", \"wc_sessionAuthenticate\");\n          return O5.error.code === te.code ? void 0 : (this.events.off(Lt(\"session_connect\"), ce2), Ee3(O5.error.message));\n        }\n        await this.deleteProposal(Z3), this.events.off(Lt(\"session_connect\"), ce2);\n        const { cacaos: ke, responder: j2 } = O5.result, Ie2 = [], $e2 = [];\n        for (const te of ke) {\n          await nr({ cacao: te, projectId: this.client.core.projectId }) || (this.client.logger.error(te, \"Signature verification failed\"), Ee3(U(\"SESSION_SETTLEMENT_FAILED\", \"Signature verification failed\")));\n          const { p: fe3 } = te, ve3 = Y(fe3.resources), Ke2 = [ln(fe3.iss)], mt3 = fe(fe3.iss);\n          if (ve3) {\n            const qe2 = ar(ve3), _t3 = ur(ve3);\n            Ie2.push(...qe2), Ke2.push(..._t3);\n          }\n          for (const qe2 of Ke2)\n            $e2.push(`${qe2}:${mt3}`);\n        }\n        const ee3 = await this.client.core.crypto.generateSharedKey(E3, j2.publicKey);\n        let pe2;\n        Ie2.length > 0 && (pe2 = { topic: ee3, acknowledged: true, self: { publicKey: E3, metadata: this.client.metadata }, peer: j2, controller: j2.publicKey, expiry: Mt(z5), requiredNamespaces: {}, optionalNamespaces: {}, relay: { protocol: \"irn\" }, pairingTopic: R2, namespaces: Jr([...new Set(Ie2)], [...new Set($e2)]), transportType: r4 }, await this.client.core.relayer.subscribe(ee3, { transportType: r4 }), await this.client.session.set(ee3, pe2), R2 && await this.client.core.pairing.updateMetadata({ topic: R2, metadata: j2.metadata }), pe2 = this.client.session.get(ee3)), (T2 = this.client.metadata.redirect) != null && T2.linkMode && (le2 = j2.metadata.redirect) != null && le2.linkMode && (Me = j2.metadata.redirect) != null && Me.universal && t && (this.client.core.addLinkModeSupportedApp(j2.metadata.redirect.universal), this.client.session.update(ee3, { transportType: M3.link_mode })), Ve({ auths: ke, session: pe2 });\n      }, G2 = payloadId(), Z3 = payloadId();\n      this.events.once(Lt(\"session_connect\"), ce2), this.events.once(Lt(\"session_request\", G2), Re2);\n      let Se2;\n      try {\n        if (i4) {\n          const O5 = formatJsonRpcRequest(\"wc_sessionAuthenticate\", W3, G2);\n          this.client.core.history.set(R2, O5);\n          const T2 = await this.client.core.crypto.encode(\"\", O5, { type: M, encoding: lr });\n          Se2 = xr(t, R2, T2);\n        } else\n          await Promise.all([this.sendRequest({ topic: R2, method: \"wc_sessionAuthenticate\", params: W3, expiry: e2.expiry, throwOnFailedPublish: true, clientRpcId: G2 }), this.sendRequest({ topic: R2, method: \"wc_sessionPropose\", params: De2, expiry: v4.wc_sessionPropose.req.ttl, throwOnFailedPublish: true, clientRpcId: Z3 })]);\n      } catch (O5) {\n        throw this.events.off(Lt(\"session_connect\"), ce2), this.events.off(Lt(\"session_request\", G2), Re2), O5;\n      }\n      return await this.setProposal(Z3, I4({ id: Z3 }, De2)), await this.setAuthRequest(G2, { request: D3(I4({}, W3), { verifyContext: {} }), pairingTopic: R2, transportType: r4 }), { uri: Se2 ?? V3, response: wt2 };\n    }, this.approveSessionAuthenticate = async (e2) => {\n      const { id: t, auths: s3 } = e2, i4 = this.client.core.eventClient.createEvent({ properties: { topic: t.toString(), trace: [Cs.authenticated_session_approve_started] } });\n      try {\n        this.isInitialized();\n      } catch (y6) {\n        throw i4.setError(Ps.no_internet_connection), y6;\n      }\n      const r4 = this.getPendingAuthRequest(t);\n      if (!r4)\n        throw i4.setError(Ps.authenticated_session_pending_request_not_found), new Error(`Could not find pending auth request with id ${t}`);\n      const n5 = r4.transportType || M3.relay;\n      n5 === M3.relay && await this.confirmOnlineStateOrThrow();\n      const a4 = r4.requester.publicKey, c5 = await this.client.core.crypto.generateKeyPair(), h5 = hr(a4), p3 = { type: D, receiverPublicKey: a4, senderPublicKey: c5 }, d3 = [], l4 = [];\n      for (const y6 of s3) {\n        if (!await nr({ cacao: y6, projectId: this.client.core.projectId })) {\n          i4.setError(Ps.invalid_cacao);\n          const S6 = U(\"SESSION_SETTLEMENT_FAILED\", \"Signature verification failed\");\n          throw await this.sendError({ id: t, topic: h5, error: S6, encodeOpts: p3 }), new Error(S6.message);\n        }\n        i4.addTrace(Cs.cacaos_verified);\n        const { p: _4 } = y6, R2 = Y(_4.resources), V3 = [ln(_4.iss)], E3 = fe(_4.iss);\n        if (R2) {\n          const S6 = ar(R2), M4 = ur(R2);\n          d3.push(...S6), V3.push(...M4);\n        }\n        for (const S6 of V3)\n          l4.push(`${S6}:${E3}`);\n      }\n      const w4 = await this.client.core.crypto.generateSharedKey(c5, a4);\n      i4.addTrace(Cs.create_authenticated_session_topic);\n      let m2;\n      if ((d3 == null ? void 0 : d3.length) > 0) {\n        m2 = { topic: w4, acknowledged: true, self: { publicKey: c5, metadata: this.client.metadata }, peer: { publicKey: a4, metadata: r4.requester.metadata }, controller: a4, expiry: Mt(z5), authentication: s3, requiredNamespaces: {}, optionalNamespaces: {}, relay: { protocol: \"irn\" }, pairingTopic: r4.pairingTopic, namespaces: Jr([...new Set(d3)], [...new Set(l4)]), transportType: n5 }, i4.addTrace(Cs.subscribing_authenticated_session_topic);\n        try {\n          await this.client.core.relayer.subscribe(w4, { transportType: n5 });\n        } catch (y6) {\n          throw i4.setError(Ps.subscribe_authenticated_session_topic_failure), y6;\n        }\n        i4.addTrace(Cs.subscribe_authenticated_session_topic_success), await this.client.session.set(w4, m2), i4.addTrace(Cs.store_authenticated_session), await this.client.core.pairing.updateMetadata({ topic: r4.pairingTopic, metadata: r4.requester.metadata });\n      }\n      i4.addTrace(Cs.publishing_authenticated_session_approve);\n      try {\n        await this.sendResult({ topic: h5, id: t, result: { cacaos: s3, responder: { publicKey: c5, metadata: this.client.metadata } }, encodeOpts: p3, throwOnFailedPublish: true, appLink: this.getAppLinkIfEnabled(r4.requester.metadata, n5) });\n      } catch (y6) {\n        throw i4.setError(Ps.authenticated_session_approve_publish_failure), y6;\n      }\n      return await this.client.auth.requests.delete(t, { message: \"fulfilled\", code: 0 }), await this.client.core.pairing.activate({ topic: r4.pairingTopic }), this.client.core.eventClient.deleteEvent({ eventId: i4.eventId }), { session: m2 };\n    }, this.rejectSessionAuthenticate = async (e2) => {\n      this.isInitialized();\n      const { id: t, reason: s3 } = e2, i4 = this.getPendingAuthRequest(t);\n      if (!i4)\n        throw new Error(`Could not find pending auth request with id ${t}`);\n      i4.transportType === M3.relay && await this.confirmOnlineStateOrThrow();\n      const r4 = i4.requester.publicKey, n5 = await this.client.core.crypto.generateKeyPair(), a4 = hr(r4), c5 = { type: D, receiverPublicKey: r4, senderPublicKey: n5 };\n      await this.sendError({ id: t, topic: a4, error: s3, encodeOpts: c5, rpcOpts: v4.wc_sessionAuthenticate.reject, appLink: this.getAppLinkIfEnabled(i4.requester.metadata, i4.transportType) }), await this.client.auth.requests.delete(t, { message: \"rejected\", code: 0 }), await this.client.proposal.delete(t, U(\"USER_DISCONNECTED\"));\n    }, this.formatAuthMessage = (e2) => {\n      this.isInitialized();\n      const { request: t, iss: s3 } = e2;\n      return dn(t, s3);\n    }, this.processRelayMessageCache = () => {\n      setTimeout(async () => {\n        if (this.relayMessageCache.length !== 0)\n          for (; this.relayMessageCache.length > 0; )\n            try {\n              const e2 = this.relayMessageCache.shift();\n              e2 && await this.onRelayMessage(e2);\n            } catch (e2) {\n              this.client.logger.error(e2);\n            }\n      }, 50);\n    }, this.cleanupDuplicatePairings = async (e2) => {\n      if (e2.pairingTopic)\n        try {\n          const t = this.client.core.pairing.pairings.get(e2.pairingTopic), s3 = this.client.core.pairing.pairings.getAll().filter((i4) => {\n            var r4, n5;\n            return ((r4 = i4.peerMetadata) == null ? void 0 : r4.url) && ((n5 = i4.peerMetadata) == null ? void 0 : n5.url) === e2.peer.metadata.url && i4.topic && i4.topic !== t.topic;\n          });\n          if (s3.length === 0)\n            return;\n          this.client.logger.info(`Cleaning up ${s3.length} duplicate pairing(s)`), await Promise.all(s3.map((i4) => this.client.core.pairing.disconnect({ topic: i4.topic }))), this.client.logger.info(\"Duplicate pairings clean up finished\");\n        } catch (t) {\n          this.client.logger.error(t);\n        }\n    }, this.deleteSession = async (e2) => {\n      var t;\n      const { topic: s3, expirerHasDeleted: i4 = false, emitEvent: r4 = true, id: n5 = 0 } = e2, { self: a4 } = this.client.session.get(s3);\n      await this.client.core.relayer.unsubscribe(s3), await this.client.session.delete(s3, U(\"USER_DISCONNECTED\")), this.addToRecentlyDeleted(s3, \"session\"), this.client.core.crypto.keychain.has(a4.publicKey) && await this.client.core.crypto.deleteKeyPair(a4.publicKey), this.client.core.crypto.keychain.has(s3) && await this.client.core.crypto.deleteSymKey(s3), i4 || this.client.core.expirer.del(s3), this.client.core.storage.removeItem(xe).catch((c5) => this.client.logger.warn(c5)), this.getPendingSessionRequests().forEach((c5) => {\n        c5.topic === s3 && this.deletePendingSessionRequest(c5.id, U(\"USER_DISCONNECTED\"));\n      }), s3 === ((t = this.sessionRequestQueue.queue[0]) == null ? void 0 : t.topic) && (this.sessionRequestQueue.state = x5.idle), r4 && this.client.events.emit(\"session_delete\", { id: n5, topic: s3 });\n    }, this.deleteProposal = async (e2, t) => {\n      if (t)\n        try {\n          const s3 = this.client.proposal.get(e2), i4 = this.client.core.eventClient.getEvent({ topic: s3.pairingTopic });\n          i4 == null ? void 0 : i4.setError(Ts.proposal_expired);\n        } catch {\n        }\n      await Promise.all([this.client.proposal.delete(e2, U(\"USER_DISCONNECTED\")), t ? Promise.resolve() : this.client.core.expirer.del(e2)]), this.addToRecentlyDeleted(e2, \"proposal\");\n    }, this.deletePendingSessionRequest = async (e2, t, s3 = false) => {\n      await Promise.all([this.client.pendingRequest.delete(e2, t), s3 ? Promise.resolve() : this.client.core.expirer.del(e2)]), this.addToRecentlyDeleted(e2, \"request\"), this.sessionRequestQueue.queue = this.sessionRequestQueue.queue.filter((i4) => i4.id !== e2), s3 && (this.sessionRequestQueue.state = x5.idle, this.client.events.emit(\"session_request_expire\", { id: e2 }));\n    }, this.deletePendingAuthRequest = async (e2, t, s3 = false) => {\n      await Promise.all([this.client.auth.requests.delete(e2, t), s3 ? Promise.resolve() : this.client.core.expirer.del(e2)]);\n    }, this.setExpiry = async (e2, t) => {\n      this.client.session.keys.includes(e2) && (this.client.core.expirer.set(e2, t), await this.client.session.update(e2, { expiry: t }));\n    }, this.setProposal = async (e2, t) => {\n      this.client.core.expirer.set(e2, Mt(v4.wc_sessionPropose.req.ttl)), await this.client.proposal.set(e2, t);\n    }, this.setAuthRequest = async (e2, t) => {\n      const { request: s3, pairingTopic: i4, transportType: r4 = M3.relay } = t;\n      this.client.core.expirer.set(e2, s3.expiryTimestamp), await this.client.auth.requests.set(e2, { authPayload: s3.authPayload, requester: s3.requester, expiryTimestamp: s3.expiryTimestamp, id: e2, pairingTopic: i4, verifyContext: s3.verifyContext, transportType: r4 });\n    }, this.setPendingSessionRequest = async (e2) => {\n      const { id: t, topic: s3, params: i4, verifyContext: r4 } = e2, n5 = i4.request.expiryTimestamp || Mt(v4.wc_sessionRequest.req.ttl);\n      this.client.core.expirer.set(t, n5), await this.client.pendingRequest.set(t, { id: t, topic: s3, params: i4, verifyContext: r4 });\n    }, this.sendRequest = async (e2) => {\n      const { topic: t, method: s3, params: i4, expiry: r4, relayRpcId: n5, clientRpcId: a4, throwOnFailedPublish: c5, appLink: h5 } = e2, p3 = formatJsonRpcRequest(s3, i4, a4);\n      let d3;\n      const l4 = !!h5;\n      try {\n        const y6 = l4 ? lr : ge;\n        d3 = await this.client.core.crypto.encode(t, p3, { encoding: y6 });\n      } catch (y6) {\n        throw await this.cleanup(), this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${t} failed`), y6;\n      }\n      let w4;\n      if (at3.includes(s3)) {\n        const y6 = yr(JSON.stringify(p3)), _4 = yr(d3);\n        w4 = await this.client.core.verify.register({ id: _4, decryptedId: y6 });\n      }\n      const m2 = v4[s3].req;\n      if (m2.attestation = w4, r4 && (m2.ttl = r4), n5 && (m2.id = n5), this.client.core.history.set(t, p3), l4) {\n        const y6 = xr(h5, t, d3);\n        await global.Linking.openURL(y6, this.client.name);\n      } else {\n        const y6 = v4[s3].req;\n        r4 && (y6.ttl = r4), n5 && (y6.id = n5), c5 ? (y6.internal = D3(I4({}, y6.internal), { throwOnFailedPublish: true }), await this.client.core.relayer.publish(t, d3, y6)) : this.client.core.relayer.publish(t, d3, y6).catch((_4) => this.client.logger.error(_4));\n      }\n      return p3.id;\n    }, this.sendResult = async (e2) => {\n      const { id: t, topic: s3, result: i4, throwOnFailedPublish: r4, encodeOpts: n5, appLink: a4 } = e2, c5 = formatJsonRpcResult(t, i4);\n      let h5;\n      const p3 = a4 && typeof (global == null ? void 0 : global.Linking) < \"u\";\n      try {\n        const l4 = p3 ? lr : ge;\n        h5 = await this.client.core.crypto.encode(s3, c5, D3(I4({}, n5 || {}), { encoding: l4 }));\n      } catch (l4) {\n        throw await this.cleanup(), this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${s3} failed`), l4;\n      }\n      let d3;\n      try {\n        d3 = await this.client.core.history.get(s3, t);\n      } catch (l4) {\n        throw this.client.logger.error(`sendResult() -> history.get(${s3}, ${t}) failed`), l4;\n      }\n      if (p3) {\n        const l4 = xr(a4, s3, h5);\n        await global.Linking.openURL(l4, this.client.name);\n      } else {\n        const l4 = v4[d3.request.method].res;\n        r4 ? (l4.internal = D3(I4({}, l4.internal), { throwOnFailedPublish: true }), await this.client.core.relayer.publish(s3, h5, l4)) : this.client.core.relayer.publish(s3, h5, l4).catch((w4) => this.client.logger.error(w4));\n      }\n      await this.client.core.history.resolve(c5);\n    }, this.sendError = async (e2) => {\n      const { id: t, topic: s3, error: i4, encodeOpts: r4, rpcOpts: n5, appLink: a4 } = e2, c5 = formatJsonRpcError(t, i4);\n      let h5;\n      const p3 = a4 && typeof (global == null ? void 0 : global.Linking) < \"u\";\n      try {\n        const l4 = p3 ? lr : ge;\n        h5 = await this.client.core.crypto.encode(s3, c5, D3(I4({}, r4 || {}), { encoding: l4 }));\n      } catch (l4) {\n        throw await this.cleanup(), this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${s3} failed`), l4;\n      }\n      let d3;\n      try {\n        d3 = await this.client.core.history.get(s3, t);\n      } catch (l4) {\n        throw this.client.logger.error(`sendError() -> history.get(${s3}, ${t}) failed`), l4;\n      }\n      if (p3) {\n        const l4 = xr(a4, s3, h5);\n        await global.Linking.openURL(l4, this.client.name);\n      } else {\n        const l4 = n5 || v4[d3.request.method].res;\n        this.client.core.relayer.publish(s3, h5, l4);\n      }\n      await this.client.core.history.resolve(c5);\n    }, this.cleanup = async () => {\n      const e2 = [], t = [];\n      this.client.session.getAll().forEach((s3) => {\n        let i4 = false;\n        Kt(s3.expiry) && (i4 = true), this.client.core.crypto.keychain.has(s3.topic) || (i4 = true), i4 && e2.push(s3.topic);\n      }), this.client.proposal.getAll().forEach((s3) => {\n        Kt(s3.expiryTimestamp) && t.push(s3.id);\n      }), await Promise.all([...e2.map((s3) => this.deleteSession({ topic: s3 })), ...t.map((s3) => this.deleteProposal(s3))]);\n    }, this.onRelayEventRequest = async (e2) => {\n      this.requestQueue.queue.push(e2), await this.processRequestsQueue();\n    }, this.processRequestsQueue = async () => {\n      if (this.requestQueue.state === x5.active) {\n        this.client.logger.info(\"Request queue already active, skipping...\");\n        return;\n      }\n      for (this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`); this.requestQueue.queue.length > 0; ) {\n        this.requestQueue.state = x5.active;\n        const e2 = this.requestQueue.queue.shift();\n        if (e2)\n          try {\n            await this.processRequest(e2);\n          } catch (t) {\n            this.client.logger.warn(t);\n          }\n      }\n      this.requestQueue.state = x5.idle;\n    }, this.processRequest = async (e2) => {\n      const { topic: t, payload: s3, attestation: i4, transportType: r4, encryptedId: n5 } = e2, a4 = s3.method;\n      if (!this.shouldIgnorePairingRequest({ topic: t, requestMethod: a4 }))\n        switch (a4) {\n          case \"wc_sessionPropose\":\n            return await this.onSessionProposeRequest({ topic: t, payload: s3, attestation: i4, encryptedId: n5 });\n          case \"wc_sessionSettle\":\n            return await this.onSessionSettleRequest(t, s3);\n          case \"wc_sessionUpdate\":\n            return await this.onSessionUpdateRequest(t, s3);\n          case \"wc_sessionExtend\":\n            return await this.onSessionExtendRequest(t, s3);\n          case \"wc_sessionPing\":\n            return await this.onSessionPingRequest(t, s3);\n          case \"wc_sessionDelete\":\n            return await this.onSessionDeleteRequest(t, s3);\n          case \"wc_sessionRequest\":\n            return await this.onSessionRequest({ topic: t, payload: s3, attestation: i4, encryptedId: n5, transportType: r4 });\n          case \"wc_sessionEvent\":\n            return await this.onSessionEventRequest(t, s3);\n          case \"wc_sessionAuthenticate\":\n            return await this.onSessionAuthenticateRequest({ topic: t, payload: s3, attestation: i4, encryptedId: n5, transportType: r4 });\n          default:\n            return this.client.logger.info(`Unsupported request method ${a4}`);\n        }\n    }, this.onRelayEventResponse = async (e2) => {\n      const { topic: t, payload: s3, transportType: i4 } = e2, r4 = (await this.client.core.history.get(t, s3.id)).request.method;\n      switch (r4) {\n        case \"wc_sessionPropose\":\n          return this.onSessionProposeResponse(t, s3, i4);\n        case \"wc_sessionSettle\":\n          return this.onSessionSettleResponse(t, s3);\n        case \"wc_sessionUpdate\":\n          return this.onSessionUpdateResponse(t, s3);\n        case \"wc_sessionExtend\":\n          return this.onSessionExtendResponse(t, s3);\n        case \"wc_sessionPing\":\n          return this.onSessionPingResponse(t, s3);\n        case \"wc_sessionRequest\":\n          return this.onSessionRequestResponse(t, s3);\n        case \"wc_sessionAuthenticate\":\n          return this.onSessionAuthenticateResponse(t, s3);\n        default:\n          return this.client.logger.info(`Unsupported response method ${r4}`);\n      }\n    }, this.onRelayEventUnknownPayload = (e2) => {\n      const { topic: t } = e2, { message: s3 } = S(\"MISSING_OR_INVALID\", `Decoded payload on topic ${t} is not identifiable as a JSON-RPC request or a response.`);\n      throw new Error(s3);\n    }, this.shouldIgnorePairingRequest = (e2) => {\n      const { topic: t, requestMethod: s3 } = e2, i4 = this.expectedPairingMethodMap.get(t);\n      return !i4 || i4.includes(s3) ? false : !!(i4.includes(\"wc_sessionAuthenticate\") && this.client.events.listenerCount(\"session_authenticate\") > 0);\n    }, this.onSessionProposeRequest = async (e2) => {\n      const { topic: t, payload: s3, attestation: i4, encryptedId: r4 } = e2, { params: n5, id: a4 } = s3;\n      try {\n        const c5 = this.client.core.eventClient.getEvent({ topic: t });\n        this.isValidConnect(I4({}, s3.params));\n        const h5 = n5.expiryTimestamp || Mt(v4.wc_sessionPropose.req.ttl), p3 = I4({ id: a4, pairingTopic: t, expiryTimestamp: h5 }, n5);\n        await this.setProposal(a4, p3);\n        const d3 = await this.getVerifyContext({ attestationId: i4, hash: yr(JSON.stringify(s3)), encryptedId: r4, metadata: p3.proposer.metadata });\n        this.client.events.listenerCount(\"session_proposal\") === 0 && (console.warn(\"No listener for session_proposal event\"), c5 == null ? void 0 : c5.setError($2.proposal_listener_not_found)), c5 == null ? void 0 : c5.addTrace(z4.emit_session_proposal), this.client.events.emit(\"session_proposal\", { id: a4, params: p3, verifyContext: d3 });\n      } catch (c5) {\n        await this.sendError({ id: a4, topic: t, error: c5, rpcOpts: v4.wc_sessionPropose.autoReject }), this.client.logger.error(c5);\n      }\n    }, this.onSessionProposeResponse = async (e2, t, s3) => {\n      const { id: i4 } = t;\n      if (isJsonRpcResult(t)) {\n        const { result: r4 } = t;\n        this.client.logger.trace({ type: \"method\", method: \"onSessionProposeResponse\", result: r4 });\n        const n5 = this.client.proposal.get(i4);\n        this.client.logger.trace({ type: \"method\", method: \"onSessionProposeResponse\", proposal: n5 });\n        const a4 = n5.proposer.publicKey;\n        this.client.logger.trace({ type: \"method\", method: \"onSessionProposeResponse\", selfPublicKey: a4 });\n        const c5 = r4.responderPublicKey;\n        this.client.logger.trace({ type: \"method\", method: \"onSessionProposeResponse\", peerPublicKey: c5 });\n        const h5 = await this.client.core.crypto.generateSharedKey(a4, c5);\n        this.client.logger.trace({ type: \"method\", method: \"onSessionProposeResponse\", sessionTopic: h5 });\n        const p3 = await this.client.core.relayer.subscribe(h5, { transportType: s3 });\n        this.client.logger.trace({ type: \"method\", method: \"onSessionProposeResponse\", subscriptionId: p3 }), await this.client.core.pairing.activate({ topic: e2 });\n      } else if (isJsonRpcError(t)) {\n        await this.client.proposal.delete(i4, U(\"USER_DISCONNECTED\"));\n        const r4 = Lt(\"session_connect\");\n        if (this.events.listenerCount(r4) === 0)\n          throw new Error(`emitting ${r4} without any listeners, 954`);\n        this.events.emit(Lt(\"session_connect\"), { error: t.error });\n      }\n    }, this.onSessionSettleRequest = async (e2, t) => {\n      const { id: s3, params: i4 } = t;\n      try {\n        this.isValidSessionSettleRequest(i4);\n        const { relay: r4, controller: n5, expiry: a4, namespaces: c5, sessionProperties: h5, sessionConfig: p3 } = t.params, d3 = D3(I4(I4({ topic: e2, relay: r4, expiry: a4, namespaces: c5, acknowledged: true, pairingTopic: \"\", requiredNamespaces: {}, optionalNamespaces: {}, controller: n5.publicKey, self: { publicKey: \"\", metadata: this.client.metadata }, peer: { publicKey: n5.publicKey, metadata: n5.metadata } }, h5 && { sessionProperties: h5 }), p3 && { sessionConfig: p3 }), { transportType: M3.relay }), l4 = Lt(\"session_connect\");\n        if (this.events.listenerCount(l4) === 0)\n          throw new Error(`emitting ${l4} without any listeners 997`);\n        this.events.emit(Lt(\"session_connect\"), { session: d3 }), await this.sendResult({ id: t.id, topic: e2, result: true, throwOnFailedPublish: true });\n      } catch (r4) {\n        await this.sendError({ id: s3, topic: e2, error: r4 }), this.client.logger.error(r4);\n      }\n    }, this.onSessionSettleResponse = async (e2, t) => {\n      const { id: s3 } = t;\n      isJsonRpcResult(t) ? (await this.client.session.update(e2, { acknowledged: true }), this.events.emit(Lt(\"session_approve\", s3), {})) : isJsonRpcError(t) && (await this.client.session.delete(e2, U(\"USER_DISCONNECTED\")), this.events.emit(Lt(\"session_approve\", s3), { error: t.error }));\n    }, this.onSessionUpdateRequest = async (e2, t) => {\n      const { params: s3, id: i4 } = t;\n      try {\n        const r4 = `${e2}_session_update`, n5 = yo.get(r4);\n        if (n5 && this.isRequestOutOfSync(n5, i4)) {\n          this.client.logger.info(`Discarding out of sync request - ${i4}`), this.sendError({ id: i4, topic: e2, error: U(\"INVALID_UPDATE_REQUEST\") });\n          return;\n        }\n        this.isValidUpdate(I4({ topic: e2 }, s3));\n        try {\n          yo.set(r4, i4), await this.client.session.update(e2, { namespaces: s3.namespaces }), await this.sendResult({ id: i4, topic: e2, result: true, throwOnFailedPublish: true });\n        } catch (a4) {\n          throw yo.delete(r4), a4;\n        }\n        this.client.events.emit(\"session_update\", { id: i4, topic: e2, params: s3 });\n      } catch (r4) {\n        await this.sendError({ id: i4, topic: e2, error: r4 }), this.client.logger.error(r4);\n      }\n    }, this.isRequestOutOfSync = (e2, t) => parseInt(t.toString().slice(0, -3)) <= parseInt(e2.toString().slice(0, -3)), this.onSessionUpdateResponse = (e2, t) => {\n      const { id: s3 } = t, i4 = Lt(\"session_update\", s3);\n      if (this.events.listenerCount(i4) === 0)\n        throw new Error(`emitting ${i4} without any listeners`);\n      isJsonRpcResult(t) ? this.events.emit(Lt(\"session_update\", s3), {}) : isJsonRpcError(t) && this.events.emit(Lt(\"session_update\", s3), { error: t.error });\n    }, this.onSessionExtendRequest = async (e2, t) => {\n      const { id: s3 } = t;\n      try {\n        this.isValidExtend({ topic: e2 }), await this.setExpiry(e2, Mt(z5)), await this.sendResult({ id: s3, topic: e2, result: true, throwOnFailedPublish: true }), this.client.events.emit(\"session_extend\", { id: s3, topic: e2 });\n      } catch (i4) {\n        await this.sendError({ id: s3, topic: e2, error: i4 }), this.client.logger.error(i4);\n      }\n    }, this.onSessionExtendResponse = (e2, t) => {\n      const { id: s3 } = t, i4 = Lt(\"session_extend\", s3);\n      if (this.events.listenerCount(i4) === 0)\n        throw new Error(`emitting ${i4} without any listeners`);\n      isJsonRpcResult(t) ? this.events.emit(Lt(\"session_extend\", s3), {}) : isJsonRpcError(t) && this.events.emit(Lt(\"session_extend\", s3), { error: t.error });\n    }, this.onSessionPingRequest = async (e2, t) => {\n      const { id: s3 } = t;\n      try {\n        this.isValidPing({ topic: e2 }), await this.sendResult({ id: s3, topic: e2, result: true, throwOnFailedPublish: true }), this.client.events.emit(\"session_ping\", { id: s3, topic: e2 });\n      } catch (i4) {\n        await this.sendError({ id: s3, topic: e2, error: i4 }), this.client.logger.error(i4);\n      }\n    }, this.onSessionPingResponse = (e2, t) => {\n      const { id: s3 } = t, i4 = Lt(\"session_ping\", s3);\n      if (this.events.listenerCount(i4) === 0)\n        throw new Error(`emitting ${i4} without any listeners`);\n      setTimeout(() => {\n        isJsonRpcResult(t) ? this.events.emit(Lt(\"session_ping\", s3), {}) : isJsonRpcError(t) && this.events.emit(Lt(\"session_ping\", s3), { error: t.error });\n      }, 500);\n    }, this.onSessionDeleteRequest = async (e2, t) => {\n      const { id: s3 } = t;\n      try {\n        this.isValidDisconnect({ topic: e2, reason: t.params }), Promise.all([new Promise((i4) => {\n          this.client.core.relayer.once(v3.publish, async () => {\n            i4(await this.deleteSession({ topic: e2, id: s3 }));\n          });\n        }), this.sendResult({ id: s3, topic: e2, result: true, throwOnFailedPublish: true }), this.cleanupPendingSentRequestsForTopic({ topic: e2, error: U(\"USER_DISCONNECTED\") })]).catch((i4) => this.client.logger.error(i4));\n      } catch (i4) {\n        this.client.logger.error(i4);\n      }\n    }, this.onSessionRequest = async (e2) => {\n      var t, s3, i4;\n      const { topic: r4, payload: n5, attestation: a4, encryptedId: c5, transportType: h5 } = e2, { id: p3, params: d3 } = n5;\n      try {\n        await this.isValidRequest(I4({ topic: r4 }, d3));\n        const l4 = this.client.session.get(r4), w4 = await this.getVerifyContext({ attestationId: a4, hash: yr(JSON.stringify(formatJsonRpcRequest(\"wc_sessionRequest\", d3, p3))), encryptedId: c5, metadata: l4.peer.metadata, transportType: h5 }), m2 = { id: p3, topic: r4, params: d3, verifyContext: w4 };\n        await this.setPendingSessionRequest(m2), h5 === M3.link_mode && (t = l4.peer.metadata.redirect) != null && t.universal && this.client.core.addLinkModeSupportedApp((s3 = l4.peer.metadata.redirect) == null ? void 0 : s3.universal), (i4 = this.client.signConfig) != null && i4.disableRequestQueue ? this.emitSessionRequest(m2) : (this.addSessionRequestToSessionRequestQueue(m2), this.processSessionRequestQueue());\n      } catch (l4) {\n        await this.sendError({ id: p3, topic: r4, error: l4 }), this.client.logger.error(l4);\n      }\n    }, this.onSessionRequestResponse = (e2, t) => {\n      const { id: s3 } = t, i4 = Lt(\"session_request\", s3);\n      if (this.events.listenerCount(i4) === 0)\n        throw new Error(`emitting ${i4} without any listeners`);\n      isJsonRpcResult(t) ? this.events.emit(Lt(\"session_request\", s3), { result: t.result }) : isJsonRpcError(t) && this.events.emit(Lt(\"session_request\", s3), { error: t.error });\n    }, this.onSessionEventRequest = async (e2, t) => {\n      const { id: s3, params: i4 } = t;\n      try {\n        const r4 = `${e2}_session_event_${i4.event.name}`, n5 = yo.get(r4);\n        if (n5 && this.isRequestOutOfSync(n5, s3)) {\n          this.client.logger.info(`Discarding out of sync request - ${s3}`);\n          return;\n        }\n        this.isValidEmit(I4({ topic: e2 }, i4)), this.client.events.emit(\"session_event\", { id: s3, topic: e2, params: i4 }), yo.set(r4, s3);\n      } catch (r4) {\n        await this.sendError({ id: s3, topic: e2, error: r4 }), this.client.logger.error(r4);\n      }\n    }, this.onSessionAuthenticateResponse = (e2, t) => {\n      const { id: s3 } = t;\n      this.client.logger.trace({ type: \"method\", method: \"onSessionAuthenticateResponse\", topic: e2, payload: t }), isJsonRpcResult(t) ? this.events.emit(Lt(\"session_request\", s3), { result: t.result }) : isJsonRpcError(t) && this.events.emit(Lt(\"session_request\", s3), { error: t.error });\n    }, this.onSessionAuthenticateRequest = async (e2) => {\n      var t;\n      const { topic: s3, payload: i4, attestation: r4, encryptedId: n5, transportType: a4 } = e2;\n      try {\n        const { requester: c5, authPayload: h5, expiryTimestamp: p3 } = i4.params, d3 = await this.getVerifyContext({ attestationId: r4, hash: yr(JSON.stringify(i4)), encryptedId: n5, metadata: c5.metadata, transportType: a4 }), l4 = { requester: c5, pairingTopic: s3, id: i4.id, authPayload: h5, verifyContext: d3, expiryTimestamp: p3 };\n        await this.setAuthRequest(i4.id, { request: l4, pairingTopic: s3, transportType: a4 }), a4 === M3.link_mode && (t = c5.metadata.redirect) != null && t.universal && this.client.core.addLinkModeSupportedApp(c5.metadata.redirect.universal), this.client.events.emit(\"session_authenticate\", { topic: s3, params: i4.params, id: i4.id, verifyContext: d3 });\n      } catch (c5) {\n        this.client.logger.error(c5);\n        const h5 = i4.params.requester.publicKey, p3 = await this.client.core.crypto.generateKeyPair(), d3 = this.getAppLinkIfEnabled(i4.params.requester.metadata, a4), l4 = { type: D, receiverPublicKey: h5, senderPublicKey: p3 };\n        await this.sendError({ id: i4.id, topic: s3, error: c5, encodeOpts: l4, rpcOpts: v4.wc_sessionAuthenticate.autoReject, appLink: d3 });\n      }\n    }, this.addSessionRequestToSessionRequestQueue = (e2) => {\n      this.sessionRequestQueue.queue.push(e2);\n    }, this.cleanupAfterResponse = (e2) => {\n      this.deletePendingSessionRequest(e2.response.id, { message: \"fulfilled\", code: 0 }), setTimeout(() => {\n        this.sessionRequestQueue.state = x5.idle, this.processSessionRequestQueue();\n      }, (0, import_time5.toMiliseconds)(this.requestQueueDelay));\n    }, this.cleanupPendingSentRequestsForTopic = ({ topic: e2, error: t }) => {\n      const s3 = this.client.core.history.pending;\n      s3.length > 0 && s3.filter((i4) => i4.topic === e2 && i4.request.method === \"wc_sessionRequest\").forEach((i4) => {\n        const r4 = i4.request.id, n5 = Lt(\"session_request\", r4);\n        if (this.events.listenerCount(n5) === 0)\n          throw new Error(`emitting ${n5} without any listeners`);\n        this.events.emit(Lt(\"session_request\", i4.request.id), { error: t });\n      });\n    }, this.processSessionRequestQueue = () => {\n      if (this.sessionRequestQueue.state === x5.active) {\n        this.client.logger.info(\"session request queue is already active.\");\n        return;\n      }\n      const e2 = this.sessionRequestQueue.queue[0];\n      if (!e2) {\n        this.client.logger.info(\"session request queue is empty.\");\n        return;\n      }\n      try {\n        this.sessionRequestQueue.state = x5.active, this.emitSessionRequest(e2);\n      } catch (t) {\n        this.client.logger.error(t);\n      }\n    }, this.emitSessionRequest = (e2) => {\n      this.client.events.emit(\"session_request\", e2);\n    }, this.onPairingCreated = (e2) => {\n      if (e2.methods && this.expectedPairingMethodMap.set(e2.topic, e2.methods), e2.active)\n        return;\n      const t = this.client.proposal.getAll().find((s3) => s3.pairingTopic === e2.topic);\n      t && this.onSessionProposeRequest({ topic: e2.topic, payload: formatJsonRpcRequest(\"wc_sessionPropose\", { requiredNamespaces: t.requiredNamespaces, optionalNamespaces: t.optionalNamespaces, relays: t.relays, proposer: t.proposer, sessionProperties: t.sessionProperties }, t.id) });\n    }, this.isValidConnect = async (e2) => {\n      if (!to(e2)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `connect() params: ${JSON.stringify(e2)}`);\n        throw new Error(a4);\n      }\n      const { pairingTopic: t, requiredNamespaces: s3, optionalNamespaces: i4, sessionProperties: r4, relays: n5 } = e2;\n      if (I(t) || await this.isValidPairingTopic(t), !eo(n5, true)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `connect() relays: ${n5}`);\n        throw new Error(a4);\n      }\n      !I(s3) && Z(s3) !== 0 && this.validateNamespaces(s3, \"requiredNamespaces\"), !I(i4) && Z(i4) !== 0 && this.validateNamespaces(i4, \"optionalNamespaces\"), I(r4) || this.validateSessionProps(r4, \"sessionProperties\");\n    }, this.validateNamespaces = (e2, t) => {\n      const s3 = Xr(e2, \"connect()\", t);\n      if (s3)\n        throw new Error(s3.message);\n    }, this.isValidApprove = async (e2) => {\n      if (!to(e2))\n        throw new Error(S(\"MISSING_OR_INVALID\", `approve() params: ${e2}`).message);\n      const { id: t, namespaces: s3, relayProtocol: i4, sessionProperties: r4 } = e2;\n      this.checkRecentlyDeleted(t), await this.isValidProposalId(t);\n      const n5 = this.client.proposal.get(t), a4 = Wn(s3, \"approve()\");\n      if (a4)\n        throw new Error(a4.message);\n      const c5 = zn(n5.requiredNamespaces, s3, \"approve()\");\n      if (c5)\n        throw new Error(c5.message);\n      if (!b(i4, true)) {\n        const { message: h5 } = S(\"MISSING_OR_INVALID\", `approve() relayProtocol: ${i4}`);\n        throw new Error(h5);\n      }\n      I(r4) || this.validateSessionProps(r4, \"sessionProperties\");\n    }, this.isValidReject = async (e2) => {\n      if (!to(e2)) {\n        const { message: i4 } = S(\"MISSING_OR_INVALID\", `reject() params: ${e2}`);\n        throw new Error(i4);\n      }\n      const { id: t, reason: s3 } = e2;\n      if (this.checkRecentlyDeleted(t), await this.isValidProposalId(t), !ro(s3)) {\n        const { message: i4 } = S(\"MISSING_OR_INVALID\", `reject() reason: ${JSON.stringify(s3)}`);\n        throw new Error(i4);\n      }\n    }, this.isValidSessionSettleRequest = (e2) => {\n      if (!to(e2)) {\n        const { message: c5 } = S(\"MISSING_OR_INVALID\", `onSessionSettleRequest() params: ${e2}`);\n        throw new Error(c5);\n      }\n      const { relay: t, controller: s3, namespaces: i4, expiry: r4 } = e2;\n      if (!Jn(t)) {\n        const { message: c5 } = S(\"MISSING_OR_INVALID\", \"onSessionSettleRequest() relay protocol should be a string\");\n        throw new Error(c5);\n      }\n      const n5 = Zr(s3, \"onSessionSettleRequest()\");\n      if (n5)\n        throw new Error(n5.message);\n      const a4 = Wn(i4, \"onSessionSettleRequest()\");\n      if (a4)\n        throw new Error(a4.message);\n      if (Kt(r4)) {\n        const { message: c5 } = S(\"EXPIRED\", \"onSessionSettleRequest()\");\n        throw new Error(c5);\n      }\n    }, this.isValidUpdate = async (e2) => {\n      if (!to(e2)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `update() params: ${e2}`);\n        throw new Error(a4);\n      }\n      const { topic: t, namespaces: s3 } = e2;\n      this.checkRecentlyDeleted(t), await this.isValidSessionTopic(t);\n      const i4 = this.client.session.get(t), r4 = Wn(s3, \"update()\");\n      if (r4)\n        throw new Error(r4.message);\n      const n5 = zn(i4.requiredNamespaces, s3, \"update()\");\n      if (n5)\n        throw new Error(n5.message);\n    }, this.isValidExtend = async (e2) => {\n      if (!to(e2)) {\n        const { message: s3 } = S(\"MISSING_OR_INVALID\", `extend() params: ${e2}`);\n        throw new Error(s3);\n      }\n      const { topic: t } = e2;\n      this.checkRecentlyDeleted(t), await this.isValidSessionTopic(t);\n    }, this.isValidRequest = async (e2) => {\n      if (!to(e2)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `request() params: ${e2}`);\n        throw new Error(a4);\n      }\n      const { topic: t, request: s3, chainId: i4, expiry: r4 } = e2;\n      this.checkRecentlyDeleted(t), await this.isValidSessionTopic(t);\n      const { namespaces: n5 } = this.client.session.get(t);\n      if (!co(n5, i4)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `request() chainId: ${i4}`);\n        throw new Error(a4);\n      }\n      if (!oo(s3)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `request() ${JSON.stringify(s3)}`);\n        throw new Error(a4);\n      }\n      if (!ao(n5, i4, s3.method)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `request() method: ${s3.method}`);\n        throw new Error(a4);\n      }\n      if (r4 && !po(r4, me3)) {\n        const { message: a4 } = S(\"MISSING_OR_INVALID\", `request() expiry: ${r4}. Expiry must be a number (in seconds) between ${me3.min} and ${me3.max}`);\n        throw new Error(a4);\n      }\n    }, this.isValidRespond = async (e2) => {\n      var t;\n      if (!to(e2)) {\n        const { message: r4 } = S(\"MISSING_OR_INVALID\", `respond() params: ${e2}`);\n        throw new Error(r4);\n      }\n      const { topic: s3, response: i4 } = e2;\n      try {\n        await this.isValidSessionTopic(s3);\n      } catch (r4) {\n        throw (t = e2 == null ? void 0 : e2.response) != null && t.id && this.cleanupAfterResponse(e2), r4;\n      }\n      if (!so(i4)) {\n        const { message: r4 } = S(\"MISSING_OR_INVALID\", `respond() response: ${JSON.stringify(i4)}`);\n        throw new Error(r4);\n      }\n    }, this.isValidPing = async (e2) => {\n      if (!to(e2)) {\n        const { message: s3 } = S(\"MISSING_OR_INVALID\", `ping() params: ${e2}`);\n        throw new Error(s3);\n      }\n      const { topic: t } = e2;\n      await this.isValidSessionOrPairingTopic(t);\n    }, this.isValidEmit = async (e2) => {\n      if (!to(e2)) {\n        const { message: n5 } = S(\"MISSING_OR_INVALID\", `emit() params: ${e2}`);\n        throw new Error(n5);\n      }\n      const { topic: t, event: s3, chainId: i4 } = e2;\n      await this.isValidSessionTopic(t);\n      const { namespaces: r4 } = this.client.session.get(t);\n      if (!co(r4, i4)) {\n        const { message: n5 } = S(\"MISSING_OR_INVALID\", `emit() chainId: ${i4}`);\n        throw new Error(n5);\n      }\n      if (!io(s3)) {\n        const { message: n5 } = S(\"MISSING_OR_INVALID\", `emit() event: ${JSON.stringify(s3)}`);\n        throw new Error(n5);\n      }\n      if (!uo(r4, i4, s3.name)) {\n        const { message: n5 } = S(\"MISSING_OR_INVALID\", `emit() event: ${JSON.stringify(s3)}`);\n        throw new Error(n5);\n      }\n    }, this.isValidDisconnect = async (e2) => {\n      if (!to(e2)) {\n        const { message: s3 } = S(\"MISSING_OR_INVALID\", `disconnect() params: ${e2}`);\n        throw new Error(s3);\n      }\n      const { topic: t } = e2;\n      await this.isValidSessionOrPairingTopic(t);\n    }, this.isValidAuthenticate = (e2) => {\n      const { chains: t, uri: s3, domain: i4, nonce: r4 } = e2;\n      if (!Array.isArray(t) || t.length === 0)\n        throw new Error(\"chains is required and must be a non-empty array\");\n      if (!b(s3, false))\n        throw new Error(\"uri is required parameter\");\n      if (!b(i4, false))\n        throw new Error(\"domain is required parameter\");\n      if (!b(r4, false))\n        throw new Error(\"nonce is required parameter\");\n      if ([...new Set(t.map((a4) => re(a4).namespace))].length > 1)\n        throw new Error(\"Multi-namespace requests are not supported. Please request single namespace only.\");\n      const { namespace: n5 } = re(t[0]);\n      if (n5 !== \"eip155\")\n        throw new Error(\"Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.\");\n    }, this.getVerifyContext = async (e2) => {\n      const { attestationId: t, hash: s3, encryptedId: i4, metadata: r4, transportType: n5 } = e2, a4 = { verified: { verifyUrl: r4.verifyUrl || J, validation: \"UNKNOWN\", origin: r4.url || \"\" } };\n      try {\n        if (n5 === M3.link_mode) {\n          const h5 = this.getAppLinkIfEnabled(r4, n5);\n          return a4.verified.validation = h5 && new URL(h5).origin === new URL(r4.url).origin ? \"VALID\" : \"INVALID\", a4;\n        }\n        const c5 = await this.client.core.verify.resolve({ attestationId: t, hash: s3, encryptedId: i4, verifyUrl: r4.verifyUrl });\n        c5 && (a4.verified.origin = c5.origin, a4.verified.isScam = c5.isScam, a4.verified.validation = c5.origin === new URL(r4.url).origin ? \"VALID\" : \"INVALID\");\n      } catch (c5) {\n        this.client.logger.warn(c5);\n      }\n      return this.client.logger.debug(`Verify context: ${JSON.stringify(a4)}`), a4;\n    }, this.validateSessionProps = (e2, t) => {\n      Object.values(e2).forEach((s3) => {\n        if (!b(s3, false)) {\n          const { message: i4 } = S(\"MISSING_OR_INVALID\", `${t} must be in Record<string, string> format. Received: ${JSON.stringify(s3)}`);\n          throw new Error(i4);\n        }\n      });\n    }, this.getPendingAuthRequest = (e2) => {\n      const t = this.client.auth.requests.get(e2);\n      return typeof t == \"object\" ? t : void 0;\n    }, this.addToRecentlyDeleted = (e2, t) => {\n      if (this.recentlyDeletedMap.set(e2, t), this.recentlyDeletedMap.size >= this.recentlyDeletedLimit) {\n        let s3 = 0;\n        const i4 = this.recentlyDeletedLimit / 2;\n        for (const r4 of this.recentlyDeletedMap.keys()) {\n          if (s3++ >= i4)\n            break;\n          this.recentlyDeletedMap.delete(r4);\n        }\n      }\n    }, this.checkRecentlyDeleted = (e2) => {\n      const t = this.recentlyDeletedMap.get(e2);\n      if (t) {\n        const { message: s3 } = S(\"MISSING_OR_INVALID\", `Record was recently deleted - ${t}: ${e2}`);\n        throw new Error(s3);\n      }\n    }, this.isLinkModeEnabled = (e2, t) => {\n      var s3, i4, r4, n5, a4, c5, h5, p3, d3;\n      return !e2 || t !== M3.link_mode ? false : ((i4 = (s3 = this.client.metadata) == null ? void 0 : s3.redirect) == null ? void 0 : i4.linkMode) === true && ((n5 = (r4 = this.client.metadata) == null ? void 0 : r4.redirect) == null ? void 0 : n5.universal) !== void 0 && ((c5 = (a4 = this.client.metadata) == null ? void 0 : a4.redirect) == null ? void 0 : c5.universal) !== \"\" && ((h5 = e2 == null ? void 0 : e2.redirect) == null ? void 0 : h5.universal) !== void 0 && ((p3 = e2 == null ? void 0 : e2.redirect) == null ? void 0 : p3.universal) !== \"\" && ((d3 = e2 == null ? void 0 : e2.redirect) == null ? void 0 : d3.linkMode) === true && this.client.core.linkModeSupportedApps.includes(e2.redirect.universal) && typeof (global == null ? void 0 : global.Linking) < \"u\";\n    }, this.getAppLinkIfEnabled = (e2, t) => {\n      var s3;\n      return this.isLinkModeEnabled(e2, t) ? (s3 = e2 == null ? void 0 : e2.redirect) == null ? void 0 : s3.universal : void 0;\n    }, this.handleLinkModeMessage = ({ url: e2 }) => {\n      if (!e2 || !e2.includes(\"wc_ev\") || !e2.includes(\"topic\"))\n        return;\n      const t = Bt(e2, \"topic\") || \"\", s3 = decodeURIComponent(Bt(e2, \"wc_ev\") || \"\"), i4 = this.client.session.keys.includes(t);\n      i4 && this.client.session.update(t, { transportType: M3.link_mode }), this.client.core.dispatchEnvelope({ topic: t, message: s3, sessionExists: i4 });\n    }, this.registerLinkModeListeners = async () => {\n      var e2;\n      if (Wt() || _() && (e2 = this.client.metadata.redirect) != null && e2.linkMode) {\n        const t = global == null ? void 0 : global.Linking;\n        if (typeof t < \"u\") {\n          t.addEventListener(\"url\", this.handleLinkModeMessage, this.client.name);\n          const s3 = await t.getInitialURL();\n          s3 && setTimeout(() => {\n            this.handleLinkModeMessage({ url: s3 });\n          }, 50);\n        }\n      }\n    };\n  }\n  isInitialized() {\n    if (!this.initialized) {\n      const { message: o4 } = S(\"NOT_INITIALIZED\", this.name);\n      throw new Error(o4);\n    }\n  }\n  async confirmOnlineStateOrThrow() {\n    await this.client.core.relayer.confirmOnlineStateOrThrow();\n  }\n  registerRelayerEvents() {\n    this.client.core.relayer.on(v3.message, (o4) => {\n      !this.initialized || this.relayMessageCache.length > 0 ? this.relayMessageCache.push(o4) : this.onRelayMessage(o4);\n    });\n  }\n  async onRelayMessage(o4) {\n    const { topic: e2, message: t, attestation: s3, transportType: i4 } = o4, { publicKey: r4 } = this.client.auth.authKeys.keys.includes(ae3) ? this.client.auth.authKeys.get(ae3) : { responseTopic: void 0, publicKey: void 0 }, n5 = await this.client.core.crypto.decode(e2, t, { receiverPublicKey: r4, encoding: i4 === M3.link_mode ? lr : ge });\n    try {\n      isJsonRpcRequest(n5) ? (this.client.core.history.set(e2, n5), this.onRelayEventRequest({ topic: e2, payload: n5, attestation: s3, transportType: i4, encryptedId: yr(t) })) : isJsonRpcResponse(n5) ? (await this.client.core.history.resolve(n5), await this.onRelayEventResponse({ topic: e2, payload: n5, transportType: i4 }), this.client.core.history.delete(e2, n5.id)) : this.onRelayEventUnknownPayload({ topic: e2, payload: n5, transportType: i4 });\n    } catch (a4) {\n      this.client.logger.error(a4);\n    }\n  }\n  registerExpirerEvents() {\n    this.client.core.expirer.on(S5.expired, async (o4) => {\n      const { topic: e2, id: t } = Vt(o4.target);\n      if (t && this.client.pendingRequest.keys.includes(t))\n        return await this.deletePendingSessionRequest(t, S(\"EXPIRED\"), true);\n      if (t && this.client.auth.requests.keys.includes(t))\n        return await this.deletePendingAuthRequest(t, S(\"EXPIRED\"), true);\n      e2 ? this.client.session.keys.includes(e2) && (await this.deleteSession({ topic: e2, expirerHasDeleted: true }), this.client.events.emit(\"session_expire\", { topic: e2 })) : t && (await this.deleteProposal(t, true), this.client.events.emit(\"proposal_expire\", { id: t }));\n    });\n  }\n  registerPairingEvents() {\n    this.client.core.pairing.events.on(V2.create, (o4) => this.onPairingCreated(o4)), this.client.core.pairing.events.on(V2.delete, (o4) => {\n      this.addToRecentlyDeleted(o4.topic, \"pairing\");\n    });\n  }\n  isValidPairingTopic(o4) {\n    if (!b(o4, false)) {\n      const { message: e2 } = S(\"MISSING_OR_INVALID\", `pairing topic should be a string: ${o4}`);\n      throw new Error(e2);\n    }\n    if (!this.client.core.pairing.pairings.keys.includes(o4)) {\n      const { message: e2 } = S(\"NO_MATCHING_KEY\", `pairing topic doesn't exist: ${o4}`);\n      throw new Error(e2);\n    }\n    if (Kt(this.client.core.pairing.pairings.get(o4).expiry)) {\n      const { message: e2 } = S(\"EXPIRED\", `pairing topic: ${o4}`);\n      throw new Error(e2);\n    }\n  }\n  async isValidSessionTopic(o4) {\n    if (!b(o4, false)) {\n      const { message: e2 } = S(\"MISSING_OR_INVALID\", `session topic should be a string: ${o4}`);\n      throw new Error(e2);\n    }\n    if (this.checkRecentlyDeleted(o4), !this.client.session.keys.includes(o4)) {\n      const { message: e2 } = S(\"NO_MATCHING_KEY\", `session topic doesn't exist: ${o4}`);\n      throw new Error(e2);\n    }\n    if (Kt(this.client.session.get(o4).expiry)) {\n      await this.deleteSession({ topic: o4 });\n      const { message: e2 } = S(\"EXPIRED\", `session topic: ${o4}`);\n      throw new Error(e2);\n    }\n    if (!this.client.core.crypto.keychain.has(o4)) {\n      const { message: e2 } = S(\"MISSING_OR_INVALID\", `session topic does not exist in keychain: ${o4}`);\n      throw await this.deleteSession({ topic: o4 }), new Error(e2);\n    }\n  }\n  async isValidSessionOrPairingTopic(o4) {\n    if (this.checkRecentlyDeleted(o4), this.client.session.keys.includes(o4))\n      await this.isValidSessionTopic(o4);\n    else if (this.client.core.pairing.pairings.keys.includes(o4))\n      this.isValidPairingTopic(o4);\n    else if (b(o4, false)) {\n      const { message: e2 } = S(\"NO_MATCHING_KEY\", `session or pairing topic doesn't exist: ${o4}`);\n      throw new Error(e2);\n    } else {\n      const { message: e2 } = S(\"MISSING_OR_INVALID\", `session or pairing topic should be a string: ${o4}`);\n      throw new Error(e2);\n    }\n  }\n  async isValidProposalId(o4) {\n    if (!no(o4)) {\n      const { message: e2 } = S(\"MISSING_OR_INVALID\", `proposal id should be a number: ${o4}`);\n      throw new Error(e2);\n    }\n    if (!this.client.proposal.keys.includes(o4)) {\n      const { message: e2 } = S(\"NO_MATCHING_KEY\", `proposal id doesn't exist: ${o4}`);\n      throw new Error(e2);\n    }\n    if (Kt(this.client.proposal.get(o4).expiryTimestamp)) {\n      await this.deleteProposal(o4);\n      const { message: e2 } = S(\"EXPIRED\", `proposal id: ${o4}`);\n      throw new Error(e2);\n    }\n  }\n};\nvar Ss2 = class extends ni {\n  constructor(o4, e2) {\n    super(o4, e2, st3, ye3), this.core = o4, this.logger = e2;\n  }\n};\nvar yt2 = class extends ni {\n  constructor(o4, e2) {\n    super(o4, e2, rt2, ye3), this.core = o4, this.logger = e2;\n  }\n};\nvar Is2 = class extends ni {\n  constructor(o4, e2) {\n    super(o4, e2, ot2, ye3, (t) => t.id), this.core = o4, this.logger = e2;\n  }\n};\nvar fs = class extends ni {\n  constructor(o4, e2) {\n    super(o4, e2, pt2, oe2, () => ae3), this.core = o4, this.logger = e2;\n  }\n};\nvar vs2 = class extends ni {\n  constructor(o4, e2) {\n    super(o4, e2, ht2, oe2), this.core = o4, this.logger = e2;\n  }\n};\nvar qs2 = class extends ni {\n  constructor(o4, e2) {\n    super(o4, e2, dt2, oe2, (t) => t.id), this.core = o4, this.logger = e2;\n  }\n};\nvar Ts2 = class {\n  constructor(o4, e2) {\n    this.core = o4, this.logger = e2, this.authKeys = new fs(this.core, this.logger), this.pairingTopics = new vs2(this.core, this.logger), this.requests = new qs2(this.core, this.logger);\n  }\n  async init() {\n    await this.authKeys.init(), await this.pairingTopics.init(), await this.requests.init();\n  }\n};\nvar _e3 = class __e extends S3 {\n  constructor(o4) {\n    super(o4), this.protocol = be3, this.version = Ce3, this.name = we3.name, this.events = new import_events8.EventEmitter(), this.on = (t, s3) => this.events.on(t, s3), this.once = (t, s3) => this.events.once(t, s3), this.off = (t, s3) => this.events.off(t, s3), this.removeListener = (t, s3) => this.events.removeListener(t, s3), this.removeAllListeners = (t) => this.events.removeAllListeners(t), this.connect = async (t) => {\n      try {\n        return await this.engine.connect(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.pair = async (t) => {\n      try {\n        return await this.engine.pair(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.approve = async (t) => {\n      try {\n        return await this.engine.approve(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.reject = async (t) => {\n      try {\n        return await this.engine.reject(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.update = async (t) => {\n      try {\n        return await this.engine.update(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.extend = async (t) => {\n      try {\n        return await this.engine.extend(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.request = async (t) => {\n      try {\n        return await this.engine.request(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.respond = async (t) => {\n      try {\n        return await this.engine.respond(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.ping = async (t) => {\n      try {\n        return await this.engine.ping(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.emit = async (t) => {\n      try {\n        return await this.engine.emit(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.disconnect = async (t) => {\n      try {\n        return await this.engine.disconnect(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.find = (t) => {\n      try {\n        return this.engine.find(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.getPendingSessionRequests = () => {\n      try {\n        return this.engine.getPendingSessionRequests();\n      } catch (t) {\n        throw this.logger.error(t.message), t;\n      }\n    }, this.authenticate = async (t, s3) => {\n      try {\n        return await this.engine.authenticate(t, s3);\n      } catch (i4) {\n        throw this.logger.error(i4.message), i4;\n      }\n    }, this.formatAuthMessage = (t) => {\n      try {\n        return this.engine.formatAuthMessage(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.approveSessionAuthenticate = async (t) => {\n      try {\n        return await this.engine.approveSessionAuthenticate(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.rejectSessionAuthenticate = async (t) => {\n      try {\n        return await this.engine.rejectSessionAuthenticate(t);\n      } catch (s3) {\n        throw this.logger.error(s3.message), s3;\n      }\n    }, this.name = (o4 == null ? void 0 : o4.name) || we3.name, this.metadata = (o4 == null ? void 0 : o4.metadata) || Nt(), this.signConfig = o4 == null ? void 0 : o4.signConfig;\n    const e2 = typeof (o4 == null ? void 0 : o4.logger) < \"u\" && typeof (o4 == null ? void 0 : o4.logger) != \"string\" ? o4.logger : (0, import_pino2.default)(k2({ level: (o4 == null ? void 0 : o4.logger) || we3.logger }));\n    this.core = (o4 == null ? void 0 : o4.core) || new bn2(o4), this.logger = E(e2, this.name), this.session = new yt2(this.core, this.logger), this.proposal = new Ss2(this.core, this.logger), this.pendingRequest = new Is2(this.core, this.logger), this.engine = new Rs2(this), this.auth = new Ts2(this.core, this.logger);\n  }\n  static async init(o4) {\n    const e2 = new __e(o4);\n    return await e2.initialize(), e2;\n  }\n  get context() {\n    return y2(this.logger);\n  }\n  get pairing() {\n    return this.core.pairing.pairings;\n  }\n  async initialize() {\n    this.logger.trace(\"Initialized\");\n    try {\n      await this.core.start(), await this.session.init(), await this.proposal.init(), await this.pendingRequest.init(), await this.auth.init(), await this.engine.init(), this.logger.info(\"SignClient Initialization Success\"), this.engine.processRelayMessageCache();\n    } catch (o4) {\n      throw this.logger.info(\"SignClient Initialization Failure\"), this.logger.error(o4.message), o4;\n    }\n  }\n};\nvar Ps2 = _e3;\n\nexport {\n  require_events,\n  safeJsonParse,\n  safeJsonStringify,\n  re,\n  mt,\n  N,\n  Oe,\n  Dn,\n  U,\n  L,\n  Z,\n  import_pino2 as import_pino,\n  k2 as k,\n  parseConnectionError,\n  formatJsonRpcRequest,\n  formatJsonRpcResult,\n  formatJsonRpcError,\n  isHttpUrl,\n  esm_exports,\n  o2 as o,\n  it3 as it,\n  _e3 as _e,\n  Ps2 as Ps\n};\n/*! Bundled license information:\n\ntslib/tslib.es6.js:\n  (*! *****************************************************************************\n  Copyright (c) Microsoft Corporation.\n  \n  Permission to use, copy, modify, and/or distribute this software for any\n  purpose with or without fee is hereby granted.\n  \n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n  AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n  PERFORMANCE OF THIS SOFTWARE.\n  ***************************************************************************** *)\n\njs-sha3/src/sha3.js:\n  (**\n   * [js-sha3]{@link https://github.com/emn178/js-sha3}\n   *\n   * @version 0.8.0\n   * @author Chen, Yi-Cyuan [emn178@gmail.com]\n   * @copyright Chen, Yi-Cyuan 2015-2018\n   * @license MIT\n   *)\n*/\n//# sourceMappingURL=chunk-EHYTL2NA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-EIBOABXT.js",
    "content": "// node_modules/thirdweb/dist/esm/wallets/types.js\nvar socialAuthOptions = [\n  \"google\",\n  \"apple\",\n  \"facebook\",\n  \"discord\",\n  \"line\",\n  \"x\",\n  \"coinbase\",\n  \"farcaster\",\n  \"telegram\",\n  \"github\",\n  \"twitch\"\n];\nvar authOptions = [\n  ...socialAuthOptions,\n  \"guest\",\n  \"email\",\n  \"phone\",\n  \"passkey\",\n  \"wallet\"\n];\n\nexport {\n  socialAuthOptions,\n  authOptions\n};\n//# sourceMappingURL=chunk-EIBOABXT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-EIVAOYE5.js",
    "content": "import {\n  keccak256\n} from \"./chunk-67BSOYLQ.js\";\nimport {\n  stringToBytes\n} from \"./chunk-B7XHB4Z2.js\";\nimport {\n  LruMap\n} from \"./chunk-SNQ54XRM.js\";\n\n// node_modules/thirdweb/dist/esm/utils/address.js\nvar ADRESS_REGEX = /^0x[a-fA-F0-9]{40}$/;\nvar IS_ADDRESS_CACHE = new LruMap(4096);\nfunction isAddress(address) {\n  if (IS_ADDRESS_CACHE.has(address)) {\n    return IS_ADDRESS_CACHE.get(address);\n  }\n  const result = (() => {\n    if (!ADRESS_REGEX.test(address)) {\n      return false;\n    }\n    if (address.toLowerCase() === address) {\n      return true;\n    }\n    return checksumAddress(address) === address;\n  })();\n  IS_ADDRESS_CACHE.set(address, result);\n  return result;\n}\nfunction checksumAddress(address) {\n  const hexAddress = address.substring(2).toLowerCase();\n  const hash = keccak256(stringToBytes(hexAddress), \"bytes\");\n  const address_ = hexAddress.split(\"\");\n  for (let i = 0; i < 40; i += 2) {\n    if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n      address_[i] = address_[i].toUpperCase();\n    }\n    if ((hash[i >> 1] & 15) >= 8 && address[i + 1]) {\n      address_[i + 1] = address_[i + 1].toUpperCase();\n    }\n  }\n  return `0x${address_.join(\"\")}`;\n}\nfunction getAddress(address) {\n  if (!isAddress(address)) {\n    throw new Error(`Invalid address: ${address}`);\n  }\n  return checksumAddress(address);\n}\nfunction shortenAddress(address, length = 4) {\n  const _address = getAddress(address);\n  return shortenHex(_address, length);\n}\nfunction shortenHex(hex, length = 4) {\n  return `${hex.slice(0, length + 2)}...${hex.slice(-length)}`;\n}\n\nexport {\n  isAddress,\n  checksumAddress,\n  getAddress,\n  shortenAddress,\n  shortenHex\n};\n//# sourceMappingURL=chunk-EIVAOYE5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-F2BEZVSV.js",
    "content": "import {\n  allowance\n} from \"./chunk-NKFQ2LZT.js\";\nimport {\n  DEBUG,\n  DUMMY_SIGNATURE,\n  ENTRYPOINT_ADDRESS_v0_6,\n  ENTRYPOINT_ADDRESS_v0_7,\n  MANAGED_ACCOUNT_GAS_BUFFER,\n  getDefaultAccountFactory,\n  getDefaultBundlerUrl,\n  getEntryPointVersion\n} from \"./chunk-FNI7M3UI.js\";\nimport {\n  isContractDeployed\n} from \"./chunk-Q3TN3POE.js\";\nimport {\n  parseTypedData\n} from \"./chunk-SWMZXE3E.js\";\nimport {\n  populateEip712Transaction,\n  signEip712Transaction\n} from \"./chunk-5EFACFVF.js\";\nimport {\n  parseEventLogs,\n  prepareEvent\n} from \"./chunk-DYKFWRMQ.js\";\nimport {\n  approve\n} from \"./chunk-TTOANXGP.js\";\nimport {\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport {\n  getDefaultGasOverrides,\n  toSerializableTransaction\n} from \"./chunk-JZC47WAY.js\";\nimport {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport {\n  isZkSyncChain\n} from \"./chunk-7ZCK2FX5.js\";\nimport {\n  encode\n} from \"./chunk-7QDK5KLB.js\";\nimport {\n  concatHex\n} from \"./chunk-4BCIASJM.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport {\n  hashTypedData\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  hexToBytes\n} from \"./chunk-B7XHB4Z2.js\";\nimport {\n  concat,\n  decodeErrorResult,\n  maxUint96,\n  pad,\n  toHex as toHex2\n} from \"./chunk-GINVHONX.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  getCachedChain\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  getClientFetch,\n  isThirdwebUrl\n} from \"./chunk-3GSJ2FQJ.js\";\nimport {\n  hexToBigInt,\n  isHex,\n  stringToHex,\n  toHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc4337/__generated__/IEntryPoint/events/UserOperationRevertReason.js\nfunction userOperationRevertReasonEvent(filters = {}) {\n  return prepareEvent({\n    signature: \"event UserOperationRevertReason(bytes32 indexed userOpHash, address indexed sender, uint256 nonce, bytes revertReason)\",\n    filters\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.js\nfunction postOpRevertReasonEvent(filters = {}) {\n  return prepareEvent({\n    signature: \"event PostOpRevertReason(bytes32 indexed userOpHash, address indexed sender, uint256 nonce, bytes revertReason)\",\n    filters\n  });\n}\n\n// node_modules/thirdweb/dist/esm/wallets/smart/types.js\nfunction formatUserOperationReceipt(userOpReceiptRaw) {\n  const { receipt: transactionReceipt } = userOpReceiptRaw;\n  const receipt = {\n    ...transactionReceipt,\n    transactionHash: transactionReceipt.transactionHash,\n    blockNumber: transactionReceipt.blockNumber ? BigInt(transactionReceipt.blockNumber) : null,\n    contractAddress: transactionReceipt.contractAddress ? transactionReceipt.contractAddress : null,\n    cumulativeGasUsed: transactionReceipt.cumulativeGasUsed ? BigInt(transactionReceipt.cumulativeGasUsed) : null,\n    effectiveGasPrice: transactionReceipt.effectiveGasPrice ? BigInt(transactionReceipt.effectiveGasPrice) : null,\n    gasUsed: transactionReceipt.gasUsed ? BigInt(transactionReceipt.gasUsed) : null,\n    logs: transactionReceipt.logs,\n    to: transactionReceipt.to ? transactionReceipt.to : null,\n    transactionIndex: transactionReceipt.transactionIndex,\n    status: transactionReceipt.status,\n    type: transactionReceipt.type\n  };\n  if (transactionReceipt.blobGasPrice)\n    receipt.blobGasPrice = BigInt(transactionReceipt.blobGasPrice);\n  if (transactionReceipt.blobGasUsed)\n    receipt.blobGasUsed = BigInt(transactionReceipt.blobGasUsed);\n  const userOpReceipt = {\n    ...userOpReceiptRaw,\n    receipt,\n    userOpHash: userOpReceiptRaw.userOpHash,\n    actualGasCost: BigInt(userOpReceiptRaw.actualGasCost),\n    actualGasUsed: BigInt(userOpReceiptRaw.actualGasUsed),\n    nonce: BigInt(userOpReceiptRaw.nonce)\n  };\n  return userOpReceipt;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/smart/lib/utils.js\nvar generateRandomUint192 = () => {\n  const rand1 = BigInt(Math.floor(Math.random() * 4294967296));\n  const rand2 = BigInt(Math.floor(Math.random() * 4294967296));\n  const rand3 = BigInt(Math.floor(Math.random() * 4294967296));\n  const rand4 = BigInt(Math.floor(Math.random() * 4294967296));\n  const rand5 = BigInt(Math.floor(Math.random() * 4294967296));\n  const rand6 = BigInt(Math.floor(Math.random() * 4294967296));\n  return rand1 << BigInt(160) | rand2 << BigInt(128) | rand3 << BigInt(96) | rand4 << BigInt(64) | rand5 << BigInt(32) | rand6;\n};\nfunction hexlifyUserOp(userOp) {\n  return Object.fromEntries(Object.entries(userOp).map(([key, val]) => [\n    key,\n    // turn any value that's not hex into hex\n    val === void 0 || val === null || isHex(val) ? val : toHex(val)\n  ]));\n}\n\n// node_modules/thirdweb/dist/esm/wallets/smart/lib/bundler.js\nasync function bundleUserOp(args) {\n  return sendBundlerRequest({\n    ...args,\n    operation: \"eth_sendUserOperation\",\n    params: [\n      hexlifyUserOp(args.userOp),\n      args.options.entrypointAddress ?? ENTRYPOINT_ADDRESS_v0_6\n    ]\n  });\n}\nasync function estimateUserOpGas(args) {\n  const res = await sendBundlerRequest({\n    ...args,\n    operation: \"eth_estimateUserOperationGas\",\n    params: [\n      hexlifyUserOp(args.userOp),\n      args.options.entrypointAddress ?? ENTRYPOINT_ADDRESS_v0_6\n    ]\n  });\n  return {\n    preVerificationGas: hexToBigInt(res.preVerificationGas),\n    verificationGas: res.verificationGas !== void 0 ? hexToBigInt(res.verificationGas) : void 0,\n    verificationGasLimit: hexToBigInt(res.verificationGasLimit),\n    callGasLimit: hexToBigInt(res.callGasLimit) + MANAGED_ACCOUNT_GAS_BUFFER,\n    paymasterVerificationGasLimit: res.paymasterVerificationGasLimit !== void 0 ? hexToBigInt(res.paymasterVerificationGasLimit) : void 0,\n    paymasterPostOpGasLimit: res.paymasterPostOpGasLimit !== void 0 ? hexToBigInt(res.paymasterPostOpGasLimit) : void 0\n  };\n}\nasync function getUserOpGasFees(args) {\n  const res = await sendBundlerRequest({\n    ...args,\n    operation: \"thirdweb_getUserOperationGasPrice\",\n    params: []\n  });\n  return {\n    maxPriorityFeePerGas: hexToBigInt(res.maxPriorityFeePerGas),\n    maxFeePerGas: hexToBigInt(res.maxFeePerGas)\n  };\n}\nasync function getUserOpReceipt(args) {\n  var _a, _b;\n  const res = await getUserOpReceiptRaw(args);\n  if (!res) {\n    return void 0;\n  }\n  if (res.success === false) {\n    const logs = parseEventLogs({\n      events: [userOperationRevertReasonEvent(), postOpRevertReasonEvent()],\n      logs: res.logs\n    });\n    const revertReason = (_b = (_a = logs[0]) == null ? void 0 : _a.args) == null ? void 0 : _b.revertReason;\n    if (!revertReason) {\n      throw new Error(`UserOp failed at txHash: ${res.receipt.transactionHash}`);\n    }\n    const revertMsg = decodeErrorResult({\n      data: revertReason\n    });\n    throw new Error(`UserOp failed with reason: '${revertMsg.args.join(\",\")}' at txHash: ${res.receipt.transactionHash}`);\n  }\n  return res.receipt;\n}\nasync function getUserOpReceiptRaw(args) {\n  const res = await sendBundlerRequest({\n    options: args,\n    operation: \"eth_getUserOperationReceipt\",\n    params: [args.userOpHash]\n  });\n  if (!res) {\n    return void 0;\n  }\n  return formatUserOperationReceipt(res);\n}\nasync function getZkPaymasterData(args) {\n  const res = await sendBundlerRequest({\n    options: args.options,\n    operation: \"zk_paymasterData\",\n    params: [args.transaction]\n  });\n  return {\n    paymaster: res.paymaster,\n    paymasterInput: res.paymasterInput\n  };\n}\nasync function broadcastZkTransaction(args) {\n  const res = await sendBundlerRequest({\n    options: args.options,\n    operation: \"zk_broadcastTransaction\",\n    params: [\n      {\n        ...args.transaction,\n        signedTransaction: args.signedTransaction\n      }\n    ]\n  });\n  return {\n    transactionHash: res.transactionHash\n  };\n}\nasync function sendBundlerRequest(args) {\n  const { options, operation, params } = args;\n  if (DEBUG) {\n    console.debug(`>>> sending ${operation} with payload:`, params);\n  }\n  const bundlerUrl = options.bundlerUrl ?? getDefaultBundlerUrl(options.chain);\n  const fetchWithHeaders = getClientFetch(options.client);\n  const response = await fetchWithHeaders(bundlerUrl, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\"\n    },\n    body: stringify({\n      jsonrpc: \"2.0\",\n      id: 1,\n      method: operation,\n      params\n    })\n  });\n  const res = await response.json();\n  if (!response.ok || res.error) {\n    let error = res.error || response.statusText;\n    if (typeof error === \"object\") {\n      error = stringify(error);\n    }\n    const code = res.code || \"UNKNOWN\";\n    throw new Error(`${operation} error: ${error}\nStatus: ${response.status}\nCode: ${code}`);\n  }\n  if (DEBUG) {\n    console.debug(`<<< ${operation} result:`, res);\n  }\n  return res.result;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/smart/lib/calls.js\nasync function predictAddress(args) {\n  const { factoryContract, predictAddressOverride: predictAddress2, adminAddress, accountSalt, accountAddress } = args;\n  if (predictAddress2) {\n    return predictAddress2(factoryContract);\n  }\n  if (accountAddress) {\n    return accountAddress;\n  }\n  if (!adminAddress) {\n    throw new Error(\"Account address is required to predict the smart wallet address.\");\n  }\n  const saltHex = accountSalt && isHex(accountSalt) ? accountSalt : stringToHex(accountSalt ?? \"\");\n  return readContract({\n    contract: factoryContract,\n    method: \"function getAddress(address, bytes) returns (address)\",\n    params: [adminAddress, saltHex]\n  });\n}\nfunction prepareCreateAccount(args) {\n  const { adminAddress, factoryContract, createAccountOverride: createAccount, accountSalt } = args;\n  if (createAccount) {\n    return createAccount(factoryContract);\n  }\n  const saltHex = accountSalt && isHex(accountSalt) ? accountSalt : stringToHex(accountSalt ?? \"\");\n  return prepareContractCall({\n    contract: factoryContract,\n    method: \"function createAccount(address, bytes) returns (address)\",\n    params: [adminAddress, saltHex]\n  });\n}\nfunction prepareExecute(args) {\n  const { accountContract, transaction, executeOverride: execute } = args;\n  if (execute) {\n    return execute(accountContract, transaction);\n  }\n  return prepareContractCall({\n    contract: accountContract,\n    method: \"function execute(address, uint256, bytes)\",\n    params: [\n      transaction.to || \"\",\n      transaction.value || 0n,\n      transaction.data || \"0x\"\n    ],\n    // if gas is specified for the inner tx, use that and add 21k for the execute call on the account contract\n    // this avoids another estimateGas call when bundling the userOp\n    // and also allows for passing custom gas limits for the inner tx\n    gas: transaction.gas ? transaction.gas + 21000n : void 0\n  });\n}\nfunction prepareBatchExecute(args) {\n  const { accountContract, transactions, executeBatchOverride: executeBatch } = args;\n  if (executeBatch) {\n    return executeBatch(accountContract, transactions);\n  }\n  return prepareContractCall({\n    contract: accountContract,\n    method: \"function executeBatch(address[], uint256[], bytes[])\",\n    params: [\n      transactions.map((tx) => tx.to || \"\"),\n      transactions.map((tx) => tx.value || 0n),\n      transactions.map((tx) => tx.data || \"0x\")\n    ]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc4337/__generated__/IEntryPoint/read/getNonce.js\nvar FN_SELECTOR = \"0x35567e1a\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"sender\"\n  },\n  {\n    type: \"uint192\",\n    name: \"key\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint256\",\n    name: \"nonce\"\n  }\n];\nasync function getNonce(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.sender, options.key]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc4337/__generated__/IEntryPoint/read/getUserOpHash.js\nvar FN_SELECTOR2 = \"0xa6193531\";\nvar FN_INPUTS2 = [\n  {\n    type: \"tuple\",\n    name: \"userOp\",\n    components: [\n      {\n        type: \"address\",\n        name: \"sender\"\n      },\n      {\n        type: \"uint256\",\n        name: \"nonce\"\n      },\n      {\n        type: \"bytes\",\n        name: \"initCode\"\n      },\n      {\n        type: \"bytes\",\n        name: \"callData\"\n      },\n      {\n        type: \"uint256\",\n        name: \"callGasLimit\"\n      },\n      {\n        type: \"uint256\",\n        name: \"verificationGasLimit\"\n      },\n      {\n        type: \"uint256\",\n        name: \"preVerificationGas\"\n      },\n      {\n        type: \"uint256\",\n        name: \"maxFeePerGas\"\n      },\n      {\n        type: \"uint256\",\n        name: \"maxPriorityFeePerGas\"\n      },\n      {\n        type: \"bytes\",\n        name: \"paymasterAndData\"\n      },\n      {\n        type: \"bytes\",\n        name: \"signature\"\n      }\n    ]\n  }\n];\nvar FN_OUTPUTS2 = [\n  {\n    type: \"bytes32\"\n  }\n];\nasync function getUserOpHash(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2],\n    params: [options.userOp]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc4337/__generated__/IEntryPoint_v07/read/getUserOpHash.js\nvar FN_SELECTOR3 = \"0x22cdde4c\";\nvar FN_INPUTS3 = [\n  {\n    type: \"tuple\",\n    name: \"userOp\",\n    components: [\n      {\n        type: \"address\",\n        name: \"sender\"\n      },\n      {\n        type: \"uint256\",\n        name: \"nonce\"\n      },\n      {\n        type: \"bytes\",\n        name: \"initCode\"\n      },\n      {\n        type: \"bytes\",\n        name: \"callData\"\n      },\n      {\n        type: \"bytes32\",\n        name: \"accountGasLimits\"\n      },\n      {\n        type: \"uint256\",\n        name: \"preVerificationGas\"\n      },\n      {\n        type: \"bytes32\",\n        name: \"gasFees\"\n      },\n      {\n        type: \"bytes\",\n        name: \"paymasterAndData\"\n      },\n      {\n        type: \"bytes\",\n        name: \"signature\"\n      }\n    ]\n  }\n];\nvar FN_OUTPUTS3 = [\n  {\n    type: \"bytes32\"\n  }\n];\nasync function getUserOpHash2(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR3, FN_INPUTS3, FN_OUTPUTS3],\n    params: [options.userOp]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/wallets/smart/lib/packUserOp.js\nfunction getInitCode(unpackedUserOperation) {\n  return unpackedUserOperation.factory ? concat([\n    unpackedUserOperation.factory,\n    unpackedUserOperation.factoryData || \"0x\"\n  ]) : \"0x\";\n}\nfunction getAccountGasLimits(unpackedUserOperation) {\n  return concat([\n    pad(toHex2(unpackedUserOperation.verificationGasLimit), {\n      size: 16\n    }),\n    pad(toHex2(unpackedUserOperation.callGasLimit), { size: 16 })\n  ]);\n}\nfunction getGasLimits(unpackedUserOperation) {\n  return concat([\n    pad(toHex2(unpackedUserOperation.maxPriorityFeePerGas), {\n      size: 16\n    }),\n    pad(toHex2(unpackedUserOperation.maxFeePerGas), { size: 16 })\n  ]);\n}\nfunction getPaymasterAndData(unpackedUserOperation) {\n  return unpackedUserOperation.paymaster ? concat([\n    unpackedUserOperation.paymaster,\n    pad(toHex2(unpackedUserOperation.paymasterVerificationGasLimit || BigInt(0)), {\n      size: 16\n    }),\n    pad(toHex2(unpackedUserOperation.paymasterPostOpGasLimit || BigInt(0)), {\n      size: 16\n    }),\n    unpackedUserOperation.paymasterData || \"0x\"\n  ]) : \"0x\";\n}\nvar getPackedUserOperation = (userOperation) => {\n  return {\n    sender: userOperation.sender,\n    nonce: userOperation.nonce,\n    initCode: getInitCode(userOperation),\n    callData: userOperation.callData,\n    accountGasLimits: getAccountGasLimits(userOperation),\n    preVerificationGas: userOperation.preVerificationGas,\n    gasFees: getGasLimits(userOperation),\n    paymasterAndData: getPaymasterAndData(userOperation),\n    signature: userOperation.signature\n  };\n};\n\n// node_modules/thirdweb/dist/esm/wallets/smart/lib/paymaster.js\nasync function getPaymasterAndData2(args) {\n  var _a;\n  const { userOp, paymasterOverride, client, chain, entrypointAddress } = args;\n  if (paymasterOverride) {\n    return paymasterOverride(userOp);\n  }\n  const headers = {\n    \"Content-Type\": \"application/json\"\n  };\n  const entrypoint = entrypointAddress ?? ENTRYPOINT_ADDRESS_v0_6;\n  const paymasterUrl = getDefaultBundlerUrl(chain);\n  const fetchWithHeaders = getClientFetch(client);\n  const response = await fetchWithHeaders(paymasterUrl, {\n    method: \"POST\",\n    headers,\n    body: stringify({\n      jsonrpc: \"2.0\",\n      id: 1,\n      method: \"pm_sponsorUserOperation\",\n      params: [hexlifyUserOp(userOp), entrypoint]\n    })\n  });\n  const res = await response.json();\n  if (!response.ok) {\n    const error2 = res.error || response.statusText;\n    const code = res.code || \"UNKNOWN\";\n    throw new Error(`Paymaster error: ${error2}\nStatus: ${response.status}\nCode: ${code}`);\n  }\n  if (DEBUG) {\n    console.debug(\"Paymaster result:\", res);\n  }\n  if (res.result) {\n    if (typeof res.result === \"string\") {\n      return {\n        paymasterAndData: res.result\n      };\n    }\n    return {\n      paymasterAndData: res.result.paymasterAndData,\n      verificationGasLimit: res.result.verificationGasLimit ? hexToBigInt(res.result.verificationGasLimit) : void 0,\n      preVerificationGas: res.result.preVerificationGas ? hexToBigInt(res.result.preVerificationGas) : void 0,\n      callGasLimit: res.result.callGasLimit ? hexToBigInt(res.result.callGasLimit) : void 0,\n      paymaster: res.result.paymaster,\n      paymasterData: res.result.paymasterData,\n      paymasterVerificationGasLimit: res.result.paymasterVerificationGasLimit ? hexToBigInt(res.result.paymasterVerificationGasLimit) : void 0,\n      paymasterPostOpGasLimit: res.result.paymasterPostOpGasLimit ? hexToBigInt(res.result.paymasterPostOpGasLimit) : void 0\n    };\n  }\n  const error = ((_a = res.error) == null ? void 0 : _a.message) || res.error || response.statusText || \"unknown error\";\n  throw new Error(`Paymaster error from ${paymasterUrl}: ${error}`);\n}\n\n// node_modules/thirdweb/dist/esm/wallets/smart/lib/userop.js\nvar isDeployingSet = /* @__PURE__ */ new Set();\nvar getKey = (accountContract) => {\n  return `${accountContract.chain.id}:${accountContract.address}`;\n};\nvar markAccountDeploying = (accountContract) => {\n  isDeployingSet.add(getKey(accountContract));\n};\nvar clearAccountDeploying = (accountContract) => {\n  isDeployingSet.delete(getKey(accountContract));\n};\nvar isAccountDeploying = (accountContract) => {\n  return isDeployingSet.has(getKey(accountContract));\n};\nasync function waitForUserOpReceipt(args) {\n  const timeout = args.timeoutMs || 12e4;\n  const interval = args.intervalMs || 1e3;\n  const endtime = Date.now() + timeout;\n  while (Date.now() < endtime) {\n    const userOpReceipt = await getUserOpReceipt(args);\n    if (userOpReceipt) {\n      return userOpReceipt;\n    }\n    await new Promise((resolve) => setTimeout(resolve, interval));\n  }\n  throw new Error(\"Timeout waiting for userOp to be mined\");\n}\nasync function createUnsignedUserOp(args) {\n  var _a;\n  const { transaction: executeTx, accountContract, factoryContract, adminAddress, overrides, sponsorGas, waitForDeployment = true } = args;\n  const chain = executeTx.chain;\n  const client = executeTx.client;\n  const bundlerOptions = {\n    client,\n    chain,\n    bundlerUrl: overrides == null ? void 0 : overrides.bundlerUrl,\n    entrypointAddress: overrides == null ? void 0 : overrides.entrypointAddress\n  };\n  const entrypointVersion = getEntryPointVersion(((_a = args.overrides) == null ? void 0 : _a.entrypointAddress) || ENTRYPOINT_ADDRESS_v0_6);\n  const [isDeployed, callData, callGasLimit, gasFees, nonce] = await Promise.all([\n    isContractDeployed(accountContract),\n    encode(executeTx),\n    resolvePromisedValue(executeTx.gas),\n    getGasFees({\n      executeTx,\n      bundlerOptions,\n      chain,\n      client\n    }),\n    getAccountNonce({\n      accountContract,\n      chain,\n      client,\n      entrypointAddress: overrides == null ? void 0 : overrides.entrypointAddress,\n      getNonceOverride: overrides == null ? void 0 : overrides.getAccountNonce\n    })\n  ]);\n  const { maxFeePerGas, maxPriorityFeePerGas } = gasFees;\n  if (entrypointVersion === \"v0.7\") {\n    return populateUserOp_v0_7({\n      bundlerOptions,\n      factoryContract,\n      accountContract,\n      adminAddress,\n      sponsorGas,\n      overrides,\n      isDeployed,\n      nonce,\n      callData,\n      callGasLimit,\n      maxFeePerGas,\n      maxPriorityFeePerGas,\n      waitForDeployment\n    });\n  }\n  return populateUserOp_v0_6({\n    bundlerOptions,\n    factoryContract,\n    accountContract,\n    adminAddress,\n    sponsorGas,\n    overrides,\n    isDeployed,\n    nonce,\n    callData,\n    callGasLimit,\n    maxFeePerGas,\n    maxPriorityFeePerGas,\n    waitForDeployment\n  });\n}\nasync function getGasFees(args) {\n  const { executeTx, bundlerOptions, chain, client } = args;\n  let { maxFeePerGas, maxPriorityFeePerGas } = executeTx;\n  const bundlerUrl = (bundlerOptions == null ? void 0 : bundlerOptions.bundlerUrl) ?? getDefaultBundlerUrl(chain);\n  if (isThirdwebUrl(bundlerUrl)) {\n    const bundlerGasPrice = await getUserOpGasFees({\n      options: bundlerOptions\n    });\n    maxFeePerGas = bundlerGasPrice.maxFeePerGas;\n    maxPriorityFeePerGas = bundlerGasPrice.maxPriorityFeePerGas;\n  } else {\n    const [resolvedMaxFeePerGas, resolvedMaxPriorityFeePerGas] = await Promise.all([\n      resolvePromisedValue(maxFeePerGas),\n      resolvePromisedValue(maxPriorityFeePerGas)\n    ]);\n    if (resolvedMaxFeePerGas && resolvedMaxPriorityFeePerGas) {\n      maxFeePerGas = resolvedMaxFeePerGas;\n      maxPriorityFeePerGas = resolvedMaxPriorityFeePerGas;\n    } else {\n      const feeData = await getDefaultGasOverrides(client, chain);\n      maxPriorityFeePerGas = resolvedMaxPriorityFeePerGas ?? feeData.maxPriorityFeePerGas ?? 0n;\n      maxFeePerGas = resolvedMaxFeePerGas ?? feeData.maxFeePerGas ?? 0n;\n    }\n  }\n  return { maxFeePerGas, maxPriorityFeePerGas };\n}\nasync function populateUserOp_v0_7(args) {\n  const { bundlerOptions, isDeployed, factoryContract, accountContract, adminAddress, sponsorGas, overrides, nonce, callData, callGasLimit, maxFeePerGas, maxPriorityFeePerGas, waitForDeployment } = args;\n  const { chain, client } = bundlerOptions;\n  let factory;\n  let factoryData;\n  if (isDeployed || isAccountDeploying(accountContract)) {\n    factoryData = \"0x\";\n    if (waitForDeployment) {\n      await waitForAccountDeployed(accountContract);\n    }\n  } else {\n    factory = factoryContract.address;\n    factoryData = await encode(prepareCreateAccount({\n      factoryContract,\n      adminAddress,\n      accountSalt: overrides == null ? void 0 : overrides.accountSalt,\n      createAccountOverride: overrides == null ? void 0 : overrides.createAccount\n    }));\n    markAccountDeploying(accountContract);\n  }\n  const partialOp = {\n    sender: accountContract.address,\n    nonce,\n    callData,\n    maxFeePerGas,\n    maxPriorityFeePerGas,\n    callGasLimit: callGasLimit ?? 0n,\n    verificationGasLimit: 0n,\n    preVerificationGas: 0n,\n    factory,\n    factoryData,\n    paymaster: void 0,\n    paymasterData: \"0x\",\n    paymasterVerificationGasLimit: 0n,\n    paymasterPostOpGasLimit: 0n,\n    signature: DUMMY_SIGNATURE\n  };\n  if (sponsorGas) {\n    const paymasterResult = await getPaymasterAndData2({\n      userOp: partialOp,\n      chain,\n      client,\n      entrypointAddress: overrides == null ? void 0 : overrides.entrypointAddress,\n      paymasterOverride: overrides == null ? void 0 : overrides.paymaster\n    });\n    if (paymasterResult.paymaster && paymasterResult.paymasterData) {\n      partialOp.paymaster = paymasterResult.paymaster;\n      partialOp.paymasterData = paymasterResult.paymasterData;\n    }\n    if (paymasterResult.callGasLimit && paymasterResult.verificationGasLimit && paymasterResult.preVerificationGas && paymasterResult.paymasterPostOpGasLimit && paymasterResult.paymasterVerificationGasLimit) {\n      partialOp.callGasLimit = paymasterResult.callGasLimit;\n      partialOp.verificationGasLimit = paymasterResult.verificationGasLimit;\n      partialOp.preVerificationGas = paymasterResult.preVerificationGas;\n      partialOp.paymasterPostOpGasLimit = paymasterResult.paymasterPostOpGasLimit;\n      partialOp.paymasterVerificationGasLimit = paymasterResult.paymasterVerificationGasLimit;\n    } else {\n      const estimates = await estimateUserOpGas({\n        userOp: partialOp,\n        options: bundlerOptions\n      });\n      partialOp.callGasLimit = estimates.callGasLimit;\n      partialOp.verificationGasLimit = estimates.verificationGasLimit;\n      partialOp.preVerificationGas = estimates.preVerificationGas;\n      partialOp.paymasterPostOpGasLimit = paymasterResult.paymasterPostOpGasLimit || 0n;\n      partialOp.paymasterVerificationGasLimit = paymasterResult.paymasterVerificationGasLimit || 0n;\n      const paymasterResult2 = await getPaymasterAndData2({\n        userOp: partialOp,\n        chain,\n        client,\n        entrypointAddress: overrides == null ? void 0 : overrides.entrypointAddress,\n        paymasterOverride: overrides == null ? void 0 : overrides.paymaster\n      });\n      if (paymasterResult2.paymaster && paymasterResult2.paymasterData) {\n        partialOp.paymaster = paymasterResult2.paymaster;\n        partialOp.paymasterData = paymasterResult2.paymasterData;\n      }\n    }\n  } else {\n    const estimates = await estimateUserOpGas({\n      userOp: partialOp,\n      options: bundlerOptions\n    });\n    partialOp.callGasLimit = estimates.callGasLimit;\n    partialOp.verificationGasLimit = estimates.verificationGasLimit;\n    partialOp.preVerificationGas = estimates.preVerificationGas;\n    partialOp.paymasterPostOpGasLimit = estimates.paymasterPostOpGasLimit || 0n;\n    partialOp.paymasterVerificationGasLimit = estimates.paymasterVerificationGasLimit || 0n;\n  }\n  return {\n    ...partialOp,\n    signature: \"0x\"\n  };\n}\nasync function populateUserOp_v0_6(args) {\n  const { bundlerOptions, isDeployed, factoryContract, accountContract, adminAddress, sponsorGas, overrides, nonce, callData, callGasLimit, maxFeePerGas, maxPriorityFeePerGas, waitForDeployment } = args;\n  const { chain, client } = bundlerOptions;\n  let initCode;\n  if (isDeployed || isAccountDeploying(accountContract)) {\n    initCode = \"0x\";\n    if (waitForDeployment) {\n      await waitForAccountDeployed(accountContract);\n    }\n  } else {\n    initCode = await getAccountInitCode({\n      factoryContract,\n      adminAddress,\n      accountSalt: overrides == null ? void 0 : overrides.accountSalt,\n      createAccountOverride: overrides == null ? void 0 : overrides.createAccount\n    });\n    markAccountDeploying(accountContract);\n  }\n  const partialOp = {\n    sender: accountContract.address,\n    nonce,\n    initCode,\n    callData,\n    maxFeePerGas,\n    maxPriorityFeePerGas,\n    callGasLimit: callGasLimit ?? 0n,\n    verificationGasLimit: 0n,\n    preVerificationGas: 0n,\n    paymasterAndData: \"0x\",\n    signature: DUMMY_SIGNATURE\n  };\n  if (sponsorGas) {\n    const paymasterResult = await getPaymasterAndData2({\n      userOp: partialOp,\n      chain,\n      client,\n      entrypointAddress: overrides == null ? void 0 : overrides.entrypointAddress,\n      paymasterOverride: overrides == null ? void 0 : overrides.paymaster\n    });\n    const paymasterAndData = \"paymasterAndData\" in paymasterResult ? paymasterResult.paymasterAndData : \"0x\";\n    if (paymasterAndData && paymasterAndData !== \"0x\") {\n      partialOp.paymasterAndData = paymasterAndData;\n    }\n    if (paymasterResult.callGasLimit && paymasterResult.verificationGasLimit && paymasterResult.preVerificationGas) {\n      partialOp.callGasLimit = paymasterResult.callGasLimit;\n      partialOp.verificationGasLimit = paymasterResult.verificationGasLimit;\n      partialOp.preVerificationGas = paymasterResult.preVerificationGas;\n    } else {\n      const estimates = await estimateUserOpGas({\n        userOp: partialOp,\n        options: bundlerOptions\n      });\n      partialOp.callGasLimit = estimates.callGasLimit;\n      partialOp.verificationGasLimit = estimates.verificationGasLimit;\n      partialOp.preVerificationGas = estimates.preVerificationGas;\n      if (paymasterAndData && paymasterAndData !== \"0x\") {\n        const paymasterResult2 = await getPaymasterAndData2({\n          userOp: partialOp,\n          chain,\n          client,\n          entrypointAddress: overrides == null ? void 0 : overrides.entrypointAddress,\n          paymasterOverride: overrides == null ? void 0 : overrides.paymaster\n        });\n        const paymasterAndData2 = \"paymasterAndData\" in paymasterResult2 ? paymasterResult2.paymasterAndData : \"0x\";\n        if (paymasterAndData2 && paymasterAndData2 !== \"0x\") {\n          partialOp.paymasterAndData = paymasterAndData2;\n        }\n      }\n    }\n  } else {\n    const estimates = await estimateUserOpGas({\n      userOp: partialOp,\n      options: bundlerOptions\n    });\n    partialOp.callGasLimit = estimates.callGasLimit;\n    partialOp.verificationGasLimit = estimates.verificationGasLimit;\n    partialOp.preVerificationGas = estimates.preVerificationGas;\n  }\n  return {\n    ...partialOp,\n    signature: \"0x\"\n  };\n}\nasync function signUserOp(args) {\n  const { userOp, chain, entrypointAddress, adminAccount } = args;\n  const entrypointVersion = getEntryPointVersion(entrypointAddress || ENTRYPOINT_ADDRESS_v0_6);\n  let userOpHash;\n  if (entrypointVersion === \"v0.7\") {\n    const packedUserOp = getPackedUserOperation(userOp);\n    userOpHash = await getUserOpHash2({\n      contract: getContract({\n        address: entrypointAddress || ENTRYPOINT_ADDRESS_v0_7,\n        chain,\n        client: args.client\n      }),\n      userOp: packedUserOp\n    });\n  } else {\n    userOpHash = await getUserOpHash({\n      contract: getContract({\n        address: entrypointAddress || ENTRYPOINT_ADDRESS_v0_6,\n        chain,\n        client: args.client\n      }),\n      userOp\n    });\n  }\n  if (adminAccount.signMessage) {\n    const signature = await adminAccount.signMessage({\n      message: {\n        raw: hexToBytes(userOpHash)\n      }\n    });\n    return {\n      ...userOp,\n      signature\n    };\n  }\n  throw new Error(\"signMessage not implemented in signingAccount\");\n}\nasync function getAccountInitCode(options) {\n  const { factoryContract, adminAddress, accountSalt, createAccountOverride } = options;\n  const deployTx = prepareCreateAccount({\n    factoryContract,\n    adminAddress,\n    accountSalt,\n    createAccountOverride\n  });\n  return concat([factoryContract.address, await encode(deployTx)]);\n}\nasync function getAccountNonce(options) {\n  const { accountContract, chain, client, entrypointAddress, getNonceOverride } = options;\n  if (getNonceOverride) {\n    return getNonceOverride(accountContract);\n  }\n  return getNonce({\n    contract: getContract({\n      address: entrypointAddress || ENTRYPOINT_ADDRESS_v0_6,\n      chain,\n      client\n    }),\n    key: generateRandomUint192(),\n    sender: accountContract.address\n  });\n}\nasync function waitForAccountDeployed(accountContract) {\n  const startTime = Date.now();\n  while (isAccountDeploying(accountContract)) {\n    if (Date.now() - startTime > 6e4) {\n      clearAccountDeploying(accountContract);\n      throw new Error(\"Account deployment is taking too long (over 1 minute). Please try again.\");\n    }\n    await new Promise((resolve) => setTimeout(resolve, 500));\n  }\n}\n\n// node_modules/thirdweb/dist/esm/wallets/smart/index.js\nfunction isSmartWallet(wallet) {\n  return wallet.id === \"smart\";\n}\nvar personalAccountToSmartAccountMap = /* @__PURE__ */ new WeakMap();\nvar smartWalletToPersonalAccountMap = /* @__PURE__ */ new WeakMap();\nasync function connectSmartWallet(wallet, connectionOptions, creationOptions) {\n  var _a, _b, _c, _d, _e;\n  const { personalAccount, client, chain: connectChain } = connectionOptions;\n  if (!personalAccount) {\n    throw new Error(\"Personal wallet does not have an account\");\n  }\n  const options = creationOptions;\n  const chain = connectChain ?? options.chain;\n  if (options.factoryAddress && !((_a = options.overrides) == null ? void 0 : _a.entrypointAddress)) {\n    const entrypointAddress = await getEntrypointFromFactory(options.factoryAddress, client, chain);\n    if (entrypointAddress) {\n      options.overrides = {\n        ...options.overrides,\n        entrypointAddress\n      };\n    }\n  }\n  const factoryAddress = options.factoryAddress ?? getDefaultAccountFactory((_b = options.overrides) == null ? void 0 : _b.entrypointAddress);\n  const sponsorGas = \"gasless\" in options ? options.gasless : options.sponsorGas;\n  if (await isZkSyncChain(chain)) {\n    return [\n      createZkSyncAccount({\n        creationOptions,\n        connectionOptions,\n        chain,\n        sponsorGas\n      }),\n      chain\n    ];\n  }\n  const factoryContract = getContract({\n    client,\n    address: factoryAddress,\n    chain\n  });\n  const accountAddress = await predictAddress({\n    factoryContract,\n    adminAddress: personalAccount.address,\n    predictAddressOverride: (_c = options.overrides) == null ? void 0 : _c.predictAddress,\n    accountSalt: (_d = options.overrides) == null ? void 0 : _d.accountSalt,\n    accountAddress: (_e = options.overrides) == null ? void 0 : _e.accountAddress\n  }).then((address) => address).catch((err) => {\n    throw new Error(`Failed to get account address with factory contract ${factoryContract.address} on chain ID ${chain.id}: ${(err == null ? void 0 : err.message) || \"unknown error\"}`, { cause: err });\n  });\n  const accountContract = getContract({\n    client,\n    address: accountAddress,\n    chain\n  });\n  const account = await createSmartAccount({\n    ...options,\n    chain,\n    sponsorGas,\n    personalAccount,\n    accountContract,\n    factoryContract,\n    client\n  });\n  personalAccountToSmartAccountMap.set(personalAccount, wallet);\n  smartWalletToPersonalAccountMap.set(wallet, personalAccount);\n  return [account, chain];\n}\nasync function disconnectSmartWallet(wallet) {\n  const personalAccount = smartWalletToPersonalAccountMap.get(wallet);\n  if (personalAccount) {\n    personalAccountToSmartAccountMap.delete(personalAccount);\n    smartWalletToPersonalAccountMap.delete(wallet);\n  }\n}\nasync function createSmartAccount(options) {\n  const { accountContract } = options;\n  const account = {\n    address: getAddress(accountContract.address),\n    async sendTransaction(transaction) {\n      var _a, _b, _c, _d;\n      const erc20Paymaster = (_a = options.overrides) == null ? void 0 : _a.erc20Paymaster;\n      let paymasterOverride = void 0;\n      if (erc20Paymaster) {\n        await approveERC20({\n          accountContract,\n          erc20Paymaster,\n          options\n        });\n        const paymasterCallback = async () => {\n          return {\n            paymasterAndData: concatHex([\n              erc20Paymaster.address,\n              erc20Paymaster == null ? void 0 : erc20Paymaster.token\n            ]),\n            // for 0.7 compatibility\n            paymaster: erc20Paymaster.address,\n            paymasterData: \"0x\"\n          };\n        };\n        paymasterOverride = ((_b = options.overrides) == null ? void 0 : _b.paymaster) || paymasterCallback;\n      } else {\n        paymasterOverride = (_c = options.overrides) == null ? void 0 : _c.paymaster;\n      }\n      const executeTx = prepareExecute({\n        accountContract,\n        transaction,\n        executeOverride: (_d = options.overrides) == null ? void 0 : _d.execute\n      });\n      return _sendUserOp({\n        executeTx,\n        options: {\n          ...options,\n          overrides: {\n            ...options.overrides,\n            paymaster: paymasterOverride\n          }\n        }\n      });\n    },\n    async sendBatchTransaction(transactions) {\n      var _a;\n      const executeTx = prepareBatchExecute({\n        accountContract,\n        transactions,\n        executeBatchOverride: (_a = options.overrides) == null ? void 0 : _a.executeBatch\n      });\n      return _sendUserOp({\n        executeTx,\n        options\n      });\n    },\n    async signMessage({ message }) {\n      const [{ isContractDeployed: isContractDeployed2 }, { readContract: readContract2 }, { encodeAbiParameters: encodeAbiParameters2 }, { hashMessage }, { checkContractWalletSignature }] = await Promise.all([\n        import(\"./is-contract-deployed-AZVYEI5B.js\"),\n        import(\"./read-contract-EXVZZYXE.js\"),\n        import(\"./encodeAbiParameters-UF4TQP7R.js\"),\n        import(\"./hashMessage-NHJEFPJB.js\"),\n        import(\"./checkContractWalletSignature-6DFUQS7E.js\")\n      ]);\n      const isDeployed = await isContractDeployed2(accountContract);\n      if (!isDeployed) {\n        await _deployAccount({\n          options,\n          account,\n          accountContract\n        });\n        await confirmContractDeployment({\n          accountContract\n        });\n      }\n      const originalMsgHash = hashMessage(message);\n      let factorySupports712 = false;\n      try {\n        await readContract2({\n          contract: accountContract,\n          method: \"function getMessageHash(bytes32 _hash) public view returns (bytes32)\",\n          params: [originalMsgHash]\n        });\n        factorySupports712 = true;\n      } catch {\n      }\n      let sig;\n      if (factorySupports712) {\n        const wrappedMessageHash = encodeAbiParameters2([{ type: \"bytes32\" }], [originalMsgHash]);\n        sig = await options.personalAccount.signTypedData({\n          domain: {\n            name: \"Account\",\n            version: \"1\",\n            chainId: options.chain.id,\n            verifyingContract: accountContract.address\n          },\n          primaryType: \"AccountMessage\",\n          types: { AccountMessage: [{ name: \"message\", type: \"bytes\" }] },\n          message: { message: wrappedMessageHash }\n        });\n      } else {\n        sig = await options.personalAccount.signMessage({ message });\n      }\n      const isValid = await checkContractWalletSignature({\n        contract: accountContract,\n        message,\n        signature: sig\n      });\n      if (isValid) {\n        return sig;\n      }\n      throw new Error(\"Unable to verify signature on smart account, please make sure the smart account is deployed and the signature is valid.\");\n    },\n    async signTypedData(_typedData) {\n      var _a, _b, _c;\n      const typedData = parseTypedData(_typedData);\n      const [{ isContractDeployed: isContractDeployed2 }, { readContract: readContract2 }, { encodeAbiParameters: encodeAbiParameters2 }, { checkContractWalletSignedTypedData }] = await Promise.all([\n        import(\"./is-contract-deployed-AZVYEI5B.js\"),\n        import(\"./read-contract-EXVZZYXE.js\"),\n        import(\"./encodeAbiParameters-UF4TQP7R.js\"),\n        import(\"./checkContractWalletSignedTypedData-SEVCYJA7.js\")\n      ]);\n      const isSelfVerifyingContract = ((_b = (_a = typedData.domain) == null ? void 0 : _a.verifyingContract) == null ? void 0 : _b.toLowerCase()) === ((_c = accountContract.address) == null ? void 0 : _c.toLowerCase());\n      if (isSelfVerifyingContract) {\n        return options.personalAccount.signTypedData(typedData);\n      }\n      const isDeployed = await isContractDeployed2(accountContract);\n      if (!isDeployed) {\n        await _deployAccount({\n          options,\n          account,\n          accountContract\n        });\n        await confirmContractDeployment({\n          accountContract\n        });\n      }\n      const originalMsgHash = hashTypedData(typedData);\n      let factorySupports712 = false;\n      try {\n        await readContract2({\n          contract: accountContract,\n          method: \"function getMessageHash(bytes32 _hash) public view returns (bytes32)\",\n          params: [originalMsgHash]\n        });\n        factorySupports712 = true;\n      } catch {\n      }\n      let sig;\n      if (factorySupports712) {\n        const wrappedMessageHash = encodeAbiParameters2([{ type: \"bytes32\" }], [originalMsgHash]);\n        sig = await options.personalAccount.signTypedData({\n          domain: {\n            name: \"Account\",\n            version: \"1\",\n            chainId: options.chain.id,\n            verifyingContract: accountContract.address\n          },\n          primaryType: \"AccountMessage\",\n          types: { AccountMessage: [{ name: \"message\", type: \"bytes\" }] },\n          message: { message: wrappedMessageHash }\n        });\n      } else {\n        sig = await options.personalAccount.signTypedData(typedData);\n      }\n      const isValid = await checkContractWalletSignedTypedData({\n        contract: accountContract,\n        data: typedData,\n        signature: sig\n      });\n      if (isValid) {\n        return sig;\n      }\n      throw new Error(\"Unable to verify signature on smart account, please make sure the smart account is deployed and the signature is valid.\");\n    },\n    async onTransactionRequested(transaction) {\n      var _a, _b;\n      return (_b = (_a = options.personalAccount).onTransactionRequested) == null ? void 0 : _b.call(_a, transaction);\n    }\n  };\n  return account;\n}\nasync function approveERC20(args) {\n  var _a;\n  const { accountContract, erc20Paymaster, options } = args;\n  const tokenAddress = erc20Paymaster.token;\n  const tokenContract = getContract({\n    address: tokenAddress,\n    chain: accountContract.chain,\n    client: accountContract.client\n  });\n  const accountAllowance = await allowance({\n    contract: tokenContract,\n    owner: accountContract.address,\n    spender: erc20Paymaster.address\n  });\n  if (accountAllowance > 0n) {\n    return;\n  }\n  const approveTx = approve({\n    contract: tokenContract,\n    spender: erc20Paymaster.address,\n    amountWei: maxUint96 - 1n\n  });\n  const transaction = await toSerializableTransaction({\n    transaction: approveTx,\n    from: accountContract.address\n  });\n  const executeTx = prepareExecute({\n    accountContract,\n    transaction,\n    executeOverride: (_a = options.overrides) == null ? void 0 : _a.execute\n  });\n  await _sendUserOp({\n    executeTx,\n    options: {\n      ...options,\n      overrides: {\n        ...options.overrides,\n        erc20Paymaster: void 0\n      }\n    }\n  });\n}\nfunction createZkSyncAccount(args) {\n  const { creationOptions, connectionOptions, chain } = args;\n  const account = {\n    address: connectionOptions.personalAccount.address,\n    async sendTransaction(transaction) {\n      var _a, _b, _c, _d;\n      const prepTx = {\n        data: transaction.data,\n        to: transaction.to ?? void 0,\n        value: transaction.value ?? 0n,\n        chain: getCachedChain(transaction.chainId),\n        client: connectionOptions.client,\n        eip712: transaction.eip712\n      };\n      let serializableTransaction = await populateEip712Transaction({\n        account,\n        transaction: prepTx\n      });\n      if (args.sponsorGas && !serializableTransaction.paymaster) {\n        const pmData = await getZkPaymasterData({\n          options: {\n            client: connectionOptions.client,\n            chain,\n            bundlerUrl: (_a = creationOptions.overrides) == null ? void 0 : _a.bundlerUrl,\n            entrypointAddress: (_b = creationOptions.overrides) == null ? void 0 : _b.entrypointAddress\n          },\n          transaction: serializableTransaction\n        });\n        serializableTransaction = {\n          ...serializableTransaction,\n          ...pmData\n        };\n      }\n      const signedTransaction = await signEip712Transaction({\n        account,\n        chainId: chain.id,\n        eip712Transaction: serializableTransaction\n      });\n      const txHash = await broadcastZkTransaction({\n        options: {\n          client: connectionOptions.client,\n          chain,\n          bundlerUrl: (_c = creationOptions.overrides) == null ? void 0 : _c.bundlerUrl,\n          entrypointAddress: (_d = creationOptions.overrides) == null ? void 0 : _d.entrypointAddress\n        },\n        transaction: serializableTransaction,\n        signedTransaction\n      });\n      return {\n        transactionHash: txHash.transactionHash,\n        client: connectionOptions.client,\n        chain\n      };\n    },\n    async signMessage({ message }) {\n      return connectionOptions.personalAccount.signMessage({ message });\n    },\n    async signTypedData(_typedData) {\n      const typedData = parseTypedData(_typedData);\n      return connectionOptions.personalAccount.signTypedData(typedData);\n    },\n    async onTransactionRequested(transaction) {\n      var _a, _b;\n      return (_b = (_a = connectionOptions.personalAccount).onTransactionRequested) == null ? void 0 : _b.call(_a, transaction);\n    }\n  };\n  return account;\n}\nasync function _deployAccount(args) {\n  const { options, account, accountContract } = args;\n  const [{ sendTransaction }, { prepareTransaction }] = await Promise.all([\n    import(\"./send-transaction-3VCDCFKW.js\"),\n    import(\"./prepare-transaction-ENVXVTJF.js\")\n  ]);\n  const dummyTx = prepareTransaction({\n    client: options.client,\n    chain: options.chain,\n    to: accountContract.address,\n    value: 0n,\n    gas: 50000n\n    // force gas to avoid simulation error\n  });\n  const deployResult = await sendTransaction({\n    transaction: dummyTx,\n    account\n  });\n  return deployResult;\n}\nasync function _sendUserOp(args) {\n  var _a, _b, _c;\n  const { executeTx, options } = args;\n  const unsignedUserOp = await createUnsignedUserOp({\n    transaction: executeTx,\n    factoryContract: options.factoryContract,\n    accountContract: options.accountContract,\n    adminAddress: options.personalAccount.address,\n    sponsorGas: options.sponsorGas,\n    overrides: options.overrides\n  });\n  const signedUserOp = await signUserOp({\n    client: options.client,\n    chain: options.chain,\n    adminAccount: options.personalAccount,\n    entrypointAddress: (_a = options.overrides) == null ? void 0 : _a.entrypointAddress,\n    userOp: unsignedUserOp\n  });\n  const bundlerOptions = {\n    chain: options.chain,\n    client: options.client,\n    bundlerUrl: (_b = options.overrides) == null ? void 0 : _b.bundlerUrl,\n    entrypointAddress: (_c = options.overrides) == null ? void 0 : _c.entrypointAddress\n  };\n  const userOpHash = await bundleUserOp({\n    options: bundlerOptions,\n    userOp: signedUserOp\n  });\n  const receipt = await waitForUserOpReceipt({\n    ...bundlerOptions,\n    userOpHash\n  });\n  clearAccountDeploying(options.accountContract);\n  return {\n    client: options.client,\n    chain: options.chain,\n    transactionHash: receipt.transactionHash\n  };\n}\nasync function confirmContractDeployment(args) {\n  const { accountContract } = args;\n  const startTime = Date.now();\n  const timeout = 6e4;\n  const { isContractDeployed: isContractDeployed2 } = await import(\"./is-contract-deployed-AZVYEI5B.js\");\n  let isDeployed = await isContractDeployed2(accountContract);\n  while (!isDeployed) {\n    if (Date.now() - startTime > timeout) {\n      throw new Error(\"Timeout: Smart account deployment not confirmed after 1 minute\");\n    }\n    await new Promise((resolve) => setTimeout(resolve, 500));\n    isDeployed = await isContractDeployed2(accountContract);\n  }\n}\nasync function getEntrypointFromFactory(factoryAddress, client, chain) {\n  const factoryContract = getContract({\n    address: factoryAddress,\n    client,\n    chain\n  });\n  try {\n    const entrypointAddress = await readContract({\n      contract: factoryContract,\n      method: \"function entrypoint() public view returns (address)\"\n    });\n    return entrypointAddress;\n  } catch {\n    return void 0;\n  }\n}\n\nexport {\n  isSmartWallet,\n  connectSmartWallet,\n  disconnectSmartWallet\n};\n//# sourceMappingURL=chunk-F2BEZVSV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-FHZU65JA.js",
    "content": "import {\n  isERC1155,\n  isERC721\n} from \"./chunk-QLCPWJYR.js\";\nimport {\n  EcosystemWalletConnectUI_default\n} from \"./chunk-EGJT3UEX.js\";\nimport {\n  createWalletConnectClient,\n  createWalletConnectSession,\n  disconnectWalletConnectSession,\n  getActiveWalletConnectSessions\n} from \"./chunk-YG7T4W43.js\";\nimport {\n  AccentFailIcon,\n  AnyWalletConnectUI,\n  PoweredByThirdweb,\n  QRCode,\n  SmartConnectUI,\n  TOS,\n  WalletSelector,\n  getDefaultWallets,\n  wait\n} from \"./chunk-7ZNEOXS2.js\";\nimport {\n  InputSelectionUI,\n  LoadingScreen,\n  ScreenSetupContext,\n  compactModalMaxHeight,\n  modalCloseFadeOutDuration,\n  modalMaxWidthCompact,\n  modalMaxWidthWide,\n  onModalUnmount,\n  reservedScreens,\n  useActiveAccount,\n  useSetupScreen,\n  wideModalMaxHeight,\n  wideModalScreenThreshold\n} from \"./chunk-KWA5PGSC.js\";\nimport {\n  WalletLogoSpinner\n} from \"./chunk-MGEBXLXC.js\";\nimport {\n  getProfiles\n} from \"./chunk-65EUCVOP.js\";\nimport {\n  Fuse,\n  createWallet,\n  isMobile,\n  useDebouncedValue,\n  useShowMore\n} from \"./chunk-HO57TQQM.js\";\nimport {\n  Input,\n  Label,\n  Spinner,\n  WalletButtonEl,\n  WalletUIStatesProvider,\n  useIsWalletModalOpen,\n  useSetIsWalletModalOpen,\n  useSetSelectionData\n} from \"./chunk-AARWH2GQ.js\";\nimport {\n  ArrowRightIcon,\n  Button,\n  ButtonLink,\n  CheckCircledIcon,\n  CheckIcon,\n  ChevronDownIcon,\n  ChevronRightIcon,\n  ClockIcon,\n  Container,\n  CopyIcon,\n  Cross1Icon,\n  Cross2Icon,\n  CrossCircledIcon,\n  CustomThemeProvider,\n  EmailIcon,\n  ExitIcon,\n  ExternalLinkIcon,\n  FingerPrintIcon,\n  IconButton,\n  IdCardIcon,\n  Img,\n  Line,\n  Link,\n  MagnifyingGlassIcon,\n  MinusIcon,\n  ModalHeader,\n  ModalTitle,\n  OutlineWalletIcon,\n  PaperPlaneIcon,\n  PhoneIcon,\n  PinBottomIcon,\n  PlusIcon,\n  RadiobuttonIcon,\n  ReloadIcon,\n  ShuffleIcon,\n  Skeleton,\n  Spacer,\n  StyledButton,\n  StyledDiv,\n  StyledP,\n  StyledUl,\n  Text,\n  TextAlignJustifyIcon,\n  TriangleDownIcon,\n  UNIVERSAL_RESOLVER_ADDRESS,\n  WalletImage,\n  fadeInAnimation,\n  fontSize,\n  genericTokenIcon,\n  getLastAuthProvider,\n  getSocialIcon,\n  getWalletBalance,\n  hasSponsoredTransactionsEnabled,\n  iconSize,\n  keyframes,\n  media,\n  namehash,\n  newStyled,\n  noScrollBar,\n  packetToBytes,\n  parseTheme,\n  radius,\n  resolve,\n  setLastAuthProvider,\n  shadow,\n  spacing,\n  useActiveWallet,\n  useConnectedWalletDetails,\n  useConnectionManager,\n  useConnectionManagerCtx,\n  useCustomTheme,\n  useEnsAvatar,\n  useEnsName,\n  useMutation,\n  useQueries,\n  useQuery,\n  useQueryClient,\n  useSocialProfiles,\n  useWalletBalance,\n  useWalletInfo\n} from \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  getCurrencyMetadata\n} from \"./chunk-GGVPULQZ.js\";\nimport {\n  deleteConnectParamsFromStorage\n} from \"./chunk-YGRUPXVB.js\";\nimport {\n  formatExplorerAddressUrl,\n  formatExplorerTxUrl\n} from \"./chunk-5U5XBS6S.js\";\nimport {\n  isEcosystemWallet\n} from \"./chunk-XC5J5ANL.js\";\nimport {\n  getNFT\n} from \"./chunk-36FW3ZLE.js\";\nimport {\n  getNFT as getNFT2\n} from \"./chunk-7ETS5GH6.js\";\nimport {\n  getInstalledWalletProviders,\n  injectedProvider\n} from \"./chunk-PWFRCBEK.js\";\nimport {\n  smartWallet\n} from \"./chunk-2HYPHUAF.js\";\nimport {\n  isContractDeployed\n} from \"./chunk-Q3TN3POE.js\";\nimport {\n  isInAppWallet\n} from \"./chunk-O6KA6WKL.js\";\nimport {\n  ethereum\n} from \"./chunk-ZLJ6VYSG.js\";\nimport {\n  decimals\n} from \"./chunk-4RRAU5V7.js\";\nimport {\n  COINBASE\n} from \"./chunk-BZXRHH4X.js\";\nimport {\n  socialAuthOptions\n} from \"./chunk-EIBOABXT.js\";\nimport {\n  track\n} from \"./chunk-N24CESYN.js\";\nimport {\n  ClientScopedStorage\n} from \"./chunk-CYVKJMZE.js\";\nimport {\n  webLocalStorage\n} from \"./chunk-VIBS7Y3M.js\";\nimport {\n  resolveArweaveScheme\n} from \"./chunk-6FLJU7W7.js\";\nimport {\n  require_react_dom\n} from \"./chunk-SJKAB62J.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  estimateGasCost,\n  getBuyWithCryptoQuote,\n  getBuyWithCryptoStatus,\n  getBuyWithCryptoTransfer,\n  getPayBuyHistoryEndpoint,\n  getPayBuyWithFiatQuoteEndpoint,\n  getPayBuyWithFiatStatusEndpoint,\n  getPaySupportedDestinations,\n  getPaySupportedSources\n} from \"./chunk-PHVX3XOV.js\";\nimport {\n  sendAndConfirmTransaction\n} from \"./chunk-ADIC4TC2.js\";\nimport {\n  eth_getBalance\n} from \"./chunk-4PEUWIWY.js\";\nimport {\n  once,\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport {\n  sendTransaction\n} from \"./chunk-JTR2PIFP.js\";\nimport {\n  getGasPrice\n} from \"./chunk-JZC47WAY.js\";\nimport {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport {\n  encode\n} from \"./chunk-7QDK5KLB.js\";\nimport {\n  toTokens,\n  toUnits,\n  toWei\n} from \"./chunk-UY2SRO54.js\";\nimport {\n  NATIVE_TOKEN_ADDRESS\n} from \"./chunk-673YCYST.js\";\nimport {\n  waitForReceipt\n} from \"./chunk-JBQP4JIV.js\";\nimport {\n  createStore,\n  getTransactionStore\n} from \"./chunk-3DBHE3NE.js\";\nimport {\n  resolveScheme\n} from \"./chunk-ZNEQLT5Q.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  prepareTransaction\n} from \"./chunk-CNLOA7AS.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport {\n  getAddress,\n  isAddress,\n  shortenAddress,\n  shortenHex\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  cacheChains,\n  convertApiChainToChain,\n  defineChain,\n  getCachedChain,\n  getChainDecimals,\n  getChainMetadata,\n  getChainNativeCurrencyName,\n  getChainSymbol\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  withCache\n} from \"./chunk-GOA7IGSB.js\";\nimport {\n  getThirdwebDomains\n} from \"./chunk-QHKZ43P6.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\nimport {\n  toHex\n} from \"./chunk-BBNNHC5G.js\";\nimport {\n  hexToNumber\n} from \"./chunk-SPELR2RL.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js\nvar import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1);\nvar import_react60 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/pay/buyWithFiat/isSwapRequiredPostOnramp.js\nfunction isSwapRequiredPostOnramp(buyWithFiatQuote) {\n  const sameChain = buyWithFiatQuote.toToken.chainId === buyWithFiatQuote.onRampToken.token.chainId;\n  const sameToken = getAddress(buyWithFiatQuote.toToken.tokenAddress) === getAddress(buyWithFiatQuote.onRampToken.token.tokenAddress);\n  return !(sameChain && sameToken);\n}\n\n// node_modules/thirdweb/dist/esm/utils/formatNumber.js\nfunction formatNumber(value, decimalPlaces) {\n  if (value === 0)\n    return 0;\n  const precision = 10 ** decimalPlaces;\n  const threshold = 1 / 10 ** decimalPlaces;\n  const fn = value < threshold ? \"ceil\" : \"round\";\n  return Math[fn]((value + Number.EPSILON) * precision) / precision;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/pay/useBuyWithCryptoQuote.js\nfunction useBuyWithCryptoQuote(params, queryParams) {\n  return useQuery({\n    ...queryParams,\n    queryKey: [\"buyWithCryptoQuote\", params],\n    queryFn: () => {\n      if (!params) {\n        throw new Error(\"Swap params are required\");\n      }\n      return getBuyWithCryptoQuote(params);\n    },\n    enabled: !!params,\n    retry(failureCount, error) {\n      if (failureCount > 3) {\n        return false;\n      }\n      try {\n        const serverError = error.error;\n        if (serverError.code === \"MINIMUM_PURCHASE_AMOUNT\") {\n          return false;\n        }\n        if (serverError.statusCode === 404 || serverError.statusCode >= 500) {\n          return false;\n        }\n      } catch {\n        return true;\n      }\n      return true;\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/pay/buyWithFiat/getQuote.js\nasync function getBuyWithFiatQuote(params) {\n  try {\n    const clientFetch = getClientFetch(params.client);\n    const response = await clientFetch(getPayBuyWithFiatQuoteEndpoint(), {\n      method: \"POST\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\"\n      },\n      body: stringify({\n        toAddress: params.toAddress,\n        fromCurrencySymbol: params.fromCurrencySymbol,\n        toChainId: params.toChainId.toString(),\n        toTokenAddress: params.toTokenAddress,\n        fromAmount: params.fromAmount,\n        toAmount: params.toAmount,\n        maxSlippageBPS: params.maxSlippageBPS,\n        isTestMode: params.isTestMode,\n        purchaseData: params.purchaseData,\n        fromAddress: params.fromAddress,\n        toGasAmountWei: params.toGasAmountWei,\n        preferredProvider: params.preferredProvider\n      })\n    });\n    if (!response.ok) {\n      const errorObj = await response.json();\n      if (errorObj && \"error\" in errorObj) {\n        throw errorObj;\n      }\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    return (await response.json()).result;\n  } catch (error) {\n    console.error(\"Error getting buy with fiat quote\", error);\n    throw error;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/pay/useBuyWithFiatQuote.js\nfunction useBuyWithFiatQuote(params, queryOptions) {\n  return useQuery({\n    ...queryOptions,\n    queryKey: [\"useBuyWithFiatQuote\", params],\n    queryFn: async () => {\n      if (!params) {\n        throw new Error(\"No params provided\");\n      }\n      return getBuyWithFiatQuote(params);\n    },\n    enabled: !!params,\n    retry(failureCount, error) {\n      if (failureCount > 3) {\n        return false;\n      }\n      try {\n        const serverError = error.error;\n        if (serverError.code === \"MINIMUM_PURCHASE_AMOUNT\") {\n          return false;\n        }\n        if (serverError.statusCode === 404 || serverError.statusCode >= 500) {\n          return false;\n        }\n      } catch {\n        return true;\n      }\n      return true;\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/providers/invalidateWalletBalance.js\nfunction invalidateWalletBalance(queryClient, chainId) {\n  return queryClient.invalidateQueries({\n    // invalidate any walletBalance queries for this chainId\n    // TODO: add wallet address in here if we can get it somehow\n    queryKey: chainId ? [\"walletBalance\", chainId] : [\"walletBalance\"]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/ChainName.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/others/useChainQuery.js\nvar import_react = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/utils/promise/p-limit.js\nvar Node2 = class {\n  constructor(value) {\n    Object.defineProperty(this, \"value\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"next\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.value = value;\n  }\n};\nvar Queue = class {\n  constructor() {\n    Object.defineProperty(this, \"head\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"tail\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"size\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.clear();\n    this.size = 0;\n  }\n  enqueue(value) {\n    const node = new Node2(value);\n    if (this.head) {\n      if (this.tail) {\n        this.tail.next = node;\n      }\n      this.tail = node;\n    } else {\n      this.head = node;\n      this.tail = node;\n    }\n    this.size++;\n  }\n  dequeue() {\n    var _a;\n    const current = this.head;\n    if (!current) {\n      return;\n    }\n    this.head = (_a = this.head) == null ? void 0 : _a.next;\n    this.size--;\n    return current.value;\n  }\n  clear() {\n    this.head = void 0;\n    this.tail = void 0;\n    this.size = 0;\n  }\n  *[Symbol.iterator]() {\n    let current = this.head;\n    while (current) {\n      yield current.value;\n      current = current.next;\n    }\n  }\n};\nvar AsyncResource = {\n  bind(fn, _type, thisArg) {\n    return fn.bind(thisArg);\n  }\n};\nfunction pLimit(concurrency) {\n  if (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n    throw new TypeError(\"Expected `concurrency` to be a number from 1 and up\");\n  }\n  const queue = new Queue();\n  let activeCount = 0;\n  const next = () => {\n    activeCount--;\n    if (queue.size > 0) {\n      const fn = queue.dequeue();\n      if (fn) {\n        fn();\n      }\n    }\n  };\n  const run = async (function_, resolve2, arguments_) => {\n    activeCount++;\n    const result = (async () => function_(...arguments_))();\n    resolve2(result);\n    try {\n      await result;\n    } catch {\n    }\n    next();\n  };\n  const enqueue = (function_, resolve2, arguments_) => {\n    queue.enqueue(AsyncResource.bind(run.bind(void 0, function_, resolve2, arguments_)));\n    (async () => {\n      await Promise.resolve();\n      if (activeCount < concurrency && queue.size > 0) {\n        const fn = queue.dequeue();\n        if (fn) {\n          fn();\n        }\n      }\n    })();\n  };\n  const generator = (function_, ...arguments_) => new Promise((resolve2) => {\n    enqueue(function_, resolve2, arguments_);\n  });\n  Object.defineProperties(generator, {\n    activeCount: {\n      get: () => activeCount\n    },\n    pendingCount: {\n      get: () => queue.size\n    },\n    clearQueue: {\n      value() {\n        queue.clear();\n      }\n    }\n  });\n  return generator;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/others/useChainQuery.js\nfunction useChainName(chain) {\n  var _a;\n  const isEnabled = !!chain && !chain.name;\n  const chainQuery = useQuery({\n    queryKey: [\"chain\", chain == null ? void 0 : chain.id],\n    enabled: isEnabled,\n    retry: false,\n    // 1 hour\n    staleTime: 60 * 60 * 1e3,\n    queryFn: async () => {\n      if (!chain) {\n        throw new Error(\"chain is required\");\n      }\n      return convertApiChainToChain(await getChainMetadata(chain));\n    }\n  });\n  return {\n    name: (chain == null ? void 0 : chain.name) ?? ((_a = chainQuery.data) == null ? void 0 : _a.name),\n    isLoading: isEnabled && chainQuery.isLoading\n  };\n}\nfunction useChainIconUrl(chain) {\n  var _a, _b, _c, _d;\n  const isEnabled = !!chain && !((_a = chain.icon) == null ? void 0 : _a.url);\n  const chainQuery = useQuery({\n    queryKey: [\"chain\", chain == null ? void 0 : chain.id],\n    // only if we have a chain and no chain icon url!\n    enabled: isEnabled,\n    retry: false,\n    // 1 hour\n    staleTime: 60 * 60 * 1e3,\n    queryFn: async () => {\n      if (!chain) {\n        throw new Error(\"chain is required\");\n      }\n      return convertApiChainToChain(await getChainMetadata(chain));\n    }\n  });\n  return {\n    url: ((_b = chain == null ? void 0 : chain.icon) == null ? void 0 : _b.url) ?? ((_d = (_c = chainQuery.data) == null ? void 0 : _c.icon) == null ? void 0 : _d.url),\n    isLoading: isEnabled && chainQuery.isLoading\n  };\n}\nfunction useChainFaucets(chain) {\n  var _a, _b;\n  const isEnabled = !!chain && \"testnet\" in chain && !((_a = chain.faucets) == null ? void 0 : _a.length) && chain.id !== 1337;\n  const chainQuery = useQuery({\n    queryKey: [\"chain\", chain == null ? void 0 : chain.id],\n    enabled: isEnabled,\n    retry: false,\n    // 1 hour\n    staleTime: 60 * 60 * 1e3,\n    queryFn: async () => {\n      if (!chain) {\n        throw new Error(\"chain is required\");\n      }\n      return convertApiChainToChain(await getChainMetadata(chain));\n    }\n  });\n  return {\n    faucets: (chain == null ? void 0 : chain.faucets) ?? ((_b = chainQuery.data) == null ? void 0 : _b.faucets) ?? [],\n    isLoading: isEnabled && chainQuery.isLoading\n  };\n}\nfunction useChainSymbol(chain) {\n  var _a, _b, _c, _d;\n  const isEnabled = !!chain && !((_a = chain.nativeCurrency) == null ? void 0 : _a.symbol);\n  const chainQuery = useQuery({\n    queryKey: [\"chain\", chain == null ? void 0 : chain.id],\n    // only if we have a chain and no chain icon url!\n    enabled: isEnabled,\n    retry: false,\n    // 1 hour\n    staleTime: 60 * 60 * 1e3,\n    queryFn: async () => {\n      if (!chain) {\n        throw new Error(\"chain is required\");\n      }\n      return convertApiChainToChain(await getChainMetadata(chain));\n    }\n  });\n  return {\n    symbol: ((_b = chain == null ? void 0 : chain.nativeCurrency) == null ? void 0 : _b.symbol) ?? ((_d = (_c = chainQuery.data) == null ? void 0 : _c.nativeCurrency) == null ? void 0 : _d.symbol),\n    isLoading: isEnabled && chainQuery.isLoading\n  };\n}\nfunction useChainExplorers(chain) {\n  var _a, _b;\n  const isEnabled = !!chain && !((_a = chain.blockExplorers) == null ? void 0 : _a.length);\n  const chainQuery = useQuery({\n    queryKey: [\"chain\", chain == null ? void 0 : chain.id],\n    enabled: isEnabled,\n    retry: false,\n    // 1 hour\n    staleTime: 60 * 60 * 1e3,\n    queryFn: async () => {\n      if (!chain) {\n        throw new Error(\"chain is required\");\n      }\n      return convertApiChainToChain(await getChainMetadata(chain));\n    }\n  });\n  return {\n    explorers: (chain == null ? void 0 : chain.blockExplorers) ?? ((_b = chainQuery.data) == null ? void 0 : _b.blockExplorers) ?? [],\n    isLoading: isEnabled && chainQuery.isLoading\n  };\n}\nfunction getQueryOptions(chain) {\n  return {\n    queryKey: [\"chain\", chain],\n    enabled: !!chain,\n    staleTime: 1e3 * 60 * 60\n    // 1 hour\n  };\n}\nfunction useChainMetadata(chain) {\n  return useQuery({\n    ...getQueryOptions(chain),\n    queryFn: async () => {\n      if (!chain) {\n        throw new Error(\"chainId is required\");\n      }\n      return getChainMetadata(chain);\n    }\n  });\n}\nfunction useChainsQuery(chains, maxConcurrency) {\n  const queryList = (0, import_react.useMemo)(() => {\n    const limit = pLimit(maxConcurrency);\n    return chains.map((chain) => {\n      return {\n        ...getQueryOptions(chain),\n        queryFn: () => limit(() => getChainMetadata(chain))\n      };\n    });\n  }, [chains, maxConcurrency]);\n  return useQueries({\n    queries: queryList\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/ChainName.js\nvar ChainName = (props) => {\n  const { name } = useChainName(props.chain);\n  if (name) {\n    return (0, import_jsx_runtime.jsx)(Text, { size: props.size, children: props.short ? shorterChainName(name) : name });\n  }\n  return (0, import_jsx_runtime.jsx)(Skeleton, { width: \"50px\", height: fontSize[props.size] });\n};\nfunction shorterChainName(name) {\n  const split = name.split(\" \");\n  const wordsToRemove = /* @__PURE__ */ new Set([\"mainnet\", \"testnet\", \"chain\"]);\n  return split.filter((s) => {\n    return !wordsToRemove.has(s.toLowerCase());\n  }).join(\" \");\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Drawer.js\nvar import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);\nvar import_react9 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/DynamicHeight.js\nvar import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);\nvar import_react2 = __toESM(require_react(), 1);\nfunction DynamicHeight(props) {\n  const { height, elementRef } = useHeightObserver();\n  return (0, import_jsx_runtime2.jsx)(\"div\", { style: {\n    height: height ? `${height}px` : \"auto\",\n    transition: \"height 210ms cubic-bezier(0.175, 0.885, 0.32, 1.1)\",\n    overflow: \"hidden\",\n    boxSizing: \"border-box\"\n  }, children: (0, import_jsx_runtime2.jsx)(\"div\", { ref: elementRef, style: {\n    maxHeight: props.maxHeight\n  }, children: props.children }) });\n}\nfunction useHeightObserver() {\n  const elementRef = (0, import_react2.useRef)(null);\n  const [height, setHeight] = (0, import_react2.useState)();\n  (0, import_react2.useEffect)(() => {\n    const element = elementRef.current;\n    if (!element) {\n      return;\n    }\n    const resizeObserver = new ResizeObserver(() => {\n      setHeight(element.scrollHeight);\n    });\n    resizeObserver.observe(element);\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, []);\n  return { height, elementRef };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Modal.js\nvar import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/@radix-ui/react-dialog/dist/index.mjs\nvar React25 = __toESM(require_react(), 1);\n\n// node_modules/@radix-ui/primitive/dist/index.mjs\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n  return function handleEvent(event) {\n    originalEventHandler == null ? void 0 : originalEventHandler(event);\n    if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n      return ourEventHandler == null ? void 0 : ourEventHandler(event);\n    }\n  };\n}\n\n// node_modules/@radix-ui/react-compose-refs/dist/index.mjs\nvar React = __toESM(require_react(), 1);\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    ref(value);\n  } else if (ref !== null && ref !== void 0) {\n    ref.current = value;\n  }\n}\nfunction composeRefs(...refs) {\n  return (node) => refs.forEach((ref) => setRef(ref, node));\n}\nfunction useComposedRefs(...refs) {\n  return React.useCallback(composeRefs(...refs), refs);\n}\n\n// node_modules/@radix-ui/react-context/dist/index.mjs\nvar React2 = __toESM(require_react(), 1);\nvar import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);\nfunction createContext2(rootComponentName, defaultContext) {\n  const Context = React2.createContext(defaultContext);\n  const Provider2 = (props) => {\n    const { children, ...context } = props;\n    const value = React2.useMemo(() => context, Object.values(context));\n    return (0, import_jsx_runtime3.jsx)(Context.Provider, { value, children });\n  };\n  Provider2.displayName = rootComponentName + \"Provider\";\n  function useContext22(consumerName) {\n    const context = React2.useContext(Context);\n    if (context)\n      return context;\n    if (defaultContext !== void 0)\n      return defaultContext;\n    throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n  }\n  return [Provider2, useContext22];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n  let defaultContexts = [];\n  function createContext32(rootComponentName, defaultContext) {\n    const BaseContext = React2.createContext(defaultContext);\n    const index2 = defaultContexts.length;\n    defaultContexts = [...defaultContexts, defaultContext];\n    const Provider2 = (props) => {\n      var _a;\n      const { scope, children, ...context } = props;\n      const Context = ((_a = scope == null ? void 0 : scope[scopeName]) == null ? void 0 : _a[index2]) || BaseContext;\n      const value = React2.useMemo(() => context, Object.values(context));\n      return (0, import_jsx_runtime3.jsx)(Context.Provider, { value, children });\n    };\n    Provider2.displayName = rootComponentName + \"Provider\";\n    function useContext22(consumerName, scope) {\n      var _a;\n      const Context = ((_a = scope == null ? void 0 : scope[scopeName]) == null ? void 0 : _a[index2]) || BaseContext;\n      const context = React2.useContext(Context);\n      if (context)\n        return context;\n      if (defaultContext !== void 0)\n        return defaultContext;\n      throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n    return [Provider2, useContext22];\n  }\n  const createScope = () => {\n    const scopeContexts = defaultContexts.map((defaultContext) => {\n      return React2.createContext(defaultContext);\n    });\n    return function useScope(scope) {\n      const contexts = (scope == null ? void 0 : scope[scopeName]) || scopeContexts;\n      return React2.useMemo(\n        () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n        [scope, contexts]\n      );\n    };\n  };\n  createScope.scopeName = scopeName;\n  return [createContext32, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n  const baseScope = scopes[0];\n  if (scopes.length === 1)\n    return baseScope;\n  const createScope = () => {\n    const scopeHooks = scopes.map((createScope2) => ({\n      useScope: createScope2(),\n      scopeName: createScope2.scopeName\n    }));\n    return function useComposedScopes(overrideScopes) {\n      const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n        const scopeProps = useScope(overrideScopes);\n        const currentScope = scopeProps[`__scope${scopeName}`];\n        return { ...nextScopes2, ...currentScope };\n      }, {});\n      return React2.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n    };\n  };\n  createScope.scopeName = baseScope.scopeName;\n  return createScope;\n}\n\n// node_modules/@radix-ui/react-id/dist/index.mjs\nvar React4 = __toESM(require_react(), 1);\n\n// node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\nvar React3 = __toESM(require_react(), 1);\nvar useLayoutEffect2 = Boolean(globalThis == null ? void 0 : globalThis.document) ? React3.useLayoutEffect : () => {\n};\n\n// node_modules/@radix-ui/react-id/dist/index.mjs\nvar useReactId = React4[\"useId\".toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n  const [id, setId] = React4.useState(useReactId());\n  useLayoutEffect2(() => {\n    if (!deterministicId)\n      setId((reactId) => reactId ?? String(count++));\n  }, [deterministicId]);\n  return deterministicId || (id ? `radix-${id}` : \"\");\n}\n\n// node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs\nvar React6 = __toESM(require_react(), 1);\n\n// node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\nvar React5 = __toESM(require_react(), 1);\nfunction useCallbackRef(callback) {\n  const callbackRef = React5.useRef(callback);\n  React5.useEffect(() => {\n    callbackRef.current = callback;\n  });\n  return React5.useMemo(() => (...args) => {\n    var _a;\n    return (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef, ...args);\n  }, []);\n}\n\n// node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs\nfunction useControllableState({\n  prop,\n  defaultProp,\n  onChange = () => {\n  }\n}) {\n  const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n  const isControlled = prop !== void 0;\n  const value = isControlled ? prop : uncontrolledProp;\n  const handleChange = useCallbackRef(onChange);\n  const setValue = React6.useCallback(\n    (nextValue) => {\n      if (isControlled) {\n        const setter = nextValue;\n        const value2 = typeof nextValue === \"function\" ? setter(prop) : nextValue;\n        if (value2 !== prop)\n          handleChange(value2);\n      } else {\n        setUncontrolledProp(nextValue);\n      }\n    },\n    [isControlled, prop, setUncontrolledProp, handleChange]\n  );\n  return [value, setValue];\n}\nfunction useUncontrolledState({\n  defaultProp,\n  onChange\n}) {\n  const uncontrolledState = React6.useState(defaultProp);\n  const [value] = uncontrolledState;\n  const prevValueRef = React6.useRef(value);\n  const handleChange = useCallbackRef(onChange);\n  React6.useEffect(() => {\n    if (prevValueRef.current !== value) {\n      handleChange(value);\n      prevValueRef.current = value;\n    }\n  }, [value, prevValueRef, handleChange]);\n  return uncontrolledState;\n}\n\n// node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs\nvar React10 = __toESM(require_react(), 1);\n\n// node_modules/@radix-ui/react-primitive/dist/index.mjs\nvar React8 = __toESM(require_react(), 1);\nvar ReactDOM = __toESM(require_react_dom(), 1);\n\n// node_modules/@radix-ui/react-slot/dist/index.mjs\nvar React7 = __toESM(require_react(), 1);\nvar import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);\nvar Slot = React7.forwardRef((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n  const childrenArray = React7.Children.toArray(children);\n  const slottable = childrenArray.find(isSlottable);\n  if (slottable) {\n    const newElement = slottable.props.children;\n    const newChildren = childrenArray.map((child) => {\n      if (child === slottable) {\n        if (React7.Children.count(newElement) > 1)\n          return React7.Children.only(null);\n        return React7.isValidElement(newElement) ? newElement.props.children : null;\n      } else {\n        return child;\n      }\n    });\n    return (0, import_jsx_runtime4.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React7.isValidElement(newElement) ? React7.cloneElement(newElement, void 0, newChildren) : null });\n  }\n  return (0, import_jsx_runtime4.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });\n});\nSlot.displayName = \"Slot\";\nvar SlotClone = React7.forwardRef((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n  if (React7.isValidElement(children)) {\n    const childrenRef = getElementRef(children);\n    return React7.cloneElement(children, {\n      ...mergeProps(slotProps, children.props),\n      // @ts-ignore\n      ref: forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef\n    });\n  }\n  return React7.Children.count(children) > 1 ? React7.Children.only(null) : null;\n});\nSlotClone.displayName = \"SlotClone\";\nvar Slottable = ({ children }) => {\n  return (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children });\n};\nfunction isSlottable(child) {\n  return React7.isValidElement(child) && child.type === Slottable;\n}\nfunction mergeProps(slotProps, childProps) {\n  const overrideProps = { ...childProps };\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args) => {\n          childPropValue(...args);\n          slotPropValue(...args);\n        };\n      } else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    } else if (propName === \"style\") {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === \"className\") {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n    }\n  }\n  return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n  var _a, _b;\n  let getter = (_a = Object.getOwnPropertyDescriptor(element.props, \"ref\")) == null ? void 0 : _a.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = (_b = Object.getOwnPropertyDescriptor(element, \"ref\")) == null ? void 0 : _b.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\n\n// node_modules/@radix-ui/react-primitive/dist/index.mjs\nvar import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);\nvar NODES = [\n  \"a\",\n  \"button\",\n  \"div\",\n  \"form\",\n  \"h2\",\n  \"h3\",\n  \"img\",\n  \"input\",\n  \"label\",\n  \"li\",\n  \"nav\",\n  \"ol\",\n  \"p\",\n  \"span\",\n  \"svg\",\n  \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n  const Node3 = React8.forwardRef((props, forwardedRef) => {\n    const { asChild, ...primitiveProps } = props;\n    const Comp = asChild ? Slot : node;\n    if (typeof window !== \"undefined\") {\n      window[Symbol.for(\"radix-ui\")] = true;\n    }\n    return (0, import_jsx_runtime5.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });\n  });\n  Node3.displayName = `Primitive.${node}`;\n  return { ...primitive, [node]: Node3 };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n  if (target)\n    ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n// node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs\nvar React9 = __toESM(require_react(), 1);\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis == null ? void 0 : globalThis.document) {\n  const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n  React9.useEffect(() => {\n    const handleKeyDown = (event) => {\n      if (event.key === \"Escape\") {\n        onEscapeKeyDown(event);\n      }\n    };\n    ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n    return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n  }, [onEscapeKeyDown, ownerDocument]);\n}\n\n// node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs\nvar import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React10.createContext({\n  layers: /* @__PURE__ */ new Set(),\n  layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n  branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React10.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      disableOutsidePointerEvents = false,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      onFocusOutside,\n      onInteractOutside,\n      onDismiss,\n      ...layerProps\n    } = props;\n    const context = React10.useContext(DismissableLayerContext);\n    const [node, setNode] = React10.useState(null);\n    const ownerDocument = (node == null ? void 0 : node.ownerDocument) ?? (globalThis == null ? void 0 : globalThis.document);\n    const [, force] = React10.useState({});\n    const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n    const layers = Array.from(context.layers);\n    const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n    const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n    const index2 = node ? layers.indexOf(node) : -1;\n    const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n    const isPointerEventsEnabled = index2 >= highestLayerWithOutsidePointerEventsDisabledIndex;\n    const pointerDownOutside = usePointerDownOutside((event) => {\n      const target = event.target;\n      const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (!isPointerEventsEnabled || isPointerDownOnBranch)\n        return;\n      onPointerDownOutside == null ? void 0 : onPointerDownOutside(event);\n      onInteractOutside == null ? void 0 : onInteractOutside(event);\n      if (!event.defaultPrevented)\n        onDismiss == null ? void 0 : onDismiss();\n    }, ownerDocument);\n    const focusOutside = useFocusOutside((event) => {\n      const target = event.target;\n      const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n      if (isFocusInBranch)\n        return;\n      onFocusOutside == null ? void 0 : onFocusOutside(event);\n      onInteractOutside == null ? void 0 : onInteractOutside(event);\n      if (!event.defaultPrevented)\n        onDismiss == null ? void 0 : onDismiss();\n    }, ownerDocument);\n    useEscapeKeydown((event) => {\n      const isHighestLayer = index2 === context.layers.size - 1;\n      if (!isHighestLayer)\n        return;\n      onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(event);\n      if (!event.defaultPrevented && onDismiss) {\n        event.preventDefault();\n        onDismiss();\n      }\n    }, ownerDocument);\n    React10.useEffect(() => {\n      if (!node)\n        return;\n      if (disableOutsidePointerEvents) {\n        if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n          originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n          ownerDocument.body.style.pointerEvents = \"none\";\n        }\n        context.layersWithOutsidePointerEventsDisabled.add(node);\n      }\n      context.layers.add(node);\n      dispatchUpdate();\n      return () => {\n        if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n          ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n        }\n      };\n    }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n    React10.useEffect(() => {\n      return () => {\n        if (!node)\n          return;\n        context.layers.delete(node);\n        context.layersWithOutsidePointerEventsDisabled.delete(node);\n        dispatchUpdate();\n      };\n    }, [node, context]);\n    React10.useEffect(() => {\n      const handleUpdate = () => force({});\n      document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n      return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n    }, []);\n    return (0, import_jsx_runtime6.jsx)(\n      Primitive.div,\n      {\n        ...layerProps,\n        ref: composedRefs,\n        style: {\n          pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n          ...props.style\n        },\n        onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n        onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n        onPointerDownCapture: composeEventHandlers(\n          props.onPointerDownCapture,\n          pointerDownOutside.onPointerDownCapture\n        )\n      }\n    );\n  }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React10.forwardRef((props, forwardedRef) => {\n  const context = React10.useContext(DismissableLayerContext);\n  const ref = React10.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  React10.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      context.branches.add(node);\n      return () => {\n        context.branches.delete(node);\n      };\n    }\n  }, [context.branches]);\n  return (0, import_jsx_runtime6.jsx)(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis == null ? void 0 : globalThis.document) {\n  const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n  const isPointerInsideReactTreeRef = React10.useRef(false);\n  const handleClickRef = React10.useRef(() => {\n  });\n  React10.useEffect(() => {\n    const handlePointerDown = (event) => {\n      if (event.target && !isPointerInsideReactTreeRef.current) {\n        let handleAndDispatchPointerDownOutsideEvent2 = function() {\n          handleAndDispatchCustomEvent(\n            POINTER_DOWN_OUTSIDE,\n            handlePointerDownOutside,\n            eventDetail,\n            { discrete: true }\n          );\n        };\n        var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n        const eventDetail = { originalEvent: event };\n        if (event.pointerType === \"touch\") {\n          ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n          handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n          ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n        } else {\n          handleAndDispatchPointerDownOutsideEvent2();\n        }\n      } else {\n        ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n      }\n      isPointerInsideReactTreeRef.current = false;\n    };\n    const timerId = window.setTimeout(() => {\n      ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n    }, 0);\n    return () => {\n      window.clearTimeout(timerId);\n      ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n      ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n    };\n  }, [ownerDocument, handlePointerDownOutside]);\n  return {\n    // ensures we check React component tree (not just DOM tree)\n    onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n  };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis == null ? void 0 : globalThis.document) {\n  const handleFocusOutside = useCallbackRef(onFocusOutside);\n  const isFocusInsideReactTreeRef = React10.useRef(false);\n  React10.useEffect(() => {\n    const handleFocus = (event) => {\n      if (event.target && !isFocusInsideReactTreeRef.current) {\n        const eventDetail = { originalEvent: event };\n        handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n          discrete: false\n        });\n      }\n    };\n    ownerDocument.addEventListener(\"focusin\", handleFocus);\n    return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n  }, [ownerDocument, handleFocusOutside]);\n  return {\n    onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n    onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n  };\n}\nfunction dispatchUpdate() {\n  const event = new CustomEvent(CONTEXT_UPDATE);\n  document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n  const target = detail.originalEvent.target;\n  const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n  if (handler)\n    target.addEventListener(name, handler, { once: true });\n  if (discrete) {\n    dispatchDiscreteCustomEvent(target, event);\n  } else {\n    target.dispatchEvent(event);\n  }\n}\n\n// node_modules/@radix-ui/react-focus-scope/dist/index.mjs\nvar React11 = __toESM(require_react(), 1);\nvar import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React11.forwardRef((props, forwardedRef) => {\n  const {\n    loop = false,\n    trapped = false,\n    onMountAutoFocus: onMountAutoFocusProp,\n    onUnmountAutoFocus: onUnmountAutoFocusProp,\n    ...scopeProps\n  } = props;\n  const [container, setContainer] = React11.useState(null);\n  const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n  const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n  const lastFocusedElementRef = React11.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n  const focusScope = React11.useRef({\n    paused: false,\n    pause() {\n      this.paused = true;\n    },\n    resume() {\n      this.paused = false;\n    }\n  }).current;\n  React11.useEffect(() => {\n    if (trapped) {\n      let handleFocusIn2 = function(event) {\n        if (focusScope.paused || !container)\n          return;\n        const target = event.target;\n        if (container.contains(target)) {\n          lastFocusedElementRef.current = target;\n        } else {\n          focus(lastFocusedElementRef.current, { select: true });\n        }\n      }, handleFocusOut2 = function(event) {\n        if (focusScope.paused || !container)\n          return;\n        const relatedTarget = event.relatedTarget;\n        if (relatedTarget === null)\n          return;\n        if (!container.contains(relatedTarget)) {\n          focus(lastFocusedElementRef.current, { select: true });\n        }\n      }, handleMutations2 = function(mutations) {\n        const focusedElement = document.activeElement;\n        if (focusedElement !== document.body)\n          return;\n        for (const mutation of mutations) {\n          if (mutation.removedNodes.length > 0)\n            focus(container);\n        }\n      };\n      var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n      document.addEventListener(\"focusin\", handleFocusIn2);\n      document.addEventListener(\"focusout\", handleFocusOut2);\n      const mutationObserver = new MutationObserver(handleMutations2);\n      if (container)\n        mutationObserver.observe(container, { childList: true, subtree: true });\n      return () => {\n        document.removeEventListener(\"focusin\", handleFocusIn2);\n        document.removeEventListener(\"focusout\", handleFocusOut2);\n        mutationObserver.disconnect();\n      };\n    }\n  }, [trapped, container, focusScope.paused]);\n  React11.useEffect(() => {\n    if (container) {\n      focusScopesStack.add(focusScope);\n      const previouslyFocusedElement = document.activeElement;\n      const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n      if (!hasFocusedCandidate) {\n        const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n        container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n        container.dispatchEvent(mountEvent);\n        if (!mountEvent.defaultPrevented) {\n          focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n          if (document.activeElement === previouslyFocusedElement) {\n            focus(container);\n          }\n        }\n      }\n      return () => {\n        container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n        setTimeout(() => {\n          const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n          container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n          container.dispatchEvent(unmountEvent);\n          if (!unmountEvent.defaultPrevented) {\n            focus(previouslyFocusedElement ?? document.body, { select: true });\n          }\n          container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n          focusScopesStack.remove(focusScope);\n        }, 0);\n      };\n    }\n  }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n  const handleKeyDown = React11.useCallback(\n    (event) => {\n      if (!loop && !trapped)\n        return;\n      if (focusScope.paused)\n        return;\n      const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n      const focusedElement = document.activeElement;\n      if (isTabKey && focusedElement) {\n        const container2 = event.currentTarget;\n        const [first, last] = getTabbableEdges(container2);\n        const hasTabbableElementsInside = first && last;\n        if (!hasTabbableElementsInside) {\n          if (focusedElement === container2)\n            event.preventDefault();\n        } else {\n          if (!event.shiftKey && focusedElement === last) {\n            event.preventDefault();\n            if (loop)\n              focus(first, { select: true });\n          } else if (event.shiftKey && focusedElement === first) {\n            event.preventDefault();\n            if (loop)\n              focus(last, { select: true });\n          }\n        }\n      }\n    },\n    [loop, trapped, focusScope.paused]\n  );\n  return (0, import_jsx_runtime7.jsx)(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n  const previouslyFocusedElement = document.activeElement;\n  for (const candidate of candidates) {\n    focus(candidate, { select });\n    if (document.activeElement !== previouslyFocusedElement)\n      return;\n  }\n}\nfunction getTabbableEdges(container) {\n  const candidates = getTabbableCandidates(container);\n  const first = findVisible(candidates, container);\n  const last = findVisible(candidates.reverse(), container);\n  return [first, last];\n}\nfunction getTabbableCandidates(container) {\n  const nodes = [];\n  const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n    acceptNode: (node) => {\n      const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n      if (node.disabled || node.hidden || isHiddenInput)\n        return NodeFilter.FILTER_SKIP;\n      return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n    }\n  });\n  while (walker.nextNode())\n    nodes.push(walker.currentNode);\n  return nodes;\n}\nfunction findVisible(elements, container) {\n  for (const element of elements) {\n    if (!isHidden(element, { upTo: container }))\n      return element;\n  }\n}\nfunction isHidden(node, { upTo }) {\n  if (getComputedStyle(node).visibility === \"hidden\")\n    return true;\n  while (node) {\n    if (upTo !== void 0 && node === upTo)\n      return false;\n    if (getComputedStyle(node).display === \"none\")\n      return true;\n    node = node.parentElement;\n  }\n  return false;\n}\nfunction isSelectableInput(element) {\n  return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n  if (element && element.focus) {\n    const previouslyFocusedElement = document.activeElement;\n    element.focus({ preventScroll: true });\n    if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n      element.select();\n  }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n  let stack = [];\n  return {\n    add(focusScope) {\n      const activeFocusScope = stack[0];\n      if (focusScope !== activeFocusScope) {\n        activeFocusScope == null ? void 0 : activeFocusScope.pause();\n      }\n      stack = arrayRemove(stack, focusScope);\n      stack.unshift(focusScope);\n    },\n    remove(focusScope) {\n      var _a;\n      stack = arrayRemove(stack, focusScope);\n      (_a = stack[0]) == null ? void 0 : _a.resume();\n    }\n  };\n}\nfunction arrayRemove(array, item) {\n  const updatedArray = [...array];\n  const index2 = updatedArray.indexOf(item);\n  if (index2 !== -1) {\n    updatedArray.splice(index2, 1);\n  }\n  return updatedArray;\n}\nfunction removeLinks(items) {\n  return items.filter((item) => item.tagName !== \"A\");\n}\n\n// node_modules/@radix-ui/react-portal/dist/index.mjs\nvar React12 = __toESM(require_react(), 1);\nvar import_react_dom = __toESM(require_react_dom(), 1);\nvar import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React12.forwardRef((props, forwardedRef) => {\n  var _a;\n  const { container: containerProp, ...portalProps } = props;\n  const [mounted, setMounted] = React12.useState(false);\n  useLayoutEffect2(() => setMounted(true), []);\n  const container = containerProp || mounted && ((_a = globalThis == null ? void 0 : globalThis.document) == null ? void 0 : _a.body);\n  return container ? import_react_dom.default.createPortal((0, import_jsx_runtime8.jsx)(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\n\n// node_modules/@radix-ui/react-presence/dist/index.mjs\nvar React22 = __toESM(require_react(), 1);\nvar React13 = __toESM(require_react(), 1);\nfunction useStateMachine(initialState, machine) {\n  return React13.useReducer((state, event) => {\n    const nextState = machine[state][event];\n    return nextState ?? state;\n  }, initialState);\n}\nvar Presence = (props) => {\n  const { present, children } = props;\n  const presence = usePresence(present);\n  const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React22.Children.only(children);\n  const ref = useComposedRefs(presence.ref, getElementRef2(child));\n  const forceMount = typeof children === \"function\";\n  return forceMount || presence.isPresent ? React22.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n  const [node, setNode] = React22.useState();\n  const stylesRef = React22.useRef({});\n  const prevPresentRef = React22.useRef(present);\n  const prevAnimationNameRef = React22.useRef(\"none\");\n  const initialState = present ? \"mounted\" : \"unmounted\";\n  const [state, send] = useStateMachine(initialState, {\n    mounted: {\n      UNMOUNT: \"unmounted\",\n      ANIMATION_OUT: \"unmountSuspended\"\n    },\n    unmountSuspended: {\n      MOUNT: \"mounted\",\n      ANIMATION_END: \"unmounted\"\n    },\n    unmounted: {\n      MOUNT: \"mounted\"\n    }\n  });\n  React22.useEffect(() => {\n    const currentAnimationName = getAnimationName(stylesRef.current);\n    prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n  }, [state]);\n  useLayoutEffect2(() => {\n    const styles = stylesRef.current;\n    const wasPresent = prevPresentRef.current;\n    const hasPresentChanged = wasPresent !== present;\n    if (hasPresentChanged) {\n      const prevAnimationName = prevAnimationNameRef.current;\n      const currentAnimationName = getAnimationName(styles);\n      if (present) {\n        send(\"MOUNT\");\n      } else if (currentAnimationName === \"none\" || (styles == null ? void 0 : styles.display) === \"none\") {\n        send(\"UNMOUNT\");\n      } else {\n        const isAnimating = prevAnimationName !== currentAnimationName;\n        if (wasPresent && isAnimating) {\n          send(\"ANIMATION_OUT\");\n        } else {\n          send(\"UNMOUNT\");\n        }\n      }\n      prevPresentRef.current = present;\n    }\n  }, [present, send]);\n  useLayoutEffect2(() => {\n    if (node) {\n      let timeoutId;\n      const ownerWindow = node.ownerDocument.defaultView ?? window;\n      const handleAnimationEnd = (event) => {\n        const currentAnimationName = getAnimationName(stylesRef.current);\n        const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n        if (event.target === node && isCurrentAnimation) {\n          send(\"ANIMATION_END\");\n          if (!prevPresentRef.current) {\n            const currentFillMode = node.style.animationFillMode;\n            node.style.animationFillMode = \"forwards\";\n            timeoutId = ownerWindow.setTimeout(() => {\n              if (node.style.animationFillMode === \"forwards\") {\n                node.style.animationFillMode = currentFillMode;\n              }\n            });\n          }\n        }\n      };\n      const handleAnimationStart = (event) => {\n        if (event.target === node) {\n          prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n        }\n      };\n      node.addEventListener(\"animationstart\", handleAnimationStart);\n      node.addEventListener(\"animationcancel\", handleAnimationEnd);\n      node.addEventListener(\"animationend\", handleAnimationEnd);\n      return () => {\n        ownerWindow.clearTimeout(timeoutId);\n        node.removeEventListener(\"animationstart\", handleAnimationStart);\n        node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n        node.removeEventListener(\"animationend\", handleAnimationEnd);\n      };\n    } else {\n      send(\"ANIMATION_END\");\n    }\n  }, [node, send]);\n  return {\n    isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n    ref: React22.useCallback((node2) => {\n      if (node2)\n        stylesRef.current = getComputedStyle(node2);\n      setNode(node2);\n    }, [])\n  };\n}\nfunction getAnimationName(styles) {\n  return (styles == null ? void 0 : styles.animationName) || \"none\";\n}\nfunction getElementRef2(element) {\n  var _a, _b;\n  let getter = (_a = Object.getOwnPropertyDescriptor(element.props, \"ref\")) == null ? void 0 : _a.get;\n  let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.ref;\n  }\n  getter = (_b = Object.getOwnPropertyDescriptor(element, \"ref\")) == null ? void 0 : _b.get;\n  mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n  if (mayWarn) {\n    return element.props.ref;\n  }\n  return element.props.ref || element.ref;\n}\n\n// node_modules/@radix-ui/react-focus-guards/dist/index.mjs\nvar React14 = __toESM(require_react(), 1);\nvar count2 = 0;\nfunction useFocusGuards() {\n  React14.useEffect(() => {\n    const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n    document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n    document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n    count2++;\n    return () => {\n      if (count2 === 1) {\n        document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n      }\n      count2--;\n    };\n  }, []);\n}\nfunction createFocusGuard() {\n  const element = document.createElement(\"span\");\n  element.setAttribute(\"data-radix-focus-guard\", \"\");\n  element.tabIndex = 0;\n  element.style.outline = \"none\";\n  element.style.opacity = \"0\";\n  element.style.position = \"fixed\";\n  element.style.pointerEvents = \"none\";\n  return element;\n}\n\n// node_modules/react-remove-scroll/node_modules/tslib/tslib.es6.mjs\nvar __assign = function() {\n  __assign = Object.assign || function __assign3(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n      for (var p in s)\n        if (Object.prototype.hasOwnProperty.call(s, p))\n          t[p] = s[p];\n    }\n    return t;\n  };\n  return __assign.apply(this, arguments);\n};\nfunction __rest(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n}\nfunction __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2)\n    for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n        if (!ar)\n          ar = Array.prototype.slice.call(from, 0, i);\n        ar[i] = from[i];\n      }\n    }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\n// node_modules/react-remove-scroll/dist/es2015/Combination.js\nvar React24 = __toESM(require_react());\n\n// node_modules/react-remove-scroll/dist/es2015/UI.js\nvar React19 = __toESM(require_react());\n\n// node_modules/react-remove-scroll-bar/dist/es2015/constants.js\nvar zeroRightClassName = \"right-scroll-bar-position\";\nvar fullWidthClassName = \"width-before-scroll-bar\";\nvar noScrollbarsClassName = \"with-scroll-bars-hidden\";\nvar removedBarSizeVariable = \"--removed-body-scroll-bar-size\";\n\n// node_modules/use-callback-ref/dist/es2015/assignRef.js\nfunction assignRef(ref, value) {\n  if (typeof ref === \"function\") {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n  return ref;\n}\n\n// node_modules/use-callback-ref/dist/es2015/useRef.js\nvar import_react3 = __toESM(require_react());\nfunction useCallbackRef2(initialValue, callback) {\n  var ref = (0, import_react3.useState)(function() {\n    return {\n      // value\n      value: initialValue,\n      // last callback\n      callback,\n      // \"memoized\" public interface\n      facade: {\n        get current() {\n          return ref.value;\n        },\n        set current(value) {\n          var last = ref.value;\n          if (last !== value) {\n            ref.value = value;\n            ref.callback(value, last);\n          }\n        }\n      }\n    };\n  })[0];\n  ref.callback = callback;\n  return ref.facade;\n}\n\n// node_modules/use-callback-ref/dist/es2015/useMergeRef.js\nvar React15 = __toESM(require_react());\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? React15.useLayoutEffect : React15.useEffect;\nvar currentValues = /* @__PURE__ */ new WeakMap();\nfunction useMergeRefs(refs, defaultValue) {\n  var callbackRef = useCallbackRef2(defaultValue || null, function(newValue) {\n    return refs.forEach(function(ref) {\n      return assignRef(ref, newValue);\n    });\n  });\n  useIsomorphicLayoutEffect(function() {\n    var oldValue = currentValues.get(callbackRef);\n    if (oldValue) {\n      var prevRefs_1 = new Set(oldValue);\n      var nextRefs_1 = new Set(refs);\n      var current_1 = callbackRef.current;\n      prevRefs_1.forEach(function(ref) {\n        if (!nextRefs_1.has(ref)) {\n          assignRef(ref, null);\n        }\n      });\n      nextRefs_1.forEach(function(ref) {\n        if (!prevRefs_1.has(ref)) {\n          assignRef(ref, current_1);\n        }\n      });\n    }\n    currentValues.set(callbackRef, refs);\n  }, [refs]);\n  return callbackRef;\n}\n\n// node_modules/use-sidecar/node_modules/tslib/tslib.es6.mjs\nvar __assign2 = function() {\n  __assign2 = Object.assign || function __assign3(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n      for (var p in s)\n        if (Object.prototype.hasOwnProperty.call(s, p))\n          t[p] = s[p];\n    }\n    return t;\n  };\n  return __assign2.apply(this, arguments);\n};\nfunction __rest2(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n}\n\n// node_modules/use-sidecar/dist/es2015/hoc.js\nvar React16 = __toESM(require_react());\n\n// node_modules/use-sidecar/dist/es2015/hook.js\nvar import_react4 = __toESM(require_react());\n\n// node_modules/use-sidecar/dist/es2015/medium.js\nfunction ItoI(a) {\n  return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n  if (middleware === void 0) {\n    middleware = ItoI;\n  }\n  var buffer = [];\n  var assigned = false;\n  var medium = {\n    read: function() {\n      if (assigned) {\n        throw new Error(\"Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.\");\n      }\n      if (buffer.length) {\n        return buffer[buffer.length - 1];\n      }\n      return defaults;\n    },\n    useMedium: function(data) {\n      var item = middleware(data, assigned);\n      buffer.push(item);\n      return function() {\n        buffer = buffer.filter(function(x) {\n          return x !== item;\n        });\n      };\n    },\n    assignSyncMedium: function(cb) {\n      assigned = true;\n      while (buffer.length) {\n        var cbs = buffer;\n        buffer = [];\n        cbs.forEach(cb);\n      }\n      buffer = {\n        push: function(x) {\n          return cb(x);\n        },\n        filter: function() {\n          return buffer;\n        }\n      };\n    },\n    assignMedium: function(cb) {\n      assigned = true;\n      var pendingQueue = [];\n      if (buffer.length) {\n        var cbs = buffer;\n        buffer = [];\n        cbs.forEach(cb);\n        pendingQueue = buffer;\n      }\n      var executeQueue = function() {\n        var cbs2 = pendingQueue;\n        pendingQueue = [];\n        cbs2.forEach(cb);\n      };\n      var cycle = function() {\n        return Promise.resolve().then(executeQueue);\n      };\n      cycle();\n      buffer = {\n        push: function(x) {\n          pendingQueue.push(x);\n          cycle();\n        },\n        filter: function(filter) {\n          pendingQueue = pendingQueue.filter(filter);\n          return buffer;\n        }\n      };\n    }\n  };\n  return medium;\n}\nfunction createSidecarMedium(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  var medium = innerCreateMedium(null);\n  medium.options = __assign2({ async: true, ssr: false }, options);\n  return medium;\n}\n\n// node_modules/use-sidecar/dist/es2015/renderProp.js\nvar React17 = __toESM(require_react());\nvar import_react5 = __toESM(require_react());\n\n// node_modules/use-sidecar/dist/es2015/exports.js\nvar React18 = __toESM(require_react());\nvar SideCar = function(_a) {\n  var sideCar = _a.sideCar, rest = __rest2(_a, [\"sideCar\"]);\n  if (!sideCar) {\n    throw new Error(\"Sidecar: please provide `sideCar` property to import the right car\");\n  }\n  var Target = sideCar.read();\n  if (!Target) {\n    throw new Error(\"Sidecar medium not found\");\n  }\n  return React18.createElement(Target, __assign2({}, rest));\n};\nSideCar.isSideCarExport = true;\nfunction exportSidecar(medium, exported) {\n  medium.useMedium(exported);\n  return SideCar;\n}\n\n// node_modules/react-remove-scroll/dist/es2015/medium.js\nvar effectCar = createSidecarMedium();\n\n// node_modules/react-remove-scroll/dist/es2015/UI.js\nvar nothing = function() {\n  return;\n};\nvar RemoveScroll = React19.forwardRef(function(props, parentRef) {\n  var ref = React19.useRef(null);\n  var _a = React19.useState({\n    onScrollCapture: nothing,\n    onWheelCapture: nothing,\n    onTouchMoveCapture: nothing\n  }), callbacks = _a[0], setCallbacks = _a[1];\n  var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container2 = _b === void 0 ? \"div\" : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n  var SideCar2 = sideCar;\n  var containerRef = useMergeRefs([ref, parentRef]);\n  var containerProps = __assign(__assign({}, rest), callbacks);\n  return React19.createElement(\n    React19.Fragment,\n    null,\n    enabled && React19.createElement(SideCar2, { sideCar: effectCar, removeScrollBar, shards, noIsolation, inert, setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode }),\n    forwardProps ? React19.cloneElement(React19.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef })) : React19.createElement(Container2, __assign({}, containerProps, { className, ref: containerRef }), children)\n  );\n});\nRemoveScroll.defaultProps = {\n  enabled: true,\n  removeScrollBar: true,\n  inert: false\n};\nRemoveScroll.classNames = {\n  fullWidth: fullWidthClassName,\n  zeroRight: zeroRightClassName\n};\n\n// node_modules/react-remove-scroll/dist/es2015/SideEffect.js\nvar React23 = __toESM(require_react());\n\n// node_modules/react-remove-scroll-bar/dist/es2015/component.js\nvar React21 = __toESM(require_react());\n\n// node_modules/react-style-singleton/dist/es2015/hook.js\nvar React20 = __toESM(require_react());\n\n// node_modules/get-nonce/dist/es2015/index.js\nvar currentNonce;\nvar getNonce = function() {\n  if (currentNonce) {\n    return currentNonce;\n  }\n  if (typeof __webpack_nonce__ !== \"undefined\") {\n    return __webpack_nonce__;\n  }\n  return void 0;\n};\n\n// node_modules/react-style-singleton/dist/es2015/singleton.js\nfunction makeStyleTag() {\n  if (!document)\n    return null;\n  var tag = document.createElement(\"style\");\n  tag.type = \"text/css\";\n  var nonce = getNonce();\n  if (nonce) {\n    tag.setAttribute(\"nonce\", nonce);\n  }\n  return tag;\n}\nfunction injectStyles(tag, css) {\n  if (tag.styleSheet) {\n    tag.styleSheet.cssText = css;\n  } else {\n    tag.appendChild(document.createTextNode(css));\n  }\n}\nfunction insertStyleTag(tag) {\n  var head = document.head || document.getElementsByTagName(\"head\")[0];\n  head.appendChild(tag);\n}\nvar stylesheetSingleton = function() {\n  var counter = 0;\n  var stylesheet = null;\n  return {\n    add: function(style) {\n      if (counter == 0) {\n        if (stylesheet = makeStyleTag()) {\n          injectStyles(stylesheet, style);\n          insertStyleTag(stylesheet);\n        }\n      }\n      counter++;\n    },\n    remove: function() {\n      counter--;\n      if (!counter && stylesheet) {\n        stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n        stylesheet = null;\n      }\n    }\n  };\n};\n\n// node_modules/react-style-singleton/dist/es2015/hook.js\nvar styleHookSingleton = function() {\n  var sheet = stylesheetSingleton();\n  return function(styles, isDynamic) {\n    React20.useEffect(function() {\n      sheet.add(styles);\n      return function() {\n        sheet.remove();\n      };\n    }, [styles && isDynamic]);\n  };\n};\n\n// node_modules/react-style-singleton/dist/es2015/component.js\nvar styleSingleton = function() {\n  var useStyle = styleHookSingleton();\n  var Sheet = function(_a) {\n    var styles = _a.styles, dynamic = _a.dynamic;\n    useStyle(styles, dynamic);\n    return null;\n  };\n  return Sheet;\n};\n\n// node_modules/react-remove-scroll-bar/dist/es2015/utils.js\nvar zeroGap = {\n  left: 0,\n  top: 0,\n  right: 0,\n  gap: 0\n};\nvar parse = function(x) {\n  return parseInt(x || \"\", 10) || 0;\n};\nvar getOffset = function(gapMode) {\n  var cs = window.getComputedStyle(document.body);\n  var left = cs[gapMode === \"padding\" ? \"paddingLeft\" : \"marginLeft\"];\n  var top = cs[gapMode === \"padding\" ? \"paddingTop\" : \"marginTop\"];\n  var right = cs[gapMode === \"padding\" ? \"paddingRight\" : \"marginRight\"];\n  return [parse(left), parse(top), parse(right)];\n};\nvar getGapWidth = function(gapMode) {\n  if (gapMode === void 0) {\n    gapMode = \"margin\";\n  }\n  if (typeof window === \"undefined\") {\n    return zeroGap;\n  }\n  var offsets = getOffset(gapMode);\n  var documentWidth = document.documentElement.clientWidth;\n  var windowWidth = window.innerWidth;\n  return {\n    left: offsets[0],\n    top: offsets[1],\n    right: offsets[2],\n    gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0])\n  };\n};\n\n// node_modules/react-remove-scroll-bar/dist/es2015/component.js\nvar Style = styleSingleton();\nvar lockAttribute = \"data-scroll-locked\";\nvar getStyles = function(_a, allowRelative, gapMode, important) {\n  var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n  if (gapMode === void 0) {\n    gapMode = \"margin\";\n  }\n  return \"\\n  .\".concat(noScrollbarsClassName, \" {\\n   overflow: hidden \").concat(important, \";\\n   padding-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  body[\").concat(lockAttribute, \"] {\\n    overflow: hidden \").concat(important, \";\\n    overscroll-behavior: contain;\\n    \").concat([\n    allowRelative && \"position: relative \".concat(important, \";\"),\n    gapMode === \"margin\" && \"\\n    padding-left: \".concat(left, \"px;\\n    padding-top: \").concat(top, \"px;\\n    padding-right: \").concat(right, \"px;\\n    margin-left:0;\\n    margin-top:0;\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n    \"),\n    gapMode === \"padding\" && \"padding-right: \".concat(gap, \"px \").concat(important, \";\")\n  ].filter(Boolean).join(\"\"), \"\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" {\\n    right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" {\\n    margin-right: \").concat(gap, \"px \").concat(important, \";\\n  }\\n  \\n  .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n    right: 0 \").concat(important, \";\\n  }\\n  \\n  .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n    margin-right: 0 \").concat(important, \";\\n  }\\n  \\n  body[\").concat(lockAttribute, \"] {\\n    \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n  }\\n\");\n};\nvar getCurrentUseCounter = function() {\n  var counter = parseInt(document.body.getAttribute(lockAttribute) || \"0\", 10);\n  return isFinite(counter) ? counter : 0;\n};\nvar useLockAttribute = function() {\n  React21.useEffect(function() {\n    document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n    return function() {\n      var newCounter = getCurrentUseCounter() - 1;\n      if (newCounter <= 0) {\n        document.body.removeAttribute(lockAttribute);\n      } else {\n        document.body.setAttribute(lockAttribute, newCounter.toString());\n      }\n    };\n  }, []);\n};\nvar RemoveScrollBar = function(_a) {\n  var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? \"margin\" : _b;\n  useLockAttribute();\n  var gap = React21.useMemo(function() {\n    return getGapWidth(gapMode);\n  }, [gapMode]);\n  return React21.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? \"!important\" : \"\") });\n};\n\n// node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js\nvar passiveSupported = false;\nif (typeof window !== \"undefined\") {\n  try {\n    options = Object.defineProperty({}, \"passive\", {\n      get: function() {\n        passiveSupported = true;\n        return true;\n      }\n    });\n    window.addEventListener(\"test\", options, options);\n    window.removeEventListener(\"test\", options, options);\n  } catch (err) {\n    passiveSupported = false;\n  }\n}\nvar options;\nvar nonPassive = passiveSupported ? { passive: false } : false;\n\n// node_modules/react-remove-scroll/dist/es2015/handleScroll.js\nvar alwaysContainsScroll = function(node) {\n  return node.tagName === \"TEXTAREA\";\n};\nvar elementCanBeScrolled = function(node, overflow) {\n  if (!(node instanceof Element)) {\n    return false;\n  }\n  var styles = window.getComputedStyle(node);\n  return (\n    // not-not-scrollable\n    styles[overflow] !== \"hidden\" && // contains scroll inside self\n    !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === \"visible\")\n  );\n};\nvar elementCouldBeVScrolled = function(node) {\n  return elementCanBeScrolled(node, \"overflowY\");\n};\nvar elementCouldBeHScrolled = function(node) {\n  return elementCanBeScrolled(node, \"overflowX\");\n};\nvar locationCouldBeScrolled = function(axis, node) {\n  var ownerDocument = node.ownerDocument;\n  var current = node;\n  do {\n    if (typeof ShadowRoot !== \"undefined\" && current instanceof ShadowRoot) {\n      current = current.host;\n    }\n    var isScrollable = elementCouldBeScrolled(axis, current);\n    if (isScrollable) {\n      var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n      if (scrollHeight > clientHeight) {\n        return true;\n      }\n    }\n    current = current.parentNode;\n  } while (current && current !== ownerDocument.body);\n  return false;\n};\nvar getVScrollVariables = function(_a) {\n  var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n  return [\n    scrollTop,\n    scrollHeight,\n    clientHeight\n  ];\n};\nvar getHScrollVariables = function(_a) {\n  var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n  return [\n    scrollLeft,\n    scrollWidth,\n    clientWidth\n  ];\n};\nvar elementCouldBeScrolled = function(axis, node) {\n  return axis === \"v\" ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function(axis, node) {\n  return axis === \"v\" ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function(axis, direction) {\n  return axis === \"h\" && direction === \"rtl\" ? -1 : 1;\n};\nvar handleScroll = function(axis, endTarget, event, sourceDelta, noOverscroll) {\n  var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n  var delta = directionFactor * sourceDelta;\n  var target = event.target;\n  var targetInLock = endTarget.contains(target);\n  var shouldCancelScroll = false;\n  var isDeltaPositive = delta > 0;\n  var availableScroll = 0;\n  var availableScrollTop = 0;\n  do {\n    var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n    var elementScroll = scroll_1 - capacity - directionFactor * position;\n    if (position || elementScroll) {\n      if (elementCouldBeScrolled(axis, target)) {\n        availableScroll += elementScroll;\n        availableScrollTop += position;\n      }\n    }\n    if (target instanceof ShadowRoot) {\n      target = target.host;\n    } else {\n      target = target.parentNode;\n    }\n  } while (\n    // portaled content\n    !targetInLock && target !== document.body || // self content\n    targetInLock && (endTarget.contains(target) || endTarget === target)\n  );\n  if (isDeltaPositive && (noOverscroll && Math.abs(availableScroll) < 1 || !noOverscroll && delta > availableScroll)) {\n    shouldCancelScroll = true;\n  } else if (!isDeltaPositive && (noOverscroll && Math.abs(availableScrollTop) < 1 || !noOverscroll && -delta > availableScrollTop)) {\n    shouldCancelScroll = true;\n  }\n  return shouldCancelScroll;\n};\n\n// node_modules/react-remove-scroll/dist/es2015/SideEffect.js\nvar getTouchXY = function(event) {\n  return \"changedTouches\" in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nvar getDeltaXY = function(event) {\n  return [event.deltaX, event.deltaY];\n};\nvar extractRef = function(ref) {\n  return ref && \"current\" in ref ? ref.current : ref;\n};\nvar deltaCompare = function(x, y) {\n  return x[0] === y[0] && x[1] === y[1];\n};\nvar generateStyle = function(id) {\n  return \"\\n  .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n  .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\");\n};\nvar idCounter = 0;\nvar lockStack = [];\nfunction RemoveScrollSideCar(props) {\n  var shouldPreventQueue = React23.useRef([]);\n  var touchStartRef = React23.useRef([0, 0]);\n  var activeAxis = React23.useRef();\n  var id = React23.useState(idCounter++)[0];\n  var Style2 = React23.useState(styleSingleton)[0];\n  var lastProps = React23.useRef(props);\n  React23.useEffect(function() {\n    lastProps.current = props;\n  }, [props]);\n  React23.useEffect(function() {\n    if (props.inert) {\n      document.body.classList.add(\"block-interactivity-\".concat(id));\n      var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n      allow_1.forEach(function(el) {\n        return el.classList.add(\"allow-interactivity-\".concat(id));\n      });\n      return function() {\n        document.body.classList.remove(\"block-interactivity-\".concat(id));\n        allow_1.forEach(function(el) {\n          return el.classList.remove(\"allow-interactivity-\".concat(id));\n        });\n      };\n    }\n    return;\n  }, [props.inert, props.lockRef.current, props.shards]);\n  var shouldCancelEvent = React23.useCallback(function(event, parent) {\n    if (\"touches\" in event && event.touches.length === 2 || event.type === \"wheel\" && event.ctrlKey) {\n      return !lastProps.current.allowPinchZoom;\n    }\n    var touch = getTouchXY(event);\n    var touchStart = touchStartRef.current;\n    var deltaX = \"deltaX\" in event ? event.deltaX : touchStart[0] - touch[0];\n    var deltaY = \"deltaY\" in event ? event.deltaY : touchStart[1] - touch[1];\n    var currentAxis;\n    var target = event.target;\n    var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? \"h\" : \"v\";\n    if (\"touches\" in event && moveDirection === \"h\" && target.type === \"range\") {\n      return false;\n    }\n    var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n    if (!canBeScrolledInMainDirection) {\n      return true;\n    }\n    if (canBeScrolledInMainDirection) {\n      currentAxis = moveDirection;\n    } else {\n      currentAxis = moveDirection === \"v\" ? \"h\" : \"v\";\n      canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n    }\n    if (!canBeScrolledInMainDirection) {\n      return false;\n    }\n    if (!activeAxis.current && \"changedTouches\" in event && (deltaX || deltaY)) {\n      activeAxis.current = currentAxis;\n    }\n    if (!currentAxis) {\n      return true;\n    }\n    var cancelingAxis = activeAxis.current || currentAxis;\n    return handleScroll(cancelingAxis, parent, event, cancelingAxis === \"h\" ? deltaX : deltaY, true);\n  }, []);\n  var shouldPrevent = React23.useCallback(function(_event) {\n    var event = _event;\n    if (!lockStack.length || lockStack[lockStack.length - 1] !== Style2) {\n      return;\n    }\n    var delta = \"deltaY\" in event ? getDeltaXY(event) : getTouchXY(event);\n    var sourceEvent = shouldPreventQueue.current.filter(function(e) {\n      return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta);\n    })[0];\n    if (sourceEvent && sourceEvent.should) {\n      if (event.cancelable) {\n        event.preventDefault();\n      }\n      return;\n    }\n    if (!sourceEvent) {\n      var shardNodes = (lastProps.current.shards || []).map(extractRef).filter(Boolean).filter(function(node) {\n        return node.contains(event.target);\n      });\n      var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n      if (shouldStop) {\n        if (event.cancelable) {\n          event.preventDefault();\n        }\n      }\n    }\n  }, []);\n  var shouldCancel = React23.useCallback(function(name, delta, target, should) {\n    var event = { name, delta, target, should, shadowParent: getOutermostShadowParent(target) };\n    shouldPreventQueue.current.push(event);\n    setTimeout(function() {\n      shouldPreventQueue.current = shouldPreventQueue.current.filter(function(e) {\n        return e !== event;\n      });\n    }, 1);\n  }, []);\n  var scrollTouchStart = React23.useCallback(function(event) {\n    touchStartRef.current = getTouchXY(event);\n    activeAxis.current = void 0;\n  }, []);\n  var scrollWheel = React23.useCallback(function(event) {\n    shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n  }, []);\n  var scrollTouchMove = React23.useCallback(function(event) {\n    shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n  }, []);\n  React23.useEffect(function() {\n    lockStack.push(Style2);\n    props.setCallbacks({\n      onScrollCapture: scrollWheel,\n      onWheelCapture: scrollWheel,\n      onTouchMoveCapture: scrollTouchMove\n    });\n    document.addEventListener(\"wheel\", shouldPrevent, nonPassive);\n    document.addEventListener(\"touchmove\", shouldPrevent, nonPassive);\n    document.addEventListener(\"touchstart\", scrollTouchStart, nonPassive);\n    return function() {\n      lockStack = lockStack.filter(function(inst) {\n        return inst !== Style2;\n      });\n      document.removeEventListener(\"wheel\", shouldPrevent, nonPassive);\n      document.removeEventListener(\"touchmove\", shouldPrevent, nonPassive);\n      document.removeEventListener(\"touchstart\", scrollTouchStart, nonPassive);\n    };\n  }, []);\n  var removeScrollBar = props.removeScrollBar, inert = props.inert;\n  return React23.createElement(\n    React23.Fragment,\n    null,\n    inert ? React23.createElement(Style2, { styles: generateStyle(id) }) : null,\n    removeScrollBar ? React23.createElement(RemoveScrollBar, { gapMode: props.gapMode }) : null\n  );\n}\nfunction getOutermostShadowParent(node) {\n  var shadowParent = null;\n  while (node !== null) {\n    if (node instanceof ShadowRoot) {\n      shadowParent = node.host;\n      node = node.host;\n    }\n    node = node.parentNode;\n  }\n  return shadowParent;\n}\n\n// node_modules/react-remove-scroll/dist/es2015/sidecar.js\nvar sidecar_default = exportSidecar(effectCar, RemoveScrollSideCar);\n\n// node_modules/react-remove-scroll/dist/es2015/Combination.js\nvar ReactRemoveScroll = React24.forwardRef(function(props, ref) {\n  return React24.createElement(RemoveScroll, __assign({}, props, { ref, sideCar: sidecar_default }));\n});\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nvar Combination_default = ReactRemoveScroll;\n\n// node_modules/aria-hidden/dist/es2015/index.js\nvar getDefaultParent = function(originalTarget) {\n  if (typeof document === \"undefined\") {\n    return null;\n  }\n  var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n  return sampleTarget.ownerDocument.body;\n};\nvar counterMap = /* @__PURE__ */ new WeakMap();\nvar uncontrolledNodes = /* @__PURE__ */ new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function(node) {\n  return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function(parent, targets) {\n  return targets.map(function(target) {\n    if (parent.contains(target)) {\n      return target;\n    }\n    var correctedTarget = unwrapHost(target);\n    if (correctedTarget && parent.contains(correctedTarget)) {\n      return correctedTarget;\n    }\n    console.error(\"aria-hidden\", target, \"in not contained inside\", parent, \". Doing nothing\");\n    return null;\n  }).filter(function(x) {\n    return Boolean(x);\n  });\n};\nvar applyAttributeToOthers = function(originalTarget, parentNode, markerName, controlAttribute) {\n  var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n  if (!markerMap[markerName]) {\n    markerMap[markerName] = /* @__PURE__ */ new WeakMap();\n  }\n  var markerCounter = markerMap[markerName];\n  var hiddenNodes = [];\n  var elementsToKeep = /* @__PURE__ */ new Set();\n  var elementsToStop = new Set(targets);\n  var keep = function(el) {\n    if (!el || elementsToKeep.has(el)) {\n      return;\n    }\n    elementsToKeep.add(el);\n    keep(el.parentNode);\n  };\n  targets.forEach(keep);\n  var deep = function(parent) {\n    if (!parent || elementsToStop.has(parent)) {\n      return;\n    }\n    Array.prototype.forEach.call(parent.children, function(node) {\n      if (elementsToKeep.has(node)) {\n        deep(node);\n      } else {\n        try {\n          var attr = node.getAttribute(controlAttribute);\n          var alreadyHidden = attr !== null && attr !== \"false\";\n          var counterValue = (counterMap.get(node) || 0) + 1;\n          var markerValue = (markerCounter.get(node) || 0) + 1;\n          counterMap.set(node, counterValue);\n          markerCounter.set(node, markerValue);\n          hiddenNodes.push(node);\n          if (counterValue === 1 && alreadyHidden) {\n            uncontrolledNodes.set(node, true);\n          }\n          if (markerValue === 1) {\n            node.setAttribute(markerName, \"true\");\n          }\n          if (!alreadyHidden) {\n            node.setAttribute(controlAttribute, \"true\");\n          }\n        } catch (e) {\n          console.error(\"aria-hidden: cannot operate on \", node, e);\n        }\n      }\n    });\n  };\n  deep(parentNode);\n  elementsToKeep.clear();\n  lockCount++;\n  return function() {\n    hiddenNodes.forEach(function(node) {\n      var counterValue = counterMap.get(node) - 1;\n      var markerValue = markerCounter.get(node) - 1;\n      counterMap.set(node, counterValue);\n      markerCounter.set(node, markerValue);\n      if (!counterValue) {\n        if (!uncontrolledNodes.has(node)) {\n          node.removeAttribute(controlAttribute);\n        }\n        uncontrolledNodes.delete(node);\n      }\n      if (!markerValue) {\n        node.removeAttribute(markerName);\n      }\n    });\n    lockCount--;\n    if (!lockCount) {\n      counterMap = /* @__PURE__ */ new WeakMap();\n      counterMap = /* @__PURE__ */ new WeakMap();\n      uncontrolledNodes = /* @__PURE__ */ new WeakMap();\n      markerMap = {};\n    }\n  };\n};\nvar hideOthers = function(originalTarget, parentNode, markerName) {\n  if (markerName === void 0) {\n    markerName = \"data-aria-hidden\";\n  }\n  var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n  var activeParentNode = parentNode || getDefaultParent(originalTarget);\n  if (!activeParentNode) {\n    return function() {\n      return null;\n    };\n  }\n  targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll(\"[aria-live]\")));\n  return applyAttributeToOthers(targets, activeParentNode, markerName, \"aria-hidden\");\n};\n\n// node_modules/@radix-ui/react-dialog/dist/index.mjs\nvar import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n  const {\n    __scopeDialog,\n    children,\n    open: openProp,\n    defaultOpen,\n    onOpenChange,\n    modal = true\n  } = props;\n  const triggerRef = React25.useRef(null);\n  const contentRef = React25.useRef(null);\n  const [open = false, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen,\n    onChange: onOpenChange\n  });\n  return (0, import_jsx_runtime9.jsx)(\n    DialogProvider,\n    {\n      scope: __scopeDialog,\n      triggerRef,\n      contentRef,\n      contentId: useId(),\n      titleId: useId(),\n      descriptionId: useId(),\n      open,\n      onOpenChange: setOpen,\n      onOpenToggle: React25.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n      modal,\n      children\n    }\n  );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React25.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...triggerProps } = props;\n    const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n    const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n    return (0, import_jsx_runtime9.jsx)(\n      Primitive.button,\n      {\n        type: \"button\",\n        \"aria-haspopup\": \"dialog\",\n        \"aria-expanded\": context.open,\n        \"aria-controls\": context.contentId,\n        \"data-state\": getState(context.open),\n        ...triggerProps,\n        ref: composedTriggerRef,\n        onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n      }\n    );\n  }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME2 = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME2, {\n  forceMount: void 0\n});\nvar DialogPortal = (props) => {\n  const { __scopeDialog, forceMount, children, container } = props;\n  const context = useDialogContext(PORTAL_NAME2, __scopeDialog);\n  return (0, import_jsx_runtime9.jsx)(PortalProvider, { scope: __scopeDialog, forceMount, children: React25.Children.map(children, (child) => (0, import_jsx_runtime9.jsx)(Presence, { present: forceMount || context.open, children: (0, import_jsx_runtime9.jsx)(Portal, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME2;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React25.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n    return context.modal ? (0, import_jsx_runtime9.jsx)(Presence, { present: forceMount || context.open, children: (0, import_jsx_runtime9.jsx)(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n  }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar DialogOverlayImpl = React25.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...overlayProps } = props;\n    const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n    return (\n      // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n      // ie. when `Overlay` and `Content` are siblings\n      (0, import_jsx_runtime9.jsx)(Combination_default, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: (0, import_jsx_runtime9.jsx)(\n        Primitive.div,\n        {\n          \"data-state\": getState(context.open),\n          ...overlayProps,\n          ref: forwardedRef,\n          style: { pointerEvents: \"auto\", ...overlayProps.style }\n        }\n      ) })\n    );\n  }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React25.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n    const { forceMount = portalContext.forceMount, ...contentProps } = props;\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    return (0, import_jsx_runtime9.jsx)(Presence, { present: forceMount || context.open, children: context.modal ? (0, import_jsx_runtime9.jsx)(DialogContentModal, { ...contentProps, ref: forwardedRef }) : (0, import_jsx_runtime9.jsx)(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n  }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React25.forwardRef(\n  (props, forwardedRef) => {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const contentRef = React25.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n    React25.useEffect(() => {\n      const content = contentRef.current;\n      if (content)\n        return hideOthers(content);\n    }, []);\n    return (0, import_jsx_runtime9.jsx)(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: composedRefs,\n        trapFocus: context.open,\n        disableOutsidePointerEvents: true,\n        onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n          var _a;\n          event.preventDefault();\n          (_a = context.triggerRef.current) == null ? void 0 : _a.focus();\n        }),\n        onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n          const originalEvent = event.detail.originalEvent;\n          const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n          const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n          if (isRightClick)\n            event.preventDefault();\n        }),\n        onFocusOutside: composeEventHandlers(\n          props.onFocusOutside,\n          (event) => event.preventDefault()\n        )\n      }\n    );\n  }\n);\nvar DialogContentNonModal = React25.forwardRef(\n  (props, forwardedRef) => {\n    const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n    const hasInteractedOutsideRef = React25.useRef(false);\n    const hasPointerDownOutsideRef = React25.useRef(false);\n    return (0, import_jsx_runtime9.jsx)(\n      DialogContentImpl,\n      {\n        ...props,\n        ref: forwardedRef,\n        trapFocus: false,\n        disableOutsidePointerEvents: false,\n        onCloseAutoFocus: (event) => {\n          var _a, _b;\n          (_a = props.onCloseAutoFocus) == null ? void 0 : _a.call(props, event);\n          if (!event.defaultPrevented) {\n            if (!hasInteractedOutsideRef.current)\n              (_b = context.triggerRef.current) == null ? void 0 : _b.focus();\n            event.preventDefault();\n          }\n          hasInteractedOutsideRef.current = false;\n          hasPointerDownOutsideRef.current = false;\n        },\n        onInteractOutside: (event) => {\n          var _a, _b;\n          (_a = props.onInteractOutside) == null ? void 0 : _a.call(props, event);\n          if (!event.defaultPrevented) {\n            hasInteractedOutsideRef.current = true;\n            if (event.detail.originalEvent.type === \"pointerdown\") {\n              hasPointerDownOutsideRef.current = true;\n            }\n          }\n          const target = event.target;\n          const targetIsTrigger = (_b = context.triggerRef.current) == null ? void 0 : _b.contains(target);\n          if (targetIsTrigger)\n            event.preventDefault();\n          if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n            event.preventDefault();\n          }\n        }\n      }\n    );\n  }\n);\nvar DialogContentImpl = React25.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n    const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n    const contentRef = React25.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, contentRef);\n    useFocusGuards();\n    return (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [\n      (0, import_jsx_runtime9.jsx)(\n        FocusScope,\n        {\n          asChild: true,\n          loop: true,\n          trapped: trapFocus,\n          onMountAutoFocus: onOpenAutoFocus,\n          onUnmountAutoFocus: onCloseAutoFocus,\n          children: (0, import_jsx_runtime9.jsx)(\n            DismissableLayer,\n            {\n              role: \"dialog\",\n              id: context.contentId,\n              \"aria-describedby\": context.descriptionId,\n              \"aria-labelledby\": context.titleId,\n              \"data-state\": getState(context.open),\n              ...contentProps,\n              ref: composedRefs,\n              onDismiss: () => context.onOpenChange(false)\n            }\n          )\n        }\n      ),\n      (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [\n        (0, import_jsx_runtime9.jsx)(TitleWarning, { titleId: context.titleId }),\n        (0, import_jsx_runtime9.jsx)(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n      ] })\n    ] });\n  }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React25.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...titleProps } = props;\n    const context = useDialogContext(TITLE_NAME, __scopeDialog);\n    return (0, import_jsx_runtime9.jsx)(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n  }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React25.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...descriptionProps } = props;\n    const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n    return (0, import_jsx_runtime9.jsx)(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n  }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React25.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeDialog, ...closeProps } = props;\n    const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n    return (0, import_jsx_runtime9.jsx)(\n      Primitive.button,\n      {\n        type: \"button\",\n        ...closeProps,\n        ref: forwardedRef,\n        onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n      }\n    );\n  }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n  return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext2(TITLE_WARNING_NAME, {\n  contentName: CONTENT_NAME,\n  titleName: TITLE_NAME,\n  docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n  const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n  const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n  React25.useEffect(() => {\n    if (titleId) {\n      const hasTitle = document.getElementById(titleId);\n      if (!hasTitle)\n        console.error(MESSAGE);\n    }\n  }, [MESSAGE, titleId]);\n  return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n  const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n  const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n  React25.useEffect(() => {\n    var _a;\n    const describedById = (_a = contentRef.current) == null ? void 0 : _a.getAttribute(\"aria-describedby\");\n    if (descriptionId && describedById) {\n      const hasDescription = document.getElementById(descriptionId);\n      if (!hasDescription)\n        console.warn(MESSAGE);\n    }\n  }, [MESSAGE, contentRef, descriptionId]);\n  return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal2 = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Close = DialogClose;\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Modal.js\nvar import_react7 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Overlay.js\nvar Overlay2 = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    backgroundColor: theme.colors.modalOverlayBg,\n    zIndex: 9999,\n    position: \"fixed\",\n    inset: 0,\n    animation: `${fadeInAnimation} 400ms cubic-bezier(0.16, 1, 0.3, 1)`,\n    backdropFilter: \"blur(10px)\"\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Modal.js\nvar Modal = (props) => {\n  const [open, setOpen] = (0, import_react7.useState)(props.open);\n  const contentRef = (0, import_react7.useRef)(null);\n  const overlayRef = (0, import_react7.useRef)(null);\n  (0, import_react7.useEffect)(() => {\n    var _a;\n    if (!props.open) {\n      if (contentRef.current) {\n        const animationConfig = {\n          duration: modalCloseFadeOutDuration,\n          fill: \"forwards\",\n          easing: \"ease\"\n        };\n        contentRef.current.animate([{ opacity: 0 }], {\n          ...animationConfig\n        }).onfinish = () => {\n          setOpen(false);\n        };\n        (_a = overlayRef.current) == null ? void 0 : _a.animate([{ opacity: 0 }], {\n          ...animationConfig,\n          duration: modalCloseFadeOutDuration + 100\n        });\n      } else {\n        setOpen(props.open);\n      }\n    } else {\n      setOpen(props.open);\n    }\n  }, [props.open]);\n  return (0, import_jsx_runtime10.jsxs)(Root, { open, onOpenChange: props.setOpen, children: [props.trigger && (0, import_jsx_runtime10.jsx)(Trigger, { asChild: true, children: props.trigger }), (0, import_jsx_runtime10.jsxs)(Portal2, { children: [!props.hide && (0, import_jsx_runtime10.jsx)(Overlay, { asChild: true, children: (0, import_jsx_runtime10.jsx)(Overlay2, { ref: overlayRef }) }), (0, import_jsx_runtime10.jsx)(FocusScope, { trapped: !props.hide, children: (0, import_jsx_runtime10.jsx)(Content, { asChild: true, \"aria-describedby\": void 0, children: (0, import_jsx_runtime10.jsxs)(DialogContent2, { ref: contentRef, style: props.hide ? { width: 0, height: 0, overflow: \"hidden\", opacity: 0 } : {\n    height: props.size === \"compact\" ? \"auto\" : wideModalMaxHeight,\n    maxWidth: props.size === \"compact\" ? modalMaxWidthCompact : modalMaxWidthWide\n  }, children: [(0, import_jsx_runtime10.jsx)(Title, { style: {\n    position: \"absolute\",\n    width: \"1px\",\n    height: \"1px\",\n    padding: 0,\n    margin: \"-1px\",\n    overflow: \"hidden\",\n    clip: \"rect(0, 0, 0, 0)\",\n    whiteSpace: \"nowrap\",\n    borderWidth: 0\n  }, children: \"Connect Modal\" }), props.size === \"compact\" ? (0, import_jsx_runtime10.jsx)(DynamicHeight, { maxHeight: compactModalMaxHeight, children: props.children }) : props.children, !props.hideCloseIcon && (0, import_jsx_runtime10.jsx)(CrossContainer, { children: (0, import_jsx_runtime10.jsx)(Close, { asChild: true, children: (0, import_jsx_runtime10.jsx)(IconButton, { autoFocus: true, type: \"button\", \"aria-label\": \"Close\", children: (0, import_jsx_runtime10.jsx)(Cross2Icon, { width: iconSize.md, height: iconSize.md, style: {\n    color: \"inherit\"\n  } }) }) }) })] }) }) })] })] });\n};\nvar CrossContainer = StyledDiv({\n  position: \"absolute\",\n  top: spacing.lg,\n  right: spacing.lg,\n  transform: \"translateX(6px)\"\n});\nvar modalAnimationDesktop = keyframes`\n  from {\n    opacity: 0;\n    transform: translate(-50%, -48%) scale(0.96);\n  }\n  to {\n    opacity: 1;\n    transform: translate(-50%, -50%) scale(1);\n  }\n`;\nvar modalAnimationMobile = keyframes`\n  from {\n    opacity: 0;\n    transform: translate(0, 50%);\n  }\n  to {\n    opacity: 1;\n    transform: translate(0, 0);\n  }\n`;\nvar DialogContent2 = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    zIndex: 1e4,\n    background: theme.colors.modalBg,\n    \"--bg\": theme.colors.modalBg,\n    color: theme.colors.primaryText,\n    borderRadius: radius.lg,\n    position: \"fixed\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\",\n    width: \"calc(100vw - 40px)\",\n    boxSizing: \"border-box\",\n    animation: `${modalAnimationDesktop} 300ms ease`,\n    boxShadow: shadow.lg,\n    lineHeight: \"normal\",\n    border: `1px solid ${theme.colors.borderColor}`,\n    outline: \"none\",\n    overflow: \"hidden\",\n    fontFamily: theme.fontFamily,\n    \"& *\": {\n      boxSizing: \"border-box\"\n    },\n    [media.mobile]: {\n      top: \"auto\",\n      bottom: 0,\n      left: 0,\n      right: 0,\n      transform: \"none\",\n      width: \"100vw\",\n      animation: `${modalAnimationMobile} 0.35s cubic-bezier(0.15, 1.15, 0.6, 1)`,\n      borderRadius: radius.xl,\n      borderBottomRightRadius: 0,\n      borderBottomLeftRadius: 0,\n      maxWidth: \"none !important\"\n    },\n    \"& *::selection\": {\n      backgroundColor: theme.colors.selectedTextBg,\n      color: theme.colors.selectedTextColor\n    },\n    ...noScrollBar\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Drawer.js\nvar Drawer = (0, import_react9.forwardRef)(function Drawer_(props, ref) {\n  return (0, import_jsx_runtime11.jsx)(DrawerContainer, { ref, children: (0, import_jsx_runtime11.jsx)(DynamicHeight, { children: (0, import_jsx_runtime11.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime11.jsx)(CrossContainer, { children: (0, import_jsx_runtime11.jsx)(IconButton, { type: \"button\", \"aria-label\": \"Close\", onClick: props.close, children: (0, import_jsx_runtime11.jsx)(Cross2Icon, { width: iconSize.md, height: iconSize.md, style: {\n    color: \"inherit\"\n  } }) }) }), props.children] }) }) });\n});\nvar DrawerContainer = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    zIndex: 1e4,\n    borderTopLeftRadius: radius.xl,\n    borderTopRightRadius: radius.xl,\n    background: theme.colors.modalBg,\n    position: \"absolute\",\n    bottom: 0,\n    left: 0,\n    right: 0,\n    animation: `${drawerOpenAnimation} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.1)`,\n    borderTop: `1px solid ${theme.colors.borderColor}`\n  };\n});\nvar drawerOpenAnimation = keyframes`\n  from {\n    opacity: 0;\n    transform: translateY(100px);\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n`;\nvar DrawerOverlay = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    backgroundColor: theme.colors.modalOverlayBg,\n    zIndex: 9999,\n    position: \"absolute\",\n    inset: 0,\n    animation: `${fadeInAnimation} 400ms cubic-bezier(0.16, 1, 0.3, 1)`\n  };\n});\nfunction useDrawer() {\n  const [isOpen, _setIsOpen] = (0, import_react9.useState)(false);\n  const drawerRef = (0, import_react9.useRef)(null);\n  const drawerOverlayRef = (0, import_react9.useRef)(null);\n  const closeDrawerAnimation = (0, import_react9.useCallback)(() => {\n    return new Promise((resolve2) => {\n      var _a;\n      if (drawerRef.current) {\n        const animOptions = {\n          easing: \"cubic-bezier(0.175, 0.885, 0.32, 1.1)\",\n          fill: \"forwards\",\n          duration: 300\n        };\n        const closeAnimation = drawerRef.current.animate([{ transform: \"translateY(100%)\", opacity: 0 }], animOptions);\n        (_a = drawerOverlayRef.current) == null ? void 0 : _a.animate([{ opacity: 0 }], animOptions);\n        closeAnimation.onfinish = () => resolve2();\n      } else {\n        resolve2();\n      }\n    });\n  }, []);\n  const setIsOpen = (0, import_react9.useCallback)(async (value) => {\n    if (value) {\n      _setIsOpen(true);\n    } else {\n      await closeDrawerAnimation();\n      _setIsOpen(false);\n    }\n  }, [closeDrawerAnimation]);\n  (0, import_react9.useLayoutEffect)(() => {\n    if (!isOpen) {\n      return;\n    }\n    const handleClick = (event) => {\n      if (drawerRef.current && event.target instanceof Node && !drawerRef.current.contains(event.target)) {\n        setIsOpen(false);\n      }\n    };\n    requestAnimationFrame(() => {\n      document.addEventListener(\"click\", handleClick);\n    });\n    return () => {\n      document.removeEventListener(\"click\", handleClick);\n    };\n  }, [isOpen, setIsOpen]);\n  return {\n    drawerRef,\n    drawerOverlayRef,\n    setIsOpen,\n    isOpen\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/SwitchNetwork.js\nvar import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);\nvar import_react10 = __toESM(require_react(), 1);\nfunction SwitchNetworkButton(props) {\n  const [isSwitching, setIsSwitching] = (0, import_react10.useState)(false);\n  return (0, import_jsx_runtime12.jsx)(Button, { ...props, gap: \"xs\", onClick: async () => {\n    setIsSwitching(true);\n    try {\n      await props.switchChain();\n    } catch {\n    }\n    setIsSwitching(false);\n  }, children: isSwitching ? (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [\"Switching\", (0, import_jsx_runtime12.jsx)(Spinner, { size: \"sm\", color: \"accentButtonText\" })] }) : \"Switch Network\" });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/token/TokenSymbol.js\nvar import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/nativeToken.js\nvar NATIVE_TOKEN = { nativeToken: true };\nfunction isNativeToken(token) {\n  var _a;\n  return \"nativeToken\" in token || ((_a = token.address) == null ? void 0 : _a.toLowerCase()) === NATIVE_TOKEN_ADDRESS.toLowerCase();\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/token/TokenSymbol.js\nfunction TokenSymbol(props) {\n  if (!isNativeToken(props.token)) {\n    return (0, import_jsx_runtime13.jsx)(Text, { size: props.size, color: props.color || \"primaryText\", inline: props.inline, children: props.token.symbol });\n  }\n  return (0, import_jsx_runtime13.jsx)(NativeTokenSymbol, { chain: props.chain, size: props.size, color: props.color, inline: props.inline });\n}\nfunction NativeTokenSymbol(props) {\n  const chainSymbolQuery = useChainSymbol(props.chain);\n  if (chainSymbolQuery.isLoading) {\n    return (0, import_jsx_runtime13.jsx)(Skeleton, { width: \"70px\", height: fontSize[props.size] });\n  }\n  return (0, import_jsx_runtime13.jsx)(Text, { size: props.size, color: props.color || \"primaryText\", inline: props.inline, children: chainSymbolQuery.symbol ?? \"ETH\" });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js\nvar import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1);\nvar import_react51 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/auth/useSiweAuth.js\nfunction useSiweAuth(activeWallet, activeAccount, authOptions) {\n  const requiresAuth = !!authOptions;\n  const queryClient = useQueryClient();\n  const isLoggedInQuery = useQuery({\n    queryKey: [\"siwe_auth\", \"isLoggedIn\", activeAccount == null ? void 0 : activeAccount.address],\n    enabled: requiresAuth && !!(activeAccount == null ? void 0 : activeAccount.address),\n    queryFn: () => {\n      if (!authOptions || !(activeAccount == null ? void 0 : activeAccount.address)) {\n        return false;\n      }\n      return authOptions.isLoggedIn(activeAccount.address);\n    },\n    gcTime: 0,\n    placeholderData: false,\n    refetchOnWindowFocus: false\n  });\n  const loginMutation = useMutation({\n    mutationKey: [\"siwe_auth\", \"login\", activeAccount == null ? void 0 : activeAccount.address],\n    mutationFn: async () => {\n      if (!authOptions) {\n        throw new Error(\"No auth options provided\");\n      }\n      if (!activeWallet) {\n        throw new Error(\"No active wallet\");\n      }\n      const chain = activeWallet.getChain();\n      if (!chain) {\n        throw new Error(\"No active chain\");\n      }\n      if (!activeAccount) {\n        throw new Error(\"No active account\");\n      }\n      const [payload, { signLoginPayload }] = await Promise.all([\n        authOptions.getLoginPayload({\n          address: activeAccount.address,\n          chainId: chain.id\n        }),\n        // we lazy-load this because it's only needed when logging in\n        import(\"./sign-login-payload-EEOP3RDN.js\")\n      ]);\n      if (payload.chain_id) {\n        await activeWallet.switchChain(getCachedChain(Number(payload.chain_id)));\n      }\n      const signedPayload = await signLoginPayload({\n        payload,\n        account: activeAccount\n      });\n      return await authOptions.doLogin(signedPayload);\n    },\n    onSettled: () => {\n      return queryClient.invalidateQueries({\n        queryKey: [\"siwe_auth\", \"isLoggedIn\"]\n      });\n    }\n  });\n  const logoutMutation = useMutation({\n    mutationKey: [\"siwe_auth\", \"logout\", activeAccount == null ? void 0 : activeAccount.address],\n    mutationFn: async () => {\n      if (!authOptions) {\n        throw new Error(\"No auth options provided\");\n      }\n      return await authOptions.doLogout();\n    },\n    onSettled: () => {\n      return queryClient.invalidateQueries({\n        queryKey: [\"siwe_auth\", \"isLoggedIn\"]\n      });\n    }\n  });\n  return {\n    // is auth even enabled\n    requiresAuth,\n    // login\n    doLogin: loginMutation.mutateAsync,\n    isLoggingIn: loginMutation.isPending,\n    // logout\n    doLogout: logoutMutation.mutateAsync,\n    isLoggingOut: logoutMutation.isPending,\n    // checking if logged in\n    isLoggedIn: isLoggedInQuery.data,\n    isLoading: isLoggedInQuery.isFetching\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useActiveWalletConnectionStatus.js\nvar import_react11 = __toESM(require_react(), 1);\nfunction useActiveWalletConnectionStatus() {\n  const manager = useConnectionManagerCtx(\"useActiveWalletConnectionStatus\");\n  const store = manager.activeWalletConnectionStatusStore;\n  return (0, import_react11.useSyncExternalStore)(store.subscribe, store.getValue, store.getValue);\n}\n\n// node_modules/thirdweb/dist/esm/react/core/utils/defaultTokens.js\nvar wrappedEthIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSIxNiIgY3k9IjE2IiByPSIxNiIgZmlsbD0iIzYyN0VFQSIvPjxnIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyI+PHBhdGggZmlsbC1vcGFjaXR5PSIuNjAyIiBkPSJNMTYuNDk4IDR2OC44N2w3LjQ5NyAzLjM1eiIvPjxwYXRoIGQ9Ik0xNi40OTggNEw5IDE2LjIybDcuNDk4LTMuMzV6Ii8+PHBhdGggZmlsbC1vcGFjaXR5PSIuNjAyIiBkPSJNMTYuNDk4IDIxLjk2OHY2LjAyN0wyNCAxNy42MTZ6Ii8+PHBhdGggZD0iTTE2LjQ5OCAyNy45OTV2LTYuMDI4TDkgMTcuNjE2eiIvPjxwYXRoIGZpbGwtb3BhY2l0eT0iLjIiIGQ9Ik0xNi40OTggMjAuNTczbDcuNDk3LTQuMzUzLTcuNDk3LTMuMzQ4eiIvPjxwYXRoIGZpbGwtb3BhY2l0eT0iLjYwMiIgZD0iTTkgMTYuMjJsNy40OTggNC4zNTN2LTcuNzAxeiIvPjwvZz48L2c+PC9zdmc+\";\nvar tetherUsdIcon = \"data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMzkuNDMgMjk1LjI3Ij48dGl0bGU+dGV0aGVyLXVzZHQtbG9nbzwvdGl0bGU+PHBhdGggZD0iTTYyLjE1LDEuNDVsLTYxLjg5LDEzMGEyLjUyLDIuNTIsMCwwLDAsLjU0LDIuOTRMMTY3Ljk1LDI5NC41NmEyLjU1LDIuNTUsMCwwLDAsMy41MywwTDMzOC42MywxMzQuNGEyLjUyLDIuNTIsMCwwLDAsLjU0LTIuOTRsLTYxLjg5LTEzMEEyLjUsMi41LDAsMCwwLDI3NSwwSDY0LjQ1YTIuNSwyLjUsMCwwLDAtMi4zLDEuNDVoMFoiIHN0eWxlPSJmaWxsOiM1MGFmOTU7ZmlsbC1ydWxlOmV2ZW5vZGQiLz48cGF0aCBkPSJNMTkxLjE5LDE0NC44djBjLTEuMi4wOS03LjQsMC40Ni0yMS4yMywwLjQ2LTExLDAtMTguODEtLjMzLTIxLjU1LTAuNDZ2MGMtNDIuNTEtMS44Ny03NC4yNC05LjI3LTc0LjI0LTE4LjEzczMxLjczLTE2LjI1LDc0LjI0LTE4LjE1djI4LjkxYzIuNzgsMC4yLDEwLjc0LjY3LDIxLjc0LDAuNjcsMTMuMiwwLDE5LjgxLS41NSwyMS0wLjY2di0yOC45YzQyLjQyLDEuODksNzQuMDgsOS4yOSw3NC4wOCwxOC4xM3MtMzEuNjUsMTYuMjQtNzQuMDgsMTguMTJoMFptMC0zOS4yNVY3OS42OGg1OS4yVjQwLjIzSDg5LjIxVjc5LjY4SDE0OC40djI1Ljg2Yy00OC4xMSwyLjIxLTg0LjI5LDExLjc0LTg0LjI5LDIzLjE2czM2LjE4LDIwLjk0LDg0LjI5LDIzLjE2djgyLjloNDIuNzhWMTUxLjgzYzQ4LTIuMjEsODQuMTItMTEuNzMsODQuMTItMjMuMTRzLTM2LjA5LTIwLjkzLTg0LjEyLTIzLjE1aDBabTAsMGgwWiIgc3R5bGU9ImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZCIvPjwvc3ZnPg==\";\nvar usdcIcon = \"data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9Ijg2OTc3Njg0LTEyZGItNDg1MC04ZjMwLTIzM2E3YzI2N2QxMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4KICA8cGF0aCBkPSJNMTAwMCAyMDAwYzU1NC4xNyAwIDEwMDAtNDQ1LjgzIDEwMDAtMTAwMFMxNTU0LjE3IDAgMTAwMCAwIDAgNDQ1LjgzIDAgMTAwMHM0NDUuODMgMTAwMCAxMDAwIDEwMDB6IiBmaWxsPSIjMjc3NWNhIi8+CiAgPHBhdGggZD0iTTEyNzUgMTE1OC4zM2MwLTE0NS44My04Ny41LTE5NS44My0yNjIuNS0yMTYuNjYtMTI1LTE2LjY3LTE1MC01MC0xNTAtMTA4LjM0czQxLjY3LTk1LjgzIDEyNS05NS44M2M3NSAwIDExNi42NyAyNSAxMzcuNSA4Ny41IDQuMTcgMTIuNSAxNi42NyAyMC44MyAyOS4xNyAyMC44M2g2Ni42NmMxNi42NyAwIDI5LjE3LTEyLjUgMjkuMTctMjkuMTZ2LTQuMTdjLTE2LjY3LTkxLjY3LTkxLjY3LTE2Mi41LTE4Ny41LTE3MC44M3YtMTAwYzAtMTYuNjctMTIuNS0yOS4xNy0zMy4zMy0zMy4zNGgtNjIuNWMtMTYuNjcgMC0yOS4xNyAxMi41LTMzLjM0IDMzLjM0djk1LjgzYy0xMjUgMTYuNjctMjA0LjE2IDEwMC0yMDQuMTYgMjA0LjE3IDAgMTM3LjUgODMuMzMgMTkxLjY2IDI1OC4zMyAyMTIuNSAxMTYuNjcgMjAuODMgMTU0LjE3IDQ1LjgzIDE1NC4xNyAxMTIuNXMtNTguMzQgMTEyLjUtMTM3LjUgMTEyLjVjLTEwOC4zNCAwLTE0NS44NC00NS44NC0xNTguMzQtMTA4LjM0LTQuMTYtMTYuNjYtMTYuNjYtMjUtMjkuMTYtMjVoLTcwLjg0Yy0xNi42NiAwLTI5LjE2IDEyLjUtMjkuMTYgMjkuMTd2NC4xN2MxNi42NiAxMDQuMTYgODMuMzMgMTc5LjE2IDIyMC44MyAyMDB2MTAwYzAgMTYuNjYgMTIuNSAyOS4xNiAzMy4zMyAzMy4zM2g2Mi41YzE2LjY3IDAgMjkuMTctMTIuNSAzMy4zNC0zMy4zM3YtMTAwYzEyNS0yMC44NCAyMDguMzMtMTA4LjM0IDIwOC4zMy0yMjAuODR6IiBmaWxsPSIjZmZmIi8+CiAgPHBhdGggZD0iTTc4Ny41IDE1OTUuODNjLTMyNS0xMTYuNjYtNDkxLjY3LTQ3OS4xNi0zNzAuODMtODAwIDYyLjUtMTc1IDIwMC0zMDguMzMgMzcwLjgzLTM3MC44MyAxNi42Ny04LjMzIDI1LTIwLjgzIDI1LTQxLjY3VjMyNWMwLTE2LjY3LTguMzMtMjkuMTctMjUtMzMuMzMtNC4xNyAwLTEyLjUgMC0xNi42NyA0LjE2LTM5NS44MyAxMjUtNjEyLjUgNTQ1Ljg0LTQ4Ny41IDk0MS42NyA3NSAyMzMuMzMgMjU0LjE3IDQxMi41IDQ4Ny41IDQ4Ny41IDE2LjY3IDguMzMgMzMuMzQgMCAzNy41LTE2LjY3IDQuMTctNC4xNiA0LjE3LTguMzMgNC4xNy0xNi42NnYtNTguMzRjMC0xMi41LTEyLjUtMjkuMTYtMjUtMzcuNXpNMTIyOS4xNyAyOTUuODNjLTE2LjY3LTguMzMtMzMuMzQgMC0zNy41IDE2LjY3LTQuMTcgNC4xNy00LjE3IDguMzMtNC4xNyAxNi42N3Y1OC4zM2MwIDE2LjY3IDEyLjUgMzMuMzMgMjUgNDEuNjcgMzI1IDExNi42NiA0OTEuNjcgNDc5LjE2IDM3MC44MyA4MDAtNjIuNSAxNzUtMjAwIDMwOC4zMy0zNzAuODMgMzcwLjgzLTE2LjY3IDguMzMtMjUgMjAuODMtMjUgNDEuNjdWMTcwMGMwIDE2LjY3IDguMzMgMjkuMTcgMjUgMzMuMzMgNC4xNyAwIDEyLjUgMCAxNi42Ny00LjE2IDM5NS44My0xMjUgNjEyLjUtNTQ1Ljg0IDQ4Ny41LTk0MS42Ny03NS0yMzcuNS0yNTguMzQtNDE2LjY3LTQ4Ny41LTQ5MS42N3oiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg==\";\nvar wrappedBtcIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDkuMjYgMTA5LjI2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzVhNTU2NDt9LmNscy0ye2ZpbGw6I2YwOTI0Mjt9LmNscy0ze2ZpbGw6IzI4MjEzODt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPndyYXBwZWQtYml0Y29pbi13YnRjPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iTGF5ZXJfMS0yIiBkYXRhLW5hbWU9IkxheWVyIDEiPjxnIGlkPSJQYWdlLTEiPjxnIGlkPSJ3YnRjX2NvbG91ciIgZGF0YS1uYW1lPSJ3YnRjIGNvbG91ciI+PHBhdGggaWQ9IlNoYXBlIiBjbGFzcz0iY2xzLTEiIGQ9Ik04OS4wOSwyMi45M2wtMywzYTQyLjQ3LDQyLjQ3LDAsMCwxLDAsNTcuMzJsMywzYTQ2Ljc2LDQ2Ljc2LDAsMCwwLDAtNjMuMzlaIi8+PHBhdGggaWQ9IlNoYXBlLTIiIGRhdGEtbmFtZT0iU2hhcGUiIGNsYXNzPSJjbHMtMSIgZD0iTTI2LDIzLjE5YTQyLjQ3LDQyLjQ3LDAsMCwxLDU3LjMyLDBsMy0zYTQ2Ljc2LDQ2Ljc2LDAsMCwwLTYzLjM5LDBaIi8+PHBhdGggaWQ9IlNoYXBlLTMiIGRhdGEtbmFtZT0iU2hhcGUiIGNsYXNzPSJjbHMtMSIgZD0iTTIzLjE5LDgzLjI4YTQyLjQ3LDQyLjQ3LDAsMCwxLDAtNTcuMjlsLTMtM2E0Ni43Niw0Ni43NiwwLDAsMCwwLDYzLjM5WiIvPjxwYXRoIGlkPSJTaGFwZS00IiBkYXRhLW5hbWU9IlNoYXBlIiBjbGFzcz0iY2xzLTEiIGQ9Ik04My4yOCw4Ni4wNWE0Mi40Nyw0Mi40NywwLDAsMS01Ny4zMiwwbC0zLDNhNDYuNzYsNDYuNzYsMCwwLDAsNjMuMzksMFoiLz48cGF0aCBpZD0iU2hhcGUtNSIgZGF0YS1uYW1lPSJTaGFwZSIgY2xhc3M9ImNscy0yIiBkPSJNNzMuNTcsNDQuNjJjLS42LTYuMjYtNi04LjM2LTEyLjgzLTlWMjdINTUuNDZ2OC40NmMtMS4zOSwwLTIuODEsMC00LjIyLDBWMjdINDZ2OC42OEgzNS4yOXY1LjY1czMuOS0uMDcsMy44NCwwYTIuNzMsMi43MywwLDAsMSwzLDIuMzJWNjcuNDFhMS44NSwxLjg1LDAsMCwxLS42NCwxLjI5LDEuODMsMS44MywwLDAsMS0xLjM2LjQ2Yy4wNy4wNi0zLjg0LDAtMy44NCwwbC0xLDYuMzFINDUuOXY4LjgyaDUuMjhWNzUuNkg1NS40djguNjVoNS4yOVY3NS41M2M4LjkyLS41NCwxNS4xNC0yLjc0LDE1LjkyLTExLjA5LjYzLTYuNzItMi41My05LjcyLTcuNTgtMTAuOTNDNzIuMSw1Miw3NCw0OS4yLDczLjU3LDQ0LjYyWk02Ni4xNyw2My40YzAsNi41Ni0xMS4yNCw1LjgxLTE0LjgyLDUuODFWNTcuNTdDNTQuOTMsNTcuNTgsNjYuMTcsNTYuNTUsNjYuMTcsNjMuNFpNNjMuNzIsNDdjMCw2LTkuMzgsNS4yNy0xMi4zNiw1LjI3VjQxLjY5QzU0LjM0LDQxLjY5LDYzLjcyLDQwLjc1LDYzLjcyLDQ3WiIvPjxwYXRoIGlkPSJTaGFwZS02IiBkYXRhLW5hbWU9IlNoYXBlIiBjbGFzcz0iY2xzLTMiIGQ9Ik01NC42MiwxMDkuMjZhNTQuNjMsNTQuNjMsMCwxLDEsNTQuNjQtNTQuNjRBNTQuNjMsNTQuNjMsMCwwLDEsNTQuNjIsMTA5LjI2Wm0wLTEwNUE1MC4zNCw1MC4zNCwwLDEsMCwxMDUsNTQuNjIsNTAuMzQsNTAuMzQsMCwwLDAsNTQuNjIsNC4yNloiLz48L2c+PC9nPjwvZz48L2c+PC9zdmc+\";\nvar maticIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8Y2lyY2xlIGN4PSI1MTIiIGN5PSI1MTIiIHI9IjUxMiIgZmlsbD0iIzgyNDdFNSIvPgo8cGF0aCBkPSJNNjgxLjQ2OSA0MDIuNDU2QzY2OS4xODkgMzk1LjMxMiA2NTMuMjI0IDM5NS4zMTIgNjM5LjcxNiA0MDIuNDU2TDU0My45MjggNDU3LjIyOEw0NzguODQyIDQ5Mi45NDlMMzgzLjA1NSA1NDcuNzIxQzM3MC43NzQgNTU0Ljg2NSAzNTQuODEgNTU0Ljg2NSAzNDEuMzAxIDU0Ny43MjFMMjY1LjE2MiA1MDQuODU2QzI1Mi44ODIgNDk3LjcxMiAyNDQuMjg2IDQ4NC42MTQgMjQ0LjI4NiA0NzAuMzI1VjM4NS43ODZDMjQ0LjI4NiAzNzEuNDk4IDI1MS42NTQgMzU4LjQgMjY1LjE2MiAzNTEuMjU2TDM0MC4wNzMgMzA5LjU4MUMzNTIuMzUzIDMwMi40MzcgMzY4LjMxOCAzMDIuNDM3IDM4MS44MjcgMzA5LjU4MUw0NTYuNzM3IDM1MS4yNTZDNDY5LjAxOCAzNTguNCA0NzcuNjE0IDM3MS40OTggNDc3LjYxNCAzODUuNzg2VjQ0MC41NThMNTQyLjcgNDAzLjY0NlYzNDguODc0QzU0Mi43IDMzNC41ODYgNTM1LjMzMiAzMjEuNDg4IDUyMS44MjQgMzE0LjM0NEwzODMuMDU1IDIzNS43NThDMzcwLjc3NCAyMjguNjE0IDM1NC44MSAyMjguNjE0IDM0MS4zMDEgMjM1Ljc1OEwyMDAuMDc2IDMxNC4zNDRDMTg2LjU2NyAzMjEuNDg4IDE3OS4xOTkgMzM0LjU4NiAxNzkuMTk5IDM0OC44NzRWNTA3LjIzN0MxNzkuMTk5IDUyMS41MjUgMTg2LjU2NyA1MzQuNjIzIDIwMC4wNzYgNTQxLjc2N0wzNDEuMzAxIDYyMC4zNTNDMzUzLjU4MiA2MjcuNDk4IDM2OS41NDYgNjI3LjQ5OCAzODMuMDU1IDYyMC4zNTNMNDc4Ljg0MiA1NjYuNzcyTDU0My45MjggNTI5Ljg2TDYzOS43MTYgNDc2LjI3OUM2NTEuOTk2IDQ2OS4xMzUgNjY3Ljk2MSA0NjkuMTM1IDY4MS40NjkgNDc2LjI3OUw3NTYuMzggNTE3Ljk1M0M3NjguNjYgNTI1LjA5OCA3NzcuMjU3IDUzOC4xOTUgNzc3LjI1NyA1NTIuNDg0VjYzNy4wMjNDNzc3LjI1NyA2NTEuMzEyIDc2OS44ODggNjY0LjQwOSA3NTYuMzggNjcxLjU1M0w2ODEuNDY5IDcxNC40MTlDNjY5LjE4OSA3MjEuNTYzIDY1My4yMjQgNzIxLjU2MyA2MzkuNzE2IDcxNC40MTlMNTY0LjgwNSA2NzIuNzQ0QzU1Mi41MjUgNjY1LjYgNTQzLjkyOCA2NTIuNTAyIDU0My45MjggNjM4LjIxNFY1ODMuNDQyTDQ3OC44NDIgNjIwLjM1M1Y2NzUuMTI1QzQ3OC44NDIgNjg5LjQxNCA0ODYuMjEgNzAyLjUxMiA0OTkuNzE5IDcwOS42NTZMNjQwLjk0NCA3ODguMjQyQzY1My4yMjQgNzk1LjM4NiA2NjkuMTg5IDc5NS4zODYgNjgyLjY5NyA3ODguMjQyTDgyMy45MjIgNzA5LjY1NkM4MzYuMjAzIDcwMi41MTIgODQ0Ljc5OSA2ODkuNDE0IDg0NC43OTkgNjc1LjEyNVY1MTYuNzYzQzg0NC43OTkgNTAyLjQ3NCA4MzcuNDMxIDQ4OS4zNzcgODIzLjkyMiA0ODIuMjMyTDY4MS40NjkgNDAyLjQ1NloiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=\";\nvar binanceCoinIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PGcgZmlsbD0ibm9uZSI+PGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiNGM0JBMkYiLz48cGF0aCBmaWxsPSIjRkZGIiBkPSJNMTIuMTE2IDE0LjQwNEwxNiAxMC41MmwzLjg4NiAzLjg4NiAyLjI2LTIuMjZMMTYgNmwtNi4xNDQgNi4xNDQgMi4yNiAyLjI2ek02IDE2bDIuMjYtMi4yNkwxMC41MiAxNmwtMi4yNiAyLjI2TDYgMTZ6bTYuMTE2IDEuNTk2TDE2IDIxLjQ4bDMuODg2LTMuODg2IDIuMjYgMi4yNTlMMTYgMjZsLTYuMTQ0LTYuMTQ0LS4wMDMtLjAwMyAyLjI2My0yLjI1N3pNMjEuNDggMTZsMi4yNi0yLjI2TDI2IDE2bC0yLjI2IDIuMjZMMjEuNDggMTZ6bS0zLjE4OC0uMDAyaC4wMDJ2LjAwMkwxNiAxOC4yOTRsLTIuMjkxLTIuMjktLjAwNC0uMDA0LjAwNC0uMDAzLjQwMS0uNDAyLjE5NS0uMTk1TDE2IDEzLjcwNmwyLjI5MyAyLjI5M3oiLz48L2c+PC9zdmc+\";\nvar BUSDIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMzYuNDEgMzM3LjQyIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2YwYjkwYjtzdHJva2U6I2YwYjkwYjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkFzc2V0IDE8L3RpdGxlPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMYXllcl8xLTIiIGRhdGEtbmFtZT0iTGF5ZXIgMSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTY4LjIuNzFsNDEuNSw0Mi41TDEwNS4yLDE0Ny43MWwtNDEuNS00MS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTIzMS4yLDYzLjcxbDQxLjUsNDIuNUwxMDUuMiwyNzMuNzFsLTQxLjUtNDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00Mi4yLDEyNi43MWw0MS41LDQyLjUtNDEuNSw0MS41TC43LDE2OS4yMVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yOTQuMiwxMjYuNzFsNDEuNSw0Mi41TDE2OC4yLDMzNi43MWwtNDEuNS00MS41WiIvPjwvZz48L2c+PC9zdmc+\";\nvar fantomIcon = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkO30uY2xzLTJ7ZmlsbDojMTNiNWVjO30uY2xzLTN7bWFzazp1cmwoI21hc2spO308L3N0eWxlPjxtYXNrIGlkPSJtYXNrIiB4PSIxMCIgeT0iNiIgd2lkdGg9IjkzLjEiIGhlaWdodD0iMjAiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiPjxnIGlkPSJhIj48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMCw2aDkzLjFWMjZIMTBaIi8+PC9nPjwvbWFzaz48L2RlZnM+PHRpdGxlPmZhPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iTGF5ZXJfMS0yIiBkYXRhLW5hbWU9IkxheWVyIDEiPjxjaXJjbGUgY2xhc3M9ImNscy0yIiBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiLz48ZyBjbGFzcz0iY2xzLTMiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE3LjIsMTIuOWwzLjYtMi4xVjE1Wm0zLjYsOUwxNiwyNC43bC00LjgtMi44VjE3TDE2LDE5LjgsMjAuOCwxN1pNMTEuMiwxMC44bDMuNiwyLjFMMTEuMiwxNVptNS40LDMuMUwyMC4yLDE2bC0zLjYsMi4xWm0tMS4yLDQuMkwxMS44LDE2bDMuNi0yLjFabTQuOC04LjNMMTYsMTIuMiwxMS44LDkuOCwxNiw3LjNaTTEwLDkuNFYyMi41bDYsMy40LDYtMy40VjkuNEwxNiw2WiIvPjwvZz48L2c+PC9nPjwvc3ZnPg==\";\nvar DEFAULT_TOKENS = {\n  \"1\": [\n    {\n      address: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\",\n      name: \"Wrapped Ether\",\n      symbol: \"WETH\",\n      icon: wrappedEthIcon\n    },\n    {\n      address: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n      name: \"Tether USD\",\n      symbol: \"USDT\",\n      icon: tetherUsdIcon\n    },\n    {\n      address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    },\n    {\n      address: \"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\",\n      name: \"Wrapped Bitcoin\",\n      symbol: \"WBTC\",\n      icon: wrappedBtcIcon\n    },\n    {\n      address: \"0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0\",\n      name: \"Polygon\",\n      symbol: \"WMATIC\",\n      icon: maticIcon\n    }\n  ],\n  \"11155111\": [\n    {\n      address: \"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    }\n  ],\n  \"10\": [\n    {\n      address: \"0x4200000000000000000000000000000000000006\",\n      name: \"Wrapped Ether\",\n      symbol: \"WETH\",\n      icon: wrappedEthIcon\n    },\n    {\n      address: \"0x0b2c639c533813f4aa9d7837caf62653d097ff85\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    }\n  ],\n  \"56\": [\n    {\n      address: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\",\n      name: \"Wrapped Binance Chain Token\",\n      symbol: \"WBNB\",\n      icon: binanceCoinIcon\n    },\n    {\n      address: \"0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56\",\n      name: \"Binance USD\",\n      symbol: \"BUSD\",\n      icon: BUSDIcon\n    }\n  ],\n  \"97\": [\n    {\n      address: \"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd\",\n      name: \"Wrapped Binance Chain Testnet Token\",\n      symbol: \"WBNB\",\n      icon: binanceCoinIcon\n    },\n    {\n      address: \"0xed24fc36d5ee211ea25a80239fb8c4cfd80f12ee\",\n      name: \"Binance USD\",\n      symbol: \"BUSD\",\n      icon: BUSDIcon\n    }\n  ],\n  \"137\": [\n    {\n      address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    },\n    {\n      address: \"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270\",\n      name: \"Wrapped Matic\",\n      symbol: \"WMATIC\",\n      icon: maticIcon\n    },\n    {\n      address: \"0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619\",\n      name: \"Wrapped Ether\",\n      symbol: \"WETH\",\n      icon: wrappedEthIcon\n    },\n    {\n      address: \"0xc2132D05D31c914a87C6611C10748AEb04B58e8F\",\n      name: \"Tether USD\",\n      symbol: \"USDT\",\n      icon: tetherUsdIcon\n    },\n    {\n      address: \"0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6\",\n      name: \"Wrapped BTC\",\n      symbol: \"WBTC\",\n      icon: wrappedBtcIcon\n    }\n  ],\n  \"250\": [\n    {\n      address: \"0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83\",\n      name: \"Wrapped Fantom\",\n      symbol: \"WFTM\",\n      icon: fantomIcon\n    },\n    {\n      name: \"Wrapped Ether\",\n      address: \"0x74b23882a30290451A17c44f4F05243b6b58C76d\",\n      symbol: \"WETH\",\n      icon: wrappedEthIcon\n    },\n    {\n      name: \"USD Coin\",\n      address: \"0x04068DA6C83AFCFA0e13ba15A6696662335D5B75\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    },\n    {\n      name: \"Wrapped Bitcoin\",\n      address: \"0x321162Cd933E2Be498Cd2267a90534A804051b11\",\n      symbol: \"WBTC\",\n      icon: wrappedBtcIcon\n    }\n  ],\n  \"420\": [\n    {\n      address: \"0x4200000000000000000000000000000000000006\",\n      name: \"Wrapped Ether\",\n      symbol: \"WETH\",\n      icon: wrappedEthIcon\n    }\n  ],\n  \"4002\": [\n    {\n      address: \"0xf1277d1Ed8AD466beddF92ef448A132661956621\",\n      name: \"Wrapped Fantom\",\n      symbol: \"WFTM\",\n      icon: fantomIcon\n    }\n  ],\n  \"42161\": [\n    {\n      address: \"0x82af49447d8a07e3bd95bd0d56f35241523fbab1\",\n      name: \"Wrapped Ether\",\n      symbol: \"WETH\",\n      icon: wrappedEthIcon\n    },\n    {\n      address: \"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    }\n  ],\n  \"43113\": [\n    {\n      address: \"0xd00ae08403B9bbb9124bB305C09058E32C39A48c\",\n      name: \"Wrapped AVAX\",\n      symbol: \"WAVAX\",\n      icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUwMyIgaGVpZ2h0PSIxNTA0IiB2aWV3Qm94PSIwIDAgMTUwMyAxNTA0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB4PSIyODciIHk9IjI1OCIgd2lkdGg9IjkyOCIgaGVpZ2h0PSI4NDQiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTUwMi41IDc1MkMxNTAyLjUgMTE2Ni43NyAxMTY2LjI3IDE1MDMgNzUxLjUgMTUwM0MzMzYuNzM0IDE1MDMgMC41IDExNjYuNzcgMC41IDc1MkMwLjUgMzM3LjIzNCAzMzYuNzM0IDEgNzUxLjUgMUMxMTY2LjI3IDEgMTUwMi41IDMzNy4yMzQgMTUwMi41IDc1MlpNNTM4LjY4OCAxMDUwLjg2SDM5Mi45NEMzNjIuMzE0IDEwNTAuODYgMzQ3LjE4NiAxMDUwLjg2IDMzNy45NjIgMTA0NC45NkMzMjcuOTk5IDEwMzguNSAzMjEuOTExIDEwMjcuOCAzMjEuMTczIDEwMTUuOTlDMzIwLjYxOSAxMDA1LjExIDMyOC4xODQgOTkxLjgyMiAzNDMuMzEyIDk2NS4yNTVMNzAzLjE4MiAzMzAuOTM1QzcxOC40OTUgMzAzLjk5OSA3MjYuMjQzIDI5MC41MzEgNzM2LjAyMSAyODUuNTVDNzQ2LjUzNyAyODAuMiA3NTkuMDgzIDI4MC4yIDc2OS41OTkgMjg1LjU1Qzc3OS4zNzcgMjkwLjUzMSA3ODcuMTI2IDMwMy45OTkgODAyLjQzOCAzMzAuOTM1TDg3Ni40MiA0NjAuMDc5TDg3Ni43OTcgNDYwLjczOEM4OTMuMzM2IDQ4OS42MzUgOTAxLjcyMyA1MDQuMjg5IDkwNS4zODUgNTE5LjY2OUM5MDkuNDQzIDUzNi40NTggOTA5LjQ0MyA1NTQuMTY5IDkwNS4zODUgNTcwLjk1OEM5MDEuNjk1IDU4Ni40NTUgODkzLjM5MyA2MDEuMjE1IDg3Ni42MDQgNjMwLjU0OUw2ODcuNTczIDk2NC43MDJMNjg3LjA4NCA5NjUuNTU4QzY3MC40MzYgOTk0LjY5MyA2NjEuOTk5IDEwMDkuNDYgNjUwLjMwNiAxMDIwLjZDNjM3LjU3NiAxMDMyLjc4IDYyMi4yNjMgMTA0MS42MyA2MDUuNDc0IDEwNDYuNjJDNTkwLjE2MSAxMDUwLjg2IDU3My4wMDQgMTA1MC44NiA1MzguNjg4IDEwNTAuODZaTTkwNi43NSAxMDUwLjg2SDExMTUuNTlDMTE0Ni40IDEwNTAuODYgMTE2MS45IDEwNTAuODYgMTE3MS4xMyAxMDQ0Ljc4QzExODEuMDkgMTAzOC4zMiAxMTg3LjM2IDEwMjcuNDMgMTE4Ny45MiAxMDE1LjYzQzExODguNDUgMTAwNS4xIDExODEuMDUgOTkyLjMzIDExNjYuNTUgOTY3LjMwN0MxMTY2LjA1IDk2Ni40NTUgMTE2NS41NSA5NjUuNTg4IDExNjUuMDQgOTY0LjcwNkwxMDYwLjQzIDc4NS43NUwxMDU5LjI0IDc4My43MzVDMTA0NC41NCA3NTguODc3IDEwMzcuMTIgNzQ2LjMyNCAxMDI3LjU5IDc0MS40NzJDMTAxNy4wOCA3MzYuMTIxIDEwMDQuNzEgNzM2LjEyMSA5OTQuMTk5IDc0MS40NzJDOTg0LjYwNSA3NDYuNDUzIDk3Ni44NTcgNzU5LjU1MiA5NjEuNTQ0IDc4NS45MzRMODU3LjMwNiA5NjQuODkxTDg1Ni45NDkgOTY1LjUwN0M4NDEuNjkgOTkxLjg0NyA4MzQuMDY0IDEwMDUuMDEgODM0LjYxNCAxMDE1LjgxQzgzNS4zNTIgMTAyNy42MiA4NDEuNDQgMTAzOC41IDg1MS40MDIgMTA0NC45NkM4NjAuNDQzIDEwNTAuODYgODc1Ljk0IDEwNTAuODYgOTA2Ljc1IDEwNTAuODZaIiBmaWxsPSIjRTg0MTQyIi8+Cjwvc3ZnPgo=\"\n    },\n    {\n      address: \"0x5425890298aed601595a70AB815c96711a31Bc65\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    }\n  ],\n  \"43114\": [\n    {\n      address: \"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7\",\n      name: \"Wrapped AVAX\",\n      symbol: \"WAVAX\",\n      icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUwMyIgaGVpZ2h0PSIxNTA0IiB2aWV3Qm94PSIwIDAgMTUwMyAxNTA0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB4PSIyODciIHk9IjI1OCIgd2lkdGg9IjkyOCIgaGVpZ2h0PSI4NDQiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTUwMi41IDc1MkMxNTAyLjUgMTE2Ni43NyAxMTY2LjI3IDE1MDMgNzUxLjUgMTUwM0MzMzYuNzM0IDE1MDMgMC41IDExNjYuNzcgMC41IDc1MkMwLjUgMzM3LjIzNCAzMzYuNzM0IDEgNzUxLjUgMUMxMTY2LjI3IDEgMTUwMi41IDMzNy4yMzQgMTUwMi41IDc1MlpNNTM4LjY4OCAxMDUwLjg2SDM5Mi45NEMzNjIuMzE0IDEwNTAuODYgMzQ3LjE4NiAxMDUwLjg2IDMzNy45NjIgMTA0NC45NkMzMjcuOTk5IDEwMzguNSAzMjEuOTExIDEwMjcuOCAzMjEuMTczIDEwMTUuOTlDMzIwLjYxOSAxMDA1LjExIDMyOC4xODQgOTkxLjgyMiAzNDMuMzEyIDk2NS4yNTVMNzAzLjE4MiAzMzAuOTM1QzcxOC40OTUgMzAzLjk5OSA3MjYuMjQzIDI5MC41MzEgNzM2LjAyMSAyODUuNTVDNzQ2LjUzNyAyODAuMiA3NTkuMDgzIDI4MC4yIDc2OS41OTkgMjg1LjU1Qzc3OS4zNzcgMjkwLjUzMSA3ODcuMTI2IDMwMy45OTkgODAyLjQzOCAzMzAuOTM1TDg3Ni40MiA0NjAuMDc5TDg3Ni43OTcgNDYwLjczOEM4OTMuMzM2IDQ4OS42MzUgOTAxLjcyMyA1MDQuMjg5IDkwNS4zODUgNTE5LjY2OUM5MDkuNDQzIDUzNi40NTggOTA5LjQ0MyA1NTQuMTY5IDkwNS4zODUgNTcwLjk1OEM5MDEuNjk1IDU4Ni40NTUgODkzLjM5MyA2MDEuMjE1IDg3Ni42MDQgNjMwLjU0OUw2ODcuNTczIDk2NC43MDJMNjg3LjA4NCA5NjUuNTU4QzY3MC40MzYgOTk0LjY5MyA2NjEuOTk5IDEwMDkuNDYgNjUwLjMwNiAxMDIwLjZDNjM3LjU3NiAxMDMyLjc4IDYyMi4yNjMgMTA0MS42MyA2MDUuNDc0IDEwNDYuNjJDNTkwLjE2MSAxMDUwLjg2IDU3My4wMDQgMTA1MC44NiA1MzguNjg4IDEwNTAuODZaTTkwNi43NSAxMDUwLjg2SDExMTUuNTlDMTE0Ni40IDEwNTAuODYgMTE2MS45IDEwNTAuODYgMTE3MS4xMyAxMDQ0Ljc4QzExODEuMDkgMTAzOC4zMiAxMTg3LjM2IDEwMjcuNDMgMTE4Ny45MiAxMDE1LjYzQzExODguNDUgMTAwNS4xIDExODEuMDUgOTkyLjMzIDExNjYuNTUgOTY3LjMwN0MxMTY2LjA1IDk2Ni40NTUgMTE2NS41NSA5NjUuNTg4IDExNjUuMDQgOTY0LjcwNkwxMDYwLjQzIDc4NS43NUwxMDU5LjI0IDc4My43MzVDMTA0NC41NCA3NTguODc3IDEwMzcuMTIgNzQ2LjMyNCAxMDI3LjU5IDc0MS40NzJDMTAxNy4wOCA3MzYuMTIxIDEwMDQuNzEgNzM2LjEyMSA5OTQuMTk5IDc0MS40NzJDOTg0LjYwNSA3NDYuNDUzIDk3Ni44NTcgNzU5LjU1MiA5NjEuNTQ0IDc4NS45MzRMODU3LjMwNiA5NjQuODkxTDg1Ni45NDkgOTY1LjUwN0M4NDEuNjkgOTkxLjg0NyA4MzQuMDY0IDEwMDUuMDEgODM0LjYxNCAxMDE1LjgxQzgzNS4zNTIgMTAyNy42MiA4NDEuNDQgMTAzOC41IDg1MS40MDIgMTA0NC45NkM4NjAuNDQzIDEwNTAuODYgODc1Ljk0IDEwNTAuODYgOTA2Ljc1IDEwNTAuODZaIiBmaWxsPSIjRTg0MTQyIi8+Cjwvc3ZnPgo=\"\n    },\n    {\n      address: \"0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB\",\n      name: \"Wrapped Ether\",\n      symbol: \"WETH\",\n      icon: wrappedEthIcon\n    },\n    {\n      address: \"0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7\",\n      name: \"Tether USD\",\n      symbol: \"USDT\",\n      icon: tetherUsdIcon\n    },\n    {\n      address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    },\n    {\n      address: \"0x50b7545627a5162F82A992c33b87aDc75187B218\",\n      name: \"Wrapped BTC\",\n      symbol: \"WBTC\",\n      icon: wrappedBtcIcon\n    }\n  ],\n  \"80001\": [\n    {\n      address: \"0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889\",\n      name: \"Wrapped Matic\",\n      symbol: \"WMATIC\",\n      icon: maticIcon\n    },\n    {\n      name: \"Wrapped Ether\",\n      address: \"0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa\",\n      symbol: \"WETH\",\n      icon: wrappedEthIcon\n    },\n    {\n      address: \"0x0FA8781a83E46826621b3BC094Ea2A0212e71B23\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    },\n    {\n      name: \"Tether USD\",\n      address: \"0x3813e82e6f7098b9583FC0F33a962D02018B6803\",\n      symbol: \"USDT\",\n      icon: tetherUsdIcon\n    }\n  ],\n  \"421613\": [\n    {\n      address: \"0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3\",\n      name: \"Wrapped Ether\",\n      symbol: \"WETH\",\n      icon: wrappedEthIcon\n    },\n    {\n      address: \"0xfd064A18f3BF249cf1f87FC203E90D8f650f2d63\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    }\n  ],\n  // Base mainnet\n  \"8453\": [\n    {\n      address: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    }\n  ],\n  // Base sepolia\n  \"84532\": [\n    {\n      address: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\",\n      name: \"USD Coin\",\n      symbol: \"USDC\",\n      icon: usdcIcon\n    }\n  ]\n};\nvar defaultTokens = DEFAULT_TOKENS;\nfunction getDefaultToken(chain, symbol) {\n  const tokens = defaultTokens[chain.id];\n  return tokens == null ? void 0 : tokens.find((t) => t.symbol === symbol);\n}\n\n// node_modules/thirdweb/dist/esm/react/web/utils/canFitWideModal.js\nfunction canFitWideModal() {\n  if (typeof window !== \"undefined\") {\n    return window.innerWidth >= wideModalScreenThreshold;\n  }\n  return false;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/utils/usePreloadWalletProviders.js\nfunction usePreloadWalletProviders({ client, wallets }) {\n  useQueries({\n    queries: wallets.filter((w) => w.id === COINBASE || w.id === \"inApp\" || isEcosystemWallet(w.id)).map((w) => ({\n      queryKey: [\"preload-wallet\", w.id],\n      queryFn: async () => {\n        var _a;\n        switch (true) {\n          case COINBASE === w.id: {\n            const { getCoinbaseWebProvider } = await import(\"./coinbaseWebSDK-RVHYUQN6.js\");\n            await getCoinbaseWebProvider(w.getConfig());\n            return true;\n          }\n          case \"inApp\" === w.id: {\n            const [{ InAppWebConnector }, { getOrCreateInAppWalletConnector }] = await Promise.all([\n              import(\"./web-connector-5CMXT4ED.js\"),\n              import(\"./in-app-core-HIWEYDMM.js\")\n            ]);\n            await getOrCreateInAppWalletConnector(client, async (client2) => {\n              return new InAppWebConnector({\n                client: client2\n              });\n            });\n            return true;\n          }\n          case isEcosystemWallet(w.id): {\n            const [{ InAppWebConnector }, { getOrCreateInAppWalletConnector }] = await Promise.all([\n              import(\"./web-connector-5CMXT4ED.js\"),\n              import(\"./in-app-core-HIWEYDMM.js\")\n            ]);\n            const ecosystemWallet = w;\n            await getOrCreateInAppWalletConnector(client, async (client2) => {\n              var _a2;\n              return new InAppWebConnector({\n                client: client2,\n                ecosystem: {\n                  id: ecosystemWallet.id,\n                  partnerId: (_a2 = ecosystemWallet.getConfig()) == null ? void 0 : _a2.partnerId\n                }\n              });\n            }, {\n              id: ecosystemWallet.id,\n              partnerId: (_a = ecosystemWallet.getConfig()) == null ? void 0 : _a.partnerId\n            });\n            return true;\n          }\n          default: {\n            return false;\n          }\n        }\n      }\n    }))\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/AutoConnect/AutoConnect.js\nvar import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/get-url-token.js\nfunction getUrlToken() {\n  if (!(window == null ? void 0 : window.location)) {\n    return {};\n  }\n  const queryString = window.location.search;\n  const params = new URLSearchParams(queryString);\n  const authResultString = params.get(\"authResult\");\n  const walletId = params.get(\"walletId\");\n  const authProvider = params.get(\"authProvider\");\n  const authCookie = params.get(\"authCookie\");\n  if ((authCookie || authResultString) && walletId) {\n    const authResult = (() => {\n      if (authResultString) {\n        params.delete(\"authResult\");\n        return JSON.parse(decodeURIComponent(authResultString));\n      }\n    })();\n    params.delete(\"walletId\");\n    params.delete(\"authProvider\");\n    params.delete(\"authCookie\");\n    window.history.pushState({}, \"\", `${window.location.pathname}?${params.toString()}`);\n    return { walletId, authResult, authProvider, authCookie };\n  }\n  return {};\n}\n\n// node_modules/thirdweb/dist/esm/react/core/utils/isSmartWallet.js\nfunction hasSmartAccount(activeWallet) {\n  const config = activeWallet == null ? void 0 : activeWallet.getConfig();\n  return activeWallet !== void 0 && (activeWallet.id === \"smart\" || activeWallet.id === \"inApp\" && !!config && \"smartAccount\" in config || isEcosystemWallet(activeWallet) && !!config && \"smartAccount\" in config);\n}\n\n// node_modules/thirdweb/dist/esm/reactive/computedStore.js\nfunction computedStore(computation, dependencies) {\n  const listeners = /* @__PURE__ */ new Set();\n  let value = computation();\n  const notify = () => {\n    for (const listener of listeners) {\n      listener();\n    }\n  };\n  const setValue = (newValue) => {\n    value = newValue;\n    notify();\n  };\n  for (const store of dependencies) {\n    store.subscribe(() => {\n      setValue(computation());\n    });\n  }\n  return {\n    getValue() {\n      return value;\n    },\n    subscribe(listener) {\n      listeners.add(listener);\n      return () => {\n        listeners.delete(listener);\n      };\n    }\n  };\n}\n\n// node_modules/thirdweb/dist/esm/reactive/effect.js\nfunction effect(effectFn, dependencies, runOnMount = true) {\n  if (runOnMount) {\n    effectFn();\n  }\n  const unsubscribeList = dependencies.map((store) => {\n    return store.subscribe(() => {\n      effectFn();\n    });\n  });\n  return () => {\n    for (const fn of unsubscribeList) {\n      fn();\n    }\n  };\n}\n\n// node_modules/thirdweb/dist/esm/wallets/manager/index.js\nvar CONNECTED_WALLET_IDS = \"thirdweb:connected-wallet-ids\";\nvar LAST_ACTIVE_EOA_ID = \"thirdweb:active-wallet-id\";\nvar LAST_ACTIVE_CHAIN = \"thirdweb:active-chain\";\nfunction createConnectionManager(storage) {\n  const activeWalletStore = createStore(void 0);\n  const activeAccountStore = createStore(void 0);\n  const activeWalletChainStore = createStore(void 0);\n  const activeWalletConnectionStatusStore = createStore(\"disconnected\");\n  const definedChainsStore = createStore(/* @__PURE__ */ new Map());\n  effect(() => {\n    cacheChains([...definedChainsStore.getValue().values()]);\n  }, [definedChainsStore]);\n  effect(() => {\n    const chainVal = activeWalletChainStore.getValue();\n    if (!chainVal) {\n      return;\n    }\n    const definedChain = definedChainsStore.getValue().get(chainVal.id);\n    if (!definedChain || definedChain === chainVal) {\n      return;\n    }\n    activeWalletChainStore.setValue(definedChain);\n  }, [definedChainsStore, activeWalletChainStore]);\n  const walletIdToConnectedWalletMap = createStore(/* @__PURE__ */ new Map());\n  const isAutoConnecting = createStore(false);\n  const connectedWallets = computedStore(() => {\n    return Array.from(walletIdToConnectedWalletMap.getValue().values());\n  }, [walletIdToConnectedWalletMap]);\n  const addConnectedWallet = (wallet) => {\n    const oldValue = walletIdToConnectedWalletMap.getValue();\n    if (oldValue.has(wallet.id)) {\n      return;\n    }\n    const newValue = new Map(oldValue);\n    newValue.set(wallet.id, wallet);\n    walletIdToConnectedWalletMap.setValue(newValue);\n  };\n  const removeConnectedWallet = (wallet) => {\n    const oldValue = walletIdToConnectedWalletMap.getValue();\n    const newValue = new Map(oldValue);\n    newValue.delete(wallet.id);\n    walletIdToConnectedWalletMap.setValue(newValue);\n  };\n  const onWalletDisconnect = (wallet) => {\n    deleteConnectParamsFromStorage(storage, wallet.id);\n    removeConnectedWallet(wallet);\n    if (activeWalletStore.getValue() === wallet) {\n      storage.removeItem(LAST_ACTIVE_EOA_ID);\n      activeAccountStore.setValue(void 0);\n      activeWalletChainStore.setValue(void 0);\n      activeWalletStore.setValue(void 0);\n      activeWalletConnectionStatusStore.setValue(\"disconnected\");\n    }\n  };\n  const disconnectWallet = (wallet) => {\n    onWalletDisconnect(wallet);\n    wallet.disconnect();\n  };\n  const handleConnection = async (wallet, options) => {\n    const account = wallet.getAccount();\n    if (!account) {\n      throw new Error(\"Can not set a wallet without an account as active\");\n    }\n    const personalWallet = wallet;\n    let activeWallet = personalWallet;\n    const isInAppSmartAccount = hasSmartAccount(wallet);\n    if ((options == null ? void 0 : options.accountAbstraction) && !isInAppSmartAccount) {\n      activeWallet = smartWallet(options.accountAbstraction);\n      await activeWallet.connect({\n        personalAccount: wallet.getAccount(),\n        client: options.client\n      });\n    }\n    addConnectedWallet(personalWallet);\n    if (personalWallet.id !== \"smart\") {\n      await storage.setItem(LAST_ACTIVE_EOA_ID, personalWallet.id);\n    }\n    return activeWallet;\n  };\n  const connect = async (wallet, options) => {\n    var _a;\n    const connectedWallet = await handleConnection(wallet, options);\n    (_a = options == null ? void 0 : options.onConnect) == null ? void 0 : _a.call(options, connectedWallet);\n    handleSetActiveWallet(connectedWallet);\n    wallet.subscribe(\"accountChanged\", async () => {\n      var _a2;\n      const newConnectedWallet = await handleConnection(wallet, options);\n      (_a2 = options == null ? void 0 : options.onConnect) == null ? void 0 : _a2.call(options, newConnectedWallet);\n      handleSetActiveWallet(newConnectedWallet);\n    });\n    return connectedWallet;\n  };\n  const handleSetActiveWallet = (activeWallet) => {\n    const account = activeWallet.getAccount();\n    if (!account) {\n      throw new Error(\"Can not set a wallet without an account as active\");\n    }\n    addConnectedWallet(activeWallet);\n    activeWalletStore.setValue(activeWallet);\n    activeAccountStore.setValue(account);\n    activeWalletChainStore.setValue(activeWallet.getChain());\n    activeWalletConnectionStatusStore.setValue(\"connected\");\n    const onAccountsChanged = (newAccount) => {\n      activeAccountStore.setValue(newAccount);\n    };\n    const unsubAccounts = activeWallet.subscribe(\"accountChanged\", onAccountsChanged);\n    const unsubChainChanged = activeWallet.subscribe(\"chainChanged\", (chain) => activeWalletChainStore.setValue(chain));\n    const unsubDisconnect = activeWallet.subscribe(\"disconnect\", () => {\n      handleDisconnect();\n    });\n    const handleDisconnect = () => {\n      onWalletDisconnect(activeWallet);\n      unsubAccounts();\n      unsubChainChanged();\n      unsubDisconnect();\n    };\n  };\n  const setActiveWallet = async (activeWallet) => {\n    handleSetActiveWallet(activeWallet);\n    if (activeWallet.id !== \"smart\") {\n      await storage.setItem(LAST_ACTIVE_EOA_ID, activeWallet.id);\n    }\n  };\n  effect(() => {\n    const _chain = activeWalletChainStore.getValue();\n    if (_chain) {\n      storage.setItem(LAST_ACTIVE_CHAIN, stringify(_chain));\n    } else {\n      storage.removeItem(LAST_ACTIVE_CHAIN);\n    }\n  }, [activeWalletChainStore], false);\n  effect(() => {\n    const accounts = connectedWallets.getValue();\n    const ids = accounts.map((acc) => acc == null ? void 0 : acc.id).filter((c) => !!c);\n    storage.setItem(CONNECTED_WALLET_IDS, stringify(ids));\n  }, [connectedWallets], false);\n  const switchActiveWalletChain = async (chain) => {\n    const wallet = activeWalletStore.getValue();\n    if (!wallet) {\n      throw new Error(\"no wallet found\");\n    }\n    if (!wallet.switchChain) {\n      throw new Error(\"wallet does not support switching chains\");\n    }\n    if (wallet.id === \"smart\") {\n      const personalWalletId = await getStoredActiveWalletId(storage);\n      if (personalWalletId) {\n        const personalWallet = connectedWallets.getValue().find((w) => w.id === personalWalletId);\n        if (personalWallet) {\n          await personalWallet.switchChain(chain);\n        }\n      }\n      await wallet.switchChain(chain);\n      handleSetActiveWallet(wallet);\n    } else {\n      await wallet.switchChain(chain);\n    }\n    activeWalletChainStore.setValue(wallet.getChain());\n  };\n  function defineChains(chains) {\n    const currentMapVal = definedChainsStore.getValue();\n    const allChainsSame = chains.every((c) => {\n      const definedChain = currentMapVal.get(c.id);\n      return stringify(definedChain) === stringify(c);\n    });\n    if (allChainsSame) {\n      return;\n    }\n    const newMapVal = new Map(currentMapVal);\n    for (const c of chains) {\n      newMapVal.set(c.id, c);\n    }\n    definedChainsStore.setValue(newMapVal);\n  }\n  return {\n    activeWalletStore,\n    activeAccountStore,\n    connectedWallets,\n    addConnectedWallet,\n    disconnectWallet,\n    setActiveWallet,\n    connect,\n    handleConnection,\n    activeWalletChainStore,\n    switchActiveWalletChain,\n    activeWalletConnectionStatusStore,\n    isAutoConnecting,\n    removeConnectedWallet,\n    defineChains\n  };\n}\nasync function getStoredConnectedWalletIds(storage) {\n  try {\n    const value = await storage.getItem(CONNECTED_WALLET_IDS);\n    if (value) {\n      return JSON.parse(value);\n    }\n    return [];\n  } catch {\n    return [];\n  }\n}\nasync function getStoredActiveWalletId(storage) {\n  try {\n    const value = await storage.getItem(LAST_ACTIVE_EOA_ID);\n    if (value) {\n      return value;\n    }\n    return null;\n  } catch {\n    return null;\n  }\n}\nasync function getLastConnectedChain(storage) {\n  try {\n    const value = await storage.getItem(LAST_ACTIVE_CHAIN);\n    if (value) {\n      return JSON.parse(value);\n    }\n    return null;\n  } catch {\n    return null;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/core/utils/timeoutPromise.js\nfunction timeoutPromise(promise, option) {\n  return new Promise((resolve2, reject) => {\n    const timeoutId = setTimeout(() => {\n      reject(new Error(option.message));\n    }, option.ms);\n    promise.then((res) => {\n      clearTimeout(timeoutId);\n      resolve2(res);\n    }, (err) => {\n      clearTimeout(timeoutId);\n      reject(err);\n    });\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useConnect.js\nvar import_react12 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useSetActiveWalletConnectionStatus.js\nfunction useSetActiveWalletConnectionStatus() {\n  const manager = useConnectionManagerCtx(\"useSetActiveWalletConnectionStatus\");\n  return manager.activeWalletConnectionStatusStore.setValue;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useConnect.js\nfunction useConnect(options) {\n  const manager = useConnectionManagerCtx(\"useConnect\");\n  const { connect } = manager;\n  const setConnectionStatus = useSetActiveWalletConnectionStatus();\n  const [isConnecting, setIsConnecting] = (0, import_react12.useState)(false);\n  const [error, setError] = (0, import_react12.useState)(null);\n  const handleConnection = (0, import_react12.useCallback)(async (walletOrFn) => {\n    setError(null);\n    setConnectionStatus(\"connecting\");\n    if (typeof walletOrFn !== \"function\") {\n      const account = await connect(walletOrFn, options);\n      setConnectionStatus(\"connected\");\n      return account;\n    }\n    setIsConnecting(true);\n    try {\n      const w = await walletOrFn();\n      const account = await connect(w, options);\n      setConnectionStatus(\"connected\");\n      return account;\n    } catch (e) {\n      console.error(e);\n      setError(e);\n      setConnectionStatus(\"disconnected\");\n    } finally {\n      setIsConnecting(false);\n    }\n    return null;\n  }, [connect, options, setConnectionStatus]);\n  return { connect: handleConnection, isConnecting, error };\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useAutoConnect.js\nfunction useAutoConnectCore(storage, props, createWalletFn, getInstalledWallets) {\n  const manager = useConnectionManagerCtx(\"useAutoConnect\");\n  const setConnectionStatus = useSetActiveWalletConnectionStatus();\n  const { connect } = useConnect({\n    client: props.client,\n    accountAbstraction: props.accountAbstraction\n  });\n  const { isAutoConnecting } = manager;\n  const { wallets, onConnect } = props;\n  const timeout = props.timeout ?? 15e3;\n  const autoConnect = async () => {\n    var _a;\n    let autoConnected = false;\n    isAutoConnecting.setValue(true);\n    let [lastConnectedWalletIds, lastActiveWalletId] = await Promise.all([\n      getStoredConnectedWalletIds(storage),\n      getStoredActiveWalletId(storage)\n    ]);\n    const { authResult, walletId, authProvider, authCookie } = getUrlToken();\n    const wallet = wallets.find((w) => w.id === walletId);\n    if (authCookie && wallet) {\n      const clientStorage = new ClientScopedStorage({\n        storage,\n        clientId: props.client.clientId,\n        ecosystem: isEcosystemWallet(wallet) ? {\n          id: wallet.id,\n          partnerId: (_a = wallet.getConfig()) == null ? void 0 : _a.partnerId\n        } : void 0\n      });\n      await clientStorage.saveAuthCookie(authCookie);\n    }\n    if (walletId) {\n      lastActiveWalletId = walletId;\n      lastConnectedWalletIds = (lastConnectedWalletIds == null ? void 0 : lastConnectedWalletIds.includes(walletId)) ? lastConnectedWalletIds : [walletId, ...lastConnectedWalletIds || []];\n    }\n    if (authProvider) {\n      await setLastAuthProvider(authProvider, storage);\n    }\n    if (!lastConnectedWalletIds) {\n      return autoConnected;\n    }\n    const lastConnectedChain = await getLastConnectedChain(storage) || props.chain;\n    async function handleWalletConnection(wallet2) {\n      return wallet2.autoConnect({\n        client: props.client,\n        chain: lastConnectedChain ?? void 0,\n        authResult\n      });\n    }\n    const availableWallets = [...wallets, ...(getInstalledWallets == null ? void 0 : getInstalledWallets()) ?? []];\n    const activeWallet = lastActiveWalletId && (availableWallets.find((w) => w.id === lastActiveWalletId) || createWalletFn(lastActiveWalletId));\n    if (activeWallet) {\n      try {\n        setConnectionStatus(\"connecting\");\n        await timeoutPromise(handleWalletConnection(activeWallet), {\n          ms: timeout,\n          message: `AutoConnect timeout: ${timeout}ms limit exceeded.`\n        });\n        const connectedWallet = await connect(activeWallet);\n        if (connectedWallet) {\n          if (onConnect) {\n            try {\n              onConnect(connectedWallet);\n              autoConnected = true;\n            } catch {\n            }\n          }\n        } else {\n          setConnectionStatus(\"disconnected\");\n        }\n      } catch (e) {\n        if (e instanceof Error) {\n          console.warn(\"Error auto connecting wallet:\", e.message);\n        }\n        setConnectionStatus(\"disconnected\");\n      }\n    } else {\n      setConnectionStatus(\"disconnected\");\n    }\n    const otherWallets = wallets.filter((w) => w.id !== lastActiveWalletId && lastConnectedWalletIds.includes(w.id));\n    for (const wallet2 of otherWallets) {\n      try {\n        await handleWalletConnection(wallet2);\n        manager.addConnectedWallet(wallet2);\n      } catch {\n      }\n    }\n    isAutoConnecting.setValue(false);\n    return autoConnected;\n  };\n  const query = useQuery({\n    queryKey: [\"autoConnect\", props.client.clientId],\n    queryFn: autoConnect,\n    refetchOnMount: false,\n    refetchOnWindowFocus: false\n  });\n  return query;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/hooks/wallets/useAutoConnect.js\nfunction useAutoConnect(props) {\n  const wallets = props.wallets || getDefaultWallets(props);\n  return useAutoConnectCore(webLocalStorage, {\n    ...props,\n    wallets\n  }, createWallet, () => {\n    const specifiedWalletIds = new Set(wallets.map((x) => x.id));\n    const installedWallets = getInstalledWalletProviders().filter((x) => !specifiedWalletIds.has(x.info.rdns)).map((x) => createWallet(x.info.rdns));\n    return installedWallets;\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/AutoConnect/AutoConnect.js\nfunction AutoConnect(props) {\n  useAutoConnect(props);\n  return (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, {});\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Details.js\nvar import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1);\nvar import_react49 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/analytics/track/pay.js\nasync function trackPayEvent(args) {\n  return track({\n    client: args.client,\n    ecosystem: args.ecosystem,\n    data: {\n      source: \"pay\",\n      action: args.event,\n      clientId: args.client.clientId,\n      chainId: args.chainId,\n      walletAddress: args.walletAddress,\n      walletType: args.walletType,\n      tokenAddress: args.fromToken,\n      amountWei: args.fromAmount,\n      dstTokenAddress: args.toToken,\n      dstChainId: args.chainId\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useActiveWalletChain.js\nvar import_react13 = __toESM(require_react(), 1);\nfunction useActiveWalletChain() {\n  const manager = useConnectionManagerCtx(\"useActiveWalletChain\");\n  const store = manager.activeWalletChainStore;\n  return (0, import_react13.useSyncExternalStore)(store.subscribe, store.getValue, store.getValue);\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useConnectedWallets.js\nvar import_react14 = __toESM(require_react(), 1);\nfunction useConnectedWallets() {\n  const manager = useConnectionManagerCtx(\"useConnectedWallets\");\n  const store = manager.connectedWallets;\n  return (0, import_react14.useSyncExternalStore)(store.subscribe, store.getValue, store.getValue);\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useAdminWallet.js\nfunction useAdminWallet() {\n  var _a;\n  const activeWallet = useActiveWallet();\n  const connectedWallets = useConnectedWallets();\n  const adminAccount = (_a = activeWallet == null ? void 0 : activeWallet.getAdminAccount) == null ? void 0 : _a.call(activeWallet);\n  if (!adminAccount) {\n    return activeWallet;\n  }\n  return connectedWallets.find((wallet) => {\n    var _a2, _b, _c;\n    return ((_b = (_a2 = wallet.getAccount()) == null ? void 0 : _a2.address) == null ? void 0 : _b.toLowerCase()) === ((_c = adminAccount == null ? void 0 : adminAccount.address) == null ? void 0 : _c.toLowerCase());\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useDisconnect.js\nfunction useDisconnect() {\n  const manager = useConnectionManagerCtx(\"useDisconnect\");\n  const disconnect = manager.disconnectWallet;\n  return { disconnect };\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useSwitchActiveWalletChain.js\nfunction useSwitchActiveWalletChain() {\n  const manager = useConnectionManagerCtx(\"useSwitchActiveWalletChain\");\n  return manager.switchActiveWalletChain;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/providers/RootElementContext.js\nvar import_react15 = __toESM(require_react(), 1);\nvar SetRootElementContext = (0, import_react15.createContext)(() => {\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/ChainIcon.js\nvar import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);\nvar fallbackChainIcon = \"data:image/svg+xml;charset=UTF-8,%3csvg width='15' height='14' viewBox='0 0 15 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M7 8.04238e-07C5.1435 8.04238e-07 3.36301 0.737501 2.05025 2.05025C0.7375 3.36301 0 5.1435 0 7C0 7.225 -1.52737e-07 7.445 0.0349998 7.665C0.16385 9.0151 0.68213 10.2988 1.52686 11.3598C2.37158 12.4209 3.50637 13.2137 4.79326 13.642C6.0801 14.0702 7.4637 14.1153 8.7758 13.7719C10.0879 13.4285 11.2719 12.7113 12.184 11.7075C13.0961 10.7038 13.6969 9.4567 13.9135 8.1178C14.1301 6.7789 13.9531 5.406 13.4039 4.16587C12.8548 2.92574 11.9573 1.87184 10.8204 1.13228C9.6835 0.392721 8.3563 -0.000649196 7 8.04238e-07ZM7 1C8.581 1.00137 10.0975 1.62668 11.22 2.74V3.24C9.2438 2.55991 7.0956 2.56872 5.125 3.265C4.96758 3.1116 4.76997 3.00586 4.555 2.96H4.43C4.37 2.75 4.315 2.54 4.27 2.325C4.225 2.11 4.2 1.92 4.175 1.715C5.043 1.24658 6.0137 1.00091 7 1ZM5.5 3.935C7.3158 3.32693 9.2838 3.34984 11.085 4C10.8414 5.2703 10.3094 6.4677 9.53 7.5C9.312 7.4077 9.0707 7.3855 8.8395 7.4366C8.6083 7.4877 8.3988 7.6094 8.24 7.785C8.065 7.685 7.89 7.585 7.74 7.47C6.7307 6.7966 5.8877 5.9023 5.275 4.855C5.374 4.73221 5.4461 4.58996 5.4866 4.43749C5.5271 4.28502 5.5351 4.12575 5.51 3.97L5.5 3.935ZM3.5 2.135C3.5 2.24 3.53 2.35 3.55 2.455C3.595 2.675 3.655 2.89 3.715 3.105C3.52353 3.21838 3.36943 3.38531 3.2717 3.58522C3.17397 3.78513 3.13688 4.00927 3.165 4.23C2.37575 4.7454 1.67078 5.3795 1.075 6.11C1.19455 5.3189 1.47112 4.55966 1.88843 3.87701C2.30575 3.19437 2.85539 2.60208 3.505 2.135H3.5ZM3.5 9.99C3.30481 10.0555 3.13037 10.1714 2.9943 10.3259C2.85822 10.4804 2.76533 10.6681 2.725 10.87H2.405C1.59754 9.9069 1.1146 8.7136 1.025 7.46L1.08 7.365C1.70611 6.3942 2.52463 5.562 3.485 4.92C3.62899 5.0704 3.81094 5.179 4.01162 5.2345C4.2123 5.2899 4.42423 5.2901 4.625 5.235C5.2938 6.3652 6.208 7.3306 7.3 8.06C7.505 8.195 7.715 8.32 7.925 8.44C7.9082 8.6312 7.9391 8.8237 8.015 9C7.1 9.7266 6.0445 10.256 4.915 10.555C4.78401 10.3103 4.57028 10.1201 4.31199 10.0184C4.05369 9.9167 3.76766 9.9102 3.505 10L3.5 9.99ZM7 12.99C5.9831 12.9903 4.98307 12.7304 4.095 12.235L4.235 12.205C4.43397 12.1397 4.61176 12.0222 4.74984 11.8648C4.88792 11.7074 4.98122 11.5158 5.02 11.31C6.2985 10.984 7.4921 10.3872 8.52 9.56C8.7642 9.7027 9.0525 9.75 9.3295 9.6927C9.6064 9.6355 9.8524 9.4778 10.02 9.25C10.7254 9.4334 11.4511 9.5275 12.18 9.53H12.445C11.9626 10.5673 11.1938 11.4451 10.2291 12.0599C9.2643 12.6747 8.144 13.0009 7 13V12.99ZM10.255 8.54C10.2545 8.3304 10.1975 8.1249 10.09 7.945C10.9221 6.8581 11.5012 5.5991 11.785 4.26C12.035 4.37667 12.2817 4.50667 12.525 4.65C13.0749 5.9495 13.1493 7.4012 12.735 8.75C11.9049 8.8142 11.0698 8.7484 10.26 8.555L10.255 8.54Z' fill='%23646D7A'/%3e%3c/svg%3e\";\nvar ChainIcon = (props) => {\n  const getSrc = () => {\n    const url = props.chainIconUrl;\n    if (!url) {\n      return fallbackChainIcon;\n    }\n    try {\n      return resolveScheme({\n        uri: url,\n        client: props.client\n      });\n    } catch {\n      return fallbackChainIcon;\n    }\n  };\n  return (0, import_jsx_runtime15.jsxs)(Container, { style: {\n    position: \"relative\",\n    display: \"flex\",\n    flexShrink: 0,\n    alignItems: \"center\"\n  }, children: [(0, import_jsx_runtime15.jsx)(Img, { src: getSrc(), width: props.size, height: props.size, fallbackImage: fallbackChainIcon, client: props.client }), props.active && (0, import_jsx_runtime15.jsx)(ActiveDot, {})] });\n};\nvar ActiveDot = StyledDiv({\n  width: \"28%\",\n  height: \"28%\",\n  borderRadius: \"50%\",\n  position: \"absolute\",\n  bottom: 0,\n  right: 0,\n  backgroundColor: \"#00d395\",\n  boxShadow: \"0 0 0 2px var(--bg)\"\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/CopyIcon.js\nvar import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/hooks/useCopyClipboard.js\nvar import_react16 = __toESM(require_react(), 1);\nfunction useClipboard(text) {\n  const [hasCopied, setHasCopied] = (0, import_react16.useState)(false);\n  const onCopy = (0, import_react16.useCallback)(async () => {\n    await navigator.clipboard.writeText(text);\n    setHasCopied(true);\n  }, [text]);\n  (0, import_react16.useEffect)(() => {\n    let timeoutId = null;\n    if (hasCopied) {\n      timeoutId = window.setTimeout(() => {\n        setHasCopied(false);\n      }, 1500);\n    }\n    return () => {\n      if (timeoutId) {\n        window.clearTimeout(timeoutId);\n      }\n    };\n  }, [hasCopied]);\n  return { onCopy, hasCopied };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Tooltip.js\nvar import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/@radix-ui/react-tooltip/dist/index.mjs\nvar React32 = __toESM(require_react(), 1);\n\n// node_modules/@radix-ui/react-popper/dist/index.mjs\nvar React30 = __toESM(require_react(), 1);\n\n// node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs\nvar sides = [\"top\", \"right\", \"bottom\", \"left\"];\nvar alignments = [\"start\", \"end\"];\nvar placements = sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nvar min = Math.min;\nvar max = Math.max;\nvar round = Math.round;\nvar floor = Math.floor;\nvar createCoords = (v) => ({\n  x: v,\n  y: v\n});\nvar oppositeSideMap = {\n  left: \"right\",\n  right: \"left\",\n  bottom: \"top\",\n  top: \"bottom\"\n};\nvar oppositeAlignmentMap = {\n  start: \"end\",\n  end: \"start\"\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === \"function\" ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split(\"-\")[0];\n}\nfunction getAlignment(placement) {\n  return placement.split(\"-\")[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === \"x\" ? \"y\" : \"x\";\n}\nfunction getAxisLength(axis) {\n  return axis === \"y\" ? \"height\" : \"width\";\n}\nfunction getSideAxis(placement) {\n  return [\"top\", \"bottom\"].includes(getSide(placement)) ? \"y\" : \"x\";\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === \"x\" ? alignment === (rtl ? \"end\" : \"start\") ? \"right\" : \"left\" : alignment === \"start\" ? \"bottom\" : \"top\";\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = [\"left\", \"right\"];\n  const rl = [\"right\", \"left\"];\n  const tb = [\"top\", \"bottom\"];\n  const bt = [\"bottom\", \"top\"];\n  switch (side) {\n    case \"top\":\n    case \"bottom\":\n      if (rtl)\n        return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case \"left\":\n    case \"right\":\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === \"start\", rtl);\n  if (alignment) {\n    list = list.map((side) => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== \"number\" ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\n// node_modules/@floating-ui/core/dist/floating-ui.core.mjs\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === \"y\";\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case \"top\":\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case \"bottom\":\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case \"right\":\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case \"left\":\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case \"start\":\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case \"end\":\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\nvar computePosition = async (reference, floating, config) => {\n  const {\n    placement = \"bottom\",\n    strategy = \"absolute\",\n    middleware = [],\n    platform: platform2\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating));\n  let rects = await platform2.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: platform2,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === \"object\") {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform2.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform: platform2,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = \"clippingAncestors\",\n    rootBoundary = \"viewport\",\n    elementContext = \"floating\",\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === \"floating\" ? \"reference\" : \"floating\";\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform2.getClippingRect({\n    element: ((_await$platform$isEle = await (platform2.isElement == null ? void 0 : platform2.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform2.getDocumentElement == null ? void 0 : platform2.getDocumentElement(elements.floating)),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === \"floating\" ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(elements.floating));\n  const offsetScale = await (platform2.isElement == null ? void 0 : platform2.isElement(offsetParent)) ? await (platform2.getScale == null ? void 0 : platform2.getScale(offsetParent)) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform2.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\nvar arrow = (options) => ({\n  name: \"arrow\",\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform: platform2,\n      elements,\n      middlewareData\n    } = state;\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform2.getDimensions(element);\n    const isYAxis = axis === \"y\";\n    const minProp = isYAxis ? \"top\" : \"left\";\n    const maxProp = isYAxis ? \"bottom\" : \"right\";\n    const clientProp = isYAxis ? \"clientHeight\" : \"clientWidth\";\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n    if (!clientSize || !await (platform2.isElement == null ? void 0 : platform2.isElement(arrowOffsetParent))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n    const min$1 = minPadding;\n    const max2 = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset4 = clamp(min$1, center, max2);\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset4 && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max2 : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset4,\n        centerOffset: center - offset4 - alignmentOffset,\n        ...shouldAddOffset && {\n          alignmentOffset\n        }\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\nvar flip = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"flip\",\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform: platform2,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = \"bestFit\",\n        fallbackAxisSideDirection = \"none\",\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== \"none\";\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements2 = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides2 = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides2[0]], overflow[sides2[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n      if (!overflows.every((side2) => side2 <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements2[nextIndex];\n        if (nextPlacement) {\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter((d) => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case \"bestFit\": {\n              var _overflowsData$filter2;\n              const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => {\n                if (hasFallbackAxisSideDirection) {\n                  const currentSideAxis = getSideAxis(d.placement);\n                  return currentSideAxis === initialSideAxis || // Create a bias to the `y` side axis due to horizontal\n                  // reading directions favoring greater width.\n                  currentSideAxis === \"y\";\n                }\n                return true;\n              }).map((d) => [d.placement, d.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n              if (placement2) {\n                resetPlacement = placement2;\n              }\n              break;\n            }\n            case \"initialPlacement\":\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some((side) => overflow[side] >= 0);\n}\nvar hide = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"hide\",\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = \"referenceHidden\",\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case \"referenceHidden\": {\n          const overflow = await detectOverflow(state, {\n            ...detectOverflowOptions,\n            elementContext: \"reference\"\n          });\n          const offsets = getSideOffsets(overflow, rects.reference);\n          return {\n            data: {\n              referenceHiddenOffsets: offsets,\n              referenceHidden: isAnySideFullyClipped(offsets)\n            }\n          };\n        }\n        case \"escaped\": {\n          const overflow = await detectOverflow(state, {\n            ...detectOverflowOptions,\n            altBoundary: true\n          });\n          const offsets = getSideOffsets(overflow, rects.floating);\n          return {\n            data: {\n              escapedOffsets: offsets,\n              escaped: isAnySideFullyClipped(offsets)\n            }\n          };\n        }\n        default: {\n          return {};\n        }\n      }\n    }\n  };\n};\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform: platform2,\n    elements\n  } = state;\n  const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === \"y\";\n  const mainAxisMulti = [\"left\", \"top\"].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === \"number\" ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === \"number\") {\n    crossAxis = alignment === \"end\" ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\nvar offset = function(options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: \"offset\",\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\nvar shift = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"shift\",\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: (_ref) => {\n            let {\n              x: x2,\n              y: y2\n            } = _ref;\n            return {\n              x: x2,\n              y: y2\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === \"y\" ? \"top\" : \"left\";\n        const maxSide = mainAxis === \"y\" ? \"bottom\" : \"right\";\n        const min2 = mainAxisCoord + overflow[minSide];\n        const max2 = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min2, mainAxisCoord, max2);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === \"y\" ? \"top\" : \"left\";\n        const maxSide = crossAxis === \"y\" ? \"bottom\" : \"right\";\n        const min2 = crossAxisCoord + overflow[minSide];\n        const max2 = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min2, crossAxisCoord, max2);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\nvar limitShift = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset: offset4 = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset4, state);\n      const computedOffset = typeof rawOffset === \"number\" ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === \"y\" ? \"height\" : \"width\";\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === \"y\" ? \"width\" : \"height\";\n        const isOriginSide = [\"top\", \"left\"].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\nvar size = function(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: \"size\",\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform: platform2,\n        elements\n      } = state;\n      const {\n        apply = () => {\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === \"y\";\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === \"top\" || side === \"bottom\") {\n        heightSide = side;\n        widthSide = alignment === (await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating)) ? \"start\" : \"end\") ? \"left\" : \"right\";\n      } else {\n        widthSide = side;\n        heightSide = alignment === \"end\" ? \"top\" : \"bottom\";\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform2.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs\nfunction hasWindow() {\n  return typeof window !== \"undefined\";\n}\nfunction getNodeName(node) {\n  if (isNode2(node)) {\n    return (node.nodeName || \"\").toLowerCase();\n  }\n  return \"#document\";\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode2(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode2(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === \"undefined\") {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle2(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\nfunction isTableElement(element) {\n  return [\"table\", \"td\", \"th\"].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  return [\":popover-open\", \":modal\"].some((selector) => {\n    try {\n      return element.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss;\n  return css.transform !== \"none\" || css.perspective !== \"none\" || (css.containerType ? css.containerType !== \"normal\" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== \"none\" : false) || !webkit && (css.filter ? css.filter !== \"none\" : false) || [\"transform\", \"perspective\", \"filter\"].some((value) => (css.willChange || \"\").includes(value)) || [\"paint\", \"layout\", \"strict\", \"content\"].some((value) => (css.contain || \"\").includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === \"undefined\" || !CSS.supports)\n    return false;\n  return CSS.supports(\"-webkit-backdrop-filter\", \"none\");\n}\nfunction isLastTraversableNode(node) {\n  return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nfunction getComputedStyle2(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === \"html\") {\n    return node;\n  }\n  const result = (\n    // Step into the shadow DOM of the parent of a slotted node.\n    node.assignedSlot || // DOM Element detected.\n    node.parentNode || // ShadowRoot detected.\n    isShadowRoot(node) && node.host || // Fallback.\n    getDocumentElement(node)\n  );\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\n// node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs\nfunction getCssDimensions(element) {\n  const css = getComputedStyle2(element);\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\nvar noOffsets = createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle2(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n  if (ignoreScrollbarX === void 0) {\n    ignoreScrollbarX = false;\n  }\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 : (\n    // RTL <body> scrollbar.\n    getWindowScrollBarX(documentElement, htmlRect)\n  ));\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === \"fixed\";\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle2(body).direction === \"rtl\") {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === \"fixed\") {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === \"fixed\");\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === \"viewport\") {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === \"document\") {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle2(parentNode).position === \"fixed\" || hasFixedPositionAncestor(parentNode, stopNode);\n}\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== \"body\");\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle2(element).position === \"fixed\";\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle2(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === \"fixed\") {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === \"static\" && !!currentContainingBlockComputedStyle && [\"absolute\", \"fixed\"].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      result = result.filter((ancestor) => ancestor !== currentNode);\n    } else {\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === \"clippingAncestors\" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === \"fixed\";\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== \"body\" || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\nfunction isStaticPositioned(element) {\n  return getComputedStyle2(element).position === \"static\";\n}\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle2(element).position === \"fixed\") {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\nvar getElementRects = async function(data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\nfunction isRTL(element) {\n  return getComputedStyle2(element).direction === \"rtl\";\n}\nvar platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1e3);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === \"function\",\n    layoutShift = typeof IntersectionObserver === \"function\",\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach((ancestor) => {\n    ancestorScroll && ancestor.addEventListener(\"scroll\", update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener(\"resize\", update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver((_ref) => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach((ancestor) => {\n      ancestorScroll && ancestor.removeEventListener(\"scroll\", update);\n      ancestorResize && ancestor.removeEventListener(\"resize\", update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\nvar offset2 = offset;\nvar shift2 = shift;\nvar flip2 = flip;\nvar size2 = size;\nvar hide2 = hide;\nvar arrow2 = arrow;\nvar limitShift2 = limitShift;\nvar computePosition2 = (reference, floating, options) => {\n  const cache = /* @__PURE__ */ new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\n// node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs\nvar React26 = __toESM(require_react(), 1);\nvar import_react17 = __toESM(require_react(), 1);\nvar ReactDOM3 = __toESM(require_react_dom(), 1);\nvar index = typeof document !== \"undefined\" ? import_react17.useLayoutEffect : import_react17.useEffect;\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === \"function\" && a.toString() === b.toString()) {\n    return true;\n  }\n  let length;\n  let i;\n  let keys;\n  if (a && b && typeof a === \"object\") {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length !== b.length)\n        return false;\n      for (i = length; i-- !== 0; ) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0; ) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0; ) {\n      const key = keys[i];\n      if (key === \"_owner\" && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\nfunction getDPR(element) {\n  if (typeof window === \"undefined\") {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\nfunction useLatestRef(value) {\n  const ref = React26.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = \"bottom\",\n    strategy = \"absolute\",\n    middleware = [],\n    platform: platform2,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React26.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React26.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React26.useState(null);\n  const [_floating, _setFloating] = React26.useState(null);\n  const setReference = React26.useCallback((node) => {\n    if (node !== referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, []);\n  const setFloating = React26.useCallback((node) => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, []);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React26.useRef(null);\n  const floatingRef = React26.useRef(null);\n  const dataRef = React26.useRef(data);\n  const hasWhileElementsMounted = whileElementsMounted != null;\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform2);\n  const openRef = useLatestRef(open);\n  const update = React26.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => {\n      const fullData = {\n        ...data2,\n        // The floating element's position may be recomputed while it's closed\n        // but still mounted (such as when transitioning out). To ensure\n        // `isPositioned` will be `false` initially on the next open, avoid\n        // setting it to `true` when `open === false` (must be specified).\n        isPositioned: openRef.current !== false\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM3.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData((data2) => ({\n        ...data2,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React26.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl)\n      referenceRef.current = referenceEl;\n    if (floatingEl)\n      floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      }\n      update();\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n  const refs = React26.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React26.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React26.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...getDPR(elements.floating) >= 1.5 && {\n          willChange: \"transform\"\n        }\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React26.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\n}\nvar arrow$1 = (options) => {\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, \"current\");\n  }\n  return {\n    name: \"arrow\",\n    options,\n    fn(state) {\n      const {\n        element,\n        padding\n      } = typeof options === \"function\" ? options(state) : options;\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow2({\n            element: element.current,\n            padding\n          }).fn(state);\n        }\n        return {};\n      }\n      if (element) {\n        return arrow2({\n          element,\n          padding\n        }).fn(state);\n      }\n      return {};\n    }\n  };\n};\nvar offset3 = (options, deps) => ({\n  ...offset2(options),\n  options: [options, deps]\n});\nvar shift3 = (options, deps) => ({\n  ...shift2(options),\n  options: [options, deps]\n});\nvar limitShift3 = (options, deps) => ({\n  ...limitShift2(options),\n  options: [options, deps]\n});\nvar flip3 = (options, deps) => ({\n  ...flip2(options),\n  options: [options, deps]\n});\nvar size3 = (options, deps) => ({\n  ...size2(options),\n  options: [options, deps]\n});\nvar hide3 = (options, deps) => ({\n  ...hide2(options),\n  options: [options, deps]\n});\nvar arrow3 = (options, deps) => ({\n  ...arrow$1(options),\n  options: [options, deps]\n});\n\n// node_modules/@radix-ui/react-arrow/dist/index.mjs\nvar React27 = __toESM(require_react(), 1);\nvar import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);\nvar NAME = \"Arrow\";\nvar Arrow = React27.forwardRef((props, forwardedRef) => {\n  const { children, width = 10, height = 5, ...arrowProps } = props;\n  return (0, import_jsx_runtime16.jsx)(\n    Primitive.svg,\n    {\n      ...arrowProps,\n      ref: forwardedRef,\n      width,\n      height,\n      viewBox: \"0 0 30 10\",\n      preserveAspectRatio: \"none\",\n      children: props.asChild ? children : (0, import_jsx_runtime16.jsx)(\"polygon\", { points: \"0,0 30,0 15,10\" })\n    }\n  );\n});\nArrow.displayName = NAME;\nvar Root2 = Arrow;\n\n// node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context/dist/index.mjs\nvar React28 = __toESM(require_react(), 1);\nvar import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);\nfunction createContextScope2(scopeName, createContextScopeDeps = []) {\n  let defaultContexts = [];\n  function createContext32(rootComponentName, defaultContext) {\n    const BaseContext = React28.createContext(defaultContext);\n    const index2 = defaultContexts.length;\n    defaultContexts = [...defaultContexts, defaultContext];\n    function Provider2(props) {\n      const { scope, children, ...context } = props;\n      const Context = (scope == null ? void 0 : scope[scopeName][index2]) || BaseContext;\n      const value = React28.useMemo(() => context, Object.values(context));\n      return (0, import_jsx_runtime17.jsx)(Context.Provider, { value, children });\n    }\n    function useContext22(consumerName, scope) {\n      const Context = (scope == null ? void 0 : scope[scopeName][index2]) || BaseContext;\n      const context = React28.useContext(Context);\n      if (context)\n        return context;\n      if (defaultContext !== void 0)\n        return defaultContext;\n      throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n    Provider2.displayName = rootComponentName + \"Provider\";\n    return [Provider2, useContext22];\n  }\n  const createScope = () => {\n    const scopeContexts = defaultContexts.map((defaultContext) => {\n      return React28.createContext(defaultContext);\n    });\n    return function useScope(scope) {\n      const contexts = (scope == null ? void 0 : scope[scopeName]) || scopeContexts;\n      return React28.useMemo(\n        () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n        [scope, contexts]\n      );\n    };\n  };\n  createScope.scopeName = scopeName;\n  return [createContext32, composeContextScopes2(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes2(...scopes) {\n  const baseScope = scopes[0];\n  if (scopes.length === 1)\n    return baseScope;\n  const createScope = () => {\n    const scopeHooks = scopes.map((createScope2) => ({\n      useScope: createScope2(),\n      scopeName: createScope2.scopeName\n    }));\n    return function useComposedScopes(overrideScopes) {\n      const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n        const scopeProps = useScope(overrideScopes);\n        const currentScope = scopeProps[`__scope${scopeName}`];\n        return { ...nextScopes2, ...currentScope };\n      }, {});\n      return React28.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n    };\n  };\n  createScope.scopeName = baseScope.scopeName;\n  return createScope;\n}\n\n// node_modules/@radix-ui/react-use-size/dist/index.mjs\nvar React29 = __toESM(require_react(), 1);\nfunction useSize(element) {\n  const [size4, setSize] = React29.useState(void 0);\n  useLayoutEffect2(() => {\n    if (element) {\n      setSize({ width: element.offsetWidth, height: element.offsetHeight });\n      const resizeObserver = new ResizeObserver((entries) => {\n        if (!Array.isArray(entries)) {\n          return;\n        }\n        if (!entries.length) {\n          return;\n        }\n        const entry = entries[0];\n        let width;\n        let height;\n        if (\"borderBoxSize\" in entry) {\n          const borderSizeEntry = entry[\"borderBoxSize\"];\n          const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n          width = borderSize[\"inlineSize\"];\n          height = borderSize[\"blockSize\"];\n        } else {\n          width = element.offsetWidth;\n          height = element.offsetHeight;\n        }\n        setSize({ width, height });\n      });\n      resizeObserver.observe(element, { box: \"border-box\" });\n      return () => resizeObserver.unobserve(element);\n    } else {\n      setSize(void 0);\n    }\n  }, [element]);\n  return size4;\n}\n\n// node_modules/@radix-ui/react-popper/dist/index.mjs\nvar import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope2(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n  const { __scopePopper, children } = props;\n  const [anchor, setAnchor] = React30.useState(null);\n  return (0, import_jsx_runtime18.jsx)(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React30.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopePopper, virtualRef, ...anchorProps } = props;\n    const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n    const ref = React30.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    React30.useEffect(() => {\n      context.onAnchorChange((virtualRef == null ? void 0 : virtualRef.current) || ref.current);\n    });\n    return virtualRef ? null : (0, import_jsx_runtime18.jsx)(Primitive.div, { ...anchorProps, ref: composedRefs });\n  }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME2 = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME2);\nvar PopperContent = React30.forwardRef(\n  (props, forwardedRef) => {\n    var _a, _b, _c, _d, _e, _f;\n    const {\n      __scopePopper,\n      side = \"bottom\",\n      sideOffset = 0,\n      align = \"center\",\n      alignOffset = 0,\n      arrowPadding = 0,\n      avoidCollisions = true,\n      collisionBoundary = [],\n      collisionPadding: collisionPaddingProp = 0,\n      sticky = \"partial\",\n      hideWhenDetached = false,\n      updatePositionStrategy = \"optimized\",\n      onPlaced,\n      ...contentProps\n    } = props;\n    const context = usePopperContext(CONTENT_NAME2, __scopePopper);\n    const [content, setContent] = React30.useState(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n    const [arrow4, setArrow] = React30.useState(null);\n    const arrowSize = useSize(arrow4);\n    const arrowWidth = (arrowSize == null ? void 0 : arrowSize.width) ?? 0;\n    const arrowHeight = (arrowSize == null ? void 0 : arrowSize.height) ?? 0;\n    const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n    const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n    const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n    const hasExplicitBoundaries = boundary.length > 0;\n    const detectOverflowOptions = {\n      padding: collisionPadding,\n      boundary: boundary.filter(isNotNull),\n      // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n      altBoundary: hasExplicitBoundaries\n    };\n    const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n      // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n      strategy: \"fixed\",\n      placement: desiredPlacement,\n      whileElementsMounted: (...args) => {\n        const cleanup = autoUpdate(...args, {\n          animationFrame: updatePositionStrategy === \"always\"\n        });\n        return cleanup;\n      },\n      elements: {\n        reference: context.anchor\n      },\n      middleware: [\n        offset3({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n        avoidCollisions && shift3({\n          mainAxis: true,\n          crossAxis: false,\n          limiter: sticky === \"partial\" ? limitShift3() : void 0,\n          ...detectOverflowOptions\n        }),\n        avoidCollisions && flip3({ ...detectOverflowOptions }),\n        size3({\n          ...detectOverflowOptions,\n          apply: ({ elements, rects, availableWidth, availableHeight }) => {\n            const { width: anchorWidth, height: anchorHeight } = rects.reference;\n            const contentStyle = elements.floating.style;\n            contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n            contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n          }\n        }),\n        arrow4 && arrow3({ element: arrow4, padding: arrowPadding }),\n        transformOrigin({ arrowWidth, arrowHeight }),\n        hideWhenDetached && hide3({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n      ]\n    });\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const handlePlaced = useCallbackRef(onPlaced);\n    useLayoutEffect2(() => {\n      if (isPositioned) {\n        handlePlaced == null ? void 0 : handlePlaced();\n      }\n    }, [isPositioned, handlePlaced]);\n    const arrowX = (_a = middlewareData.arrow) == null ? void 0 : _a.x;\n    const arrowY = (_b = middlewareData.arrow) == null ? void 0 : _b.y;\n    const cannotCenterArrow = ((_c = middlewareData.arrow) == null ? void 0 : _c.centerOffset) !== 0;\n    const [contentZIndex, setContentZIndex] = React30.useState();\n    useLayoutEffect2(() => {\n      if (content)\n        setContentZIndex(window.getComputedStyle(content).zIndex);\n    }, [content]);\n    return (0, import_jsx_runtime18.jsx)(\n      \"div\",\n      {\n        ref: refs.setFloating,\n        \"data-radix-popper-content-wrapper\": \"\",\n        style: {\n          ...floatingStyles,\n          transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n          // keep off the page when measuring\n          minWidth: \"max-content\",\n          zIndex: contentZIndex,\n          [\"--radix-popper-transform-origin\"]: [\n            (_d = middlewareData.transformOrigin) == null ? void 0 : _d.x,\n            (_e = middlewareData.transformOrigin) == null ? void 0 : _e.y\n          ].join(\" \"),\n          // hide the content if using the hide middleware and should be hidden\n          // set visibility to hidden and disable pointer events so the UI behaves\n          // as if the PopperContent isn't there at all\n          ...((_f = middlewareData.hide) == null ? void 0 : _f.referenceHidden) && {\n            visibility: \"hidden\",\n            pointerEvents: \"none\"\n          }\n        },\n        dir: props.dir,\n        children: (0, import_jsx_runtime18.jsx)(\n          PopperContentProvider,\n          {\n            scope: __scopePopper,\n            placedSide,\n            onArrowChange: setArrow,\n            arrowX,\n            arrowY,\n            shouldHideArrow: cannotCenterArrow,\n            children: (0, import_jsx_runtime18.jsx)(\n              Primitive.div,\n              {\n                \"data-side\": placedSide,\n                \"data-align\": placedAlign,\n                ...contentProps,\n                ref: composedRefs,\n                style: {\n                  ...contentProps.style,\n                  // if the PopperContent hasn't been placed yet (not all measurements done)\n                  // we prevent animations so that users's animation don't kick in too early referring wrong sides\n                  animation: !isPositioned ? \"none\" : void 0\n                }\n              }\n            )\n          }\n        )\n      }\n    );\n  }\n);\nPopperContent.displayName = CONTENT_NAME2;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n  top: \"bottom\",\n  right: \"left\",\n  bottom: \"top\",\n  left: \"right\"\n};\nvar PopperArrow = React30.forwardRef(function PopperArrow2(props, forwardedRef) {\n  const { __scopePopper, ...arrowProps } = props;\n  const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n  const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n  return (\n    // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n    // doesn't report size as we'd expect on SVG elements.\n    // it reports their bounding box which is effectively the largest path inside the SVG.\n    (0, import_jsx_runtime18.jsx)(\n      \"span\",\n      {\n        ref: contentContext.onArrowChange,\n        style: {\n          position: \"absolute\",\n          left: contentContext.arrowX,\n          top: contentContext.arrowY,\n          [baseSide]: 0,\n          transformOrigin: {\n            top: \"\",\n            right: \"0 0\",\n            bottom: \"center 0\",\n            left: \"100% 0\"\n          }[contentContext.placedSide],\n          transform: {\n            top: \"translateY(100%)\",\n            right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n            bottom: `rotate(180deg)`,\n            left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n          }[contentContext.placedSide],\n          visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n        },\n        children: (0, import_jsx_runtime18.jsx)(\n          Root2,\n          {\n            ...arrowProps,\n            ref: forwardedRef,\n            style: {\n              ...arrowProps.style,\n              // ensures the element can be measured correctly (mostly for if SVG)\n              display: \"block\"\n            }\n          }\n        )\n      }\n    )\n  );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n  return value !== null;\n}\nvar transformOrigin = (options) => ({\n  name: \"transformOrigin\",\n  options,\n  fn(data) {\n    var _a, _b, _c;\n    const { placement, rects, middlewareData } = data;\n    const cannotCenterArrow = ((_a = middlewareData.arrow) == null ? void 0 : _a.centerOffset) !== 0;\n    const isArrowHidden = cannotCenterArrow;\n    const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n    const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n    const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n    const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n    const arrowXCenter = (((_b = middlewareData.arrow) == null ? void 0 : _b.x) ?? 0) + arrowWidth / 2;\n    const arrowYCenter = (((_c = middlewareData.arrow) == null ? void 0 : _c.y) ?? 0) + arrowHeight / 2;\n    let x = \"\";\n    let y = \"\";\n    if (placedSide === \"bottom\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${-arrowHeight}px`;\n    } else if (placedSide === \"top\") {\n      x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n      y = `${rects.floating.height + arrowHeight}px`;\n    } else if (placedSide === \"right\") {\n      x = `${-arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    } else if (placedSide === \"left\") {\n      x = `${rects.floating.width + arrowHeight}px`;\n      y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n    }\n    return { data: { x, y } };\n  }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n  const [side, align = \"center\"] = placement.split(\"-\");\n  return [side, align];\n}\nvar Root22 = Popper;\nvar Anchor = PopperAnchor;\nvar Content2 = PopperContent;\nvar Arrow2 = PopperArrow;\n\n// node_modules/@radix-ui/react-visually-hidden/dist/index.mjs\nvar React31 = __toESM(require_react(), 1);\nvar import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);\nvar NAME2 = \"VisuallyHidden\";\nvar VisuallyHidden = React31.forwardRef(\n  (props, forwardedRef) => {\n    return (0, import_jsx_runtime19.jsx)(\n      Primitive.span,\n      {\n        ...props,\n        ref: forwardedRef,\n        style: {\n          // See: https://github.com/twbs/bootstrap/blob/master/scss/mixins/_screen-reader.scss\n          position: \"absolute\",\n          border: 0,\n          width: 1,\n          height: 1,\n          padding: 0,\n          margin: -1,\n          overflow: \"hidden\",\n          clip: \"rect(0, 0, 0, 0)\",\n          whiteSpace: \"nowrap\",\n          wordWrap: \"normal\",\n          ...props.style\n        }\n      }\n    );\n  }\n);\nVisuallyHidden.displayName = NAME2;\nvar Root3 = VisuallyHidden;\n\n// node_modules/@radix-ui/react-tooltip/dist/index.mjs\nvar import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n  createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n  const {\n    __scopeTooltip,\n    delayDuration = DEFAULT_DELAY_DURATION,\n    skipDelayDuration = 300,\n    disableHoverableContent = false,\n    children\n  } = props;\n  const [isOpenDelayed, setIsOpenDelayed] = React32.useState(true);\n  const isPointerInTransitRef = React32.useRef(false);\n  const skipDelayTimerRef = React32.useRef(0);\n  React32.useEffect(() => {\n    const skipDelayTimer = skipDelayTimerRef.current;\n    return () => window.clearTimeout(skipDelayTimer);\n  }, []);\n  return (0, import_jsx_runtime20.jsx)(\n    TooltipProviderContextProvider,\n    {\n      scope: __scopeTooltip,\n      isOpenDelayed,\n      delayDuration,\n      onOpen: React32.useCallback(() => {\n        window.clearTimeout(skipDelayTimerRef.current);\n        setIsOpenDelayed(false);\n      }, []),\n      onClose: React32.useCallback(() => {\n        window.clearTimeout(skipDelayTimerRef.current);\n        skipDelayTimerRef.current = window.setTimeout(\n          () => setIsOpenDelayed(true),\n          skipDelayDuration\n        );\n      }, [skipDelayDuration]),\n      isPointerInTransitRef,\n      onPointerInTransitChange: React32.useCallback((inTransit) => {\n        isPointerInTransitRef.current = inTransit;\n      }, []),\n      disableHoverableContent,\n      children\n    }\n  );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n  const {\n    __scopeTooltip,\n    children,\n    open: openProp,\n    defaultOpen = false,\n    onOpenChange,\n    disableHoverableContent: disableHoverableContentProp,\n    delayDuration: delayDurationProp\n  } = props;\n  const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n  const popperScope = usePopperScope(__scopeTooltip);\n  const [trigger, setTrigger] = React32.useState(null);\n  const contentId = useId();\n  const openTimerRef = React32.useRef(0);\n  const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n  const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n  const wasOpenDelayedRef = React32.useRef(false);\n  const [open = false, setOpen] = useControllableState({\n    prop: openProp,\n    defaultProp: defaultOpen,\n    onChange: (open2) => {\n      if (open2) {\n        providerContext.onOpen();\n        document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n      } else {\n        providerContext.onClose();\n      }\n      onOpenChange == null ? void 0 : onOpenChange(open2);\n    }\n  });\n  const stateAttribute = React32.useMemo(() => {\n    return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n  }, [open]);\n  const handleOpen = React32.useCallback(() => {\n    window.clearTimeout(openTimerRef.current);\n    wasOpenDelayedRef.current = false;\n    setOpen(true);\n  }, [setOpen]);\n  const handleClose = React32.useCallback(() => {\n    window.clearTimeout(openTimerRef.current);\n    setOpen(false);\n  }, [setOpen]);\n  const handleDelayedOpen = React32.useCallback(() => {\n    window.clearTimeout(openTimerRef.current);\n    openTimerRef.current = window.setTimeout(() => {\n      wasOpenDelayedRef.current = true;\n      setOpen(true);\n    }, delayDuration);\n  }, [delayDuration, setOpen]);\n  React32.useEffect(() => {\n    return () => window.clearTimeout(openTimerRef.current);\n  }, []);\n  return (0, import_jsx_runtime20.jsx)(Root22, { ...popperScope, children: (0, import_jsx_runtime20.jsx)(\n    TooltipContextProvider,\n    {\n      scope: __scopeTooltip,\n      contentId,\n      open,\n      stateAttribute,\n      trigger,\n      onTriggerChange: setTrigger,\n      onTriggerEnter: React32.useCallback(() => {\n        if (providerContext.isOpenDelayed)\n          handleDelayedOpen();\n        else\n          handleOpen();\n      }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen]),\n      onTriggerLeave: React32.useCallback(() => {\n        if (disableHoverableContent) {\n          handleClose();\n        } else {\n          window.clearTimeout(openTimerRef.current);\n        }\n      }, [handleClose, disableHoverableContent]),\n      onOpen: handleOpen,\n      onClose: handleClose,\n      disableHoverableContent,\n      children\n    }\n  ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME2 = \"TooltipTrigger\";\nvar TooltipTrigger = React32.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTooltip, ...triggerProps } = props;\n    const context = useTooltipContext(TRIGGER_NAME2, __scopeTooltip);\n    const providerContext = useTooltipProviderContext(TRIGGER_NAME2, __scopeTooltip);\n    const popperScope = usePopperScope(__scopeTooltip);\n    const ref = React32.useRef(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n    const isPointerDownRef = React32.useRef(false);\n    const hasPointerMoveOpenedRef = React32.useRef(false);\n    const handlePointerUp = React32.useCallback(() => isPointerDownRef.current = false, []);\n    React32.useEffect(() => {\n      return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n    }, [handlePointerUp]);\n    return (0, import_jsx_runtime20.jsx)(Anchor, { asChild: true, ...popperScope, children: (0, import_jsx_runtime20.jsx)(\n      Primitive.button,\n      {\n        \"aria-describedby\": context.open ? context.contentId : void 0,\n        \"data-state\": context.stateAttribute,\n        ...triggerProps,\n        ref: composedRefs,\n        onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n          if (event.pointerType === \"touch\")\n            return;\n          if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n            context.onTriggerEnter();\n            hasPointerMoveOpenedRef.current = true;\n          }\n        }),\n        onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n          context.onTriggerLeave();\n          hasPointerMoveOpenedRef.current = false;\n        }),\n        onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n          isPointerDownRef.current = true;\n          document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n        }),\n        onFocus: composeEventHandlers(props.onFocus, () => {\n          if (!isPointerDownRef.current)\n            context.onOpen();\n        }),\n        onBlur: composeEventHandlers(props.onBlur, context.onClose),\n        onClick: composeEventHandlers(props.onClick, context.onClose)\n      }\n    ) });\n  }\n);\nTooltipTrigger.displayName = TRIGGER_NAME2;\nvar PORTAL_NAME3 = \"TooltipPortal\";\nvar [PortalProvider2, usePortalContext2] = createTooltipContext(PORTAL_NAME3, {\n  forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n  const { __scopeTooltip, forceMount, children, container } = props;\n  const context = useTooltipContext(PORTAL_NAME3, __scopeTooltip);\n  return (0, import_jsx_runtime20.jsx)(PortalProvider2, { scope: __scopeTooltip, forceMount, children: (0, import_jsx_runtime20.jsx)(Presence, { present: forceMount || context.open, children: (0, import_jsx_runtime20.jsx)(Portal, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME3;\nvar CONTENT_NAME3 = \"TooltipContent\";\nvar TooltipContent = React32.forwardRef(\n  (props, forwardedRef) => {\n    const portalContext = usePortalContext2(CONTENT_NAME3, props.__scopeTooltip);\n    const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n    const context = useTooltipContext(CONTENT_NAME3, props.__scopeTooltip);\n    return (0, import_jsx_runtime20.jsx)(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? (0, import_jsx_runtime20.jsx)(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : (0, import_jsx_runtime20.jsx)(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n  }\n);\nvar TooltipContentHoverable = React32.forwardRef((props, forwardedRef) => {\n  const context = useTooltipContext(CONTENT_NAME3, props.__scopeTooltip);\n  const providerContext = useTooltipProviderContext(CONTENT_NAME3, props.__scopeTooltip);\n  const ref = React32.useRef(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const [pointerGraceArea, setPointerGraceArea] = React32.useState(null);\n  const { trigger, onClose } = context;\n  const content = ref.current;\n  const { onPointerInTransitChange } = providerContext;\n  const handleRemoveGraceArea = React32.useCallback(() => {\n    setPointerGraceArea(null);\n    onPointerInTransitChange(false);\n  }, [onPointerInTransitChange]);\n  const handleCreateGraceArea = React32.useCallback(\n    (event, hoverTarget) => {\n      const currentTarget = event.currentTarget;\n      const exitPoint = { x: event.clientX, y: event.clientY };\n      const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n      const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n      const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n      const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n      setPointerGraceArea(graceArea);\n      onPointerInTransitChange(true);\n    },\n    [onPointerInTransitChange]\n  );\n  React32.useEffect(() => {\n    return () => handleRemoveGraceArea();\n  }, [handleRemoveGraceArea]);\n  React32.useEffect(() => {\n    if (trigger && content) {\n      const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n      const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n      trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n      content.addEventListener(\"pointerleave\", handleContentLeave);\n      return () => {\n        trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n        content.removeEventListener(\"pointerleave\", handleContentLeave);\n      };\n    }\n  }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n  React32.useEffect(() => {\n    if (pointerGraceArea) {\n      const handleTrackPointerGrace = (event) => {\n        const target = event.target;\n        const pointerPosition = { x: event.clientX, y: event.clientY };\n        const hasEnteredTarget = (trigger == null ? void 0 : trigger.contains(target)) || (content == null ? void 0 : content.contains(target));\n        const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n        if (hasEnteredTarget) {\n          handleRemoveGraceArea();\n        } else if (isPointerOutsideGraceArea) {\n          handleRemoveGraceArea();\n          onClose();\n        }\n      };\n      document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n      return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n    }\n  }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n  return (0, import_jsx_runtime20.jsx)(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar TooltipContentImpl = React32.forwardRef(\n  (props, forwardedRef) => {\n    const {\n      __scopeTooltip,\n      children,\n      \"aria-label\": ariaLabel,\n      onEscapeKeyDown,\n      onPointerDownOutside,\n      ...contentProps\n    } = props;\n    const context = useTooltipContext(CONTENT_NAME3, __scopeTooltip);\n    const popperScope = usePopperScope(__scopeTooltip);\n    const { onClose } = context;\n    React32.useEffect(() => {\n      document.addEventListener(TOOLTIP_OPEN, onClose);\n      return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n    }, [onClose]);\n    React32.useEffect(() => {\n      if (context.trigger) {\n        const handleScroll2 = (event) => {\n          const target = event.target;\n          if (target == null ? void 0 : target.contains(context.trigger))\n            onClose();\n        };\n        window.addEventListener(\"scroll\", handleScroll2, { capture: true });\n        return () => window.removeEventListener(\"scroll\", handleScroll2, { capture: true });\n      }\n    }, [context.trigger, onClose]);\n    return (0, import_jsx_runtime20.jsx)(\n      DismissableLayer,\n      {\n        asChild: true,\n        disableOutsidePointerEvents: false,\n        onEscapeKeyDown,\n        onPointerDownOutside,\n        onFocusOutside: (event) => event.preventDefault(),\n        onDismiss: onClose,\n        children: (0, import_jsx_runtime20.jsxs)(\n          Content2,\n          {\n            \"data-state\": context.stateAttribute,\n            ...popperScope,\n            ...contentProps,\n            ref: forwardedRef,\n            style: {\n              ...contentProps.style,\n              // re-namespace exposed content custom properties\n              ...{\n                \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n                \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n                \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n                \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n                \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n              }\n            },\n            children: [\n              (0, import_jsx_runtime20.jsx)(Slottable, { children }),\n              (0, import_jsx_runtime20.jsx)(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: (0, import_jsx_runtime20.jsx)(Root3, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n            ]\n          }\n        )\n      }\n    );\n  }\n);\nTooltipContent.displayName = CONTENT_NAME3;\nvar ARROW_NAME2 = \"TooltipArrow\";\nvar TooltipArrow = React32.forwardRef(\n  (props, forwardedRef) => {\n    const { __scopeTooltip, ...arrowProps } = props;\n    const popperScope = usePopperScope(__scopeTooltip);\n    const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n      ARROW_NAME2,\n      __scopeTooltip\n    );\n    return visuallyHiddenContentContext.isInside ? null : (0, import_jsx_runtime20.jsx)(Arrow2, { ...popperScope, ...arrowProps, ref: forwardedRef });\n  }\n);\nTooltipArrow.displayName = ARROW_NAME2;\nfunction getExitSideFromRect(point, rect) {\n  const top = Math.abs(rect.top - point.y);\n  const bottom = Math.abs(rect.bottom - point.y);\n  const right = Math.abs(rect.right - point.x);\n  const left = Math.abs(rect.left - point.x);\n  switch (Math.min(top, bottom, right, left)) {\n    case left:\n      return \"left\";\n    case right:\n      return \"right\";\n    case top:\n      return \"top\";\n    case bottom:\n      return \"bottom\";\n    default:\n      throw new Error(\"unreachable\");\n  }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n  const paddedExitPoints = [];\n  switch (exitSide) {\n    case \"top\":\n      paddedExitPoints.push(\n        { x: exitPoint.x - padding, y: exitPoint.y + padding },\n        { x: exitPoint.x + padding, y: exitPoint.y + padding }\n      );\n      break;\n    case \"bottom\":\n      paddedExitPoints.push(\n        { x: exitPoint.x - padding, y: exitPoint.y - padding },\n        { x: exitPoint.x + padding, y: exitPoint.y - padding }\n      );\n      break;\n    case \"left\":\n      paddedExitPoints.push(\n        { x: exitPoint.x + padding, y: exitPoint.y - padding },\n        { x: exitPoint.x + padding, y: exitPoint.y + padding }\n      );\n      break;\n    case \"right\":\n      paddedExitPoints.push(\n        { x: exitPoint.x - padding, y: exitPoint.y - padding },\n        { x: exitPoint.x - padding, y: exitPoint.y + padding }\n      );\n      break;\n  }\n  return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n  const { top, right, bottom, left } = rect;\n  return [\n    { x: left, y: top },\n    { x: right, y: top },\n    { x: right, y: bottom },\n    { x: left, y: bottom }\n  ];\n}\nfunction isPointInPolygon(point, polygon2) {\n  const { x, y } = point;\n  let inside = false;\n  for (let i = 0, j = polygon2.length - 1; i < polygon2.length; j = i++) {\n    const xi = polygon2[i].x;\n    const yi = polygon2[i].y;\n    const xj = polygon2[j].x;\n    const yj = polygon2[j].y;\n    const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect)\n      inside = !inside;\n  }\n  return inside;\n}\nfunction getHull(points) {\n  const newPoints = points.slice();\n  newPoints.sort((a, b) => {\n    if (a.x < b.x)\n      return -1;\n    else if (a.x > b.x)\n      return 1;\n    else if (a.y < b.y)\n      return -1;\n    else if (a.y > b.y)\n      return 1;\n    else\n      return 0;\n  });\n  return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n  if (points.length <= 1)\n    return points.slice();\n  const upperHull = [];\n  for (let i = 0; i < points.length; i++) {\n    const p = points[i];\n    while (upperHull.length >= 2) {\n      const q = upperHull[upperHull.length - 1];\n      const r = upperHull[upperHull.length - 2];\n      if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n        upperHull.pop();\n      else\n        break;\n    }\n    upperHull.push(p);\n  }\n  upperHull.pop();\n  const lowerHull = [];\n  for (let i = points.length - 1; i >= 0; i--) {\n    const p = points[i];\n    while (lowerHull.length >= 2) {\n      const q = lowerHull[lowerHull.length - 1];\n      const r = lowerHull[lowerHull.length - 2];\n      if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))\n        lowerHull.pop();\n      else\n        break;\n    }\n    lowerHull.push(p);\n  }\n  lowerHull.pop();\n  if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n    return upperHull;\n  } else {\n    return upperHull.concat(lowerHull);\n  }\n}\nvar Provider = TooltipProvider;\nvar Root32 = Tooltip;\nvar Trigger2 = TooltipTrigger;\nvar Portal3 = TooltipPortal;\nvar Content22 = TooltipContent;\nvar Arrow22 = TooltipArrow;\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Tooltip.js\nvar ToolTip = (props) => {\n  return (0, import_jsx_runtime21.jsx)(Provider, { delayDuration: 200, children: (0, import_jsx_runtime21.jsxs)(Root32, { children: [(0, import_jsx_runtime21.jsx)(Trigger2, { asChild: true, children: props.children }), (0, import_jsx_runtime21.jsx)(Portal3, { children: (0, import_jsx_runtime21.jsxs)(TooltipContent2, { sideOffset: props.sideOffset || 6, align: props.align || \"center\", side: props.side || \"top\", children: [props.tip, (0, import_jsx_runtime21.jsx)(TooltipArrow2, {})] }) })] }) });\n};\nvar slideUpAndFade = keyframes`\nfrom {\n  opacity: 0;\n  transform: translateY(2px);\n}\nto {\n  opacity: 1;\n  transform: translateY(0);\n}\n`;\nvar TooltipContent2 = (() => newStyled(Content22)((_) => {\n  const theme = useCustomTheme();\n  return {\n    background: theme.colors.tooltipBg,\n    color: theme.colors.tooltipText,\n    borderRadius: radius.sm,\n    padding: `${spacing.xs} ${spacing.sm}`,\n    fontSize: fontSize.sm,\n    boxShadow: shadow.sm,\n    userSelect: \"none\",\n    willChange: \"transform, opacity\",\n    animation: `${slideUpAndFade} 200ms cubic-bezier(0.16, 1, 0.3, 1)`,\n    zIndex: 999999999999999,\n    maxWidth: \"300px\",\n    lineHeight: 1.5\n  };\n}))();\nvar TooltipArrow2 = (() => newStyled(Arrow22)(() => {\n  const theme = useCustomTheme();\n  return {\n    fill: theme.colors.tooltipBg\n  };\n}))();\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/CopyIcon.js\nvar CopyIcon2 = (props) => {\n  const { hasCopied, onCopy } = useClipboard(props.text);\n  const showCheckIcon = props.hasCopied || hasCopied;\n  return (0, import_jsx_runtime22.jsx)(\"div\", { onClick: onCopy, style: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  }, onKeyDown: (e) => {\n    if (e.key === \"Enter\" || e.key === \" \") {\n      onCopy();\n    }\n  }, children: (0, import_jsx_runtime22.jsx)(ToolTip, { tip: props.tip, side: props.side, align: props.align, children: (0, import_jsx_runtime22.jsx)(\"div\", { children: (0, import_jsx_runtime22.jsx)(Container, { color: showCheckIcon ? \"success\" : void 0, flex: \"row\", center: \"both\", children: showCheckIcon ? (0, import_jsx_runtime22.jsx)(CheckIcon, {}) : (0, import_jsx_runtime22.jsx)(CopyIcon, {}) }) }) }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/IconContainer.js\nvar import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);\nvar IconContainer = (props) => {\n  const theme = useCustomTheme();\n  return (0, import_jsx_runtime23.jsx)(\"div\", { style: {\n    position: \"relative\",\n    overflow: \"hidden\",\n    display: \"flex\",\n    justifyItems: \"center\",\n    flexShrink: 0,\n    alignItems: \"center\",\n    padding: props.padding ?? \"6px\",\n    borderRadius: \"100%\",\n    border: `1px solid ${theme.colors.borderColor}`,\n    ...props.style\n  }, children: props.children });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Blobbie.js\nvar import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);\nvar import_react19 = __toESM(require_react(), 1);\nvar COLOR_OPTIONS = [\n  [\"#fca5a5\", \"#b91c1c\"],\n  [\"#fdba74\", \"#c2410c\"],\n  [\"#fcd34d\", \"#b45309\"],\n  [\"#fde047\", \"#a16207\"],\n  [\"#a3e635\", \"#4d7c0f\"],\n  [\"#86efac\", \"#15803d\"],\n  [\"#67e8f9\", \"#0e7490\"],\n  [\"#7dd3fc\", \"#0369a1\"],\n  [\"#93c5fd\", \"#1d4ed8\"],\n  [\"#a5b4fc\", \"#4338ca\"],\n  [\"#c4b5fd\", \"#6d28d9\"],\n  [\"#d8b4fe\", \"#7e22ce\"],\n  [\"#f0abfc\", \"#a21caf\"],\n  [\"#f9a8d4\", \"#be185d\"],\n  [\"#fda4af\", \"#be123c\"]\n];\nfunction Blobbie(props) {\n  const id = (0, import_react19.useId)();\n  const colors = (0, import_react19.useMemo)(() => COLOR_OPTIONS[Number(hexToNumber(props.address.slice(2, 4))) % COLOR_OPTIONS.length], [props.address]);\n  return (0, import_jsx_runtime24.jsx)(\"div\", { id, style: {\n    width: `${props.size}px`,\n    height: `${props.size}px`,\n    backgroundImage: `radial-gradient(ellipse at left bottom, ${colors[0]}, ${colors[1]})`\n  } });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/MenuButton.js\nvar MenuButton = StyledButton((_) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    padding: `${spacing.sm} ${spacing.sm}`,\n    borderRadius: radius.md,\n    backgroundColor: \"transparent\",\n    // border: `1px solid ${theme.colors.borderColor}`,\n    boxSizing: \"border-box\",\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"100%\",\n    cursor: \"pointer\",\n    fontSize: fontSize.md,\n    fontWeight: 500,\n    color: theme.colors.secondaryText,\n    gap: spacing.sm,\n    WebkitTapHighlightColor: \"transparent\",\n    lineHeight: 1.3,\n    transition: \"background-color 200ms ease, transform 200ms ease\",\n    \"&:hover\": {\n      backgroundColor: theme.colors.tertiaryBg,\n      svg: {\n        color: theme.colors.accentText\n      }\n    },\n    \"&[disabled]\": {\n      cursor: \"not-allowed\"\n    },\n    svg: {\n      color: theme.colors.secondaryText,\n      transition: \"color 200ms ease\"\n    },\n    \"&[data-variant='danger']:hover svg\": {\n      color: `${theme.colors.danger}!important`\n    },\n    \"&[data-variant='primary']:hover svg\": {\n      color: `${theme.colors.primaryText}!important`\n    }\n  };\n});\nvar MenuLink = (() => MenuButton.withComponent(\"a\"))();\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/NetworkSelector.js\nvar import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);\nvar import_react20 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/locale/getConnectLocale.js\nasync function getConnectLocale(localeId) {\n  switch (localeId) {\n    case \"es_ES\": {\n      return (await import(\"./es-RWVLHLPZ.js\")).default;\n    }\n    case \"ja_JP\": {\n      return (await import(\"./ja-MCXBRC6G.js\")).default;\n    }\n    case \"tl_PH\": {\n      return (await import(\"./tl-O6CWFXUB.js\")).default;\n    }\n    case \"vi_VN\": {\n      return (await import(\"./vi-7VOZ2AS3.js\")).default;\n    }\n    case \"de_DE\": {\n      return (await import(\"./de-IU2DXG5T.js\")).default;\n    }\n    case \"ko_KR\": {\n      return (await import(\"./kr-O56ZYU3R.js\")).default;\n    }\n    case \"fr_FR\": {\n      return (await import(\"./fr-HZ64NS6B.js\")).default;\n    }\n    default: {\n      return (await import(\"./en-BRYFEMZN.js\")).default;\n    }\n  }\n}\nfunction useConnectLocale(localeId) {\n  return useQuery({\n    queryKey: [\"connect-locale\", localeId],\n    queryFn: async () => {\n      return getConnectLocale(localeId);\n    },\n    refetchOnWindowFocus: false,\n    refetchOnMount: false\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/NetworkSelector.js\nfunction NetworkSelectorContent(props) {\n  var _a, _b, _c, _d;\n  const locale = props.connectLocale.networkSelector;\n  const [searchTerm, setSearchTerm] = (0, import_react20.useState)(\"\");\n  const [selectedTab, setSelectedTab] = (0, import_react20.useState)(\"all\");\n  const deferredSearchTerm = useDebouncedValue(searchTerm, 300);\n  const { onSwitch, onCustomClick } = props.networkSelector || {};\n  const othersLabel = locale.categoryLabel.others;\n  const popularLabel = locale.categoryLabel.popular;\n  const recentLabel = locale.categoryLabel.recentlyUsed;\n  const { chainSections, allChains, allChainsToSectionMap } = (0, import_react20.useMemo)(() => {\n    var _a2, _b2, _c2, _d2;\n    const chainSectionsValue = [];\n    const allChainsValue = [];\n    const allChainsToSectionMapValue = /* @__PURE__ */ new Map();\n    function addChain(c, section) {\n      allChainsToSectionMapValue.set(c.id, section);\n      allChainsValue.push(c);\n    }\n    if ((_a2 = props.networkSelector) == null ? void 0 : _a2.sections) {\n      for (const s of props.networkSelector.sections) {\n        const chainsToAdd = s.chains.filter((c) => !allChainsToSectionMapValue.has(c.id));\n        if (chainsToAdd.length > 0) {\n          chainSectionsValue.push({\n            label: s.label,\n            chains: chainsToAdd\n          });\n          for (const c of chainsToAdd) {\n            addChain(c, s.label);\n          }\n        }\n      }\n    } else {\n      const allChainsMap = new Map(props.chains.map((c) => [c.id, c]));\n      if (((_b2 = props.networkSelector) == null ? void 0 : _b2.recentChainIds) && ((_c2 = props.networkSelector) == null ? void 0 : _c2.recentChainIds.length) > 0) {\n        const recentChains = props.networkSelector.recentChainIds.map((id) => allChainsMap.get(id)).filter((c) => c !== void 0);\n        chainSectionsValue.push({\n          label: recentLabel,\n          chains: recentChains\n        });\n        for (const c of recentChains) {\n          addChain(c, recentLabel);\n        }\n      }\n      if (((_d2 = props.networkSelector) == null ? void 0 : _d2.popularChainIds) && props.networkSelector.popularChainIds.length > 0) {\n        const popularChains = props.networkSelector.popularChainIds.map((id) => allChainsMap.get(id)).filter((c) => c !== void 0);\n        const chainsToAdd = popularChains.filter((c) => !allChainsToSectionMapValue.has(c.id));\n        if (chainsToAdd.length > 0) {\n          chainSectionsValue.push({\n            label: popularLabel,\n            chains: chainsToAdd\n          });\n          for (const c of chainsToAdd) {\n            addChain(c, popularLabel);\n          }\n        }\n      }\n    }\n    const otherChainsToAdd = props.chains.filter((c) => !allChainsToSectionMapValue.has(c.id));\n    if (otherChainsToAdd.length > 0) {\n      chainSectionsValue.push({\n        label: othersLabel,\n        chains: otherChainsToAdd\n      });\n      for (const c of otherChainsToAdd) {\n        addChain(c, othersLabel);\n      }\n    }\n    return {\n      chainSections: chainSectionsValue,\n      allChains: allChainsValue,\n      allChainsToSectionMap: allChainsToSectionMapValue\n    };\n  }, [\n    (_a = props.networkSelector) == null ? void 0 : _a.sections,\n    (_b = props.networkSelector) == null ? void 0 : _b.recentChainIds,\n    (_c = props.networkSelector) == null ? void 0 : _c.popularChainIds,\n    props.chains,\n    recentLabel,\n    popularLabel,\n    othersLabel\n  ]);\n  const chainsHaveName = allChains.every((c) => !!c.name);\n  const allChainsQuery = useChainsQuery(chainsHaveName ? [] : allChains, 10);\n  const isAllChainsQueryLoading = chainsHaveName ? false : allChainsQuery.some((q) => q.isLoading);\n  const allChainsMetadata = chainsHaveName ? allChains : !isAllChainsQueryLoading ? allChainsQuery.filter((x) => !!x.data).map((q) => convertApiChainToChain(q.data)) : [];\n  const fuse = (0, import_react20.useMemo)(() => {\n    return new Fuse(allChainsMetadata, {\n      threshold: 0.4,\n      keys: [\n        {\n          name: \"name\",\n          weight: 1\n        },\n        {\n          name: \"chainId\",\n          weight: 1\n        }\n      ]\n    });\n  }, [allChainsMetadata]);\n  const searchedChainSections = (0, import_react20.useMemo)(() => {\n    if (deferredSearchTerm === \"\") {\n      return void 0;\n    }\n    const filteredChainSectionsValue = [];\n    const filteredAllChains = fuse.search(deferredSearchTerm).map((r) => r.item);\n    for (const c of filteredAllChains) {\n      const label = allChainsToSectionMap.get(c.id);\n      if (!label) {\n        return;\n      }\n      const section = filteredChainSectionsValue.find((s) => s.label === label);\n      if (section) {\n        section.chains.push(c);\n      } else {\n        filteredChainSectionsValue.push({\n          label,\n          chains: [c]\n        });\n      }\n    }\n    return filteredChainSectionsValue;\n  }, [deferredSearchTerm, fuse, allChainsToSectionMap]) || chainSections;\n  const filteredChainSections = (0, import_react20.useMemo)(() => {\n    if (selectedTab === \"all\") {\n      return searchedChainSections;\n    }\n    return searchedChainSections.map((section) => ({\n      label: section.label,\n      chains: section.chains.filter((c) => selectedTab === \"mainnet\" && !c.testnet || selectedTab === \"testnet\" && c.testnet)\n    }));\n  }, [searchedChainSections, selectedTab]);\n  const handleSwitch = (0, import_react20.useCallback)((chain) => {\n    if (onSwitch) {\n      onSwitch(chain);\n    }\n    props.closeModal();\n  }, [onSwitch, props]);\n  return (0, import_jsx_runtime25.jsxs)(Container, { children: [(0, import_jsx_runtime25.jsx)(Container, { p: \"lg\", children: props.onBack ? (0, import_jsx_runtime25.jsx)(ModalHeader, { title: locale.title, onBack: props.onBack }) : (0, import_jsx_runtime25.jsx)(ModalTitle, { children: locale.title }) }), props.showTabs !== false && (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [(0, import_jsx_runtime25.jsx)(Container, { px: \"lg\", children: (0, import_jsx_runtime25.jsxs)(Container, { flex: \"row\", gap: \"xxs\", children: [(0, import_jsx_runtime25.jsx)(TabButton, { onClick: () => setSelectedTab(\"all\"), \"data-active\": selectedTab === \"all\", children: locale.allNetworks }), (0, import_jsx_runtime25.jsx)(TabButton, { onClick: () => setSelectedTab(\"mainnet\"), \"data-active\": selectedTab === \"mainnet\", children: locale.mainnets }), (0, import_jsx_runtime25.jsx)(TabButton, { onClick: () => setSelectedTab(\"testnet\"), \"data-active\": selectedTab === \"testnet\", children: locale.testnets })] }) }), (0, import_jsx_runtime25.jsx)(Spacer, { y: \"lg\" })] }), props.showTabs === false && (0, import_jsx_runtime25.jsx)(Spacer, { y: \"xxs\" }), (0, import_jsx_runtime25.jsx)(Container, { px: \"lg\", children: (0, import_jsx_runtime25.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    alignItems: \"center\",\n    position: \"relative\"\n  }, children: [(0, import_jsx_runtime25.jsx)(StyledMagnifyingGlassIcon, { width: iconSize.md, height: iconSize.md }), (0, import_jsx_runtime25.jsx)(Input, { style: {\n    padding: `${spacing.sm} ${spacing.md} ${spacing.sm} ${spacing.xxl}`\n  }, tabIndex: -1, variant: \"outline\", value: searchTerm, onChange: (e) => {\n    setSearchTerm(e.target.value);\n  }, disabled: isAllChainsQueryLoading, placeholder: isAllChainsQueryLoading ? \"Loading chains...\" : locale.inputPlaceholder }), (deferredSearchTerm !== searchTerm || isAllChainsQueryLoading) && (0, import_jsx_runtime25.jsx)(\"div\", { style: {\n    position: \"absolute\",\n    right: spacing.md\n  }, children: (0, import_jsx_runtime25.jsx)(Spinner, { size: \"md\", color: \"accentText\" }) })] }) }), (0, import_jsx_runtime25.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime25.jsx)(Container, { px: \"md\", children: (0, import_jsx_runtime25.jsx)(NetworkTabContent, { chainSections: filteredChainSections, onSwitch: handleSwitch, renderChain: (_d = props.networkSelector) == null ? void 0 : _d.renderChain, connectLocale: props.connectLocale, client: props.client, close: props.closeModal }) }), onCustomClick && (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [(0, import_jsx_runtime25.jsx)(Line, {}), (0, import_jsx_runtime25.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime25.jsx)(Button, { fullWidth: true, variant: \"link\", onClick: () => {\n    onCustomClick();\n    props.closeModal();\n  }, style: {\n    display: \"flex\",\n    fontSize: fontSize.sm,\n    boxShadow: \"none\"\n  }, children: locale.addCustomNetwork }) })] })] });\n}\nvar NetworkTabContent = (props) => {\n  const { chainSections } = props;\n  const noChainsToShow = chainSections.every((section) => section.chains.length === 0);\n  return (0, import_jsx_runtime25.jsx)(Container, { scrollY: true, animate: \"fadein\", style: {\n    height: \"330px\",\n    paddingBottom: spacing.lg\n  }, children: noChainsToShow ? (0, import_jsx_runtime25.jsxs)(Container, { flex: \"column\", gap: \"md\", center: \"both\", color: \"secondaryText\", children: [(0, import_jsx_runtime25.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime25.jsx)(CrossCircledIcon, { width: iconSize.xl, height: iconSize.xl }), (0, import_jsx_runtime25.jsx)(Text, { children: \" No Results \" })] }) : chainSections.map((section, idx) => {\n    if (section.chains.length === 0) {\n      return null;\n    }\n    return (0, import_jsx_runtime25.jsxs)(import_react20.Fragment, { children: [idx !== 0 && (0, import_jsx_runtime25.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime25.jsx)(SectionLabel, { children: section.label }), (0, import_jsx_runtime25.jsx)(Spacer, { y: \"xs\" }), (0, import_jsx_runtime25.jsx)(NetworkList, { chains: section.chains, onSwitch: props.onSwitch, renderChain: props.renderChain, close: props.close, client: props.client, connectLocale: props.connectLocale })] }, section.label);\n  }) });\n};\nvar NetworkList = (0, import_react20.memo)(function NetworkList2(props) {\n  const { itemsToShow, lastItemRef } = useShowMore(10, 10);\n  const switchChain = useSwitchActiveWalletChain();\n  const activeChain = useActiveWalletChain();\n  const [switchingChainId, setSwitchingChainId] = (0, import_react20.useState)(-1);\n  const [errorSwitchingChainId, setErrorSwitchingChainId] = (0, import_react20.useState)(-1);\n  const close = props.close;\n  (0, import_react20.useEffect)(() => {\n    if (switchingChainId !== -1 && (activeChain == null ? void 0 : activeChain.id) === switchingChainId) {\n      if (close) {\n        close();\n      }\n    }\n  }, [switchingChainId, close, activeChain == null ? void 0 : activeChain.id]);\n  const handleSwitch = async (chain) => {\n    setErrorSwitchingChainId(-1);\n    setSwitchingChainId(chain.id);\n    try {\n      await switchChain(chain);\n      props.onSwitch(chain);\n    } catch (e) {\n      setErrorSwitchingChainId(chain.id);\n      console.error(e);\n    } finally {\n      setSwitchingChainId(-1);\n    }\n  };\n  const RenderChain = props.renderChain;\n  const chainsToShow = props.chains.slice(0, itemsToShow);\n  return (0, import_jsx_runtime25.jsx)(NetworkListUl, { children: chainsToShow.map((chain, i) => {\n    if (!chain) {\n      return null;\n    }\n    const confirming = switchingChainId === chain.id;\n    const switchingFailed = errorSwitchingChainId === chain.id;\n    const isLast = i === chainsToShow.length - 1;\n    return (0, import_jsx_runtime25.jsx)(\"li\", { ref: isLast ? lastItemRef : void 0, children: RenderChain ? (0, import_jsx_runtime25.jsx)(RenderChain, { switchChain: () => {\n      handleSwitch(chain);\n    }, chain, switching: switchingChainId === chain.id, switchFailed: errorSwitchingChainId === chain.id, close: props.close }) : (0, import_jsx_runtime25.jsx)(ChainButton, { chain, confirming, onClick: () => handleSwitch(chain), switchingFailed, client: props.client, connectLocale: props.connectLocale }) }, chain.id);\n  }) });\n});\nvar ChainButton = (0, import_react20.memo)(function ChainButton2(props) {\n  const locale = props.connectLocale;\n  const { chain, confirming, switchingFailed } = props;\n  const activeChain = useActiveWalletChain();\n  const chainNameQuery = useChainName(chain);\n  const chainIconQuery = useChainIconUrl(chain);\n  let chainName;\n  if (chainNameQuery.name) {\n    chainName = (0, import_jsx_runtime25.jsxs)(\"span\", { children: [chainNameQuery.name, \" \"] });\n  } else {\n    chainName = (0, import_jsx_runtime25.jsx)(Skeleton, { width: \"150px\", height: \"20px\" });\n  }\n  return (0, import_jsx_runtime25.jsxs)(NetworkButton, { \"data-active\": (activeChain == null ? void 0 : activeChain.id) === chain.id, onClick: props.onClick, children: [!chainIconQuery.isLoading ? (0, import_jsx_runtime25.jsx)(ChainIcon, { chainIconUrl: chainIconQuery.url, size: iconSize.lg, active: (activeChain == null ? void 0 : activeChain.id) === chain.id, loading: \"lazy\", client: props.client }) : (0, import_jsx_runtime25.jsx)(Skeleton, { width: `${iconSize.lg}px`, height: `${iconSize.lg}px` }), confirming || switchingFailed ? (0, import_jsx_runtime25.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: spacing.xs\n  }, children: [chainName, (0, import_jsx_runtime25.jsxs)(Container, { animate: \"fadein\", flex: \"row\", gap: \"xxs\", center: \"y\", children: [confirming && (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [(0, import_jsx_runtime25.jsx)(Text, { size: \"xs\", color: \"accentText\", children: locale.confirmInWallet }), (0, import_jsx_runtime25.jsx)(Spinner, { size: \"xs\", color: \"accentText\" })] }), switchingFailed && (0, import_jsx_runtime25.jsx)(Container, { animate: \"fadein\", children: (0, import_jsx_runtime25.jsx)(Text, { size: \"xs\", color: \"danger\", children: locale.networkSelector.failedToSwitch }) })] })] }) : chainName] });\n});\nvar TabButton = (() => newStyled.button((_) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    fontSize: fontSize.sm,\n    fontWeight: 500,\n    color: theme.colors.secondaryText,\n    cursor: \"pointer\",\n    padding: `${spacing.sm} ${spacing.sm}`,\n    WebkitTapHighlightColor: \"transparent\",\n    borderRadius: radius.lg,\n    transition: \"background 0.2s ease, color 0.2s ease\",\n    \"&[data-active='true']\": {\n      background: theme.colors.secondaryButtonBg,\n      color: theme.colors.primaryText\n    }\n  };\n}))();\nvar SectionLabel = StyledP(() => {\n  const theme = useCustomTheme();\n  return {\n    fontSize: fontSize.sm,\n    color: theme.colors.secondaryText,\n    margin: 0,\n    display: \"block\",\n    padding: `0 ${spacing.xs}`\n  };\n});\nvar NetworkListUl = StyledUl({\n  padding: 0,\n  margin: 0,\n  listStyle: \"none\",\n  display: \"flex\",\n  flexDirection: \"column\",\n  gap: spacing.xs,\n  boxSizing: \"border-box\"\n});\nvar NetworkButton = StyledButton((_) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    display: \"flex\",\n    width: \"100%\",\n    boxSizing: \"border-box\",\n    alignItems: \"center\",\n    gap: spacing.md,\n    padding: `${spacing.xs} ${spacing.sm}`,\n    borderRadius: radius.md,\n    cursor: \"pointer\",\n    transition: \"background 0.2s ease\",\n    color: theme.colors.primaryText,\n    fontWeight: 500,\n    fontSize: fontSize.md,\n    \"&:hover\": {\n      background: theme.colors.secondaryButtonBg\n    },\n    [media.mobile]: {\n      fontSize: fontSize.sm\n    }\n  };\n});\nvar StyledMagnifyingGlassIcon = newStyled(MagnifyingGlassIcon)((_) => {\n  const theme = useCustomTheme();\n  return {\n    color: theme.colors.secondaryText,\n    position: \"absolute\",\n    left: spacing.sm\n  };\n});\nfunction useNetworkSwitcherModal() {\n  const activeChain = useActiveWalletChain();\n  const setRootEl = (0, import_react20.useContext)(SetRootElementContext);\n  const closeModal = (0, import_react20.useCallback)(() => {\n    setRootEl(null);\n  }, [setRootEl]);\n  const openNetworkSwitcher = (0, import_react20.useCallback)(async (props) => {\n    if (!activeChain) {\n      throw new Error(\"No active wallet found\");\n    }\n    const locale = await getConnectLocale(props.locale || \"en_US\");\n    setRootEl((0, import_jsx_runtime25.jsx)(CustomThemeProvider, { theme: props.theme, children: (0, import_jsx_runtime25.jsx)(Modal, { size: \"compact\", open: true, setOpen: (value) => {\n      if (!value) {\n        closeModal();\n      }\n    }, style: {\n      paddingBottom: props.onCustomClick ? spacing.md : \"0px\"\n    }, children: (0, import_jsx_runtime25.jsx)(NetworkSelectorContent, { client: props.client, closeModal, chains: [activeChain], connectLocale: locale, networkSelector: {\n      onCustomClick: props.onCustomClick,\n      onSwitch: props.onSwitch,\n      renderChain: props.renderChain,\n      sections: props.sections\n    } }) }) }));\n  }, [setRootEl, closeModal, activeChain]);\n  return {\n    open: openNetworkSwitcher,\n    close: closeModal\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js\nvar import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);\nvar import_react33 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Tabs.js\nvar import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);\nfunction Tabs({ selected, onSelect, options, children }) {\n  const theme = useCustomTheme();\n  return (0, import_jsx_runtime26.jsxs)(\"div\", { children: [(0, import_jsx_runtime26.jsx)(Container, { flex: \"row\", center: \"y\", style: { width: \"100%\", borderRadius: radius.lg }, p: \"xxs\", bg: \"secondaryButtonBg\", children: options.map((option) => (0, import_jsx_runtime26.jsx)(Button, { variant: \"accent\", type: \"button\", onClick: () => onSelect(option.value), style: {\n    flex: 1,\n    paddingBlock: spacing.sm,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    position: \"relative\",\n    borderRadius: radius.md,\n    backgroundColor: option.value === selected ? theme.colors.modalBg : \"transparent\"\n  }, children: (0, import_jsx_runtime26.jsx)(Text, { color: option.value === selected ? \"primaryText\" : \"secondaryText\", style: { textAlign: \"center\" }, size: \"sm\", children: option.label }) }, option.value)) }), (0, import_jsx_runtime26.jsx)(Spacer, { y: \"sm\" }), children] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/CoinsIcon.js\nvar import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);\nvar CoinsIcon = (props) => {\n  return (0, import_jsx_runtime27.jsxs)(\"svg\", { width: props.size, height: props.size, role: \"presentation\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", children: [(0, import_jsx_runtime27.jsx)(\"path\", { d: \"M8 14C11.3137 14 14 11.3137 14 8C14 4.68629 11.3137 2 8 2C4.68629 2 2 4.68629 2 8C2 11.3137 4.68629 14 8 14Z\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime27.jsx)(\"path\", { d: \"M18.0901 10.37C19.0354 10.7224 19.8766 11.3075 20.5358 12.0712C21.1951 12.8349 21.6512 13.7524 21.8618 14.7391C22.0725 15.7257 22.031 16.7495 21.7411 17.7158C21.4513 18.6822 20.9224 19.5598 20.2035 20.2676C19.4846 20.9754 18.5988 21.4905 17.6281 21.7652C16.6573 22.04 15.633 22.0655 14.6498 21.8395C13.6666 21.6134 12.7562 21.1431 12.0029 20.472C11.2496 19.8009 10.6777 18.9507 10.3401 18\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime27.jsx)(\"path\", { d: \"M7 6H8V10\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime27.jsx)(\"path\", { d: \"M16.7101 13.88L17.4101 14.59L14.5901 17.41\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/FundsIcon.js\nvar import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);\nvar FundsIcon = ({ size: size4 }) => {\n  return (0, import_jsx_runtime28.jsxs)(\"svg\", { width: size4, height: size4, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"presentation\", children: [(0, import_jsx_runtime28.jsx)(\"path\", { d: \"M14.001 8.00048C14.001 9.18726 13.649 10.3474 12.9897 11.3342C12.3304 12.3209 11.3932 13.09 10.2968 13.5442C9.20032 13.9984 7.99382 14.1172 6.82984 13.8857C5.66587 13.6541 4.59668 13.0826 3.7575 12.2435C2.91832 11.4043 2.34683 10.3351 2.1153 9.17111C1.88377 8.00713 2.0026 6.80064 2.45676 5.70419C2.91092 4.60775 3.68002 3.6706 4.66679 3.01126C5.65357 2.35192 6.8137 2 8.00048 2\", stroke: \"currentColor\", strokeWidth: \"1.2001\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime28.jsx)(\"path\", { d: \"M14.0005 2L8 8.00048\", stroke: \"currentColor\", strokeWidth: \"1.2001\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime28.jsx)(\"path\", { d: \"M10.3984 2H13.9987V5.60029\", stroke: \"currentColor\", strokeWidth: \"1.2001\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js\nvar import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistoryButton.js\nvar import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/PayTokenIcon.js\nvar import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/TokenIcon.js\nvar import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);\nvar import_react21 = __toESM(require_react(), 1);\nfunction TokenIcon(props) {\n  const chainIconQuery = useChainIconUrl(props.chain);\n  const tokenImage = (0, import_react21.useMemo)(() => {\n    if (isNativeToken(props.token) || props.token.address === NATIVE_TOKEN_ADDRESS) {\n      return chainIconQuery.url;\n    }\n    return props.token.icon;\n  }, [props.token, chainIconQuery.url]);\n  return (0, import_jsx_runtime29.jsx)(Img, { src: tokenImage || \"\", width: iconSize[props.size], height: iconSize[props.size], fallbackImage: genericTokenIcon, client: props.client });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js\nasync function fetchBuySupportedDestinations(client, isTestMode) {\n  return withCache(async () => {\n    const fetchWithHeaders = getClientFetch(client);\n    const res = await fetchWithHeaders(`${getPaySupportedDestinations()}${isTestMode ? \"?isTestMode=true\" : \"\"}`);\n    const data = await res.json();\n    return data.result.map((item) => ({\n      chain: defineChain({\n        id: item.chainId\n      }),\n      tokens: item.tokens\n    }));\n  }, {\n    cacheKey: \"destination-tokens\",\n    cacheTime: 5 * 60 * 1e3\n  });\n}\nfunction useBuySupportedDestinations(client, isTestMode) {\n  return useQuery({\n    queryKey: [\"destination-tokens\", client],\n    queryFn: async () => {\n      return fetchBuySupportedDestinations(client, isTestMode);\n    }\n  });\n}\nfunction useBuySupportedSources(options) {\n  return useQuery({\n    queryKey: [\"source-tokens\", options],\n    queryFn: async () => {\n      const fetchWithHeaders = getClientFetch(options.client);\n      const baseUrl = getPaySupportedSources();\n      const url = new URL(baseUrl);\n      url.searchParams.append(\"destinationChainId\", options.destinationChainId.toString());\n      url.searchParams.append(\"destinationTokenAddress\", options.destinationTokenAddress);\n      const res = await fetchWithHeaders(url.toString());\n      const data = await res.json();\n      return data.result.map((item) => ({\n        chain: defineChain({\n          id: item.chainId\n        }),\n        tokens: item.tokens\n      }));\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/PayTokenIcon.js\nfunction PayTokenIcon(props) {\n  var _a, _b, _c;\n  const supportedDestinationsQuery = useBuySupportedDestinations(props.client);\n  const token = props.token;\n  const tokenIcon = !isNativeToken(token) ? (_c = (_b = (_a = supportedDestinationsQuery.data) == null ? void 0 : _a.find((c) => c.chain.id === props.chain.id)) == null ? void 0 : _b.tokens.find((t) => getAddress(t.address) === getAddress(token.address))) == null ? void 0 : _c.icon : void 0;\n  return (0, import_jsx_runtime30.jsx)(TokenIcon, { token: isNativeToken(token) ? { nativeToken: true } : {\n    address: token.address,\n    icon: token.icon || tokenIcon\n  }, chain: props.chain, client: props.client, size: props.size });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/statusMeta.js\nfunction getBuyWithCryptoStatusMeta(cryptoStatus) {\n  if (cryptoStatus.status === \"NOT_FOUND\") {\n    return {\n      status: \"Unknown\",\n      color: \"secondaryText\"\n    };\n  }\n  const subStatus = cryptoStatus.subStatus;\n  const status = cryptoStatus.status;\n  if (subStatus === \"WAITING_BRIDGE\") {\n    return {\n      status: \"Bridging\",\n      color: \"accentText\",\n      loading: true\n    };\n  }\n  if (subStatus === \"PARTIAL_SUCCESS\") {\n    return {\n      status: \"Incomplete\",\n      color: \"secondaryText\"\n    };\n  }\n  if (status === \"PENDING\") {\n    return {\n      status: \"Pending\",\n      color: \"accentText\",\n      loading: true\n    };\n  }\n  if (status === \"FAILED\") {\n    return {\n      status: \"Failed\",\n      color: \"danger\"\n    };\n  }\n  if (status === \"COMPLETED\") {\n    return {\n      status: \"Completed\",\n      color: \"success\"\n    };\n  }\n  return {\n    status: \"Unknown\",\n    color: \"secondaryText\"\n  };\n}\nfunction getBuyWithFiatStatusMeta(fiatStatus) {\n  const status = fiatStatus.status;\n  switch (status) {\n    case \"CRYPTO_SWAP_FALLBACK\": {\n      return {\n        status: \"Incomplete\",\n        color: \"danger\",\n        step: 2,\n        progressStatus: \"partialSuccess\"\n      };\n    }\n    case \"CRYPTO_SWAP_IN_PROGRESS\":\n    case \"PENDING_ON_RAMP_TRANSFER\":\n    case \"ON_RAMP_TRANSFER_IN_PROGRESS\":\n    case \"PENDING_PAYMENT\": {\n      return {\n        status: \"Pending\",\n        color: \"accentText\",\n        loading: true,\n        step: status === \"CRYPTO_SWAP_IN_PROGRESS\" ? 2 : 1,\n        progressStatus: \"pending\"\n      };\n    }\n    case \"ON_RAMP_TRANSFER_COMPLETED\":\n    case \"CRYPTO_SWAP_COMPLETED\": {\n      return {\n        status: \"Completed\",\n        // Is this actually completed though?\n        color: \"success\",\n        loading: true,\n        step: status === \"CRYPTO_SWAP_COMPLETED\" ? 2 : 1,\n        progressStatus: \"completed\"\n      };\n    }\n    case \"CRYPTO_SWAP_FAILED\":\n    case \"CRYPTO_SWAP_REQUIRED\": {\n      return {\n        status: \"Action Required\",\n        color: \"accentText\",\n        step: 2,\n        progressStatus: \"actionRequired\"\n      };\n    }\n    case \"PAYMENT_FAILED\":\n    case \"ON_RAMP_TRANSFER_FAILED\": {\n      return {\n        status: \"Failed\",\n        color: \"danger\",\n        step: 1,\n        progressStatus: \"failed\"\n      };\n    }\n  }\n  return {\n    status: \"Unknown\",\n    color: \"secondaryText\",\n    step: 1,\n    progressStatus: \"unknown\"\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistoryButton.js\nvar BuyTxHistoryButtonHeight = \"62px\";\nfunction BuyTxHistoryButton(props) {\n  const statusMeta = props.txInfo.type === \"swap\" ? getBuyWithCryptoStatusMeta(props.txInfo.status) : getBuyWithFiatStatusMeta(props.txInfo.status);\n  return (0, import_jsx_runtime31.jsxs)(TxButton, { onClick: props.onClick, variant: \"secondary\", fullWidth: true, style: {\n    paddingBlock: spacing.sm\n  }, children: [(0, import_jsx_runtime31.jsxs)(Container, { flex: \"row\", center: \"y\", gap: \"sm\", style: {\n    flex: 1\n  }, children: [(0, import_jsx_runtime31.jsx)(PayTokenIcon, { client: props.client, chain: getCachedChain(props.txInfo.status.quote.toToken.chainId), size: \"md\", token: {\n    address: props.txInfo.status.quote.toToken.tokenAddress\n  } }), (0, import_jsx_runtime31.jsxs)(\"div\", { style: {\n    flex: 1,\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\"\n  }, children: [(0, import_jsx_runtime31.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", style: {\n    justifyContent: \"space-between\"\n  }, children: (0, import_jsx_runtime31.jsxs)(Text, { size: \"sm\", color: \"primaryText\", children: [\"Buy\", \" \", formatNumber(Number(props.txInfo.type === \"swap\" ? props.txInfo.status.quote.toAmount : props.txInfo.status.quote.estimatedToTokenAmount), 6), \" \", props.txInfo.status.quote.toToken.symbol] }) }), (0, import_jsx_runtime31.jsx)(Spacer, { y: \"xxs\" }), (0, import_jsx_runtime31.jsx)(Container, { flex: \"row\", center: \"y\", gap: \"xxs\", style: {\n    justifyContent: \"space-between\"\n  }, children: (0, import_jsx_runtime31.jsx)(ChainName, { chain: getCachedChain(props.txInfo.status.quote.toToken.chainId), size: \"xs\", client: props.client }) })] })] }), (0, import_jsx_runtime31.jsx)(Container, { flex: \"row\", gap: \"xxs\", center: \"y\", children: (0, import_jsx_runtime31.jsx)(Text, { size: \"xs\", color: statusMeta.color, children: statusMeta.status }) })] });\n}\nvar TxButton = newStyled(Button)(() => {\n  const theme = useCustomTheme();\n  return {\n    background: theme.colors.tertiaryBg,\n    \"&:hover\": {\n      background: theme.colors.secondaryButtonBg\n    },\n    height: BuyTxHistoryButtonHeight\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/useBuyTransactionsToShow.js\nvar import_react22 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/pay/buyWithFiat/getStatus.js\nasync function getBuyWithFiatStatus(params) {\n  var _a;\n  try {\n    const queryParams = new URLSearchParams({\n      intentId: params.intentId\n    });\n    const queryString = queryParams.toString();\n    const url = `${getPayBuyWithFiatStatusEndpoint()}?${queryString}`;\n    const response = await getClientFetch(params.client)(url);\n    if (!response.ok) {\n      (_a = response.body) == null ? void 0 : _a.cancel();\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    return (await response.json()).result;\n  } catch (error) {\n    console.error(\"Fetch error:\", error);\n    throw new Error(`Fetch failed: ${error}`);\n  }\n}\n\n// node_modules/thirdweb/dist/esm/pay/getBuyHistory.js\nasync function getBuyHistory(params) {\n  var _a;\n  try {\n    const queryParams = new URLSearchParams();\n    queryParams.append(\"walletAddress\", params.walletAddress);\n    queryParams.append(\"start\", params.start.toString());\n    queryParams.append(\"count\", params.count.toString());\n    const queryString = queryParams.toString();\n    const url = `${getPayBuyHistoryEndpoint()}?${queryString}`;\n    const response = await getClientFetch(params.client)(url);\n    if (!response.ok) {\n      (_a = response.body) == null ? void 0 : _a.cancel();\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    const data = (await response.json()).result;\n    return data;\n  } catch (error) {\n    throw new Error(`Fetch failed: ${error}`);\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/pay/useBuyHistory.js\nfunction useBuyHistory(params, queryParams) {\n  return useQuery({\n    ...queryParams,\n    queryKey: [\"getBuyHistory\", params],\n    queryFn: () => {\n      if (!params) {\n        throw new Error(\"params are required\");\n      }\n      return getBuyHistory(params);\n    },\n    enabled: !!params\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/pendingSwapTx.js\nvar pendingTransactions = createStore([]);\nvar addPendingTx = (txInfo) => {\n  const currentValue = pendingTransactions.getValue();\n  pendingTransactions.setValue([txInfo, ...currentValue]);\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/useBuyTransactionsToShow.js\nfunction useBuyTransactionsToShow(client) {\n  const account = useActiveAccount();\n  const [pageIndex, setPageIndex] = (0, import_react22.useState)(0);\n  const txStatusList = [];\n  const PAGE_SIZE = 10;\n  const buyHistory = useBuyHistory({\n    walletAddress: (account == null ? void 0 : account.address) || \"\",\n    start: pageIndex * PAGE_SIZE,\n    count: PAGE_SIZE,\n    client\n  }, {\n    refetchInterval: 10 * 1e3\n    // 10 seconds\n  });\n  const pendingTxStoreValue = (0, import_react22.useSyncExternalStore)(pendingTransactions.subscribe, pendingTransactions.getValue);\n  const pendingStatusQueries = useQueries({\n    queries: pendingTxStoreValue.map((tx) => {\n      return {\n        queryKey: [\"pending-tx-status\", tx],\n        queryFn: async () => {\n          if (tx.type === \"swap\") {\n            const swapStatus = await getBuyWithCryptoStatus({\n              client,\n              transactionHash: tx.txHash\n            });\n            if (swapStatus.status === \"NOT_FOUND\" || swapStatus.status === \"NONE\") {\n              return null;\n            }\n            return {\n              type: \"swap\",\n              status: swapStatus\n            };\n          }\n          const fiatStatus = await getBuyWithFiatStatus({\n            client,\n            intentId: tx.intentId\n          });\n          if (fiatStatus.status === \"NOT_FOUND\" || fiatStatus.status === \"NONE\") {\n            return null;\n          }\n          return {\n            type: \"fiat\",\n            status: fiatStatus\n          };\n        },\n        refetchInterval: 10 * 1e3\n        // 10 seconds\n      };\n    })\n  });\n  if (pendingStatusQueries.length > 0 && pageIndex === 0) {\n    for (const query of pendingStatusQueries) {\n      if (query.data) {\n        const txStatusInfo = query.data;\n        if (buyHistory.data) {\n          if (txStatusInfo.type === \"swap\") {\n            const isPresent = buyHistory.data.page.find((tx) => {\n              var _a, _b;\n              if (\"buyWithCryptoStatus\" in tx && tx.buyWithCryptoStatus.status !== \"NOT_FOUND\") {\n                return ((_a = tx.buyWithCryptoStatus.source) == null ? void 0 : _a.transactionHash) === ((_b = txStatusInfo.status.source) == null ? void 0 : _b.transactionHash);\n              }\n              return false;\n            });\n            if (!isPresent) {\n              txStatusList.push(txStatusInfo);\n            }\n          }\n          if (txStatusInfo.type === \"fiat\") {\n            const isPresent = buyHistory.data.page.find((tx) => {\n              if (\"buyWithFiatStatus\" in tx && tx.buyWithFiatStatus.status !== \"NOT_FOUND\") {\n                return tx.buyWithFiatStatus.intentId === txStatusInfo.status.intentId;\n              }\n              return false;\n            });\n            if (!isPresent) {\n              txStatusList.push(txStatusInfo);\n            }\n          }\n        } else {\n          txStatusList.push(txStatusInfo);\n        }\n      }\n    }\n  }\n  if (buyHistory.data) {\n    for (const tx of buyHistory.data.page) {\n      if (\"buyWithCryptoStatus\" in tx) {\n        if (tx.buyWithCryptoStatus.status !== \"NOT_FOUND\" && tx.buyWithCryptoStatus.status !== \"NONE\") {\n          txStatusList.push({\n            type: \"swap\",\n            status: tx.buyWithCryptoStatus\n          });\n        }\n      } else {\n        if (tx.buyWithFiatStatus.status !== \"NOT_FOUND\" && tx.buyWithFiatStatus.status !== \"NONE\") {\n          txStatusList.push({\n            type: \"fiat\",\n            status: tx.buyWithFiatStatus\n          });\n        }\n      }\n    }\n  }\n  const hidePagination = !buyHistory.data || buyHistory.data && !buyHistory.data.hasNextPage && pageIndex === 0;\n  return {\n    pageIndex,\n    setPageIndex,\n    txInfosToShow: txStatusList,\n    hidePagination,\n    isLoading: buyHistory.isLoading,\n    pagination: buyHistory.data ? {\n      hasNextPage: buyHistory.data.hasNextPage\n    } : void 0\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js\nfunction PayTxHistoryList(props) {\n  const { pageIndex, setPageIndex, txInfosToShow, hidePagination, isLoading, pagination } = useBuyTransactionsToShow(props.client);\n  const noTransactions = txInfosToShow.length === 0;\n  return (0, import_jsx_runtime32.jsxs)(Container, { scrollY: true, flex: \"column\", fullHeight: true, style: {\n    width: \"100%\",\n    minHeight: \"250px\",\n    maxHeight: \"370px\",\n    paddingBottom: spacing.lg\n  }, children: [(0, import_jsx_runtime32.jsxs)(Container, { flex: \"column\", gap: \"xs\", expand: true, children: [noTransactions && !isLoading && (0, import_jsx_runtime32.jsxs)(Container, { flex: \"column\", gap: \"md\", center: \"both\", color: \"secondaryText\", style: {\n    minHeight: \"250px\"\n  }, children: [(0, import_jsx_runtime32.jsx)(CrossCircledIcon, { width: iconSize.xl, height: iconSize.xl }), (0, import_jsx_runtime32.jsx)(Text, { children: \"No Transactions\" })] }), noTransactions && isLoading && (0, import_jsx_runtime32.jsx)(Container, { flex: \"row\", center: \"both\", style: {\n    minHeight: \"250px\"\n  }, children: (0, import_jsx_runtime32.jsx)(Spinner, { size: \"xl\", color: \"accentText\" }) }), txInfosToShow.length > 0 && (0, import_jsx_runtime32.jsx)(Container, { animate: \"fadein\", flex: \"column\", gap: \"xs\", children: txInfosToShow.map((txInfo) => {\n    var _a;\n    return (0, import_jsx_runtime32.jsx)(BuyTxHistoryButton, { txInfo, client: props.client, onClick: () => {\n      props.onSelectTx(txInfo);\n    } }, txInfo.type === \"swap\" ? (_a = txInfo.status.source) == null ? void 0 : _a.transactionHash : txInfo.status.intentId);\n  }) }), isLoading && txInfosToShow.length > 0 && (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [(0, import_jsx_runtime32.jsx)(Skeleton, { width: \"100%\", height: BuyTxHistoryButtonHeight }), (0, import_jsx_runtime32.jsx)(Skeleton, { width: \"100%\", height: BuyTxHistoryButtonHeight }), (0, import_jsx_runtime32.jsx)(Skeleton, { width: \"100%\", height: BuyTxHistoryButtonHeight })] })] }), pagination && !hidePagination && (0, import_jsx_runtime32.jsx)(Container, { py: \"md\", children: (0, import_jsx_runtime32.jsxs)(\"div\", { style: {\n    display: \"grid\",\n    gridTemplateColumns: \"1fr 1fr\",\n    gap: spacing.sm\n  }, children: [(0, import_jsx_runtime32.jsxs)(Button, { variant: \"outline\", gap: \"xs\", disabled: pageIndex === 0, \"data-disabled\": pageIndex === 0, style: {\n    fontSize: fontSize.sm,\n    paddingBlock: spacing.sm\n  }, onClick: () => {\n    setPageIndex((prev) => prev - 1);\n  }, children: [(0, import_jsx_runtime32.jsx)(ArrowRightIcon, { width: iconSize.sm, height: iconSize.sm, style: {\n    transform: \"rotate(180deg)\"\n  } }), \"Prev\"] }), (0, import_jsx_runtime32.jsxs)(Button, { variant: \"outline\", gap: \"xs\", disabled: !pagination.hasNextPage, \"data-disabled\": !pagination.hasNextPage, style: {\n    fontSize: fontSize.sm,\n    paddingBlock: spacing.sm\n  }, onClick: () => {\n    setPageIndex((prev) => prev + 1);\n  }, children: [\"Next\", (0, import_jsx_runtime32.jsx)(ArrowRightIcon, { width: iconSize.sm, height: iconSize.sm })] })] }) })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js\nvar import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js\nvar import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1);\nvar import_react31 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/pay/useBuyWithFiatStatus.js\nfunction useBuyWithFiatStatus(params) {\n  return useQuery({\n    queryKey: [\"useBuyWithFiatStatus\", params],\n    queryFn: async () => {\n      if (!params) {\n        throw new Error(\"No params provided\");\n      }\n      return getBuyWithFiatStatus(params);\n    },\n    enabled: !!params,\n    refetchInterval: (query) => {\n      const data = query.state.data;\n      const status = data == null ? void 0 : data.status;\n      if (status === \"ON_RAMP_TRANSFER_FAILED\" || status === \"PAYMENT_FAILED\" || status === \"CRYPTO_SWAP_COMPLETED\" || // onRampToken and toToken being the same means there is no additional swap step\n      status === \"ON_RAMP_TRANSFER_COMPLETED\" && (data == null ? void 0 : data.quote.toToken.chainId) === (data == null ? void 0 : data.quote.onRampToken.chainId) && (data == null ? void 0 : data.quote.toToken.tokenAddress.toLowerCase()) === (data == null ? void 0 : data.quote.onRampToken.tokenAddress.toLowerCase())) {\n        return false;\n      }\n      return 5e3;\n    },\n    refetchIntervalInBackground: true,\n    retry: true\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js\nvar import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js\nvar import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);\nvar import_react23 = __toESM(require_react(), 1);\nfunction TokenInfoRow(props) {\n  const chainObj = (0, import_react23.useMemo)(() => getCachedChain(props.chainId), [props.chainId]);\n  const { name } = useChainName(chainObj);\n  return (0, import_jsx_runtime33.jsxs)(Container, { flex: \"row\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime33.jsx)(Text, { size: \"sm\", children: props.label }), (0, import_jsx_runtime33.jsxs)(Container, { flex: \"column\", gap: \"xxs\", style: {\n    alignItems: \"flex-end\"\n  }, children: [(0, import_jsx_runtime33.jsxs)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", children: [(0, import_jsx_runtime33.jsx)(PayTokenIcon, { chain: chainObj, size: \"sm\", token: {\n    address: props.tokenAddress\n  }, client: props.client }), (0, import_jsx_runtime33.jsxs)(Text, { color: \"primaryText\", children: [formatNumber(Number(props.tokenAmount), 6), \" \", props.tokenSymbol] })] }), (0, import_jsx_runtime33.jsx)(Text, { size: \"sm\", children: name })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js\nvar import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/currencies/CADIcon.js\nvar import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);\nvar CADIcon = (props) => {\n  return (0, import_jsx_runtime34.jsxs)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: props.size, height: props.size, viewBox: \"0 0 512 512\", \"aria-hidden\": \"true\", children: [(0, import_jsx_runtime34.jsx)(\"mask\", { id: \"a\", children: (0, import_jsx_runtime34.jsx)(\"circle\", { cx: \"256\", cy: \"256\", r: \"256\", fill: \"#fff\" }) }), (0, import_jsx_runtime34.jsxs)(\"g\", { mask: \"url(#a)\", children: [(0, import_jsx_runtime34.jsx)(\"path\", { fill: \"#d80027\", d: \"M0 0v512h144l112-64 112 64h144V0H368L256 64 144 0Z\" }), (0, import_jsx_runtime34.jsx)(\"path\", { fill: \"#eee\", d: \"M144 0h224v512H144Z\" }), (0, import_jsx_runtime34.jsx)(\"path\", { fill: \"#d80027\", d: \"m301 289 44-22-22-11v-22l-45 22 23-44h-23l-22-34-22 33h-23l23 45-45-22v22l-22 11 45 22-12 23h45v33h22v-33h45z\" })] })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/currencies/EURIcon.js\nvar import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);\nvar EURIcon = (props) => {\n  return (0, import_jsx_runtime35.jsxs)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: props.size, height: props.size, viewBox: \"0 0 512 512\", \"aria-hidden\": \"true\", children: [(0, import_jsx_runtime35.jsx)(\"mask\", { id: \"a\", children: (0, import_jsx_runtime35.jsx)(\"circle\", { cx: \"256\", cy: \"256\", r: \"256\", fill: \"#fff\" }) }), (0, import_jsx_runtime35.jsxs)(\"g\", { mask: \"url(#a)\", children: [(0, import_jsx_runtime35.jsx)(\"path\", { fill: \"#0052b4\", d: \"M0 0h512v512H0z\" }), (0, import_jsx_runtime35.jsx)(\"path\", { fill: \"#ffda44\", d: \"m256 100.2 8.3 25.5H291l-21.7 15.7 8.3 25.6-21.7-15.8-21.7 15.8 8.3-25.6-21.7-15.7h26.8zm-110.2 45.6 24 12.2 18.9-19-4.2 26.5 23.9 12.2-26.5 4.2-4.2 26.5-12.2-24-26.5 4.3 19-19zM100.2 256l25.5-8.3V221l15.7 21.7 25.6-8.3-15.8 21.7 15.8 21.7-25.6-8.3-15.7 21.7v-26.8zm45.6 110.2 12.2-24-19-18.9 26.5 4.2 12.2-23.9 4.2 26.5 26.5 4.2-24 12.2 4.3 26.5-19-19zM256 411.8l-8.3-25.5H221l21.7-15.7-8.3-25.6 21.7 15.8 21.7-15.8-8.3 25.6 21.7 15.7h-26.8zm110.2-45.6-24-12.2-18.9 19 4.2-26.5-23.9-12.2 26.5-4.2 4.2-26.5 12.2 24 26.5-4.3-19 19zM411.8 256l-25.5 8.3V291l-15.7-21.7-25.6 8.3 15.8-21.7-15.8-21.7 25.6 8.3 15.7-21.7v26.8zm-45.6-110.2-12.2 24 19 18.9-26.5-4.2-12.2 23.9-4.2-26.5-26.5-4.2 24-12.2-4.3-26.5 19 19z\" })] })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/currencies/GBPIcon.js\nvar import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);\nvar GBPIcon = (props) => {\n  return (0, import_jsx_runtime36.jsxs)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", version: \"1.1\", id: \"Layer_1\", x: \"0px\", y: \"0px\", width: props.size, height: props.size, viewBox: \"0 0 512 512\", \"aria-hidden\": \"true\", children: [(0, import_jsx_runtime36.jsx)(\"circle\", { fill: \"#F0F0F0\", cx: \"256\", cy: \"256\", r: \"256\" }), (0, import_jsx_runtime36.jsxs)(\"g\", { children: [(0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#0052B4\", d: \"M52.92,100.142c-20.109,26.163-35.272,56.318-44.101,89.077h133.178L52.92,100.142z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#0052B4\", d: \"M503.181,189.219c-8.829-32.758-23.993-62.913-44.101-89.076l-89.075,89.076H503.181z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#0052B4\", d: \"M8.819,322.784c8.83,32.758,23.993,62.913,44.101,89.075l89.074-89.075L8.819,322.784L8.819,322.784   z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#0052B4\", d: \"M411.858,52.921c-26.163-20.109-56.317-35.272-89.076-44.102v133.177L411.858,52.921z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#0052B4\", d: \"M100.142,459.079c26.163,20.109,56.318,35.272,89.076,44.102V370.005L100.142,459.079z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#0052B4\", d: \"M189.217,8.819c-32.758,8.83-62.913,23.993-89.075,44.101l89.075,89.075V8.819z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#0052B4\", d: \"M322.783,503.181c32.758-8.83,62.913-23.993,89.075-44.101l-89.075-89.075V503.181z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#0052B4\", d: \"M370.005,322.784l89.075,89.076c20.108-26.162,35.272-56.318,44.101-89.076H370.005z\" })] }), (0, import_jsx_runtime36.jsxs)(\"g\", { children: [(0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#D80027\", d: \"M509.833,222.609h-220.44h-0.001V2.167C278.461,0.744,267.317,0,256,0   c-11.319,0-22.461,0.744-33.391,2.167v220.44v0.001H2.167C0.744,233.539,0,244.683,0,256c0,11.319,0.744,22.461,2.167,33.391   h220.44h0.001v220.442C233.539,511.256,244.681,512,256,512c11.317,0,22.461-0.743,33.391-2.167v-220.44v-0.001h220.442   C511.256,278.461,512,267.319,512,256C512,244.683,511.256,233.539,509.833,222.609z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#D80027\", d: \"M322.783,322.784L322.783,322.784L437.019,437.02c5.254-5.252,10.266-10.743,15.048-16.435   l-97.802-97.802h-31.482V322.784z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#D80027\", d: \"M189.217,322.784h-0.002L74.98,437.019c5.252,5.254,10.743,10.266,16.435,15.048l97.802-97.804   V322.784z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#D80027\", d: \"M189.217,189.219v-0.002L74.981,74.98c-5.254,5.252-10.266,10.743-15.048,16.435l97.803,97.803   H189.217z\" }), (0, import_jsx_runtime36.jsx)(\"path\", { fill: \"#D80027\", d: \"M322.783,189.219L322.783,189.219L437.02,74.981c-5.252-5.254-10.743-10.266-16.435-15.047   l-97.802,97.803V189.219z\" })] })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/currencies/JPYIcon.js\nvar import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);\nvar JPYIcon = (props) => {\n  return (0, import_jsx_runtime37.jsx)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 32 32\", xmlns: \"http://www.w3.org/2000/svg\", role: \"presentation\", children: (0, import_jsx_runtime37.jsxs)(\"g\", { fill: \"none\", \"fill-rule\": \"evenodd\", children: [(0, import_jsx_runtime37.jsx)(\"circle\", { cx: \"16\", cy: \"16\", fill: \"#a81b1b\", r: \"16\" }), (0, import_jsx_runtime37.jsx)(\"path\", { d: \"M17.548 18.711v1.878h5.063v2.288h-5.063V25.5h-3.096v-2.623H9.389v-2.288h5.063v-1.878H9.389v-2.288h4.171L7.5 7.5h3.752l4.8 7.534L20.853 7.5H24.5l-6.086 8.923h4.197v2.288z\", fill: \"#ffffff\" })] }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/currencies/USDIcon.js\nvar import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);\nvar USDIcon = (props) => {\n  return (0, import_jsx_runtime38.jsxs)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", version: \"1.1\", width: props.size, height: props.size, x: \"0px\", y: \"0px\", viewBox: \"0 0 512 512\", \"aria-hidden\": \"true\", children: [(0, import_jsx_runtime38.jsx)(\"circle\", { fill: \"#F0F0F0\", cx: \"256\", cy: \"256\", r: \"256\" }), (0, import_jsx_runtime38.jsxs)(\"g\", { children: [(0, import_jsx_runtime38.jsx)(\"path\", { fill: \"#D80027\", d: \"M244.87,256H512c0-23.106-3.08-45.49-8.819-66.783H244.87V256z\" }), (0, import_jsx_runtime38.jsx)(\"path\", { fill: \"#D80027\", d: \"M244.87,122.435h229.556c-15.671-25.572-35.708-48.175-59.07-66.783H244.87V122.435z\" }), (0, import_jsx_runtime38.jsx)(\"path\", { fill: \"#D80027\", d: \"M256,512c60.249,0,115.626-20.824,159.356-55.652H96.644C140.374,491.176,195.751,512,256,512z\" }), (0, import_jsx_runtime38.jsx)(\"path\", { fill: \"#D80027\", d: \"M37.574,389.565h436.852c12.581-20.529,22.338-42.969,28.755-66.783H8.819   C15.236,346.596,24.993,369.036,37.574,389.565z\" })] }), (0, import_jsx_runtime38.jsx)(\"path\", { fill: \"#0052B4\", d: \"M118.584,39.978h23.329l-21.7,15.765l8.289,25.509l-21.699-15.765L85.104,81.252l7.16-22.037  C73.158,75.13,56.412,93.776,42.612,114.552h7.475l-13.813,10.035c-2.152,3.59-4.216,7.237-6.194,10.938l6.596,20.301l-12.306-8.941  c-3.059,6.481-5.857,13.108-8.372,19.873l7.267,22.368h26.822l-21.7,15.765l8.289,25.509l-21.699-15.765l-12.998,9.444  C0.678,234.537,0,245.189,0,256h256c0-141.384,0-158.052,0-256C205.428,0,158.285,14.67,118.584,39.978z M128.502,230.4  l-21.699-15.765L85.104,230.4l8.289-25.509l-21.7-15.765h26.822l8.288-25.509l8.288,25.509h26.822l-21.7,15.765L128.502,230.4z   M120.213,130.317l8.289,25.509l-21.699-15.765l-21.699,15.765l8.289-25.509l-21.7-15.765h26.822l8.288-25.509l8.288,25.509h26.822  L120.213,130.317z M220.328,230.4l-21.699-15.765L176.93,230.4l8.289-25.509l-21.7-15.765h26.822l8.288-25.509l8.288,25.509h26.822  l-21.7,15.765L220.328,230.4z M212.039,130.317l8.289,25.509l-21.699-15.765l-21.699,15.765l8.289-25.509l-21.7-15.765h26.822  l8.288-25.509l8.288,25.509h26.822L212.039,130.317z M212.039,55.743l8.289,25.509l-21.699-15.765L176.93,81.252l8.289-25.509  l-21.7-15.765h26.822l8.288-25.509l8.288,25.509h26.822L212.039,55.743z\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js\nvar usdCurrency = {\n  shorthand: \"USD\",\n  name: \"US Dollar\",\n  icon: USDIcon\n};\nvar currencies = [\n  usdCurrency,\n  {\n    shorthand: \"CAD\",\n    name: \"Canadian Dollar\",\n    icon: CADIcon\n  },\n  {\n    shorthand: \"GBP\",\n    name: \"British Pound\",\n    icon: GBPIcon\n  },\n  {\n    shorthand: \"EUR\",\n    name: \"Euro\",\n    icon: EURIcon\n  },\n  {\n    shorthand: \"JPY\",\n    name: \"Japanese Yen\",\n    icon: JPYIcon\n  }\n];\nfunction getCurrencyMeta(shorthand) {\n  return currencies.find((currency) => currency.shorthand.toLowerCase() === shorthand.toLowerCase()) ?? {\n    // This should never happen\n    icon: UnknownCurrencyIcon,\n    name: shorthand,\n    shorthand\n  };\n}\nvar UnknownCurrencyIcon = (props) => {\n  return (0, import_jsx_runtime39.jsx)(RadiobuttonIcon, { width: props.size, height: props.size });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatTxDetailsTable.js\nfunction OnRampTxDetailsTable(props) {\n  var _a, _b, _c, _d;\n  const onRampExplorers = useChainExplorers(getCachedChain(props.token.chainId));\n  const onrampTxHash = (_a = props.statusMeta) == null ? void 0 : _a.txHash;\n  const currencyMeta = getCurrencyMeta(props.fiat.currencySymbol);\n  const lineSpacer = (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [(0, import_jsx_runtime40.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime40.jsx)(Line, {}), (0, import_jsx_runtime40.jsx)(Spacer, { y: \"md\" })] });\n  return (0, import_jsx_runtime40.jsxs)(\"div\", { children: [(0, import_jsx_runtime40.jsxs)(Container, { flex: \"row\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime40.jsx)(Text, { children: \"Pay\" }), (0, import_jsx_runtime40.jsx)(Container, { flex: \"column\", gap: \"xxs\", style: {\n    alignItems: \"flex-end\"\n  }, children: (0, import_jsx_runtime40.jsxs)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", children: [(0, import_jsx_runtime40.jsx)(currencyMeta.icon, { size: iconSize.sm }), (0, import_jsx_runtime40.jsxs)(Text, { color: \"primaryText\", children: [formatNumber(Number(props.fiat.amount), 2), \" \", props.fiat.currencySymbol] })] }) })] }), lineSpacer, (0, import_jsx_runtime40.jsx)(TokenInfoRow, { chainId: props.token.chainId, client: props.client, label: \"Receive\", tokenAmount: props.token.amount, tokenSymbol: props.token.symbol, tokenAddress: props.token.address }), props.statusMeta && (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [lineSpacer, (0, import_jsx_runtime40.jsxs)(Container, { flex: \"row\", center: \"y\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime40.jsx)(Text, { children: \"Status\" }), (0, import_jsx_runtime40.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", children: (0, import_jsx_runtime40.jsx)(Text, { color: props.statusMeta.color, children: props.statusMeta.text }) })] })] }), lineSpacer, onrampTxHash && ((_c = (_b = onRampExplorers.explorers) == null ? void 0 : _b[0]) == null ? void 0 : _c.url) && (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [(0, import_jsx_runtime40.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime40.jsxs)(ButtonLink, { fullWidth: true, variant: \"outline\", href: formatExplorerTxUrl((_d = onRampExplorers.explorers[0]) == null ? void 0 : _d.url, onrampTxHash), target: \"_blank\", gap: \"xs\", style: {\n    fontSize: fontSize.sm\n  }, children: [\"View on Explorer\", (0, import_jsx_runtime40.jsx)(ExternalLinkIcon, { width: iconSize.sm, height: iconSize.sm })] })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js\nvar import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1);\nvar import_react30 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js\nvar import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1);\nvar import_react25 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/Stepper.js\nvar import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1);\nfunction StepIcon(props) {\n  return (0, import_jsx_runtime41.jsx)(Container, { flex: \"row\", center: \"both\", color: props.isDone ? \"success\" : props.isActive ? \"accentText\" : \"secondaryText\", children: (0, import_jsx_runtime41.jsx)(Circle, { children: props.isDone ? (0, import_jsx_runtime41.jsx)(CheckIcon, { width: iconSize.sm, height: iconSize.sm }) : (0, import_jsx_runtime41.jsx)(PulsingDot, { \"data-active\": props.isActive }) }) });\n}\nfunction Step(props) {\n  return (0, import_jsx_runtime41.jsxs)(Container, { flex: \"row\", center: \"y\", gap: \"xs\", style: {\n    fontSize: fontSize.sm\n  }, color: props.isDone ? \"success\" : props.isActive ? \"accentText\" : \"secondaryText\", children: [(0, import_jsx_runtime41.jsx)(StepIcon, { isDone: props.isDone, isActive: props.isActive }), props.label] });\n}\nvar pulseAnimation = keyframes`\n0% {\n  opacity: 1;\n  transform: scale(0.5);\n}\n100% {\n  opacity: 0;\n  transform: scale(1.5);\n}\n`;\nvar PulsingDot = StyledDiv(() => {\n  return {\n    background: \"currentColor\",\n    width: \"9px\",\n    height: \"9px\",\n    borderRadius: \"50%\",\n    '&[data-active=\"true\"]': {\n      animation: `${pulseAnimation} 1s infinite`\n    }\n  };\n});\nvar Circle = StyledDiv(() => {\n  return {\n    border: \"1px solid currentColor\",\n    width: \"20px\",\n    height: \"20px\",\n    borderRadius: \"50%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatSteps.js\nfunction fiatQuoteToPartialQuote(quote) {\n  const data = {\n    fromCurrencyAmount: quote.fromCurrencyWithFees.amount,\n    fromCurrencySymbol: quote.fromCurrencyWithFees.currencySymbol,\n    onRampTokenAmount: quote.onRampToken.amount,\n    toTokenAmount: quote.estimatedToAmountMin,\n    onRampToken: {\n      chainId: quote.onRampToken.token.chainId,\n      tokenAddress: quote.onRampToken.token.tokenAddress,\n      name: quote.onRampToken.token.name,\n      symbol: quote.onRampToken.token.symbol\n    },\n    toToken: {\n      chainId: quote.toToken.chainId,\n      tokenAddress: quote.toToken.tokenAddress,\n      name: quote.toToken.name,\n      symbol: quote.toToken.symbol\n    }\n  };\n  return data;\n}\nfunction FiatSteps(props) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n  const statusMeta = props.status ? getBuyWithFiatStatusMeta(props.status) : void 0;\n  const { toToken: toTokenMeta, onRampToken: onRampTokenMeta, onRampTokenAmount, fromCurrencySymbol, fromCurrencyAmount, toTokenAmount } = props.partialQuote;\n  const currency = getCurrencyMeta(fromCurrencySymbol);\n  const isPartialSuccess = (statusMeta == null ? void 0 : statusMeta.progressStatus) === \"partialSuccess\";\n  const toChain = (0, import_react25.useMemo)(() => getCachedChain(toTokenMeta.chainId), [toTokenMeta.chainId]);\n  const destinationChain = (0, import_react25.useMemo)(() => {\n    var _a2, _b2, _c2;\n    if (((_a2 = props.status) == null ? void 0 : _a2.status) !== \"NOT_FOUND\" && ((_b2 = props.status) == null ? void 0 : _b2.destination)) {\n      return getCachedChain((_c2 = props.status) == null ? void 0 : _c2.destination.token.chainId);\n    }\n    return void 0;\n  }, [props.status]);\n  const toToken = (0, import_react25.useMemo)(() => {\n    if (toTokenMeta.tokenAddress === NATIVE_TOKEN_ADDRESS) {\n      return NATIVE_TOKEN;\n    }\n    const tokenInfo = {\n      address: toTokenMeta.tokenAddress,\n      name: toTokenMeta.name || \"\",\n      symbol: toTokenMeta.symbol || \"\"\n      // TODO: when icon is available in endpoint\n      // icon: toTokenMeta.icon\n    };\n    return tokenInfo;\n  }, [toTokenMeta]);\n  const onRampChain = (0, import_react25.useMemo)(() => getCachedChain(onRampTokenMeta.chainId), [onRampTokenMeta.chainId]);\n  const onRampToken = (0, import_react25.useMemo)(() => {\n    if (onRampTokenMeta.tokenAddress === NATIVE_TOKEN_ADDRESS) {\n      return NATIVE_TOKEN;\n    }\n    const tokenInfo = {\n      address: onRampTokenMeta.tokenAddress,\n      name: onRampTokenMeta.name || \"\",\n      symbol: onRampTokenMeta.symbol || \"\"\n      // TODO: when icon is available in endpoint\n      // icon: onRampTokenMeta.icon,\n    };\n    return tokenInfo;\n  }, [onRampTokenMeta]);\n  const onRampName = useChainName(onRampChain);\n  const onRampExplorers = useChainExplorers(onRampChain);\n  const toChainName = useChainName(toChain);\n  const toChainExplorers = useChainExplorers(toChain);\n  const destinationName = useChainName(destinationChain);\n  const onRampTokenInfo = (0, import_jsx_runtime42.jsx)(\"div\", { children: (0, import_jsx_runtime42.jsxs)(Text, { color: \"primaryText\", size: \"sm\", children: [formatNumber(Number(onRampTokenAmount), 6), \" \", (0, import_jsx_runtime42.jsx)(TokenSymbol, { token: onRampToken, chain: onRampChain, size: \"sm\", inline: true })] }) });\n  const fiatIcon = (0, import_jsx_runtime42.jsx)(currency.icon, { size: iconSize.sm });\n  const onRampTokenIcon = (0, import_jsx_runtime42.jsx)(PayTokenIcon, { token: onRampToken, chain: onRampChain, size: \"sm\", client: props.client });\n  const toTokenIcon = (0, import_jsx_runtime42.jsx)(PayTokenIcon, { token: toToken, chain: toChain, size: \"sm\", client: props.client });\n  const onRampChainInfo = (0, import_jsx_runtime42.jsx)(Text, { size: \"xs\", children: onRampName.name });\n  const partialSuccessToTokenInfo = ((_a = props.status) == null ? void 0 : _a.status) === \"CRYPTO_SWAP_FALLBACK\" && props.status.destination ? (0, import_jsx_runtime42.jsxs)(\"div\", { children: [(0, import_jsx_runtime42.jsxs)(Text, { color: \"secondaryText\", size: \"sm\", inline: true, style: {\n    textDecoration: \"line-through\"\n  }, children: [formatNumber(Number(toTokenAmount), 6), \" \", (0, import_jsx_runtime42.jsx)(TokenSymbol, { token: toToken, chain: toChain, size: \"sm\", inline: true, color: \"secondaryText\" })] }), \" \", (0, import_jsx_runtime42.jsxs)(Text, { color: \"danger\", size: \"sm\", inline: true, children: [formatNumber(Number(props.status.destination.amount), 6), \" \", (0, import_jsx_runtime42.jsx)(TokenSymbol, { token: {\n    address: props.status.destination.token.tokenAddress,\n    name: props.status.destination.token.name || \"\",\n    symbol: props.status.destination.token.symbol || \"\"\n  }, chain: toChain, size: \"sm\", inline: true, color: \"danger\" })] })] }) : null;\n  const toTokenInfo = partialSuccessToTokenInfo || (0, import_jsx_runtime42.jsxs)(Text, { color: \"primaryText\", size: \"sm\", children: [formatNumber(Number(toTokenAmount), 6), (0, import_jsx_runtime42.jsx)(TokenSymbol, { token: toToken, chain: toChain, size: \"sm\", inline: true })] });\n  const partialSuccessToChainInfo = ((_b = props.status) == null ? void 0 : _b.status) === \"CRYPTO_SWAP_FALLBACK\" && props.status.destination && props.status.destination.token.chainId !== props.status.quote.toToken.chainId ? (0, import_jsx_runtime42.jsxs)(\"div\", { children: [(0, import_jsx_runtime42.jsx)(Text, { size: \"xs\", inline: true, style: {\n    textDecoration: \"line-through\"\n  }, children: toChainName.name }), \" \", (0, import_jsx_runtime42.jsx)(Text, { size: \"xs\", inline: true, children: destinationName.name })] }) : null;\n  const toTokehChainInfo = partialSuccessToChainInfo || (0, import_jsx_runtime42.jsx)(Text, { size: \"xs\", children: toChainName.name });\n  const onRampTxHash = ((_c = props.status) == null ? void 0 : _c.status) !== \"NOT_FOUND\" ? (_e = (_d = props.status) == null ? void 0 : _d.source) == null ? void 0 : _e.transactionHash : void 0;\n  const toTokenTxHash = ((_f = props.status) == null ? void 0 : _f.status) !== \"NOT_FOUND\" ? (_h = (_g = props.status) == null ? void 0 : _g.destination) == null ? void 0 : _h.transactionHash : void 0;\n  const showContinueBtn = !props.status || props.status.status === \"CRYPTO_SWAP_REQUIRED\" || props.status.status === \"CRYPTO_SWAP_FAILED\";\n  function getStep1State() {\n    if (!statusMeta) {\n      if (props.step === 2) {\n        return \"completed\";\n      }\n      return \"actionRequired\";\n    }\n    if (statusMeta.step === 2) {\n      return \"completed\";\n    }\n    return statusMeta.progressStatus;\n  }\n  function getStep2State() {\n    if (!statusMeta) {\n      if (props.step === 2) {\n        return \"actionRequired\";\n      }\n      return void 0;\n    }\n    if (statusMeta.step === 2) {\n      return statusMeta.progressStatus;\n    }\n    return void 0;\n  }\n  return (0, import_jsx_runtime42.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime42.jsx)(ModalHeader, { title: props.title, onBack: props.onBack }), (0, import_jsx_runtime42.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime42.jsx)(PaymentStep, { title: (0, import_jsx_runtime42.jsxs)(Text, { color: \"primaryText\", size: \"md\", children: [\"Get\", \" \", (0, import_jsx_runtime42.jsx)(TokenSymbol, { token: onRampToken, chain: onRampChain, size: \"md\", inline: true }), \" \", \"with \", props.partialQuote.fromCurrencySymbol] }), step: 1, from: {\n    icon: fiatIcon,\n    primaryText: (0, import_jsx_runtime42.jsxs)(Text, { color: \"primaryText\", size: \"sm\", children: [formatNumber(Number(fromCurrencyAmount), 6), \" \", fromCurrencySymbol] })\n  }, to: {\n    icon: onRampTokenIcon,\n    primaryText: onRampTokenInfo,\n    secondaryText: onRampChainInfo\n  }, state: getStep1State(), explorer: ((_i = onRampExplorers.explorers[0]) == null ? void 0 : _i.url) && onRampTxHash ? {\n    label: \"View on Explorer\",\n    url: formatExplorerTxUrl((_j = onRampExplorers.explorers[0]) == null ? void 0 : _j.url, onRampTxHash)\n  } : void 0 }), (0, import_jsx_runtime42.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime42.jsx)(PaymentStep, { title: (0, import_jsx_runtime42.jsxs)(Text, { color: \"primaryText\", size: \"md\", children: [\"Convert\", \" \", (0, import_jsx_runtime42.jsx)(TokenSymbol, { token: onRampToken, chain: onRampChain, size: \"md\", inline: true }), \" \", \"to \", (0, import_jsx_runtime42.jsx)(TokenSymbol, { token: toToken, chain: toChain, size: \"md\", inline: true })] }), step: 2, from: {\n    icon: onRampTokenIcon,\n    primaryText: onRampTokenInfo,\n    secondaryText: onRampChainInfo\n  }, to: {\n    icon: toTokenIcon,\n    primaryText: toTokenInfo,\n    secondaryText: toTokehChainInfo\n  }, state: getStep2State(), explorer: ((_k = toChainExplorers.explorers[0]) == null ? void 0 : _k.url) && toTokenTxHash ? {\n    label: \"View on Explorer\",\n    url: formatExplorerTxUrl((_l = toChainExplorers.explorers[0]) == null ? void 0 : _l.url, toTokenTxHash)\n  } : void 0 }), isPartialSuccess && props.status && props.status.status !== \"NOT_FOUND\" && props.status.source && props.status.destination && (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [(0, import_jsx_runtime42.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime42.jsxs)(Text, { color: \"danger\", size: \"sm\", center: true, children: [\"Expected \", (_m = props.status.source) == null ? void 0 : _m.token.symbol, \", Got\", \" \", (_n = props.status.destination) == null ? void 0 : _n.token.symbol, \" instead\"] }), (0, import_jsx_runtime42.jsx)(Spacer, { y: \"sm\" })] }), showContinueBtn && (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [(0, import_jsx_runtime42.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime42.jsx)(Button, { variant: \"accent\", onClick: props.onContinue, fullWidth: true, children: \"Continue\" })] })] });\n}\nfunction PaymentStep(props) {\n  return (0, import_jsx_runtime42.jsxs)(StepContainer, { state: props.state, children: [(0, import_jsx_runtime42.jsxs)(Text, { size: \"sm\", children: [\"Step \", props.step] }), (0, import_jsx_runtime42.jsx)(Spacer, { y: \"sm\" }), props.title, (0, import_jsx_runtime42.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime42.jsx)(Line, {}), (0, import_jsx_runtime42.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime42.jsx)(PaymentSubStep, { ...props.from }), (0, import_jsx_runtime42.jsxs)(Container, { color: \"borderColor\", style: {\n    paddingLeft: \"18px\",\n    position: \"relative\",\n    marginBlock: \"3px\"\n  }, children: [(0, import_jsx_runtime42.jsx)(\"div\", { style: {\n    height: \"18px\",\n    width: \"2px\",\n    backgroundColor: \"currentColor\",\n    transform: \"translateX(-50%)\"\n  } }), (0, import_jsx_runtime42.jsx)(TriangleDownIcon, { width: iconSize.sm, height: iconSize.sm, style: {\n    position: \"absolute\",\n    bottom: \"0\",\n    transform: \"translate(-50%, 50%)\"\n  } })] }), (0, import_jsx_runtime42.jsx)(PaymentSubStep, { ...props.to }), props.explorer && (0, import_jsx_runtime42.jsxs)(import_jsx_runtime42.Fragment, { children: [(0, import_jsx_runtime42.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime42.jsxs)(ButtonLink, { variant: \"outline\", fullWidth: true, href: props.explorer.url, style: {\n    fontSize: fontSize.xs,\n    padding: spacing.xs\n  }, gap: \"xxs\", target: \"_blank\", children: [props.explorer.label, (0, import_jsx_runtime42.jsx)(ExternalLinkIcon, { width: iconSize.xs, height: iconSize.xs })] })] })] });\n}\nfunction PaymentSubStep(props) {\n  return (0, import_jsx_runtime42.jsxs)(Container, { flex: \"row\", gap: \"sm\", center: \"y\", style: {\n    flexWrap: \"nowrap\"\n  }, children: [(0, import_jsx_runtime42.jsx)(Container, { p: \"xs\", borderColor: \"borderColor\", flex: \"row\", center: \"both\", style: {\n    borderStyle: \"solid\",\n    borderWidth: \"1.5px\",\n    borderRadius: radius.lg\n  }, children: props.icon }), (0, import_jsx_runtime42.jsxs)(Container, { flex: \"column\", gap: \"xxs\", children: [props.primaryText, props.secondaryText] })] });\n}\nfunction StepContainer(props) {\n  let color = \"borderColor\";\n  let text;\n  if (props.state === \"pending\") {\n    text = \"Pending\";\n    color = \"accentText\";\n  } else if (props.state === \"actionRequired\") {\n    color = \"accentText\";\n  } else if (props.state === \"completed\") {\n    text = \"Completed\";\n    color = \"success\";\n  } else if (props.state === \"failed\") {\n    color = \"danger\";\n    text = \"Failed\";\n  } else if (props.state === \"partialSuccess\") {\n    color = \"danger\";\n    text = \"Incomplete\";\n  }\n  return (0, import_jsx_runtime42.jsxs)(Container, { bg: \"tertiaryBg\", borderColor: color === \"success\" ? \"borderColor\" : color, py: \"sm\", px: \"md\", style: {\n    borderRadius: radius.lg,\n    alignItems: \"flex-start\",\n    borderWidth: \"1px\",\n    borderStyle: \"solid\",\n    position: \"relative\"\n  }, children: [props.children, (0, import_jsx_runtime42.jsxs)(\"div\", { style: {\n    position: \"absolute\",\n    right: spacing.sm,\n    top: spacing.sm,\n    display: \"flex\",\n    gap: spacing.xs,\n    alignItems: \"center\"\n  }, children: [props.state && text && (0, import_jsx_runtime42.jsx)(Text, { size: \"sm\", color, children: text }), (props.state === \"actionRequired\" || props.state === \"completed\") && (0, import_jsx_runtime42.jsx)(StepIcon, { isActive: props.state === \"actionRequired\", isDone: props.state === \"completed\" }), props.state === \"pending\" && (0, import_jsx_runtime42.jsx)(Spinner, { color: \"accentText\", size: \"sm\" }), props.state === \"failed\" && (0, import_jsx_runtime42.jsx)(Container, { color: \"danger\", flex: \"row\", center: \"both\", children: (0, import_jsx_runtime42.jsx)(Cross1Icon, { width: iconSize.sm, height: iconSize.sm }) })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js\nvar import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1);\nvar import_react29 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/pay/buyWithFiat/getPostOnRampQuote.js\nasync function getPostOnRampQuote({ client, buyWithFiatStatus }) {\n  if (buyWithFiatStatus.status === \"NOT_FOUND\") {\n    throw new Error(\"Invalid buyWithFiatStatus\");\n  }\n  return getBuyWithCryptoQuote({\n    client,\n    intentId: buyWithFiatStatus.intentId,\n    // onramp always happens to fromAddress, and then swap is done from - fromAddress to toAddress\n    fromAddress: buyWithFiatStatus.fromAddress,\n    toAddress: buyWithFiatStatus.toAddress,\n    fromChainId: buyWithFiatStatus.quote.onRampToken.chainId,\n    fromTokenAddress: buyWithFiatStatus.quote.onRampToken.tokenAddress,\n    toChainId: buyWithFiatStatus.quote.toToken.chainId,\n    toTokenAddress: buyWithFiatStatus.quote.toToken.tokenAddress,\n    toAmount: buyWithFiatStatus.quote.estimatedToTokenAmount\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js\nvar import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1);\nvar import_react28 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js\nvar import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1);\nvar import_react26 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/StepBar.js\nvar import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);\nfunction StepBar(props) {\n  return (0, import_jsx_runtime43.jsx)(Container, { bg: \"tertiaryBg\", flex: \"row\", style: {\n    height: \"8px\",\n    borderRadius: radius.lg\n  }, children: (0, import_jsx_runtime43.jsx)(Container, { bg: \"accentText\", style: {\n    width: `${props.currentStep / props.steps * 95}%`,\n    borderRadius: radius.lg\n  }, children: null }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/formatSeconds.js\nfunction formatSeconds(seconds) {\n  if (seconds > 3600) {\n    const hours = Math.floor(seconds / 3600);\n    const minutes = Math.floor(seconds % 3600 / 60);\n    return `${hours} Hours ${minutes} Minutes`;\n  }\n  if (seconds > 60) {\n    const minutes = Math.ceil(seconds / 60);\n    return `${minutes} Minutes`;\n  }\n  return `${seconds}s`;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js\nfunction SwapConfirmationScreen(props) {\n  const isApprovalRequired = props.quote.approval !== void 0;\n  const initialStep = isApprovalRequired ? \"approval\" : \"swap\";\n  const [step, setStep] = (0, import_react26.useState)(initialStep);\n  const [status, setStatus] = (0, import_react26.useState)(\"idle\");\n  const receiver = props.quote.swapDetails.toAddress;\n  const sender = props.quote.swapDetails.fromAddress;\n  const isDifferentRecipient = receiver.toLowerCase() !== sender.toLowerCase();\n  const ensName = useEnsName({ client: props.client, address: receiver });\n  return (0, import_jsx_runtime44.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime44.jsx)(ModalHeader, { title: props.title, onBack: props.onBack }), props.isFiatFlow ? (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [(0, import_jsx_runtime44.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime44.jsx)(StepBar, { steps: 2, currentStep: 2 }), (0, import_jsx_runtime44.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime44.jsxs)(Text, { size: \"xs\", children: [\"Step 2 of 2 - Converting \", props.fromTokenSymbol, \" to\", \" \", props.toTokenSymbol] }), (0, import_jsx_runtime44.jsx)(Spacer, { y: \"md\" })] }) : (0, import_jsx_runtime44.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime44.jsx)(ConfirmItem, { label: \"Pay\", children: (0, import_jsx_runtime44.jsx)(RenderTokenInfo, { chain: props.fromChain, amount: String(formatNumber(Number(props.fromAmount), 6)), symbol: props.fromTokenSymbol || \"\", token: props.fromToken, client: props.client }) }), !isDifferentRecipient && (0, import_jsx_runtime44.jsx)(ConfirmItem, { label: \"Receive\", children: (0, import_jsx_runtime44.jsx)(RenderTokenInfo, { chain: props.toChain, amount: String(formatNumber(Number(props.toAmount), 6)), symbol: props.toTokenSymbol, token: props.toToken, client: props.client }) }), (0, import_jsx_runtime44.jsx)(ConfirmItem, { label: \"Fees\", children: (0, import_jsx_runtime44.jsx)(SwapFeesRightAligned, { quote: props.quote }) }), (0, import_jsx_runtime44.jsx)(ConfirmItem, { label: \"Time\", children: (0, import_jsx_runtime44.jsxs)(Text, { size: \"sm\", color: \"primaryText\", children: [\"~\", formatSeconds(props.quote.swapDetails.estimated.durationSeconds || 0)] }) }), isDifferentRecipient && (0, import_jsx_runtime44.jsx)(ConfirmItem, { label: \"Receiver\", children: (0, import_jsx_runtime44.jsx)(Text, { color: \"primaryText\", size: \"sm\", children: ensName.data || shortenAddress(receiver) }) }), (0, import_jsx_runtime44.jsx)(Spacer, { y: \"xl\" }), isApprovalRequired && (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [(0, import_jsx_runtime44.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime44.jsxs)(Container, { gap: \"sm\", flex: \"row\", style: {\n    justifyContent: \"space-between\"\n  }, center: \"y\", color: \"accentText\", children: [(0, import_jsx_runtime44.jsx)(Step, { isDone: step === \"swap\", isActive: step === \"approval\", label: step === \"approval\" ? \"Approve\" : \"Approved\" }), (0, import_jsx_runtime44.jsx)(ConnectorLine, {}), (0, import_jsx_runtime44.jsx)(Step, { isDone: false, label: \"Confirm\", isActive: step === \"swap\" })] }), (0, import_jsx_runtime44.jsx)(Spacer, { y: \"lg\" })] }), status === \"error\" && (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [(0, import_jsx_runtime44.jsxs)(Container, { flex: \"row\", gap: \"xs\", center: \"both\", color: \"danger\", children: [(0, import_jsx_runtime44.jsx)(CrossCircledIcon, { width: iconSize.sm, height: iconSize.sm }), (0, import_jsx_runtime44.jsx)(Text, { color: \"danger\", size: \"sm\", children: step === \"approval\" ? \"Failed to Approve\" : \"Failed to Confirm\" })] }), (0, import_jsx_runtime44.jsx)(Spacer, { y: \"md\" })] }), props.payer.chain.id !== props.fromChain.id ? (0, import_jsx_runtime44.jsx)(SwitchNetworkButton, { fullWidth: true, variant: \"accent\", switchChain: async () => {\n    await props.payer.wallet.switchChain(props.fromChain);\n  } }) : (0, import_jsx_runtime44.jsxs)(Button, { variant: \"accent\", fullWidth: true, disabled: status === \"pending\", onClick: async () => {\n    if (step === \"approval\" && props.quote.approval) {\n      try {\n        setStatus(\"pending\");\n        trackPayEvent({\n          event: \"prompt_swap_approval\",\n          client: props.client,\n          walletAddress: props.payer.account.address,\n          walletType: props.payer.wallet.id,\n          fromToken: props.quote.swapDetails.fromToken.tokenAddress,\n          fromAmount: props.quote.swapDetails.fromAmountWei,\n          toToken: props.quote.swapDetails.toToken.tokenAddress,\n          toAmount: props.quote.swapDetails.toAmountWei,\n          chainId: props.quote.swapDetails.fromToken.chainId,\n          dstChainId: props.quote.swapDetails.toToken.chainId\n        });\n        const tx = await sendTransaction({\n          account: props.payer.account,\n          transaction: props.quote.approval\n        });\n        await waitForReceipt({ ...tx, maxBlocksWaitTime: 50 });\n        trackPayEvent({\n          event: \"swap_approval_success\",\n          client: props.client,\n          walletAddress: props.payer.account.address,\n          walletType: props.payer.wallet.id,\n          fromToken: props.quote.swapDetails.fromToken.tokenAddress,\n          fromAmount: props.quote.swapDetails.fromAmountWei,\n          toToken: props.quote.swapDetails.toToken.tokenAddress,\n          toAmount: props.quote.swapDetails.toAmountWei,\n          chainId: props.quote.swapDetails.fromToken.chainId,\n          dstChainId: props.quote.swapDetails.toToken.chainId\n        });\n        setStep(\"swap\");\n        setStatus(\"idle\");\n      } catch (e) {\n        console.error(e);\n        setStatus(\"error\");\n      }\n    }\n    if (step === \"swap\") {\n      setStatus(\"pending\");\n      try {\n        let tx = props.quote.transactionRequest;\n        if (props.payer.wallet.id === \"inApp\" || props.payer.wallet.id === \"embedded\") {\n          tx = {\n            ...props.quote.transactionRequest,\n            gasPrice: void 0\n          };\n        }\n        trackPayEvent({\n          event: \"prompt_swap_execution\",\n          client: props.client,\n          walletAddress: props.payer.account.address,\n          walletType: props.payer.wallet.id,\n          fromToken: props.quote.swapDetails.fromToken.tokenAddress,\n          fromAmount: props.quote.swapDetails.fromAmountWei,\n          toToken: props.quote.swapDetails.toToken.tokenAddress,\n          toAmount: props.quote.swapDetails.toAmountWei,\n          chainId: props.quote.swapDetails.fromToken.chainId,\n          dstChainId: props.quote.swapDetails.toToken.chainId\n        });\n        const _swapTx = await sendTransaction({\n          account: props.payer.account,\n          transaction: tx\n        });\n        await waitForReceipt({ ..._swapTx, maxBlocksWaitTime: 50 });\n        trackPayEvent({\n          event: \"swap_execution_success\",\n          client: props.client,\n          walletAddress: props.payer.account.address,\n          walletType: props.payer.wallet.id,\n          fromToken: props.quote.swapDetails.fromToken.tokenAddress,\n          fromAmount: props.quote.swapDetails.fromAmountWei,\n          toToken: props.quote.swapDetails.toToken.tokenAddress,\n          toAmount: props.quote.swapDetails.toAmountWei,\n          chainId: props.quote.swapDetails.fromToken.chainId,\n          dstChainId: props.quote.swapDetails.toToken.chainId\n        });\n        if (!props.isFiatFlow) {\n          addPendingTx({\n            type: \"swap\",\n            txHash: _swapTx.transactionHash\n          });\n        }\n        props.setSwapTxHash(_swapTx.transactionHash);\n      } catch (e) {\n        console.error(e);\n        setStatus(\"error\");\n      }\n    }\n  }, gap: \"xs\", children: [step === \"approval\" && (status === \"pending\" ? \"Approving\" : \"Approve\"), step === \"swap\" && (status === \"pending\" ? \"Confirming\" : \"Confirm\"), status === \"pending\" && (0, import_jsx_runtime44.jsx)(Spinner, { size: \"sm\", color: \"accentButtonText\" })] })] });\n}\nvar ConnectorLine = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    height: \"4px\",\n    background: theme.colors.borderColor,\n    flex: 1\n  };\n});\nfunction RenderTokenInfo(props) {\n  const { name } = useChainName(props.chain);\n  return (0, import_jsx_runtime44.jsxs)(Container, { flex: \"column\", gap: \"xxs\", style: {\n    alignItems: \"flex-end\"\n  }, children: [(0, import_jsx_runtime44.jsxs)(Container, { flex: \"row\", center: \"y\", gap: \"xs\", children: [(0, import_jsx_runtime44.jsxs)(Text, { color: \"primaryText\", size: \"sm\", children: [props.amount, \" \", props.symbol] }), (0, import_jsx_runtime44.jsx)(PayTokenIcon, { token: props.token, chain: props.chain, size: \"xs\", client: props.client })] }), name ? (0, import_jsx_runtime44.jsx)(Text, { size: \"xs\", children: name }) : (0, import_jsx_runtime44.jsx)(Skeleton, { width: \"100px\", height: fontSize.xs })] });\n}\nfunction ConfirmItem(props) {\n  return (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [(0, import_jsx_runtime44.jsxs)(Container, { flex: \"row\", gap: \"md\", py: \"md\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime44.jsx)(Text, { size: \"sm\", color: \"secondaryText\", children: props.label }), props.children] }), (0, import_jsx_runtime44.jsx)(Line, {})] });\n}\nfunction SwapFeesRightAligned(props) {\n  return (0, import_jsx_runtime44.jsx)(Container, { flex: \"column\", gap: \"xs\", style: {\n    alignItems: \"flex-end\"\n  }, children: props.quote.processingFees.map((fee) => {\n    const feeAmount = formatNumber(Number(fee.amount), 6);\n    return (0, import_jsx_runtime44.jsxs)(Container, { flex: \"row\", gap: \"xxs\", children: [(0, import_jsx_runtime44.jsxs)(Text, { color: \"primaryText\", size: \"sm\", children: [feeAmount === 0 ? \"~\" : \"\", feeAmount, \" \", fee.token.symbol] }), (0, import_jsx_runtime44.jsxs)(Text, { color: \"secondaryText\", size: \"sm\", children: [\"($\", (fee.amountUSDCents / 100).toFixed(2), \")\"] })] }, `${fee.token.chainId}_${fee.token.tokenAddress}_${feeAmount}`);\n  }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js\nvar import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);\nvar import_react27 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/pay/useBuyWithCryptoStatus.js\nfunction useBuyWithCryptoStatus(params) {\n  return useQuery({\n    queryKey: [\"getBuyWithCryptoStatus\", params == null ? void 0 : params.transactionHash],\n    queryFn: async () => {\n      if (!params) {\n        throw new Error(\"No params\");\n      }\n      return getBuyWithCryptoStatus(params);\n    },\n    enabled: !!params,\n    refetchInterval: (query) => {\n      var _a;\n      const status = (_a = query.state.data) == null ? void 0 : _a.status;\n      if (status === \"COMPLETED\" || status === \"FAILED\") {\n        return false;\n      }\n      return 5e3;\n    },\n    refetchIntervalInBackground: true,\n    retry: true\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js\nvar import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1);\nfunction SwapDetailsScreen(props) {\n  var _a, _b;\n  const { status: initialStatus, client } = props;\n  const statusQuery = useBuyWithCryptoStatus(((_a = initialStatus.source) == null ? void 0 : _a.transactionHash) ? {\n    client,\n    transactionHash: initialStatus.source.transactionHash\n  } : void 0);\n  const status = (((_b = statusQuery.data) == null ? void 0 : _b.status) !== \"NOT_FOUND\" ? statusQuery.data : void 0) || initialStatus;\n  return (0, import_jsx_runtime45.jsxs)(Container, { children: [(0, import_jsx_runtime45.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime45.jsx)(ModalHeader, { title: \"Transaction Details\", onBack: props.onBack }) }), (0, import_jsx_runtime45.jsx)(Line, {}), (0, import_jsx_runtime45.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime45.jsx)(SwapTxDetailsTable, { type: \"status\", status, client }) })] });\n}\nfunction SwapTxDetailsTable(props) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n  let uiData;\n  let showStatusRow = true;\n  let isTransfer = false;\n  if (props.type === \"status\") {\n    isTransfer = props.status.swapType === \"TRANSFER\";\n    const status = props.status;\n    if (props.hideStatusRow) {\n      showStatusRow = false;\n    }\n    const isPartialSuccess2 = status.status === \"COMPLETED\" && status.subStatus === \"PARTIAL_SUCCESS\";\n    uiData = {\n      fromToken: {\n        chainId: status.quote.fromToken.chainId,\n        symbol: status.quote.fromToken.symbol || \"\",\n        address: status.quote.fromToken.tokenAddress,\n        amount: status.quote.fromAmount\n      },\n      quotedToToken: {\n        chainId: status.quote.toToken.chainId,\n        symbol: status.quote.toToken.symbol || \"\",\n        address: status.quote.toToken.tokenAddress,\n        amount: status.quote.toAmount\n      },\n      gotToken: status.destination ? {\n        chainId: status.destination.token.chainId,\n        symbol: status.destination.token.symbol || \"\",\n        address: status.destination.token.tokenAddress,\n        amount: status.destination.amount\n      } : void 0,\n      statusMeta: getBuyWithCryptoStatusMeta(status),\n      estimatedDuration: status.quote.estimated.durationSeconds || 0,\n      isPartialSuccess: isPartialSuccess2,\n      destinationTxHash: (_a = status.destination) == null ? void 0 : _a.transactionHash,\n      sourceTxHash: (_b = status.source) == null ? void 0 : _b.transactionHash,\n      fromAddress: status.fromAddress,\n      toAddress: status.toAddress\n    };\n  } else {\n    const quote = props.quote;\n    uiData = {\n      fromToken: {\n        chainId: quote.swapDetails.fromToken.chainId,\n        symbol: quote.swapDetails.fromToken.symbol || \"\",\n        address: quote.swapDetails.fromToken.tokenAddress,\n        amount: quote.swapDetails.fromAmount\n      },\n      quotedToToken: {\n        chainId: quote.swapDetails.toToken.chainId,\n        symbol: quote.swapDetails.toToken.symbol || \"\",\n        address: quote.swapDetails.toToken.tokenAddress,\n        amount: quote.swapDetails.toAmount\n      },\n      isPartialSuccess: false,\n      estimatedDuration: quote.swapDetails.estimated.durationSeconds || 0,\n      fromAddress: quote.swapDetails.fromAddress,\n      toAddress: quote.swapDetails.toAddress\n    };\n  }\n  const { client } = props;\n  const { fromToken, quotedToToken: toToken, statusMeta, sourceTxHash, destinationTxHash, isPartialSuccess, gotToken, estimatedDuration } = uiData;\n  const fromChainId = fromToken.chainId;\n  const toChainId = toToken.chainId;\n  const fromChainName = useChainName(getCachedChain(fromChainId));\n  const fromChainExplorers = useChainExplorers(getCachedChain(fromChainId));\n  const toChainName = useChainName(getCachedChain(toChainId));\n  const toChainExplorers = useChainExplorers(getCachedChain(toChainId));\n  const lineSpacer = (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [(0, import_jsx_runtime45.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime45.jsx)(Line, {}), (0, import_jsx_runtime45.jsx)(Spacer, { y: \"md\" })] });\n  if (isTransfer) {\n    return (0, import_jsx_runtime45.jsx)(\"div\", { children: ((_d = (_c = fromChainExplorers.explorers) == null ? void 0 : _c[0]) == null ? void 0 : _d.url) && sourceTxHash && (0, import_jsx_runtime45.jsxs)(ButtonLink, { fullWidth: true, variant: \"outline\", href: formatExplorerTxUrl((_e = fromChainExplorers.explorers[0]) == null ? void 0 : _e.url, sourceTxHash), target: \"_blank\", gap: \"xs\", style: {\n      fontSize: fontSize.sm,\n      padding: spacing.sm\n    }, children: [\"View on \", fromChainName.name, \" Explorer\", (0, import_jsx_runtime45.jsx)(ExternalLinkIcon, { width: iconSize.sm, height: iconSize.sm })] }) });\n  }\n  return (0, import_jsx_runtime45.jsxs)(\"div\", { children: [isPartialSuccess && gotToken ? (\n    // Expected + Got\n    (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [(0, import_jsx_runtime45.jsx)(TokenInfoRow, { chainId: toToken.chainId, client, label: isPartialSuccess ? \"Expected\" : \"Received\", tokenAmount: toToken.amount, tokenSymbol: toToken.symbol || \"\", tokenAddress: toToken.address }), lineSpacer, (0, import_jsx_runtime45.jsx)(TokenInfoRow, { chainId: gotToken.chainId, client, label: \"Got\", tokenAmount: gotToken.amount, tokenSymbol: gotToken.symbol || \"\", tokenAddress: gotToken.address })] })\n  ) : (\n    // Receive\n    (0, import_jsx_runtime45.jsx)(TokenInfoRow, { chainId: toToken.chainId, client, label: \"Receive\", tokenAmount: toToken.amount, tokenSymbol: toToken.symbol || \"\", tokenAddress: toToken.address })\n  ), lineSpacer, (0, import_jsx_runtime45.jsx)(TokenInfoRow, { chainId: fromToken.chainId, client, label: \"Pay\", tokenAmount: fromToken.amount, tokenSymbol: fromToken.symbol || \"\", tokenAddress: fromToken.address }), lineSpacer, (0, import_jsx_runtime45.jsxs)(Container, { flex: \"row\", center: \"y\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime45.jsx)(Text, { children: \" Time \" }), (0, import_jsx_runtime45.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", children: (0, import_jsx_runtime45.jsxs)(Text, { color: \"primaryText\", children: [\"~\", formatSeconds(estimatedDuration || 0)] }) })] }), statusMeta && showStatusRow && (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [lineSpacer, (0, import_jsx_runtime45.jsxs)(Container, { flex: \"row\", center: \"y\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime45.jsx)(Text, { children: \"Status\" }), (0, import_jsx_runtime45.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", children: (0, import_jsx_runtime45.jsx)(Text, { color: statusMeta.color, children: statusMeta.status }) })] })] }), uiData.fromAddress.toLowerCase() !== uiData.toAddress.toLowerCase() && (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [lineSpacer, (0, import_jsx_runtime45.jsxs)(Container, { flex: \"row\", center: \"y\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime45.jsx)(Text, { children: \"Send to\" }), (0, import_jsx_runtime45.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", children: (0, import_jsx_runtime45.jsx)(Text, { color: \"primaryText\", size: \"sm\", children: shortenAddress(uiData.toAddress) }) })] })] }), lineSpacer, ((_g = (_f = fromChainExplorers.explorers) == null ? void 0 : _f[0]) == null ? void 0 : _g.url) && sourceTxHash && (0, import_jsx_runtime45.jsxs)(ButtonLink, { fullWidth: true, variant: \"outline\", href: formatExplorerTxUrl((_h = fromChainExplorers.explorers[0]) == null ? void 0 : _h.url, sourceTxHash), target: \"_blank\", gap: \"xs\", style: {\n    fontSize: fontSize.sm,\n    padding: spacing.sm\n  }, children: [\"View on \", fromChainName.name, \" Explorer\", (0, import_jsx_runtime45.jsx)(ExternalLinkIcon, { width: iconSize.sm, height: iconSize.sm })] }), destinationTxHash && sourceTxHash !== destinationTxHash && ((_j = (_i = toChainExplorers == null ? void 0 : toChainExplorers.explorers) == null ? void 0 : _i[0]) == null ? void 0 : _j.url) && (0, import_jsx_runtime45.jsxs)(import_jsx_runtime45.Fragment, { children: [(0, import_jsx_runtime45.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime45.jsxs)(ButtonLink, { fullWidth: true, variant: \"outline\", href: formatExplorerTxUrl((_k = toChainExplorers.explorers[0]) == null ? void 0 : _k.url, destinationTxHash), target: \"_blank\", gap: \"xs\", style: {\n    fontSize: fontSize.sm,\n    padding: spacing.sm\n  }, children: [\"View on \", toChainName.name, \" Explorer\", (0, import_jsx_runtime45.jsx)(ExternalLinkIcon, { width: iconSize.sm, height: iconSize.sm })] })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js\nfunction SwapStatusScreen(props) {\n  var _a, _b, _c, _d, _e, _f;\n  const { onSuccess } = props;\n  const swapStatus = useBuyWithCryptoStatus({\n    client: props.client,\n    transactionHash: props.swapTxHash\n  });\n  let uiStatus = \"pending\";\n  if (((_a = swapStatus.data) == null ? void 0 : _a.status) === \"COMPLETED\") {\n    uiStatus = \"success\";\n  } else if (((_b = swapStatus.data) == null ? void 0 : _b.status) === \"FAILED\") {\n    uiStatus = \"failed\";\n  }\n  if (((_c = swapStatus.data) == null ? void 0 : _c.status) === \"COMPLETED\" && ((_d = swapStatus.data) == null ? void 0 : _d.subStatus) === \"PARTIAL_SUCCESS\") {\n    uiStatus = \"partialSuccess\";\n  }\n  const purchaseCbCalled = (0, import_react27.useRef)(false);\n  (0, import_react27.useEffect)(() => {\n    var _a2;\n    if (purchaseCbCalled.current || !onSuccess) {\n      return;\n    }\n    if (((_a2 = swapStatus.data) == null ? void 0 : _a2.status) === \"COMPLETED\") {\n      purchaseCbCalled.current = true;\n      onSuccess(swapStatus.data);\n    }\n  }, [onSuccess, swapStatus]);\n  const queryClient = useQueryClient();\n  const balanceInvalidated = (0, import_react27.useRef)(false);\n  (0, import_react27.useEffect)(() => {\n    if ((uiStatus === \"success\" || uiStatus === \"partialSuccess\") && !balanceInvalidated.current) {\n      balanceInvalidated.current = true;\n      invalidateWalletBalance(queryClient);\n    }\n  }, [queryClient, uiStatus]);\n  const swapDetails = swapStatus.data && swapStatus.data.status !== \"NOT_FOUND\" ? (0, import_jsx_runtime46.jsx)(SwapTxDetailsTable, { status: swapStatus.data, type: \"status\", hideStatusRow: true, client: props.client }) : props.quote ? (0, import_jsx_runtime46.jsx)(SwapTxDetailsTable, { type: \"quote\", quote: props.quote, client: props.client }) : null;\n  return (0, import_jsx_runtime46.jsx)(Container, { animate: \"fadein\", children: (0, import_jsx_runtime46.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime46.jsx)(ModalHeader, { title: props.title, onBack: props.onBack }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"sm\" }), uiStatus === \"success\" && (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [(0, import_jsx_runtime46.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime46.jsxs)(Container, { color: \"success\", flex: \"column\", center: \"x\", children: [(0, import_jsx_runtime46.jsx)(CheckCircledIcon, { width: iconSize[\"3xl\"], height: iconSize[\"3xl\"] }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime46.jsx)(Text, { color: \"primaryText\", size: \"lg\", children: \"Buy Complete\" })] }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"xl\" }), swapDetails, (0, import_jsx_runtime46.jsx)(Spacer, { y: \"sm\" }), !props.isEmbed && (0, import_jsx_runtime46.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: props.onDone, children: props.transactionMode ? \"Continue Transaction\" : \"Done\" })] }), uiStatus === \"partialSuccess\" && ((_e = swapStatus.data) == null ? void 0 : _e.status) !== \"NOT_FOUND\" && ((_f = swapStatus.data) == null ? void 0 : _f.destination) && (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [(0, import_jsx_runtime46.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime46.jsxs)(Container, { color: \"success\", flex: \"column\", center: \"x\", children: [(0, import_jsx_runtime46.jsx)(AccentFailIcon, { size: iconSize[\"3xl\"] }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime46.jsx)(Text, { color: \"primaryText\", size: \"lg\", children: \"Incomplete\" }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime46.jsxs)(Text, { size: \"sm\", color: \"danger\", children: [\"Expected \", swapStatus.data.quote.toToken.symbol, \", Got\", \" \", swapStatus.data.destination.token.symbol, \" instead\"] })] }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"xl\" }), swapDetails] }), uiStatus === \"failed\" && (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [(0, import_jsx_runtime46.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime46.jsxs)(Container, { flex: \"column\", children: [(0, import_jsx_runtime46.jsxs)(Container, { flex: \"column\", center: \"both\", children: [(0, import_jsx_runtime46.jsx)(AccentFailIcon, { size: iconSize[\"3xl\"] }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime46.jsx)(Text, { color: \"primaryText\", size: \"lg\", children: \"Transaction Failed\" }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime46.jsxs)(Text, { size: \"sm\", children: [\"Your transaction \", `couldn't`, \" be processed\"] })] }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime46.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: props.onTryAgain, children: \"Try Again\" }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"xl\" }), swapDetails] })] }), uiStatus === \"pending\" && (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [(0, import_jsx_runtime46.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime46.jsxs)(Container, { flex: \"column\", animate: \"fadein\", center: \"both\", children: [(0, import_jsx_runtime46.jsx)(\"div\", { style: {\n    position: \"relative\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  }, children: (0, import_jsx_runtime46.jsx)(Spinner, { size: \"3xl\", color: \"accentText\" }) }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime46.jsx)(Text, { color: \"primaryText\", size: \"lg\", children: \"Buy Pending\" })] }), (0, import_jsx_runtime46.jsx)(Spacer, { y: \"xxl\" }), swapDetails] })] }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js\nfunction SwapFlow(props) {\n  const [swapTxHash, setSwapTxHash] = (0, import_react28.useState)();\n  const quote = props.buyWithCryptoQuote;\n  const fromChain = (0, import_react28.useMemo)(() => getCachedChain(quote.swapDetails.fromToken.chainId), [quote]);\n  const toChain = (0, import_react28.useMemo)(() => getCachedChain(quote.swapDetails.toToken.chainId), [quote]);\n  const fromTokenSymbol = quote.swapDetails.fromToken.symbol || \"\";\n  const toTokenSymbol = quote.swapDetails.toToken.symbol || \"\";\n  const fromAmount = quote.swapDetails.fromAmount;\n  const toAmount = quote.swapDetails.toAmount;\n  const _toToken = quote.swapDetails.toToken;\n  const _fromToken = quote.swapDetails.fromToken;\n  const toToken = (0, import_react28.useMemo)(() => {\n    if (_toToken.tokenAddress === NATIVE_TOKEN_ADDRESS) {\n      return NATIVE_TOKEN;\n    }\n    const tokenInfo = {\n      address: _toToken.tokenAddress,\n      name: _toToken.name || \"\",\n      symbol: _toToken.symbol || \"\"\n    };\n    return tokenInfo;\n  }, [_toToken]);\n  const fromToken = (0, import_react28.useMemo)(() => {\n    if (_fromToken.tokenAddress === NATIVE_TOKEN_ADDRESS) {\n      return NATIVE_TOKEN;\n    }\n    const tokenInfo = {\n      address: _fromToken.tokenAddress,\n      name: _fromToken.name || \"\",\n      symbol: _fromToken.symbol || \"\"\n    };\n    return tokenInfo;\n  }, [_fromToken]);\n  if (swapTxHash) {\n    return (0, import_jsx_runtime47.jsx)(SwapStatusScreen, { title: props.title, onBack: props.onBack, onTryAgain: props.onTryAgain, swapTxHash, client: props.client, onDone: props.onDone, transactionMode: props.transactionMode, isEmbed: props.isEmbed, quote, onSuccess: props.onSuccess });\n  }\n  return (0, import_jsx_runtime47.jsx)(SwapConfirmationScreen, { title: props.title, setSwapTxHash, toChain, toAmount, toTokenSymbol, fromChain, toToken, fromAmount, fromToken, fromTokenSymbol, client: props.client, onBack: props.onBack, onTryAgain: props.onTryAgain, quote, isFiatFlow: props.isFiatFlow, payer: props.payer });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js\nfunction PostOnRampSwap(props) {\n  const [lockedOnRampQuote, setLockedOnRampQuote] = (0, import_react29.useState)(void 0);\n  const postOnRampQuoteQuery = useQuery({\n    queryKey: [\"getPostOnRampQuote\", props.buyWithFiatStatus],\n    queryFn: async () => {\n      return await getPostOnRampQuote({\n        client: props.client,\n        buyWithFiatStatus: props.buyWithFiatStatus\n      });\n    },\n    // stop fetching if a quote is already locked\n    enabled: !lockedOnRampQuote,\n    refetchOnWindowFocus: false\n  });\n  (0, import_react29.useEffect)(() => {\n    if (postOnRampQuoteQuery.data && !lockedOnRampQuote && !postOnRampQuoteQuery.isRefetching) {\n      setLockedOnRampQuote(postOnRampQuoteQuery.data);\n    }\n  }, [\n    postOnRampQuoteQuery.data,\n    lockedOnRampQuote,\n    postOnRampQuoteQuery.isRefetching\n  ]);\n  if (postOnRampQuoteQuery.isError) {\n    return (0, import_jsx_runtime48.jsxs)(Container, { fullHeight: true, children: [(0, import_jsx_runtime48.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime48.jsx)(ModalHeader, { title: props.title, onBack: props.onBack }) }), (0, import_jsx_runtime48.jsxs)(Container, { style: {\n      minHeight: \"300px\"\n    }, flex: \"column\", center: \"both\", p: \"lg\", children: [(0, import_jsx_runtime48.jsx)(AccentFailIcon, { size: iconSize[\"3xl\"] }), (0, import_jsx_runtime48.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime48.jsx)(Text, { color: \"primaryText\", children: \"Failed to get a price quote\" }), (0, import_jsx_runtime48.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime48.jsx)(Button, { fullWidth: true, variant: \"primary\", onClick: () => {\n      postOnRampQuoteQuery.refetch();\n    }, children: \"Try Again\" })] }), (0, import_jsx_runtime48.jsx)(Spacer, { y: \"xxl\" })] });\n  }\n  if (!lockedOnRampQuote) {\n    return (0, import_jsx_runtime48.jsxs)(Container, { fullHeight: true, children: [(0, import_jsx_runtime48.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime48.jsx)(ModalHeader, { title: props.title, onBack: props.onBack }) }), (0, import_jsx_runtime48.jsxs)(Container, { style: {\n      minHeight: \"300px\"\n    }, flex: \"column\", center: \"both\", children: [(0, import_jsx_runtime48.jsx)(Spinner, { size: \"xxl\", color: \"accentText\" }), (0, import_jsx_runtime48.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime48.jsx)(Text, { color: \"primaryText\", children: \"Getting price quote\" })] }), (0, import_jsx_runtime48.jsx)(Spacer, { y: \"xxl\" })] });\n  }\n  return (0, import_jsx_runtime48.jsx)(SwapFlow, { title: props.title, payer: props.payer, buyWithCryptoQuote: lockedOnRampQuote, client: props.client, onBack: props.onBack, isFiatFlow: true, onDone: props.onDone, onTryAgain: () => {\n    setLockedOnRampQuote(void 0);\n    postOnRampQuoteQuery.refetch();\n  }, transactionMode: props.transactionMode, isEmbed: props.isEmbed, onSuccess: props.onSuccess });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js\nfunction PostOnRampSwapFlow(props) {\n  const [statusForSwap, setStatusForSwap] = (0, import_react30.useState)();\n  if (statusForSwap) {\n    return (0, import_jsx_runtime49.jsx)(PostOnRampSwap, { title: props.title, buyWithFiatStatus: statusForSwap, client: props.client, onDone: props.onDone, transactionMode: props.transactionMode, isEmbed: props.isEmbed, payer: props.payer, onSuccess: props.onSuccess });\n  }\n  return (0, import_jsx_runtime49.jsx)(FiatSteps, { title: props.title, client: props.client, onBack: props.onBack, partialQuote: props.quote, step: 2, onContinue: () => {\n    props.onSwapFlowStarted();\n    setStatusForSwap(props.status);\n  }, status: props.status });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js\nfunction FiatDetailsScreen(props) {\n  var _a, _b;\n  const initialStatus = props.status;\n  const [stopPolling, setStopPolling] = (0, import_react31.useState)(false);\n  const statusQuery = useBuyWithFiatStatus(stopPolling ? void 0 : {\n    client: props.client,\n    intentId: initialStatus.intentId\n  });\n  const status = (((_a = statusQuery.data) == null ? void 0 : _a.status) === \"NOT_FOUND\" ? void 0 : statusQuery.data) || initialStatus;\n  const hasTwoSteps = isSwapRequiredAfterOnRamp(status);\n  const statusMeta = getBuyWithFiatStatusMeta(status);\n  if (hasTwoSteps) {\n    const fiatQuote = status.quote;\n    return (0, import_jsx_runtime50.jsx)(PostOnRampSwapFlow, {\n      title: props.title,\n      client: props.client,\n      status,\n      onBack: props.onBack,\n      transactionMode: props.transactionMode,\n      isEmbed: props.isEmbed,\n      quote: {\n        fromCurrencyAmount: fiatQuote.fromCurrencyWithFees.amount,\n        fromCurrencySymbol: fiatQuote.fromCurrencyWithFees.currencySymbol,\n        onRampTokenAmount: fiatQuote.estimatedOnRampAmount,\n        toTokenAmount: fiatQuote.estimatedToTokenAmount,\n        onRampToken: {\n          chainId: fiatQuote.onRampToken.chainId,\n          tokenAddress: fiatQuote.onRampToken.tokenAddress,\n          name: fiatQuote.onRampToken.name,\n          symbol: fiatQuote.onRampToken.symbol\n        },\n        toToken: {\n          chainId: fiatQuote.toToken.chainId,\n          tokenAddress: fiatQuote.toToken.tokenAddress,\n          name: fiatQuote.toToken.name,\n          symbol: fiatQuote.toToken.symbol\n        }\n      },\n      onDone: props.onDone,\n      onSwapFlowStarted: () => {\n        setStopPolling(true);\n      },\n      payer: props.payer,\n      // viewing history - ignore onSuccess\n      onSuccess: void 0\n    });\n  }\n  return (0, import_jsx_runtime50.jsxs)(Container, { children: [(0, import_jsx_runtime50.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime50.jsx)(ModalHeader, { title: \"Transaction Details\", onBack: props.onBack }) }), (0, import_jsx_runtime50.jsx)(Line, {}), (0, import_jsx_runtime50.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime50.jsx)(OnRampTxDetailsTable, { client: props.client, token: status.source ? {\n    chainId: status.source.token.chainId,\n    address: status.source.token.tokenAddress,\n    symbol: status.source.token.symbol || \"\",\n    amount: status.source.amount\n  } : {\n    address: status.quote.onRampToken.tokenAddress,\n    amount: status.quote.estimatedOnRampAmount,\n    chainId: status.quote.onRampToken.chainId,\n    symbol: status.quote.onRampToken.symbol || \"\"\n  }, fiat: {\n    amount: status.quote.fromCurrencyWithFees.amount,\n    currencySymbol: status.quote.fromCurrencyWithFees.currencySymbol\n  }, statusMeta: {\n    color: statusMeta.color,\n    text: statusMeta.status,\n    txHash: (_b = status.source) == null ? void 0 : _b.transactionHash\n  } }) })] });\n}\nfunction isSwapRequiredAfterOnRamp(buyWithFiatStatus) {\n  if (buyWithFiatStatus.status === \"NOT_FOUND\") {\n    return false;\n  }\n  const sameChain = buyWithFiatStatus.quote.toToken.chainId === buyWithFiatStatus.quote.onRampToken.chainId;\n  const sameToken = buyWithFiatStatus.quote.toToken.tokenAddress === buyWithFiatStatus.quote.onRampToken.tokenAddress;\n  return !(sameChain && sameToken);\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js\nfunction TxDetailsScreen(props) {\n  const { statusInfo } = props;\n  if (statusInfo.type === \"swap\") {\n    return (0, import_jsx_runtime51.jsx)(SwapDetailsScreen, { client: props.client, status: statusInfo.status, onBack: props.onBack });\n  }\n  if (statusInfo.type === \"fiat\") {\n    return (0, import_jsx_runtime51.jsx)(FiatDetailsScreen, { title: props.title, client: props.client, status: statusInfo.status, onBack: props.onBack, onDone: props.onDone, transactionMode: props.transactionMode, isEmbed: props.isEmbed, payer: props.payer });\n  }\n  return null;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/WalletTransactionHistory.js\nvar import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1);\nvar import_react32 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/contract/useWaitForReceipt.js\nfunction useWaitForReceipt(options) {\n  return useQuery({\n    queryKey: [\n      \"waitForReceipt\",\n      // TODO: here chain can be undfined so we go to a `-1` chain but this feels wrong\n      (options == null ? void 0 : options.chain.id) || -1,\n      options == null ? void 0 : options.transactionHash\n    ],\n    queryFn: async () => {\n      if (!(options == null ? void 0 : options.transactionHash)) {\n        throw new Error(\"No transaction hash or user op hash provided\");\n      }\n      return waitForReceipt(options);\n    },\n    enabled: !!(options == null ? void 0 : options.transactionHash),\n    retry: false\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/WalletTransactionHistory.js\nfunction WalletTransactionHistory(props) {\n  const activeChain = useActiveWalletChain();\n  const chainExplorers = useChainExplorers(activeChain);\n  const transactionStore = getTransactionStore(props.address);\n  const reverseChronologicalTransactions = (0, import_react32.useSyncExternalStore)(transactionStore.subscribe, transactionStore.getValue);\n  const transactions = [...reverseChronologicalTransactions].reverse();\n  return (0, import_jsx_runtime52.jsx)(Container, { scrollY: true, flex: \"column\", fullHeight: true, style: {\n    minHeight: \"250px\",\n    maxHeight: \"370px\",\n    paddingBottom: spacing.lg\n  }, children: (0, import_jsx_runtime52.jsx)(Container, { flex: \"column\", gap: \"xs\", expand: true, children: transactions.length === 0 ? (0, import_jsx_runtime52.jsxs)(Container, { flex: \"column\", gap: \"md\", center: \"both\", color: \"secondaryText\", style: {\n    flex: \"1\",\n    minHeight: \"250px\"\n  }, children: [(0, import_jsx_runtime52.jsx)(CrossCircledIcon, { width: iconSize.xl, height: iconSize.xl }), (0, import_jsx_runtime52.jsx)(Text, { children: \"No Transactions\" })] }) : (0, import_jsx_runtime52.jsx)(Container, { animate: \"fadein\", flex: \"column\", gap: \"xs\", style: { minHeight: \"250px\" }, children: transactions.map((tx) => {\n    var _a;\n    return (0, import_jsx_runtime52.jsx)(TransactionButton, { explorerUrl: (_a = chainExplorers.explorers[0]) == null ? void 0 : _a.url, client: props.client, hash: tx.transactionHash, chainId: tx.chainId }, tx.transactionHash);\n  }) }) }) });\n}\nfunction TransactionButton(props) {\n  const { data: receipt, isLoading, error } = useWaitForReceipt({\n    transactionHash: props.hash,\n    chain: getCachedChain(props.chainId),\n    client: props.client\n  });\n  const chainIconQuery = useChainIconUrl(getCachedChain(props.chainId));\n  const content = (0, import_jsx_runtime52.jsxs)(TxButton2, { variant: \"secondary\", fullWidth: true, style: {\n    paddingBlock: spacing.sm\n  }, children: [(0, import_jsx_runtime52.jsxs)(Container, { flex: \"row\", center: \"y\", gap: \"md\", style: {\n    flex: 1\n  }, children: [(0, import_jsx_runtime52.jsx)(ChainIcon, { chainIconUrl: chainIconQuery.url, size: iconSize.lg, client: props.client }), (0, import_jsx_runtime52.jsxs)(\"div\", { style: {\n    flex: 1,\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\"\n  }, children: [(0, import_jsx_runtime52.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", style: {\n    justifyContent: \"space-between\"\n  }, children: (0, import_jsx_runtime52.jsx)(Text, { size: \"sm\", color: \"primaryText\", children: (receipt == null ? void 0 : receipt.to) ? `Interacted with ${shortenHex(receipt.to, 4)}` : `Hash: ${shortenHex(props.hash, 4)}` }) }), (0, import_jsx_runtime52.jsx)(Spacer, { y: \"xxs\" }), (0, import_jsx_runtime52.jsx)(Container, { flex: \"row\", center: \"y\", gap: \"xxs\", style: {\n    justifyContent: \"space-between\"\n  }, children: (0, import_jsx_runtime52.jsx)(ChainName, { chain: getCachedChain(props.chainId), size: \"xs\", client: props.client }) })] })] }), (0, import_jsx_runtime52.jsxs)(Container, { flex: \"row\", gap: \"xxs\", center: \"y\", children: [isLoading && (0, import_jsx_runtime52.jsx)(Spinner, { size: \"sm\", color: \"primaryText\" }), !isLoading && receipt && receipt.status === \"success\" && (0, import_jsx_runtime52.jsx)(Text, { size: \"md\", color: \"success\", children: (0, import_jsx_runtime52.jsx)(CheckIcon, { width: iconSize.md, height: iconSize.md }) }), (error || !isLoading && receipt && receipt.status !== \"success\") && (0, import_jsx_runtime52.jsx)(Text, { size: \"md\", color: \"danger\", children: (0, import_jsx_runtime52.jsx)(CrossCircledIcon, { width: iconSize.md, height: iconSize.md }) })] })] });\n  if (props.explorerUrl) {\n    return (0, import_jsx_runtime52.jsx)(\"a\", { href: formatExplorerTxUrl(props.explorerUrl, props.hash), target: \"_blank\", rel: \"noreferrer\", children: content });\n  }\n  return content;\n}\nvar TxButton2 = newStyled(Button)(() => {\n  const theme = useCustomTheme();\n  return {\n    background: theme.colors.tertiaryBg,\n    \"&:hover\": {\n      background: theme.colors.secondaryButtonBg\n    },\n    height: \"62px\"\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js\nfunction TransactionsScreen(props) {\n  var _a;\n  const [activeTab, setActiveTab] = (0, import_react33.useState)(\"Transactions\");\n  const [selectedTx, setSelectedTx] = (0, import_react33.useState)(null);\n  const activeChain = useActiveWalletChain();\n  const activeWallet = useActiveWallet();\n  const activeAccount = useActiveAccount();\n  const chainExplorers = useChainExplorers(activeChain);\n  const payer = activeChain && activeAccount && activeWallet ? { chain: activeChain, account: activeAccount, wallet: activeWallet } : void 0;\n  if (!payer) {\n    return (0, import_jsx_runtime53.jsx)(LoadingScreen, {});\n  }\n  if (selectedTx) {\n    return (0, import_jsx_runtime53.jsx)(TxDetailsScreen, { title: props.title, client: props.client, statusInfo: selectedTx, onBack: () => setSelectedTx(null), onDone: () => setSelectedTx(null), payer, transactionMode: false, isEmbed: false });\n  }\n  return (0, import_jsx_runtime53.jsxs)(Container, { animate: \"fadein\", children: [(0, import_jsx_runtime53.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime53.jsx)(ModalHeader, { title: props.locale.transactions, onBack: props.onBack }) }), (0, import_jsx_runtime53.jsx)(Line, {}), (0, import_jsx_runtime53.jsxs)(Container, { px: \"lg\", scrollY: true, style: {\n    minHeight: \"330px\"\n  }, children: [(0, import_jsx_runtime53.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime53.jsxs)(Tabs, { options: [\n    {\n      label: (0, import_jsx_runtime53.jsxs)(\"span\", { className: \"flex gap-2\", children: [(0, import_jsx_runtime53.jsx)(CoinsIcon, { size: iconSize.sm }), \" Transactions\"] }),\n      value: \"Transactions\"\n    },\n    {\n      label: (0, import_jsx_runtime53.jsxs)(\"span\", { className: \"flex gap-2\", children: [(0, import_jsx_runtime53.jsx)(FundsIcon, { size: iconSize.sm }), \" Purchases\"] }),\n      value: \"Purchases\"\n    }\n  ], selected: activeTab, onSelect: setActiveTab, children: [activeTab === \"Purchases\" && (0, import_jsx_runtime53.jsx)(PayTxHistoryList, { client: props.client, onSelectTx: setSelectedTx }), activeTab === \"Transactions\" && (0, import_jsx_runtime53.jsx)(WalletTransactionHistory, { locale: props.locale, client: props.client, address: payer.account.address })] })] }), (0, import_jsx_runtime53.jsx)(Line, {}), (0, import_jsx_runtime53.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime53.jsxs)(ButtonLink, { fullWidth: true, variant: \"outline\", href: formatExplorerAddressUrl(((_a = chainExplorers.explorers[0]) == null ? void 0 : _a.url) ?? \"\", (activeAccount == null ? void 0 : activeAccount.address) ?? \"\"), target: \"_blank\", as: \"a\", gap: \"xs\", style: {\n    textDecoration: \"none\",\n    color: \"inherit\"\n  }, children: [\"View on Explorer\", (0, import_jsx_runtime53.jsx)(ExternalLinkIcon, { width: iconSize.sm, height: iconSize.sm })] }) })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/LazyBuyScreen.js\nvar import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1);\nvar import_react34 = __toESM(require_react(), 1);\nvar BuyScreen = (0, import_react34.lazy)(() => import(\"./BuyScreen-N3MCCV33.js\"));\nfunction LazyBuyScreen(props) {\n  return (0, import_jsx_runtime54.jsx)(import_react34.Suspense, { fallback: (0, import_jsx_runtime54.jsx)(LoadingScreen, {}), children: (0, import_jsx_runtime54.jsx)(BuyScreen, { ...props }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Details/WalletManagerScreen.js\nvar import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1);\nvar import_react39 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useSetActiveWallet.js\nfunction useSetActiveWallet() {\n  const manager = useConnectionManagerCtx(\"useSetActiveWallet\");\n  return manager.setActiveWallet;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js\nvar import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModalContent.js\nvar import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);\nvar import_react38 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js\nvar import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1);\nvar import_react36 = __toESM(require_react(), 1);\nvar SignatureScreen = (props) => {\n  const { onDone, modalSize, termsOfServiceUrl, privacyPolicyUrl, connectLocale } = props;\n  const wallet = useActiveWallet();\n  const adminWallet = useAdminWallet();\n  const activeAccount = useActiveAccount();\n  const siweAuth = useSiweAuth(wallet, activeAccount, props.auth);\n  const [status, setStatus] = (0, import_react36.useState)(\"idle\");\n  const { disconnect } = useDisconnect();\n  const locale = connectLocale.signatureScreen;\n  const signIn = (0, import_react36.useCallback)(async () => {\n    try {\n      setStatus(\"signing\");\n      await siweAuth.doLogin();\n      onDone == null ? void 0 : onDone();\n    } catch (err) {\n      await wait(1e3);\n      setStatus(\"failed\");\n      console.error(\"failed to log in\", err);\n    }\n  }, [onDone, siweAuth]);\n  if (!wallet) {\n    return (0, import_jsx_runtime55.jsx)(LoadingScreen, {});\n  }\n  if (wallet.id === \"inApp\" || wallet.id === \"embedded\" || wallet.id === \"smart\" && (adminWallet == null ? void 0 : adminWallet.id) === \"inApp\") {\n    return (0, import_jsx_runtime55.jsx)(HeadlessSignIn, { signIn, status, connectLocale, wallet });\n  }\n  const handleRetry = () => {\n    signIn();\n  };\n  return (0, import_jsx_runtime55.jsxs)(Container, { animate: \"fadein\", fullHeight: true, flex: \"column\", children: [(0, import_jsx_runtime55.jsx)(Container, { p: \"lg\", style: {\n    paddingBottom: 0\n  }, children: (0, import_jsx_runtime55.jsx)(ModalHeader, { title: locale.instructionScreen.title }) }), (0, import_jsx_runtime55.jsx)(Container, { style: {\n    paddingTop: 0,\n    paddingBottom: spacing.xl\n  }, flex: \"column\", px: modalSize === \"compact\" ? \"lg\" : \"xxl\", center: \"y\", expand: true, children: status === \"idle\" ? (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [(0, import_jsx_runtime55.jsx)(Container, { flex: \"row\", center: \"x\", animate: \"fadein\", py: \"3xl\", children: (0, import_jsx_runtime55.jsx)(PulsatingContainer, { children: (0, import_jsx_runtime55.jsx)(WalletImage, { id: wallet.id, client: props.client, size: \"80\" }) }) }), (0, import_jsx_runtime55.jsx)(Text, { center: true, multiline: true, balance: true, children: locale.instructionScreen.instruction }), (0, import_jsx_runtime55.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime55.jsx)(Button, { fullWidth: true, variant: \"accent\", onClick: signIn, style: {\n    alignItems: \"center\",\n    padding: spacing.md\n  }, children: connectLocale.signatureScreen.instructionScreen.signInButton }), (0, import_jsx_runtime55.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime55.jsx)(Button, { fullWidth: true, variant: \"secondary\", onClick: () => {\n    disconnect(wallet);\n  }, style: {\n    alignItems: \"center\",\n    padding: spacing.md\n  }, children: connectLocale.signatureScreen.instructionScreen.disconnectWallet })] }) : (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [(0, import_jsx_runtime55.jsx)(Container, { py: \"3xl\", children: (0, import_jsx_runtime55.jsx)(WalletLogoSpinner, { client: props.client, error: status === \"failed\", id: wallet.id }) }), (0, import_jsx_runtime55.jsxs)(Container, { flex: \"column\", gap: \"md\", animate: \"fadein\", children: [(0, import_jsx_runtime55.jsx)(Text, { size: \"lg\", center: true, color: \"primaryText\", children: status === \"failed\" ? locale.signingScreen.failedToSignIn : locale.signingScreen.inProgress }), status === \"signing\" && (0, import_jsx_runtime55.jsx)(Text, { center: true, multiline: true, balance: true, children: connectLocale.signatureScreen.signingScreen.prompt }), status === \"failed\" && (0, import_jsx_runtime55.jsxs)(Container, { children: [(0, import_jsx_runtime55.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime55.jsxs)(Button, { fullWidth: true, variant: \"accent\", onClick: handleRetry, style: {\n    gap: spacing.xs,\n    alignItems: \"center\",\n    padding: spacing.md\n  }, children: [(0, import_jsx_runtime55.jsx)(ReloadIcon, { width: iconSize.sm, height: iconSize.sm }), locale.signingScreen.tryAgain] }), (0, import_jsx_runtime55.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime55.jsx)(Button, { fullWidth: true, variant: \"secondary\", onClick: () => {\n    disconnect(wallet);\n  }, style: {\n    alignItems: \"center\",\n    padding: spacing.md\n  }, children: locale.instructionScreen.disconnectWallet })] })] }, status)] }) }), (termsOfServiceUrl || privacyPolicyUrl) && (0, import_jsx_runtime55.jsx)(Container, { p: \"md\", animate: \"fadein\", children: (0, import_jsx_runtime55.jsx)(TOS, { termsOfServiceUrl, privacyPolicyUrl, locale: connectLocale.agreement }) })] });\n};\nfunction HeadlessSignIn({ signIn, status, connectLocale, wallet }) {\n  const locale = connectLocale.signatureScreen;\n  const mounted = (0, import_react36.useRef)(false);\n  const { disconnect } = useDisconnect();\n  (0, import_react36.useEffect)(() => {\n    if (mounted.current) {\n      return;\n    }\n    mounted.current = true;\n    signIn();\n  }, [signIn]);\n  return (0, import_jsx_runtime55.jsxs)(Container, { p: \"lg\", fullHeight: true, flex: \"column\", animate: \"fadein\", children: [(0, import_jsx_runtime55.jsx)(ModalHeader, { title: locale.signingScreen.title }), (0, import_jsx_runtime55.jsxs)(Container, { expand: true, flex: \"row\", center: \"both\", style: {\n    minHeight: \"250px\"\n  }, children: [status === \"signing\" && (0, import_jsx_runtime55.jsx)(Spinner, { size: \"xl\", color: \"accentText\" }), status === \"failed\" && (0, import_jsx_runtime55.jsxs)(Container, { children: [(0, import_jsx_runtime55.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime55.jsx)(Text, { size: \"lg\", center: true, color: \"danger\", children: locale.signingScreen.failedToSignIn }), (0, import_jsx_runtime55.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime55.jsxs)(Button, { fullWidth: true, variant: \"accent\", onClick: () => {\n    signIn();\n  }, style: {\n    gap: spacing.xs,\n    alignItems: \"center\",\n    padding: spacing.md\n  }, children: [(0, import_jsx_runtime55.jsx)(ReloadIcon, { width: iconSize.sm, height: iconSize.sm }), locale.signingScreen.tryAgain] }), (0, import_jsx_runtime55.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime55.jsx)(Button, { fullWidth: true, variant: \"secondary\", onClick: () => {\n    disconnect(wallet);\n  }, style: {\n    alignItems: \"center\",\n    padding: spacing.md\n  }, children: locale.instructionScreen.disconnectWallet })] })] })] });\n}\nvar pulseAnimation2 = keyframes`\n0% {\n  transform: scale(0.9);\n}\n100% {\n  opacity: 0;\n  transform: scale(1.4);\n}\n`;\nvar PulsatingContainer = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    position: \"relative\",\n    \"&::before\": {\n      content: '\"\"',\n      display: \"block\",\n      position: \"absolute\",\n      left: 0,\n      top: 0,\n      bottom: 0,\n      right: 0,\n      background: theme.colors.accentText,\n      animation: `${pulseAnimation2} 2s cubic-bezier(0.175, 0.885, 0.32, 1.1) infinite`,\n      zIndex: -1,\n      borderRadius: radius.xl\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/StartScreen.js\nvar import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/GlobalIcon.js\nvar import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);\nvar GlobeIcon = (props) => {\n  return (0, import_jsx_runtime56.jsx)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 129 131\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"presentation\", children: (0, import_jsx_runtime56.jsx)(\"path\", { d: \"M59.7178 0C62.7511 0 65.788 0 68.8212 0C71.4429 0.423181 74.1011 0.679982 76.6755 1.29848C103.785 7.78725 120.277 24.7723 126.755 51.5485C127.428 54.3335 127.712 57.2089 128.175 60.0446V69.8103C127.803 72.1722 127.472 74.5449 127.057 76.8995C122.582 102.298 103.177 122.722 77.9136 128.56C74.8003 129.28 71.6104 129.67 68.457 130.213H59.3537C57.3838 129.913 55.4065 129.663 53.4475 129.305C27.0442 124.491 6.91125 104.974 1.44197 78.8526C0.841148 75.9808 0.473373 73.0656 0 70.1684C0 66.9132 0 63.6579 0 60.4027C0.371416 58.0408 0.706418 55.6718 1.11425 53.3135C5.52026 28.0493 24.9905 7.50151 50.0902 1.70719C53.2618 0.97657 56.5062 0.560624 59.7178 0ZM96.8813 10.3119C96.8959 10.2865 96.9104 10.2576 96.9286 10.2323C96.8886 10.2504 96.8522 10.2648 96.8121 10.2829C96.8085 10.2287 96.8048 10.178 96.8012 10.1238C96.8303 10.1853 96.8558 10.2504 96.8849 10.3119H96.8813ZM25.1762 115.709C25.2089 115.716 25.2454 115.72 25.2781 115.727C25.249 115.749 25.2235 115.771 25.1944 115.792C25.2053 115.767 25.2162 115.742 25.2271 115.716C25.1252 115.525 25.0196 115.333 24.9176 115.141C22.7328 113.087 21.127 110.421 18.3305 109.014C18.2977 109.032 18.2613 109.05 18.2285 109.065C18.2758 109.058 18.3232 109.054 18.3705 109.047C18.4397 109.365 18.3997 109.795 18.5926 109.984C20.3587 111.687 22.1502 113.362 23.9745 115.004C24.1675 115.177 24.5972 115.083 24.9176 115.116C25.0014 115.311 25.0851 115.51 25.1725 115.706L25.1762 115.709ZM27.594 12.4567L27.2262 12.9197C27.1898 13.1439 27.1571 13.3682 27.1206 13.5924C26.8038 13.5924 26.4871 13.596 26.1703 13.5996C26.0683 13.813 25.9663 14.0264 25.8607 14.2362L25.7661 14.2652L25.8243 14.1856C25.9336 13.9686 26.0428 13.7479 26.1557 13.5309C26.4688 13.5418 26.7856 13.5526 27.0988 13.5671C27.1243 13.332 27.1498 13.0969 27.1753 12.8618C27.2954 12.7352 27.412 12.6122 27.5321 12.4856C27.543 12.511 27.554 12.5399 27.5649 12.5652C27.5758 12.529 27.5831 12.4893 27.594 12.4531V12.4567ZM106.589 111.926C106.738 111.868 106.891 111.806 107.041 111.749C107.616 111.354 108.286 111.043 108.756 110.548C110.281 108.924 111.771 107.26 113.205 105.553C113.919 104.703 114.483 103.726 115.113 102.808C113.981 103.448 112.849 104.084 111.716 104.725C111.669 104.753 111.632 104.811 111.6 104.862C110.088 107.166 108.577 109.474 107.07 111.778L106.556 111.958L106.625 112.06L106.589 111.926ZM79.6906 2.95141C79.6906 2.92971 79.6906 2.90801 79.6906 2.88631C79.6724 2.89716 79.6505 2.91163 79.6323 2.92248C79.8253 2.9478 80.0146 2.97311 80.2076 2.99843C80.0328 2.98397 79.8617 2.96588 79.6869 2.95141H79.6906ZM95.1662 8.90488C95.1116 8.90488 95.0533 8.89764 94.9987 8.90849C94.9732 8.91211 94.955 8.94828 94.9368 8.96998C95.0242 8.93381 95.1116 8.89764 95.199 8.86147C95.301 9.07125 95.3956 9.28827 95.5194 9.49082C95.5376 9.51975 95.6796 9.47273 95.7634 9.45827C95.5668 9.2738 95.3665 9.08934 95.1699 8.90126L95.1662 8.90488ZM86.7729 124.603C85.8772 124.921 84.9778 125.229 84.0893 125.565C83.94 125.623 83.8417 125.811 83.7215 125.941C83.8562 125.988 84.031 126.111 84.1184 126.068C85.0069 125.605 85.8808 125.117 86.7584 124.636C86.8021 124.621 86.8494 124.592 86.8895 124.596C86.9259 124.6 86.9623 124.643 86.9951 124.665C86.9186 124.643 86.8458 124.621 86.7693 124.603H86.7729ZM82.2431 4.35478L82.2941 4.31138V4.32223C82.5672 4.5935 82.793 5.00583 83.1207 5.11072C85.8189 5.99325 88.5317 6.82153 91.2445 7.6498C91.4193 7.70406 91.6341 7.64257 91.8271 7.63172C91.6596 7.46896 91.514 7.25917 91.3173 7.14705C88.4844 5.599 85.4912 4.56456 82.2395 4.35116L82.2431 4.35478ZM29.9609 10.9991C30.2995 11.0135 30.6928 11.1438 30.9732 11.0208C33.8389 9.75847 36.6937 8.46361 39.5376 7.15428C39.9054 6.98429 40.2331 6.70217 40.5244 6.41643C40.7319 6.21388 40.8412 5.91729 40.9941 5.66049C40.6664 5.68943 40.2913 5.62432 40.0219 5.76177C36.6573 7.49066 33.3109 9.2521 29.9609 11.0027C29.9864 11.0461 30.0119 11.0895 30.041 11.1293C30.0701 11.1655 30.1102 11.1944 30.1466 11.2233L29.9609 10.9991ZM8.93219 95.5918C8.89213 95.628 8.84844 95.6677 8.80838 95.7039C8.85208 95.6641 8.89942 95.6243 8.94311 95.5845C8.99773 96.0801 8.91398 96.6443 9.12882 97.0566C11.7397 102.034 14.7984 106.641 19.9509 109.43C19.9436 109.437 19.9363 109.445 19.9327 109.455C19.7579 108.913 19.6413 108.345 19.401 107.828C18.4943 105.875 17.6204 103.903 16.5899 102.015C16.1347 101.18 15.4283 100.417 14.6746 99.82C12.8102 98.3479 10.8512 96.9915 8.93219 95.5918ZM23.0533 112.295C23.097 112.248 23.1407 112.201 23.1844 112.15C23.1443 112.19 23.1006 112.23 23.0606 112.269C23.279 112.472 23.5449 112.646 23.7087 112.888C27.1206 117.861 32.1275 120.35 37.7861 121.818C38.1648 121.916 38.5763 121.887 38.9732 121.919C38.813 121.608 38.6709 121.283 38.4925 120.983C37.7861 119.789 37.1525 118.541 36.3259 117.434C35.8344 116.776 35.1206 116.125 34.3669 115.843C31.1917 114.657 27.9691 113.597 24.7501 112.53C24.2149 112.353 23.6177 112.367 23.0496 112.291L23.0533 112.295ZM69.8298 86.3252C73.0378 86.3252 75.4666 86.2927 77.8917 86.3397C78.9514 86.3614 79.4029 86.025 79.4284 84.9074C79.5049 81.4134 79.6432 77.9195 79.818 74.4291C79.8763 73.25 79.4757 72.9353 78.2777 72.8919C71.4903 72.6605 64.7065 72.353 57.9227 71.9986C56.8048 71.9407 56.2804 72.1107 56.204 73.3477C55.9855 76.8344 55.7015 80.3211 55.341 83.797C55.2135 85.0267 55.665 85.3595 56.8048 85.4282C61.4074 85.7067 66.0028 86.0539 69.8262 86.3216L69.8298 86.3252ZM69.9245 72.2192C72.2076 72.2192 74.9969 72.1505 77.7789 72.2481C79.2937 72.3024 79.9527 71.9371 79.869 70.2697C79.7015 66.9638 79.6796 63.6507 79.7088 60.3412C79.7197 58.8836 79.2536 58.4315 77.7315 58.3881C71.6177 58.2217 65.5076 57.9251 59.4011 57.5779C58.1994 57.5092 57.828 57.8274 57.7224 58.9776C57.3838 62.6307 56.9832 66.2838 56.528 69.9261C56.3897 71.0401 56.8776 71.2571 57.8171 71.3222C61.6842 71.5862 65.5513 71.8937 69.9281 72.2228L69.9245 72.2192ZM55.3956 74.3749C55.4247 74.0892 55.432 73.5394 55.5412 73.0149C55.7415 72.0564 55.2936 71.7852 54.4088 71.6333C47.8471 70.5048 41.2927 69.3401 34.742 68.1429C33.9481 67.9982 33.4748 68.0019 33.3655 68.9459C32.9249 72.6496 32.4115 76.3461 32.0401 80.0571C32 80.473 32.6118 81.2905 33.0269 81.3664C39.7488 82.6396 46.4852 83.8151 53.2181 85.0267C54.2267 85.2076 54.6091 84.8531 54.671 83.8115C54.853 80.7479 55.1334 77.688 55.3956 74.3749ZM54.143 71.2065C55.4757 71.3511 55.7634 70.7073 55.8726 69.5788C56.2222 65.9294 56.6264 62.2835 57.0888 58.6449C57.2272 57.5489 56.7429 57.3645 55.8253 57.2089C49.8644 56.1926 43.9108 55.1437 37.9718 54.0297C37.0178 53.8488 36.6464 54.0731 36.4461 54.9484C35.6122 58.5798 34.7638 62.2075 33.9008 65.8317C33.6823 66.754 33.8753 67.2966 34.9131 67.4955C41.3255 68.7144 47.7342 69.9659 54.1466 71.2101L54.143 71.2065ZM68.519 99.3606C71.5449 99.3606 73.97 99.3172 76.3915 99.3787C77.564 99.4077 78.1612 99.0894 78.2595 97.8198C78.5035 94.702 78.8203 91.5879 79.1808 88.4809C79.3119 87.3524 78.9514 87.0558 77.8262 87.0161C70.8093 86.7629 63.7925 86.4554 56.7793 86.0901C55.6286 86.0286 55.1334 86.2565 55.0897 87.4646C54.9805 90.5896 54.813 93.7146 54.5981 96.836C54.518 97.9753 54.8676 98.4094 56.0656 98.4781C60.417 98.7277 64.7611 99.0857 68.5153 99.3606H68.519ZM80.5244 79.623H80.4261C80.3278 81.3664 80.2659 83.1134 80.1202 84.8531C80.0365 85.8442 80.3023 86.318 81.3947 86.2095C87.7816 85.5621 94.1721 84.9616 100.555 84.2636C101.007 84.2129 101.728 83.4968 101.739 83.0772C101.826 79.3482 101.779 75.6155 101.772 71.8864C101.772 71.1486 101.488 70.852 100.654 70.9388C94.3287 71.5935 88.0001 72.2083 81.6678 72.8015C80.8339 72.8811 80.4989 73.1849 80.5171 74.0277C80.5572 75.894 80.5281 77.7603 80.5281 79.6267L80.5244 79.623ZM80.3788 65.1156C80.437 65.1156 80.4953 65.1156 80.5536 65.1156C80.5536 66.9819 80.5936 68.8518 80.5353 70.7182C80.5062 71.6911 80.7393 72.2011 81.8389 72.089C88.0474 71.4633 94.2559 70.852 100.468 70.2624C101.418 70.172 101.699 69.7271 101.579 68.8374C101.058 65.0794 100.559 61.3178 100.057 57.5598C99.9473 56.7424 99.5795 56.5217 98.7056 56.6158C93.0433 57.2234 87.3738 57.7768 81.7006 58.2868C80.7138 58.3772 80.3096 58.6557 80.3533 59.6938C80.4297 61.4986 80.3751 63.3071 80.3751 65.1119L80.3788 65.1156ZM54.1393 91.8881C54.1393 91.8881 54.1466 91.8881 54.1503 91.8881C54.2413 90.2677 54.2959 88.6401 54.4416 87.0233C54.518 86.1805 54.2304 85.8767 53.3892 85.7357C46.6527 84.5819 39.9199 83.4027 33.198 82.173C32.1675 81.9849 31.7342 82.173 31.7379 83.2581C31.7451 86.5639 31.6687 89.8734 31.7379 93.1793C31.7488 93.6386 32.3496 94.4054 32.7829 94.485C39.3774 95.7365 45.99 96.8939 52.599 98.0802C53.5385 98.2502 53.9026 97.8777 53.9136 96.93C53.9391 95.2482 54.0592 93.5663 54.1393 91.8844V91.8881ZM70.1758 44.2893C66.5199 44.018 63.8508 43.8878 61.2035 43.5912C60.0929 43.4682 59.7106 43.7395 59.5831 44.8391C59.1717 48.3656 58.7019 51.8884 58.1594 55.3969C57.9773 56.5724 58.4033 56.8653 59.4702 56.9087C65.6423 57.1619 71.8144 57.4404 77.9864 57.7406C79.2063 57.8021 79.5631 57.3211 79.4612 56.1492C79.1516 52.6118 78.8822 49.0709 78.6819 45.5263C78.62 44.4412 78.1102 44.264 77.1817 44.2784C74.5162 44.3182 71.8508 44.2929 70.1758 44.2929V44.2893ZM82.6983 99.3715C87.9782 98.7168 93.2582 98.0513 98.5417 97.4147C99.4084 97.3098 100.006 97.0747 100.14 96.0728C100.585 92.7995 101.091 89.5334 101.579 86.2637C101.728 85.2655 101.458 84.9182 100.319 85.0412C94.0665 85.714 87.8107 86.3397 81.544 86.8678C80.2695 86.9763 79.9163 87.4428 79.8471 88.593C79.7088 90.8717 79.5085 93.1504 79.2427 95.4182C78.7912 99.2919 78.762 99.2883 82.6983 99.3715ZM58.9495 44.0035C58.9714 43.4682 58.9714 43.4755 57.6423 43.2368C52.6427 42.3398 47.6396 41.4681 42.6509 40.5168C41.6823 40.3324 41.2308 40.553 40.9213 41.4789C39.7633 44.9584 38.5617 48.4234 37.3309 51.8776C37.0105 52.7782 37.1999 53.2159 38.1539 53.3822C44.1694 54.4311 50.1776 55.5162 56.204 56.5109C56.5499 56.5688 57.3146 56.019 57.3692 55.6754C57.9372 51.9318 58.4033 48.1739 58.9532 44.0035H58.9495ZM83.798 57.7225C88.5499 57.1619 93.3019 56.6122 98.0538 56.0371C98.8767 55.9358 99.8308 55.9539 99.4484 54.5903C98.4289 50.9372 97.4603 47.2696 96.488 43.6057C96.2732 42.7919 95.8071 42.6472 95.0097 42.734C90.2541 43.2476 85.4948 43.7504 80.7283 44.1518C79.6177 44.2459 79.2572 44.5497 79.3738 45.6637C79.6651 48.4777 79.8981 51.2989 80.0693 54.1237C80.2841 57.6647 80.2477 57.6683 83.798 57.7189V57.7225ZM32.6154 68.0344C32.437 67.9259 31.9673 67.5244 31.4283 67.3255C26.538 65.546 21.6222 63.8279 16.7392 62.0231C15.8835 61.7084 15.421 61.571 15.2535 62.6669C14.711 66.2404 14.092 69.7995 13.5895 73.3766C13.5239 73.8396 13.8443 74.7004 14.1939 74.8306C19.5175 76.8344 24.8667 78.7622 30.2376 80.643C30.467 80.7226 31.188 80.2162 31.2244 79.9233C31.7124 76.1617 32.1202 72.3856 32.6154 68.0308V68.0344ZM32.6919 66.8951C32.8485 66.5189 33.0851 66.1174 33.1907 65.687C34.0574 62.0629 34.8439 58.417 35.7797 54.8073C36.0565 53.7403 35.6705 53.5052 34.7893 53.1978C30.2813 51.6389 25.777 50.0547 21.3164 48.3692C20.3223 47.993 19.9181 48.116 19.594 49.0781C18.4324 52.554 17.249 56.0262 16.0364 59.4876C15.6759 60.5148 16.0328 61.0465 17.005 61.3901C21.9026 63.1226 26.7893 64.8768 31.6832 66.6202C31.909 66.6998 32.1493 66.7468 32.6955 66.8915L32.6919 66.8951ZM67.1207 110.645C69.8116 110.645 72.2404 110.598 74.6619 110.667C75.7324 110.696 76.1767 110.298 76.3405 109.282C76.7738 106.605 77.2363 103.936 77.7679 101.278C77.9828 100.207 77.5203 100.098 76.6282 100.062C69.7242 99.7874 62.8239 99.4836 55.9236 99.1364C54.9259 99.0857 54.5035 99.2774 54.5071 100.359C54.5144 102.949 54.467 105.538 54.3287 108.124C54.2595 109.383 54.7292 109.817 55.9527 109.886C59.7652 110.099 63.574 110.396 67.1207 110.642V110.645ZM53.615 104.106C53.6769 104.106 53.7351 104.106 53.797 104.106C53.797 102.844 53.7351 101.578 53.8153 100.319C53.8772 99.3642 53.6113 98.9483 52.5918 98.7783C46.0264 97.6679 39.472 96.5141 32.9249 95.306C31.8871 95.1143 31.7706 95.4471 31.8835 96.2935C32.2658 99.093 32.6518 101.892 32.9759 104.699C33.0924 105.712 33.6059 106.15 34.5672 106.32C40.4698 107.358 46.3651 108.407 52.2604 109.488C53.3637 109.691 53.655 109.257 53.6223 108.258C53.5786 106.877 53.6113 105.491 53.6113 104.106H53.615ZM30.9586 87.8552C30.9805 87.8552 31.0059 87.8552 31.0278 87.8552C31.0278 86.2927 30.9513 84.7229 31.0533 83.164C31.1225 82.0717 30.7583 81.6304 29.6951 81.2688C24.6627 79.5543 19.6596 77.7495 14.6746 75.9085C13.7351 75.5612 13.3309 75.5793 13.3673 76.6716C13.4766 80.0354 13.5166 83.4027 13.7169 86.7629C13.7497 87.3199 14.3359 88.1337 14.8566 88.329C19.8307 90.2026 24.8448 91.964 29.8444 93.7761C30.7474 94.1052 31.0096 93.8267 30.9768 92.908C30.9186 91.2262 30.9622 89.5407 30.9622 87.8552H30.9586ZM40.6009 40.2564C40.1785 40.0719 39.7524 39.8622 39.3118 39.703C35.554 38.343 31.7706 37.0518 28.0492 35.5978C27.0587 35.2108 26.6436 35.417 26.2103 36.2308C24.477 39.4752 22.7547 42.7268 20.9595 45.935C20.3769 46.9803 20.701 47.4396 21.7023 47.7941C26.152 49.3674 30.6054 50.9372 35.0369 52.5684C36.0783 52.9518 36.3915 52.5467 36.6901 51.6497C37.848 48.1594 39.0715 44.6944 40.2695 41.2185C40.3496 40.9906 40.4261 40.7628 40.6045 40.26L40.6009 40.2564ZM117.997 64.3632C117.018 60.4172 116.082 56.5688 115.062 52.742C115.004 52.5214 114.236 52.2791 113.897 52.3767C109.786 53.5776 105.69 54.8218 101.611 56.1275C101.233 56.2505 100.734 56.9124 100.774 57.2704C101.225 61.1478 101.753 65.0179 102.332 68.8772C102.383 69.2063 103.039 69.7633 103.257 69.6982C107.882 68.331 112.488 66.9023 117.083 65.4302C117.422 65.3217 117.63 64.8045 117.994 64.3632H117.997ZM81.0087 110.443C81.016 110.501 81.0269 110.555 81.0342 110.613C85.666 110.034 90.3014 109.484 94.9222 108.848C95.4903 108.768 96.3205 108.367 96.4807 107.918C97.5513 104.978 98.4762 101.983 99.4339 99.0025C99.6523 98.3262 99.4776 98.0296 98.651 98.1164C92.3187 98.7602 85.9828 99.3425 79.6541 100.015C79.2463 100.059 78.6601 100.641 78.5654 101.061C78.1539 102.88 77.8808 104.732 77.5859 106.576C77.3783 107.86 77.2181 109.155 77.036 110.443H81.0051H81.0087ZM102.518 77.131C102.518 77.131 102.529 77.131 102.533 77.131C102.533 78.9973 102.54 80.86 102.529 82.7264C102.525 83.3485 102.423 84.0827 103.414 83.7789C108.148 82.3249 112.878 80.8528 117.582 79.3156C117.946 79.1962 118.354 78.5126 118.351 78.0967C118.311 74.4291 118.172 70.7652 118.081 67.0976C118.059 66.2259 117.852 66.0053 116.89 66.3164C112.524 67.7306 108.133 69.0797 103.72 70.3456C102.682 70.6422 102.402 71.022 102.485 72.0745C102.616 73.7492 102.522 75.4419 102.522 77.1237L102.518 77.131ZM70.8895 43.5767C73.1871 43.5767 75.1243 43.537 77.0579 43.5912C78.1102 43.6201 78.4634 43.2512 78.3105 42.2168C77.8226 38.9471 77.3565 35.6774 76.9414 32.3968C76.8285 31.4962 76.4607 31.2069 75.554 31.1815C71.4429 31.0658 67.3319 30.9103 63.2245 30.6933C62.2559 30.6426 61.7861 30.8849 61.6368 31.8651C61.1562 35.0119 60.661 38.1586 60.0893 41.2945C59.8671 42.5134 60.3187 42.8968 61.4657 42.9583C64.7283 43.1391 67.9837 43.3814 70.8858 43.5731L70.8895 43.5767ZM58.3596 42.857C58.7056 42.3723 59.2372 41.9491 59.3319 41.4428C59.9181 38.2454 60.3587 35.0191 60.9559 31.8217C61.1489 30.7873 60.9122 30.4871 59.8781 30.3207C56.051 29.7058 52.2349 29.0078 48.4297 28.2771C47.5048 28.0999 46.9659 28.2771 46.5617 29.1524C45.1489 32.216 43.696 35.2614 42.2212 38.2996C41.7879 39.1894 41.7916 39.6958 42.9532 39.9092C47.9563 40.8351 52.9486 41.8153 58.356 42.857H58.3596ZM101.029 55.8743C105.457 54.3841 109.691 52.9808 113.894 51.4906C114.156 51.3965 114.414 50.5466 114.276 50.2102C112.779 46.6041 111.224 43.0197 109.611 39.4643C109.484 39.1858 108.745 38.9362 108.395 39.0375C104.863 40.0647 101.342 41.1462 97.8426 42.2819C97.5295 42.3832 97.118 43.027 97.1872 43.3091C98.1375 47.096 99.1535 50.8649 100.191 54.6301C100.29 54.9918 100.628 55.2884 101.025 55.8671L101.029 55.8743ZM82.5089 43.5731C86.4816 43.0993 90.4507 42.6183 94.4234 42.1625C95.4648 42.0432 95.9746 41.7611 95.4502 40.5783C94.0374 37.3846 92.7484 34.1329 91.2918 30.9573C91.0843 30.5016 90.1922 30.0603 89.6532 30.1001C86.0301 30.3713 82.4179 30.8235 78.7948 31.1056C77.6951 31.1888 77.4985 31.5432 77.666 32.5451C78.0993 35.1602 78.4379 37.7897 78.8094 40.4119C79.1055 42.5098 80.3375 43.5635 82.5053 43.5731H82.5089ZM118.245 81.8981C117.735 81.3881 119.017 79.8762 117.357 80.3283C112.692 81.6015 108.082 83.0772 103.479 84.5529C103.006 84.7048 102.442 85.345 102.361 85.8297C101.812 89.1537 101.397 92.4993 100.89 95.8305C100.745 96.7818 101.04 97.0675 101.946 96.7854C106.276 95.4399 110.624 94.1486 114.91 92.6838C115.583 92.4523 116.268 91.4866 116.446 90.7451C117.153 87.8226 117.662 84.8531 118.245 81.8981ZM32.1857 105.224C31.7925 101.784 31.4866 98.7313 31.0533 95.6967C30.9914 95.2699 30.3906 94.749 29.9281 94.579C24.9868 92.7778 20.0128 91.0706 15.0751 89.2622C14.0519 88.886 13.8844 89.1247 14.1102 90.0507C14.8494 93.0853 15.574 96.1271 16.3569 99.1545C16.4661 99.5704 16.8157 100.106 17.1834 100.243C21.9317 102.034 26.7019 103.77 31.4793 105.48C31.716 105.564 32.0911 105.26 32.1821 105.224H32.1857ZM65.8244 119.662C67.8854 119.662 69.9464 119.626 72.0037 119.681C72.9832 119.706 73.6023 119.449 73.8717 118.433C74.3815 116.516 74.9313 114.606 75.5358 112.714C75.8599 111.691 75.6341 111.376 74.5126 111.34C68.2786 111.134 62.0447 110.902 55.8143 110.551C54.4743 110.475 54.2704 110.924 54.3432 112.038C54.4634 113.839 54.5435 115.644 54.5472 117.449C54.5472 118.512 54.955 118.928 56.0292 118.99C59.2955 119.171 62.5544 119.435 65.8244 119.666V119.662ZM40.7174 39.2871C40.914 39.023 41.2672 38.6794 41.4639 38.2671C42.9495 35.171 44.3769 32.0496 45.8881 28.968C46.3068 28.1144 46.2558 27.778 45.2727 27.4525C42.3451 26.4831 39.4757 25.351 36.5481 24.3817C36.0783 24.2262 35.1971 24.3926 34.9131 24.7362C32.579 27.5755 30.3505 30.5052 28.0601 33.3842C27.361 34.2632 27.5977 34.737 28.5772 35.0842C32.3387 36.4116 36.0965 37.7571 39.858 39.0954C40.0292 39.1569 40.2112 39.1749 40.7137 39.2871H40.7174ZM53.757 114.577C53.6732 113.26 54.0774 111.492 53.3783 110.75C52.6209 109.947 50.833 110.103 49.493 109.839C49.3146 109.803 49.1361 109.781 48.9577 109.745C44.3259 108.877 39.6796 108.067 35.066 107.112C33.5658 106.801 33.391 107.199 33.828 108.468C34.4943 110.399 35.1243 112.342 35.7215 114.291C36.0201 115.271 36.6282 115.738 37.6368 115.923C41.6787 116.657 45.6987 117.532 49.7552 118.194C53.8881 118.867 53.9026 118.784 53.757 114.573V114.577ZM10.4215 40.8894C10.163 41.3017 9.90442 41.6128 9.75513 41.9672C8.40055 45.1863 7.09696 48.4234 5.71325 51.6316C5.2508 52.7023 5.49113 53.5305 6.34684 54.1816C8.84116 56.0732 11.3755 57.9215 13.888 59.7878C14.8603 60.5076 15.1297 60.0446 15.4392 59.0825C16.5644 55.5886 17.7369 52.1018 19.026 48.6658C19.4047 47.6566 19.0587 47.3709 18.3123 46.8537C15.8908 45.1682 13.5494 43.3634 11.1825 41.5983C10.9458 41.4211 10.7492 41.1968 10.4215 40.8894ZM97.2272 41.9564C100.996 40.6977 104.605 39.5041 108.188 38.2454C108.37 38.1803 108.534 37.3882 108.373 37.1458C106.229 33.8725 104.047 30.6245 101.804 27.4199C101.604 27.1306 100.861 26.9859 100.468 27.1016C97.8572 27.8503 95.2755 28.7112 92.6719 29.4816C91.9618 29.6914 91.6487 29.8433 92.0128 30.6824C93.4803 34.0425 94.8603 37.4424 96.3023 40.817C96.4589 41.1823 96.8157 41.4645 97.2272 41.96V41.9564ZM14.5872 61.3503C14.4961 61.2635 14.1102 60.8331 13.655 60.4931C11.0879 58.5942 8.4661 56.7604 5.94265 54.8001C5.22531 54.2394 4.90852 53.9718 4.71917 55.0677C4.11106 58.5653 3.46655 62.0592 2.93491 65.5677C2.85116 66.1247 3.10242 66.9927 3.51753 67.3255C6.24124 69.5065 9.04507 71.5899 11.8416 73.6804C12.4752 74.1543 12.7519 73.883 12.8575 73.1343C13.3855 69.3763 13.9536 65.6255 14.5872 61.3431V61.3503ZM26.1703 34.8817C25.868 34.661 25.584 34.4621 25.3073 34.2523C23.2353 32.7006 21.1197 31.2069 19.1206 29.5684C18.4288 29.0005 18.1411 29.1488 17.7369 29.7348C15.5885 32.8598 13.4511 35.9957 11.2808 39.1026C10.7346 39.8839 10.9641 40.477 11.6013 40.9653C13.8953 42.7195 16.2185 44.434 18.5198 46.1773C19.4447 46.8754 19.878 46.5933 20.3842 45.595C22.0446 42.3217 23.8289 39.1135 25.5694 35.8799C25.7406 35.5616 25.9372 35.2614 26.1666 34.878L26.1703 34.8817ZM77.6332 119.492C79.7488 119.308 81.8644 119.156 83.9764 118.935C91.5431 118.147 91.7106 118.02 95.0643 111.21C95.1189 111.101 95.1844 110.996 95.2208 110.884C95.3483 110.494 95.4648 110.099 95.585 109.709C95.1699 109.705 94.7511 109.662 94.3396 109.705C89.6387 110.182 84.9414 110.732 80.2331 111.137C76.6865 111.445 76.6828 111.362 75.7106 114.859C75.5649 115.38 75.4193 115.904 75.2627 116.422C74.6194 118.541 75.4096 119.565 77.6332 119.492ZM97.7625 108.812C102.398 107.17 106.669 105.665 110.926 104.131C111.17 104.045 111.396 103.733 111.509 103.477C112.834 100.446 114.141 97.4039 115.427 94.3584C115.529 94.1161 115.448 93.8014 115.452 93.5193C115.172 93.5772 114.884 93.6169 114.611 93.6965C110.267 94.995 105.919 96.279 101.59 97.6281C101.102 97.78 100.493 98.2177 100.341 98.6626C99.3246 101.621 98.4143 104.616 97.4967 107.607C97.4275 107.828 97.5986 108.121 97.7625 108.819V108.812ZM70.5399 30.5052C72.3205 30.5052 73.8353 30.4726 75.3501 30.516C76.3587 30.545 76.6173 30.1326 76.4061 29.2067C75.7834 26.447 75.2445 23.6692 74.5454 20.9312C74.4361 20.4971 73.6933 19.9618 73.2053 19.9257C70.5508 19.7195 67.8817 19.6869 65.2235 19.5206C64.3788 19.4663 64.0219 19.7448 63.869 20.5405C63.3592 23.199 62.8348 25.8574 62.2668 28.505C62.0228 29.6335 62.4379 30.0024 63.5485 30.0494C65.9664 30.1543 68.3842 30.3605 70.5363 30.5052H70.5399ZM60.4862 29.9011C60.8103 29.525 61.371 29.1633 61.4766 28.7003C62.1029 25.937 62.5981 23.1483 63.1917 20.3814C63.3665 19.5712 63.0897 19.3252 62.3287 19.2023C59.8162 18.7936 57.3219 18.28 54.8057 17.911C54.3323 17.8423 53.564 18.0846 53.32 18.4463C51.5176 21.0867 49.828 23.7994 48.0729 26.4723C47.534 27.2933 47.9636 27.4923 48.681 27.6297C52.4898 28.3567 56.295 29.0946 60.4862 29.9011ZM80.2841 30.3677C80.2877 30.4075 80.295 30.4473 80.2987 30.4835C83.2955 30.1182 86.2923 29.7348 89.2928 29.3984C90.2286 29.2935 90.4361 28.9607 89.93 28.1469C88.2186 25.3908 86.5727 22.5913 84.7848 19.8859C84.4898 19.4374 83.5904 19.148 82.9932 19.1806C80.7648 19.3035 78.5472 19.6508 76.3187 19.7846C75.2736 19.8461 75.1498 20.215 75.3647 21.112C75.9109 23.3871 76.366 25.6838 76.8831 27.9661C77.5167 30.762 76.7993 30.4509 79.9236 30.3822C80.0438 30.3822 80.1639 30.3713 80.2841 30.3677ZM12.5553 81.0915C12.5954 81.0915 12.6318 81.0915 12.6718 81.0915C12.6718 79.4639 12.6136 77.8363 12.6937 76.2123C12.741 75.2972 12.3805 74.8668 11.6377 74.364C8.98681 72.5809 6.42331 70.6712 3.8234 68.8084C3.53938 68.6059 3.25171 68.4033 2.96404 68.2008C2.86209 68.5914 2.65453 68.9857 2.67638 69.3691C2.85845 72.6749 3.05508 75.9772 3.31361 79.2794C3.35367 79.775 3.6122 80.4007 3.98362 80.7009C6.61266 82.8023 9.29268 84.8495 11.9763 86.8822C12.6172 87.3669 12.9413 87.1571 12.8794 86.3216C12.7447 84.5782 12.6573 82.8349 12.5517 81.0915H12.5553ZM28.7774 19.0395C28.457 19.2529 28.1293 19.4121 27.878 19.6508C25.1216 22.2622 22.3796 24.8953 19.6231 27.5031C18.9859 28.1035 19.0332 28.6642 19.6814 29.1488C21.6987 30.6679 23.716 32.1907 25.8025 33.6157C26.0829 33.8074 26.9604 33.6049 27.208 33.3011C29.5931 30.3496 31.8835 27.3259 34.2504 24.3564C34.7711 23.7053 34.6728 23.4594 34.0064 23C32.4188 21.9113 30.9222 20.6961 29.3892 19.5278C29.2035 19.3867 29.0287 19.2348 28.7811 19.0359L28.7774 19.0395ZM126.128 57.5272C125.076 53.9971 123.962 50.25 122.808 46.5173C122.786 46.4414 122.159 46.4016 121.977 46.5426C120.098 48.0364 118.223 49.5411 116.421 51.1217C116.071 51.4291 115.783 52.1308 115.874 52.5648C116.65 56.2758 117.502 59.9687 118.402 63.6543C118.471 63.9328 119.203 64.3488 119.381 64.2547C121.799 62.9454 123.995 61.354 125.499 58.9921C125.717 58.6485 125.83 58.2362 126.132 57.5309L126.128 57.5272ZM122.083 44.745C122.028 44.5388 122.017 44.4086 121.963 44.3074C120.091 40.8062 118.223 37.305 116.311 33.8255C116.253 33.7206 115.634 33.7604 115.43 33.9232C113.835 35.1963 112.259 36.4912 110.737 37.8475C110.449 38.1043 110.194 38.759 110.321 39.0664C111.825 42.6761 113.391 46.2605 115.001 49.8232C115.139 50.127 115.929 50.4959 116.057 50.3947C117.965 48.8575 119.822 47.2552 121.661 45.6312C121.905 45.4178 121.966 45.0018 122.087 44.745H122.083ZM17.4238 101.245C17.4529 101.668 17.3874 101.994 17.5075 102.225C18.8038 104.735 20.1002 107.246 21.4657 109.72C21.706 110.157 22.1939 110.573 22.6637 110.75C26.4434 112.193 30.2449 113.586 34.0465 114.964C34.3487 115.073 34.731 114.968 35.077 114.964C34.9932 114.624 34.924 114.277 34.8221 113.94C34.203 111.929 33.4966 109.944 32.9795 107.907C32.721 106.895 32.2404 106.475 31.2499 106.146C27.0041 104.743 22.8057 103.213 18.589 101.722C18.305 101.621 18.0282 101.491 17.4238 101.241V101.245ZM45.7096 14.9271C45.6878 14.9379 45.4402 14.9922 45.2763 15.1405C42.4288 17.6542 39.5849 20.1716 36.7593 22.7035C36.0492 23.34 36.6464 23.6294 37.1707 23.8175C40.0692 24.8628 42.9641 25.9081 45.8881 26.8738C46.2522 26.9931 46.9987 26.7653 47.2026 26.4578C49.0051 23.756 50.7383 21.0035 52.4534 18.2402C52.5918 18.0159 52.5153 17.3613 52.3842 17.3142C50.2395 16.504 48.0692 15.7553 45.7133 14.9271H45.7096ZM119.254 73.0873C119.214 73.0873 119.177 73.0909 119.137 73.0945C119.137 74.5376 119.174 75.9844 119.123 77.4276C119.093 78.3354 119.447 78.5995 120.135 78.0352C122.079 76.4402 124.024 74.8306 125.848 73.1017C126.354 72.6243 126.671 71.6984 126.664 70.9822C126.635 67.557 126.467 64.1317 126.329 60.7065C126.318 60.4461 126.132 60.1893 126.03 59.9325C125.808 60.1025 125.579 60.2689 125.36 60.4461C123.481 61.9435 121.653 63.5133 119.698 64.9058C118.951 65.4375 118.653 65.8896 118.747 66.7902C118.973 68.8844 119.09 70.9858 119.254 73.0873ZM91.0807 29.3948C94.5945 28.241 97.2891 27.3765 99.9582 26.4289C100.118 26.371 100.235 25.474 100.049 25.2787C97.4603 22.5949 94.8312 19.9474 92.1548 17.3504C91.8599 17.0647 91.1608 16.9706 90.7311 17.0828C89.158 17.4915 87.6287 18.0666 86.0592 18.5006C85.229 18.7285 85.1489 19.0106 85.5932 19.7231C87.3446 22.5262 89.0561 25.3547 90.742 28.194C90.9823 28.6027 91.0115 29.1344 91.0843 29.3948H91.0807ZM115.401 32.5053C115.139 32.093 114.931 31.6626 114.629 31.3081C112.452 28.7401 110.216 26.2191 108.086 23.6113C107.103 22.4105 106.487 22.4503 105.548 23.6836C104.914 24.5155 103.942 25.1376 103.024 25.6983C102.219 26.1902 102.092 26.5121 102.667 27.3367C104.801 30.3894 106.869 33.4891 108.898 36.6142C109.378 37.3556 109.775 37.7282 110.554 37.0844C111.938 35.9378 113.333 34.8021 114.684 33.6193C114.986 33.3553 115.139 32.9249 115.401 32.5089V32.5053ZM63.7197 125.876C64.5317 125.876 65.5003 125.869 66.4689 125.876C70.8021 125.916 70.762 125.902 72.5317 121.858C73.0633 120.639 72.8558 120.364 71.5267 120.339C67.2845 120.266 63.046 120.093 58.8075 119.905C54.0155 119.691 54.5472 118.44 55.1807 123.967C55.29 124.932 55.7306 125.316 56.6628 125.374C58.9605 125.515 61.2581 125.695 63.716 125.873L63.7197 125.876ZM110.263 105.679C109.87 105.679 109.575 105.614 109.32 105.69C105.438 106.819 101.56 107.944 97.6969 109.134C97.1981 109.289 96.6665 109.723 96.397 110.172C95.1444 112.291 93.9719 114.458 92.7848 116.617C92.6501 116.863 92.5882 117.149 92.4935 117.416C92.7848 117.416 93.0943 117.492 93.3601 117.409C96.6373 116.375 99.9145 115.337 103.174 114.248C103.661 114.085 104.157 113.723 104.477 113.322C106.269 111.061 108.006 108.757 109.761 106.464C109.906 106.276 110.023 106.063 110.267 105.679H110.263ZM37.3018 116.834C37.2909 116.935 37.1307 117.301 37.2508 117.492C38.2085 119.019 39.1807 120.541 40.2331 122.003C40.5207 122.4 41.0742 122.748 41.5622 122.842C45.5385 123.609 49.5258 124.328 53.5203 124.99C53.8007 125.037 54.4671 124.498 54.4561 124.256C54.3979 122.939 54.2486 121.616 53.9755 120.324C53.8954 119.945 53.3528 119.449 52.9559 119.384C47.8908 118.519 42.8111 117.72 37.3018 116.834ZM3.87074 82.8421C4.34411 84.5348 4.95221 86.3108 5.32363 88.1337C6.3869 93.3601 10.0319 96.3622 14.3905 98.7855C14.6746 98.9411 15.0278 98.97 15.3519 99.0568C15.3227 98.7711 15.3191 98.4781 15.2572 98.1996C14.5981 95.2626 13.9536 92.3257 13.2399 89.4032C13.1124 88.8824 12.7847 88.2892 12.3623 87.9818C9.78062 86.0974 7.14794 84.2817 4.52982 82.4515C4.36232 82.3321 4.14384 82.2851 3.9472 82.2055C3.929 82.3755 3.90715 82.5455 3.87074 82.8493V82.8421ZM44.7301 14.5147C44.6209 14.3267 44.5881 14.2001 44.508 14.135C43.361 13.256 42.2285 12.3554 41.0342 11.5416C40.8412 11.4078 40.3278 11.585 40.0474 11.755C36.752 13.7696 33.4748 15.8168 30.1903 17.8495C29.4839 18.2872 29.4729 18.7646 30.1138 19.2384C31.6104 20.3488 33.0888 21.4954 34.6582 22.4973C34.975 22.6998 35.8052 22.5045 36.1475 22.2043C38.8348 19.8714 41.4602 17.4698 44.1038 15.0862C44.3187 14.8945 44.5262 14.6956 44.7228 14.5111L44.7301 14.5147ZM75.1935 125.71C77.6551 125.406 80.2477 125.164 82.8075 124.733C83.7689 124.571 84.7848 124.129 85.5495 123.533C86.8239 122.538 87.9382 121.33 89.0816 120.176C89.3911 119.861 89.5622 119.413 89.7989 119.022C89.3255 119.033 88.8522 119.011 88.3824 119.055C84.4134 119.431 80.448 119.966 76.468 120.147C74.5563 120.234 73.442 120.755 72.9286 122.614C72.6337 123.681 72.0802 124.679 71.6396 125.71H75.1899H75.1935ZM126.474 75.4925C126.314 74.9464 126.223 74.6389 126.132 74.3315C125.903 74.5051 125.677 74.6823 125.448 74.8559C123.678 76.1978 121.897 77.5252 120.149 78.8924C119.712 79.236 119.133 79.6701 119.046 80.1439C118.394 83.6198 117.848 87.1173 117.273 90.6077C117.182 91.1538 117.164 91.6783 117.954 91.1972C120.557 89.6166 123.201 87.9384 124.177 84.9218C125.189 81.7968 125.753 78.5271 126.474 75.4961V75.4925ZM95.4248 13.7552C94.6783 14.4207 94.0338 15.1513 93.2436 15.6577C92.3442 16.2328 92.4716 16.58 93.1598 17.2347C95.3009 19.2746 97.4311 21.329 99.4594 23.4775C101.844 26.0057 102.026 26.06 104.619 23.633C104.881 23.3871 105.111 23.1013 105.369 22.8481C106.09 22.1464 106.036 21.5424 105.216 20.9348C102.212 18.7031 99.2263 16.4498 96.2295 14.2109C95.9928 14.0337 95.7124 13.9179 95.4248 13.7552ZM69.9099 19.1625C70.9696 19.1625 71.9382 19.1299 72.9068 19.1733C73.8426 19.2131 74.0865 18.8514 73.7989 17.9906C73.2126 16.2219 72.6992 14.4279 72.0693 12.6773C71.8653 12.1095 71.4393 11.245 71.0242 11.1872C69.4876 10.981 67.9108 11.0352 66.3487 11.0606C66.2176 11.0606 66.0501 11.5561 65.9773 11.8382C65.4821 13.7588 65.0196 15.6866 64.5135 17.6072C64.2841 18.4789 64.5972 18.8044 65.4712 18.8478C66.9823 18.9201 68.4898 19.0612 69.9099 19.1661V19.1625ZM62.7584 18.6633C63.0497 18.327 63.6032 17.9436 63.7816 17.4336C64.1967 16.2472 64.4261 14.9958 64.7392 13.7733C65.4639 10.9593 65.4712 10.9267 62.5508 10.3625C61.7898 10.2142 60.65 10.0406 60.2349 10.4421C58.3778 12.2397 56.7138 14.2398 54.9878 16.1677C54.467 16.75 54.6309 17.1298 55.3701 17.2708C57.686 17.7157 60.0055 18.1461 62.762 18.6633H62.7584ZM76.4134 19.1444C78.3906 18.9238 80.3678 18.6706 82.3487 18.4934C83.5431 18.3885 83.503 17.9544 82.8403 17.1949C81.6569 15.8349 80.3715 14.54 79.3483 13.0716C77.8444 10.9123 75.9254 10.3914 73.453 10.9267C72.5535 11.1221 72.3678 11.3137 72.681 12.1782C73.351 14.0373 73.9955 15.9145 74.4762 17.8315C74.7638 18.9853 75.3574 19.2891 76.4134 19.1408V19.1444ZM17.1725 23.7741C17.4311 24.8266 17.584 25.5861 17.8061 26.3276C18.1375 27.4308 18.5307 27.6297 19.4629 26.6604C21.5931 24.4432 23.7633 22.2441 26.1084 20.262C27.5467 19.0431 28.7192 18.034 27.4556 16.0772C27.3646 15.9362 27.35 15.7264 27.361 15.5492C27.4338 14.3447 27.0223 14.1567 26.1011 14.9271C23.5521 17.0538 20.9413 19.1082 18.4798 21.329C17.7952 21.9475 17.5476 23.0398 17.1725 23.7741ZM8.80838 35.2072C9.11425 36.2597 9.35458 37.2435 9.69323 38.1948C10.0027 39.0628 10.3414 39.193 10.9386 38.2779C12.6718 35.6087 14.3942 32.9177 16.3387 30.4039C17.4165 29.0114 18.2103 27.8684 17.005 26.1938C16.7174 25.7923 16.7647 25.1557 16.6482 24.6313C16.5863 24.3528 16.5025 24.0779 16.4261 23.7994C16.153 23.9766 15.7997 24.096 15.6177 24.3419C13.6441 26.9895 11.6377 29.619 9.77698 32.3426C9.23078 33.1419 9.12154 34.2306 8.80474 35.2072H8.80838ZM56.2877 8.43468C56.102 8.50701 55.8617 8.56488 55.6578 8.68786C52.8467 10.3553 50.0428 12.0263 47.239 13.7045C46.427 14.1928 46.802 14.5256 47.4284 14.7498C49.1361 15.3683 50.8403 16.0121 52.5772 16.5294C52.985 16.6523 53.7024 16.4751 53.9864 16.1677C55.7597 14.2688 57.4602 12.3048 59.1498 10.3336C59.2991 10.1563 59.3027 9.56316 59.219 9.52699C58.2759 9.12913 57.3 8.79999 56.2841 8.43829L56.2877 8.43468ZM84.8394 18.1714C86.5727 17.6434 88.1312 17.1659 89.6897 16.6885C90.5927 16.4136 90.7784 16.0447 89.8972 15.4479C87.4502 13.7877 84.9814 12.1565 82.5927 10.4168C81.3801 9.53422 80.2841 9.51975 78.9259 10.0623C77.9791 10.4421 77.9391 10.6048 78.5945 11.321C80.3824 13.2777 82.0902 15.3068 83.8453 17.2925C84.1366 17.6217 84.508 17.8857 84.8358 18.1714H84.8394ZM27.838 14.7064C28.1584 15.7662 28.3041 16.4787 28.6063 17.1153C28.701 17.3179 29.3273 17.5132 29.5166 17.3974C32.9723 15.3068 36.4133 13.1909 39.818 11.028C41.016 10.2648 39.5995 9.30997 39.8726 8.44914C39.4356 8.40212 38.9113 8.17787 38.5763 8.34064C35.4702 9.81272 32.3678 11.292 29.3382 12.9088C28.6609 13.2705 28.2713 14.1639 27.8343 14.71L27.838 14.7064ZM3.23714 47.9894C3.53573 48.9913 3.81976 50.0293 4.16568 51.0493C4.24579 51.2844 4.5371 51.4508 4.73009 51.6461C4.88303 51.411 5.07602 51.1904 5.17797 50.9336C6.20483 48.4234 7.09332 45.8518 8.26947 43.4176C9.22714 41.4355 10.3013 39.6054 8.65181 37.5003C8.44789 37.2399 8.47338 36.8095 8.3605 36.4659C8.28039 36.2163 8.1493 35.9848 8.04006 35.7425C7.858 35.9631 7.61038 36.1548 7.50843 36.4044C6.32135 39.3015 5.13064 42.1951 3.99818 45.1139C3.65226 46.0037 3.49932 46.9658 3.2335 47.9894H3.23714ZM122.837 89.1862C122.775 88.9837 122.727 88.8426 122.684 88.6979C122.534 88.7847 122.378 88.8607 122.24 88.9583C120.608 90.0941 118.977 91.2298 117.36 92.3836C117.076 92.5861 116.741 92.8248 116.617 93.125C115.368 96.185 114.159 99.263 112.947 102.337C112.885 102.493 112.892 102.674 112.87 102.844C113.074 102.818 113.307 102.844 113.478 102.753C113.854 102.558 114.192 102.305 114.549 102.081C117.404 100.283 118.82 97.3894 120.291 94.5573C121.205 92.7959 121.992 90.973 122.837 89.1826V89.1862ZM53.5421 6.52494C52.8102 6.72749 52.3915 6.81068 51.9946 6.95535C49.1034 8.01873 46.2012 9.05317 43.3391 10.1853C41.5476 10.8942 41.5585 11.1221 43.077 12.3012C45.3564 14.0698 45.3273 14.0301 47.7197 12.4893C49.7479 11.1835 51.8526 9.99719 53.9136 8.73488C54.3432 8.47084 54.7147 8.11277 55.1152 7.79448C54.5362 7.3279 53.9573 6.8577 53.5385 6.5177L53.5421 6.52494ZM102.107 115.854C101.364 115.951 101.098 115.959 100.85 116.027C98.0538 116.787 95.2536 117.532 92.4753 118.349C91.8781 118.527 91.27 118.888 90.8258 119.326C89.5804 120.549 88.4152 121.847 87.2281 123.127C87.0315 123.341 86.8749 123.59 86.7001 123.826C86.9769 123.811 87.2645 123.833 87.534 123.782C92.8576 122.744 97.3219 120.096 101.265 116.49C101.397 116.367 101.553 116.273 102.11 115.861L102.107 115.854ZM83.0806 7.8415C82.7238 8.14532 82.3305 8.47808 81.9336 8.81445C82.1885 9.09657 82.3997 9.43657 82.7056 9.64635C85.1344 11.3174 87.6141 12.9233 90.0174 14.6305C91.7907 15.8928 92.184 15.8964 93.7716 14.352C94.5108 13.6358 94.6273 13.1186 93.564 12.6303C90.3924 11.1618 87.239 9.66443 84.0747 8.18511C83.8053 8.05851 83.5103 7.98618 83.0806 7.83788V7.8415ZM95.5449 12.0118C95.8144 12.4856 95.971 13.1041 96.3715 13.408C99.4302 15.7481 102.536 18.0304 105.639 20.3163C105.85 20.4718 106.152 20.5007 106.411 20.5912C106.48 20.3091 106.691 19.9618 106.596 19.7557C106.039 18.544 105.704 16.9996 104.75 16.2472C102.351 14.3556 99.6596 12.8256 97.0816 11.1618C96.204 10.594 95.443 10.301 95.5486 12.0154L95.5449 12.0118ZM116.148 30.0639C115.947 29.2899 115.966 28.4363 115.554 27.9263C113.063 24.8411 110.482 21.8318 107.911 18.8116C107.82 18.7068 107.463 18.667 107.368 18.7502C107.103 18.9889 107.452 21.9584 107.732 22.2767C110.125 24.9966 112.51 27.7201 114.906 30.4401C115.135 30.7005 115.416 30.9211 115.674 31.1598C115.834 30.7909 115.995 30.4256 116.151 30.0639H116.148ZM62.4525 126.603C62.4525 126.567 62.4525 126.531 62.4525 126.495C60.7593 126.383 59.0661 126.238 57.3728 126.173C56.8376 126.151 56.2914 126.336 55.7524 126.426C56.0583 127.124 56.3023 127.858 56.7028 128.499C56.8339 128.708 57.3728 128.712 57.7297 128.73C60.3915 128.86 63.0606 129.117 65.7151 129.012C66.793 128.969 67.8562 128.162 68.8831 127.623C69.1161 127.5 69.1708 127.052 69.3055 126.752C69.0215 126.701 68.7374 126.611 68.4498 126.611C66.4507 126.6 64.4516 126.603 62.4525 126.603ZM0.666364 60.938C0.972236 62.1678 1.20892 63.2167 1.51115 64.2439C1.58034 64.4754 1.88257 64.6417 2.07556 64.837C2.14474 64.6092 2.23214 64.3849 2.27583 64.1535C2.77834 61.3756 3.0041 58.5147 3.85253 55.8454C4.51889 53.7584 4.02731 52.138 3.1097 50.4272C3.00774 50.2355 2.82567 50.0872 2.68002 49.9208C2.59627 50.1415 2.47246 50.3549 2.43241 50.5864C1.82795 54.0731 1.23805 57.5634 0.662723 60.938H0.666364ZM40.5826 8.26468C40.7793 9.6572 40.8812 10.4529 42.3159 9.8706C45.5676 8.55404 48.8849 7.40385 52.1584 6.14154C52.5044 6.00772 52.7301 5.57369 53.0105 5.2771C52.6355 5.09263 52.2131 4.68754 51.8963 4.75988C48.4734 5.5339 45.0578 6.34409 41.6678 7.24471C41.1762 7.37492 40.823 8.02596 40.5826 8.26468ZM54.2522 128.354C55.0752 128.484 55.5485 128.408 55.2281 127.352C54.9441 126.415 54.6236 125.858 53.4693 125.703C50.1776 125.261 46.9113 124.618 43.6341 124.071C43.2044 123.999 42.7602 124.032 42.3196 124.014C42.6473 124.346 42.9495 124.715 43.31 125.008C46.4925 127.627 50.5162 127.536 54.2522 128.35V128.354ZM122.928 41.8804C122.666 40.9906 122.516 40.0213 122.108 39.1713C120.885 36.6214 119.589 34.104 118.252 31.6083C117.928 31.0043 117.338 30.5413 116.872 30.0097C116.778 30.9428 116.661 31.8724 116.61 32.8055C116.599 33.0008 116.861 33.2034 116.978 33.4132C118.591 36.3067 120.197 39.2039 121.813 42.0938C122.006 42.4374 122.265 42.7412 122.491 43.0668C122.622 42.7051 122.753 42.347 122.924 41.8768L122.928 41.8804ZM95.0934 11.8961C95.1553 11.6899 95.2172 11.4837 95.2828 11.2776C94.7074 10.6555 94.2486 9.75124 93.5349 9.4655C90.5709 8.28276 87.534 7.27364 84.508 6.24643C84.1803 6.13431 83.7543 6.32239 83.3719 6.36941C83.6086 6.71302 83.7689 7.21215 84.0966 7.3713C87.4102 8.96998 90.742 10.5216 94.092 12.0444C94.3506 12.1601 94.7584 11.9539 95.0934 11.8961ZM71.0096 128.915C75.463 128.549 78.6091 127.808 81.1835 126.401C81.4348 126.263 81.6496 126.064 81.879 125.894C81.5695 125.855 81.2527 125.757 80.9468 125.779C77.8699 126.021 74.7893 126.26 71.716 126.56C71.2281 126.607 70.6892 126.857 70.3214 127.178C69.8444 127.594 69.5167 128.177 69.1234 128.687L71.006 128.915H71.0096ZM69.3565 10.3733C71.1698 10.4059 71.2281 10.3155 70.4452 8.62999C70.2449 8.19596 70.0483 7.75831 69.808 7.3496C69.3637 6.59366 68.8904 5.85581 68.4279 5.11072C68.0456 5.93176 67.5941 6.7311 67.2955 7.5847C66.3342 10.3155 66.356 10.3227 69.3565 10.3733ZM52.6318 2.81759C50.4725 3.17566 48.4188 3.39268 46.4343 3.88458C45.0615 4.22457 43.7761 4.92264 42.4689 5.50496C42.2613 5.599 42.1557 5.92453 42.0064 6.14154C42.2358 6.13431 42.4725 6.15963 42.6946 6.11261C45.9937 5.38199 49.2927 4.6586 52.5845 3.8882C52.9377 3.80501 53.229 3.4614 53.5494 3.24077C53.2254 3.09247 52.9049 2.94418 52.6318 2.81759ZM64.9286 10.1274C65.2782 9.80187 65.8025 9.52699 65.9846 9.10381C66.4361 8.0549 66.7383 6.9445 67.077 5.85219C67.1425 5.64602 67.0952 5.40731 67.0988 5.17944C66.8804 5.23731 66.6255 5.23731 66.4507 5.35667C65.5585 5.97878 64.6555 6.59366 63.8144 7.28088C63.0861 7.87767 62.4306 8.5685 61.7461 9.21593C62.711 9.49082 63.676 9.7657 64.925 10.1202L64.9286 10.1274ZM73.0815 10.5867C73.1799 10.4819 73.2818 10.377 73.3801 10.2721C73.6787 10.2504 73.9882 10.2612 74.2795 10.1997C74.7274 10.1057 75.1644 9.96464 75.605 9.84166C75.3246 9.4872 75.0988 9.06764 74.7529 8.79637C73.4784 7.7981 72.1712 6.83961 70.8567 5.88836C70.5799 5.68943 70.2377 5.5773 69.9281 5.42539C70.0228 5.79794 70.0702 6.18856 70.2231 6.53579C70.6091 7.41109 70.955 8.32255 71.4866 9.10742C71.8835 9.69337 72.5426 10.1021 73.0852 10.5904L73.0815 10.5867ZM126.824 54.6662C125.972 51.4074 125.072 47.9351 124.144 44.4665C124.042 44.0867 123.78 43.7467 123.59 43.3887C123.416 43.8263 123.201 44.2567 123.081 44.7088C123.026 44.915 123.139 45.1718 123.204 45.3961C124.162 48.6079 125.12 51.8197 126.092 55.0279C126.154 55.2305 126.358 55.3933 126.493 55.5705C126.565 55.3679 126.638 55.1654 126.82 54.6662H126.824ZM64.6446 5.11072C62.4889 5.92091 60.2386 6.75642 58.0028 7.6281C57.8972 7.66789 57.8863 8.23574 57.9008 8.23936C58.8621 8.43829 60.0565 9.04594 60.752 8.68786C62.2704 7.91022 63.5412 6.64791 64.9031 5.57007C65.0087 5.48688 65.0342 5.30603 65.0961 5.17221C64.9832 5.15774 64.8703 5.13965 64.6482 5.11072H64.6446ZM1.90442 71.749C1.94447 71.749 1.98088 71.749 2.02094 71.749C2.02094 70.4252 2.08648 69.0978 1.99545 67.7776C1.94811 67.094 1.65316 66.4177 1.42012 65.7558C1.35093 65.5604 1.11789 65.423 0.961312 65.2602C0.881203 65.4555 0.717342 65.6545 0.735549 65.8389C1.0305 69.3148 1.33637 72.7907 1.67137 76.2593C1.69322 76.5016 1.94811 76.7223 2.09012 76.9538C2.12654 76.7223 2.19936 76.4836 2.18844 76.2557C2.10469 74.7547 1.99909 73.25 1.90078 71.749H1.90442ZM77.3674 9.71869C77.7352 9.63911 77.9828 9.61741 78.2049 9.53061C78.6382 9.36061 79.0606 9.15806 79.4866 8.96636C79.1225 8.70233 78.7912 8.36957 78.387 8.18872C76.5736 7.38215 74.7384 6.61536 72.9068 5.84496C72.6992 5.75815 72.4625 5.73645 72.2404 5.68581C72.3424 5.85942 72.4006 6.08729 72.5463 6.20303C73.8644 7.25194 75.1899 8.29 76.5299 9.30636C76.7993 9.5089 77.1453 9.61379 77.3674 9.71869ZM42.6218 125.355C42.163 125.005 41.9372 124.889 41.7843 124.712C39.7379 122.31 36.5116 122.578 33.9663 121.312C33.879 121.268 33.7479 121.323 33.635 121.33C33.7151 121.456 33.7661 121.652 33.8826 121.706C36.4971 122.932 39.1152 124.144 41.737 125.345C41.8826 125.413 42.0902 125.352 42.6218 125.352V125.355ZM62.0046 4.78881C59.9108 5.19391 57.726 5.60624 55.5485 6.05112C55.3082 6.09814 55.1079 6.32962 54.8894 6.4743C55.046 6.6443 55.1662 6.89025 55.3628 6.96982C55.7852 7.14705 56.3132 7.45087 56.6737 7.33151C58.549 6.69855 60.3879 5.94985 62.2304 5.23008C62.3833 5.16859 62.4925 4.99859 62.62 4.88285C62.4489 4.85753 62.2777 4.83222 62.0046 4.79243V4.78881ZM75.3319 5.50135C75.026 5.55198 74.9131 5.57007 74.7966 5.59177C74.8986 5.7039 74.9787 5.86304 75.1061 5.92091C76.8503 6.72749 78.5872 7.55215 80.3606 8.29C80.6701 8.42021 81.1653 8.23936 81.5185 8.0766C81.635 8.02235 81.6314 7.35321 81.5695 7.33513C79.443 6.68047 77.3055 6.0692 75.3319 5.50135ZM54.4743 5.47603C56.5936 5.06732 58.4871 4.70562 60.3842 4.3367C60.4971 4.315 60.5991 4.25351 60.7083 4.2101C60.5881 4.15223 60.4643 4.03649 60.3478 4.04011C58.4179 4.145 56.488 4.23904 54.5654 4.40542C54.3178 4.42712 54.0993 4.81775 53.8699 5.03838C54.1211 5.21923 54.3687 5.40007 54.478 5.47603H54.4743ZM77.0287 4.76711C76.854 4.80328 76.5918 4.85392 76.3333 4.90817C76.5991 5.03838 76.854 5.21561 77.138 5.29518C78.5363 5.69666 79.9345 6.09452 81.3474 6.44175C81.686 6.52494 82.0756 6.40196 82.4434 6.37664C82.1667 6.10176 81.9263 5.65326 81.6023 5.58454C80.1239 5.26263 78.62 5.042 77.0324 4.77073L77.0287 4.76711ZM69.4293 1.27316C68.4789 1.19359 67.8271 1.10316 67.1717 1.09955C66.9459 1.09955 66.7201 1.30933 66.4907 1.42507C67.0697 1.89889 67.6487 2.3727 68.224 2.85014C68.5408 2.43781 68.854 2.02548 69.4256 1.27316H69.4293ZM77.2581 3.55544C77.2545 3.58799 77.2509 3.62055 77.2472 3.6531C76.8867 3.6531 76.5226 3.64225 76.1621 3.65671C75.9254 3.66756 75.6887 3.72182 75.452 3.75437C75.6705 3.82309 75.8817 3.92075 76.1038 3.9533C77.3565 4.13777 78.6091 4.31499 79.8653 4.47052C80.0583 4.49584 80.2659 4.39818 80.4662 4.3584C80.2914 4.21372 80.1312 3.98224 79.9345 3.94607C79.0497 3.78331 78.1539 3.67842 77.2618 3.55182L77.2581 3.55544ZM72.7575 1.71804C72.0073 1.59145 71.4794 1.38167 71.006 1.46124C70.5362 1.54081 70.1066 1.89889 69.6878 2.17739C69.5859 2.24611 69.6041 2.48845 69.564 2.64759C70.0192 2.59695 70.4743 2.57525 70.9222 2.48845C71.3337 2.40887 71.7379 2.27866 72.1384 2.14122C72.2768 2.0942 72.3897 1.97123 72.7575 1.71081V1.71804ZM55.5631 3.55906C57.067 3.45778 58.3269 3.37821 59.5904 3.28055C59.7579 3.26609 59.9181 3.16843 60.082 3.10694C59.9327 3.04907 59.7798 2.94418 59.6305 2.94056C58.3669 2.89716 57.1034 2.84291 55.8398 2.86822C55.5376 2.87546 55.239 3.17205 54.9368 3.33481C55.2172 3.43608 55.4975 3.53736 55.5667 3.56267L55.5631 3.55906ZM63.5267 1.05976C63.29 1.12486 63.0169 1.20082 62.7474 1.27678C62.9841 1.43592 63.2026 1.63485 63.4575 1.74698C63.7889 1.89165 64.1421 2.00739 64.4953 2.06165C64.965 2.13399 65.4457 2.13399 65.919 2.16654C65.4966 1.84825 65.1034 1.46847 64.6373 1.22614C64.3351 1.07061 63.9309 1.1104 63.5267 1.05614V1.05976ZM59.9036 1.57336C59.889 1.61677 59.8781 1.65655 59.8635 1.69996C59.7433 1.69272 59.6195 1.65655 59.5067 1.68187C59.1644 1.75421 58.8294 1.85187 58.4871 1.93867C58.793 2.0291 59.0952 2.13399 59.4047 2.20633C59.5758 2.24611 59.7615 2.23164 59.94 2.2425C60.7629 2.2859 61.5859 2.3293 62.4052 2.3727C61.5713 2.10867 60.7338 1.84102 59.8999 1.57698L59.9036 1.57336ZM54.3214 2.25696C54.7183 2.10867 55.2354 1.91335 55.7561 1.72166C55.5594 1.66017 55.3519 1.51911 55.1698 1.54805C54.4161 1.65655 53.6696 1.8157 52.9195 1.95676C53.3237 2.04356 53.7279 2.13037 54.3214 2.26058V2.25696ZM75.2008 2.97311C75.452 2.92248 75.9946 2.81397 76.5372 2.70546C75.9291 2.60419 75.3246 2.48121 74.7165 2.40887C74.4871 2.37994 74.2395 2.43419 74.0137 2.4993C73.8062 2.55717 73.6168 2.67291 73.4165 2.76333C73.6095 2.83205 73.7989 2.94056 73.9992 2.96588C74.2905 3.00205 74.5927 2.97311 75.2008 2.97311ZM127.064 58.5436C127.017 58.4496 126.966 58.3555 126.919 58.2579C126.875 58.3447 126.78 58.4459 126.795 58.5219C126.82 58.6413 126.919 58.7425 126.984 58.851C127.01 58.7498 127.035 58.6485 127.064 58.5436Z\", fill: \"currentColor\" }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/StartScreen.js\nfunction StartScreen(props) {\n  const WelcomeScreen = props.welcomeScreen;\n  if (WelcomeScreen) {\n    if (typeof WelcomeScreen === \"function\") {\n      return (0, import_jsx_runtime57.jsx)(WelcomeScreen, {});\n    }\n  }\n  const title = (typeof WelcomeScreen === \"object\" ? WelcomeScreen == null ? void 0 : WelcomeScreen.title : void 0) || props.connectLocale.welcomeScreen.defaultTitle;\n  const subtitle = (typeof WelcomeScreen === \"object\" ? WelcomeScreen == null ? void 0 : WelcomeScreen.subtitle : void 0) || props.connectLocale.welcomeScreen.defaultSubtitle;\n  const img = typeof WelcomeScreen === \"object\" ? WelcomeScreen == null ? void 0 : WelcomeScreen.img : void 0;\n  const showTOS = props.meta.termsOfServiceUrl || props.meta.privacyPolicyUrl;\n  return (0, import_jsx_runtime57.jsxs)(Container, { fullHeight: true, animate: \"fadein\", flex: \"column\", children: [(0, import_jsx_runtime57.jsxs)(Container, { expand: true, flex: \"column\", center: \"both\", style: {\n    minHeight: \"300px\"\n  }, p: \"lg\", children: [(0, import_jsx_runtime57.jsx)(Container, { flex: \"row\", center: \"x\", children: img ? (0, import_jsx_runtime57.jsx)(Img, { src: img.src, width: img.width ? String(img.width) : void 0, height: img.height ? String(img.height) : void 0, client: props.client }) : (0, import_jsx_runtime57.jsx)(GlobalContainer, { children: (0, import_jsx_runtime57.jsx)(GlobeIcon, { size: \"150\" }) }) }), (0, import_jsx_runtime57.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime57.jsx)(Text, { center: true, color: \"primaryText\", weight: 600, multiline: true, children: title }), (0, import_jsx_runtime57.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime57.jsx)(Text, { color: \"secondaryText\", multiline: true, style: {\n    textAlign: \"center\"\n  }, children: subtitle }), (0, import_jsx_runtime57.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime57.jsx)(Link, { target: \"_blank\", center: true, href: \"https://blog.thirdweb.com/web3-wallet/\", children: props.connectLocale.newToWallets })] }), (0, import_jsx_runtime57.jsx)(Container, { py: \"lg\", flex: \"column\", gap: \"lg\", children: (0, import_jsx_runtime57.jsxs)(\"div\", { children: [showTOS && (0, import_jsx_runtime57.jsx)(TOS, { termsOfServiceUrl: props.meta.termsOfServiceUrl, privacyPolicyUrl: props.meta.privacyPolicyUrl, locale: props.connectLocale.agreement }), props.meta.showThirdwebBranding !== false && (0, import_jsx_runtime57.jsx)(Container, { style: {\n    paddingTop: spacing.xl\n  }, children: (0, import_jsx_runtime57.jsx)(PoweredByThirdweb, {}) })] }) })] });\n}\nvar floatingAnimation = keyframes`\n  from {\n    transform: translateY(4px);\n  }\n  to {\n    transform: translateY(-4px);\n  }\n`;\nvar GlobalContainer = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    color: theme.colors.accentText,\n    filter: `drop-shadow(0px 6px 10px ${theme.colors.accentText})`,\n    animation: `${floatingAnimation} 2s ease infinite alternate`\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModalSkeleton.js\nvar import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);\nfunction ConnectModalWideLayout(props) {\n  return (0, import_jsx_runtime58.jsxs)(\"div\", { style: {\n    height: \"100%\",\n    display: \"grid\",\n    gridTemplateColumns: \"300px 1fr\"\n  }, children: [(0, import_jsx_runtime58.jsxs)(LeftContainer, { children: [\" \", props.left, \" \"] }), (0, import_jsx_runtime58.jsx)(Container, { flex: \"column\", scrollY: true, relative: true, children: props.right })] });\n}\nfunction ConnectModalCompactLayout(props) {\n  return (0, import_jsx_runtime58.jsx)(Container, { flex: \"column\", scrollY: true, relative: true, style: {\n    maxHeight: compactModalMaxHeight\n  }, children: props.children });\n}\nvar LeftContainer = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    display: \"flex\",\n    flexDirection: \"column\",\n    overflowY: \"auto\",\n    ...noScrollBar,\n    position: \"relative\",\n    borderRight: `1px solid ${theme.colors.separatorLine}`\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModalContent.js\nvar AllWalletsUI = (0, import_react38.lazy)(() => import(\"./AllWalletsUI-27PR6NO2.js\"));\nvar ConnectModalContent = (props) => {\n  const { setModalVisibility, onClose, shouldSetActive } = props;\n  const { screen, setScreen, initialScreen } = props.screenSetup;\n  const setActiveWallet = useSetActiveWallet();\n  const setSelectionData = useSetSelectionData();\n  const activeWallet = useActiveWallet();\n  const activeAccount = useActiveAccount();\n  const siweAuth = useSiweAuth(activeWallet, activeAccount, props.auth);\n  const showSignatureScreen = siweAuth.requiresAuth && !siweAuth.isLoggedIn;\n  const connectionManager = useConnectionManager();\n  const handleConnected = (0, import_react38.useCallback)((wallet) => {\n    if (shouldSetActive) {\n      setActiveWallet(wallet);\n    } else {\n      connectionManager.addConnectedWallet(wallet);\n    }\n    if (props.onConnect) {\n      props.onConnect(wallet);\n    }\n    onModalUnmount(() => {\n      setSelectionData({});\n      setModalVisibility(true);\n    });\n    if (showSignatureScreen) {\n      setScreen(reservedScreens.signIn);\n    } else {\n      setScreen(initialScreen);\n      onClose == null ? void 0 : onClose();\n    }\n  }, [\n    setModalVisibility,\n    onClose,\n    props.onConnect,\n    setActiveWallet,\n    showSignatureScreen,\n    setScreen,\n    setSelectionData,\n    shouldSetActive,\n    initialScreen,\n    connectionManager\n  ]);\n  const handleBack = (0, import_react38.useCallback)(() => {\n    setSelectionData({});\n    setScreen(initialScreen);\n  }, [setScreen, initialScreen, setSelectionData]);\n  const walletList = (0, import_jsx_runtime59.jsx)(WalletSelector, { title: props.meta.title || props.connectLocale.defaultModalTitle, wallets: props.wallets, selectWallet: (newWallet) => {\n    if (newWallet.onConnectRequested) {\n      newWallet.onConnectRequested().then(() => setScreen(newWallet)).catch(console.error);\n    } else {\n      setScreen(newWallet);\n    }\n  }, onShowAll: () => {\n    setScreen(reservedScreens.showAll);\n  }, done: handleConnected, goBack: props.wallets.length > 1 ? handleBack : void 0, setModalVisibility, client: props.client, connectLocale: props.connectLocale, hideHeader: props.hideHeader, recommendedWallets: props.recommendedWallets, accountAbstraction: props.accountAbstraction, chain: props.chain, showAllWallets: props.showAllWallets, chains: props.chains, walletConnect: props.walletConnect, meta: props.meta, size: props.size, modalHeader: props.modalHeader, walletIdsToHide: props.walletIdsToHide });\n  const showAll = (0, import_jsx_runtime59.jsx)(import_react38.Suspense, { fallback: (0, import_jsx_runtime59.jsx)(LoadingScreen, {}), children: (0, import_jsx_runtime59.jsx)(AllWalletsUI, { onBack: handleBack, onSelect: setScreen, client: props.client, connectLocale: props.connectLocale, recommendedWallets: props.recommendedWallets, specifiedWallets: props.wallets, size: props.size }) });\n  const getStarted = (0, import_jsx_runtime59.jsx)(StartScreen, { client: props.client, connectLocale: props.connectLocale, meta: props.meta, welcomeScreen: props.welcomeScreen });\n  const goBack = props.wallets.length > 1 ? handleBack : void 0;\n  const getWalletUI = (wallet) => {\n    if (props.accountAbstraction) {\n      return (0, import_jsx_runtime59.jsx)(SmartConnectUI, { accountAbstraction: props.accountAbstraction, done: (smartWallet2) => {\n        handleConnected(smartWallet2);\n      }, personalWallet: wallet, onBack: goBack, setModalVisibility: props.setModalVisibility, meta: props.meta, size: props.size, chain: props.chain, chains: props.chains, client: props.client, walletConnect: props.walletConnect, connectLocale: props.connectLocale }, wallet.id);\n    }\n    return (0, import_jsx_runtime59.jsx)(AnyWalletConnectUI, { wallet, onBack: goBack, done: () => {\n      handleConnected(wallet);\n    }, setModalVisibility: props.setModalVisibility, chain: props.chain, chains: props.chains, client: props.client, meta: props.meta, size: props.size, walletConnect: props.walletConnect, connectLocale: props.connectLocale }, wallet.id);\n  };\n  const signatureScreen = (0, import_jsx_runtime59.jsx)(SignatureScreen, { onDone: onClose, modalSize: props.size, termsOfServiceUrl: props.meta.termsOfServiceUrl, privacyPolicyUrl: props.meta.privacyPolicyUrl, auth: props.auth, client: props.client, connectLocale: props.connectLocale });\n  return (0, import_jsx_runtime59.jsx)(ScreenSetupContext.Provider, { value: props.screenSetup, children: props.size === \"wide\" ? (0, import_jsx_runtime59.jsx)(ConnectModalWideLayout, { left: walletList, right: (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, { children: [screen === reservedScreens.signIn && signatureScreen, screen === reservedScreens.main && getStarted, screen === reservedScreens.getStarted && getStarted, screen === reservedScreens.showAll && showAll, typeof screen !== \"string\" && getWalletUI(screen)] }) }) : (0, import_jsx_runtime59.jsxs)(ConnectModalCompactLayout, { children: [screen === reservedScreens.signIn && signatureScreen, screen === reservedScreens.main && walletList, screen === reservedScreens.getStarted && getStarted, screen === reservedScreens.showAll && showAll, typeof screen !== \"string\" && getWalletUI(screen)] }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js\nfunction WalletSwitcherConnectionScreen(props) {\n  const connectedWallets = useConnectedWallets();\n  const wallets = props.wallets || getDefaultWallets({\n    appMetadata: props.appMetadata,\n    chains: props.chains\n  }).filter((w) => w.id !== \"inApp\");\n  const screenSetup = useSetupScreen({\n    size: \"compact\",\n    welcomeScreen: void 0,\n    wallets\n  });\n  return (0, import_jsx_runtime60.jsx)(ConnectModalContent, { accountAbstraction: props.accountAbstraction, auth: void 0, chain: props.chain, chains: props.chains, client: props.client, connectLocale: props.connectLocale, hideHeader: props.isEmbed, isOpen: true, meta: {\n    showThirdwebBranding: false\n  }, onClose: () => {\n  }, onConnect: (w) => {\n    props.onSelect(w);\n    props.onBack();\n  }, recommendedWallets: props.recommendedWallets, screenSetup, welcomeScreen: void 0, wallets, setModalVisibility: () => {\n  }, shouldSetActive: false, showAllWallets: props.showAllWallets, size: \"compact\", walletConnect: props.walletConnect, modalHeader: {\n    title: \"Connect\",\n    onBack: props.onBack\n  }, walletIdsToHide: connectedWallets.map((x) => x.id) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/formatTokenBalance.js\nfunction formatTokenBalance(balanceData, showSymbol = true, decimals2 = 5) {\n  return formatNumber(Number(balanceData.displayValue), decimals2) + (showSymbol ? ` ${balanceData.symbol}` : \"\");\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Details/WalletManagerScreen.js\nfunction WalletManagerScreen(props) {\n  var _a;\n  const [screen, setScreen] = (0, import_react39.useState)(\"wallets\");\n  const connectedWallets = useConnectedWallets();\n  const setActive = useSetActiveWallet();\n  const hideConnectButton = !props.showAllWallets && ((_a = props.wallets) == null ? void 0 : _a.every((w) => connectedWallets.includes(w)));\n  if (screen === \"connect\") {\n    return (0, import_jsx_runtime61.jsx)(WalletSwitcherConnectionScreen, { ...props, isEmbed: false, onSelect: (w) => {\n      setActive(w);\n      props.onBack();\n    } });\n  }\n  return (0, import_jsx_runtime61.jsxs)(Container, { children: [(0, import_jsx_runtime61.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime61.jsx)(ModalHeader, { title: \"Wallets\", onBack: props.onBack }) }), (0, import_jsx_runtime61.jsx)(Line, {}), (0, import_jsx_runtime61.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime61.jsx)(Container, { px: \"md\", style: {\n    minHeight: \"150px\"\n  }, children: (0, import_jsx_runtime61.jsx)(Container, { flex: \"column\", gap: \"xs\", children: connectedWallets.filter((w) => {\n    var _a2;\n    return !((_a2 = props.hiddenWallets) == null ? void 0 : _a2.includes(w.id));\n  }).map((w) => {\n    return (0, import_jsx_runtime61.jsx)(WalletManangerButton, {\n      client: props.client,\n      // address={address || \"\"}\n      onClick: () => {\n        setActive(w);\n        props.onBack();\n      },\n      chain: props.activeChain,\n      wallet: w\n    }, w.id);\n  }) }) }), (0, import_jsx_runtime61.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime61.jsx)(Container, { p: \"lg\", children: !hideConnectButton && (0, import_jsx_runtime61.jsxs)(Button, { variant: \"accent\", fullWidth: true, onClick: () => {\n    setScreen(\"connect\");\n  }, gap: \"xs\", children: [(0, import_jsx_runtime61.jsx)(PlusIcon, { width: iconSize.sm, height: iconSize.sm }), \"Connect Wallet\"] }) })] });\n}\nfunction WalletManangerButton(props) {\n  var _a;\n  const theme = useCustomTheme();\n  const activeWallet = useActiveWallet();\n  const { disconnect } = useDisconnect();\n  const walletId = props.wallet.id;\n  const address = (_a = props.wallet.getAccount()) == null ? void 0 : _a.address;\n  const balanceQuery = useWalletBalance({\n    address,\n    chain: props.chain,\n    client: props.client\n  });\n  return (0, import_jsx_runtime61.jsxs)(\"div\", { style: {\n    position: \"relative\"\n  }, children: [(0, import_jsx_runtime61.jsx)(WalletButtonEl, { onClick: props.onClick, style: {\n    justifyContent: \"space-between\"\n  }, children: (0, import_jsx_runtime61.jsxs)(Container, { flex: \"row\", gap: \"md\", center: \"y\", children: [(0, import_jsx_runtime61.jsx)(WalletImage, { client: props.client, id: walletId, size: iconSize.lg }), (0, import_jsx_runtime61.jsxs)(Container, { flex: \"column\", gap: \"4xs\", children: [(0, import_jsx_runtime61.jsx)(Text, { color: \"primaryText\", children: shortenAddress(address || \"\") }), balanceQuery.data ? (0, import_jsx_runtime61.jsx)(Text, { size: \"xs\", color: \"secondaryText\", weight: 400, children: formatTokenBalance(balanceQuery.data) }) : (0, import_jsx_runtime61.jsx)(Skeleton, { width: \"100px\", height: fontSize.sm })] })] }) }), (0, import_jsx_runtime61.jsx)(\"div\", { style: {\n    position: \"absolute\",\n    zIndex: 1,\n    right: spacing.xxs,\n    top: \"50%\",\n    transform: \"translateY(-50%)\"\n  }, children: (activeWallet == null ? void 0 : activeWallet.id) === props.wallet.id ? (0, import_jsx_runtime61.jsx)(ToolTip, { tip: \"Active Wallet\", children: (0, import_jsx_runtime61.jsx)(IconButton, { children: (0, import_jsx_runtime61.jsx)(CheckIcon, { width: iconSize.md, height: iconSize.md }) }) }) : (0, import_jsx_runtime61.jsx)(ToolTip, { tip: \"Disconnect\", children: (0, import_jsx_runtime61.jsx)(IconButton, { onClick: () => {\n    disconnect(props.wallet);\n  }, children: (0, import_jsx_runtime61.jsx)(MinusIcon, { width: iconSize.md, height: iconSize.md, style: {\n    color: theme.colors.secondaryText\n  } }) }) }) })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/LinkProfileScreen.js\nvar import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1);\nvar import_react40 = __toESM(require_react(), 1);\nvar InAppWalletConnectUI = (0, import_react40.lazy)(() => import(\"./InAppWalletConnectUI-IYEPIHHJ.js\"));\nfunction LinkProfileScreen(props) {\n  const activeWallet = useAdminWallet();\n  const chain = useActiveWalletChain();\n  const queryClient = useQueryClient();\n  if (!activeWallet) {\n    return (0, import_jsx_runtime62.jsx)(LoadingScreen, {});\n  }\n  if (activeWallet.id === \"inApp\") {\n    return (0, import_jsx_runtime62.jsx)(import_react40.Suspense, { fallback: (0, import_jsx_runtime62.jsx)(LoadingScreen, {}), children: (0, import_jsx_runtime62.jsx)(InAppWalletConnectUI, { walletConnect: props.walletConnect, wallet: activeWallet, done: () => {\n      queryClient.invalidateQueries({ queryKey: [\"profiles\"] });\n      props.onBack();\n    }, connectLocale: props.locale, client: props.client, size: \"compact\", chain, meta: {\n      title: props.locale.manageWallet.linkProfile,\n      showThirdwebBranding: false\n    }, isLinking: true, goBack: props.onBack }) });\n  }\n  if (isEcosystemWallet(activeWallet)) {\n    return (0, import_jsx_runtime62.jsx)(import_react40.Suspense, { fallback: (0, import_jsx_runtime62.jsx)(LoadingScreen, {}), children: (0, import_jsx_runtime62.jsx)(EcosystemWalletConnectUI_default, { wallet: activeWallet, done: () => {\n      queryClient.invalidateQueries({ queryKey: [\"profiles\"] });\n      props.onBack();\n    }, connectLocale: props.locale, client: props.client, size: \"compact\", chain, meta: {\n      title: props.locale.manageWallet.linkProfile,\n      showThirdwebBranding: false\n    }, walletConnect: props.walletConnect, isLinking: true, goBack: props.onBack }) });\n  }\n  return (0, import_jsx_runtime62.jsxs)(Container, { style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime62.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime62.jsx)(ModalHeader, { title: props.locale.manageWallet.linkProfile, onBack: props.onBack }) }), (0, import_jsx_runtime62.jsx)(Line, {}), (0, import_jsx_runtime62.jsxs)(Container, { flex: \"column\", gap: \"md\", center: \"both\", px: \"xl\", color: \"secondaryText\", style: {\n    flex: \"1\",\n    minHeight: \"250px\"\n  }, children: [(0, import_jsx_runtime62.jsx)(CrossCircledIcon, { width: iconSize.xl, height: iconSize.xl }), (0, import_jsx_runtime62.jsx)(Text, { center: true, children: \"This wallet does not support account linking\" })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js\nvar import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/hooks/wallets/useProfiles.js\nfunction useProfiles(args) {\n  var _a;\n  const wallet = useAdminWallet();\n  return useQuery({\n    queryKey: [\"profiles\", wallet == null ? void 0 : wallet.id, (_a = wallet == null ? void 0 : wallet.getAccount()) == null ? void 0 : _a.address],\n    enabled: !!wallet && (wallet.id === \"inApp\" || isEcosystemWallet(wallet)),\n    queryFn: async () => {\n      var _a2;\n      const ecosystem = wallet && isEcosystemWallet(wallet) ? { id: wallet.id, partnerId: (_a2 = wallet.getConfig()) == null ? void 0 : _a2.partnerId } : void 0;\n      return getProfiles({\n        client: args.client,\n        ecosystem\n      });\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/AddUserIcon.js\nvar import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1);\nvar AddUserIcon = (props) => {\n  return (0, import_jsx_runtime63.jsx)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 24 24\", fill: \"none\", role: \"presentation\", xmlns: \"http://www.w3.org/2000/svg\", children: (0, import_jsx_runtime63.jsx)(\"path\", { d: \"M12 15.5H7.5C6.10444 15.5 5.40665 15.5 4.83886 15.6722C3.56045 16.06 2.56004 17.0605 2.17224 18.3389C2 18.9067 2 19.6044 2 21M19 21V15M16 18H22M14.5 7.5C14.5 9.98528 12.4853 12 10 12C7.51472 12 5.5 9.98528 5.5 7.5C5.5 5.01472 7.51472 3 10 3C12.4853 3 14.5 5.01472 14.5 7.5Z\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js\nfunction getProfileDisplayName(profile) {\n  switch (true) {\n    case (profile.type === \"email\" && profile.details.email !== void 0):\n      return profile.details.email;\n    case (profile.type === \"google\" && profile.details.email !== void 0):\n      return profile.details.email;\n    case (profile.type === \"phone\" && profile.details.phone !== void 0):\n      return profile.details.phone;\n    case profile.details.address !== void 0:\n      return shortenAddress(profile.details.address, 6);\n    case (profile.type === \"cognito\" && profile.details.email !== void 0):\n      return profile.details.email;\n    default:\n      return profile.type.slice(0, 1).toUpperCase() + profile.type.slice(1);\n  }\n}\nfunction LinkedProfilesScreen(props) {\n  const { data: connectedProfiles, isLoading } = useProfiles({\n    client: props.client\n  });\n  if (isLoading) {\n    return (0, import_jsx_runtime64.jsx)(LoadingScreen, {});\n  }\n  return (0, import_jsx_runtime64.jsxs)(Container, { style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime64.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime64.jsx)(ModalHeader, { title: props.locale.manageWallet.linkedProfiles, onBack: props.onBack }) }), (0, import_jsx_runtime64.jsx)(Line, {}), isLoading ? (0, import_jsx_runtime64.jsx)(LoadingScreen, {}) : (0, import_jsx_runtime64.jsxs)(Container, { scrollY: true, style: {\n    height: \"300px\"\n  }, children: [(0, import_jsx_runtime64.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime64.jsxs)(Container, { px: \"sm\", children: [(0, import_jsx_runtime64.jsxs)(MenuButton, { onClick: () => {\n    props.setScreen(\"link-profile\");\n  }, style: {\n    fontSize: fontSize.sm\n  }, children: [(0, import_jsx_runtime64.jsx)(AddUserIcon, { size: iconSize.lg }), (0, import_jsx_runtime64.jsx)(Text, { color: \"primaryText\", children: props.locale.manageWallet.linkProfile })] }), (0, import_jsx_runtime64.jsx)(Spacer, { y: \"xs\" }), connectedProfiles == null ? void 0 : connectedProfiles.filter((profile) => profile.type !== \"guest\").map((profile) => (0, import_jsx_runtime64.jsx)(LinkedProfile, { profile, client: props.client }, `${profile.type}-${getProfileDisplayName(profile)}`))] }), (0, import_jsx_runtime64.jsx)(Spacer, { y: \"md\" })] })] });\n}\nfunction LinkedProfile({ profile, client }) {\n  var _a, _b, _c;\n  const { data: socialProfiles } = useSocialProfiles({\n    client,\n    address: profile.details.address\n  });\n  return (0, import_jsx_runtime64.jsxs)(MenuButton, { style: {\n    fontSize: fontSize.sm,\n    cursor: \"default\"\n  }, disabled: true, children: [(socialProfiles == null ? void 0 : socialProfiles.some((p) => p.avatar)) ? (0, import_jsx_runtime64.jsx)(Img, { src: (_a = socialProfiles == null ? void 0 : socialProfiles.find((p) => p.avatar)) == null ? void 0 : _a.avatar, width: iconSize.lg, height: iconSize.lg, loading: \"eager\", client, style: {\n    borderRadius: \"100%\"\n  } }) : profile.details.address !== void 0 ? (0, import_jsx_runtime64.jsx)(Container, { style: {\n    width: \"32px\",\n    height: \"32px\",\n    borderRadius: \"100%\",\n    overflow: \"hidden\"\n  }, children: (0, import_jsx_runtime64.jsx)(Blobbie, { address: profile.details.address, size: 32 }) }) : profile.type === \"passkey\" ? (0, import_jsx_runtime64.jsx)(FingerPrintIcon, { size: iconSize.lg }) : profile.type === \"email\" ? (0, import_jsx_runtime64.jsx)(EmailIcon, { size: iconSize.lg }) : profile.type === \"phone\" ? (0, import_jsx_runtime64.jsx)(PhoneIcon, { size: iconSize.lg }) : (0, import_jsx_runtime64.jsx)(Img, { src: getSocialIcon(profile.type), width: iconSize.lg, height: iconSize.lg, loading: \"eager\", client }), (0, import_jsx_runtime64.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    flexGrow: 1\n  }, children: [(0, import_jsx_runtime64.jsx)(Text, { color: \"primaryText\", children: ((_b = socialProfiles == null ? void 0 : socialProfiles.find((p) => p.avatar)) == null ? void 0 : _b.name) || getProfileDisplayName(profile) }), ((_c = socialProfiles == null ? void 0 : socialProfiles.find((p) => p.avatar)) == null ? void 0 : _c.name) && profile.details.address && (0, import_jsx_runtime64.jsx)(Text, { color: \"secondaryText\", size: \"sm\", children: shortenAddress(profile.details.address, 4) })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js\nvar import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/KeyIcon.js\nvar import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1);\nvar KeyIcon = (props) => {\n  return (0, import_jsx_runtime65.jsxs)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: props.size, height: props.size, viewBox: \"0 0 24 24\", fill: \"none\", role: \"presentation\", children: [(0, import_jsx_runtime65.jsx)(\"path\", { d: \"M2 5.99999L2 2.99999C2 2.39999 2.4 1.99999 3 1.99999H7L7 4.99999H10V7.99999H12L13.4 9.39999C14.7898 8.91585 16.3028 8.9177 17.6915 9.40524C19.0801 9.89278 20.2622 10.8372 21.0444 12.0839C21.8265 13.3306 22.1624 14.8058 21.9971 16.2683C21.8318 17.7307 21.1751 19.0937 20.1344 20.1344C19.0937 21.1751 17.7307 21.8318 16.2683 21.9971C14.8058 22.1624 13.3306 21.8265 12.0839 21.0444C10.8372 20.2622 9.89279 19.0801 9.40525 17.6915C8.91771 16.3028 8.91585 14.7898 9.4 13.4L2 5.99999Z\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime65.jsx)(\"path\", { d: \"M15.5 15C15.7761 15 16 15.2239 16 15.5C16 15.7761 15.7761 16 15.5 16C15.2239 16 15 15.7761 15 15.5C15 15.2239 15.2239 15 15.5 15Z\", fill: \"currentColor\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/MultiUserIcon.js\nvar import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1);\nvar MultiUserIcon = (props) => {\n  return (0, import_jsx_runtime66.jsx)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 24 24\", fill: \"none\", role: \"presentation\", xmlns: \"http://www.w3.org/2000/svg\", children: (0, import_jsx_runtime66.jsx)(\"path\", { d: \"M22 21V19C22 17.1362 20.7252 15.5701 19 15.126M15.5 3.29076C16.9659 3.88415 18 5.32131 18 7C18 8.67869 16.9659 10.1159 15.5 10.7092M17 21C17 19.1362 17 18.2044 16.6955 17.4693C16.2895 16.4892 15.5108 15.7105 14.5307 15.3045C13.7956 15 12.8638 15 11 15H8C6.13623 15 5.20435 15 4.46927 15.3045C3.48915 15.7105 2.71046 16.4892 2.30448 17.4693C2 18.2044 2 19.1362 2 21M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/WalletConnectIcon.js\nvar import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1);\nvar WalletConnectIcon = (props) => {\n  return (0, import_jsx_runtime67.jsx)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 24 24\", fill: \"none\", role: \"presentation\", xmlns: \"http://www.w3.org/2000/svg\", children: (0, import_jsx_runtime67.jsx)(\"path\", { d: \"M4.91334 7.73539C8.82714 4.0882 15.1729 4.0882 19.0867 7.73539L19.5577 8.17432C19.7534 8.35664 19.7534 8.65232 19.5577 8.83464L17.9464 10.3362C17.8485 10.4274 17.6899 10.4274 17.5921 10.3362L16.9439 9.73217C14.2134 7.18782 9.7866 7.18782 7.05614 9.73217L6.36193 10.379C6.26407 10.4702 6.10547 10.4702 6.0076 10.379L4.39629 8.87747C4.20056 8.69515 4.20056 8.39947 4.39629 8.21715L4.91334 7.73539ZM22.4191 10.8407L23.8532 12.1771C24.0489 12.3594 24.0489 12.6551 23.8532 12.8374L17.3867 18.8632C17.1911 19.0456 16.8738 19.0456 16.6781 18.8632L12.0886 14.5865C12.0397 14.5409 11.9604 14.5409 11.9115 14.5865L7.32202 18.8632C7.12638 19.0456 6.8091 19.0456 6.61337 18.8632L0.146771 12.8373C-0.0489237 12.655 -0.0489237 12.3593 0.146771 12.177L1.58087 10.8406C1.77657 10.6582 2.09384 10.6582 2.28954 10.8406L6.87907 15.1173C6.928 15.163 7.0073 15.163 7.05623 15.1173L11.6456 10.8406C11.8412 10.6582 12.1585 10.6582 12.3542 10.8406L16.9438 15.1173C16.9927 15.163 17.072 15.163 17.1209 15.1173L21.7105 10.8407C21.9061 10.6583 22.2234 10.6583 22.4191 10.8407Z\", fill: \"currentColor\" }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js\nfunction ManageWalletScreen(props) {\n  var _a;\n  const activeWallet = useAdminWallet();\n  return (0, import_jsx_runtime68.jsxs)(Container, { style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime68.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime68.jsx)(ModalHeader, { title: props.locale.manageWallet.title, onBack: props.onBack }) }), (0, import_jsx_runtime68.jsx)(Line, {}), (0, import_jsx_runtime68.jsxs)(Container, { px: \"sm\", scrollY: true, style: {\n    maxHeight: \"500px\"\n  }, children: [(0, import_jsx_runtime68.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime68.jsxs)(Container, { style: { position: \"relative\", height: \"250px\" }, children: [(0, import_jsx_runtime68.jsx)(SwitchMetamaskAccount, { closeModal: props.closeModal, connectLocale: props.locale }), activeWallet && ((activeWallet == null ? void 0 : activeWallet.id) === \"inApp\" || isEcosystemWallet(activeWallet)) && (0, import_jsx_runtime68.jsxs)(MenuButton, { onClick: () => {\n    props.setScreen(\"linked-profiles\");\n  }, style: {\n    fontSize: fontSize.sm\n  }, children: [(0, import_jsx_runtime68.jsx)(MultiUserIcon, { size: iconSize.md }), (0, import_jsx_runtime68.jsx)(Text, { color: \"primaryText\", children: props.locale.manageWallet.linkedProfiles })] }), (0, import_jsx_runtime68.jsxs)(MenuButton, { onClick: () => {\n    props.setScreen(\"wallet-connect-receiver\");\n  }, style: {\n    fontSize: fontSize.sm\n  }, children: [(0, import_jsx_runtime68.jsx)(WalletConnectIcon, { size: iconSize.md }), (0, import_jsx_runtime68.jsx)(Text, { color: \"primaryText\", children: props.locale.manageWallet.connectAnApp })] }), activeWallet && isInAppWallet(activeWallet) && !((_a = activeWallet.getConfig()) == null ? void 0 : _a.hidePrivateKeyExport) && (0, import_jsx_runtime68.jsxs)(MenuButton, { onClick: () => {\n    props.setScreen(\"private-key\");\n  }, style: {\n    fontSize: fontSize.sm\n  }, children: [(0, import_jsx_runtime68.jsx)(KeyIcon, { size: iconSize.md }), (0, import_jsx_runtime68.jsx)(Text, { color: \"primaryText\", children: props.locale.manageWallet.exportPrivateKey })] })] }), (0, import_jsx_runtime68.jsx)(Spacer, { y: \"lg\" })] })] });\n}\nfunction SwitchMetamaskAccount(props) {\n  const wallet = useActiveWallet();\n  const connectLocale = props.connectLocale;\n  if ((wallet == null ? void 0 : wallet.id) !== \"io.metamask\") {\n    return null;\n  }\n  const injectedMetamaskProvider = injectedProvider(\"io.metamask\");\n  if (!injectedMetamaskProvider) {\n    return null;\n  }\n  return (0, import_jsx_runtime68.jsxs)(MenuButton, { type: \"button\", onClick: async () => {\n    await injectedMetamaskProvider.request({\n      method: \"wallet_requestPermissions\",\n      params: [{ eth_accounts: {} }]\n    });\n    props.closeModal();\n  }, children: [(0, import_jsx_runtime68.jsx)(ShuffleIcon, { width: iconSize.md, height: iconSize.md }), (0, import_jsx_runtime68.jsx)(Text, { color: \"primaryText\", children: connectLocale.switchAccount })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/PrivateKey.js\nvar import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1);\nvar import_react41 = __toESM(require_react(), 1);\nfunction PrivateKey(props) {\n  var _a;\n  const [isLoading, setLoading] = (0, import_react41.useState)(true);\n  if (!props.wallet) {\n    throw new Error(\"[PrivateKey] No wallet found\");\n  }\n  const baseDomain = getThirdwebDomains().inAppWallet;\n  const ecosystem = isEcosystemWallet(props.wallet) ? { id: props.wallet.id, partnerId: (_a = props.wallet.getConfig()) == null ? void 0 : _a.partnerId } : void 0;\n  return (0, import_jsx_runtime69.jsxs)(Container, { style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime69.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime69.jsx)(ModalHeader, { title: \"Export Private Key\", onBack: props.onBack }) }), (0, import_jsx_runtime69.jsx)(Line, {}), (0, import_jsx_runtime69.jsxs)(Container, { px: \"sm\", scrollY: true, style: {\n    maxHeight: \"500px\"\n  }, children: [(0, import_jsx_runtime69.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime69.jsxs)(Container, { style: { position: \"relative\", height: \"250px\" }, children: [isLoading ? (0, import_jsx_runtime69.jsx)(Container, { center: \"both\", flex: \"column\", style: { position: \"absolute\", width: \"100%\", height: \"100%\" }, children: (0, import_jsx_runtime69.jsx)(Spinner, { size: \"lg\", color: \"primaryButtonBg\" }) }) : (0, import_jsx_runtime69.jsx)(import_jsx_runtime69.Fragment, {}), (0, import_jsx_runtime69.jsx)(Container, { style: {\n    position: \"absolute\",\n    height: \"100%\",\n    width: \"100%\",\n    zIndex: 11\n  }, children: (0, import_jsx_runtime69.jsx)(\"iframe\", { title: \"Export In-App Wallet\", style: {\n    width: \"100%\",\n    height: \"250px\",\n    visibility: isLoading ? \"hidden\" : \"unset\"\n  }, onLoad: () => {\n    setLoading(false);\n  }, allow: \"clipboard-read; clipboard-write\", src: `${baseDomain.includes(\"localhost\") ? \"http\" : \"https\"}://${baseDomain}/sdk/2022-08-12/embedded-wallet/export-private-key?clientId=${props.client.clientId}&theme=${typeof props.theme === \"string\" ? props.theme : props.theme.type}${ecosystem ? `&ecosystemId=${ecosystem.id}` : \"\"}${(ecosystem == null ? void 0 : ecosystem.partnerId) ? `&partnerId=${ecosystem.partnerId}` : \"\"}` }) })] }), (0, import_jsx_runtime69.jsx)(Spacer, { y: \"lg\" })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/ReceiveFunds.js\nvar import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/utils/addresses.js\nfunction shortenString(str, extraShort = true) {\n  return `${str.substring(0, extraShort ? 4 : 6)}...${str.substring(str.length - (extraShort ? 3 : 4))}`;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/ReceiveFunds.js\nfunction ReceiveFunds(props) {\n  const account = useActiveAccount();\n  const address = account == null ? void 0 : account.address;\n  const { hasCopied, onCopy } = useClipboard(address || \"\");\n  const { connectLocale, client } = props;\n  const locale = connectLocale.receiveFundsScreen;\n  return (0, import_jsx_runtime70.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime70.jsx)(ModalHeader, { title: locale.title, onBack: props.onBack }), (0, import_jsx_runtime70.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime70.jsx)(Container, { flex: \"row\", center: \"x\", children: (0, import_jsx_runtime70.jsx)(QRCode, { qrCodeUri: address, size: 310, QRIcon: props.walletId && (0, import_jsx_runtime70.jsx)(WalletImage, { id: props.walletId, size: iconSize.xxl, client }) }) }), (0, import_jsx_runtime70.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime70.jsxs)(WalletAddressContainer, { onClick: onCopy, children: [(0, import_jsx_runtime70.jsx)(Text, { color: \"primaryText\", size: \"md\", children: shortenString(address || \"\") }), (0, import_jsx_runtime70.jsx)(CopyIcon2, { text: address || \"\", tip: \"Copy address\", hasCopied })] }), (0, import_jsx_runtime70.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime70.jsx)(Text, { multiline: true, center: true, balance: true, children: locale.instruction })] });\n}\nvar WalletAddressContainer = StyledButton((_) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    width: \"100%\",\n    boxSizing: \"border-box\",\n    cursor: \"pointer\",\n    padding: spacing.md,\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    border: `1px solid ${theme.colors.borderColor}`,\n    borderRadius: radius.md,\n    transition: \"border-color 200ms ease\",\n    \"&:hover\": {\n      borderColor: theme.colors.accentText\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/SendFunds.js\nvar import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1);\nvar import_react43 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/extensions/ens/__generated__/AddressResolver/read/addr.js\nvar FN_SELECTOR = \"0x3b3b57de\";\nvar FN_INPUTS = [\n  {\n    type: \"bytes32\",\n    name: \"name\"\n  }\n];\nfunction encodeAddrParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.name]);\n}\nfunction encodeAddr(options) {\n  return FN_SELECTOR + encodeAddrParams(options).slice(2);\n}\n\n// node_modules/thirdweb/dist/esm/extensions/ens/resolve-address.js\nasync function resolveAddress(options) {\n  const { client, name, resolverAddress, resolverChain } = options;\n  if (isAddress(name)) {\n    return getAddress(name);\n  }\n  return withCache(async () => {\n    const contract = getContract({\n      client,\n      chain: resolverChain || ethereum,\n      address: resolverAddress || UNIVERSAL_RESOLVER_ADDRESS\n    });\n    const data = encodeAddr({ name: namehash(name) });\n    const result = await resolve({\n      contract,\n      name: toHex(packetToBytes(name)),\n      data\n    });\n    const resolvedAddress = getAddress(`0x${result[0].slice(-40)}`);\n    return resolvedAddress;\n  }, {\n    cacheKey: `ens:addr:${(resolverChain == null ? void 0 : resolverChain.id) || 1}:${name}`,\n    // 1min cache\n    cacheTime: 60 * 1e3\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/__generated__/IERC20/write/transfer.js\nvar FN_SELECTOR2 = \"0xa9059cbb\";\nvar FN_INPUTS2 = [\n  {\n    type: \"address\",\n    name: \"to\"\n  },\n  {\n    type: \"uint256\",\n    name: \"value\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"bool\"\n  }\n];\nfunction transfer(options) {\n  const asyncOptions = once(async () => {\n    return \"asyncParams\" in options ? await options.asyncParams() : options;\n  });\n  return prepareContractCall({\n    contract: options.contract,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS],\n    params: async () => {\n      const resolvedOptions = await asyncOptions();\n      return [resolvedOptions.to, resolvedOptions.value];\n    },\n    value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.value;\n    },\n    accessList: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.accessList;\n    },\n    gas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gas;\n    },\n    gasPrice: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gasPrice;\n    },\n    maxFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxFeePerGas;\n    },\n    maxPriorityFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxPriorityFeePerGas;\n    },\n    nonce: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.nonce;\n    },\n    extraGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.extraGas;\n    },\n    erc20Value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.erc20Value;\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/write/transfer.js\nfunction transfer2(options) {\n  return transfer({\n    contract: options.contract,\n    asyncParams: async () => {\n      let amount;\n      if (\"amount\" in options) {\n        const { decimals: decimals2 } = await import(\"./decimals-OWVEHM45.js\");\n        const d = await decimals2(options).catch(() => 18);\n        amount = toUnits(options.amount.toString(), d);\n      } else {\n        amount = options.amountWei;\n      }\n      return {\n        to: options.to,\n        value: amount,\n        overrides: {\n          erc20Value: {\n            amountWei: amount,\n            tokenAddress: options.contract.address\n          },\n          ...options.overrides\n        }\n      };\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useSendToken.js\nfunction useSendToken(client) {\n  const wallet = useActiveWallet();\n  return useMutation({\n    async mutationFn(option) {\n      const { tokenAddress, receiverAddress, amount } = option;\n      const activeChain = wallet == null ? void 0 : wallet.getChain();\n      const account = wallet == null ? void 0 : wallet.getAccount();\n      if (!activeChain) {\n        throw new Error(\"No active chain\");\n      }\n      if (!account) {\n        throw new Error(\"No active account\");\n      }\n      if (!receiverAddress || !receiverAddress.endsWith(\".eth\") && !isAddress(receiverAddress)) {\n        throw new Error(\"Invalid receiver address\");\n      }\n      if (!amount || Number.isNaN(Number(amount)) || Number(amount) < 0) {\n        throw new Error(\"Invalid amount\");\n      }\n      let to = receiverAddress;\n      try {\n        to = await resolveAddress({\n          client,\n          name: receiverAddress\n        });\n      } catch {\n        throw new Error(\"Failed to resolve address\");\n      }\n      if (!tokenAddress) {\n        const sendNativeTokenTx = prepareTransaction({\n          chain: activeChain,\n          client,\n          to,\n          value: toWei(amount)\n        });\n        await sendTransaction({\n          transaction: sendNativeTokenTx,\n          account\n        });\n      } else {\n        const contract = getContract({\n          address: tokenAddress,\n          client,\n          chain: activeChain\n        });\n        const tx = transfer2({\n          amount,\n          contract,\n          to\n        });\n        await sendTransaction({\n          transaction: tx,\n          account\n        });\n      }\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/TokenSelector.js\nvar import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1);\nvar import_react42 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/wallets/utils/getTokenBalance.js\nasync function getTokenBalance(options) {\n  const { account, client, chain, tokenAddress } = options;\n  if (tokenAddress) {\n    const { getBalance } = await import(\"./getBalance-X6K77NBX.js\");\n    return getBalance({\n      contract: getContract({ client, chain, address: tokenAddress }),\n      address: account.address\n    });\n  }\n  const rpcRequest = getRpcClient({ client, chain });\n  const [nativeSymbol, nativeDecimals, nativeName, nativeBalance] = await Promise.all([\n    getChainSymbol(chain),\n    getChainDecimals(chain),\n    getChainNativeCurrencyName(chain),\n    eth_getBalance(rpcRequest, { address: account.address })\n  ]);\n  return {\n    value: nativeBalance,\n    decimals: nativeDecimals,\n    displayValue: toTokens(nativeBalance, nativeDecimals),\n    symbol: nativeSymbol,\n    name: nativeName\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/others/useTokenInfo.js\nfunction useTokenInfo(options) {\n  const { chain, tokenAddress, client } = options;\n  return useQuery({\n    queryKey: [\"tokenInfo\", (chain == null ? void 0 : chain.id) || -1, { tokenAddress }],\n    queryFn: async () => {\n      if (tokenAddress) {\n        const { getCurrencyMetadata: getCurrencyMetadata2 } = await import(\"./getCurrencyMetadata-VXZEATQ4.js\");\n        const result2 = await getCurrencyMetadata2({\n          contract: getContract({ client, chain, address: tokenAddress })\n        });\n        return result2;\n      }\n      const { getChainDecimals: getChainDecimals2, getChainNativeCurrencyName: getChainNativeCurrencyName2, getChainSymbol: getChainSymbol2 } = await import(\"./utils-RIDKW7H5.js\");\n      const [nativeSymbol, nativeDecimals, nativeName] = await Promise.all([\n        getChainSymbol2(chain),\n        getChainDecimals2(chain),\n        getChainNativeCurrencyName2(chain)\n      ]);\n      const result = {\n        decimals: nativeDecimals,\n        symbol: nativeSymbol,\n        name: nativeName\n      };\n      return result;\n    },\n    enabled: !!chain && !!client\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/TokenSelector.js\nfunction TokenSelector(props) {\n  const [screen, setScreen] = (0, import_react42.useState)(\"base\");\n  const [input, setInput] = (0, import_react42.useState)(\"\");\n  const chain = props.chain;\n  const chainNameQuery = useChainName(chain);\n  const chainIconQuery = useChainIconUrl(chain);\n  const tokenQuery = useTokenInfo({\n    chain,\n    tokenAddress: input,\n    client: props.client\n  });\n  const locale = props.connectLocale.sendFundsScreen;\n  let tokenList = props.tokenList;\n  if (tokenQuery.data && input) {\n    tokenList = [\n      {\n        ...tokenQuery.data,\n        address: input\n      },\n      ...tokenList\n    ];\n  }\n  const filteredList = input ? tokenList.filter((t) => {\n    const inputStr = input.toLowerCase();\n    return t.name.toLowerCase().includes(inputStr) || t.symbol.toLowerCase().includes(inputStr) || t.address.includes(input);\n  }) : tokenList;\n  const { chainSelection } = props;\n  if (screen === \"select-chain\" && chainSelection) {\n    return (0, import_jsx_runtime71.jsx)(NetworkSelectorContent, {\n      client: props.client,\n      connectLocale: props.connectLocale,\n      showTabs: false,\n      onBack: () => setScreen(\"base\"),\n      // pass swap supported chains\n      chains: chainSelection.chains,\n      closeModal: () => setScreen(\"base\"),\n      networkSelector: {\n        renderChain(renderChainProps) {\n          return (0, import_jsx_runtime71.jsx)(ChainButton, { chain: renderChainProps.chain, confirming: false, switchingFailed: false, onClick: () => {\n            chainSelection.select(renderChainProps.chain);\n            setScreen(\"base\");\n          }, client: props.client, connectLocale: props.connectLocale });\n        }\n      }\n    });\n  }\n  return (0, import_jsx_runtime71.jsxs)(Container, { animate: \"fadein\", style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime71.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime71.jsx)(ModalHeader, { onBack: props.onBack, title: props.modalTitle || locale.selectTokenTitle }) }), (0, import_jsx_runtime71.jsx)(Line, {}), (0, import_jsx_runtime71.jsxs)(Container, { scrollY: true, style: {\n    maxHeight: \"450px\"\n  }, children: [(0, import_jsx_runtime71.jsx)(Spacer, { y: \"md\" }), props.chainSelection && (0, import_jsx_runtime71.jsxs)(Container, { px: \"lg\", children: [(0, import_jsx_runtime71.jsx)(Text, { size: \"sm\", children: \"Select Network\" }), (0, import_jsx_runtime71.jsx)(Spacer, { y: \"xxs\" }), (0, import_jsx_runtime71.jsxs)(SelectTokenBtn, { fullWidth: true, variant: \"secondary\", onClick: () => {\n    setScreen(\"select-chain\");\n  }, children: [(0, import_jsx_runtime71.jsx)(ChainIcon, { chainIconUrl: chainIconQuery.url, size: iconSize.lg, client: props.client }), chainNameQuery.name ? (0, import_jsx_runtime71.jsx)(Text, { color: \"primaryText\", size: \"sm\", children: chainNameQuery.name }) : (0, import_jsx_runtime71.jsx)(Skeleton, { height: fontSize.md }), (0, import_jsx_runtime71.jsx)(ChevronDownIcon, { width: iconSize.sm, height: iconSize.sm, style: {\n    marginLeft: \"auto\"\n  } })] }), (0, import_jsx_runtime71.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime71.jsx)(Text, { size: \"sm\", children: \"Select Token\" })] }), (0, import_jsx_runtime71.jsxs)(Container, { px: \"lg\", children: [(0, import_jsx_runtime71.jsx)(Spacer, { y: \"xs\" }), (0, import_jsx_runtime71.jsx)(Input, { placeholder: locale.searchToken, variant: \"outline\", value: input, onChange: (e) => {\n    setInput(e.target.value);\n  } })] }), (0, import_jsx_runtime71.jsx)(Spacer, { y: \"md\" }), (filteredList.length > 0 || !input) && (0, import_jsx_runtime71.jsxs)(Container, { flex: \"column\", gap: \"xs\", px: \"lg\", scrollY: true, style: {\n    paddingTop: 0,\n    paddingBottom: spacing.lg\n    // maxHeight: props.chainSelection ? \"300px\" : \"400px\",\n  }, children: [!input && (0, import_jsx_runtime71.jsx)(SelectTokenButton, { onClick: () => {\n    props.onTokenSelect(NATIVE_TOKEN);\n  }, chain: props.chain, token: NATIVE_TOKEN, client: props.client }), filteredList.map((token) => {\n    return (0, import_jsx_runtime71.jsx)(SelectTokenButton, { onClick: () => props.onTokenSelect(token), token, chain: props.chain, client: props.client }, token.address);\n  })] }), filteredList.length === 0 && tokenQuery.isLoading && input && (0, import_jsx_runtime71.jsx)(Container, { animate: \"fadein\", p: \"lg\", flex: \"column\", gap: \"md\", center: \"both\", style: {\n    minHeight: \"200px\",\n    paddingTop: 0\n  }, color: \"secondaryText\", children: (0, import_jsx_runtime71.jsx)(Spinner, { size: \"lg\", color: \"accentText\" }) }), filteredList.length === 0 && !tokenQuery.isLoading && input && (0, import_jsx_runtime71.jsxs)(Container, { animate: \"fadein\", p: \"lg\", flex: \"column\", gap: \"md\", center: \"both\", style: {\n    minHeight: \"200px\",\n    paddingTop: 0\n  }, color: \"secondaryText\", children: [(0, import_jsx_runtime71.jsx)(CrossCircledIcon, { width: iconSize.lg, height: iconSize.lg }), locale.noTokensFound] }), (0, import_jsx_runtime71.jsx)(Spacer, { y: \"md\" })] })] });\n}\nfunction SelectTokenButton(props) {\n  var _a;\n  const account = useActiveAccount();\n  const tokenInfoQuery = useTokenInfo({\n    chain: props.chain,\n    tokenAddress: isNativeToken(props.token) ? void 0 : props.token.address,\n    client: props.client\n  });\n  const tokenName = isNativeToken(props.token) ? (_a = tokenInfoQuery.data) == null ? void 0 : _a.name : props.token.name;\n  return (0, import_jsx_runtime71.jsxs)(SelectTokenBtn, { fullWidth: true, variant: \"secondary\", onClick: props.onClick, children: [(0, import_jsx_runtime71.jsx)(TokenIcon, { token: props.token, chain: props.chain, size: \"lg\", client: props.client }), (0, import_jsx_runtime71.jsxs)(Container, { flex: \"column\", gap: \"xxs\", children: [tokenName ? (0, import_jsx_runtime71.jsx)(Text, { size: \"sm\", color: \"primaryText\", children: tokenName }) : (0, import_jsx_runtime71.jsx)(Skeleton, { height: fontSize.md, width: \"150px\" }), account && (0, import_jsx_runtime71.jsx)(TokenBalance, { account, chain: props.chain, client: props.client, tokenAddress: isNativeToken(props.token) ? void 0 : props.token.address })] })] });\n}\nfunction TokenBalance(props) {\n  const tokenBalanceQuery = useQuery({\n    queryKey: [\"tokenBalance\", props],\n    queryFn: async () => {\n      return getTokenBalance({\n        account: props.account,\n        chain: props.chain,\n        client: props.client,\n        tokenAddress: props.tokenAddress\n      });\n    }\n  });\n  if (tokenBalanceQuery.data) {\n    return (0, import_jsx_runtime71.jsxs)(Text, { size: \"xs\", children: [\" \", formatTokenBalance(tokenBalanceQuery.data)] });\n  }\n  return (0, import_jsx_runtime71.jsx)(Skeleton, { height: fontSize.xs, width: \"100px\" });\n}\nvar SelectTokenBtn = newStyled(Button)(() => {\n  const theme = useCustomTheme();\n  return {\n    background: theme.colors.tertiaryBg,\n    justifyContent: \"flex-start\",\n    gap: spacing.sm,\n    padding: spacing.sm,\n    \"&:hover\": {\n      background: theme.colors.secondaryButtonBg,\n      transform: \"scale(1.01)\"\n    },\n    transition: \"background 200ms ease, transform 150ms ease\"\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/SendFunds.js\nfunction SendFunds(props) {\n  const [screen, setScreen] = (0, import_react43.useState)(\"base\");\n  const activeChain = useActiveWalletChain();\n  const chainId = activeChain == null ? void 0 : activeChain.id;\n  const { connectLocale, client } = props;\n  let defaultToken = NATIVE_TOKEN;\n  const supportedTokens = props.supportedTokens || defaultTokens;\n  if (\n    // if we know chainId\n    chainId && // if there is a list of tokens for this chain\n    supportedTokens[chainId] && // if the list of tokens is not the default list\n    supportedTokens[chainId] !== defaultTokens[chainId]\n  ) {\n    const tokensForChain = supportedTokens[chainId];\n    const firstToken = tokensForChain == null ? void 0 : tokensForChain[0];\n    if (firstToken) {\n      defaultToken = firstToken;\n    }\n  }\n  const [token, setToken] = (0, import_react43.useState)(defaultToken);\n  const [receiverAddress, setReceiverAddress] = (0, import_react43.useState)(\"\");\n  const [amount, setAmount] = (0, import_react43.useState)(\"0\");\n  const chain = useActiveWalletChain();\n  const tokenList = ((chain == null ? void 0 : chain.id) ? supportedTokens[chain.id] : void 0) || [];\n  if (screen === \"tokenSelector\" && chain) {\n    return (0, import_jsx_runtime72.jsx)(TokenSelector, { tokenList, onBack: () => {\n      setScreen(\"base\");\n    }, onTokenSelect: (_token) => {\n      setToken(_token);\n      setScreen(\"base\");\n    }, chain, connectLocale, client });\n  }\n  return (0, import_jsx_runtime72.jsx)(SendFundsForm, { token, onTokenSelect: () => {\n    setScreen(\"tokenSelector\");\n  }, receiverAddress, setReceiverAddress, amount, setAmount, onBack: props.onBack, client, connectLocale });\n}\nfunction SendFundsForm(props) {\n  var _a, _b;\n  const locale = props.connectLocale.sendFundsScreen;\n  const tokenAddress = props.token && \"address\" in props.token ? props.token.address : void 0;\n  const chain = useActiveWalletChain();\n  const activeAccount = useActiveAccount();\n  const activeChain = useActiveWalletChain();\n  const balanceQuery = useWalletBalance({\n    chain,\n    tokenAddress,\n    address: activeAccount == null ? void 0 : activeAccount.address,\n    client: props.client\n  });\n  const { receiverAddress, setReceiverAddress, amount, setAmount } = props;\n  const sendTokenMutation = useSendToken(props.client);\n  function getErrorMessage(error) {\n    var _a2;\n    const message = ((_a2 = error == null ? void 0 : error.data) == null ? void 0 : _a2.message) || (error == null ? void 0 : error.message);\n    if (!message) {\n      return locale.transactionFailed;\n    }\n    if (message.includes(\"user rejected\")) {\n      return locale.transactionRejected;\n    }\n    if (message.includes(\"insufficient funds\")) {\n      return locale.insufficientFunds;\n    }\n    return message;\n  }\n  if (!activeChain) {\n    return null;\n  }\n  if (sendTokenMutation.isError) {\n    return (0, import_jsx_runtime72.jsxs)(Container, { p: \"lg\", animate: \"fadein\", children: [(0, import_jsx_runtime72.jsx)(ModalHeader, { title: locale.title, onBack: () => {\n      sendTokenMutation.reset();\n    } }), (0, import_jsx_runtime72.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime72.jsxs)(Container, { flex: \"column\", gap: \"lg\", animate: \"fadein\", center: \"both\", style: {\n      minHeight: \"200px\"\n    }, color: \"danger\", children: [(0, import_jsx_runtime72.jsx)(CrossCircledIcon, { width: iconSize.xl, height: iconSize.xl }), (0, import_jsx_runtime72.jsx)(Text, { center: true, multiline: true, color: \"danger\", children: getErrorMessage(sendTokenMutation.error) })] })] });\n  }\n  if (sendTokenMutation.isSuccess) {\n    return (0, import_jsx_runtime72.jsxs)(Container, { p: \"lg\", animate: \"fadein\", children: [(0, import_jsx_runtime72.jsx)(ModalHeader, { title: locale.title, onBack: () => {\n      sendTokenMutation.reset();\n    } }), (0, import_jsx_runtime72.jsxs)(Container, { flex: \"column\", gap: \"lg\", animate: \"fadein\", center: \"both\", style: {\n      minHeight: \"250px\"\n    }, color: \"success\", children: [(0, import_jsx_runtime72.jsx)(CheckCircledIcon, { width: iconSize.xl, height: iconSize.xl }), (0, import_jsx_runtime72.jsxs)(Text, { color: \"success\", children: [\" \", locale.successMessage, \" \"] })] })] });\n  }\n  const tokenName = (props.token && \"name\" in props.token ? props.token.name : void 0) || ((_a = balanceQuery == null ? void 0 : balanceQuery.data) == null ? void 0 : _a.name);\n  const tokenSymbol = (props.token && \"symbol\" in props.token ? props.token.symbol : void 0) || ((_b = balanceQuery == null ? void 0 : balanceQuery.data) == null ? void 0 : _b.symbol);\n  return (0, import_jsx_runtime72.jsxs)(Container, { p: \"lg\", animate: \"fadein\", children: [(0, import_jsx_runtime72.jsx)(ModalHeader, { title: locale.title, onBack: props.onBack }), (0, import_jsx_runtime72.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime72.jsxs)(\"form\", { onSubmit: (e) => {\n    e.preventDefault();\n  }, children: [(0, import_jsx_runtime72.jsx)(Label, { htmlFor: \"token\", color: \"secondaryText\", children: locale.token }), (0, import_jsx_runtime72.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime72.jsxs)(Button, { id: \"token\", variant: \"outline\", fullWidth: true, style: {\n    justifyContent: \"flex-start\",\n    gap: spacing.sm,\n    padding: spacing.sm\n  }, onClick: props.onTokenSelect, children: [(0, import_jsx_runtime72.jsx)(TokenIcon, { token: props.token, chain: activeChain, size: \"lg\", client: props.client }), (0, import_jsx_runtime72.jsxs)(Container, { flex: \"column\", gap: \"xs\", children: [tokenName ? (0, import_jsx_runtime72.jsx)(Text, { size: \"sm\", color: \"primaryText\", children: tokenName }) : (0, import_jsx_runtime72.jsx)(Skeleton, { height: fontSize.xs, width: \"150px\" }), balanceQuery.data ? (0, import_jsx_runtime72.jsx)(Text, { size: \"xs\", children: formatTokenBalance(balanceQuery.data) }) : (0, import_jsx_runtime72.jsx)(Skeleton, { height: fontSize.xs, width: \"100px\" })] })] }), (0, import_jsx_runtime72.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime72.jsx)(Label, { htmlFor: \"receiver\", color: \"secondaryText\", children: locale.sendTo }), (0, import_jsx_runtime72.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime72.jsx)(Input, { required: true, id: \"receiver\", placeholder: \"0x... or ENS name\", variant: \"outline\", value: receiverAddress, onChange: (e) => {\n    setReceiverAddress(e.target.value);\n  } }), (0, import_jsx_runtime72.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime72.jsx)(Label, { htmlFor: \"amount\", color: \"secondaryText\", children: locale.amount }), (0, import_jsx_runtime72.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime72.jsxs)(Container, { relative: true, children: [(0, import_jsx_runtime72.jsx)(Input, { required: true, type: \"number\", id: \"amount\", variant: \"outline\", value: amount, onChange: (e) => {\n    setAmount(e.target.value);\n  } }), (0, import_jsx_runtime72.jsx)(CurrencyBadge, { children: (0, import_jsx_runtime72.jsxs)(Text, { size: \"xs\", children: [\" \", tokenSymbol, \" \"] }) })] }), (0, import_jsx_runtime72.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime72.jsxs)(Button, { fullWidth: true, variant: \"accent\", type: \"submit\", onClick: async () => {\n    if (!receiverAddress || !amount) {\n      return;\n    }\n    await sendTokenMutation.mutateAsync({\n      receiverAddress,\n      amount,\n      tokenAddress\n    });\n  }, style: {\n    alignItems: \"center\",\n    gap: spacing.sm,\n    padding: spacing.md\n  }, children: [sendTokenMutation.isPending && (0, import_jsx_runtime72.jsx)(Spinner, { size: \"sm\", color: \"accentButtonText\" }), sendTokenMutation.isPending ? locale.sending : locale.submitButton] })] })] });\n}\nvar CurrencyBadge = StyledDiv({\n  position: \"absolute\",\n  top: \"50%\",\n  transform: \"translateY(-50%)\",\n  right: spacing.sm\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/ViewAssets.js\nvar import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1);\nvar import_react47 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/ImageIcon.js\nvar import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1);\nvar ImageIcon = (props) => {\n  return (0, import_jsx_runtime73.jsxs)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: props.size, height: props.size, viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", role: \"presentation\", children: [(0, import_jsx_runtime73.jsx)(\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\" }), (0, import_jsx_runtime73.jsx)(\"circle\", { cx: \"9\", cy: \"9\", r: \"2\" }), (0, import_jsx_runtime73.jsx)(\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/ViewNFTs.js\nvar import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1);\nvar import_react46 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IERC721A/read/balanceOf.js\nvar FN_SELECTOR3 = \"0x70a08231\";\nvar FN_INPUTS3 = [\n  {\n    type: \"address\",\n    name: \"owner\"\n  }\n];\nvar FN_OUTPUTS2 = [\n  {\n    type: \"uint256\"\n  }\n];\nasync function balanceOf(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR3, FN_INPUTS3, FN_OUTPUTS2],\n    params: [options.owner]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IERC721AQueryable/read/tokensOfOwner.js\nvar FN_SELECTOR4 = \"0x8462151c\";\nvar FN_INPUTS4 = [\n  {\n    type: \"address\",\n    name: \"owner\"\n  }\n];\nvar FN_OUTPUTS3 = [\n  {\n    type: \"uint256[]\"\n  }\n];\nasync function tokensOfOwner(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR4, FN_INPUTS4, FN_OUTPUTS3],\n    params: [options.owner]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IERC721Enumerable/read/tokenOfOwnerByIndex.js\nvar FN_SELECTOR5 = \"0x2f745c59\";\nvar FN_INPUTS5 = [\n  {\n    type: \"address\",\n    name: \"_owner\"\n  },\n  {\n    type: \"uint256\",\n    name: \"_index\"\n  }\n];\nvar FN_OUTPUTS4 = [\n  {\n    type: \"uint256\"\n  }\n];\nasync function tokenOfOwnerByIndex(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR5, FN_INPUTS5, FN_OUTPUTS4],\n    params: [options.owner, options.index]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/read/getOwnedTokenIds.js\nasync function getOwnedTokenIds(options) {\n  const result = await Promise.any([\n    // get all the tokens owned by the owner\n    tokensOfOwner({ ...options }),\n    // get the balance of the owner and then fetch each token ID\n    // this is the \"fallback\" path really\n    (async () => {\n      const balanceOfResult = await balanceOf(options);\n      const promises = [];\n      for (let i = 0n; i < balanceOfResult; i++) {\n        promises.push(tokenOfOwnerByIndex({ ...options, index: i }));\n      }\n      return Promise.all(promises);\n    })()\n  ]).catch(() => null);\n  if (result) {\n    return result;\n  }\n  throw new Error(`The contract at ${options.contract.address} on chain ${options.contract.chain.id} does not support the tokenOfOwnerByIndex or tokensOfOwner interface`);\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/read/getOwnedNFTs.js\nasync function getOwnedNFTs(options) {\n  const tokenIds = await getOwnedTokenIds(options);\n  return Promise.all(tokenIds.map((tokenId) => getNFT({\n    contract: options.contract,\n    tokenId\n  }).then((nft) => ({\n    ...nft,\n    // add the owner to the NFT since we know it\n    owner: options.owner\n  }))));\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IERC1155/read/balanceOfBatch.js\nvar FN_SELECTOR6 = \"0x4e1273f4\";\nvar FN_INPUTS6 = [\n  {\n    type: \"address[]\",\n    name: \"_owners\"\n  },\n  {\n    type: \"uint256[]\",\n    name: \"tokenIds\"\n  }\n];\nvar FN_OUTPUTS5 = [\n  {\n    type: \"uint256[]\"\n  }\n];\nasync function balanceOfBatch(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR6, FN_INPUTS6, FN_OUTPUTS5],\n    params: [options.owners, options.tokenIds]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IERC1155Enumerable/read/nextTokenIdToMint.js\nvar FN_SELECTOR7 = \"0x3b1475a7\";\nvar FN_INPUTS7 = [];\nvar FN_OUTPUTS6 = [\n  {\n    type: \"uint256\"\n  }\n];\nasync function nextTokenIdToMint(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR7, FN_INPUTS7, FN_OUTPUTS6],\n    params: []\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/Zora1155/read/nextTokenId.js\nvar FN_SELECTOR8 = \"0x75794a3c\";\nvar FN_INPUTS8 = [];\nvar FN_OUTPUTS7 = [\n  {\n    type: \"uint256\"\n  }\n];\nasync function nextTokenId(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR8, FN_INPUTS8, FN_OUTPUTS7],\n    params: []\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/read/getOwnedTokenIds.js\nvar DEFAULT_QUERY_ALL_COUNT = 100;\nasync function getOwnedTokenIds2(options) {\n  const maxId = await Promise.allSettled([\n    nextTokenIdToMint(options),\n    nextTokenId(options)\n  ]).then(([_nextToMint, _next]) => {\n    if (_nextToMint.status === \"fulfilled\") {\n      return _nextToMint.value;\n    }\n    if (_next.status === \"fulfilled\") {\n      return _next.value;\n    }\n    throw Error(\"Contract doesn't have required extension\");\n  });\n  const owners = [];\n  const tokenIds = [];\n  for (let i = 0n; i < maxId; i++) {\n    owners.push(options.address);\n    tokenIds.push(i);\n  }\n  const balances = await balanceOfBatch({\n    ...options,\n    owners,\n    tokenIds\n  });\n  let ownedBalances = balances.map((b, i) => {\n    return {\n      tokenId: BigInt(i),\n      balance: b\n    };\n  }).filter((b) => b.balance > 0);\n  if (options.start || options.count) {\n    const start = (options == null ? void 0 : options.start) || 0;\n    const count3 = (options == null ? void 0 : options.count) || DEFAULT_QUERY_ALL_COUNT;\n    ownedBalances = ownedBalances.slice(start, start + count3);\n  }\n  return ownedBalances;\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/read/getOwnedNFTs.js\nasync function getOwnedNFTs2(options) {\n  const ownedBalances = await getOwnedTokenIds2(options);\n  const nfts = await Promise.all(ownedBalances.map((ob) => getNFT2({ ...options, tokenId: ob.tokenId })));\n  return nfts.map((nft, index2) => {\n    var _a;\n    return {\n      ...nft,\n      owner: options.address,\n      quantityOwned: ((_a = ownedBalances[index2]) == null ? void 0 : _a.balance) || 0n\n    };\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/MediaRenderer/MediaRenderer.js\nvar import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1);\nvar import_react45 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/MediaRenderer/icons.js\nvar import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1);\nvar CarbonDocumentUnknown = (props) => {\n  return (0, import_jsx_runtime74.jsxs)(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 32 32\", role: \"presentation\", ...props, children: [(0, import_jsx_runtime74.jsx)(\"circle\", { cx: \"9\", cy: \"28.5\", r: \"1.5\", fill: \"currentColor\" }), (0, import_jsx_runtime74.jsx)(\"path\", { fill: \"currentColor\", d: \"M10 25H8v-4h2a2 2 0 0 0 0-4H8a2.002 2.002 0 0 0-2 2v.5H4V19a4.005 4.005 0 0 1 4-4h2a4 4 0 0 1 0 8Z\" }), (0, import_jsx_runtime74.jsx)(\"path\", { fill: \"currentColor\", d: \"m27.7 9.3l-7-7A.908.908 0 0 0 20 2H10a2.006 2.006 0 0 0-2 2v8h2V4h8v6a2.006 2.006 0 0 0 2 2h6v16H14v2h12a2.006 2.006 0 0 0 2-2V10a.91.91 0 0 0-.3-.7ZM20 10V4.4l5.6 5.6Z\" })] });\n};\nvar CarbonDocumentAudio = (props) => {\n  return (0, import_jsx_runtime74.jsxs)(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 32 32\", role: \"presentation\", ...props, children: [(0, import_jsx_runtime74.jsx)(\"path\", { fill: \"currentColor\", d: \"M29 31a.999.999 0 0 1-.625-.22L23.65 27H20a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1h3.65l4.726-3.78A1 1 0 0 1 30 17v13a1 1 0 0 1-1 1Zm-8-6h3a1 1 0 0 1 .625.22L28 27.92v-8.84l-3.376 2.7A1 1 0 0 1 24 22h-3Z\" }), (0, import_jsx_runtime74.jsx)(\"path\", { fill: \"currentColor\", d: \"M16 28H8V4h8v6a2.006 2.006 0 0 0 2 2h6v3h2v-5a.91.91 0 0 0-.3-.7l-7-7A.909.909 0 0 0 18 2H8a2.006 2.006 0 0 0-2 2v24a2.006 2.006 0 0 0 2 2h8Zm2-23.6l5.6 5.6H18Z\" })] });\n};\nvar CarbonPauseFilled = (props) => {\n  return (0, import_jsx_runtime74.jsx)(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 32 32\", role: \"presentation\", ...props, children: (0, import_jsx_runtime74.jsx)(\"path\", { fill: \"currentColor\", d: \"M12 6h-2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm10 0h-2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2z\" }) });\n};\nvar CarbonPlayFilledAlt = (props) => {\n  return (0, import_jsx_runtime74.jsx)(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 32 32\", role: \"presentation\", ...props, children: (0, import_jsx_runtime74.jsx)(\"path\", { fill: \"currentColor\", d: \"M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28Z\" }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/MediaRenderer/useResolvedMediaType.js\nvar import_react44 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/MediaRenderer/mime/types.js\nvar AUDIO_MPEG = \"audio/mpeg\";\nvar AUDIO_MIDI = \"audio/midi\";\nvar AUDIO_OG = \"audio/ogg\";\nvar IMG_JPEG = \"image/jpeg\";\nvar extensionsToMimeType = {\n  // audio\n  \"*3gpp\": \"audio/3gpp\",\n  adp: \"audio/adpcm\",\n  amr: \"audio/amr\",\n  au: \"audio/basic\",\n  snd: \"audio/basic\",\n  mid: AUDIO_MIDI,\n  midi: AUDIO_MIDI,\n  kar: AUDIO_MIDI,\n  rmi: AUDIO_MIDI,\n  mxmf: \"audio/mobile-xmf\",\n  \"*mp3\": \"audio/mp3\",\n  m4a: \"audio/mp4\",\n  mp4a: \"audio/mp4\",\n  mpga: AUDIO_MPEG,\n  mp2: AUDIO_MPEG,\n  mp2a: AUDIO_MPEG,\n  mp3: AUDIO_MPEG,\n  m2a: AUDIO_MPEG,\n  m3a: AUDIO_MPEG,\n  oga: AUDIO_OG,\n  ogg: AUDIO_OG,\n  spx: AUDIO_OG,\n  opus: AUDIO_OG,\n  s3m: \"audio/s3m\",\n  sil: \"audio/silk\",\n  wav: \"audio/wav\",\n  \"*wav\": \"audio/wave\",\n  weba: \"audio/webm\",\n  // images\n  xm: \"audio/xm\",\n  exr: \"image/aces\",\n  apng: \"image/apng\",\n  avif: \"image/avif\",\n  bmp: \"image/bmp\",\n  cgm: \"image/cgm\",\n  drle: \"image/dicom-rle\",\n  emf: \"image/emf\",\n  fits: \"image/fits\",\n  g3: \"image/g3fax\",\n  gif: \"image/gif\",\n  heic: \"image/heic\",\n  heics: \"image/heic-sequence\",\n  heif: \"image/heif\",\n  heifs: \"image/heif-sequence\",\n  hej2: \"image/hej2k\",\n  hsj2: \"image/hsj2\",\n  ief: \"image/ief\",\n  jls: \"image/jls\",\n  jp2: \"image/jp2\",\n  jpg2: \"image/jp2\",\n  jpeg: IMG_JPEG,\n  jpg: IMG_JPEG,\n  jpe: IMG_JPEG,\n  jph: \"image/jph\",\n  jhc: \"image/jphc\",\n  jpm: \"image/jpm\",\n  jpx: \"image/jpx\",\n  jpf: \"image/jpx\",\n  jxr: \"image/jxr\",\n  jxra: \"image/jxra\",\n  jxrs: \"image/jxrs\",\n  jxs: \"image/jxs\",\n  jxsc: \"image/jxsc\",\n  jxsi: \"image/jxsi\",\n  jxss: \"image/jxss\",\n  ktx: \"image/ktx\",\n  ktx2: \"image/ktx2\",\n  png: \"image/png\",\n  sgi: \"image/sgi\",\n  svg: \"image/svg+xml\",\n  svgz: \"image/svg+xml\",\n  t38: \"image/t38\",\n  tif: \"image/tiff\",\n  tiff: \"image/tiff\",\n  tfx: \"image/tiff-fx\",\n  webp: \"image/webp\",\n  wmf: \"image/wmf\",\n  // 3d models\n  \"3mf\": \"model/3mf\",\n  gltf: \"model/gltf+json\",\n  glb: \"model/gltf-binary\",\n  igs: \"model/iges\",\n  iges: \"model/iges\",\n  msh: \"model/mesh\",\n  mesh: \"model/mesh\",\n  silo: \"model/mesh\",\n  mtl: \"model/mtl\",\n  obj: \"model/obj\",\n  stl: \"model/stl\",\n  wrl: \"model/vrml\",\n  vrml: \"model/vrml\",\n  \"*x3db\": \"model/x3d+binary\",\n  x3dbz: \"model/x3d+binary\",\n  x3db: \"model/x3d+fastinfoset\",\n  \"*x3dv\": \"model/x3d+vrml\",\n  x3dvz: \"model/x3d+vrml\",\n  x3d: \"model/x3d+xml\",\n  x3dz: \"model/x3d+xml\",\n  x3dv: \"model/x3d-vrml\",\n  // html\n  html: \"text/html\",\n  htm: \"text/html\",\n  shtml: \"text/html\",\n  // videos\n  \"3gp\": \"video/3gpp\",\n  \"3gpp\": \"video/3gpp\",\n  \"3g2\": \"video/3gpp2\",\n  h261: \"video/h261\",\n  h263: \"video/h263\",\n  h264: \"video/h264\",\n  m4s: \"video/iso.segment\",\n  jpgv: \"video/jpeg\",\n  \"*jpm\": \"video/jpm\",\n  jpgm: \"video/jpm\",\n  mj2: \"video/mj2\",\n  mjp2: \"video/mj2\",\n  ts: \"video/mp2t\",\n  mp4: \"video/mp4\",\n  mp4v: \"video/mp4\",\n  mpg4: \"video/mp4\",\n  mpeg: \"video/mpeg\",\n  mpg: \"video/mpeg\",\n  mpe: \"video/mpeg\",\n  m1v: \"video/mpeg\",\n  m2v: \"video/mpeg\",\n  ogv: \"video/ogg\",\n  qt: \"video/quicktime\",\n  mov: \"video/quicktime\",\n  webm: \"video/webm\",\n  mkv: \"video/x-matroska\"\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/MediaRenderer/mime/mime.js\nfunction getMimeTypeFromUrl(url) {\n  const last = url.replace(/^.*[/\\\\]/, \"\").toLowerCase();\n  const fileExtension = last.replace(/^.*\\./, \"\").toLowerCase();\n  const hasPath = last.length < url.length;\n  const hasDot = fileExtension.length < last.length - 1;\n  return (hasDot || !hasPath) && extensionsToMimeType[fileExtension] || null;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/utils/resolveMimeType.js\nasync function resolveMimeType(url) {\n  if (!url) {\n    return void 0;\n  }\n  const mimeType = getMimeTypeFromUrl(url);\n  if (mimeType) {\n    return mimeType;\n  }\n  const res = await fetch(url, {\n    method: \"HEAD\"\n  });\n  if (res.ok && res.headers.has(\"content-type\")) {\n    return res.headers.get(\"content-type\") || void 0;\n  }\n  return void 0;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/MediaRenderer/useResolvedMediaType.js\nfunction useResolvedMediaType(client, uri, mimeType, gatewayUrl) {\n  const resolvedUrl = (0, import_react44.useMemo)(() => {\n    if (!uri) {\n      return \"\";\n    }\n    if (uri.startsWith(\"ar://\")) {\n      return resolveArweaveScheme({ uri, gatewayUrl });\n    }\n    if (gatewayUrl) {\n      return uri.replace(\"ipfs://\", gatewayUrl);\n    }\n    try {\n      return resolveScheme({\n        client,\n        uri\n      });\n    } catch {\n      return uri.replace(\"ipfs://\", \"https://ipfs.io/ipfs/\");\n    }\n  }, [uri, gatewayUrl, client]);\n  const resolvedMimeType = useQuery({\n    queryKey: [\"mime-type\", resolvedUrl],\n    queryFn: () => resolveMimeType(resolvedUrl),\n    enabled: !!resolvedUrl && !mimeType,\n    initialData: mimeType\n  });\n  return {\n    mediaInfo: { url: resolvedUrl, mimeType: resolvedMimeType.data },\n    isFetched: resolvedMimeType.isFetched\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/MediaRenderer/MediaRenderer.js\nvar MediaRenderer = (() => import_react45.default.forwardRef(function Media_Renderer({ src, poster, alt, gatewayUrl, requireInteraction = false, width = \"300px\", height = \"300px\", style, mimeType, client, controls, className }, ref) {\n  var _a;\n  const mergedStyle = {\n    objectFit: \"contain\",\n    ...style\n  };\n  const { mediaInfo, isFetched: mediaInfoIsFetched } = useResolvedMediaType(client, src ?? void 0, mimeType, gatewayUrl);\n  const { mediaInfo: possiblePosterSrc } = useResolvedMediaType(client, poster ?? void 0, void 0, gatewayUrl);\n  if (!mediaInfoIsFetched || !src) {\n    return (0, import_jsx_runtime75.jsx)(\"div\", { style });\n  }\n  if (mediaInfo.mimeType) {\n    if (mediaInfo.mimeType.startsWith(\"text/html\")) {\n      return (0, import_jsx_runtime75.jsx)(IframePlayer, { style: mergedStyle, src: mediaInfo.url, poster: possiblePosterSrc.url, ref, requireInteraction, className, alt });\n    }\n    if (mediaInfo.mimeType.startsWith(\"model\")) {\n      return (0, import_jsx_runtime75.jsx)(import_react45.Suspense, { fallback: poster ? (0, import_jsx_runtime75.jsx)(\"img\", { style: mergedStyle, src: poster, alt, ref, className }) : null, children: (0, import_jsx_runtime75.jsx)(ModelViewer, { style: mergedStyle, src: mediaInfo.url || \"\", poster, alt, className }) });\n    }\n    if (mediaInfo.mimeType.startsWith(\"video\")) {\n      return (0, import_jsx_runtime75.jsx)(VideoPlayer, { style: mergedStyle, src: mediaInfo.url, ref, poster: ((_a = possiblePosterSrc.mimeType) == null ? void 0 : _a.startsWith(\"image/\")) ? possiblePosterSrc.url : void 0, requireInteraction, className, controls });\n    }\n    if (mediaInfo.mimeType.startsWith(\"audio\")) {\n      return (0, import_jsx_runtime75.jsx)(AudioPlayer, { style: mergedStyle, src: mediaInfo.url, poster: possiblePosterSrc.url, alt, ref, className, height, width, controls });\n    }\n    if (mediaInfo.mimeType.startsWith(\"image/\")) {\n      return (0, import_jsx_runtime75.jsx)(ImageRenderer, { style: mergedStyle, src: mediaInfo.url, alt, ref, className, height, width });\n    }\n  }\n  return (0, import_jsx_runtime75.jsx)(LinkPlayer, { style: mergedStyle, src: mediaInfo.url, alt, ref, className });\n}))();\nvar ModelViewer = (0, import_react45.lazy)(() => import(\"./ModelViewer-GZZWO7FG.js\"));\nvar PlayButton = ({ onClick, isPlaying }) => {\n  const [isHovering, setIsHovering] = (0, import_react45.useState)(false);\n  const onMouseEnter = () => setIsHovering(true);\n  const onMouseLeave = () => setIsHovering(false);\n  const onMouseDown = () => setIsHovering(false);\n  const onMouseUp = () => setIsHovering(true);\n  return (0, import_jsx_runtime75.jsx)(\"button\", { type: \"button\", style: {\n    position: \"absolute\",\n    bottom: 0,\n    right: 0,\n    transform: \"translate(-25%, -25%)\",\n    width: \"32px\",\n    height: \"32px\",\n    zIndex: 3,\n    backgroundColor: \"#fff\",\n    color: \"rgb(138, 147, 155)\",\n    display: \"grid\",\n    placeItems: \"center\",\n    borderRadius: \"50%\",\n    border: \"1px solid rgb(229, 232, 235)\",\n    cursor: \"pointer\",\n    padding: 0,\n    ...isHovering ? {\n      color: \"rgb(53, 56, 64)\",\n      boxShadow: \"rgb(4 17 29 / 25%) 0px 0px 8px 0px\"\n    } : {}\n  }, onClick, onMouseEnter, onMouseLeave, onMouseDown, onMouseUp, children: !isPlaying ? (0, import_jsx_runtime75.jsx)(CarbonPlayFilledAlt, {}) : (0, import_jsx_runtime75.jsx)(CarbonPauseFilled, {}) });\n};\nvar ImageRenderer = (() => import_react45.default.forwardRef(function Image_Renderer(props, ref) {\n  const { style, src, alt, className, height, width } = props;\n  const [error, setError] = (0, import_react45.useState)(false);\n  if (error) {\n    return (0, import_jsx_runtime75.jsx)(LinkPlayer, { style, src, alt, ref, className });\n  }\n  return (0, import_jsx_runtime75.jsx)(\"img\", { style, src: src ?? void 0, alt, ref, className, height, width, onError: () => {\n    setError(true);\n  } });\n}))();\nvar VideoPlayer = (() => import_react45.default.forwardRef(function Video_Player({ src, alt, poster, requireInteraction, style, width, height, controls, className }, ref) {\n  const videoRef = (0, import_react45.useRef)(null);\n  const [playing, setPlaying] = (0, import_react45.useState)(!requireInteraction);\n  const [muted, setMuted] = (0, import_react45.useState)(true);\n  const [error, setError] = (0, import_react45.useState)(false);\n  (0, import_react45.useEffect)(() => {\n    if (videoRef.current) {\n      if (playing) {\n        try {\n          videoRef.current.play();\n        } catch (err) {\n          console.error(\"error playing video\", err);\n        }\n      } else {\n        try {\n          videoRef.current.pause();\n          videoRef.current.currentTime = 0;\n        } catch (err) {\n          console.error(\"error pausing video\", err);\n        }\n      }\n    }\n  }, [playing]);\n  if (error) {\n    return (0, import_jsx_runtime75.jsx)(LinkPlayer, { style, src, alt, ref, className });\n  }\n  return (0, import_jsx_runtime75.jsxs)(\"div\", { style: { position: \"relative\", ...style }, className, children: [(0, import_jsx_runtime75.jsx)(\"video\", { ref: mergeRefs2([videoRef, ref]), src: src ?? void 0, poster: poster ?? void 0, loop: true, playsInline: true, controlsList: \"nodownload\", muted, preload: poster ? \"metadata\" : \"auto\", onCanPlay: () => {\n    var _a;\n    if (playing) {\n      (_a = videoRef.current) == null ? void 0 : _a.play();\n    }\n  }, onError: () => {\n    setError(true);\n  }, width, height, controls, style: {\n    height: \"100%\",\n    width: \"100%\",\n    objectFit: \"contain\",\n    zIndex: 1,\n    transition: \"opacity .5s\",\n    opacity: !poster ? 1 : playing ? 1 : 0\n  } }), poster && (0, import_jsx_runtime75.jsx)(\"img\", { src: poster, style: {\n    objectFit: \"contain\",\n    pointerEvents: \"none\",\n    position: \"absolute\",\n    width: \"100%\",\n    height: \"100%\",\n    zIndex: 2,\n    transition: \"opacity .5s\",\n    opacity: playing ? 0 : 1,\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0\n  }, alt }), (0, import_jsx_runtime75.jsx)(PlayButton, { onClick: () => {\n    setPlaying((prev) => !prev);\n    setMuted(false);\n  }, isPlaying: playing })] });\n}))();\nvar AudioPlayer = (() => import_react45.default.forwardRef(function Audio_Player({ src, alt, poster, style, height, width, className, controls }, ref) {\n  const audioRef = (0, import_react45.useRef)(null);\n  const [playing, setPlaying] = (0, import_react45.useState)(false);\n  const [muted, setMuted] = (0, import_react45.useState)(true);\n  const [error, setError] = (0, import_react45.useState)(false);\n  (0, import_react45.useEffect)(() => {\n    if (audioRef.current) {\n      if (playing) {\n        audioRef.current.play();\n      } else {\n        audioRef.current.pause();\n        audioRef.current.currentTime = 0;\n      }\n    }\n  }, [playing]);\n  if (error) {\n    return (0, import_jsx_runtime75.jsx)(LinkPlayer, { style, src, alt, ref, className });\n  }\n  return (0, import_jsx_runtime75.jsxs)(\"div\", { style: { position: \"relative\", ...style }, className, children: [poster ? (0, import_jsx_runtime75.jsx)(\"img\", { height, width, src: poster, style: {\n    height: \"100%\",\n    width: \"100%\",\n    pointerEvents: \"none\",\n    objectFit: \"contain\"\n  }, alt }) : (0, import_jsx_runtime75.jsx)(\"div\", { style: {\n    width: \"100%\",\n    height: \"100%\",\n    display: \"grid\",\n    placeItems: \"center\",\n    pointerEvents: \"none\",\n    backgroundColor: \"#fff\",\n    color: \"rgb(138, 147, 155)\"\n  }, children: (0, import_jsx_runtime75.jsx)(CarbonDocumentAudio, { style: { height: \"64px\", width: \"64px\" } }) }), (0, import_jsx_runtime75.jsx)(PlayButton, { onClick: () => {\n    setPlaying((prev) => !prev);\n    setMuted(false);\n  }, isPlaying: playing }), (0, import_jsx_runtime75.jsx)(\"audio\", { ref: mergeRefs2([audioRef, ref]), src: src ?? void 0, loop: true, playsInline: true, controls, muted, preload: \"none\", controlsList: \"nodownload\", style: {\n    position: \"absolute\",\n    opacity: 0,\n    pointerEvents: \"none\",\n    zIndex: -1,\n    visibility: \"hidden\"\n  }, onError: () => {\n    setError(true);\n  } })] });\n}))();\nvar IframePlayer = (() => import_react45.default.forwardRef(function Iframe_Player({ src, alt, poster, requireInteraction, style, ...restProps }, ref) {\n  const [playing, setPlaying] = (0, import_react45.useState)(!requireInteraction);\n  return (0, import_jsx_runtime75.jsxs)(\"div\", { style: { position: \"relative\", ...style }, ...restProps, children: [(0, import_jsx_runtime75.jsx)(\"iframe\", { title: alt || \"thirdweb iframe player\", src: playing ? src ?? void 0 : void 0, ref, style: {\n    objectFit: \"contain\",\n    zIndex: 1,\n    height: \"100%\",\n    width: \"100%\",\n    transition: \"opacity .5s\",\n    opacity: !poster ? 1 : playing ? 1 : 0,\n    border: \"none\"\n  }, sandbox: \"allow-scripts\", allow: \"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" }), poster && (0, import_jsx_runtime75.jsx)(\"img\", { src: poster, style: {\n    objectFit: \"contain\",\n    pointerEvents: \"none\",\n    position: \"absolute\",\n    width: \"100%\",\n    height: \"100%\",\n    zIndex: 2,\n    transition: \"opacity .5s\",\n    opacity: playing ? 0 : 1,\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0\n  }, alt }), (0, import_jsx_runtime75.jsx)(PlayButton, { onClick: () => {\n    setPlaying((prev) => !prev);\n  }, isPlaying: playing })] });\n}))();\nvar LinkPlayer = (() => import_react45.default.forwardRef(function Link_Player({ src, alt, style, className }, ref) {\n  return (0, import_jsx_runtime75.jsx)(\"div\", { style: { position: \"relative\", ...style }, className, children: (0, import_jsx_runtime75.jsx)(\"div\", { style: {\n    width: \"100%\",\n    height: \"100%\",\n    display: \"grid\",\n    placeItems: \"center\",\n    backgroundColor: \"#fff\",\n    color: \"rgb(138, 147, 155)\"\n  }, children: (0, import_jsx_runtime75.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"8px\",\n    alignItems: \"center\",\n    flexWrap: \"nowrap\"\n  }, children: [(0, import_jsx_runtime75.jsx)(CarbonDocumentUnknown, { style: {\n    maxWidth: \"128px\",\n    minWidth: \"48px\",\n    width: \"50%\",\n    aspectRatio: \"1\"\n  } }), (0, import_jsx_runtime75.jsx)(\"a\", { rel: \"noopener noreferrer\", style: {\n    textDecoration: \"underline\",\n    color: \"rgb(138, 147, 155)\"\n  }, href: src ?? void 0, target: \"_blank\", ref, children: alt || \"File\" })] }) }) });\n}))();\nfunction mergeRefs2(refs) {\n  return (value) => {\n    for (const ref of refs) {\n      if (typeof ref === \"function\") {\n        ref(value);\n      } else if (ref != null) {\n        ref.current = value;\n      }\n    }\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/ViewNFTs.js\nvar fetchNFTs = async (client, chain, nftAddress, owner) => {\n  const contract = getContract({\n    address: nftAddress,\n    chain,\n    client\n  });\n  const erc721 = await isERC721({ contract }).catch(() => {\n    throw new Error(`Failed to read contract bytecode for NFT ${nftAddress} on ${chain.name || chain.id}, is this NFT on the correct chain?`);\n  });\n  if (erc721) {\n    const result = await getOwnedNFTs({\n      contract,\n      owner\n    });\n    return result.map((nft) => ({\n      ...nft,\n      quantityOwned: BigInt(1),\n      address: contract.address,\n      chain\n    }));\n  }\n  const erc1155 = await isERC1155({ contract }).catch(() => false);\n  if (erc1155) {\n    const result = await getOwnedNFTs2({\n      contract,\n      address: owner\n    });\n    return result.map((nft) => ({ ...nft, address: contract.address, chain }));\n  }\n  throw new Error(`NFT at ${nftAddress} on chain ${chain.id} is not ERC721 or ERC1155, or does not properly identify itself as supporting either interface`);\n};\nfunction ViewNFTs(props) {\n  return (0, import_jsx_runtime76.jsxs)(Container, { style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime76.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime76.jsx)(ModalHeader, { title: props.connectLocale.viewFunds.viewNFTs, onBack: props.onBack }) }), (0, import_jsx_runtime76.jsx)(Line, {}), (0, import_jsx_runtime76.jsxs)(Container, { px: \"sm\", scrollY: true, style: {\n    maxHeight: \"500px\"\n  }, children: [(0, import_jsx_runtime76.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime76.jsx)(ViewNFTsContent, { ...props })] })] });\n}\nfunction ViewNFTsContent(props) {\n  const activeAccount = useActiveAccount();\n  const activeChain = useActiveWalletChain();\n  const nftList = (0, import_react46.useMemo)(() => {\n    const nfts = [];\n    if (!props.supportedNFTs)\n      return [];\n    for (const chainId in props.supportedNFTs) {\n      if (props.supportedNFTs[chainId]) {\n        nfts.push(...props.supportedNFTs[chainId].map((address) => ({\n          address,\n          chain: getCachedChain(Number.parseInt(chainId))\n        })));\n      }\n    }\n    return nfts;\n  }, [props.supportedNFTs]);\n  const results = useQueries({\n    queries: nftList.map((nft) => ({\n      queryKey: [\"readContract\", nft.chain.id, nft.address],\n      queryFn: () => {\n        if (!activeAccount) {\n          throw new Error(\"No active account\");\n        }\n        return fetchNFTs(props.client, nft.chain, nft.address, activeAccount.address);\n      },\n      enabled: !!activeAccount\n    }))\n  });\n  if (!(activeChain == null ? void 0 : activeChain.id) || !(activeAccount == null ? void 0 : activeAccount.address)) {\n    return null;\n  }\n  return (0, import_jsx_runtime76.jsxs)(import_jsx_runtime76.Fragment, { children: [(0, import_jsx_runtime76.jsx)(Container, { style: {\n    display: \"grid\",\n    gridTemplateColumns: \"1fr 1fr\",\n    gap: \"12px\"\n  }, children: results.map((result, index2) => {\n    var _a, _b, _c;\n    if (result.error) {\n      console.error(result.error);\n      return null;\n    }\n    return result.isLoading || !result.data ? (0, import_jsx_runtime76.jsx)(Skeleton, { height: \"150px\", width: \"150px\" }, `${(_b = (_a = nftList[index2]) == null ? void 0 : _a.chain) == null ? void 0 : _b.id}:${(_c = nftList[index2]) == null ? void 0 : _c.address}`) : result.data.map((nft) => (0, import_jsx_runtime76.jsx)(NftCard, { ...nft, client: props.client, chain: nft.chain, theme: props.theme }, `${nft.chain.id}:${nft.address}:${nft.id}`));\n  }) }), (0, import_jsx_runtime76.jsx)(Spacer, { y: \"lg\" })] });\n}\nfunction NftCard(props) {\n  var _a;\n  const theme = typeof props.theme === \"string\" ? props.theme : props.theme.type;\n  const themeObject = typeof props.theme === \"string\" ? void 0 : props.theme;\n  const content = (0, import_jsx_runtime76.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"4px\",\n    alignItems: \"center\"\n  }, children: [(0, import_jsx_runtime76.jsxs)(\"div\", { style: {\n    position: \"relative\",\n    display: \"flex\",\n    flexShrink: 0,\n    alignItems: \"center\",\n    width: \"150px\",\n    height: \"150px\",\n    borderRadius: \"8px\",\n    overflow: \"hidden\",\n    background: theme === \"light\" ? \"rgba(0, 0, 0, 0.10)\" : \"rgba(0, 0, 0, 0.20)\"\n  }, children: [props.metadata.image && (0, import_jsx_runtime76.jsx)(MediaRenderer, { src: props.metadata.image, style: {\n    width: \"100%\",\n    height: \"100%\"\n  }, client: props.client }), props.quantityOwned > 1 && (0, import_jsx_runtime76.jsx)(\"div\", { style: {\n    position: \"absolute\",\n    bottom: \"4px\",\n    right: \"4px\",\n    background: ((_a = themeObject == null ? void 0 : themeObject.colors) == null ? void 0 : _a.modalBg) ?? (theme === \"light\" ? \"white\" : \"black\"),\n    fontSize: \"10px\",\n    padding: \"4px 4px\",\n    width: \"20px\",\n    height: \"20px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: \"100%\"\n  }, children: props.quantityOwned.toString() }), props.chain.icon && (0, import_jsx_runtime76.jsx)(\"img\", { alt: props.chain.name, style: {\n    position: \"absolute\",\n    bottom: \"4px\",\n    left: \"4px\",\n    width: \"20px\",\n    height: \"20px\"\n  }, src: props.chain.icon.url })] }), (0, import_jsx_runtime76.jsx)(\"span\", { style: { fontWeight: 600 }, children: props.metadata.name })] });\n  if (props.chain.name) {\n    return (0, import_jsx_runtime76.jsx)(\"a\", { href: `https://thirdweb.com/${props.chain.id}/${props.address}/nfts/${props.id}`, target: \"_blank\", rel: \"noreferrer\", children: content });\n  }\n  return content;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/ViewTokens.js\nvar import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1);\nfunction ViewTokens(props) {\n  return (0, import_jsx_runtime77.jsxs)(Container, { style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime77.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime77.jsx)(ModalHeader, { title: props.connectLocale.viewFunds.title, onBack: props.onBack }) }), (0, import_jsx_runtime77.jsx)(Line, {}), (0, import_jsx_runtime77.jsxs)(Container, { px: \"sm\", scrollY: true, style: {\n    maxHeight: \"500px\"\n  }, children: [(0, import_jsx_runtime77.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime77.jsx)(ViewTokensContent, { ...props }), (0, import_jsx_runtime77.jsx)(Spacer, { y: \"lg\" })] })] });\n}\nfunction ViewTokensContent(props) {\n  const activeChain = useActiveWalletChain();\n  if (!activeChain) {\n    return null;\n  }\n  const supportedTokens = props.supportedTokens || defaultTokens;\n  const tokenList = ((activeChain == null ? void 0 : activeChain.id) ? supportedTokens[activeChain.id] : void 0) || [];\n  return (0, import_jsx_runtime77.jsxs)(import_jsx_runtime77.Fragment, { children: [(0, import_jsx_runtime77.jsx)(TokenInfo, { token: NATIVE_TOKEN, chain: activeChain, client: props.client }), tokenList.map((token) => {\n    return (0, import_jsx_runtime77.jsx)(TokenInfo, { token, chain: activeChain, client: props.client }, token.address);\n  })] });\n}\nfunction TokenInfo(props) {\n  var _a;\n  const account = useActiveAccount();\n  const tokenBalanceQuery = useWalletBalance({\n    address: account == null ? void 0 : account.address,\n    chain: props.chain,\n    tokenAddress: isNativeToken(props.token) ? void 0 : props.token.address,\n    client: props.client\n  });\n  const tokenName = isNativeToken(props.token) ? (_a = tokenBalanceQuery.data) == null ? void 0 : _a.name : props.token.name;\n  return (0, import_jsx_runtime77.jsxs)(Container, { flex: \"row\", gap: \"sm\", p: \"sm\", children: [(0, import_jsx_runtime77.jsx)(TokenIcon, { token: props.token, chain: props.chain, size: \"lg\", client: props.client }), (0, import_jsx_runtime77.jsxs)(Container, { flex: \"column\", gap: \"xxs\", children: [tokenName ? (0, import_jsx_runtime77.jsx)(Text, { size: \"sm\", color: \"primaryText\", children: tokenName }) : (0, import_jsx_runtime77.jsx)(Skeleton, { height: fontSize.md, width: \"150px\" }), tokenBalanceQuery.data ? (0, import_jsx_runtime77.jsxs)(Text, { size: \"xs\", children: [\" \", formatTokenBalance(tokenBalanceQuery.data)] }) : (0, import_jsx_runtime77.jsx)(Skeleton, { height: fontSize.xs, width: \"100px\" })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/ViewAssets.js\nvar TokenTab = {\n  label: (0, import_jsx_runtime78.jsxs)(\"span\", { className: \"flex gap-2\", children: [(0, import_jsx_runtime78.jsx)(CoinsIcon, { size: iconSize.sm }), \" Tokens\"] }),\n  value: \"Tokens\"\n};\nvar NftTab = {\n  label: (0, import_jsx_runtime78.jsxs)(\"span\", { className: \"flex gap-2\", children: [(0, import_jsx_runtime78.jsx)(ImageIcon, { size: iconSize.sm }), \" NFTs\"] }),\n  value: \"NFTs\"\n};\nfunction ViewAssets(props) {\n  var _a;\n  const { connectLocale } = props;\n  const options = (0, import_react47.useMemo)(() => {\n    if (!props.assetTabs) {\n      return [TokenTab, NftTab];\n    }\n    if (!props.assetTabs.length) {\n      return [];\n    }\n    const tabs = [];\n    for (const item of props.assetTabs) {\n      if (item === \"token\") {\n        tabs.push(TokenTab);\n      } else if (item === \"nft\") {\n        tabs.push(NftTab);\n      }\n    }\n    return tabs;\n  }, [props.assetTabs]);\n  const [activeTab, setActiveTab] = (0, import_react47.useState)(((_a = options[0]) == null ? void 0 : _a.value) || \"Tokens\");\n  return (0, import_jsx_runtime78.jsxs)(Container, { animate: \"fadein\", style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime78.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime78.jsx)(ModalHeader, { title: connectLocale.viewFunds.title, onBack: props.onBack }) }), (0, import_jsx_runtime78.jsx)(Line, {}), (0, import_jsx_runtime78.jsxs)(Container, { px: \"lg\", scrollY: true, style: {\n    minHeight: \"330px\"\n  }, children: [(0, import_jsx_runtime78.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime78.jsx)(Tabs, { options, selected: activeTab, onSelect: setActiveTab, children: (0, import_jsx_runtime78.jsxs)(Container, { scrollY: true, style: {\n    maxHeight: \"300px\"\n  }, children: [activeTab === \"Tokens\" && (0, import_jsx_runtime78.jsx)(ViewTokensContent, { client: props.client, connectLocale, supportedTokens: props.supportedTokens }), activeTab === \"NFTs\" && (0, import_jsx_runtime78.jsx)(ViewNFTsContent, { supportedNFTs: props.supportedNFTs, client: props.client, theme: props.theme, connectLocale })] }) }), (0, import_jsx_runtime78.jsx)(Spacer, { y: \"lg\" })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js\nvar import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1);\nvar import_react48 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/WalletConnectDisconnectScreen.js\nvar import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1);\nfunction WalletConnectDisconnectScreen(props) {\n  return (0, import_jsx_runtime79.jsxs)(Container, { style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime79.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime79.jsx)(ModalHeader, { title: \"Connect an App\", onBack: props.onBack }) }), (0, import_jsx_runtime79.jsx)(Line, {}), (0, import_jsx_runtime79.jsx)(Container, { px: \"lg\", scrollY: true, style: {\n    maxHeight: \"500px\"\n  }, children: (0, import_jsx_runtime79.jsxs)(Container, { py: \"lg\", style: { position: \"relative\" }, children: [(0, import_jsx_runtime79.jsx)(Container, { py: \"md\", children: (0, import_jsx_runtime79.jsx)(WalletLogoSpinner, { client: props.client, error: !!props.error, id: \"walletConnect\", hideSpinner: true }) }), (0, import_jsx_runtime79.jsx)(Container, { animate: \"fadein\", style: {\n    animationDuration: \"200ms\"\n  }, children: !props.error ? (0, import_jsx_runtime79.jsxs)(import_jsx_runtime79.Fragment, { children: [(0, import_jsx_runtime79.jsxs)(Text, { balance: true, center: true, multiline: true, size: \"md\", children: [\"Connected to \", props.session.origin ?? \"another app.\"] }), (0, import_jsx_runtime79.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime79.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: () => {\n    props.disconnect();\n  }, children: \"Disconnect\" })] }) : (0, import_jsx_runtime79.jsxs)(import_jsx_runtime79.Fragment, { children: [(0, import_jsx_runtime79.jsx)(Text, { center: true, balance: true, multiline: true, size: \"sm\", children: props.error }), (0, import_jsx_runtime79.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime79.jsx)(Container, { flex: \"row\", center: \"x\", animate: \"fadein\", children: (0, import_jsx_runtime79.jsxs)(Button, { fullWidth: true, variant: \"accent\", onClick: () => props.disconnect(), style: {\n    gap: spacing.xs,\n    alignItems: \"center\"\n  }, children: [(0, import_jsx_runtime79.jsx)(ReloadIcon, { width: iconSize.sm, height: iconSize.sm }), \"Retry\"] }) })] }) })] }) })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/WalletConnectReceiverScreen.js\nfunction WalletConnectReceiverScreen(props) {\n  const activeWallet = useActiveWallet();\n  const [loading, setLoading] = (0, import_react48.useState)(false);\n  const [errorConnecting, setErrorConnecting] = (0, import_react48.useState)(false);\n  const queryClient = useQueryClient();\n  const { data: walletConnectClient } = useQuery({\n    queryKey: [\"walletConnectClient\"],\n    queryFn: async () => {\n      if (!activeWallet)\n        return;\n      try {\n        const client = await createWalletConnectClient({\n          wallet: activeWallet,\n          client: props.client,\n          chains: props.chains,\n          onConnect: () => {\n            setLoading(false);\n            queryClient.invalidateQueries({\n              queryKey: [\"walletConnectSession\"]\n            });\n          },\n          onDisconnect: () => {\n            setLoading(false);\n            queryClient.invalidateQueries({\n              queryKey: [\"walletConnectSession\"]\n            });\n          },\n          onError: (error) => {\n            setErrorConnecting(error.message);\n            setLoading(false);\n          }\n        });\n        return client;\n      } catch {\n        setErrorConnecting(\"Failed to establish WalletConnect connection\");\n        return;\n      }\n    },\n    retry: false,\n    enabled: !!activeWallet\n  });\n  const { data: session, refetch: refetchSession } = useQuery({\n    queryKey: [\"walletConnectSession\"],\n    queryFn: async () => {\n      if (!walletConnectClient)\n        return null;\n      const sessions = await getActiveWalletConnectSessions();\n      return sessions[0] || null;\n    },\n    enabled: !!walletConnectClient\n  });\n  const { mutateAsync: disconnect } = useMutation({\n    mutationFn: async () => {\n      if (!walletConnectClient || !session)\n        throw new Error(\"No session\");\n      await disconnectWalletConnectSession({\n        session,\n        walletConnectClient\n      });\n    },\n    onSuccess: () => {\n      setErrorConnecting(false);\n      queryClient.invalidateQueries({\n        queryKey: [\"walletConnectSession\"]\n      });\n      refetchSession();\n    },\n    onError: (error) => {\n      console.error(error);\n      setErrorConnecting(error.message);\n    }\n  });\n  if (session) {\n    return (0, import_jsx_runtime80.jsx)(WalletConnectDisconnectScreen, { disconnect, error: errorConnecting, ...props, session });\n  }\n  return (0, import_jsx_runtime80.jsxs)(Container, { style: {\n    minHeight: \"300px\"\n  }, children: [(0, import_jsx_runtime80.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime80.jsx)(ModalHeader, { title: \"Connect an App\", onBack: props.onBack }) }), (0, import_jsx_runtime80.jsx)(Line, {}), (0, import_jsx_runtime80.jsx)(Container, { px: \"lg\", scrollY: true, style: {\n    maxHeight: \"500px\"\n  }, children: (0, import_jsx_runtime80.jsxs)(Container, { py: \"sm\", style: { position: \"relative\" }, children: [(0, import_jsx_runtime80.jsx)(Container, { py: \"md\", children: (0, import_jsx_runtime80.jsx)(WalletLogoSpinner, { client: props.client, error: !!errorConnecting, id: \"walletConnect\", hideSpinner: !loading }) }), (0, import_jsx_runtime80.jsx)(Container, { animate: \"fadein\", style: {\n    animationDuration: \"200ms\"\n  }, children: !errorConnecting ? (0, import_jsx_runtime80.jsxs)(import_jsx_runtime80.Fragment, { children: [(0, import_jsx_runtime80.jsx)(Text, { balance: true, center: true, multiline: true, size: \"sm\", children: \"Copy your connection URI from the external app.\" }), (0, import_jsx_runtime80.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime80.jsx)(InputSelectionUI, { type: \"text\", disabled: loading || !!errorConnecting || !walletConnectClient, onSelect: async (value) => {\n    setLoading(true);\n    if (!walletConnectClient) {\n      setErrorConnecting(\"No WalletConnect client found\");\n    } else {\n      try {\n        createWalletConnectSession({\n          uri: value,\n          walletConnectClient\n        });\n      } catch {\n        setErrorConnecting(\"Error creating WalletConnect session\");\n      }\n    }\n  }, placeholder: \"WalletConnect URI\", name: \"wcUri\", emptyErrorMessage: \"Please enter a valid URI\", submitButtonText: \"Connect\" })] }) : (0, import_jsx_runtime80.jsxs)(import_jsx_runtime80.Fragment, { children: [(0, import_jsx_runtime80.jsx)(Text, { center: true, balance: true, multiline: true, size: \"sm\", children: errorConnecting }), (0, import_jsx_runtime80.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime80.jsx)(Container, { flex: \"row\", center: \"x\", animate: \"fadein\", children: (0, import_jsx_runtime80.jsxs)(Button, { fullWidth: true, variant: \"accent\", onClick: () => setErrorConnecting(false), style: {\n    gap: spacing.xs,\n    alignItems: \"center\"\n  }, children: [(0, import_jsx_runtime80.jsx)(ReloadIcon, { width: iconSize.sm, height: iconSize.sm }), \"Retry\"] }) })] }) })] }) }), (0, import_jsx_runtime80.jsxs)(Container, { children: [(0, import_jsx_runtime80.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime80.jsx)(Line, {}), (0, import_jsx_runtime80.jsx)(Container, { flex: \"row\", center: \"x\", p: \"lg\", children: (0, import_jsx_runtime80.jsx)(\"a\", { href: \"https://blog.thirdweb.com/p/a62c0ef4-1d8f-424d-95b9-a006e5239849/\", children: (0, import_jsx_runtime80.jsx)(Button, { variant: \"link\", onClick: () => {\n  }, children: \"Where do I find the URI?\" }) }) })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Details.js\nvar TW_CONNECTED_WALLET = \"tw-connected-wallet\";\nvar LocalhostChainId = 1337;\nvar ConnectedWalletDetails = (props) => {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n  const { connectLocale: locale, client } = props;\n  const setRootEl = (0, import_react49.useContext)(SetRootElementContext);\n  const activeAccount = useActiveAccount();\n  const walletChain = useActiveWalletChain();\n  const { pfp, name, balanceQuery } = useConnectedWalletDetails(client, walletChain, activeAccount, (_a = props.detailsButton) == null ? void 0 : _a.displayBalanceToken);\n  function closeModal() {\n    setRootEl(null);\n  }\n  function openModal() {\n    var _a2, _b2;\n    setRootEl((0, import_jsx_runtime81.jsx)(DetailsModal, { client, locale, detailsModal: props.detailsModal, theme: props.theme, supportedTokens: props.supportedTokens, supportedNFTs: props.supportedNFTs, closeModal, onDisconnect: props.onDisconnect, chains: props.chains, displayBalanceToken: (_a2 = props.detailsButton) == null ? void 0 : _a2.displayBalanceToken, connectOptions: props.connectOptions, assetTabs: (_b2 = props.detailsModal) == null ? void 0 : _b2.assetTabs }));\n  }\n  const isNetworkMismatch = props.chain && walletChain && walletChain.id !== props.chain.id;\n  if ((_b = props.detailsButton) == null ? void 0 : _b.render) {\n    return (\n      // biome-ignore lint/a11y/useKeyWithClickEvents: ok\n      (0, import_jsx_runtime81.jsx)(\"div\", { onClick: openModal, children: (0, import_jsx_runtime81.jsx)(props.detailsButton.render, {}) })\n    );\n  }\n  if (props.chain && isNetworkMismatch) {\n    return (0, import_jsx_runtime81.jsx)(SwitchNetworkButton2, { style: (_c = props.switchButton) == null ? void 0 : _c.style, className: (_d = props.switchButton) == null ? void 0 : _d.className, switchNetworkBtnTitle: (_e = props.switchButton) == null ? void 0 : _e.label, targetChain: props.chain, connectLocale: locale });\n  }\n  const avatarSrc = ((_f = props.detailsButton) == null ? void 0 : _f.connectedAccountAvatarUrl) || pfp;\n  const combinedClassName = `${TW_CONNECTED_WALLET} ${((_g = props.detailsButton) == null ? void 0 : _g.className) || \"\"}`;\n  return (0, import_jsx_runtime81.jsxs)(WalletInfoButton, { type: \"button\", className: combinedClassName, style: (_h = props.detailsButton) == null ? void 0 : _h.style, \"data-test\": \"connected-wallet-details\", onClick: openModal, children: [(0, import_jsx_runtime81.jsx)(Container, { style: {\n    borderRadius: \"100%\",\n    overflow: \"hidden\",\n    width: \"35px\",\n    height: \"35px\"\n  }, children: avatarSrc ? (0, import_jsx_runtime81.jsx)(\"img\", { alt: \"\", src: avatarSrc, style: {\n    width: \"100%\",\n    height: \"100%\"\n  } }) : activeAccount && (0, import_jsx_runtime81.jsx)(Blobbie, { address: activeAccount.address, size: 35 }) }), (0, import_jsx_runtime81.jsxs)(Container, { flex: \"column\", gap: \"4xs\", style: {\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    borderRadius: `0 ${radius.md} ${radius.md} 0`\n  }, children: [(0, import_jsx_runtime81.jsx)(Text, { size: \"xs\", color: \"primaryText\", weight: 500, className: `${TW_CONNECTED_WALLET}__address`, children: ((_i = props.detailsButton) == null ? void 0 : _i.connectedAccountName) ?? name }), balanceQuery.data ? (0, import_jsx_runtime81.jsxs)(Text, { className: `${TW_CONNECTED_WALLET}__balance`, size: \"xs\", color: \"secondaryText\", weight: 400, children: [formatBalanceOnButton(Number(balanceQuery.data.displayValue)), \" \", balanceQuery.data.symbol] }) : (0, import_jsx_runtime81.jsx)(Skeleton, { height: fontSize.xs, width: \"70px\" })] })] });\n};\nfunction DetailsModal(props) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v;\n  const [screen, setScreen] = (0, import_react49.useState)(\"main\");\n  const { disconnect } = useDisconnect();\n  const [isOpen, setIsOpen] = (0, import_react49.useState)(true);\n  const { client, locale } = props;\n  const walletChain = useActiveWalletChain();\n  const activeAccount = useActiveAccount();\n  const { pfp, name, balanceQuery } = useConnectedWalletDetails(client, walletChain, activeAccount, props.displayBalanceToken);\n  const theme = parseTheme(props.theme);\n  const activeWallet = useActiveWallet();\n  const chainIconQuery = useChainIconUrl(walletChain);\n  const chainNameQuery = useChainName(walletChain);\n  const chainFaucetsQuery = useChainFaucets(walletChain);\n  const disableSwitchChain = !(activeWallet == null ? void 0 : activeWallet.switchChain);\n  const screenSetup = useSetupScreen({\n    size: \"compact\",\n    welcomeScreen: void 0,\n    wallets: activeWallet ? [activeWallet] : []\n  });\n  function closeModal() {\n    setIsOpen(false);\n    onModalUnmount(() => {\n      props.closeModal();\n    });\n  }\n  function handleDisconnect(info) {\n    setIsOpen(false);\n    props.closeModal();\n    props.onDisconnect(info);\n  }\n  const networkSwitcherButton = (0, import_jsx_runtime81.jsxs)(MenuButton, { type: \"button\", disabled: disableSwitchChain, onClick: () => {\n    setScreen(\"network-switcher\");\n  }, \"data-variant\": \"primary\", children: [(0, import_jsx_runtime81.jsx)(\"div\", { style: {\n    display: \"flex\",\n    alignItems: \"center\",\n    position: \"relative\"\n  }, children: !chainIconQuery.isLoading ? (0, import_jsx_runtime81.jsx)(ChainIcon, { chainIconUrl: chainIconQuery.url, size: iconSize.md, active: true, client }) : (0, import_jsx_runtime81.jsx)(Skeleton, { height: `${iconSize.md}px`, width: `${iconSize.md}px` }) }), chainNameQuery.isLoading ? (0, import_jsx_runtime81.jsx)(Skeleton, { height: \"16px\", width: \"150px\" }) : (0, import_jsx_runtime81.jsxs)(Text, { color: \"primaryText\", size: \"md\", multiline: true, children: [chainNameQuery.name || `Unknown chain #${walletChain == null ? void 0 : walletChain.id}`, (0, import_jsx_runtime81.jsxs)(Text, { color: \"secondaryText\", size: \"xs\", children: [balanceQuery.data ? formatNumber(Number(balanceQuery.data.displayValue), 9) : (0, import_jsx_runtime81.jsx)(Skeleton, { height: \"1em\", width: \"100px\" }), \" \", (_a = balanceQuery.data) == null ? void 0 : _a.symbol] })] }), (0, import_jsx_runtime81.jsx)(StyledChevronRightIcon, { width: iconSize.sm, height: iconSize.sm, style: {\n    flexShrink: 0,\n    marginLeft: \"auto\"\n  } })] });\n  const avatarSrc = ((_b = props.detailsModal) == null ? void 0 : _b.connectedAccountAvatarUrl) ?? pfp;\n  const { hideSendFunds, hideReceiveFunds, hideBuyFunds } = props.detailsModal || {};\n  const hideAllButtons = hideSendFunds && hideReceiveFunds && hideBuyFunds;\n  const avatarContent = (0, import_jsx_runtime81.jsxs)(Container, { style: {\n    position: \"relative\",\n    height: `${iconSize.xl}px`,\n    width: `${iconSize.xl}px`\n  }, children: [(0, import_jsx_runtime81.jsx)(Container, { style: {\n    width: \"100%\",\n    height: \"100%\",\n    borderRadius: \"100%\",\n    overflow: \"hidden\"\n  }, children: avatarSrc ? (0, import_jsx_runtime81.jsx)(\"img\", { src: avatarSrc, style: {\n    width: iconSize.xxl,\n    height: iconSize.xxl\n  }, alt: \"\" }) : activeAccount && (0, import_jsx_runtime81.jsx)(Blobbie, { address: activeAccount.address, size: Number(iconSize.xxl) }) }), !((_c = props.detailsModal) == null ? void 0 : _c.hideSwitchWallet) ? (0, import_jsx_runtime81.jsx)(Container, { style: {\n    position: \"absolute\",\n    bottom: -2,\n    right: -2\n  }, children: (0, import_jsx_runtime81.jsx)(IconContainer, { style: {\n    background: theme.colors.modalBg\n  }, padding: \"4px\", children: activeWallet && (0, import_jsx_runtime81.jsx)(WalletImage, { style: { borderRadius: 0 }, id: activeWallet.id, client, size: \"12\" }) }) }) : null] });\n  let content = (0, import_jsx_runtime81.jsxs)(\"div\", { children: [(0, import_jsx_runtime81.jsx)(Spacer, { y: \"xs\" }), (0, import_jsx_runtime81.jsxs)(Container, { px: \"lg\", gap: \"sm\", flex: \"row\", center: \"y\", style: {\n    paddingTop: spacing.lg,\n    paddingBottom: hideAllButtons ? spacing.md : spacing.lg\n  }, children: [((_d = props.detailsModal) == null ? void 0 : _d.hideSwitchWallet) ? avatarContent : (0, import_jsx_runtime81.jsx)(ToolTip, { tip: \"Switch wallet\", children: (0, import_jsx_runtime81.jsx)(\"div\", { style: {\n    cursor: \"pointer\"\n  }, onKeyDown: (e) => {\n    if (e.key === \"w\") {\n      setScreen(\"wallet-manager\");\n    }\n  }, onClick: () => {\n    setScreen(\"wallet-manager\");\n  }, children: avatarContent }) }), (0, import_jsx_runtime81.jsxs)(Container, { flex: \"column\", gap: \"3xs\", children: [(0, import_jsx_runtime81.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    gap: spacing.xxs,\n    alignItems: \"center\"\n  }, children: [(0, import_jsx_runtime81.jsx)(Text, { color: \"primaryText\", weight: 500, size: \"md\", children: ((_e = props.detailsModal) == null ? void 0 : _e.connectedAccountName) ?? name }), (0, import_jsx_runtime81.jsx)(IconButton, { children: (0, import_jsx_runtime81.jsx)(CopyIcon2, { text: (activeAccount == null ? void 0 : activeAccount.address) || \"\", tip: locale.copyAddress }) })] }), (0, import_jsx_runtime81.jsx)(InAppWalletUserInfo, { client, locale })] })] }), !hideAllButtons && (0, import_jsx_runtime81.jsxs)(import_jsx_runtime81.Fragment, { children: [(0, import_jsx_runtime81.jsx)(Container, { px: \"lg\", children: (0, import_jsx_runtime81.jsxs)(Container, { style: {\n    display: \"flex\",\n    gap: spacing.xs\n  }, children: [!hideSendFunds && (0, import_jsx_runtime81.jsxs)(Button, { variant: \"outline\", style: {\n    fontSize: fontSize.sm,\n    display: \"flex\",\n    gap: spacing.xs,\n    alignItems: \"center\",\n    padding: spacing.sm,\n    flex: 1\n  }, onClick: () => {\n    setScreen(\"send\");\n  }, children: [(0, import_jsx_runtime81.jsx)(Container, { color: \"secondaryText\", flex: \"row\", center: \"both\", children: (0, import_jsx_runtime81.jsx)(PaperPlaneIcon, { width: iconSize.sm, height: iconSize.sm, style: {\n    transform: \"translateY(-10%) rotate(-45deg) \"\n  } }) }), locale.send] }), !hideReceiveFunds && (0, import_jsx_runtime81.jsxs)(Button, { variant: \"outline\", style: {\n    fontSize: fontSize.sm,\n    display: \"flex\",\n    gap: spacing.xs,\n    alignItems: \"center\",\n    padding: spacing.sm,\n    flex: 1\n  }, onClick: () => {\n    setScreen(\"receive\");\n  }, children: [(0, import_jsx_runtime81.jsx)(Container, { color: \"secondaryText\", flex: \"row\", center: \"both\", children: (0, import_jsx_runtime81.jsx)(PinBottomIcon, { width: iconSize.sm, height: iconSize.sm }) }), locale.receive] }), !hideBuyFunds && (0, import_jsx_runtime81.jsxs)(Button, { variant: \"outline\", style: {\n    fontSize: fontSize.sm,\n    display: \"flex\",\n    gap: spacing.xs,\n    alignItems: \"center\",\n    padding: spacing.sm,\n    flex: 1\n  }, onClick: () => {\n    trackPayEvent({\n      event: \"details_modal_buy_click\",\n      client,\n      walletAddress: activeAccount == null ? void 0 : activeAccount.address,\n      walletType: activeWallet == null ? void 0 : activeWallet.id\n    });\n    setScreen(\"buy\");\n  }, children: [(0, import_jsx_runtime81.jsx)(Container, { color: \"secondaryText\", flex: \"row\", center: \"both\", children: (0, import_jsx_runtime81.jsx)(PlusIcon, { width: iconSize.sm, height: iconSize.sm }) }), locale.buy] })] }) }), (0, import_jsx_runtime81.jsx)(Spacer, { y: \"md\" })] }), (0, import_jsx_runtime81.jsxs)(Container, { px: \"md\", children: [(0, import_jsx_runtime81.jsxs)(Container, { flex: \"column\", style: {\n    gap: \"1px\"\n  }, children: [networkSwitcherButton, (0, import_jsx_runtime81.jsxs)(MenuButton, { onClick: () => {\n    setScreen(\"transactions\");\n  }, style: {\n    fontSize: fontSize.sm\n  }, children: [(0, import_jsx_runtime81.jsx)(TextAlignJustifyIcon, { width: iconSize.md, height: iconSize.md }), (0, import_jsx_runtime81.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", children: (0, import_jsx_runtime81.jsx)(Text, { color: \"primaryText\", children: locale.transactions }) })] }), (props.assetTabs === void 0 || props.assetTabs.length) && (0, import_jsx_runtime81.jsxs)(MenuButton, { onClick: () => {\n    setScreen(\"view-assets\");\n  }, style: {\n    fontSize: fontSize.sm\n  }, children: [(0, import_jsx_runtime81.jsx)(CoinsIcon, { size: iconSize.md }), (0, import_jsx_runtime81.jsx)(Text, { color: \"primaryText\", children: props.supportedNFTs ? locale.viewFunds.viewAssets : locale.viewFunds.title })] }), (0, import_jsx_runtime81.jsxs)(MenuButton, { onClick: () => {\n    setScreen(\"manage-wallet\");\n  }, style: {\n    fontSize: fontSize.sm\n  }, children: [(0, import_jsx_runtime81.jsx)(OutlineWalletIcon, { size: iconSize.md }), (0, import_jsx_runtime81.jsx)(Text, { color: \"primaryText\", children: props.locale.manageWallet.title })] }), (((_f = props.detailsModal) == null ? void 0 : _f.showTestnetFaucet) ?? false) && (chainFaucetsQuery.faucets.length > 0 || (walletChain == null ? void 0 : walletChain.id) === LocalhostChainId) && (0, import_jsx_runtime81.jsxs)(MenuLink, { href: chainFaucetsQuery.faucets ? chainFaucetsQuery.faucets[0] : \"#\", target: \"_blank\", as: \"a\", style: {\n    textDecoration: \"none\",\n    color: \"inherit\"\n  }, children: [(0, import_jsx_runtime81.jsx)(Container, { flex: \"row\", center: \"both\", color: \"secondaryText\", children: (0, import_jsx_runtime81.jsx)(FundsIcon, { size: iconSize.md }) }), locale.requestTestnetFunds] }), ((_g = props.detailsModal) == null ? void 0 : _g.footer) && (0, import_jsx_runtime81.jsx)(props.detailsModal.footer, { close: closeModal })] }), (0, import_jsx_runtime81.jsx)(Spacer, { y: \"md\" })] }), ((_h = props.detailsModal) == null ? void 0 : _h.hideDisconnect) !== true && (0, import_jsx_runtime81.jsxs)(Container, { children: [(0, import_jsx_runtime81.jsx)(Line, {}), (0, import_jsx_runtime81.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime81.jsx)(Container, { px: \"md\", children: (0, import_jsx_runtime81.jsxs)(MenuButton, { \"data-variant\": \"danger\", type: \"button\", onClick: () => {\n    if (activeWallet && activeAccount) {\n      disconnect(activeWallet);\n      handleDisconnect({\n        account: activeAccount,\n        wallet: activeWallet\n      });\n    }\n  }, children: [(0, import_jsx_runtime81.jsx)(ExitIcon, { width: iconSize.md, height: iconSize.md }), (0, import_jsx_runtime81.jsx)(Text, { color: \"primaryText\", children: locale.disconnectWallet })] }) }), (0, import_jsx_runtime81.jsx)(Spacer, { y: \"sm\" })] })] });\n  if (screen === \"transactions\") {\n    content = (0, import_jsx_runtime81.jsx)(TransactionsScreen, { title: locale.buy, onBack: () => setScreen(\"main\"), closeModal, locale, setScreen, client });\n  }\n  if (screen === \"wallet-manager\" && activeAccount && walletChain && activeWallet) {\n    content = (0, import_jsx_runtime81.jsx)(WalletManagerScreen, { onBack: () => setScreen(\"main\"), accountAbstraction: (_i = props.connectOptions) == null ? void 0 : _i.accountAbstraction, appMetadata: (_j = props.connectOptions) == null ? void 0 : _j.appMetadata, chain: (_k = props.connectOptions) == null ? void 0 : _k.chain, chains: (_l = props.connectOptions) == null ? void 0 : _l.chains, client, hiddenWallets: (_m = props.connectOptions) == null ? void 0 : _m.hiddenWallets, connectLocale: locale, recommendedWallets: (_n = props.connectOptions) == null ? void 0 : _n.recommendedWallets, showAllWallets: !!((_o = props.connectOptions) == null ? void 0 : _o.showAllWallets), walletConnect: (_p = props.connectOptions) == null ? void 0 : _p.walletConnect, wallets: (_q = props.connectOptions) == null ? void 0 : _q.wallets, activeAccount, activeChain: walletChain, activeWallet });\n  }\n  if (screen === \"network-switcher\") {\n    content = (0, import_jsx_runtime81.jsx)(\n      NetworkSelectorContent,\n      {\n        // add currently connected chain to the list of chains if it's not already in the list\n        chains: walletChain && props.chains.find((c) => c.id === walletChain.id) === void 0 ? [walletChain, ...props.chains] : props.chains,\n        closeModal,\n        networkSelector: (_r = props.detailsModal) == null ? void 0 : _r.networkSelector,\n        onBack: () => {\n          setScreen(\"main\");\n        },\n        connectLocale: locale,\n        client\n      }\n    );\n  } else if (screen === \"view-assets\") {\n    if (props.supportedNFTs) {\n      content = (0, import_jsx_runtime81.jsx)(ViewAssets, { supportedTokens: props.supportedTokens, supportedNFTs: props.supportedNFTs, onBack: () => {\n        setScreen(\"main\");\n      }, theme: props.theme, setScreen, client, connectLocale: locale, assetTabs: (_s = props.detailsModal) == null ? void 0 : _s.assetTabs });\n    } else {\n      content = (0, import_jsx_runtime81.jsx)(ViewTokens, { supportedTokens: props.supportedTokens, onBack: () => {\n        setScreen(\"main\");\n      }, client, connectLocale: locale });\n    }\n  } else if (screen === \"view-nfts\") {\n    content = (0, import_jsx_runtime81.jsx)(ViewNFTs, { theme: props.theme, supportedNFTs: props.supportedNFTs, onBack: () => {\n      setScreen(\"main\");\n    }, client, connectLocale: locale });\n  } else if (screen === \"view-tokens\") {\n    content = (0, import_jsx_runtime81.jsx)(ViewTokens, { supportedTokens: props.supportedTokens, onBack: () => {\n      setScreen(\"main\");\n    }, client, connectLocale: locale });\n  } else if (screen === \"private-key\") {\n    content = (0, import_jsx_runtime81.jsx)(PrivateKey, { theme: props.theme, onBack: () => {\n      setScreen(\"manage-wallet\");\n    }, wallet: activeWallet, client });\n  } else if (screen === \"manage-wallet\") {\n    content = (0, import_jsx_runtime81.jsx)(ManageWalletScreen, { onBack: () => {\n      setScreen(\"main\");\n    }, locale, closeModal, client, setScreen });\n  } else if (screen === \"wallet-connect-receiver\") {\n    content = (0, import_jsx_runtime81.jsx)(WalletConnectReceiverScreen, { onBack: () => {\n      setScreen(\"manage-wallet\");\n    }, chains: props.chains, client });\n  } else if (screen === \"linked-profiles\") {\n    content = (0, import_jsx_runtime81.jsx)(LinkedProfilesScreen, { onBack: () => setScreen(\"manage-wallet\"), client, locale, setScreen });\n  } else if (screen === \"link-profile\") {\n    content = (0, import_jsx_runtime81.jsx)(LinkProfileScreen, { onBack: () => {\n      setScreen(\"linked-profiles\");\n    }, client, locale, walletConnect: (_t = props.connectOptions) == null ? void 0 : _t.walletConnect });\n  } else if (screen === \"send\") {\n    content = (0, import_jsx_runtime81.jsx)(SendFunds, { supportedTokens: props.supportedTokens, onBack: () => {\n      setScreen(\"main\");\n    }, client, connectLocale: locale });\n  } else if (screen === \"receive\") {\n    content = (0, import_jsx_runtime81.jsx)(ReceiveFunds, { walletId: activeWallet == null ? void 0 : activeWallet.id, onBack: () => {\n      setScreen(\"main\");\n    }, client, connectLocale: locale });\n  } else if (screen === \"buy\") {\n    content = (0, import_jsx_runtime81.jsx)(LazyBuyScreen, { title: locale.buy, isEmbed: false, client, onBack: () => setScreen(\"main\"), supportedTokens: props.supportedTokens, connectLocale: locale, payOptions: ((_u = props.detailsModal) == null ? void 0 : _u.payOptions) || {\n      mode: \"fund_wallet\"\n    }, hiddenWallets: (_v = props.detailsModal) == null ? void 0 : _v.hiddenWallets, theme: typeof props.theme === \"string\" ? props.theme : props.theme.type, onDone: closeModal, connectOptions: void 0 });\n  }\n  return (0, import_jsx_runtime81.jsx)(CustomThemeProvider, { theme: props.theme, children: (0, import_jsx_runtime81.jsx)(WalletUIStatesProvider, { theme: props.theme, isOpen: false, children: (0, import_jsx_runtime81.jsx)(ScreenSetupContext.Provider, { value: screenSetup, children: (0, import_jsx_runtime81.jsx)(Modal, { size: \"compact\", open: isOpen, setOpen: (_open) => {\n    if (!_open) {\n      closeModal();\n    }\n  }, children: content }) }) }) });\n}\nfunction formatBalanceOnButton(num) {\n  return formatNumber(num, num < 1 ? 5 : 4);\n}\nvar WalletInfoButton = StyledButton((_) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    background: theme.colors.connectedButtonBg,\n    overflow: \"hidden\",\n    borderRadius: radius.md,\n    cursor: \"pointer\",\n    display: \"inline-flex\",\n    gap: spacing.xs,\n    padding: spacing.xs,\n    alignItems: \"center\",\n    minWidth: \"165px\",\n    height: \"50px\",\n    boxSizing: \"border-box\",\n    border: `1px solid ${theme.colors.borderColor}`,\n    WebkitTapHighlightColor: \"transparent\",\n    lineHeight: \"normal\",\n    animation: `${fadeInAnimation} 300ms ease`,\n    \"&:hover\": {\n      transition: \"background 250ms ease\",\n      background: theme.colors.connectedButtonBgHover\n    }\n  };\n});\nvar StyledChevronRightIcon = newStyled(\n  ChevronRightIcon\n)(() => {\n  const theme = useCustomTheme();\n  return {\n    color: theme.colors.secondaryText\n  };\n});\nfunction ConnectedToSmartWallet(props) {\n  const activeAccount = useActiveAccount();\n  const activeWallet = useActiveWallet();\n  const isSmartWallet = hasSmartAccount(activeWallet);\n  const chain = useActiveWalletChain();\n  const { client, connectLocale: locale } = props;\n  const [isSmartWalletDeployed, setIsSmartWalletDeployed] = (0, import_react49.useState)(false);\n  (0, import_react49.useEffect)(() => {\n    if (activeAccount && isSmartWallet && activeAccount.address && chain) {\n      const contract = getContract({\n        address: activeAccount.address,\n        chain,\n        client\n      });\n      isContractDeployed(contract).then((isDeployed) => {\n        setIsSmartWalletDeployed(isDeployed);\n      });\n    } else {\n      setIsSmartWalletDeployed(false);\n    }\n  }, [activeAccount, chain, client, isSmartWallet]);\n  const content = (0, import_jsx_runtime81.jsx)(Container, { flex: \"row\", gap: \"3xs\", center: \"y\", children: (0, import_jsx_runtime81.jsx)(Text, { size: \"xs\", weight: 400, color: \"secondaryText\", children: locale.connectedToSmartWallet }) });\n  if (chain && activeAccount && isSmartWallet) {\n    return (0, import_jsx_runtime81.jsx)(import_jsx_runtime81.Fragment, { children: isSmartWalletDeployed ? (0, import_jsx_runtime81.jsx)(Link, { color: \"secondaryText\", hoverColor: \"primaryText\", href: `https://thirdweb.com/${chain.id}/${activeAccount.address}/account`, target: \"_blank\", size: \"sm\", children: content }) : (0, import_jsx_runtime81.jsxs)(Text, { size: \"sm\", children: [\" \", content] }) });\n  }\n  return null;\n}\nfunction InAppWalletUserInfo(props) {\n  const { client, locale } = props;\n  const account = useActiveAccount();\n  const activeWallet = useActiveWallet();\n  const adminWallet = useAdminWallet();\n  const { data: walletInfo } = useWalletInfo(activeWallet == null ? void 0 : activeWallet.id);\n  const isSmartWallet = hasSmartAccount(activeWallet);\n  const { data: walletName } = useQuery({\n    queryKey: [\n      \"wallet-name\",\n      { walletId: activeWallet == null ? void 0 : activeWallet.id, walletAddress: account == null ? void 0 : account.address }\n    ],\n    queryFn: async () => {\n      const lastAuthProvider = await getLastAuthProvider(webLocalStorage);\n      if (lastAuthProvider === \"guest\") {\n        return \"Guest\";\n      }\n      if (lastAuthProvider && ((activeWallet == null ? void 0 : activeWallet.id) === \"inApp\" || (activeWallet == null ? void 0 : activeWallet.id) === \"smart\") && socialAuthOptions.includes(lastAuthProvider)) {\n        return lastAuthProvider.slice(0, 1).toUpperCase() + lastAuthProvider.slice(1);\n      }\n      return walletInfo == null ? void 0 : walletInfo.name;\n    },\n    enabled: !!(activeWallet == null ? void 0 : activeWallet.id) && !!walletInfo\n  });\n  const userInfoQuery = useQuery({\n    queryKey: [\"in-app-wallet-user\", client, account == null ? void 0 : account.address],\n    queryFn: async () => {\n      var _a;\n      const isInAppWallet2 = adminWallet && (adminWallet.id === \"inApp\" || adminWallet.id.startsWith(\"ecosystem.\"));\n      if (!isInAppWallet2) {\n        return null;\n      }\n      let ecosystem;\n      if (isEcosystemWallet(adminWallet)) {\n        const ecosystemWallet = adminWallet;\n        const partnerId = (_a = ecosystemWallet.getConfig()) == null ? void 0 : _a.partnerId;\n        ecosystem = {\n          id: ecosystemWallet.id,\n          partnerId\n        };\n      }\n      const { getUserEmail, getUserPhoneNumber } = await import(\"./auth-ZNEFTCXD.js\");\n      const [email, phone] = await Promise.all([\n        getUserEmail({\n          client,\n          ecosystem\n        }),\n        getUserPhoneNumber({\n          client,\n          ecosystem\n        })\n      ]);\n      return email || phone || null;\n    },\n    enabled: !!adminWallet\n  });\n  if (!userInfoQuery.data && isSmartWallet) {\n    return (0, import_jsx_runtime81.jsx)(ConnectedToSmartWallet, { client, connectLocale: locale });\n  }\n  if (userInfoQuery.data || walletName) {\n    return (0, import_jsx_runtime81.jsx)(Text, { size: \"xs\", weight: 400, children: userInfoQuery.data || walletName });\n  }\n  return (0, import_jsx_runtime81.jsx)(Skeleton, { width: \"50px\", height: \"10px\" });\n}\nfunction SwitchNetworkButton2(props) {\n  const switchChain = useSwitchActiveWalletChain();\n  const [switching, setSwitching] = (0, import_react49.useState)(false);\n  const locale = props.connectLocale;\n  const switchNetworkBtnTitle = props.switchNetworkBtnTitle ?? locale.switchNetwork;\n  return (0, import_jsx_runtime81.jsx)(Button, { className: `tw-connect-wallet--switch-network ${props.className || \"\"}`, variant: \"primary\", type: \"button\", \"data-is-loading\": switching, \"data-test\": \"switch-network-button\", disabled: switching, onClick: async () => {\n    setSwitching(true);\n    try {\n      await switchChain(props.targetChain);\n    } catch (e) {\n      console.error(e);\n    }\n    setSwitching(false);\n  }, style: {\n    minWidth: \"140px\",\n    ...props.style\n  }, \"aria-label\": switching ? locale.switchingNetwork : void 0, children: switching ? (0, import_jsx_runtime81.jsx)(Spinner, { size: \"sm\", color: \"primaryButtonText\" }) : switchNetworkBtnTitle });\n}\nfunction useWalletDetailsModal() {\n  const account = useActiveAccount();\n  const setRootEl = (0, import_react49.useContext)(SetRootElementContext);\n  function closeModal() {\n    setRootEl(null);\n  }\n  function openModal(props) {\n    if (!account) {\n      throw new Error(\"Wallet is not connected.\");\n    }\n    getConnectLocale(props.locale || \"en_US\").then((locale) => {\n      setRootEl((0, import_jsx_runtime81.jsx)(DetailsModal, { client: props.client, locale, detailsModal: {\n        footer: props.footer,\n        hideDisconnect: props.hideDisconnect,\n        hideSwitchWallet: props.hideSwitchWallet,\n        networkSelector: props.networkSelector,\n        payOptions: props.payOptions,\n        showTestnetFaucet: props.showTestnetFaucet,\n        connectedAccountName: props.connectedAccountName,\n        connectedAccountAvatarUrl: props.connectedAccountAvatarUrl,\n        hideBuyFunds: props.hideBuyFunds,\n        hideReceiveFunds: props.hideReceiveFunds,\n        hideSendFunds: props.hideSendFunds,\n        assetTabs: props.assetTabs\n      }, displayBalanceToken: props.displayBalanceToken, theme: props.theme || \"dark\", supportedTokens: props.supportedTokens, supportedNFTs: props.supportedNFTs, closeModal, onDisconnect: (info) => {\n        var _a;\n        (_a = props.onDisconnect) == null ? void 0 : _a.call(props, info);\n        closeModal();\n      }, chains: props.chains || [], connectOptions: props.connectOptions }));\n    }).catch(() => {\n      closeModal();\n    });\n  }\n  return {\n    open: openModal\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectModal.js\nvar import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1);\nvar import_react50 = __toESM(require_react(), 1);\nvar ConnectModal = (props) => {\n  const screenSetup = useSetupScreen({\n    size: props.size,\n    welcomeScreen: props.welcomeScreen,\n    wallets: props.wallets\n  });\n  const setSelectionData = useSetSelectionData();\n  const { screen, setScreen, initialScreen } = screenSetup;\n  const isWalletModalOpen = useIsWalletModalOpen();\n  const setIsWalletModalOpen = useSetIsWalletModalOpen();\n  const [hideModal, setHideModal] = (0, import_react50.useState)(false);\n  const closeModal = (0, import_react50.useCallback)(() => {\n    var _a;\n    (_a = props.onClose) == null ? void 0 : _a.call(props);\n    setIsWalletModalOpen(false);\n    onModalUnmount(() => {\n      setScreen(initialScreen);\n      setSelectionData({});\n    });\n  }, [\n    initialScreen,\n    setIsWalletModalOpen,\n    setScreen,\n    setSelectionData,\n    props.onClose\n  ]);\n  const activeAccount = useActiveAccount();\n  (0, import_react50.useEffect)(() => {\n    if (!isWalletModalOpen) {\n      onModalUnmount(() => {\n        setHideModal(false);\n      });\n    }\n  }, [isWalletModalOpen]);\n  const setModalVisibility = (0, import_react50.useCallback)((value) => setHideModal(!value), []);\n  (0, import_react50.useEffect)(() => {\n    if (isWalletModalOpen && screen === reservedScreens.signIn && !activeAccount) {\n      setScreen(initialScreen);\n      setIsWalletModalOpen(false);\n    }\n  }, [\n    initialScreen,\n    isWalletModalOpen,\n    screen,\n    setIsWalletModalOpen,\n    setScreen,\n    activeAccount\n  ]);\n  return (0, import_jsx_runtime82.jsx)(Modal, { hide: hideModal, size: props.size, open: isWalletModalOpen, setOpen: (value) => {\n    if (hideModal) {\n      return;\n    }\n    if (!value) {\n      closeModal();\n    }\n  }, children: (0, import_jsx_runtime82.jsx)(ConnectModalContent, { shouldSetActive: props.shouldSetActive, screenSetup, setModalVisibility, isOpen: isWalletModalOpen, onClose: closeModal, accountAbstraction: props.accountAbstraction, auth: props.auth, client: props.client, connectLocale: props.connectLocale, size: props.size, welcomeScreen: props.welcomeScreen, meta: props.meta, hideHeader: false, onConnect: props.onConnect, recommendedWallets: props.recommendedWallets, wallets: props.wallets, chain: props.chain, showAllWallets: props.showAllWallets, chains: props.chains, walletConnect: props.walletConnect, modalHeader: void 0, walletIdsToHide: void 0 }) });\n};\nvar ConnectModal_default = ConnectModal;\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/LockIcon.js\nvar import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1);\nvar LockIcon = (props) => {\n  return (0, import_jsx_runtime83.jsx)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 16 21\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"presentation\", children: (0, import_jsx_runtime83.jsx)(\"path\", { d: \"M2 21C1.45 21 0.979333 20.8043 0.588 20.413C0.196 20.021 0 19.55 0 19V9C0 8.45 0.196 7.979 0.588 7.587C0.979333 7.19567 1.45 7 2 7H3V5C3 3.61667 3.48767 2.43733 4.463 1.462C5.43767 0.487333 6.61667 0 8 0C9.38333 0 10.5627 0.487333 11.538 1.462C12.5127 2.43733 13 3.61667 13 5V7H14C14.55 7 15.021 7.19567 15.413 7.587C15.8043 7.979 16 8.45 16 9V19C16 19.55 15.8043 20.021 15.413 20.413C15.021 20.8043 14.55 21 14 21H2ZM8 16C8.55 16 9.021 15.8043 9.413 15.413C9.80433 15.021 10 14.55 10 14C10 13.45 9.80433 12.979 9.413 12.587C9.021 12.1957 8.55 12 8 12C7.45 12 6.97933 12.1957 6.588 12.587C6.196 12.979 6 13.45 6 14C6 14.55 6.196 15.021 6.588 15.413C6.97933 15.8043 7.45 16 8 16ZM5 7H11V5C11 4.16667 10.7083 3.45833 10.125 2.875C9.54167 2.29167 8.83333 2 8 2C7.16667 2 6.45833 2.29167 5.875 2.875C5.29167 3.45833 5 4.16667 5 5V7Z\", fill: \"currentColor\" }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js\nvar TW_CONNECT_WALLET = \"tw-connect-wallet\";\nfunction ConnectButton(props) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;\n  const wallets = (0, import_react51.useMemo)(() => props.wallets || getDefaultWallets({\n    appMetadata: props.appMetadata,\n    chains: props.chains\n  }), [props.wallets, props.appMetadata, props.chains]);\n  const localeQuery = useConnectLocale(props.locale || \"en_US\");\n  const connectionManager = useConnectionManager();\n  usePreloadWalletProviders({\n    wallets,\n    client: props.client\n  });\n  (0, import_react51.useEffect)(() => {\n    if (props.chain) {\n      connectionManager.defineChains([props.chain]);\n    }\n  }, [props.chain, connectionManager]);\n  (0, import_react51.useEffect)(() => {\n    if (props.chains) {\n      connectionManager.defineChains(props.chains);\n    }\n  }, [props.chains, connectionManager]);\n  const size4 = (0, import_react51.useMemo)(() => {\n    var _a2;\n    return !canFitWideModal() || wallets.length === 1 ? \"compact\" : ((_a2 = props.connectModal) == null ? void 0 : _a2.size) || \"compact\";\n  }, [wallets.length, (_a = props.connectModal) == null ? void 0 : _a.size]);\n  const preferredChain = ((_b = props.accountAbstraction) == null ? void 0 : _b.chain) || props.chain || ((_c = props.chains) == null ? void 0 : _c[0]);\n  const autoConnectComp = props.autoConnect !== false && (0, import_jsx_runtime84.jsx)(AutoConnect, { chain: preferredChain, appMetadata: props.appMetadata, client: props.client, wallets, timeout: typeof props.autoConnect === \"boolean\" ? void 0 : (_d = props.autoConnect) == null ? void 0 : _d.timeout, accountAbstraction: props.accountAbstraction, onConnect: props.onConnect });\n  if (!localeQuery.data) {\n    const combinedClassName = `${((_e = props.connectButton) == null ? void 0 : _e.className) || \"\"} ${TW_CONNECT_WALLET}`;\n    return (0, import_jsx_runtime84.jsxs)(AnimatedButton, { disabled: true, className: combinedClassName, variant: \"primary\", type: \"button\", style: {\n      minWidth: \"165px\",\n      height: \"50px\",\n      ...(_f = props.connectButton) == null ? void 0 : _f.style\n    }, children: [autoConnectComp, (0, import_jsx_runtime84.jsx)(Spinner, { size: \"sm\", color: \"primaryButtonText\" })] });\n  }\n  return (0, import_jsx_runtime84.jsxs)(WalletUIStatesProvider, { theme: props.theme, isOpen: false, children: [(0, import_jsx_runtime84.jsx)(ConnectButtonInner, { ...props, connectLocale: localeQuery.data }), (0, import_jsx_runtime84.jsx)(ConnectModal_default, { shouldSetActive: true, accountAbstraction: props.accountAbstraction, auth: props.auth, chain: preferredChain, chains: props.chains, client: props.client, connectLocale: localeQuery.data, meta: {\n    title: (_g = props.connectModal) == null ? void 0 : _g.title,\n    titleIconUrl: (_h = props.connectModal) == null ? void 0 : _h.titleIcon,\n    showThirdwebBranding: (_i = props.connectModal) == null ? void 0 : _i.showThirdwebBranding,\n    termsOfServiceUrl: (_j = props.connectModal) == null ? void 0 : _j.termsOfServiceUrl,\n    privacyPolicyUrl: (_k = props.connectModal) == null ? void 0 : _k.privacyPolicyUrl,\n    requireApproval: (_l = props.connectModal) == null ? void 0 : _l.requireApproval\n  }, welcomeScreen: (_m = props.connectModal) == null ? void 0 : _m.welcomeScreen, size: size4, localeId: props.locale || \"en_US\", onConnect: props.onConnect, recommendedWallets: props.recommendedWallets, showAllWallets: props.showAllWallets, walletConnect: props.walletConnect, wallets }), autoConnectComp] });\n}\nfunction ConnectButtonInner(props) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n  const activeWallet = useActiveWallet();\n  const activeAccount = useActiveAccount();\n  const siweAuth = useSiweAuth(activeWallet, activeAccount, props.auth);\n  const [showSignatureModal, setShowSignatureModal] = (0, import_react51.useState)(false);\n  (0, import_react51.useEffect)(() => {\n    if (!activeAccount) {\n      setShowSignatureModal(false);\n    }\n  }, [activeAccount]);\n  const theme = props.theme || \"dark\";\n  const connectionStatus = useActiveWalletConnectionStatus();\n  const locale = props.connectLocale;\n  const isLoading = connectionStatus === \"connecting\";\n  const connectButtonLabel = ((_a = props.connectButton) == null ? void 0 : _a.label) || locale.defaultButtonTitle;\n  const setIsWalletModalOpen = useSetIsWalletModalOpen();\n  const supportedTokens = (0, import_react51.useMemo)(() => {\n    if (!props.supportedTokens) {\n      return void 0;\n    }\n    const tokens = { ...defaultTokens };\n    for (const k in props.supportedTokens) {\n      const key = Number(k);\n      const tokenList = props.supportedTokens[key];\n      if (tokenList) {\n        tokens[key] = tokenList;\n      }\n    }\n    return tokens;\n  }, [props.supportedTokens]);\n  if (!activeAccount) {\n    const combinedClassName = `${((_b = props.connectButton) == null ? void 0 : _b.className) || \"\"} ${TW_CONNECT_WALLET}`;\n    return (0, import_jsx_runtime84.jsx)(AnimatedButton, { disabled: isLoading, className: combinedClassName, \"data-theme\": theme, \"data-is-loading\": isLoading, variant: \"primary\", type: \"button\", style: {\n      minWidth: \"165px\",\n      height: \"50px\",\n      fontSize: \"16px\",\n      ...(_c = props.connectButton) == null ? void 0 : _c.style\n    }, \"aria-label\": connectionStatus === \"connecting\" ? locale.connecting : typeof connectButtonLabel === \"string\" ? connectButtonLabel : locale.defaultButtonTitle, onClick: () => {\n      setIsWalletModalOpen(true);\n    }, \"data-test\": \"connect-wallet-button\", children: isLoading ? (0, import_jsx_runtime84.jsx)(Spinner, { size: \"sm\", color: \"primaryButtonText\" }) : connectButtonLabel });\n  }\n  if (siweAuth.requiresAuth) {\n    if (siweAuth.isLoading || siweAuth.isLoggingIn || siweAuth.isLoggingOut) {\n      const combinedClassName = `${((_d = props.connectButton) == null ? void 0 : _d.className) || \"\"} ${TW_CONNECT_WALLET}`;\n      return (0, import_jsx_runtime84.jsx)(AnimatedButton, { disabled: true, className: combinedClassName, variant: \"primary\", type: \"button\", style: {\n        minWidth: \"165px\",\n        height: \"50px\",\n        ...(_e = props.connectButton) == null ? void 0 : _e.style\n      }, children: (0, import_jsx_runtime84.jsx)(Spinner, { size: \"sm\", color: \"primaryButtonText\" }) });\n    }\n    if (!siweAuth.isLoggedIn) {\n      return (0, import_jsx_runtime84.jsxs)(import_jsx_runtime84.Fragment, { children: [(0, import_jsx_runtime84.jsx)(Button, { variant: \"primary\", type: \"button\", onClick: () => {\n        setShowSignatureModal(true);\n      }, className: (_f = props.signInButton) == null ? void 0 : _f.className, style: {\n        minWidth: \"165px\",\n        minHeight: \"50px\",\n        ...(_g = props.signInButton) == null ? void 0 : _g.style\n      }, children: siweAuth.isLoggingIn ? (0, import_jsx_runtime84.jsx)(Spinner, { size: \"sm\", color: \"primaryButtonText\" }) : (0, import_jsx_runtime84.jsxs)(Container, { flex: \"row\", center: \"y\", gap: \"sm\", children: [(0, import_jsx_runtime84.jsx)(LockIcon, { size: iconSize.sm }), (0, import_jsx_runtime84.jsxs)(\"span\", { children: [\" \", ((_h = props.signInButton) == null ? void 0 : _h.label) || locale.signIn, \" \"] })] }) }), (0, import_jsx_runtime84.jsx)(Modal, { size: \"compact\", open: showSignatureModal, setOpen: setShowSignatureModal, children: (0, import_jsx_runtime84.jsx)(SignatureScreen, { client: props.client, connectLocale: locale, modalSize: \"compact\", termsOfServiceUrl: (_i = props.connectModal) == null ? void 0 : _i.termsOfServiceUrl, privacyPolicyUrl: (_j = props.connectModal) == null ? void 0 : _j.privacyPolicyUrl, onDone: () => setShowSignatureModal(false), auth: props.auth }) })] });\n    }\n  }\n  return (0, import_jsx_runtime84.jsx)(ConnectedWalletDetails, { theme, detailsButton: props.detailsButton, detailsModal: props.detailsModal, supportedTokens, supportedNFTs: props.supportedNFTs, onDisconnect: (info) => {\n    var _a2;\n    if (siweAuth.requiresAuth) {\n      siweAuth.doLogout();\n    }\n    (_a2 = props.onDisconnect) == null ? void 0 : _a2.call(props, info);\n  }, chains: (props == null ? void 0 : props.chains) || [], chain: props.chain, switchButton: props.switchButton, client: props.client, connectLocale: locale, connectOptions: {\n    accountAbstraction: props.accountAbstraction,\n    appMetadata: props.appMetadata,\n    chain: props.chain,\n    chains: props.chains,\n    connectModal: props.connectModal,\n    recommendedWallets: props.recommendedWallets,\n    showAllWallets: props.showAllWallets,\n    walletConnect: props.walletConnect,\n    wallets: props.wallets,\n    hiddenWallets: (_k = props.detailsModal) == null ? void 0 : _k.hiddenWallets\n  } });\n}\nvar AnimatedButton = newStyled(Button)({\n  animation: `${fadeInAnimation} 300ms ease`\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js\nvar import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1);\nfunction DirectPaymentModeScreen(props) {\n  var _a, _b, _c, _d, _e, _f;\n  const { payUiOptions, supportedDestinations, client, onContinue, payerAccount } = props;\n  const theme = useCustomTheme();\n  const activeWallet = useActiveWallet();\n  const metadata = payUiOptions.metadata;\n  const paymentInfo = payUiOptions.paymentInfo;\n  const { data: chainData } = useChainMetadata(paymentInfo.chain);\n  const { data: sellerEns } = useEnsName({\n    client,\n    address: paymentInfo.sellerAddress\n  });\n  const totalCostQuery = useQuery({\n    queryKey: [\"amount\", paymentInfo],\n    queryFn: async () => {\n      let tokenDecimals = 18;\n      if (paymentInfo.token && !isNativeToken(paymentInfo.token)) {\n        tokenDecimals = await decimals({\n          contract: getContract({\n            address: paymentInfo.token.address,\n            chain: paymentInfo.chain,\n            client\n          })\n        });\n      }\n      let cost;\n      if (\"amountWei\" in paymentInfo) {\n        cost = toTokens(paymentInfo.amountWei, tokenDecimals);\n      } else {\n        cost = paymentInfo.amount;\n      }\n      return cost;\n    }\n  });\n  const totalCost = totalCostQuery.data;\n  if (!chainData || totalCost === void 0) {\n    return (0, import_jsx_runtime85.jsx)(LoadingScreen, {});\n  }\n  const token = paymentInfo.token ? {\n    ...paymentInfo.token,\n    icon: ((_a = paymentInfo.token) == null ? void 0 : _a.icon) || ((_c = (_b = supportedDestinations.find((c) => c.chain.id === paymentInfo.chain.id)) == null ? void 0 : _b.tokens.find((t) => {\n      var _a2;\n      return t.address.toLowerCase() === ((_a2 = paymentInfo.token) == null ? void 0 : _a2.address.toLowerCase());\n    })) == null ? void 0 : _c.icon)\n  } : {\n    address: NATIVE_TOKEN_ADDRESS,\n    name: chainData.nativeCurrency.name,\n    symbol: chainData.nativeCurrency.symbol,\n    icon: (_d = chainData.icon) == null ? void 0 : _d.url\n  };\n  return (0, import_jsx_runtime85.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime85.jsx)(ModalHeader, { title: (metadata == null ? void 0 : metadata.name) || \"Payment Details\" }), (0, import_jsx_runtime85.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime85.jsxs)(Container, { children: [(metadata == null ? void 0 : metadata.image) ? (0, import_jsx_runtime85.jsx)(Img, { client, src: metadata == null ? void 0 : metadata.image, style: {\n    width: \"100%\",\n    borderRadius: spacing.md,\n    backgroundColor: theme.colors.tertiaryBg\n  } }) : activeWallet ? (0, import_jsx_runtime85.jsxs)(Container, { flex: \"row\", center: \"both\", style: {\n    padding: spacing.md,\n    marginBottom: spacing.md,\n    borderRadius: spacing.md,\n    backgroundColor: theme.colors.tertiaryBg\n  }, children: [(0, import_jsx_runtime85.jsx)(WalletImage, { size: iconSize.xl, id: activeWallet.id, client }), (0, import_jsx_runtime85.jsx)(\"div\", { style: {\n    flexGrow: 1,\n    borderBottom: \"6px dotted\",\n    borderColor: theme.colors.secondaryIconColor,\n    marginLeft: spacing.md,\n    marginRight: spacing.md\n  } }), (0, import_jsx_runtime85.jsx)(ChainIcon, { client, size: iconSize.xl, chainIconUrl: (_e = chainData.icon) == null ? void 0 : _e.url })] }) : null, (0, import_jsx_runtime85.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime85.jsxs)(Container, { flex: \"row\", children: [(0, import_jsx_runtime85.jsx)(Container, { flex: \"column\", expand: true, children: (0, import_jsx_runtime85.jsx)(Text, { size: \"md\", color: \"primaryText\", weight: 700, children: \"Price\" }) }), (0, import_jsx_runtime85.jsx)(Container, { expand: true, children: (0, import_jsx_runtime85.jsxs)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", style: { justifyContent: \"right\" }, children: [(0, import_jsx_runtime85.jsx)(TokenIcon, { chain: paymentInfo.chain, client: props.client, size: \"sm\", token }), (0, import_jsx_runtime85.jsxs)(Text, { color: \"primaryText\", size: \"md\", weight: 700, children: [String(formatNumber(Number(totalCost), 6)), \" \", token.symbol] })] }) })] }), (0, import_jsx_runtime85.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime85.jsx)(Line, {}), (0, import_jsx_runtime85.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime85.jsxs)(Container, { flex: \"row\", children: [(0, import_jsx_runtime85.jsx)(Container, { flex: \"column\", expand: true, children: (0, import_jsx_runtime85.jsx)(Text, { size: \"xs\", color: \"secondaryText\", children: \"Network\" }) }), (0, import_jsx_runtime85.jsx)(Container, { expand: true, children: (0, import_jsx_runtime85.jsxs)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", style: { justifyContent: \"right\" }, children: [(0, import_jsx_runtime85.jsx)(ChainIcon, { chainIconUrl: (_f = chainData.icon) == null ? void 0 : _f.url, size: \"xs\", client: props.client }), (0, import_jsx_runtime85.jsx)(Text, { size: \"xs\", color: \"secondaryText\", style: { textAlign: \"right\" }, children: chainData.name })] }) })] }), (0, import_jsx_runtime85.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime85.jsxs)(Container, { flex: \"row\", children: [(0, import_jsx_runtime85.jsx)(Container, { flex: \"column\", expand: true, children: (0, import_jsx_runtime85.jsx)(Text, { size: \"xs\", color: \"secondaryText\", children: \"Seller\" }) }), (0, import_jsx_runtime85.jsx)(Container, { expand: true, children: (0, import_jsx_runtime85.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", style: { justifyContent: \"right\" }, children: (0, import_jsx_runtime85.jsx)(Text, { size: \"xs\", color: \"secondaryText\", style: { textAlign: \"right\" }, children: sellerEns || shortenAddress(paymentInfo.sellerAddress) }) }) })] })] }), (0, import_jsx_runtime85.jsx)(Spacer, { y: \"xl\" }), payerAccount ? (0, import_jsx_runtime85.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: () => {\n    trackPayEvent({\n      event: \"choose_payment_method_direct_payment_mode\",\n      client,\n      walletAddress: payerAccount.address,\n      walletType: activeWallet == null ? void 0 : activeWallet.id\n    });\n    onContinue(totalCost, paymentInfo.chain, token);\n  }, children: \"Choose Payment Method\" }) : (0, import_jsx_runtime85.jsx)(\"div\", { children: (0, import_jsx_runtime85.jsx)(ConnectButton, { ...props.connectOptions, client, theme, connectButton: {\n    style: {\n      width: \"100%\"\n    }\n  } }) })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/EstimatedTimeAndFees.js\nvar import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1);\nfunction EstimatedTimeAndFees(props) {\n  const { estimatedSeconds, quoteIsLoading } = props;\n  return (0, import_jsx_runtime86.jsxs)(Container, { bg: \"tertiaryBg\", flex: \"row\", borderColor: \"borderColor\", style: {\n    borderRadius: radius.md,\n    borderTopLeftRadius: 0,\n    borderTopRightRadius: 0,\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    borderWidth: \"1px\",\n    borderStyle: \"solid\"\n  }, children: [(0, import_jsx_runtime86.jsxs)(Container, { flex: \"row\", center: \"y\", gap: \"xxs\", color: \"accentText\", p: \"sm\", children: [(0, import_jsx_runtime86.jsx)(ClockIcon, { width: iconSize.sm, height: iconSize.sm }), quoteIsLoading ? (0, import_jsx_runtime86.jsx)(Skeleton, { height: fontSize.xs, width: \"50px\", color: \"borderColor\" }) : (0, import_jsx_runtime86.jsx)(Text, { size: \"xs\", color: \"secondaryText\", children: estimatedSeconds !== void 0 ? `~${formatSeconds(estimatedSeconds)}` : \"--\" })] }), (0, import_jsx_runtime86.jsxs)(Button, { variant: \"ghost\", onClick: props.onViewFees, gap: \"xs\", children: [(0, import_jsx_runtime86.jsx)(Container, { color: \"accentText\", flex: \"row\", center: \"both\", children: (0, import_jsx_runtime86.jsx)(ViewFeeIcon, { size: iconSize.sm }) }), (0, import_jsx_runtime86.jsx)(Text, { size: \"xs\", color: \"secondaryText\", children: \"View Fees\" })] })] });\n}\nvar ViewFeeIcon = (props) => {\n  return (0, import_jsx_runtime86.jsxs)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 12 12\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", \"aria-hidden\": \"true\", children: [(0, import_jsx_runtime86.jsx)(\"path\", { d: \"M9.5 1.5H2.5C1.94772 1.5 1.5 1.94772 1.5 2.5V9.5C1.5 10.0523 1.94772 10.5 2.5 10.5H9.5C10.0523 10.5 10.5 10.0523 10.5 9.5V2.5C10.5 1.94772 10.0523 1.5 9.5 1.5Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime86.jsx)(\"path\", { d: \"M4.5 7.5L7.5 4.5\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js\nvar import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1);\nfunction PayWithCreditCard(props) {\n  return (0, import_jsx_runtime87.jsxs)(Container, { bg: \"tertiaryBg\", borderColor: \"borderColor\", flex: \"row\", style: {\n    borderRadius: radius.md,\n    borderBottomRightRadius: 0,\n    borderBottomLeftRadius: 0,\n    borderWidth: \"1px\",\n    borderStyle: \"solid\",\n    borderBottom: \"none\",\n    flexWrap: \"nowrap\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n  }, children: [(0, import_jsx_runtime87.jsxs)(CurrencyButton, { variant: \"ghost\", onClick: props.onSelectCurrency, style: {\n    minHeight: \"64px\",\n    justifyContent: \"flex-start\",\n    minWidth: \"50%\"\n  }, gap: \"sm\", children: [(0, import_jsx_runtime87.jsx)(props.currency.icon, { size: iconSize.md }), (0, import_jsx_runtime87.jsxs)(Container, { flex: \"row\", center: \"y\", gap: \"xxs\", color: \"secondaryText\", children: [(0, import_jsx_runtime87.jsx)(Text, { color: \"primaryText\", children: props.currency.shorthand }), (0, import_jsx_runtime87.jsx)(ChevronDownIcon, { width: iconSize.sm, height: iconSize.sm })] })] }), (0, import_jsx_runtime87.jsx)(\"div\", { style: {\n    flexGrow: 1,\n    flexShrink: 1,\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-end\",\n    gap: spacing.xxs,\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    justifyContent: \"center\",\n    paddingRight: spacing.sm\n  }, children: props.isLoading ? (0, import_jsx_runtime87.jsx)(Skeleton, { width: \"100px\", height: fontSize.lg }) : (0, import_jsx_runtime87.jsx)(Text, { size: \"lg\", color: props.value ? \"primaryText\" : \"secondaryText\", children: props.value ? `${formatNumber(Number(props.value), 6)}` : \"--\" }) })] });\n}\nvar CurrencyButton = newStyled(Button)(() => {\n  return {\n    \"&[disabled]:hover\": {\n      borderColor: \"transparent\"\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js\nvar import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js\nvar import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1);\nvar import_react52 = __toESM(require_react(), 1);\nfunction WalletRowWithBalances(props) {\n  const theme = useCustomTheme();\n  const [showAll, setShowAll] = (0, import_react52.useState)(false);\n  const maxDisplayedBalances = 3;\n  const displayedBalances = showAll ? props.balances : props.balances.slice(0, maxDisplayedBalances);\n  return (0, import_jsx_runtime88.jsxs)(Container, { bg: \"tertiaryBg\", style: {\n    borderRadius: radius.lg,\n    border: `1px solid ${theme.colors.borderColor}`\n  }, children: [(0, import_jsx_runtime88.jsx)(Container, { style: { padding: spacing.sm }, children: (0, import_jsx_runtime88.jsx)(WalletRow, { ...props }) }), (0, import_jsx_runtime88.jsx)(\"div\", { style: { borderTop: `1px solid ${theme.colors.borderColor}` } }), (0, import_jsx_runtime88.jsx)(Container, { flex: \"column\", children: props.balances.length > 0 ? (0, import_jsx_runtime88.jsxs)(import_jsx_runtime88.Fragment, { children: [displayedBalances.map((b) => (0, import_jsx_runtime88.jsx)(TokenBalanceRow, { client: props.client, onClick: () => props.onClick(props.wallet, b.token, b.chain), tokenBalance: b, wallet: props.wallet }, `${b.token.address}-${b.chain.id}`)), props.balances.length > maxDisplayedBalances && (0, import_jsx_runtime88.jsx)(StyledButton2, { variant: \"secondary\", onClick: () => setShowAll(!showAll), style: {\n    justifyContent: \"start\"\n  }, children: (0, import_jsx_runtime88.jsx)(Text, { size: \"xs\", children: showAll ? \"Show less\" : \"Show more\" }) })] }) : (0, import_jsx_runtime88.jsx)(Container, { style: { padding: spacing.sm }, children: (0, import_jsx_runtime88.jsx)(Text, { size: \"sm\", color: \"secondaryText\", children: \"Not enough funds\" }) }) })] });\n}\nfunction TokenBalanceRow(props) {\n  const { tokenBalance, wallet, onClick, client } = props;\n  const chainInfo = useChainName(tokenBalance.chain);\n  return (0, import_jsx_runtime88.jsxs)(StyledButton2, { onClick: () => onClick(tokenBalance.token, wallet), variant: \"secondary\", children: [(0, import_jsx_runtime88.jsx)(TokenIcon, { token: tokenBalance.token, chain: tokenBalance.chain, size: \"md\", client }), (0, import_jsx_runtime88.jsxs)(Container, { flex: \"column\", gap: \"3xs\", children: [(0, import_jsx_runtime88.jsx)(Text, { size: \"xs\", color: \"primaryText\", children: tokenBalance.token.symbol }), chainInfo && (0, import_jsx_runtime88.jsx)(Text, { size: \"xs\", children: chainInfo.name })] }), (0, import_jsx_runtime88.jsx)(\"div\", { style: { flex: 1 } }), (0, import_jsx_runtime88.jsx)(Container, { flex: \"row\", center: \"y\", gap: \"3xs\", children: (0, import_jsx_runtime88.jsx)(Text, { size: \"xs\", color: \"secondaryText\", children: formatTokenBalance(tokenBalance.balance, true) }) })] });\n}\nfunction WalletRow(props) {\n  const { client, address } = props;\n  const walletId = props.walletId;\n  const theme = useCustomTheme();\n  const ensNameQuery = useEnsName({\n    client,\n    address\n  });\n  const addressOrENS = ensNameQuery.data || shortenAddress(address);\n  const ensAvatarQuery = useEnsAvatar({\n    client,\n    ensName: ensNameQuery.data\n  });\n  return (0, import_jsx_runtime88.jsxs)(Container, { flex: \"row\", center: \"y\", gap: \"sm\", color: \"secondaryText\", children: [ensAvatarQuery.data ? (0, import_jsx_runtime88.jsx)(Img, { src: ensAvatarQuery.data, width: props.iconSize ? iconSize[props.iconSize] : iconSize.md, height: props.iconSize ? iconSize[props.iconSize] : iconSize.md, style: {\n    borderRadius: \"100%\",\n    overflow: \"hidden\",\n    border: `1px solid ${theme.colors.borderColor}`\n  }, client: props.client }) : walletId ? (0, import_jsx_runtime88.jsx)(WalletImage, { id: walletId, size: props.iconSize || iconSize.md, client: props.client }) : (0, import_jsx_runtime88.jsx)(Container, { style: {\n    width: iconSize.md,\n    height: iconSize.md,\n    borderRadius: \"100%\",\n    overflow: \"hidden\",\n    border: `1px solid ${theme.colors.borderColor}`\n  }, children: (0, import_jsx_runtime88.jsx)(Blobbie, { address: props.address, size: Number(iconSize.md) }) }), (0, import_jsx_runtime88.jsx)(Text, { size: props.textSize || \"sm\", color: \"primaryText\", children: addressOrENS || shortenAddress(props.address) })] });\n}\nvar StyledButton2 = newStyled(Button)((_) => {\n  const theme = useCustomTheme();\n  return {\n    background: theme.colors.tertiaryBg,\n    justifyContent: \"flex-start\",\n    flexDirection: \"row\",\n    padding: spacing.sm,\n    gap: spacing.sm,\n    \"&:hover\": {\n      background: theme.colors.secondaryButtonBg,\n      transform: \"scale(1.01)\"\n    },\n    transition: \"background 200ms ease, transform 150ms ease\"\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js\nvar import_react53 = __toESM(require_react(), 1);\nfunction useTransactionCostAndData(args) {\n  const { transaction, account, supportedDestinations } = args;\n  const [txQueryKey, setTxQueryKey] = (0, import_react53.useState)();\n  (0, import_react53.useEffect)(() => {\n    Promise.all([\n      resolvePromisedValue(transaction.value),\n      resolvePromisedValue(transaction.erc20Value),\n      resolvePromisedValue(transaction.to),\n      encode(transaction)\n    ]).then(([value, erc20Value, to, data]) => {\n      var _a;\n      setTxQueryKey({\n        value: value == null ? void 0 : value.toString(),\n        erc20Value: (_a = erc20Value == null ? void 0 : erc20Value.amountWei) == null ? void 0 : _a.toString(),\n        erc20Currency: erc20Value == null ? void 0 : erc20Value.tokenAddress,\n        to,\n        data\n      });\n    });\n  }, [transaction]);\n  return useQuery({\n    queryKey: [\n      \"transaction-cost\",\n      transaction.chain.id,\n      account == null ? void 0 : account.address,\n      txQueryKey\n    ],\n    queryFn: async () => {\n      var _a, _b, _c;\n      if (!account) {\n        throw new Error(\"No account\");\n      }\n      const erc20Value = await resolvePromisedValue(transaction.erc20Value);\n      if (erc20Value) {\n        const [tokenBalance, tokenMeta, gasCostWei2] = await Promise.all([\n          getWalletBalance({\n            address: account.address,\n            chain: transaction.chain,\n            client: transaction.client,\n            tokenAddress: erc20Value.tokenAddress\n          }),\n          getCurrencyMetadata({\n            contract: getContract({\n              address: erc20Value.tokenAddress,\n              chain: transaction.chain,\n              client: transaction.client\n            })\n          }),\n          getTransactionGasCost(transaction, account == null ? void 0 : account.address)\n        ]);\n        const transactionValueWei2 = erc20Value.amountWei;\n        const walletBalance2 = tokenBalance;\n        const currency = {\n          address: erc20Value.tokenAddress,\n          name: tokenMeta.name,\n          symbol: tokenMeta.symbol,\n          icon: (_b = (_a = supportedDestinations.find((c) => c.chain.id === transaction.chain.id)) == null ? void 0 : _a.tokens.find((t) => t.address.toLowerCase() === erc20Value.tokenAddress.toLowerCase())) == null ? void 0 : _b.icon\n        };\n        return {\n          token: currency,\n          decimals: tokenMeta.decimals,\n          walletBalance: walletBalance2,\n          gasCostWei: gasCostWei2,\n          transactionValueWei: transactionValueWei2\n        };\n      }\n      const [nativeWalletBalance, chainMetadata, gasCostWei] = await Promise.all([\n        getWalletBalance({\n          address: account.address,\n          chain: transaction.chain,\n          client: transaction.client\n        }),\n        getChainMetadata(transaction.chain),\n        getTransactionGasCost(transaction, account == null ? void 0 : account.address)\n      ]);\n      const walletBalance = nativeWalletBalance;\n      const transactionValueWei = await resolvePromisedValue(transaction.value) || 0n;\n      return {\n        token: {\n          address: NATIVE_TOKEN_ADDRESS,\n          name: chainMetadata.nativeCurrency.name,\n          symbol: chainMetadata.nativeCurrency.symbol,\n          icon: (_c = chainMetadata.icon) == null ? void 0 : _c.url\n        },\n        decimals: 18,\n        walletBalance,\n        gasCostWei,\n        transactionValueWei\n      };\n    },\n    enabled: !!transaction && !!account && !!txQueryKey,\n    refetchInterval: () => {\n      if (transaction.erc20Value) {\n        return void 0;\n      }\n      return 3e4;\n    }\n  });\n}\nasync function getTransactionGasCost(tx, from) {\n  try {\n    const gasCost = await estimateGasCost({\n      transaction: tx,\n      from\n    });\n    const bufferCost = gasCost.wei / 10n;\n    return gasCost.wei + bufferCost;\n  } catch {\n    if (from) {\n      return await getTransactionGasCost(tx);\n    }\n    const gasPrice = await getGasPrice({\n      client: tx.client,\n      chain: tx.chain\n    });\n    return 2000000n * gasPrice;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js\nfunction TransactionModeScreen(props) {\n  var _a;\n  const { payUiOptions, client, payerAccount, supportedDestinations, onContinue } = props;\n  const { data: chainData } = useChainMetadata(payUiOptions.transaction.chain);\n  const metadata = payUiOptions.metadata;\n  const { data: transactionCostAndData } = useTransactionCostAndData({\n    transaction: payUiOptions.transaction,\n    account: payerAccount,\n    supportedDestinations\n  });\n  const theme = useCustomTheme();\n  const activeWallet = useActiveWallet();\n  const activeAccount = useActiveAccount();\n  const sponsoredTransactionsEnabled = hasSponsoredTransactionsEnabled(activeWallet);\n  const balanceQuery = useWalletBalance({\n    address: activeAccount == null ? void 0 : activeAccount.address,\n    chain: payUiOptions.transaction.chain,\n    tokenAddress: isNativeToken((transactionCostAndData == null ? void 0 : transactionCostAndData.token) || NATIVE_TOKEN) ? void 0 : transactionCostAndData == null ? void 0 : transactionCostAndData.token.address,\n    client: props.client\n  }, {\n    enabled: !!transactionCostAndData\n  });\n  if (!transactionCostAndData || !chainData) {\n    return (0, import_jsx_runtime89.jsx)(LoadingScreen, {});\n  }\n  return (0, import_jsx_runtime89.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime89.jsx)(ModalHeader, { title: (metadata == null ? void 0 : metadata.name) || \"Transaction\" }), (0, import_jsx_runtime89.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime89.jsxs)(Container, { children: [(metadata == null ? void 0 : metadata.image) ? (0, import_jsx_runtime89.jsx)(Img, { client, src: metadata == null ? void 0 : metadata.image, style: {\n    width: \"100%\",\n    borderRadius: spacing.md,\n    border: `1px solid ${theme.colors.borderColor}`,\n    backgroundColor: theme.colors.tertiaryBg\n  } }) : activeAccount ? (0, import_jsx_runtime89.jsxs)(Container, { flex: \"column\", gap: \"sm\", children: [(0, import_jsx_runtime89.jsx)(Text, { size: \"sm\", color: \"danger\", style: { textAlign: \"center\" }, children: \"Insufficient funds\" }), (0, import_jsx_runtime89.jsxs)(Container, { flex: \"row\", style: {\n    justifyContent: \"space-between\",\n    padding: spacing.sm,\n    marginBottom: spacing.sm,\n    borderRadius: spacing.md,\n    backgroundColor: theme.colors.tertiaryBg,\n    border: `1px solid ${theme.colors.borderColor}`\n  }, children: [(0, import_jsx_runtime89.jsx)(WalletRow, { address: activeAccount == null ? void 0 : activeAccount.address, iconSize: \"md\", client }), balanceQuery.data ? (0, import_jsx_runtime89.jsxs)(Container, { flex: \"row\", gap: \"3xs\", center: \"y\", children: [(0, import_jsx_runtime89.jsx)(Text, { size: \"xs\", color: \"secondaryText\", weight: 500, children: formatTokenBalance(balanceQuery.data, false) }), (0, import_jsx_runtime89.jsx)(TokenSymbol, { token: transactionCostAndData.token, chain: payUiOptions.transaction.chain, size: \"xs\", color: \"secondaryText\" })] }) : (0, import_jsx_runtime89.jsx)(Skeleton, { width: \"70px\", height: fontSize.xs })] })] }) : null, (0, import_jsx_runtime89.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime89.jsxs)(Container, { flex: \"row\", children: [(0, import_jsx_runtime89.jsx)(Container, { flex: \"column\", expand: true, children: (0, import_jsx_runtime89.jsx)(Text, { size: \"md\", color: \"primaryText\", weight: 700, children: \"Price\" }) }), (0, import_jsx_runtime89.jsx)(Container, { expand: true, children: (0, import_jsx_runtime89.jsxs)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", style: { justifyContent: \"right\" }, children: [(0, import_jsx_runtime89.jsx)(TokenIcon, { chain: payUiOptions.transaction.chain, client: props.client, size: \"sm\", token: transactionCostAndData.token }), (0, import_jsx_runtime89.jsxs)(Text, { color: \"primaryText\", size: \"md\", weight: 700, children: [String(formatNumber(Number(toTokens(transactionCostAndData.transactionValueWei, transactionCostAndData.decimals)), 6)), \" \", transactionCostAndData.token.symbol] })] }) })] }), (0, import_jsx_runtime89.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime89.jsx)(Line, {}), (0, import_jsx_runtime89.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime89.jsxs)(Container, { flex: \"row\", children: [(0, import_jsx_runtime89.jsx)(Container, { flex: \"column\", expand: true, children: (0, import_jsx_runtime89.jsx)(Text, { size: \"xs\", color: \"secondaryText\", children: \"Gas Fees\" }) }), (0, import_jsx_runtime89.jsx)(Container, { expand: true, children: (0, import_jsx_runtime89.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", style: { justifyContent: \"right\" }, children: (0, import_jsx_runtime89.jsx)(Text, { color: sponsoredTransactionsEnabled ? \"success\" : \"primaryText\", size: \"xs\", children: sponsoredTransactionsEnabled ? \"Sponsored\" : `${String(formatNumber(Number(toTokens(transactionCostAndData.gasCostWei, chainData.nativeCurrency.decimals)), 6))} ${chainData.nativeCurrency.symbol}` }) }) })] }), (0, import_jsx_runtime89.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime89.jsxs)(Container, { flex: \"row\", children: [(0, import_jsx_runtime89.jsx)(Container, { flex: \"column\", expand: true, children: (0, import_jsx_runtime89.jsx)(Text, { size: \"xs\", color: \"secondaryText\", children: \"Network\" }) }), (0, import_jsx_runtime89.jsx)(Container, { expand: true, children: (0, import_jsx_runtime89.jsxs)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", style: { justifyContent: \"right\" }, children: [(0, import_jsx_runtime89.jsx)(ChainIcon, { chainIconUrl: (_a = chainData.icon) == null ? void 0 : _a.url, size: \"xs\", client: props.client }), (0, import_jsx_runtime89.jsx)(Text, { size: \"xs\", color: \"secondaryText\", style: { textAlign: \"right\" }, children: chainData.name })] }) })] })] }), (0, import_jsx_runtime89.jsx)(Spacer, { y: \"xl\" }), payerAccount ? (0, import_jsx_runtime89.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: () => {\n    let totalCostWei = transactionCostAndData.transactionValueWei;\n    if (transactionCostAndData.token.address === NATIVE_TOKEN_ADDRESS && !sponsoredTransactionsEnabled) {\n      totalCostWei += transactionCostAndData.gasCostWei;\n    }\n    trackPayEvent({\n      event: \"choose_payment_method_transaction_mode\",\n      client,\n      walletAddress: payerAccount.address,\n      walletType: activeWallet == null ? void 0 : activeWallet.id\n    });\n    onContinue(toTokens(totalCostWei, transactionCostAndData.decimals), payUiOptions.transaction.chain, transactionCostAndData.token);\n  }, children: \"Choose Payment Method\" }) : (0, import_jsx_runtime89.jsx)(\"div\", { children: (0, import_jsx_runtime89.jsx)(ConnectButton, { ...props.connectOptions, client, theme, connectButton: {\n    style: {\n      width: \"100%\"\n    }\n  } }) })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/CurrencySelection.js\nvar import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1);\nfunction CurrencySelection(props) {\n  return (0, import_jsx_runtime90.jsxs)(Container, { children: [(0, import_jsx_runtime90.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime90.jsx)(ModalHeader, { title: \"Pay with\", onBack: props.onBack }) }), (0, import_jsx_runtime90.jsx)(Line, {}), (0, import_jsx_runtime90.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime90.jsx)(Container, { flex: \"column\", gap: \"xs\", px: \"lg\", children: currencies.map((c) => {\n    return (0, import_jsx_runtime90.jsxs)(SelectCurrencyButton, { fullWidth: true, variant: \"secondary\", onClick: () => props.onSelect(c), gap: \"sm\", children: [(0, import_jsx_runtime90.jsx)(c.icon, { size: iconSize.lg }), (0, import_jsx_runtime90.jsxs)(Container, { flex: \"column\", gap: \"xxs\", children: [(0, import_jsx_runtime90.jsx)(Text, { color: \"primaryText\", children: c.shorthand }), (0, import_jsx_runtime90.jsx)(Text, { size: \"sm\", children: c.name })] })] }, c.shorthand);\n  }) }), (0, import_jsx_runtime90.jsx)(Spacer, { y: \"lg\" })] });\n}\nvar SelectCurrencyButton = newStyled(Button)(() => {\n  const theme = useCustomTheme();\n  return {\n    background: theme.colors.tertiaryBg,\n    justifyContent: \"flex-start\",\n    gap: spacing.sm,\n    padding: spacing.sm,\n    \"&:hover\": {\n      background: theme.colors.secondaryButtonBg,\n      transform: \"scale(1.01)\"\n    },\n    transition: \"background 200ms ease, transform 150ms ease\"\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js\nvar import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1);\nvar import_react55 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/openOnRamppopup.js\nfunction openOnrampPopup(link, theme) {\n  const height = 750;\n  const width = 500;\n  const top = (window.innerHeight - height) / 2;\n  const left = (window.innerWidth - width) / 2;\n  return window.open(`${link}&theme=${theme}`, \"thirdweb Pay\", `width=${width}, height=${height}, top=${top}, left=${left}`);\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js\nvar import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1);\nvar import_react54 = __toESM(require_react(), 1);\nfunction OnrampStatusScreen(props) {\n  var _a, _b, _c, _d;\n  const queryClient = useQueryClient();\n  const { openedWindow, onSuccess } = props;\n  const statusQuery = useBuyWithFiatStatus({\n    intentId: props.intentId,\n    client: props.client\n  });\n  let uiStatus = \"loading\";\n  if (((_a = statusQuery.data) == null ? void 0 : _a.status) === \"ON_RAMP_TRANSFER_FAILED\" || ((_b = statusQuery.data) == null ? void 0 : _b.status) === \"PAYMENT_FAILED\") {\n    uiStatus = \"failed\";\n  } else if (((_c = statusQuery.data) == null ? void 0 : _c.status) === \"CRYPTO_SWAP_FALLBACK\") {\n    uiStatus = \"partialSuccess\";\n  } else if (((_d = statusQuery.data) == null ? void 0 : _d.status) === \"ON_RAMP_TRANSFER_COMPLETED\") {\n    uiStatus = \"completed\";\n  }\n  const purchaseCbCalled = (0, import_react54.useRef)(false);\n  (0, import_react54.useEffect)(() => {\n    var _a2;\n    if (purchaseCbCalled.current || !onSuccess) {\n      return;\n    }\n    if (((_a2 = statusQuery.data) == null ? void 0 : _a2.status) === \"ON_RAMP_TRANSFER_COMPLETED\") {\n      purchaseCbCalled.current = true;\n      onSuccess(statusQuery.data);\n    }\n  }, [onSuccess, statusQuery.data]);\n  (0, import_react54.useEffect)(() => {\n    var _a2, _b2;\n    if (!openedWindow || !statusQuery.data) {\n      return;\n    }\n    if (((_a2 = statusQuery.data) == null ? void 0 : _a2.status) === \"CRYPTO_SWAP_REQUIRED\" || ((_b2 = statusQuery.data) == null ? void 0 : _b2.status) === \"ON_RAMP_TRANSFER_COMPLETED\") {\n      openedWindow.close();\n    }\n  }, [statusQuery.data, openedWindow]);\n  const invalidatedBalance = (0, import_react54.useRef)(false);\n  (0, import_react54.useEffect)(() => {\n    var _a2;\n    if (!invalidatedBalance.current && ((_a2 = statusQuery.data) == null ? void 0 : _a2.status) === \"ON_RAMP_TRANSFER_COMPLETED\") {\n      invalidatedBalance.current = true;\n      invalidateWalletBalance(queryClient);\n    }\n  }, [statusQuery.data, queryClient]);\n  (0, import_react54.useEffect)(() => {\n    var _a2;\n    if (((_a2 = statusQuery.data) == null ? void 0 : _a2.status) === \"CRYPTO_SWAP_REQUIRED\") {\n      props.onShowSwapFlow(statusQuery.data);\n    }\n  }, [statusQuery.data, props.onShowSwapFlow]);\n  return (0, import_jsx_runtime91.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime91.jsx)(ModalHeader, { title: props.title, onBack: props.onBack }), props.hasTwoSteps && (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [(0, import_jsx_runtime91.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime91.jsx)(StepBar, { steps: 2, currentStep: 1 }), (0, import_jsx_runtime91.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime91.jsxs)(Text, { size: \"xs\", children: [\"Step 1 of 2 - Buying \", props.quote.onRampToken.token.symbol, \" with\", \" \", props.quote.fromCurrencyWithFees.currencySymbol] })] }), (0, import_jsx_runtime91.jsx)(OnrampStatusScreenUI, { uiStatus, onDone: props.onDone, fiatStatus: statusQuery.data, client: props.client, transactionMode: props.transactionMode, quote: props.quote, isEmbed: props.isEmbed })] });\n}\nfunction OnrampStatusScreenUI(props) {\n  const { uiStatus } = props;\n  const statusMeta = props.fiatStatus ? getBuyWithFiatStatusMeta(props.fiatStatus) : void 0;\n  const fiatStatus = props.fiatStatus && props.fiatStatus.status !== \"NOT_FOUND\" ? props.fiatStatus : void 0;\n  const onRampTokenQuote = props.quote.onRampToken;\n  const txDetails = (0, import_jsx_runtime91.jsx)(OnRampTxDetailsTable, { client: props.client, token: (fiatStatus == null ? void 0 : fiatStatus.source) ? {\n    chainId: fiatStatus.source.token.chainId,\n    address: fiatStatus.source.token.tokenAddress,\n    symbol: fiatStatus.source.token.symbol || \"\",\n    amount: fiatStatus.source.amount\n  } : {\n    chainId: onRampTokenQuote.token.chainId,\n    address: onRampTokenQuote.token.tokenAddress,\n    symbol: onRampTokenQuote.token.symbol,\n    amount: onRampTokenQuote.amount\n  }, fiat: {\n    amount: props.quote.fromCurrencyWithFees.amount,\n    currencySymbol: props.quote.fromCurrencyWithFees.currencySymbol\n  }, statusMeta: (fiatStatus == null ? void 0 : fiatStatus.source) && statusMeta ? {\n    color: statusMeta == null ? void 0 : statusMeta.color,\n    text: statusMeta == null ? void 0 : statusMeta.status,\n    txHash: fiatStatus.source.transactionHash\n  } : void 0 });\n  return (0, import_jsx_runtime91.jsxs)(Container, { children: [(0, import_jsx_runtime91.jsx)(Spacer, { y: \"xl\" }), uiStatus === \"loading\" && (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [(0, import_jsx_runtime91.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime91.jsx)(Container, { flex: \"row\", center: \"x\", children: (0, import_jsx_runtime91.jsx)(Spinner, { size: \"xxl\", color: \"accentText\" }) }), (0, import_jsx_runtime91.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime91.jsx)(Text, { color: \"primaryText\", size: \"lg\", center: true, children: \"Buy Pending\" }), (0, import_jsx_runtime91.jsx)(Spacer, { y: \"sm\" }), !isMobile() && (0, import_jsx_runtime91.jsx)(Text, { center: true, children: \"Complete the purchase in popup\" }), (0, import_jsx_runtime91.jsx)(Spacer, { y: \"xxl\" }), txDetails] }), uiStatus === \"failed\" && (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [(0, import_jsx_runtime91.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime91.jsx)(Container, { flex: \"row\", center: \"x\", children: (0, import_jsx_runtime91.jsx)(AccentFailIcon, { size: iconSize[\"3xl\"] }) }), (0, import_jsx_runtime91.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime91.jsx)(Text, { color: \"primaryText\", size: \"lg\", center: true, children: \"Transaction Failed\" }), (0, import_jsx_runtime91.jsx)(Spacer, { y: \"xxl\" }), txDetails] }), uiStatus === \"completed\" && (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [(0, import_jsx_runtime91.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime91.jsx)(Container, { flex: \"row\", center: \"x\", color: \"success\", children: (0, import_jsx_runtime91.jsx)(CheckCircledIcon, { width: iconSize[\"3xl\"], height: iconSize[\"3xl\"] }) }), (0, import_jsx_runtime91.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime91.jsx)(Text, { color: \"primaryText\", size: \"lg\", center: true, children: \"Buy Complete\" }), props.fiatStatus && props.fiatStatus.status !== \"NOT_FOUND\" && (0, import_jsx_runtime91.jsxs)(import_jsx_runtime91.Fragment, { children: [(0, import_jsx_runtime91.jsx)(Spacer, { y: \"xxl\" }), txDetails, (0, import_jsx_runtime91.jsx)(Spacer, { y: \"sm\" })] }), !props.isEmbed && (0, import_jsx_runtime91.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: props.onDone, children: props.transactionMode ? \"Continue Transaction\" : \"Done\" })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js\nfunction FiatFlow(props) {\n  const hasTwoSteps = isSwapRequiredPostOnramp(props.quote);\n  const [screen, setScreen] = (0, import_react55.useState)(hasTwoSteps ? {\n    id: \"step-1\"\n  } : {\n    id: \"onramp-status\"\n  });\n  const [popupWindow, setPopupWindow] = (0, import_react55.useState)(props.openedWindow);\n  const onPostOnrampSuccess = (0, import_react55.useCallback)(() => {\n    getBuyWithFiatStatus({\n      intentId: props.quote.intentId,\n      client: props.client\n    }).then((status) => {\n      props.onSuccess(status);\n    });\n  }, [props.onSuccess, props.quote.intentId, props.client]);\n  if (screen.id === \"step-1\") {\n    return (0, import_jsx_runtime92.jsx)(FiatSteps, { title: props.title, client: props.client, onBack: props.onBack, partialQuote: fiatQuoteToPartialQuote(props.quote), step: 1, onContinue: () => {\n      const popup = openOnrampPopup(props.quote.onRampLink, props.theme);\n      trackPayEvent({\n        event: \"open_onramp_popup\",\n        client: props.client,\n        walletAddress: props.payer.account.address,\n        walletType: props.payer.wallet.id\n      });\n      addPendingTx({\n        type: \"fiat\",\n        intentId: props.quote.intentId\n      });\n      setPopupWindow(popup);\n      setScreen({ id: \"onramp-status\" });\n    } });\n  }\n  if (screen.id === \"onramp-status\") {\n    return (0, import_jsx_runtime92.jsx)(OnrampStatusScreen, { title: props.title, client: props.client, intentId: props.quote.intentId, onBack: props.onBack, hasTwoSteps, openedWindow: popupWindow, quote: props.quote, onDone: props.onDone, onShowSwapFlow: (_status) => {\n      setScreen({ id: \"postonramp-swap\", data: _status });\n    }, transactionMode: props.transactionMode, isEmbed: props.isEmbed, onSuccess: props.onSuccess });\n  }\n  if (screen.id === \"postonramp-swap\") {\n    return (0, import_jsx_runtime92.jsx)(PostOnRampSwapFlow, { title: props.title, status: screen.data, quote: fiatQuoteToPartialQuote(props.quote), client: props.client, onBack: props.onBack, onDone: props.onDone, onSwapFlowStarted: () => {\n    }, transactionMode: props.transactionMode, isEmbed: props.isEmbed, payer: props.payer, onSuccess: onPostOnrampSuccess });\n  }\n  return null;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js\nfunction useEnabledPaymentMethods(options) {\n  const { payOptions, supportedDestinations, toChain, toToken } = options;\n  function getEnabledPayMethodsForSelectedToken() {\n    const chain = supportedDestinations.find((c) => c.chain.id === toChain.id);\n    if (!chain) {\n      return {\n        fiat: false,\n        swap: false\n      };\n    }\n    const toTokenAddress = isNativeToken(toToken) ? NATIVE_TOKEN_ADDRESS : toToken.address;\n    const tokenInfo = chain.tokens.find((t) => t.address.toLowerCase() === toTokenAddress.toLowerCase());\n    if (!tokenInfo) {\n      return {\n        fiat: true,\n        swap: true\n      };\n    }\n    return {\n      fiat: tokenInfo.buyWithFiatEnabled,\n      swap: tokenInfo.buyWithCryptoEnabled\n    };\n  }\n  const { fiat, swap } = getEnabledPayMethodsForSelectedToken();\n  const buyWithFiatEnabled = payOptions.buyWithFiat !== false && fiat;\n  const buyWithCryptoEnabled = payOptions.buyWithCrypto !== false && swap;\n  return {\n    buyWithFiatEnabled,\n    buyWithCryptoEnabled\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js\nvar import_react56 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/chains/chain-definitions/polygon.js\nvar polygon = defineChain({\n  id: 137,\n  name: \"Polygon\",\n  nativeCurrency: { name: \"POL\", symbol: \"POL\", decimals: 18 },\n  blockExplorers: [\n    {\n      name: \"PolygonScan\",\n      url: \"https://polygonscan.com\",\n      apiUrl: \"https://api.polygonscan.com/api\"\n    }\n  ]\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js\nfunction useToTokenSelectionStates(options) {\n  var _a, _b, _c, _d;\n  const { payOptions, supportedDestinations } = options;\n  const prefillBuy = payOptions == null ? void 0 : payOptions.prefillBuy;\n  const activeChain = useActiveWalletChain();\n  const initialTokenAmount = (prefillBuy == null ? void 0 : prefillBuy.amount) || \"\";\n  const [tokenAmount, setTokenAmount] = (0, import_react56.useState)(initialTokenAmount);\n  const deferredTokenAmount = useDebouncedValue(tokenAmount, 300);\n  const [toChain, setToChain] = (0, import_react56.useState)(\n    // use prefill chain if available\n    (prefillBuy == null ? void 0 : prefillBuy.chain) || payOptions.mode === \"transaction\" && ((_a = payOptions.transaction) == null ? void 0 : _a.chain) || payOptions.mode === \"direct_payment\" && ((_b = payOptions.paymentInfo) == null ? void 0 : _b.chain) || // use active chain if its supported as destination\n    ((_c = supportedDestinations.find((x) => x.chain.id === (activeChain == null ? void 0 : activeChain.id))) == null ? void 0 : _c.chain) || // default to the first chain in supportedDestinations, or polygon if nothing is found at all\n    ((_d = supportedDestinations[0]) == null ? void 0 : _d.chain) || polygon\n  );\n  const [toToken, setToToken] = (0, import_react56.useState)((prefillBuy == null ? void 0 : prefillBuy.token) || payOptions.mode === \"direct_payment\" && payOptions.paymentInfo.token || NATIVE_TOKEN);\n  return {\n    toChain,\n    setToChain,\n    toToken,\n    setToToken,\n    tokenAmount,\n    setTokenAmount,\n    deferredTokenAmount\n  };\n}\nfunction useFromTokenSelectionStates(options) {\n  var _a, _b, _c, _d, _e, _f;\n  const { payOptions, supportedSources } = options;\n  const firstSupportedSource = (supportedSources == null ? void 0 : supportedSources.length) ? supportedSources[0] : void 0;\n  const [fromChain_, setFromChain] = (0, import_react56.useState)();\n  const fromChainDevSpecified = payOptions.buyWithCrypto !== false && ((_b = (_a = payOptions.buyWithCrypto) == null ? void 0 : _a.prefillSource) == null ? void 0 : _b.chain) || payOptions.mode === \"transaction\" && ((_c = payOptions.transaction) == null ? void 0 : _c.chain) || payOptions.mode === \"direct_payment\" && ((_d = payOptions.paymentInfo) == null ? void 0 : _d.chain);\n  const fromChainFromApi = (firstSupportedSource == null ? void 0 : firstSupportedSource.chain) ? firstSupportedSource.chain : void 0;\n  const fromChain = fromChain_ || fromChainDevSpecified || fromChainFromApi || polygon;\n  const [fromToken_, setFromToken] = (0, import_react56.useState)();\n  const fromTokenDevSpecified = payOptions.buyWithCrypto !== false && ((_f = (_e = payOptions.buyWithCrypto) == null ? void 0 : _e.prefillSource) == null ? void 0 : _f.token) || payOptions.mode === \"direct_payment\" && payOptions.paymentInfo.token;\n  const fromTokenFromApi = NATIVE_TOKEN;\n  const fromToken = fromToken_ || fromTokenDevSpecified || fromTokenFromApi || NATIVE_TOKEN;\n  return {\n    fromChain,\n    setFromChain,\n    fromToken,\n    setFromToken\n  };\n}\nfunction useFiatCurrencySelectionStates(options) {\n  var _a, _b;\n  const { payOptions } = options;\n  const devSpecifiedDefaultCurrency = payOptions.buyWithFiat !== false ? (_b = (_a = payOptions.buyWithFiat) == null ? void 0 : _a.prefillSource) == null ? void 0 : _b.currency : void 0;\n  const defaultSelectedCurrencyShorthand = devSpecifiedDefaultCurrency || getDefaultCurrencyBasedOnLocation();\n  const [selectedCurrency, setSelectedCurrency] = (0, import_react56.useState)(currencies.find((x) => x.shorthand === defaultSelectedCurrencyShorthand) || usdCurrency);\n  return {\n    selectedCurrency,\n    setSelectedCurrency\n  };\n}\nfunction getDefaultCurrencyBasedOnLocation() {\n  try {\n    const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone.toLowerCase();\n    if (timeZone.includes(\"london\")) {\n      return \"GBP\";\n    }\n    if (timeZone.includes(\"europe\")) {\n      return \"EUR\";\n    }\n    if (timeZone.includes(\"japan\")) {\n      return \"JPY\";\n    }\n    if (timeZone.includes(\"canada\")) {\n      return \"CAD\";\n    }\n    return \"USD\";\n  } catch {\n    return \"USD\";\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js\nvar import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/utils.js\nfunction getBuyTokenAmountFontSize(value) {\n  return value.length > 10 ? \"26px\" : value.length > 6 ? \"34px\" : \"50px\";\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js\nfunction BuyTokenInput(props) {\n  const { name } = useChainName(props.chain);\n  const getWidth = () => {\n    let chars = props.value.replace(\".\", \"\").length;\n    const hasDot = props.value.includes(\".\");\n    if (hasDot) {\n      chars += 0.3;\n    }\n    return `calc(${`${Math.max(1, chars)}ch`} + 6px)`;\n  };\n  return (0, import_jsx_runtime93.jsxs)(Container, { children: [(0, import_jsx_runtime93.jsx)(\"div\", { onClick: (e) => {\n    var _a;\n    (_a = e.currentTarget.querySelector(\"input\")) == null ? void 0 : _a.focus();\n  }, children: (0, import_jsx_runtime93.jsxs)(Container, { flex: \"row\", center: \"both\", gap: \"xs\", style: {\n    flexWrap: \"nowrap\"\n  }, children: [(0, import_jsx_runtime93.jsx)(Input, { variant: \"outline\", pattern: \"^[0-9]*[.,]?[0-9]*$\", inputMode: \"decimal\", tabIndex: -1, placeholder: \"0\", type: \"text\", \"data-placeholder\": props.value === \"\", value: props.value || \"0\", disabled: props.freezeAmount, onClick: (e) => {\n    if (props.value === \"\") {\n      e.currentTarget.setSelectionRange(e.currentTarget.value.length, e.currentTarget.value.length);\n    }\n  }, onChange: (e) => {\n    let value = e.target.value;\n    if (value.startsWith(\".\")) {\n      value = `0${value}`;\n    }\n    const numValue = Number(value);\n    if (Number.isNaN(numValue)) {\n      return;\n    }\n    if (value.startsWith(\"0\") && !value.startsWith(\"0.\")) {\n      props.onChange(value.slice(1));\n    } else {\n      props.onChange(value);\n    }\n  }, style: {\n    border: \"none\",\n    fontSize: getBuyTokenAmountFontSize(props.value),\n    boxShadow: \"none\",\n    borderRadius: \"0\",\n    padding: \"0\",\n    paddingBlock: \"2px\",\n    fontWeight: 600,\n    textAlign: \"right\",\n    width: getWidth(),\n    maxWidth: \"calc(100% - 100px)\"\n  } }), (0, import_jsx_runtime93.jsx)(TokenSymbol, { token: props.token, chain: props.chain, size: \"lg\", color: \"secondaryText\" })] }) }), !props.hideTokenSelector && (0, import_jsx_runtime93.jsxs)(import_jsx_runtime93.Fragment, { children: [(0, import_jsx_runtime93.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime93.jsx)(Container, { flex: \"row\", center: \"x\", children: (0, import_jsx_runtime93.jsxs)(TokenButton, { variant: \"secondary\", fullWidth: true, style: {\n    fontSize: fontSize.sm\n  }, gap: \"xxs\", onClick: props.onSelectToken, disabled: props.freezeChainAndToken, children: [(0, import_jsx_runtime93.jsxs)(Container, { flex: \"row\", center: \"y\", gap: \"sm\", children: [(0, import_jsx_runtime93.jsx)(TokenIcon, { token: props.token, chain: props.chain, size: \"md\", client: props.client }), (0, import_jsx_runtime93.jsxs)(Container, { flex: \"column\", style: {\n    gap: \"4px\"\n  }, children: [(0, import_jsx_runtime93.jsx)(TokenSymbol, { token: props.token, chain: props.chain, size: \"sm\" }), name ? (0, import_jsx_runtime93.jsx)(Text, { size: \"xs\", color: \"secondaryText\", children: name }) : (0, import_jsx_runtime93.jsx)(Skeleton, { width: \"90px\", height: fontSize.xs })] })] }), (0, import_jsx_runtime93.jsx)(ChevronDownIcon, { width: iconSize.sm, height: iconSize.sm, style: {\n    marginLeft: \"auto\"\n  } })] }) })] })] });\n}\nvar TokenButton = newStyled(Button)(() => {\n  const theme = useCustomTheme();\n  return {\n    background: theme.colors.tertiaryBg,\n    border: `1px solid ${theme.colors.borderColor}`,\n    justifyContent: \"flex-start\",\n    transition: \"background 0.3s\",\n    padding: spacing.sm\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js\nvar import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1);\nfunction SwapFees(props) {\n  return (0, import_jsx_runtime94.jsx)(Container, { flex: \"column\", gap: \"xs\", style: {\n    alignItems: \"flex-start\"\n  }, children: props.quote.processingFees.map((fee) => {\n    const feeAmount = formatNumber(Number(fee.amount), 6);\n    return (0, import_jsx_runtime94.jsxs)(Container, { flex: \"row\", gap: \"xxs\", children: [(0, import_jsx_runtime94.jsxs)(Text, { color: \"primaryText\", size: \"sm\", children: [feeAmount === 0 ? \"~\" : \"\", feeAmount, \" \", fee.token.symbol] }), (0, import_jsx_runtime94.jsxs)(Text, { color: \"secondaryText\", size: \"sm\", children: [\"($\", (fee.amountUSDCents / 100).toFixed(2), \")\"] })] }, `${fee.token.chainId}_${fee.token.tokenAddress}_${feeAmount}`);\n  }) });\n}\nfunction FiatFees(props) {\n  return (0, import_jsx_runtime94.jsxs)(Container, { flex: \"column\", gap: \"xs\", children: [(0, import_jsx_runtime94.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime94.jsx)(Text, { inline: true, color: \"secondaryText\", children: \"Amount\" }), (0, import_jsx_runtime94.jsxs)(Text, { color: \"primaryText\", inline: true, children: [formatNumber(Number(props.quote.fromCurrency.amount), 2), \" \", props.quote.fromCurrency.currencySymbol] })] }), props.quote.processingFees.map((fee, i) => {\n    const feeAmount = formatNumber(Number(fee.amount), 6);\n    return (0, import_jsx_runtime94.jsxs)(\"div\", { style: {\n      display: \"flex\",\n      justifyContent: \"space-between\"\n    }, children: [(0, import_jsx_runtime94.jsx)(Text, { inline: true, color: \"secondaryText\", children: fee.feeType === \"NETWORK\" ? \"Network Fee\" : \"Processing Fee\" }), (0, import_jsx_runtime94.jsxs)(Text, { color: \"primaryText\", inline: true, children: [feeAmount === 0 ? \"~\" : \"\", \" \", feeAmount, \" \", fee.currencySymbol] })] }, i);\n  }), (0, import_jsx_runtime94.jsx)(Spacer, { y: \"xxs\" }), (0, import_jsx_runtime94.jsx)(Line, {}), (0, import_jsx_runtime94.jsx)(Spacer, { y: \"xxs\" }), (0, import_jsx_runtime94.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime94.jsx)(Text, { inline: true, color: \"secondaryText\", children: \"Total\" }), (0, import_jsx_runtime94.jsxs)(Text, { color: \"primaryText\", inline: true, children: [formatNumber(Number(props.quote.fromCurrencyWithFees.amount), 6), \" \", props.quote.fromCurrencyWithFees.currencySymbol] })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js\nvar import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1);\nfunction PayWithCryptoQuoteInfo(props) {\n  const theme = useCustomTheme();\n  const { name } = useChainName(props.chain);\n  const balanceQuery = useWalletBalance({\n    address: props.payerAccount.address,\n    chain: props.chain,\n    tokenAddress: isNativeToken(props.token) ? void 0 : props.token.address,\n    client: props.client\n  });\n  return (0, import_jsx_runtime95.jsxs)(Container, { bg: \"tertiaryBg\", style: {\n    borderRadius: radius.lg,\n    border: `1px solid ${theme.colors.borderColor}`,\n    ...props.swapRequired ? {\n      borderBottom: \"none\",\n      borderBottomLeftRadius: 0,\n      borderBottomRightRadius: 0\n    } : {}\n  }, children: [(0, import_jsx_runtime95.jsxs)(Container, { flex: \"row\", gap: \"sm\", style: {\n    justifyContent: \"space-between\",\n    padding: spacing.sm,\n    borderBottom: `1px solid ${theme.colors.borderColor}`\n  }, children: [(0, import_jsx_runtime95.jsx)(WalletRow, { client: props.client, address: props.payerAccount.address }), balanceQuery.data ? (0, import_jsx_runtime95.jsxs)(Container, { flex: \"row\", gap: \"3xs\", center: \"y\", children: [(0, import_jsx_runtime95.jsx)(Text, { size: \"xs\", color: \"secondaryText\", weight: 500, children: formatTokenBalance(balanceQuery.data, false) }), (0, import_jsx_runtime95.jsx)(TokenSymbol, { token: props.token, chain: props.chain, size: \"xs\", color: \"secondaryText\" })] }) : (0, import_jsx_runtime95.jsx)(Skeleton, { width: \"70px\", height: fontSize.xs })] }), (0, import_jsx_runtime95.jsxs)(Container, { flex: \"row\", gap: \"sm\", style: {\n    paddingInline: spacing.sm,\n    paddingBlock: spacing.sm,\n    minWidth: \"50%\",\n    justifyContent: \"flex-start\",\n    minHeight: \"64px\"\n  }, children: [(0, import_jsx_runtime95.jsx)(PayTokenIcon, { token: props.token, chain: props.chain, size: \"md\", client: props.client }), (0, import_jsx_runtime95.jsxs)(Container, { flex: \"column\", gap: \"3xs\", children: [props.isLoading ? (0, import_jsx_runtime95.jsx)(Skeleton, { width: \"120px\", height: fontSize.md, color: \"borderColor\" }) : (0, import_jsx_runtime95.jsxs)(Container, { flex: \"row\", gap: \"xxs\", center: \"y\", color: \"primaryText\", children: [(0, import_jsx_runtime95.jsx)(Text, { size: \"md\", color: props.value ? \"primaryText\" : \"secondaryText\", children: formatNumber(Number(props.value), 6) || \"\" }), (0, import_jsx_runtime95.jsx)(TokenSymbol, { token: props.token, chain: props.chain, size: \"sm\" })] }), name ? (0, import_jsx_runtime95.jsx)(Text, { size: \"xs\", children: name }) : (0, import_jsx_runtime95.jsx)(Skeleton, { width: \"90px\", height: fontSize.xs })] })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js\nvar import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1);\nfunction PaymentSelectionScreen(props) {\n  var _a, _b;\n  const theme = useCustomTheme();\n  const connectedWallets = useConnectedWallets();\n  const hideConnectButton = !props.showAllWallets && ((_a = props.wallets) == null ? void 0 : _a.every((w) => connectedWallets.includes(w)));\n  const chainInfo = useChainMetadata(props.toChain);\n  const activeAccount = useActiveAccount();\n  const walletsAndBalances = useQuery({\n    queryKey: [\n      \"wallets-and-balances\",\n      connectedWallets.map((w) => {\n        var _a2;\n        return (_a2 = w.getAccount()) == null ? void 0 : _a2.address;\n      }),\n      props.sourceSupportedTokens,\n      props.toChain.id,\n      props.toToken,\n      props.tokenAmount,\n      props.mode,\n      activeAccount == null ? void 0 : activeAccount.address\n    ],\n    queryFn: async () => {\n      const walletBalanceMap = /* @__PURE__ */ new Map();\n      const balancePromises = connectedWallets.flatMap((wallet) => {\n        var _a2, _b2, _c, _d, _e;\n        const account = wallet.getAccount();\n        if (!account)\n          return [];\n        walletBalanceMap.set(wallet, []);\n        const toToken = isNativeToken(props.toToken) ? {\n          address: NATIVE_TOKEN_ADDRESS,\n          name: ((_a2 = chainInfo.data) == null ? void 0 : _a2.nativeCurrency.name) || \"\",\n          symbol: ((_b2 = chainInfo.data) == null ? void 0 : _b2.nativeCurrency.symbol) || \"\",\n          icon: (_d = (_c = chainInfo.data) == null ? void 0 : _c.icon) == null ? void 0 : _d.url\n        } : props.toToken;\n        const tokens = {\n          ...props.sourceSupportedTokens,\n          [props.toChain.id]: [\n            toToken,\n            ...((_e = props.sourceSupportedTokens) == null ? void 0 : _e[props.toChain.id]) || []\n          ]\n        };\n        return Object.entries(tokens).flatMap(([chainId, tokens2]) => {\n          return tokens2.map(async (token) => {\n            try {\n              const chain = getCachedChain(Number(chainId));\n              const balance = await getWalletBalance({\n                address: account.address,\n                chain,\n                tokenAddress: isNativeToken(token) ? void 0 : token.address,\n                client: props.client\n              });\n              const shouldInclude = token.address === toToken.address && chain.id === props.toChain.id ? props.mode === \"fund_wallet\" && account.address === (activeAccount == null ? void 0 : activeAccount.address) ? false : Number(balance.displayValue) > Number(props.tokenAmount) : balance.value > 0n;\n              if (shouldInclude) {\n                const existingBalances = walletBalanceMap.get(wallet) || [];\n                existingBalances.push({ balance, chain, token });\n                existingBalances.sort((a, b) => {\n                  if (a.chain.id === props.toChain.id && a.token.address === toToken.address)\n                    return -1;\n                  if (b.chain.id === props.toChain.id && b.token.address === toToken.address)\n                    return 1;\n                  if (a.chain.id === props.toChain.id)\n                    return -1;\n                  if (b.chain.id === props.toChain.id)\n                    return 1;\n                  return a.chain.id > b.chain.id ? 1 : -1;\n                });\n              }\n            } catch (error) {\n              console.error(`Failed to fetch balance for wallet ${wallet.id} on chain ${chainId} for token ${token.symbol}:`, error);\n            }\n          });\n        });\n      });\n      await Promise.all(balancePromises);\n      return walletBalanceMap;\n    },\n    enabled: !!props.sourceSupportedTokens && !!chainInfo.data\n  });\n  if (walletsAndBalances.isLoading || !walletsAndBalances.data) {\n    return (0, import_jsx_runtime96.jsx)(LoadingScreen, {});\n  }\n  return (0, import_jsx_runtime96.jsxs)(Container, { children: [(0, import_jsx_runtime96.jsxs)(Container, { flex: \"column\", gap: \"xs\", children: [Array.from(((_b = walletsAndBalances.data) == null ? void 0 : _b.entries()) || []).filter(([w]) => {\n    var _a2;\n    return !((_a2 = props.hiddenWallets) == null ? void 0 : _a2.includes(w.id));\n  }).map(([w, balances]) => {\n    var _a2;\n    const address = (_a2 = w.getAccount()) == null ? void 0 : _a2.address;\n    if (!address)\n      return null;\n    return (0, import_jsx_runtime96.jsx)(WalletRowWithBalances, { wallet: w, balances, client: props.client, address, onClick: props.onSelect }, w.id);\n  }), !hideConnectButton && (0, import_jsx_runtime96.jsx)(Button, { variant: \"secondary\", fullWidth: true, onClick: props.onConnect, gap: \"xs\", bg: \"tertiaryBg\", style: {\n    borderRadius: radius.lg,\n    border: `1px solid ${theme.colors.borderColor}`,\n    padding: spacing.sm\n  }, children: (0, import_jsx_runtime96.jsxs)(Container, { flex: \"row\", gap: \"sm\", center: \"y\", expand: true, color: \"secondaryIconColor\", children: [(0, import_jsx_runtime96.jsx)(OutlineWalletIcon, { size: iconSize.md }), (0, import_jsx_runtime96.jsx)(Text, { size: \"sm\", color: \"primaryText\", children: \"Pay with another wallet\" })] }) }), props.payWithFiatEnabled && (0, import_jsx_runtime96.jsx)(Button, { variant: \"secondary\", fullWidth: true, gap: \"xs\", bg: \"tertiaryBg\", onClick: props.onSelectFiat, style: {\n    borderRadius: radius.lg,\n    border: `1px solid ${theme.colors.borderColor}`,\n    padding: spacing.sm\n  }, children: (0, import_jsx_runtime96.jsxs)(Container, { flex: \"row\", gap: \"sm\", center: \"y\", expand: true, color: \"secondaryIconColor\", children: [(0, import_jsx_runtime96.jsx)(IdCardIcon, { style: {\n    width: iconSize.md,\n    height: iconSize.md\n  } }), (0, import_jsx_runtime96.jsx)(Text, { size: \"sm\", color: \"primaryText\", children: \"Pay with credit card\" })] }) })] }), (0, import_jsx_runtime96.jsx)(Spacer, { y: \"sm\" })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js\nvar import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1);\nvar import_react58 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js\nvar import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1);\nvar import_react57 = __toESM(require_react(), 1);\nfunction TransferConfirmationScreen(props) {\n  const { title, onBack, receiverAddress, client, payer, onDone, chain, token, tokenAmount, transactionMode, setTransactionHash, payOptions } = props;\n  const [step, setStep] = (0, import_react57.useState)(\"transfer\");\n  const [status, setStatus] = (0, import_react57.useState)({ id: \"idle\" });\n  const { symbol } = useChainSymbol(chain);\n  return (0, import_jsx_runtime97.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime97.jsx)(ModalHeader, { title, onBack }), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"xl\" }), transactionMode && (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [(0, import_jsx_runtime97.jsx)(StepBar, { steps: 2, currentStep: step === \"transfer\" ? 1 : 2 }), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime97.jsx)(Text, { size: \"sm\", children: step === \"transfer\" ? \"Step 1 of 2 - Transfer funds\" : \"Step 2 of 2 - Finalize transaction\" }), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"xl\" })] }), (0, import_jsx_runtime97.jsxs)(Container, { flex: \"row\", center: \"y\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime97.jsx)(Text, { size: \"sm\", children: \"From\" }), (0, import_jsx_runtime97.jsx)(WalletRow, { address: payer.account.address, client })] }), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime97.jsx)(Line, {}), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime97.jsxs)(Container, { flex: \"row\", center: \"y\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime97.jsx)(Text, { size: \"sm\", children: \"To\" }), (0, import_jsx_runtime97.jsx)(WalletRow, { address: receiverAddress, client })] }), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime97.jsx)(Line, {}), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime97.jsx)(TokenInfoRow, { chainId: chain.id, client, label: \"Amount\", tokenAmount, tokenSymbol: isNativeToken(token) ? symbol || \"\" : token.symbol, tokenAddress: isNativeToken(token) ? NATIVE_TOKEN_ADDRESS : token.address }), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"lg\" }), transactionMode && (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [(0, import_jsx_runtime97.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime97.jsxs)(Container, { gap: \"sm\", flex: \"row\", style: {\n    justifyContent: \"space-between\"\n  }, center: \"y\", color: \"accentText\", children: [(0, import_jsx_runtime97.jsx)(Step, { isDone: step === \"execute\", isActive: step === \"transfer\", label: step === \"transfer\" ? \"Transfer\" : \"Done\" }), (0, import_jsx_runtime97.jsx)(ConnectorLine, {}), (0, import_jsx_runtime97.jsx)(Step, { isDone: false, label: \"Finalize\", isActive: step === \"execute\" })] }), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"lg\" })] }), status.id === \"error\" && (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [(0, import_jsx_runtime97.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"both\", color: \"danger\", children: (0, import_jsx_runtime97.jsx)(Text, { color: \"danger\", size: \"sm\", style: { textAlign: \"center\" }, children: step === \"transfer\" ? `${status.error || \"Failed to Transfer\"}` : \"Failed to Execute\" }) }), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"md\" })] }), !transactionMode && step === \"execute\" && status.id === \"done\" && (0, import_jsx_runtime97.jsxs)(import_jsx_runtime97.Fragment, { children: [(0, import_jsx_runtime97.jsxs)(Container, { flex: \"row\", gap: \"xs\", center: \"both\", color: \"success\", children: [(0, import_jsx_runtime97.jsx)(CheckCircledIcon, { width: iconSize.sm, height: iconSize.sm }), (0, import_jsx_runtime97.jsx)(Text, { color: \"success\", size: \"sm\", children: \"Payment completed\" })] }), (0, import_jsx_runtime97.jsx)(Spacer, { y: \"md\" })] }), payer.chain.id !== chain.id ? (0, import_jsx_runtime97.jsx)(SwitchNetworkButton, { fullWidth: true, variant: \"accent\", switchChain: async () => {\n    await props.payer.wallet.switchChain(chain);\n  } }) : (0, import_jsx_runtime97.jsxs)(Button, { variant: \"accent\", fullWidth: true, disabled: status.id === \"pending\", onClick: async () => {\n    var _a;\n    if (step === \"execute\") {\n      onDone();\n      return;\n    }\n    try {\n      setStatus({ id: \"pending\" });\n      if (transactionMode) {\n        const transaction = isNativeToken(token) ? prepareTransaction({\n          client,\n          chain,\n          to: receiverAddress,\n          value: toWei(tokenAmount)\n        }) : transfer2({\n          contract: getContract({\n            address: token.address,\n            chain,\n            client\n          }),\n          to: receiverAddress,\n          amount: tokenAmount\n        });\n        await sendAndConfirmTransaction({\n          account: props.payer.account,\n          transaction\n        });\n        setStep(\"execute\");\n        setStatus({ id: \"idle\" });\n      } else {\n        const transferResponse = await getBuyWithCryptoTransfer({\n          client,\n          fromAddress: payer.account.address,\n          toAddress: receiverAddress,\n          chainId: chain.id,\n          tokenAddress: isNativeToken(token) ? NATIVE_TOKEN_ADDRESS : token.address,\n          amount: tokenAmount,\n          purchaseData: payOptions == null ? void 0 : payOptions.purchaseData\n        });\n        if (transferResponse.approval) {\n          setStep(\"approve\");\n          await sendAndConfirmTransaction({\n            account: props.payer.account,\n            transaction: transferResponse.approval\n          });\n        }\n        setStep(\"transfer\");\n        const transaction = transferResponse.transactionRequest;\n        const tx = await sendTransaction({\n          account: props.payer.account,\n          transaction\n        });\n        setTransactionHash(tx.transactionHash);\n        setStatus({ id: \"idle\" });\n      }\n    } catch (e) {\n      console.error(e);\n      setStatus({\n        id: \"error\",\n        error: \"error\" in e ? (_a = e.error) == null ? void 0 : _a.message : e == null ? void 0 : e.message\n      });\n    }\n  }, gap: \"xs\", children: [step === \"execute\" && (status.id === \"done\" ? \"Done\" : \"Continue\"), step === \"transfer\" && (status.id === \"pending\" ? \"Confirming\" : \"Confirm\"), step === \"approve\" && (status.id === \"pending\" ? \"Approving\" : \"Approve\"), status.id === \"pending\" && (0, import_jsx_runtime97.jsx)(Spinner, { size: \"sm\", color: \"accentButtonText\" })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js\nfunction TransferFlow(props) {\n  const [transferTxHash, setTransferTxHash] = (0, import_react58.useState)();\n  if (transferTxHash) {\n    return (0, import_jsx_runtime98.jsx)(SwapStatusScreen, { title: props.title, onBack: props.onBack, onTryAgain: props.onTryAgain, swapTxHash: transferTxHash, client: props.client, onDone: props.onDone, transactionMode: false, isEmbed: props.isEmbed, quote: void 0, onSuccess: props.onSuccess });\n  }\n  return (0, import_jsx_runtime98.jsx)(TransferConfirmationScreen, { ...props, setTransactionHash: setTransferTxHash });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/usePayerSetup.js\nvar import_react59 = __toESM(require_react(), 1);\nfunction usePayerSetup() {\n  const wallet = useActiveWallet();\n  const account = useActiveAccount();\n  const activeChain = useActiveWalletChain();\n  const [_payer, setPayer] = (0, import_react59.useState)();\n  (0, import_react59.useEffect)(() => {\n    const wallet2 = _payer == null ? void 0 : _payer.wallet;\n    function update() {\n      if (!wallet2) {\n        setPayer(void 0);\n        return;\n      }\n      const account2 = wallet2.getAccount();\n      const chain = wallet2.getChain();\n      if (account2 && chain) {\n        setPayer({\n          account: account2,\n          chain,\n          wallet: wallet2\n        });\n      } else {\n        setPayer(void 0);\n      }\n    }\n    if (wallet2) {\n      const unsubChainChanged = wallet2.subscribe(\"chainChanged\", update);\n      const unsubAccountChanged = wallet2.subscribe(\"accountChanged\", update);\n      return () => {\n        unsubChainChanged();\n        unsubAccountChanged();\n      };\n    }\n    return void 0;\n  }, [_payer]);\n  const initialPayer = account && activeChain && wallet ? { account, chain: activeChain, wallet } : void 0;\n  const payer = _payer || initialPayer;\n  return {\n    payer,\n    setPayer\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js\nfunction BuyScreen2(props) {\n  const isTestMode = props.payOptions.buyWithCrypto ? props.payOptions.buyWithCrypto.testMode : void 0;\n  const supportedDestinationsQuery = useBuySupportedDestinations(props.client, isTestMode);\n  if (!supportedDestinationsQuery.data) {\n    return (0, import_jsx_runtime99.jsx)(LoadingScreen, {});\n  }\n  return (0, import_jsx_runtime99.jsx)(BuyScreenContent, { ...props, supportedDestinations: supportedDestinationsQuery.data });\n}\nfunction BuyScreenContent(props) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B;\n  const { client, supportedDestinations, connectLocale, payOptions } = props;\n  const activeAccount = useActiveAccount();\n  const { payer, setPayer } = usePayerSetup();\n  const [screen, setScreen] = (0, import_react60.useState)({\n    id: \"main\"\n  });\n  const { tokenAmount, setTokenAmount, toChain, setToChain, deferredTokenAmount, toToken, setToToken } = useToTokenSelectionStates({\n    payOptions,\n    supportedDestinations\n  });\n  const [hasEditedAmount, setHasEditedAmount] = (0, import_react60.useState)(false);\n  const onDone = (0, import_react60.useCallback)(() => {\n    setScreen({ id: \"main\" });\n    props.onDone();\n  }, [props.onDone]);\n  const supportedSourcesQuery = useBuySupportedSources({\n    client: props.client,\n    destinationChainId: toChain.id,\n    destinationTokenAddress: isNativeToken(toToken) ? NATIVE_TOKEN_ADDRESS : toToken.address\n  });\n  const destinationSupportedTokens = (0, import_react60.useMemo)(() => {\n    return createSupportedTokens(supportedDestinations, payOptions, props.supportedTokens);\n  }, [props.supportedTokens, supportedDestinations, payOptions]);\n  const sourceSupportedTokens = (0, import_react60.useMemo)(() => {\n    if (!supportedSourcesQuery.data) {\n      return void 0;\n    }\n    const supportedSources = supportedSourcesQuery.data;\n    return createSupportedTokens(supportedSources, payOptions, props.supportedTokens);\n  }, [props.supportedTokens, supportedSourcesQuery.data, payOptions]);\n  const { fromChain, setFromChain, fromToken, setFromToken } = useFromTokenSelectionStates({\n    payOptions,\n    supportedSources: supportedSourcesQuery.data || []\n  });\n  const { selectedCurrency, setSelectedCurrency } = useFiatCurrencySelectionStates({\n    payOptions\n  });\n  const enabledPaymentMethods = useEnabledPaymentMethods({\n    payOptions: props.payOptions,\n    supportedDestinations: props.supportedDestinations,\n    toChain,\n    toToken\n  });\n  const payDisabled = enabledPaymentMethods.buyWithCryptoEnabled === false && enabledPaymentMethods.buyWithFiatEnabled === false;\n  const queryClient = useQueryClient();\n  const onSwapSuccess = (0, import_react60.useCallback)((_status) => {\n    var _a2, _b2;\n    (_b2 = (_a2 = props.payOptions).onPurchaseSuccess) == null ? void 0 : _b2.call(_a2, {\n      type: \"crypto\",\n      status: _status\n    });\n    invalidateWalletBalance(queryClient);\n  }, [props.payOptions.onPurchaseSuccess, queryClient]);\n  const onFiatSuccess = (0, import_react60.useCallback)((_status) => {\n    var _a2, _b2;\n    (_b2 = (_a2 = props.payOptions).onPurchaseSuccess) == null ? void 0 : _b2.call(_a2, {\n      type: \"fiat\",\n      status: _status\n    });\n    invalidateWalletBalance(queryClient);\n  }, [props.payOptions.onPurchaseSuccess, queryClient]);\n  if (screen.id === \"connect-payer-wallet\") {\n    return (0, import_jsx_runtime99.jsx)(WalletSwitcherConnectionScreen, { accountAbstraction: (_a = props.connectOptions) == null ? void 0 : _a.accountAbstraction, appMetadata: (_b = props.connectOptions) == null ? void 0 : _b.appMetadata, chain: (_c = props.connectOptions) == null ? void 0 : _c.chain, chains: (_d = props.connectOptions) == null ? void 0 : _d.chains, client: props.client, connectLocale: props.connectLocale, isEmbed: props.isEmbed, onBack: () => setScreen(screen.backScreen), onSelect: (w) => {\n      const account = w.getAccount();\n      const chain = w.getChain();\n      if (w && account && chain) {\n        setPayer({\n          account,\n          chain,\n          wallet: w\n        });\n      }\n    }, hiddenWallets: props.hiddenWallets, recommendedWallets: (_e = props.connectOptions) == null ? void 0 : _e.recommendedWallets, showAllWallets: ((_f = props.connectOptions) == null ? void 0 : _f.showAllWallets) === void 0 ? true : (_g = props.connectOptions) == null ? void 0 : _g.showAllWallets, walletConnect: (_h = props.connectOptions) == null ? void 0 : _h.walletConnect, wallets: (_j = (_i = props.connectOptions) == null ? void 0 : _i.wallets) == null ? void 0 : _j.filter((w) => w.id !== \"inApp\") });\n  }\n  if (screen.id === \"swap-flow\" && payer) {\n    return (0, import_jsx_runtime99.jsx)(SwapFlow, { title: props.title, transactionMode: payOptions.mode === \"transaction\", isEmbed: props.isEmbed, client, onBack: () => {\n      setScreen({\n        id: \"buy-with-crypto\"\n      });\n    }, buyWithCryptoQuote: screen.quote, payer, isFiatFlow: false, onDone, onTryAgain: () => {\n      setScreen({\n        id: \"buy-with-crypto\"\n      });\n    }, onSuccess: onSwapSuccess });\n  }\n  if (screen.id === \"fiat-flow\" && payer) {\n    return (0, import_jsx_runtime99.jsx)(FiatFlow, { title: props.title, transactionMode: payOptions.mode === \"transaction\", quote: screen.quote, onBack: () => {\n      setScreen({\n        id: \"buy-with-fiat\"\n      });\n    }, client, testMode: props.payOptions.buyWithFiat !== false && ((_k = props.payOptions.buyWithFiat) == null ? void 0 : _k.testMode) === true, theme: typeof props.theme === \"string\" ? props.theme : props.theme.type, openedWindow: screen.openedWindow, onDone, isEmbed: props.isEmbed, payer, onSuccess: onFiatSuccess });\n  }\n  if (screen.id === \"transfer-flow\" && payer && activeAccount) {\n    const goBack = () => setScreen({ id: \"buy-with-crypto\" });\n    const defaultRecipientAddress = (_m = (_l = props.payOptions) == null ? void 0 : _l.paymentInfo) == null ? void 0 : _m.sellerAddress;\n    const receiverAddress = defaultRecipientAddress || activeAccount.address;\n    return (0, import_jsx_runtime99.jsx)(TransferFlow, { title: props.title, onBack: goBack, payer, client: props.client, chain: toChain, token: toToken, tokenAmount, receiverAddress, transactionMode: props.payOptions.mode === \"transaction\", payOptions, isEmbed: props.isEmbed, onDone, onTryAgain: () => {\n      setScreen({\n        id: \"buy-with-crypto\"\n      });\n    }, onSuccess: onSwapSuccess });\n  }\n  if (screen.id === \"select-currency\") {\n    const goBack = () => setScreen(screen.backScreen);\n    return (0, import_jsx_runtime99.jsx)(CurrencySelection, { onSelect: (currency) => {\n      goBack();\n      setSelectedCurrency(currency);\n    }, onBack: goBack });\n  }\n  if (screen.id === \"select-to-token\") {\n    const chains = supportedDestinations.map((x) => x.chain);\n    const goBack = () => setScreen(screen.backScreen);\n    const allowEdits = (_n = payOptions == null ? void 0 : payOptions.prefillBuy) == null ? void 0 : _n.allowEdits;\n    if ((allowEdits == null ? void 0 : allowEdits.token) === false) {\n      return (0, import_jsx_runtime99.jsx)(ChainSelectionScreen, { chains, client: props.client, connectLocale: props.connectLocale, setChain: setToChain, goBack });\n    }\n    return (0, import_jsx_runtime99.jsx)(TokenSelector, { onBack: goBack, tokenList: (((toChain == null ? void 0 : toChain.id) ? destinationSupportedTokens[toChain.id] : void 0) || []).filter((x) => x.address !== NATIVE_TOKEN_ADDRESS), onTokenSelect: (tokenInfo) => {\n      setToToken(tokenInfo);\n      goBack();\n    }, chain: toChain, chainSelection: (\n      // hide chain selection if it's disabled\n      (allowEdits == null ? void 0 : allowEdits.chain) !== false ? {\n        chains,\n        select: (c) => {\n          setToChain(c);\n        }\n      } : void 0\n    ), connectLocale, client, modalTitle: props.title });\n  }\n  if (screen.id === \"select-from-token\" && supportedSourcesQuery.data && sourceSupportedTokens) {\n    const chains = supportedSourcesQuery.data.map((x) => x.chain);\n    const goBack = () => setScreen(screen.backScreen);\n    if (payOptions.buyWithCrypto !== false && ((_q = (_p = (_o = payOptions.buyWithCrypto) == null ? void 0 : _o.prefillSource) == null ? void 0 : _p.allowEdits) == null ? void 0 : _q.token) === false) {\n      return (0, import_jsx_runtime99.jsx)(ChainSelectionScreen, { chains, client: props.client, connectLocale: props.connectLocale, setChain: setFromChain, goBack });\n    }\n    return (0, import_jsx_runtime99.jsx)(TokenSelector, { onBack: goBack, tokenList: (((fromChain == null ? void 0 : fromChain.id) ? sourceSupportedTokens[fromChain.id] : void 0) || []).filter((x) => x.address !== NATIVE_TOKEN_ADDRESS), onTokenSelect: (tokenInfo) => {\n      setFromToken(tokenInfo);\n      goBack();\n    }, chain: fromChain, chainSelection: (\n      // hide chain selection if it's disabled\n      payOptions.buyWithCrypto !== false && ((_t = (_s = (_r = payOptions.buyWithCrypto) == null ? void 0 : _r.prefillSource) == null ? void 0 : _s.allowEdits) == null ? void 0 : _t.chain) !== false ? {\n        chains: supportedSourcesQuery.data.map((x) => x.chain),\n        select: (c) => setFromChain(c)\n      } : void 0\n    ), connectLocale, client, modalTitle: \"Pay with\" });\n  }\n  return (0, import_jsx_runtime99.jsx)(Container, { animate: \"fadein\", children: (0, import_jsx_runtime99.jsxs)(\"div\", { children: [screen.id === \"main\" && (0, import_jsx_runtime99.jsx)(MainScreen, { title: props.title, payerAccount: payer == null ? void 0 : payer.account, client, onSelectBuyToken: () => setScreen({ id: \"select-to-token\", backScreen: screen }), payOptions, setTokenAmount, setToChain, setToToken, setFromChain, setFromToken, toChain, toToken, tokenAmount, connectOptions: props.connectOptions, setScreen, supportedDestinations, onBack: props.onBack, theme: props.theme, hasEditedAmount, setHasEditedAmount, enabledPaymentMethods }), (screen.id === \"select-payment-method\" || screen.id === \"buy-with-crypto\" || screen.id === \"buy-with-fiat\") && payer && (0, import_jsx_runtime99.jsxs)(TokenSelectedLayout, { title: props.title, selectedChain: toChain, selectedToken: toToken, tokenAmount, client, onBack: () => {\n    if (enabledPaymentMethods.buyWithCryptoEnabled && screen.id === \"buy-with-fiat\") {\n      setScreen({ id: \"select-payment-method\" });\n    } else if (screen.id === \"buy-with-crypto\") {\n      setScreen({ id: \"select-payment-method\" });\n    } else {\n      setScreen({ id: \"main\" });\n    }\n  }, children: [screen.id === \"select-payment-method\" && (0, import_jsx_runtime99.jsx)(PaymentSelectionScreen, { client, mode: payOptions.mode, sourceSupportedTokens, hiddenWallets: props.hiddenWallets, payWithFiatEnabled: props.payOptions.buyWithFiat !== false, toChain, toToken, tokenAmount, onSelect: (w, token, chain) => {\n    const account = w.getAccount();\n    if (account) {\n      setPayer({\n        account,\n        chain,\n        wallet: w\n      });\n      setFromToken(token);\n      setFromChain(chain);\n      setScreen({ id: \"buy-with-crypto\" });\n    }\n  }, onSelectFiat: () => {\n    setScreen({ id: \"buy-with-fiat\" });\n  }, showAllWallets: !!((_u = props.connectOptions) == null ? void 0 : _u.showAllWallets), wallets: (_v = props.connectOptions) == null ? void 0 : _v.wallets, onBack: () => {\n  }, onConnect: () => {\n    setScreen({\n      id: \"connect-payer-wallet\",\n      backScreen: {\n        id: \"select-payment-method\"\n      }\n    });\n  } }), screen.id === \"buy-with-crypto\" && activeAccount && (0, import_jsx_runtime99.jsx)(SwapScreenContent, {\n    setScreen,\n    tokenAmount: deferredTokenAmount,\n    toChain,\n    toToken,\n    fromChain,\n    fromToken,\n    showFromTokenSelector: () => {\n      setScreen({\n        id: \"select-from-token\",\n        backScreen: screen\n      });\n    },\n    payer,\n    client,\n    isEmbed: props.isEmbed,\n    onDone,\n    payOptions,\n    connectLocale,\n    connectOptions: props.connectOptions,\n    setPayer,\n    // pass it even though we are passing payer, because payer might be different\n    activeAccount,\n    setTokenAmount,\n    setHasEditedAmount,\n    disableTokenSelection: payDisabled === true || payOptions.buyWithCrypto !== false && ((_y = (_x = (_w = payOptions.buyWithCrypto) == null ? void 0 : _w.prefillSource) == null ? void 0 : _x.allowEdits) == null ? void 0 : _y.chain) === false && ((_B = (_A = (_z = payOptions.buyWithCrypto) == null ? void 0 : _z.prefillSource) == null ? void 0 : _A.allowEdits) == null ? void 0 : _B.token) === false\n  }), screen.id === \"buy-with-fiat\" && (0, import_jsx_runtime99.jsx)(FiatScreenContent, { setScreen, tokenAmount: deferredTokenAmount, toChain, toToken, selectedCurrency, client, isEmbed: props.isEmbed, onDone, payOptions, theme: props.theme, showCurrencySelector: () => {\n    setScreen({\n      id: \"select-currency\",\n      backScreen: screen\n    });\n  }, payer, setTokenAmount, setHasEditedAmount })] })] }) });\n}\nfunction SelectedTokenInfo(props) {\n  return (0, import_jsx_runtime99.jsx)(\"div\", { children: (0, import_jsx_runtime99.jsxs)(Container, { flex: \"row\", gap: \"sm\", center: \"y\", style: {\n    justifyContent: \"space-between\"\n  }, children: [(0, import_jsx_runtime99.jsxs)(Container, { flex: \"row\", gap: \"xs\", center: \"y\", children: [(0, import_jsx_runtime99.jsx)(Text, { color: \"primaryText\", \"data-testid\": \"tokenAmount\", size: \"xl\", children: formatNumber(Number(props.tokenAmount), 6) }), (0, import_jsx_runtime99.jsxs)(Container, { flex: \"row\", gap: \"xxs\", center: \"y\", children: [(0, import_jsx_runtime99.jsx)(TokenSymbol, { token: props.selectedToken, chain: props.selectedChain, size: \"md\", color: \"secondaryText\" }), (0, import_jsx_runtime99.jsx)(PayTokenIcon, { chain: props.selectedChain, client: props.client, size: \"sm\", token: props.selectedToken })] })] }), (0, import_jsx_runtime99.jsx)(ChainName, { chain: props.selectedChain, client: props.client, size: \"sm\", short: true })] }) });\n}\nfunction MainScreen(props) {\n  var _a, _b, _c, _d, _e, _f;\n  const { setTokenAmount, setToChain, setToToken, setFromChain, setFromToken, payerAccount, client, tokenAmount, payOptions, toToken, toChain, supportedDestinations, enabledPaymentMethods } = props;\n  const { buyWithCryptoEnabled, buyWithFiatEnabled } = enabledPaymentMethods;\n  const disableContinue = !tokenAmount;\n  switch (payOptions.mode) {\n    case \"transaction\": {\n      return (0, import_jsx_runtime99.jsx)(TransactionModeScreen, { supportedDestinations, payUiOptions: payOptions, payerAccount, connectOptions: props.connectOptions, client, onContinue: (tokenAmount2, toChain2, toToken2) => {\n        setTokenAmount(tokenAmount2);\n        setToChain(toChain2);\n        setFromChain(toChain2);\n        setFromToken(toToken2);\n        setToToken(toToken2);\n        if (buyWithFiatEnabled && !buyWithCryptoEnabled) {\n          props.setScreen({ id: \"buy-with-fiat\" });\n        } else {\n          props.setScreen({ id: \"select-payment-method\" });\n        }\n      } });\n    }\n    case \"direct_payment\": {\n      return (0, import_jsx_runtime99.jsx)(DirectPaymentModeScreen, { client, payUiOptions: payOptions, payerAccount, connectOptions: props.connectOptions, supportedDestinations, onContinue: (tokenAmount2, toChain2, toToken2) => {\n        setTokenAmount(tokenAmount2);\n        setToChain(toChain2);\n        setFromChain(toChain2);\n        setFromToken(toToken2);\n        setToToken(toToken2);\n        if (buyWithFiatEnabled && !buyWithCryptoEnabled) {\n          props.setScreen({ id: \"buy-with-fiat\" });\n        } else {\n          props.setScreen({ id: \"select-payment-method\" });\n        }\n      } });\n    }\n    default: {\n      return (0, import_jsx_runtime99.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime99.jsx)(ModalHeader, { title: props.title, onBack: props.onBack }), (0, import_jsx_runtime99.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime99.jsx)(BuyTokenInput, { value: tokenAmount, onChange: async (value) => {\n        props.setHasEditedAmount(true);\n        setTokenAmount(value);\n      }, freezeAmount: ((_b = (_a = payOptions.prefillBuy) == null ? void 0 : _a.allowEdits) == null ? void 0 : _b.amount) === false, freezeChainAndToken: ((_d = (_c = payOptions.prefillBuy) == null ? void 0 : _c.allowEdits) == null ? void 0 : _d.chain) === false && ((_f = (_e = payOptions.prefillBuy) == null ? void 0 : _e.allowEdits) == null ? void 0 : _f.token) === false, token: toToken, chain: toChain, onSelectToken: props.onSelectBuyToken, client: props.client }), (0, import_jsx_runtime99.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime99.jsx)(Container, { flex: \"column\", gap: \"sm\", children: !payerAccount ? (0, import_jsx_runtime99.jsx)(\"div\", { children: (0, import_jsx_runtime99.jsx)(ConnectButton, { ...props.connectOptions, client: props.client, theme: props.theme, connectButton: {\n        style: {\n          width: \"100%\"\n        }\n      } }) }) : (0, import_jsx_runtime99.jsx)(Button, { variant: \"accent\", fullWidth: true, disabled: disableContinue, \"data-disabled\": disableContinue, onClick: () => {\n        if (buyWithFiatEnabled && !buyWithCryptoEnabled) {\n          props.setScreen({ id: \"buy-with-fiat\" });\n        } else {\n          props.setScreen({ id: \"select-payment-method\" });\n        }\n      }, children: \"Continue\" }) })] });\n    }\n  }\n}\nfunction TokenSelectedLayout(props) {\n  return (0, import_jsx_runtime99.jsxs)(Container, { children: [(0, import_jsx_runtime99.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime99.jsx)(ModalHeader, { title: props.title, onBack: props.onBack }) }), (0, import_jsx_runtime99.jsxs)(Container, { px: \"lg\", style: {\n    paddingBottom: spacing.lg\n  }, children: [(0, import_jsx_runtime99.jsx)(Spacer, { y: \"xs\" }), (0, import_jsx_runtime99.jsx)(SelectedTokenInfo, { selectedToken: props.selectedToken, selectedChain: props.selectedChain, tokenAmount: props.tokenAmount, client: props.client }), (0, import_jsx_runtime99.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime99.jsx)(Line, {}), (0, import_jsx_runtime99.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime99.jsx)(Text, { size: \"sm\", children: \" Pay with \" }), (0, import_jsx_runtime99.jsx)(Spacer, { y: \"sm\" }), props.children] })] });\n}\nfunction SwapScreenContent(props) {\n  var _a, _b, _c, _d, _e, _f;\n  const { setScreen, payer, client, toChain, tokenAmount, toToken, fromChain, fromToken, payOptions, disableTokenSelection } = props;\n  const defaultRecipientAddress = (_b = (_a = props.payOptions) == null ? void 0 : _a.paymentInfo) == null ? void 0 : _b.sellerAddress;\n  const receiverAddress = defaultRecipientAddress || props.activeAccount.address;\n  const { drawerRef, drawerOverlayRef, isOpen, setIsOpen } = useDrawer();\n  const [drawerScreen, setDrawerScreen] = (0, import_react60.useState)(\"fees\");\n  const fromTokenBalanceQuery = useWalletBalance({\n    address: payer.account.address,\n    chain: fromChain,\n    tokenAddress: isNativeToken(fromToken) ? void 0 : fromToken.address,\n    client\n  });\n  const fromTokenId = isNativeToken(fromToken) ? NATIVE_TOKEN_ADDRESS : fromToken.address.toLowerCase();\n  const toTokenId = isNativeToken(toToken) ? NATIVE_TOKEN_ADDRESS : toToken.address.toLowerCase();\n  const swapRequired = !!tokenAmount && !(fromChain.id === toChain.id && fromTokenId === toTokenId);\n  const quoteParams = swapRequired ? {\n    // wallets\n    fromAddress: payer.account.address,\n    toAddress: receiverAddress,\n    // from\n    fromChainId: fromChain.id,\n    fromTokenAddress: isNativeToken(fromToken) ? NATIVE_TOKEN_ADDRESS : fromToken.address,\n    // to\n    toChainId: toChain.id,\n    toTokenAddress: isNativeToken(toToken) ? NATIVE_TOKEN_ADDRESS : toToken.address,\n    toAmount: tokenAmount,\n    client,\n    purchaseData: payOptions.purchaseData\n  } : void 0;\n  const quoteQuery = useBuyWithCryptoQuote(quoteParams, {\n    // refetch every 30 seconds\n    staleTime: 30 * 1e3,\n    refetchInterval: 30 * 1e3,\n    gcTime: 30 * 1e3\n  });\n  const sourceTokenAmount = swapRequired ? (_c = quoteQuery.data) == null ? void 0 : _c.swapDetails.fromAmount : tokenAmount;\n  const isNotEnoughBalance = !!sourceTokenAmount && !!fromTokenBalanceQuery.data && Number(fromTokenBalanceQuery.data.displayValue) < Number(sourceTokenAmount);\n  const disableContinue = swapRequired && !quoteQuery.data || isNotEnoughBalance;\n  const switchChainRequired = ((_d = props.payer.wallet.getChain()) == null ? void 0 : _d.id) !== fromChain.id;\n  function getErrorMessage(err) {\n    const defaultMessage = \"Unable to get price quote\";\n    try {\n      if (err.error.code === \"MINIMUM_PURCHASE_AMOUNT\") {\n        const obj = err.error;\n        const minAmountToken = obj.data.minimumAmountEth;\n        return {\n          minAmount: formatNumber(Number(minAmountToken), 6)\n        };\n      }\n    } catch {\n    }\n    return {\n      msg: [defaultMessage]\n    };\n  }\n  const errorMsg = !quoteQuery.isLoading && quoteQuery.error ? getErrorMessage(quoteQuery.error) : void 0;\n  function showSwapFlow() {\n    if ((props.payOptions.mode === \"direct_payment\" || props.payOptions.mode === \"fund_wallet\") && !isNotEnoughBalance && !swapRequired) {\n      setScreen({\n        id: \"transfer-flow\"\n      });\n    } else if (props.payOptions.mode === \"transaction\" && !isNotEnoughBalance && !swapRequired) {\n      if (payer.account.address !== receiverAddress) {\n        setScreen({\n          id: \"transfer-flow\"\n        });\n      } else {\n        props.onDone();\n      }\n      return;\n    }\n    if (!quoteQuery.data) {\n      return;\n    }\n    setScreen({\n      id: \"swap-flow\",\n      quote: quoteQuery.data\n    });\n  }\n  function showFees() {\n    if (!quoteQuery.data) {\n      return;\n    }\n    setIsOpen(true);\n    setDrawerScreen(\"fees\");\n  }\n  return (0, import_jsx_runtime99.jsxs)(Container, { flex: \"column\", gap: \"md\", animate: \"fadein\", children: [isOpen && (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [(0, import_jsx_runtime99.jsx)(DrawerOverlay, { ref: drawerOverlayRef }), (0, import_jsx_runtime99.jsx)(Drawer, { ref: drawerRef, close: () => setIsOpen(false), children: drawerScreen === \"fees\" && quoteQuery.data && (0, import_jsx_runtime99.jsxs)(\"div\", { children: [(0, import_jsx_runtime99.jsx)(Text, { size: \"lg\", color: \"primaryText\", children: \"Fees\" }), (0, import_jsx_runtime99.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime99.jsx)(SwapFees, { quote: quoteQuery.data })] }) })] }), (0, import_jsx_runtime99.jsxs)(\"div\", { children: [(0, import_jsx_runtime99.jsx)(PayWithCryptoQuoteInfo, { value: sourceTokenAmount || \"\", chain: fromChain, token: fromToken, isLoading: quoteQuery.isLoading && !sourceTokenAmount, client, freezeChainAndTokenSelection: disableTokenSelection, payerAccount: props.payer.account, swapRequired }), swapRequired && (0, import_jsx_runtime99.jsx)(EstimatedTimeAndFees, { quoteIsLoading: quoteQuery.isLoading, estimatedSeconds: (_e = quoteQuery.data) == null ? void 0 : _e.swapDetails.estimated.durationSeconds, onViewFees: showFees }), (0, import_jsx_runtime99.jsx)(Spacer, { y: \"md\" })] }), errorMsg && (0, import_jsx_runtime99.jsxs)(\"div\", { children: [errorMsg.minAmount && (0, import_jsx_runtime99.jsxs)(Text, { color: \"danger\", size: \"sm\", center: true, multiline: true, children: [\"Minimum amount is \", errorMsg.minAmount, \" \", (0, import_jsx_runtime99.jsx)(TokenSymbol, { token: toToken, chain: toChain, size: \"sm\", inline: true, color: \"danger\" })] }), (_f = errorMsg.msg) == null ? void 0 : _f.map((msg) => (0, import_jsx_runtime99.jsx)(Text, { color: \"danger\", size: \"sm\", center: true, multiline: true, children: msg }, msg))] }), !errorMsg && isNotEnoughBalance && (0, import_jsx_runtime99.jsxs)(\"div\", { children: [(0, import_jsx_runtime99.jsx)(Text, { color: \"danger\", size: \"sm\", center: true, multiline: true, children: \"Not enough funds.\" }), (0, import_jsx_runtime99.jsx)(Text, { color: \"danger\", size: \"sm\", center: true, multiline: true, children: \"Try a different wallet or token.\" })] }), (errorMsg == null ? void 0 : errorMsg.minAmount) ? (0, import_jsx_runtime99.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: () => {\n    props.setTokenAmount(String(errorMsg.minAmount));\n    props.setHasEditedAmount(true);\n  }, children: \"Set Minimum\" }) : switchChainRequired && !quoteQuery.isLoading && !isNotEnoughBalance && !quoteQuery.error ? (0, import_jsx_runtime99.jsx)(SwitchNetworkButton, { variant: \"accent\", fullWidth: true, switchChain: async () => {\n    await props.payer.wallet.switchChain(fromChain);\n  } }) : (0, import_jsx_runtime99.jsx)(Button, { variant: disableContinue ? \"outline\" : \"accent\", fullWidth: true, \"data-disabled\": disableContinue, disabled: disableContinue, onClick: async () => {\n    if (!disableContinue) {\n      showSwapFlow();\n    }\n  }, gap: \"xs\", children: quoteQuery.isLoading ? (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [\"Getting price quote\", (0, import_jsx_runtime99.jsx)(Spinner, { size: \"sm\", color: \"accentText\" })] }) : \"Continue\" })] });\n}\nfunction FiatScreenContent(props) {\n  var _a, _b, _c, _d, _e;\n  const { toToken, tokenAmount, payer, client, setScreen, toChain, showCurrencySelector, selectedCurrency } = props;\n  const defaultRecipientAddress = (_b = (_a = props.payOptions) == null ? void 0 : _a.paymentInfo) == null ? void 0 : _b.sellerAddress;\n  const receiverAddress = defaultRecipientAddress || props.payer.account.address;\n  const { drawerRef, drawerOverlayRef, isOpen, setIsOpen } = useDrawer();\n  const [drawerScreen, setDrawerScreen] = (0, import_react60.useState)(\"fees\");\n  const buyWithFiatOptions = props.payOptions.buyWithFiat;\n  const fiatQuoteQuery = useBuyWithFiatQuote(buyWithFiatOptions !== false && tokenAmount ? {\n    fromCurrencySymbol: selectedCurrency.shorthand,\n    toChainId: toChain.id,\n    toAddress: receiverAddress,\n    toTokenAddress: isNativeToken(toToken) ? NATIVE_TOKEN_ADDRESS : toToken.address,\n    toAmount: tokenAmount,\n    client,\n    isTestMode: buyWithFiatOptions == null ? void 0 : buyWithFiatOptions.testMode,\n    purchaseData: props.payOptions.purchaseData,\n    fromAddress: payer.account.address,\n    preferredProvider: buyWithFiatOptions == null ? void 0 : buyWithFiatOptions.preferredProvider\n  } : void 0);\n  function handleSubmit() {\n    if (!fiatQuoteQuery.data) {\n      return;\n    }\n    const hasTwoSteps = isSwapRequiredPostOnramp(fiatQuoteQuery.data);\n    let openedWindow = null;\n    if (!hasTwoSteps) {\n      openedWindow = openOnrampPopup(fiatQuoteQuery.data.onRampLink, typeof props.theme === \"string\" ? props.theme : props.theme.type);\n      addPendingTx({\n        type: \"fiat\",\n        intentId: fiatQuoteQuery.data.intentId\n      });\n    }\n    setScreen({\n      id: \"fiat-flow\",\n      quote: fiatQuoteQuery.data,\n      openedWindow\n    });\n  }\n  function showFees() {\n    if (!fiatQuoteQuery.data) {\n      return;\n    }\n    setDrawerScreen(\"fees\");\n    setIsOpen(true);\n  }\n  function getErrorMessage(err) {\n    const defaultMessage = \"Unable to get price quote\";\n    try {\n      if (err.error.code === \"MINIMUM_PURCHASE_AMOUNT\") {\n        const obj = err.error;\n        const minAmountToken = obj.data.minimumAmountEth;\n        return {\n          minAmount: formatNumber(Number(minAmountToken), 6)\n        };\n      }\n    } catch {\n    }\n    return {\n      msg: [defaultMessage]\n    };\n  }\n  const disableSubmit = !fiatQuoteQuery.data;\n  const errorMsg = !fiatQuoteQuery.isLoading && fiatQuoteQuery.error ? getErrorMessage(fiatQuoteQuery.error) : void 0;\n  return (0, import_jsx_runtime99.jsxs)(Container, { flex: \"column\", gap: \"md\", animate: \"fadein\", children: [isOpen && (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [(0, import_jsx_runtime99.jsx)(DrawerOverlay, { ref: drawerOverlayRef }), (0, import_jsx_runtime99.jsx)(Drawer, { ref: drawerRef, close: () => setIsOpen(false), children: drawerScreen === \"fees\" && fiatQuoteQuery.data && (0, import_jsx_runtime99.jsxs)(\"div\", { children: [(0, import_jsx_runtime99.jsx)(Text, { size: \"lg\", color: \"primaryText\", children: \"Fees\" }), (0, import_jsx_runtime99.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime99.jsx)(FiatFees, { quote: fiatQuoteQuery.data })] }) })] }), (0, import_jsx_runtime99.jsxs)(\"div\", { children: [(0, import_jsx_runtime99.jsx)(PayWithCreditCard, { isLoading: fiatQuoteQuery.isLoading, value: (_c = fiatQuoteQuery.data) == null ? void 0 : _c.fromCurrencyWithFees.amount, client, currency: selectedCurrency, onSelectCurrency: showCurrencySelector }), (0, import_jsx_runtime99.jsx)(EstimatedTimeAndFees, { quoteIsLoading: fiatQuoteQuery.isLoading, estimatedSeconds: (_d = fiatQuoteQuery.data) == null ? void 0 : _d.estimatedDurationSeconds, onViewFees: showFees }), (0, import_jsx_runtime99.jsx)(Spacer, { y: \"md\" })] }), errorMsg && (0, import_jsx_runtime99.jsxs)(\"div\", { children: [errorMsg.minAmount && (0, import_jsx_runtime99.jsxs)(Text, { color: \"danger\", size: \"sm\", center: true, multiline: true, children: [\"Minimum amount is \", errorMsg.minAmount, \" \", (0, import_jsx_runtime99.jsx)(TokenSymbol, { token: toToken, chain: toChain, size: \"sm\", inline: true, color: \"danger\" })] }), (_e = errorMsg.msg) == null ? void 0 : _e.map((msg) => (0, import_jsx_runtime99.jsx)(Text, { color: \"danger\", size: \"sm\", center: true, multiline: true, children: msg }, msg))] }), (errorMsg == null ? void 0 : errorMsg.minAmount) ? (0, import_jsx_runtime99.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: () => {\n    props.setTokenAmount(String(errorMsg.minAmount));\n    props.setHasEditedAmount(true);\n  }, children: \"Set Minimum\" }) : (0, import_jsx_runtime99.jsx)(Button, { variant: disableSubmit ? \"outline\" : \"accent\", \"data-disabled\": disableSubmit, disabled: disableSubmit, fullWidth: true, onClick: handleSubmit, gap: \"xs\", children: fiatQuoteQuery.isLoading ? (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [\"Getting price quote\", (0, import_jsx_runtime99.jsx)(Spinner, { size: \"sm\", color: \"accentText\" })] }) : \"Continue\" })] });\n}\nfunction createSupportedTokens(data, payOptions, supportedTokensOverrides) {\n  const tokens = {};\n  const isBuyWithFiatDisabled = payOptions.buyWithFiat === false;\n  const isBuyWithCryptoDisabled = payOptions.buyWithCrypto === false;\n  for (const x of data) {\n    tokens[x.chain.id] = x.tokens.filter((t) => {\n      if (t.buyWithCryptoEnabled === void 0 && t.buyWithFiatEnabled === void 0) {\n        return true;\n      }\n      if (t.buyWithCryptoEnabled && t.buyWithFiatEnabled) {\n        return true;\n      }\n      if (!t.buyWithCryptoEnabled && isBuyWithFiatDisabled) {\n        return false;\n      }\n      if (!t.buyWithFiatEnabled && isBuyWithCryptoDisabled) {\n        return false;\n      }\n      return true;\n    });\n  }\n  if (supportedTokensOverrides) {\n    for (const k in supportedTokensOverrides) {\n      const key = Number(k);\n      const tokenList = supportedTokensOverrides[key];\n      if (tokenList) {\n        tokens[key] = tokenList;\n      }\n    }\n  }\n  return tokens;\n}\nfunction ChainSelectionScreen(props) {\n  return (0, import_jsx_runtime99.jsx)(NetworkSelectorContent, { client: props.client, connectLocale: props.connectLocale, showTabs: false, onBack: props.goBack, chains: props.chains, closeModal: props.goBack, networkSelector: {\n    renderChain(renderChainProps) {\n      return (0, import_jsx_runtime99.jsx)(ChainButton, { chain: renderChainProps.chain, confirming: false, switchingFailed: false, onClick: () => {\n        props.setChain(renderChainProps.chain);\n        props.goBack();\n      }, client: props.client, connectLocale: props.connectLocale });\n    }\n  } });\n}\n\nexport {\n  useSiweAuth,\n  useActiveWalletConnectionStatus,\n  defaultTokens,\n  getDefaultToken,\n  canFitWideModal,\n  usePreloadWalletProviders,\n  createConnectionManager,\n  useSetActiveWalletConnectionStatus,\n  useConnect,\n  useAutoConnect,\n  AutoConnect,\n  DynamicHeight,\n  Modal,\n  trackPayEvent,\n  useChainExplorers,\n  useChainMetadata,\n  useActiveWalletChain,\n  useConnectedWallets,\n  useAdminWallet,\n  useDisconnect,\n  useSwitchActiveWalletChain,\n  SetRootElementContext,\n  Blobbie,\n  getConnectLocale,\n  useConnectLocale,\n  useNetworkSwitcherModal,\n  fetchBuySupportedDestinations,\n  useBuyHistory,\n  useBuyWithFiatStatus,\n  getPostOnRampQuote,\n  useBuyWithCryptoStatus,\n  invalidateWalletBalance,\n  useWaitForReceipt,\n  useBuyWithCryptoQuote,\n  useBuyWithFiatQuote,\n  getTokenBalance,\n  useSetActiveWallet,\n  ConnectModalContent,\n  BuyScreen2 as BuyScreen,\n  LazyBuyScreen,\n  useProfiles,\n  MediaRenderer,\n  useWalletDetailsModal,\n  ConnectModal_default,\n  ConnectButton\n};\n//# sourceMappingURL=chunk-FHZU65JA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-FNI7M3UI.js",
    "content": "import {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  getThirdwebDomains\n} from \"./chunk-QHKZ43P6.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/smart/lib/constants.js\nvar DEBUG = false;\nvar DUMMY_SIGNATURE = \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\nvar DEFAULT_ACCOUNT_FACTORY_V0_6 = \"0x85e23b94e7F5E9cC1fF78BCe78cfb15B81f0DF00\";\nvar DEFAULT_ACCOUNT_FACTORY_V0_7 = \"0x4be0ddfebca9a5a4a617dee4dece99e7c862dceb\";\nvar ENTRYPOINT_ADDRESS_v0_6 = \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\";\nvar ENTRYPOINT_ADDRESS_v0_7 = \"0x0000000071727De22E5E9d8BAf0edAc6f37da032\";\nvar MANAGED_ACCOUNT_GAS_BUFFER = 50000n;\nvar getDefaultAccountFactory = (entryPointAddress) => {\n  const version = getEntryPointVersion(entryPointAddress || ENTRYPOINT_ADDRESS_v0_6);\n  if (version === \"v0.7\") {\n    return DEFAULT_ACCOUNT_FACTORY_V0_7;\n  }\n  return DEFAULT_ACCOUNT_FACTORY_V0_6;\n};\nvar getDefaultBundlerUrl = (chain) => {\n  const domain = getThirdwebDomains().bundler;\n  if (domain.startsWith(\"localhost:\")) {\n    return `http://${domain}/v2?chain=${chain.id}`;\n  }\n  return `https://${chain.id}.${domain}/v2`;\n};\nvar getEntryPointVersion = (address) => {\n  const checksummedAddress = getAddress(address);\n  if (checksummedAddress === ENTRYPOINT_ADDRESS_v0_6) {\n    return \"v0.6\";\n  }\n  if (checksummedAddress === ENTRYPOINT_ADDRESS_v0_7) {\n    return \"v0.7\";\n  }\n  throw new Error(\"Unknown paymaster version\");\n};\n\nexport {\n  DEBUG,\n  DUMMY_SIGNATURE,\n  ENTRYPOINT_ADDRESS_v0_6,\n  ENTRYPOINT_ADDRESS_v0_7,\n  MANAGED_ACCOUNT_GAS_BUFFER,\n  getDefaultAccountFactory,\n  getDefaultBundlerUrl,\n  getEntryPointVersion\n};\n//# sourceMappingURL=chunk-FNI7M3UI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-FXBAO7K3.js",
    "content": "import {\n  injectedProvider\n} from \"./chunk-PWFRCBEK.js\";\nimport {\n  getValidPublicRPCUrl,\n  normalizeChainId\n} from \"./chunk-7AY3QZZV.js\";\nimport {\n  trackTransaction\n} from \"./chunk-I2GEMA2B.js\";\nimport {\n  parseTypedData\n} from \"./chunk-SWMZXE3E.js\";\nimport {\n  getTypesForEIP712Domain,\n  serializeTypedData,\n  validateTypedData\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  getCachedChain,\n  getChainMetadata\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  numberToHex,\n  stringToHex,\n  uint8ArrayToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/injected/index.js\nfunction getInjectedProvider(walletId) {\n  const provider = injectedProvider(walletId);\n  if (!provider) {\n    throw new Error(`No injected provider found for wallet: \"${walletId}\"`);\n  }\n  return provider;\n}\nasync function connectEip1193Wallet({ id, provider, emitter, client, chain }) {\n  let addresses;\n  const retries = 3;\n  let attempts = 0;\n  while (!(addresses == null ? void 0 : addresses[0]) && attempts < retries) {\n    try {\n      addresses = await provider.request({\n        method: \"eth_requestAccounts\"\n      });\n    } catch (e) {\n      console.error(e);\n      await new Promise((resolve) => setTimeout(resolve, 500));\n    }\n    attempts++;\n  }\n  const addr = addresses == null ? void 0 : addresses[0];\n  if (!addr) {\n    throw new Error(\"Failed to connect to wallet, no accounts available\");\n  }\n  const address = getAddress(addr);\n  const chainId = await provider.request({ method: \"eth_chainId\" }).then(normalizeChainId);\n  let connectedChain = chain && chain.id === chainId ? chain : getCachedChain(chainId);\n  if (chain && chain.id !== chainId) {\n    await switchChain(provider, chain);\n    connectedChain = chain;\n  }\n  return onConnect({\n    provider,\n    address,\n    chain: connectedChain,\n    emitter,\n    client,\n    id\n  });\n}\nasync function autoConnectEip1193Wallet({ id, provider, emitter, client, chain }) {\n  const addresses = await provider.request({\n    method: \"eth_accounts\"\n  });\n  const addr = addresses[0];\n  if (!addr) {\n    throw new Error(\"Failed to connect to wallet, no accounts available\");\n  }\n  const address = getAddress(addr);\n  const chainId = await provider.request({ method: \"eth_chainId\" }).then(normalizeChainId);\n  const connectedChain = chain && chain.id === chainId ? chain : getCachedChain(chainId);\n  return onConnect({\n    provider,\n    address,\n    chain: connectedChain,\n    emitter,\n    client,\n    id\n  });\n}\nfunction createAccount({ provider, address, client, id }) {\n  const account = {\n    address: getAddress(address),\n    async sendTransaction(tx) {\n      const gasFees = tx.gasPrice ? {\n        gasPrice: tx.gasPrice ? numberToHex(tx.gasPrice) : void 0\n      } : {\n        maxFeePerGas: tx.maxFeePerGas ? numberToHex(tx.maxFeePerGas) : void 0,\n        maxPriorityFeePerGas: tx.maxPriorityFeePerGas ? numberToHex(tx.maxPriorityFeePerGas) : void 0\n      };\n      const params = [\n        {\n          ...gasFees,\n          nonce: tx.nonce ? numberToHex(tx.nonce) : void 0,\n          accessList: tx.accessList,\n          value: tx.value ? numberToHex(tx.value) : void 0,\n          gas: tx.gas ? numberToHex(tx.gas) : void 0,\n          from: this.address,\n          to: tx.to ? getAddress(tx.to) : void 0,\n          data: tx.data,\n          ...tx.eip712\n        }\n      ];\n      const transactionHash = await provider.request({\n        method: \"eth_sendTransaction\",\n        // @ts-expect-error - overriding types here\n        params\n      });\n      trackTransaction({\n        client,\n        chainId: tx.chainId,\n        walletAddress: getAddress(address),\n        walletType: id,\n        transactionHash,\n        contractAddress: tx.to ?? void 0,\n        gasPrice: tx.gasPrice\n      });\n      return {\n        transactionHash\n      };\n    },\n    async signMessage({ message }) {\n      if (!account.address) {\n        throw new Error(\"Provider not setup\");\n      }\n      const messageToSign = (() => {\n        if (typeof message === \"string\") {\n          return stringToHex(message);\n        }\n        if (message.raw instanceof Uint8Array) {\n          return uint8ArrayToHex(message.raw);\n        }\n        return message.raw;\n      })();\n      return await provider.request({\n        method: \"personal_sign\",\n        params: [messageToSign, account.address]\n      });\n    },\n    async signTypedData(typedData) {\n      if (!provider || !account.address) {\n        throw new Error(\"Provider not setup\");\n      }\n      const parsedTypedData = parseTypedData(typedData);\n      const { domain, message, primaryType } = parsedTypedData;\n      const types = {\n        EIP712Domain: getTypesForEIP712Domain({ domain }),\n        ...parsedTypedData.types\n      };\n      validateTypedData({ domain, message, primaryType, types });\n      const stringifiedData = serializeTypedData({\n        domain: domain ?? {},\n        message,\n        primaryType,\n        types\n      });\n      return await provider.request({\n        method: \"eth_signTypedData_v4\",\n        params: [account.address, stringifiedData]\n      });\n    },\n    async watchAsset(asset) {\n      const result = await provider.request({\n        method: \"wallet_watchAsset\",\n        params: asset\n      }, { retryCount: 0 });\n      return result;\n    }\n  };\n  return account;\n}\nasync function onConnect({ provider, address, chain, emitter, client, id }) {\n  const account = createAccount({ provider, address, client, id });\n  async function disconnect() {\n    provider.removeListener(\"accountsChanged\", onAccountsChanged);\n    provider.removeListener(\"chainChanged\", onChainChanged);\n    provider.removeListener(\"disconnect\", onDisconnect);\n  }\n  async function onDisconnect() {\n    disconnect();\n    emitter.emit(\"disconnect\", void 0);\n  }\n  function onAccountsChanged(accounts) {\n    if (accounts[0]) {\n      const newAccount = createAccount({\n        provider,\n        address: getAddress(accounts[0]),\n        client,\n        id\n      });\n      emitter.emit(\"accountChanged\", newAccount);\n      emitter.emit(\"accountsChanged\", accounts);\n    } else {\n      onDisconnect();\n    }\n  }\n  function onChainChanged(newChainId) {\n    const newChain = getCachedChain(normalizeChainId(newChainId));\n    emitter.emit(\"chainChanged\", newChain);\n  }\n  if (provider.on) {\n    provider.on(\"accountsChanged\", onAccountsChanged);\n    provider.on(\"chainChanged\", onChainChanged);\n    provider.on(\"disconnect\", onDisconnect);\n  }\n  return [\n    account,\n    chain,\n    onDisconnect,\n    (newChain) => switchChain(provider, newChain)\n  ];\n}\nasync function switchChain(provider, chain) {\n  var _a, _b, _c;\n  const hexChainId = numberToHex(chain.id);\n  try {\n    await provider.request({\n      method: \"wallet_switchEthereumChain\",\n      params: [{ chainId: hexChainId }]\n    });\n  } catch (e) {\n    if ((e == null ? void 0 : e.code) === 4902 || ((_b = (_a = e == null ? void 0 : e.data) == null ? void 0 : _a.originalError) == null ? void 0 : _b.code) === 4902) {\n      const apiChain = await getChainMetadata(chain);\n      await provider.request({\n        method: \"wallet_addEthereumChain\",\n        params: [\n          {\n            chainId: hexChainId,\n            chainName: apiChain.name,\n            nativeCurrency: apiChain.nativeCurrency,\n            rpcUrls: getValidPublicRPCUrl(apiChain),\n            // no client id on purpose here\n            blockExplorerUrls: (_c = apiChain.explorers) == null ? void 0 : _c.map((x) => x.url)\n          }\n        ]\n      });\n    } else {\n      throw e;\n    }\n  }\n}\n\nexport {\n  getInjectedProvider,\n  connectEip1193Wallet,\n  autoConnectEip1193Wallet\n};\n//# sourceMappingURL=chunk-FXBAO7K3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-G26WKBGM.js",
    "content": "import {\n  isBrowser\n} from \"./chunk-QIUEWTOP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/utils/defaultDappMetadata.js\nfunction getDefaultAppMetadata() {\n  if (!isBrowser()) {\n    return {\n      name: \"thirdweb powered dApp\",\n      url: \"https://thirdweb.com\",\n      description: \"thirdweb powered dApp\",\n      logoUrl: \"https://thirdweb.com/favicon.ico\"\n    };\n  }\n  const { protocol, hostname, port } = window.location;\n  let baseUrl = `${protocol}//${hostname}`;\n  if (port && port !== \"80\" && port !== \"443\") {\n    baseUrl += `:${port}`;\n  }\n  const logoUrl = `${baseUrl}/favicon.ico`;\n  return {\n    name: window.document.title || \"thirdweb powered dApp\",\n    url: baseUrl,\n    description: window.document.title || \"thirdweb powered dApp\",\n    logoUrl\n  };\n}\n\nexport {\n  getDefaultAppMetadata\n};\n//# sourceMappingURL=chunk-G26WKBGM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-GGVPULQZ.js",
    "content": "import {\n  name,\n  symbol\n} from \"./chunk-6RU56BH7.js\";\nimport {\n  decimals\n} from \"./chunk-QVNJVROL.js\";\nimport {\n  isNativeTokenAddress\n} from \"./chunk-673YCYST.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/read/getCurrencyMetadata.js\nasync function getCurrencyMetadata(options) {\n  if (isNativeTokenAddress(options.contract.address)) {\n    return {\n      name: \"Ether\",\n      symbol: \"ETH\",\n      decimals: 18,\n      // overwrite with native currency of the chain if available\n      ...options.contract.chain.nativeCurrency\n    };\n  }\n  try {\n    const [name_, symbol_, decimals_] = await Promise.all([\n      name(options).catch(() => \"\"),\n      symbol(options),\n      decimals(options)\n    ]);\n    return {\n      name: name_,\n      symbol: symbol_,\n      decimals: decimals_\n    };\n  } catch {\n    throw new Error(\"Invalid currency token\");\n  }\n}\n\nexport {\n  getCurrencyMetadata\n};\n//# sourceMappingURL=chunk-GGVPULQZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-GHAZ34ED.js",
    "content": "// node_modules/thirdweb/dist/esm/auth/core/create-login-message.js\nfunction createLoginMessage(payload) {\n  const typeField = \"Ethereum\";\n  const header = `${payload.domain} wants you to sign in with your ${typeField} account:`;\n  let prefix = [header, payload.address].join(\"\\n\");\n  prefix = [prefix, payload.statement].join(\"\\n\\n\");\n  if (payload.statement) {\n    prefix += \"\\n\";\n  }\n  const suffixArray = [];\n  if (payload.uri) {\n    const uriField = `URI: ${payload.uri}`;\n    suffixArray.push(uriField);\n  }\n  const versionField = `Version: ${payload.version}`;\n  suffixArray.push(versionField);\n  if (payload.chain_id) {\n    const chainField = `Chain ID: ${payload.chain_id}` || \"1\";\n    suffixArray.push(chainField);\n  }\n  const nonceField = `Nonce: ${payload.nonce}`;\n  suffixArray.push(nonceField);\n  const issuedAtField = `Issued At: ${payload.issued_at}`;\n  suffixArray.push(issuedAtField);\n  const expiryField = `Expiration Time: ${payload.expiration_time}`;\n  suffixArray.push(expiryField);\n  if (payload.invalid_before) {\n    const invalidBeforeField = `Not Before: ${payload.invalid_before}`;\n    suffixArray.push(invalidBeforeField);\n  }\n  if (payload.resources) {\n    suffixArray.push([\"Resources:\", ...payload.resources.map((x) => `- ${x}`)].join(\"\\n\"));\n  }\n  const suffix = suffixArray.join(\"\\n\");\n  return [prefix, suffix].join(\"\\n\");\n}\n\n// node_modules/thirdweb/dist/esm/auth/core/sign-login-payload.js\nasync function signLoginPayload(options) {\n  const { payload, account } = options;\n  const signature = await account.signMessage({\n    message: createLoginMessage(payload)\n  });\n  return {\n    signature,\n    payload\n  };\n}\n\nexport {\n  signLoginPayload\n};\n//# sourceMappingURL=chunk-GHAZ34ED.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-GINVHONX.js",
    "content": "import {\n  keccak_256\n} from \"./chunk-O6LGEXJ4.js\";\n\n// node_modules/abitype/dist/esm/version.js\nvar version = \"1.0.6\";\n\n// node_modules/abitype/dist/esm/errors.js\nvar BaseError = class _BaseError extends Error {\n  constructor(shortMessage, args = {}) {\n    var _a;\n    const details = args.cause instanceof _BaseError ? args.cause.details : ((_a = args.cause) == null ? void 0 : _a.message) ? args.cause.message : args.details;\n    const docsPath4 = args.cause instanceof _BaseError ? args.cause.docsPath || args.docsPath : args.docsPath;\n    const message = [\n      shortMessage || \"An error occurred.\",\n      \"\",\n      ...args.metaMessages ? [...args.metaMessages, \"\"] : [],\n      ...docsPath4 ? [`Docs: https://abitype.dev${docsPath4}`] : [],\n      ...details ? [`Details: ${details}`] : [],\n      `Version: abitype@${version}`\n    ].join(\"\\n\");\n    super(message);\n    Object.defineProperty(this, \"details\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"docsPath\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"metaMessages\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"shortMessage\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"AbiTypeError\"\n    });\n    if (args.cause)\n      this.cause = args.cause;\n    this.details = details;\n    this.docsPath = docsPath4;\n    this.metaMessages = args.metaMessages;\n    this.shortMessage = shortMessage;\n  }\n};\n\n// node_modules/abitype/dist/esm/regex.js\nfunction execTyped(regex, string) {\n  const match = regex.exec(string);\n  return match == null ? void 0 : match.groups;\n}\nvar bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\nvar integerRegex = /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\nvar isTupleRegex = /^\\(.+?\\).*?$/;\n\n// node_modules/abitype/dist/esm/human-readable/formatAbiParameter.js\nvar tupleRegex = /^tuple(?<array>(\\[(\\d*)\\])*)$/;\nfunction formatAbiParameter(abiParameter) {\n  let type = abiParameter.type;\n  if (tupleRegex.test(abiParameter.type) && \"components\" in abiParameter) {\n    type = \"(\";\n    const length = abiParameter.components.length;\n    for (let i = 0; i < length; i++) {\n      const component = abiParameter.components[i];\n      type += formatAbiParameter(component);\n      if (i < length - 1)\n        type += \", \";\n    }\n    const result = execTyped(tupleRegex, abiParameter.type);\n    type += `)${(result == null ? void 0 : result.array) ?? \"\"}`;\n    return formatAbiParameter({\n      ...abiParameter,\n      type\n    });\n  }\n  if (\"indexed\" in abiParameter && abiParameter.indexed)\n    type = `${type} indexed`;\n  if (abiParameter.name)\n    return `${type} ${abiParameter.name}`;\n  return type;\n}\n\n// node_modules/abitype/dist/esm/human-readable/formatAbiParameters.js\nfunction formatAbiParameters(abiParameters) {\n  let params = \"\";\n  const length = abiParameters.length;\n  for (let i = 0; i < length; i++) {\n    const abiParameter = abiParameters[i];\n    params += formatAbiParameter(abiParameter);\n    if (i !== length - 1)\n      params += \", \";\n  }\n  return params;\n}\n\n// node_modules/abitype/dist/esm/human-readable/formatAbiItem.js\nfunction formatAbiItem(abiItem) {\n  if (abiItem.type === \"function\")\n    return `function ${abiItem.name}(${formatAbiParameters(abiItem.inputs)})${abiItem.stateMutability && abiItem.stateMutability !== \"nonpayable\" ? ` ${abiItem.stateMutability}` : \"\"}${abiItem.outputs.length ? ` returns (${formatAbiParameters(abiItem.outputs)})` : \"\"}`;\n  if (abiItem.type === \"event\")\n    return `event ${abiItem.name}(${formatAbiParameters(abiItem.inputs)})`;\n  if (abiItem.type === \"error\")\n    return `error ${abiItem.name}(${formatAbiParameters(abiItem.inputs)})`;\n  if (abiItem.type === \"constructor\")\n    return `constructor(${formatAbiParameters(abiItem.inputs)})${abiItem.stateMutability === \"payable\" ? \" payable\" : \"\"}`;\n  if (abiItem.type === \"fallback\")\n    return \"fallback()\";\n  return \"receive() external payable\";\n}\n\n// node_modules/abitype/dist/esm/human-readable/formatAbi.js\nfunction formatAbi(abi) {\n  const signatures = [];\n  const length = abi.length;\n  for (let i = 0; i < length; i++) {\n    const abiItem = abi[i];\n    const signature = formatAbiItem(abiItem);\n    signatures.push(signature);\n  }\n  return signatures;\n}\n\n// node_modules/abitype/dist/esm/human-readable/runtime/signatures.js\nvar errorSignatureRegex = /^error (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?<parameters>.*?)\\)$/;\nfunction isErrorSignature(signature) {\n  return errorSignatureRegex.test(signature);\n}\nfunction execErrorSignature(signature) {\n  return execTyped(errorSignatureRegex, signature);\n}\nvar eventSignatureRegex = /^event (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?<parameters>.*?)\\)$/;\nfunction isEventSignature(signature) {\n  return eventSignatureRegex.test(signature);\n}\nfunction execEventSignature(signature) {\n  return execTyped(eventSignatureRegex, signature);\n}\nvar functionSignatureRegex = /^function (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?<parameters>.*?)\\)(?: (?<scope>external|public{1}))?(?: (?<stateMutability>pure|view|nonpayable|payable{1}))?(?: returns\\s?\\((?<returns>.*?)\\))?$/;\nfunction isFunctionSignature(signature) {\n  return functionSignatureRegex.test(signature);\n}\nfunction execFunctionSignature(signature) {\n  return execTyped(functionSignatureRegex, signature);\n}\nvar structSignatureRegex = /^struct (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*) \\{(?<properties>.*?)\\}$/;\nfunction isStructSignature(signature) {\n  return structSignatureRegex.test(signature);\n}\nfunction execStructSignature(signature) {\n  return execTyped(structSignatureRegex, signature);\n}\nvar constructorSignatureRegex = /^constructor\\((?<parameters>.*?)\\)(?:\\s(?<stateMutability>payable{1}))?$/;\nfunction isConstructorSignature(signature) {\n  return constructorSignatureRegex.test(signature);\n}\nfunction execConstructorSignature(signature) {\n  return execTyped(constructorSignatureRegex, signature);\n}\nvar fallbackSignatureRegex = /^fallback\\(\\) external(?:\\s(?<stateMutability>payable{1}))?$/;\nfunction isFallbackSignature(signature) {\n  return fallbackSignatureRegex.test(signature);\n}\nvar receiveSignatureRegex = /^receive\\(\\) external payable$/;\nfunction isReceiveSignature(signature) {\n  return receiveSignatureRegex.test(signature);\n}\nvar eventModifiers = /* @__PURE__ */ new Set([\"indexed\"]);\nvar functionModifiers = /* @__PURE__ */ new Set([\n  \"calldata\",\n  \"memory\",\n  \"storage\"\n]);\n\n// node_modules/abitype/dist/esm/human-readable/errors/abiItem.js\nvar InvalidAbiItemError = class extends BaseError {\n  constructor({ signature }) {\n    super(\"Failed to parse ABI item.\", {\n      details: `parseAbiItem(${JSON.stringify(signature, null, 2)})`,\n      docsPath: \"/api/human#parseabiitem-1\"\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"InvalidAbiItemError\"\n    });\n  }\n};\nvar UnknownTypeError = class extends BaseError {\n  constructor({ type }) {\n    super(\"Unknown type.\", {\n      metaMessages: [\n        `Type \"${type}\" is not a valid ABI type. Perhaps you forgot to include a struct signature?`\n      ]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"UnknownTypeError\"\n    });\n  }\n};\nvar UnknownSolidityTypeError = class extends BaseError {\n  constructor({ type }) {\n    super(\"Unknown type.\", {\n      metaMessages: [`Type \"${type}\" is not a valid ABI type.`]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"UnknownSolidityTypeError\"\n    });\n  }\n};\n\n// node_modules/abitype/dist/esm/human-readable/errors/abiParameter.js\nvar InvalidParameterError = class extends BaseError {\n  constructor({ param }) {\n    super(\"Invalid ABI parameter.\", {\n      details: param\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"InvalidParameterError\"\n    });\n  }\n};\nvar SolidityProtectedKeywordError = class extends BaseError {\n  constructor({ param, name }) {\n    super(\"Invalid ABI parameter.\", {\n      details: param,\n      metaMessages: [\n        `\"${name}\" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`\n      ]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"SolidityProtectedKeywordError\"\n    });\n  }\n};\nvar InvalidModifierError = class extends BaseError {\n  constructor({ param, type, modifier }) {\n    super(\"Invalid ABI parameter.\", {\n      details: param,\n      metaMessages: [\n        `Modifier \"${modifier}\" not allowed${type ? ` in \"${type}\" type` : \"\"}.`\n      ]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"InvalidModifierError\"\n    });\n  }\n};\nvar InvalidFunctionModifierError = class extends BaseError {\n  constructor({ param, type, modifier }) {\n    super(\"Invalid ABI parameter.\", {\n      details: param,\n      metaMessages: [\n        `Modifier \"${modifier}\" not allowed${type ? ` in \"${type}\" type` : \"\"}.`,\n        `Data location can only be specified for array, struct, or mapping types, but \"${modifier}\" was given.`\n      ]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"InvalidFunctionModifierError\"\n    });\n  }\n};\nvar InvalidAbiTypeParameterError = class extends BaseError {\n  constructor({ abiParameter }) {\n    super(\"Invalid ABI parameter.\", {\n      details: JSON.stringify(abiParameter, null, 2),\n      metaMessages: [\"ABI parameter type is invalid.\"]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"InvalidAbiTypeParameterError\"\n    });\n  }\n};\n\n// node_modules/abitype/dist/esm/human-readable/errors/signature.js\nvar InvalidSignatureError = class extends BaseError {\n  constructor({ signature, type }) {\n    super(`Invalid ${type} signature.`, {\n      details: signature\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"InvalidSignatureError\"\n    });\n  }\n};\nvar UnknownSignatureError = class extends BaseError {\n  constructor({ signature }) {\n    super(\"Unknown signature.\", {\n      details: signature\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"UnknownSignatureError\"\n    });\n  }\n};\nvar InvalidStructSignatureError = class extends BaseError {\n  constructor({ signature }) {\n    super(\"Invalid struct signature.\", {\n      details: signature,\n      metaMessages: [\"No properties exist.\"]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"InvalidStructSignatureError\"\n    });\n  }\n};\n\n// node_modules/abitype/dist/esm/human-readable/errors/struct.js\nvar CircularReferenceError = class extends BaseError {\n  constructor({ type }) {\n    super(\"Circular reference detected.\", {\n      metaMessages: [`Struct \"${type}\" is a circular reference.`]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"CircularReferenceError\"\n    });\n  }\n};\n\n// node_modules/abitype/dist/esm/human-readable/errors/splitParameters.js\nvar InvalidParenthesisError = class extends BaseError {\n  constructor({ current, depth }) {\n    super(\"Unbalanced parentheses.\", {\n      metaMessages: [\n        `\"${current.trim()}\" has too many ${depth > 0 ? \"opening\" : \"closing\"} parentheses.`\n      ],\n      details: `Depth \"${depth}\"`\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"InvalidParenthesisError\"\n    });\n  }\n};\n\n// node_modules/abitype/dist/esm/human-readable/runtime/cache.js\nfunction getParameterCacheKey(param, type) {\n  if (type)\n    return `${type}:${param}`;\n  return param;\n}\nvar parameterCache = /* @__PURE__ */ new Map([\n  // Unnamed\n  [\"address\", { type: \"address\" }],\n  [\"bool\", { type: \"bool\" }],\n  [\"bytes\", { type: \"bytes\" }],\n  [\"bytes32\", { type: \"bytes32\" }],\n  [\"int\", { type: \"int256\" }],\n  [\"int256\", { type: \"int256\" }],\n  [\"string\", { type: \"string\" }],\n  [\"uint\", { type: \"uint256\" }],\n  [\"uint8\", { type: \"uint8\" }],\n  [\"uint16\", { type: \"uint16\" }],\n  [\"uint24\", { type: \"uint24\" }],\n  [\"uint32\", { type: \"uint32\" }],\n  [\"uint64\", { type: \"uint64\" }],\n  [\"uint96\", { type: \"uint96\" }],\n  [\"uint112\", { type: \"uint112\" }],\n  [\"uint160\", { type: \"uint160\" }],\n  [\"uint192\", { type: \"uint192\" }],\n  [\"uint256\", { type: \"uint256\" }],\n  // Named\n  [\"address owner\", { type: \"address\", name: \"owner\" }],\n  [\"address to\", { type: \"address\", name: \"to\" }],\n  [\"bool approved\", { type: \"bool\", name: \"approved\" }],\n  [\"bytes _data\", { type: \"bytes\", name: \"_data\" }],\n  [\"bytes data\", { type: \"bytes\", name: \"data\" }],\n  [\"bytes signature\", { type: \"bytes\", name: \"signature\" }],\n  [\"bytes32 hash\", { type: \"bytes32\", name: \"hash\" }],\n  [\"bytes32 r\", { type: \"bytes32\", name: \"r\" }],\n  [\"bytes32 root\", { type: \"bytes32\", name: \"root\" }],\n  [\"bytes32 s\", { type: \"bytes32\", name: \"s\" }],\n  [\"string name\", { type: \"string\", name: \"name\" }],\n  [\"string symbol\", { type: \"string\", name: \"symbol\" }],\n  [\"string tokenURI\", { type: \"string\", name: \"tokenURI\" }],\n  [\"uint tokenId\", { type: \"uint256\", name: \"tokenId\" }],\n  [\"uint8 v\", { type: \"uint8\", name: \"v\" }],\n  [\"uint256 balance\", { type: \"uint256\", name: \"balance\" }],\n  [\"uint256 tokenId\", { type: \"uint256\", name: \"tokenId\" }],\n  [\"uint256 value\", { type: \"uint256\", name: \"value\" }],\n  // Indexed\n  [\n    \"event:address indexed from\",\n    { type: \"address\", name: \"from\", indexed: true }\n  ],\n  [\"event:address indexed to\", { type: \"address\", name: \"to\", indexed: true }],\n  [\n    \"event:uint indexed tokenId\",\n    { type: \"uint256\", name: \"tokenId\", indexed: true }\n  ],\n  [\n    \"event:uint256 indexed tokenId\",\n    { type: \"uint256\", name: \"tokenId\", indexed: true }\n  ]\n]);\n\n// node_modules/abitype/dist/esm/human-readable/runtime/utils.js\nfunction parseSignature(signature, structs = {}) {\n  if (isFunctionSignature(signature)) {\n    const match = execFunctionSignature(signature);\n    if (!match)\n      throw new InvalidSignatureError({ signature, type: \"function\" });\n    const inputParams = splitParameters(match.parameters);\n    const inputs = [];\n    const inputLength = inputParams.length;\n    for (let i = 0; i < inputLength; i++) {\n      inputs.push(parseAbiParameter(inputParams[i], {\n        modifiers: functionModifiers,\n        structs,\n        type: \"function\"\n      }));\n    }\n    const outputs = [];\n    if (match.returns) {\n      const outputParams = splitParameters(match.returns);\n      const outputLength = outputParams.length;\n      for (let i = 0; i < outputLength; i++) {\n        outputs.push(parseAbiParameter(outputParams[i], {\n          modifiers: functionModifiers,\n          structs,\n          type: \"function\"\n        }));\n      }\n    }\n    return {\n      name: match.name,\n      type: \"function\",\n      stateMutability: match.stateMutability ?? \"nonpayable\",\n      inputs,\n      outputs\n    };\n  }\n  if (isEventSignature(signature)) {\n    const match = execEventSignature(signature);\n    if (!match)\n      throw new InvalidSignatureError({ signature, type: \"event\" });\n    const params = splitParameters(match.parameters);\n    const abiParameters = [];\n    const length = params.length;\n    for (let i = 0; i < length; i++) {\n      abiParameters.push(parseAbiParameter(params[i], {\n        modifiers: eventModifiers,\n        structs,\n        type: \"event\"\n      }));\n    }\n    return { name: match.name, type: \"event\", inputs: abiParameters };\n  }\n  if (isErrorSignature(signature)) {\n    const match = execErrorSignature(signature);\n    if (!match)\n      throw new InvalidSignatureError({ signature, type: \"error\" });\n    const params = splitParameters(match.parameters);\n    const abiParameters = [];\n    const length = params.length;\n    for (let i = 0; i < length; i++) {\n      abiParameters.push(parseAbiParameter(params[i], { structs, type: \"error\" }));\n    }\n    return { name: match.name, type: \"error\", inputs: abiParameters };\n  }\n  if (isConstructorSignature(signature)) {\n    const match = execConstructorSignature(signature);\n    if (!match)\n      throw new InvalidSignatureError({ signature, type: \"constructor\" });\n    const params = splitParameters(match.parameters);\n    const abiParameters = [];\n    const length = params.length;\n    for (let i = 0; i < length; i++) {\n      abiParameters.push(parseAbiParameter(params[i], { structs, type: \"constructor\" }));\n    }\n    return {\n      type: \"constructor\",\n      stateMutability: match.stateMutability ?? \"nonpayable\",\n      inputs: abiParameters\n    };\n  }\n  if (isFallbackSignature(signature))\n    return { type: \"fallback\" };\n  if (isReceiveSignature(signature))\n    return {\n      type: \"receive\",\n      stateMutability: \"payable\"\n    };\n  throw new UnknownSignatureError({ signature });\n}\nvar abiParameterWithoutTupleRegex = /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\\[\\d*?\\])+?)?(?:\\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/;\nvar abiParameterWithTupleRegex = /^\\((?<type>.+?)\\)(?<array>(?:\\[\\d*?\\])+?)?(?:\\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/;\nvar dynamicIntegerRegex = /^u?int$/;\nfunction parseAbiParameter(param, options) {\n  var _a, _b;\n  const parameterCacheKey = getParameterCacheKey(param, options == null ? void 0 : options.type);\n  if (parameterCache.has(parameterCacheKey))\n    return parameterCache.get(parameterCacheKey);\n  const isTuple = isTupleRegex.test(param);\n  const match = execTyped(isTuple ? abiParameterWithTupleRegex : abiParameterWithoutTupleRegex, param);\n  if (!match)\n    throw new InvalidParameterError({ param });\n  if (match.name && isSolidityKeyword(match.name))\n    throw new SolidityProtectedKeywordError({ param, name: match.name });\n  const name = match.name ? { name: match.name } : {};\n  const indexed = match.modifier === \"indexed\" ? { indexed: true } : {};\n  const structs = (options == null ? void 0 : options.structs) ?? {};\n  let type;\n  let components = {};\n  if (isTuple) {\n    type = \"tuple\";\n    const params = splitParameters(match.type);\n    const components_ = [];\n    const length = params.length;\n    for (let i = 0; i < length; i++) {\n      components_.push(parseAbiParameter(params[i], { structs }));\n    }\n    components = { components: components_ };\n  } else if (match.type in structs) {\n    type = \"tuple\";\n    components = { components: structs[match.type] };\n  } else if (dynamicIntegerRegex.test(match.type)) {\n    type = `${match.type}256`;\n  } else {\n    type = match.type;\n    if (!((options == null ? void 0 : options.type) === \"struct\") && !isSolidityType(type))\n      throw new UnknownSolidityTypeError({ type });\n  }\n  if (match.modifier) {\n    if (!((_b = (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.has) == null ? void 0 : _b.call(_a, match.modifier)))\n      throw new InvalidModifierError({\n        param,\n        type: options == null ? void 0 : options.type,\n        modifier: match.modifier\n      });\n    if (functionModifiers.has(match.modifier) && !isValidDataLocation(type, !!match.array))\n      throw new InvalidFunctionModifierError({\n        param,\n        type: options == null ? void 0 : options.type,\n        modifier: match.modifier\n      });\n  }\n  const abiParameter = {\n    type: `${type}${match.array ?? \"\"}`,\n    ...name,\n    ...indexed,\n    ...components\n  };\n  parameterCache.set(parameterCacheKey, abiParameter);\n  return abiParameter;\n}\nfunction splitParameters(params, result = [], current = \"\", depth = 0) {\n  const length = params.trim().length;\n  for (let i = 0; i < length; i++) {\n    const char = params[i];\n    const tail = params.slice(i + 1);\n    switch (char) {\n      case \",\":\n        return depth === 0 ? splitParameters(tail, [...result, current.trim()]) : splitParameters(tail, result, `${current}${char}`, depth);\n      case \"(\":\n        return splitParameters(tail, result, `${current}${char}`, depth + 1);\n      case \")\":\n        return splitParameters(tail, result, `${current}${char}`, depth - 1);\n      default:\n        return splitParameters(tail, result, `${current}${char}`, depth);\n    }\n  }\n  if (current === \"\")\n    return result;\n  if (depth !== 0)\n    throw new InvalidParenthesisError({ current, depth });\n  result.push(current.trim());\n  return result;\n}\nfunction isSolidityType(type) {\n  return type === \"address\" || type === \"bool\" || type === \"function\" || type === \"string\" || bytesRegex.test(type) || integerRegex.test(type);\n}\nvar protectedKeywordsRegex = /^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/;\nfunction isSolidityKeyword(name) {\n  return name === \"address\" || name === \"bool\" || name === \"function\" || name === \"string\" || name === \"tuple\" || bytesRegex.test(name) || integerRegex.test(name) || protectedKeywordsRegex.test(name);\n}\nfunction isValidDataLocation(type, isArray) {\n  return isArray || type === \"bytes\" || type === \"string\" || type === \"tuple\";\n}\n\n// node_modules/abitype/dist/esm/human-readable/runtime/structs.js\nfunction parseStructs(signatures) {\n  const shallowStructs = {};\n  const signaturesLength = signatures.length;\n  for (let i = 0; i < signaturesLength; i++) {\n    const signature = signatures[i];\n    if (!isStructSignature(signature))\n      continue;\n    const match = execStructSignature(signature);\n    if (!match)\n      throw new InvalidSignatureError({ signature, type: \"struct\" });\n    const properties = match.properties.split(\";\");\n    const components = [];\n    const propertiesLength = properties.length;\n    for (let k = 0; k < propertiesLength; k++) {\n      const property = properties[k];\n      const trimmed = property.trim();\n      if (!trimmed)\n        continue;\n      const abiParameter = parseAbiParameter(trimmed, {\n        type: \"struct\"\n      });\n      components.push(abiParameter);\n    }\n    if (!components.length)\n      throw new InvalidStructSignatureError({ signature });\n    shallowStructs[match.name] = components;\n  }\n  const resolvedStructs = {};\n  const entries = Object.entries(shallowStructs);\n  const entriesLength = entries.length;\n  for (let i = 0; i < entriesLength; i++) {\n    const [name, parameters] = entries[i];\n    resolvedStructs[name] = resolveStructs(parameters, shallowStructs);\n  }\n  return resolvedStructs;\n}\nvar typeWithoutTupleRegex = /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\\[\\d*?\\])+?)?$/;\nfunction resolveStructs(abiParameters, structs, ancestors = /* @__PURE__ */ new Set()) {\n  const components = [];\n  const length = abiParameters.length;\n  for (let i = 0; i < length; i++) {\n    const abiParameter = abiParameters[i];\n    const isTuple = isTupleRegex.test(abiParameter.type);\n    if (isTuple)\n      components.push(abiParameter);\n    else {\n      const match = execTyped(typeWithoutTupleRegex, abiParameter.type);\n      if (!(match == null ? void 0 : match.type))\n        throw new InvalidAbiTypeParameterError({ abiParameter });\n      const { array, type } = match;\n      if (type in structs) {\n        if (ancestors.has(type))\n          throw new CircularReferenceError({ type });\n        components.push({\n          ...abiParameter,\n          type: `tuple${array ?? \"\"}`,\n          components: resolveStructs(structs[type] ?? [], structs, /* @__PURE__ */ new Set([...ancestors, type]))\n        });\n      } else {\n        if (isSolidityType(type))\n          components.push(abiParameter);\n        else\n          throw new UnknownTypeError({ type });\n      }\n    }\n  }\n  return components;\n}\n\n// node_modules/abitype/dist/esm/human-readable/parseAbi.js\nfunction parseAbi(signatures) {\n  const structs = parseStructs(signatures);\n  const abi = [];\n  const length = signatures.length;\n  for (let i = 0; i < length; i++) {\n    const signature = signatures[i];\n    if (isStructSignature(signature))\n      continue;\n    abi.push(parseSignature(signature, structs));\n  }\n  return abi;\n}\n\n// node_modules/abitype/dist/esm/human-readable/parseAbiItem.js\nfunction parseAbiItem(signature) {\n  let abiItem;\n  if (typeof signature === \"string\")\n    abiItem = parseSignature(signature);\n  else {\n    const structs = parseStructs(signature);\n    const length = signature.length;\n    for (let i = 0; i < length; i++) {\n      const signature_ = signature[i];\n      if (isStructSignature(signature_))\n        continue;\n      abiItem = parseSignature(signature_, structs);\n      break;\n    }\n  }\n  if (!abiItem)\n    throw new InvalidAbiItemError({ signature });\n  return abiItem;\n}\n\n// node_modules/viem/_esm/accounts/utils/parseAccount.js\nfunction parseAccount(account) {\n  if (typeof account === \"string\")\n    return { address: account, type: \"json-rpc\" };\n  return account;\n}\n\n// node_modules/viem/_esm/constants/abis.js\nvar multicall3Abi = [\n  {\n    inputs: [\n      {\n        components: [\n          {\n            name: \"target\",\n            type: \"address\"\n          },\n          {\n            name: \"allowFailure\",\n            type: \"bool\"\n          },\n          {\n            name: \"callData\",\n            type: \"bytes\"\n          }\n        ],\n        name: \"calls\",\n        type: \"tuple[]\"\n      }\n    ],\n    name: \"aggregate3\",\n    outputs: [\n      {\n        components: [\n          {\n            name: \"success\",\n            type: \"bool\"\n          },\n          {\n            name: \"returnData\",\n            type: \"bytes\"\n          }\n        ],\n        name: \"returnData\",\n        type: \"tuple[]\"\n      }\n    ],\n    stateMutability: \"view\",\n    type: \"function\"\n  }\n];\nvar universalResolverErrors = [\n  {\n    inputs: [],\n    name: \"ResolverNotFound\",\n    type: \"error\"\n  },\n  {\n    inputs: [],\n    name: \"ResolverWildcardNotSupported\",\n    type: \"error\"\n  },\n  {\n    inputs: [],\n    name: \"ResolverNotContract\",\n    type: \"error\"\n  },\n  {\n    inputs: [\n      {\n        name: \"returnData\",\n        type: \"bytes\"\n      }\n    ],\n    name: \"ResolverError\",\n    type: \"error\"\n  },\n  {\n    inputs: [\n      {\n        components: [\n          {\n            name: \"status\",\n            type: \"uint16\"\n          },\n          {\n            name: \"message\",\n            type: \"string\"\n          }\n        ],\n        name: \"errors\",\n        type: \"tuple[]\"\n      }\n    ],\n    name: \"HttpError\",\n    type: \"error\"\n  }\n];\nvar universalResolverResolveAbi = [\n  ...universalResolverErrors,\n  {\n    name: \"resolve\",\n    type: \"function\",\n    stateMutability: \"view\",\n    inputs: [\n      { name: \"name\", type: \"bytes\" },\n      { name: \"data\", type: \"bytes\" }\n    ],\n    outputs: [\n      { name: \"\", type: \"bytes\" },\n      { name: \"address\", type: \"address\" }\n    ]\n  },\n  {\n    name: \"resolve\",\n    type: \"function\",\n    stateMutability: \"view\",\n    inputs: [\n      { name: \"name\", type: \"bytes\" },\n      { name: \"data\", type: \"bytes\" },\n      { name: \"gateways\", type: \"string[]\" }\n    ],\n    outputs: [\n      { name: \"\", type: \"bytes\" },\n      { name: \"address\", type: \"address\" }\n    ]\n  }\n];\nvar universalResolverReverseAbi = [\n  ...universalResolverErrors,\n  {\n    name: \"reverse\",\n    type: \"function\",\n    stateMutability: \"view\",\n    inputs: [{ type: \"bytes\", name: \"reverseName\" }],\n    outputs: [\n      { type: \"string\", name: \"resolvedName\" },\n      { type: \"address\", name: \"resolvedAddress\" },\n      { type: \"address\", name: \"reverseResolver\" },\n      { type: \"address\", name: \"resolver\" }\n    ]\n  },\n  {\n    name: \"reverse\",\n    type: \"function\",\n    stateMutability: \"view\",\n    inputs: [\n      { type: \"bytes\", name: \"reverseName\" },\n      { type: \"string[]\", name: \"gateways\" }\n    ],\n    outputs: [\n      { type: \"string\", name: \"resolvedName\" },\n      { type: \"address\", name: \"resolvedAddress\" },\n      { type: \"address\", name: \"reverseResolver\" },\n      { type: \"address\", name: \"resolver\" }\n    ]\n  }\n];\nvar universalSignatureValidatorAbi = [\n  {\n    inputs: [\n      {\n        name: \"_signer\",\n        type: \"address\"\n      },\n      {\n        name: \"_hash\",\n        type: \"bytes32\"\n      },\n      {\n        name: \"_signature\",\n        type: \"bytes\"\n      }\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"constructor\"\n  },\n  {\n    inputs: [\n      {\n        name: \"_signer\",\n        type: \"address\"\n      },\n      {\n        name: \"_hash\",\n        type: \"bytes32\"\n      },\n      {\n        name: \"_signature\",\n        type: \"bytes\"\n      }\n    ],\n    outputs: [\n      {\n        type: \"bool\"\n      }\n    ],\n    stateMutability: \"nonpayable\",\n    type: \"function\",\n    name: \"isValidSig\"\n  }\n];\n\n// node_modules/viem/_esm/constants/contract.js\nvar aggregate3Signature = \"0x82ad56cb\";\n\n// node_modules/viem/_esm/constants/contracts.js\nvar deploylessCallViaBytecodeBytecode = \"0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe\";\nvar deploylessCallViaFactoryBytecode = \"0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe\";\nvar universalSignatureValidatorByteCode = \"0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572\";\n\n// node_modules/viem/_esm/errors/version.js\nvar version2 = \"2.21.44\";\n\n// node_modules/viem/_esm/errors/base.js\nvar errorConfig = {\n  getDocsUrl: ({ docsBaseUrl, docsPath: docsPath4 = \"\", docsSlug }) => docsPath4 ? `${docsBaseUrl ?? \"https://viem.sh\"}${docsPath4}${docsSlug ? `#${docsSlug}` : \"\"}` : void 0,\n  version: `viem@${version2}`\n};\nvar BaseError2 = class _BaseError extends Error {\n  constructor(shortMessage, args = {}) {\n    var _a;\n    const details = (() => {\n      var _a2;\n      if (args.cause instanceof _BaseError)\n        return args.cause.details;\n      if ((_a2 = args.cause) == null ? void 0 : _a2.message)\n        return args.cause.message;\n      return args.details;\n    })();\n    const docsPath4 = (() => {\n      if (args.cause instanceof _BaseError)\n        return args.cause.docsPath || args.docsPath;\n      return args.docsPath;\n    })();\n    const docsUrl = (_a = errorConfig.getDocsUrl) == null ? void 0 : _a.call(errorConfig, { ...args, docsPath: docsPath4 });\n    const message = [\n      shortMessage || \"An error occurred.\",\n      \"\",\n      ...args.metaMessages ? [...args.metaMessages, \"\"] : [],\n      ...docsUrl ? [`Docs: ${docsUrl}`] : [],\n      ...details ? [`Details: ${details}`] : [],\n      ...errorConfig.version ? [`Version: ${errorConfig.version}`] : []\n    ].join(\"\\n\");\n    super(message, args.cause ? { cause: args.cause } : void 0);\n    Object.defineProperty(this, \"details\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"docsPath\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"metaMessages\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"shortMessage\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"version\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"BaseError\"\n    });\n    this.details = details;\n    this.docsPath = docsPath4;\n    this.metaMessages = args.metaMessages;\n    this.name = args.name ?? this.name;\n    this.shortMessage = shortMessage;\n    this.version = version2;\n  }\n  walk(fn) {\n    return walk(this, fn);\n  }\n};\nfunction walk(err, fn) {\n  if (fn == null ? void 0 : fn(err))\n    return err;\n  if (err && typeof err === \"object\" && \"cause\" in err && err.cause !== void 0)\n    return walk(err.cause, fn);\n  return fn ? null : err;\n}\n\n// node_modules/viem/_esm/errors/chain.js\nvar ChainDoesNotSupportContract = class extends BaseError2 {\n  constructor({ blockNumber, chain, contract }) {\n    super(`Chain \"${chain.name}\" does not support contract \"${contract.name}\".`, {\n      metaMessages: [\n        \"This could be due to any of the following:\",\n        ...blockNumber && contract.blockCreated && contract.blockCreated > blockNumber ? [\n          `- The contract \"${contract.name}\" was not deployed until block ${contract.blockCreated} (current block ${blockNumber}).`\n        ] : [\n          `- The chain does not have the contract \"${contract.name}\" configured.`\n        ]\n      ],\n      name: \"ChainDoesNotSupportContract\"\n    });\n  }\n};\nvar ClientChainNotConfiguredError = class extends BaseError2 {\n  constructor() {\n    super(\"No chain was provided to the Client.\", {\n      name: \"ClientChainNotConfiguredError\"\n    });\n  }\n};\nvar InvalidChainIdError = class extends BaseError2 {\n  constructor({ chainId }) {\n    super(typeof chainId === \"number\" ? `Chain ID \"${chainId}\" is invalid.` : \"Chain ID is invalid.\", { name: \"InvalidChainIdError\" });\n  }\n};\n\n// node_modules/viem/_esm/constants/solidity.js\nvar solidityError = {\n  inputs: [\n    {\n      name: \"message\",\n      type: \"string\"\n    }\n  ],\n  name: \"Error\",\n  type: \"error\"\n};\nvar solidityPanic = {\n  inputs: [\n    {\n      name: \"reason\",\n      type: \"uint256\"\n    }\n  ],\n  name: \"Panic\",\n  type: \"error\"\n};\n\n// node_modules/viem/_esm/utils/abi/formatAbiItem.js\nfunction formatAbiItem2(abiItem, { includeName = false } = {}) {\n  if (abiItem.type !== \"function\" && abiItem.type !== \"event\" && abiItem.type !== \"error\")\n    throw new InvalidDefinitionTypeError(abiItem.type);\n  return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`;\n}\nfunction formatAbiParams(params, { includeName = false } = {}) {\n  if (!params)\n    return \"\";\n  return params.map((param) => formatAbiParam(param, { includeName })).join(includeName ? \", \" : \",\");\n}\nfunction formatAbiParam(param, { includeName }) {\n  if (param.type.startsWith(\"tuple\")) {\n    return `(${formatAbiParams(param.components, { includeName })})${param.type.slice(\"tuple\".length)}`;\n  }\n  return param.type + (includeName && param.name ? ` ${param.name}` : \"\");\n}\n\n// node_modules/viem/_esm/utils/data/isHex.js\nfunction isHex(value, { strict = true } = {}) {\n  if (!value)\n    return false;\n  if (typeof value !== \"string\")\n    return false;\n  return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith(\"0x\");\n}\n\n// node_modules/viem/_esm/utils/data/size.js\nfunction size(value) {\n  if (isHex(value, { strict: false }))\n    return Math.ceil((value.length - 2) / 2);\n  return value.length;\n}\n\n// node_modules/viem/_esm/errors/abi.js\nvar AbiConstructorNotFoundError = class extends BaseError2 {\n  constructor({ docsPath: docsPath4 }) {\n    super([\n      \"A constructor was not found on the ABI.\",\n      \"Make sure you are using the correct ABI and that the constructor exists on it.\"\n    ].join(\"\\n\"), {\n      docsPath: docsPath4,\n      name: \"AbiConstructorNotFoundError\"\n    });\n  }\n};\nvar AbiConstructorParamsNotFoundError = class extends BaseError2 {\n  constructor({ docsPath: docsPath4 }) {\n    super([\n      \"Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.\",\n      \"Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.\"\n    ].join(\"\\n\"), {\n      docsPath: docsPath4,\n      name: \"AbiConstructorParamsNotFoundError\"\n    });\n  }\n};\nvar AbiDecodingDataSizeTooSmallError = class extends BaseError2 {\n  constructor({ data, params, size: size2 }) {\n    super([`Data size of ${size2} bytes is too small for given parameters.`].join(\"\\n\"), {\n      metaMessages: [\n        `Params: (${formatAbiParams(params, { includeName: true })})`,\n        `Data:   ${data} (${size2} bytes)`\n      ],\n      name: \"AbiDecodingDataSizeTooSmallError\"\n    });\n    Object.defineProperty(this, \"data\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"params\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"size\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.data = data;\n    this.params = params;\n    this.size = size2;\n  }\n};\nvar AbiDecodingZeroDataError = class extends BaseError2 {\n  constructor() {\n    super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n      name: \"AbiDecodingZeroDataError\"\n    });\n  }\n};\nvar AbiEncodingArrayLengthMismatchError = class extends BaseError2 {\n  constructor({ expectedLength, givenLength, type }) {\n    super([\n      `ABI encoding array length mismatch for type ${type}.`,\n      `Expected length: ${expectedLength}`,\n      `Given length: ${givenLength}`\n    ].join(\"\\n\"), { name: \"AbiEncodingArrayLengthMismatchError\" });\n  }\n};\nvar AbiEncodingBytesSizeMismatchError = class extends BaseError2 {\n  constructor({ expectedSize, value }) {\n    super(`Size of bytes \"${value}\" (bytes${size(value)}) does not match expected size (bytes${expectedSize}).`, { name: \"AbiEncodingBytesSizeMismatchError\" });\n  }\n};\nvar AbiEncodingLengthMismatchError = class extends BaseError2 {\n  constructor({ expectedLength, givenLength }) {\n    super([\n      \"ABI encoding params/values length mismatch.\",\n      `Expected length (params): ${expectedLength}`,\n      `Given length (values): ${givenLength}`\n    ].join(\"\\n\"), { name: \"AbiEncodingLengthMismatchError\" });\n  }\n};\nvar AbiErrorSignatureNotFoundError = class extends BaseError2 {\n  constructor(signature, { docsPath: docsPath4 }) {\n    super([\n      `Encoded error signature \"${signature}\" not found on ABI.`,\n      \"Make sure you are using the correct ABI and that the error exists on it.\",\n      `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`\n    ].join(\"\\n\"), {\n      docsPath: docsPath4,\n      name: \"AbiErrorSignatureNotFoundError\"\n    });\n    Object.defineProperty(this, \"signature\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.signature = signature;\n  }\n};\nvar AbiEventSignatureEmptyTopicsError = class extends BaseError2 {\n  constructor({ docsPath: docsPath4 }) {\n    super(\"Cannot extract event signature from empty topics.\", {\n      docsPath: docsPath4,\n      name: \"AbiEventSignatureEmptyTopicsError\"\n    });\n  }\n};\nvar AbiEventSignatureNotFoundError = class extends BaseError2 {\n  constructor(signature, { docsPath: docsPath4 }) {\n    super([\n      `Encoded event signature \"${signature}\" not found on ABI.`,\n      \"Make sure you are using the correct ABI and that the event exists on it.\",\n      `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`\n    ].join(\"\\n\"), {\n      docsPath: docsPath4,\n      name: \"AbiEventSignatureNotFoundError\"\n    });\n  }\n};\nvar AbiEventNotFoundError = class extends BaseError2 {\n  constructor(eventName, { docsPath: docsPath4 } = {}) {\n    super([\n      `Event ${eventName ? `\"${eventName}\" ` : \"\"}not found on ABI.`,\n      \"Make sure you are using the correct ABI and that the event exists on it.\"\n    ].join(\"\\n\"), {\n      docsPath: docsPath4,\n      name: \"AbiEventNotFoundError\"\n    });\n  }\n};\nvar AbiFunctionNotFoundError = class extends BaseError2 {\n  constructor(functionName, { docsPath: docsPath4 } = {}) {\n    super([\n      `Function ${functionName ? `\"${functionName}\" ` : \"\"}not found on ABI.`,\n      \"Make sure you are using the correct ABI and that the function exists on it.\"\n    ].join(\"\\n\"), {\n      docsPath: docsPath4,\n      name: \"AbiFunctionNotFoundError\"\n    });\n  }\n};\nvar AbiFunctionOutputsNotFoundError = class extends BaseError2 {\n  constructor(functionName, { docsPath: docsPath4 }) {\n    super([\n      `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n      \"Cannot decode function result without knowing what the parameter types are.\",\n      \"Make sure you are using the correct ABI and that the function exists on it.\"\n    ].join(\"\\n\"), {\n      docsPath: docsPath4,\n      name: \"AbiFunctionOutputsNotFoundError\"\n    });\n  }\n};\nvar AbiItemAmbiguityError = class extends BaseError2 {\n  constructor(x, y) {\n    super(\"Found ambiguous types in overloaded ABI items.\", {\n      metaMessages: [\n        `\\`${x.type}\\` in \\`${formatAbiItem2(x.abiItem)}\\`, and`,\n        `\\`${y.type}\\` in \\`${formatAbiItem2(y.abiItem)}\\``,\n        \"\",\n        \"These types encode differently and cannot be distinguished at runtime.\",\n        \"Remove one of the ambiguous items in the ABI.\"\n      ],\n      name: \"AbiItemAmbiguityError\"\n    });\n  }\n};\nvar BytesSizeMismatchError = class extends BaseError2 {\n  constructor({ expectedSize, givenSize }) {\n    super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n      name: \"BytesSizeMismatchError\"\n    });\n  }\n};\nvar DecodeLogDataMismatch = class extends BaseError2 {\n  constructor({ abiItem, data, params, size: size2 }) {\n    super([\n      `Data size of ${size2} bytes is too small for non-indexed event parameters.`\n    ].join(\"\\n\"), {\n      metaMessages: [\n        `Params: (${formatAbiParams(params, { includeName: true })})`,\n        `Data:   ${data} (${size2} bytes)`\n      ],\n      name: \"DecodeLogDataMismatch\"\n    });\n    Object.defineProperty(this, \"abiItem\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"data\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"params\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"size\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.abiItem = abiItem;\n    this.data = data;\n    this.params = params;\n    this.size = size2;\n  }\n};\nvar DecodeLogTopicsMismatch = class extends BaseError2 {\n  constructor({ abiItem, param }) {\n    super([\n      `Expected a topic for indexed event parameter${param.name ? ` \"${param.name}\"` : \"\"} on event \"${formatAbiItem2(abiItem, { includeName: true })}\".`\n    ].join(\"\\n\"), { name: \"DecodeLogTopicsMismatch\" });\n    Object.defineProperty(this, \"abiItem\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.abiItem = abiItem;\n  }\n};\nvar InvalidAbiEncodingTypeError = class extends BaseError2 {\n  constructor(type, { docsPath: docsPath4 }) {\n    super([\n      `Type \"${type}\" is not a valid encoding type.`,\n      \"Please provide a valid ABI type.\"\n    ].join(\"\\n\"), { docsPath: docsPath4, name: \"InvalidAbiEncodingType\" });\n  }\n};\nvar InvalidAbiDecodingTypeError = class extends BaseError2 {\n  constructor(type, { docsPath: docsPath4 }) {\n    super([\n      `Type \"${type}\" is not a valid decoding type.`,\n      \"Please provide a valid ABI type.\"\n    ].join(\"\\n\"), { docsPath: docsPath4, name: \"InvalidAbiDecodingType\" });\n  }\n};\nvar InvalidArrayError = class extends BaseError2 {\n  constructor(value) {\n    super([`Value \"${value}\" is not a valid array.`].join(\"\\n\"), {\n      name: \"InvalidArrayError\"\n    });\n  }\n};\nvar InvalidDefinitionTypeError = class extends BaseError2 {\n  constructor(type) {\n    super([\n      `\"${type}\" is not a valid definition type.`,\n      'Valid types: \"function\", \"event\", \"error\"'\n    ].join(\"\\n\"), { name: \"InvalidDefinitionTypeError\" });\n  }\n};\nvar UnsupportedPackedAbiType = class extends BaseError2 {\n  constructor(type) {\n    super(`Type \"${type}\" is not supported for packed encoding.`, {\n      name: \"UnsupportedPackedAbiType\"\n    });\n  }\n};\n\n// node_modules/viem/_esm/errors/data.js\nvar SliceOffsetOutOfBoundsError = class extends BaseError2 {\n  constructor({ offset, position, size: size2 }) {\n    super(`Slice ${position === \"start\" ? \"starting\" : \"ending\"} at offset \"${offset}\" is out-of-bounds (size: ${size2}).`, { name: \"SliceOffsetOutOfBoundsError\" });\n  }\n};\nvar SizeExceedsPaddingSizeError = class extends BaseError2 {\n  constructor({ size: size2, targetSize, type }) {\n    super(`${type.charAt(0).toUpperCase()}${type.slice(1).toLowerCase()} size (${size2}) exceeds padding size (${targetSize}).`, { name: \"SizeExceedsPaddingSizeError\" });\n  }\n};\nvar InvalidBytesLengthError = class extends BaseError2 {\n  constructor({ size: size2, targetSize, type }) {\n    super(`${type.charAt(0).toUpperCase()}${type.slice(1).toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size2} ${type} long.`, { name: \"InvalidBytesLengthError\" });\n  }\n};\n\n// node_modules/viem/_esm/utils/data/slice.js\nfunction slice(value, start, end, { strict } = {}) {\n  if (isHex(value, { strict: false }))\n    return sliceHex(value, start, end, {\n      strict\n    });\n  return sliceBytes(value, start, end, {\n    strict\n  });\n}\nfunction assertStartOffset(value, start) {\n  if (typeof start === \"number\" && start > 0 && start > size(value) - 1)\n    throw new SliceOffsetOutOfBoundsError({\n      offset: start,\n      position: \"start\",\n      size: size(value)\n    });\n}\nfunction assertEndOffset(value, start, end) {\n  if (typeof start === \"number\" && typeof end === \"number\" && size(value) !== end - start) {\n    throw new SliceOffsetOutOfBoundsError({\n      offset: end,\n      position: \"end\",\n      size: size(value)\n    });\n  }\n}\nfunction sliceBytes(value_, start, end, { strict } = {}) {\n  assertStartOffset(value_, start);\n  const value = value_.slice(start, end);\n  if (strict)\n    assertEndOffset(value, start, end);\n  return value;\n}\nfunction sliceHex(value_, start, end, { strict } = {}) {\n  assertStartOffset(value_, start);\n  const value = `0x${value_.replace(\"0x\", \"\").slice((start ?? 0) * 2, (end ?? value_.length) * 2)}`;\n  if (strict)\n    assertEndOffset(value, start, end);\n  return value;\n}\n\n// node_modules/viem/_esm/utils/data/pad.js\nfunction pad(hexOrBytes, { dir, size: size2 = 32 } = {}) {\n  if (typeof hexOrBytes === \"string\")\n    return padHex(hexOrBytes, { dir, size: size2 });\n  return padBytes(hexOrBytes, { dir, size: size2 });\n}\nfunction padHex(hex_, { dir, size: size2 = 32 } = {}) {\n  if (size2 === null)\n    return hex_;\n  const hex = hex_.replace(\"0x\", \"\");\n  if (hex.length > size2 * 2)\n    throw new SizeExceedsPaddingSizeError({\n      size: Math.ceil(hex.length / 2),\n      targetSize: size2,\n      type: \"hex\"\n    });\n  return `0x${hex[dir === \"right\" ? \"padEnd\" : \"padStart\"](size2 * 2, \"0\")}`;\n}\nfunction padBytes(bytes, { dir, size: size2 = 32 } = {}) {\n  if (size2 === null)\n    return bytes;\n  if (bytes.length > size2)\n    throw new SizeExceedsPaddingSizeError({\n      size: bytes.length,\n      targetSize: size2,\n      type: \"bytes\"\n    });\n  const paddedBytes = new Uint8Array(size2);\n  for (let i = 0; i < size2; i++) {\n    const padEnd = dir === \"right\";\n    paddedBytes[padEnd ? i : size2 - i - 1] = bytes[padEnd ? i : bytes.length - i - 1];\n  }\n  return paddedBytes;\n}\n\n// node_modules/viem/_esm/errors/encoding.js\nvar IntegerOutOfRangeError = class extends BaseError2 {\n  constructor({ max, min, signed, size: size2, value }) {\n    super(`Number \"${value}\" is not in safe ${size2 ? `${size2 * 8}-bit ${signed ? \"signed\" : \"unsigned\"} ` : \"\"}integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`, { name: \"IntegerOutOfRangeError\" });\n  }\n};\nvar InvalidBytesBooleanError = class extends BaseError2 {\n  constructor(bytes) {\n    super(`Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`, {\n      name: \"InvalidBytesBooleanError\"\n    });\n  }\n};\nvar SizeOverflowError = class extends BaseError2 {\n  constructor({ givenSize, maxSize }) {\n    super(`Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`, { name: \"SizeOverflowError\" });\n  }\n};\n\n// node_modules/viem/_esm/utils/data/trim.js\nfunction trim(hexOrBytes, { dir = \"left\" } = {}) {\n  let data = typeof hexOrBytes === \"string\" ? hexOrBytes.replace(\"0x\", \"\") : hexOrBytes;\n  let sliceLength = 0;\n  for (let i = 0; i < data.length - 1; i++) {\n    if (data[dir === \"left\" ? i : data.length - i - 1].toString() === \"0\")\n      sliceLength++;\n    else\n      break;\n  }\n  data = dir === \"left\" ? data.slice(sliceLength) : data.slice(0, data.length - sliceLength);\n  if (typeof hexOrBytes === \"string\") {\n    if (data.length === 1 && dir === \"right\")\n      data = `${data}0`;\n    return `0x${data.length % 2 === 1 ? `0${data}` : data}`;\n  }\n  return data;\n}\n\n// node_modules/viem/_esm/utils/encoding/fromHex.js\nfunction assertSize(hexOrBytes, { size: size2 }) {\n  if (size(hexOrBytes) > size2)\n    throw new SizeOverflowError({\n      givenSize: size(hexOrBytes),\n      maxSize: size2\n    });\n}\nfunction hexToBigInt(hex, opts = {}) {\n  const { signed } = opts;\n  if (opts.size)\n    assertSize(hex, { size: opts.size });\n  const value = BigInt(hex);\n  if (!signed)\n    return value;\n  const size2 = (hex.length - 2) / 2;\n  const max = (1n << BigInt(size2) * 8n - 1n) - 1n;\n  if (value <= max)\n    return value;\n  return value - BigInt(`0x${\"f\".padStart(size2 * 2, \"f\")}`) - 1n;\n}\nfunction hexToNumber(hex, opts = {}) {\n  return Number(hexToBigInt(hex, opts));\n}\n\n// node_modules/viem/_esm/utils/encoding/toHex.js\nvar hexes = Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, \"0\"));\nfunction toHex(value, opts = {}) {\n  if (typeof value === \"number\" || typeof value === \"bigint\")\n    return numberToHex(value, opts);\n  if (typeof value === \"string\") {\n    return stringToHex(value, opts);\n  }\n  if (typeof value === \"boolean\")\n    return boolToHex(value, opts);\n  return bytesToHex(value, opts);\n}\nfunction boolToHex(value, opts = {}) {\n  const hex = `0x${Number(value)}`;\n  if (typeof opts.size === \"number\") {\n    assertSize(hex, { size: opts.size });\n    return pad(hex, { size: opts.size });\n  }\n  return hex;\n}\nfunction bytesToHex(value, opts = {}) {\n  let string = \"\";\n  for (let i = 0; i < value.length; i++) {\n    string += hexes[value[i]];\n  }\n  const hex = `0x${string}`;\n  if (typeof opts.size === \"number\") {\n    assertSize(hex, { size: opts.size });\n    return pad(hex, { dir: \"right\", size: opts.size });\n  }\n  return hex;\n}\nfunction numberToHex(value_, opts = {}) {\n  const { signed, size: size2 } = opts;\n  const value = BigInt(value_);\n  let maxValue;\n  if (size2) {\n    if (signed)\n      maxValue = (1n << BigInt(size2) * 8n - 1n) - 1n;\n    else\n      maxValue = 2n ** (BigInt(size2) * 8n) - 1n;\n  } else if (typeof value_ === \"number\") {\n    maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n  }\n  const minValue = typeof maxValue === \"bigint\" && signed ? -maxValue - 1n : 0;\n  if (maxValue && value > maxValue || value < minValue) {\n    const suffix = typeof value_ === \"bigint\" ? \"n\" : \"\";\n    throw new IntegerOutOfRangeError({\n      max: maxValue ? `${maxValue}${suffix}` : void 0,\n      min: `${minValue}${suffix}`,\n      signed,\n      size: size2,\n      value: `${value_}${suffix}`\n    });\n  }\n  const hex = `0x${(signed && value < 0 ? (1n << BigInt(size2 * 8)) + BigInt(value) : value).toString(16)}`;\n  if (size2)\n    return pad(hex, { size: size2 });\n  return hex;\n}\nvar encoder = new TextEncoder();\nfunction stringToHex(value_, opts = {}) {\n  const value = encoder.encode(value_);\n  return bytesToHex(value, opts);\n}\n\n// node_modules/viem/_esm/utils/encoding/toBytes.js\nvar encoder2 = new TextEncoder();\nfunction toBytes(value, opts = {}) {\n  if (typeof value === \"number\" || typeof value === \"bigint\")\n    return numberToBytes(value, opts);\n  if (typeof value === \"boolean\")\n    return boolToBytes(value, opts);\n  if (isHex(value))\n    return hexToBytes(value, opts);\n  return stringToBytes(value, opts);\n}\nfunction boolToBytes(value, opts = {}) {\n  const bytes = new Uint8Array(1);\n  bytes[0] = Number(value);\n  if (typeof opts.size === \"number\") {\n    assertSize(bytes, { size: opts.size });\n    return pad(bytes, { size: opts.size });\n  }\n  return bytes;\n}\nvar charCodeMap = {\n  zero: 48,\n  nine: 57,\n  A: 65,\n  F: 70,\n  a: 97,\n  f: 102\n};\nfunction charCodeToBase16(char) {\n  if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n    return char - charCodeMap.zero;\n  if (char >= charCodeMap.A && char <= charCodeMap.F)\n    return char - (charCodeMap.A - 10);\n  if (char >= charCodeMap.a && char <= charCodeMap.f)\n    return char - (charCodeMap.a - 10);\n  return void 0;\n}\nfunction hexToBytes(hex_, opts = {}) {\n  let hex = hex_;\n  if (opts.size) {\n    assertSize(hex, { size: opts.size });\n    hex = pad(hex, { dir: \"right\", size: opts.size });\n  }\n  let hexString = hex.slice(2);\n  if (hexString.length % 2)\n    hexString = `0${hexString}`;\n  const length = hexString.length / 2;\n  const bytes = new Uint8Array(length);\n  for (let index = 0, j = 0; index < length; index++) {\n    const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++));\n    const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++));\n    if (nibbleLeft === void 0 || nibbleRight === void 0) {\n      throw new BaseError2(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n    }\n    bytes[index] = nibbleLeft * 16 + nibbleRight;\n  }\n  return bytes;\n}\nfunction numberToBytes(value, opts) {\n  const hex = numberToHex(value, opts);\n  return hexToBytes(hex);\n}\nfunction stringToBytes(value, opts = {}) {\n  const bytes = encoder2.encode(value);\n  if (typeof opts.size === \"number\") {\n    assertSize(bytes, { size: opts.size });\n    return pad(bytes, { dir: \"right\", size: opts.size });\n  }\n  return bytes;\n}\n\n// node_modules/viem/_esm/utils/hash/keccak256.js\nfunction keccak256(value, to_) {\n  const to = to_ || \"hex\";\n  const bytes = keccak_256(isHex(value, { strict: false }) ? toBytes(value) : value);\n  if (to === \"bytes\")\n    return bytes;\n  return toHex(bytes);\n}\n\n// node_modules/viem/_esm/utils/hash/hashSignature.js\nvar hash = (value) => keccak256(toBytes(value));\nfunction hashSignature(sig) {\n  return hash(sig);\n}\n\n// node_modules/viem/_esm/utils/hash/normalizeSignature.js\nfunction normalizeSignature(signature) {\n  let active = true;\n  let current = \"\";\n  let level = 0;\n  let result = \"\";\n  let valid = false;\n  for (let i = 0; i < signature.length; i++) {\n    const char = signature[i];\n    if ([\"(\", \")\", \",\"].includes(char))\n      active = true;\n    if (char === \"(\")\n      level++;\n    if (char === \")\")\n      level--;\n    if (!active)\n      continue;\n    if (level === 0) {\n      if (char === \" \" && [\"event\", \"function\", \"\"].includes(result))\n        result = \"\";\n      else {\n        result += char;\n        if (char === \")\") {\n          valid = true;\n          break;\n        }\n      }\n      continue;\n    }\n    if (char === \" \") {\n      if (signature[i - 1] !== \",\" && current !== \",\" && current !== \",(\") {\n        current = \"\";\n        active = false;\n      }\n      continue;\n    }\n    result += char;\n    current += char;\n  }\n  if (!valid)\n    throw new BaseError2(\"Unable to normalize signature.\");\n  return result;\n}\n\n// node_modules/viem/_esm/utils/hash/toSignature.js\nvar toSignature = (def) => {\n  const def_ = (() => {\n    if (typeof def === \"string\")\n      return def;\n    return formatAbiItem(def);\n  })();\n  return normalizeSignature(def_);\n};\n\n// node_modules/viem/_esm/utils/hash/toSignatureHash.js\nfunction toSignatureHash(fn) {\n  return hashSignature(toSignature(fn));\n}\n\n// node_modules/viem/_esm/utils/hash/toFunctionSelector.js\nvar toFunctionSelector = (fn) => slice(toSignatureHash(fn), 0, 4);\n\n// node_modules/viem/_esm/errors/address.js\nvar InvalidAddressError = class extends BaseError2 {\n  constructor({ address }) {\n    super(`Address \"${address}\" is invalid.`, {\n      metaMessages: [\n        \"- Address must be a hex value of 20 bytes (40 hex characters).\",\n        \"- Address must match its checksum counterpart.\"\n      ],\n      name: \"InvalidAddressError\"\n    });\n  }\n};\n\n// node_modules/viem/_esm/utils/lru.js\nvar LruMap = class extends Map {\n  constructor(size2) {\n    super();\n    Object.defineProperty(this, \"maxSize\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.maxSize = size2;\n  }\n  get(key) {\n    const value = super.get(key);\n    if (super.has(key) && value !== void 0) {\n      this.delete(key);\n      super.set(key, value);\n    }\n    return value;\n  }\n  set(key, value) {\n    super.set(key, value);\n    if (this.maxSize && this.size > this.maxSize) {\n      const firstKey = this.keys().next().value;\n      if (firstKey)\n        this.delete(firstKey);\n    }\n    return this;\n  }\n};\n\n// node_modules/viem/_esm/utils/address/isAddress.js\nvar addressRegex = /^0x[a-fA-F0-9]{40}$/;\nvar isAddressCache = new LruMap(8192);\nfunction isAddress(address, options) {\n  const { strict = true } = options ?? {};\n  const cacheKey = `${address}.${strict}`;\n  if (isAddressCache.has(cacheKey))\n    return isAddressCache.get(cacheKey);\n  const result = (() => {\n    if (!addressRegex.test(address))\n      return false;\n    if (address.toLowerCase() === address)\n      return true;\n    if (strict)\n      return checksumAddress(address) === address;\n    return true;\n  })();\n  isAddressCache.set(cacheKey, result);\n  return result;\n}\n\n// node_modules/viem/_esm/utils/address/getAddress.js\nvar checksumAddressCache = new LruMap(8192);\nfunction checksumAddress(address_, chainId) {\n  if (checksumAddressCache.has(`${address_}.${chainId}`))\n    return checksumAddressCache.get(`${address_}.${chainId}`);\n  const hexAddress = chainId ? `${chainId}${address_.toLowerCase()}` : address_.substring(2).toLowerCase();\n  const hash2 = keccak256(stringToBytes(hexAddress), \"bytes\");\n  const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split(\"\");\n  for (let i = 0; i < 40; i += 2) {\n    if (hash2[i >> 1] >> 4 >= 8 && address[i]) {\n      address[i] = address[i].toUpperCase();\n    }\n    if ((hash2[i >> 1] & 15) >= 8 && address[i + 1]) {\n      address[i + 1] = address[i + 1].toUpperCase();\n    }\n  }\n  const result = `0x${address.join(\"\")}`;\n  checksumAddressCache.set(`${address_}.${chainId}`, result);\n  return result;\n}\n\n// node_modules/viem/_esm/errors/cursor.js\nvar NegativeOffsetError = class extends BaseError2 {\n  constructor({ offset }) {\n    super(`Offset \\`${offset}\\` cannot be negative.`, {\n      name: \"NegativeOffsetError\"\n    });\n  }\n};\nvar PositionOutOfBoundsError = class extends BaseError2 {\n  constructor({ length, position }) {\n    super(`Position \\`${position}\\` is out of bounds (\\`0 < position < ${length}\\`).`, { name: \"PositionOutOfBoundsError\" });\n  }\n};\nvar RecursiveReadLimitExceededError = class extends BaseError2 {\n  constructor({ count, limit }) {\n    super(`Recursive read limit of \\`${limit}\\` exceeded (recursive read count: \\`${count}\\`).`, { name: \"RecursiveReadLimitExceededError\" });\n  }\n};\n\n// node_modules/viem/_esm/utils/cursor.js\nvar staticCursor = {\n  bytes: new Uint8Array(),\n  dataView: new DataView(new ArrayBuffer(0)),\n  position: 0,\n  positionReadCount: /* @__PURE__ */ new Map(),\n  recursiveReadCount: 0,\n  recursiveReadLimit: Number.POSITIVE_INFINITY,\n  assertReadLimit() {\n    if (this.recursiveReadCount >= this.recursiveReadLimit)\n      throw new RecursiveReadLimitExceededError({\n        count: this.recursiveReadCount + 1,\n        limit: this.recursiveReadLimit\n      });\n  },\n  assertPosition(position) {\n    if (position < 0 || position > this.bytes.length - 1)\n      throw new PositionOutOfBoundsError({\n        length: this.bytes.length,\n        position\n      });\n  },\n  decrementPosition(offset) {\n    if (offset < 0)\n      throw new NegativeOffsetError({ offset });\n    const position = this.position - offset;\n    this.assertPosition(position);\n    this.position = position;\n  },\n  getReadCount(position) {\n    return this.positionReadCount.get(position || this.position) || 0;\n  },\n  incrementPosition(offset) {\n    if (offset < 0)\n      throw new NegativeOffsetError({ offset });\n    const position = this.position + offset;\n    this.assertPosition(position);\n    this.position = position;\n  },\n  inspectByte(position_) {\n    const position = position_ ?? this.position;\n    this.assertPosition(position);\n    return this.bytes[position];\n  },\n  inspectBytes(length, position_) {\n    const position = position_ ?? this.position;\n    this.assertPosition(position + length - 1);\n    return this.bytes.subarray(position, position + length);\n  },\n  inspectUint8(position_) {\n    const position = position_ ?? this.position;\n    this.assertPosition(position);\n    return this.bytes[position];\n  },\n  inspectUint16(position_) {\n    const position = position_ ?? this.position;\n    this.assertPosition(position + 1);\n    return this.dataView.getUint16(position);\n  },\n  inspectUint24(position_) {\n    const position = position_ ?? this.position;\n    this.assertPosition(position + 2);\n    return (this.dataView.getUint16(position) << 8) + this.dataView.getUint8(position + 2);\n  },\n  inspectUint32(position_) {\n    const position = position_ ?? this.position;\n    this.assertPosition(position + 3);\n    return this.dataView.getUint32(position);\n  },\n  pushByte(byte) {\n    this.assertPosition(this.position);\n    this.bytes[this.position] = byte;\n    this.position++;\n  },\n  pushBytes(bytes) {\n    this.assertPosition(this.position + bytes.length - 1);\n    this.bytes.set(bytes, this.position);\n    this.position += bytes.length;\n  },\n  pushUint8(value) {\n    this.assertPosition(this.position);\n    this.bytes[this.position] = value;\n    this.position++;\n  },\n  pushUint16(value) {\n    this.assertPosition(this.position + 1);\n    this.dataView.setUint16(this.position, value);\n    this.position += 2;\n  },\n  pushUint24(value) {\n    this.assertPosition(this.position + 2);\n    this.dataView.setUint16(this.position, value >> 8);\n    this.dataView.setUint8(this.position + 2, value & ~4294967040);\n    this.position += 3;\n  },\n  pushUint32(value) {\n    this.assertPosition(this.position + 3);\n    this.dataView.setUint32(this.position, value);\n    this.position += 4;\n  },\n  readByte() {\n    this.assertReadLimit();\n    this._touch();\n    const value = this.inspectByte();\n    this.position++;\n    return value;\n  },\n  readBytes(length, size2) {\n    this.assertReadLimit();\n    this._touch();\n    const value = this.inspectBytes(length);\n    this.position += size2 ?? length;\n    return value;\n  },\n  readUint8() {\n    this.assertReadLimit();\n    this._touch();\n    const value = this.inspectUint8();\n    this.position += 1;\n    return value;\n  },\n  readUint16() {\n    this.assertReadLimit();\n    this._touch();\n    const value = this.inspectUint16();\n    this.position += 2;\n    return value;\n  },\n  readUint24() {\n    this.assertReadLimit();\n    this._touch();\n    const value = this.inspectUint24();\n    this.position += 3;\n    return value;\n  },\n  readUint32() {\n    this.assertReadLimit();\n    this._touch();\n    const value = this.inspectUint32();\n    this.position += 4;\n    return value;\n  },\n  get remaining() {\n    return this.bytes.length - this.position;\n  },\n  setPosition(position) {\n    const oldPosition = this.position;\n    this.assertPosition(position);\n    this.position = position;\n    return () => this.position = oldPosition;\n  },\n  _touch() {\n    if (this.recursiveReadLimit === Number.POSITIVE_INFINITY)\n      return;\n    const count = this.getReadCount();\n    this.positionReadCount.set(this.position, count + 1);\n    if (count > 0)\n      this.recursiveReadCount++;\n  }\n};\nfunction createCursor(bytes, { recursiveReadLimit = 8192 } = {}) {\n  const cursor = Object.create(staticCursor);\n  cursor.bytes = bytes;\n  cursor.dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n  cursor.positionReadCount = /* @__PURE__ */ new Map();\n  cursor.recursiveReadLimit = recursiveReadLimit;\n  return cursor;\n}\n\n// node_modules/viem/_esm/utils/encoding/fromBytes.js\nfunction bytesToBigInt(bytes, opts = {}) {\n  if (typeof opts.size !== \"undefined\")\n    assertSize(bytes, { size: opts.size });\n  const hex = bytesToHex(bytes, opts);\n  return hexToBigInt(hex, opts);\n}\nfunction bytesToBool(bytes_, opts = {}) {\n  let bytes = bytes_;\n  if (typeof opts.size !== \"undefined\") {\n    assertSize(bytes, { size: opts.size });\n    bytes = trim(bytes);\n  }\n  if (bytes.length > 1 || bytes[0] > 1)\n    throw new InvalidBytesBooleanError(bytes);\n  return Boolean(bytes[0]);\n}\nfunction bytesToNumber(bytes, opts = {}) {\n  if (typeof opts.size !== \"undefined\")\n    assertSize(bytes, { size: opts.size });\n  const hex = bytesToHex(bytes, opts);\n  return hexToNumber(hex, opts);\n}\nfunction bytesToString(bytes_, opts = {}) {\n  let bytes = bytes_;\n  if (typeof opts.size !== \"undefined\") {\n    assertSize(bytes, { size: opts.size });\n    bytes = trim(bytes, { dir: \"right\" });\n  }\n  return new TextDecoder().decode(bytes);\n}\n\n// node_modules/viem/_esm/utils/data/concat.js\nfunction concat(values) {\n  if (typeof values[0] === \"string\")\n    return concatHex(values);\n  return concatBytes(values);\n}\nfunction concatBytes(values) {\n  let length = 0;\n  for (const arr of values) {\n    length += arr.length;\n  }\n  const result = new Uint8Array(length);\n  let offset = 0;\n  for (const arr of values) {\n    result.set(arr, offset);\n    offset += arr.length;\n  }\n  return result;\n}\nfunction concatHex(values) {\n  return `0x${values.reduce((acc, x) => acc + x.replace(\"0x\", \"\"), \"\")}`;\n}\n\n// node_modules/viem/_esm/utils/abi/encodeAbiParameters.js\nfunction encodeAbiParameters(params, values) {\n  if (params.length !== values.length)\n    throw new AbiEncodingLengthMismatchError({\n      expectedLength: params.length,\n      givenLength: values.length\n    });\n  const preparedParams = prepareParams({\n    params,\n    values\n  });\n  const data = encodeParams(preparedParams);\n  if (data.length === 0)\n    return \"0x\";\n  return data;\n}\nfunction prepareParams({ params, values }) {\n  const preparedParams = [];\n  for (let i = 0; i < params.length; i++) {\n    preparedParams.push(prepareParam({ param: params[i], value: values[i] }));\n  }\n  return preparedParams;\n}\nfunction prepareParam({ param, value }) {\n  const arrayComponents = getArrayComponents(param.type);\n  if (arrayComponents) {\n    const [length, type] = arrayComponents;\n    return encodeArray(value, { length, param: { ...param, type } });\n  }\n  if (param.type === \"tuple\") {\n    return encodeTuple(value, {\n      param\n    });\n  }\n  if (param.type === \"address\") {\n    return encodeAddress(value);\n  }\n  if (param.type === \"bool\") {\n    return encodeBool(value);\n  }\n  if (param.type.startsWith(\"uint\") || param.type.startsWith(\"int\")) {\n    const signed = param.type.startsWith(\"int\");\n    return encodeNumber(value, { signed });\n  }\n  if (param.type.startsWith(\"bytes\")) {\n    return encodeBytes(value, { param });\n  }\n  if (param.type === \"string\") {\n    return encodeString(value);\n  }\n  throw new InvalidAbiEncodingTypeError(param.type, {\n    docsPath: \"/docs/contract/encodeAbiParameters\"\n  });\n}\nfunction encodeParams(preparedParams) {\n  let staticSize = 0;\n  for (let i = 0; i < preparedParams.length; i++) {\n    const { dynamic, encoded } = preparedParams[i];\n    if (dynamic)\n      staticSize += 32;\n    else\n      staticSize += size(encoded);\n  }\n  const staticParams = [];\n  const dynamicParams = [];\n  let dynamicSize = 0;\n  for (let i = 0; i < preparedParams.length; i++) {\n    const { dynamic, encoded } = preparedParams[i];\n    if (dynamic) {\n      staticParams.push(numberToHex(staticSize + dynamicSize, { size: 32 }));\n      dynamicParams.push(encoded);\n      dynamicSize += size(encoded);\n    } else {\n      staticParams.push(encoded);\n    }\n  }\n  return concat([...staticParams, ...dynamicParams]);\n}\nfunction encodeAddress(value) {\n  if (!isAddress(value))\n    throw new InvalidAddressError({ address: value });\n  return { dynamic: false, encoded: padHex(value.toLowerCase()) };\n}\nfunction encodeArray(value, { length, param }) {\n  const dynamic = length === null;\n  if (!Array.isArray(value))\n    throw new InvalidArrayError(value);\n  if (!dynamic && value.length !== length)\n    throw new AbiEncodingArrayLengthMismatchError({\n      expectedLength: length,\n      givenLength: value.length,\n      type: `${param.type}[${length}]`\n    });\n  let dynamicChild = false;\n  const preparedParams = [];\n  for (let i = 0; i < value.length; i++) {\n    const preparedParam = prepareParam({ param, value: value[i] });\n    if (preparedParam.dynamic)\n      dynamicChild = true;\n    preparedParams.push(preparedParam);\n  }\n  if (dynamic || dynamicChild) {\n    const data = encodeParams(preparedParams);\n    if (dynamic) {\n      const length2 = numberToHex(preparedParams.length, { size: 32 });\n      return {\n        dynamic: true,\n        encoded: preparedParams.length > 0 ? concat([length2, data]) : length2\n      };\n    }\n    if (dynamicChild)\n      return { dynamic: true, encoded: data };\n  }\n  return {\n    dynamic: false,\n    encoded: concat(preparedParams.map(({ encoded }) => encoded))\n  };\n}\nfunction encodeBytes(value, { param }) {\n  const [, paramSize] = param.type.split(\"bytes\");\n  const bytesSize = size(value);\n  if (!paramSize) {\n    let value_ = value;\n    if (bytesSize % 32 !== 0)\n      value_ = padHex(value_, {\n        dir: \"right\",\n        size: Math.ceil((value.length - 2) / 2 / 32) * 32\n      });\n    return {\n      dynamic: true,\n      encoded: concat([padHex(numberToHex(bytesSize, { size: 32 })), value_])\n    };\n  }\n  if (bytesSize !== Number.parseInt(paramSize))\n    throw new AbiEncodingBytesSizeMismatchError({\n      expectedSize: Number.parseInt(paramSize),\n      value\n    });\n  return { dynamic: false, encoded: padHex(value, { dir: \"right\" }) };\n}\nfunction encodeBool(value) {\n  if (typeof value !== \"boolean\")\n    throw new BaseError2(`Invalid boolean value: \"${value}\" (type: ${typeof value}). Expected: \\`true\\` or \\`false\\`.`);\n  return { dynamic: false, encoded: padHex(boolToHex(value)) };\n}\nfunction encodeNumber(value, { signed }) {\n  return {\n    dynamic: false,\n    encoded: numberToHex(value, {\n      size: 32,\n      signed\n    })\n  };\n}\nfunction encodeString(value) {\n  const hexValue = stringToHex(value);\n  const partsLength = Math.ceil(size(hexValue) / 32);\n  const parts = [];\n  for (let i = 0; i < partsLength; i++) {\n    parts.push(padHex(slice(hexValue, i * 32, (i + 1) * 32), {\n      dir: \"right\"\n    }));\n  }\n  return {\n    dynamic: true,\n    encoded: concat([\n      padHex(numberToHex(size(hexValue), { size: 32 })),\n      ...parts\n    ])\n  };\n}\nfunction encodeTuple(value, { param }) {\n  let dynamic = false;\n  const preparedParams = [];\n  for (let i = 0; i < param.components.length; i++) {\n    const param_ = param.components[i];\n    const index = Array.isArray(value) ? i : param_.name;\n    const preparedParam = prepareParam({\n      param: param_,\n      value: value[index]\n    });\n    preparedParams.push(preparedParam);\n    if (preparedParam.dynamic)\n      dynamic = true;\n  }\n  return {\n    dynamic,\n    encoded: dynamic ? encodeParams(preparedParams) : concat(preparedParams.map(({ encoded }) => encoded))\n  };\n}\nfunction getArrayComponents(type) {\n  const matches = type.match(/^(.*)\\[(\\d+)?\\]$/);\n  return matches ? (\n    // Return `null` if the array is dynamic.\n    [matches[2] ? Number(matches[2]) : null, matches[1]]\n  ) : void 0;\n}\n\n// node_modules/viem/_esm/utils/abi/decodeAbiParameters.js\nfunction decodeAbiParameters(params, data) {\n  const bytes = typeof data === \"string\" ? hexToBytes(data) : data;\n  const cursor = createCursor(bytes);\n  if (size(bytes) === 0 && params.length > 0)\n    throw new AbiDecodingZeroDataError();\n  if (size(data) && size(data) < 32)\n    throw new AbiDecodingDataSizeTooSmallError({\n      data: typeof data === \"string\" ? data : bytesToHex(data),\n      params,\n      size: size(data)\n    });\n  let consumed = 0;\n  const values = [];\n  for (let i = 0; i < params.length; ++i) {\n    const param = params[i];\n    cursor.setPosition(consumed);\n    const [data2, consumed_] = decodeParameter(cursor, param, {\n      staticPosition: 0\n    });\n    consumed += consumed_;\n    values.push(data2);\n  }\n  return values;\n}\nfunction decodeParameter(cursor, param, { staticPosition }) {\n  const arrayComponents = getArrayComponents(param.type);\n  if (arrayComponents) {\n    const [length, type] = arrayComponents;\n    return decodeArray(cursor, { ...param, type }, { length, staticPosition });\n  }\n  if (param.type === \"tuple\")\n    return decodeTuple(cursor, param, { staticPosition });\n  if (param.type === \"address\")\n    return decodeAddress(cursor);\n  if (param.type === \"bool\")\n    return decodeBool(cursor);\n  if (param.type.startsWith(\"bytes\"))\n    return decodeBytes(cursor, param, { staticPosition });\n  if (param.type.startsWith(\"uint\") || param.type.startsWith(\"int\"))\n    return decodeNumber(cursor, param);\n  if (param.type === \"string\")\n    return decodeString(cursor, { staticPosition });\n  throw new InvalidAbiDecodingTypeError(param.type, {\n    docsPath: \"/docs/contract/decodeAbiParameters\"\n  });\n}\nvar sizeOfLength = 32;\nvar sizeOfOffset = 32;\nfunction decodeAddress(cursor) {\n  const value = cursor.readBytes(32);\n  return [checksumAddress(bytesToHex(sliceBytes(value, -20))), 32];\n}\nfunction decodeArray(cursor, param, { length, staticPosition }) {\n  if (!length) {\n    const offset = bytesToNumber(cursor.readBytes(sizeOfOffset));\n    const start = staticPosition + offset;\n    const startOfData = start + sizeOfLength;\n    cursor.setPosition(start);\n    const length2 = bytesToNumber(cursor.readBytes(sizeOfLength));\n    const dynamicChild = hasDynamicChild(param);\n    let consumed2 = 0;\n    const value2 = [];\n    for (let i = 0; i < length2; ++i) {\n      cursor.setPosition(startOfData + (dynamicChild ? i * 32 : consumed2));\n      const [data, consumed_] = decodeParameter(cursor, param, {\n        staticPosition: startOfData\n      });\n      consumed2 += consumed_;\n      value2.push(data);\n    }\n    cursor.setPosition(staticPosition + 32);\n    return [value2, 32];\n  }\n  if (hasDynamicChild(param)) {\n    const offset = bytesToNumber(cursor.readBytes(sizeOfOffset));\n    const start = staticPosition + offset;\n    const value2 = [];\n    for (let i = 0; i < length; ++i) {\n      cursor.setPosition(start + i * 32);\n      const [data] = decodeParameter(cursor, param, {\n        staticPosition: start\n      });\n      value2.push(data);\n    }\n    cursor.setPosition(staticPosition + 32);\n    return [value2, 32];\n  }\n  let consumed = 0;\n  const value = [];\n  for (let i = 0; i < length; ++i) {\n    const [data, consumed_] = decodeParameter(cursor, param, {\n      staticPosition: staticPosition + consumed\n    });\n    consumed += consumed_;\n    value.push(data);\n  }\n  return [value, consumed];\n}\nfunction decodeBool(cursor) {\n  return [bytesToBool(cursor.readBytes(32), { size: 32 }), 32];\n}\nfunction decodeBytes(cursor, param, { staticPosition }) {\n  const [_, size2] = param.type.split(\"bytes\");\n  if (!size2) {\n    const offset = bytesToNumber(cursor.readBytes(32));\n    cursor.setPosition(staticPosition + offset);\n    const length = bytesToNumber(cursor.readBytes(32));\n    if (length === 0) {\n      cursor.setPosition(staticPosition + 32);\n      return [\"0x\", 32];\n    }\n    const data = cursor.readBytes(length);\n    cursor.setPosition(staticPosition + 32);\n    return [bytesToHex(data), 32];\n  }\n  const value = bytesToHex(cursor.readBytes(Number.parseInt(size2), 32));\n  return [value, 32];\n}\nfunction decodeNumber(cursor, param) {\n  const signed = param.type.startsWith(\"int\");\n  const size2 = Number.parseInt(param.type.split(\"int\")[1] || \"256\");\n  const value = cursor.readBytes(32);\n  return [\n    size2 > 48 ? bytesToBigInt(value, { signed }) : bytesToNumber(value, { signed }),\n    32\n  ];\n}\nfunction decodeTuple(cursor, param, { staticPosition }) {\n  const hasUnnamedChild = param.components.length === 0 || param.components.some(({ name }) => !name);\n  const value = hasUnnamedChild ? [] : {};\n  let consumed = 0;\n  if (hasDynamicChild(param)) {\n    const offset = bytesToNumber(cursor.readBytes(sizeOfOffset));\n    const start = staticPosition + offset;\n    for (let i = 0; i < param.components.length; ++i) {\n      const component = param.components[i];\n      cursor.setPosition(start + consumed);\n      const [data, consumed_] = decodeParameter(cursor, component, {\n        staticPosition: start\n      });\n      consumed += consumed_;\n      value[hasUnnamedChild ? i : component == null ? void 0 : component.name] = data;\n    }\n    cursor.setPosition(staticPosition + 32);\n    return [value, 32];\n  }\n  for (let i = 0; i < param.components.length; ++i) {\n    const component = param.components[i];\n    const [data, consumed_] = decodeParameter(cursor, component, {\n      staticPosition\n    });\n    value[hasUnnamedChild ? i : component == null ? void 0 : component.name] = data;\n    consumed += consumed_;\n  }\n  return [value, consumed];\n}\nfunction decodeString(cursor, { staticPosition }) {\n  const offset = bytesToNumber(cursor.readBytes(32));\n  const start = staticPosition + offset;\n  cursor.setPosition(start);\n  const length = bytesToNumber(cursor.readBytes(32));\n  if (length === 0) {\n    cursor.setPosition(staticPosition + 32);\n    return [\"\", 32];\n  }\n  const data = cursor.readBytes(length, 32);\n  const value = bytesToString(trim(data));\n  cursor.setPosition(staticPosition + 32);\n  return [value, 32];\n}\nfunction hasDynamicChild(param) {\n  var _a;\n  const { type } = param;\n  if (type === \"string\")\n    return true;\n  if (type === \"bytes\")\n    return true;\n  if (type.endsWith(\"[]\"))\n    return true;\n  if (type === \"tuple\")\n    return (_a = param.components) == null ? void 0 : _a.some(hasDynamicChild);\n  const arrayComponents = getArrayComponents(param.type);\n  if (arrayComponents && hasDynamicChild({ ...param, type: arrayComponents[1] }))\n    return true;\n  return false;\n}\n\n// node_modules/viem/_esm/utils/abi/decodeErrorResult.js\nfunction decodeErrorResult(parameters) {\n  const { abi, data } = parameters;\n  const signature = slice(data, 0, 4);\n  if (signature === \"0x\")\n    throw new AbiDecodingZeroDataError();\n  const abi_ = [...abi || [], solidityError, solidityPanic];\n  const abiItem = abi_.find((x) => x.type === \"error\" && signature === toFunctionSelector(formatAbiItem2(x)));\n  if (!abiItem)\n    throw new AbiErrorSignatureNotFoundError(signature, {\n      docsPath: \"/docs/contract/decodeErrorResult\"\n    });\n  return {\n    abiItem,\n    args: \"inputs\" in abiItem && abiItem.inputs && abiItem.inputs.length > 0 ? decodeAbiParameters(abiItem.inputs, slice(data, 4)) : void 0,\n    errorName: abiItem.name\n  };\n}\n\n// node_modules/viem/_esm/utils/stringify.js\nvar stringify = (value, replacer, space) => JSON.stringify(value, (key, value_) => {\n  const value2 = typeof value_ === \"bigint\" ? value_.toString() : value_;\n  return typeof replacer === \"function\" ? replacer(key, value2) : value2;\n}, space);\n\n// node_modules/viem/_esm/utils/hash/toEventSelector.js\nvar toEventSelector = toSignatureHash;\n\n// node_modules/viem/_esm/utils/abi/getAbiItem.js\nfunction getAbiItem(parameters) {\n  const { abi, args = [], name } = parameters;\n  const isSelector = isHex(name, { strict: false });\n  const abiItems = abi.filter((abiItem) => {\n    if (isSelector) {\n      if (abiItem.type === \"function\")\n        return toFunctionSelector(abiItem) === name;\n      if (abiItem.type === \"event\")\n        return toEventSelector(abiItem) === name;\n      return false;\n    }\n    return \"name\" in abiItem && abiItem.name === name;\n  });\n  if (abiItems.length === 0)\n    return void 0;\n  if (abiItems.length === 1)\n    return abiItems[0];\n  let matchedAbiItem = void 0;\n  for (const abiItem of abiItems) {\n    if (!(\"inputs\" in abiItem))\n      continue;\n    if (!args || args.length === 0) {\n      if (!abiItem.inputs || abiItem.inputs.length === 0)\n        return abiItem;\n      continue;\n    }\n    if (!abiItem.inputs)\n      continue;\n    if (abiItem.inputs.length === 0)\n      continue;\n    if (abiItem.inputs.length !== args.length)\n      continue;\n    const matched = args.every((arg, index) => {\n      const abiParameter = \"inputs\" in abiItem && abiItem.inputs[index];\n      if (!abiParameter)\n        return false;\n      return isArgOfType(arg, abiParameter);\n    });\n    if (matched) {\n      if (matchedAbiItem && \"inputs\" in matchedAbiItem && matchedAbiItem.inputs) {\n        const ambiguousTypes = getAmbiguousTypes(abiItem.inputs, matchedAbiItem.inputs, args);\n        if (ambiguousTypes)\n          throw new AbiItemAmbiguityError({\n            abiItem,\n            type: ambiguousTypes[0]\n          }, {\n            abiItem: matchedAbiItem,\n            type: ambiguousTypes[1]\n          });\n      }\n      matchedAbiItem = abiItem;\n    }\n  }\n  if (matchedAbiItem)\n    return matchedAbiItem;\n  return abiItems[0];\n}\nfunction isArgOfType(arg, abiParameter) {\n  const argType = typeof arg;\n  const abiParameterType = abiParameter.type;\n  switch (abiParameterType) {\n    case \"address\":\n      return isAddress(arg, { strict: false });\n    case \"bool\":\n      return argType === \"boolean\";\n    case \"function\":\n      return argType === \"string\";\n    case \"string\":\n      return argType === \"string\";\n    default: {\n      if (abiParameterType === \"tuple\" && \"components\" in abiParameter)\n        return Object.values(abiParameter.components).every((component, index) => {\n          return isArgOfType(Object.values(arg)[index], component);\n        });\n      if (/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(abiParameterType))\n        return argType === \"number\" || argType === \"bigint\";\n      if (/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(abiParameterType))\n        return argType === \"string\" || arg instanceof Uint8Array;\n      if (/[a-z]+[1-9]{0,3}(\\[[0-9]{0,}\\])+$/.test(abiParameterType)) {\n        return Array.isArray(arg) && arg.every((x) => isArgOfType(x, {\n          ...abiParameter,\n          // Pop off `[]` or `[M]` from end of type\n          type: abiParameterType.replace(/(\\[[0-9]{0,}\\])$/, \"\")\n        }));\n      }\n      return false;\n    }\n  }\n}\nfunction getAmbiguousTypes(sourceParameters, targetParameters, args) {\n  for (const parameterIndex in sourceParameters) {\n    const sourceParameter = sourceParameters[parameterIndex];\n    const targetParameter = targetParameters[parameterIndex];\n    if (sourceParameter.type === \"tuple\" && targetParameter.type === \"tuple\" && \"components\" in sourceParameter && \"components\" in targetParameter)\n      return getAmbiguousTypes(sourceParameter.components, targetParameter.components, args[parameterIndex]);\n    const types = [sourceParameter.type, targetParameter.type];\n    const ambiguous = (() => {\n      if (types.includes(\"address\") && types.includes(\"bytes20\"))\n        return true;\n      if (types.includes(\"address\") && types.includes(\"string\"))\n        return isAddress(args[parameterIndex], { strict: false });\n      if (types.includes(\"address\") && types.includes(\"bytes\"))\n        return isAddress(args[parameterIndex], { strict: false });\n      return false;\n    })();\n    if (ambiguous)\n      return types;\n  }\n  return;\n}\n\n// node_modules/viem/_esm/constants/unit.js\nvar etherUnits = {\n  gwei: 9,\n  wei: 18\n};\nvar gweiUnits = {\n  ether: -9,\n  wei: 9\n};\n\n// node_modules/viem/_esm/utils/unit/formatUnits.js\nfunction formatUnits(value, decimals) {\n  let display = value.toString();\n  const negative = display.startsWith(\"-\");\n  if (negative)\n    display = display.slice(1);\n  display = display.padStart(decimals, \"0\");\n  let [integer, fraction] = [\n    display.slice(0, display.length - decimals),\n    display.slice(display.length - decimals)\n  ];\n  fraction = fraction.replace(/(0+)$/, \"\");\n  return `${negative ? \"-\" : \"\"}${integer || \"0\"}${fraction ? `.${fraction}` : \"\"}`;\n}\n\n// node_modules/viem/_esm/utils/unit/formatEther.js\nfunction formatEther(wei, unit = \"wei\") {\n  return formatUnits(wei, etherUnits[unit]);\n}\n\n// node_modules/viem/_esm/utils/unit/formatGwei.js\nfunction formatGwei(wei, unit = \"wei\") {\n  return formatUnits(wei, gweiUnits[unit]);\n}\n\n// node_modules/viem/_esm/errors/stateOverride.js\nvar AccountStateConflictError = class extends BaseError2 {\n  constructor({ address }) {\n    super(`State for account \"${address}\" is set multiple times.`, {\n      name: \"AccountStateConflictError\"\n    });\n  }\n};\nvar StateAssignmentConflictError = class extends BaseError2 {\n  constructor() {\n    super(\"state and stateDiff are set on the same account.\", {\n      name: \"StateAssignmentConflictError\"\n    });\n  }\n};\nfunction prettyStateMapping(stateMapping) {\n  return stateMapping.reduce((pretty, { slot, value }) => {\n    return `${pretty}        ${slot}: ${value}\n`;\n  }, \"\");\n}\nfunction prettyStateOverride(stateOverride) {\n  return stateOverride.reduce((pretty, { address, ...state }) => {\n    let val = `${pretty}    ${address}:\n`;\n    if (state.nonce)\n      val += `      nonce: ${state.nonce}\n`;\n    if (state.balance)\n      val += `      balance: ${state.balance}\n`;\n    if (state.code)\n      val += `      code: ${state.code}\n`;\n    if (state.state) {\n      val += \"      state:\\n\";\n      val += prettyStateMapping(state.state);\n    }\n    if (state.stateDiff) {\n      val += \"      stateDiff:\\n\";\n      val += prettyStateMapping(state.stateDiff);\n    }\n    return val;\n  }, \"  State Override:\\n\").slice(0, -1);\n}\n\n// node_modules/viem/_esm/errors/transaction.js\nfunction prettyPrint(args) {\n  const entries = Object.entries(args).map(([key, value]) => {\n    if (value === void 0 || value === false)\n      return null;\n    return [key, value];\n  }).filter(Boolean);\n  const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0);\n  return entries.map(([key, value]) => `  ${`${key}:`.padEnd(maxLength + 1)}  ${value}`).join(\"\\n\");\n}\nvar FeeConflictError = class extends BaseError2 {\n  constructor() {\n    super([\n      \"Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.\",\n      \"Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others.\"\n    ].join(\"\\n\"), { name: \"FeeConflictError\" });\n  }\n};\nvar InvalidLegacyVError = class extends BaseError2 {\n  constructor({ v }) {\n    super(`Invalid \\`v\\` value \"${v}\". Expected 27 or 28.`, {\n      name: \"InvalidLegacyVError\"\n    });\n  }\n};\nvar InvalidSerializableTransactionError = class extends BaseError2 {\n  constructor({ transaction }) {\n    super(\"Cannot infer a transaction type from provided transaction.\", {\n      metaMessages: [\n        \"Provided Transaction:\",\n        \"{\",\n        prettyPrint(transaction),\n        \"}\",\n        \"\",\n        \"To infer the type, either provide:\",\n        \"- a `type` to the Transaction, or\",\n        \"- an EIP-1559 Transaction with `maxFeePerGas`, or\",\n        \"- an EIP-2930 Transaction with `gasPrice` & `accessList`, or\",\n        \"- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or\",\n        \"- an EIP-7702 Transaction with `authorizationList`, or\",\n        \"- a Legacy Transaction with `gasPrice`\"\n      ],\n      name: \"InvalidSerializableTransactionError\"\n    });\n  }\n};\nvar InvalidStorageKeySizeError = class extends BaseError2 {\n  constructor({ storageKey }) {\n    super(`Size for storage key \"${storageKey}\" is invalid. Expected 32 bytes. Got ${Math.floor((storageKey.length - 2) / 2)} bytes.`, { name: \"InvalidStorageKeySizeError\" });\n  }\n};\n\n// node_modules/viem/_esm/errors/utils.js\nvar getUrl = (url) => url;\n\n// node_modules/viem/_esm/errors/contract.js\nvar CallExecutionError = class extends BaseError2 {\n  constructor(cause, { account: account_, docsPath: docsPath4, chain, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, stateOverride }) {\n    var _a;\n    const account = account_ ? parseAccount(account_) : void 0;\n    let prettyArgs = prettyPrint({\n      from: account == null ? void 0 : account.address,\n      to,\n      value: typeof value !== \"undefined\" && `${formatEther(value)} ${((_a = chain == null ? void 0 : chain.nativeCurrency) == null ? void 0 : _a.symbol) || \"ETH\"}`,\n      data,\n      gas,\n      gasPrice: typeof gasPrice !== \"undefined\" && `${formatGwei(gasPrice)} gwei`,\n      maxFeePerGas: typeof maxFeePerGas !== \"undefined\" && `${formatGwei(maxFeePerGas)} gwei`,\n      maxPriorityFeePerGas: typeof maxPriorityFeePerGas !== \"undefined\" && `${formatGwei(maxPriorityFeePerGas)} gwei`,\n      nonce\n    });\n    if (stateOverride) {\n      prettyArgs += `\n${prettyStateOverride(stateOverride)}`;\n    }\n    super(cause.shortMessage, {\n      cause,\n      docsPath: docsPath4,\n      metaMessages: [\n        ...cause.metaMessages ? [...cause.metaMessages, \" \"] : [],\n        \"Raw Call Arguments:\",\n        prettyArgs\n      ].filter(Boolean),\n      name: \"CallExecutionError\"\n    });\n    Object.defineProperty(this, \"cause\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.cause = cause;\n  }\n};\nvar CounterfactualDeploymentFailedError = class extends BaseError2 {\n  constructor({ factory }) {\n    super(`Deployment for counterfactual contract call failed${factory ? ` for factory \"${factory}\".` : \"\"}`, {\n      metaMessages: [\n        \"Please ensure:\",\n        \"- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).\",\n        \"- The `factoryData` is a valid encoded function call for contract deployment function on the factory.\"\n      ],\n      name: \"CounterfactualDeploymentFailedError\"\n    });\n  }\n};\nvar RawContractError = class extends BaseError2 {\n  constructor({ data, message }) {\n    super(message || \"\", { name: \"RawContractError\" });\n    Object.defineProperty(this, \"code\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: 3\n    });\n    Object.defineProperty(this, \"data\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.data = data;\n  }\n};\n\n// node_modules/viem/_esm/utils/abi/decodeFunctionResult.js\nvar docsPath = \"/docs/contract/decodeFunctionResult\";\nfunction decodeFunctionResult(parameters) {\n  const { abi, args, functionName, data } = parameters;\n  let abiItem = abi[0];\n  if (functionName) {\n    const item = getAbiItem({ abi, args, name: functionName });\n    if (!item)\n      throw new AbiFunctionNotFoundError(functionName, { docsPath });\n    abiItem = item;\n  }\n  if (abiItem.type !== \"function\")\n    throw new AbiFunctionNotFoundError(void 0, { docsPath });\n  if (!abiItem.outputs)\n    throw new AbiFunctionOutputsNotFoundError(abiItem.name, { docsPath });\n  const values = decodeAbiParameters(abiItem.outputs, data);\n  if (values && values.length > 1)\n    return values;\n  if (values && values.length === 1)\n    return values[0];\n  return void 0;\n}\n\n// node_modules/viem/_esm/utils/abi/encodeDeployData.js\nvar docsPath2 = \"/docs/contract/encodeDeployData\";\nfunction encodeDeployData(parameters) {\n  const { abi, args, bytecode } = parameters;\n  if (!args || args.length === 0)\n    return bytecode;\n  const description = abi.find((x) => \"type\" in x && x.type === \"constructor\");\n  if (!description)\n    throw new AbiConstructorNotFoundError({ docsPath: docsPath2 });\n  if (!(\"inputs\" in description))\n    throw new AbiConstructorParamsNotFoundError({ docsPath: docsPath2 });\n  if (!description.inputs || description.inputs.length === 0)\n    throw new AbiConstructorParamsNotFoundError({ docsPath: docsPath2 });\n  const data = encodeAbiParameters(description.inputs, args);\n  return concatHex([bytecode, data]);\n}\n\n// node_modules/viem/_esm/utils/abi/prepareEncodeFunctionData.js\nvar docsPath3 = \"/docs/contract/encodeFunctionData\";\nfunction prepareEncodeFunctionData(parameters) {\n  const { abi, args, functionName } = parameters;\n  let abiItem = abi[0];\n  if (functionName) {\n    const item = getAbiItem({\n      abi,\n      args,\n      name: functionName\n    });\n    if (!item)\n      throw new AbiFunctionNotFoundError(functionName, { docsPath: docsPath3 });\n    abiItem = item;\n  }\n  if (abiItem.type !== \"function\")\n    throw new AbiFunctionNotFoundError(void 0, { docsPath: docsPath3 });\n  return {\n    abi: [abiItem],\n    functionName: toFunctionSelector(formatAbiItem2(abiItem))\n  };\n}\n\n// node_modules/viem/_esm/utils/abi/encodeFunctionData.js\nfunction encodeFunctionData(parameters) {\n  const { args } = parameters;\n  const { abi, functionName } = (() => {\n    var _a;\n    if (parameters.abi.length === 1 && ((_a = parameters.functionName) == null ? void 0 : _a.startsWith(\"0x\")))\n      return parameters;\n    return prepareEncodeFunctionData(parameters);\n  })();\n  const abiItem = abi[0];\n  const signature = functionName;\n  const data = \"inputs\" in abiItem && abiItem.inputs ? encodeAbiParameters(abiItem.inputs, args ?? []) : void 0;\n  return concatHex([signature, data ?? \"0x\"]);\n}\n\n// node_modules/viem/_esm/utils/chain/getChainContractAddress.js\nfunction getChainContractAddress({ blockNumber, chain, contract: name }) {\n  var _a;\n  const contract = (_a = chain == null ? void 0 : chain.contracts) == null ? void 0 : _a[name];\n  if (!contract)\n    throw new ChainDoesNotSupportContract({\n      chain,\n      contract: { name }\n    });\n  if (blockNumber && contract.blockCreated && contract.blockCreated > blockNumber)\n    throw new ChainDoesNotSupportContract({\n      blockNumber,\n      chain,\n      contract: {\n        name,\n        blockCreated: contract.blockCreated\n      }\n    });\n  return contract.address;\n}\n\n// node_modules/viem/_esm/errors/node.js\nvar ExecutionRevertedError = class extends BaseError2 {\n  constructor({ cause, message } = {}) {\n    var _a;\n    const reason = (_a = message == null ? void 0 : message.replace(\"execution reverted: \", \"\")) == null ? void 0 : _a.replace(\"execution reverted\", \"\");\n    super(`Execution reverted ${reason ? `with reason: ${reason}` : \"for an unknown reason\"}.`, {\n      cause,\n      name: \"ExecutionRevertedError\"\n    });\n  }\n};\nObject.defineProperty(ExecutionRevertedError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: 3\n});\nObject.defineProperty(ExecutionRevertedError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /execution reverted/\n});\nvar FeeCapTooHighError = class extends BaseError2 {\n  constructor({ cause, maxFeePerGas } = {}) {\n    super(`The fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : \"\"}) cannot be higher than the maximum allowed value (2^256-1).`, {\n      cause,\n      name: \"FeeCapTooHighError\"\n    });\n  }\n};\nObject.defineProperty(FeeCapTooHighError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /max fee per gas higher than 2\\^256-1|fee cap higher than 2\\^256-1/\n});\nvar FeeCapTooLowError = class extends BaseError2 {\n  constructor({ cause, maxFeePerGas } = {}) {\n    super(`The fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)}` : \"\"} gwei) cannot be lower than the block base fee.`, {\n      cause,\n      name: \"FeeCapTooLowError\"\n    });\n  }\n};\nObject.defineProperty(FeeCapTooLowError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/\n});\nvar NonceTooHighError = class extends BaseError2 {\n  constructor({ cause, nonce } = {}) {\n    super(`Nonce provided for the transaction ${nonce ? `(${nonce}) ` : \"\"}is higher than the next one expected.`, { cause, name: \"NonceTooHighError\" });\n  }\n};\nObject.defineProperty(NonceTooHighError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /nonce too high/\n});\nvar NonceTooLowError = class extends BaseError2 {\n  constructor({ cause, nonce } = {}) {\n    super([\n      `Nonce provided for the transaction ${nonce ? `(${nonce}) ` : \"\"}is lower than the current nonce of the account.`,\n      \"Try increasing the nonce or find the latest nonce with `getTransactionCount`.\"\n    ].join(\"\\n\"), { cause, name: \"NonceTooLowError\" });\n  }\n};\nObject.defineProperty(NonceTooLowError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /nonce too low|transaction already imported|already known/\n});\nvar NonceMaxValueError = class extends BaseError2 {\n  constructor({ cause, nonce } = {}) {\n    super(`Nonce provided for the transaction ${nonce ? `(${nonce}) ` : \"\"}exceeds the maximum allowed nonce.`, { cause, name: \"NonceMaxValueError\" });\n  }\n};\nObject.defineProperty(NonceMaxValueError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /nonce has max value/\n});\nvar InsufficientFundsError = class extends BaseError2 {\n  constructor({ cause } = {}) {\n    super([\n      \"The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.\"\n    ].join(\"\\n\"), {\n      cause,\n      metaMessages: [\n        \"This error could arise when the account does not have enough funds to:\",\n        \" - pay for the total gas fee,\",\n        \" - pay for the value to send.\",\n        \" \",\n        \"The cost of the transaction is calculated as `gas * gas fee + value`, where:\",\n        \" - `gas` is the amount of gas needed for transaction to execute,\",\n        \" - `gas fee` is the gas fee,\",\n        \" - `value` is the amount of ether to send to the recipient.\"\n      ],\n      name: \"InsufficientFundsError\"\n    });\n  }\n};\nObject.defineProperty(InsufficientFundsError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /insufficient funds|exceeds transaction sender account balance/\n});\nvar IntrinsicGasTooHighError = class extends BaseError2 {\n  constructor({ cause, gas } = {}) {\n    super(`The amount of gas ${gas ? `(${gas}) ` : \"\"}provided for the transaction exceeds the limit allowed for the block.`, {\n      cause,\n      name: \"IntrinsicGasTooHighError\"\n    });\n  }\n};\nObject.defineProperty(IntrinsicGasTooHighError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /intrinsic gas too high|gas limit reached/\n});\nvar IntrinsicGasTooLowError = class extends BaseError2 {\n  constructor({ cause, gas } = {}) {\n    super(`The amount of gas ${gas ? `(${gas}) ` : \"\"}provided for the transaction is too low.`, {\n      cause,\n      name: \"IntrinsicGasTooLowError\"\n    });\n  }\n};\nObject.defineProperty(IntrinsicGasTooLowError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /intrinsic gas too low/\n});\nvar TransactionTypeNotSupportedError = class extends BaseError2 {\n  constructor({ cause }) {\n    super(\"The transaction type is not supported for this chain.\", {\n      cause,\n      name: \"TransactionTypeNotSupportedError\"\n    });\n  }\n};\nObject.defineProperty(TransactionTypeNotSupportedError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /transaction type not valid/\n});\nvar TipAboveFeeCapError = class extends BaseError2 {\n  constructor({ cause, maxPriorityFeePerGas, maxFeePerGas } = {}) {\n    super([\n      `The provided tip (\\`maxPriorityFeePerGas\\`${maxPriorityFeePerGas ? ` = ${formatGwei(maxPriorityFeePerGas)} gwei` : \"\"}) cannot be higher than the fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : \"\"}).`\n    ].join(\"\\n\"), {\n      cause,\n      name: \"TipAboveFeeCapError\"\n    });\n  }\n};\nObject.defineProperty(TipAboveFeeCapError, \"nodeMessage\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: /max priority fee per gas higher than max fee per gas|tip higher than fee cap/\n});\nvar UnknownNodeError = class extends BaseError2 {\n  constructor({ cause }) {\n    super(`An error occurred while executing: ${cause == null ? void 0 : cause.shortMessage}`, {\n      cause,\n      name: \"UnknownNodeError\"\n    });\n  }\n};\n\n// node_modules/viem/_esm/errors/request.js\nvar HttpRequestError = class extends BaseError2 {\n  constructor({ body, cause, details, headers, status, url }) {\n    super(\"HTTP request failed.\", {\n      cause,\n      details,\n      metaMessages: [\n        status && `Status: ${status}`,\n        `URL: ${getUrl(url)}`,\n        body && `Request body: ${stringify(body)}`\n      ].filter(Boolean),\n      name: \"HttpRequestError\"\n    });\n    Object.defineProperty(this, \"body\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"headers\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"status\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"url\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.body = body;\n    this.headers = headers;\n    this.status = status;\n    this.url = url;\n  }\n};\nvar RpcRequestError = class extends BaseError2 {\n  constructor({ body, error, url }) {\n    super(\"RPC Request failed.\", {\n      cause: error,\n      details: error.message,\n      metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n      name: \"RpcRequestError\"\n    });\n    Object.defineProperty(this, \"code\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.code = error.code;\n  }\n};\n\n// node_modules/viem/_esm/errors/rpc.js\nvar unknownErrorCode = -1;\nvar RpcError = class extends BaseError2 {\n  constructor(cause, { code, docsPath: docsPath4, metaMessages, name, shortMessage }) {\n    super(shortMessage, {\n      cause,\n      docsPath: docsPath4,\n      metaMessages: metaMessages || (cause == null ? void 0 : cause.metaMessages),\n      name: name || \"RpcError\"\n    });\n    Object.defineProperty(this, \"code\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.name = name || cause.name;\n    this.code = cause instanceof RpcRequestError ? cause.code : code ?? unknownErrorCode;\n  }\n};\nvar ProviderRpcError = class extends RpcError {\n  constructor(cause, options) {\n    super(cause, options);\n    Object.defineProperty(this, \"data\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.data = options.data;\n  }\n};\nvar ParseRpcError = class _ParseRpcError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _ParseRpcError.code,\n      name: \"ParseRpcError\",\n      shortMessage: \"Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.\"\n    });\n  }\n};\nObject.defineProperty(ParseRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32700\n});\nvar InvalidRequestRpcError = class _InvalidRequestRpcError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _InvalidRequestRpcError.code,\n      name: \"InvalidRequestRpcError\",\n      shortMessage: \"JSON is not a valid request object.\"\n    });\n  }\n};\nObject.defineProperty(InvalidRequestRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32600\n});\nvar MethodNotFoundRpcError = class _MethodNotFoundRpcError extends RpcError {\n  constructor(cause, { method } = {}) {\n    super(cause, {\n      code: _MethodNotFoundRpcError.code,\n      name: \"MethodNotFoundRpcError\",\n      shortMessage: `The method${method ? ` \"${method}\"` : \"\"} does not exist / is not available.`\n    });\n  }\n};\nObject.defineProperty(MethodNotFoundRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32601\n});\nvar InvalidParamsRpcError = class _InvalidParamsRpcError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _InvalidParamsRpcError.code,\n      name: \"InvalidParamsRpcError\",\n      shortMessage: [\n        \"Invalid parameters were provided to the RPC method.\",\n        \"Double check you have provided the correct parameters.\"\n      ].join(\"\\n\")\n    });\n  }\n};\nObject.defineProperty(InvalidParamsRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32602\n});\nvar InternalRpcError = class _InternalRpcError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _InternalRpcError.code,\n      name: \"InternalRpcError\",\n      shortMessage: \"An internal error was received.\"\n    });\n  }\n};\nObject.defineProperty(InternalRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32603\n});\nvar InvalidInputRpcError = class _InvalidInputRpcError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _InvalidInputRpcError.code,\n      name: \"InvalidInputRpcError\",\n      shortMessage: [\n        \"Missing or invalid parameters.\",\n        \"Double check you have provided the correct parameters.\"\n      ].join(\"\\n\")\n    });\n  }\n};\nObject.defineProperty(InvalidInputRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32e3\n});\nvar ResourceNotFoundRpcError = class _ResourceNotFoundRpcError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _ResourceNotFoundRpcError.code,\n      name: \"ResourceNotFoundRpcError\",\n      shortMessage: \"Requested resource not found.\"\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"ResourceNotFoundRpcError\"\n    });\n  }\n};\nObject.defineProperty(ResourceNotFoundRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32001\n});\nvar ResourceUnavailableRpcError = class _ResourceUnavailableRpcError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _ResourceUnavailableRpcError.code,\n      name: \"ResourceUnavailableRpcError\",\n      shortMessage: \"Requested resource not available.\"\n    });\n  }\n};\nObject.defineProperty(ResourceUnavailableRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32002\n});\nvar TransactionRejectedRpcError = class _TransactionRejectedRpcError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _TransactionRejectedRpcError.code,\n      name: \"TransactionRejectedRpcError\",\n      shortMessage: \"Transaction creation failed.\"\n    });\n  }\n};\nObject.defineProperty(TransactionRejectedRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32003\n});\nvar MethodNotSupportedRpcError = class _MethodNotSupportedRpcError extends RpcError {\n  constructor(cause, { method } = {}) {\n    super(cause, {\n      code: _MethodNotSupportedRpcError.code,\n      name: \"MethodNotSupportedRpcError\",\n      shortMessage: `Method${method ? ` \"${method}\"` : \"\"} is not implemented.`\n    });\n  }\n};\nObject.defineProperty(MethodNotSupportedRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32004\n});\nvar LimitExceededRpcError = class _LimitExceededRpcError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _LimitExceededRpcError.code,\n      name: \"LimitExceededRpcError\",\n      shortMessage: \"Request exceeds defined limit.\"\n    });\n  }\n};\nObject.defineProperty(LimitExceededRpcError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32005\n});\nvar JsonRpcVersionUnsupportedError = class _JsonRpcVersionUnsupportedError extends RpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _JsonRpcVersionUnsupportedError.code,\n      name: \"JsonRpcVersionUnsupportedError\",\n      shortMessage: \"Version of JSON-RPC protocol is not supported.\"\n    });\n  }\n};\nObject.defineProperty(JsonRpcVersionUnsupportedError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: -32006\n});\nvar UserRejectedRequestError = class _UserRejectedRequestError extends ProviderRpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _UserRejectedRequestError.code,\n      name: \"UserRejectedRequestError\",\n      shortMessage: \"User rejected the request.\"\n    });\n  }\n};\nObject.defineProperty(UserRejectedRequestError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: 4001\n});\nvar UnauthorizedProviderError = class _UnauthorizedProviderError extends ProviderRpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _UnauthorizedProviderError.code,\n      name: \"UnauthorizedProviderError\",\n      shortMessage: \"The requested method and/or account has not been authorized by the user.\"\n    });\n  }\n};\nObject.defineProperty(UnauthorizedProviderError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: 4100\n});\nvar UnsupportedProviderMethodError = class _UnsupportedProviderMethodError extends ProviderRpcError {\n  constructor(cause, { method } = {}) {\n    super(cause, {\n      code: _UnsupportedProviderMethodError.code,\n      name: \"UnsupportedProviderMethodError\",\n      shortMessage: `The Provider does not support the requested method${method ? ` \" ${method}\"` : \"\"}.`\n    });\n  }\n};\nObject.defineProperty(UnsupportedProviderMethodError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: 4200\n});\nvar ProviderDisconnectedError = class _ProviderDisconnectedError extends ProviderRpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _ProviderDisconnectedError.code,\n      name: \"ProviderDisconnectedError\",\n      shortMessage: \"The Provider is disconnected from all chains.\"\n    });\n  }\n};\nObject.defineProperty(ProviderDisconnectedError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: 4900\n});\nvar ChainDisconnectedError = class _ChainDisconnectedError extends ProviderRpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _ChainDisconnectedError.code,\n      name: \"ChainDisconnectedError\",\n      shortMessage: \"The Provider is not connected to the requested chain.\"\n    });\n  }\n};\nObject.defineProperty(ChainDisconnectedError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: 4901\n});\nvar SwitchChainError = class _SwitchChainError extends ProviderRpcError {\n  constructor(cause) {\n    super(cause, {\n      code: _SwitchChainError.code,\n      name: \"SwitchChainError\",\n      shortMessage: \"An error occurred when attempting to switch chain.\"\n    });\n  }\n};\nObject.defineProperty(SwitchChainError, \"code\", {\n  enumerable: true,\n  configurable: true,\n  writable: true,\n  value: 4902\n});\n\n// node_modules/viem/_esm/utils/errors/getNodeError.js\nfunction getNodeError(err, args) {\n  const message = (err.details || \"\").toLowerCase();\n  const executionRevertedError = err instanceof BaseError2 ? err.walk((e) => (e == null ? void 0 : e.code) === ExecutionRevertedError.code) : err;\n  if (executionRevertedError instanceof BaseError2)\n    return new ExecutionRevertedError({\n      cause: err,\n      message: executionRevertedError.details\n    });\n  if (ExecutionRevertedError.nodeMessage.test(message))\n    return new ExecutionRevertedError({\n      cause: err,\n      message: err.details\n    });\n  if (FeeCapTooHighError.nodeMessage.test(message))\n    return new FeeCapTooHighError({\n      cause: err,\n      maxFeePerGas: args == null ? void 0 : args.maxFeePerGas\n    });\n  if (FeeCapTooLowError.nodeMessage.test(message))\n    return new FeeCapTooLowError({\n      cause: err,\n      maxFeePerGas: args == null ? void 0 : args.maxFeePerGas\n    });\n  if (NonceTooHighError.nodeMessage.test(message))\n    return new NonceTooHighError({ cause: err, nonce: args == null ? void 0 : args.nonce });\n  if (NonceTooLowError.nodeMessage.test(message))\n    return new NonceTooLowError({ cause: err, nonce: args == null ? void 0 : args.nonce });\n  if (NonceMaxValueError.nodeMessage.test(message))\n    return new NonceMaxValueError({ cause: err, nonce: args == null ? void 0 : args.nonce });\n  if (InsufficientFundsError.nodeMessage.test(message))\n    return new InsufficientFundsError({ cause: err });\n  if (IntrinsicGasTooHighError.nodeMessage.test(message))\n    return new IntrinsicGasTooHighError({ cause: err, gas: args == null ? void 0 : args.gas });\n  if (IntrinsicGasTooLowError.nodeMessage.test(message))\n    return new IntrinsicGasTooLowError({ cause: err, gas: args == null ? void 0 : args.gas });\n  if (TransactionTypeNotSupportedError.nodeMessage.test(message))\n    return new TransactionTypeNotSupportedError({ cause: err });\n  if (TipAboveFeeCapError.nodeMessage.test(message))\n    return new TipAboveFeeCapError({\n      cause: err,\n      maxFeePerGas: args == null ? void 0 : args.maxFeePerGas,\n      maxPriorityFeePerGas: args == null ? void 0 : args.maxPriorityFeePerGas\n    });\n  return new UnknownNodeError({\n    cause: err\n  });\n}\n\n// node_modules/viem/_esm/utils/errors/getCallError.js\nfunction getCallError(err, { docsPath: docsPath4, ...args }) {\n  const cause = (() => {\n    const cause2 = getNodeError(err, args);\n    if (cause2 instanceof UnknownNodeError)\n      return err;\n    return cause2;\n  })();\n  return new CallExecutionError(cause, {\n    docsPath: docsPath4,\n    ...args\n  });\n}\n\n// node_modules/viem/_esm/utils/formatters/extract.js\nfunction extract(value_, { format }) {\n  if (!format)\n    return {};\n  const value = {};\n  function extract_(formatted2) {\n    const keys = Object.keys(formatted2);\n    for (const key of keys) {\n      if (key in value_)\n        value[key] = value_[key];\n      if (formatted2[key] && typeof formatted2[key] === \"object\" && !Array.isArray(formatted2[key]))\n        extract_(formatted2[key]);\n    }\n  }\n  const formatted = format(value_ || {});\n  extract_(formatted);\n  return value;\n}\n\n// node_modules/viem/_esm/utils/formatters/formatter.js\nfunction defineFormatter(type, format) {\n  return ({ exclude, format: overrides }) => {\n    return {\n      exclude,\n      format: (args) => {\n        const formatted = format(args);\n        if (exclude) {\n          for (const key of exclude) {\n            delete formatted[key];\n          }\n        }\n        return {\n          ...formatted,\n          ...overrides(args)\n        };\n      },\n      type\n    };\n  };\n}\n\n// node_modules/viem/_esm/utils/formatters/transactionRequest.js\nvar rpcTransactionType = {\n  legacy: \"0x0\",\n  eip2930: \"0x1\",\n  eip1559: \"0x2\",\n  eip4844: \"0x3\",\n  eip7702: \"0x4\"\n};\nfunction formatTransactionRequest(request) {\n  const rpcRequest = {};\n  if (typeof request.authorizationList !== \"undefined\")\n    rpcRequest.authorizationList = formatAuthorizationList(request.authorizationList);\n  if (typeof request.accessList !== \"undefined\")\n    rpcRequest.accessList = request.accessList;\n  if (typeof request.blobVersionedHashes !== \"undefined\")\n    rpcRequest.blobVersionedHashes = request.blobVersionedHashes;\n  if (typeof request.blobs !== \"undefined\") {\n    if (typeof request.blobs[0] !== \"string\")\n      rpcRequest.blobs = request.blobs.map((x) => bytesToHex(x));\n    else\n      rpcRequest.blobs = request.blobs;\n  }\n  if (typeof request.data !== \"undefined\")\n    rpcRequest.data = request.data;\n  if (typeof request.from !== \"undefined\")\n    rpcRequest.from = request.from;\n  if (typeof request.gas !== \"undefined\")\n    rpcRequest.gas = numberToHex(request.gas);\n  if (typeof request.gasPrice !== \"undefined\")\n    rpcRequest.gasPrice = numberToHex(request.gasPrice);\n  if (typeof request.maxFeePerBlobGas !== \"undefined\")\n    rpcRequest.maxFeePerBlobGas = numberToHex(request.maxFeePerBlobGas);\n  if (typeof request.maxFeePerGas !== \"undefined\")\n    rpcRequest.maxFeePerGas = numberToHex(request.maxFeePerGas);\n  if (typeof request.maxPriorityFeePerGas !== \"undefined\")\n    rpcRequest.maxPriorityFeePerGas = numberToHex(request.maxPriorityFeePerGas);\n  if (typeof request.nonce !== \"undefined\")\n    rpcRequest.nonce = numberToHex(request.nonce);\n  if (typeof request.to !== \"undefined\")\n    rpcRequest.to = request.to;\n  if (typeof request.type !== \"undefined\")\n    rpcRequest.type = rpcTransactionType[request.type];\n  if (typeof request.value !== \"undefined\")\n    rpcRequest.value = numberToHex(request.value);\n  return rpcRequest;\n}\nvar defineTransactionRequest = defineFormatter(\"transactionRequest\", formatTransactionRequest);\nfunction formatAuthorizationList(authorizationList) {\n  return authorizationList.map((authorization) => ({\n    address: authorization.contractAddress,\n    r: authorization.r,\n    s: authorization.s,\n    chainId: numberToHex(authorization.chainId),\n    nonce: numberToHex(authorization.nonce),\n    ...typeof authorization.yParity !== \"undefined\" ? { yParity: numberToHex(authorization.yParity) } : {},\n    ...typeof authorization.v !== \"undefined\" && typeof authorization.yParity === \"undefined\" ? { v: numberToHex(authorization.v) } : {}\n  }));\n}\n\n// node_modules/viem/_esm/utils/promise/withResolvers.js\nfunction withResolvers() {\n  let resolve = () => void 0;\n  let reject = () => void 0;\n  const promise = new Promise((resolve_, reject_) => {\n    resolve = resolve_;\n    reject = reject_;\n  });\n  return { promise, resolve, reject };\n}\n\n// node_modules/viem/_esm/utils/promise/createBatchScheduler.js\nvar schedulerCache = /* @__PURE__ */ new Map();\nfunction createBatchScheduler({ fn, id, shouldSplitBatch, wait = 0, sort }) {\n  const exec = async () => {\n    const scheduler = getScheduler();\n    flush();\n    const args = scheduler.map(({ args: args2 }) => args2);\n    if (args.length === 0)\n      return;\n    fn(args).then((data) => {\n      if (sort && Array.isArray(data))\n        data.sort(sort);\n      for (let i = 0; i < scheduler.length; i++) {\n        const { resolve } = scheduler[i];\n        resolve == null ? void 0 : resolve([data[i], data]);\n      }\n    }).catch((err) => {\n      for (let i = 0; i < scheduler.length; i++) {\n        const { reject } = scheduler[i];\n        reject == null ? void 0 : reject(err);\n      }\n    });\n  };\n  const flush = () => schedulerCache.delete(id);\n  const getBatchedArgs = () => getScheduler().map(({ args }) => args);\n  const getScheduler = () => schedulerCache.get(id) || [];\n  const setScheduler = (item) => schedulerCache.set(id, [...getScheduler(), item]);\n  return {\n    flush,\n    async schedule(args) {\n      const { promise, resolve, reject } = withResolvers();\n      const split = shouldSplitBatch == null ? void 0 : shouldSplitBatch([...getBatchedArgs(), args]);\n      if (split)\n        exec();\n      const hasActiveScheduler = getScheduler().length > 0;\n      if (hasActiveScheduler) {\n        setScheduler({ args, resolve, reject });\n        return promise;\n      }\n      setScheduler({ args, resolve, reject });\n      setTimeout(exec, wait);\n      return promise;\n    }\n  };\n}\n\n// node_modules/viem/_esm/utils/stateOverride.js\nfunction serializeStateMapping(stateMapping) {\n  if (!stateMapping || stateMapping.length === 0)\n    return void 0;\n  return stateMapping.reduce((acc, { slot, value }) => {\n    if (slot.length !== 66)\n      throw new InvalidBytesLengthError({\n        size: slot.length,\n        targetSize: 66,\n        type: \"hex\"\n      });\n    if (value.length !== 66)\n      throw new InvalidBytesLengthError({\n        size: value.length,\n        targetSize: 66,\n        type: \"hex\"\n      });\n    acc[slot] = value;\n    return acc;\n  }, {});\n}\nfunction serializeAccountStateOverride(parameters) {\n  const { balance, nonce, state, stateDiff, code } = parameters;\n  const rpcAccountStateOverride = {};\n  if (code !== void 0)\n    rpcAccountStateOverride.code = code;\n  if (balance !== void 0)\n    rpcAccountStateOverride.balance = numberToHex(balance);\n  if (nonce !== void 0)\n    rpcAccountStateOverride.nonce = numberToHex(nonce);\n  if (state !== void 0)\n    rpcAccountStateOverride.state = serializeStateMapping(state);\n  if (stateDiff !== void 0) {\n    if (rpcAccountStateOverride.state)\n      throw new StateAssignmentConflictError();\n    rpcAccountStateOverride.stateDiff = serializeStateMapping(stateDiff);\n  }\n  return rpcAccountStateOverride;\n}\nfunction serializeStateOverride(parameters) {\n  if (!parameters)\n    return void 0;\n  const rpcStateOverride = {};\n  for (const { address, ...accountState } of parameters) {\n    if (!isAddress(address, { strict: false }))\n      throw new InvalidAddressError({ address });\n    if (rpcStateOverride[address])\n      throw new AccountStateConflictError({ address });\n    rpcStateOverride[address] = serializeAccountStateOverride(accountState);\n  }\n  return rpcStateOverride;\n}\n\n// node_modules/viem/_esm/constants/number.js\nvar maxInt8 = 2n ** (8n - 1n) - 1n;\nvar maxInt16 = 2n ** (16n - 1n) - 1n;\nvar maxInt24 = 2n ** (24n - 1n) - 1n;\nvar maxInt32 = 2n ** (32n - 1n) - 1n;\nvar maxInt40 = 2n ** (40n - 1n) - 1n;\nvar maxInt48 = 2n ** (48n - 1n) - 1n;\nvar maxInt56 = 2n ** (56n - 1n) - 1n;\nvar maxInt64 = 2n ** (64n - 1n) - 1n;\nvar maxInt72 = 2n ** (72n - 1n) - 1n;\nvar maxInt80 = 2n ** (80n - 1n) - 1n;\nvar maxInt88 = 2n ** (88n - 1n) - 1n;\nvar maxInt96 = 2n ** (96n - 1n) - 1n;\nvar maxInt104 = 2n ** (104n - 1n) - 1n;\nvar maxInt112 = 2n ** (112n - 1n) - 1n;\nvar maxInt120 = 2n ** (120n - 1n) - 1n;\nvar maxInt128 = 2n ** (128n - 1n) - 1n;\nvar maxInt136 = 2n ** (136n - 1n) - 1n;\nvar maxInt144 = 2n ** (144n - 1n) - 1n;\nvar maxInt152 = 2n ** (152n - 1n) - 1n;\nvar maxInt160 = 2n ** (160n - 1n) - 1n;\nvar maxInt168 = 2n ** (168n - 1n) - 1n;\nvar maxInt176 = 2n ** (176n - 1n) - 1n;\nvar maxInt184 = 2n ** (184n - 1n) - 1n;\nvar maxInt192 = 2n ** (192n - 1n) - 1n;\nvar maxInt200 = 2n ** (200n - 1n) - 1n;\nvar maxInt208 = 2n ** (208n - 1n) - 1n;\nvar maxInt216 = 2n ** (216n - 1n) - 1n;\nvar maxInt224 = 2n ** (224n - 1n) - 1n;\nvar maxInt232 = 2n ** (232n - 1n) - 1n;\nvar maxInt240 = 2n ** (240n - 1n) - 1n;\nvar maxInt248 = 2n ** (248n - 1n) - 1n;\nvar maxInt256 = 2n ** (256n - 1n) - 1n;\nvar minInt8 = -(2n ** (8n - 1n));\nvar minInt16 = -(2n ** (16n - 1n));\nvar minInt24 = -(2n ** (24n - 1n));\nvar minInt32 = -(2n ** (32n - 1n));\nvar minInt40 = -(2n ** (40n - 1n));\nvar minInt48 = -(2n ** (48n - 1n));\nvar minInt56 = -(2n ** (56n - 1n));\nvar minInt64 = -(2n ** (64n - 1n));\nvar minInt72 = -(2n ** (72n - 1n));\nvar minInt80 = -(2n ** (80n - 1n));\nvar minInt88 = -(2n ** (88n - 1n));\nvar minInt96 = -(2n ** (96n - 1n));\nvar minInt104 = -(2n ** (104n - 1n));\nvar minInt112 = -(2n ** (112n - 1n));\nvar minInt120 = -(2n ** (120n - 1n));\nvar minInt128 = -(2n ** (128n - 1n));\nvar minInt136 = -(2n ** (136n - 1n));\nvar minInt144 = -(2n ** (144n - 1n));\nvar minInt152 = -(2n ** (152n - 1n));\nvar minInt160 = -(2n ** (160n - 1n));\nvar minInt168 = -(2n ** (168n - 1n));\nvar minInt176 = -(2n ** (176n - 1n));\nvar minInt184 = -(2n ** (184n - 1n));\nvar minInt192 = -(2n ** (192n - 1n));\nvar minInt200 = -(2n ** (200n - 1n));\nvar minInt208 = -(2n ** (208n - 1n));\nvar minInt216 = -(2n ** (216n - 1n));\nvar minInt224 = -(2n ** (224n - 1n));\nvar minInt232 = -(2n ** (232n - 1n));\nvar minInt240 = -(2n ** (240n - 1n));\nvar minInt248 = -(2n ** (248n - 1n));\nvar minInt256 = -(2n ** (256n - 1n));\nvar maxUint8 = 2n ** 8n - 1n;\nvar maxUint16 = 2n ** 16n - 1n;\nvar maxUint24 = 2n ** 24n - 1n;\nvar maxUint32 = 2n ** 32n - 1n;\nvar maxUint40 = 2n ** 40n - 1n;\nvar maxUint48 = 2n ** 48n - 1n;\nvar maxUint56 = 2n ** 56n - 1n;\nvar maxUint64 = 2n ** 64n - 1n;\nvar maxUint72 = 2n ** 72n - 1n;\nvar maxUint80 = 2n ** 80n - 1n;\nvar maxUint88 = 2n ** 88n - 1n;\nvar maxUint96 = 2n ** 96n - 1n;\nvar maxUint104 = 2n ** 104n - 1n;\nvar maxUint112 = 2n ** 112n - 1n;\nvar maxUint120 = 2n ** 120n - 1n;\nvar maxUint128 = 2n ** 128n - 1n;\nvar maxUint136 = 2n ** 136n - 1n;\nvar maxUint144 = 2n ** 144n - 1n;\nvar maxUint152 = 2n ** 152n - 1n;\nvar maxUint160 = 2n ** 160n - 1n;\nvar maxUint168 = 2n ** 168n - 1n;\nvar maxUint176 = 2n ** 176n - 1n;\nvar maxUint184 = 2n ** 184n - 1n;\nvar maxUint192 = 2n ** 192n - 1n;\nvar maxUint200 = 2n ** 200n - 1n;\nvar maxUint208 = 2n ** 208n - 1n;\nvar maxUint216 = 2n ** 216n - 1n;\nvar maxUint224 = 2n ** 224n - 1n;\nvar maxUint232 = 2n ** 232n - 1n;\nvar maxUint240 = 2n ** 240n - 1n;\nvar maxUint248 = 2n ** 248n - 1n;\nvar maxUint256 = 2n ** 256n - 1n;\n\n// node_modules/viem/_esm/utils/transaction/assertRequest.js\nfunction assertRequest(args) {\n  const { account: account_, gasPrice, maxFeePerGas, maxPriorityFeePerGas, to } = args;\n  const account = account_ ? parseAccount(account_) : void 0;\n  if (account && !isAddress(account.address))\n    throw new InvalidAddressError({ address: account.address });\n  if (to && !isAddress(to))\n    throw new InvalidAddressError({ address: to });\n  if (typeof gasPrice !== \"undefined\" && (typeof maxFeePerGas !== \"undefined\" || typeof maxPriorityFeePerGas !== \"undefined\"))\n    throw new FeeConflictError();\n  if (maxFeePerGas && maxFeePerGas > maxUint256)\n    throw new FeeCapTooHighError({ maxFeePerGas });\n  if (maxPriorityFeePerGas && maxFeePerGas && maxPriorityFeePerGas > maxFeePerGas)\n    throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas });\n}\n\n// node_modules/viem/_esm/actions/public/call.js\nasync function call(client, args) {\n  var _a, _b, _c, _d;\n  const { account: account_ = client.account, batch = Boolean((_a = client.batch) == null ? void 0 : _a.multicall), blockNumber, blockTag = \"latest\", accessList, blobs, code, data: data_, factory, factoryData, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, stateOverride, ...rest } = args;\n  const account = account_ ? parseAccount(account_) : void 0;\n  if (code && (factory || factoryData))\n    throw new BaseError2(\"Cannot provide both `code` & `factory`/`factoryData` as parameters.\");\n  if (code && to)\n    throw new BaseError2(\"Cannot provide both `code` & `to` as parameters.\");\n  const deploylessCallViaBytecode = code && data_;\n  const deploylessCallViaFactory = factory && factoryData && to && data_;\n  const deploylessCall = deploylessCallViaBytecode || deploylessCallViaFactory;\n  const data = (() => {\n    if (deploylessCallViaBytecode)\n      return toDeploylessCallViaBytecodeData({\n        code,\n        data: data_\n      });\n    if (deploylessCallViaFactory)\n      return toDeploylessCallViaFactoryData({\n        data: data_,\n        factory,\n        factoryData,\n        to\n      });\n    return data_;\n  })();\n  try {\n    assertRequest(args);\n    const blockNumberHex = blockNumber ? numberToHex(blockNumber) : void 0;\n    const block = blockNumberHex || blockTag;\n    const rpcStateOverride = serializeStateOverride(stateOverride);\n    const chainFormat = (_d = (_c = (_b = client.chain) == null ? void 0 : _b.formatters) == null ? void 0 : _c.transactionRequest) == null ? void 0 : _d.format;\n    const format = chainFormat || formatTransactionRequest;\n    const request = format({\n      // Pick out extra data that might exist on the chain's transaction request type.\n      ...extract(rest, { format: chainFormat }),\n      from: account == null ? void 0 : account.address,\n      accessList,\n      blobs,\n      data,\n      gas,\n      gasPrice,\n      maxFeePerBlobGas,\n      maxFeePerGas,\n      maxPriorityFeePerGas,\n      nonce,\n      to: deploylessCall ? void 0 : to,\n      value\n    });\n    if (batch && shouldPerformMulticall({ request }) && !rpcStateOverride) {\n      try {\n        return await scheduleMulticall(client, {\n          ...request,\n          blockNumber,\n          blockTag\n        });\n      } catch (err) {\n        if (!(err instanceof ClientChainNotConfiguredError) && !(err instanceof ChainDoesNotSupportContract))\n          throw err;\n      }\n    }\n    const response = await client.request({\n      method: \"eth_call\",\n      params: rpcStateOverride ? [\n        request,\n        block,\n        rpcStateOverride\n      ] : [request, block]\n    });\n    if (response === \"0x\")\n      return { data: void 0 };\n    return { data: response };\n  } catch (err) {\n    const data2 = getRevertErrorData(err);\n    const { offchainLookup: offchainLookup2, offchainLookupSignature: offchainLookupSignature2 } = await import(\"./ccip-BECV2KBX.js\");\n    if (client.ccipRead !== false && (data2 == null ? void 0 : data2.slice(0, 10)) === offchainLookupSignature2 && to)\n      return { data: await offchainLookup2(client, { data: data2, to }) };\n    if (deploylessCall && (data2 == null ? void 0 : data2.slice(0, 10)) === \"0x101bb98d\")\n      throw new CounterfactualDeploymentFailedError({ factory });\n    throw getCallError(err, {\n      ...args,\n      account,\n      chain: client.chain\n    });\n  }\n}\nfunction shouldPerformMulticall({ request }) {\n  const { data, to, ...request_ } = request;\n  if (!data)\n    return false;\n  if (data.startsWith(aggregate3Signature))\n    return false;\n  if (!to)\n    return false;\n  if (Object.values(request_).filter((x) => typeof x !== \"undefined\").length > 0)\n    return false;\n  return true;\n}\nasync function scheduleMulticall(client, args) {\n  var _a;\n  const { batchSize = 1024, wait = 0 } = typeof ((_a = client.batch) == null ? void 0 : _a.multicall) === \"object\" ? client.batch.multicall : {};\n  const { blockNumber, blockTag = \"latest\", data, multicallAddress: multicallAddress_, to } = args;\n  let multicallAddress = multicallAddress_;\n  if (!multicallAddress) {\n    if (!client.chain)\n      throw new ClientChainNotConfiguredError();\n    multicallAddress = getChainContractAddress({\n      blockNumber,\n      chain: client.chain,\n      contract: \"multicall3\"\n    });\n  }\n  const blockNumberHex = blockNumber ? numberToHex(blockNumber) : void 0;\n  const block = blockNumberHex || blockTag;\n  const { schedule } = createBatchScheduler({\n    id: `${client.uid}.${block}`,\n    wait,\n    shouldSplitBatch(args2) {\n      const size2 = args2.reduce((size3, { data: data2 }) => size3 + (data2.length - 2), 0);\n      return size2 > batchSize * 2;\n    },\n    fn: async (requests) => {\n      const calls = requests.map((request) => ({\n        allowFailure: true,\n        callData: request.data,\n        target: request.to\n      }));\n      const calldata = encodeFunctionData({\n        abi: multicall3Abi,\n        args: [calls],\n        functionName: \"aggregate3\"\n      });\n      const data2 = await client.request({\n        method: \"eth_call\",\n        params: [\n          {\n            data: calldata,\n            to: multicallAddress\n          },\n          block\n        ]\n      });\n      return decodeFunctionResult({\n        abi: multicall3Abi,\n        args: [calls],\n        functionName: \"aggregate3\",\n        data: data2 || \"0x\"\n      });\n    }\n  });\n  const [{ returnData, success }] = await schedule({ data, to });\n  if (!success)\n    throw new RawContractError({ data: returnData });\n  if (returnData === \"0x\")\n    return { data: void 0 };\n  return { data: returnData };\n}\nfunction toDeploylessCallViaBytecodeData(parameters) {\n  const { code, data } = parameters;\n  return encodeDeployData({\n    abi: parseAbi([\"constructor(bytes, bytes)\"]),\n    bytecode: deploylessCallViaBytecodeBytecode,\n    args: [code, data]\n  });\n}\nfunction toDeploylessCallViaFactoryData(parameters) {\n  const { data, factory, factoryData, to } = parameters;\n  return encodeDeployData({\n    abi: parseAbi([\"constructor(address, bytes, address, bytes)\"]),\n    bytecode: deploylessCallViaFactoryBytecode,\n    args: [to, data, factory, factoryData]\n  });\n}\nfunction getRevertErrorData(err) {\n  var _a;\n  if (!(err instanceof BaseError2))\n    return void 0;\n  const error = err.walk();\n  return typeof (error == null ? void 0 : error.data) === \"object\" ? (_a = error.data) == null ? void 0 : _a.data : error.data;\n}\n\n// node_modules/viem/_esm/errors/ccip.js\nvar OffchainLookupError = class extends BaseError2 {\n  constructor({ callbackSelector, cause, data, extraData, sender, urls }) {\n    var _a;\n    super(cause.shortMessage || \"An error occurred while fetching for an offchain result.\", {\n      cause,\n      metaMessages: [\n        ...cause.metaMessages || [],\n        ((_a = cause.metaMessages) == null ? void 0 : _a.length) ? \"\" : [],\n        \"Offchain Gateway Call:\",\n        urls && [\n          \"  Gateway URL(s):\",\n          ...urls.map((url) => `    ${getUrl(url)}`)\n        ],\n        `  Sender: ${sender}`,\n        `  Data: ${data}`,\n        `  Callback selector: ${callbackSelector}`,\n        `  Extra data: ${extraData}`\n      ].flat(),\n      name: \"OffchainLookupError\"\n    });\n  }\n};\nvar OffchainLookupResponseMalformedError = class extends BaseError2 {\n  constructor({ result, url }) {\n    super(\"Offchain gateway response is malformed. Response data must be a hex value.\", {\n      metaMessages: [\n        `Gateway URL: ${getUrl(url)}`,\n        `Response: ${stringify(result)}`\n      ],\n      name: \"OffchainLookupResponseMalformedError\"\n    });\n  }\n};\nvar OffchainLookupSenderMismatchError = class extends BaseError2 {\n  constructor({ sender, to }) {\n    super(\"Reverted sender address does not match target contract address (`to`).\", {\n      metaMessages: [\n        `Contract address: ${to}`,\n        `OffchainLookup sender address: ${sender}`\n      ],\n      name: \"OffchainLookupSenderMismatchError\"\n    });\n  }\n};\n\n// node_modules/viem/_esm/utils/address/isAddressEqual.js\nfunction isAddressEqual(a, b) {\n  if (!isAddress(a, { strict: false }))\n    throw new InvalidAddressError({ address: a });\n  if (!isAddress(b, { strict: false }))\n    throw new InvalidAddressError({ address: b });\n  return a.toLowerCase() === b.toLowerCase();\n}\n\n// node_modules/viem/_esm/utils/ccip.js\nvar offchainLookupSignature = \"0x556f1830\";\nvar offchainLookupAbiItem = {\n  name: \"OffchainLookup\",\n  type: \"error\",\n  inputs: [\n    {\n      name: \"sender\",\n      type: \"address\"\n    },\n    {\n      name: \"urls\",\n      type: \"string[]\"\n    },\n    {\n      name: \"callData\",\n      type: \"bytes\"\n    },\n    {\n      name: \"callbackFunction\",\n      type: \"bytes4\"\n    },\n    {\n      name: \"extraData\",\n      type: \"bytes\"\n    }\n  ]\n};\nasync function offchainLookup(client, { blockNumber, blockTag, data, to }) {\n  const { args } = decodeErrorResult({\n    data,\n    abi: [offchainLookupAbiItem]\n  });\n  const [sender, urls, callData, callbackSelector, extraData] = args;\n  const { ccipRead } = client;\n  const ccipRequest_ = ccipRead && typeof (ccipRead == null ? void 0 : ccipRead.request) === \"function\" ? ccipRead.request : ccipRequest;\n  try {\n    if (!isAddressEqual(to, sender))\n      throw new OffchainLookupSenderMismatchError({ sender, to });\n    const result = await ccipRequest_({ data: callData, sender, urls });\n    const { data: data_ } = await call(client, {\n      blockNumber,\n      blockTag,\n      data: concat([\n        callbackSelector,\n        encodeAbiParameters([{ type: \"bytes\" }, { type: \"bytes\" }], [result, extraData])\n      ]),\n      to\n    });\n    return data_;\n  } catch (err) {\n    throw new OffchainLookupError({\n      callbackSelector,\n      cause: err,\n      data,\n      extraData,\n      sender,\n      urls\n    });\n  }\n}\nasync function ccipRequest({ data, sender, urls }) {\n  var _a;\n  let error = new Error(\"An unknown error occurred.\");\n  for (let i = 0; i < urls.length; i++) {\n    const url = urls[i];\n    const method = url.includes(\"{data}\") ? \"GET\" : \"POST\";\n    const body = method === \"POST\" ? { data, sender } : void 0;\n    const headers = method === \"POST\" ? { \"Content-Type\": \"application/json\" } : {};\n    try {\n      const response = await fetch(url.replace(\"{sender}\", sender).replace(\"{data}\", data), {\n        body: JSON.stringify(body),\n        headers,\n        method\n      });\n      let result;\n      if ((_a = response.headers.get(\"Content-Type\")) == null ? void 0 : _a.startsWith(\"application/json\")) {\n        result = (await response.json()).data;\n      } else {\n        result = await response.text();\n      }\n      if (!response.ok) {\n        error = new HttpRequestError({\n          body,\n          details: (result == null ? void 0 : result.error) ? stringify(result.error) : response.statusText,\n          headers: response.headers,\n          status: response.status,\n          url\n        });\n        continue;\n      }\n      if (!isHex(result)) {\n        error = new OffchainLookupResponseMalformedError({\n          result,\n          url\n        });\n        continue;\n      }\n      return result;\n    } catch (err) {\n      error = new HttpRequestError({\n        body,\n        details: err.message,\n        url\n      });\n    }\n  }\n  throw error;\n}\n\nexport {\n  formatAbi,\n  parseAbi,\n  parseAbiItem,\n  formatAbiItem2 as formatAbiItem,\n  isHex,\n  size,\n  BaseError2 as BaseError,\n  AbiDecodingDataSizeTooSmallError,\n  AbiEncodingLengthMismatchError,\n  AbiEventSignatureEmptyTopicsError,\n  AbiEventSignatureNotFoundError,\n  AbiEventNotFoundError,\n  BytesSizeMismatchError,\n  DecodeLogDataMismatch,\n  DecodeLogTopicsMismatch,\n  UnsupportedPackedAbiType,\n  pad,\n  padHex,\n  trim,\n  hexToBigInt,\n  hexToNumber,\n  toHex,\n  boolToHex,\n  bytesToHex,\n  numberToHex,\n  stringToHex,\n  toBytes,\n  hexToBytes,\n  stringToBytes,\n  keccak256,\n  toSignatureHash,\n  toEventSelector,\n  InvalidAddressError,\n  LruMap,\n  isAddress,\n  concat,\n  concatHex,\n  slice,\n  sliceHex,\n  encodeAbiParameters,\n  toFunctionSelector,\n  getAbiItem,\n  PositionOutOfBoundsError,\n  createCursor,\n  decodeAbiParameters,\n  decodeErrorResult,\n  stringify,\n  InvalidLegacyVError,\n  InvalidSerializableTransactionError,\n  InvalidStorageKeySizeError,\n  UserRejectedRequestError,\n  SwitchChainError,\n  FeeCapTooHighError,\n  TipAboveFeeCapError,\n  defineFormatter,\n  formatTransactionRequest,\n  defineTransactionRequest,\n  maxUint16,\n  maxUint96,\n  maxUint256,\n  isAddressEqual,\n  universalSignatureValidatorAbi,\n  universalSignatureValidatorByteCode,\n  InvalidChainIdError,\n  encodeDeployData,\n  offchainLookupSignature,\n  offchainLookupAbiItem,\n  offchainLookup,\n  ccipRequest\n};\n//# sourceMappingURL=chunk-GINVHONX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-GOA7IGSB.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/promise/withCache.js\nvar promiseCache = /* @__PURE__ */ new Map();\nvar responseCache = /* @__PURE__ */ new Map();\nfunction getCache(cacheKey) {\n  const buildCache = (cacheKey_, cache) => ({\n    clear: () => cache.delete(cacheKey_),\n    get: () => cache.get(cacheKey_),\n    set: (data) => cache.set(cacheKey_, data)\n  });\n  const promise = buildCache(cacheKey, promiseCache);\n  const response = buildCache(cacheKey, responseCache);\n  return {\n    clear: () => {\n      promise.clear();\n      response.clear();\n    },\n    promise,\n    response\n  };\n}\nasync function withCache(fn, { cacheKey, cacheTime = Number.POSITIVE_INFINITY }) {\n  const cache = getCache(cacheKey);\n  const response = cache.response.get();\n  if (response && cacheTime > 0) {\n    const age = (/* @__PURE__ */ new Date()).getTime() - response.created.getTime();\n    if (age < cacheTime) {\n      return response.data;\n    }\n  }\n  let promise = cache.promise.get();\n  if (!promise) {\n    promise = fn();\n    cache.promise.set(promise);\n  }\n  try {\n    const data = await promise;\n    cache.response.set({ created: /* @__PURE__ */ new Date(), data });\n    return data;\n  } finally {\n    cache.promise.clear();\n  }\n}\n\nexport {\n  withCache\n};\n//# sourceMappingURL=chunk-GOA7IGSB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-HI6IFF64.js",
    "content": "import {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  getWalletInfo\n} from \"./chunk-XC5J5ANL.js\";\nimport {\n  parseNftUri\n} from \"./chunk-NOA36MVL.js\";\nimport {\n  getInstalledWalletProviders\n} from \"./chunk-PWFRCBEK.js\";\nimport {\n  ethereum\n} from \"./chunk-ZLJ6VYSG.js\";\nimport {\n  webLocalStorage\n} from \"./chunk-VIBS7Y3M.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  eth_getBalance\n} from \"./chunk-4PEUWIWY.js\";\nimport {\n  toTokens\n} from \"./chunk-UY2SRO54.js\";\nimport {\n  resolveScheme\n} from \"./chunk-ZNEQLT5Q.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport {\n  labelhash\n} from \"./chunk-YPFLLHK6.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport {\n  shortenAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  keccak256\n} from \"./chunk-67BSOYLQ.js\";\nimport {\n  stringToBytes,\n  toBytes\n} from \"./chunk-B7XHB4Z2.js\";\nimport {\n  bytesToHex,\n  concat,\n  decodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport {\n  getChainDecimals,\n  getChainNativeCurrencyName,\n  getChainSymbol\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  withCache\n} from \"./chunk-GOA7IGSB.js\";\nimport {\n  getThirdwebBaseUrl\n} from \"./chunk-QHKZ43P6.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\nimport {\n  isHex,\n  toHex\n} from \"./chunk-BBNNHC5G.js\";\nimport {\n  __commonJS,\n  __privateAdd,\n  __privateGet,\n  __privateMethod,\n  __privateSet,\n  __privateWrapper,\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/react-is/cjs/react-is.development.js\nvar require_react_is_development = __commonJS({\n  \"node_modules/react-is/cjs/react-is.development.js\"(exports) {\n    \"use strict\";\n    if (true) {\n      (function() {\n        \"use strict\";\n        var hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n        var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for(\"react.element\") : 60103;\n        var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for(\"react.portal\") : 60106;\n        var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for(\"react.fragment\") : 60107;\n        var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.strict_mode\") : 60108;\n        var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for(\"react.profiler\") : 60114;\n        var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for(\"react.provider\") : 60109;\n        var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for(\"react.context\") : 60110;\n        var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for(\"react.async_mode\") : 60111;\n        var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.concurrent_mode\") : 60111;\n        var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for(\"react.forward_ref\") : 60112;\n        var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for(\"react.suspense\") : 60113;\n        var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for(\"react.suspense_list\") : 60120;\n        var REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 60115;\n        var REACT_LAZY_TYPE = hasSymbol ? Symbol.for(\"react.lazy\") : 60116;\n        var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for(\"react.block\") : 60121;\n        var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for(\"react.fundamental\") : 60117;\n        var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for(\"react.responder\") : 60118;\n        var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for(\"react.scope\") : 60119;\n        function isValidElementType(type) {\n          return typeof type === \"string\" || typeof type === \"function\" || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n          type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === \"object\" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n        }\n        function typeOf(object) {\n          if (typeof object === \"object\" && object !== null) {\n            var $$typeof = object.$$typeof;\n            switch ($$typeof) {\n              case REACT_ELEMENT_TYPE:\n                var type = object.type;\n                switch (type) {\n                  case REACT_ASYNC_MODE_TYPE:\n                  case REACT_CONCURRENT_MODE_TYPE:\n                  case REACT_FRAGMENT_TYPE:\n                  case REACT_PROFILER_TYPE:\n                  case REACT_STRICT_MODE_TYPE:\n                  case REACT_SUSPENSE_TYPE:\n                    return type;\n                  default:\n                    var $$typeofType = type && type.$$typeof;\n                    switch ($$typeofType) {\n                      case REACT_CONTEXT_TYPE:\n                      case REACT_FORWARD_REF_TYPE:\n                      case REACT_LAZY_TYPE:\n                      case REACT_MEMO_TYPE:\n                      case REACT_PROVIDER_TYPE:\n                        return $$typeofType;\n                      default:\n                        return $$typeof;\n                    }\n                }\n              case REACT_PORTAL_TYPE:\n                return $$typeof;\n            }\n          }\n          return void 0;\n        }\n        var AsyncMode = REACT_ASYNC_MODE_TYPE;\n        var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n        var ContextConsumer = REACT_CONTEXT_TYPE;\n        var ContextProvider = REACT_PROVIDER_TYPE;\n        var Element = REACT_ELEMENT_TYPE;\n        var ForwardRef = REACT_FORWARD_REF_TYPE;\n        var Fragment4 = REACT_FRAGMENT_TYPE;\n        var Lazy = REACT_LAZY_TYPE;\n        var Memo = REACT_MEMO_TYPE;\n        var Portal = REACT_PORTAL_TYPE;\n        var Profiler = REACT_PROFILER_TYPE;\n        var StrictMode = REACT_STRICT_MODE_TYPE;\n        var Suspense = REACT_SUSPENSE_TYPE;\n        var hasWarnedAboutDeprecatedIsAsyncMode = false;\n        function isAsyncMode(object) {\n          {\n            if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n              hasWarnedAboutDeprecatedIsAsyncMode = true;\n              console[\"warn\"](\"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.\");\n            }\n          }\n          return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n        }\n        function isConcurrentMode(object) {\n          return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n        }\n        function isContextConsumer(object) {\n          return typeOf(object) === REACT_CONTEXT_TYPE;\n        }\n        function isContextProvider(object) {\n          return typeOf(object) === REACT_PROVIDER_TYPE;\n        }\n        function isElement(object) {\n          return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n        }\n        function isForwardRef(object) {\n          return typeOf(object) === REACT_FORWARD_REF_TYPE;\n        }\n        function isFragment(object) {\n          return typeOf(object) === REACT_FRAGMENT_TYPE;\n        }\n        function isLazy(object) {\n          return typeOf(object) === REACT_LAZY_TYPE;\n        }\n        function isMemo(object) {\n          return typeOf(object) === REACT_MEMO_TYPE;\n        }\n        function isPortal(object) {\n          return typeOf(object) === REACT_PORTAL_TYPE;\n        }\n        function isProfiler(object) {\n          return typeOf(object) === REACT_PROFILER_TYPE;\n        }\n        function isStrictMode(object) {\n          return typeOf(object) === REACT_STRICT_MODE_TYPE;\n        }\n        function isSuspense(object) {\n          return typeOf(object) === REACT_SUSPENSE_TYPE;\n        }\n        exports.AsyncMode = AsyncMode;\n        exports.ConcurrentMode = ConcurrentMode;\n        exports.ContextConsumer = ContextConsumer;\n        exports.ContextProvider = ContextProvider;\n        exports.Element = Element;\n        exports.ForwardRef = ForwardRef;\n        exports.Fragment = Fragment4;\n        exports.Lazy = Lazy;\n        exports.Memo = Memo;\n        exports.Portal = Portal;\n        exports.Profiler = Profiler;\n        exports.StrictMode = StrictMode;\n        exports.Suspense = Suspense;\n        exports.isAsyncMode = isAsyncMode;\n        exports.isConcurrentMode = isConcurrentMode;\n        exports.isContextConsumer = isContextConsumer;\n        exports.isContextProvider = isContextProvider;\n        exports.isElement = isElement;\n        exports.isForwardRef = isForwardRef;\n        exports.isFragment = isFragment;\n        exports.isLazy = isLazy;\n        exports.isMemo = isMemo;\n        exports.isPortal = isPortal;\n        exports.isProfiler = isProfiler;\n        exports.isStrictMode = isStrictMode;\n        exports.isSuspense = isSuspense;\n        exports.isValidElementType = isValidElementType;\n        exports.typeOf = typeOf;\n      })();\n    }\n  }\n});\n\n// node_modules/react-is/index.js\nvar require_react_is = __commonJS({\n  \"node_modules/react-is/index.js\"(exports, module) {\n    \"use strict\";\n    if (false) {\n      module.exports = null;\n    } else {\n      module.exports = require_react_is_development();\n    }\n  }\n});\n\n// node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\nvar require_hoist_non_react_statics_cjs = __commonJS({\n  \"node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\"(exports, module) {\n    \"use strict\";\n    var reactIs = require_react_is();\n    var REACT_STATICS = {\n      childContextTypes: true,\n      contextType: true,\n      contextTypes: true,\n      defaultProps: true,\n      displayName: true,\n      getDefaultProps: true,\n      getDerivedStateFromError: true,\n      getDerivedStateFromProps: true,\n      mixins: true,\n      propTypes: true,\n      type: true\n    };\n    var KNOWN_STATICS = {\n      name: true,\n      length: true,\n      prototype: true,\n      caller: true,\n      callee: true,\n      arguments: true,\n      arity: true\n    };\n    var FORWARD_REF_STATICS = {\n      \"$$typeof\": true,\n      render: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true\n    };\n    var MEMO_STATICS = {\n      \"$$typeof\": true,\n      compare: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true,\n      type: true\n    };\n    var TYPE_STATICS = {};\n    TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n    TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n    function getStatics(component) {\n      if (reactIs.isMemo(component)) {\n        return MEMO_STATICS;\n      }\n      return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n    }\n    var defineProperty = Object.defineProperty;\n    var getOwnPropertyNames = Object.getOwnPropertyNames;\n    var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n    var getPrototypeOf = Object.getPrototypeOf;\n    var objectPrototype = Object.prototype;\n    function hoistNonReactStatics2(targetComponent, sourceComponent, blacklist) {\n      if (typeof sourceComponent !== \"string\") {\n        if (objectPrototype) {\n          var inheritedComponent = getPrototypeOf(sourceComponent);\n          if (inheritedComponent && inheritedComponent !== objectPrototype) {\n            hoistNonReactStatics2(targetComponent, inheritedComponent, blacklist);\n          }\n        }\n        var keys = getOwnPropertyNames(sourceComponent);\n        if (getOwnPropertySymbols) {\n          keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n        }\n        var targetStatics = getStatics(targetComponent);\n        var sourceStatics = getStatics(sourceComponent);\n        for (var i = 0; i < keys.length; ++i) {\n          var key = keys[i];\n          if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n            var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n            try {\n              defineProperty(targetComponent, key, descriptor);\n            } catch (e) {\n            }\n          }\n        }\n      }\n      return targetComponent;\n    }\n    module.exports = hoistNonReactStatics2;\n  }\n});\n\n// node_modules/thirdweb/dist/esm/react/core/design-system/index.js\nvar darkColors = {\n  base1: \"hsl(230 11.63% 8.43%)\",\n  base2: \"hsl(230 11.63% 12%)\",\n  base3: \"hsl(230 11.63% 15%)\",\n  base4: \"hsl(230 11.63% 17%)\",\n  primaryText: \"#eeeef0\",\n  secondaryText: \"#7c7a85\",\n  danger: \"#e5484D\",\n  success: \"#30A46C\",\n  overlay: \"rgba(0, 0, 0, 0.7)\",\n  accentText: \"#3385FF\",\n  accentBg: \"hsl(216 100% 50%)\",\n  textOnAccent: \"#eeeef0\"\n};\nvar lightColors = {\n  base1: \"#fdfcfd\",\n  base2: \"#f2eff3\",\n  base3: \"#e3dfe6\",\n  base4: \"#dbd8e0\",\n  primaryText: \"#211f26\",\n  secondaryText: \"#6f6d78\",\n  accentText: \"#3385FF\",\n  success: \"#30A46C\",\n  danger: \"#e5484D\",\n  overlay: \"rgba(0, 0, 0, 0.7)\",\n  accentBg: \"hsl(216 100% 50%)\",\n  textOnAccent: \"#fdfcfd\"\n};\nfunction createThemeObj(type, colors) {\n  return {\n    type,\n    colors: {\n      primaryText: colors.primaryText,\n      secondaryText: colors.secondaryText,\n      accentText: colors.accentText,\n      danger: colors.danger,\n      success: colors.success,\n      modalOverlayBg: colors.overlay,\n      accentButtonBg: colors.accentBg,\n      accentButtonText: colors.textOnAccent,\n      primaryButtonBg: colors.primaryText,\n      primaryButtonText: colors.base1,\n      secondaryButtonBg: colors.base3,\n      secondaryButtonText: colors.primaryText,\n      secondaryButtonHoverBg: colors.base4,\n      modalBg: colors.base1,\n      tooltipBg: colors.primaryText,\n      tooltipText: colors.base1,\n      inputAutofillBg: colors.base1,\n      scrollbarBg: colors.base2,\n      tertiaryBg: colors.base2,\n      separatorLine: colors.base4,\n      secondaryIconColor: colors.secondaryText,\n      secondaryIconHoverBg: colors.base3,\n      secondaryIconHoverColor: colors.primaryText,\n      borderColor: colors.base4,\n      skeletonBg: colors.base3,\n      selectedTextColor: colors.base1,\n      selectedTextBg: colors.primaryText,\n      connectedButtonBg: colors.base1,\n      connectedButtonBgHover: colors.base2\n    },\n    fontFamily: \"inherit\"\n  };\n}\nvar darkThemeObj = createThemeObj(\"dark\", darkColors);\nvar lightThemeObj = createThemeObj(\"light\", lightColors);\nvar fontSize = {\n  xs: \"12px\",\n  sm: \"14px\",\n  md: \"16px\",\n  lg: \"20px\",\n  xl: \"24px\",\n  xxl: \"32px\",\n  \"3xl\": \"48px\"\n};\nvar spacing = {\n  \"4xs\": \"2px\",\n  \"3xs\": \"4px\",\n  xxs: \"6px\",\n  xs: \"8px\",\n  sm: \"12px\",\n  md: \"16px\",\n  lg: \"24px\",\n  xl: \"32px\",\n  xxl: \"48px\",\n  \"3xl\": \"64px\"\n};\nvar radius = {\n  xs: \"4px\",\n  sm: \"6px\",\n  md: \"8px\",\n  lg: \"12px\",\n  xl: \"20px\",\n  xxl: \"32px\"\n};\nvar iconSize = {\n  xs: \"12\",\n  sm: \"16\",\n  md: \"24\",\n  lg: \"32\",\n  xl: \"48\",\n  xxl: \"64\",\n  \"3xl\": \"96\",\n  \"4xl\": \"128\"\n};\nvar media = {\n  mobile: \"@media (max-width: 640px)\"\n};\nvar shadow = {\n  sm: \"0 1px 2px 0 rgb(0 0 0 / 0.05)\",\n  md: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n  lg: \"0 10px 15px -3px rgb(0 0 0 / 0.07), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",\n  xl: \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\"\n};\nfunction lightTheme(overrides) {\n  if (!overrides) {\n    return lightThemeObj;\n  }\n  return applyThemeOverrides(lightThemeObj, overrides);\n}\nfunction darkTheme(overrides) {\n  if (!overrides) {\n    return darkThemeObj;\n  }\n  return applyThemeOverrides(darkThemeObj, overrides);\n}\nfunction applyThemeOverrides(baseTheme, themeOverrides) {\n  const theme = { ...baseTheme };\n  if (themeOverrides.colors) {\n    theme.colors = { ...theme.colors, ...themeOverrides.colors };\n  }\n  if (themeOverrides.fontFamily) {\n    theme.fontFamily = themeOverrides.fontFamily;\n  }\n  return theme;\n}\n\n// node_modules/@babel/runtime/helpers/esm/extends.js\nfunction _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function(n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t)\n        ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\n\n// node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.development.esm.js\nvar React4 = __toESM(require_react());\n\n// node_modules/@emotion/memoize/dist/emotion-memoize.esm.js\nfunction memoize(fn) {\n  var cache = /* @__PURE__ */ Object.create(null);\n  return function(arg) {\n    if (cache[arg] === void 0)\n      cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\n// node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;\nvar isPropValid = memoize(\n  function(prop) {\n    return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;\n  }\n  /* Z+1 */\n);\n\n// node_modules/@emotion/react/dist/emotion-element-7a1343fa.browser.development.esm.js\nvar React2 = __toESM(require_react());\nvar import_react = __toESM(require_react());\n\n// node_modules/@emotion/sheet/dist/emotion-sheet.development.esm.js\nvar isDevelopment = true;\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    return tag.sheet;\n  }\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      return document.styleSheets[i];\n    }\n  }\n  return void 0;\n}\nfunction createStyleElement(options) {\n  var tag = document.createElement(\"style\");\n  tag.setAttribute(\"data-emotion\", options.key);\n  if (options.nonce !== void 0) {\n    tag.setAttribute(\"nonce\", options.nonce);\n  }\n  tag.appendChild(document.createTextNode(\"\"));\n  tag.setAttribute(\"data-s\", \"\");\n  return tag;\n}\nvar StyleSheet = function() {\n  function StyleSheet2(options) {\n    var _this = this;\n    this._insertTag = function(tag) {\n      var before;\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n      _this.container.insertBefore(tag, before);\n      _this.tags.push(tag);\n    };\n    this.isSpeedy = options.speedy === void 0 ? !isDevelopment : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce;\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n  var _proto = StyleSheet2.prototype;\n  _proto.hydrate = function hydrate2(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n  _proto.insert = function insert(rule) {\n    if (this.ctr % (this.isSpeedy ? 65e3 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n    var tag = this.tags[this.tags.length - 1];\n    {\n      var isImportRule3 = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n      if (isImportRule3 && this._alreadyInsertedOrderInsensitiveRule) {\n        console.error(\"You're attempting to insert the following rule:\\n\" + rule + \"\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.\");\n      }\n      this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule3;\n    }\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n      try {\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if (!/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n          console.error('There was a problem inserting the following rule: \"' + rule + '\"', e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n    this.ctr++;\n  };\n  _proto.flush = function flush() {\n    this.tags.forEach(function(tag) {\n      var _tag$parentNode;\n      return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n    {\n      this._alreadyInsertedOrderInsensitiveRule = false;\n    }\n  };\n  return StyleSheet2;\n}();\n\n// node_modules/stylis/src/Enum.js\nvar MS = \"-ms-\";\nvar MOZ = \"-moz-\";\nvar WEBKIT = \"-webkit-\";\nvar COMMENT = \"comm\";\nvar RULESET = \"rule\";\nvar DECLARATION = \"decl\";\nvar IMPORT = \"@import\";\nvar KEYFRAMES = \"@keyframes\";\nvar LAYER = \"@layer\";\n\n// node_modules/stylis/src/Utility.js\nvar abs = Math.abs;\nvar from = String.fromCharCode;\nvar assign = Object.assign;\nfunction hash(value, length2) {\n  return charat(value, 0) ^ 45 ? (((length2 << 2 ^ charat(value, 0)) << 2 ^ charat(value, 1)) << 2 ^ charat(value, 2)) << 2 ^ charat(value, 3) : 0;\n}\nfunction trim(value) {\n  return value.trim();\n}\nfunction match(value, pattern) {\n  return (value = pattern.exec(value)) ? value[0] : value;\n}\nfunction replace(value, pattern, replacement) {\n  return value.replace(pattern, replacement);\n}\nfunction indexof(value, search) {\n  return value.indexOf(search);\n}\nfunction charat(value, index) {\n  return value.charCodeAt(index) | 0;\n}\nfunction substr(value, begin, end) {\n  return value.slice(begin, end);\n}\nfunction strlen(value) {\n  return value.length;\n}\nfunction sizeof(value) {\n  return value.length;\n}\nfunction append(value, array) {\n  return array.push(value), value;\n}\nfunction combine(array, callback) {\n  return array.map(callback).join(\"\");\n}\n\n// node_modules/stylis/src/Tokenizer.js\nvar line = 1;\nvar column = 1;\nvar length = 0;\nvar position = 0;\nvar character = 0;\nvar characters = \"\";\nfunction node(value, root, parent, type, props, children, length2) {\n  return { value, root, parent, type, props, children, line, column, length: length2, return: \"\" };\n}\nfunction copy(root, props) {\n  return assign(node(\"\", null, null, \"\", null, null, 0), root, { length: -root.length }, props);\n}\nfunction char() {\n  return character;\n}\nfunction prev() {\n  character = position > 0 ? charat(characters, --position) : 0;\n  if (column--, character === 10)\n    column = 1, line--;\n  return character;\n}\nfunction next() {\n  character = position < length ? charat(characters, position++) : 0;\n  if (column++, character === 10)\n    column = 1, line++;\n  return character;\n}\nfunction peek() {\n  return charat(characters, position);\n}\nfunction caret() {\n  return position;\n}\nfunction slice(begin, end) {\n  return substr(characters, begin, end);\n}\nfunction token(type) {\n  switch (type) {\n    case 0:\n    case 9:\n    case 10:\n    case 13:\n    case 32:\n      return 5;\n    case 33:\n    case 43:\n    case 44:\n    case 47:\n    case 62:\n    case 64:\n    case 126:\n    case 59:\n    case 123:\n    case 125:\n      return 4;\n    case 58:\n      return 3;\n    case 34:\n    case 39:\n    case 40:\n    case 91:\n      return 2;\n    case 41:\n    case 93:\n      return 1;\n  }\n  return 0;\n}\nfunction alloc(value) {\n  return line = column = 1, length = strlen(characters = value), position = 0, [];\n}\nfunction dealloc(value) {\n  return characters = \"\", value;\n}\nfunction delimit(type) {\n  return trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)));\n}\nfunction whitespace(type) {\n  while (character = peek())\n    if (character < 33)\n      next();\n    else\n      break;\n  return token(type) > 2 || token(character) > 3 ? \"\" : \" \";\n}\nfunction escaping(index, count) {\n  while (--count && next())\n    if (character < 48 || character > 102 || character > 57 && character < 65 || character > 70 && character < 97)\n      break;\n  return slice(index, caret() + (count < 6 && peek() == 32 && next() == 32));\n}\nfunction delimiter(type) {\n  while (next())\n    switch (character) {\n      case type:\n        return position;\n      case 34:\n      case 39:\n        if (type !== 34 && type !== 39)\n          delimiter(character);\n        break;\n      case 40:\n        if (type === 41)\n          delimiter(type);\n        break;\n      case 92:\n        next();\n        break;\n    }\n  return position;\n}\nfunction commenter(type, index) {\n  while (next())\n    if (type + character === 47 + 10)\n      break;\n    else if (type + character === 42 + 42 && peek() === 47)\n      break;\n  return \"/*\" + slice(index, position - 1) + \"*\" + from(type === 47 ? type : next());\n}\nfunction identifier(index) {\n  while (!token(peek()))\n    next();\n  return slice(index, position);\n}\n\n// node_modules/stylis/src/Parser.js\nfunction compile(value) {\n  return dealloc(parse(\"\", null, null, null, [\"\"], value = alloc(value), 0, [0], value));\n}\nfunction parse(value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n  var index = 0;\n  var offset = 0;\n  var length2 = pseudo;\n  var atrule = 0;\n  var property = 0;\n  var previous = 0;\n  var variable = 1;\n  var scanning = 1;\n  var ampersand = 1;\n  var character2 = 0;\n  var type = \"\";\n  var props = rules;\n  var children = rulesets;\n  var reference = rule;\n  var characters2 = type;\n  while (scanning)\n    switch (previous = character2, character2 = next()) {\n      case 40:\n        if (previous != 108 && charat(characters2, length2 - 1) == 58) {\n          if (indexof(characters2 += replace(delimit(character2), \"&\", \"&\\f\"), \"&\\f\") != -1)\n            ampersand = -1;\n          break;\n        }\n      case 34:\n      case 39:\n      case 91:\n        characters2 += delimit(character2);\n        break;\n      case 9:\n      case 10:\n      case 13:\n      case 32:\n        characters2 += whitespace(previous);\n        break;\n      case 92:\n        characters2 += escaping(caret() - 1, 7);\n        continue;\n      case 47:\n        switch (peek()) {\n          case 42:\n          case 47:\n            append(comment(commenter(next(), caret()), root, parent), declarations);\n            break;\n          default:\n            characters2 += \"/\";\n        }\n        break;\n      case 123 * variable:\n        points[index++] = strlen(characters2) * ampersand;\n      case 125 * variable:\n      case 59:\n      case 0:\n        switch (character2) {\n          case 0:\n          case 125:\n            scanning = 0;\n          case 59 + offset:\n            if (ampersand == -1)\n              characters2 = replace(characters2, /\\f/g, \"\");\n            if (property > 0 && strlen(characters2) - length2)\n              append(property > 32 ? declaration(characters2 + \";\", rule, parent, length2 - 1) : declaration(replace(characters2, \" \", \"\") + \";\", rule, parent, length2 - 2), declarations);\n            break;\n          case 59:\n            characters2 += \";\";\n          default:\n            append(reference = ruleset(characters2, root, parent, index, offset, rules, points, type, props = [], children = [], length2), rulesets);\n            if (character2 === 123)\n              if (offset === 0)\n                parse(characters2, root, reference, reference, props, rulesets, length2, points, children);\n              else\n                switch (atrule === 99 && charat(characters2, 3) === 110 ? 100 : atrule) {\n                  case 100:\n                  case 108:\n                  case 109:\n                  case 115:\n                    parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length2), children), rules, children, length2, points, rule ? props : children);\n                    break;\n                  default:\n                    parse(characters2, reference, reference, reference, [\"\"], children, 0, points, children);\n                }\n        }\n        index = offset = property = 0, variable = ampersand = 1, type = characters2 = \"\", length2 = pseudo;\n        break;\n      case 58:\n        length2 = 1 + strlen(characters2), property = previous;\n      default:\n        if (variable < 1) {\n          if (character2 == 123)\n            --variable;\n          else if (character2 == 125 && variable++ == 0 && prev() == 125)\n            continue;\n        }\n        switch (characters2 += from(character2), character2 * variable) {\n          case 38:\n            ampersand = offset > 0 ? 1 : (characters2 += \"\\f\", -1);\n            break;\n          case 44:\n            points[index++] = (strlen(characters2) - 1) * ampersand, ampersand = 1;\n            break;\n          case 64:\n            if (peek() === 45)\n              characters2 += delimit(next());\n            atrule = peek(), offset = length2 = strlen(type = characters2 += identifier(caret())), character2++;\n            break;\n          case 45:\n            if (previous === 45 && strlen(characters2) == 2)\n              variable = 0;\n        }\n    }\n  return rulesets;\n}\nfunction ruleset(value, root, parent, index, offset, rules, points, type, props, children, length2) {\n  var post = offset - 1;\n  var rule = offset === 0 ? rules : [\"\"];\n  var size = sizeof(rule);\n  for (var i = 0, j = 0, k = 0; i < index; ++i)\n    for (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n      if (z = trim(j > 0 ? rule[x] + \" \" + y : replace(y, /&\\f/g, rule[x])))\n        props[k++] = z;\n  return node(value, root, parent, offset === 0 ? RULESET : type, props, children, length2);\n}\nfunction comment(value, root, parent) {\n  return node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0);\n}\nfunction declaration(value, root, parent, length2) {\n  return node(value, root, parent, DECLARATION, substr(value, 0, length2), substr(value, length2 + 1, -1), length2);\n}\n\n// node_modules/stylis/src/Serializer.js\nfunction serialize(children, callback) {\n  var output = \"\";\n  var length2 = sizeof(children);\n  for (var i = 0; i < length2; i++)\n    output += callback(children[i], i, children, callback) || \"\";\n  return output;\n}\nfunction stringify(element, index, children, callback) {\n  switch (element.type) {\n    case LAYER:\n      if (element.children.length)\n        break;\n    case IMPORT:\n    case DECLARATION:\n      return element.return = element.return || element.value;\n    case COMMENT:\n      return \"\";\n    case KEYFRAMES:\n      return element.return = element.value + \"{\" + serialize(element.children, callback) + \"}\";\n    case RULESET:\n      element.value = element.props.join(\",\");\n  }\n  return strlen(children = serialize(element.children, callback)) ? element.return = element.value + \"{\" + children + \"}\" : \"\";\n}\n\n// node_modules/stylis/src/Middleware.js\nfunction middleware(collection) {\n  var length2 = sizeof(collection);\n  return function(element, index, children, callback) {\n    var output = \"\";\n    for (var i = 0; i < length2; i++)\n      output += collection[i](element, index, children, callback) || \"\";\n    return output;\n  };\n}\n\n// node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js\nvar weakMemoize = function weakMemoize2(func) {\n  var cache = /* @__PURE__ */ new WeakMap();\n  return function(arg) {\n    if (cache.has(arg)) {\n      return cache.get(arg);\n    }\n    var ret = func(arg);\n    cache.set(arg, ret);\n    return ret;\n  };\n};\n\n// node_modules/@emotion/cache/dist/emotion-cache.browser.development.esm.js\nvar identifierWithPointTracking = function identifierWithPointTracking2(begin, points, index) {\n  var previous = 0;\n  var character2 = 0;\n  while (true) {\n    previous = character2;\n    character2 = peek();\n    if (previous === 38 && character2 === 12) {\n      points[index] = 1;\n    }\n    if (token(character2)) {\n      break;\n    }\n    next();\n  }\n  return slice(begin, position);\n};\nvar toRules = function toRules2(parsed, points) {\n  var index = -1;\n  var character2 = 44;\n  do {\n    switch (token(character2)) {\n      case 0:\n        if (character2 === 38 && peek() === 12) {\n          points[index] = 1;\n        }\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n      case 2:\n        parsed[index] += delimit(character2);\n        break;\n      case 4:\n        if (character2 === 44) {\n          parsed[++index] = peek() === 58 ? \"&\\f\" : \"\";\n          points[index] = parsed[index].length;\n          break;\n        }\n      default:\n        parsed[index] += from(character2);\n    }\n  } while (character2 = next());\n  return parsed;\n};\nvar getRules = function getRules2(value, points) {\n  return dealloc(toRules(alloc(value), points));\n};\nvar fixedElements = /* @__PURE__ */ new WeakMap();\nvar compat = function compat2(element) {\n  if (element.type !== \"rule\" || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n  var value = element.value, parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n  while (parent.type !== \"rule\") {\n    parent = parent.parent;\n    if (!parent)\n      return;\n  }\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58 && !fixedElements.get(parent)) {\n    return;\n  }\n  if (isImplicitRule) {\n    return;\n  }\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel2(element) {\n  if (element.type === \"decl\") {\n    var value = element.value;\n    if (\n      // charcode for l\n      value.charCodeAt(0) === 108 && // charcode for b\n      value.charCodeAt(2) === 98\n    ) {\n      element[\"return\"] = \"\";\n      element.value = \"\";\n    }\n  }\n};\nvar ignoreFlag = \"emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason\";\nvar isIgnoringComment = function isIgnoringComment2(element) {\n  return element.type === \"comm\" && element.children.indexOf(ignoreFlag) > -1;\n};\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm2(cache) {\n  return function(element, index, children) {\n    if (element.type !== \"rule\" || cache.compat)\n      return;\n    var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n    if (unsafePseudoClasses) {\n      var isNested = !!element.parent;\n      var commentContainer = isNested ? element.parent.children : (\n        // global rule at the root level\n        children\n      );\n      for (var i = commentContainer.length - 1; i >= 0; i--) {\n        var node2 = commentContainer[i];\n        if (node2.line < element.line) {\n          break;\n        }\n        if (node2.column < element.column) {\n          if (isIgnoringComment(node2)) {\n            return;\n          }\n          break;\n        }\n      }\n      unsafePseudoClasses.forEach(function(unsafePseudoClass) {\n        console.error('The pseudo class \"' + unsafePseudoClass + '\" is potentially unsafe when doing server-side rendering. Try changing it to \"' + unsafePseudoClass.split(\"-child\")[0] + '-of-type\".');\n      });\n    }\n  };\n};\nvar isImportRule = function isImportRule2(element) {\n  return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules2(index, children) {\n  for (var i = index - 1; i >= 0; i--) {\n    if (!isImportRule(children[i])) {\n      return true;\n    }\n  }\n  return false;\n};\nvar nullifyElement = function nullifyElement2(element) {\n  element.type = \"\";\n  element.value = \"\";\n  element[\"return\"] = \"\";\n  element.children = \"\";\n  element.props = \"\";\n};\nvar incorrectImportAlarm = function incorrectImportAlarm2(element, index, children) {\n  if (!isImportRule(element)) {\n    return;\n  }\n  if (element.parent) {\n    console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n    nullifyElement(element);\n  } else if (isPrependedWithRegularRules(index, children)) {\n    console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n    nullifyElement(element);\n  }\n};\nfunction prefix2(value, length2) {\n  switch (hash(value, length2)) {\n    case 5103:\n      return WEBKIT + \"print-\" + value + value;\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921:\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005:\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855:\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    case 6165:\n      return WEBKIT + value + MS + \"flex-\" + value + value;\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + \"box-$1$2\" + MS + \"flex-$1$2\") + value;\n    case 5443:\n      return WEBKIT + value + MS + \"flex-item-\" + replace(value, /flex-|-self/, \"\") + value;\n    case 4675:\n      return WEBKIT + value + MS + \"flex-line-pack\" + replace(value, /align-content|flex-|-self/, \"\") + value;\n    case 5548:\n      return WEBKIT + value + MS + replace(value, \"shrink\", \"negative\") + value;\n    case 5292:\n      return WEBKIT + value + MS + replace(value, \"basis\", \"preferred-size\") + value;\n    case 6060:\n      return WEBKIT + \"box-\" + replace(value, \"-grow\", \"\") + WEBKIT + value + MS + replace(value, \"grow\", \"positive\") + value;\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, \"$1\" + WEBKIT + \"$2\") + value;\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + \"$1\"), /(image-set)/, WEBKIT + \"$1\"), value, \"\") + value;\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + \"$1$`$1\");\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + \"box-pack:$3\" + MS + \"flex-pack:$3\"), /s.+-b[^;]+/, \"justify\") + WEBKIT + value + value;\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + \"$1$2\") + value;\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      if (strlen(value) - 1 - length2 > 6)\n        switch (charat(value, length2 + 1)) {\n          case 109:\n            if (charat(value, length2 + 4) !== 45)\n              break;\n          case 102:\n            return replace(value, /(.+:)(.+)-([^]+)/, \"$1\" + WEBKIT + \"$2-$3$1\" + MOZ + (charat(value, length2 + 3) == 108 ? \"$3\" : \"$2-$3\")) + value;\n          case 115:\n            return ~indexof(value, \"stretch\") ? prefix2(replace(value, \"stretch\", \"fill-available\"), length2) + value : value;\n        }\n      break;\n    case 4949:\n      if (charat(value, length2 + 1) !== 115)\n        break;\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, \"!important\") && 10))) {\n        case 107:\n          return replace(value, \":\", \":\" + WEBKIT) + value;\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, \"$1\" + WEBKIT + (charat(value, 14) === 45 ? \"inline-\" : \"\") + \"box$3$1\" + WEBKIT + \"$2$3$1\" + MS + \"$2box$3\") + value;\n      }\n      break;\n    case 5936:\n      switch (charat(value, length2 + 11)) {\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, \"tb\") + value;\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, \"tb-rl\") + value;\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, \"lr\") + value;\n      }\n      return WEBKIT + value + MS + value + value;\n  }\n  return value;\n}\nvar prefixer = function prefixer2(element, index, children, callback) {\n  if (element.length > -1) {\n    if (!element[\"return\"])\n      switch (element.type) {\n        case DECLARATION:\n          element[\"return\"] = prefix2(element.value, element.length);\n          break;\n        case KEYFRAMES:\n          return serialize([copy(element, {\n            value: replace(element.value, \"@\", \"@\" + WEBKIT)\n          })], callback);\n        case RULESET:\n          if (element.length)\n            return combine(element.props, function(value) {\n              switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n                case \":read-only\":\n                case \":read-write\":\n                  return serialize([copy(element, {\n                    props: [replace(value, /:(read-\\w+)/, \":\" + MOZ + \"$1\")]\n                  })], callback);\n                case \"::placeholder\":\n                  return serialize([copy(element, {\n                    props: [replace(value, /:(plac\\w+)/, \":\" + WEBKIT + \"input-$1\")]\n                  }), copy(element, {\n                    props: [replace(value, /:(plac\\w+)/, \":\" + MOZ + \"$1\")]\n                  }), copy(element, {\n                    props: [replace(value, /:(plac\\w+)/, MS + \"input-$1\")]\n                  })], callback);\n              }\n              return \"\";\n            });\n      }\n  }\n};\nvar defaultStylisPlugins = [prefixer];\nvar createCache = function createCache2(options) {\n  var key = options.key;\n  if (!key) {\n    throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\nIf multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n  }\n  if (key === \"css\") {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\");\n    Array.prototype.forEach.call(ssrStyles, function(node2) {\n      var dataEmotionAttribute = node2.getAttribute(\"data-emotion\");\n      if (dataEmotionAttribute.indexOf(\" \") === -1) {\n        return;\n      }\n      document.head.appendChild(node2);\n      node2.setAttribute(\"data-s\", \"\");\n    });\n  }\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n  {\n    if (/[^a-z-]/.test(key)) {\n      throw new Error('Emotion key must only contain lower case alphabetical characters and - but \"' + key + '\" was passed');\n    }\n  }\n  var inserted = {};\n  var container;\n  var nodesToHydrate = [];\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call(\n      // this means we will ignore elements which don't have a space in them which\n      // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n      document.querySelectorAll('style[data-emotion^=\"' + key + ' \"]'),\n      function(node2) {\n        var attrib = node2.getAttribute(\"data-emotion\").split(\" \");\n        for (var i = 1; i < attrib.length; i++) {\n          inserted[attrib[i]] = true;\n        }\n        nodesToHydrate.push(node2);\n      }\n    );\n  }\n  var _insert;\n  var omnipresentPlugins = [compat, removeLabel];\n  {\n    omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n      get compat() {\n        return cache.compat;\n      }\n    }), incorrectImportAlarm);\n  }\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, function(element) {\n      if (!element.root) {\n        if (element[\"return\"]) {\n          currentSheet.insert(element[\"return\"]);\n        } else if (element.value && element.type !== COMMENT) {\n          currentSheet.insert(element.value + \"{}\");\n        }\n      }\n    }];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n    var stylis = function stylis2(styles) {\n      return serialize(compile(styles), serializer);\n    };\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n      if (serialized.map !== void 0) {\n        currentSheet = {\n          insert: function insert2(rule) {\n            sheet.insert(rule + serialized.map);\n          }\n        };\n      }\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n  var cache = {\n    key,\n    sheet: new StyleSheet({\n      key,\n      container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\n// node_modules/@emotion/react/_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.development.esm.js\nvar import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs());\n\n// node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js\nvar isBrowser = true;\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = \"\";\n  classNames.split(\" \").forEach(function(className) {\n    if (registered[className] !== void 0) {\n      registeredStyles.push(registered[className] + \";\");\n    } else if (className) {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar registerStyles = function registerStyles2(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n  if (\n    // we only need to add the styles to the registered cache if the\n    // class name could be used further down\n    // the tree but if it's a string tag, we know it won't\n    // so we don't have to add it to registered cache.\n    // this improves memory usage since we can avoid storing the whole style string\n    (isStringTag === false || // we need to always store it if we're in compat mode and\n    // in node since emotion-server relies on whether a style is in\n    // the registered cache to know whether a style is global or not\n    // also, note that this check will be dead code eliminated in the browser\n    isBrowser === false) && cache.registered[className] === void 0\n  ) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles2(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n  if (cache.inserted[serialized.name] === void 0) {\n    var current = serialized;\n    do {\n      cache.insert(serialized === current ? \".\" + className : \"\", current, cache.sheet, true);\n      current = current.next;\n    } while (current !== void 0);\n  }\n};\n\n// node_modules/@emotion/hash/dist/emotion-hash.esm.js\nfunction murmur2(str) {\n  var h = 0;\n  var k, i = 0, len = str.length;\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 255 | (str.charCodeAt(++i) & 255) << 8 | (str.charCodeAt(++i) & 255) << 16 | (str.charCodeAt(++i) & 255) << 24;\n    k = /* Math.imul(k, m): */\n    (k & 65535) * 1540483477 + ((k >>> 16) * 59797 << 16);\n    k ^= /* k >>> r: */\n    k >>> 24;\n    h = /* Math.imul(k, m): */\n    (k & 65535) * 1540483477 + ((k >>> 16) * 59797 << 16) ^ /* Math.imul(h, m): */\n    (h & 65535) * 1540483477 + ((h >>> 16) * 59797 << 16);\n  }\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 255) << 16;\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 255) << 8;\n    case 1:\n      h ^= str.charCodeAt(i) & 255;\n      h = /* Math.imul(h, m): */\n      (h & 65535) * 1540483477 + ((h >>> 16) * 59797 << 16);\n  }\n  h ^= h >>> 13;\n  h = /* Math.imul(h, m): */\n  (h & 65535) * 1540483477 + ((h >>> 16) * 59797 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\n// node_modules/@emotion/unitless/dist/emotion-unitless.esm.js\nvar unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  scale: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\n// node_modules/@emotion/serialize/dist/emotion-serialize.development.esm.js\nvar isDevelopment2 = true;\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = `You have illegal escape sequence in your template literal, most likely inside content's property value.\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \"content: '\\\\00d7';\" should become \"content: '\\\\\\\\00d7';\".\nYou can read more about this here:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences`;\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\nvar isCustomProperty = function isCustomProperty2(property) {\n  return property.charCodeAt(1) === 45;\n};\nvar isProcessableValue = function isProcessableValue2(value) {\n  return value != null && typeof value !== \"boolean\";\n};\nvar processStyleName = memoize(function(styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, \"-$&\").toLowerCase();\n});\nvar processStyleValue = function processStyleValue2(key, value) {\n  switch (key) {\n    case \"animation\":\n    case \"animationName\": {\n      if (typeof value === \"string\") {\n        return value.replace(animationRegex, function(match2, p1, p2) {\n          cursor = {\n            name: p1,\n            styles: p2,\n            next: cursor\n          };\n          return p1;\n        });\n      }\n    }\n  }\n  if (unitlessKeys[key] !== 1 && !isCustomProperty(key) && typeof value === \"number\" && value !== 0) {\n    return value + \"px\";\n  }\n  return value;\n};\n{\n  contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n  contentValues = [\"normal\", \"none\", \"initial\", \"inherit\", \"unset\"];\n  oldProcessStyleValue = processStyleValue;\n  msPattern = /^-ms-/;\n  hyphenPattern = /-(.)/g;\n  hyphenatedCache = {};\n  processStyleValue = function processStyleValue3(key, value) {\n    if (key === \"content\") {\n      if (typeof value !== \"string\" || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n    var processed = oldProcessStyleValue(key, value);\n    if (processed !== \"\" && !isCustomProperty(key) && key.indexOf(\"-\") !== -1 && hyphenatedCache[key] === void 0) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, \"ms-\").replace(hyphenPattern, function(str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n    return processed;\n  };\n}\nvar contentValuePattern;\nvar contentValues;\nvar oldProcessStyleValue;\nvar msPattern;\nvar hyphenPattern;\nvar hyphenatedCache;\nvar noComponentSelectorMessage = \"Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.\";\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return \"\";\n  }\n  var componentSelector = interpolation;\n  if (componentSelector.__emotion_styles !== void 0) {\n    if (String(componentSelector) === \"NO_COMPONENT_SELECTOR\") {\n      throw new Error(noComponentSelectorMessage);\n    }\n    return componentSelector;\n  }\n  switch (typeof interpolation) {\n    case \"boolean\": {\n      return \"\";\n    }\n    case \"object\": {\n      var keyframes3 = interpolation;\n      if (keyframes3.anim === 1) {\n        cursor = {\n          name: keyframes3.name,\n          styles: keyframes3.styles,\n          next: cursor\n        };\n        return keyframes3.name;\n      }\n      var serializedStyles = interpolation;\n      if (serializedStyles.styles !== void 0) {\n        var next2 = serializedStyles.next;\n        if (next2 !== void 0) {\n          while (next2 !== void 0) {\n            cursor = {\n              name: next2.name,\n              styles: next2.styles,\n              next: cursor\n            };\n            next2 = next2.next;\n          }\n        }\n        var styles = serializedStyles.styles + \";\";\n        if (serializedStyles.map !== void 0) {\n          styles += serializedStyles.map;\n        }\n        return styles;\n      }\n      return createStringFromObject(mergedProps, registered, interpolation);\n    }\n    case \"function\": {\n      if (mergedProps !== void 0) {\n        var previousCursor = cursor;\n        var result = interpolation(mergedProps);\n        cursor = previousCursor;\n        return handleInterpolation(mergedProps, registered, result);\n      } else {\n        console.error(\"Functions that are interpolated in css calls will be stringified.\\nIf you want to have a css call based on props, create a function that returns a css call like this\\nlet dynamicStyle = (props) => css`color: ${props.color}`\\nIt can be called directly with props or interpolated in a styled call like this\\nlet SomeComponent = styled('div')`${dynamicStyle}`\");\n      }\n      break;\n    }\n    case \"string\":\n      {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function(_match, _p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, \"\") + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n        if (matched.length) {\n          console.error(\"`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\nInstead of doing this:\\n\\n\" + [].concat(matched, [\"`\" + replaced + \"`\"]).join(\"\\n\") + \"\\n\\nYou should wrap it with `css` like this:\\n\\ncss`\" + replaced + \"`\");\n        }\n      }\n      break;\n  }\n  var asString = interpolation;\n  if (registered == null) {\n    return asString;\n  }\n  var cached = registered[asString];\n  return cached !== void 0 ? cached : asString;\n}\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = \"\";\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var key in obj) {\n      var value = obj[key];\n      if (typeof value !== \"object\") {\n        var asString = value;\n        if (registered != null && registered[asString] !== void 0) {\n          string += key + \"{\" + registered[asString] + \"}\";\n        } else if (isProcessableValue(asString)) {\n          string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n        }\n      } else {\n        if (key === \"NO_COMPONENT_SELECTOR\" && isDevelopment2) {\n          throw new Error(noComponentSelectorMessage);\n        }\n        if (Array.isArray(value) && typeof value[0] === \"string\" && (registered == null || registered[value[0]] === void 0)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n          switch (key) {\n            case \"animation\":\n            case \"animationName\": {\n              string += processStyleName(key) + \":\" + interpolated + \";\";\n              break;\n            }\n            default: {\n              if (key === \"undefined\") {\n                console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n              }\n              string += key + \"{\" + interpolated + \"}\";\n            }\n          }\n        }\n      }\n    }\n  }\n  return string;\n}\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n{\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n}\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === \"object\" && args[0] !== null && args[0].styles !== void 0) {\n    return args[0];\n  }\n  var stringMode = true;\n  var styles = \"\";\n  cursor = void 0;\n  var strings = args[0];\n  if (strings == null || strings.raw === void 0) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    var asTemplateStringsArr = strings;\n    if (asTemplateStringsArr[0] === void 0) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n    styles += asTemplateStringsArr[0];\n  }\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n    if (stringMode) {\n      var templateStringsArr = strings;\n      if (templateStringsArr[i] === void 0) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n      styles += templateStringsArr[i];\n    }\n  }\n  var sourceMap;\n  {\n    styles = styles.replace(sourceMapPattern, function(match3) {\n      sourceMap = match3;\n      return \"\";\n    });\n  }\n  labelPattern.lastIndex = 0;\n  var identifierName = \"\";\n  var match2;\n  while ((match2 = labelPattern.exec(styles)) !== null) {\n    identifierName += \"-\" + match2[1];\n  }\n  var name = murmur2(styles) + identifierName;\n  {\n    var devStyles = {\n      name,\n      styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n    return devStyles;\n  }\n}\n\n// node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js\nvar React = __toESM(require_react());\nvar syncFallback = function syncFallback2(create) {\n  return create();\n};\nvar useInsertionEffect2 = React[\"useInsertionEffect\"] ? React[\"useInsertionEffect\"] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect2 || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect2 || React.useLayoutEffect;\n\n// node_modules/@emotion/react/dist/emotion-element-7a1343fa.browser.development.esm.js\nvar EmotionCacheContext = React2.createContext(\n  // we're doing this to avoid preconstruct's dead code elimination in this one case\n  // because this module is primarily intended for the browser and node\n  // but it's also required in react native and similar environments sometimes\n  // and we could have a special build just for that\n  // but this is much easier and the native packages\n  // might use a different theme context in the future anyway\n  typeof HTMLElement !== \"undefined\" ? createCache({\n    key: \"css\"\n  }) : null\n);\n{\n  EmotionCacheContext.displayName = \"EmotionCacheContext\";\n}\nvar CacheProvider = EmotionCacheContext.Provider;\nvar withEmotionCache = function withEmotionCache2(func) {\n  return (0, import_react.forwardRef)(function(props, ref) {\n    var cache = (0, import_react.useContext)(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\nvar ThemeContext = React2.createContext({});\n{\n  ThemeContext.displayName = \"EmotionThemeContext\";\n}\nvar getTheme = function getTheme2(outerTheme, theme) {\n  if (typeof theme === \"function\") {\n    var mergedTheme = theme(outerTheme);\n    if (mergedTheme == null || typeof mergedTheme !== \"object\" || Array.isArray(mergedTheme)) {\n      throw new Error(\"[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!\");\n    }\n    return mergedTheme;\n  }\n  if (theme == null || typeof theme !== \"object\" || Array.isArray(theme)) {\n    throw new Error(\"[ThemeProvider] Please make your theme prop a plain object\");\n  }\n  return _extends({}, outerTheme, theme);\n};\nvar createCacheWithTheme = weakMemoize(function(outerTheme) {\n  return weakMemoize(function(theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar hasOwn = {}.hasOwnProperty;\nvar typePropName = \"__EMOTION_TYPE_PLEASE_DO_NOT_USE__\";\nvar labelPropName = \"__EMOTION_LABEL_PLEASE_DO_NOT_USE__\";\nvar Insertion = function Insertion2(_ref) {\n  var cache = _ref.cache, serialized = _ref.serialized, isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function() {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n  return null;\n};\nvar Emotion = withEmotionCache(\n  /* <any, any> */\n  function(props, cache, ref) {\n    var cssProp = props.css;\n    if (typeof cssProp === \"string\" && cache.registered[cssProp] !== void 0) {\n      cssProp = cache.registered[cssProp];\n    }\n    var WrappedComponent = props[typePropName];\n    var registeredStyles = [cssProp];\n    var className = \"\";\n    if (typeof props.className === \"string\") {\n      className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n    } else if (props.className != null) {\n      className = props.className + \" \";\n    }\n    var serialized = serializeStyles(registeredStyles, void 0, React2.useContext(ThemeContext));\n    if (serialized.name.indexOf(\"-\") === -1) {\n      var labelFromStack = props[labelPropName];\n      if (labelFromStack) {\n        serialized = serializeStyles([serialized, \"label:\" + labelFromStack + \";\"]);\n      }\n    }\n    className += cache.key + \"-\" + serialized.name;\n    var newProps = {};\n    for (var key in props) {\n      if (hasOwn.call(props, key) && key !== \"css\" && key !== typePropName && key !== labelPropName) {\n        newProps[key] = props[key];\n      }\n    }\n    newProps.className = className;\n    if (ref) {\n      newProps.ref = ref;\n    }\n    return React2.createElement(React2.Fragment, null, React2.createElement(Insertion, {\n      cache,\n      serialized,\n      isStringTag: typeof WrappedComponent === \"string\"\n    }), React2.createElement(WrappedComponent, newProps));\n  }\n);\n{\n  Emotion.displayName = \"EmotionCssPropInternal\";\n}\n\n// node_modules/@emotion/react/dist/emotion-react.browser.development.esm.js\nvar React3 = __toESM(require_react());\nvar import_hoist_non_react_statics2 = __toESM(require_hoist_non_react_statics_cjs());\nvar isDevelopment3 = true;\nvar pkg = {\n  name: \"@emotion/react\",\n  version: \"11.13.3\",\n  main: \"dist/emotion-react.cjs.js\",\n  module: \"dist/emotion-react.esm.js\",\n  exports: {\n    \".\": {\n      types: {\n        \"import\": \"./dist/emotion-react.cjs.mjs\",\n        \"default\": \"./dist/emotion-react.cjs.js\"\n      },\n      development: {\n        \"edge-light\": {\n          module: \"./dist/emotion-react.development.edge-light.esm.js\",\n          \"import\": \"./dist/emotion-react.development.edge-light.cjs.mjs\",\n          \"default\": \"./dist/emotion-react.development.edge-light.cjs.js\"\n        },\n        worker: {\n          module: \"./dist/emotion-react.development.edge-light.esm.js\",\n          \"import\": \"./dist/emotion-react.development.edge-light.cjs.mjs\",\n          \"default\": \"./dist/emotion-react.development.edge-light.cjs.js\"\n        },\n        workerd: {\n          module: \"./dist/emotion-react.development.edge-light.esm.js\",\n          \"import\": \"./dist/emotion-react.development.edge-light.cjs.mjs\",\n          \"default\": \"./dist/emotion-react.development.edge-light.cjs.js\"\n        },\n        browser: {\n          module: \"./dist/emotion-react.browser.development.esm.js\",\n          \"import\": \"./dist/emotion-react.browser.development.cjs.mjs\",\n          \"default\": \"./dist/emotion-react.browser.development.cjs.js\"\n        },\n        module: \"./dist/emotion-react.development.esm.js\",\n        \"import\": \"./dist/emotion-react.development.cjs.mjs\",\n        \"default\": \"./dist/emotion-react.development.cjs.js\"\n      },\n      \"edge-light\": {\n        module: \"./dist/emotion-react.edge-light.esm.js\",\n        \"import\": \"./dist/emotion-react.edge-light.cjs.mjs\",\n        \"default\": \"./dist/emotion-react.edge-light.cjs.js\"\n      },\n      worker: {\n        module: \"./dist/emotion-react.edge-light.esm.js\",\n        \"import\": \"./dist/emotion-react.edge-light.cjs.mjs\",\n        \"default\": \"./dist/emotion-react.edge-light.cjs.js\"\n      },\n      workerd: {\n        module: \"./dist/emotion-react.edge-light.esm.js\",\n        \"import\": \"./dist/emotion-react.edge-light.cjs.mjs\",\n        \"default\": \"./dist/emotion-react.edge-light.cjs.js\"\n      },\n      browser: {\n        module: \"./dist/emotion-react.browser.esm.js\",\n        \"import\": \"./dist/emotion-react.browser.cjs.mjs\",\n        \"default\": \"./dist/emotion-react.browser.cjs.js\"\n      },\n      module: \"./dist/emotion-react.esm.js\",\n      \"import\": \"./dist/emotion-react.cjs.mjs\",\n      \"default\": \"./dist/emotion-react.cjs.js\"\n    },\n    \"./jsx-runtime\": {\n      types: {\n        \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n        \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n      },\n      development: {\n        \"edge-light\": {\n          module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.edge-light.esm.js\",\n          \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.edge-light.cjs.mjs\",\n          \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.edge-light.cjs.js\"\n        },\n        worker: {\n          module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.edge-light.esm.js\",\n          \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.edge-light.cjs.mjs\",\n          \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.edge-light.cjs.js\"\n        },\n        workerd: {\n          module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.edge-light.esm.js\",\n          \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.edge-light.cjs.mjs\",\n          \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.edge-light.cjs.js\"\n        },\n        browser: {\n          module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.development.esm.js\",\n          \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.development.cjs.mjs\",\n          \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.development.cjs.js\"\n        },\n        module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.esm.js\",\n        \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.cjs.mjs\",\n        \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.development.cjs.js\"\n      },\n      \"edge-light\": {\n        module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.edge-light.esm.js\",\n        \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.edge-light.cjs.mjs\",\n        \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.edge-light.cjs.js\"\n      },\n      worker: {\n        module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.edge-light.esm.js\",\n        \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.edge-light.cjs.mjs\",\n        \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.edge-light.cjs.js\"\n      },\n      workerd: {\n        module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.edge-light.esm.js\",\n        \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.edge-light.cjs.mjs\",\n        \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.edge-light.cjs.js\"\n      },\n      browser: {\n        module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n        \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.cjs.mjs\",\n        \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.cjs.js\"\n      },\n      module: \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\",\n      \"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n      \"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n    },\n    \"./_isolated-hnrs\": {\n      types: {\n        \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n        \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n      },\n      development: {\n        \"edge-light\": {\n          module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.edge-light.esm.js\",\n          \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.edge-light.cjs.mjs\",\n          \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.edge-light.cjs.js\"\n        },\n        worker: {\n          module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.edge-light.esm.js\",\n          \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.edge-light.cjs.mjs\",\n          \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.edge-light.cjs.js\"\n        },\n        workerd: {\n          module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.edge-light.esm.js\",\n          \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.edge-light.cjs.mjs\",\n          \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.edge-light.cjs.js\"\n        },\n        browser: {\n          module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.development.esm.js\",\n          \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.development.cjs.mjs\",\n          \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.development.cjs.js\"\n        },\n        module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.esm.js\",\n        \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.cjs.mjs\",\n        \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.development.cjs.js\"\n      },\n      \"edge-light\": {\n        module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.edge-light.esm.js\",\n        \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.edge-light.cjs.mjs\",\n        \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.edge-light.cjs.js\"\n      },\n      worker: {\n        module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.edge-light.esm.js\",\n        \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.edge-light.cjs.mjs\",\n        \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.edge-light.cjs.js\"\n      },\n      workerd: {\n        module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.edge-light.esm.js\",\n        \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.edge-light.cjs.mjs\",\n        \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.edge-light.cjs.js\"\n      },\n      browser: {\n        module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n        \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.cjs.mjs\",\n        \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.cjs.js\"\n      },\n      module: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\",\n      \"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n      \"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n    },\n    \"./jsx-dev-runtime\": {\n      types: {\n        \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n        \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n      },\n      development: {\n        \"edge-light\": {\n          module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.edge-light.esm.js\",\n          \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.edge-light.cjs.mjs\",\n          \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.edge-light.cjs.js\"\n        },\n        worker: {\n          module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.edge-light.esm.js\",\n          \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.edge-light.cjs.mjs\",\n          \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.edge-light.cjs.js\"\n        },\n        workerd: {\n          module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.edge-light.esm.js\",\n          \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.edge-light.cjs.mjs\",\n          \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.edge-light.cjs.js\"\n        },\n        browser: {\n          module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.development.esm.js\",\n          \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.development.cjs.mjs\",\n          \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.development.cjs.js\"\n        },\n        module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.esm.js\",\n        \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.cjs.mjs\",\n        \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.development.cjs.js\"\n      },\n      \"edge-light\": {\n        module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.edge-light.esm.js\",\n        \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.edge-light.cjs.mjs\",\n        \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.edge-light.cjs.js\"\n      },\n      worker: {\n        module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.edge-light.esm.js\",\n        \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.edge-light.cjs.mjs\",\n        \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.edge-light.cjs.js\"\n      },\n      workerd: {\n        module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.edge-light.esm.js\",\n        \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.edge-light.cjs.mjs\",\n        \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.edge-light.cjs.js\"\n      },\n      browser: {\n        module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n        \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.cjs.mjs\",\n        \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.cjs.js\"\n      },\n      module: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\",\n      \"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n      \"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n    },\n    \"./package.json\": \"./package.json\",\n    \"./types/css-prop\": \"./types/css-prop.d.ts\",\n    \"./macro\": {\n      types: {\n        \"import\": \"./macro.d.mts\",\n        \"default\": \"./macro.d.ts\"\n      },\n      \"default\": \"./macro.js\"\n    }\n  },\n  imports: {\n    \"#is-development\": {\n      development: \"./src/conditions/true.js\",\n      \"default\": \"./src/conditions/false.js\"\n    },\n    \"#is-browser\": {\n      \"edge-light\": \"./src/conditions/false.js\",\n      workerd: \"./src/conditions/false.js\",\n      worker: \"./src/conditions/false.js\",\n      browser: \"./src/conditions/true.js\",\n      \"default\": \"./src/conditions/is-browser.js\"\n    }\n  },\n  types: \"types/index.d.ts\",\n  files: [\n    \"src\",\n    \"dist\",\n    \"jsx-runtime\",\n    \"jsx-dev-runtime\",\n    \"_isolated-hnrs\",\n    \"types/*.d.ts\",\n    \"macro.*\"\n  ],\n  sideEffects: false,\n  author: \"Emotion Contributors\",\n  license: \"MIT\",\n  scripts: {\n    \"test:typescript\": \"dtslint types\"\n  },\n  dependencies: {\n    \"@babel/runtime\": \"^7.18.3\",\n    \"@emotion/babel-plugin\": \"^11.12.0\",\n    \"@emotion/cache\": \"^11.13.0\",\n    \"@emotion/serialize\": \"^1.3.1\",\n    \"@emotion/use-insertion-effect-with-fallbacks\": \"^1.1.0\",\n    \"@emotion/utils\": \"^1.4.0\",\n    \"@emotion/weak-memoize\": \"^0.4.0\",\n    \"hoist-non-react-statics\": \"^3.3.1\"\n  },\n  peerDependencies: {\n    react: \">=16.8.0\"\n  },\n  peerDependenciesMeta: {\n    \"@types/react\": {\n      optional: true\n    }\n  },\n  devDependencies: {\n    \"@definitelytyped/dtslint\": \"0.0.112\",\n    \"@emotion/css\": \"11.13.0\",\n    \"@emotion/css-prettifier\": \"1.1.4\",\n    \"@emotion/server\": \"11.11.0\",\n    \"@emotion/styled\": \"11.13.0\",\n    \"html-tag-names\": \"^1.1.2\",\n    react: \"16.14.0\",\n    \"svg-tag-names\": \"^1.1.1\",\n    typescript: \"^5.4.5\"\n  },\n  repository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n  publishConfig: {\n    access: \"public\"\n  },\n  \"umd:main\": \"dist/emotion-react.umd.min.js\",\n  preconstruct: {\n    entrypoints: [\n      \"./index.js\",\n      \"./jsx-runtime.js\",\n      \"./jsx-dev-runtime.js\",\n      \"./_isolated-hnrs.js\"\n    ],\n    umdName: \"emotionReact\",\n    exports: {\n      extra: {\n        \"./types/css-prop\": \"./types/css-prop.d.ts\",\n        \"./macro\": {\n          types: {\n            \"import\": \"./macro.d.mts\",\n            \"default\": \"./macro.d.ts\"\n          },\n          \"default\": \"./macro.js\"\n        }\n      }\n    }\n  }\n};\nvar warnedAboutCssPropForGlobal = false;\nvar Global = withEmotionCache(function(props, cache) {\n  if (!warnedAboutCssPropForGlobal && // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // I don't really want to add it to the type since it shouldn't be used\n  (props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], void 0, React3.useContext(ThemeContext));\n  var sheetRef = React3.useRef();\n  useInsertionEffectWithLayoutFallback(function() {\n    var key = cache.key + \"-global\";\n    var sheet = new cache.sheet.constructor({\n      key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false;\n    var node2 = document.querySelector('style[data-emotion=\"' + key + \" \" + serialized.name + '\"]');\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n    if (node2 !== null) {\n      rehydrating = true;\n      node2.setAttribute(\"data-emotion\", key);\n      sheet.hydrate([node2]);\n    }\n    sheetRef.current = [sheet, rehydrating];\n    return function() {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function() {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0], rehydrating = sheetRefCurrent[1];\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n    if (serialized.next !== void 0) {\n      insertStyles(cache, serialized.next, true);\n    }\n    if (sheet.tags.length) {\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n{\n  Global.displayName = \"EmotionGlobal\";\n}\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  return serializeStyles(args);\n}\nvar keyframes = function keyframes2() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name;\n  return {\n    name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\nvar classnames = function classnames2(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = \"\";\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null)\n      continue;\n    var toAdd = void 0;\n    switch (typeof arg) {\n      case \"boolean\":\n        break;\n      case \"object\": {\n        if (Array.isArray(arg)) {\n          toAdd = classnames2(arg);\n        } else {\n          if (arg.styles !== void 0 && arg.name !== void 0) {\n            console.error(\"You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.\");\n          }\n          toAdd = \"\";\n          for (var k in arg) {\n            if (arg[k] && k) {\n              toAdd && (toAdd += \" \");\n              toAdd += k;\n            }\n          }\n        }\n        break;\n      }\n      default: {\n        toAdd = arg;\n      }\n    }\n    if (toAdd) {\n      cls && (cls += \" \");\n      cls += toAdd;\n    }\n  }\n  return cls;\n};\nfunction merge(registered, css2, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n  return rawClassName + css2(registeredStyles);\n}\nvar Insertion3 = function Insertion4(_ref) {\n  var cache = _ref.cache, serializedArr = _ref.serializedArr;\n  useInsertionEffectAlwaysWithSyncFallback(function() {\n    for (var i = 0; i < serializedArr.length; i++) {\n      insertStyles(cache, serializedArr[i], false);\n    }\n  });\n  return null;\n};\nvar ClassNames = withEmotionCache(function(props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\n  var css2 = function css3() {\n    if (hasRendered && isDevelopment3) {\n      throw new Error(\"css can only be used during render\");\n    }\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var serialized = serializeStyles(args, cache.registered);\n    serializedArr.push(serialized);\n    registerStyles(cache, serialized, false);\n    return cache.key + \"-\" + serialized.name;\n  };\n  var cx = function cx2() {\n    if (hasRendered && isDevelopment3) {\n      throw new Error(\"cx can only be used during render\");\n    }\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return merge(cache.registered, css2, classnames(args));\n  };\n  var content = {\n    css: css2,\n    cx,\n    theme: React3.useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return React3.createElement(React3.Fragment, null, React3.createElement(Insertion3, {\n    cache,\n    serializedArr\n  }), ele);\n});\n{\n  ClassNames.displayName = \"EmotionClassNames\";\n}\n{\n  isBrowser2 = typeof document !== \"undefined\";\n  isTestEnv = typeof jest !== \"undefined\" || typeof vi !== \"undefined\";\n  if (isBrowser2 && !isTestEnv) {\n    globalContext = // $FlowIgnore\n    typeof globalThis !== \"undefined\" ? globalThis : isBrowser2 ? window : global;\n    globalKey = \"__EMOTION_REACT_\" + pkg.version.split(\".\")[0] + \"__\";\n    if (globalContext[globalKey]) {\n      console.warn(\"You are loading @emotion/react when it is already loaded. Running multiple instances may cause problems. This can happen if multiple versions are used, or if multiple builds of the same version are used.\");\n    }\n    globalContext[globalKey] = true;\n  }\n}\nvar isBrowser2;\nvar isTestEnv;\nvar globalContext;\nvar globalKey;\n\n// node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.development.esm.js\nvar testOmitPropsOnStringTag = isPropValid;\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent2(key) {\n  return key !== \"theme\";\n};\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp2(tag) {\n  return typeof tag === \"string\" && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps2(tag, options, isReal) {\n  var shouldForwardProp;\n  if (options) {\n    var optionsShouldForwardProp = options.shouldForwardProp;\n    shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function(propName) {\n      return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n    } : optionsShouldForwardProp;\n  }\n  if (typeof shouldForwardProp !== \"function\" && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n  return shouldForwardProp;\n};\nvar isDevelopment4 = true;\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR2 = `You have illegal escape sequence in your template literal, most likely inside content's property value.\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \"content: '\\\\00d7';\" should become \"content: '\\\\\\\\00d7';\".\nYou can read more about this here:\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences`;\nvar Insertion5 = function Insertion6(_ref) {\n  var cache = _ref.cache, serialized = _ref.serialized, isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function() {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n  return null;\n};\nvar createStyled = function createStyled2(tag, options) {\n  {\n    if (tag === void 0) {\n      throw new Error(\"You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.\");\n    }\n  }\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n  var identifierName;\n  var targetClassName;\n  if (options !== void 0) {\n    identifierName = options.label;\n    targetClassName = options.target;\n  }\n  var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp(\"as\");\n  return function() {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== void 0 ? tag.__emotion_styles.slice(0) : [];\n    if (identifierName !== void 0) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n    if (args[0] == null || args[0].raw === void 0) {\n      styles.push.apply(styles, args);\n    } else {\n      if (args[0][0] === void 0) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR2);\n      }\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n      for (; i < len; i++) {\n        if (args[0][i] === void 0) {\n          console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR2);\n        }\n        styles.push(args[i], args[0][i]);\n      }\n    }\n    var Styled = withEmotionCache(function(props, cache, ref) {\n      var FinalTag = shouldUseAs && props.as || baseTag;\n      var className = \"\";\n      var classInterpolations = [];\n      var mergedProps = props;\n      if (props.theme == null) {\n        mergedProps = {};\n        for (var key in props) {\n          mergedProps[key] = props[key];\n        }\n        mergedProps.theme = React4.useContext(ThemeContext);\n      }\n      if (typeof props.className === \"string\") {\n        className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n      } else if (props.className != null) {\n        className = props.className + \" \";\n      }\n      var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n      className += cache.key + \"-\" + serialized.name;\n      if (targetClassName !== void 0) {\n        className += \" \" + targetClassName;\n      }\n      var finalShouldForwardProp = shouldUseAs && shouldForwardProp === void 0 ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n      var newProps = {};\n      for (var _key in props) {\n        if (shouldUseAs && _key === \"as\")\n          continue;\n        if (finalShouldForwardProp(_key)) {\n          newProps[_key] = props[_key];\n        }\n      }\n      newProps.className = className;\n      if (ref) {\n        newProps.ref = ref;\n      }\n      return React4.createElement(React4.Fragment, null, React4.createElement(Insertion5, {\n        cache,\n        serialized,\n        isStringTag: typeof FinalTag === \"string\"\n      }), React4.createElement(FinalTag, newProps));\n    });\n    Styled.displayName = identifierName !== void 0 ? identifierName : \"Styled(\" + (typeof baseTag === \"string\" ? baseTag : baseTag.displayName || baseTag.name || \"Component\") + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, \"toString\", {\n      value: function value() {\n        if (targetClassName === void 0 && isDevelopment4) {\n          return \"NO_COMPONENT_SELECTOR\";\n        }\n        return \".\" + targetClassName;\n      }\n    });\n    Styled.withComponent = function(nextTag, nextOptions) {\n      return createStyled2(nextTag, _extends({}, options, nextOptions, {\n        shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n      })).apply(void 0, styles);\n    };\n    return Styled;\n  };\n};\n\n// node_modules/@emotion/styled/dist/emotion-styled.browser.development.esm.js\nvar import_react3 = __toESM(require_react());\nvar tags = [\n  \"a\",\n  \"abbr\",\n  \"address\",\n  \"area\",\n  \"article\",\n  \"aside\",\n  \"audio\",\n  \"b\",\n  \"base\",\n  \"bdi\",\n  \"bdo\",\n  \"big\",\n  \"blockquote\",\n  \"body\",\n  \"br\",\n  \"button\",\n  \"canvas\",\n  \"caption\",\n  \"cite\",\n  \"code\",\n  \"col\",\n  \"colgroup\",\n  \"data\",\n  \"datalist\",\n  \"dd\",\n  \"del\",\n  \"details\",\n  \"dfn\",\n  \"dialog\",\n  \"div\",\n  \"dl\",\n  \"dt\",\n  \"em\",\n  \"embed\",\n  \"fieldset\",\n  \"figcaption\",\n  \"figure\",\n  \"footer\",\n  \"form\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"head\",\n  \"header\",\n  \"hgroup\",\n  \"hr\",\n  \"html\",\n  \"i\",\n  \"iframe\",\n  \"img\",\n  \"input\",\n  \"ins\",\n  \"kbd\",\n  \"keygen\",\n  \"label\",\n  \"legend\",\n  \"li\",\n  \"link\",\n  \"main\",\n  \"map\",\n  \"mark\",\n  \"marquee\",\n  \"menu\",\n  \"menuitem\",\n  \"meta\",\n  \"meter\",\n  \"nav\",\n  \"noscript\",\n  \"object\",\n  \"ol\",\n  \"optgroup\",\n  \"option\",\n  \"output\",\n  \"p\",\n  \"param\",\n  \"picture\",\n  \"pre\",\n  \"progress\",\n  \"q\",\n  \"rp\",\n  \"rt\",\n  \"ruby\",\n  \"s\",\n  \"samp\",\n  \"script\",\n  \"section\",\n  \"select\",\n  \"small\",\n  \"source\",\n  \"span\",\n  \"strong\",\n  \"style\",\n  \"sub\",\n  \"summary\",\n  \"sup\",\n  \"table\",\n  \"tbody\",\n  \"td\",\n  \"textarea\",\n  \"tfoot\",\n  \"th\",\n  \"thead\",\n  \"time\",\n  \"title\",\n  \"tr\",\n  \"track\",\n  \"u\",\n  \"ul\",\n  \"var\",\n  \"video\",\n  \"wbr\",\n  // SVG\n  \"circle\",\n  \"clipPath\",\n  \"defs\",\n  \"ellipse\",\n  \"foreignObject\",\n  \"g\",\n  \"image\",\n  \"line\",\n  \"linearGradient\",\n  \"mask\",\n  \"path\",\n  \"pattern\",\n  \"polygon\",\n  \"polyline\",\n  \"radialGradient\",\n  \"rect\",\n  \"stop\",\n  \"svg\",\n  \"text\",\n  \"tspan\"\n];\nvar newStyled = createStyled.bind();\ntags.forEach(function(tagName) {\n  newStyled[tagName] = newStyled(tagName);\n});\n\n// node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js\nvar React5 = __toESM(require_react(), 1);\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nvar QueryClientContext = React5.createContext(\n  void 0\n);\nvar useQueryClient = (queryClient) => {\n  const client = React5.useContext(QueryClientContext);\n  if (queryClient) {\n    return queryClient;\n  }\n  if (!client) {\n    throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n  }\n  return client;\n};\nvar QueryClientProvider = ({\n  client,\n  children\n}) => {\n  React5.useEffect(() => {\n    client.mount();\n    return () => {\n      client.unmount();\n    };\n  }, [client]);\n  return (0, import_jsx_runtime.jsx)(QueryClientContext.Provider, { value: client, children });\n};\n\n// node_modules/@tanstack/query-core/build/modern/subscribable.js\nvar Subscribable = class {\n  constructor() {\n    this.listeners = /* @__PURE__ */ new Set();\n    this.subscribe = this.subscribe.bind(this);\n  }\n  subscribe(listener) {\n    this.listeners.add(listener);\n    this.onSubscribe();\n    return () => {\n      this.listeners.delete(listener);\n      this.onUnsubscribe();\n    };\n  }\n  hasListeners() {\n    return this.listeners.size > 0;\n  }\n  onSubscribe() {\n  }\n  onUnsubscribe() {\n  }\n};\n\n// node_modules/@tanstack/query-core/build/modern/utils.js\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n  return void 0;\n}\nfunction functionalUpdate(updater, input) {\n  return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n  return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n  return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n  return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveEnabled(enabled, query) {\n  return typeof enabled === \"function\" ? enabled(query) : enabled;\n}\nfunction matchQuery(filters, query) {\n  const {\n    type = \"all\",\n    exact,\n    fetchStatus,\n    predicate,\n    queryKey,\n    stale\n  } = filters;\n  if (queryKey) {\n    if (exact) {\n      if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n        return false;\n      }\n    } else if (!partialMatchKey(query.queryKey, queryKey)) {\n      return false;\n    }\n  }\n  if (type !== \"all\") {\n    const isActive = query.isActive();\n    if (type === \"active\" && !isActive) {\n      return false;\n    }\n    if (type === \"inactive\" && isActive) {\n      return false;\n    }\n  }\n  if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n    return false;\n  }\n  if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n    return false;\n  }\n  if (predicate && !predicate(query)) {\n    return false;\n  }\n  return true;\n}\nfunction matchMutation(filters, mutation) {\n  const { exact, status, predicate, mutationKey } = filters;\n  if (mutationKey) {\n    if (!mutation.options.mutationKey) {\n      return false;\n    }\n    if (exact) {\n      if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n        return false;\n      }\n    } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n      return false;\n    }\n  }\n  if (status && mutation.state.status !== status) {\n    return false;\n  }\n  if (predicate && !predicate(mutation)) {\n    return false;\n  }\n  return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n  const hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashKey;\n  return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n  return JSON.stringify(\n    queryKey,\n    (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n      result[key] = val[key];\n      return result;\n    }, {}) : val\n  );\n}\nfunction partialMatchKey(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n    return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]));\n  }\n  return false;\n}\nfunction replaceEqualDeep(a, b) {\n  if (a === b) {\n    return a;\n  }\n  const array = isPlainArray(a) && isPlainArray(b);\n  if (array || isPlainObject(a) && isPlainObject(b)) {\n    const aItems = array ? a : Object.keys(a);\n    const aSize = aItems.length;\n    const bItems = array ? b : Object.keys(b);\n    const bSize = bItems.length;\n    const copy2 = array ? [] : {};\n    let equalItems = 0;\n    for (let i = 0; i < bSize; i++) {\n      const key = array ? i : bItems[i];\n      if ((!array && aItems.includes(key) || array) && a[key] === void 0 && b[key] === void 0) {\n        copy2[key] = void 0;\n        equalItems++;\n      } else {\n        copy2[key] = replaceEqualDeep(a[key], b[key]);\n        if (copy2[key] === a[key] && a[key] !== void 0) {\n          equalItems++;\n        }\n      }\n    }\n    return aSize === bSize && equalItems === aSize ? a : copy2;\n  }\n  return b;\n}\nfunction shallowEqualObjects(a, b) {\n  if (!b || Object.keys(a).length !== Object.keys(b).length) {\n    return false;\n  }\n  for (const key in a) {\n    if (a[key] !== b[key]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction isPlainArray(value) {\n  return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n  if (!hasObjectPrototype(o)) {\n    return false;\n  }\n  const ctor = o.constructor;\n  if (ctor === void 0) {\n    return true;\n  }\n  const prot = ctor.prototype;\n  if (!hasObjectPrototype(prot)) {\n    return false;\n  }\n  if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n    return false;\n  }\n  if (Object.getPrototypeOf(o) !== Object.prototype) {\n    return false;\n  }\n  return true;\n}\nfunction hasObjectPrototype(o) {\n  return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n  return new Promise((resolve2) => {\n    setTimeout(resolve2, timeout);\n  });\n}\nfunction replaceData(prevData, data, options) {\n  if (typeof options.structuralSharing === \"function\") {\n    return options.structuralSharing(prevData, data);\n  } else if (options.structuralSharing !== false) {\n    if (true) {\n      try {\n        return replaceEqualDeep(prevData, data);\n      } catch (error) {\n        console.error(\n          `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n        );\n      }\n    }\n    return replaceEqualDeep(prevData, data);\n  }\n  return data;\n}\nfunction addToEnd(items, item, max = 0) {\n  const newItems = [...items, item];\n  return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n  const newItems = [item, ...items];\n  return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n  if (true) {\n    if (options.queryFn === skipToken) {\n      console.error(\n        `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n      );\n    }\n  }\n  if (!options.queryFn && (fetchOptions == null ? void 0 : fetchOptions.initialPromise)) {\n    return () => fetchOptions.initialPromise;\n  }\n  if (!options.queryFn || options.queryFn === skipToken) {\n    return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n  }\n  return options.queryFn;\n}\n\n// node_modules/@tanstack/query-core/build/modern/focusManager.js\nvar _focused, _cleanup, _setup, _a;\nvar FocusManager = (_a = class extends Subscribable {\n  constructor() {\n    super();\n    __privateAdd(this, _focused, void 0);\n    __privateAdd(this, _cleanup, void 0);\n    __privateAdd(this, _setup, void 0);\n    __privateSet(this, _setup, (onFocus) => {\n      if (!isServer && window.addEventListener) {\n        const listener = () => onFocus();\n        window.addEventListener(\"visibilitychange\", listener, false);\n        return () => {\n          window.removeEventListener(\"visibilitychange\", listener);\n        };\n      }\n      return;\n    });\n  }\n  onSubscribe() {\n    if (!__privateGet(this, _cleanup)) {\n      this.setEventListener(__privateGet(this, _setup));\n    }\n  }\n  onUnsubscribe() {\n    var _a12;\n    if (!this.hasListeners()) {\n      (_a12 = __privateGet(this, _cleanup)) == null ? void 0 : _a12.call(this);\n      __privateSet(this, _cleanup, void 0);\n    }\n  }\n  setEventListener(setup) {\n    var _a12;\n    __privateSet(this, _setup, setup);\n    (_a12 = __privateGet(this, _cleanup)) == null ? void 0 : _a12.call(this);\n    __privateSet(this, _cleanup, setup((focused) => {\n      if (typeof focused === \"boolean\") {\n        this.setFocused(focused);\n      } else {\n        this.onFocus();\n      }\n    }));\n  }\n  setFocused(focused) {\n    const changed = __privateGet(this, _focused) !== focused;\n    if (changed) {\n      __privateSet(this, _focused, focused);\n      this.onFocus();\n    }\n  }\n  onFocus() {\n    const isFocused = this.isFocused();\n    this.listeners.forEach((listener) => {\n      listener(isFocused);\n    });\n  }\n  isFocused() {\n    var _a12;\n    if (typeof __privateGet(this, _focused) === \"boolean\") {\n      return __privateGet(this, _focused);\n    }\n    return ((_a12 = globalThis.document) == null ? void 0 : _a12.visibilityState) !== \"hidden\";\n  }\n}, _focused = new WeakMap(), _cleanup = new WeakMap(), _setup = new WeakMap(), _a);\nvar focusManager = new FocusManager();\n\n// node_modules/@tanstack/query-core/build/modern/onlineManager.js\nvar _online, _cleanup2, _setup2, _a2;\nvar OnlineManager = (_a2 = class extends Subscribable {\n  constructor() {\n    super();\n    __privateAdd(this, _online, true);\n    __privateAdd(this, _cleanup2, void 0);\n    __privateAdd(this, _setup2, void 0);\n    __privateSet(this, _setup2, (onOnline) => {\n      if (!isServer && window.addEventListener) {\n        const onlineListener = () => onOnline(true);\n        const offlineListener = () => onOnline(false);\n        window.addEventListener(\"online\", onlineListener, false);\n        window.addEventListener(\"offline\", offlineListener, false);\n        return () => {\n          window.removeEventListener(\"online\", onlineListener);\n          window.removeEventListener(\"offline\", offlineListener);\n        };\n      }\n      return;\n    });\n  }\n  onSubscribe() {\n    if (!__privateGet(this, _cleanup2)) {\n      this.setEventListener(__privateGet(this, _setup2));\n    }\n  }\n  onUnsubscribe() {\n    var _a12;\n    if (!this.hasListeners()) {\n      (_a12 = __privateGet(this, _cleanup2)) == null ? void 0 : _a12.call(this);\n      __privateSet(this, _cleanup2, void 0);\n    }\n  }\n  setEventListener(setup) {\n    var _a12;\n    __privateSet(this, _setup2, setup);\n    (_a12 = __privateGet(this, _cleanup2)) == null ? void 0 : _a12.call(this);\n    __privateSet(this, _cleanup2, setup(this.setOnline.bind(this)));\n  }\n  setOnline(online) {\n    const changed = __privateGet(this, _online) !== online;\n    if (changed) {\n      __privateSet(this, _online, online);\n      this.listeners.forEach((listener) => {\n        listener(online);\n      });\n    }\n  }\n  isOnline() {\n    return __privateGet(this, _online);\n  }\n}, _online = new WeakMap(), _cleanup2 = new WeakMap(), _setup2 = new WeakMap(), _a2);\nvar onlineManager = new OnlineManager();\n\n// node_modules/@tanstack/query-core/build/modern/thenable.js\nfunction pendingThenable() {\n  let resolve2;\n  let reject;\n  const thenable = new Promise((_resolve, _reject) => {\n    resolve2 = _resolve;\n    reject = _reject;\n  });\n  thenable.status = \"pending\";\n  thenable.catch(() => {\n  });\n  function finalize(data) {\n    Object.assign(thenable, data);\n    delete thenable.resolve;\n    delete thenable.reject;\n  }\n  thenable.resolve = (value) => {\n    finalize({\n      status: \"fulfilled\",\n      value\n    });\n    resolve2(value);\n  };\n  thenable.reject = (reason) => {\n    finalize({\n      status: \"rejected\",\n      reason\n    });\n    reject(reason);\n  };\n  return thenable;\n}\n\n// node_modules/@tanstack/query-core/build/modern/retryer.js\nfunction defaultRetryDelay(failureCount) {\n  return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n  return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n  constructor(options) {\n    super(\"CancelledError\");\n    this.revert = options == null ? void 0 : options.revert;\n    this.silent = options == null ? void 0 : options.silent;\n  }\n};\nfunction isCancelledError(value) {\n  return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n  let isRetryCancelled = false;\n  let failureCount = 0;\n  let isResolved = false;\n  let continueFn;\n  const thenable = pendingThenable();\n  const cancel = (cancelOptions) => {\n    var _a12;\n    if (!isResolved) {\n      reject(new CancelledError(cancelOptions));\n      (_a12 = config.abort) == null ? void 0 : _a12.call(config);\n    }\n  };\n  const cancelRetry = () => {\n    isRetryCancelled = true;\n  };\n  const continueRetry = () => {\n    isRetryCancelled = false;\n  };\n  const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n  const canStart = () => canFetch(config.networkMode) && config.canRun();\n  const resolve2 = (value) => {\n    var _a12;\n    if (!isResolved) {\n      isResolved = true;\n      (_a12 = config.onSuccess) == null ? void 0 : _a12.call(config, value);\n      continueFn == null ? void 0 : continueFn();\n      thenable.resolve(value);\n    }\n  };\n  const reject = (value) => {\n    var _a12;\n    if (!isResolved) {\n      isResolved = true;\n      (_a12 = config.onError) == null ? void 0 : _a12.call(config, value);\n      continueFn == null ? void 0 : continueFn();\n      thenable.reject(value);\n    }\n  };\n  const pause = () => {\n    return new Promise((continueResolve) => {\n      var _a12;\n      continueFn = (value) => {\n        if (isResolved || canContinue()) {\n          continueResolve(value);\n        }\n      };\n      (_a12 = config.onPause) == null ? void 0 : _a12.call(config);\n    }).then(() => {\n      var _a12;\n      continueFn = void 0;\n      if (!isResolved) {\n        (_a12 = config.onContinue) == null ? void 0 : _a12.call(config);\n      }\n    });\n  };\n  const run = () => {\n    if (isResolved) {\n      return;\n    }\n    let promiseOrValue;\n    const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n    try {\n      promiseOrValue = initialPromise ?? config.fn();\n    } catch (error) {\n      promiseOrValue = Promise.reject(error);\n    }\n    Promise.resolve(promiseOrValue).then(resolve2).catch((error) => {\n      var _a12;\n      if (isResolved) {\n        return;\n      }\n      const retry = config.retry ?? (isServer ? 0 : 3);\n      const retryDelay = config.retryDelay ?? defaultRetryDelay;\n      const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n      const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n      if (isRetryCancelled || !shouldRetry) {\n        reject(error);\n        return;\n      }\n      failureCount++;\n      (_a12 = config.onFail) == null ? void 0 : _a12.call(config, failureCount, error);\n      sleep(delay).then(() => {\n        return canContinue() ? void 0 : pause();\n      }).then(() => {\n        if (isRetryCancelled) {\n          reject(error);\n        } else {\n          run();\n        }\n      });\n    });\n  };\n  return {\n    promise: thenable,\n    cancel,\n    continue: () => {\n      continueFn == null ? void 0 : continueFn();\n      return thenable;\n    },\n    cancelRetry,\n    continueRetry,\n    canStart,\n    start: () => {\n      if (canStart()) {\n        run();\n      } else {\n        pause().then(run);\n      }\n      return thenable;\n    }\n  };\n}\n\n// node_modules/@tanstack/query-core/build/modern/notifyManager.js\nfunction createNotifyManager() {\n  let queue = [];\n  let transactions = 0;\n  let notifyFn = (callback) => {\n    callback();\n  };\n  let batchNotifyFn = (callback) => {\n    callback();\n  };\n  let scheduleFn = (cb) => setTimeout(cb, 0);\n  const schedule = (callback) => {\n    if (transactions) {\n      queue.push(callback);\n    } else {\n      scheduleFn(() => {\n        notifyFn(callback);\n      });\n    }\n  };\n  const flush = () => {\n    const originalQueue = queue;\n    queue = [];\n    if (originalQueue.length) {\n      scheduleFn(() => {\n        batchNotifyFn(() => {\n          originalQueue.forEach((callback) => {\n            notifyFn(callback);\n          });\n        });\n      });\n    }\n  };\n  return {\n    batch: (callback) => {\n      let result;\n      transactions++;\n      try {\n        result = callback();\n      } finally {\n        transactions--;\n        if (!transactions) {\n          flush();\n        }\n      }\n      return result;\n    },\n    /**\n     * All calls to the wrapped function will be batched.\n     */\n    batchCalls: (callback) => {\n      return (...args) => {\n        schedule(() => {\n          callback(...args);\n        });\n      };\n    },\n    schedule,\n    /**\n     * Use this method to set a custom notify function.\n     * This can be used to for example wrap notifications with `React.act` while running tests.\n     */\n    setNotifyFunction: (fn) => {\n      notifyFn = fn;\n    },\n    /**\n     * Use this method to set a custom function to batch notifications together into a single tick.\n     * By default React Query will use the batch function provided by ReactDOM or React Native.\n     */\n    setBatchNotifyFunction: (fn) => {\n      batchNotifyFn = fn;\n    },\n    setScheduler: (fn) => {\n      scheduleFn = fn;\n    }\n  };\n}\nvar notifyManager = createNotifyManager();\n\n// node_modules/@tanstack/query-core/build/modern/removable.js\nvar _gcTimeout, _a3;\nvar Removable = (_a3 = class {\n  constructor() {\n    __privateAdd(this, _gcTimeout, void 0);\n  }\n  destroy() {\n    this.clearGcTimeout();\n  }\n  scheduleGc() {\n    this.clearGcTimeout();\n    if (isValidTimeout(this.gcTime)) {\n      __privateSet(this, _gcTimeout, setTimeout(() => {\n        this.optionalRemove();\n      }, this.gcTime));\n    }\n  }\n  updateGcTime(newGcTime) {\n    this.gcTime = Math.max(\n      this.gcTime || 0,\n      newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n    );\n  }\n  clearGcTimeout() {\n    if (__privateGet(this, _gcTimeout)) {\n      clearTimeout(__privateGet(this, _gcTimeout));\n      __privateSet(this, _gcTimeout, void 0);\n    }\n  }\n}, _gcTimeout = new WeakMap(), _a3);\n\n// node_modules/@tanstack/query-core/build/modern/query.js\nvar _initialState, _revertState, _cache, _retryer, _defaultOptions, _abortSignalConsumed, _dispatch, dispatch_fn, _a4;\nvar Query = (_a4 = class extends Removable {\n  constructor(config) {\n    super();\n    __privateAdd(this, _dispatch);\n    __privateAdd(this, _initialState, void 0);\n    __privateAdd(this, _revertState, void 0);\n    __privateAdd(this, _cache, void 0);\n    __privateAdd(this, _retryer, void 0);\n    __privateAdd(this, _defaultOptions, void 0);\n    __privateAdd(this, _abortSignalConsumed, void 0);\n    __privateSet(this, _abortSignalConsumed, false);\n    __privateSet(this, _defaultOptions, config.defaultOptions);\n    this.setOptions(config.options);\n    this.observers = [];\n    __privateSet(this, _cache, config.cache);\n    this.queryKey = config.queryKey;\n    this.queryHash = config.queryHash;\n    __privateSet(this, _initialState, getDefaultState(this.options));\n    this.state = config.state ?? __privateGet(this, _initialState);\n    this.scheduleGc();\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  get promise() {\n    var _a12;\n    return (_a12 = __privateGet(this, _retryer)) == null ? void 0 : _a12.promise;\n  }\n  setOptions(options) {\n    this.options = { ...__privateGet(this, _defaultOptions), ...options };\n    this.updateGcTime(this.options.gcTime);\n  }\n  optionalRemove() {\n    if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n      __privateGet(this, _cache).remove(this);\n    }\n  }\n  setData(newData, options) {\n    const data = replaceData(this.state.data, newData, this.options);\n    __privateMethod(this, _dispatch, dispatch_fn).call(this, {\n      data,\n      type: \"success\",\n      dataUpdatedAt: options == null ? void 0 : options.updatedAt,\n      manual: options == null ? void 0 : options.manual\n    });\n    return data;\n  }\n  setState(state, setStateOptions) {\n    __privateMethod(this, _dispatch, dispatch_fn).call(this, { type: \"setState\", state, setStateOptions });\n  }\n  cancel(options) {\n    var _a12, _b;\n    const promise = (_a12 = __privateGet(this, _retryer)) == null ? void 0 : _a12.promise;\n    (_b = __privateGet(this, _retryer)) == null ? void 0 : _b.cancel(options);\n    return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n  }\n  destroy() {\n    super.destroy();\n    this.cancel({ silent: true });\n  }\n  reset() {\n    this.destroy();\n    this.setState(__privateGet(this, _initialState));\n  }\n  isActive() {\n    return this.observers.some(\n      (observer) => resolveEnabled(observer.options.enabled, this) !== false\n    );\n  }\n  isDisabled() {\n    if (this.getObserversCount() > 0) {\n      return !this.isActive();\n    }\n    return this.options.queryFn === skipToken || this.state.dataUpdateCount + this.state.errorUpdateCount === 0;\n  }\n  isStale() {\n    if (this.state.isInvalidated) {\n      return true;\n    }\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => observer.getCurrentResult().isStale\n      );\n    }\n    return this.state.data === void 0;\n  }\n  isStaleByTime(staleTime = 0) {\n    return this.state.isInvalidated || this.state.data === void 0 || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n  }\n  onFocus() {\n    var _a12;\n    const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n    observer == null ? void 0 : observer.refetch({ cancelRefetch: false });\n    (_a12 = __privateGet(this, _retryer)) == null ? void 0 : _a12.continue();\n  }\n  onOnline() {\n    var _a12;\n    const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n    observer == null ? void 0 : observer.refetch({ cancelRefetch: false });\n    (_a12 = __privateGet(this, _retryer)) == null ? void 0 : _a12.continue();\n  }\n  addObserver(observer) {\n    if (!this.observers.includes(observer)) {\n      this.observers.push(observer);\n      this.clearGcTimeout();\n      __privateGet(this, _cache).notify({ type: \"observerAdded\", query: this, observer });\n    }\n  }\n  removeObserver(observer) {\n    if (this.observers.includes(observer)) {\n      this.observers = this.observers.filter((x) => x !== observer);\n      if (!this.observers.length) {\n        if (__privateGet(this, _retryer)) {\n          if (__privateGet(this, _abortSignalConsumed)) {\n            __privateGet(this, _retryer).cancel({ revert: true });\n          } else {\n            __privateGet(this, _retryer).cancelRetry();\n          }\n        }\n        this.scheduleGc();\n      }\n      __privateGet(this, _cache).notify({ type: \"observerRemoved\", query: this, observer });\n    }\n  }\n  getObserversCount() {\n    return this.observers.length;\n  }\n  invalidate() {\n    if (!this.state.isInvalidated) {\n      __privateMethod(this, _dispatch, dispatch_fn).call(this, { type: \"invalidate\" });\n    }\n  }\n  fetch(options, fetchOptions) {\n    var _a12, _b, _c;\n    if (this.state.fetchStatus !== \"idle\") {\n      if (this.state.data !== void 0 && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) {\n        this.cancel({ silent: true });\n      } else if (__privateGet(this, _retryer)) {\n        __privateGet(this, _retryer).continueRetry();\n        return __privateGet(this, _retryer).promise;\n      }\n    }\n    if (options) {\n      this.setOptions(options);\n    }\n    if (!this.options.queryFn) {\n      const observer = this.observers.find((x) => x.options.queryFn);\n      if (observer) {\n        this.setOptions(observer.options);\n      }\n    }\n    if (true) {\n      if (!Array.isArray(this.options.queryKey)) {\n        console.error(\n          `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n        );\n      }\n    }\n    const abortController = new AbortController();\n    const addSignalProperty = (object) => {\n      Object.defineProperty(object, \"signal\", {\n        enumerable: true,\n        get: () => {\n          __privateSet(this, _abortSignalConsumed, true);\n          return abortController.signal;\n        }\n      });\n    };\n    const fetchFn = () => {\n      const queryFn = ensureQueryFn(this.options, fetchOptions);\n      const queryFnContext = {\n        queryKey: this.queryKey,\n        meta: this.meta\n      };\n      addSignalProperty(queryFnContext);\n      __privateSet(this, _abortSignalConsumed, false);\n      if (this.options.persister) {\n        return this.options.persister(\n          queryFn,\n          queryFnContext,\n          this\n        );\n      }\n      return queryFn(queryFnContext);\n    };\n    const context = {\n      fetchOptions,\n      options: this.options,\n      queryKey: this.queryKey,\n      state: this.state,\n      fetchFn\n    };\n    addSignalProperty(context);\n    (_a12 = this.options.behavior) == null ? void 0 : _a12.onFetch(\n      context,\n      this\n    );\n    __privateSet(this, _revertState, this.state);\n    if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== ((_b = context.fetchOptions) == null ? void 0 : _b.meta)) {\n      __privateMethod(this, _dispatch, dispatch_fn).call(this, { type: \"fetch\", meta: (_c = context.fetchOptions) == null ? void 0 : _c.meta });\n    }\n    const onError = (error) => {\n      var _a13, _b2, _c2, _d;\n      if (!(isCancelledError(error) && error.silent)) {\n        __privateMethod(this, _dispatch, dispatch_fn).call(this, {\n          type: \"error\",\n          error\n        });\n      }\n      if (!isCancelledError(error)) {\n        (_b2 = (_a13 = __privateGet(this, _cache).config).onError) == null ? void 0 : _b2.call(\n          _a13,\n          error,\n          this\n        );\n        (_d = (_c2 = __privateGet(this, _cache).config).onSettled) == null ? void 0 : _d.call(\n          _c2,\n          this.state.data,\n          error,\n          this\n        );\n      }\n      this.scheduleGc();\n    };\n    __privateSet(this, _retryer, createRetryer({\n      initialPromise: fetchOptions == null ? void 0 : fetchOptions.initialPromise,\n      fn: context.fetchFn,\n      abort: abortController.abort.bind(abortController),\n      onSuccess: (data) => {\n        var _a13, _b2, _c2, _d;\n        if (data === void 0) {\n          if (true) {\n            console.error(\n              `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n            );\n          }\n          onError(new Error(`${this.queryHash} data is undefined`));\n          return;\n        }\n        try {\n          this.setData(data);\n        } catch (error) {\n          onError(error);\n          return;\n        }\n        (_b2 = (_a13 = __privateGet(this, _cache).config).onSuccess) == null ? void 0 : _b2.call(_a13, data, this);\n        (_d = (_c2 = __privateGet(this, _cache).config).onSettled) == null ? void 0 : _d.call(\n          _c2,\n          data,\n          this.state.error,\n          this\n        );\n        this.scheduleGc();\n      },\n      onError,\n      onFail: (failureCount, error) => {\n        __privateMethod(this, _dispatch, dispatch_fn).call(this, { type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        __privateMethod(this, _dispatch, dispatch_fn).call(this, { type: \"pause\" });\n      },\n      onContinue: () => {\n        __privateMethod(this, _dispatch, dispatch_fn).call(this, { type: \"continue\" });\n      },\n      retry: context.options.retry,\n      retryDelay: context.options.retryDelay,\n      networkMode: context.options.networkMode,\n      canRun: () => true\n    }));\n    return __privateGet(this, _retryer).start();\n  }\n}, _initialState = new WeakMap(), _revertState = new WeakMap(), _cache = new WeakMap(), _retryer = new WeakMap(), _defaultOptions = new WeakMap(), _abortSignalConsumed = new WeakMap(), _dispatch = new WeakSet(), dispatch_fn = function(action) {\n  const reducer = (state) => {\n    switch (action.type) {\n      case \"failed\":\n        return {\n          ...state,\n          fetchFailureCount: action.failureCount,\n          fetchFailureReason: action.error\n        };\n      case \"pause\":\n        return {\n          ...state,\n          fetchStatus: \"paused\"\n        };\n      case \"continue\":\n        return {\n          ...state,\n          fetchStatus: \"fetching\"\n        };\n      case \"fetch\":\n        return {\n          ...state,\n          ...fetchState(state.data, this.options),\n          fetchMeta: action.meta ?? null\n        };\n      case \"success\":\n        return {\n          ...state,\n          data: action.data,\n          dataUpdateCount: state.dataUpdateCount + 1,\n          dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n          error: null,\n          isInvalidated: false,\n          status: \"success\",\n          ...!action.manual && {\n            fetchStatus: \"idle\",\n            fetchFailureCount: 0,\n            fetchFailureReason: null\n          }\n        };\n      case \"error\":\n        const error = action.error;\n        if (isCancelledError(error) && error.revert && __privateGet(this, _revertState)) {\n          return { ...__privateGet(this, _revertState), fetchStatus: \"idle\" };\n        }\n        return {\n          ...state,\n          error,\n          errorUpdateCount: state.errorUpdateCount + 1,\n          errorUpdatedAt: Date.now(),\n          fetchFailureCount: state.fetchFailureCount + 1,\n          fetchFailureReason: error,\n          fetchStatus: \"idle\",\n          status: \"error\"\n        };\n      case \"invalidate\":\n        return {\n          ...state,\n          isInvalidated: true\n        };\n      case \"setState\":\n        return {\n          ...state,\n          ...action.state\n        };\n    }\n  };\n  this.state = reducer(this.state);\n  notifyManager.batch(() => {\n    this.observers.forEach((observer) => {\n      observer.onQueryUpdate();\n    });\n    __privateGet(this, _cache).notify({ query: this, type: \"updated\", action });\n  });\n}, _a4);\nfunction fetchState(data, options) {\n  return {\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n    ...data === void 0 && {\n      error: null,\n      status: \"pending\"\n    }\n  };\n}\nfunction getDefaultState(options) {\n  const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n  const hasData = data !== void 0;\n  const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n  return {\n    data,\n    dataUpdateCount: 0,\n    dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n    error: null,\n    errorUpdateCount: 0,\n    errorUpdatedAt: 0,\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchMeta: null,\n    isInvalidated: false,\n    status: hasData ? \"success\" : \"pending\",\n    fetchStatus: \"idle\"\n  };\n}\n\n// node_modules/@tanstack/query-core/build/modern/queryCache.js\nvar _queries, _a5;\nvar QueryCache = (_a5 = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    __privateAdd(this, _queries, void 0);\n    this.config = config;\n    __privateSet(this, _queries, /* @__PURE__ */ new Map());\n  }\n  build(client, options, state) {\n    const queryKey = options.queryKey;\n    const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n    let query = this.get(queryHash);\n    if (!query) {\n      query = new Query({\n        cache: this,\n        queryKey,\n        queryHash,\n        options: client.defaultQueryOptions(options),\n        state,\n        defaultOptions: client.getQueryDefaults(queryKey)\n      });\n      this.add(query);\n    }\n    return query;\n  }\n  add(query) {\n    if (!__privateGet(this, _queries).has(query.queryHash)) {\n      __privateGet(this, _queries).set(query.queryHash, query);\n      this.notify({\n        type: \"added\",\n        query\n      });\n    }\n  }\n  remove(query) {\n    const queryInMap = __privateGet(this, _queries).get(query.queryHash);\n    if (queryInMap) {\n      query.destroy();\n      if (queryInMap === query) {\n        __privateGet(this, _queries).delete(query.queryHash);\n      }\n      this.notify({ type: \"removed\", query });\n    }\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        this.remove(query);\n      });\n    });\n  }\n  get(queryHash) {\n    return __privateGet(this, _queries).get(queryHash);\n  }\n  getAll() {\n    return [...__privateGet(this, _queries).values()];\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (query) => matchQuery(defaultedFilters, query)\n    );\n  }\n  findAll(filters = {}) {\n    const queries = this.getAll();\n    return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  onFocus() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onFocus();\n      });\n    });\n  }\n  onOnline() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onOnline();\n      });\n    });\n  }\n}, _queries = new WeakMap(), _a5);\n\n// node_modules/@tanstack/query-core/build/modern/mutation.js\nvar _observers, _mutationCache, _retryer2, _dispatch2, dispatch_fn2, _a6;\nvar Mutation = (_a6 = class extends Removable {\n  constructor(config) {\n    super();\n    __privateAdd(this, _dispatch2);\n    __privateAdd(this, _observers, void 0);\n    __privateAdd(this, _mutationCache, void 0);\n    __privateAdd(this, _retryer2, void 0);\n    this.mutationId = config.mutationId;\n    __privateSet(this, _mutationCache, config.mutationCache);\n    __privateSet(this, _observers, []);\n    this.state = config.state || getDefaultState2();\n    this.setOptions(config.options);\n    this.scheduleGc();\n  }\n  setOptions(options) {\n    this.options = options;\n    this.updateGcTime(this.options.gcTime);\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  addObserver(observer) {\n    if (!__privateGet(this, _observers).includes(observer)) {\n      __privateGet(this, _observers).push(observer);\n      this.clearGcTimeout();\n      __privateGet(this, _mutationCache).notify({\n        type: \"observerAdded\",\n        mutation: this,\n        observer\n      });\n    }\n  }\n  removeObserver(observer) {\n    __privateSet(this, _observers, __privateGet(this, _observers).filter((x) => x !== observer));\n    this.scheduleGc();\n    __privateGet(this, _mutationCache).notify({\n      type: \"observerRemoved\",\n      mutation: this,\n      observer\n    });\n  }\n  optionalRemove() {\n    if (!__privateGet(this, _observers).length) {\n      if (this.state.status === \"pending\") {\n        this.scheduleGc();\n      } else {\n        __privateGet(this, _mutationCache).remove(this);\n      }\n    }\n  }\n  continue() {\n    var _a12;\n    return ((_a12 = __privateGet(this, _retryer2)) == null ? void 0 : _a12.continue()) ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n    this.execute(this.state.variables);\n  }\n  async execute(variables) {\n    var _a12, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;\n    __privateSet(this, _retryer2, createRetryer({\n      fn: () => {\n        if (!this.options.mutationFn) {\n          return Promise.reject(new Error(\"No mutationFn found\"));\n        }\n        return this.options.mutationFn(variables);\n      },\n      onFail: (failureCount, error) => {\n        __privateMethod(this, _dispatch2, dispatch_fn2).call(this, { type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        __privateMethod(this, _dispatch2, dispatch_fn2).call(this, { type: \"pause\" });\n      },\n      onContinue: () => {\n        __privateMethod(this, _dispatch2, dispatch_fn2).call(this, { type: \"continue\" });\n      },\n      retry: this.options.retry ?? 0,\n      retryDelay: this.options.retryDelay,\n      networkMode: this.options.networkMode,\n      canRun: () => __privateGet(this, _mutationCache).canRun(this)\n    }));\n    const restored = this.state.status === \"pending\";\n    const isPaused = !__privateGet(this, _retryer2).canStart();\n    try {\n      if (!restored) {\n        __privateMethod(this, _dispatch2, dispatch_fn2).call(this, { type: \"pending\", variables, isPaused });\n        await ((_b = (_a12 = __privateGet(this, _mutationCache).config).onMutate) == null ? void 0 : _b.call(\n          _a12,\n          variables,\n          this\n        ));\n        const context = await ((_d = (_c = this.options).onMutate) == null ? void 0 : _d.call(_c, variables));\n        if (context !== this.state.context) {\n          __privateMethod(this, _dispatch2, dispatch_fn2).call(this, {\n            type: \"pending\",\n            context,\n            variables,\n            isPaused\n          });\n        }\n      }\n      const data = await __privateGet(this, _retryer2).start();\n      await ((_f = (_e = __privateGet(this, _mutationCache).config).onSuccess) == null ? void 0 : _f.call(\n        _e,\n        data,\n        variables,\n        this.state.context,\n        this\n      ));\n      await ((_h = (_g = this.options).onSuccess) == null ? void 0 : _h.call(_g, data, variables, this.state.context));\n      await ((_j = (_i = __privateGet(this, _mutationCache).config).onSettled) == null ? void 0 : _j.call(\n        _i,\n        data,\n        null,\n        this.state.variables,\n        this.state.context,\n        this\n      ));\n      await ((_l = (_k = this.options).onSettled) == null ? void 0 : _l.call(_k, data, null, variables, this.state.context));\n      __privateMethod(this, _dispatch2, dispatch_fn2).call(this, { type: \"success\", data });\n      return data;\n    } catch (error) {\n      try {\n        await ((_n = (_m = __privateGet(this, _mutationCache).config).onError) == null ? void 0 : _n.call(\n          _m,\n          error,\n          variables,\n          this.state.context,\n          this\n        ));\n        await ((_p = (_o = this.options).onError) == null ? void 0 : _p.call(\n          _o,\n          error,\n          variables,\n          this.state.context\n        ));\n        await ((_r = (_q = __privateGet(this, _mutationCache).config).onSettled) == null ? void 0 : _r.call(\n          _q,\n          void 0,\n          error,\n          this.state.variables,\n          this.state.context,\n          this\n        ));\n        await ((_t = (_s = this.options).onSettled) == null ? void 0 : _t.call(\n          _s,\n          void 0,\n          error,\n          variables,\n          this.state.context\n        ));\n        throw error;\n      } finally {\n        __privateMethod(this, _dispatch2, dispatch_fn2).call(this, { type: \"error\", error });\n      }\n    } finally {\n      __privateGet(this, _mutationCache).runNext(this);\n    }\n  }\n}, _observers = new WeakMap(), _mutationCache = new WeakMap(), _retryer2 = new WeakMap(), _dispatch2 = new WeakSet(), dispatch_fn2 = function(action) {\n  const reducer = (state) => {\n    switch (action.type) {\n      case \"failed\":\n        return {\n          ...state,\n          failureCount: action.failureCount,\n          failureReason: action.error\n        };\n      case \"pause\":\n        return {\n          ...state,\n          isPaused: true\n        };\n      case \"continue\":\n        return {\n          ...state,\n          isPaused: false\n        };\n      case \"pending\":\n        return {\n          ...state,\n          context: action.context,\n          data: void 0,\n          failureCount: 0,\n          failureReason: null,\n          error: null,\n          isPaused: action.isPaused,\n          status: \"pending\",\n          variables: action.variables,\n          submittedAt: Date.now()\n        };\n      case \"success\":\n        return {\n          ...state,\n          data: action.data,\n          failureCount: 0,\n          failureReason: null,\n          error: null,\n          status: \"success\",\n          isPaused: false\n        };\n      case \"error\":\n        return {\n          ...state,\n          data: void 0,\n          error: action.error,\n          failureCount: state.failureCount + 1,\n          failureReason: action.error,\n          isPaused: false,\n          status: \"error\"\n        };\n    }\n  };\n  this.state = reducer(this.state);\n  notifyManager.batch(() => {\n    __privateGet(this, _observers).forEach((observer) => {\n      observer.onMutationUpdate(action);\n    });\n    __privateGet(this, _mutationCache).notify({\n      mutation: this,\n      type: \"updated\",\n      action\n    });\n  });\n}, _a6);\nfunction getDefaultState2() {\n  return {\n    context: void 0,\n    data: void 0,\n    error: null,\n    failureCount: 0,\n    failureReason: null,\n    isPaused: false,\n    status: \"idle\",\n    variables: void 0,\n    submittedAt: 0\n  };\n}\n\n// node_modules/@tanstack/query-core/build/modern/mutationCache.js\nvar _mutations, _mutationId, _a7;\nvar MutationCache = (_a7 = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    __privateAdd(this, _mutations, void 0);\n    __privateAdd(this, _mutationId, void 0);\n    this.config = config;\n    __privateSet(this, _mutations, /* @__PURE__ */ new Map());\n    __privateSet(this, _mutationId, Date.now());\n  }\n  build(client, options, state) {\n    const mutation = new Mutation({\n      mutationCache: this,\n      mutationId: ++__privateWrapper(this, _mutationId)._,\n      options: client.defaultMutationOptions(options),\n      state\n    });\n    this.add(mutation);\n    return mutation;\n  }\n  add(mutation) {\n    const scope = scopeFor(mutation);\n    const mutations = __privateGet(this, _mutations).get(scope) ?? [];\n    mutations.push(mutation);\n    __privateGet(this, _mutations).set(scope, mutations);\n    this.notify({ type: \"added\", mutation });\n  }\n  remove(mutation) {\n    var _a12;\n    const scope = scopeFor(mutation);\n    if (__privateGet(this, _mutations).has(scope)) {\n      const mutations = (_a12 = __privateGet(this, _mutations).get(scope)) == null ? void 0 : _a12.filter((x) => x !== mutation);\n      if (mutations) {\n        if (mutations.length === 0) {\n          __privateGet(this, _mutations).delete(scope);\n        } else {\n          __privateGet(this, _mutations).set(scope, mutations);\n        }\n      }\n    }\n    this.notify({ type: \"removed\", mutation });\n  }\n  canRun(mutation) {\n    var _a12;\n    const firstPendingMutation = (_a12 = __privateGet(this, _mutations).get(scopeFor(mutation))) == null ? void 0 : _a12.find((m) => m.state.status === \"pending\");\n    return !firstPendingMutation || firstPendingMutation === mutation;\n  }\n  runNext(mutation) {\n    var _a12;\n    const foundMutation = (_a12 = __privateGet(this, _mutations).get(scopeFor(mutation))) == null ? void 0 : _a12.find((m) => m !== mutation && m.state.isPaused);\n    return (foundMutation == null ? void 0 : foundMutation.continue()) ?? Promise.resolve();\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((mutation) => {\n        this.remove(mutation);\n      });\n    });\n  }\n  getAll() {\n    return [...__privateGet(this, _mutations).values()].flat();\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (mutation) => matchMutation(defaultedFilters, mutation)\n    );\n  }\n  findAll(filters = {}) {\n    return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  resumePausedMutations() {\n    const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n    return notifyManager.batch(\n      () => Promise.all(\n        pausedMutations.map((mutation) => mutation.continue().catch(noop))\n      )\n    );\n  }\n}, _mutations = new WeakMap(), _mutationId = new WeakMap(), _a7);\nfunction scopeFor(mutation) {\n  var _a12;\n  return ((_a12 = mutation.options.scope) == null ? void 0 : _a12.id) ?? String(mutation.mutationId);\n}\n\n// node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js\nfunction infiniteQueryBehavior(pages) {\n  return {\n    onFetch: (context, query) => {\n      var _a12, _b, _c, _d, _e;\n      const options = context.options;\n      const direction = (_c = (_b = (_a12 = context.fetchOptions) == null ? void 0 : _a12.meta) == null ? void 0 : _b.fetchMore) == null ? void 0 : _c.direction;\n      const oldPages = ((_d = context.state.data) == null ? void 0 : _d.pages) || [];\n      const oldPageParams = ((_e = context.state.data) == null ? void 0 : _e.pageParams) || [];\n      let result = { pages: [], pageParams: [] };\n      let currentPage = 0;\n      const fetchFn = async () => {\n        let cancelled = false;\n        const addSignalProperty = (object) => {\n          Object.defineProperty(object, \"signal\", {\n            enumerable: true,\n            get: () => {\n              if (context.signal.aborted) {\n                cancelled = true;\n              } else {\n                context.signal.addEventListener(\"abort\", () => {\n                  cancelled = true;\n                });\n              }\n              return context.signal;\n            }\n          });\n        };\n        const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n        const fetchPage = async (data, param, previous) => {\n          if (cancelled) {\n            return Promise.reject();\n          }\n          if (param == null && data.pages.length) {\n            return Promise.resolve(data);\n          }\n          const queryFnContext = {\n            queryKey: context.queryKey,\n            pageParam: param,\n            direction: previous ? \"backward\" : \"forward\",\n            meta: context.options.meta\n          };\n          addSignalProperty(queryFnContext);\n          const page = await queryFn(\n            queryFnContext\n          );\n          const { maxPages } = context.options;\n          const addTo = previous ? addToStart : addToEnd;\n          return {\n            pages: addTo(data.pages, page, maxPages),\n            pageParams: addTo(data.pageParams, param, maxPages)\n          };\n        };\n        if (direction && oldPages.length) {\n          const previous = direction === \"backward\";\n          const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n          const oldData = {\n            pages: oldPages,\n            pageParams: oldPageParams\n          };\n          const param = pageParamFn(options, oldData);\n          result = await fetchPage(oldData, param, previous);\n        } else {\n          const remainingPages = pages ?? oldPages.length;\n          do {\n            const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n            if (currentPage > 0 && param == null) {\n              break;\n            }\n            result = await fetchPage(result, param);\n            currentPage++;\n          } while (currentPage < remainingPages);\n        }\n        return result;\n      };\n      if (context.options.persister) {\n        context.fetchFn = () => {\n          var _a13, _b2;\n          return (_b2 = (_a13 = context.options).persister) == null ? void 0 : _b2.call(\n            _a13,\n            fetchFn,\n            {\n              queryKey: context.queryKey,\n              meta: context.options.meta,\n              signal: context.signal\n            },\n            query\n          );\n        };\n      } else {\n        context.fetchFn = fetchFn;\n      }\n    }\n  };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n  const lastIndex = pages.length - 1;\n  return pages.length > 0 ? options.getNextPageParam(\n    pages[lastIndex],\n    pages,\n    pageParams[lastIndex],\n    pageParams\n  ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n  var _a12;\n  return pages.length > 0 ? (_a12 = options.getPreviousPageParam) == null ? void 0 : _a12.call(options, pages[0], pages, pageParams[0], pageParams) : void 0;\n}\n\n// node_modules/@tanstack/query-core/build/modern/queryClient.js\nvar _queryCache, _mutationCache2, _defaultOptions2, _queryDefaults, _mutationDefaults, _mountCount, _unsubscribeFocus, _unsubscribeOnline, _a8;\nvar QueryClient = (_a8 = class {\n  constructor(config = {}) {\n    __privateAdd(this, _queryCache, void 0);\n    __privateAdd(this, _mutationCache2, void 0);\n    __privateAdd(this, _defaultOptions2, void 0);\n    __privateAdd(this, _queryDefaults, void 0);\n    __privateAdd(this, _mutationDefaults, void 0);\n    __privateAdd(this, _mountCount, void 0);\n    __privateAdd(this, _unsubscribeFocus, void 0);\n    __privateAdd(this, _unsubscribeOnline, void 0);\n    __privateSet(this, _queryCache, config.queryCache || new QueryCache());\n    __privateSet(this, _mutationCache2, config.mutationCache || new MutationCache());\n    __privateSet(this, _defaultOptions2, config.defaultOptions || {});\n    __privateSet(this, _queryDefaults, /* @__PURE__ */ new Map());\n    __privateSet(this, _mutationDefaults, /* @__PURE__ */ new Map());\n    __privateSet(this, _mountCount, 0);\n  }\n  mount() {\n    __privateWrapper(this, _mountCount)._++;\n    if (__privateGet(this, _mountCount) !== 1)\n      return;\n    __privateSet(this, _unsubscribeFocus, focusManager.subscribe(async (focused) => {\n      if (focused) {\n        await this.resumePausedMutations();\n        __privateGet(this, _queryCache).onFocus();\n      }\n    }));\n    __privateSet(this, _unsubscribeOnline, onlineManager.subscribe(async (online) => {\n      if (online) {\n        await this.resumePausedMutations();\n        __privateGet(this, _queryCache).onOnline();\n      }\n    }));\n  }\n  unmount() {\n    var _a12, _b;\n    __privateWrapper(this, _mountCount)._--;\n    if (__privateGet(this, _mountCount) !== 0)\n      return;\n    (_a12 = __privateGet(this, _unsubscribeFocus)) == null ? void 0 : _a12.call(this);\n    __privateSet(this, _unsubscribeFocus, void 0);\n    (_b = __privateGet(this, _unsubscribeOnline)) == null ? void 0 : _b.call(this);\n    __privateSet(this, _unsubscribeOnline, void 0);\n  }\n  isFetching(filters) {\n    return __privateGet(this, _queryCache).findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n  }\n  isMutating(filters) {\n    return __privateGet(this, _mutationCache2).findAll({ ...filters, status: \"pending\" }).length;\n  }\n  getQueryData(queryKey) {\n    var _a12;\n    const options = this.defaultQueryOptions({ queryKey });\n    return (_a12 = __privateGet(this, _queryCache).get(options.queryHash)) == null ? void 0 : _a12.state.data;\n  }\n  ensureQueryData(options) {\n    const cachedData = this.getQueryData(options.queryKey);\n    if (cachedData === void 0)\n      return this.fetchQuery(options);\n    else {\n      const defaultedOptions = this.defaultQueryOptions(options);\n      const query = __privateGet(this, _queryCache).build(this, defaultedOptions);\n      if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n        void this.prefetchQuery(defaultedOptions);\n      }\n      return Promise.resolve(cachedData);\n    }\n  }\n  getQueriesData(filters) {\n    return __privateGet(this, _queryCache).findAll(filters).map(({ queryKey, state }) => {\n      const data = state.data;\n      return [queryKey, data];\n    });\n  }\n  setQueryData(queryKey, updater, options) {\n    const defaultedOptions = this.defaultQueryOptions({ queryKey });\n    const query = __privateGet(this, _queryCache).get(\n      defaultedOptions.queryHash\n    );\n    const prevData = query == null ? void 0 : query.state.data;\n    const data = functionalUpdate(updater, prevData);\n    if (data === void 0) {\n      return void 0;\n    }\n    return __privateGet(this, _queryCache).build(this, defaultedOptions).setData(data, { ...options, manual: true });\n  }\n  setQueriesData(filters, updater, options) {\n    return notifyManager.batch(\n      () => __privateGet(this, _queryCache).findAll(filters).map(({ queryKey }) => [\n        queryKey,\n        this.setQueryData(queryKey, updater, options)\n      ])\n    );\n  }\n  getQueryState(queryKey) {\n    var _a12;\n    const options = this.defaultQueryOptions({ queryKey });\n    return (_a12 = __privateGet(this, _queryCache).get(options.queryHash)) == null ? void 0 : _a12.state;\n  }\n  removeQueries(filters) {\n    const queryCache = __privateGet(this, _queryCache);\n    notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        queryCache.remove(query);\n      });\n    });\n  }\n  resetQueries(filters, options) {\n    const queryCache = __privateGet(this, _queryCache);\n    const refetchFilters = {\n      type: \"active\",\n      ...filters\n    };\n    return notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        query.reset();\n      });\n      return this.refetchQueries(refetchFilters, options);\n    });\n  }\n  cancelQueries(filters = {}, cancelOptions = {}) {\n    const defaultedCancelOptions = { revert: true, ...cancelOptions };\n    const promises = notifyManager.batch(\n      () => __privateGet(this, _queryCache).findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n    );\n    return Promise.all(promises).then(noop).catch(noop);\n  }\n  invalidateQueries(filters = {}, options = {}) {\n    return notifyManager.batch(() => {\n      __privateGet(this, _queryCache).findAll(filters).forEach((query) => {\n        query.invalidate();\n      });\n      if (filters.refetchType === \"none\") {\n        return Promise.resolve();\n      }\n      const refetchFilters = {\n        ...filters,\n        type: filters.refetchType ?? filters.type ?? \"active\"\n      };\n      return this.refetchQueries(refetchFilters, options);\n    });\n  }\n  refetchQueries(filters = {}, options) {\n    const fetchOptions = {\n      ...options,\n      cancelRefetch: (options == null ? void 0 : options.cancelRefetch) ?? true\n    };\n    const promises = notifyManager.batch(\n      () => __privateGet(this, _queryCache).findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n        let promise = query.fetch(void 0, fetchOptions);\n        if (!fetchOptions.throwOnError) {\n          promise = promise.catch(noop);\n        }\n        return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n      })\n    );\n    return Promise.all(promises).then(noop);\n  }\n  fetchQuery(options) {\n    const defaultedOptions = this.defaultQueryOptions(options);\n    if (defaultedOptions.retry === void 0) {\n      defaultedOptions.retry = false;\n    }\n    const query = __privateGet(this, _queryCache).build(this, defaultedOptions);\n    return query.isStaleByTime(\n      resolveStaleTime(defaultedOptions.staleTime, query)\n    ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n  }\n  prefetchQuery(options) {\n    return this.fetchQuery(options).then(noop).catch(noop);\n  }\n  fetchInfiniteQuery(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.fetchQuery(options);\n  }\n  prefetchInfiniteQuery(options) {\n    return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n  }\n  ensureInfiniteQueryData(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.ensureQueryData(options);\n  }\n  resumePausedMutations() {\n    if (onlineManager.isOnline()) {\n      return __privateGet(this, _mutationCache2).resumePausedMutations();\n    }\n    return Promise.resolve();\n  }\n  getQueryCache() {\n    return __privateGet(this, _queryCache);\n  }\n  getMutationCache() {\n    return __privateGet(this, _mutationCache2);\n  }\n  getDefaultOptions() {\n    return __privateGet(this, _defaultOptions2);\n  }\n  setDefaultOptions(options) {\n    __privateSet(this, _defaultOptions2, options);\n  }\n  setQueryDefaults(queryKey, options) {\n    __privateGet(this, _queryDefaults).set(hashKey(queryKey), {\n      queryKey,\n      defaultOptions: options\n    });\n  }\n  getQueryDefaults(queryKey) {\n    const defaults = [...__privateGet(this, _queryDefaults).values()];\n    let result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n        result = { ...result, ...queryDefault.defaultOptions };\n      }\n    });\n    return result;\n  }\n  setMutationDefaults(mutationKey, options) {\n    __privateGet(this, _mutationDefaults).set(hashKey(mutationKey), {\n      mutationKey,\n      defaultOptions: options\n    });\n  }\n  getMutationDefaults(mutationKey) {\n    const defaults = [...__privateGet(this, _mutationDefaults).values()];\n    let result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n        result = { ...result, ...queryDefault.defaultOptions };\n      }\n    });\n    return result;\n  }\n  defaultQueryOptions(options) {\n    if (options._defaulted) {\n      return options;\n    }\n    const defaultedOptions = {\n      ...__privateGet(this, _defaultOptions2).queries,\n      ...this.getQueryDefaults(options.queryKey),\n      ...options,\n      _defaulted: true\n    };\n    if (!defaultedOptions.queryHash) {\n      defaultedOptions.queryHash = hashQueryKeyByOptions(\n        defaultedOptions.queryKey,\n        defaultedOptions\n      );\n    }\n    if (defaultedOptions.refetchOnReconnect === void 0) {\n      defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n    }\n    if (defaultedOptions.throwOnError === void 0) {\n      defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n    }\n    if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n      defaultedOptions.networkMode = \"offlineFirst\";\n    }\n    if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n      defaultedOptions.enabled = false;\n    }\n    return defaultedOptions;\n  }\n  defaultMutationOptions(options) {\n    if (options == null ? void 0 : options._defaulted) {\n      return options;\n    }\n    return {\n      ...__privateGet(this, _defaultOptions2).mutations,\n      ...(options == null ? void 0 : options.mutationKey) && this.getMutationDefaults(options.mutationKey),\n      ...options,\n      _defaulted: true\n    };\n  }\n  clear() {\n    __privateGet(this, _queryCache).clear();\n    __privateGet(this, _mutationCache2).clear();\n  }\n}, _queryCache = new WeakMap(), _mutationCache2 = new WeakMap(), _defaultOptions2 = new WeakMap(), _queryDefaults = new WeakMap(), _mutationDefaults = new WeakMap(), _mountCount = new WeakMap(), _unsubscribeFocus = new WeakMap(), _unsubscribeOnline = new WeakMap(), _a8);\n\n// node_modules/@tanstack/query-core/build/modern/queryObserver.js\nvar _client, _currentQuery, _currentQueryInitialState, _currentResult, _currentResultState, _currentResultOptions, _currentThenable, _selectError, _selectFn, _selectResult, _lastQueryWithDefinedData, _staleTimeoutId, _refetchIntervalId, _currentRefetchInterval, _trackedProps, _executeFetch, executeFetch_fn, _updateStaleTimeout, updateStaleTimeout_fn, _computeRefetchInterval, computeRefetchInterval_fn, _updateRefetchInterval, updateRefetchInterval_fn, _updateTimers, updateTimers_fn, _clearStaleTimeout, clearStaleTimeout_fn, _clearRefetchInterval, clearRefetchInterval_fn, _updateQuery, updateQuery_fn, _notify, notify_fn, _a9;\nvar QueryObserver = (_a9 = class extends Subscribable {\n  constructor(client, options) {\n    super();\n    __privateAdd(this, _executeFetch);\n    __privateAdd(this, _updateStaleTimeout);\n    __privateAdd(this, _computeRefetchInterval);\n    __privateAdd(this, _updateRefetchInterval);\n    __privateAdd(this, _updateTimers);\n    __privateAdd(this, _clearStaleTimeout);\n    __privateAdd(this, _clearRefetchInterval);\n    __privateAdd(this, _updateQuery);\n    __privateAdd(this, _notify);\n    __privateAdd(this, _client, void 0);\n    __privateAdd(this, _currentQuery, void 0);\n    __privateAdd(this, _currentQueryInitialState, void 0);\n    __privateAdd(this, _currentResult, void 0);\n    __privateAdd(this, _currentResultState, void 0);\n    __privateAdd(this, _currentResultOptions, void 0);\n    __privateAdd(this, _currentThenable, void 0);\n    __privateAdd(this, _selectError, void 0);\n    __privateAdd(this, _selectFn, void 0);\n    __privateAdd(this, _selectResult, void 0);\n    // This property keeps track of the last query with defined data.\n    // It will be used to pass the previous data and query to the placeholder function between renders.\n    __privateAdd(this, _lastQueryWithDefinedData, void 0);\n    __privateAdd(this, _staleTimeoutId, void 0);\n    __privateAdd(this, _refetchIntervalId, void 0);\n    __privateAdd(this, _currentRefetchInterval, void 0);\n    __privateAdd(this, _trackedProps, /* @__PURE__ */ new Set());\n    this.options = options;\n    __privateSet(this, _client, client);\n    __privateSet(this, _selectError, null);\n    __privateSet(this, _currentThenable, pendingThenable());\n    if (!this.options.experimental_prefetchInRender) {\n      __privateGet(this, _currentThenable).reject(\n        new Error(\"experimental_prefetchInRender feature flag is not enabled\")\n      );\n    }\n    this.bindMethods();\n    this.setOptions(options);\n  }\n  bindMethods() {\n    this.refetch = this.refetch.bind(this);\n  }\n  onSubscribe() {\n    if (this.listeners.size === 1) {\n      __privateGet(this, _currentQuery).addObserver(this);\n      if (shouldFetchOnMount(__privateGet(this, _currentQuery), this.options)) {\n        __privateMethod(this, _executeFetch, executeFetch_fn).call(this);\n      } else {\n        this.updateResult();\n      }\n      __privateMethod(this, _updateTimers, updateTimers_fn).call(this);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.destroy();\n    }\n  }\n  shouldFetchOnReconnect() {\n    return shouldFetchOn(\n      __privateGet(this, _currentQuery),\n      this.options,\n      this.options.refetchOnReconnect\n    );\n  }\n  shouldFetchOnWindowFocus() {\n    return shouldFetchOn(\n      __privateGet(this, _currentQuery),\n      this.options,\n      this.options.refetchOnWindowFocus\n    );\n  }\n  destroy() {\n    this.listeners = /* @__PURE__ */ new Set();\n    __privateMethod(this, _clearStaleTimeout, clearStaleTimeout_fn).call(this);\n    __privateMethod(this, _clearRefetchInterval, clearRefetchInterval_fn).call(this);\n    __privateGet(this, _currentQuery).removeObserver(this);\n  }\n  setOptions(options, notifyOptions) {\n    const prevOptions = this.options;\n    const prevQuery = __privateGet(this, _currentQuery);\n    this.options = __privateGet(this, _client).defaultQueryOptions(options);\n    if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveEnabled(this.options.enabled, __privateGet(this, _currentQuery)) !== \"boolean\") {\n      throw new Error(\n        \"Expected enabled to be a boolean or a callback that returns a boolean\"\n      );\n    }\n    __privateMethod(this, _updateQuery, updateQuery_fn).call(this);\n    __privateGet(this, _currentQuery).setOptions(this.options);\n    if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n      __privateGet(this, _client).getQueryCache().notify({\n        type: \"observerOptionsUpdated\",\n        query: __privateGet(this, _currentQuery),\n        observer: this\n      });\n    }\n    const mounted = this.hasListeners();\n    if (mounted && shouldFetchOptionally(\n      __privateGet(this, _currentQuery),\n      prevQuery,\n      this.options,\n      prevOptions\n    )) {\n      __privateMethod(this, _executeFetch, executeFetch_fn).call(this);\n    }\n    this.updateResult(notifyOptions);\n    if (mounted && (__privateGet(this, _currentQuery) !== prevQuery || resolveEnabled(this.options.enabled, __privateGet(this, _currentQuery)) !== resolveEnabled(prevOptions.enabled, __privateGet(this, _currentQuery)) || resolveStaleTime(this.options.staleTime, __privateGet(this, _currentQuery)) !== resolveStaleTime(prevOptions.staleTime, __privateGet(this, _currentQuery)))) {\n      __privateMethod(this, _updateStaleTimeout, updateStaleTimeout_fn).call(this);\n    }\n    const nextRefetchInterval = __privateMethod(this, _computeRefetchInterval, computeRefetchInterval_fn).call(this);\n    if (mounted && (__privateGet(this, _currentQuery) !== prevQuery || resolveEnabled(this.options.enabled, __privateGet(this, _currentQuery)) !== resolveEnabled(prevOptions.enabled, __privateGet(this, _currentQuery)) || nextRefetchInterval !== __privateGet(this, _currentRefetchInterval))) {\n      __privateMethod(this, _updateRefetchInterval, updateRefetchInterval_fn).call(this, nextRefetchInterval);\n    }\n  }\n  getOptimisticResult(options) {\n    const query = __privateGet(this, _client).getQueryCache().build(__privateGet(this, _client), options);\n    const result = this.createResult(query, options);\n    if (shouldAssignObserverCurrentProperties(this, result)) {\n      __privateSet(this, _currentResult, result);\n      __privateSet(this, _currentResultOptions, this.options);\n      __privateSet(this, _currentResultState, __privateGet(this, _currentQuery).state);\n    }\n    return result;\n  }\n  getCurrentResult() {\n    return __privateGet(this, _currentResult);\n  }\n  trackResult(result, onPropTracked) {\n    const trackedResult = {};\n    Object.keys(result).forEach((key) => {\n      Object.defineProperty(trackedResult, key, {\n        configurable: false,\n        enumerable: true,\n        get: () => {\n          this.trackProp(key);\n          onPropTracked == null ? void 0 : onPropTracked(key);\n          return result[key];\n        }\n      });\n    });\n    return trackedResult;\n  }\n  trackProp(key) {\n    __privateGet(this, _trackedProps).add(key);\n  }\n  getCurrentQuery() {\n    return __privateGet(this, _currentQuery);\n  }\n  refetch({ ...options } = {}) {\n    return this.fetch({\n      ...options\n    });\n  }\n  fetchOptimistic(options) {\n    const defaultedOptions = __privateGet(this, _client).defaultQueryOptions(options);\n    const query = __privateGet(this, _client).getQueryCache().build(__privateGet(this, _client), defaultedOptions);\n    return query.fetch().then(() => this.createResult(query, defaultedOptions));\n  }\n  fetch(fetchOptions) {\n    return __privateMethod(this, _executeFetch, executeFetch_fn).call(this, {\n      ...fetchOptions,\n      cancelRefetch: fetchOptions.cancelRefetch ?? true\n    }).then(() => {\n      this.updateResult();\n      return __privateGet(this, _currentResult);\n    });\n  }\n  createResult(query, options) {\n    var _a12;\n    const prevQuery = __privateGet(this, _currentQuery);\n    const prevOptions = this.options;\n    const prevResult = __privateGet(this, _currentResult);\n    const prevResultState = __privateGet(this, _currentResultState);\n    const prevResultOptions = __privateGet(this, _currentResultOptions);\n    const queryChange = query !== prevQuery;\n    const queryInitialState = queryChange ? query.state : __privateGet(this, _currentQueryInitialState);\n    const { state } = query;\n    let newState = { ...state };\n    let isPlaceholderData = false;\n    let data;\n    if (options._optimisticResults) {\n      const mounted = this.hasListeners();\n      const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n      const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n      if (fetchOnMount || fetchOptionally) {\n        newState = {\n          ...newState,\n          ...fetchState(state.data, query.options)\n        };\n      }\n      if (options._optimisticResults === \"isRestoring\") {\n        newState.fetchStatus = \"idle\";\n      }\n    }\n    let { error, errorUpdatedAt, status } = newState;\n    if (options.select && newState.data !== void 0) {\n      if (prevResult && newState.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === __privateGet(this, _selectFn)) {\n        data = __privateGet(this, _selectResult);\n      } else {\n        try {\n          __privateSet(this, _selectFn, options.select);\n          data = options.select(newState.data);\n          data = replaceData(prevResult == null ? void 0 : prevResult.data, data, options);\n          __privateSet(this, _selectResult, data);\n          __privateSet(this, _selectError, null);\n        } catch (selectError) {\n          __privateSet(this, _selectError, selectError);\n        }\n      }\n    } else {\n      data = newState.data;\n    }\n    if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n      let placeholderData;\n      if ((prevResult == null ? void 0 : prevResult.isPlaceholderData) && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n        placeholderData = prevResult.data;\n      } else {\n        placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n          (_a12 = __privateGet(this, _lastQueryWithDefinedData)) == null ? void 0 : _a12.state.data,\n          __privateGet(this, _lastQueryWithDefinedData)\n        ) : options.placeholderData;\n        if (options.select && placeholderData !== void 0) {\n          try {\n            placeholderData = options.select(placeholderData);\n            __privateSet(this, _selectError, null);\n          } catch (selectError) {\n            __privateSet(this, _selectError, selectError);\n          }\n        }\n      }\n      if (placeholderData !== void 0) {\n        status = \"success\";\n        data = replaceData(\n          prevResult == null ? void 0 : prevResult.data,\n          placeholderData,\n          options\n        );\n        isPlaceholderData = true;\n      }\n    }\n    if (__privateGet(this, _selectError)) {\n      error = __privateGet(this, _selectError);\n      data = __privateGet(this, _selectResult);\n      errorUpdatedAt = Date.now();\n      status = \"error\";\n    }\n    const isFetching = newState.fetchStatus === \"fetching\";\n    const isPending = status === \"pending\";\n    const isError = status === \"error\";\n    const isLoading = isPending && isFetching;\n    const hasData = data !== void 0;\n    const result = {\n      status,\n      fetchStatus: newState.fetchStatus,\n      isPending,\n      isSuccess: status === \"success\",\n      isError,\n      isInitialLoading: isLoading,\n      isLoading,\n      data,\n      dataUpdatedAt: newState.dataUpdatedAt,\n      error,\n      errorUpdatedAt,\n      failureCount: newState.fetchFailureCount,\n      failureReason: newState.fetchFailureReason,\n      errorUpdateCount: newState.errorUpdateCount,\n      isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n      isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n      isFetching,\n      isRefetching: isFetching && !isPending,\n      isLoadingError: isError && !hasData,\n      isPaused: newState.fetchStatus === \"paused\",\n      isPlaceholderData,\n      isRefetchError: isError && hasData,\n      isStale: isStale(query, options),\n      refetch: this.refetch,\n      promise: __privateGet(this, _currentThenable)\n    };\n    const nextResult = result;\n    if (this.options.experimental_prefetchInRender) {\n      const finalizeThenableIfPossible = (thenable) => {\n        if (nextResult.status === \"error\") {\n          thenable.reject(nextResult.error);\n        } else if (nextResult.data !== void 0) {\n          thenable.resolve(nextResult.data);\n        }\n      };\n      const recreateThenable = () => {\n        const pending = __privateSet(this, _currentThenable, nextResult.promise = pendingThenable());\n        finalizeThenableIfPossible(pending);\n      };\n      const prevThenable = __privateGet(this, _currentThenable);\n      switch (prevThenable.status) {\n        case \"pending\":\n          if (query.queryHash === prevQuery.queryHash) {\n            finalizeThenableIfPossible(prevThenable);\n          }\n          break;\n        case \"fulfilled\":\n          if (nextResult.status === \"error\" || nextResult.data !== prevThenable.value) {\n            recreateThenable();\n          }\n          break;\n        case \"rejected\":\n          if (nextResult.status !== \"error\" || nextResult.error !== prevThenable.reason) {\n            recreateThenable();\n          }\n          break;\n      }\n    }\n    return nextResult;\n  }\n  updateResult(notifyOptions) {\n    const prevResult = __privateGet(this, _currentResult);\n    const nextResult = this.createResult(__privateGet(this, _currentQuery), this.options);\n    __privateSet(this, _currentResultState, __privateGet(this, _currentQuery).state);\n    __privateSet(this, _currentResultOptions, this.options);\n    if (__privateGet(this, _currentResultState).data !== void 0) {\n      __privateSet(this, _lastQueryWithDefinedData, __privateGet(this, _currentQuery));\n    }\n    if (shallowEqualObjects(nextResult, prevResult)) {\n      return;\n    }\n    __privateSet(this, _currentResult, nextResult);\n    const defaultNotifyOptions = {};\n    const shouldNotifyListeners = () => {\n      if (!prevResult) {\n        return true;\n      }\n      const { notifyOnChangeProps } = this.options;\n      const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n      if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !__privateGet(this, _trackedProps).size) {\n        return true;\n      }\n      const includedProps = new Set(\n        notifyOnChangePropsValue ?? __privateGet(this, _trackedProps)\n      );\n      if (this.options.throwOnError) {\n        includedProps.add(\"error\");\n      }\n      return Object.keys(__privateGet(this, _currentResult)).some((key) => {\n        const typedKey = key;\n        const changed = __privateGet(this, _currentResult)[typedKey] !== prevResult[typedKey];\n        return changed && includedProps.has(typedKey);\n      });\n    };\n    if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && shouldNotifyListeners()) {\n      defaultNotifyOptions.listeners = true;\n    }\n    __privateMethod(this, _notify, notify_fn).call(this, { ...defaultNotifyOptions, ...notifyOptions });\n  }\n  onQueryUpdate() {\n    this.updateResult();\n    if (this.hasListeners()) {\n      __privateMethod(this, _updateTimers, updateTimers_fn).call(this);\n    }\n  }\n}, _client = new WeakMap(), _currentQuery = new WeakMap(), _currentQueryInitialState = new WeakMap(), _currentResult = new WeakMap(), _currentResultState = new WeakMap(), _currentResultOptions = new WeakMap(), _currentThenable = new WeakMap(), _selectError = new WeakMap(), _selectFn = new WeakMap(), _selectResult = new WeakMap(), _lastQueryWithDefinedData = new WeakMap(), _staleTimeoutId = new WeakMap(), _refetchIntervalId = new WeakMap(), _currentRefetchInterval = new WeakMap(), _trackedProps = new WeakMap(), _executeFetch = new WeakSet(), executeFetch_fn = function(fetchOptions) {\n  __privateMethod(this, _updateQuery, updateQuery_fn).call(this);\n  let promise = __privateGet(this, _currentQuery).fetch(\n    this.options,\n    fetchOptions\n  );\n  if (!(fetchOptions == null ? void 0 : fetchOptions.throwOnError)) {\n    promise = promise.catch(noop);\n  }\n  return promise;\n}, _updateStaleTimeout = new WeakSet(), updateStaleTimeout_fn = function() {\n  __privateMethod(this, _clearStaleTimeout, clearStaleTimeout_fn).call(this);\n  const staleTime = resolveStaleTime(\n    this.options.staleTime,\n    __privateGet(this, _currentQuery)\n  );\n  if (isServer || __privateGet(this, _currentResult).isStale || !isValidTimeout(staleTime)) {\n    return;\n  }\n  const time = timeUntilStale(__privateGet(this, _currentResult).dataUpdatedAt, staleTime);\n  const timeout = time + 1;\n  __privateSet(this, _staleTimeoutId, setTimeout(() => {\n    if (!__privateGet(this, _currentResult).isStale) {\n      this.updateResult();\n    }\n  }, timeout));\n}, _computeRefetchInterval = new WeakSet(), computeRefetchInterval_fn = function() {\n  return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(__privateGet(this, _currentQuery)) : this.options.refetchInterval) ?? false;\n}, _updateRefetchInterval = new WeakSet(), updateRefetchInterval_fn = function(nextInterval) {\n  __privateMethod(this, _clearRefetchInterval, clearRefetchInterval_fn).call(this);\n  __privateSet(this, _currentRefetchInterval, nextInterval);\n  if (isServer || resolveEnabled(this.options.enabled, __privateGet(this, _currentQuery)) === false || !isValidTimeout(__privateGet(this, _currentRefetchInterval)) || __privateGet(this, _currentRefetchInterval) === 0) {\n    return;\n  }\n  __privateSet(this, _refetchIntervalId, setInterval(() => {\n    if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n      __privateMethod(this, _executeFetch, executeFetch_fn).call(this);\n    }\n  }, __privateGet(this, _currentRefetchInterval)));\n}, _updateTimers = new WeakSet(), updateTimers_fn = function() {\n  __privateMethod(this, _updateStaleTimeout, updateStaleTimeout_fn).call(this);\n  __privateMethod(this, _updateRefetchInterval, updateRefetchInterval_fn).call(this, __privateMethod(this, _computeRefetchInterval, computeRefetchInterval_fn).call(this));\n}, _clearStaleTimeout = new WeakSet(), clearStaleTimeout_fn = function() {\n  if (__privateGet(this, _staleTimeoutId)) {\n    clearTimeout(__privateGet(this, _staleTimeoutId));\n    __privateSet(this, _staleTimeoutId, void 0);\n  }\n}, _clearRefetchInterval = new WeakSet(), clearRefetchInterval_fn = function() {\n  if (__privateGet(this, _refetchIntervalId)) {\n    clearInterval(__privateGet(this, _refetchIntervalId));\n    __privateSet(this, _refetchIntervalId, void 0);\n  }\n}, _updateQuery = new WeakSet(), updateQuery_fn = function() {\n  const query = __privateGet(this, _client).getQueryCache().build(__privateGet(this, _client), this.options);\n  if (query === __privateGet(this, _currentQuery)) {\n    return;\n  }\n  const prevQuery = __privateGet(this, _currentQuery);\n  __privateSet(this, _currentQuery, query);\n  __privateSet(this, _currentQueryInitialState, query.state);\n  if (this.hasListeners()) {\n    prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n    query.addObserver(this);\n  }\n}, _notify = new WeakSet(), notify_fn = function(notifyOptions) {\n  notifyManager.batch(() => {\n    if (notifyOptions.listeners) {\n      this.listeners.forEach((listener) => {\n        listener(__privateGet(this, _currentResult));\n      });\n    }\n    __privateGet(this, _client).getQueryCache().notify({\n      query: __privateGet(this, _currentQuery),\n      type: \"observerResultsUpdated\"\n    });\n  });\n}, _a9);\nfunction shouldLoadOnMount(query, options) {\n  return resolveEnabled(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n  return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n  if (resolveEnabled(options.enabled, query) !== false) {\n    const value = typeof field === \"function\" ? field(query) : field;\n    return value === \"always\" || value !== false && isStale(query, options);\n  }\n  return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n  return (query !== prevQuery || resolveEnabled(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n  return resolveEnabled(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n  if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n    return true;\n  }\n  return false;\n}\n\n// node_modules/@tanstack/query-core/build/modern/queriesObserver.js\nfunction difference(array1, array2) {\n  return array1.filter((x) => !array2.includes(x));\n}\nfunction replaceAt(array, index, value) {\n  const copy2 = array.slice(0);\n  copy2[index] = value;\n  return copy2;\n}\nvar _client2, _result, _queries2, _options, _observers2, _combinedResult, _lastCombine, _lastResult, _combineResult, combineResult_fn, _findMatchingObservers, findMatchingObservers_fn, _onUpdate, onUpdate_fn, _notify2, notify_fn2, _a10;\nvar QueriesObserver = (_a10 = class extends Subscribable {\n  constructor(client, queries, options) {\n    super();\n    __privateAdd(this, _combineResult);\n    __privateAdd(this, _findMatchingObservers);\n    __privateAdd(this, _onUpdate);\n    __privateAdd(this, _notify2);\n    __privateAdd(this, _client2, void 0);\n    __privateAdd(this, _result, void 0);\n    __privateAdd(this, _queries2, void 0);\n    __privateAdd(this, _options, void 0);\n    __privateAdd(this, _observers2, void 0);\n    __privateAdd(this, _combinedResult, void 0);\n    __privateAdd(this, _lastCombine, void 0);\n    __privateAdd(this, _lastResult, void 0);\n    __privateSet(this, _client2, client);\n    __privateSet(this, _options, options);\n    __privateSet(this, _queries2, []);\n    __privateSet(this, _observers2, []);\n    __privateSet(this, _result, []);\n    this.setQueries(queries);\n  }\n  onSubscribe() {\n    if (this.listeners.size === 1) {\n      __privateGet(this, _observers2).forEach((observer) => {\n        observer.subscribe((result) => {\n          __privateMethod(this, _onUpdate, onUpdate_fn).call(this, observer, result);\n        });\n      });\n    }\n  }\n  onUnsubscribe() {\n    if (!this.listeners.size) {\n      this.destroy();\n    }\n  }\n  destroy() {\n    this.listeners = /* @__PURE__ */ new Set();\n    __privateGet(this, _observers2).forEach((observer) => {\n      observer.destroy();\n    });\n  }\n  setQueries(queries, options, notifyOptions) {\n    __privateSet(this, _queries2, queries);\n    __privateSet(this, _options, options);\n    if (true) {\n      const queryHashes = queries.map((query) => query.queryHash);\n      if (new Set(queryHashes).size !== queryHashes.length) {\n        console.warn(\n          \"[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.\"\n        );\n      }\n    }\n    notifyManager.batch(() => {\n      const prevObservers = __privateGet(this, _observers2);\n      const newObserverMatches = __privateMethod(this, _findMatchingObservers, findMatchingObservers_fn).call(this, __privateGet(this, _queries2));\n      newObserverMatches.forEach(\n        (match2) => match2.observer.setOptions(match2.defaultedQueryOptions, notifyOptions)\n      );\n      const newObservers = newObserverMatches.map((match2) => match2.observer);\n      const newResult = newObservers.map(\n        (observer) => observer.getCurrentResult()\n      );\n      const hasIndexChange = newObservers.some(\n        (observer, index) => observer !== prevObservers[index]\n      );\n      if (prevObservers.length === newObservers.length && !hasIndexChange) {\n        return;\n      }\n      __privateSet(this, _observers2, newObservers);\n      __privateSet(this, _result, newResult);\n      if (!this.hasListeners()) {\n        return;\n      }\n      difference(prevObservers, newObservers).forEach((observer) => {\n        observer.destroy();\n      });\n      difference(newObservers, prevObservers).forEach((observer) => {\n        observer.subscribe((result) => {\n          __privateMethod(this, _onUpdate, onUpdate_fn).call(this, observer, result);\n        });\n      });\n      __privateMethod(this, _notify2, notify_fn2).call(this);\n    });\n  }\n  getCurrentResult() {\n    return __privateGet(this, _result);\n  }\n  getQueries() {\n    return __privateGet(this, _observers2).map((observer) => observer.getCurrentQuery());\n  }\n  getObservers() {\n    return __privateGet(this, _observers2);\n  }\n  getOptimisticResult(queries, combine2) {\n    const matches = __privateMethod(this, _findMatchingObservers, findMatchingObservers_fn).call(this, queries);\n    const result = matches.map(\n      (match2) => match2.observer.getOptimisticResult(match2.defaultedQueryOptions)\n    );\n    return [\n      result,\n      (r) => {\n        return __privateMethod(this, _combineResult, combineResult_fn).call(this, r ?? result, combine2);\n      },\n      () => {\n        return matches.map((match2, index) => {\n          const observerResult = result[index];\n          return !match2.defaultedQueryOptions.notifyOnChangeProps ? match2.observer.trackResult(observerResult, (accessedProp) => {\n            matches.forEach((m) => {\n              m.observer.trackProp(accessedProp);\n            });\n          }) : observerResult;\n        });\n      }\n    ];\n  }\n}, _client2 = new WeakMap(), _result = new WeakMap(), _queries2 = new WeakMap(), _options = new WeakMap(), _observers2 = new WeakMap(), _combinedResult = new WeakMap(), _lastCombine = new WeakMap(), _lastResult = new WeakMap(), _combineResult = new WeakSet(), combineResult_fn = function(input, combine2) {\n  if (combine2) {\n    if (!__privateGet(this, _combinedResult) || __privateGet(this, _result) !== __privateGet(this, _lastResult) || combine2 !== __privateGet(this, _lastCombine)) {\n      __privateSet(this, _lastCombine, combine2);\n      __privateSet(this, _lastResult, __privateGet(this, _result));\n      __privateSet(this, _combinedResult, replaceEqualDeep(\n        __privateGet(this, _combinedResult),\n        combine2(input)\n      ));\n    }\n    return __privateGet(this, _combinedResult);\n  }\n  return input;\n}, _findMatchingObservers = new WeakSet(), findMatchingObservers_fn = function(queries) {\n  const prevObserversMap = new Map(\n    __privateGet(this, _observers2).map((observer) => [observer.options.queryHash, observer])\n  );\n  const observers = [];\n  queries.forEach((options) => {\n    const defaultedOptions = __privateGet(this, _client2).defaultQueryOptions(options);\n    const match2 = prevObserversMap.get(defaultedOptions.queryHash);\n    if (match2) {\n      observers.push({\n        defaultedQueryOptions: defaultedOptions,\n        observer: match2\n      });\n    } else {\n      const existingObserver = __privateGet(this, _observers2).find(\n        (o) => o.options.queryHash === defaultedOptions.queryHash\n      );\n      observers.push({\n        defaultedQueryOptions: defaultedOptions,\n        observer: existingObserver ?? new QueryObserver(__privateGet(this, _client2), defaultedOptions)\n      });\n    }\n  });\n  return observers.sort((a, b) => {\n    return queries.findIndex(\n      (q) => q.queryHash === a.defaultedQueryOptions.queryHash\n    ) - queries.findIndex(\n      (q) => q.queryHash === b.defaultedQueryOptions.queryHash\n    );\n  });\n}, _onUpdate = new WeakSet(), onUpdate_fn = function(observer, result) {\n  const index = __privateGet(this, _observers2).indexOf(observer);\n  if (index !== -1) {\n    __privateSet(this, _result, replaceAt(__privateGet(this, _result), index, result));\n    __privateMethod(this, _notify2, notify_fn2).call(this);\n  }\n}, _notify2 = new WeakSet(), notify_fn2 = function() {\n  var _a12;\n  if (this.hasListeners()) {\n    const previousResult = __privateGet(this, _combinedResult);\n    const newResult = __privateMethod(this, _combineResult, combineResult_fn).call(this, __privateGet(this, _result), (_a12 = __privateGet(this, _options)) == null ? void 0 : _a12.combine);\n    if (previousResult !== newResult) {\n      notifyManager.batch(() => {\n        this.listeners.forEach((listener) => {\n          listener(__privateGet(this, _result));\n        });\n      });\n    }\n  }\n}, _a10);\n\n// node_modules/@tanstack/query-core/build/modern/mutationObserver.js\nvar _client3, _currentResult2, _currentMutation, _mutateOptions, _updateResult, updateResult_fn, _notify3, notify_fn3, _a11;\nvar MutationObserver = (_a11 = class extends Subscribable {\n  constructor(client, options) {\n    super();\n    __privateAdd(this, _updateResult);\n    __privateAdd(this, _notify3);\n    __privateAdd(this, _client3, void 0);\n    __privateAdd(this, _currentResult2, void 0);\n    __privateAdd(this, _currentMutation, void 0);\n    __privateAdd(this, _mutateOptions, void 0);\n    __privateSet(this, _client3, client);\n    this.setOptions(options);\n    this.bindMethods();\n    __privateMethod(this, _updateResult, updateResult_fn).call(this);\n  }\n  bindMethods() {\n    this.mutate = this.mutate.bind(this);\n    this.reset = this.reset.bind(this);\n  }\n  setOptions(options) {\n    var _a12;\n    const prevOptions = this.options;\n    this.options = __privateGet(this, _client3).defaultMutationOptions(options);\n    if (!shallowEqualObjects(this.options, prevOptions)) {\n      __privateGet(this, _client3).getMutationCache().notify({\n        type: \"observerOptionsUpdated\",\n        mutation: __privateGet(this, _currentMutation),\n        observer: this\n      });\n    }\n    if ((prevOptions == null ? void 0 : prevOptions.mutationKey) && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n      this.reset();\n    } else if (((_a12 = __privateGet(this, _currentMutation)) == null ? void 0 : _a12.state.status) === \"pending\") {\n      __privateGet(this, _currentMutation).setOptions(this.options);\n    }\n  }\n  onUnsubscribe() {\n    var _a12;\n    if (!this.hasListeners()) {\n      (_a12 = __privateGet(this, _currentMutation)) == null ? void 0 : _a12.removeObserver(this);\n    }\n  }\n  onMutationUpdate(action) {\n    __privateMethod(this, _updateResult, updateResult_fn).call(this);\n    __privateMethod(this, _notify3, notify_fn3).call(this, action);\n  }\n  getCurrentResult() {\n    return __privateGet(this, _currentResult2);\n  }\n  reset() {\n    var _a12;\n    (_a12 = __privateGet(this, _currentMutation)) == null ? void 0 : _a12.removeObserver(this);\n    __privateSet(this, _currentMutation, void 0);\n    __privateMethod(this, _updateResult, updateResult_fn).call(this);\n    __privateMethod(this, _notify3, notify_fn3).call(this);\n  }\n  mutate(variables, options) {\n    var _a12;\n    __privateSet(this, _mutateOptions, options);\n    (_a12 = __privateGet(this, _currentMutation)) == null ? void 0 : _a12.removeObserver(this);\n    __privateSet(this, _currentMutation, __privateGet(this, _client3).getMutationCache().build(__privateGet(this, _client3), this.options));\n    __privateGet(this, _currentMutation).addObserver(this);\n    return __privateGet(this, _currentMutation).execute(variables);\n  }\n}, _client3 = new WeakMap(), _currentResult2 = new WeakMap(), _currentMutation = new WeakMap(), _mutateOptions = new WeakMap(), _updateResult = new WeakSet(), updateResult_fn = function() {\n  var _a12;\n  const state = ((_a12 = __privateGet(this, _currentMutation)) == null ? void 0 : _a12.state) ?? getDefaultState2();\n  __privateSet(this, _currentResult2, {\n    ...state,\n    isPending: state.status === \"pending\",\n    isSuccess: state.status === \"success\",\n    isError: state.status === \"error\",\n    isIdle: state.status === \"idle\",\n    mutate: this.mutate,\n    reset: this.reset\n  });\n}, _notify3 = new WeakSet(), notify_fn3 = function(action) {\n  notifyManager.batch(() => {\n    var _a12, _b, _c, _d, _e, _f, _g, _h;\n    if (__privateGet(this, _mutateOptions) && this.hasListeners()) {\n      const variables = __privateGet(this, _currentResult2).variables;\n      const context = __privateGet(this, _currentResult2).context;\n      if ((action == null ? void 0 : action.type) === \"success\") {\n        (_b = (_a12 = __privateGet(this, _mutateOptions)).onSuccess) == null ? void 0 : _b.call(_a12, action.data, variables, context);\n        (_d = (_c = __privateGet(this, _mutateOptions)).onSettled) == null ? void 0 : _d.call(_c, action.data, null, variables, context);\n      } else if ((action == null ? void 0 : action.type) === \"error\") {\n        (_f = (_e = __privateGet(this, _mutateOptions)).onError) == null ? void 0 : _f.call(_e, action.error, variables, context);\n        (_h = (_g = __privateGet(this, _mutateOptions)).onSettled) == null ? void 0 : _h.call(\n          _g,\n          void 0,\n          action.error,\n          variables,\n          context\n        );\n      }\n    }\n    this.listeners.forEach((listener) => {\n      listener(__privateGet(this, _currentResult2));\n    });\n  });\n}, _a11);\n\n// node_modules/@tanstack/react-query/build/modern/useQueries.js\nvar React9 = __toESM(require_react(), 1);\n\n// node_modules/@tanstack/react-query/build/modern/isRestoring.js\nvar React6 = __toESM(require_react(), 1);\nvar IsRestoringContext = React6.createContext(false);\nvar useIsRestoring = () => React6.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\n\n// node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js\nvar React7 = __toESM(require_react(), 1);\nvar import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);\nfunction createValue() {\n  let isReset = false;\n  return {\n    clearReset: () => {\n      isReset = false;\n    },\n    reset: () => {\n      isReset = true;\n    },\n    isReset: () => {\n      return isReset;\n    }\n  };\n}\nvar QueryErrorResetBoundaryContext = React7.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React7.useContext(QueryErrorResetBoundaryContext);\n\n// node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js\nvar React8 = __toESM(require_react(), 1);\n\n// node_modules/@tanstack/react-query/build/modern/utils.js\nfunction shouldThrowError(throwError, params) {\n  if (typeof throwError === \"function\") {\n    return throwError(...params);\n  }\n  return !!throwError;\n}\nfunction noop2() {\n}\n\n// node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n  if (options.suspense || options.throwOnError || options.experimental_prefetchInRender) {\n    if (!errorResetBoundary.isReset()) {\n      options.retryOnMount = false;\n    }\n  }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n  React8.useEffect(() => {\n    errorResetBoundary.clearReset();\n  }, [errorResetBoundary]);\n};\nvar getHasError = ({\n  result,\n  errorResetBoundary,\n  throwOnError,\n  query\n}) => {\n  return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && shouldThrowError(throwOnError, [result.error, query]);\n};\n\n// node_modules/@tanstack/react-query/build/modern/suspense.js\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n  if (defaultedOptions.suspense) {\n    if (defaultedOptions.staleTime === void 0) {\n      defaultedOptions.staleTime = 1e3;\n    }\n    if (typeof defaultedOptions.gcTime === \"number\") {\n      defaultedOptions.gcTime = Math.max(defaultedOptions.gcTime, 1e3);\n    }\n  }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => (defaultedOptions == null ? void 0 : defaultedOptions.suspense) && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n  errorResetBoundary.clearReset();\n});\n\n// node_modules/@tanstack/react-query/build/modern/useQueries.js\nfunction useQueries({\n  queries,\n  ...options\n}, queryClient) {\n  const client = useQueryClient(queryClient);\n  const isRestoring = useIsRestoring();\n  const errorResetBoundary = useQueryErrorResetBoundary();\n  const defaultedQueries = React9.useMemo(\n    () => queries.map((opts) => {\n      const defaultedOptions = client.defaultQueryOptions(\n        opts\n      );\n      defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n      return defaultedOptions;\n    }),\n    [queries, client, isRestoring]\n  );\n  defaultedQueries.forEach((query) => {\n    ensureSuspenseTimers(query);\n    ensurePreventErrorBoundaryRetry(query, errorResetBoundary);\n  });\n  useClearResetErrorBoundary(errorResetBoundary);\n  const [observer] = React9.useState(\n    () => new QueriesObserver(\n      client,\n      defaultedQueries,\n      options\n    )\n  );\n  const [optimisticResult, getCombinedResult, trackResult] = observer.getOptimisticResult(\n    defaultedQueries,\n    options.combine\n  );\n  React9.useSyncExternalStore(\n    React9.useCallback(\n      (onStoreChange) => isRestoring ? () => void 0 : observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n      [observer, isRestoring]\n    ),\n    () => observer.getCurrentResult(),\n    () => observer.getCurrentResult()\n  );\n  React9.useEffect(() => {\n    observer.setQueries(\n      defaultedQueries,\n      options,\n      {\n        listeners: false\n      }\n    );\n  }, [defaultedQueries, options, observer]);\n  const shouldAtLeastOneSuspend = optimisticResult.some(\n    (result, index) => shouldSuspend(defaultedQueries[index], result)\n  );\n  const suspensePromises = shouldAtLeastOneSuspend ? optimisticResult.flatMap((result, index) => {\n    const opts = defaultedQueries[index];\n    if (opts) {\n      const queryObserver = new QueryObserver(client, opts);\n      if (shouldSuspend(opts, result)) {\n        return fetchOptimistic(opts, queryObserver, errorResetBoundary);\n      } else if (willFetch(result, isRestoring)) {\n        void fetchOptimistic(opts, queryObserver, errorResetBoundary);\n      }\n    }\n    return [];\n  }) : [];\n  if (suspensePromises.length > 0) {\n    throw Promise.all(suspensePromises);\n  }\n  const firstSingleResultWhichShouldThrow = optimisticResult.find(\n    (result, index) => {\n      const query = defaultedQueries[index];\n      return query && getHasError({\n        result,\n        errorResetBoundary,\n        throwOnError: query.throwOnError,\n        query: client.getQueryCache().get(query.queryHash)\n      });\n    }\n  );\n  if (firstSingleResultWhichShouldThrow == null ? void 0 : firstSingleResultWhichShouldThrow.error) {\n    throw firstSingleResultWhichShouldThrow.error;\n  }\n  return getCombinedResult(trackResult());\n}\n\n// node_modules/@tanstack/react-query/build/modern/useBaseQuery.js\nvar React10 = __toESM(require_react(), 1);\nfunction useBaseQuery(options, Observer, queryClient) {\n  var _a12, _b, _c, _d, _e;\n  if (true) {\n    if (typeof options !== \"object\" || Array.isArray(options)) {\n      throw new Error(\n        'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n      );\n    }\n  }\n  const client = useQueryClient(queryClient);\n  const isRestoring = useIsRestoring();\n  const errorResetBoundary = useQueryErrorResetBoundary();\n  const defaultedOptions = client.defaultQueryOptions(options);\n  (_b = (_a12 = client.getDefaultOptions().queries) == null ? void 0 : _a12._experimental_beforeQuery) == null ? void 0 : _b.call(\n    _a12,\n    defaultedOptions\n  );\n  defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n  ensureSuspenseTimers(defaultedOptions);\n  ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n  useClearResetErrorBoundary(errorResetBoundary);\n  const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n  const [observer] = React10.useState(\n    () => new Observer(\n      client,\n      defaultedOptions\n    )\n  );\n  const result = observer.getOptimisticResult(defaultedOptions);\n  React10.useSyncExternalStore(\n    React10.useCallback(\n      (onStoreChange) => {\n        const unsubscribe = isRestoring ? () => void 0 : observer.subscribe(notifyManager.batchCalls(onStoreChange));\n        observer.updateResult();\n        return unsubscribe;\n      },\n      [observer, isRestoring]\n    ),\n    () => observer.getCurrentResult(),\n    () => observer.getCurrentResult()\n  );\n  React10.useEffect(() => {\n    observer.setOptions(defaultedOptions, { listeners: false });\n  }, [defaultedOptions, observer]);\n  if (shouldSuspend(defaultedOptions, result)) {\n    throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n  }\n  if (getHasError({\n    result,\n    errorResetBoundary,\n    throwOnError: defaultedOptions.throwOnError,\n    query: client.getQueryCache().get(defaultedOptions.queryHash)\n  })) {\n    throw result.error;\n  }\n  ;\n  (_d = (_c = client.getDefaultOptions().queries) == null ? void 0 : _c._experimental_afterQuery) == null ? void 0 : _d.call(\n    _c,\n    defaultedOptions,\n    result\n  );\n  if (defaultedOptions.experimental_prefetchInRender && !isServer && willFetch(result, isRestoring)) {\n    const promise = isNewCacheEntry ? (\n      // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n      fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n    ) : (\n      // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n      (_e = client.getQueryCache().get(defaultedOptions.queryHash)) == null ? void 0 : _e.promise\n    );\n    promise == null ? void 0 : promise.catch(noop2).finally(() => {\n      observer.updateResult();\n    });\n  }\n  return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\n\n// node_modules/@tanstack/react-query/build/modern/useQuery.js\nfunction useQuery(options, queryClient) {\n  return useBaseQuery(options, QueryObserver, queryClient);\n}\n\n// node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.js\nfunction useSuspenseQuery(options, queryClient) {\n  if (true) {\n    if (options.queryFn === skipToken) {\n      console.error(\"skipToken is not allowed for useSuspenseQuery\");\n    }\n  }\n  return useBaseQuery(\n    {\n      ...options,\n      enabled: true,\n      suspense: true,\n      throwOnError: defaultThrowOnError,\n      placeholderData: void 0\n    },\n    QueryObserver,\n    queryClient\n  );\n}\n\n// node_modules/@tanstack/react-query/build/modern/queryOptions.js\nfunction queryOptions(options) {\n  return options;\n}\n\n// node_modules/@tanstack/react-query/build/modern/HydrationBoundary.js\nvar React11 = __toESM(require_react(), 1);\n\n// node_modules/@tanstack/react-query/build/modern/useIsFetching.js\nvar React12 = __toESM(require_react(), 1);\n\n// node_modules/@tanstack/react-query/build/modern/useMutationState.js\nvar React13 = __toESM(require_react(), 1);\n\n// node_modules/@tanstack/react-query/build/modern/useMutation.js\nvar React14 = __toESM(require_react(), 1);\nfunction useMutation(options, queryClient) {\n  const client = useQueryClient(queryClient);\n  const [observer] = React14.useState(\n    () => new MutationObserver(\n      client,\n      options\n    )\n  );\n  React14.useEffect(() => {\n    observer.setOptions(options);\n  }, [observer, options]);\n  const result = React14.useSyncExternalStore(\n    React14.useCallback(\n      (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n      [observer]\n    ),\n    () => observer.getCurrentResult(),\n    () => observer.getCurrentResult()\n  );\n  const mutate = React14.useCallback(\n    (variables, mutateOptions) => {\n      observer.mutate(variables, mutateOptions).catch(noop2);\n    },\n    [observer]\n  );\n  if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n    throw result.error;\n  }\n  return { ...result, mutate, mutateAsync: result.mutate };\n}\n\n// node_modules/thirdweb/dist/esm/react/core/providers/connection-manager.js\nvar import_react5 = __toESM(require_react(), 1);\nvar ConnectionManagerCtx = (0, import_react5.createContext)(void 0);\nfunction useConnectionManager() {\n  const connectionManager = useConnectionManagerCtx(\"useConnectionManager\");\n  if (!connectionManager) {\n    throw new Error(\"useConnectionManager must be used within a <ThirdwebProvider> Provider\");\n  }\n  return connectionManager;\n}\nfunction useConnectionManagerCtx(hookname) {\n  const manager = (0, import_react5.useContext)(ConnectionManagerCtx);\n  if (!manager) {\n    throw new Error(`${hookname} must be used within <ThirdwebProvider>`);\n  }\n  return manager;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useActiveWallet.js\nvar import_react6 = __toESM(require_react(), 1);\nfunction useActiveWallet() {\n  const manager = useConnectionManagerCtx(\"useActiveWallet\");\n  const store = manager.activeWalletStore;\n  return (0, import_react6.useSyncExternalStore)(store.subscribe, store.getValue, store.getValue);\n}\n\n// node_modules/thirdweb/dist/esm/react/core/design-system/CustomThemeProvider.js\nvar import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);\nvar import_react7 = __toESM(require_react(), 1);\nvar CustomThemeCtx = (0, import_react7.createContext)(darkThemeObj);\nfunction CustomThemeProvider(props) {\n  const { theme, children } = props;\n  const themeObj = parseTheme(theme);\n  return (0, import_jsx_runtime3.jsx)(CustomThemeCtx.Provider, { value: themeObj, children });\n}\nfunction parseTheme(theme) {\n  if (!theme || !isValidTheme(theme)) {\n    return darkThemeObj;\n  }\n  let themeObj;\n  if (typeof theme === \"string\") {\n    themeObj = theme === \"light\" ? lightThemeObj : darkThemeObj;\n  } else {\n    themeObj = theme;\n  }\n  return themeObj;\n}\nfunction isValidTheme(theme) {\n  return theme === \"dark\" || theme === \"light\" || typeof theme === \"object\" && theme !== null && \"colors\" in theme;\n}\nfunction useCustomTheme() {\n  return (0, import_react7.useContext)(CustomThemeCtx);\n}\n\n// node_modules/@radix-ui/react-icons/dist/react-icons.esm.js\nvar import_react8 = __toESM(require_react());\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null)\n    return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0)\n      continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nvar _excluded = [\"color\"];\nvar AccessibilityIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877197 7.49984C0.877197 3.84216 3.84234 0.877014 7.50003 0.877014C11.1577 0.877014 14.1229 3.84216 14.1229 7.49984C14.1229 11.1575 11.1577 14.1227 7.50003 14.1227C3.84234 14.1227 0.877197 11.1575 0.877197 7.49984ZM7.50003 1.82701C4.36702 1.82701 1.8272 4.36683 1.8272 7.49984C1.8272 10.6328 4.36702 13.1727 7.50003 13.1727C10.633 13.1727 13.1729 10.6328 13.1729 7.49984C13.1729 4.36683 10.633 1.82701 7.50003 1.82701ZM7.12457 9.00001C7.06994 9.12735 6.33165 11.9592 6.33165 11.9592C6.26018 12.226 5.98601 12.3843 5.71928 12.3128C5.45255 12.2413 5.29425 11.9672 5.36573 11.7004C5.36573 11.7004 6.24661 8.87268 6.24661 8.27007V6.80099L4.28763 6.27608C4.0209 6.20461 3.86261 5.93045 3.93408 5.66371C4.00555 5.39698 4.27972 5.23869 4.54645 5.31016C4.54645 5.31016 6.20042 5.87268 6.84579 5.87268H8.15505C8.80042 5.87268 10.4534 5.31042 10.4534 5.31042C10.7202 5.23895 10.9943 5.39724 11.0658 5.66397C11.1373 5.93071 10.979 6.20487 10.7122 6.27635L8.74661 6.80303V8.27007C8.74661 8.87268 9.62663 11.6971 9.62663 11.6971C9.6981 11.9639 9.5398 12.238 9.27307 12.3095C9.00634 12.381 8.73217 12.2227 8.6607 11.956C8.6607 11.956 7.91994 9.12735 7.86866 9.00001C7.81994 8.87268 7.65006 8.87268 7.65006 8.87268H7.34317C7.34317 8.87268 7.16994 8.87268 7.12457 9.00001ZM7.50043 5.12007C8.12175 5.12007 8.62543 4.61639 8.62543 3.99507C8.62543 3.37375 8.12175 2.87007 7.50043 2.87007C6.87911 2.87007 6.37543 3.37375 6.37543 3.99507C6.37543 4.61639 6.87911 5.12007 7.50043 5.12007Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1 = [\"color\"];\nvar ActivityLogIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0 1.5C0 1.22386 0.223858 1 0.5 1H2.5C2.77614 1 3 1.22386 3 1.5C3 1.77614 2.77614 2 2.5 2H0.5C0.223858 2 0 1.77614 0 1.5ZM4 1.5C4 1.22386 4.22386 1 4.5 1H14.5C14.7761 1 15 1.22386 15 1.5C15 1.77614 14.7761 2 14.5 2H4.5C4.22386 2 4 1.77614 4 1.5ZM4 4.5C4 4.22386 4.22386 4 4.5 4H11.5C11.7761 4 12 4.22386 12 4.5C12 4.77614 11.7761 5 11.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM0 7.5C0 7.22386 0.223858 7 0.5 7H2.5C2.77614 7 3 7.22386 3 7.5C3 7.77614 2.77614 8 2.5 8H0.5C0.223858 8 0 7.77614 0 7.5ZM4 7.5C4 7.22386 4.22386 7 4.5 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H4.5C4.22386 8 4 7.77614 4 7.5ZM4 10.5C4 10.2239 4.22386 10 4.5 10H11.5C11.7761 10 12 10.2239 12 10.5C12 10.7761 11.7761 11 11.5 11H4.5C4.22386 11 4 10.7761 4 10.5ZM0 13.5C0 13.2239 0.223858 13 0.5 13H2.5C2.77614 13 3 13.2239 3 13.5C3 13.7761 2.77614 14 2.5 14H0.5C0.223858 14 0 13.7761 0 13.5ZM4 13.5C4 13.2239 4.22386 13 4.5 13H14.5C14.7761 13 15 13.2239 15 13.5C15 13.7761 14.7761 14 14.5 14H4.5C4.22386 14 4 13.7761 4 13.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2 = [\"color\"];\nvar AlignBaselineIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M10.5 1.75003C10.7107 1.75003 10.8988 1.88217 10.9703 2.08042L13.9703 10.4C14.064 10.6598 13.9293 10.9463 13.6696 11.04C13.4098 11.1336 13.1233 10.999 13.0296 10.7392L12.0477 8.01606H8.95227L7.97031 10.7392C7.87664 10.999 7.59012 11.1336 7.33035 11.04C7.07058 10.9463 6.93593 10.6598 7.0296 10.4L10.0296 2.08042C10.1011 1.88217 10.2892 1.75003 10.5 1.75003ZM10.5 3.72402L11.7411 7.16606H9.25877L10.5 3.72402ZM2.49949 2.09997C2.7204 2.09997 2.89949 2.27906 2.89949 2.49997L2.89949 9.53428L4.21664 8.21713C4.37285 8.06092 4.62612 8.06092 4.78233 8.21713C4.93854 8.37334 4.93854 8.6266 4.78233 8.78281L2.78233 10.7828C2.70732 10.8578 2.60557 10.9 2.49949 10.9C2.3934 10.9 2.29166 10.8578 2.21664 10.7828L0.216645 8.78281C0.0604349 8.6266 0.0604349 8.37334 0.216645 8.21713C0.372854 8.06092 0.62612 8.06092 0.78233 8.21713L2.09949 9.53428L2.09949 2.49997C2.09949 2.27906 2.27857 2.09997 2.49949 2.09997ZM0.0999695 13.5001C0.0999695 13.2791 0.279056 13.1001 0.499969 13.1001H14.5C14.7209 13.1001 14.9 13.2791 14.9 13.5001C14.9 13.721 14.7209 13.9001 14.5 13.9001H0.499969C0.279056 13.9001 0.0999695 13.721 0.0999695 13.5001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3 = [\"color\"];\nvar AlignBottomIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9 3C9 2.44772 8.55229 2 8 2H7C6.44772 2 6 2.44772 6 3L6 14H1.5C1.22386 14 1 14.2239 1 14.5C1 14.7761 1.22386 15 1.5 15L6 15H9H13.5C13.7761 15 14 14.7761 14 14.5C14 14.2239 13.7761 14 13.5 14H9V3Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4 = [\"color\"];\nvar AlignCenterHorizontallyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.99988 6C1.44759 6 0.999877 6.44772 0.999877 7L0.999877 8C0.999877 8.55228 1.44759 9 1.99988 9L6.99988 9L6.99988 13.5C6.99988 13.7761 7.22374 14 7.49988 14C7.77602 14 7.99988 13.7761 7.99988 13.5L7.99988 9L12.9999 9C13.5522 9 13.9999 8.55228 13.9999 8L13.9999 7C13.9999 6.44772 13.5522 6 12.9999 6L7.99988 6L7.99988 1.5C7.99988 1.22386 7.77602 1 7.49988 1C7.22373 1 6.99988 1.22386 6.99988 1.5L6.99988 6L1.99988 6Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$5 = [\"color\"];\nvar AlignCenterVerticallyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$5);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.99988 1C6.44759 1 5.99988 1.44772 5.99988 2V7H1.49988C1.22374 7 0.999878 7.22386 0.999878 7.5C0.999878 7.77614 1.22374 8 1.49988 8H5.99988V13C5.99988 13.5523 6.44759 14 6.99988 14H7.99988C8.55216 14 8.99988 13.5523 8.99988 13V8H13.4999C13.776 8 13.9999 7.77614 13.9999 7.5C13.9999 7.22386 13.776 7 13.4999 7H8.99988V2C8.99988 1.44772 8.55216 1 7.99988 1L6.99988 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$6 = [\"color\"];\nvar AlignLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$6);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.499995 0.999995C0.223855 0.999995 -5.58458e-07 1.22385 -5.46388e-07 1.49999L-2.18554e-08 13.4999C-9.78492e-09 13.776 0.223855 13.9999 0.499995 13.9999C0.776136 13.9999 0.999991 13.776 0.999991 13.4999L0.999991 8.99993L12 8.99993C12.5523 8.99993 13 8.55222 13 7.99993L13 6.99994C13 6.44766 12.5523 5.99995 12 5.99995L0.999991 5.99995L0.999991 1.49999C0.999991 1.22385 0.776135 0.999995 0.499995 0.999995Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$7 = [\"color\"];\nvar AlignRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$7);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14.4999 1C14.2237 1 13.9999 1.22386 13.9999 1.5L13.9999 6L2.99988 6C2.44759 6 1.99988 6.44772 1.99988 7L1.99988 8C1.99988 8.55228 2.44759 9 2.99988 9L13.9999 9L13.9999 13.5C13.9999 13.7761 14.2237 14 14.4999 14C14.776 14 14.9999 13.7761 14.9999 13.5L14.9999 9L14.9999 6L14.9999 1.5C14.9999 1.22386 14.776 1 14.4999 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$8 = [\"color\"];\nvar AlignTopIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$8);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.5 0C1.22386 0 1 0.223858 1 0.5C1 0.776142 1.22386 1 1.5 1H6V12C6 12.5523 6.44772 13 7 13H8C8.55228 13 9 12.5523 9 12V1H13.5C13.7761 1 14 0.776142 14 0.5C14 0.223858 13.7761 0 13.5 0H9H6H1.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$9 = [\"color\"];\nvar AllSidesIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$9);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 0.75L9.75 3H5.25L7.5 0.75ZM7.5 14.25L9.75 12H5.25L7.5 14.25ZM3 5.25L0.75 7.5L3 9.75V5.25ZM14.25 7.5L12 5.25V9.75L14.25 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$a = [\"color\"];\nvar AngleIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$a);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.8914 2.1937C9.1158 2.35464 9.16725 2.66701 9.00631 2.89141L2.47388 12H13.5C13.7761 12 14 12.2239 14 12.5C14 12.7762 13.7761 13 13.5 13H1.5C1.31254 13 1.14082 12.8952 1.0552 12.7284C0.969578 12.5616 0.984438 12.361 1.09369 12.2086L8.19369 2.30862C8.35462 2.08422 8.667 2.03277 8.8914 2.1937ZM11.1 6.50001C11.1 6.22387 11.3238 6.00001 11.6 6.00001C11.8761 6.00001 12.1 6.22387 12.1 6.50001C12.1 6.77615 11.8761 7.00001 11.6 7.00001C11.3238 7.00001 11.1 6.77615 11.1 6.50001ZM10.4 4.00001C10.1239 4.00001 9.90003 4.22387 9.90003 4.50001C9.90003 4.77615 10.1239 5.00001 10.4 5.00001C10.6762 5.00001 10.9 4.77615 10.9 4.50001C10.9 4.22387 10.6762 4.00001 10.4 4.00001ZM12.1 8.50001C12.1 8.22387 12.3238 8.00001 12.6 8.00001C12.8761 8.00001 13.1 8.22387 13.1 8.50001C13.1 8.77615 12.8761 9.00001 12.6 9.00001C12.3238 9.00001 12.1 8.77615 12.1 8.50001ZM13.4 10C13.1239 10 12.9 10.2239 12.9 10.5C12.9 10.7761 13.1239 11 13.4 11C13.6762 11 13.9 10.7761 13.9 10.5C13.9 10.2239 13.6762 10 13.4 10Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$b = [\"color\"];\nvar ArchiveIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$b);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.30902 1C2.93025 1 2.58398 1.214 2.41459 1.55279L1.05279 4.27639C1.01807 4.34582 1 4.42238 1 4.5V13C1 13.5523 1.44772 14 2 14H13C13.5523 14 14 13.5523 14 13V4.5C14 4.42238 13.9819 4.34582 13.9472 4.27639L12.5854 1.55281C12.416 1.21403 12.0698 1.00003 11.691 1.00003L7.5 1.00001L3.30902 1ZM3.30902 2L7 2.00001V4H2.30902L3.30902 2ZM8 4V2.00002L11.691 2.00003L12.691 4H8ZM7.5 5H13V13H2V5H7.5ZM5.5 7C5.22386 7 5 7.22386 5 7.5C5 7.77614 5.22386 8 5.5 8H9.5C9.77614 8 10 7.77614 10 7.5C10 7.22386 9.77614 7 9.5 7H5.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$c = [\"color\"];\nvar ArrowBottomLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$c);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11.3536 3.64644C11.5488 3.8417 11.5488 4.15828 11.3536 4.35354L4.70711 11L9 11C9.27614 11 9.5 11.2239 9.5 11.5C9.5 11.7761 9.27614 12 9 12L3.5 12C3.36739 12 3.24021 11.9473 3.14645 11.8536C3.05268 11.7598 3 11.6326 3 11.5L3 5.99999C3 5.72385 3.22386 5.49999 3.5 5.49999C3.77614 5.49999 4 5.72385 4 5.99999V10.2929L10.6464 3.64643C10.8417 3.45117 11.1583 3.45117 11.3536 3.64644Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$d = [\"color\"];\nvar ArrowBottomRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$d);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.64645 3.64644C3.45118 3.8417 3.45118 4.15828 3.64645 4.35354L10.2929 11L6 11C5.72386 11 5.5 11.2239 5.5 11.5C5.5 11.7761 5.72386 12 6 12L11.5 12C11.6326 12 11.7598 11.9473 11.8536 11.8536C11.9473 11.7598 12 11.6326 12 11.5L12 5.99999C12 5.72385 11.7761 5.49999 11.5 5.49999C11.2239 5.49999 11 5.72385 11 5.99999V10.2929L4.35355 3.64643C4.15829 3.45117 3.84171 3.45117 3.64645 3.64644Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$e = [\"color\"];\nvar ArrowDownIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$e);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 2C7.77614 2 8 2.22386 8 2.5L8 11.2929L11.1464 8.14645C11.3417 7.95118 11.6583 7.95118 11.8536 8.14645C12.0488 8.34171 12.0488 8.65829 11.8536 8.85355L7.85355 12.8536C7.75979 12.9473 7.63261 13 7.5 13C7.36739 13 7.24021 12.9473 7.14645 12.8536L3.14645 8.85355C2.95118 8.65829 2.95118 8.34171 3.14645 8.14645C3.34171 7.95118 3.65829 7.95118 3.85355 8.14645L7 11.2929L7 2.5C7 2.22386 7.22386 2 7.5 2Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$f = [\"color\"];\nvar ArrowLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$f);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.85355 3.14645C7.04882 3.34171 7.04882 3.65829 6.85355 3.85355L3.70711 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H3.70711L6.85355 11.1464C7.04882 11.3417 7.04882 11.6583 6.85355 11.8536C6.65829 12.0488 6.34171 12.0488 6.14645 11.8536L2.14645 7.85355C1.95118 7.65829 1.95118 7.34171 2.14645 7.14645L6.14645 3.14645C6.34171 2.95118 6.65829 2.95118 6.85355 3.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$g = [\"color\"];\nvar ArrowRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$g);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.14645 3.14645C8.34171 2.95118 8.65829 2.95118 8.85355 3.14645L12.8536 7.14645C13.0488 7.34171 13.0488 7.65829 12.8536 7.85355L8.85355 11.8536C8.65829 12.0488 8.34171 12.0488 8.14645 11.8536C7.95118 11.6583 7.95118 11.3417 8.14645 11.1464L11.2929 8H2.5C2.22386 8 2 7.77614 2 7.5C2 7.22386 2.22386 7 2.5 7H11.2929L8.14645 3.85355C7.95118 3.65829 7.95118 3.34171 8.14645 3.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$h = [\"color\"];\nvar ArrowTopLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$h);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11.3536 11.3536C11.5488 11.1583 11.5488 10.8417 11.3536 10.6465L4.70711 4L9 4C9.27614 4 9.5 3.77614 9.5 3.5C9.5 3.22386 9.27614 3 9 3L3.5 3C3.36739 3 3.24021 3.05268 3.14645 3.14645C3.05268 3.24022 3 3.36739 3 3.5L3 9.00001C3 9.27615 3.22386 9.50001 3.5 9.50001C3.77614 9.50001 4 9.27615 4 9.00001V4.70711L10.6464 11.3536C10.8417 11.5488 11.1583 11.5488 11.3536 11.3536Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$i = [\"color\"];\nvar ArrowTopRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$i);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.64645 11.3536C3.45118 11.1583 3.45118 10.8417 3.64645 10.6465L10.2929 4L6 4C5.72386 4 5.5 3.77614 5.5 3.5C5.5 3.22386 5.72386 3 6 3L11.5 3C11.6326 3 11.7598 3.05268 11.8536 3.14645C11.9473 3.24022 12 3.36739 12 3.5L12 9.00001C12 9.27615 11.7761 9.50001 11.5 9.50001C11.2239 9.50001 11 9.27615 11 9.00001V4.70711L4.35355 11.3536C4.15829 11.5488 3.84171 11.5488 3.64645 11.3536Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$j = [\"color\"];\nvar ArrowUpIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$j);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.14645 2.14645C7.34171 1.95118 7.65829 1.95118 7.85355 2.14645L11.8536 6.14645C12.0488 6.34171 12.0488 6.65829 11.8536 6.85355C11.6583 7.04882 11.3417 7.04882 11.1464 6.85355L8 3.70711L8 12.5C8 12.7761 7.77614 13 7.5 13C7.22386 13 7 12.7761 7 12.5L7 3.70711L3.85355 6.85355C3.65829 7.04882 3.34171 7.04882 3.14645 6.85355C2.95118 6.65829 2.95118 6.34171 3.14645 6.14645L7.14645 2.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$k = [\"color\"];\nvar AspectRatioIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$k);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.5 2H12.5C12.7761 2 13 2.22386 13 2.5V12.5C13 12.7761 12.7761 13 12.5 13H2.5C2.22386 13 2 12.7761 2 12.5V2.5C2 2.22386 2.22386 2 2.5 2ZM1 2.5C1 1.67157 1.67157 1 2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5ZM7.5 4C7.77614 4 8 3.77614 8 3.5C8 3.22386 7.77614 3 7.5 3C7.22386 3 7 3.22386 7 3.5C7 3.77614 7.22386 4 7.5 4ZM8 5.5C8 5.77614 7.77614 6 7.5 6C7.22386 6 7 5.77614 7 5.5C7 5.22386 7.22386 5 7.5 5C7.77614 5 8 5.22386 8 5.5ZM7.5 8C7.77614 8 8 7.77614 8 7.5C8 7.22386 7.77614 7 7.5 7C7.22386 7 7 7.22386 7 7.5C7 7.77614 7.22386 8 7.5 8ZM10 7.5C10 7.77614 9.77614 8 9.5 8C9.22386 8 9 7.77614 9 7.5C9 7.22386 9.22386 7 9.5 7C9.77614 7 10 7.22386 10 7.5ZM11.5 8C11.7761 8 12 7.77614 12 7.5C12 7.22386 11.7761 7 11.5 7C11.2239 7 11 7.22386 11 7.5C11 7.77614 11.2239 8 11.5 8Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$l = [\"color\"];\nvar AvatarIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$l);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877014 7.49988C0.877014 3.84219 3.84216 0.877045 7.49985 0.877045C11.1575 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1575 14.1227 7.49985 14.1227C3.84216 14.1227 0.877014 11.1575 0.877014 7.49988ZM7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.97196 2.38774 10.3131 3.30727 11.3213C4.19074 9.94119 5.73818 9.02499 7.50023 9.02499C9.26206 9.02499 10.8093 9.94097 11.6929 11.3208C12.6121 10.3127 13.1727 8.97172 13.1727 7.49988C13.1727 4.36686 10.6328 1.82704 7.49985 1.82704ZM10.9818 11.9787C10.2839 10.7795 8.9857 9.97499 7.50023 9.97499C6.01458 9.97499 4.71624 10.7797 4.01845 11.9791C4.97952 12.7272 6.18765 13.1727 7.49985 13.1727C8.81227 13.1727 10.0206 12.727 10.9818 11.9787ZM5.14999 6.50487C5.14999 5.207 6.20212 4.15487 7.49999 4.15487C8.79786 4.15487 9.84999 5.207 9.84999 6.50487C9.84999 7.80274 8.79786 8.85487 7.49999 8.85487C6.20212 8.85487 5.14999 7.80274 5.14999 6.50487ZM7.49999 5.10487C6.72679 5.10487 6.09999 5.73167 6.09999 6.50487C6.09999 7.27807 6.72679 7.90487 7.49999 7.90487C8.27319 7.90487 8.89999 7.27807 8.89999 6.50487C8.89999 5.73167 8.27319 5.10487 7.49999 5.10487Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$m = [\"color\"];\nvar BackpackIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$m);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5 1C5 0.447715 5.44772 0 6 0H9C9.55228 0 10 0.447715 10 1V2H14C14.5523 2 15 2.44772 15 3V6C15 6.8888 14.6131 7.68734 14 8.23608V11.5C14 12.3284 13.3284 13 12.5 13H2.5C1.67157 13 1 12.3284 1 11.5V8.2359C0.38697 7.68721 0 6.88883 0 6V3C0 2.44772 0.447716 2 1 2H5V1ZM9 1V2H6V1H9ZM1 3H5H5.5H9.5H10H14V6C14 6.654 13.6866 7.23467 13.1997 7.6004C12.8655 7.85144 12.4508 8 12 8H8V7.5C8 7.22386 7.77614 7 7.5 7C7.22386 7 7 7.22386 7 7.5V8H3C2.5493 8 2.1346 7.85133 1.80029 7.60022C1.31335 7.23446 1 6.65396 1 6V3ZM7 9H3C2.64961 9 2.31292 8.93972 2 8.82905V11.5C2 11.7761 2.22386 12 2.5 12H12.5C12.7761 12 13 11.7761 13 11.5V8.82915C12.6871 8.93978 12.3504 9 12 9H8V9.5C8 9.77614 7.77614 10 7.5 10C7.22386 10 7 9.77614 7 9.5V9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$n = [\"color\"];\nvar BadgeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$n);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.5 6H11.5C12.3284 6 13 6.67157 13 7.5C13 8.32843 12.3284 9 11.5 9H3.5C2.67157 9 2 8.32843 2 7.5C2 6.67157 2.67157 6 3.5 6ZM1 7.5C1 6.11929 2.11929 5 3.5 5H11.5C12.8807 5 14 6.11929 14 7.5C14 8.88071 12.8807 10 11.5 10H3.5C2.11929 10 1 8.88071 1 7.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H10.5C10.7761 8 11 7.77614 11 7.5C11 7.22386 10.7761 7 10.5 7H4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$o = [\"color\"];\nvar BarChartIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$o);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11.5 1C11.7761 1 12 1.22386 12 1.5V13.5C12 13.7761 11.7761 14 11.5 14C11.2239 14 11 13.7761 11 13.5V1.5C11 1.22386 11.2239 1 11.5 1ZM9.5 3C9.77614 3 10 3.22386 10 3.5V13.5C10 13.7761 9.77614 14 9.5 14C9.22386 14 9 13.7761 9 13.5V3.5C9 3.22386 9.22386 3 9.5 3ZM13.5 3C13.7761 3 14 3.22386 14 3.5V13.5C14 13.7761 13.7761 14 13.5 14C13.2239 14 13 13.7761 13 13.5V3.5C13 3.22386 13.2239 3 13.5 3ZM5.5 4C5.77614 4 6 4.22386 6 4.5V13.5C6 13.7761 5.77614 14 5.5 14C5.22386 14 5 13.7761 5 13.5V4.5C5 4.22386 5.22386 4 5.5 4ZM1.5 5C1.77614 5 2 5.22386 2 5.5V13.5C2 13.7761 1.77614 14 1.5 14C1.22386 14 1 13.7761 1 13.5V5.5C1 5.22386 1.22386 5 1.5 5ZM7.5 5C7.77614 5 8 5.22386 8 5.5V13.5C8 13.7761 7.77614 14 7.5 14C7.22386 14 7 13.7761 7 13.5V5.5C7 5.22386 7.22386 5 7.5 5ZM3.5 7C3.77614 7 4 7.22386 4 7.5V13.5C4 13.7761 3.77614 14 3.5 14C3.22386 14 3 13.7761 3 13.5V7.5C3 7.22386 3.22386 7 3.5 7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$p = [\"color\"];\nvar BellIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$p);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.60124 1.25086C8.60124 1.75459 8.26278 2.17927 7.80087 2.30989C10.1459 2.4647 12 4.41582 12 6.79999V10.25C12 11.0563 12.0329 11.7074 12.7236 12.0528C12.931 12.1565 13.0399 12.3892 12.9866 12.6149C12.9333 12.8406 12.7319 13 12.5 13H8.16144C8.36904 13.1832 8.49997 13.4513 8.49997 13.75C8.49997 14.3023 8.05226 14.75 7.49997 14.75C6.94769 14.75 6.49997 14.3023 6.49997 13.75C6.49997 13.4513 6.63091 13.1832 6.83851 13H2.49999C2.2681 13 2.06664 12.8406 2.01336 12.6149C1.96009 12.3892 2.06897 12.1565 2.27638 12.0528C2.96708 11.7074 2.99999 11.0563 2.99999 10.25V6.79999C2.99999 4.41537 4.85481 2.46396 7.20042 2.3098C6.73867 2.17908 6.40036 1.75448 6.40036 1.25086C6.40036 0.643104 6.89304 0.150421 7.5008 0.150421C8.10855 0.150421 8.60124 0.643104 8.60124 1.25086ZM7.49999 3.29999C5.56699 3.29999 3.99999 4.86699 3.99999 6.79999V10.25L4.00002 10.3009C4.0005 10.7463 4.00121 11.4084 3.69929 12H11.3007C10.9988 11.4084 10.9995 10.7463 11 10.3009L11 10.25V6.79999C11 4.86699 9.43299 3.29999 7.49999 3.29999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$q = [\"color\"];\nvar BlendingModeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3 9C3 6.5 4.5 4.25 7.5 1.5C10.5 4.25 12 6.5 12 9C12 11.4853 9.98528 13.5 7.5 13.5C5.01472 13.5 3 11.4853 3 9ZM10.9524 8.30307C9.67347 7.82121 8.2879 8.46208 6.98956 9.06259C5.9327 9.55142 4.93365 10.0135 4.09695 9.82153C4.03357 9.55804 4 9.28294 4 9C4 7.11203 5.02686 5.27195 7.5 2.87357C9.66837 4.97639 10.725 6.65004 10.9524 8.30307Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$r = [\"color\"];\nvar BookmarkIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$r);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3 2.5C3 2.22386 3.22386 2 3.5 2H11.5C11.7761 2 12 2.22386 12 2.5V13.5C12 13.6818 11.9014 13.8492 11.7424 13.9373C11.5834 14.0254 11.3891 14.0203 11.235 13.924L7.5 11.5896L3.765 13.924C3.61087 14.0203 3.41659 14.0254 3.25762 13.9373C3.09864 13.8492 3 13.6818 3 13.5V2.5ZM4 3V12.5979L6.97 10.7416C7.29427 10.539 7.70573 10.539 8.03 10.7416L11 12.5979V3H4Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$s = [\"color\"];\nvar BookmarkFilledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$s);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.5 2C3.22386 2 3 2.22386 3 2.5V13.5C3 13.6818 3.09864 13.8492 3.25762 13.9373C3.41659 14.0254 3.61087 14.0203 3.765 13.924L7.5 11.5896L11.235 13.924C11.3891 14.0203 11.5834 14.0254 11.7424 13.9373C11.9014 13.8492 12 13.6818 12 13.5V2.5C12 2.22386 11.7761 2 11.5 2H3.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$t = [\"color\"];\nvar BorderAllIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$t);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.25 1C0.25 0.585786 0.585786 0.25 1 0.25H14C14.4142 0.25 14.75 0.585786 14.75 1V14C14.75 14.4142 14.4142 14.75 14 14.75H1C0.585786 14.75 0.25 14.4142 0.25 14V1ZM1.75 1.75V13.25H13.25V1.75H1.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"5\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"3\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"9\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"11\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }));\n});\nvar _excluded$u = [\"color\"];\nvar BorderBottomIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$u);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 13.25L14 13.25V14.75L1 14.75V13.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"5\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"5\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"3\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"3\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"9\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"9\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"11\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"11\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }));\n});\nvar _excluded$v = [\"color\"];\nvar BorderDashedIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$v);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0 7.5C0 7.22386 0.223858 7 0.5 7H3C3.27614 7 3.5 7.22386 3.5 7.5C3.5 7.77614 3.27614 8 3 8H0.5C0.223858 8 0 7.77614 0 7.5ZM5.75 7.5C5.75 7.22386 5.97386 7 6.25 7H8.75C9.02614 7 9.25 7.22386 9.25 7.5C9.25 7.77614 9.02614 8 8.75 8H6.25C5.97386 8 5.75 7.77614 5.75 7.5ZM12 7C11.7239 7 11.5 7.22386 11.5 7.5C11.5 7.77614 11.7239 8 12 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$w = [\"color\"];\nvar BorderDottedIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$w);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.5 6.625C1.01675 6.625 0.625 7.01675 0.625 7.5C0.625 7.98325 1.01675 8.375 1.5 8.375C1.98325 8.375 2.375 7.98325 2.375 7.5C2.375 7.01675 1.98325 6.625 1.5 6.625ZM5.5 6.625C5.01675 6.625 4.625 7.01675 4.625 7.5C4.625 7.98325 5.01675 8.375 5.5 8.375C5.98325 8.375 6.375 7.98325 6.375 7.5C6.375 7.01675 5.98325 6.625 5.5 6.625ZM9.5 6.625C9.01675 6.625 8.625 7.01675 8.625 7.5C8.625 7.98325 9.01675 8.375 9.5 8.375C9.98325 8.375 10.375 7.98325 10.375 7.5C10.375 7.01675 9.98325 6.625 9.5 6.625ZM12.625 7.5C12.625 7.01675 13.0168 6.625 13.5 6.625C13.9832 6.625 14.375 7.01675 14.375 7.5C14.375 7.98325 13.9832 8.375 13.5 8.375C13.0168 8.375 12.625 7.98325 12.625 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$x = [\"color\"];\nvar BorderLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$x);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.75 1L1.75 14L0.249999 14L0.25 1L1.75 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"10\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 10 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"10\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 10 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"12\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 12 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"12\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 12 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 5)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"5\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 5)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 3)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"3\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 3)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 9)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"9\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 9)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 11)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"11\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 11)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"6\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 6 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"6\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 6 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"4\",\n    y: \"7\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 4 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"4\",\n    y: \"13\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 4 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"10\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 10 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"12\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 12 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 8 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 14 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"6\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 6 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"4\",\n    y: \"1\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(90 4 1)\",\n    fill: color\n  }));\n});\nvar _excluded$y = [\"color\"];\nvar BorderNoneIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"5.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"5.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"3.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"3.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"5\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"5\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"5\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"3\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"3\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"3\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"9\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"9\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"9\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"11\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"11\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"11\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"9.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"9.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"11.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"11.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"5.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"3.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"9.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"11.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }));\n});\nvar _excluded$z = [\"color\"];\nvar BorderRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.25 1L13.25 14L14.75 14L14.75 1L13.25 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 5 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 5 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 3 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 3 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 5)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 5)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 3)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 3)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 9)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 9)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 11)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 11)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 9 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 9 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 11 7)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 11 13)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 5 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 3 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 7 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 1 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 9 1)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"matrix(0 1 1 0 11 1)\",\n    fill: color\n  }));\n});\nvar _excluded$A = [\"color\"];\nvar BorderSolidIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$A);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.25 7.5C1.25 7.22386 1.47386 7 1.75 7H13.25C13.5261 7 13.75 7.22386 13.75 7.5C13.75 7.77614 13.5261 8 13.25 8H1.75C1.47386 8 1.25 7.77614 1.25 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$B = [\"color\"];\nvar BorderSplitIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$B);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"5.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"3.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"13.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"1.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"13\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"5\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"3\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"9\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"11\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"9.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"7\",\n    y: \"11.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"1\",\n    y: \"7.025\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    fill: color\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 1.49994C1 1.2238 1.22386 0.999939 1.5 0.999939H6V1.99994H2V5.99994H1V1.49994ZM13 1.99994H9V0.999939H13.5C13.7761 0.999939 14 1.2238 14 1.49994V5.99994H13V1.99994ZM1 13.4999V8.99994H2V12.9999H6V13.9999H1.5C1.22386 13.9999 1 13.7761 1 13.4999ZM13 12.9999V8.99994H14V13.4999C14 13.7761 13.7761 13.9999 13.5 13.9999H9.5V12.9999H13Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$C = [\"color\"];\nvar BorderStyleIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$C);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.5 3C1.22386 3 1 3.22386 1 3.5C1 3.77614 1.22386 4 1.5 4H13.5C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3H1.5ZM1 7.5C1 7.22386 1.22386 7 1.5 7H3.5C3.77614 7 4 7.22386 4 7.5C4 7.77614 3.77614 8 3.5 8H1.5C1.22386 8 1 7.77614 1 7.5ZM1 11.5C1 11.2239 1.22386 11 1.5 11C1.77614 11 2 11.2239 2 11.5C2 11.7761 1.77614 12 1.5 12C1.22386 12 1 11.7761 1 11.5ZM3 11.5C3 11.2239 3.22386 11 3.5 11C3.77614 11 4 11.2239 4 11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5ZM5.5 11C5.22386 11 5 11.2239 5 11.5C5 11.7761 5.22386 12 5.5 12C5.77614 12 6 11.7761 6 11.5C6 11.2239 5.77614 11 5.5 11ZM7 11.5C7 11.2239 7.22386 11 7.5 11C7.77614 11 8 11.2239 8 11.5C8 11.7761 7.77614 12 7.5 12C7.22386 12 7 11.7761 7 11.5ZM9.5 11C9.22386 11 9 11.2239 9 11.5C9 11.7761 9.22386 12 9.5 12C9.77614 12 10 11.7761 10 11.5C10 11.2239 9.77614 11 9.5 11ZM11 11.5C11 11.2239 11.2239 11 11.5 11C11.7761 11 12 11.2239 12 11.5C12 11.7761 11.7761 12 11.5 12C11.2239 12 11 11.7761 11 11.5ZM13.5 11C13.2239 11 13 11.2239 13 11.5C13 11.7761 13.2239 12 13.5 12C13.7761 12 14 11.7761 14 11.5C14 11.2239 13.7761 11 13.5 11ZM6.5 7C6.22386 7 6 7.22386 6 7.5C6 7.77614 6.22386 8 6.5 8H8.5C8.77614 8 9 7.77614 9 7.5C9 7.22386 8.77614 7 8.5 7H6.5ZM11 7.5C11 7.22386 11.2239 7 11.5 7H13.5C13.7761 7 14 7.22386 14 7.5C14 7.77614 13.7761 8 13.5 8H11.5C11.2239 8 11 7.77614 11 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$D = [\"color\"];\nvar BorderTopIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$D);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14 1.75L1 1.75L1 0.249999L14 0.25L14 1.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"10\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 10)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"2\",\n    y: \"10\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 10)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"12\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 12)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"2\",\n    y: \"12\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 12)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 8)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 14)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"2\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 8)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"2\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 14)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"10\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 10 8)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"10\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 10 14)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"12\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 12 8)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"12\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 12 14)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"6\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 6 8)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"6\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 6 14)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"4\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 4 8)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"4\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 4 14)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"6\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 6)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"2\",\n    y: \"6\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 6)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"8\",\n    y: \"4\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 8 4)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"2\",\n    y: \"4\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 2 4)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"10\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 10)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"12\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 12)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"8\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 8)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"14\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 14)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"6\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 6)\",\n    fill: color\n  }), (0, import_react8.createElement)(\"rect\", {\n    x: \"14\",\n    y: \"4\",\n    width: \"1\",\n    height: \"1\",\n    rx: \".5\",\n    transform: \"rotate(-180 14 4)\",\n    fill: color\n  }));\n});\nvar _excluded$E = [\"color\"];\nvar BorderWidthIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$E);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 3H14V4H1V3ZM1 6H14V8H1V6ZM14 10.25H1V12.75H14V10.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$F = [\"color\"];\nvar BoxIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$F);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.5 2H2.5C2.22386 2 2 2.22386 2 2.5V12.5C2 12.7761 2.22386 13 2.5 13H12.5C12.7761 13 13 12.7761 13 12.5V2.5C13 2.22386 12.7761 2 12.5 2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$G = [\"color\"];\nvar BoxModelIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$G);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.99998 0.999976C1.44769 0.999976 0.999976 1.44769 0.999976 1.99998V13C0.999976 13.5523 1.44769 14 1.99998 14H13C13.5523 14 14 13.5523 14 13V1.99998C14 1.44769 13.5523 0.999976 13 0.999976H1.99998ZM1.99998 1.99998L13 1.99998V13H1.99998V1.99998ZM4.49996 3.99996C4.22382 3.99996 3.99996 4.22382 3.99996 4.49996V10.5C3.99996 10.7761 4.22382 11 4.49996 11H10.5C10.7761 11 11 10.7761 11 10.5V4.49996C11 4.22382 10.7761 3.99996 10.5 3.99996H4.49996ZM4.99996 9.99996V4.99996H9.99996V9.99996H4.99996Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$H = [\"color\"];\nvar ButtonIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$H);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 5H13C13.5523 5 14 5.44772 14 6V9C14 9.55228 13.5523 10 13 10H2C1.44772 10 1 9.55228 1 9V6C1 5.44772 1.44772 5 2 5ZM0 6C0 4.89543 0.895431 4 2 4H13C14.1046 4 15 4.89543 15 6V9C15 10.1046 14.1046 11 13 11H2C0.89543 11 0 10.1046 0 9V6ZM4.5 6.75C4.08579 6.75 3.75 7.08579 3.75 7.5C3.75 7.91421 4.08579 8.25 4.5 8.25C4.91421 8.25 5.25 7.91421 5.25 7.5C5.25 7.08579 4.91421 6.75 4.5 6.75ZM6.75 7.5C6.75 7.08579 7.08579 6.75 7.5 6.75C7.91421 6.75 8.25 7.08579 8.25 7.5C8.25 7.91421 7.91421 8.25 7.5 8.25C7.08579 8.25 6.75 7.91421 6.75 7.5ZM10.5 6.75C10.0858 6.75 9.75 7.08579 9.75 7.5C9.75 7.91421 10.0858 8.25 10.5 8.25C10.9142 8.25 11.25 7.91421 11.25 7.5C11.25 7.08579 10.9142 6.75 10.5 6.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$I = [\"color\"];\nvar CalendarIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$I);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.5 1C4.77614 1 5 1.22386 5 1.5V2H10V1.5C10 1.22386 10.2239 1 10.5 1C10.7761 1 11 1.22386 11 1.5V2H12.5C13.3284 2 14 2.67157 14 3.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V3.5C1 2.67157 1.67157 2 2.5 2H4V1.5C4 1.22386 4.22386 1 4.5 1ZM10 3V3.5C10 3.77614 10.2239 4 10.5 4C10.7761 4 11 3.77614 11 3.5V3H12.5C12.7761 3 13 3.22386 13 3.5V5H2V3.5C2 3.22386 2.22386 3 2.5 3H4V3.5C4 3.77614 4.22386 4 4.5 4C4.77614 4 5 3.77614 5 3.5V3H10ZM2 6V12.5C2 12.7761 2.22386 13 2.5 13H12.5C12.7761 13 13 12.7761 13 12.5V6H2ZM7 7.5C7 7.22386 7.22386 7 7.5 7C7.77614 7 8 7.22386 8 7.5C8 7.77614 7.77614 8 7.5 8C7.22386 8 7 7.77614 7 7.5ZM9.5 7C9.22386 7 9 7.22386 9 7.5C9 7.77614 9.22386 8 9.5 8C9.77614 8 10 7.77614 10 7.5C10 7.22386 9.77614 7 9.5 7ZM11 7.5C11 7.22386 11.2239 7 11.5 7C11.7761 7 12 7.22386 12 7.5C12 7.77614 11.7761 8 11.5 8C11.2239 8 11 7.77614 11 7.5ZM11.5 9C11.2239 9 11 9.22386 11 9.5C11 9.77614 11.2239 10 11.5 10C11.7761 10 12 9.77614 12 9.5C12 9.22386 11.7761 9 11.5 9ZM9 9.5C9 9.22386 9.22386 9 9.5 9C9.77614 9 10 9.22386 10 9.5C10 9.77614 9.77614 10 9.5 10C9.22386 10 9 9.77614 9 9.5ZM7.5 9C7.22386 9 7 9.22386 7 9.5C7 9.77614 7.22386 10 7.5 10C7.77614 10 8 9.77614 8 9.5C8 9.22386 7.77614 9 7.5 9ZM5 9.5C5 9.22386 5.22386 9 5.5 9C5.77614 9 6 9.22386 6 9.5C6 9.77614 5.77614 10 5.5 10C5.22386 10 5 9.77614 5 9.5ZM3.5 9C3.22386 9 3 9.22386 3 9.5C3 9.77614 3.22386 10 3.5 10C3.77614 10 4 9.77614 4 9.5C4 9.22386 3.77614 9 3.5 9ZM3 11.5C3 11.2239 3.22386 11 3.5 11C3.77614 11 4 11.2239 4 11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5ZM5.5 11C5.22386 11 5 11.2239 5 11.5C5 11.7761 5.22386 12 5.5 12C5.77614 12 6 11.7761 6 11.5C6 11.2239 5.77614 11 5.5 11ZM7 11.5C7 11.2239 7.22386 11 7.5 11C7.77614 11 8 11.2239 8 11.5C8 11.7761 7.77614 12 7.5 12C7.22386 12 7 11.7761 7 11.5ZM9.5 11C9.22386 11 9 11.2239 9 11.5C9 11.7761 9.22386 12 9.5 12C9.77614 12 10 11.7761 10 11.5C10 11.2239 9.77614 11 9.5 11Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$J = [\"color\"];\nvar CameraIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$J);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 3C1.44772 3 1 3.44772 1 4V11C1 11.5523 1.44772 12 2 12H13C13.5523 12 14 11.5523 14 11V4C14 3.44772 13.5523 3 13 3H2ZM0 4C0 2.89543 0.895431 2 2 2H13C14.1046 2 15 2.89543 15 4V11C15 12.1046 14.1046 13 13 13H2C0.895431 13 0 12.1046 0 11V4ZM2 4.25C2 4.11193 2.11193 4 2.25 4H4.75C4.88807 4 5 4.11193 5 4.25V5.75454C5 5.89261 4.88807 6.00454 4.75 6.00454H2.25C2.11193 6.00454 2 5.89261 2 5.75454V4.25ZM12.101 7.58421C12.101 9.02073 10.9365 10.1853 9.49998 10.1853C8.06346 10.1853 6.89893 9.02073 6.89893 7.58421C6.89893 6.14769 8.06346 4.98315 9.49998 4.98315C10.9365 4.98315 12.101 6.14769 12.101 7.58421ZM13.101 7.58421C13.101 9.57302 11.4888 11.1853 9.49998 11.1853C7.51117 11.1853 5.89893 9.57302 5.89893 7.58421C5.89893 5.5954 7.51117 3.98315 9.49998 3.98315C11.4888 3.98315 13.101 5.5954 13.101 7.58421Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$K = [\"color\"];\nvar CardStackIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$K);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 3.5C2 3.22386 2.22386 3 2.5 3H12.5C12.7761 3 13 3.22386 13 3.5V9.5C13 9.77614 12.7761 10 12.5 10H2.5C2.22386 10 2 9.77614 2 9.5V3.5ZM2 10.9146C1.4174 10.7087 1 10.1531 1 9.5V3.5C1 2.67157 1.67157 2 2.5 2H12.5C13.3284 2 14 2.67157 14 3.5V9.5C14 10.1531 13.5826 10.7087 13 10.9146V11.5C13 12.3284 12.3284 13 11.5 13H3.5C2.67157 13 2 12.3284 2 11.5V10.9146ZM12 11V11.5C12 11.7761 11.7761 12 11.5 12H3.5C3.22386 12 3 11.7761 3 11.5V11H12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$L = [\"color\"];\nvar CardStackMinusIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$L);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.5 3C2.22386 3 2 3.22386 2 3.5V9.5C2 9.77614 2.22386 10 2.5 10H12.5C12.7761 10 13 9.77614 13 9.5V3.5C13 3.22386 12.7761 3 12.5 3H2.5ZM1 9.5C1 10.1531 1.4174 10.7087 2 10.9146V11.5C2 12.3284 2.67157 13 3.5 13H11.5C12.3284 13 13 12.3284 13 11.5V10.9146C13.5826 10.7087 14 10.1531 14 9.5V3.5C14 2.67157 13.3284 2 12.5 2H2.5C1.67157 2 1 2.67157 1 3.5V9.5ZM12 11.5V11H3V11.5C3 11.7761 3.22386 12 3.5 12H11.5C11.7761 12 12 11.7761 12 11.5ZM5.5 6C5.22386 6 5 6.22386 5 6.5C5 6.77614 5.22386 7 5.5 7H9.5C9.77614 7 10 6.77614 10 6.5C10 6.22386 9.77614 6 9.5 6H5.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$M = [\"color\"];\nvar CardStackPlusIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$M);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 3.5C2 3.22386 2.22386 3 2.5 3H12.5C12.7761 3 13 3.22386 13 3.5V9.5C13 9.77614 12.7761 10 12.5 10H2.5C2.22386 10 2 9.77614 2 9.5V3.5ZM2 10.9146C1.4174 10.7087 1 10.1531 1 9.5V3.5C1 2.67157 1.67157 2 2.5 2H12.5C13.3284 2 14 2.67157 14 3.5V9.5C14 10.1531 13.5826 10.7087 13 10.9146V11.5C13 12.3284 12.3284 13 11.5 13H3.5C2.67157 13 2 12.3284 2 11.5V10.9146ZM12 11V11.5C12 11.7761 11.7761 12 11.5 12H3.5C3.22386 12 3 11.7761 3 11.5V11H12ZM5 6.5C5 6.22386 5.22386 6 5.5 6H7V4.5C7 4.22386 7.22386 4 7.5 4C7.77614 4 8 4.22386 8 4.5V6H9.5C9.77614 6 10 6.22386 10 6.5C10 6.77614 9.77614 7 9.5 7H8V8.5C8 8.77614 7.77614 9 7.5 9C7.22386 9 7 8.77614 7 8.5V7H5.5C5.22386 7 5 6.77614 5 6.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$N = [\"color\"];\nvar CaretDownIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$N);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.18179 6.18181C4.35753 6.00608 4.64245 6.00608 4.81819 6.18181L7.49999 8.86362L10.1818 6.18181C10.3575 6.00608 10.6424 6.00608 10.8182 6.18181C10.9939 6.35755 10.9939 6.64247 10.8182 6.81821L7.81819 9.81821C7.73379 9.9026 7.61934 9.95001 7.49999 9.95001C7.38064 9.95001 7.26618 9.9026 7.18179 9.81821L4.18179 6.81821C4.00605 6.64247 4.00605 6.35755 4.18179 6.18181Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$O = [\"color\"];\nvar CaretLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$O);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.81809 4.18179C8.99383 4.35753 8.99383 4.64245 8.81809 4.81819L6.13629 7.49999L8.81809 10.1818C8.99383 10.3575 8.99383 10.6424 8.81809 10.8182C8.64236 10.9939 8.35743 10.9939 8.1817 10.8182L5.1817 7.81819C5.09731 7.73379 5.0499 7.61933 5.0499 7.49999C5.0499 7.38064 5.09731 7.26618 5.1817 7.18179L8.1817 4.18179C8.35743 4.00605 8.64236 4.00605 8.81809 4.18179Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$P = [\"color\"];\nvar CaretRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$P);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.18194 4.18185C6.35767 4.00611 6.6426 4.00611 6.81833 4.18185L9.81833 7.18185C9.90272 7.26624 9.95013 7.3807 9.95013 7.50005C9.95013 7.6194 9.90272 7.73386 9.81833 7.81825L6.81833 10.8182C6.6426 10.994 6.35767 10.994 6.18194 10.8182C6.0062 10.6425 6.0062 10.3576 6.18194 10.1819L8.86374 7.50005L6.18194 4.81825C6.0062 4.64251 6.0062 4.35759 6.18194 4.18185Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$Q = [\"color\"];\nvar CaretSortIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$Q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$R = [\"color\"];\nvar CaretUpIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$R);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.18179 8.81819C4.00605 8.64245 4.00605 8.35753 4.18179 8.18179L7.18179 5.18179C7.26618 5.0974 7.38064 5.04999 7.49999 5.04999C7.61933 5.04999 7.73379 5.0974 7.81819 5.18179L10.8182 8.18179C10.9939 8.35753 10.9939 8.64245 10.8182 8.81819C10.6424 8.99392 10.3575 8.99392 10.1818 8.81819L7.49999 6.13638L4.81819 8.81819C4.64245 8.99392 4.35753 8.99392 4.18179 8.81819Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$S = [\"color\"];\nvar ChatBubbleIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$S);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.5 3L2.5 3.00002C1.67157 3.00002 1 3.6716 1 4.50002V9.50003C1 10.3285 1.67157 11 2.5 11H7.50003C7.63264 11 7.75982 11.0527 7.85358 11.1465L10 13.2929V11.5C10 11.2239 10.2239 11 10.5 11H12.5C13.3284 11 14 10.3285 14 9.50003V4.5C14 3.67157 13.3284 3 12.5 3ZM2.49999 2.00002L12.5 2C13.8807 2 15 3.11929 15 4.5V9.50003C15 10.8807 13.8807 12 12.5 12H11V14.5C11 14.7022 10.8782 14.8845 10.6913 14.9619C10.5045 15.0393 10.2894 14.9965 10.1464 14.8536L7.29292 12H2.5C1.11929 12 0 10.8807 0 9.50003V4.50002C0 3.11931 1.11928 2.00003 2.49999 2.00002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$T = [\"color\"];\nvar CheckIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$T);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$U = [\"color\"];\nvar CheckCircledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$U);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.877045C3.84222 0.877045 0.877075 3.84219 0.877075 7.49988C0.877075 11.1575 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 3.84219 11.1576 0.877045 7.49991 0.877045ZM1.82708 7.49988C1.82708 4.36686 4.36689 1.82704 7.49991 1.82704C10.6329 1.82704 13.1727 4.36686 13.1727 7.49988C13.1727 10.6329 10.6329 13.1727 7.49991 13.1727C4.36689 13.1727 1.82708 10.6329 1.82708 7.49988ZM10.1589 5.53774C10.3178 5.31191 10.2636 5.00001 10.0378 4.84109C9.81194 4.68217 9.50004 4.73642 9.34112 4.96225L6.51977 8.97154L5.35681 7.78706C5.16334 7.59002 4.84677 7.58711 4.64973 7.78058C4.45268 7.97404 4.44978 8.29061 4.64325 8.48765L6.22658 10.1003C6.33054 10.2062 6.47617 10.2604 6.62407 10.2483C6.77197 10.2363 6.90686 10.1591 6.99226 10.0377L10.1589 5.53774Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$V = [\"color\"];\nvar CheckboxIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$V);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3 3H12V12H3L3 3ZM2 3C2 2.44771 2.44772 2 3 2H12C12.5523 2 13 2.44772 13 3V12C13 12.5523 12.5523 13 12 13H3C2.44771 13 2 12.5523 2 12V3ZM10.3498 5.51105C10.506 5.28337 10.4481 4.97212 10.2204 4.81587C9.99275 4.65961 9.6815 4.71751 9.52525 4.94519L6.64048 9.14857L5.19733 7.40889C5.02102 7.19635 4.7058 7.16699 4.49327 7.34329C4.28073 7.5196 4.25137 7.83482 4.42767 8.04735L6.2934 10.2964C6.39348 10.4171 6.54437 10.4838 6.70097 10.4767C6.85757 10.4695 7.00177 10.3894 7.09047 10.2601L10.3498 5.51105Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$W = [\"color\"];\nvar ChevronDownIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$W);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$X = [\"color\"];\nvar ChevronLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$X);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.84182 3.13514C9.04327 3.32401 9.05348 3.64042 8.86462 3.84188L5.43521 7.49991L8.86462 11.1579C9.05348 11.3594 9.04327 11.6758 8.84182 11.8647C8.64036 12.0535 8.32394 12.0433 8.13508 11.8419L4.38508 7.84188C4.20477 7.64955 4.20477 7.35027 4.38508 7.15794L8.13508 3.15794C8.32394 2.95648 8.64036 2.94628 8.84182 3.13514Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$Y = [\"color\"];\nvar ChevronRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$Y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$Z = [\"color\"];\nvar ChevronUpIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$Z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.13523 8.84197C3.3241 9.04343 3.64052 9.05363 3.84197 8.86477L7.5 5.43536L11.158 8.86477C11.3595 9.05363 11.6759 9.04343 11.8648 8.84197C12.0536 8.64051 12.0434 8.32409 11.842 8.13523L7.84197 4.38523C7.64964 4.20492 7.35036 4.20492 7.15803 4.38523L3.15803 8.13523C2.95657 8.32409 2.94637 8.64051 3.13523 8.84197Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$_ = [\"color\"];\nvar CircleIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$_);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877075 7.49991C0.877075 3.84222 3.84222 0.877075 7.49991 0.877075C11.1576 0.877075 14.1227 3.84222 14.1227 7.49991C14.1227 11.1576 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1576 0.877075 7.49991ZM7.49991 1.82708C4.36689 1.82708 1.82708 4.36689 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49991C13.1727 4.36689 10.6329 1.82708 7.49991 1.82708Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$$ = [\"color\"];\nvar CircleBackslashIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$$);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.877075C3.84222 0.877075 0.877075 3.84222 0.877075 7.49991C0.877075 11.1576 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1576 14.1227 7.49991C14.1227 3.84222 11.1576 0.877075 7.49991 0.877075ZM3.85768 3.15057C4.84311 2.32448 6.11342 1.82708 7.49991 1.82708C10.6329 1.82708 13.1727 4.36689 13.1727 7.49991C13.1727 8.88638 12.6753 10.1567 11.8492 11.1421L3.85768 3.15057ZM3.15057 3.85768C2.32448 4.84311 1.82708 6.11342 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C8.88638 13.1727 10.1567 12.6753 11.1421 11.8492L3.15057 3.85768Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$10 = [\"color\"];\nvar ClipboardIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$10);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM11 2V2.25C11 2.66421 10.6642 3 10.25 3H4.75C4.33579 3 4 2.66421 4 2.25V2H3.5C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V2.5C12 2.22386 11.7761 2 11.5 2H11Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$11 = [\"color\"];\nvar ClipboardCopyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$11);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5 2V1H10V2H5ZM4.75 0C4.33579 0 4 0.335786 4 0.75V1H3.5C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H7V13H3.5C3.22386 13 3 12.7761 3 12.5V2.5C3 2.22386 3.22386 2 3.5 2H4V2.25C4 2.66421 4.33579 3 4.75 3H10.25C10.6642 3 11 2.66421 11 2.25V2H11.5C11.7761 2 12 2.22386 12 2.5V7H13V2.5C13 1.67157 12.3284 1 11.5 1H11V0.75C11 0.335786 10.6642 0 10.25 0H4.75ZM9 8.5C9 8.77614 8.77614 9 8.5 9C8.22386 9 8 8.77614 8 8.5C8 8.22386 8.22386 8 8.5 8C8.77614 8 9 8.22386 9 8.5ZM10.5 9C10.7761 9 11 8.77614 11 8.5C11 8.22386 10.7761 8 10.5 8C10.2239 8 10 8.22386 10 8.5C10 8.77614 10.2239 9 10.5 9ZM13 8.5C13 8.77614 12.7761 9 12.5 9C12.2239 9 12 8.77614 12 8.5C12 8.22386 12.2239 8 12.5 8C12.7761 8 13 8.22386 13 8.5ZM14.5 9C14.7761 9 15 8.77614 15 8.5C15 8.22386 14.7761 8 14.5 8C14.2239 8 14 8.22386 14 8.5C14 8.77614 14.2239 9 14.5 9ZM15 10.5C15 10.7761 14.7761 11 14.5 11C14.2239 11 14 10.7761 14 10.5C14 10.2239 14.2239 10 14.5 10C14.7761 10 15 10.2239 15 10.5ZM14.5 13C14.7761 13 15 12.7761 15 12.5C15 12.2239 14.7761 12 14.5 12C14.2239 12 14 12.2239 14 12.5C14 12.7761 14.2239 13 14.5 13ZM14.5 15C14.7761 15 15 14.7761 15 14.5C15 14.2239 14.7761 14 14.5 14C14.2239 14 14 14.2239 14 14.5C14 14.7761 14.2239 15 14.5 15ZM8.5 11C8.77614 11 9 10.7761 9 10.5C9 10.2239 8.77614 10 8.5 10C8.22386 10 8 10.2239 8 10.5C8 10.7761 8.22386 11 8.5 11ZM9 12.5C9 12.7761 8.77614 13 8.5 13C8.22386 13 8 12.7761 8 12.5C8 12.2239 8.22386 12 8.5 12C8.77614 12 9 12.2239 9 12.5ZM8.5 15C8.77614 15 9 14.7761 9 14.5C9 14.2239 8.77614 14 8.5 14C8.22386 14 8 14.2239 8 14.5C8 14.7761 8.22386 15 8.5 15ZM11 14.5C11 14.7761 10.7761 15 10.5 15C10.2239 15 10 14.7761 10 14.5C10 14.2239 10.2239 14 10.5 14C10.7761 14 11 14.2239 11 14.5ZM12.5 15C12.7761 15 13 14.7761 13 14.5C13 14.2239 12.7761 14 12.5 14C12.2239 14 12 14.2239 12 14.5C12 14.7761 12.2239 15 12.5 15Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$12 = [\"color\"];\nvar ClockIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$12);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.50009 0.877014C3.84241 0.877014 0.877258 3.84216 0.877258 7.49984C0.877258 11.1575 3.8424 14.1227 7.50009 14.1227C11.1578 14.1227 14.1229 11.1575 14.1229 7.49984C14.1229 3.84216 11.1577 0.877014 7.50009 0.877014ZM1.82726 7.49984C1.82726 4.36683 4.36708 1.82701 7.50009 1.82701C10.6331 1.82701 13.1729 4.36683 13.1729 7.49984C13.1729 10.6328 10.6331 13.1727 7.50009 13.1727C4.36708 13.1727 1.82726 10.6328 1.82726 7.49984ZM8 4.50001C8 4.22387 7.77614 4.00001 7.5 4.00001C7.22386 4.00001 7 4.22387 7 4.50001V7.50001C7 7.63262 7.05268 7.7598 7.14645 7.85357L9.14645 9.85357C9.34171 10.0488 9.65829 10.0488 9.85355 9.85357C10.0488 9.65831 10.0488 9.34172 9.85355 9.14646L8 7.29291V4.50001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$13 = [\"color\"];\nvar CodeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$13);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9.96424 2.68571C10.0668 2.42931 9.94209 2.13833 9.6857 2.03577C9.4293 1.93322 9.13832 2.05792 9.03576 2.31432L5.03576 12.3143C4.9332 12.5707 5.05791 12.8617 5.3143 12.9642C5.5707 13.0668 5.86168 12.9421 5.96424 12.6857L9.96424 2.68571ZM3.85355 5.14646C4.04882 5.34172 4.04882 5.6583 3.85355 5.85356L2.20711 7.50001L3.85355 9.14646C4.04882 9.34172 4.04882 9.6583 3.85355 9.85356C3.65829 10.0488 3.34171 10.0488 3.14645 9.85356L1.14645 7.85356C0.951184 7.6583 0.951184 7.34172 1.14645 7.14646L3.14645 5.14646C3.34171 4.9512 3.65829 4.9512 3.85355 5.14646ZM11.1464 5.14646C11.3417 4.9512 11.6583 4.9512 11.8536 5.14646L13.8536 7.14646C14.0488 7.34172 14.0488 7.6583 13.8536 7.85356L11.8536 9.85356C11.6583 10.0488 11.3417 10.0488 11.1464 9.85356C10.9512 9.6583 10.9512 9.34172 11.1464 9.14646L12.7929 7.50001L11.1464 5.85356C10.9512 5.6583 10.9512 5.34172 11.1464 5.14646Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$14 = [\"color\"];\nvar CodeSandboxLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$14);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.71144 0.796902C7.57741 0.734357 7.42257 0.734357 7.28855 0.796902L1.28855 3.5969C1.11251 3.67905 0.999993 3.85573 0.999993 4.04999V10.95C0.999993 11.1443 1.11251 11.3209 1.28855 11.4031L7.28855 14.2031C7.42257 14.2656 7.57741 14.2656 7.71144 14.2031L13.7114 11.4031C13.8875 11.3209 14 11.1443 14 10.95V4.04999C14 3.85573 13.8875 3.67905 13.7114 3.5969L7.71144 0.796902ZM7.49999 3.15674L5.98039 2.51091L7.49999 1.80176L9.01959 2.51091L7.49999 3.15674ZM7.69556 4.16018L10.2382 3.07958L12.2719 4.02865L7.49999 6.05671L2.72808 4.02865L4.76181 3.07958L7.30442 4.16018C7.42939 4.2133 7.57059 4.2133 7.69556 4.16018ZM7.99999 6.93078L13 4.80578V7.92966L11.0821 8.8119C10.7273 8.97509 10.5 9.32988 10.5 9.72039V11.7982L7.99999 12.9649V6.93078ZM11.5 11.3316L13 10.6316V9.03039L11.5 9.72039V11.3316ZM6.99999 6.93078V12.9649L4.50231 11.7993V9.72036C4.50231 9.32985 4.27499 8.97506 3.92022 8.81187L1.99999 7.92856V4.80578L6.99999 6.93078ZM1.99999 10.6316L3.50231 11.3326L3.50231 9.72036L1.99999 9.02929V10.6316Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$15 = [\"color\"];\nvar ColorWheelIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$15);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877075 7.49985C0.877075 3.84216 3.84222 0.877014 7.49991 0.877014C11.1576 0.877014 14.1227 3.84216 14.1227 7.49985C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49985ZM3.78135 3.21565C4.68298 2.43239 5.83429 1.92904 7.09998 1.84089V6.53429L3.78135 3.21565ZM3.21567 3.78134C2.43242 4.68298 1.92909 5.83428 1.84095 7.09997H6.5343L3.21567 3.78134ZM6.5343 7.89997H1.84097C1.92916 9.16562 2.43253 10.3169 3.21579 11.2185L6.5343 7.89997ZM3.78149 11.7842C4.6831 12.5673 5.83435 13.0707 7.09998 13.1588V8.46566L3.78149 11.7842ZM7.89998 8.46566V13.1588C9.16559 13.0706 10.3168 12.5673 11.2184 11.7841L7.89998 8.46566ZM11.7841 11.2184C12.5673 10.3168 13.0707 9.16558 13.1588 7.89997H8.46567L11.7841 11.2184ZM8.46567 7.09997H13.1589C13.0707 5.83432 12.5674 4.68305 11.7842 3.78143L8.46567 7.09997ZM11.2185 3.21573C10.3169 2.43246 9.16565 1.92909 7.89998 1.8409V6.53429L11.2185 3.21573Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$16 = [\"color\"];\nvar ColumnSpacingIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$16);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.00012 1.5C8.00012 1.22386 7.77626 1 7.50012 1C7.22398 1 7.00012 1.22386 7.00012 1.5V13.5C7.00012 13.7761 7.22398 14 7.50012 14C7.77626 14 8.00012 13.7761 8.00012 13.5V1.5ZM3.31812 5.818C3.49386 5.64227 3.49386 5.35734 3.31812 5.18161C3.14239 5.00587 2.85746 5.00587 2.68173 5.18161L0.681729 7.18161C0.505993 7.35734 0.505993 7.64227 0.681729 7.818L2.68173 9.818C2.85746 9.99374 3.14239 9.99374 3.31812 9.818C3.49386 9.64227 3.49386 9.35734 3.31812 9.18161L2.08632 7.9498H5.50017C5.7487 7.9498 5.95017 7.74833 5.95017 7.4998C5.95017 7.25128 5.7487 7.0498 5.50017 7.0498H2.08632L3.31812 5.818ZM12.3181 5.18161C12.1424 5.00587 11.8575 5.00587 11.6817 5.18161C11.506 5.35734 11.506 5.64227 11.6817 5.818L12.9135 7.0498H9.50017C9.25164 7.0498 9.05017 7.25128 9.05017 7.4998C9.05017 7.74833 9.25164 7.9498 9.50017 7.9498H12.9135L11.6817 9.18161C11.506 9.35734 11.506 9.64227 11.6817 9.818C11.8575 9.99374 12.1424 9.99374 12.3181 9.818L14.3181 7.818C14.4939 7.64227 14.4939 7.35734 14.3181 7.18161L12.3181 5.18161Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$17 = [\"color\"];\nvar ColumnsIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$17);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.14998 14V1H0.849976V14H2.14998ZM6.14998 14V1H4.84998V14H6.14998ZM10.15 1V14H8.84998V1H10.15ZM14.15 14V1H12.85V14H14.15Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$18 = [\"color\"];\nvar CommitIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$18);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9.94969 7.49989C9.94969 8.85288 8.85288 9.94969 7.49989 9.94969C6.14691 9.94969 5.0501 8.85288 5.0501 7.49989C5.0501 6.14691 6.14691 5.0501 7.49989 5.0501C8.85288 5.0501 9.94969 6.14691 9.94969 7.49989ZM10.8632 8C10.6213 9.64055 9.20764 10.8997 7.49989 10.8997C5.79214 10.8997 4.37847 9.64055 4.13662 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H4.13659C4.37835 5.35935 5.79206 4.1001 7.49989 4.1001C9.20772 4.1001 10.6214 5.35935 10.8632 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H10.8632Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$19 = [\"color\"];\nvar Component1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$19);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.67129 3.14634C4.47603 3.34161 4.47603 3.65819 4.67129 3.85345L7.14616 6.32833C7.34142 6.52359 7.65801 6.52359 7.85327 6.32833L10.3281 3.85345C10.5234 3.65819 10.5234 3.34161 10.3281 3.14634L7.85327 0.671471C7.65801 0.476209 7.34142 0.476209 7.14616 0.671471L4.67129 3.14634ZM7.49971 5.26766L5.73195 3.4999L7.49971 1.73213L9.26748 3.4999L7.49971 5.26766ZM8.67129 7.14634C8.47603 7.34161 8.47603 7.65819 8.67129 7.85345L11.1462 10.3283C11.3414 10.5236 11.658 10.5236 11.8533 10.3283L14.3281 7.85345C14.5234 7.65819 14.5234 7.34161 14.3281 7.14634L11.8533 4.67147C11.658 4.47621 11.3414 4.47621 11.1462 4.67147L8.67129 7.14634ZM11.4997 9.26766L9.73195 7.4999L11.4997 5.73213L13.2675 7.4999L11.4997 9.26766ZM4.67129 11.8535C4.47603 11.6582 4.47603 11.3416 4.67129 11.1463L7.14616 8.67147C7.34142 8.47621 7.65801 8.47621 7.85327 8.67147L10.3281 11.1463C10.5234 11.3416 10.5234 11.6582 10.3281 11.8535L7.85327 14.3283C7.65801 14.5236 7.34142 14.5236 7.14616 14.3283L4.67129 11.8535ZM5.73195 11.4999L7.49971 13.2677L9.26748 11.4999L7.49971 9.73213L5.73195 11.4999ZM0.671288 7.14649C0.476026 7.34175 0.476026 7.65834 0.671288 7.8536L3.14616 10.3285C3.34142 10.5237 3.65801 10.5237 3.85327 10.3285L6.32814 7.8536C6.5234 7.65834 6.5234 7.34175 6.32814 7.14649L3.85327 4.67162C3.65801 4.47636 3.34142 4.47636 3.14616 4.67162L0.671288 7.14649ZM3.49972 9.26781L1.73195 7.50005L3.49972 5.73228L5.26748 7.50005L3.49972 9.26781Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1a = [\"color\"];\nvar Component2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1a);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.87935 1H3.9H11.1H11.1207C11.5231 0.999994 11.8553 0.999989 12.1259 1.0221C12.407 1.04506 12.6653 1.09434 12.908 1.21799C13.2843 1.40973 13.5903 1.7157 13.782 2.09202C13.9057 2.33469 13.9549 2.59304 13.9779 2.87409C14 3.14468 14 3.47686 14 3.87934V3.9V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H3.9H3.87934C3.47686 14 3.14468 14 2.87409 13.9779C2.59304 13.9549 2.33469 13.9057 2.09202 13.782C1.7157 13.5903 1.40973 13.2843 1.21799 12.908C1.09434 12.6653 1.04506 12.407 1.0221 12.1259C0.999989 11.8553 0.999994 11.5231 1 11.1207V11.1207V11.1V3.9V3.87935V3.87934C0.999994 3.47686 0.999989 3.14468 1.0221 2.87409C1.04506 2.59304 1.09434 2.33469 1.21799 2.09202C1.40973 1.7157 1.7157 1.40973 2.09202 1.21799C2.33469 1.09434 2.59304 1.04506 2.87409 1.0221C3.14469 0.999989 3.47687 0.999994 3.87935 1ZM2.95552 2.01878C2.73631 2.03669 2.62421 2.06915 2.54601 2.10899C2.35785 2.20487 2.20487 2.35785 2.10899 2.54601C2.06915 2.62421 2.03669 2.73631 2.01878 2.95552C2.00039 3.18056 2 3.47171 2 3.9V7H7V2H3.9C3.47171 2 3.18056 2.00039 2.95552 2.01878ZM7 8H2V11.1C2 11.5283 2.00039 11.8194 2.01878 12.0445C2.03669 12.2637 2.06915 12.3758 2.10899 12.454C2.20487 12.6422 2.35785 12.7951 2.54601 12.891C2.62421 12.9309 2.73631 12.9633 2.95552 12.9812C3.18056 12.9996 3.47171 13 3.9 13H7V8ZM8 8H13V11.1C13 11.5283 12.9996 11.8194 12.9812 12.0445C12.9633 12.2637 12.9309 12.3758 12.891 12.454C12.7951 12.6422 12.6422 12.7951 12.454 12.891C12.3758 12.9309 12.2637 12.9633 12.0445 12.9812C11.8194 12.9996 11.5283 13 11.1 13H8V8ZM13 7H8V2H11.1C11.5283 2 11.8194 2.00039 12.0445 2.01878C12.2637 2.03669 12.3758 2.06915 12.454 2.10899C12.6422 2.20487 12.7951 2.35785 12.891 2.54601C12.9309 2.62421 12.9633 2.73631 12.9812 2.95552C12.9996 3.18056 13 3.47171 13 3.9V7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1b = [\"color\"];\nvar ComponentBooleanIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1b);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.85367 1.48956C7.65841 1.29429 7.34182 1.29429 7.14656 1.48956L1.48971 7.14641C1.29445 7.34167 1.29445 7.65825 1.48971 7.85352L7.14656 13.5104C7.34182 13.7056 7.65841 13.7056 7.85367 13.5104L13.5105 7.85352C13.7058 7.65825 13.7058 7.34167 13.5105 7.14641L7.85367 1.48956ZM7.5 2.55033L2.55037 7.49996L7.5 12.4496V2.55033Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1c = [\"color\"];\nvar ComponentInstanceIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1c);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.1465 1.48959C7.34176 1.29432 7.65835 1.29432 7.85361 1.48959L13.5105 7.14644C13.7057 7.3417 13.7057 7.65829 13.5105 7.85355L7.85361 13.5104C7.65835 13.7057 7.34176 13.7057 7.1465 13.5104L1.48965 7.85355C1.29439 7.65829 1.29439 7.3417 1.48965 7.14644L7.1465 1.48959ZM7.50005 2.55025L2.55031 7.49999L7.50005 12.4497L12.4498 7.49999L7.50005 2.55025Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1d = [\"color\"];\nvar ComponentNoneIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1d);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.85361 1.48959C7.65835 1.29432 7.34176 1.29432 7.1465 1.48959L1.48965 7.14644C1.29439 7.3417 1.29439 7.65829 1.48965 7.85355L3.9645 10.3284L1.64644 12.6464C1.45118 12.8417 1.45118 13.1583 1.64644 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L4.6716 11.0355L7.1465 13.5104C7.34176 13.7057 7.65835 13.7057 7.85361 13.5104L13.5105 7.85355C13.7057 7.65829 13.7057 7.3417 13.5105 7.14644L11.0356 4.67154L13.3535 2.35355C13.5488 2.15829 13.5488 1.84171 13.3535 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L10.3285 3.96443L7.85361 1.48959ZM9.62135 4.67154L7.50005 2.55025L2.55031 7.49999L4.6716 9.62129L9.62135 4.67154ZM5.37871 10.3284L7.50005 12.4497L12.4498 7.49999L10.3285 5.37865L5.37871 10.3284Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1e = [\"color\"];\nvar ComponentPlaceholderIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1e);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.8034 7.14644C12.9986 6.95118 13.3152 6.95118 13.5105 7.14644C13.7057 7.3417 13.7057 7.65829 13.5105 7.85355C13.3152 8.04881 12.9986 8.04881 12.8034 7.85355C12.6081 7.65828 12.6081 7.3417 12.8034 7.14644ZM12.0962 8.56065C12.2915 8.75592 12.2915 9.0725 12.0962 9.26776C11.901 9.46302 11.5844 9.46302 11.3891 9.26776C11.1939 9.0725 11.1939 8.75592 11.3891 8.56065C11.5844 8.36539 11.901 8.36539 12.0962 8.56065ZM10.682 9.97487C10.8773 10.1701 10.8773 10.4867 10.682 10.682C10.4868 10.8772 10.1702 10.8772 9.97493 10.682C9.77967 10.4867 9.77967 10.1701 9.97493 9.97487C10.1702 9.7796 10.4868 9.7796 10.682 9.97487ZM9.26782 11.3891C9.46308 11.5843 9.46308 11.9009 9.26782 12.0962C9.07256 12.2915 8.75598 12.2915 8.56071 12.0962C8.36545 11.9009 8.36545 11.5843 8.56072 11.3891C8.75598 11.1938 9.07256 11.1938 9.26782 11.3891ZM7.1465 13.5104C6.95124 13.3151 6.95124 12.9986 7.1465 12.8033C7.17091 12.7789 7.19721 12.7575 7.22494 12.7392C7.41901 12.6111 7.68275 12.6324 7.85361 12.8033C8.04887 12.9986 8.04887 13.3151 7.85361 13.5104C7.65835 13.7057 7.34176 13.7057 7.1465 13.5104Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.90386 8.56065C2.7086 8.75592 2.7086 9.0725 2.90386 9.26776 3.09912 9.46302 3.41571 9.46302 3.61097 9.26776 3.80623 9.0725 3.80623 8.75592 3.61097 8.56065 3.41571 8.36539 3.09912 8.36539 2.90386 8.56065zM4.31807 9.97487C4.12281 10.1701 4.12281 10.4867 4.31807 10.682 4.51334 10.8772 4.82992 10.8772 5.02518 10.682 5.22044 10.4867 5.22044 10.1701 5.02518 9.97487 4.82992 9.7796 4.51334 9.7796 4.31807 9.97487zM5.73229 11.3891C5.53703 11.5843 5.53703 11.9009 5.73229 12.0962 5.92755 12.2914 6.24413 12.2915 6.43939 12.0962 6.63466 11.9009 6.63466 11.5843 6.43939 11.3891 6.24413 11.1938 5.92755 11.1938 5.73229 11.3891zM2.19675 7.85355C2.36761 7.68269 2.38897 7.41895 2.26082 7.22488 2.09046 6.96684 1.71063 6.92546 1.48965 7.14644 1.29439 7.3417 1.29439 7.65829 1.48965 7.85355 1.68491 8.04881 2.00149 8.04881 2.19675 7.85355zM3.61097 5.73223C3.41571 5.53696 3.09912 5.53696 2.90386 5.73223 2.7086 5.92749 2.7086 6.24407 2.90386 6.43933 3.09912 6.6346 3.41571 6.6346 3.61097 6.43933 3.80623 6.24407 3.80623 5.92749 3.61097 5.73223zM5.02518 4.31801C4.82992 4.12275 4.51334 4.12275 4.31807 4.31801 4.12281 4.51328 4.12281 4.82986 4.31807 5.02512 4.51334 5.22038 4.82992 5.22038 5.02518 5.02512 5.22044 4.82986 5.22044 4.51328 5.02518 4.31801zM6.43939 2.9038C6.24413 2.70854 5.92755 2.70854 5.73229 2.9038 5.53703 3.09906 5.53703 3.41564 5.73229 3.61091 5.92755 3.80617 6.24413 3.80617 6.43939 3.61091 6.63466 3.41564 6.63466 3.09906 6.43939 2.9038zM7.85361 1.48959C7.65835 1.29432 7.34176 1.29432 7.1465 1.48959 6.95124 1.68485 6.95124 2.00143 7.1465 2.19669 7.34176 2.39196 7.65835 2.39196 7.85361 2.19669 8.04887 2.00143 8.04887 1.68485 7.85361 1.48959zM9.26782 2.9038C9.07256 2.70854 8.75598 2.70854 8.56071 2.9038 8.36545 3.09906 8.36545 3.41564 8.56071 3.61091 8.75598 3.80617 9.07256 3.80617 9.26782 3.61091 9.46308 3.41564 9.46308 3.09906 9.26782 2.9038zM10.682 4.31801C10.4868 4.12275 10.1702 4.12275 9.97493 4.31801 9.77967 4.51328 9.77967 4.82986 9.97493 5.02512 10.1702 5.22038 10.4868 5.22038 10.682 5.02512 10.8773 4.82986 10.8773 4.51328 10.682 4.31801zM12.0962 5.73223C11.901 5.53696 11.5844 5.53696 11.3891 5.73223 11.1939 5.92749 11.1939 6.24407 11.3891 6.43933 11.5844 6.6346 11.901 6.6346 12.0962 6.43933 12.2915 6.24407 12.2915 5.92749 12.0962 5.73223z\",\n    fill: color\n  }));\n});\nvar _excluded$1f = [\"color\"];\nvar ContainerIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1f);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 1.5C2 1.77614 1.77614 2 1.5 2C1.22386 2 1 1.77614 1 1.5C1 1.22386 1.22386 1 1.5 1C1.77614 1 2 1.22386 2 1.5ZM5 13H10V2L5 2L5 13ZM4 13C4 13.5523 4.44772 14 5 14H10C10.5523 14 11 13.5523 11 13V2C11 1.44772 10.5523 1 10 1H5C4.44772 1 4 1.44771 4 2V13ZM13.5 2C13.7761 2 14 1.77614 14 1.5C14 1.22386 13.7761 1 13.5 1C13.2239 1 13 1.22386 13 1.5C13 1.77614 13.2239 2 13.5 2ZM2 3.5C2 3.77614 1.77614 4 1.5 4C1.22386 4 1 3.77614 1 3.5C1 3.22386 1.22386 3 1.5 3C1.77614 3 2 3.22386 2 3.5ZM13.5 4C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3C13.2239 3 13 3.22386 13 3.5C13 3.77614 13.2239 4 13.5 4ZM2 5.5C2 5.77614 1.77614 6 1.5 6C1.22386 6 1 5.77614 1 5.5C1 5.22386 1.22386 5 1.5 5C1.77614 5 2 5.22386 2 5.5ZM13.5 6C13.7761 6 14 5.77614 14 5.5C14 5.22386 13.7761 5 13.5 5C13.2239 5 13 5.22386 13 5.5C13 5.77614 13.2239 6 13.5 6ZM2 7.5C2 7.77614 1.77614 8 1.5 8C1.22386 8 1 7.77614 1 7.5C1 7.22386 1.22386 7 1.5 7C1.77614 7 2 7.22386 2 7.5ZM13.5 8C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7C13.2239 7 13 7.22386 13 7.5C13 7.77614 13.2239 8 13.5 8ZM2 9.5C2 9.77614 1.77614 10 1.5 10C1.22386 10 1 9.77614 1 9.5C1 9.22386 1.22386 9 1.5 9C1.77614 9 2 9.22386 2 9.5ZM13.5 10C13.7761 10 14 9.77614 14 9.5C14 9.22386 13.7761 9 13.5 9C13.2239 9 13 9.22386 13 9.5C13 9.77614 13.2239 10 13.5 10ZM2 11.5C2 11.7761 1.77614 12 1.5 12C1.22386 12 1 11.7761 1 11.5C1 11.2239 1.22386 11 1.5 11C1.77614 11 2 11.2239 2 11.5ZM13.5 12C13.7761 12 14 11.7761 14 11.5C14 11.2239 13.7761 11 13.5 11C13.2239 11 13 11.2239 13 11.5C13 11.7761 13.2239 12 13.5 12ZM2 13.5C2 13.7761 1.77614 14 1.5 14C1.22386 14 1 13.7761 1 13.5C1 13.2239 1.22386 13 1.5 13C1.77614 13 2 13.2239 2 13.5ZM13.5 14C13.7761 14 14 13.7761 14 13.5C14 13.2239 13.7761 13 13.5 13C13.2239 13 13 13.2239 13 13.5C13 13.7761 13.2239 14 13.5 14Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1g = [\"color\"];\nvar CookieIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1g);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.0697 1.76746C12.4807 1.21947 11.4605 0.454311 11.0495 1.0023C10.6385 1.55028 11.6588 2.31544 12.0697 1.76746ZM8.39263 1.07811C7.15585 0.950602 5.7823 1.16348 4.58433 1.70937C3.38552 2.25563 2.32735 3.15309 1.78844 4.41832C1.37574 5.38724 1.01715 6.28113 1.00088 7.44354C0.984724 8.59844 1.30522 9.96898 2.13174 11.928C2.61142 13.0649 4.03963 13.5446 5.13895 13.8079C6.40836 14.1119 7.80857 14.1914 8.6644 14.0742C9.36515 13.9782 10.1448 13.8284 10.7987 13.297C11.8977 12.4039 12.9009 11.3955 13.4994 10.3393C14.104 9.27221 14.3256 8.09207 13.7216 6.95324C13.5628 6.65373 13.316 6.57734 13.0412 6.4923C12.9374 6.46016 12.8295 6.42678 12.7209 6.37966C11.6211 5.90234 10.9646 5.34963 10.9135 5.02876C10.8656 4.72808 10.9221 4.51463 10.9811 4.29181C11.0129 4.17199 11.0453 4.04947 11.0626 3.90922C11.0838 3.73737 11.0814 3.33319 10.6996 3.12761C10.4048 2.96888 10.2164 2.65843 10.0407 2.36904C9.99742 2.29775 9.95492 2.22773 9.9118 2.16158C9.62634 1.72367 9.20769 1.16213 8.39263 1.07811ZM4.99899 2.61935C3.96483 3.09058 3.12554 3.83097 2.70846 4.81018C2.29808 5.77368 2.01406 6.50873 2.00079 7.45753C1.98741 8.41385 2.25043 9.6368 3.0531 11.5393C3.39181 12.3421 4.62167 12.6557 5.37186 12.8354C6.5493 13.1174 7.822 13.1802 8.52868 13.0834C9.21271 12.9897 9.74568 12.8642 10.1681 12.5209C11.229 11.6587 12.121 10.7435 12.6293 9.84635C12.9349 9.30709 13.5141 7.7028 12.6292 7.3873C10.7539 6.71875 10.262 6.06669 9.99011 5.41268C9.80915 4.97744 9.82868 4.52282 9.95741 4.07885L9.95741 4.07884C9.97662 4.0126 9.99538 3.94791 10.0334 3.88882C9.81857 3.73676 9.6515 3.55195 9.51464 3.3715C9.42876 3.25828 9.3469 3.12099 9.26197 2.97856C9.01866 2.57052 8.75018 2.12027 8.29008 2.07283C7.22889 1.96343 6.03398 2.14772 4.99899 2.61935ZM13.2081 3.77471C13.441 3.22671 12.4547 2.63606 12.0822 3.10163C11.5817 3.72732 12.9029 4.49281 13.2081 3.77471ZM14.3672 2.26031C14.9668 2.27493 15.1551 1.11603 14.5718 0.949371C13.8076 0.731026 13.5918 2.24139 14.3672 2.26031ZM14.2857 5.09098C14.8644 5.10004 15.0462 4.38222 14.4832 4.27899C13.7455 4.14375 13.5373 5.07927 14.2857 5.09098ZM6.9075 4.28672C6.46898 4.66754 6.0522 4.15185 5.97983 3.7365C5.86848 3.09744 6.33696 2.56856 6.94823 2.91156C7.43344 3.18382 7.26678 3.97471 6.9075 4.28672ZM4.94455 5.88184C5.40885 5.41754 4.59567 4.57013 4.11425 5.05154C3.83338 5.33242 4.00936 5.65376 4.23744 5.88184C4.43271 6.0771 4.74929 6.0771 4.94455 5.88184ZM6.97716 6.71984C7.31181 7.38914 8.48804 6.79159 7.99413 6.14788C7.86519 5.97983 7.68657 5.9494 7.62145 5.94207C7.21217 5.89601 6.76349 6.2925 6.97716 6.71984ZM6.98798 8.72461C7.14066 9.1188 7.51122 9.3187 7.91915 9.1633C8.27434 9.02799 8.33186 8.39689 8.17175 8.07427C8.02331 7.77514 7.63956 7.67793 7.33747 7.79417C6.98512 7.92976 6.85672 8.38708 6.98576 8.71889L6.98798 8.72461ZM10.3885 8.84081C10.7575 8.6566 11.4617 8.82771 11.4617 9.31199C11.4617 9.71286 10.9587 10.2165 10.5634 10.2826C10.1813 10.3465 9.70515 9.97581 9.76648 9.57718C9.81445 9.26539 10.1217 8.97401 10.3885 8.84081ZM7.56704 10.8432C7.33461 10.7502 7.14353 10.8601 7.11437 10.8769L7.11279 10.8778C6.90782 10.9949 6.71383 11.2439 6.6747 11.4842C6.59018 12.0034 7.13199 12.1239 7.52661 12.0987C8.2074 12.0553 8.06547 11.0426 7.56704 10.8432ZM4.8805 10.8932C5.0674 10.7723 5.15658 10.5363 5.08293 10.3153C4.93046 9.79687 4.3246 9.71252 3.96561 10.1297C3.79336 10.3299 3.80749 10.6274 3.99214 10.8105L3.99495 10.814L3.9979 10.8176C4.22025 11.0942 4.63624 11.1857 4.8805 10.8932ZM3.04695 7.81318C3.33147 8.0977 3.60077 8.15067 3.98443 8.05859C4.60826 7.90887 4.13814 6.24299 3.047 6.87296C2.70939 7.06788 2.86716 7.63339 3.04695 7.81318Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1h = [\"color\"];\nvar CopyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1h);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 9.50006C1 10.3285 1.67157 11.0001 2.5 11.0001H4L4 10.0001H2.5C2.22386 10.0001 2 9.7762 2 9.50006L2 2.50006C2 2.22392 2.22386 2.00006 2.5 2.00006L9.5 2.00006C9.77614 2.00006 10 2.22392 10 2.50006V4.00002H5.5C4.67158 4.00002 4 4.67159 4 5.50002V12.5C4 13.3284 4.67158 14 5.5 14H12.5C13.3284 14 14 13.3284 14 12.5V5.50002C14 4.67159 13.3284 4.00002 12.5 4.00002H11V2.50006C11 1.67163 10.3284 1.00006 9.5 1.00006H2.5C1.67157 1.00006 1 1.67163 1 2.50006V9.50006ZM5 5.50002C5 5.22388 5.22386 5.00002 5.5 5.00002H12.5C12.7761 5.00002 13 5.22388 13 5.50002V12.5C13 12.7762 12.7761 13 12.5 13H5.5C5.22386 13 5 12.7762 5 12.5V5.50002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1i = [\"color\"];\nvar CornerBottomLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1i);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9.87737 12H9.9H11.5C11.7761 12 12 11.7761 12 11.5C12 11.2239 11.7761 11 11.5 11H9.9C8.77164 11 7.95545 10.9996 7.31352 10.9472C6.67744 10.8952 6.25662 10.7946 5.91103 10.6185C5.25247 10.283 4.71703 9.74753 4.38148 9.08897C4.20539 8.74338 4.10481 8.32256 4.05284 7.68648C4.00039 7.04455 4 6.22836 4 5.1V3.5C4 3.22386 3.77614 3 3.5 3C3.22386 3 3 3.22386 3 3.5V5.1V5.12263C3 6.22359 3 7.08052 3.05616 7.76791C3.11318 8.46584 3.23058 9.0329 3.49047 9.54296C3.9219 10.3897 4.61031 11.0781 5.45704 11.5095C5.9671 11.7694 6.53416 11.8868 7.23209 11.9438C7.91948 12 8.77641 12 9.87737 12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1j = [\"color\"];\nvar CornerBottomRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1j);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.12263 12H5.1H3.5C3.22386 12 3 11.7761 3 11.5C3 11.2239 3.22386 11 3.5 11H5.1C6.22836 11 7.04455 10.9996 7.68648 10.9472C8.32256 10.8952 8.74338 10.7946 9.08897 10.6185C9.74753 10.283 10.283 9.74753 10.6185 9.08897C10.7946 8.74338 10.8952 8.32256 10.9472 7.68648C10.9996 7.04455 11 6.22836 11 5.1V3.5C11 3.22386 11.2239 3 11.5 3C11.7761 3 12 3.22386 12 3.5V5.1V5.12263C12 6.22359 12 7.08052 11.9438 7.76791C11.8868 8.46584 11.7694 9.0329 11.5095 9.54296C11.0781 10.3897 10.3897 11.0781 9.54296 11.5095C9.0329 11.7694 8.46584 11.8868 7.76791 11.9438C7.08052 12 6.22359 12 5.12263 12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1k = [\"color\"];\nvar CornerTopLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1k);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9.87737 3H9.9H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H9.9C8.77164 4 7.95545 4.00039 7.31352 4.05284C6.67744 4.10481 6.25662 4.20539 5.91103 4.38148C5.25247 4.71703 4.71703 5.25247 4.38148 5.91103C4.20539 6.25662 4.10481 6.67744 4.05284 7.31352C4.00039 7.95545 4 8.77164 4 9.9V11.5C4 11.7761 3.77614 12 3.5 12C3.22386 12 3 11.7761 3 11.5V9.9V9.87737C3 8.77641 3 7.91948 3.05616 7.23209C3.11318 6.53416 3.23058 5.9671 3.49047 5.45704C3.9219 4.61031 4.61031 3.9219 5.45704 3.49047C5.9671 3.23058 6.53416 3.11318 7.23209 3.05616C7.91948 3 8.77641 3 9.87737 3Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1l = [\"color\"];\nvar CornerTopRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1l);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.12263 3H5.1H3.5C3.22386 3 3 3.22386 3 3.5C3 3.77614 3.22386 4 3.5 4H5.1C6.22836 4 7.04455 4.00039 7.68648 4.05284C8.32256 4.10481 8.74338 4.20539 9.08897 4.38148C9.74753 4.71703 10.283 5.25247 10.6185 5.91103C10.7946 6.25662 10.8952 6.67744 10.9472 7.31352C10.9996 7.95545 11 8.77164 11 9.9V11.5C11 11.7761 11.2239 12 11.5 12C11.7761 12 12 11.7761 12 11.5V9.9V9.87737C12 8.77641 12 7.91948 11.9438 7.23209C11.8868 6.53416 11.7694 5.9671 11.5095 5.45704C11.0781 4.61031 10.3897 3.9219 9.54296 3.49047C9.0329 3.23058 8.46584 3.11318 7.76791 3.05616C7.08052 3 6.22359 3 5.12263 3Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1m = [\"color\"];\nvar CornersIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1m);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.5 2L4.87935 2C4.47687 1.99999 4.14469 1.99999 3.87409 2.0221C3.59304 2.04506 3.33469 2.09434 3.09202 2.21799C2.7157 2.40973 2.40973 2.7157 2.21799 3.09202C2.09434 3.33469 2.04506 3.59304 2.0221 3.87409C1.99999 4.14468 1.99999 4.47686 2 4.87933V4.87935V5.5C2 5.77614 2.22386 6 2.5 6C2.77614 6 3 5.77614 3 5.5V4.9C3 4.47171 3.00039 4.18056 3.01878 3.95552C3.03669 3.73631 3.06915 3.62421 3.10899 3.54601C3.20487 3.35785 3.35785 3.20487 3.54601 3.10899C3.62421 3.06915 3.73631 3.03669 3.95552 3.01878C4.18056 3.00039 4.47171 3 4.9 3H5.5C5.77614 3 6 2.77614 6 2.5C6 2.22386 5.77614 2 5.5 2ZM13 9.5C13 9.22386 12.7761 9 12.5 9C12.2239 9 12 9.22386 12 9.5V10.1C12 10.5283 11.9996 10.8194 11.9812 11.0445C11.9633 11.2637 11.9309 11.3758 11.891 11.454C11.7951 11.6422 11.6422 11.7951 11.454 11.891C11.3758 11.9309 11.2637 11.9633 11.0445 11.9812C10.8194 11.9996 10.5283 12 10.1 12H9.5C9.22386 12 9 12.2239 9 12.5C9 12.7761 9.22386 13 9.5 13H10.1206C10.5231 13 10.8553 13 11.1259 12.9779C11.407 12.9549 11.6653 12.9057 11.908 12.782C12.2843 12.5903 12.5903 12.2843 12.782 11.908C12.9057 11.6653 12.9549 11.407 12.9779 11.1259C13 10.8553 13 10.5232 13 10.1207V10.1207V10.1207V10.1206V9.5ZM2.5 9C2.77614 9 3 9.22386 3 9.5V10.1C3 10.5283 3.00039 10.8194 3.01878 11.0445C3.03669 11.2637 3.06915 11.3758 3.10899 11.454C3.20487 11.6422 3.35785 11.7951 3.54601 11.891C3.62421 11.9309 3.73631 11.9633 3.95552 11.9812C4.18056 11.9996 4.47171 12 4.9 12H5.5C5.77614 12 6 12.2239 6 12.5C6 12.7761 5.77614 13 5.5 13H4.87935C4.47687 13 4.14469 13 3.87409 12.9779C3.59304 12.9549 3.33469 12.9057 3.09202 12.782C2.7157 12.5903 2.40973 12.2843 2.21799 11.908C2.09434 11.6653 2.04506 11.407 2.0221 11.1259C1.99999 10.8553 1.99999 10.5231 2 10.1207V10.1206V10.1V9.5C2 9.22386 2.22386 9 2.5 9ZM10.1 3C10.5283 3 10.8194 3.00039 11.0445 3.01878C11.2637 3.03669 11.3758 3.06915 11.454 3.10899C11.6422 3.20487 11.7951 3.35785 11.891 3.54601C11.9309 3.62421 11.9633 3.73631 11.9812 3.95552C11.9996 4.18056 12 4.47171 12 4.9V5.5C12 5.77614 12.2239 6 12.5 6C12.7761 6 13 5.77614 13 5.5V4.87935V4.87934C13 4.47686 13 4.14468 12.9779 3.87409C12.9549 3.59304 12.9057 3.33469 12.782 3.09202C12.5903 2.7157 12.2843 2.40973 11.908 2.21799C11.6653 2.09434 11.407 2.04506 11.1259 2.0221C10.8553 1.99999 10.5231 1.99999 10.1206 2L10.1 2H9.5C9.22386 2 9 2.22386 9 2.5C9 2.77614 9.22386 3 9.5 3H10.1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1n = [\"color\"];\nvar CountdownTimerIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1n);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.15 7.49998C13.15 4.66458 10.9402 1.84998 7.50002 1.84998C4.7217 1.84998 3.34851 3.90636 2.76336 4.99997H4.5C4.77614 4.99997 5 5.22383 5 5.49997C5 5.77611 4.77614 5.99997 4.5 5.99997H1.5C1.22386 5.99997 1 5.77611 1 5.49997V2.49997C1 2.22383 1.22386 1.99997 1.5 1.99997C1.77614 1.99997 2 2.22383 2 2.49997V4.31318C2.70453 3.07126 4.33406 0.849976 7.50002 0.849976C11.5628 0.849976 14.15 4.18537 14.15 7.49998C14.15 10.8146 11.5628 14.15 7.50002 14.15C5.55618 14.15 3.93778 13.3808 2.78548 12.2084C2.16852 11.5806 1.68668 10.839 1.35816 10.0407C1.25306 9.78536 1.37488 9.49315 1.63024 9.38806C1.8856 9.28296 2.17781 9.40478 2.2829 9.66014C2.56374 10.3425 2.97495 10.9745 3.4987 11.5074C4.47052 12.4963 5.83496 13.15 7.50002 13.15C10.9402 13.15 13.15 10.3354 13.15 7.49998ZM7 10V5.00001H8V10H7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1o = [\"color\"];\nvar CounterClockwiseClockIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1o);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.15 7.49998C13.15 4.66458 10.9402 1.84998 7.50002 1.84998C4.72167 1.84998 3.34849 3.9064 2.76335 5H4.5C4.77614 5 5 5.22386 5 5.5C5 5.77614 4.77614 6 4.5 6H1.5C1.22386 6 1 5.77614 1 5.5V2.5C1 2.22386 1.22386 2 1.5 2C1.77614 2 2 2.22386 2 2.5V4.31318C2.70453 3.07126 4.33406 0.849976 7.50002 0.849976C11.5628 0.849976 14.15 4.18537 14.15 7.49998C14.15 10.8146 11.5628 14.15 7.50002 14.15C5.55618 14.15 3.93778 13.3808 2.78548 12.2084C2.16852 11.5806 1.68668 10.839 1.35816 10.0407C1.25306 9.78536 1.37488 9.49315 1.63024 9.38806C1.8856 9.28296 2.17781 9.40478 2.2829 9.66014C2.56374 10.3425 2.97495 10.9745 3.4987 11.5074C4.47052 12.4963 5.83496 13.15 7.50002 13.15C10.9402 13.15 13.15 10.3354 13.15 7.49998ZM7.5 4.00001C7.77614 4.00001 8 4.22387 8 4.50001V7.29291L9.85355 9.14646C10.0488 9.34172 10.0488 9.65831 9.85355 9.85357C9.65829 10.0488 9.34171 10.0488 9.14645 9.85357L7.14645 7.85357C7.05268 7.7598 7 7.63262 7 7.50001V4.50001C7 4.22387 7.22386 4.00001 7.5 4.00001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1p = [\"color\"];\nvar CropIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1p);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.5 8.00684e-07C3.77614 7.88614e-07 4 0.223859 4 0.500001L4 3.00006L11.5 3.00006C11.7761 3.00006 12 3.22392 12 3.50006L12 11.0001L14.5 11C14.7761 11 15 11.2238 15 11.5C15 11.7761 14.7762 12 14.5 12L12 12.0001L12 14.5C12 14.7761 11.7761 15 11.5 15C11.2239 15 11 14.7761 11 14.5L11 12.0001L3.5 12.0001C3.22386 12.0001 3 11.7762 3 11.5001L3 4.00005L0.499989 4C0.223847 4 -6.10541e-06 3.77613 -5.02576e-07 3.49999C5.13006e-06 3.22385 0.223867 3 0.50001 3L3 3.00005L3 0.500001C3 0.223859 3.22386 8.12755e-07 3.5 8.00684e-07ZM4 4.00006L4 11.0001L11 11.0001L11 4.00006L4 4.00006Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1q = [\"color\"];\nvar Cross1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1r = [\"color\"];\nvar Cross2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1r);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1s = [\"color\"];\nvar CrossCircledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1s);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704ZM9.85358 5.14644C10.0488 5.3417 10.0488 5.65829 9.85358 5.85355L8.20713 7.49999L9.85358 9.14644C10.0488 9.3417 10.0488 9.65829 9.85358 9.85355C9.65832 10.0488 9.34173 10.0488 9.14647 9.85355L7.50002 8.2071L5.85358 9.85355C5.65832 10.0488 5.34173 10.0488 5.14647 9.85355C4.95121 9.65829 4.95121 9.3417 5.14647 9.14644L6.79292 7.49999L5.14647 5.85355C4.95121 5.65829 4.95121 5.3417 5.14647 5.14644C5.34173 4.95118 5.65832 4.95118 5.85358 5.14644L7.50002 6.79289L9.14647 5.14644C9.34173 4.95118 9.65832 4.95118 9.85358 5.14644Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1t = [\"color\"];\nvar Crosshair1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1t);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877075 7.50207C0.877075 3.84319 3.84319 0.877075 7.50208 0.877075C11.1609 0.877075 14.1271 3.84319 14.1271 7.50207C14.1271 11.1609 11.1609 14.1271 7.50208 14.1271C3.84319 14.1271 0.877075 11.1609 0.877075 7.50207ZM1.84898 7.00003C2.0886 4.26639 4.26639 2.0886 7.00003 1.84898V4.50003C7.00003 4.77617 7.22388 5.00003 7.50003 5.00003C7.77617 5.00003 8.00003 4.77617 8.00003 4.50003V1.84862C10.7356 2.08643 12.9154 4.26502 13.1552 7.00003H10.5C10.2239 7.00003 10 7.22388 10 7.50003C10 7.77617 10.2239 8.00003 10.5 8.00003H13.1555C12.9176 10.7369 10.7369 12.9176 8.00003 13.1555V10.5C8.00003 10.2239 7.77617 10 7.50003 10C7.22388 10 7.00003 10.2239 7.00003 10.5V13.1552C4.26502 12.9154 2.08643 10.7356 1.84862 8.00003H4.50003C4.77617 8.00003 5.00003 7.77617 5.00003 7.50003C5.00003 7.22388 4.77617 7.00003 4.50003 7.00003H1.84898Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1u = [\"color\"];\nvar Crosshair2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1u);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 0C7.77614 0 8 0.223858 8 0.5V1.80687C10.6922 2.0935 12.8167 4.28012 13.0068 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H12.9888C12.7094 10.6244 10.6244 12.7094 8 12.9888V14.5C8 14.7761 7.77614 15 7.5 15C7.22386 15 7 14.7761 7 14.5V13.0068C4.28012 12.8167 2.0935 10.6922 1.80687 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H1.78886C1.98376 4.21166 4.21166 1.98376 7 1.78886V0.5C7 0.223858 7.22386 0 7.5 0ZM8 12.0322V9.5C8 9.22386 7.77614 9 7.5 9C7.22386 9 7 9.22386 7 9.5V12.054C4.80517 11.8689 3.04222 10.1668 2.76344 8H5.5C5.77614 8 6 7.77614 6 7.5C6 7.22386 5.77614 7 5.5 7H2.7417C2.93252 4.73662 4.73662 2.93252 7 2.7417V5.5C7 5.77614 7.22386 6 7.5 6C7.77614 6 8 5.77614 8 5.5V2.76344C10.1668 3.04222 11.8689 4.80517 12.054 7H9.5C9.22386 7 9 7.22386 9 7.5C9 7.77614 9.22386 8 9.5 8H12.0322C11.7621 10.0991 10.0991 11.7621 8 12.0322Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1v = [\"color\"];\nvar CrumpledPaperIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1v);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.60913 0.0634287C4.39082 0.0088505 4.16575 0.12393 4.08218 0.332867L3.1538 2.6538L0.832866 3.58218C0.702884 3.63417 0.604504 3.7437 0.566705 3.87849C0.528906 4.01329 0.555994 4.158 0.639992 4.26999L2.01148 6.09864L1.06343 9.89085C1.00944 10.1068 1.12145 10.3298 1.32691 10.4154L4.20115 11.613L5.62557 13.7496C5.73412 13.9124 5.93545 13.9864 6.12362 13.9327L9.62362 12.9327C9.62988 12.9309 9.63611 12.929 9.64229 12.9269L12.6423 11.9269C12.7923 11.8769 12.905 11.7519 12.9393 11.5976L13.9393 7.09761C13.9776 6.92506 13.9114 6.74605 13.77 6.63999L11.95 5.27499V2.99999C11.95 2.82955 11.8537 2.67373 11.7012 2.5975L8.70124 1.0975C8.67187 1.08282 8.64098 1.07139 8.60913 1.06343L4.60913 0.0634287ZM11.4323 6.01173L12.7748 7.01858L10.2119 9.15429C10.1476 9.20786 10.0995 9.2783 10.0731 9.35769L9.25382 11.8155L7.73849 10.8684C7.52774 10.7367 7.25011 10.8007 7.11839 11.0115C6.98667 11.2222 7.05074 11.4999 7.26149 11.6316L8.40341 12.3453L6.19221 12.9771L4.87441 11.0004C4.82513 10.9265 4.75508 10.8688 4.67307 10.8346L2.03046 9.73352L2.85134 6.44999H4.99999C5.24852 6.44999 5.44999 6.24852 5.44999 5.99999C5.44999 5.75146 5.24852 5.54999 4.99999 5.54999H2.72499L1.7123 4.19974L3.51407 3.47903L6.35769 4.4269C6.53655 4.48652 6.73361 4.42832 6.85138 4.28111L8.62413 2.06518L11.05 3.27811V5.19533L8.83287 6.08218C8.70996 6.13134 8.61494 6.23212 8.57308 6.35769L8.07308 7.85769C7.99449 8.09346 8.12191 8.34831 8.35769 8.4269C8.59346 8.50549 8.84831 8.37807 8.9269 8.14229L9.3609 6.84029L11.4323 6.01173ZM7.71052 1.76648L6.34462 3.47386L4.09505 2.724L4.77192 1.03183L7.71052 1.76648ZM10.2115 11.7885L12.116 11.1537L12.7745 8.19034L10.8864 9.76374L10.2115 11.7885Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1w = [\"color\"];\nvar CubeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1w);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.28856 0.796908C7.42258 0.734364 7.57742 0.734364 7.71144 0.796908L13.7114 3.59691C13.8875 3.67906 14 3.85574 14 4.05V10.95C14 11.1443 13.8875 11.3209 13.7114 11.4031L7.71144 14.2031C7.57742 14.2656 7.42258 14.2656 7.28856 14.2031L1.28856 11.4031C1.11252 11.3209 1 11.1443 1 10.95V4.05C1 3.85574 1.11252 3.67906 1.28856 3.59691L7.28856 0.796908ZM2 4.80578L7 6.93078V12.9649L2 10.6316V4.80578ZM8 12.9649L13 10.6316V4.80578L8 6.93078V12.9649ZM7.5 6.05672L12.2719 4.02866L7.5 1.80176L2.72809 4.02866L7.5 6.05672Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1x = [\"color\"];\nvar CursorArrowIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1x);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.29227 0.048984C3.47033 -0.032338 3.67946 -0.00228214 3.8274 0.125891L12.8587 7.95026C13.0134 8.08432 13.0708 8.29916 13.0035 8.49251C12.9362 8.68586 12.7578 8.81866 12.5533 8.82768L9.21887 8.97474L11.1504 13.2187C11.2648 13.47 11.1538 13.7664 10.9026 13.8808L8.75024 14.8613C8.499 14.9758 8.20255 14.8649 8.08802 14.6137L6.15339 10.3703L3.86279 12.7855C3.72196 12.934 3.50487 12.9817 3.31479 12.9059C3.1247 12.8301 3 12.6461 3 12.4414V0.503792C3 0.308048 3.11422 0.130306 3.29227 0.048984ZM4 1.59852V11.1877L5.93799 9.14425C6.05238 9.02363 6.21924 8.96776 6.38319 8.99516C6.54715 9.02256 6.68677 9.12965 6.75573 9.2809L8.79056 13.7441L10.0332 13.178L8.00195 8.71497C7.93313 8.56376 7.94391 8.38824 8.03072 8.24659C8.11753 8.10494 8.26903 8.01566 8.435 8.00834L11.2549 7.88397L4 1.59852Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1y = [\"color\"];\nvar CursorTextIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.5 1C4.22386 1 4 1.22386 4 1.5C4 1.77614 4.22386 2 4.5 2C5.42215 2 6.0399 2.23054 6.42075 2.56379C6.79286 2.88939 7 3.36626 7 4V7H5.75C5.47386 7 5.25 7.22386 5.25 7.5C5.25 7.77614 5.47386 8 5.75 8H7V11C7 11.6337 6.79286 12.1106 6.42075 12.4362C6.0399 12.7695 5.42215 13 4.5 13C4.22386 13 4 13.2239 4 13.5C4 13.7761 4.22386 14 4.5 14C5.57785 14 6.4601 13.7305 7.07925 13.1888C7.24168 13.0467 7.38169 12.8896 7.5 12.7198C7.61832 12.8896 7.75832 13.0467 7.92075 13.1888C8.5399 13.7305 9.42215 14 10.5 14C10.7761 14 11 13.7761 11 13.5C11 13.2239 10.7761 13 10.5 13C9.57785 13 8.9601 12.7695 8.57925 12.4362C8.20714 12.1106 8 11.6337 8 11V8H9.25C9.52614 8 9.75 7.77614 9.75 7.5C9.75 7.22386 9.52614 7 9.25 7H8V4C8 3.36626 8.20714 2.88939 8.57925 2.56379C8.9601 2.23054 9.57785 2 10.5 2C10.7761 2 11 1.77614 11 1.5C11 1.22386 10.7761 1 10.5 1C9.42215 1 8.5399 1.26946 7.92075 1.81121C7.75832 1.95333 7.61832 2.11043 7.5 2.28023C7.38168 2.11043 7.24168 1.95333 7.07925 1.81121C6.4601 1.26946 5.57785 1 4.5 1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1z = [\"color\"];\nvar DashIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5 7.5C5 7.22386 5.22386 7 5.5 7H9.5C9.77614 7 10 7.22386 10 7.5C10 7.77614 9.77614 8 9.5 8H5.5C5.22386 8 5 7.77614 5 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1A = [\"color\"];\nvar DashboardIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1A);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.8 1L2.74967 0.99997C2.52122 0.999752 2.32429 0.999564 2.14983 1.04145C1.60136 1.17312 1.17312 1.60136 1.04145 2.14983C0.999564 2.32429 0.999752 2.52122 0.99997 2.74967L1 2.8V5.2L0.99997 5.25033C0.999752 5.47878 0.999564 5.67572 1.04145 5.85017C1.17312 6.39864 1.60136 6.82688 2.14983 6.95856C2.32429 7.00044 2.52122 7.00025 2.74967 7.00003L2.8 7H5.2L5.25033 7.00003C5.47878 7.00025 5.67572 7.00044 5.85017 6.95856C6.39864 6.82688 6.82688 6.39864 6.95856 5.85017C7.00044 5.67572 7.00025 5.47878 7.00003 5.25033L7 5.2V2.8L7.00003 2.74967C7.00025 2.52122 7.00044 2.32429 6.95856 2.14983C6.82688 1.60136 6.39864 1.17312 5.85017 1.04145C5.67572 0.999564 5.47878 0.999752 5.25033 0.99997L5.2 1H2.8ZM2.38328 2.01382C2.42632 2.00348 2.49222 2 2.8 2H5.2C5.50779 2 5.57369 2.00348 5.61672 2.01382C5.79955 2.05771 5.94229 2.20045 5.98619 2.38328C5.99652 2.42632 6 2.49222 6 2.8V5.2C6 5.50779 5.99652 5.57369 5.98619 5.61672C5.94229 5.79955 5.79955 5.94229 5.61672 5.98619C5.57369 5.99652 5.50779 6 5.2 6H2.8C2.49222 6 2.42632 5.99652 2.38328 5.98619C2.20045 5.94229 2.05771 5.79955 2.01382 5.61672C2.00348 5.57369 2 5.50779 2 5.2V2.8C2 2.49222 2.00348 2.42632 2.01382 2.38328C2.05771 2.20045 2.20045 2.05771 2.38328 2.01382ZM9.8 1L9.74967 0.99997C9.52122 0.999752 9.32429 0.999564 9.14983 1.04145C8.60136 1.17312 8.17312 1.60136 8.04145 2.14983C7.99956 2.32429 7.99975 2.52122 7.99997 2.74967L8 2.8V5.2L7.99997 5.25033C7.99975 5.47878 7.99956 5.67572 8.04145 5.85017C8.17312 6.39864 8.60136 6.82688 9.14983 6.95856C9.32429 7.00044 9.52122 7.00025 9.74967 7.00003L9.8 7H12.2L12.2503 7.00003C12.4788 7.00025 12.6757 7.00044 12.8502 6.95856C13.3986 6.82688 13.8269 6.39864 13.9586 5.85017C14.0004 5.67572 14.0003 5.47878 14 5.25033L14 5.2V2.8L14 2.74967C14.0003 2.52122 14.0004 2.32429 13.9586 2.14983C13.8269 1.60136 13.3986 1.17312 12.8502 1.04145C12.6757 0.999564 12.4788 0.999752 12.2503 0.99997L12.2 1H9.8ZM9.38328 2.01382C9.42632 2.00348 9.49222 2 9.8 2H12.2C12.5078 2 12.5737 2.00348 12.6167 2.01382C12.7995 2.05771 12.9423 2.20045 12.9862 2.38328C12.9965 2.42632 13 2.49222 13 2.8V5.2C13 5.50779 12.9965 5.57369 12.9862 5.61672C12.9423 5.79955 12.7995 5.94229 12.6167 5.98619C12.5737 5.99652 12.5078 6 12.2 6H9.8C9.49222 6 9.42632 5.99652 9.38328 5.98619C9.20045 5.94229 9.05771 5.79955 9.01382 5.61672C9.00348 5.57369 9 5.50779 9 5.2V2.8C9 2.49222 9.00348 2.42632 9.01382 2.38328C9.05771 2.20045 9.20045 2.05771 9.38328 2.01382ZM2.74967 7.99997L2.8 8H5.2L5.25033 7.99997C5.47878 7.99975 5.67572 7.99956 5.85017 8.04145C6.39864 8.17312 6.82688 8.60136 6.95856 9.14983C7.00044 9.32429 7.00025 9.52122 7.00003 9.74967L7 9.8V12.2L7.00003 12.2503C7.00025 12.4788 7.00044 12.6757 6.95856 12.8502C6.82688 13.3986 6.39864 13.8269 5.85017 13.9586C5.67572 14.0004 5.47878 14.0003 5.25033 14L5.2 14H2.8L2.74967 14C2.52122 14.0003 2.32429 14.0004 2.14983 13.9586C1.60136 13.8269 1.17312 13.3986 1.04145 12.8502C0.999564 12.6757 0.999752 12.4788 0.99997 12.2503L1 12.2V9.8L0.99997 9.74967C0.999752 9.52122 0.999564 9.32429 1.04145 9.14983C1.17312 8.60136 1.60136 8.17312 2.14983 8.04145C2.32429 7.99956 2.52122 7.99975 2.74967 7.99997ZM2.8 9C2.49222 9 2.42632 9.00348 2.38328 9.01382C2.20045 9.05771 2.05771 9.20045 2.01382 9.38328C2.00348 9.42632 2 9.49222 2 9.8V12.2C2 12.5078 2.00348 12.5737 2.01382 12.6167C2.05771 12.7995 2.20045 12.9423 2.38328 12.9862C2.42632 12.9965 2.49222 13 2.8 13H5.2C5.50779 13 5.57369 12.9965 5.61672 12.9862C5.79955 12.9423 5.94229 12.7995 5.98619 12.6167C5.99652 12.5737 6 12.5078 6 12.2V9.8C6 9.49222 5.99652 9.42632 5.98619 9.38328C5.94229 9.20045 5.79955 9.05771 5.61672 9.01382C5.57369 9.00348 5.50779 9 5.2 9H2.8ZM9.8 8L9.74967 7.99997C9.52122 7.99975 9.32429 7.99956 9.14983 8.04145C8.60136 8.17312 8.17312 8.60136 8.04145 9.14983C7.99956 9.32429 7.99975 9.52122 7.99997 9.74967L8 9.8V12.2L7.99997 12.2503C7.99975 12.4788 7.99956 12.6757 8.04145 12.8502C8.17312 13.3986 8.60136 13.8269 9.14983 13.9586C9.32429 14.0004 9.52122 14.0003 9.74967 14L9.8 14H12.2L12.2503 14C12.4788 14.0003 12.6757 14.0004 12.8502 13.9586C13.3986 13.8269 13.8269 13.3986 13.9586 12.8502C14.0004 12.6757 14.0003 12.4788 14 12.2503L14 12.2V9.8L14 9.74967C14.0003 9.52122 14.0004 9.32429 13.9586 9.14983C13.8269 8.60136 13.3986 8.17312 12.8502 8.04145C12.6757 7.99956 12.4788 7.99975 12.2503 7.99997L12.2 8H9.8ZM9.38328 9.01382C9.42632 9.00348 9.49222 9 9.8 9H12.2C12.5078 9 12.5737 9.00348 12.6167 9.01382C12.7995 9.05771 12.9423 9.20045 12.9862 9.38328C12.9965 9.42632 13 9.49222 13 9.8V12.2C13 12.5078 12.9965 12.5737 12.9862 12.6167C12.9423 12.7995 12.7995 12.9423 12.6167 12.9862C12.5737 12.9965 12.5078 13 12.2 13H9.8C9.49222 13 9.42632 12.9965 9.38328 12.9862C9.20045 12.9423 9.05771 12.7995 9.01382 12.6167C9.00348 12.5737 9 12.5078 9 12.2V9.8C9 9.49222 9.00348 9.42632 9.01382 9.38328C9.05771 9.20045 9.20045 9.05771 9.38328 9.01382Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1B = [\"color\"];\nvar DesktopIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1B);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 3.25C1 3.11193 1.11193 3 1.25 3H13.75C13.8881 3 14 3.11193 14 3.25V10.75C14 10.8881 13.8881 11 13.75 11H1.25C1.11193 11 1 10.8881 1 10.75V3.25ZM1.25 2C0.559643 2 0 2.55964 0 3.25V10.75C0 11.4404 0.559644 12 1.25 12H5.07341L4.82991 13.2986C4.76645 13.6371 5.02612 13.95 5.37049 13.95H9.62951C9.97389 13.95 10.2336 13.6371 10.1701 13.2986L9.92659 12H13.75C14.4404 12 15 11.4404 15 10.75V3.25C15 2.55964 14.4404 2 13.75 2H1.25ZM9.01091 12H5.98909L5.79222 13.05H9.20778L9.01091 12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1C = [\"color\"];\nvar DimensionsIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1C);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.00014 2.73895C3.00014 2.94698 2.76087 3.06401 2.59666 2.93628L1.00386 1.69744C0.875177 1.59735 0.875177 1.40286 1.00386 1.30277L2.59666 0.063928C2.76087 -0.0637944 3.00014 0.0532293 3.00014 0.261266V1.00012H9.00009V0.261296C9.00009 0.0532591 9.23936 -0.0637646 9.40358 0.0639578L10.9964 1.3028C11.1251 1.40289 11.1251 1.59738 10.9964 1.69747L9.40358 2.93631C9.23936 3.06404 9.00009 2.94701 9.00009 2.73898V2.00012H3.00014V2.73895ZM9.50002 4.99998H2.50002C2.22388 4.99998 2.00002 5.22384 2.00002 5.49998V12.5C2.00002 12.7761 2.22388 13 2.50002 13H9.50002C9.77616 13 10 12.7761 10 12.5V5.49998C10 5.22384 9.77616 4.99998 9.50002 4.99998ZM2.50002 3.99998C1.67159 3.99998 1.00002 4.67156 1.00002 5.49998V12.5C1.00002 13.3284 1.67159 14 2.50002 14H9.50002C10.3284 14 11 13.3284 11 12.5V5.49998C11 4.67156 10.3284 3.99998 9.50002 3.99998H2.50002ZM14.7389 6.00001H14V12H14.7389C14.9469 12 15.064 12.2393 14.9362 12.4035L13.6974 13.9963C13.5973 14.125 13.4028 14.125 13.3027 13.9963L12.0639 12.4035C11.9362 12.2393 12.0532 12 12.2612 12H13V6.00001H12.2612C12.0532 6.00001 11.9361 5.76074 12.0639 5.59653L13.3027 4.00373C13.4028 3.87505 13.5973 3.87505 13.6974 4.00374L14.9362 5.59653C15.0639 5.76074 14.9469 6.00001 14.7389 6.00001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1D = [\"color\"];\nvar DiscIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1D);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.877075C3.84222 0.877075 0.877075 3.84222 0.877075 7.49991C0.877075 11.1576 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1576 14.1227 7.49991C14.1227 3.84222 11.1576 0.877075 7.49991 0.877075ZM1.82708 7.49991C1.82708 4.36689 4.36689 1.82707 7.49991 1.82707C10.6329 1.82707 13.1727 4.36689 13.1727 7.49991C13.1727 10.6329 10.6329 13.1727 7.49991 13.1727C4.36689 13.1727 1.82708 10.6329 1.82708 7.49991ZM8.37287 7.50006C8.37287 7.98196 7.98221 8.37263 7.5003 8.37263C7.01839 8.37263 6.62773 7.98196 6.62773 7.50006C6.62773 7.01815 7.01839 6.62748 7.5003 6.62748C7.98221 6.62748 8.37287 7.01815 8.37287 7.50006ZM9.32287 7.50006C9.32287 8.50664 8.50688 9.32263 7.5003 9.32263C6.49372 9.32263 5.67773 8.50664 5.67773 7.50006C5.67773 6.49348 6.49372 5.67748 7.5003 5.67748C8.50688 5.67748 9.32287 6.49348 9.32287 7.50006Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1E = [\"color\"];\nvar DiscordLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1E);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M5.07451 1.82584C5.03267 1.81926 4.99014 1.81825 4.94803 1.82284C4.10683 1.91446 2.82673 2.36828 2.07115 2.77808C2.02106 2.80525 1.97621 2.84112 1.93869 2.88402C1.62502 3.24266 1.34046 3.82836 1.11706 4.38186C0.887447 4.95076 0.697293 5.55032 0.588937 5.98354C0.236232 7.39369 0.042502 9.08728 0.0174948 10.6925C0.0162429 10.7729 0.0351883 10.8523 0.0725931 10.9234C0.373679 11.496 1.02015 12.027 1.66809 12.4152C2.32332 12.8078 3.08732 13.1182 3.70385 13.1778C3.85335 13.1922 4.00098 13.1358 4.10282 13.0255C4.2572 12.8581 4.5193 12.4676 4.71745 12.1643C4.80739 12.0267 4.89157 11.8953 4.95845 11.7901C5.62023 11.9106 6.45043 11.9801 7.50002 11.9801C8.54844 11.9801 9.37796 11.9107 10.0394 11.7905C10.1062 11.8957 10.1903 12.0269 10.2801 12.1643C10.4783 12.4676 10.7404 12.8581 10.8947 13.0255C10.9966 13.1358 11.1442 13.1922 11.2937 13.1778C11.9102 13.1182 12.6742 12.8078 13.3295 12.4152C13.9774 12.027 14.6239 11.496 14.925 10.9234C14.9624 10.8523 14.9813 10.7729 14.9801 10.6925C14.9551 9.08728 14.7613 7.39369 14.4086 5.98354C14.3003 5.55032 14.1101 4.95076 13.8805 4.38186C13.6571 3.82836 13.3725 3.24266 13.0589 2.88402C13.0214 2.84112 12.9765 2.80525 12.9264 2.77808C12.1708 2.36828 10.8907 1.91446 10.0495 1.82284C10.0074 1.81825 9.96489 1.81926 9.92305 1.82584C9.71676 1.85825 9.5391 1.96458 9.40809 2.06355C9.26977 2.16804 9.1413 2.29668 9.0304 2.42682C8.86968 2.61544 8.71437 2.84488 8.61428 3.06225C8.27237 3.03501 7.90138 3.02 7.5 3.02C7.0977 3.02 6.72593 3.03508 6.38337 3.06244C6.28328 2.84501 6.12792 2.61549 5.96716 2.42682C5.85626 2.29668 5.72778 2.16804 5.58947 2.06355C5.45846 1.96458 5.2808 1.85825 5.07451 1.82584ZM11.0181 11.5382C11.0395 11.5713 11.0615 11.6051 11.0838 11.6392C11.2169 11.843 11.3487 12.0385 11.4508 12.1809C11.8475 12.0916 12.352 11.8818 12.8361 11.5917C13.3795 11.2661 13.8098 10.8918 14.0177 10.5739C13.9852 9.06758 13.7993 7.50369 13.4773 6.21648C13.38 5.82759 13.2038 5.27021 12.9903 4.74117C12.7893 4.24326 12.5753 3.82162 12.388 3.5792C11.7376 3.24219 10.7129 2.88582 10.0454 2.78987C10.0308 2.79839 10.0113 2.81102 9.98675 2.82955C9.91863 2.881 9.84018 2.95666 9.76111 3.04945C9.71959 3.09817 9.68166 3.1471 9.64768 3.19449C9.953 3.25031 10.2253 3.3171 10.4662 3.39123C11.1499 3.6016 11.6428 3.89039 11.884 4.212C12.0431 4.42408 12.0001 4.72494 11.788 4.884C11.5759 5.04306 11.2751 5.00008 11.116 4.788C11.0572 4.70961 10.8001 4.4984 10.1838 4.30877C9.58933 4.12585 8.71356 3.98 7.5 3.98C6.28644 3.98 5.41067 4.12585 4.81616 4.30877C4.19988 4.4984 3.94279 4.70961 3.884 4.788C3.72494 5.00008 3.42408 5.04306 3.212 4.884C2.99992 4.72494 2.95694 4.42408 3.116 4.212C3.35721 3.89039 3.85011 3.6016 4.53383 3.39123C4.77418 3.31727 5.04571 3.25062 5.35016 3.19488C5.31611 3.14738 5.27808 3.09831 5.23645 3.04945C5.15738 2.95666 5.07893 2.881 5.01081 2.82955C4.98628 2.81102 4.96674 2.79839 4.95217 2.78987C4.28464 2.88582 3.25999 3.24219 2.60954 3.5792C2.42226 3.82162 2.20825 4.24326 2.00729 4.74117C1.79376 5.27021 1.61752 5.82759 1.52025 6.21648C1.19829 7.50369 1.01236 9.06758 0.97986 10.5739C1.18772 10.8918 1.61807 11.2661 2.16148 11.5917C2.64557 11.8818 3.15003 12.0916 3.5468 12.1809C3.64885 12.0385 3.78065 11.843 3.9138 11.6392C3.93626 11.6048 3.95838 11.5708 3.97996 11.5375C3.19521 11.2591 2.77361 10.8758 2.50064 10.4664C2.35359 10.2458 2.4132 9.94778 2.63377 9.80074C2.85435 9.65369 3.15236 9.71329 3.29941 9.93387C3.56077 10.3259 4.24355 11.0201 7.50002 11.0201C10.7565 11.0201 11.4392 10.326 11.7006 9.93386C11.8477 9.71329 12.1457 9.65369 12.3663 9.80074C12.5869 9.94779 12.6465 10.2458 12.4994 10.4664C12.2262 10.8762 11.8041 11.2598 11.0181 11.5382ZM4.08049 7.01221C4.32412 6.74984 4.65476 6.60162 5.00007 6.59998C5.34538 6.60162 5.67603 6.74984 5.91966 7.01221C6.16329 7.27459 6.30007 7.62974 6.30007 7.99998C6.30007 8.37021 6.16329 8.72536 5.91966 8.98774C5.67603 9.25011 5.34538 9.39833 5.00007 9.39998C4.65476 9.39833 4.32412 9.25011 4.08049 8.98774C3.83685 8.72536 3.70007 8.37021 3.70007 7.99998C3.70007 7.62974 3.83685 7.27459 4.08049 7.01221ZM9.99885 6.59998C9.65354 6.60162 9.3229 6.74984 9.07926 7.01221C8.83563 7.27459 8.69885 7.62974 8.69885 7.99998C8.69885 8.37021 8.83563 8.72536 9.07926 8.98774C9.3229 9.25011 9.65354 9.39833 9.99885 9.39998C10.3442 9.39833 10.6748 9.25011 10.9184 8.98774C11.1621 8.72536 11.2989 8.37021 11.2989 7.99998C11.2989 7.62974 11.1621 7.27459 10.9184 7.01221C10.6748 6.74984 10.3442 6.60162 9.99885 6.59998Z\",\n    fill: color\n  }));\n});\nvar _excluded$1F = [\"color\"];\nvar DividerHorizontalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1F);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 7.5C2 7.22386 2.22386 7 2.5 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H2.5C2.22386 8 2 7.77614 2 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1G = [\"color\"];\nvar DividerVerticalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1G);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 2C7.77614 2 8 2.22386 8 2.5L8 12.5C8 12.7761 7.77614 13 7.5 13C7.22386 13 7 12.7761 7 12.5L7 2.5C7 2.22386 7.22386 2 7.5 2Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1H = [\"color\"];\nvar DotIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1H);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 9.125C8.39746 9.125 9.125 8.39746 9.125 7.5C9.125 6.60254 8.39746 5.875 7.5 5.875C6.60254 5.875 5.875 6.60254 5.875 7.5C5.875 8.39746 6.60254 9.125 7.5 9.125ZM7.5 10.125C8.94975 10.125 10.125 8.94975 10.125 7.5C10.125 6.05025 8.94975 4.875 7.5 4.875C6.05025 4.875 4.875 6.05025 4.875 7.5C4.875 8.94975 6.05025 10.125 7.5 10.125Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1I = [\"color\"];\nvar DotFilledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1I);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9.875 7.5C9.875 8.81168 8.81168 9.875 7.5 9.875C6.18832 9.875 5.125 8.81168 5.125 7.5C5.125 6.18832 6.18832 5.125 7.5 5.125C8.81168 5.125 9.875 6.18832 9.875 7.5Z\",\n    fill: color\n  }));\n});\nvar _excluded$1J = [\"color\"];\nvar DotsHorizontalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1J);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.625 7.5C3.625 8.12132 3.12132 8.625 2.5 8.625C1.87868 8.625 1.375 8.12132 1.375 7.5C1.375 6.87868 1.87868 6.375 2.5 6.375C3.12132 6.375 3.625 6.87868 3.625 7.5ZM8.625 7.5C8.625 8.12132 8.12132 8.625 7.5 8.625C6.87868 8.625 6.375 8.12132 6.375 7.5C6.375 6.87868 6.87868 6.375 7.5 6.375C8.12132 6.375 8.625 6.87868 8.625 7.5ZM12.5 8.625C13.1213 8.625 13.625 8.12132 13.625 7.5C13.625 6.87868 13.1213 6.375 12.5 6.375C11.8787 6.375 11.375 6.87868 11.375 7.5C11.375 8.12132 11.8787 8.625 12.5 8.625Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1K = [\"color\"];\nvar DotsVerticalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1K);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.625 2.5C8.625 3.12132 8.12132 3.625 7.5 3.625C6.87868 3.625 6.375 3.12132 6.375 2.5C6.375 1.87868 6.87868 1.375 7.5 1.375C8.12132 1.375 8.625 1.87868 8.625 2.5ZM8.625 7.5C8.625 8.12132 8.12132 8.625 7.5 8.625C6.87868 8.625 6.375 8.12132 6.375 7.5C6.375 6.87868 6.87868 6.375 7.5 6.375C8.12132 6.375 8.625 6.87868 8.625 7.5ZM7.5 13.625C8.12132 13.625 8.625 13.1213 8.625 12.5C8.625 11.8787 8.12132 11.375 7.5 11.375C6.87868 11.375 6.375 11.8787 6.375 12.5C6.375 13.1213 6.87868 13.625 7.5 13.625Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1L = [\"color\"];\nvar DoubleArrowDownIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1L);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.85355 2.14645C3.65829 1.95118 3.34171 1.95118 3.14645 2.14645C2.95118 2.34171 2.95118 2.65829 3.14645 2.85355L7.14645 6.85355C7.34171 7.04882 7.65829 7.04882 7.85355 6.85355L11.8536 2.85355C12.0488 2.65829 12.0488 2.34171 11.8536 2.14645C11.6583 1.95118 11.3417 1.95118 11.1464 2.14645L7.5 5.79289L3.85355 2.14645ZM3.85355 8.14645C3.65829 7.95118 3.34171 7.95118 3.14645 8.14645C2.95118 8.34171 2.95118 8.65829 3.14645 8.85355L7.14645 12.8536C7.34171 13.0488 7.65829 13.0488 7.85355 12.8536L11.8536 8.85355C12.0488 8.65829 12.0488 8.34171 11.8536 8.14645C11.6583 7.95118 11.3417 7.95118 11.1464 8.14645L7.5 11.7929L3.85355 8.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1M = [\"color\"];\nvar DoubleArrowLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1M);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.85355 3.85355C7.04882 3.65829 7.04882 3.34171 6.85355 3.14645C6.65829 2.95118 6.34171 2.95118 6.14645 3.14645L2.14645 7.14645C1.95118 7.34171 1.95118 7.65829 2.14645 7.85355L6.14645 11.8536C6.34171 12.0488 6.65829 12.0488 6.85355 11.8536C7.04882 11.6583 7.04882 11.3417 6.85355 11.1464L3.20711 7.5L6.85355 3.85355ZM12.8536 3.85355C13.0488 3.65829 13.0488 3.34171 12.8536 3.14645C12.6583 2.95118 12.3417 2.95118 12.1464 3.14645L8.14645 7.14645C7.95118 7.34171 7.95118 7.65829 8.14645 7.85355L12.1464 11.8536C12.3417 12.0488 12.6583 12.0488 12.8536 11.8536C13.0488 11.6583 13.0488 11.3417 12.8536 11.1464L9.20711 7.5L12.8536 3.85355Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1N = [\"color\"];\nvar DoubleArrowRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1N);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.14645 11.1464C1.95118 11.3417 1.95118 11.6583 2.14645 11.8536C2.34171 12.0488 2.65829 12.0488 2.85355 11.8536L6.85355 7.85355C7.04882 7.65829 7.04882 7.34171 6.85355 7.14645L2.85355 3.14645C2.65829 2.95118 2.34171 2.95118 2.14645 3.14645C1.95118 3.34171 1.95118 3.65829 2.14645 3.85355L5.79289 7.5L2.14645 11.1464ZM8.14645 11.1464C7.95118 11.3417 7.95118 11.6583 8.14645 11.8536C8.34171 12.0488 8.65829 12.0488 8.85355 11.8536L12.8536 7.85355C13.0488 7.65829 13.0488 7.34171 12.8536 7.14645L8.85355 3.14645C8.65829 2.95118 8.34171 2.95118 8.14645 3.14645C7.95118 3.34171 7.95118 3.65829 8.14645 3.85355L11.7929 7.5L8.14645 11.1464Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1O = [\"color\"];\nvar DoubleArrowUpIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1O);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11.1464 6.85355C11.3417 7.04882 11.6583 7.04882 11.8536 6.85355C12.0488 6.65829 12.0488 6.34171 11.8536 6.14645L7.85355 2.14645C7.65829 1.95118 7.34171 1.95118 7.14645 2.14645L3.14645 6.14645C2.95118 6.34171 2.95118 6.65829 3.14645 6.85355C3.34171 7.04882 3.65829 7.04882 3.85355 6.85355L7.5 3.20711L11.1464 6.85355ZM11.1464 12.8536C11.3417 13.0488 11.6583 13.0488 11.8536 12.8536C12.0488 12.6583 12.0488 12.3417 11.8536 12.1464L7.85355 8.14645C7.65829 7.95118 7.34171 7.95118 7.14645 8.14645L3.14645 12.1464C2.95118 12.3417 2.95118 12.6583 3.14645 12.8536C3.34171 13.0488 3.65829 13.0488 3.85355 12.8536L7.5 9.20711L11.1464 12.8536Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1P = [\"color\"];\nvar DownloadIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1P);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.50005 1.04999C7.74858 1.04999 7.95005 1.25146 7.95005 1.49999V8.41359L10.1819 6.18179C10.3576 6.00605 10.6425 6.00605 10.8182 6.18179C10.994 6.35753 10.994 6.64245 10.8182 6.81819L7.81825 9.81819C7.64251 9.99392 7.35759 9.99392 7.18185 9.81819L4.18185 6.81819C4.00611 6.64245 4.00611 6.35753 4.18185 6.18179C4.35759 6.00605 4.64251 6.00605 4.81825 6.18179L7.05005 8.41359V1.49999C7.05005 1.25146 7.25152 1.04999 7.50005 1.04999ZM2.5 10C2.77614 10 3 10.2239 3 10.5V12C3 12.5539 3.44565 13 3.99635 13H11.0012C11.5529 13 12 12.5528 12 12V10.5C12 10.2239 12.2239 10 12.5 10C12.7761 10 13 10.2239 13 10.5V12C13 13.1041 12.1062 14 11.0012 14H3.99635C2.89019 14 2 13.103 2 12V10.5C2 10.2239 2.22386 10 2.5 10Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1Q = [\"color\"];\nvar DragHandleDots1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1Q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"4.5\",\n    cy: \"2.5\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"4.5\",\n    cy: \"4.5\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"4.5\",\n    cy: \"6.499\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"4.5\",\n    cy: \"8.499\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"4.5\",\n    cy: \"10.498\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"4.5\",\n    cy: \"12.498\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"6.5\",\n    cy: \"2.5\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"6.5\",\n    cy: \"4.5\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"6.5\",\n    cy: \"6.499\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"6.5\",\n    cy: \"8.499\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"6.5\",\n    cy: \"10.498\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"6.5\",\n    cy: \"12.498\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"8.499\",\n    cy: \"2.5\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"8.499\",\n    cy: \"4.5\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"8.499\",\n    cy: \"6.499\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"8.499\",\n    cy: \"8.499\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"8.499\",\n    cy: \"10.498\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"8.499\",\n    cy: \"12.498\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"10.499\",\n    cy: \"2.5\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"10.499\",\n    cy: \"4.5\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"10.499\",\n    cy: \"6.499\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"10.499\",\n    cy: \"8.499\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"10.499\",\n    cy: \"10.498\",\n    r: \".6\",\n    fill: color\n  }), (0, import_react8.createElement)(\"circle\", {\n    cx: \"10.499\",\n    cy: \"12.498\",\n    r: \".6\",\n    fill: color\n  }));\n});\nvar _excluded$1R = [\"color\"];\nvar DragHandleDots2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1R);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.5 4.625C6.12132 4.625 6.625 4.12132 6.625 3.5C6.625 2.87868 6.12132 2.375 5.5 2.375C4.87868 2.375 4.375 2.87868 4.375 3.5C4.375 4.12132 4.87868 4.625 5.5 4.625ZM9.5 4.625C10.1213 4.625 10.625 4.12132 10.625 3.5C10.625 2.87868 10.1213 2.375 9.5 2.375C8.87868 2.375 8.375 2.87868 8.375 3.5C8.375 4.12132 8.87868 4.625 9.5 4.625ZM10.625 7.5C10.625 8.12132 10.1213 8.625 9.5 8.625C8.87868 8.625 8.375 8.12132 8.375 7.5C8.375 6.87868 8.87868 6.375 9.5 6.375C10.1213 6.375 10.625 6.87868 10.625 7.5ZM5.5 8.625C6.12132 8.625 6.625 8.12132 6.625 7.5C6.625 6.87868 6.12132 6.375 5.5 6.375C4.87868 6.375 4.375 6.87868 4.375 7.5C4.375 8.12132 4.87868 8.625 5.5 8.625ZM10.625 11.5C10.625 12.1213 10.1213 12.625 9.5 12.625C8.87868 12.625 8.375 12.1213 8.375 11.5C8.375 10.8787 8.87868 10.375 9.5 10.375C10.1213 10.375 10.625 10.8787 10.625 11.5ZM5.5 12.625C6.12132 12.625 6.625 12.1213 6.625 11.5C6.625 10.8787 6.12132 10.375 5.5 10.375C4.87868 10.375 4.375 10.8787 4.375 11.5C4.375 12.1213 4.87868 12.625 5.5 12.625Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1S = [\"color\"];\nvar DragHandleHorizontalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1S);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.49998 4.09998C2.27906 4.09998 2.09998 4.27906 2.09998 4.49998C2.09998 4.72089 2.27906 4.89998 2.49998 4.89998H12.5C12.7209 4.89998 12.9 4.72089 12.9 4.49998C12.9 4.27906 12.7209 4.09998 12.5 4.09998H2.49998ZM2.49998 6.09998C2.27906 6.09998 2.09998 6.27906 2.09998 6.49998C2.09998 6.72089 2.27906 6.89998 2.49998 6.89998H12.5C12.7209 6.89998 12.9 6.72089 12.9 6.49998C12.9 6.27906 12.7209 6.09998 12.5 6.09998H2.49998ZM2.09998 8.49998C2.09998 8.27906 2.27906 8.09998 2.49998 8.09998H12.5C12.7209 8.09998 12.9 8.27906 12.9 8.49998C12.9 8.72089 12.7209 8.89998 12.5 8.89998H2.49998C2.27906 8.89998 2.09998 8.72089 2.09998 8.49998ZM2.49998 10.1C2.27906 10.1 2.09998 10.2791 2.09998 10.5C2.09998 10.7209 2.27906 10.9 2.49998 10.9H12.5C12.7209 10.9 12.9 10.7209 12.9 10.5C12.9 10.2791 12.7209 10.1 12.5 10.1H2.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1T = [\"color\"];\nvar DragHandleVerticalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1T);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.09998 12.5C4.09998 12.7209 4.27906 12.9 4.49998 12.9C4.72089 12.9 4.89998 12.7209 4.89998 12.5L4.89998 2.50002C4.89998 2.27911 4.72089 2.10003 4.49998 2.10003C4.27906 2.10003 4.09998 2.27911 4.09998 2.50002L4.09998 12.5ZM6.09998 12.5C6.09998 12.7209 6.27906 12.9 6.49998 12.9C6.72089 12.9 6.89998 12.7209 6.89998 12.5L6.89998 2.50002C6.89998 2.27911 6.72089 2.10003 6.49998 2.10003C6.27906 2.10003 6.09998 2.27911 6.09998 2.50002L6.09998 12.5ZM8.49998 12.9C8.27906 12.9 8.09998 12.7209 8.09998 12.5L8.09998 2.50002C8.09998 2.27911 8.27906 2.10002 8.49998 2.10002C8.72089 2.10002 8.89998 2.27911 8.89998 2.50002L8.89998 12.5C8.89998 12.7209 8.72089 12.9 8.49998 12.9ZM10.1 12.5C10.1 12.7209 10.2791 12.9 10.5 12.9C10.7209 12.9 10.9 12.7209 10.9 12.5L10.9 2.50002C10.9 2.27911 10.7209 2.10002 10.5 2.10002C10.2791 2.10002 10.1 2.27911 10.1 2.50002L10.1 12.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1U = [\"color\"];\nvar DrawingPinIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1U);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M10.3285 1.13607C10.1332 0.940809 9.81662 0.940808 9.62136 1.13607C9.42609 1.33133 9.42609 1.64792 9.62136 1.84318L10.2744 2.49619L5.42563 6.13274L4.31805 5.02516C4.12279 4.8299 3.80621 4.8299 3.61095 5.02516C3.41569 5.22042 3.41569 5.537 3.61095 5.73226L5.02516 7.14648L6.08582 8.20714L2.81545 11.4775C2.62019 11.6728 2.62019 11.9894 2.81545 12.1846C3.01072 12.3799 3.3273 12.3799 3.52256 12.1846L6.79293 8.91425L7.85359 9.97491L9.2678 11.3891C9.46306 11.5844 9.77965 11.5844 9.97491 11.3891C10.1702 11.1939 10.1702 10.8773 9.97491 10.682L8.86733 9.57443L12.5039 4.7257L13.1569 5.37871C13.3522 5.57397 13.6687 5.57397 13.864 5.37871C14.0593 5.18345 14.0593 4.86687 13.864 4.6716L12.8033 3.61094L11.3891 2.19673L10.3285 1.13607ZM6.13992 6.84702L10.9887 3.21047L11.7896 4.01142L8.15305 8.86015L6.13992 6.84702Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1V = [\"color\"];\nvar DrawingPinFilledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1V);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9.62129 1.13607C9.81656 0.940808 10.1331 0.940809 10.3284 1.13607L11.3891 2.19673L12.8033 3.61094L13.8639 4.6716C14.0592 4.86687 14.0592 5.18345 13.8639 5.37871C13.6687 5.57397 13.3521 5.57397 13.1568 5.37871L12.5038 4.7257L8.86727 9.57443L9.97485 10.682C10.1701 10.8773 10.1701 11.1939 9.97485 11.3891C9.77959 11.5844 9.463 11.5844 9.26774 11.3891L7.85353 9.97491L6.79287 8.91425L3.5225 12.1846C3.32724 12.3799 3.01065 12.3799 2.81539 12.1846C2.62013 11.9894 2.62013 11.6728 2.81539 11.4775L6.08576 8.20714L5.0251 7.14648L3.61089 5.73226C3.41563 5.537 3.41562 5.22042 3.61089 5.02516C3.80615 4.8299 4.12273 4.8299 4.31799 5.02516L5.42557 6.13274L10.2743 2.49619L9.62129 1.84318C9.42603 1.64792 9.42603 1.33133 9.62129 1.13607Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9.62129 1.13607C9.81656 0.940808 10.1331 0.940809 10.3284 1.13607L11.3891 2.19673L12.8033 3.61094L13.8639 4.6716C14.0592 4.86687 14.0592 5.18345 13.8639 5.37871C13.6687 5.57397 13.3521 5.57397 13.1568 5.37871L12.5038 4.7257L8.86727 9.57443L9.97485 10.682C10.1701 10.8773 10.1701 11.1939 9.97485 11.3891C9.77959 11.5844 9.463 11.5844 9.26774 11.3891L7.85353 9.97491L6.79287 8.91425L3.5225 12.1846C3.32724 12.3799 3.01065 12.3799 2.81539 12.1846C2.62013 11.9894 2.62013 11.6728 2.81539 11.4775L6.08576 8.20714L5.0251 7.14648L3.61089 5.73226C3.41563 5.537 3.41562 5.22042 3.61089 5.02516C3.80615 4.8299 4.12273 4.8299 4.31799 5.02516L5.42557 6.13274L10.2743 2.49619L9.62129 1.84318C9.42603 1.64792 9.42603 1.33133 9.62129 1.13607Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1W = [\"color\"];\nvar DropdownMenuIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1W);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49999 3.09998C7.27907 3.09998 7.09999 3.27906 7.09999 3.49998C7.09999 3.72089 7.27907 3.89998 7.49999 3.89998H14.5C14.7209 3.89998 14.9 3.72089 14.9 3.49998C14.9 3.27906 14.7209 3.09998 14.5 3.09998H7.49999ZM7.49998 5.1C7.27907 5.1 7.09998 5.27908 7.09998 5.5C7.09998 5.72091 7.27907 5.9 7.49998 5.9H14.5C14.7209 5.9 14.9 5.72091 14.9 5.5C14.9 5.27908 14.7209 5.1 14.5 5.1H7.49998ZM7.1 7.5C7.1 7.27908 7.27909 7.1 7.5 7.1H14.5C14.7209 7.1 14.9 7.27908 14.9 7.5C14.9 7.72091 14.7209 7.9 14.5 7.9H7.5C7.27909 7.9 7.1 7.72091 7.1 7.5ZM7.49998 9.1C7.27907 9.1 7.09998 9.27908 7.09998 9.5C7.09998 9.72091 7.27907 9.9 7.49998 9.9H14.5C14.7209 9.9 14.9 9.72091 14.9 9.5C14.9 9.27908 14.7209 9.1 14.5 9.1H7.49998ZM7.09998 11.5C7.09998 11.2791 7.27907 11.1 7.49998 11.1H14.5C14.7209 11.1 14.9 11.2791 14.9 11.5C14.9 11.7209 14.7209 11.9 14.5 11.9H7.49998C7.27907 11.9 7.09998 11.7209 7.09998 11.5ZM2.5 9.25003L5 6.00003H0L2.5 9.25003Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1X = [\"color\"];\nvar EnterIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1X);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.5 1C4.22386 1 4 1.22386 4 1.5C4 1.77614 4.22386 2 4.5 2H12V13H4.5C4.22386 13 4 13.2239 4 13.5C4 13.7761 4.22386 14 4.5 14H12C12.5523 14 13 13.5523 13 13V2C13 1.44772 12.5523 1 12 1H4.5ZM6.60355 4.89645C6.40829 4.70118 6.09171 4.70118 5.89645 4.89645C5.70118 5.09171 5.70118 5.40829 5.89645 5.60355L7.29289 7H0.5C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H7.29289L5.89645 9.39645C5.70118 9.59171 5.70118 9.90829 5.89645 10.1036C6.09171 10.2988 6.40829 10.2988 6.60355 10.1036L8.85355 7.85355C9.04882 7.65829 9.04882 7.34171 8.85355 7.14645L6.60355 4.89645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1Y = [\"color\"];\nvar EnterFullScreenIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1Y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 2.5C2 2.22386 2.22386 2 2.5 2H5.5C5.77614 2 6 2.22386 6 2.5C6 2.77614 5.77614 3 5.5 3H3V5.5C3 5.77614 2.77614 6 2.5 6C2.22386 6 2 5.77614 2 5.5V2.5ZM9 2.5C9 2.22386 9.22386 2 9.5 2H12.5C12.7761 2 13 2.22386 13 2.5V5.5C13 5.77614 12.7761 6 12.5 6C12.2239 6 12 5.77614 12 5.5V3H9.5C9.22386 3 9 2.77614 9 2.5ZM2.5 9C2.77614 9 3 9.22386 3 9.5V12H5.5C5.77614 12 6 12.2239 6 12.5C6 12.7761 5.77614 13 5.5 13H2.5C2.22386 13 2 12.7761 2 12.5V9.5C2 9.22386 2.22386 9 2.5 9ZM12.5 9C12.7761 9 13 9.22386 13 9.5V12.5C13 12.7761 12.7761 13 12.5 13H9.5C9.22386 13 9 12.7761 9 12.5C9 12.2239 9.22386 12 9.5 12H12V9.5C12 9.22386 12.2239 9 12.5 9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1Z = [\"color\"];\nvar EnvelopeClosedIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1Z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 2C0.447715 2 0 2.44772 0 3V12C0 12.5523 0.447715 13 1 13H14C14.5523 13 15 12.5523 15 12V3C15 2.44772 14.5523 2 14 2H1ZM1 3L14 3V3.92494C13.9174 3.92486 13.8338 3.94751 13.7589 3.99505L7.5 7.96703L1.24112 3.99505C1.16621 3.94751 1.0826 3.92486 1 3.92494V3ZM1 4.90797V12H14V4.90797L7.74112 8.87995C7.59394 8.97335 7.40606 8.97335 7.25888 8.87995L1 4.90797Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1_ = [\"color\"];\nvar EnvelopeOpenIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1_);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.94721 0.164594C7.66569 0.0238299 7.33431 0.0238302 7.05279 0.164594L0.552786 3.41459C0.214002 3.58399 0 3.93025 0 4.30902V12C0 12.5523 0.447715 13 1 13H14C14.5523 13 15 12.5523 15 12V4.30902C15 3.93025 14.786 3.58399 14.4472 3.41459L7.94721 0.164594ZM13.5689 4.09349L7.5 1.05902L1.43105 4.09349L7.5 7.29136L13.5689 4.09349ZM1 4.88366V12H14V4.88366L7.70977 8.19813C7.57848 8.26731 7.42152 8.26731 7.29023 8.19813L1 4.88366Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$1$ = [\"color\"];\nvar EraserIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$1$);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.36052 0.72921C8.55578 0.533948 8.87236 0.533948 9.06763 0.72921L14.2708 5.93235C14.466 6.12761 14.466 6.4442 14.2708 6.63946L8.95513 11.9551L7.3466 13.5636C6.76081 14.1494 5.81106 14.1494 5.22528 13.5636L1.43635 9.7747C0.850563 9.18891 0.850563 8.23917 1.43635 7.65338L3.04488 6.04485L8.36052 0.72921ZM8.71407 1.78987L4.10554 6.3984L8.60157 10.8944L13.2101 6.28591L8.71407 1.78987ZM7.89447 11.6015L3.39843 7.10551L2.14346 8.36049C1.94819 8.55575 1.94819 8.87233 2.14346 9.06759L5.93238 12.8565C6.12765 13.0518 6.44423 13.0518 6.63949 12.8565L7.89447 11.6015Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$20 = [\"color\"];\nvar ExclamationTriangleIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$20);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.4449 0.608765C8.0183 -0.107015 6.9817 -0.107015 6.55509 0.608766L0.161178 11.3368C-0.275824 12.07 0.252503 13 1.10608 13H13.8939C14.7475 13 15.2758 12.07 14.8388 11.3368L8.4449 0.608765ZM7.4141 1.12073C7.45288 1.05566 7.54712 1.05566 7.5859 1.12073L13.9798 11.8488C14.0196 11.9154 13.9715 12 13.8939 12H1.10608C1.02849 12 0.980454 11.9154 1.02018 11.8488L7.4141 1.12073ZM6.8269 4.48611C6.81221 4.10423 7.11783 3.78663 7.5 3.78663C7.88217 3.78663 8.18778 4.10423 8.1731 4.48612L8.01921 8.48701C8.00848 8.766 7.7792 8.98664 7.5 8.98664C7.2208 8.98664 6.99151 8.766 6.98078 8.48701L6.8269 4.48611ZM8.24989 10.476C8.24989 10.8902 7.9141 11.226 7.49989 11.226C7.08567 11.226 6.74989 10.8902 6.74989 10.476C6.74989 10.0618 7.08567 9.72599 7.49989 9.72599C7.9141 9.72599 8.24989 10.0618 8.24989 10.476Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$21 = [\"color\"];\nvar ExitIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$21);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3 1C2.44771 1 2 1.44772 2 2V13C2 13.5523 2.44772 14 3 14H10.5C10.7761 14 11 13.7761 11 13.5C11 13.2239 10.7761 13 10.5 13H3V2L10.5 2C10.7761 2 11 1.77614 11 1.5C11 1.22386 10.7761 1 10.5 1H3ZM12.6036 4.89645C12.4083 4.70118 12.0917 4.70118 11.8964 4.89645C11.7012 5.09171 11.7012 5.40829 11.8964 5.60355L13.2929 7H6.5C6.22386 7 6 7.22386 6 7.5C6 7.77614 6.22386 8 6.5 8H13.2929L11.8964 9.39645C11.7012 9.59171 11.7012 9.90829 11.8964 10.1036C12.0917 10.2988 12.4083 10.2988 12.6036 10.1036L14.8536 7.85355C15.0488 7.65829 15.0488 7.34171 14.8536 7.14645L12.6036 4.89645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$22 = [\"color\"];\nvar ExitFullScreenIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$22);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.5 2C5.77614 2 6 2.22386 6 2.5V5.5C6 5.77614 5.77614 6 5.5 6H2.5C2.22386 6 2 5.77614 2 5.5C2 5.22386 2.22386 5 2.5 5H5V2.5C5 2.22386 5.22386 2 5.5 2ZM9.5 2C9.77614 2 10 2.22386 10 2.5V5H12.5C12.7761 5 13 5.22386 13 5.5C13 5.77614 12.7761 6 12.5 6H9.5C9.22386 6 9 5.77614 9 5.5V2.5C9 2.22386 9.22386 2 9.5 2ZM2 9.5C2 9.22386 2.22386 9 2.5 9H5.5C5.77614 9 6 9.22386 6 9.5V12.5C6 12.7761 5.77614 13 5.5 13C5.22386 13 5 12.7761 5 12.5V10H2.5C2.22386 10 2 9.77614 2 9.5ZM9 9.5C9 9.22386 9.22386 9 9.5 9H12.5C12.7761 9 13 9.22386 13 9.5C13 9.77614 12.7761 10 12.5 10H10V12.5C10 12.7761 9.77614 13 9.5 13C9.22386 13 9 12.7761 9 12.5V9.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$23 = [\"color\"];\nvar ExternalLinkIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$23);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3 2C2.44772 2 2 2.44772 2 3V12C2 12.5523 2.44772 13 3 13H12C12.5523 13 13 12.5523 13 12V8.5C13 8.22386 12.7761 8 12.5 8C12.2239 8 12 8.22386 12 8.5V12H3V3L6.5 3C6.77614 3 7 2.77614 7 2.5C7 2.22386 6.77614 2 6.5 2H3ZM12.8536 2.14645C12.9015 2.19439 12.9377 2.24964 12.9621 2.30861C12.9861 2.36669 12.9996 2.4303 13 2.497L13 2.5V2.50049V5.5C13 5.77614 12.7761 6 12.5 6C12.2239 6 12 5.77614 12 5.5V3.70711L6.85355 8.85355C6.65829 9.04882 6.34171 9.04882 6.14645 8.85355C5.95118 8.65829 5.95118 8.34171 6.14645 8.14645L11.2929 3H9.5C9.22386 3 9 2.77614 9 2.5C9 2.22386 9.22386 2 9.5 2H12.4999H12.5C12.5678 2 12.6324 2.01349 12.6914 2.03794C12.7504 2.06234 12.8056 2.09851 12.8536 2.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$24 = [\"color\"];\nvar EyeClosedIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$24);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14.7649 6.07596C14.9991 6.22231 15.0703 6.53079 14.9239 6.76495C14.4849 7.46743 13.9632 8.10645 13.3702 8.66305L14.5712 9.86406C14.7664 10.0593 14.7664 10.3759 14.5712 10.5712C14.3759 10.7664 14.0593 10.7664 13.8641 10.5712L12.6011 9.30817C11.805 9.90283 10.9089 10.3621 9.93375 10.651L10.383 12.3277C10.4544 12.5944 10.2961 12.8685 10.0294 12.94C9.76267 13.0115 9.4885 12.8532 9.41704 12.5865L8.95917 10.8775C8.48743 10.958 8.00036 10.9999 7.50001 10.9999C6.99965 10.9999 6.51257 10.958 6.04082 10.8775L5.58299 12.5864C5.51153 12.8532 5.23737 13.0115 4.97064 12.94C4.7039 12.8686 4.5456 12.5944 4.61706 12.3277L5.06625 10.651C4.09111 10.3621 3.19503 9.90282 2.3989 9.30815L1.1359 10.5712C0.940638 10.7664 0.624058 10.7664 0.428798 10.5712C0.233537 10.3759 0.233537 10.0593 0.428798 9.86405L1.62982 8.66303C1.03682 8.10643 0.515113 7.46742 0.0760677 6.76495C-0.0702867 6.53079 0.000898544 6.22231 0.235065 6.07596C0.469231 5.9296 0.777703 6.00079 0.924058 6.23496C1.40354 7.00213 1.989 7.68057 2.66233 8.2427C2.67315 8.25096 2.6837 8.25972 2.69397 8.26898C4.00897 9.35527 5.65537 9.99991 7.50001 9.99991C10.3078 9.99991 12.6564 8.5063 14.076 6.23495C14.2223 6.00079 14.5308 5.9296 14.7649 6.07596Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$25 = [\"color\"];\nvar EyeNoneIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$25);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.3536 2.35355C13.5488 2.15829 13.5488 1.84171 13.3536 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L10.6828 3.61012C9.70652 3.21671 8.63759 3 7.5 3C4.30786 3 1.65639 4.70638 0.0760002 7.23501C-0.0253338 7.39715 -0.0253334 7.60288 0.0760014 7.76501C0.902945 9.08812 2.02314 10.1861 3.36061 10.9323L1.64645 12.6464C1.45118 12.8417 1.45118 13.1583 1.64645 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L4.31723 11.3899C5.29348 11.7833 6.36241 12 7.5 12C10.6921 12 13.3436 10.2936 14.924 7.76501C15.0253 7.60288 15.0253 7.39715 14.924 7.23501C14.0971 5.9119 12.9769 4.81391 11.6394 4.06771L13.3536 2.35355ZM9.90428 4.38861C9.15332 4.1361 8.34759 4 7.5 4C4.80285 4 2.52952 5.37816 1.09622 7.50001C1.87284 8.6497 2.89609 9.58106 4.09974 10.1931L9.90428 4.38861ZM5.09572 10.6114L10.9003 4.80685C12.1039 5.41894 13.1272 6.35031 13.9038 7.50001C12.4705 9.62183 10.1971 11 7.5 11C6.65241 11 5.84668 10.8639 5.09572 10.6114Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$26 = [\"color\"];\nvar EyeOpenIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$26);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 11C4.80285 11 2.52952 9.62184 1.09622 7.50001C2.52952 5.37816 4.80285 4 7.5 4C10.1971 4 12.4705 5.37816 13.9038 7.50001C12.4705 9.62183 10.1971 11 7.5 11ZM7.5 3C4.30786 3 1.65639 4.70638 0.0760002 7.23501C-0.0253338 7.39715 -0.0253334 7.60288 0.0760014 7.76501C1.65639 10.2936 4.30786 12 7.5 12C10.6921 12 13.3436 10.2936 14.924 7.76501C15.0253 7.60288 15.0253 7.39715 14.924 7.23501C13.3436 4.70638 10.6921 3 7.5 3ZM7.5 9.5C8.60457 9.5 9.5 8.60457 9.5 7.5C9.5 6.39543 8.60457 5.5 7.5 5.5C6.39543 5.5 5.5 6.39543 5.5 7.5C5.5 8.60457 6.39543 9.5 7.5 9.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$27 = [\"color\"];\nvar FaceIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$27);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82708 7.49972C1.82708 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82708 10.6327 1.82708 7.49972ZM5.03747 9.21395C4.87949 8.98746 4.56782 8.93193 4.34133 9.08991C4.11484 9.24789 4.05931 9.55956 4.21729 9.78605C4.93926 10.8211 6.14033 11.5 7.50004 11.5C8.85974 11.5 10.0608 10.8211 10.7828 9.78605C10.9408 9.55956 10.8852 9.24789 10.6587 9.08991C10.4323 8.93193 10.1206 8.98746 9.9626 9.21395C9.41963 9.99238 8.51907 10.5 7.50004 10.5C6.481 10.5 5.58044 9.99238 5.03747 9.21395ZM5.37503 6.84998C5.85828 6.84998 6.25003 6.45815 6.25003 5.97498C6.25003 5.4918 5.85828 5.09998 5.37503 5.09998C4.89179 5.09998 4.50003 5.4918 4.50003 5.97498C4.50003 6.45815 4.89179 6.84998 5.37503 6.84998ZM10.5 5.97498C10.5 6.45815 10.1083 6.84998 9.62503 6.84998C9.14179 6.84998 8.75003 6.45815 8.75003 5.97498C8.75003 5.4918 9.14179 5.09998 9.62503 5.09998C10.1083 5.09998 10.5 5.4918 10.5 5.97498Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$28 = [\"color\"];\nvar FigmaLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$28);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.00005 2.04999H5.52505C4.71043 2.04999 4.05005 2.71037 4.05005 3.52499C4.05005 4.33961 4.71043 4.99999 5.52505 4.99999H7.00005V2.04999ZM7.00005 1.04999H8.00005H9.47505C10.842 1.04999 11.95 2.15808 11.95 3.52499C11.95 4.33163 11.5642 5.04815 10.9669 5.49999C11.5642 5.95184 11.95 6.66836 11.95 7.475C11.95 8.8419 10.842 9.95 9.47505 9.95C8.92236 9.95 8.41198 9.76884 8.00005 9.46266V9.95L8.00005 11.425C8.00005 12.7919 6.89195 13.9 5.52505 13.9C4.15814 13.9 3.05005 12.7919 3.05005 11.425C3.05005 10.6183 3.43593 9.90184 4.03317 9.44999C3.43593 8.99814 3.05005 8.28163 3.05005 7.475C3.05005 6.66836 3.43594 5.95184 4.03319 5.5C3.43594 5.04815 3.05005 4.33163 3.05005 3.52499C3.05005 2.15808 4.15814 1.04999 5.52505 1.04999H7.00005ZM8.00005 2.04999V4.99999H9.47505C10.2897 4.99999 10.95 4.33961 10.95 3.52499C10.95 2.71037 10.2897 2.04999 9.47505 2.04999H8.00005ZM5.52505 8.94998H7.00005L7.00005 7.4788L7.00005 7.475L7.00005 7.4712V6H5.52505C4.71043 6 4.05005 6.66038 4.05005 7.475C4.05005 8.28767 4.70727 8.94684 5.5192 8.94999L5.52505 8.94998ZM4.05005 11.425C4.05005 10.6123 4.70727 9.95315 5.5192 9.94999L5.52505 9.95H7.00005L7.00005 11.425C7.00005 12.2396 6.33967 12.9 5.52505 12.9C4.71043 12.9 4.05005 12.2396 4.05005 11.425ZM8.00005 7.47206C8.00164 6.65879 8.66141 6 9.47505 6C10.2897 6 10.95 6.66038 10.95 7.475C10.95 8.28962 10.2897 8.95 9.47505 8.95C8.66141 8.95 8.00164 8.29121 8.00005 7.47794V7.47206Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$29 = [\"color\"];\nvar FileIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$29);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V6H8.5C8.22386 6 8 5.77614 8 5.5V2H3.5ZM9 2.70711L11.2929 5H9V2.70711ZM2 2.5C2 1.67157 2.67157 1 3.5 1H8.5C8.63261 1 8.75979 1.05268 8.85355 1.14645L12.8536 5.14645C12.9473 5.24021 13 5.36739 13 5.5V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2a = [\"color\"];\nvar FileMinusIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2a);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3 2.5C3 2.22386 3.22386 2 3.5 2H9.29289L12 4.70711V12.5C12 12.7761 11.7761 13 11.5 13H3.5C3.22386 13 3 12.7761 3 12.5V2.5ZM3.5 1C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V4.60355C13 4.40464 12.921 4.21388 12.7803 4.07322L9.85355 1.14645C9.75979 1.05268 9.63261 1 9.5 1H3.5ZM5.25 7C4.97386 7 4.75 7.22386 4.75 7.5C4.75 7.77614 4.97386 8 5.25 8H9.75C10.0261 8 10.25 7.77614 10.25 7.5C10.25 7.22386 10.0261 7 9.75 7H5.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2b = [\"color\"];\nvar FilePlusIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2b);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V4.70711L9.29289 2H3.5ZM2 2.5C2 1.67157 2.67157 1 3.5 1H9.5C9.63261 1 9.75979 1.05268 9.85355 1.14645L12.7803 4.07322C12.921 4.21388 13 4.40464 13 4.60355V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5ZM4.75 7.5C4.75 7.22386 4.97386 7 5.25 7H7V5.25C7 4.97386 7.22386 4.75 7.5 4.75C7.77614 4.75 8 4.97386 8 5.25V7H9.75C10.0261 7 10.25 7.22386 10.25 7.5C10.25 7.77614 10.0261 8 9.75 8H8V9.75C8 10.0261 7.77614 10.25 7.5 10.25C7.22386 10.25 7 10.0261 7 9.75V8H5.25C4.97386 8 4.75 7.77614 4.75 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2c = [\"color\"];\nvar FileTextIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2c);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3 2.5C3 2.22386 3.22386 2 3.5 2H9.08579C9.21839 2 9.34557 2.05268 9.43934 2.14645L11.8536 4.56066C11.9473 4.65443 12 4.78161 12 4.91421V12.5C12 12.7761 11.7761 13 11.5 13H3.5C3.22386 13 3 12.7761 3 12.5V2.5ZM3.5 1C2.67157 1 2 1.67157 2 2.5V12.5C2 13.3284 2.67157 14 3.5 14H11.5C12.3284 14 13 13.3284 13 12.5V4.91421C13 4.51639 12.842 4.13486 12.5607 3.85355L10.1464 1.43934C9.86514 1.15804 9.48361 1 9.08579 1H3.5ZM4.5 4C4.22386 4 4 4.22386 4 4.5C4 4.77614 4.22386 5 4.5 5H7.5C7.77614 5 8 4.77614 8 4.5C8 4.22386 7.77614 4 7.5 4H4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H10.5C10.7761 8 11 7.77614 11 7.5C11 7.22386 10.7761 7 10.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H10.5C10.7761 11 11 10.7761 11 10.5C11 10.2239 10.7761 10 10.5 10H4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2d = [\"color\"];\nvar FontBoldIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2d);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.10505 12C4.70805 12 4.4236 11.912 4.25171 11.736C4.0839 11.5559 4 11.2715 4 10.8827V4.11733C4 3.72033 4.08595 3.43588 4.25784 3.26398C4.43383 3.08799 4.71623 3 5.10505 3C6.42741 3 8.25591 3 9.02852 3C10.1373 3 11.0539 3.98153 11.0539 5.1846C11.0539 6.08501 10.6037 6.81855 9.70327 7.23602C10.8657 7.44851 11.5176 8.62787 11.5176 9.48128C11.5176 10.5125 10.9902 12 9.27734 12C8.77742 12 6.42626 12 5.10505 12ZM8.37891 8.00341H5.8V10.631H8.37891C8.9 10.631 9.6296 10.1211 9.6296 9.29877C9.6296 8.47643 8.9 8.00341 8.37891 8.00341ZM5.8 4.36903V6.69577H8.17969C8.53906 6.69577 9.27734 6.35939 9.27734 5.50002C9.27734 4.64064 8.48047 4.36903 8.17969 4.36903H5.8Z\",\n    fill: color\n  }));\n});\nvar _excluded$2e = [\"color\"];\nvar FontFamilyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2e);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.5 4.5C2.5 3.09886 3.59886 2 5 2H12.499C12.7752 2 13 2.22386 13 2.5C13 2.77614 12.7761 3 12.5 3H8.69244L8.40509 3.85458C8.18869 4.49752 7.89401 5.37197 7.58091 6.29794C7.50259 6.52956 7.42308 6.76453 7.34332 7H8.5C8.77614 7 9 7.22386 9 7.5C9 7.77614 8.77614 8 8.5 8H7.00407C6.56724 9.28543 6.16435 10.4613 5.95799 11.0386C5.63627 11.9386 5.20712 12.4857 4.66741 12.7778C4.16335 13.0507 3.64154 13.0503 3.28378 13.05L3.25 13.05C2.94624 13.05 2.7 12.8037 2.7 12.5C2.7 12.1962 2.94624 11.95 3.25 11.95C3.64182 11.95 3.9035 11.9405 4.14374 11.8105C4.36443 11.691 4.65532 11.4148 4.92217 10.6683C5.10695 10.1514 5.45375 9.14134 5.8422 8H4.5C4.22386 8 4 7.77614 4 7.5C4 7.22386 4.22386 7 4.5 7H6.18187C6.30127 6.64785 6.42132 6.29323 6.53887 5.94559C6.85175 5.02025 7.14627 4.14631 7.36256 3.50368L7.53192 3H5C4.15114 3 3.5 3.65114 3.5 4.5C3.5 4.77614 3.27614 5 3 5C2.72386 5 2.5 4.77614 2.5 4.5Z\",\n    fill: color\n  }));\n});\nvar _excluded$2f = [\"color\"];\nvar FontItalicIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2f);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.67494 3.50017C5.67494 3.25164 5.87641 3.05017 6.12494 3.05017H10.6249C10.8735 3.05017 11.0749 3.25164 11.0749 3.50017C11.0749 3.7487 10.8735 3.95017 10.6249 3.95017H9.00587L7.2309 11.05H8.87493C9.12345 11.05 9.32493 11.2515 9.32493 11.5C9.32493 11.7486 9.12345 11.95 8.87493 11.95H4.37493C4.1264 11.95 3.92493 11.7486 3.92493 11.5C3.92493 11.2515 4.1264 11.05 4.37493 11.05H5.99397L7.76894 3.95017H6.12494C5.87641 3.95017 5.67494 3.7487 5.67494 3.50017Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2g = [\"color\"];\nvar FontRomanIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2g);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.79993 3.50017C4.79993 3.25164 5.0014 3.05017 5.24993 3.05017H9.74993C9.99845 3.05017 10.1999 3.25164 10.1999 3.50017C10.1999 3.7487 9.99845 3.95017 9.74993 3.95017H8.09993V11.05H9.74994C9.99847 11.05 10.1999 11.2515 10.1999 11.5C10.1999 11.7486 9.99847 11.95 9.74994 11.95H5.24994C5.00141 11.95 4.79994 11.7486 4.79994 11.5C4.79994 11.2515 5.00141 11.05 5.24994 11.05H6.89993V3.95017H5.24993C5.0014 3.95017 4.79993 3.7487 4.79993 3.50017Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2h = [\"color\"];\nvar FontSizeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2h);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.78233 2.21707C2.70732 2.14206 2.60557 2.09991 2.49949 2.09991C2.3934 2.09991 2.29166 2.14206 2.21664 2.21707L0.216645 4.21707C0.0604351 4.37328 0.0604351 4.62655 0.216645 4.78276C0.372855 4.93897 0.626121 4.93897 0.78233 4.78276L2.09949 3.4656L2.09949 11.5342L0.78233 10.2171C0.62612 10.0609 0.372854 10.0609 0.216645 10.2171C0.0604349 10.3733 0.0604349 10.6265 0.216645 10.7828L2.21664 12.7828C2.29166 12.8578 2.3934 12.8999 2.49949 12.8999C2.60557 12.8999 2.70731 12.8578 2.78233 12.7828L4.78233 10.7828C4.93854 10.6265 4.93854 10.3733 4.78233 10.2171C4.62612 10.0609 4.37285 10.0609 4.21664 10.2171L2.89949 11.5342L2.89949 3.4656L4.21664 4.78276C4.37285 4.93897 4.62612 4.93897 4.78233 4.78276C4.93854 4.62655 4.93854 4.37328 4.78233 4.21707L2.78233 2.21707ZM10.5 2.74997C10.7107 2.74997 10.8988 2.88211 10.9703 3.08036L13.9703 11.3999C14.064 11.6597 13.9293 11.9462 13.6696 12.0399C13.4098 12.1336 13.1233 11.9989 13.0296 11.7392L12.0477 9.016H8.95228L7.97033 11.7392C7.87666 11.9989 7.59013 12.1336 7.33036 12.0399C7.07059 11.9462 6.93595 11.6597 7.02962 11.3999L10.0296 3.08036C10.1011 2.88211 10.2892 2.74997 10.5 2.74997ZM10.5 4.72396L11.7412 8.166H9.25879L10.5 4.72396Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2i = [\"color\"];\nvar FontStyleIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2i);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.03791 9.98075C0.934777 9.6583 1.11603 9.37719 1.40005 9.24871C1.68408 9.12022 2.09463 9.13412 2.27071 9.45426C2.85393 10.5147 3.64599 10.7282 4.48665 10.7282C5.52721 10.7282 6.29659 10.2615 6.29659 9.45426C6.29659 8.8047 5.9119 8.46416 4.87134 8.14253L4.15872 7.92181C2.64518 7.44883 1.88842 6.69206 1.88842 5.45601C1.88842 3.79743 3.27583 2.6875 5.24342 2.6875C6.91733 2.6875 7.97409 3.33536 8.43833 4.31065C8.57087 4.58909 8.57614 4.91294 8.22794 5.19114C7.87974 5.46934 7.52351 5.34799 7.23327 5.03839C6.47215 4.22653 5.99545 4.04968 5.25604 4.04968C4.1398 4.04968 3.547 4.63618 3.547 5.27943C3.547 5.86592 3.96322 6.23169 4.94702 6.5344L5.67856 6.76143C7.22994 7.23441 7.97409 7.95964 7.97409 9.17047C7.97409 10.7723 6.69389 12.0903 4.46143 12.0903C2.86612 12.0903 1.40005 11.1131 1.03791 9.98075ZM11.8491 8.77985C10.661 8.39543 10.1649 7.86114 10.1649 6.98805C10.1649 5.86736 11.1636 5.04639 12.6128 5.04639C13.8546 5.04639 14.6629 5.63345 14.9778 6.6346C15.0443 6.84599 14.9593 6.98006 14.7475 7.0491C14.5394 7.11697 14.3176 7.09974 14.238 6.89611C13.9356 6.12273 13.352 5.76311 12.5998 5.76311C11.6467 5.76311 11.0135 6.25178 11.0135 6.91638C11.0135 7.45066 11.3464 7.75038 12.2473 8.04358L12.8348 8.23254C14.062 8.62999 14.5516 9.13821 14.5516 10.0178C14.5516 11.1972 13.481 12.0442 11.9927 12.0442C10.6439 12.0442 9.65644 11.2809 9.41979 10.3361C9.36535 10.1188 9.41192 10.0287 9.70039 9.96184C9.98886 9.89499 10.0714 9.89918 10.1715 10.1369C10.4555 10.8114 11.1531 11.3275 12.0318 11.3275C12.9914 11.3275 13.6834 10.7802 13.6834 10.0634C13.6834 9.53567 13.3961 9.28807 12.4366 8.97532L11.8491 8.77985Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2j = [\"color\"];\nvar FrameIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2j);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11 1.5C11 1.22386 10.7761 1 10.5 1C10.2239 1 10 1.22386 10 1.5V4H5V1.5C5 1.22386 4.77614 1 4.5 1C4.22386 1 4 1.22386 4 1.5V4H1.5C1.22386 4 1 4.22386 1 4.5C1 4.77614 1.22386 5 1.5 5H4V10H1.5C1.22386 10 1 10.2239 1 10.5C1 10.7761 1.22386 11 1.5 11H4V13.5C4 13.7761 4.22386 14 4.5 14C4.77614 14 5 13.7761 5 13.5V11H10V13.5C10 13.7761 10.2239 14 10.5 14C10.7761 14 11 13.7761 11 13.5V11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H11V5H13.5C13.7761 5 14 4.77614 14 4.5C14 4.22386 13.7761 4 13.5 4H11V1.5ZM10 10V5H5V10H10Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2k = [\"color\"];\nvar FramerLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2k);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.3825 1.29567C3.46241 1.11432 3.64188 0.997284 3.84005 0.997284H11.5C11.7761 0.997284 12 1.22114 12 1.49728V5.5C12 5.77614 11.7761 6 11.5 6H8.63521L11.5288 9.16247C11.6626 9.3087 11.6974 9.52015 11.6175 9.70154C11.5376 9.88293 11.3582 10 11.16 10H8V13.5C8 13.7022 7.87818 13.8845 7.69134 13.9619C7.5045 14.0393 7.28945 13.9966 7.14645 13.8536L3.14645 9.85355C3.05268 9.75979 3 9.63261 3 9.5V5.5C3 5.22386 3.22386 5 3.5 5H6.36531L3.47105 1.83468C3.33732 1.68844 3.30259 1.47701 3.3825 1.29567ZM7.72032 5L4.97474 1.99728H11V5H7.72032ZM7.27978 6H4V9H7.5H10.0247L7.27978 6ZM4.70711 10L7 12.2929V10H4.70711Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2l = [\"color\"];\nvar GearIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2l);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.07095 0.650238C6.67391 0.650238 6.32977 0.925096 6.24198 1.31231L6.0039 2.36247C5.6249 2.47269 5.26335 2.62363 4.92436 2.81013L4.01335 2.23585C3.67748 2.02413 3.23978 2.07312 2.95903 2.35386L2.35294 2.95996C2.0722 3.2407 2.0232 3.6784 2.23493 4.01427L2.80942 4.92561C2.62307 5.2645 2.47227 5.62594 2.36216 6.00481L1.31209 6.24287C0.924883 6.33065 0.650024 6.6748 0.650024 7.07183V7.92897C0.650024 8.32601 0.924883 8.67015 1.31209 8.75794L2.36228 8.99603C2.47246 9.375 2.62335 9.73652 2.80979 10.0755L2.2354 10.9867C2.02367 11.3225 2.07267 11.7602 2.35341 12.041L2.95951 12.6471C3.24025 12.9278 3.67795 12.9768 4.01382 12.7651L4.92506 12.1907C5.26384 12.377 5.62516 12.5278 6.0039 12.6379L6.24198 13.6881C6.32977 14.0753 6.67391 14.3502 7.07095 14.3502H7.92809C8.32512 14.3502 8.66927 14.0753 8.75705 13.6881L8.99505 12.6383C9.37411 12.5282 9.73573 12.3773 10.0748 12.1909L10.986 12.7653C11.3218 12.977 11.7595 12.928 12.0403 12.6473L12.6464 12.0412C12.9271 11.7604 12.9761 11.3227 12.7644 10.9869L12.1902 10.076C12.3768 9.73688 12.5278 9.37515 12.638 8.99596L13.6879 8.75794C14.0751 8.67015 14.35 8.32601 14.35 7.92897V7.07183C14.35 6.6748 14.0751 6.33065 13.6879 6.24287L12.6381 6.00488C12.528 5.62578 12.3771 5.26414 12.1906 4.92507L12.7648 4.01407C12.9766 3.6782 12.9276 3.2405 12.6468 2.95975L12.0407 2.35366C11.76 2.07292 11.3223 2.02392 10.9864 2.23565L10.0755 2.80989C9.73622 2.62328 9.37437 2.47229 8.99505 2.36209L8.75705 1.31231C8.66927 0.925096 8.32512 0.650238 7.92809 0.650238H7.07095ZM4.92053 3.81251C5.44724 3.44339 6.05665 3.18424 6.71543 3.06839L7.07095 1.50024H7.92809L8.28355 3.06816C8.94267 3.18387 9.5524 3.44302 10.0794 3.81224L11.4397 2.9547L12.0458 3.56079L11.1882 4.92117C11.5573 5.44798 11.8164 6.0575 11.9321 6.71638L13.5 7.07183V7.92897L11.932 8.28444C11.8162 8.94342 11.557 9.55301 11.1878 10.0798L12.0453 11.4402L11.4392 12.0462L10.0787 11.1886C9.55192 11.5576 8.94241 11.8166 8.28355 11.9323L7.92809 13.5002H7.07095L6.71543 11.932C6.0569 11.8162 5.44772 11.5572 4.92116 11.1883L3.56055 12.046L2.95445 11.4399L3.81213 10.0794C3.4431 9.55266 3.18403 8.94326 3.06825 8.2845L1.50002 7.92897V7.07183L3.06818 6.71632C3.18388 6.05765 3.44283 5.44833 3.81171 4.92165L2.95398 3.561L3.56008 2.95491L4.92053 3.81251ZM9.02496 7.50008C9.02496 8.34226 8.34223 9.02499 7.50005 9.02499C6.65786 9.02499 5.97513 8.34226 5.97513 7.50008C5.97513 6.65789 6.65786 5.97516 7.50005 5.97516C8.34223 5.97516 9.02496 6.65789 9.02496 7.50008ZM9.92496 7.50008C9.92496 8.83932 8.83929 9.92499 7.50005 9.92499C6.1608 9.92499 5.07513 8.83932 5.07513 7.50008C5.07513 6.16084 6.1608 5.07516 7.50005 5.07516C8.83929 5.07516 9.92496 6.16084 9.92496 7.50008Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2m = [\"color\"];\nvar GitHubLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2m);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49933 0.25C3.49635 0.25 0.25 3.49593 0.25 7.50024C0.25 10.703 2.32715 13.4206 5.2081 14.3797C5.57084 14.446 5.70302 14.2222 5.70302 14.0299C5.70302 13.8576 5.69679 13.4019 5.69323 12.797C3.67661 13.235 3.25112 11.825 3.25112 11.825C2.92132 10.9874 2.44599 10.7644 2.44599 10.7644C1.78773 10.3149 2.49584 10.3238 2.49584 10.3238C3.22353 10.375 3.60629 11.0711 3.60629 11.0711C4.25298 12.1788 5.30335 11.8588 5.71638 11.6732C5.78225 11.205 5.96962 10.8854 6.17658 10.7043C4.56675 10.5209 2.87415 9.89918 2.87415 7.12104C2.87415 6.32925 3.15677 5.68257 3.62053 5.17563C3.54576 4.99226 3.29697 4.25521 3.69174 3.25691C3.69174 3.25691 4.30015 3.06196 5.68522 3.99973C6.26337 3.83906 6.8838 3.75895 7.50022 3.75583C8.1162 3.75895 8.73619 3.83906 9.31523 3.99973C10.6994 3.06196 11.3069 3.25691 11.3069 3.25691C11.7026 4.25521 11.4538 4.99226 11.3795 5.17563C11.8441 5.68257 12.1245 6.32925 12.1245 7.12104C12.1245 9.9063 10.4292 10.5192 8.81452 10.6985C9.07444 10.9224 9.30633 11.3648 9.30633 12.0413C9.30633 13.0102 9.29742 13.7922 9.29742 14.0299C9.29742 14.2239 9.42828 14.4496 9.79591 14.3788C12.6746 13.4179 14.75 10.7025 14.75 7.50024C14.75 3.49593 11.5036 0.25 7.49933 0.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2n = [\"color\"];\nvar GlobeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2n);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49996 1.80002C4.35194 1.80002 1.79996 4.352 1.79996 7.50002C1.79996 10.648 4.35194 13.2 7.49996 13.2C10.648 13.2 13.2 10.648 13.2 7.50002C13.2 4.352 10.648 1.80002 7.49996 1.80002ZM0.899963 7.50002C0.899963 3.85494 3.85488 0.900024 7.49996 0.900024C11.145 0.900024 14.1 3.85494 14.1 7.50002C14.1 11.1451 11.145 14.1 7.49996 14.1C3.85488 14.1 0.899963 11.1451 0.899963 7.50002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.4999 7.89998H1.49994V7.09998H13.4999V7.89998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.09991 13.5V1.5H7.89991V13.5H7.09991zM10.375 7.49998C10.375 5.32724 9.59364 3.17778 8.06183 1.75656L8.53793 1.24341C10.2396 2.82218 11.075 5.17273 11.075 7.49998 11.075 9.82724 10.2396 12.1778 8.53793 13.7566L8.06183 13.2434C9.59364 11.8222 10.375 9.67273 10.375 7.49998zM3.99969 7.5C3.99969 5.17611 4.80786 2.82678 6.45768 1.24719L6.94177 1.75281C5.4582 3.17323 4.69969 5.32389 4.69969 7.5 4.6997 9.67611 5.45822 11.8268 6.94179 13.2472L6.45769 13.7528C4.80788 12.1732 3.9997 9.8239 3.99969 7.5z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49996 3.95801C9.66928 3.95801 11.8753 4.35915 13.3706 5.19448 13.5394 5.28875 13.5998 5.50197 13.5055 5.67073 13.4113 5.83948 13.198 5.89987 13.0293 5.8056 11.6794 5.05155 9.60799 4.65801 7.49996 4.65801 5.39192 4.65801 3.32052 5.05155 1.97064 5.8056 1.80188 5.89987 1.58866 5.83948 1.49439 5.67073 1.40013 5.50197 1.46051 5.28875 1.62927 5.19448 3.12466 4.35915 5.33063 3.95801 7.49996 3.95801zM7.49996 10.85C9.66928 10.85 11.8753 10.4488 13.3706 9.6135 13.5394 9.51924 13.5998 9.30601 13.5055 9.13726 13.4113 8.9685 13.198 8.90812 13.0293 9.00238 11.6794 9.75643 9.60799 10.15 7.49996 10.15 5.39192 10.15 3.32052 9.75643 1.97064 9.00239 1.80188 8.90812 1.58866 8.9685 1.49439 9.13726 1.40013 9.30601 1.46051 9.51924 1.62927 9.6135 3.12466 10.4488 5.33063 10.85 7.49996 10.85z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2o = [\"color\"];\nvar GridIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2o);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.5 2H8V7H13V2.5C13 2.22386 12.7761 2 12.5 2ZM13 8H8V13H12.5C12.7761 13 13 12.7761 13 12.5V8ZM7 7V2H2.5C2.22386 2 2 2.22386 2 2.5V7H7ZM2 8V12.5C2 12.7761 2.22386 13 2.5 13H7V8H2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2p = [\"color\"];\nvar GroupIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2p);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.44995 0.949951C1.31734 0.949951 1.19016 1.00263 1.0964 1.0964C1.00263 1.19017 0.949951 1.31735 0.949951 1.44995L0.949966 3.44995C0.949969 3.7261 1.17383 3.94995 1.44997 3.94995C1.72611 3.94995 1.94997 3.72609 1.94997 3.44995L1.94995 1.94995H3.44997C3.72611 1.94995 3.94997 1.72609 3.94997 1.44995C3.94997 1.17381 3.72611 0.949951 3.44997 0.949951H1.44995ZM5.94995 0.949951C5.67381 0.949951 5.44995 1.17381 5.44995 1.44995C5.44995 1.72609 5.67381 1.94995 5.94995 1.94995H8.94995C9.22609 1.94995 9.44995 1.72609 9.44995 1.44995C9.44995 1.17381 9.22609 0.949951 8.94995 0.949951H5.94995ZM5.44995 13.45C5.44995 13.1738 5.67381 12.95 5.94995 12.95H8.94995C9.22609 12.95 9.44995 13.1738 9.44995 13.45C9.44995 13.7261 9.22609 13.95 8.94995 13.95H5.94995C5.67381 13.95 5.44995 13.7261 5.44995 13.45ZM1.94995 5.94995C1.94995 5.67381 1.72609 5.44995 1.44995 5.44995C1.17381 5.44995 0.949951 5.67381 0.949951 5.94995V8.94995C0.949951 9.22609 1.17381 9.44995 1.44995 9.44995C1.72609 9.44995 1.94995 9.22609 1.94995 8.94995V5.94995ZM13.45 5.44995C13.7261 5.44995 13.95 5.67381 13.95 5.94995V8.94995C13.95 9.22609 13.7261 9.44995 13.45 9.44995C13.1738 9.44995 12.95 9.22609 12.95 8.94995V5.94995C12.95 5.67381 13.1738 5.44995 13.45 5.44995ZM11.45 0.949951C11.1738 0.949951 10.95 1.17381 10.95 1.44995C10.95 1.72609 11.1738 1.94995 11.45 1.94995H12.9499V3.44995C12.9499 3.72609 13.1738 3.94995 13.4499 3.94995C13.7261 3.94995 13.9499 3.72609 13.9499 3.44995V1.44995C13.9499 1.17381 13.7252 0.949951 13.449 0.949951H11.45ZM1.44995 10.95C1.72609 10.95 1.94995 11.1738 1.94995 11.45V12.95H3.44997C3.72611 12.95 3.94997 13.1738 3.94997 13.45C3.94997 13.7261 3.72611 13.95 3.44997 13.95H1.44995C1.17381 13.95 0.949951 13.7261 0.949951 13.45V11.45C0.949951 11.1738 1.17381 10.95 1.44995 10.95ZM13.95 11.45C13.95 11.1738 13.7261 10.95 13.45 10.95C13.1738 10.9499 12.95 11.1738 12.95 11.4499L12.9491 12.95H11.45C11.1738 12.95 10.95 13.1738 10.95 13.45C10.95 13.7261 11.1738 13.95 11.45 13.95H13.4499C13.7261 13.95 13.9499 13.7261 13.9499 13.45L13.95 11.45Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2q = [\"color\"];\nvar Half1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM7.00003 1.84861C4.10114 2.1017 1.82707 4.53515 1.82707 7.49972C1.82707 10.4643 4.10114 12.8977 7.00003 13.1508V1.84861ZM8.00003 13.1508C10.8988 12.8976 13.1727 10.4642 13.1727 7.49972C13.1727 4.53524 10.8988 2.10185 8.00003 1.84864V13.1508Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2r = [\"color\"];\nvar Half2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2r);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM7.49988 1.82689C4.36688 1.8269 1.82707 4.36672 1.82707 7.49972C1.82707 10.6327 4.36688 13.1725 7.49988 13.1726V1.82689Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2s = [\"color\"];\nvar HamburgerMenuIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2s);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.5 3C1.22386 3 1 3.22386 1 3.5C1 3.77614 1.22386 4 1.5 4H13.5C13.7761 4 14 3.77614 14 3.5C14 3.22386 13.7761 3 13.5 3H1.5ZM1 7.5C1 7.22386 1.22386 7 1.5 7H13.5C13.7761 7 14 7.22386 14 7.5C14 7.77614 13.7761 8 13.5 8H1.5C1.22386 8 1 7.77614 1 7.5ZM1 11.5C1 11.2239 1.22386 11 1.5 11H13.5C13.7761 11 14 11.2239 14 11.5C14 11.7761 13.7761 12 13.5 12H1.5C1.22386 12 1 11.7761 1 11.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2t = [\"color\"];\nvar HandIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2t);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.8113 1.64706C6.62188 2.87918 6.68268 3.88523 6.76848 5.30499C6.78415 5.56426 6.80065 5.83732 6.81661 6.12808C6.83111 6.39208 6.63758 6.62172 6.37495 6.65217C6.11232 6.68262 5.87138 6.50334 5.82509 6.24304L5.74754 5.80698C5.64402 5.16529 5.48355 4.25481 5.17807 3.44741C4.86241 2.61312 4.4486 2.04121 3.93436 1.86044C3.64994 1.76104 3.41901 1.84279 3.25868 2.01052C3.08746 2.18962 2.9976 2.47065 3.0627 2.75399C3.2146 3.34424 3.44627 3.9167 3.69836 4.51802C3.72082 4.57158 3.74346 4.62543 3.76621 4.67954C3.9954 5.22457 4.23619 5.7972 4.41644 6.39081L4.41691 6.39238C4.562 6.87586 4.65646 7.2595 4.73086 7.56165C4.76034 7.68138 4.78667 7.78831 4.81175 7.88359C4.86768 8.09606 4.77836 8.32014 4.59161 8.43588C4.40486 8.55161 4.16445 8.53188 3.99907 8.38725C3.73749 8.15848 3.515 7.92784 3.31817 7.71802C3.27627 7.67335 3.23602 7.63018 3.19705 7.58838C3.04777 7.42826 2.91712 7.28812 2.78334 7.16029C2.45989 6.85122 2.18398 6.68004 1.80585 6.64369L1.80324 6.64343C1.56117 6.61888 1.41402 6.66441 1.31756 6.72627C1.21899 6.78947 1.11988 6.90414 1.03784 7.1123C0.976576 7.28492 1.01515 7.62987 1.1929 7.96911L1.19728 7.97747C1.40086 8.38452 1.74475 8.81587 2.18141 9.29299C2.39739 9.52898 2.62872 9.76849 2.86934 10.0174L2.87966 10.0281C3.11546 10.2721 3.35962 10.5247 3.59713 10.7827C4.4288 11.6863 5.27706 12.7538 5.4627 14H11.5087C11.5636 12.4353 11.8756 11.268 12.2875 10.1346C12.4454 9.70041 12.6121 9.28412 12.7826 8.85829C13.1097 8.04139 13.4509 7.18937 13.7705 6.10824C14.0989 4.99737 14.0097 4.37033 13.8613 4.03984C13.717 3.71858 13.4914 3.61786 13.3816 3.59606C13.1381 3.54774 13.0384 3.60947 12.9698 3.67901C12.867 3.78316 12.7698 3.98273 12.6921 4.30269C12.6166 4.61345 12.5752 4.96517 12.533 5.32501L12.5298 5.35285C12.4924 5.67242 12.4505 6.03016 12.3665 6.30098C12.3383 6.40699 12.2819 6.50407 12.1979 6.57539C12.1382 6.6261 12.0104 6.70818 11.8309 6.69312C11.5424 6.66891 11.3712 6.42143 11.365 6.14783C11.356 5.75454 11.3883 5.35864 11.4074 4.96608C11.4428 4.23646 11.477 3.5337 11.4245 2.8342L11.4242 2.82934C11.3916 2.32997 11.0493 2.00228 10.7007 1.9228C10.5305 1.88401 10.369 1.90601 10.2347 1.9835C10.103 2.05946 9.95535 2.21318 9.8574 2.51394L9.85631 2.51726C9.81525 2.6404 9.77298 2.87753 9.73606 3.2124C9.70044 3.53542 9.67337 3.91279 9.65156 4.29418C9.6329 4.62033 9.61785 4.9584 9.60434 5.26194C9.58728 5.64529 9.57267 5.97357 9.55633 6.1532C9.54983 6.22459 9.52939 6.29493 9.49501 6.35785C9.47356 6.39711 9.36115 6.60947 9.07106 6.61843C8.77917 6.62744 8.63975 6.40057 8.61698 6.35919C8.55634 6.24899 8.55066 6.11807 8.54754 5.99283C8.54474 5.88064 8.54294 5.71798 8.54174 5.54767C8.53935 5.20582 8.53935 4.81919 8.53935 4.70952C8.53935 3.6657 8.53838 2.65372 8.44714 1.64372C8.39183 1.24127 8.06278 1.00455 7.6436 1.00005C7.22399 0.995552 6.87918 1.22704 6.8113 1.64706ZM9.41219 1.3617C9.21469 0.448484 8.39913 0.00810324 7.65433 0.00011154C6.86452 -0.00836308 5.98761 0.465881 5.82365 1.49037L5.82318 1.49334C5.78239 1.7584 5.75229 2.01481 5.7309 2.26652C5.39423 1.67364 4.92622 1.14894 4.2655 0.916859C3.58661 0.679312 2.9492 0.887087 2.53582 1.31952C2.13415 1.73971 1.94438 2.36742 2.09031 2.98746L2.09269 2.99713C2.26478 3.66808 2.52396 4.30316 2.77613 4.90465C2.79814 4.95717 2.8201 5.00941 2.84194 5.06139C3.02139 5.48842 3.19378 5.89866 3.33871 6.31256C2.96404 5.98142 2.51925 5.70796 1.90276 5.6484C1.48865 5.60663 1.10391 5.67536 0.777805 5.88444C0.454239 6.0919 0.240671 6.40405 0.104187 6.75406L0.100868 6.76281C-0.10184 7.31286 0.0663312 7.97157 0.304895 8.42897C0.573704 8.96474 0.996104 9.47904 1.44372 9.96813C1.67046 10.2159 1.91136 10.4652 2.15033 10.7124L2.15682 10.7191C2.39524 10.9658 2.63217 11.2109 2.86134 11.4599C3.80937 12.49 4.50002 13.4632 4.50002 14.5C4.50002 14.7761 4.72388 15 5.00002 15H12C12.2762 15 12.5 14.7761 12.5 14.5C12.5 12.8212 12.8021 11.6462 13.2274 10.4762C13.3653 10.0968 13.5216 9.70579 13.6868 9.29247C14.0238 8.44922 14.398 7.51298 14.7295 6.39175C15.0956 5.15324 15.0559 4.25904 14.7735 3.63017C14.487 2.99208 13.9798 2.6953 13.5763 2.6152C13.1276 2.52614 12.7367 2.60475 12.4268 2.83081C12.4253 2.80773 12.4236 2.78468 12.4219 2.76167C12.3587 1.8105 11.6907 1.12285 10.923 0.947821C10.5346 0.859287 10.1111 0.900393 9.73509 1.11724C9.61852 1.18446 9.51055 1.26623 9.41219 1.3617Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2u = [\"color\"];\nvar HeadingIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2u);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.75432 2.0502C8.50579 2.0502 8.30432 2.25167 8.30432 2.5002C8.30432 2.74873 8.50579 2.9502 8.75432 2.9502H9.94997V7.05004H5.04997V2.9502H6.25432C6.50285 2.9502 6.70432 2.74873 6.70432 2.5002C6.70432 2.25167 6.50285 2.0502 6.25432 2.0502H2.75432C2.50579 2.0502 2.30432 2.25167 2.30432 2.5002C2.30432 2.74873 2.50579 2.9502 2.75432 2.9502H3.94997V12.0502H2.75432C2.50579 12.0502 2.30432 12.2517 2.30432 12.5002C2.30432 12.7487 2.50579 12.9502 2.75432 12.9502H6.25432C6.50285 12.9502 6.70432 12.7487 6.70432 12.5002C6.70432 12.2517 6.50285 12.0502 6.25432 12.0502H5.04997V7.95004H9.94997V12.0502H8.75432C8.50579 12.0502 8.30432 12.2517 8.30432 12.5002C8.30432 12.7487 8.50579 12.9502 8.75432 12.9502H12.2543C12.5028 12.9502 12.7043 12.7487 12.7043 12.5002C12.7043 12.2517 12.5028 12.0502 12.2543 12.0502H11.05V2.9502H12.2543C12.5028 2.9502 12.7043 2.74873 12.7043 2.5002C12.7043 2.25167 12.5028 2.0502 12.2543 2.0502H8.75432Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2v = [\"color\"];\nvar HeartIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2v);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.89346 2.35248C3.49195 2.35248 2.35248 3.49359 2.35248 4.90532C2.35248 6.38164 3.20954 7.9168 4.37255 9.33522C5.39396 10.581 6.59464 11.6702 7.50002 12.4778C8.4054 11.6702 9.60608 10.581 10.6275 9.33522C11.7905 7.9168 12.6476 6.38164 12.6476 4.90532C12.6476 3.49359 11.5081 2.35248 10.1066 2.35248C9.27059 2.35248 8.81894 2.64323 8.5397 2.95843C8.27877 3.25295 8.14623 3.58566 8.02501 3.88993C8.00391 3.9429 7.98315 3.99501 7.96211 4.04591C7.88482 4.23294 7.7024 4.35494 7.50002 4.35494C7.29765 4.35494 7.11523 4.23295 7.03793 4.04592C7.01689 3.99501 6.99612 3.94289 6.97502 3.8899C6.8538 3.58564 6.72126 3.25294 6.46034 2.95843C6.18109 2.64323 5.72945 2.35248 4.89346 2.35248ZM1.35248 4.90532C1.35248 2.94498 2.936 1.35248 4.89346 1.35248C6.0084 1.35248 6.73504 1.76049 7.20884 2.2953C7.32062 2.42147 7.41686 2.55382 7.50002 2.68545C7.58318 2.55382 7.67941 2.42147 7.79119 2.2953C8.265 1.76049 8.99164 1.35248 10.1066 1.35248C12.064 1.35248 13.6476 2.94498 13.6476 4.90532C13.6476 6.74041 12.6013 8.50508 11.4008 9.96927C10.2636 11.3562 8.92194 12.5508 8.00601 13.3664C7.94645 13.4194 7.88869 13.4709 7.83291 13.5206C7.64324 13.6899 7.3568 13.6899 7.16713 13.5206C7.11135 13.4709 7.05359 13.4194 6.99403 13.3664C6.0781 12.5508 4.73641 11.3562 3.59926 9.96927C2.39872 8.50508 1.35248 6.74041 1.35248 4.90532Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2w = [\"color\"];\nvar HeartFilledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2w);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.35248 4.90532C1.35248 2.94498 2.936 1.35248 4.89346 1.35248C6.25769 1.35248 6.86058 1.92336 7.50002 2.93545C8.13946 1.92336 8.74235 1.35248 10.1066 1.35248C12.064 1.35248 13.6476 2.94498 13.6476 4.90532C13.6476 6.74041 12.6013 8.50508 11.4008 9.96927C10.2636 11.3562 8.92194 12.5508 8.00601 13.3664C7.94645 13.4194 7.88869 13.4709 7.83291 13.5206C7.64324 13.6899 7.3568 13.6899 7.16713 13.5206C7.11135 13.4709 7.05359 13.4194 6.99403 13.3664C6.0781 12.5508 4.73641 11.3562 3.59926 9.96927C2.39872 8.50508 1.35248 6.74041 1.35248 4.90532Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2x = [\"color\"];\nvar HeightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2x);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.1813 1.68179C7.35704 1.50605 7.64196 1.50605 7.8177 1.68179L10.3177 4.18179C10.4934 4.35753 10.4934 4.64245 10.3177 4.81819C10.142 4.99392 9.85704 4.99392 9.6813 4.81819L7.9495 3.08638L7.9495 11.9136L9.6813 10.1818C9.85704 10.0061 10.142 10.0061 10.3177 10.1818C10.4934 10.3575 10.4934 10.6424 10.3177 10.8182L7.8177 13.3182C7.73331 13.4026 7.61885 13.45 7.4995 13.45C7.38015 13.45 7.26569 13.4026 7.1813 13.3182L4.6813 10.8182C4.50557 10.6424 4.50557 10.3575 4.6813 10.1818C4.85704 10.0061 5.14196 10.0061 5.3177 10.1818L7.0495 11.9136L7.0495 3.08638L5.3177 4.81819C5.14196 4.99392 4.85704 4.99392 4.6813 4.81819C4.50557 4.64245 4.50557 4.35753 4.6813 4.18179L7.1813 1.68179Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2y = [\"color\"];\nvar HobbyKnifeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.3536 13.3536C12.1583 13.5488 11.8417 13.5488 11.6465 13.3536L6.39645 8.10355C6.36478 8.07188 6.33824 8.03702 6.31685 8H5.00002C4.78719 8 4.59769 7.86528 4.52777 7.66426L2.12777 0.764277C2.05268 0.548387 2.13355 0.309061 2.3242 0.182972C2.51486 0.0568819 2.76674 0.0761337 2.93602 0.229734L8.336 5.12972C8.44044 5.22449 8.50001 5.35897 8.50001 5.5V5.81684C8.53702 5.83824 8.57189 5.86478 8.60356 5.89645L13.8536 11.1464C14.0488 11.3417 14.0488 11.6583 13.8536 11.8536L12.3536 13.3536ZM8.25 6.95711L7.45711 7.75L12 12.2929L12.7929 11.5L8.25 6.95711ZM3.71669 2.28845L5.35549 7H6.2929L7.50001 5.79289V5.72146L3.71669 2.28845Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2z = [\"color\"];\nvar HomeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.07926 0.222253C7.31275 -0.007434 7.6873 -0.007434 7.92079 0.222253L14.6708 6.86227C14.907 7.09465 14.9101 7.47453 14.6778 7.71076C14.4454 7.947 14.0655 7.95012 13.8293 7.71773L13 6.90201V12.5C13 12.7761 12.7762 13 12.5 13H2.50002C2.22388 13 2.00002 12.7761 2.00002 12.5V6.90201L1.17079 7.71773C0.934558 7.95012 0.554672 7.947 0.32229 7.71076C0.0899079 7.47453 0.0930283 7.09465 0.32926 6.86227L7.07926 0.222253ZM7.50002 1.49163L12 5.91831V12H10V8.49999C10 8.22385 9.77617 7.99999 9.50002 7.99999H6.50002C6.22388 7.99999 6.00002 8.22385 6.00002 8.49999V12H3.00002V5.91831L7.50002 1.49163ZM7.00002 12H9.00002V8.99999H7.00002V12Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2A = [\"color\"];\nvar IconJarLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2A);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 0.0032959C6.80473 0.0032959 6.24953 0.281106 6.25 0.749995C6.25 0.997258 6.42446 1.12014 6.57687 1.22749C6.69507 1.31074 6.8 1.38465 6.8 1.5C6.8 1.7071 6.06224 1.74264 5.19789 1.78427C3.97553 1.84314 2.5 1.91421 2.5 2.5C2.5 2.77614 2.72386 3 3 3H12C12.2761 3 12.5 2.77614 12.5 2.5C12.5 1.91421 11.0245 1.84314 9.80211 1.78427C8.93776 1.74264 8.2 1.7071 8.2 1.5C8.2 1.38465 8.30493 1.31074 8.42313 1.22749C8.57554 1.12014 8.75 0.997258 8.75 0.749995C8.75047 0.281106 8.19527 0.0032959 7.5 0.0032959ZM2.89451 6.12266C2.25806 6.52471 1.90417 7.31118 2.02473 8.0556L2.83588 12.4772C3.00993 13.3562 3.7629 14 4.66061 14H10.3373C11.2354 14 11.9884 13.3562 12.1625 12.4772L12.9736 8.05607C13.089 7.32358 12.8284 6.53276 12.1331 6.09373C11.7283 5.83013 11.6412 5.33231 12.1331 5.12796C12.8284 4.86435 12.6948 4 12 4H10.3001H6.80005H2.99996C2.30469 4 2.19878 4.89328 2.89451 5.15689C3.38642 5.33231 3.29939 5.83013 2.89451 6.12266ZM8.20006 6.25C8.20006 5.81769 8.08572 5.37615 7.90635 5L4.11093 5C4.20626 5.21312 4.2419 5.43889 4.22904 5.65521C4.19522 6.22412 3.84587 6.66899 3.48016 6.93322L3.45492 6.95146L3.42858 6.9681C3.13407 7.15414 2.95801 7.53989 3.01058 7.88749L3.81797 12.2886C3.90513 12.7154 4.26148 13 4.66061 13H10.3373C10.737 13 11.0932 12.7153 11.1804 12.2886L11.9874 7.8898C12.048 7.48247 11.8954 7.12631 11.5992 6.93927L11.5875 6.93184L11.5875 6.93176C11.1947 6.67602 10.8331 6.22785 10.7986 5.64798C10.7846 5.412 10.8264 5.19397 10.9112 5H9.05517C9.01987 5.14611 9.00006 5.31201 9.00006 5.5C9.00006 5.9745 9.21679 6.37127 9.44367 6.78662C9.69284 7.24278 9.95425 7.72136 9.95425 8.34993C9.95425 9.2698 9.49868 9.84205 8.62189 9.84205C8.13206 9.84205 7.57818 9.46097 7.57818 8.75781C7.57818 8.35279 7.71558 8.01646 7.86121 7.65998C8.0254 7.25806 8.20006 6.83051 8.20006 6.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2B = [\"color\"];\nvar IdCardIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2B);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14 11.0001V4.00006L1 4.00006L1 11.0001H14ZM15 4.00006V11.0001C15 11.5523 14.5523 12.0001 14 12.0001H1C0.447715 12.0001 0 11.5523 0 11.0001V4.00006C0 3.44778 0.447715 3.00006 1 3.00006H14C14.5523 3.00006 15 3.44778 15 4.00006ZM2 5.25C2 5.11193 2.11193 5 2.25 5H5.75C5.88807 5 6 5.11193 6 5.25V9.75C6 9.88807 5.88807 10 5.75 10H2.25C2.11193 10 2 9.88807 2 9.75V5.25ZM7.5 7C7.22386 7 7 7.22386 7 7.5C7 7.77614 7.22386 8 7.5 8H10.5C10.7761 8 11 7.77614 11 7.5C11 7.22386 10.7761 7 10.5 7H7.5ZM7 9.5C7 9.22386 7.22386 9 7.5 9H12.5C12.7761 9 13 9.22386 13 9.5C13 9.77614 12.7761 10 12.5 10H7.5C7.22386 10 7 9.77614 7 9.5ZM7.5 5C7.22386 5 7 5.22386 7 5.5C7 5.77614 7.22386 6 7.5 6H11.5C11.7761 6 12 5.77614 12 5.5C12 5.22386 11.7761 5 11.5 5H7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2C = [\"color\"];\nvar ImageIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2C);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5C1 1.67157 1.67157 1 2.5 1ZM2.5 2C2.22386 2 2 2.22386 2 2.5V8.3636L3.6818 6.6818C3.76809 6.59551 3.88572 6.54797 4.00774 6.55007C4.12975 6.55216 4.24568 6.60372 4.32895 6.69293L7.87355 10.4901L10.6818 7.6818C10.8575 7.50607 11.1425 7.50607 11.3182 7.6818L13 9.3636V2.5C13 2.22386 12.7761 2 12.5 2H2.5ZM2 12.5V9.6364L3.98887 7.64753L7.5311 11.4421L8.94113 13H2.5C2.22386 13 2 12.7761 2 12.5ZM12.5 13H10.155L8.48336 11.153L11 8.6364L13 10.6364V12.5C13 12.7761 12.7761 13 12.5 13ZM6.64922 5.5C6.64922 5.03013 7.03013 4.64922 7.5 4.64922C7.96987 4.64922 8.35078 5.03013 8.35078 5.5C8.35078 5.96987 7.96987 6.35078 7.5 6.35078C7.03013 6.35078 6.64922 5.96987 6.64922 5.5ZM7.5 3.74922C6.53307 3.74922 5.74922 4.53307 5.74922 5.5C5.74922 6.46693 6.53307 7.25078 7.5 7.25078C8.46693 7.25078 9.25078 6.46693 9.25078 5.5C9.25078 4.53307 8.46693 3.74922 7.5 3.74922Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2D = [\"color\"];\nvar InfoCircledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2D);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2E = [\"color\"];\nvar InputIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2E);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.5 1C6.22386 1 6 1.22386 6 1.5C6 1.77614 6.22386 2 6.5 2C7.12671 2 7.45718 2.20028 7.65563 2.47812C7.8781 2.78957 8 3.28837 8 4V11C8 11.7116 7.8781 12.2104 7.65563 12.5219C7.45718 12.7997 7.12671 13 6.5 13C6.22386 13 6 13.2239 6 13.5C6 13.7761 6.22386 14 6.5 14C7.37329 14 8.04282 13.7003 8.46937 13.1031C8.47976 13.0886 8.48997 13.0739 8.5 13.0591C8.51003 13.0739 8.52024 13.0886 8.53063 13.1031C8.95718 13.7003 9.62671 14 10.5 14C10.7761 14 11 13.7761 11 13.5C11 13.2239 10.7761 13 10.5 13C9.87329 13 9.54282 12.7997 9.34437 12.5219C9.1219 12.2104 9 11.7116 9 11V4C9 3.28837 9.1219 2.78957 9.34437 2.47812C9.54282 2.20028 9.87329 2 10.5 2C10.7761 2 11 1.77614 11 1.5C11 1.22386 10.7761 1 10.5 1C9.62671 1 8.95718 1.29972 8.53063 1.89688C8.52024 1.91143 8.51003 1.92611 8.5 1.9409C8.48997 1.92611 8.47976 1.91143 8.46937 1.89688C8.04282 1.29972 7.37329 1 6.5 1ZM14 5H11V4H14C14.5523 4 15 4.44772 15 5V10C15 10.5523 14.5523 11 14 11H11V10H14V5ZM6 4V5H1L1 10H6V11H1C0.447715 11 0 10.5523 0 10V5C0 4.44772 0.447715 4 1 4H6Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2F = [\"color\"];\nvar InstagramLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2F);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M12.9091 12.909C13.2365 12.5817 13.4918 12.1895 13.6588 11.7577C13.8195 11.3443 13.9294 10.8718 13.961 10.1799C13.9926 9.48665 14.0001 9.26529 14.0001 7.50001C14.0001 5.73473 13.9926 5.51328 13.961 4.82008C13.9294 4.12821 13.8195 3.65573 13.6588 3.24228C13.4956 2.80857 13.2398 2.41567 12.9091 2.091C12.5844 1.76028 12.1915 1.50437 11.7578 1.34113C11.3443 1.18056 10.8718 1.0707 10.1799 1.03924C9.48675 1.00748 9.26537 1 7.50006 1C5.73476 1 5.51333 1.00748 4.82014 1.03912C4.12826 1.0707 3.65578 1.18056 3.24233 1.34125C2.80862 1.50447 2.41573 1.76032 2.09105 2.09098C1.76032 2.41563 1.5044 2.80852 1.34113 3.24225C1.18056 3.65573 1.0707 4.12821 1.03924 4.82008C1.00748 5.51328 1 5.73471 1 7.50001C1 9.26532 1.00748 9.48675 1.03924 10.1799C1.07083 10.8718 1.18069 11.3443 1.34138 11.7577C1.5046 12.1915 1.76045 12.5843 2.09111 12.909C2.41578 13.2397 2.80867 13.4955 3.24238 13.6587C3.65586 13.8194 4.12834 13.9293 4.82019 13.9609C5.51348 13.9925 5.73483 14 7.50012 14C9.2654 14 9.48685 13.9925 10.18 13.9609C10.8719 13.9293 11.3444 13.8194 11.7578 13.6587C12.1896 13.4917 12.5818 13.2364 12.9091 12.909ZM1.99949 6.73496C1.99974 6.94524 2.00005 7.19543 2.00005 7.50002C2.00005 7.80461 1.99974 8.0548 1.99949 8.26507C1.99849 9.08596 1.99824 9.29856 2.01963 9.7655C2.04625 10.3509 2.07823 10.7811 2.17588 11.1053C2.26976 11.417 2.37505 11.7342 2.7188 12.1171C3.06255 12.4999 3.39411 12.6733 3.81645 12.8007C4.23879 12.928 4.7696 12.9554 5.23052 12.9764C5.75332 13.0003 5.96052 13.0002 7.05714 12.9999L7.50006 12.9999C7.79304 12.9999 8.03569 13.0001 8.2409 13.0004C9.08195 13.0013 9.29425 13.0015 9.76575 12.9799C10.3512 12.9533 10.7814 12.9213 11.1056 12.8237C11.4173 12.7298 11.7345 12.6245 12.1173 12.2807C12.5001 11.937 12.6735 11.6054 12.8009 11.1831C12.9283 10.7607 12.9557 10.2299 12.9767 9.76902C13.0005 9.24689 13.0004 9.04027 13.0002 7.94749V7.94738L13.0001 7.50039L13.0001 7.05747C13.0004 5.96085 13.0005 5.75365 12.9766 5.23085C12.9556 4.76993 12.9282 4.23912 12.8009 3.81678C12.6735 3.39445 12.5001 3.06288 12.1173 2.71913C11.7345 2.37538 11.4172 2.27009 11.1056 2.17621C10.7813 2.07856 10.3511 2.04658 9.76571 2.01996C9.29421 1.99836 9.08194 1.99859 8.24092 1.99951H8.24092C8.0357 1.99974 7.79305 2.00001 7.50006 2.00001L7.05704 1.99993C5.96051 1.99964 5.75331 1.99958 5.23052 2.02343C4.7696 2.04446 4.23879 2.07183 3.81645 2.19921C3.39411 2.32659 3.06255 2.49999 2.7188 2.88281C2.37505 3.26562 2.26976 3.58286 2.17588 3.89453C2.07823 4.21874 2.04625 4.64894 2.01963 5.23437C1.99824 5.70131 1.99849 5.91401 1.99949 6.73496ZM7.49996 5.25015C6.25741 5.25015 5.25012 6.25744 5.25012 7.49999C5.25012 8.74254 6.25741 9.74983 7.49996 9.74983C8.74251 9.74983 9.7498 8.74254 9.7498 7.49999C9.7498 6.25744 8.74251 5.25015 7.49996 5.25015ZM4.25012 7.49999C4.25012 5.70515 5.70512 4.25015 7.49996 4.25015C9.2948 4.25015 10.7498 5.70515 10.7498 7.49999C10.7498 9.29483 9.2948 10.7498 7.49996 10.7498C5.70512 10.7498 4.25012 9.29483 4.25012 7.49999ZM10.9697 4.7803C11.3839 4.7803 11.7197 4.44452 11.7197 4.0303C11.7197 3.61609 11.3839 3.2803 10.9697 3.2803C10.5555 3.2803 10.2197 3.61609 10.2197 4.0303C10.2197 4.44452 10.5555 4.7803 10.9697 4.7803Z\",\n    fill: color\n  }));\n});\nvar _excluded$2G = [\"color\"];\nvar KeyboardIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2G);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M13.5 4H1.5C1.22386 4 1 4.22386 1 4.5V10.5C1 10.7761 1.22386 11 1.5 11H13.5C13.7761 11 14 10.7761 14 10.5V4.5C14 4.22386 13.7761 4 13.5 4ZM1.5 3C0.671573 3 0 3.67157 0 4.5V10.5C0 11.3284 0.671573 12 1.5 12H13.5C14.3284 12 15 11.3284 15 10.5V4.5C15 3.67157 14.3284 3 13.5 3H1.5ZM2 5H3V6H2V5ZM5 5H4V6H5V5ZM6 5H7V6H6V5ZM9 5H8V6H9V5ZM10 5H11V6H10V5ZM13 5H12V6H13V5ZM11 7H12V8H11V7ZM13 9H12V10H13V9ZM9 7H10V8H9V7ZM8 7H7V8H8V7ZM5 7H6V8H5V7ZM4 7H3V8H4V7ZM2 9H3V10H2V9ZM11 9H4V10H11V9Z\",\n    fill: color\n  }));\n});\nvar _excluded$2H = [\"color\"];\nvar LapTimerIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2H);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.49998 0.5C5.49998 0.223858 5.72383 0 5.99998 0H7.49998H8.99998C9.27612 0 9.49998 0.223858 9.49998 0.5C9.49998 0.776142 9.27612 1 8.99998 1H7.99998V2.11922C9.09832 2.20409 10.119 2.56622 10.992 3.13572C11.0116 3.10851 11.0336 3.08252 11.058 3.05806L12.058 2.05806C12.3021 1.81398 12.6978 1.81398 12.9419 2.05806C13.186 2.30214 13.186 2.69786 12.9419 2.94194L11.967 3.91682C13.1595 5.07925 13.9 6.70314 13.9 8.49998C13.9 12.0346 11.0346 14.9 7.49998 14.9C3.96535 14.9 1.09998 12.0346 1.09998 8.49998C1.09998 5.13361 3.69904 2.3743 6.99998 2.11922V1H5.99998C5.72383 1 5.49998 0.776142 5.49998 0.5ZM2.09998 8.49998C2.09998 5.51764 4.51764 3.09998 7.49998 3.09998C10.4823 3.09998 12.9 5.51764 12.9 8.49998C12.9 11.4823 10.4823 13.9 7.49998 13.9C4.51764 13.9 2.09998 11.4823 2.09998 8.49998ZM7.49998 8.49998V4.09998C5.06992 4.09998 3.09998 6.06992 3.09998 8.49998C3.09998 10.93 5.06992 12.9 7.49998 12.9C8.715 12.9 9.815 12.4075 10.6112 11.6112L7.49998 8.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2I = [\"color\"];\nvar LaptopIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2I);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 4.25C2 4.11193 2.11193 4 2.25 4H12.75C12.8881 4 13 4.11193 13 4.25V11.5H2V4.25ZM2.25 3C1.55964 3 1 3.55964 1 4.25V12H0V12.5C0 12.7761 0.223858 13 0.5 13H14.5C14.7761 13 15 12.7761 15 12.5V12H14V4.25C14 3.55964 13.4404 3 12.75 3H2.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2J = [\"color\"];\nvar LayersIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2J);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.75432 0.819537C7.59742 0.726821 7.4025 0.726821 7.24559 0.819537L1.74559 4.06954C1.59336 4.15949 1.49996 4.32317 1.49996 4.5C1.49996 4.67683 1.59336 4.84051 1.74559 4.93046L7.24559 8.18046C7.4025 8.27318 7.59742 8.27318 7.75432 8.18046L13.2543 4.93046C13.4066 4.84051 13.5 4.67683 13.5 4.5C13.5 4.32317 13.4066 4.15949 13.2543 4.06954L7.75432 0.819537ZM7.49996 7.16923L2.9828 4.5L7.49996 1.83077L12.0171 4.5L7.49996 7.16923ZM1.5695 7.49564C1.70998 7.2579 2.01659 7.17906 2.25432 7.31954L7.49996 10.4192L12.7456 7.31954C12.9833 7.17906 13.2899 7.2579 13.4304 7.49564C13.5709 7.73337 13.4921 8.03998 13.2543 8.18046L7.75432 11.4305C7.59742 11.5232 7.4025 11.5232 7.24559 11.4305L1.74559 8.18046C1.50786 8.03998 1.42901 7.73337 1.5695 7.49564ZM1.56949 10.4956C1.70998 10.2579 2.01658 10.1791 2.25432 10.3195L7.49996 13.4192L12.7456 10.3195C12.9833 10.1791 13.2899 10.2579 13.4304 10.4956C13.5709 10.7334 13.4921 11.04 13.2543 11.1805L7.75432 14.4305C7.59742 14.5232 7.4025 14.5232 7.24559 14.4305L1.74559 11.1805C1.50785 11.04 1.42901 10.7334 1.56949 10.4956Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2K = [\"color\"];\nvar LayoutIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2K);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9 2H6V13H9V2ZM10 2V13H12.5C12.7761 13 13 12.7761 13 12.5V2.5C13 2.22386 12.7761 2 12.5 2H10ZM2.5 2H5V13H2.5C2.22386 13 2 12.7761 2 12.5V2.5C2 2.22386 2.22386 2 2.5 2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2L = [\"color\"];\nvar LetterCaseCapitalizeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2L);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.68979 2.75C3.89667 2.74979 4.08232 2.87701 4.15679 3.07003L7.36662 11.39C7.46602 11.6477 7.33774 11.9371 7.0801 12.0365C6.82247 12.1359 6.53304 12.0076 6.43365 11.75L5.3825 9.02537H2.01133L0.966992 11.749C0.868128 12.0068 0.578964 12.1357 0.321126 12.0369C0.0632878 11.938 -0.0655864 11.6488 0.0332774 11.391L3.22344 3.07099C3.29751 2.87782 3.4829 2.75021 3.68979 2.75ZM3.69174 4.64284L5.05458 8.17537H2.33724L3.69174 4.64284ZM10.8989 5.20703C9.25818 5.20703 8.00915 6.68569 8.00915 8.60972C8.00915 10.6337 9.35818 12.0124 10.8989 12.0124C11.7214 12.0124 12.5744 11.6692 13.1543 11.0219V11.53C13.1543 11.7785 13.3557 11.98 13.6043 11.98C13.8528 11.98 14.0543 11.7785 14.0543 11.53V5.72C14.0543 5.47147 13.8528 5.27 13.6043 5.27C13.3557 5.27 13.1543 5.47147 13.1543 5.72V6.22317C12.6054 5.60095 11.7924 5.20703 10.8989 5.20703ZM13.1543 9.79823V7.30195C12.7639 6.58101 11.9414 6.05757 11.0868 6.05757C10.1088 6.05757 9.03503 6.96581 9.03503 8.60955C9.03503 10.1533 10.0088 11.1615 11.0868 11.1615C11.9701 11.1615 12.7719 10.4952 13.1543 9.79823Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2M = [\"color\"];\nvar LetterCaseLowercaseIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2M);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.69899 5.20703C2.05823 5.20703 0.809204 6.68569 0.809204 8.60972C0.809204 10.6337 2.15823 12.0124 3.69899 12.0124C4.52126 12.0124 5.37402 11.6693 5.9539 11.0223V11.53C5.9539 11.7785 6.15537 11.98 6.4039 11.98C6.65243 11.98 6.8539 11.7785 6.8539 11.53V5.72001C6.8539 5.47149 6.65243 5.27001 6.4039 5.27001C6.15537 5.27001 5.9539 5.47149 5.9539 5.72001V6.22269C5.40506 5.60075 4.59218 5.20703 3.69899 5.20703ZM5.9539 9.799V7.30117C5.56339 6.58064 4.74118 6.05757 3.8868 6.05757C2.9089 6.05757 1.83508 6.96581 1.83508 8.60955C1.83508 10.1533 2.80889 11.1615 3.8868 11.1615C4.76984 11.1615 5.57141 10.4957 5.9539 9.799ZM10.799 5.20703C9.15823 5.20703 7.9092 6.68569 7.9092 8.60972C7.9092 10.6337 9.25823 12.0124 10.799 12.0124C11.6215 12.0124 12.4744 11.6692 13.0543 11.0218V11.53C13.0543 11.7785 13.2558 11.98 13.5043 11.98C13.7529 11.98 13.9543 11.7785 13.9543 11.53V5.72C13.9543 5.47147 13.7529 5.27 13.5043 5.27C13.2558 5.27 13.0543 5.47147 13.0543 5.72V6.22318C12.5055 5.60095 11.6924 5.20703 10.799 5.20703ZM13.0543 9.79822V7.30196C12.664 6.58102 11.8415 6.05757 10.9868 6.05757C10.0089 6.05757 8.93508 6.96581 8.93508 8.60955C8.93508 10.1533 9.90889 11.1615 10.9868 11.1615C11.8702 11.1615 12.672 10.4952 13.0543 9.79822Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2N = [\"color\"];\nvar LetterCaseToggleIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2N);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11.2895 2.75C11.4964 2.74979 11.6821 2.87701 11.7565 3.07003L14.9664 11.39C15.0657 11.6477 14.9375 11.9371 14.6798 12.0365C14.4222 12.1359 14.1328 12.0076 14.0334 11.75L12.9822 9.02537H9.61106L8.56672 11.749C8.46786 12.0068 8.1787 12.1357 7.92086 12.0369C7.66302 11.938 7.53415 11.6488 7.63301 11.391L10.8232 3.07099C10.8972 2.87782 11.0826 2.75021 11.2895 2.75ZM11.2915 4.64284L12.6543 8.17537H9.93698L11.2915 4.64284ZM2.89895 5.20703C1.25818 5.20703 0.00915527 6.68569 0.00915527 8.60972C0.00915527 10.6337 1.35818 12.0124 2.89895 12.0124C3.72141 12.0124 4.57438 11.6692 5.15427 11.0219V11.53C5.15427 11.7785 5.35574 11.98 5.60427 11.98C5.8528 11.98 6.05427 11.7785 6.05427 11.53V5.72C6.05427 5.47147 5.8528 5.27 5.60427 5.27C5.35574 5.27 5.15427 5.47147 5.15427 5.72V6.22317C4.60543 5.60095 3.79236 5.20703 2.89895 5.20703ZM5.15427 9.79823V7.30195C4.76393 6.58101 3.94144 6.05757 3.08675 6.05757C2.10885 6.05757 1.03503 6.96581 1.03503 8.60955C1.03503 10.1533 2.00885 11.1615 3.08675 11.1615C3.97011 11.1615 4.77195 10.4952 5.15427 9.79823Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2O = [\"color\"];\nvar LetterCaseUppercaseIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2O);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.6255 2.75C3.83478 2.75 4.02192 2.88034 4.09448 3.07664L7.16985 11.3962C7.2656 11.6552 7.13324 11.9428 6.87423 12.0386C6.61522 12.1343 6.32763 12.002 6.23188 11.7429L5.22387 9.01603H2.02712L1.01911 11.7429C0.923362 12.002 0.635774 12.1343 0.376762 12.0386C0.117749 11.9428 -0.0146052 11.6552 0.0811401 11.3962L3.15651 3.07664C3.22908 2.88034 3.41621 2.75 3.6255 2.75ZM3.6255 4.69207L4.90966 8.16603H2.34133L3.6255 4.69207ZM11.3719 2.75C11.5811 2.75 11.7683 2.88034 11.8408 3.07664L14.9162 11.3962C15.012 11.6552 14.8796 11.9428 14.6206 12.0386C14.3616 12.1343 14.074 12.002 13.9782 11.7429L12.9702 9.01603H9.77348L8.76547 11.7429C8.66972 12.002 8.38213 12.1343 8.12312 12.0386C7.86411 11.9428 7.73175 11.6552 7.8275 11.3962L10.9029 3.07664C10.9754 2.88034 11.1626 2.75 11.3719 2.75ZM11.3719 4.69207L12.656 8.16603H10.0877L11.3719 4.69207Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2P = [\"color\"];\nvar LetterSpacingIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2P);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.55293 0.999969C4.75295 0.999969 4.93372 1.11917 5.0125 1.30301L8.01106 8.29982C8.11984 8.55363 8.00226 8.84757 7.74844 8.95635C7.49463 9.06512 7.20069 8.94754 7.09191 8.69373L6.11613 6.41685H2.98973L2.01395 8.69373C1.90517 8.94754 1.61123 9.06512 1.35742 8.95635C1.1036 8.84757 0.986023 8.55363 1.0948 8.29982L4.09336 1.30301C4.17214 1.11917 4.35291 0.999969 4.55293 0.999969ZM4.55293 2.76929L5.75186 5.56685H3.354L4.55293 2.76929ZM11.0562 9.00214C11.2617 9.00214 11.4463 8.87633 11.5215 8.68502L14.2733 1.68299C14.3743 1.42598 14.2478 1.13575 13.9908 1.03475C13.7338 0.933747 13.4436 1.06021 13.3426 1.31722L11.0562 7.13514L8.76973 1.31722C8.66873 1.06021 8.3785 0.933747 8.1215 1.03475C7.86449 1.13575 7.73802 1.42598 7.83902 1.68299L10.5908 8.68502C10.666 8.87633 10.8506 9.00214 11.0562 9.00214ZM14.9537 12.4999C14.9537 12.606 14.9115 12.7077 14.8365 12.7828L12.8365 14.7828C12.6803 14.939 12.4271 14.939 12.2708 14.7828C12.1146 14.6265 12.1146 14.3733 12.2708 14.2171L13.588 12.8999H1.51937L2.83653 14.2171C2.99274 14.3733 2.99274 14.6265 2.83653 14.7828C2.68032 14.939 2.42705 14.939 2.27084 14.7828L0.270843 12.7828C0.195828 12.7077 0.153687 12.606 0.153687 12.4999C0.153687 12.3938 0.195828 12.2921 0.270843 12.2171L2.27084 10.2171C2.42705 10.0609 2.68032 10.0609 2.83653 10.2171C2.99274 10.3733 2.99274 10.6265 2.83653 10.7828L1.51937 12.0999L13.588 12.0999L12.2708 10.7828C12.1146 10.6265 12.1146 10.3733 12.2708 10.2171C12.4271 10.0609 12.6803 10.0609 12.8365 10.2171L14.8365 12.2171C14.9115 12.2921 14.9537 12.3938 14.9537 12.4999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2Q = [\"color\"];\nvar LightningBoltIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2Q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.69667 0.0403541C8.90859 0.131038 9.03106 0.354857 8.99316 0.582235L8.0902 6.00001H12.5C12.6893 6.00001 12.8625 6.10701 12.9472 6.27641C13.0319 6.4458 13.0136 6.6485 12.8999 6.80001L6.89997 14.8C6.76167 14.9844 6.51521 15.0503 6.30328 14.9597C6.09135 14.869 5.96888 14.6452 6.00678 14.4178L6.90974 9H2.49999C2.31061 9 2.13748 8.893 2.05278 8.72361C1.96809 8.55422 1.98636 8.35151 2.09999 8.2L8.09997 0.200038C8.23828 0.0156255 8.48474 -0.0503301 8.69667 0.0403541ZM3.49999 8.00001H7.49997C7.64695 8.00001 7.78648 8.06467 7.88148 8.17682C7.97648 8.28896 8.01733 8.43723 7.99317 8.5822L7.33027 12.5596L11.5 7.00001H7.49997C7.353 7.00001 7.21347 6.93534 7.11846 6.8232C7.02346 6.71105 6.98261 6.56279 7.00678 6.41781L7.66968 2.44042L3.49999 8.00001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2R = [\"color\"];\nvar LineHeightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2R);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.78233 2.21713C3.70732 2.14212 3.60557 2.09998 3.49949 2.09998C3.3934 2.09998 3.29166 2.14212 3.21664 2.21713L1.21664 4.21713C1.06044 4.37334 1.06044 4.62661 1.21664 4.78282C1.37285 4.93903 1.62612 4.93903 1.78233 4.78282L3.09949 3.46566L3.09949 11.5343L1.78233 10.2171C1.62612 10.0609 1.37285 10.0609 1.21664 10.2171C1.06043 10.3733 1.06043 10.6266 1.21664 10.7828L3.21664 12.7828C3.29166 12.8578 3.3934 12.9 3.49949 12.9C3.60557 12.9 3.70731 12.8578 3.78233 12.7828L5.78233 10.7828C5.93854 10.6266 5.93854 10.3733 5.78233 10.2171C5.62612 10.0609 5.37285 10.0609 5.21664 10.2171L3.89949 11.5343L3.89949 3.46566L5.21664 4.78282C5.37285 4.93903 5.62612 4.93903 5.78233 4.78282C5.93854 4.62661 5.93854 4.37334 5.78233 4.21713L3.78233 2.21713ZM8.49998 3.99997C8.22383 3.99997 7.99998 4.22382 7.99998 4.49997C7.99998 4.77611 8.22383 4.99997 8.49998 4.99997H14.5C14.7761 4.99997 15 4.77611 15 4.49997C15 4.22382 14.7761 3.99997 14.5 3.99997H8.49998ZM7.99998 7.49997C7.99998 7.22382 8.22383 6.99997 8.49998 6.99997H14.5C14.7761 6.99997 15 7.22382 15 7.49997C15 7.77611 14.7761 7.99997 14.5 7.99997H8.49998C8.22383 7.99997 7.99998 7.77611 7.99998 7.49997ZM8.49998 9.99997C8.22383 9.99997 7.99998 10.2238 7.99998 10.5C7.99998 10.7761 8.22383 11 8.49998 11H14.5C14.7761 11 15 10.7761 15 10.5C15 10.2238 14.7761 9.99997 14.5 9.99997H8.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2S = [\"color\"];\nvar Link1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2S);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.62471 4.00001L4.56402 4.00001C4.04134 3.99993 3.70687 3.99988 3.4182 4.055C2.2379 4.28039 1.29846 5.17053 1.05815 6.33035C0.999538 6.61321 0.999604 6.93998 0.999703 7.43689L0.999711 7.50001L0.999703 7.56313C0.999604 8.06004 0.999538 8.38681 1.05815 8.66967C1.29846 9.8295 2.2379 10.7196 3.4182 10.945C3.70688 11.0001 4.04135 11.0001 4.56403 11L4.62471 11H5.49971C5.77585 11 5.99971 10.7762 5.99971 10.5C5.99971 10.2239 5.77585 10 5.49971 10H4.62471C4.02084 10 3.78907 9.99777 3.60577 9.96277C2.80262 9.8094 2.19157 9.21108 2.03735 8.46678C2.00233 8.29778 1.99971 8.08251 1.99971 7.50001C1.99971 6.91752 2.00233 6.70225 2.03735 6.53324C2.19157 5.78895 2.80262 5.19062 3.60577 5.03725C3.78907 5.00225 4.02084 5.00001 4.62471 5.00001H5.49971C5.77585 5.00001 5.99971 4.77615 5.99971 4.50001C5.99971 4.22387 5.77585 4.00001 5.49971 4.00001H4.62471ZM10.3747 5.00001C10.9786 5.00001 11.2104 5.00225 11.3937 5.03725C12.1968 5.19062 12.8079 5.78895 12.9621 6.53324C12.9971 6.70225 12.9997 6.91752 12.9997 7.50001C12.9997 8.08251 12.9971 8.29778 12.9621 8.46678C12.8079 9.21108 12.1968 9.8094 11.3937 9.96277C11.2104 9.99777 10.9786 10 10.3747 10H9.49971C9.22357 10 8.99971 10.2239 8.99971 10.5C8.99971 10.7762 9.22357 11 9.49971 11H10.3747L10.4354 11C10.9581 11.0001 11.2925 11.0001 11.5812 10.945C12.7615 10.7196 13.701 9.8295 13.9413 8.66967C13.9999 8.38681 13.9998 8.06005 13.9997 7.56314L13.9997 7.50001L13.9997 7.43688C13.9998 6.93998 13.9999 6.61321 13.9413 6.33035C13.701 5.17053 12.7615 4.28039 11.5812 4.055C11.2925 3.99988 10.9581 3.99993 10.4354 4.00001L10.3747 4.00001H9.49971C9.22357 4.00001 8.99971 4.22387 8.99971 4.50001C8.99971 4.77615 9.22357 5.00001 9.49971 5.00001H10.3747ZM5.00038 7C4.72424 7 4.50038 7.22386 4.50038 7.5C4.50038 7.77614 4.72424 8 5.00038 8H10.0004C10.2765 8 10.5004 7.77614 10.5004 7.5C10.5004 7.22386 10.2765 7 10.0004 7H5.00038Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2T = [\"color\"];\nvar Link2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2T);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8.51194 3.00541C9.18829 2.54594 10.0435 2.53694 10.6788 2.95419C10.8231 3.04893 10.9771 3.1993 11.389 3.61119C11.8009 4.02307 11.9513 4.17714 12.046 4.32141C12.4633 4.95675 12.4543 5.81192 11.9948 6.48827C11.8899 6.64264 11.7276 6.80811 11.3006 7.23511L10.6819 7.85383C10.4867 8.04909 10.4867 8.36567 10.6819 8.56093C10.8772 8.7562 11.1938 8.7562 11.389 8.56093L12.0077 7.94221L12.0507 7.89929C12.4203 7.52976 12.6568 7.2933 12.822 7.0502C13.4972 6.05623 13.5321 4.76252 12.8819 3.77248C12.7233 3.53102 12.4922 3.30001 12.1408 2.94871L12.0961 2.90408L12.0515 2.85942C11.7002 2.508 11.4692 2.27689 11.2277 2.11832C10.2377 1.46813 8.94398 1.50299 7.95001 2.17822C7.70691 2.34336 7.47044 2.57991 7.1009 2.94955L7.058 2.99247L6.43928 3.61119C6.24401 3.80645 6.24401 4.12303 6.43928 4.31829C6.63454 4.51355 6.95112 4.51355 7.14638 4.31829L7.7651 3.69957C8.1921 3.27257 8.35757 3.11027 8.51194 3.00541ZM4.31796 7.14672C4.51322 6.95146 4.51322 6.63487 4.31796 6.43961C4.12269 6.24435 3.80611 6.24435 3.61085 6.43961L2.99213 7.05833L2.94922 7.10124C2.57957 7.47077 2.34303 7.70724 2.17788 7.95035C1.50265 8.94432 1.4678 10.238 2.11799 11.2281C2.27656 11.4695 2.50766 11.7005 2.8591 12.0518L2.90374 12.0965L2.94837 12.1411C3.29967 12.4925 3.53068 12.7237 3.77214 12.8822C4.76219 13.5324 6.05589 13.4976 7.04986 12.8223C7.29296 12.6572 7.52943 12.4206 7.89896 12.051L7.89897 12.051L7.94188 12.0081L8.5606 11.3894C8.75586 11.1941 8.75586 10.8775 8.5606 10.6823C8.36533 10.487 8.04875 10.487 7.85349 10.6823L7.23477 11.301C6.80777 11.728 6.6423 11.8903 6.48794 11.9951C5.81158 12.4546 4.95642 12.4636 4.32107 12.0464C4.17681 11.9516 4.02274 11.8012 3.61085 11.3894C3.19896 10.9775 3.0486 10.8234 2.95385 10.6791C2.53661 10.0438 2.54561 9.18863 3.00507 8.51227C3.10993 8.35791 3.27224 8.19244 3.69924 7.76544L4.31796 7.14672ZM9.62172 6.08558C9.81698 5.89032 9.81698 5.57373 9.62172 5.37847C9.42646 5.18321 9.10988 5.18321 8.91461 5.37847L5.37908 8.91401C5.18382 9.10927 5.18382 9.42585 5.37908 9.62111C5.57434 9.81637 5.89092 9.81637 6.08619 9.62111L9.62172 6.08558Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2U = [\"color\"];\nvar LinkBreak1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2U);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.3536 2.35355C13.5488 2.15829 13.5488 1.84171 13.3536 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L1.64645 12.6464C1.45118 12.8417 1.45118 13.1583 1.64645 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L13.3536 2.35355ZM2.03735 8.46678C2.17398 9.12619 2.66918 9.67103 3.33886 9.89338L2.57833 10.6539C1.80843 10.2534 1.23784 9.53693 1.05815 8.66967C0.999538 8.38681 0.999604 8.06004 0.999703 7.56313L0.999711 7.50001L0.999703 7.43689C0.999604 6.93998 0.999538 6.61321 1.05815 6.33035C1.29846 5.17053 2.2379 4.28039 3.4182 4.055C3.70687 3.99988 4.04134 3.99993 4.56402 4.00001L4.62471 4.00001H5.49971C5.77585 4.00001 5.99971 4.22387 5.99971 4.50001C5.99971 4.77615 5.77585 5.00001 5.49971 5.00001H4.62471C4.02084 5.00001 3.78907 5.00225 3.60577 5.03725C2.80262 5.19062 2.19157 5.78895 2.03735 6.53324C2.00233 6.70225 1.99971 6.91752 1.99971 7.50001C1.99971 8.08251 2.00233 8.29778 2.03735 8.46678ZM12.9621 6.53324C12.8255 5.87397 12.3304 5.32922 11.661 5.10679L12.4215 4.34631C13.1912 4.74686 13.7616 5.46323 13.9413 6.33035C13.9999 6.61321 13.9998 6.93998 13.9997 7.43688L13.9997 7.50001L13.9997 7.56314C13.9998 8.06005 13.9999 8.38681 13.9413 8.66967C13.701 9.8295 12.7615 10.7196 11.5812 10.945C11.2925 11.0001 10.9581 11.0001 10.4354 11L10.3747 11H9.49971C9.22357 11 8.99971 10.7762 8.99971 10.5C8.99971 10.2239 9.22357 10 9.49971 10H10.3747C10.9786 10 11.2104 9.99777 11.3937 9.96277C12.1968 9.8094 12.8079 9.21108 12.9621 8.46678C12.9971 8.29778 12.9997 8.08251 12.9997 7.50001C12.9997 6.91752 12.9971 6.70225 12.9621 6.53324Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2V = [\"color\"];\nvar LinkBreak2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2V);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.50021 0C4.77635 0 5.0002 0.223853 5.0002 0.49999V2.49995C5.0002 2.77609 4.77635 2.99994 4.50021 2.99994C4.22408 2.99994 4.00022 2.77609 4.00022 2.49995V0.49999C4.00022 0.223853 4.22408 0 4.50021 0ZM0.646451 0.64647C0.84171 0.451212 1.15829 0.451212 1.35354 0.64647L2.85351 2.14644C3.04877 2.3417 3.04877 2.65827 2.85351 2.85353C2.65826 3.04879 2.34168 3.04879 2.14642 2.85353L0.646452 1.35356C0.451193 1.1583 0.451193 0.841728 0.646451 0.64647ZM0.00030517 4.49991C0.00030517 4.22377 0.224158 3.99992 0.500295 3.99992H2.50025C2.77639 3.99992 3.00024 4.22377 3.00024 4.49991C3.00024 4.77605 2.77639 4.9999 2.50025 4.9999H0.500295C0.224158 4.9999 0.00030517 4.77605 0.00030517 4.49991ZM12.0001 10.4998C12.0001 10.2236 12.2239 9.9998 12.5001 9.9998H14.5C14.7761 9.9998 15 10.2236 15 10.4998C15 10.7759 14.7761 10.9998 14.5 10.9998H12.5001C12.2239 10.9998 12.0001 10.7759 12.0001 10.4998ZM10.5001 11.9998C10.7762 11.9998 11.0001 12.2236 11.0001 12.4997V14.4997C11.0001 14.7758 10.7762 14.9997 10.5001 14.9997C10.224 14.9997 10.0001 14.7758 10.0001 14.4997V12.4997C10.0001 12.2236 10.224 11.9998 10.5001 11.9998ZM12.1462 12.1462C12.3415 11.951 12.658 11.951 12.8533 12.1462L14.3533 13.6462C14.5485 13.8415 14.5485 14.158 14.3533 14.3533C14.158 14.5485 13.8414 14.5485 13.6462 14.3533L12.1462 12.8533C11.951 12.6581 11.951 12.3415 12.1462 12.1462ZM7.76478 3.69938C8.19177 3.27238 8.35724 3.11008 8.5116 3.00522C9.18794 2.54577 10.0431 2.53677 10.6784 2.95401C10.8227 3.04875 10.9767 3.19911 11.3886 3.61099C11.8005 4.02287 11.9509 4.17694 12.0456 4.3212C12.4628 4.95653 12.4539 5.81168 11.9944 6.48802C11.8895 6.64238 11.7272 6.80785 11.3002 7.23484L10.6815 7.85354C10.4863 8.0488 10.4863 8.36538 10.6815 8.56064C10.8768 8.75589 11.1934 8.75589 11.3886 8.56064L12.0073 7.94193L12.0502 7.89903C12.4199 7.5295 12.6564 7.29303 12.8216 7.04993C13.4968 6.05598 13.5316 4.7623 12.8815 3.77228C12.7229 3.53083 12.4918 3.29982 12.1404 2.94853L12.0957 2.9039L12.0511 2.85925C11.6998 2.50782 11.4688 2.27672 11.2273 2.11816C10.2373 1.46798 8.94364 1.50284 7.94968 2.17805C7.70659 2.34319 7.47012 2.57973 7.1006 2.94936L7.1006 2.94937L7.05769 2.99228L6.43898 3.61099C6.24372 3.80625 6.24372 4.12282 6.43898 4.31808C6.63424 4.51334 6.95081 4.51334 7.14607 4.31808L7.76478 3.69938ZM2.99191 7.05807L2.94899 7.10097C2.57935 7.4705 2.34282 7.70697 2.17767 7.95006C1.50246 8.94401 1.4676 10.2377 2.11778 11.2277C2.27634 11.4692 2.50744 11.7002 2.85886 12.0515L2.85888 12.0515L2.90352 12.0961L2.94815 12.1407L2.94815 12.1407L2.94817 12.1408C3.29945 12.4922 3.53045 12.7233 3.7719 12.8818C4.76193 13.532 6.0556 13.4972 7.04956 12.8219C7.29265 12.6568 7.52912 12.4203 7.89865 12.0506L7.94155 12.0077L8.56026 11.389C8.75552 11.1937 8.75552 10.8772 8.56026 10.6819C8.365 10.4867 8.04842 10.4867 7.85317 10.6819L7.23446 11.3006C6.80747 11.7276 6.642 11.8899 6.48764 11.9948C5.8113 12.4542 4.95615 12.4632 4.32082 12.046C4.17656 11.9512 4.02249 11.8009 3.61061 11.389C3.19873 10.9771 3.04837 10.8231 2.95363 10.6788C2.53639 10.0435 2.54539 9.18832 3.00484 8.51198C3.10971 8.35761 3.27201 8.19215 3.699 7.76516L4.3177 7.14645C4.51296 6.95119 4.51296 6.63462 4.3177 6.43936C4.12245 6.2441 3.80587 6.2441 3.61061 6.43936L2.99191 7.05807Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2W = [\"color\"];\nvar LinkNone1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2W);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.56427 3.99988C4.58422 3.99989 4.60445 3.99989 4.62496 3.99989H5.49996C5.7761 3.99989 5.99996 4.22375 5.99996 4.49989C5.99996 4.77603 5.7761 4.99989 5.49996 4.99989H4.62496C4.02108 4.99989 3.78932 5.00213 3.60601 5.03713C2.80287 5.1905 2.19181 5.78883 2.03759 6.53312C2.00257 6.70212 1.99996 6.91739 1.99996 7.49989C1.99996 8.08239 2.00257 8.29766 2.03759 8.46666C2.19181 9.21095 2.80287 9.80928 3.60601 9.96265C3.78932 9.99765 4.02108 9.99989 4.62496 9.99989H5.49996C5.7761 9.99989 5.99996 10.2237 5.99996 10.4999C5.99996 10.776 5.7761 10.9999 5.49996 10.9999H4.62496C4.60445 10.9999 4.58422 10.9999 4.56427 10.9999C4.04159 11 3.70712 11 3.41845 10.9449C2.23814 10.7195 1.29871 9.82937 1.05839 8.66955C0.999782 8.38669 0.999848 8.05992 0.999947 7.56301C0.999951 7.54227 0.999955 7.52123 0.999955 7.49989C0.999955 7.47855 0.999951 7.45751 0.999947 7.43677C0.999848 6.93986 0.999782 6.61309 1.05839 6.33023C1.29871 5.17041 2.23814 4.28027 3.41845 4.05488C3.70712 3.99976 4.04159 3.99981 4.56427 3.99988ZM11.3939 5.03713C11.2106 5.00213 10.9788 4.99989 10.375 4.99989H9.49996C9.22381 4.99989 8.99996 4.77603 8.99996 4.49989C8.99996 4.22375 9.22381 3.99989 9.49996 3.99989H10.375C10.3955 3.99989 10.4157 3.99989 10.4356 3.99988C10.9583 3.99981 11.2928 3.99976 11.5815 4.05488C12.7618 4.28027 13.7012 5.17041 13.9415 6.33023C14.0001 6.61309 14.0001 6.93985 14 7.43676C14 7.4575 14 7.47854 14 7.49989C14 7.52124 14 7.54228 14 7.56302C14.0001 8.05992 14.0001 8.38669 13.9415 8.66955C13.7012 9.82937 12.7618 10.7195 11.5815 10.9449C11.2928 11 10.9583 11 10.4356 10.9999C10.4157 10.9999 10.3955 10.9999 10.375 10.9999H9.49996C9.22381 10.9999 8.99996 10.776 8.99996 10.4999C8.99996 10.2237 9.22381 9.99989 9.49996 9.99989H10.375C10.9788 9.99989 11.2106 9.99765 11.3939 9.96265C12.197 9.80928 12.8081 9.21095 12.9623 8.46666C12.9973 8.29766 13 8.08239 13 7.49989C13 6.91739 12.9973 6.70212 12.9623 6.53312C12.8081 5.78883 12.197 5.1905 11.3939 5.03713Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2X = [\"color\"];\nvar LinkNone2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2X);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M10.6788 2.95419C10.0435 2.53694 9.18829 2.54594 8.51194 3.00541C8.35757 3.11027 8.1921 3.27257 7.7651 3.69957L7.14638 4.31829C6.95112 4.51355 6.63454 4.51355 6.43928 4.31829C6.24401 4.12303 6.24401 3.80645 6.43928 3.61119L7.058 2.99247C7.0725 2.97797 7.08679 2.96366 7.1009 2.94955C7.47044 2.57991 7.70691 2.34336 7.95001 2.17822C8.94398 1.50299 10.2377 1.46813 11.2277 2.11832C11.4692 2.27689 11.7002 2.508 12.0515 2.85942C12.0662 2.8741 12.081 2.88898 12.0961 2.90408C12.1112 2.91917 12.1261 2.93405 12.1408 2.94871C12.4922 3.30001 12.7233 3.53102 12.8819 3.77248C13.5321 4.76252 13.4972 6.05623 12.822 7.0502C12.6568 7.2933 12.4203 7.52976 12.0507 7.89929C12.0366 7.9134 12.0222 7.92771 12.0077 7.94221L11.389 8.56093C11.1938 8.7562 10.8772 8.7562 10.6819 8.56093C10.4867 8.36567 10.4867 8.04909 10.6819 7.85383L11.3006 7.23511C11.7276 6.80811 11.8899 6.64264 11.9948 6.48827C12.4543 5.81192 12.4633 4.95675 12.046 4.32141C11.9513 4.17714 11.8009 4.02307 11.389 3.61119C10.9771 3.1993 10.8231 3.04893 10.6788 2.95419ZM4.31796 6.43961C4.51322 6.63487 4.51322 6.95146 4.31796 7.14672L3.69924 7.76544C3.27224 8.19244 3.10993 8.35791 3.00507 8.51227C2.54561 9.18863 2.53661 10.0438 2.95385 10.6791C3.0486 10.8234 3.19896 10.9775 3.61085 11.3894C4.02274 11.8012 4.17681 11.9516 4.32107 12.0464C4.95642 12.4636 5.81158 12.4546 6.48794 11.9951C6.6423 11.8903 6.80777 11.728 7.23477 11.301L7.85349 10.6823C8.04875 10.487 8.36533 10.487 8.5606 10.6823C8.75586 10.8775 8.75586 11.1941 8.5606 11.3894L7.94188 12.0081C7.92738 12.0226 7.91307 12.0369 7.89897 12.051C7.52943 12.4206 7.29296 12.6572 7.04986 12.8223C6.05589 13.4976 4.76219 13.5324 3.77214 12.8822C3.53068 12.7237 3.29967 12.4925 2.94837 12.1411C2.93371 12.1264 2.91883 12.1116 2.90374 12.0965C2.88865 12.0814 2.87377 12.0665 2.8591 12.0518C2.50766 11.7005 2.27656 11.4695 2.11799 11.2281C1.4678 10.238 1.50265 8.94432 2.17788 7.95035C2.34303 7.70724 2.57957 7.47077 2.94922 7.10124C2.96333 7.08713 2.97763 7.07283 2.99213 7.05833L3.61085 6.43961C3.80611 6.24435 4.12269 6.24435 4.31796 6.43961Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2Y = [\"color\"];\nvar LinkedInLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2Y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 1C1.44772 1 1 1.44772 1 2V13C1 13.5523 1.44772 14 2 14H13C13.5523 14 14 13.5523 14 13V2C14 1.44772 13.5523 1 13 1H2ZM3.05 6H4.95V12H3.05V6ZM5.075 4.005C5.075 4.59871 4.59371 5.08 4 5.08C3.4063 5.08 2.925 4.59871 2.925 4.005C2.925 3.41129 3.4063 2.93 4 2.93C4.59371 2.93 5.075 3.41129 5.075 4.005ZM12 8.35713C12 6.55208 10.8334 5.85033 9.67449 5.85033C9.29502 5.83163 8.91721 5.91119 8.57874 6.08107C8.32172 6.21007 8.05265 6.50523 7.84516 7.01853H7.79179V6.00044H6V12.0047H7.90616V8.8112C7.8786 8.48413 7.98327 8.06142 8.19741 7.80987C8.41156 7.55832 8.71789 7.49825 8.95015 7.46774H9.02258C9.62874 7.46774 10.0786 7.84301 10.0786 8.78868V12.0047H11.9847L12 8.35713Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2Z = [\"color\"];\nvar ListBulletIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2Z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25ZM4 4.5C4 4.22386 4.22386 4 4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5ZM2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5ZM1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2_ = [\"color\"];\nvar LockClosedIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2_);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5 4.63601C5 3.76031 5.24219 3.1054 5.64323 2.67357C6.03934 2.24705 6.64582 1.9783 7.5014 1.9783C8.35745 1.9783 8.96306 2.24652 9.35823 2.67208C9.75838 3.10299 10 3.75708 10 4.63325V5.99999H5V4.63601ZM4 5.99999V4.63601C4 3.58148 4.29339 2.65754 4.91049 1.99307C5.53252 1.32329 6.42675 0.978302 7.5014 0.978302C8.57583 0.978302 9.46952 1.32233 10.091 1.99162C10.7076 2.65557 11 3.57896 11 4.63325V5.99999H12C12.5523 5.99999 13 6.44771 13 6.99999V13C13 13.5523 12.5523 14 12 14H3C2.44772 14 2 13.5523 2 13V6.99999C2 6.44771 2.44772 5.99999 3 5.99999H4ZM3 6.99999H12V13H3V6.99999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$2$ = [\"color\"];\nvar LockOpen1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$2$);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.4986 0C6.3257 0 5.36107 0.38943 4.73753 1.19361C4.23745 1.83856 4 2.68242 4 3.63325H5C5 2.84313 5.19691 2.23312 5.5278 1.80636C5.91615 1.30552 6.55152 1 7.4986 1C8.35683 1 8.96336 1.26502 9.35846 1.68623C9.75793 2.11211 10 2.76044 10 3.63601V6H3C2.44772 6 2 6.44772 2 7V13C2 13.5523 2.44772 14 3 14H12C12.5523 14 13 13.5523 13 13V7C13 6.44771 12.5523 6 12 6H11V3.63601C11 2.58135 10.7065 1.66167 10.0878 1.0021C9.46477 0.337871 8.57061 0 7.4986 0ZM3 7H12V13H3V7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$30 = [\"color\"];\nvar LockOpen2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$30);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9 3.63601C9 2.76044 9.24207 2.11211 9.64154 1.68623C10.0366 1.26502 10.6432 1 11.5014 1C12.4485 1 13.0839 1.30552 13.4722 1.80636C13.8031 2.23312 14 2.84313 14 3.63325H15C15 2.68242 14.7626 1.83856 14.2625 1.19361C13.6389 0.38943 12.6743 0 11.5014 0C10.4294 0 9.53523 0.337871 8.91218 1.0021C8.29351 1.66167 8 2.58135 8 3.63601V6H1C0.447715 6 0 6.44772 0 7V13C0 13.5523 0.447715 14 1 14H10C10.5523 14 11 13.5523 11 13V7C11 6.44772 10.5523 6 10 6H9V3.63601ZM1 7H10V13H1V7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$31 = [\"color\"];\nvar LoopIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$31);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.35355 1.85355C3.54882 1.65829 3.54882 1.34171 3.35355 1.14645C3.15829 0.951184 2.84171 0.951184 2.64645 1.14645L0.646447 3.14645C0.451184 3.34171 0.451184 3.65829 0.646447 3.85355L2.64645 5.85355C2.84171 6.04882 3.15829 6.04882 3.35355 5.85355C3.54882 5.65829 3.54882 5.34171 3.35355 5.14645L2.20711 4H9.5C11.433 4 13 5.567 13 7.5C13 7.77614 13.2239 8 13.5 8C13.7761 8 14 7.77614 14 7.5C14 5.01472 11.9853 3 9.5 3H2.20711L3.35355 1.85355ZM2 7.5C2 7.22386 1.77614 7 1.5 7C1.22386 7 1 7.22386 1 7.5C1 9.98528 3.01472 12 5.5 12H12.7929L11.6464 13.1464C11.4512 13.3417 11.4512 13.6583 11.6464 13.8536C11.8417 14.0488 12.1583 14.0488 12.3536 13.8536L14.3536 11.8536C14.5488 11.6583 14.5488 11.3417 14.3536 11.1464L12.3536 9.14645C12.1583 8.95118 11.8417 8.95118 11.6464 9.14645C11.4512 9.34171 11.4512 9.65829 11.6464 9.85355L12.7929 11H5.5C3.567 11 2 9.433 2 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$32 = [\"color\"];\nvar MagicWandIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$32);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.9 0.499976C13.9 0.279062 13.7209 0.0999756 13.5 0.0999756C13.2791 0.0999756 13.1 0.279062 13.1 0.499976V1.09998H12.5C12.2791 1.09998 12.1 1.27906 12.1 1.49998C12.1 1.72089 12.2791 1.89998 12.5 1.89998H13.1V2.49998C13.1 2.72089 13.2791 2.89998 13.5 2.89998C13.7209 2.89998 13.9 2.72089 13.9 2.49998V1.89998H14.5C14.7209 1.89998 14.9 1.72089 14.9 1.49998C14.9 1.27906 14.7209 1.09998 14.5 1.09998H13.9V0.499976ZM11.8536 3.14642C12.0488 3.34168 12.0488 3.65826 11.8536 3.85353L10.8536 4.85353C10.6583 5.04879 10.3417 5.04879 10.1465 4.85353C9.9512 4.65827 9.9512 4.34169 10.1465 4.14642L11.1464 3.14643C11.3417 2.95116 11.6583 2.95116 11.8536 3.14642ZM9.85357 5.14642C10.0488 5.34168 10.0488 5.65827 9.85357 5.85353L2.85355 12.8535C2.65829 13.0488 2.34171 13.0488 2.14645 12.8535C1.95118 12.6583 1.95118 12.3417 2.14645 12.1464L9.14646 5.14642C9.34172 4.95116 9.65831 4.95116 9.85357 5.14642ZM13.5 5.09998C13.7209 5.09998 13.9 5.27906 13.9 5.49998V6.09998H14.5C14.7209 6.09998 14.9 6.27906 14.9 6.49998C14.9 6.72089 14.7209 6.89998 14.5 6.89998H13.9V7.49998C13.9 7.72089 13.7209 7.89998 13.5 7.89998C13.2791 7.89998 13.1 7.72089 13.1 7.49998V6.89998H12.5C12.2791 6.89998 12.1 6.72089 12.1 6.49998C12.1 6.27906 12.2791 6.09998 12.5 6.09998H13.1V5.49998C13.1 5.27906 13.2791 5.09998 13.5 5.09998ZM8.90002 0.499976C8.90002 0.279062 8.72093 0.0999756 8.50002 0.0999756C8.2791 0.0999756 8.10002 0.279062 8.10002 0.499976V1.09998H7.50002C7.2791 1.09998 7.10002 1.27906 7.10002 1.49998C7.10002 1.72089 7.2791 1.89998 7.50002 1.89998H8.10002V2.49998C8.10002 2.72089 8.2791 2.89998 8.50002 2.89998C8.72093 2.89998 8.90002 2.72089 8.90002 2.49998V1.89998H9.50002C9.72093 1.89998 9.90002 1.72089 9.90002 1.49998C9.90002 1.27906 9.72093 1.09998 9.50002 1.09998H8.90002V0.499976Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$33 = [\"color\"];\nvar MagnifyingGlassIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$33);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$34 = [\"color\"];\nvar MarginIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$34);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.49988 2.00012C1.77602 2.00012 1.99988 1.77626 1.99988 1.50012C1.99988 1.22398 1.77602 1.00012 1.49988 1.00012C1.22374 1.00012 0.999878 1.22398 0.999878 1.50012C0.999878 1.77626 1.22374 2.00012 1.49988 2.00012ZM4.49988 2.00012C4.77602 2.00012 4.99988 1.77626 4.99988 1.50012C4.99988 1.22398 4.77602 1.00012 4.49988 1.00012C4.22374 1.00012 3.99988 1.22398 3.99988 1.50012C3.99988 1.77626 4.22374 2.00012 4.49988 2.00012ZM7.99988 1.50012C7.99988 1.77626 7.77602 2.00012 7.49988 2.00012C7.22374 2.00012 6.99988 1.77626 6.99988 1.50012C6.99988 1.22398 7.22374 1.00012 7.49988 1.00012C7.77602 1.00012 7.99988 1.22398 7.99988 1.50012ZM10.4999 2.00012C10.776 2.00012 10.9999 1.77626 10.9999 1.50012C10.9999 1.22398 10.776 1.00012 10.4999 1.00012C10.2237 1.00012 9.99988 1.22398 9.99988 1.50012C9.99988 1.77626 10.2237 2.00012 10.4999 2.00012ZM13.9999 1.50012C13.9999 1.77626 13.776 2.00012 13.4999 2.00012C13.2237 2.00012 12.9999 1.77626 12.9999 1.50012C12.9999 1.22398 13.2237 1.00012 13.4999 1.00012C13.776 1.00012 13.9999 1.22398 13.9999 1.50012ZM1.49988 14.0001C1.77602 14.0001 1.99988 13.7763 1.99988 13.5001C1.99988 13.224 1.77602 13.0001 1.49988 13.0001C1.22374 13.0001 0.999878 13.224 0.999878 13.5001C0.999878 13.7763 1.22374 14.0001 1.49988 14.0001ZM1.99988 10.5001C1.99988 10.7763 1.77602 11.0001 1.49988 11.0001C1.22374 11.0001 0.999878 10.7763 0.999878 10.5001C0.999878 10.224 1.22374 10.0001 1.49988 10.0001C1.77602 10.0001 1.99988 10.224 1.99988 10.5001ZM1.49988 8.00012C1.77602 8.00012 1.99988 7.77626 1.99988 7.50012C1.99988 7.22398 1.77602 7.00012 1.49988 7.00012C1.22374 7.00012 0.999878 7.22398 0.999878 7.50012C0.999878 7.77626 1.22374 8.00012 1.49988 8.00012ZM1.99988 4.50012C1.99988 4.77626 1.77602 5.00012 1.49988 5.00012C1.22374 5.00012 0.999878 4.77626 0.999878 4.50012C0.999878 4.22398 1.22374 4.00012 1.49988 4.00012C1.77602 4.00012 1.99988 4.22398 1.99988 4.50012ZM13.4999 11.0001C13.776 11.0001 13.9999 10.7763 13.9999 10.5001C13.9999 10.224 13.776 10.0001 13.4999 10.0001C13.2237 10.0001 12.9999 10.224 12.9999 10.5001C12.9999 10.7763 13.2237 11.0001 13.4999 11.0001ZM13.9999 7.50012C13.9999 7.77626 13.776 8.00012 13.4999 8.00012C13.2237 8.00012 12.9999 7.77626 12.9999 7.50012C12.9999 7.22398 13.2237 7.00012 13.4999 7.00012C13.776 7.00012 13.9999 7.22398 13.9999 7.50012ZM13.4999 5.00012C13.776 5.00012 13.9999 4.77626 13.9999 4.50012C13.9999 4.22398 13.776 4.00012 13.4999 4.00012C13.2237 4.00012 12.9999 4.22398 12.9999 4.50012C12.9999 4.77626 13.2237 5.00012 13.4999 5.00012ZM4.99988 13.5001C4.99988 13.7763 4.77602 14.0001 4.49988 14.0001C4.22374 14.0001 3.99988 13.7763 3.99988 13.5001C3.99988 13.224 4.22374 13.0001 4.49988 13.0001C4.77602 13.0001 4.99988 13.224 4.99988 13.5001ZM7.49988 14.0001C7.77602 14.0001 7.99988 13.7763 7.99988 13.5001C7.99988 13.224 7.77602 13.0001 7.49988 13.0001C7.22374 13.0001 6.99988 13.224 6.99988 13.5001C6.99988 13.7763 7.22374 14.0001 7.49988 14.0001ZM10.9999 13.5001C10.9999 13.7763 10.776 14.0001 10.4999 14.0001C10.2237 14.0001 9.99988 13.7763 9.99988 13.5001C9.99988 13.224 10.2237 13.0001 10.4999 13.0001C10.776 13.0001 10.9999 13.224 10.9999 13.5001ZM13.4999 14.0001C13.776 14.0001 13.9999 13.7763 13.9999 13.5001C13.9999 13.224 13.776 13.0001 13.4999 13.0001C13.2237 13.0001 12.9999 13.224 12.9999 13.5001C12.9999 13.7763 13.2237 14.0001 13.4999 14.0001ZM3.99988 5.00012C3.99988 4.44784 4.44759 4.00012 4.99988 4.00012H9.99988C10.5522 4.00012 10.9999 4.44784 10.9999 5.00012V10.0001C10.9999 10.5524 10.5522 11.0001 9.99988 11.0001H4.99988C4.44759 11.0001 3.99988 10.5524 3.99988 10.0001V5.00012ZM4.99988 5.00012H9.99988V10.0001H4.99988V5.00012Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$35 = [\"color\"];\nvar MaskOffIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$35);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 2H14V13H1L1 2ZM0 2C0 1.44772 0.447715 1 1 1H14C14.5523 1 15 1.44772 15 2V13C15 13.5523 14.5523 14 14 14H1C0.447715 14 0 13.5523 0 13V2ZM4.875 7.5C4.875 6.05025 6.05025 4.875 7.5 4.875C8.94975 4.875 10.125 6.05025 10.125 7.5C10.125 8.94975 8.94975 10.125 7.5 10.125C6.05025 10.125 4.875 8.94975 4.875 7.5ZM7.5 3.875C5.49797 3.875 3.875 5.49797 3.875 7.5C3.875 9.50203 5.49797 11.125 7.5 11.125C9.50203 11.125 11.125 9.50203 11.125 7.5C11.125 5.49797 9.50203 3.875 7.5 3.875Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$36 = [\"color\"];\nvar MaskOnIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$36);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 1C0.447715 1 0 1.44772 0 2V13C0 13.5523 0.447715 14 1 14H14C14.5523 14 15 13.5523 15 13V2C15 1.44772 14.5523 1 14 1H1ZM7.5 10.625C9.22589 10.625 10.625 9.22589 10.625 7.5C10.625 5.77411 9.22589 4.375 7.5 4.375C5.77411 4.375 4.375 5.77411 4.375 7.5C4.375 9.22589 5.77411 10.625 7.5 10.625Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$37 = [\"color\"];\nvar MinusIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$37);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.25 7.5C2.25 7.22386 2.47386 7 2.75 7H12.25C12.5261 7 12.75 7.22386 12.75 7.5C12.75 7.77614 12.5261 8 12.25 8H2.75C2.47386 8 2.25 7.77614 2.25 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$38 = [\"color\"];\nvar MinusCircledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$38);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM4.50003 7C4.22389 7 4.00003 7.22386 4.00003 7.5C4.00003 7.77614 4.22389 8 4.50003 8H10.5C10.7762 8 11 7.77614 11 7.5C11 7.22386 10.7762 7 10.5 7H4.50003Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$39 = [\"color\"];\nvar MixIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$39);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.14921 3.99996C2.14921 2.97778 2.97784 2.14915 4.00002 2.14915C5.02219 2.14915 5.85083 2.97778 5.85083 3.99996C5.85083 5.02213 5.02219 5.85077 4.00002 5.85077C2.97784 5.85077 2.14921 5.02213 2.14921 3.99996ZM4.00002 1.24915C2.48079 1.24915 1.24921 2.48073 1.24921 3.99996C1.24921 5.51919 2.48079 6.75077 4.00002 6.75077C5.51925 6.75077 6.75083 5.51919 6.75083 3.99996C6.75083 2.48073 5.51925 1.24915 4.00002 1.24915ZM5.82034 11.0001L2.49998 12.8369V9.16331L5.82034 11.0001ZM2.63883 8.21159C2.17228 7.9535 1.59998 8.29093 1.59998 8.82411V13.1761C1.59998 13.7093 2.17228 14.0467 2.63883 13.7886L6.57235 11.6126C7.05389 11.3462 7.05389 10.654 6.57235 10.3876L2.63883 8.21159ZM8.30001 9.00003C8.30001 8.61343 8.61341 8.30003 9.00001 8.30003H13C13.3866 8.30003 13.7 8.61343 13.7 9.00003V13C13.7 13.3866 13.3866 13.7 13 13.7H9.00001C8.61341 13.7 8.30001 13.3866 8.30001 13V9.00003ZM9.20001 9.20003V12.8H12.8V9.20003H9.20001ZM13.4432 2.19311C13.6189 2.01737 13.6189 1.73245 13.4432 1.55671C13.2675 1.38098 12.9826 1.38098 12.8068 1.55671L11 3.36353L9.19321 1.55674C9.01748 1.381 8.73255 1.381 8.55682 1.55674C8.38108 1.73247 8.38108 2.0174 8.55682 2.19313L10.3636 3.99992L8.55682 5.80671C8.38108 5.98245 8.38108 6.26737 8.55682 6.44311C8.73255 6.61885 9.01748 6.61885 9.19321 6.44311L11 4.63632L12.8068 6.44314C12.9826 6.61887 13.2675 6.61887 13.4432 6.44314C13.6189 6.2674 13.6189 5.98247 13.4432 5.80674L11.6364 3.99992L13.4432 2.19311Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3a = [\"color\"];\nvar MixerHorizontalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3a);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.5 3C4.67157 3 4 3.67157 4 4.5C4 5.32843 4.67157 6 5.5 6C6.32843 6 7 5.32843 7 4.5C7 3.67157 6.32843 3 5.5 3ZM3 5C3.01671 5 3.03323 4.99918 3.04952 4.99758C3.28022 6.1399 4.28967 7 5.5 7C6.71033 7 7.71978 6.1399 7.95048 4.99758C7.96677 4.99918 7.98329 5 8 5H13.5C13.7761 5 14 4.77614 14 4.5C14 4.22386 13.7761 4 13.5 4H8C7.98329 4 7.96677 4.00082 7.95048 4.00242C7.71978 2.86009 6.71033 2 5.5 2C4.28967 2 3.28022 2.86009 3.04952 4.00242C3.03323 4.00082 3.01671 4 3 4H1.5C1.22386 4 1 4.22386 1 4.5C1 4.77614 1.22386 5 1.5 5H3ZM11.9505 10.9976C11.7198 12.1399 10.7103 13 9.5 13C8.28967 13 7.28022 12.1399 7.04952 10.9976C7.03323 10.9992 7.01671 11 7 11H1.5C1.22386 11 1 10.7761 1 10.5C1 10.2239 1.22386 10 1.5 10H7C7.01671 10 7.03323 10.0008 7.04952 10.0024C7.28022 8.8601 8.28967 8 9.5 8C10.7103 8 11.7198 8.8601 11.9505 10.0024C11.9668 10.0008 11.9833 10 12 10H13.5C13.7761 10 14 10.2239 14 10.5C14 10.7761 13.7761 11 13.5 11H12C11.9833 11 11.9668 10.9992 11.9505 10.9976ZM8 10.5C8 9.67157 8.67157 9 9.5 9C10.3284 9 11 9.67157 11 10.5C11 11.3284 10.3284 12 9.5 12C8.67157 12 8 11.3284 8 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3b = [\"color\"];\nvar MixerVerticalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3b);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5 1.5C5 1.22386 4.77614 1 4.5 1C4.22386 1 4 1.22386 4 1.5L4 7C4 7.01671 4.00082 7.03323 4.00242 7.04952C2.86009 7.28022 2 8.28967 2 9.5C2 10.7103 2.86009 11.7198 4.00242 11.9505C4.00082 11.9668 4 11.9833 4 12V13.5C4 13.7761 4.22386 14 4.5 14C4.77614 14 5 13.7761 5 13.5V12C5 11.9833 4.99918 11.9668 4.99758 11.9505C6.1399 11.7198 7 10.7103 7 9.5C7 8.28967 6.1399 7.28022 4.99758 7.04952C4.99918 7.03323 5 7.01671 5 7L5 1.5ZM11 1.5C11 1.22386 10.7761 1 10.5 1C10.2239 1 10 1.22386 10 1.5V3C10 3.01671 10.0008 3.03323 10.0024 3.04952C8.8601 3.28022 8 4.28967 8 5.5C8 6.71033 8.8601 7.71978 10.0024 7.95048C10.0008 7.96677 10 7.98329 10 8V13.5C10 13.7761 10.2239 14 10.5 14C10.7761 14 11 13.7761 11 13.5V8C11 7.98329 10.9992 7.96677 10.9976 7.95048C12.1399 7.71978 13 6.71033 13 5.5C13 4.28967 12.1399 3.28022 10.9976 3.04952C10.9992 3.03323 11 3.01671 11 3V1.5ZM4.5 8C3.67157 8 3 8.67157 3 9.5C3 10.3284 3.67157 11 4.5 11C5.32843 11 6 10.3284 6 9.5C6 8.67157 5.32843 8 4.5 8ZM9 5.5C9 4.67157 9.67157 4 10.5 4C11.3284 4 12 4.67157 12 5.5C12 6.32843 11.3284 7 10.5 7C9.67157 7 9 6.32843 9 5.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3c = [\"color\"];\nvar MobileIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3c);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4 2.5C4 2.22386 4.22386 2 4.5 2H10.5C10.7761 2 11 2.22386 11 2.5V12.5C11 12.7761 10.7761 13 10.5 13H4.5C4.22386 13 4 12.7761 4 12.5V2.5ZM4.5 1C3.67157 1 3 1.67157 3 2.5V12.5C3 13.3284 3.67157 14 4.5 14H10.5C11.3284 14 12 13.3284 12 12.5V2.5C12 1.67157 11.3284 1 10.5 1H4.5ZM6 11.65C5.8067 11.65 5.65 11.8067 5.65 12C5.65 12.1933 5.8067 12.35 6 12.35H9C9.1933 12.35 9.35 12.1933 9.35 12C9.35 11.8067 9.1933 11.65 9 11.65H6Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3d = [\"color\"];\nvar ModulzLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3d);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.25925 3.16667L4.37036 5.33333V1L7.25925 3.16667ZM1 8.22222L3.88889 6.05555L1 3.88889V8.22222ZM1 14L3.88889 11.8333L1 9.66666V14ZM7.74072 8.22222L10.6296 6.05555L7.74072 3.88889V8.22222ZM14 3.16667L11.1111 5.33333V1L14 3.16667ZM11.1111 11.1111L14 8.94444L11.1111 6.77777V11.1111ZM3.88889 11.1111L1 8.94444L3.88889 6.77777V11.1111ZM4.37036 6.05555L7.25925 8.22222V3.88889L4.37036 6.05555ZM3.88889 5.33333L1 3.16667L3.88889 1V5.33333ZM7.74072 3.16667L10.6296 5.33333V1L7.74072 3.16667ZM14 8.22222L11.1111 6.05555L14 3.88889V8.22222ZM11.1111 11.8333L14 14V9.66666L11.1111 11.8333Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3e = [\"color\"];\nvar MoonIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3e);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.89998 0.499976C2.89998 0.279062 2.72089 0.0999756 2.49998 0.0999756C2.27906 0.0999756 2.09998 0.279062 2.09998 0.499976V1.09998H1.49998C1.27906 1.09998 1.09998 1.27906 1.09998 1.49998C1.09998 1.72089 1.27906 1.89998 1.49998 1.89998H2.09998V2.49998C2.09998 2.72089 2.27906 2.89998 2.49998 2.89998C2.72089 2.89998 2.89998 2.72089 2.89998 2.49998V1.89998H3.49998C3.72089 1.89998 3.89998 1.72089 3.89998 1.49998C3.89998 1.27906 3.72089 1.09998 3.49998 1.09998H2.89998V0.499976ZM5.89998 3.49998C5.89998 3.27906 5.72089 3.09998 5.49998 3.09998C5.27906 3.09998 5.09998 3.27906 5.09998 3.49998V4.09998H4.49998C4.27906 4.09998 4.09998 4.27906 4.09998 4.49998C4.09998 4.72089 4.27906 4.89998 4.49998 4.89998H5.09998V5.49998C5.09998 5.72089 5.27906 5.89998 5.49998 5.89998C5.72089 5.89998 5.89998 5.72089 5.89998 5.49998V4.89998H6.49998C6.72089 4.89998 6.89998 4.72089 6.89998 4.49998C6.89998 4.27906 6.72089 4.09998 6.49998 4.09998H5.89998V3.49998ZM1.89998 6.49998C1.89998 6.27906 1.72089 6.09998 1.49998 6.09998C1.27906 6.09998 1.09998 6.27906 1.09998 6.49998V7.09998H0.499976C0.279062 7.09998 0.0999756 7.27906 0.0999756 7.49998C0.0999756 7.72089 0.279062 7.89998 0.499976 7.89998H1.09998V8.49998C1.09998 8.72089 1.27906 8.89997 1.49998 8.89997C1.72089 8.89997 1.89998 8.72089 1.89998 8.49998V7.89998H2.49998C2.72089 7.89998 2.89998 7.72089 2.89998 7.49998C2.89998 7.27906 2.72089 7.09998 2.49998 7.09998H1.89998V6.49998ZM8.54406 0.98184L8.24618 0.941586C8.03275 0.917676 7.90692 1.1655 8.02936 1.34194C8.17013 1.54479 8.29981 1.75592 8.41754 1.97445C8.91878 2.90485 9.20322 3.96932 9.20322 5.10022C9.20322 8.37201 6.82247 11.0878 3.69887 11.6097C3.45736 11.65 3.20988 11.6772 2.96008 11.6906C2.74563 11.702 2.62729 11.9535 2.77721 12.1072C2.84551 12.1773 2.91535 12.2458 2.98667 12.3128L3.05883 12.3795L3.31883 12.6045L3.50684 12.7532L3.62796 12.8433L3.81491 12.9742L3.99079 13.089C4.11175 13.1651 4.23536 13.2375 4.36157 13.3059L4.62496 13.4412L4.88553 13.5607L5.18837 13.6828L5.43169 13.7686C5.56564 13.8128 5.70149 13.8529 5.83857 13.8885C5.94262 13.9155 6.04767 13.9401 6.15405 13.9622C6.27993 13.9883 6.40713 14.0109 6.53544 14.0298L6.85241 14.0685L7.11934 14.0892C7.24637 14.0965 7.37436 14.1002 7.50322 14.1002C11.1483 14.1002 14.1032 11.1453 14.1032 7.50023C14.1032 7.25044 14.0893 7.00389 14.0623 6.76131L14.0255 6.48407C13.991 6.26083 13.9453 6.04129 13.8891 5.82642C13.8213 5.56709 13.7382 5.31398 13.6409 5.06881L13.5279 4.80132L13.4507 4.63542L13.3766 4.48666C13.2178 4.17773 13.0353 3.88295 12.8312 3.60423L12.6782 3.40352L12.4793 3.16432L12.3157 2.98361L12.1961 2.85951L12.0355 2.70246L11.8134 2.50184L11.4925 2.24191L11.2483 2.06498L10.9562 1.87446L10.6346 1.68894L10.3073 1.52378L10.1938 1.47176L9.95488 1.3706L9.67791 1.2669L9.42566 1.1846L9.10075 1.09489L8.83599 1.03486L8.54406 0.98184ZM10.4032 5.30023C10.4032 4.27588 10.2002 3.29829 9.83244 2.40604C11.7623 3.28995 13.1032 5.23862 13.1032 7.50023C13.1032 10.593 10.596 13.1002 7.50322 13.1002C6.63646 13.1002 5.81597 12.9036 5.08355 12.5522C6.5419 12.0941 7.81081 11.2082 8.74322 10.0416C8.87963 10.2284 9.10028 10.3497 9.34928 10.3497C9.76349 10.3497 10.0993 10.0139 10.0993 9.59971C10.0993 9.24256 9.84965 8.94373 9.51535 8.86816C9.57741 8.75165 9.63653 8.63334 9.6926 8.51332C9.88358 8.63163 10.1088 8.69993 10.35 8.69993C11.0403 8.69993 11.6 8.14028 11.6 7.44993C11.6 6.75976 11.0406 6.20024 10.3505 6.19993C10.3853 5.90487 10.4032 5.60464 10.4032 5.30023Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3f = [\"color\"];\nvar MoveIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3f);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.81819 0.93179C7.64245 0.756054 7.35753 0.756054 7.18179 0.93179L5.43179 2.68179C5.25605 2.85753 5.25605 3.14245 5.43179 3.31819C5.60753 3.49392 5.89245 3.49392 6.06819 3.31819L6.99999 2.38638V5.49999C6.99999 5.77613 7.22385 5.99999 7.49999 5.99999C7.77613 5.99999 7.99999 5.77613 7.99999 5.49999V2.38638L8.93179 3.31819C9.10753 3.49392 9.39245 3.49392 9.56819 3.31819C9.74392 3.14245 9.74392 2.85753 9.56819 2.68179L7.81819 0.93179ZM7.99999 9.49999C7.99999 9.22385 7.77613 8.99999 7.49999 8.99999C7.22385 8.99999 6.99999 9.22385 6.99999 9.49999V12.6136L6.06819 11.6818C5.89245 11.5061 5.60753 11.5061 5.43179 11.6818C5.25605 11.8575 5.25605 12.1424 5.43179 12.3182L7.18179 14.0682C7.35753 14.2439 7.64245 14.2439 7.81819 14.0682L9.56819 12.3182C9.74392 12.1424 9.74392 11.8575 9.56819 11.6818C9.39245 11.5061 9.10753 11.5061 8.93179 11.6818L7.99999 12.6136V9.49999ZM8.99999 7.49999C8.99999 7.22385 9.22385 6.99999 9.49999 6.99999H12.6136L11.6818 6.06819C11.5061 5.89245 11.5061 5.60753 11.6818 5.43179C11.8575 5.25605 12.1424 5.25605 12.3182 5.43179L14.0682 7.18179C14.2439 7.35753 14.2439 7.64245 14.0682 7.81819L12.3182 9.56819C12.1424 9.74392 11.8575 9.74392 11.6818 9.56819C11.5061 9.39245 11.5061 9.10753 11.6818 8.93179L12.6136 7.99999H9.49999C9.22385 7.99999 8.99999 7.77613 8.99999 7.49999ZM3.31819 6.06819L2.38638 6.99999H5.49999C5.77613 6.99999 5.99999 7.22385 5.99999 7.49999C5.99999 7.77613 5.77613 7.99999 5.49999 7.99999H2.38638L3.31819 8.93179C3.49392 9.10753 3.49392 9.39245 3.31819 9.56819C3.14245 9.74392 2.85753 9.74392 2.68179 9.56819L0.93179 7.81819C0.756054 7.64245 0.756054 7.35753 0.93179 7.18179L2.68179 5.43179C2.85753 5.25605 3.14245 5.25605 3.31819 5.43179C3.49392 5.60753 3.49392 5.89245 3.31819 6.06819Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3g = [\"color\"];\nvar NotionLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3g);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.25781 3.11684C3.67771 3.45796 3.83523 3.43193 4.62369 3.37933L12.0571 2.93299C12.2147 2.93299 12.0836 2.77571 12.0311 2.74957L10.7965 1.85711C10.56 1.67347 10.2448 1.46315 9.64083 1.51576L2.44308 2.04074C2.18059 2.06677 2.12815 2.19801 2.2327 2.30322L3.25781 3.11684ZM3.7041 4.84917V12.6704C3.7041 13.0907 3.91415 13.248 4.38693 13.222L12.5562 12.7493C13.0292 12.7233 13.0819 12.4341 13.0819 12.0927V4.32397C13.0819 3.98306 12.9508 3.79921 12.6612 3.82545L4.12422 4.32397C3.80918 4.35044 3.7041 4.50803 3.7041 4.84917ZM11.7688 5.26872C11.8212 5.50518 11.7688 5.74142 11.5319 5.76799L11.1383 5.84641V11.6205C10.7965 11.8042 10.4814 11.9092 10.2188 11.9092C9.79835 11.9092 9.69305 11.7779 9.37812 11.3844L6.80345 7.34249V11.2532L7.61816 11.437C7.61816 11.437 7.61816 11.9092 6.96086 11.9092L5.14879 12.0143C5.09615 11.9092 5.14879 11.647 5.33259 11.5944L5.80546 11.4634V6.29276L5.1489 6.24015C5.09625 6.00369 5.22739 5.66278 5.5954 5.63631L7.53935 5.50528L10.2188 9.5998V5.97765L9.53564 5.89924C9.4832 5.61018 9.69305 5.40028 9.95576 5.37425L11.7688 5.26872ZM1.83874 1.33212L9.32557 0.780787C10.245 0.701932 10.4815 0.754753 11.0594 1.17452L13.4492 2.85424C13.8436 3.14309 13.975 3.22173 13.975 3.53661V12.7493C13.975 13.3266 13.7647 13.6681 13.0293 13.7203L4.33492 14.2454C3.78291 14.2717 3.52019 14.193 3.23111 13.8253L1.47116 11.5419C1.1558 11.1216 1.02466 10.8071 1.02466 10.4392V2.25041C1.02466 1.77825 1.23504 1.38441 1.83874 1.33212Z\",\n    fill: color\n  }));\n});\nvar _excluded$3h = [\"color\"];\nvar OpacityIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3h);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 1.5C4.5 4.25 3 6.5 3 9C3 11.4853 5.01472 13.5 7.5 13.5C9.98528 13.5 12 11.4853 12 9C12 6.5 10.5 4.25 7.5 1.5ZM11 9C11 7.11203 9.97315 5.27195 7.5 2.87357C5.02686 5.27195 4 7.11203 4 9C4 10.933 5.567 12.5 7.5 12.5C9.433 12.5 11 10.933 11 9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3i = [\"color\"];\nvar OpenInNewWindowIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3i);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M12 13C12.5523 13 13 12.5523 13 12V3C13 2.44771 12.5523 2 12 2H3C2.44771 2 2 2.44771 2 3V6.5C2 6.77614 2.22386 7 2.5 7C2.77614 7 3 6.77614 3 6.5V3H12V12H8.5C8.22386 12 8 12.2239 8 12.5C8 12.7761 8.22386 13 8.5 13H12ZM9 6.5C9 6.5001 9 6.50021 9 6.50031V6.50035V9.5C9 9.77614 8.77614 10 8.5 10C8.22386 10 8 9.77614 8 9.5V7.70711L2.85355 12.8536C2.65829 13.0488 2.34171 13.0488 2.14645 12.8536C1.95118 12.6583 1.95118 12.3417 2.14645 12.1464L7.29289 7H5.5C5.22386 7 5 6.77614 5 6.5C5 6.22386 5.22386 6 5.5 6H8.5C8.56779 6 8.63244 6.01349 8.69139 6.03794C8.74949 6.06198 8.80398 6.09744 8.85143 6.14433C8.94251 6.23434 8.9992 6.35909 8.99999 6.49708L8.99999 6.49738\",\n    fill: color\n  }));\n});\nvar _excluded$3j = [\"color\"];\nvar OverlineIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3j);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.49985 1.10001C3.27894 1.10001 3.09985 1.27909 3.09985 1.50001C3.09985 1.72092 3.27894 1.90001 3.49985 1.90001H11.4999C11.7208 1.90001 11.8999 1.72092 11.8999 1.50001C11.8999 1.27909 11.7208 1.10001 11.4999 1.10001H3.49985ZM4.99995 4.25001C4.99995 3.97387 4.77609 3.75001 4.49995 3.75001C4.22381 3.75001 3.99995 3.97387 3.99995 4.25001V9.55001C3.99995 11.483 5.56695 13.05 7.49995 13.05C9.43295 13.05 11 11.483 11 9.55001V4.25001C11 3.97387 10.7761 3.75001 10.5 3.75001C10.2238 3.75001 9.99995 3.97387 9.99995 4.25001V9.55001C9.99995 10.9307 8.88066 12.05 7.49995 12.05C6.11924 12.05 4.99995 10.9307 4.99995 9.55001V4.25001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3k = [\"color\"];\nvar PaddingIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3k);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.85714 2H12.1429C12.6162 2 13 2.38376 13 2.85714V12.1429C13 12.6162 12.6162 13 12.1429 13H2.85714C2.38376 13 2 12.6162 2 12.1429V2.85714C2 2.38376 2.38376 2 2.85714 2ZM1 2.85714C1 1.83147 1.83147 1 2.85714 1H12.1429C13.1685 1 14 1.83147 14 2.85714V12.1429C14 13.1685 13.1685 14 12.1429 14H2.85714C1.83147 14 1 13.1685 1 12.1429V2.85714ZM7.49988 5.00012C7.77602 5.00012 7.99988 4.77626 7.99988 4.50012C7.99988 4.22398 7.77602 4.00012 7.49988 4.00012C7.22374 4.00012 6.99988 4.22398 6.99988 4.50012C6.99988 4.77626 7.22374 5.00012 7.49988 5.00012ZM4.49988 11.0001C4.77602 11.0001 4.99988 10.7763 4.99988 10.5001C4.99988 10.224 4.77602 10.0001 4.49988 10.0001C4.22374 10.0001 3.99988 10.224 3.99988 10.5001C3.99988 10.7763 4.22374 11.0001 4.49988 11.0001ZM4.99988 7.50012C4.99988 7.77626 4.77602 8.00012 4.49988 8.00012C4.22374 8.00012 3.99988 7.77626 3.99988 7.50012C3.99988 7.22398 4.22374 7.00012 4.49988 7.00012C4.77602 7.00012 4.99988 7.22398 4.99988 7.50012ZM4.49988 5.00012C4.77602 5.00012 4.99988 4.77626 4.99988 4.50012C4.99988 4.22398 4.77602 4.00012 4.49988 4.00012C4.22374 4.00012 3.99988 4.22398 3.99988 4.50012C3.99988 4.77626 4.22374 5.00012 4.49988 5.00012ZM10.9999 10.5001C10.9999 10.7763 10.776 11.0001 10.4999 11.0001C10.2237 11.0001 9.99988 10.7763 9.99988 10.5001C9.99988 10.224 10.2237 10.0001 10.4999 10.0001C10.776 10.0001 10.9999 10.224 10.9999 10.5001ZM10.4999 8.00012C10.776 8.00012 10.9999 7.77626 10.9999 7.50012C10.9999 7.22398 10.776 7.00012 10.4999 7.00012C10.2237 7.00012 9.99988 7.22398 9.99988 7.50012C9.99988 7.77626 10.2237 8.00012 10.4999 8.00012ZM10.9999 4.50012C10.9999 4.77626 10.776 5.00012 10.4999 5.00012C10.2237 5.00012 9.99988 4.77626 9.99988 4.50012C9.99988 4.22398 10.2237 4.00012 10.4999 4.00012C10.776 4.00012 10.9999 4.22398 10.9999 4.50012ZM7.49988 11.0001C7.77602 11.0001 7.99988 10.7763 7.99988 10.5001C7.99988 10.224 7.77602 10.0001 7.49988 10.0001C7.22374 10.0001 6.99988 10.224 6.99988 10.5001C6.99988 10.7763 7.22374 11.0001 7.49988 11.0001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3l = [\"color\"];\nvar PaperPlaneIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3l);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.20308 1.04312C1.00481 0.954998 0.772341 1.0048 0.627577 1.16641C0.482813 1.32802 0.458794 1.56455 0.568117 1.75196L3.92115 7.50002L0.568117 13.2481C0.458794 13.4355 0.482813 13.672 0.627577 13.8336C0.772341 13.9952 1.00481 14.045 1.20308 13.9569L14.7031 7.95693C14.8836 7.87668 15 7.69762 15 7.50002C15 7.30243 14.8836 7.12337 14.7031 7.04312L1.20308 1.04312ZM4.84553 7.10002L2.21234 2.586L13.2689 7.50002L2.21234 12.414L4.84552 7.90002H9C9.22092 7.90002 9.4 7.72094 9.4 7.50002C9.4 7.27911 9.22092 7.10002 9 7.10002H4.84553Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3m = [\"color\"];\nvar PauseIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3m);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.04995 2.74998C6.04995 2.44623 5.80371 2.19998 5.49995 2.19998C5.19619 2.19998 4.94995 2.44623 4.94995 2.74998V12.25C4.94995 12.5537 5.19619 12.8 5.49995 12.8C5.80371 12.8 6.04995 12.5537 6.04995 12.25V2.74998ZM10.05 2.74998C10.05 2.44623 9.80371 2.19998 9.49995 2.19998C9.19619 2.19998 8.94995 2.44623 8.94995 2.74998V12.25C8.94995 12.5537 9.19619 12.8 9.49995 12.8C9.80371 12.8 10.05 12.5537 10.05 12.25V2.74998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3n = [\"color\"];\nvar Pencil1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3n);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11.8536 1.14645C11.6583 0.951184 11.3417 0.951184 11.1465 1.14645L3.71455 8.57836C3.62459 8.66832 3.55263 8.77461 3.50251 8.89155L2.04044 12.303C1.9599 12.491 2.00189 12.709 2.14646 12.8536C2.29103 12.9981 2.50905 13.0401 2.69697 12.9596L6.10847 11.4975C6.2254 11.4474 6.3317 11.3754 6.42166 11.2855L13.8536 3.85355C14.0488 3.65829 14.0488 3.34171 13.8536 3.14645L11.8536 1.14645ZM4.42166 9.28547L11.5 2.20711L12.7929 3.5L5.71455 10.5784L4.21924 11.2192L3.78081 10.7808L4.42166 9.28547Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3o = [\"color\"];\nvar Pencil2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3o);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.1464 1.14645C12.3417 0.951184 12.6583 0.951184 12.8535 1.14645L14.8535 3.14645C15.0488 3.34171 15.0488 3.65829 14.8535 3.85355L10.9109 7.79618C10.8349 7.87218 10.7471 7.93543 10.651 7.9835L6.72359 9.94721C6.53109 10.0435 6.29861 10.0057 6.14643 9.85355C5.99425 9.70137 5.95652 9.46889 6.05277 9.27639L8.01648 5.34897C8.06455 5.25283 8.1278 5.16507 8.2038 5.08907L12.1464 1.14645ZM12.5 2.20711L8.91091 5.79618L7.87266 7.87267L8.12731 8.12732L10.2038 7.08907L13.7929 3.5L12.5 2.20711ZM9.99998 2L8.99998 3H4.9C4.47171 3 4.18056 3.00039 3.95552 3.01877C3.73631 3.03668 3.62421 3.06915 3.54601 3.10899C3.35785 3.20487 3.20487 3.35785 3.10899 3.54601C3.06915 3.62421 3.03669 3.73631 3.01878 3.95552C3.00039 4.18056 3 4.47171 3 4.9V11.1C3 11.5283 3.00039 11.8194 3.01878 12.0445C3.03669 12.2637 3.06915 12.3758 3.10899 12.454C3.20487 12.6422 3.35785 12.7951 3.54601 12.891C3.62421 12.9309 3.73631 12.9633 3.95552 12.9812C4.18056 12.9996 4.47171 13 4.9 13H11.1C11.5283 13 11.8194 12.9996 12.0445 12.9812C12.2637 12.9633 12.3758 12.9309 12.454 12.891C12.6422 12.7951 12.7951 12.6422 12.891 12.454C12.9309 12.3758 12.9633 12.2637 12.9812 12.0445C12.9996 11.8194 13 11.5283 13 11.1V6.99998L14 5.99998V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H4.9H4.87934C4.47686 14 4.14468 14 3.87409 13.9779C3.59304 13.9549 3.33469 13.9057 3.09202 13.782C2.7157 13.5903 2.40973 13.2843 2.21799 12.908C2.09434 12.6653 2.04506 12.407 2.0221 12.1259C1.99999 11.8553 1.99999 11.5231 2 11.1207V11.1206V11.1V4.9V4.87935V4.87932V4.87931C1.99999 4.47685 1.99999 4.14468 2.0221 3.87409C2.04506 3.59304 2.09434 3.33469 2.21799 3.09202C2.40973 2.71569 2.7157 2.40973 3.09202 2.21799C3.33469 2.09434 3.59304 2.04506 3.87409 2.0221C4.14468 1.99999 4.47685 1.99999 4.87932 2H4.87935H4.9H9.99998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3p = [\"color\"];\nvar PersonIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3p);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 0.875C5.49797 0.875 3.875 2.49797 3.875 4.5C3.875 6.15288 4.98124 7.54738 6.49373 7.98351C5.2997 8.12901 4.27557 8.55134 3.50407 9.31167C2.52216 10.2794 2.02502 11.72 2.02502 13.5999C2.02502 13.8623 2.23769 14.0749 2.50002 14.0749C2.76236 14.0749 2.97502 13.8623 2.97502 13.5999C2.97502 11.8799 3.42786 10.7206 4.17091 9.9883C4.91536 9.25463 6.02674 8.87499 7.49995 8.87499C8.97317 8.87499 10.0846 9.25463 10.8291 9.98831C11.5721 10.7206 12.025 11.8799 12.025 13.5999C12.025 13.8623 12.2376 14.0749 12.5 14.0749C12.7623 14.075 12.975 13.8623 12.975 13.6C12.975 11.72 12.4778 10.2794 11.4959 9.31166C10.7244 8.55135 9.70025 8.12903 8.50625 7.98352C10.0187 7.5474 11.125 6.15289 11.125 4.5C11.125 2.49797 9.50203 0.875 7.5 0.875ZM4.825 4.5C4.825 3.02264 6.02264 1.825 7.5 1.825C8.97736 1.825 10.175 3.02264 10.175 4.5C10.175 5.97736 8.97736 7.175 7.5 7.175C6.02264 7.175 4.825 5.97736 4.825 4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3q = [\"color\"];\nvar PieChartIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.85001 7.50043C1.85001 4.37975 4.37963 1.85001 7.50001 1.85001C10.6204 1.85001 13.15 4.37975 13.15 7.50043C13.15 10.6211 10.6204 13.1509 7.50001 13.1509C4.37963 13.1509 1.85001 10.6211 1.85001 7.50043ZM7.50001 0.850006C3.82728 0.850006 0.850006 3.82753 0.850006 7.50043C0.850006 11.1733 3.82728 14.1509 7.50001 14.1509C11.1727 14.1509 14.15 11.1733 14.15 7.50043C14.15 3.82753 11.1727 0.850006 7.50001 0.850006ZM7.00001 8.00001V3.12811C7.16411 3.10954 7.33094 3.10001 7.50001 3.10001C9.93006 3.10001 11.9 5.07014 11.9 7.50043C11.9 7.66935 11.8905 7.83604 11.872 8.00001H7.00001Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3r = [\"color\"];\nvar PilcrowIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3r);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3 5.5C3 7.983 4.99169 9 7 9V12.5C7 12.7761 7.22386 13 7.5 13C7.77614 13 8 12.7761 8 12.5V9V3.1H9V12.5C9 12.7761 9.22386 13 9.5 13C9.77614 13 10 12.7761 10 12.5V3.1H11.5C11.8038 3.1 12.05 2.85376 12.05 2.55C12.05 2.24624 11.8038 2 11.5 2H9.5H8H7.5H7C4.99169 2 3 3.017 3 5.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3s = [\"color\"];\nvar PinBottomIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3s);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.5 13.95C13.7485 13.95 13.95 13.7485 13.95 13.5C13.95 13.2514 13.7485 13.05 13.5 13.05L1.49995 13.05C1.25142 13.05 1.04995 13.2514 1.04995 13.5C1.04995 13.7485 1.25142 13.95 1.49995 13.95L13.5 13.95ZM11.0681 7.5683C11.2439 7.39257 11.2439 7.10764 11.0681 6.93191C10.8924 6.75617 10.6075 6.75617 10.4317 6.93191L7.94993 9.41371L7.94993 1.49998C7.94993 1.25146 7.74846 1.04998 7.49993 1.04998C7.2514 1.04998 7.04993 1.25146 7.04993 1.49998L7.04993 9.41371L4.56813 6.93191C4.39239 6.75617 4.10746 6.75617 3.93173 6.93191C3.75599 7.10764 3.75599 7.39257 3.93173 7.5683L7.18173 10.8183C7.35746 10.994 7.64239 10.994 7.81812 10.8183L11.0681 7.5683Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3t = [\"color\"];\nvar PinLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3t);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.05005 13.5C2.05005 13.7485 2.25152 13.95 2.50005 13.95C2.74858 13.95 2.95005 13.7485 2.95005 13.5L2.95005 1.49995C2.95005 1.25142 2.74858 1.04995 2.50005 1.04995C2.25152 1.04995 2.05005 1.25142 2.05005 1.49995L2.05005 13.5ZM8.4317 11.0681C8.60743 11.2439 8.89236 11.2439 9.06809 11.0681C9.24383 10.8924 9.24383 10.6075 9.06809 10.4317L6.58629 7.94993L14.5 7.94993C14.7485 7.94993 14.95 7.74846 14.95 7.49993C14.95 7.2514 14.7485 7.04993 14.5 7.04993L6.58629 7.04993L9.06809 4.56813C9.24383 4.39239 9.24383 4.10746 9.06809 3.93173C8.89236 3.75599 8.60743 3.75599 8.4317 3.93173L5.1817 7.18173C5.00596 7.35746 5.00596 7.64239 5.1817 7.81812L8.4317 11.0681Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3u = [\"color\"];\nvar PinRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3u);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.95 1.50005C12.95 1.25152 12.7485 1.05005 12.5 1.05005C12.2514 1.05005 12.05 1.25152 12.05 1.50005L12.05 13.5C12.05 13.7486 12.2514 13.95 12.5 13.95C12.7485 13.95 12.95 13.7486 12.95 13.5L12.95 1.50005ZM6.5683 3.93188C6.39257 3.75614 6.10764 3.75614 5.93191 3.93188C5.75617 4.10761 5.75617 4.39254 5.93191 4.56827L8.41371 7.05007L0.499984 7.05007C0.251456 7.05007 0.0499847 7.25155 0.0499847 7.50007C0.0499846 7.7486 0.251457 7.95007 0.499984 7.95007L8.41371 7.95007L5.93191 10.4319C5.75617 10.6076 5.75617 10.8925 5.93191 11.0683C6.10764 11.244 6.39257 11.244 6.56831 11.0683L9.8183 7.81827C9.99404 7.64254 9.99404 7.35761 9.8183 7.18188L6.5683 3.93188Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3v = [\"color\"];\nvar PinTopIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3v);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.50005 1.05005C1.25152 1.05005 1.05005 1.25152 1.05005 1.50005C1.05005 1.74858 1.25152 1.95005 1.50005 1.95005L13.5 1.95005C13.7486 1.95005 13.95 1.74858 13.95 1.50005C13.95 1.25152 13.7486 1.05005 13.5 1.05005H1.50005ZM3.93188 7.43169C3.75614 7.60743 3.75614 7.89236 3.93188 8.06809C4.10761 8.24383 4.39254 8.24383 4.56827 8.06809L7.05007 5.58629V13.5C7.05007 13.7485 7.25155 13.95 7.50007 13.95C7.7486 13.95 7.95007 13.7485 7.95007 13.5L7.95007 5.58629L10.4319 8.06809C10.6076 8.24383 10.8925 8.24383 11.0683 8.06809C11.244 7.89235 11.244 7.60743 11.0683 7.43169L7.81827 4.18169C7.64254 4.00596 7.35761 4.00596 7.18188 4.18169L3.93188 7.43169Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3w = [\"color\"];\nvar PlayIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3w);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.24182 2.32181C3.3919 2.23132 3.5784 2.22601 3.73338 2.30781L12.7334 7.05781C12.8974 7.14436 13 7.31457 13 7.5C13 7.68543 12.8974 7.85564 12.7334 7.94219L3.73338 12.6922C3.5784 12.774 3.3919 12.7687 3.24182 12.6782C3.09175 12.5877 3 12.4252 3 12.25V2.75C3 2.57476 3.09175 2.4123 3.24182 2.32181ZM4 3.57925V11.4207L11.4288 7.5L4 3.57925Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3x = [\"color\"];\nvar PlusIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3x);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8 2.75C8 2.47386 7.77614 2.25 7.5 2.25C7.22386 2.25 7 2.47386 7 2.75V7H2.75C2.47386 7 2.25 7.22386 2.25 7.5C2.25 7.77614 2.47386 8 2.75 8H7V12.25C7 12.5261 7.22386 12.75 7.5 12.75C7.77614 12.75 8 12.5261 8 12.25V8H12.25C12.5261 8 12.75 7.77614 12.75 7.5C12.75 7.22386 12.5261 7 12.25 7H8V2.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3y = [\"color\"];\nvar PlusCircledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM7.50003 4C7.77617 4 8.00003 4.22386 8.00003 4.5V7H10.5C10.7762 7 11 7.22386 11 7.5C11 7.77614 10.7762 8 10.5 8H8.00003V10.5C8.00003 10.7761 7.77617 11 7.50003 11C7.22389 11 7.00003 10.7761 7.00003 10.5V8H4.50003C4.22389 8 4.00003 7.77614 4.00003 7.5C4.00003 7.22386 4.22389 7 4.50003 7H7.00003V4.5C7.00003 4.22386 7.22389 4 7.50003 4Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3z = [\"color\"];\nvar QuestionMarkIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.07505 4.10001C5.07505 2.91103 6.25727 1.92502 7.50005 1.92502C8.74283 1.92502 9.92505 2.91103 9.92505 4.10001C9.92505 5.19861 9.36782 5.71436 8.61854 6.37884L8.58757 6.4063C7.84481 7.06467 6.92505 7.87995 6.92505 9.5C6.92505 9.81757 7.18248 10.075 7.50005 10.075C7.81761 10.075 8.07505 9.81757 8.07505 9.5C8.07505 8.41517 8.62945 7.90623 9.38156 7.23925L9.40238 7.22079C10.1496 6.55829 11.075 5.73775 11.075 4.10001C11.075 2.12757 9.21869 0.775024 7.50005 0.775024C5.7814 0.775024 3.92505 2.12757 3.92505 4.10001C3.92505 4.41758 4.18249 4.67501 4.50005 4.67501C4.81761 4.67501 5.07505 4.41758 5.07505 4.10001ZM7.50005 13.3575C7.9833 13.3575 8.37505 12.9657 8.37505 12.4825C8.37505 11.9992 7.9833 11.6075 7.50005 11.6075C7.0168 11.6075 6.62505 11.9992 6.62505 12.4825C6.62505 12.9657 7.0168 13.3575 7.50005 13.3575Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3A = [\"color\"];\nvar QuestionMarkCircledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3A);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877075 7.49972C0.877075 3.84204 3.84222 0.876892 7.49991 0.876892C11.1576 0.876892 14.1227 3.84204 14.1227 7.49972C14.1227 11.1574 11.1576 14.1226 7.49991 14.1226C3.84222 14.1226 0.877075 11.1574 0.877075 7.49972ZM7.49991 1.82689C4.36689 1.82689 1.82708 4.36671 1.82708 7.49972C1.82708 10.6327 4.36689 13.1726 7.49991 13.1726C10.6329 13.1726 13.1727 10.6327 13.1727 7.49972C13.1727 4.36671 10.6329 1.82689 7.49991 1.82689ZM8.24993 10.5C8.24993 10.9142 7.91414 11.25 7.49993 11.25C7.08571 11.25 6.74993 10.9142 6.74993 10.5C6.74993 10.0858 7.08571 9.75 7.49993 9.75C7.91414 9.75 8.24993 10.0858 8.24993 10.5ZM6.05003 6.25C6.05003 5.57211 6.63511 4.925 7.50003 4.925C8.36496 4.925 8.95003 5.57211 8.95003 6.25C8.95003 6.74118 8.68002 6.99212 8.21447 7.27494C8.16251 7.30651 8.10258 7.34131 8.03847 7.37854L8.03841 7.37858C7.85521 7.48497 7.63788 7.61119 7.47449 7.73849C7.23214 7.92732 6.95003 8.23198 6.95003 8.7C6.95004 9.00376 7.19628 9.25 7.50004 9.25C7.8024 9.25 8.04778 9.00601 8.05002 8.70417L8.05056 8.7033C8.05924 8.6896 8.08493 8.65735 8.15058 8.6062C8.25207 8.52712 8.36508 8.46163 8.51567 8.37436L8.51571 8.37433C8.59422 8.32883 8.68296 8.27741 8.78559 8.21506C9.32004 7.89038 10.05 7.35382 10.05 6.25C10.05 4.92789 8.93511 3.825 7.50003 3.825C6.06496 3.825 4.95003 4.92789 4.95003 6.25C4.95003 6.55376 5.19628 6.8 5.50003 6.8C5.80379 6.8 6.05003 6.55376 6.05003 6.25Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3B = [\"color\"];\nvar QuoteIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3B);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9.42503 3.44136C10.0561 3.23654 10.7837 3.2402 11.3792 3.54623C12.7532 4.25224 13.3477 6.07191 12.7946 8C12.5465 8.8649 12.1102 9.70472 11.1861 10.5524C10.262 11.4 8.98034 11.9 8.38571 11.9C8.17269 11.9 8 11.7321 8 11.525C8 11.3179 8.17644 11.15 8.38571 11.15C9.06497 11.15 9.67189 10.7804 10.3906 10.236C10.9406 9.8193 11.3701 9.28633 11.608 8.82191C12.0628 7.93367 12.0782 6.68174 11.3433 6.34901C10.9904 6.73455 10.5295 6.95946 9.97725 6.95946C8.7773 6.95946 8.0701 5.99412 8.10051 5.12009C8.12957 4.28474 8.66032 3.68954 9.42503 3.44136ZM3.42503 3.44136C4.05614 3.23654 4.78366 3.2402 5.37923 3.54623C6.7532 4.25224 7.34766 6.07191 6.79462 8C6.54654 8.8649 6.11019 9.70472 5.1861 10.5524C4.26201 11.4 2.98034 11.9 2.38571 11.9C2.17269 11.9 2 11.7321 2 11.525C2 11.3179 2.17644 11.15 2.38571 11.15C3.06497 11.15 3.67189 10.7804 4.39058 10.236C4.94065 9.8193 5.37014 9.28633 5.60797 8.82191C6.06282 7.93367 6.07821 6.68174 5.3433 6.34901C4.99037 6.73455 4.52948 6.95946 3.97725 6.95946C2.7773 6.95946 2.0701 5.99412 2.10051 5.12009C2.12957 4.28474 2.66032 3.68954 3.42503 3.44136Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3C = [\"color\"];\nvar RadiobuttonIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3C);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49985 0.877045C3.84216 0.877045 0.877014 3.84219 0.877014 7.49988C0.877014 11.1575 3.84216 14.1227 7.49985 14.1227C11.1575 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 3.84219 11.1575 0.877045 7.49985 0.877045ZM1.82701 7.49988C1.82701 4.36686 4.36683 1.82704 7.49985 1.82704C10.6328 1.82704 13.1727 4.36686 13.1727 7.49988C13.1727 10.6329 10.6328 13.1727 7.49985 13.1727C4.36683 13.1727 1.82701 10.6329 1.82701 7.49988ZM7.49999 9.49999C8.60456 9.49999 9.49999 8.60456 9.49999 7.49999C9.49999 6.39542 8.60456 5.49999 7.49999 5.49999C6.39542 5.49999 5.49999 6.39542 5.49999 7.49999C5.49999 8.60456 6.39542 9.49999 7.49999 9.49999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3D = [\"color\"];\nvar ReaderIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3D);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.2 1H4.17741H4.1774C3.86936 0.999988 3.60368 0.999978 3.38609 1.02067C3.15576 1.04257 2.92825 1.09113 2.71625 1.22104C2.51442 1.34472 2.34473 1.51442 2.22104 1.71625C2.09113 1.92825 2.04257 2.15576 2.02067 2.38609C1.99998 2.60367 1.99999 2.86935 2 3.17738V3.1774V3.2V11.8V11.8226V11.8226C1.99999 12.1307 1.99998 12.3963 2.02067 12.6139C2.04257 12.8442 2.09113 13.0717 2.22104 13.2837C2.34473 13.4856 2.51442 13.6553 2.71625 13.779C2.92825 13.9089 3.15576 13.9574 3.38609 13.9793C3.60368 14 3.86937 14 4.17741 14H4.2H10.8H10.8226C11.1306 14 11.3963 14 11.6139 13.9793C11.8442 13.9574 12.0717 13.9089 12.2837 13.779C12.4856 13.6553 12.6553 13.4856 12.779 13.2837C12.9089 13.0717 12.9574 12.8442 12.9793 12.6139C13 12.3963 13 12.1306 13 11.8226V11.8V3.2V3.17741C13 2.86936 13 2.60368 12.9793 2.38609C12.9574 2.15576 12.9089 1.92825 12.779 1.71625C12.6553 1.51442 12.4856 1.34472 12.2837 1.22104C12.0717 1.09113 11.8442 1.04257 11.6139 1.02067C11.3963 0.999978 11.1306 0.999988 10.8226 1H10.8H4.2ZM3.23875 2.07368C3.26722 2.05623 3.32362 2.03112 3.48075 2.01618C3.64532 2.00053 3.86298 2 4.2 2H10.8C11.137 2 11.3547 2.00053 11.5193 2.01618C11.6764 2.03112 11.7328 2.05623 11.7613 2.07368C11.8285 2.11491 11.8851 2.17147 11.9263 2.23875C11.9438 2.26722 11.9689 2.32362 11.9838 2.48075C11.9995 2.64532 12 2.86298 12 3.2V11.8C12 12.137 11.9995 12.3547 11.9838 12.5193C11.9689 12.6764 11.9438 12.7328 11.9263 12.7613C11.8851 12.8285 11.8285 12.8851 11.7613 12.9263C11.7328 12.9438 11.6764 12.9689 11.5193 12.9838C11.3547 12.9995 11.137 13 10.8 13H4.2C3.86298 13 3.64532 12.9995 3.48075 12.9838C3.32362 12.9689 3.26722 12.9438 3.23875 12.9263C3.17147 12.8851 3.11491 12.8285 3.07368 12.7613C3.05624 12.7328 3.03112 12.6764 3.01618 12.5193C3.00053 12.3547 3 12.137 3 11.8V3.2C3 2.86298 3.00053 2.64532 3.01618 2.48075C3.03112 2.32362 3.05624 2.26722 3.07368 2.23875C3.11491 2.17147 3.17147 2.11491 3.23875 2.07368ZM5 10C4.72386 10 4.5 10.2239 4.5 10.5C4.5 10.7761 4.72386 11 5 11H8C8.27614 11 8.5 10.7761 8.5 10.5C8.5 10.2239 8.27614 10 8 10H5ZM4.5 7.5C4.5 7.22386 4.72386 7 5 7H10C10.2761 7 10.5 7.22386 10.5 7.5C10.5 7.77614 10.2761 8 10 8H5C4.72386 8 4.5 7.77614 4.5 7.5ZM5 4C4.72386 4 4.5 4.22386 4.5 4.5C4.5 4.77614 4.72386 5 5 5H10C10.2761 5 10.5 4.77614 10.5 4.5C10.5 4.22386 10.2761 4 10 4H5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3E = [\"color\"];\nvar ReloadIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3E);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.84998 7.49998C1.84998 4.66458 4.05979 1.84998 7.49998 1.84998C10.2783 1.84998 11.6515 3.9064 12.2367 5H10.5C10.2239 5 10 5.22386 10 5.5C10 5.77614 10.2239 6 10.5 6H13.5C13.7761 6 14 5.77614 14 5.5V2.5C14 2.22386 13.7761 2 13.5 2C13.2239 2 13 2.22386 13 2.5V4.31318C12.2955 3.07126 10.6659 0.849976 7.49998 0.849976C3.43716 0.849976 0.849976 4.18537 0.849976 7.49998C0.849976 10.8146 3.43716 14.15 7.49998 14.15C9.44382 14.15 11.0622 13.3808 12.2145 12.2084C12.8315 11.5806 13.3133 10.839 13.6418 10.0407C13.7469 9.78536 13.6251 9.49315 13.3698 9.38806C13.1144 9.28296 12.8222 9.40478 12.7171 9.66014C12.4363 10.3425 12.0251 10.9745 11.5013 11.5074C10.5295 12.4963 9.16504 13.15 7.49998 13.15C4.05979 13.15 1.84998 10.3354 1.84998 7.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3F = [\"color\"];\nvar ResetIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3F);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.85355 2.14645C5.04882 2.34171 5.04882 2.65829 4.85355 2.85355L3.70711 4H9C11.4853 4 13.5 6.01472 13.5 8.5C13.5 10.9853 11.4853 13 9 13H5C4.72386 13 4.5 12.7761 4.5 12.5C4.5 12.2239 4.72386 12 5 12H9C10.933 12 12.5 10.433 12.5 8.5C12.5 6.567 10.933 5 9 5H3.70711L4.85355 6.14645C5.04882 6.34171 5.04882 6.65829 4.85355 6.85355C4.65829 7.04882 4.34171 7.04882 4.14645 6.85355L2.14645 4.85355C1.95118 4.65829 1.95118 4.34171 2.14645 4.14645L4.14645 2.14645C4.34171 1.95118 4.65829 1.95118 4.85355 2.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3G = [\"color\"];\nvar ResumeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3G);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.04995 2.74995C3.04995 2.44619 2.80371 2.19995 2.49995 2.19995C2.19619 2.19995 1.94995 2.44619 1.94995 2.74995V12.25C1.94995 12.5537 2.19619 12.8 2.49995 12.8C2.80371 12.8 3.04995 12.5537 3.04995 12.25V2.74995ZM5.73333 2.30776C5.57835 2.22596 5.39185 2.23127 5.24177 2.32176C5.0917 2.41225 4.99995 2.57471 4.99995 2.74995V12.25C4.99995 12.4252 5.0917 12.5877 5.24177 12.6781C5.39185 12.7686 5.57835 12.7739 5.73333 12.6921L14.7333 7.94214C14.8973 7.85559 15 7.68539 15 7.49995C15 7.31452 14.8973 7.14431 14.7333 7.05776L5.73333 2.30776ZM5.99995 11.4207V3.5792L13.4287 7.49995L5.99995 11.4207Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3H = [\"color\"];\nvar RocketIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3H);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.85357 3.85355L7.65355 3.05353C8.2981 2.40901 9.42858 1.96172 10.552 1.80125C11.1056 1.72217 11.6291 1.71725 12.0564 1.78124C12.4987 1.84748 12.7698 1.97696 12.8965 2.10357C13.0231 2.23018 13.1526 2.50125 13.2188 2.94357C13.2828 3.37086 13.2779 3.89439 13.1988 4.44801C13.0383 5.57139 12.591 6.70188 11.9464 7.34645L7.49999 11.7929L6.35354 10.6465C6.15827 10.4512 5.84169 10.4512 5.64643 10.6465C5.45117 10.8417 5.45117 11.1583 5.64643 11.3536L7.14644 12.8536C7.34171 13.0488 7.65829 13.0488 7.85355 12.8536L8.40073 12.3064L9.57124 14.2572C9.65046 14.3893 9.78608 14.4774 9.9389 14.4963C10.0917 14.5151 10.2447 14.4624 10.3535 14.3536L12.3535 12.3536C12.4648 12.2423 12.5172 12.0851 12.495 11.9293L12.0303 8.67679L12.6536 8.05355C13.509 7.19808 14.0117 5.82855 14.1887 4.58943C14.2784 3.9618 14.2891 3.33847 14.2078 2.79546C14.1287 2.26748 13.9519 1.74482 13.6035 1.39645C13.2552 1.04809 12.7325 0.871332 12.2045 0.792264C11.6615 0.710945 11.0382 0.721644 10.4105 0.8113C9.17143 0.988306 7.80189 1.491 6.94644 2.34642L6.32322 2.96968L3.07071 2.50504C2.91492 2.48278 2.75773 2.53517 2.64645 2.64646L0.646451 4.64645C0.537579 4.75533 0.484938 4.90829 0.50375 5.0611C0.522563 5.21391 0.61073 5.34954 0.742757 5.42876L2.69364 6.59928L2.14646 7.14645C2.0527 7.24022 2.00002 7.3674 2.00002 7.50001C2.00002 7.63261 2.0527 7.75979 2.14646 7.85356L3.64647 9.35356C3.84173 9.54883 4.15831 9.54883 4.35357 9.35356C4.54884 9.1583 4.54884 8.84172 4.35357 8.64646L3.20712 7.50001L3.85357 6.85356L6.85357 3.85355ZM10.0993 13.1936L9.12959 11.5775L11.1464 9.56067L11.4697 11.8232L10.0993 13.1936ZM3.42251 5.87041L5.43935 3.85356L3.17678 3.53034L1.80638 4.90074L3.42251 5.87041ZM2.35356 10.3535C2.54882 10.1583 2.54882 9.8417 2.35356 9.64644C2.1583 9.45118 1.84171 9.45118 1.64645 9.64644L0.646451 10.6464C0.451188 10.8417 0.451188 11.1583 0.646451 11.3535C0.841713 11.5488 1.1583 11.5488 1.35356 11.3535L2.35356 10.3535ZM3.85358 11.8536C4.04884 11.6583 4.04885 11.3417 3.85359 11.1465C3.65833 10.9512 3.34175 10.9512 3.14648 11.1465L1.14645 13.1464C0.95119 13.3417 0.951187 13.6583 1.14645 13.8535C1.34171 14.0488 1.65829 14.0488 1.85355 13.8536L3.85358 11.8536ZM5.35356 13.3535C5.54882 13.1583 5.54882 12.8417 5.35356 12.6464C5.1583 12.4512 4.84171 12.4512 4.64645 12.6464L3.64645 13.6464C3.45119 13.8417 3.45119 14.1583 3.64645 14.3535C3.84171 14.5488 4.1583 14.5488 4.35356 14.3535L5.35356 13.3535ZM9.49997 6.74881C10.1897 6.74881 10.7488 6.1897 10.7488 5.5C10.7488 4.8103 10.1897 4.25118 9.49997 4.25118C8.81026 4.25118 8.25115 4.8103 8.25115 5.5C8.25115 6.1897 8.81026 6.74881 9.49997 6.74881Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3I = [\"color\"];\nvar RotateCounterClockwiseIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3I);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.59664 2.93628C7.76085 3.06401 8.00012 2.94698 8.00012 2.73895V1.99998C9.98143 2 11.1848 2.3637 11.9105 3.08945C12.6363 3.81522 13 5.0186 13 6.99998C13 7.27613 13.2239 7.49998 13.5 7.49998C13.7761 7.49998 14 7.27613 14 6.99998C14 4.9438 13.6325 3.39719 12.6176 2.38234C11.6028 1.36752 10.0562 0.999999 8.00012 0.999984V0.261266C8.00012 0.0532293 7.76085 -0.0637944 7.59664 0.063928L6.00384 1.30277C5.87516 1.40286 5.87516 1.59735 6.00384 1.69744L7.59664 2.93628ZM9.5 5H2.5C2.22386 5 2 5.22386 2 5.5V12.5C2 12.7761 2.22386 13 2.5 13H9.5C9.77614 13 10 12.7761 10 12.5V5.5C10 5.22386 9.77614 5 9.5 5ZM2.5 4C1.67157 4 1 4.67157 1 5.5V12.5C1 13.3284 1.67157 14 2.5 14H9.5C10.3284 14 11 13.3284 11 12.5V5.5C11 4.67157 10.3284 4 9.5 4H2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3J = [\"color\"];\nvar RowSpacingIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3J);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.81832 0.68179C7.64258 0.506054 7.35766 0.506054 7.18192 0.68179L5.18192 2.68179C5.00619 2.85753 5.00619 3.14245 5.18192 3.31819C5.35766 3.49392 5.64258 3.49392 5.81832 3.31819L7.05012 2.08638L7.05012 5.50023C7.05012 5.74876 7.25159 5.95023 7.50012 5.95023C7.74865 5.95023 7.95012 5.74876 7.95012 5.50023L7.95012 2.08638L9.18192 3.31819C9.35766 3.49392 9.64258 3.49392 9.81832 3.31819C9.99406 3.14245 9.99406 2.85753 9.81832 2.68179L7.81832 0.68179ZM7.95012 12.9136V9.50023C7.95012 9.2517 7.74865 9.05023 7.50012 9.05023C7.25159 9.05023 7.05012 9.2517 7.05012 9.50023V12.9136L5.81832 11.6818C5.64258 11.5061 5.35766 11.5061 5.18192 11.6818C5.00619 11.8575 5.00619 12.1424 5.18192 12.3182L7.18192 14.3182C7.26632 14.4026 7.38077 14.45 7.50012 14.45C7.61947 14.45 7.73393 14.4026 7.81832 14.3182L9.81832 12.3182C9.99406 12.1424 9.99406 11.8575 9.81832 11.6818C9.64258 11.5061 9.35766 11.5061 9.18192 11.6818L7.95012 12.9136ZM1.49994 7.00017C1.2238 7.00017 0.999939 7.22403 0.999939 7.50017C0.999939 7.77631 1.2238 8.00017 1.49994 8.00017L13.4999 8.00017C13.7761 8.00017 13.9999 7.77631 13.9999 7.50017C13.9999 7.22403 13.7761 7.00017 13.4999 7.00017L1.49994 7.00017Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3K = [\"color\"];\nvar RowsIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3K);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14 12.85L1 12.85L1 14.15L14 14.15L14 12.85ZM14 8.85002L1 8.85002L1 10.15L14 10.15L14 8.85002ZM1 4.85003L14 4.85003L14 6.15003L1 6.15002L1 4.85003ZM14 0.850025L1 0.850025L1 2.15002L14 2.15002L14 0.850025Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3L = [\"color\"];\nvar RulerHorizontalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3L);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.5 4C0.223858 4 0 4.22386 0 4.5V10.5C0 10.7761 0.223858 11 0.5 11H14.5C14.7761 11 15 10.7761 15 10.5V4.5C15 4.22386 14.7761 4 14.5 4H0.5ZM1 10V5H2.075V7.5C2.075 7.73472 2.26528 7.925 2.5 7.925C2.73472 7.925 2.925 7.73472 2.925 7.5V5H4.075V6.5C4.075 6.73472 4.26528 6.925 4.5 6.925C4.73472 6.925 4.925 6.73472 4.925 6.5V5H6.075V6.5C6.075 6.73472 6.26528 6.925 6.5 6.925C6.73472 6.925 6.925 6.73472 6.925 6.5V5H8.075V7.5C8.075 7.73472 8.26528 7.925 8.5 7.925C8.73472 7.925 8.925 7.73472 8.925 7.5V5H10.075V6.5C10.075 6.73472 10.2653 6.925 10.5 6.925C10.7347 6.925 10.925 6.73472 10.925 6.5V5H12.075V6.5C12.075 6.73472 12.2653 6.925 12.5 6.925C12.7347 6.925 12.925 6.73472 12.925 6.5V5H14V10H1Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3M = [\"color\"];\nvar RulerSquareIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3M);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.5 0C0.223858 0 0 0.223858 0 0.5V14.5C0 14.7761 0.223858 15 0.5 15H4.5C4.77614 15 5 14.7761 5 14.5V5H14.5C14.7761 5 15 4.77614 15 4.5V0.5C15 0.223858 14.7761 0 14.5 0H0.5ZM1 4.07505L1 1H4.07502C4.07502 1 4.07502 1 4.07502 1L4.07505 4.07507L1 4.07505ZM0.999997 4.92505L1 14H4V12.925H2.75002C2.5153 12.925 2.32502 12.7348 2.32502 12.5C2.32502 12.2653 2.5153 12.075 2.75002 12.075H4V10.925H2.25002C2.0153 10.925 1.82502 10.7347 1.82502 10.5C1.82502 10.2653 2.0153 10.075 2.25002 10.075H4V8.92504L2.75002 8.92502C2.5153 8.92502 2.32502 8.73474 2.32502 8.50002C2.32503 8.26529 2.51531 8.07502 2.75003 8.07502L4 8.07504V6.92502L2.74999 6.925C2.51527 6.925 2.325 6.73472 2.325 6.5C2.325 6.26528 2.51529 6.075 2.75001 6.075L4 6.07502V4.92507L0.999997 4.92505ZM4.92505 4H6.075V2.75006C6.075 2.51534 6.26528 2.32506 6.5 2.32506C6.73472 2.32506 6.925 2.51534 6.925 2.75006V4H8.07502V2.75005C8.07502 2.51533 8.2653 2.32505 8.50002 2.32505C8.73474 2.32505 8.92502 2.51533 8.92502 2.75005V4H10.0751V2.25005C10.0751 2.01533 10.2653 1.82505 10.5001 1.82505C10.7348 1.82505 10.9251 2.01533 10.9251 2.25005V4H12.0751V2.75005C12.0751 2.51533 12.2654 2.32505 12.5001 2.32505C12.7348 2.32505 12.9251 2.51533 12.9251 2.75005V4H14V1H4.92502L4.92505 4Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3N = [\"color\"];\nvar ScissorsIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3N);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.949988 4.48455C0.949988 5.34059 1.64395 6.03455 2.49999 6.03455C3.35603 6.03455 4.04999 5.34059 4.04999 4.48455C4.04999 3.6285 3.35603 2.93455 2.49999 2.93455C1.64395 2.93455 0.949988 3.6285 0.949988 4.48455ZM2.49999 6.93455C1.14689 6.93455 0.0499878 5.83764 0.0499878 4.48455C0.0499878 3.13145 1.14689 2.03455 2.49999 2.03455C3.85309 2.03455 4.94999 3.13145 4.94999 4.48455C4.94999 4.80813 4.88726 5.11707 4.77329 5.39985L5.73655 6.04413C5.72943 6.06656 5.72269 6.08914 5.71635 6.11188L5.56288 6.66186L5.21005 6.89773L4.21554 6.23366C3.77357 6.6672 3.168 6.93455 2.49999 6.93455ZM0.949991 10.5C0.949991 9.64394 1.64395 8.94998 2.49999 8.94998C3.35603 8.94998 4.04999 9.64394 4.04999 10.5C4.04999 11.356 3.35603 12.05 2.49999 12.05C1.64395 12.05 0.949991 11.356 0.949991 10.5ZM2.49999 8.04998C1.14689 8.04998 0.0499908 9.14688 0.0499908 10.5C0.0499908 11.8531 1.14689 12.95 2.49999 12.95C3.85309 12.95 4.94999 11.8531 4.94999 10.5C4.94999 10.1803 4.88877 9.87497 4.77743 9.595L15 2.75737L14.0486 2.85737C12.7077 2.9983 11.4091 3.40895 10.231 4.06461L7.15646 5.77564C6.92307 5.90553 6.75134 6.12339 6.67955 6.38066L6.42653 7.28737L4.22437 8.75957C3.78166 8.32091 3.17246 8.04998 2.49999 8.04998ZM7.14435 9.2149L7.15646 9.22176L10.231 10.9328C11.4091 11.5884 12.7077 11.9991 14.0486 12.14L15 12.24L8.81072 8.1003L7.14435 9.2149Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3O = [\"color\"];\nvar SectionIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3O);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 1.5C2 1.77614 1.77614 2 1.5 2C1.22386 2 1 1.77614 1 1.5C1 1.22386 1.22386 1 1.5 1C1.77614 1 2 1.22386 2 1.5ZM2 5L2 10H13V5H2ZM2 4C1.44772 4 1 4.44772 1 5V10C1 10.5523 1.44772 11 2 11H13C13.5523 11 14 10.5523 14 10V5C14 4.44772 13.5523 4 13 4H2ZM1.5 14C1.77614 14 2 13.7761 2 13.5C2 13.2239 1.77614 13 1.5 13C1.22386 13 1 13.2239 1 13.5C1 13.7761 1.22386 14 1.5 14ZM4 1.5C4 1.77614 3.77614 2 3.5 2C3.22386 2 3 1.77614 3 1.5C3 1.22386 3.22386 1 3.5 1C3.77614 1 4 1.22386 4 1.5ZM3.5 14C3.77614 14 4 13.7761 4 13.5C4 13.2239 3.77614 13 3.5 13C3.22386 13 3 13.2239 3 13.5C3 13.7761 3.22386 14 3.5 14ZM6 1.5C6 1.77614 5.77614 2 5.5 2C5.22386 2 5 1.77614 5 1.5C5 1.22386 5.22386 1 5.5 1C5.77614 1 6 1.22386 6 1.5ZM5.5 14C5.77614 14 6 13.7761 6 13.5C6 13.2239 5.77614 13 5.5 13C5.22386 13 5 13.2239 5 13.5C5 13.7761 5.22386 14 5.5 14ZM8 1.5C8 1.77614 7.77614 2 7.5 2C7.22386 2 7 1.77614 7 1.5C7 1.22386 7.22386 1 7.5 1C7.77614 1 8 1.22386 8 1.5ZM7.5 14C7.77614 14 8 13.7761 8 13.5C8 13.2239 7.77614 13 7.5 13C7.22386 13 7 13.2239 7 13.5C7 13.7761 7.22386 14 7.5 14ZM10 1.5C10 1.77614 9.77614 2 9.5 2C9.22386 2 9 1.77614 9 1.5C9 1.22386 9.22386 1 9.5 1C9.77614 1 10 1.22386 10 1.5ZM9.5 14C9.77614 14 10 13.7761 10 13.5C10 13.2239 9.77614 13 9.5 13C9.22386 13 9 13.2239 9 13.5C9 13.7761 9.22386 14 9.5 14ZM12 1.5C12 1.77614 11.7761 2 11.5 2C11.2239 2 11 1.77614 11 1.5C11 1.22386 11.2239 1 11.5 1C11.7761 1 12 1.22386 12 1.5ZM11.5 14C11.7761 14 12 13.7761 12 13.5C12 13.2239 11.7761 13 11.5 13C11.2239 13 11 13.2239 11 13.5C11 13.7761 11.2239 14 11.5 14ZM14 1.5C14 1.77614 13.7761 2 13.5 2C13.2239 2 13 1.77614 13 1.5C13 1.22386 13.2239 1 13.5 1C13.7761 1 14 1.22386 14 1.5ZM13.5 14C13.7761 14 14 13.7761 14 13.5C14 13.2239 13.7761 13 13.5 13C13.2239 13 13 13.2239 13 13.5C13 13.7761 13.2239 14 13.5 14Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3P = [\"color\"];\nvar SewingPinIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3P);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6 3.5C6 2.67157 6.67157 2 7.5 2C8.32843 2 9 2.67157 9 3.5C9 4.32843 8.32843 5 7.5 5C6.67157 5 6 4.32843 6 3.5ZM8 5.94999C9.14112 5.71836 10 4.70948 10 3.5C10 2.11929 8.88071 1 7.5 1C6.11929 1 5 2.11929 5 3.5C5 4.70948 5.85888 5.71836 7 5.94999V13.5C7 13.7761 7.22386 14 7.5 14C7.77614 14 8 13.7761 8 13.5V5.94999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3Q = [\"color\"];\nvar SewingPinFilledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3Q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M10 3.5C10 4.70948 9.14112 5.71836 8 5.94999V13.5C8 13.7761 7.77614 14 7.5 14C7.22386 14 7 13.7761 7 13.5V5.94999C5.85888 5.71836 5 4.70948 5 3.5C5 2.11929 6.11929 1 7.5 1C8.88071 1 10 2.11929 10 3.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3R = [\"color\"];\nvar ShadowIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3R);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".05\",\n    d: \"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".1\",\n    d: \"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".15\",\n    d: \"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".2\",\n    d: \"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".25\",\n    d: \"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".3\",\n    d: \"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".35\",\n    d: \"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".4\",\n    d: \"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".45\",\n    d: \"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".5\",\n    d: \"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3S = [\"color\"];\nvar ShadowInnerIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3S);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".05\",\n    d: \"M12.1619 3.85182C8.35817 4.88918 4.88936 8.358 3.85199 12.1617L3.3696 12.0301C4.45356 8.05564 8.05581 4.45339 12.0303 3.36943L12.1619 3.85182Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".1\",\n    d: \"M11.8807 3.42707C8.03441 4.50542 4.50561 8.03422 3.42726 11.8805L2.94582 11.7456C4.07129 7.73121 7.7314 4.0711 11.7458 2.94563L11.8807 3.42707Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".15\",\n    d: \"M11.5201 3.02556C7.69092 4.16199 4.16779 7.68323 3.02805 11.512L2.54883 11.3694C3.73676 7.37869 7.38659 3.73076 11.3778 2.54623L11.5201 3.02556Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".2\",\n    d: \"M11.0468 2.66169C7.31117 3.87664 3.87918 7.3079 2.66298 11.0434L2.18754 10.8886C3.45324 7.00109 7.00445 3.45062 10.8921 2.18621L11.0468 2.66169Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".25\",\n    d: \"M10.5201 2.32365C6.92091 3.61447 3.62391 6.90876 2.32845 10.5073L1.858 10.338C3.20398 6.59909 6.61155 3.19424 10.3513 1.85301L10.5201 2.32365Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".3\",\n    d: \"M9.90222 2.03122C6.50003 3.39465 3.39968 6.49367 2.03399 9.89551L1.56998 9.70924C2.98651 6.18076 6.18728 2.98133 9.71622 1.5671L9.90222 2.03122Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".35\",\n    d: \"M9.20727 1.78873C6.06136 3.20349 3.21103 6.05203 1.79331 9.19738L1.33747 8.99192C2.80536 5.73528 5.74485 2.7976 9.0022 1.33272L9.20727 1.78873Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".4\",\n    d: \"M8.40713 1.62085C5.59323 3.05117 3.05794 5.58509 1.62544 8.39847L1.17987 8.1716C2.66036 5.26397 5.27232 2.6534 8.18057 1.17513L8.40713 1.62085Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".45\",\n    d: \"M7.46207 1.56747C5.08689 2.94695 2.95362 5.07912 1.57249 7.45379L1.14028 7.20241C2.56503 4.75273 4.7607 2.55818 7.21096 1.1351L7.46207 1.56747Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".5\",\n    d: \"M6.30407 1.70487C4.51964 2.91063 2.90983 4.52061 1.7043 6.30513L1.28998 6.02524C2.5313 4.18773 4.18673 2.53214 6.02413 1.29059L6.30407 1.70487Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3T = [\"color\"];\nvar ShadowNoneIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3T);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".05\",\n    d: \"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".1\",\n    d: \"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".15\",\n    d: \"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".2\",\n    d: \"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".25\",\n    d: \"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".3\",\n    d: \"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".35\",\n    d: \"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".4\",\n    d: \"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".45\",\n    d: \"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".5\",\n    d: \"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49991 0.877045C3.84222 0.877045 0.877075 3.84219 0.877075 7.49988C0.877075 9.1488 1.47969 10.657 2.4767 11.8162L1.64647 12.6464C1.45121 12.8417 1.45121 13.1583 1.64647 13.3535C1.84173 13.5488 2.15832 13.5488 2.35358 13.3535L3.18383 12.5233C4.34302 13.5202 5.8511 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 5.85107 13.5202 4.34298 12.5233 3.1838L13.3536 2.35355C13.5488 2.15829 13.5488 1.8417 13.3536 1.64644C13.1583 1.45118 12.8417 1.45118 12.6465 1.64644L11.8162 2.47667C10.657 1.47966 9.14883 0.877045 7.49991 0.877045ZM11.1423 3.15065C10.1568 2.32449 8.88644 1.82704 7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 8.88641 2.32452 10.1568 3.15069 11.1422L11.1423 3.15065ZM3.85781 11.8493C4.84322 12.6753 6.11348 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 6.11345 12.6754 4.84319 11.8493 3.85778L3.85781 11.8493Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3U = [\"color\"];\nvar ShadowOuterIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3U);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".05\",\n    d: \"M12.1398 3.88617C13.8553 4.94159 15 6.83701 15 9.00001C15 12.3137 12.3137 15 9.00002 15C6.84351 15 4.95296 13.8621 3.89569 12.1552L4.32076 11.8919C5.29069 13.4578 7.02376 14.5 9.00002 14.5C12.0376 14.5 14.5 12.0375 14.5 9.00001C14.5 7.01781 13.4516 5.28027 11.8778 4.31203L12.1398 3.88617Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".2\",\n    d: \"M12.851 5.07321C13.8684 6.07106 14.5 7.46199 14.5 9C14.5 12.0375 12.0376 14.5 9.00004 14.5C7.46215 14.5 6.07132 13.8685 5.07349 12.8513L5.43043 12.5011C6.3381 13.4264 7.60186 14 9.00004 14C11.7614 14 14 11.7614 14 9C14 7.60171 13.4264 6.33786 12.5009 5.43017L12.851 5.07321Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".35\",\n    d: \"M13.3022 6.45071C13.7455 7.19737 14 8.06935 14 9.00001C14 11.7614 11.7614 14 9.00002 14C8.04868 14 7.15868 13.7341 6.40118 13.2724L6.66142 12.8454C7.34275 13.2607 8.14306 13.5 9.00002 13.5C11.4853 13.5 13.5 11.4853 13.5 9.00001C13.5 8.16165 13.271 7.37754 12.8722 6.70599L13.3022 6.45071Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".5\",\n    d: \"M13.3745 7.94022C13.4566 8.28031 13.5 8.63525 13.5 9.00001C13.5 11.4853 11.4853 13.5 9.00003 13.5C8.61104 13.5 8.23323 13.4506 7.87268 13.3576L7.99759 12.8734C8.31768 12.956 8.65353 13 9.00003 13C11.2091 13 13 11.2091 13 9.00001C13 8.67509 12.9613 8.35953 12.8884 8.05757L13.3745 7.94022Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".65\",\n    d: \"M12.9155 9.82133C12.5898 11.3813 11.3562 12.6072 9.79205 12.9215L9.69354 12.4313C11.0613 12.1565 12.1413 11.0834 12.4261 9.71915L12.9155 9.82133Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.2771 7.50253C1.2771 4.06456 4.06413 1.27753 7.5021 1.27753C10.94 1.27753 13.7271 4.06456 13.7271 7.50253C13.7271 10.9405 10.94 13.7275 7.5021 13.7275C4.06413 13.7275 1.2771 10.9405 1.2771 7.50253ZM7.5021 2.22753C4.5888 2.22753 2.2271 4.58923 2.2271 7.50253C2.2271 10.4158 4.5888 12.7775 7.5021 12.7775C10.4154 12.7775 12.7771 10.4158 12.7771 7.50253C12.7771 4.58923 10.4154 2.22753 7.5021 2.22753Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3V = [\"color\"];\nvar Share1Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3V);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5 7.50003C5 8.32845 4.32843 9.00003 3.5 9.00003C2.67157 9.00003 2 8.32845 2 7.50003C2 6.6716 2.67157 6.00003 3.5 6.00003C4.32843 6.00003 5 6.6716 5 7.50003ZM5.71313 8.66388C5.29445 9.45838 4.46048 10 3.5 10C2.11929 10 1 8.88074 1 7.50003C1 6.11931 2.11929 5.00003 3.5 5.00003C4.46048 5.00003 5.29445 5.54167 5.71313 6.33616L9.10424 4.21671C9.03643 3.98968 9 3.74911 9 3.50003C9 2.11932 10.1193 1.00003 11.5 1.00003C12.8807 1.00003 14 2.11932 14 3.50003C14 4.88074 12.8807 6.00003 11.5 6.00003C10.6915 6.00003 9.97264 5.61624 9.51566 5.0209L5.9853 7.22738C5.99502 7.31692 6 7.40789 6 7.50003C6 7.59216 5.99502 7.68312 5.9853 7.77267L9.51567 9.97915C9.97265 9.38382 10.6915 9.00003 11.5 9.00003C12.8807 9.00003 14 10.1193 14 11.5C14 12.8807 12.8807 14 11.5 14C10.1193 14 9 12.8807 9 11.5C9 11.2509 9.03643 11.0104 9.10425 10.7833L5.71313 8.66388ZM11.5 5.00003C12.3284 5.00003 13 4.32846 13 3.50003C13 2.6716 12.3284 2.00003 11.5 2.00003C10.6716 2.00003 10 2.6716 10 3.50003C10 4.32846 10.6716 5.00003 11.5 5.00003ZM13 11.5C13 12.3285 12.3284 13 11.5 13C10.6716 13 10 12.3285 10 11.5C10 10.6716 10.6716 10 11.5 10C12.3284 10 13 10.6716 13 11.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3W = [\"color\"];\nvar Share2Icon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3W);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.5 5.00006C3.22386 5.00006 3 5.22392 3 5.50006L3 11.5001C3 11.7762 3.22386 12.0001 3.5 12.0001L11.5 12.0001C11.7761 12.0001 12 11.7762 12 11.5001L12 5.50006C12 5.22392 11.7761 5.00006 11.5 5.00006L10.25 5.00006C9.97386 5.00006 9.75 4.7762 9.75 4.50006C9.75 4.22392 9.97386 4.00006 10.25 4.00006L11.5 4.00006C12.3284 4.00006 13 4.67163 13 5.50006L13 11.5001C13 12.3285 12.3284 13.0001 11.5 13.0001L3.5 13.0001C2.67157 13.0001 2 12.3285 2 11.5001L2 5.50006C2 4.67163 2.67157 4.00006 3.5 4.00006L4.75 4.00006C5.02614 4.00006 5.25 4.22392 5.25 4.50006C5.25 4.7762 5.02614 5.00006 4.75 5.00006L3.5 5.00006ZM7 1.6364L5.5682 3.0682C5.39246 3.24393 5.10754 3.24393 4.9318 3.0682C4.75607 2.89246 4.75607 2.60754 4.9318 2.4318L7.1818 0.181802C7.26619 0.09741 7.38065 0.049999 7.5 0.049999C7.61935 0.049999 7.73381 0.09741 7.8182 0.181802L10.0682 2.4318C10.2439 2.60754 10.2439 2.89246 10.0682 3.0682C9.89246 3.24393 9.60754 3.24393 9.4318 3.0682L8 1.6364L8 8.5C8 8.77614 7.77614 9 7.5 9C7.22386 9 7 8.77614 7 8.5L7 1.6364Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3X = [\"color\"];\nvar ShuffleIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3X);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M12.3536 1.14645C12.1583 0.951184 11.8417 0.951184 11.6464 1.14645C11.4512 1.34171 11.4512 1.65829 11.6464 1.85355L12.7929 3H12C10.7037 3 9.71111 3.58423 8.87248 4.38931C8.20065 5.03427 7.59349 5.85684 6.99461 6.6682C6.86287 6.84668 6.73154 7.02462 6.6 7.2C5.10874 9.18835 3.49037 11 0.5 11C0.223858 11 0 11.2239 0 11.5C0 11.7761 0.223858 12 0.5 12C4.00963 12 5.89126 9.81165 7.4 7.8C7.54367 7.60845 7.6832 7.41962 7.81996 7.23454L7.82005 7.23443L7.82006 7.23441C8.41674 6.42695 8.96069 5.69085 9.56502 5.11069C10.2889 4.41577 11.0463 4 12 4H12.7929L11.6464 5.14645C11.4512 5.34171 11.4512 5.65829 11.6464 5.85355C11.8417 6.04882 12.1583 6.04882 12.3536 5.85355L14.3536 3.85355C14.5488 3.65829 14.5488 3.34171 14.3536 3.14645L12.3536 1.14645ZM0.5 3C3.35278 3 5.12992 4.44588 6.50548 6.06746L6.3762 6.24266C6.2483 6.4161 6.12293 6.58609 6 6.75C5.96397 6.79804 5.92798 6.84581 5.892 6.89331C4.57348 5.29306 3.02637 4 0.5 4C0.223858 4 0 3.77614 0 3.5C0 3.22386 0.223858 3 0.5 3ZM8.87248 10.6107C8.37284 10.131 7.90897 9.55314 7.45767 8.95468C7.64688 8.71693 7.82704 8.48061 8 8.25L8.08987 8.12987C8.58412 8.79402 9.05288 9.39766 9.56502 9.88931C10.2889 10.5842 11.0463 11 12 11H12.7929L11.6464 9.85355C11.4512 9.65829 11.4512 9.34171 11.6464 9.14645C11.8417 8.95118 12.1583 8.95118 12.3536 9.14645L14.3536 11.1464C14.5488 11.3417 14.5488 11.6583 14.3536 11.8536L12.3536 13.8536C12.1583 14.0488 11.8417 14.0488 11.6464 13.8536C11.4512 13.6583 11.4512 13.3417 11.6464 13.1464L12.7929 12H12C10.7037 12 9.71111 11.4158 8.87248 10.6107Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3Y = [\"color\"];\nvar SizeIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3Y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M11.5 3.04999C11.7485 3.04999 11.95 3.25146 11.95 3.49999V7.49999C11.95 7.74852 11.7485 7.94999 11.5 7.94999C11.2515 7.94999 11.05 7.74852 11.05 7.49999V4.58639L4.58638 11.05H7.49999C7.74852 11.05 7.94999 11.2515 7.94999 11.5C7.94999 11.7485 7.74852 11.95 7.49999 11.95L3.49999 11.95C3.38064 11.95 3.26618 11.9026 3.18179 11.8182C3.0974 11.7338 3.04999 11.6193 3.04999 11.5L3.04999 7.49999C3.04999 7.25146 3.25146 7.04999 3.49999 7.04999C3.74852 7.04999 3.94999 7.25146 3.94999 7.49999L3.94999 10.4136L10.4136 3.94999L7.49999 3.94999C7.25146 3.94999 7.04999 3.74852 7.04999 3.49999C7.04999 3.25146 7.25146 3.04999 7.49999 3.04999L11.5 3.04999Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3Z = [\"color\"];\nvar SketchLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3Z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.53731 0.826873C7.5125 0.824392 7.4875 0.824392 7.46269 0.826873L3.96269 1.17687C3.85672 1.18747 3.76025 1.24262 3.69736 1.32857L0.699771 5.42528C0.654046 5.48627 0.62647 5.56165 0.625057 5.6434C0.625019 5.6456 0.625 5.64781 0.625 5.65001C0.625 5.65052 0.625001 5.65103 0.625003 5.65153C0.625363 5.74237 0.658021 5.82559 0.712087 5.8903L7.21042 13.7883C7.28165 13.8749 7.38789 13.925 7.5 13.925C7.61211 13.925 7.71835 13.8749 7.78958 13.7883L14.2879 5.89031C14.342 5.8256 14.3746 5.74237 14.375 5.65153C14.375 5.65103 14.375 5.65052 14.375 5.65001C14.375 5.64849 14.375 5.64697 14.375 5.64545C14.3749 5.63963 14.3747 5.63382 14.3744 5.62801C14.37 5.55219 14.3431 5.48242 14.3002 5.42527L11.3026 1.32857C11.2397 1.24262 11.1433 1.18747 11.0373 1.17687L7.53731 0.826873ZM10.925 5.27501V5.25236L10.9223 5.27501H10.925ZM10.9342 5.17498H13.1877L11.2495 2.5261L10.9342 5.17498ZM10.5707 1.88395L8.04432 1.63131L10.1747 5.21034L10.5707 1.88395ZM6.95568 1.63131L4.42931 1.88395L4.82531 5.21034L6.95568 1.63131ZM3.75046 2.5261L1.81226 5.17498H4.0658L3.75046 2.5261ZM1.79416 6.02501L6.75861 12.0587L4.22371 6.0669C4.21787 6.0531 4.21314 6.0391 4.20949 6.02501H1.79416ZM5.15055 6.02501L7.49999 12.1085L9.84943 6.02501H9.78681H5.21319H5.15055ZM10.7905 6.02501C10.7869 6.0391 10.7821 6.0531 10.7763 6.0669L8.24139 12.0587L13.2058 6.02501H10.7905ZM7.5 2.18317L9.34038 5.27501H5.65962L7.5 2.18317Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3_ = [\"color\"];\nvar SlashIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3_);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.10876 14L9.46582 1H10.8178L5.46074 14H4.10876Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$3$ = [\"color\"];\nvar SliderIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$3$);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M10.3004 7.49991C10.3004 8.4943 9.49426 9.30041 8.49988 9.30041C7.50549 9.30041 6.69938 8.4943 6.69938 7.49991C6.69938 6.50553 7.50549 5.69942 8.49988 5.69942C9.49426 5.69942 10.3004 6.50553 10.3004 7.49991ZM11.205 8C10.9699 9.28029 9.84816 10.2504 8.49988 10.2504C7.1516 10.2504 6.0299 9.28029 5.79473 8H0.5C0.223858 8 0 7.77614 0 7.5C0 7.22386 0.223858 7 0.5 7H5.7947C6.0298 5.71962 7.15154 4.74942 8.49988 4.74942C9.84822 4.74942 10.97 5.71962 11.2051 7H14.5C14.7761 7 15 7.22386 15 7.5C15 7.77614 14.7761 8 14.5 8H11.205Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$40 = [\"color\"];\nvar SpaceBetweenHorizontallyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$40);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14.4999 0.999994C14.2237 0.999994 13.9999 1.22385 13.9999 1.49999L13.9999 5.99995L9.99992 5.99995C9.44764 5.99995 8.99993 6.44766 8.99993 6.99994L8.99993 7.99994C8.99993 8.55222 9.44764 8.99993 9.99992 8.99993L13.9999 8.99993L13.9999 13.4999C13.9999 13.776 14.2237 13.9999 14.4999 13.9999C14.776 13.9999 14.9999 13.776 14.9999 13.4999L14.9999 1.49999C14.9999 1.22385 14.776 0.999994 14.4999 0.999994ZM4.99996 5.99995L0.999992 5.99995L0.999992 1.49999C0.999992 1.22385 0.776136 0.999994 0.499996 0.999994C0.223856 0.999994 -9.7852e-09 1.22385 -2.18557e-08 1.49999L4.07279e-07 13.4999C3.95208e-07 13.776 0.223855 13.9999 0.499996 13.9999C0.776136 13.9999 0.999992 13.776 0.999992 13.4999L0.999992 8.99993L4.99996 8.99993C5.55224 8.99993 5.99995 8.55222 5.99995 7.99993L5.99995 6.99994C5.99995 6.44766 5.55224 5.99995 4.99996 5.99995Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$41 = [\"color\"];\nvar SpaceBetweenVerticallyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$41);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.999878 0.5C0.999878 0.223858 1.22374 0 1.49988 0H13.4999C13.776 0 13.9999 0.223858 13.9999 0.5C13.9999 0.776142 13.776 1 13.4999 1L9 1V5C9 5.55228 8.55228 6 8 6H7C6.44772 6 6 5.55228 6 5V1H1.49988C1.22374 1 0.999878 0.776142 0.999878 0.5ZM7 9C6.44772 9 6 9.44771 6 10V14H1.49988C1.22374 14 0.999878 14.2239 0.999878 14.5C0.999878 14.7761 1.22374 15 1.49988 15H13.4999C13.776 15 13.9999 14.7761 13.9999 14.5C13.9999 14.2239 13.776 14 13.4999 14H9V10C9 9.44772 8.55228 9 8 9H7Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$42 = [\"color\"];\nvar SpaceEvenlyHorizontallyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$42);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14.4999 0.999992C14.2237 0.999992 13.9999 1.22385 13.9999 1.49999L13.9999 13.4999C13.9999 13.776 14.2237 13.9999 14.4999 13.9999C14.776 13.9999 14.9999 13.776 14.9999 13.4999L14.9999 1.49999C14.9999 1.22385 14.776 0.999992 14.4999 0.999992ZM0.499996 0.999992C0.223856 0.999992 -9.78509e-09 1.22385 -2.18556e-08 1.49999L4.07279e-07 13.4999C3.95208e-07 13.776 0.223855 13.9999 0.499996 13.9999C0.776136 13.9999 0.999992 13.776 0.999992 13.4999L0.999992 1.49999C0.999992 1.22385 0.776136 0.999992 0.499996 0.999992ZM1.99998 6.99994C1.99998 6.44766 2.44769 5.99995 2.99998 5.99995L5.99995 5.99995C6.55223 5.99995 6.99994 6.44766 6.99994 6.99994L6.99994 7.99993C6.99994 8.55221 6.55223 8.99992 5.99995 8.99992L2.99998 8.99992C2.4477 8.99992 1.99998 8.55221 1.99998 7.99993L1.99998 6.99994ZM8.99993 5.99995C8.44765 5.99995 7.99993 6.44766 7.99993 6.99994L7.99993 7.99993C7.99993 8.55221 8.44765 8.99992 8.99993 8.99992L11.9999 8.99992C12.5522 8.99992 12.9999 8.55221 12.9999 7.99993L12.9999 6.99994C12.9999 6.44766 12.5522 5.99995 11.9999 5.99995L8.99993 5.99995Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$43 = [\"color\"];\nvar SpaceEvenlyVerticallyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$43);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.999878 0.5C0.999878 0.223858 1.22374 0 1.49988 0H13.4999C13.776 0 13.9999 0.223858 13.9999 0.5C13.9999 0.776142 13.776 1 13.4999 1H1.49988C1.22374 1 0.999878 0.776142 0.999878 0.5ZM7 2C6.44772 2 6 2.44772 6 3V6C6 6.55228 6.44772 7 7 7H8C8.55228 7 9 6.55228 9 6V3C9 2.44772 8.55228 2 8 2H7ZM7 8C6.44772 8 6 8.44771 6 9V12C6 12.5523 6.44772 13 7 13H8C8.55228 13 9 12.5523 9 12V9C9 8.44772 8.55228 8 8 8H7ZM1.49988 14C1.22374 14 0.999878 14.2239 0.999878 14.5C0.999878 14.7761 1.22374 15 1.49988 15H13.4999C13.776 15 13.9999 14.7761 13.9999 14.5C13.9999 14.2239 13.776 14 13.4999 14H1.49988Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$44 = [\"color\"];\nvar SpeakerLoudIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$44);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.46968 1.05085C7.64122 1.13475 7.75 1.30904 7.75 1.5V13.5C7.75 13.691 7.64122 13.8653 7.46968 13.9492C7.29813 14.0331 7.09377 14.0119 6.94303 13.8947L3.2213 11H1.5C0.671571 11 0 10.3284 0 9.5V5.5C0 4.67158 0.671573 4 1.5 4H3.2213L6.94303 1.10533C7.09377 0.988085 7.29813 0.966945 7.46968 1.05085ZM6.75 2.52232L3.69983 4.89468C3.61206 4.96294 3.50405 5 3.39286 5H1.5C1.22386 5 1 5.22386 1 5.5V9.5C1 9.77615 1.22386 10 1.5 10H3.39286C3.50405 10 3.61206 10.0371 3.69983 10.1053L6.75 12.4777V2.52232ZM10.2784 3.84804C10.4623 3.72567 10.7106 3.77557 10.833 3.95949C12.2558 6.09798 12.2558 8.90199 10.833 11.0405C10.7106 11.2244 10.4623 11.2743 10.2784 11.1519C10.0944 11.0296 10.0445 10.7813 10.1669 10.5973C11.4111 8.72728 11.4111 6.27269 10.1669 4.40264C10.0445 4.21871 10.0944 3.97041 10.2784 3.84804ZM12.6785 1.43044C12.5356 1.2619 12.2832 1.24104 12.1147 1.38386C11.9462 1.52667 11.9253 1.77908 12.0681 1.94762C14.7773 5.14488 14.7773 9.85513 12.0681 13.0524C11.9253 13.2209 11.9462 13.4733 12.1147 13.6161C12.2832 13.759 12.5356 13.7381 12.6785 13.5696C15.6406 10.0739 15.6406 4.92612 12.6785 1.43044Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$45 = [\"color\"];\nvar SpeakerModerateIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$45);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8 1.5C8 1.31062 7.893 1.13749 7.72361 1.05279C7.55421 0.968093 7.35151 0.986371 7.2 1.1L3.33333 4H1.5C0.671573 4 0 4.67158 0 5.5V9.5C0 10.3284 0.671573 11 1.5 11H3.33333L7.2 13.9C7.35151 14.0136 7.55421 14.0319 7.72361 13.9472C7.893 13.8625 8 13.6894 8 13.5V1.5ZM3.8 4.9L7 2.5V12.5L3.8 10.1C3.71345 10.0351 3.60819 10 3.5 10H1.5C1.22386 10 1 9.77614 1 9.5V5.5C1 5.22386 1.22386 5 1.5 5H3.5C3.60819 5 3.71345 4.96491 3.8 4.9ZM10.833 3.95949C10.7106 3.77557 10.4623 3.72567 10.2784 3.84804C10.0944 3.97041 10.0445 4.21871 10.1669 4.40264C11.4111 6.27268 11.4111 8.72728 10.1669 10.5973C10.0445 10.7813 10.0944 11.0296 10.2784 11.1519C10.4623 11.2743 10.7106 11.2244 10.833 11.0405C12.2558 8.90199 12.2558 6.09798 10.833 3.95949Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$46 = [\"color\"];\nvar SpeakerOffIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$46);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.72361 1.05279C7.893 1.13749 8 1.31062 8 1.5V13.5C8 13.6894 7.893 13.8625 7.72361 13.9472C7.55421 14.0319 7.35151 14.0136 7.2 13.9L3.33333 11H1.5C0.671573 11 0 10.3284 0 9.5V5.5C0 4.67158 0.671573 4 1.5 4H3.33333L7.2 1.1C7.35151 0.986371 7.55421 0.968093 7.72361 1.05279ZM7 2.5L3.8 4.9C3.71345 4.96491 3.60819 5 3.5 5H1.5C1.22386 5 1 5.22386 1 5.5V9.5C1 9.77614 1.22386 10 1.5 10H3.5C3.60819 10 3.71345 10.0351 3.8 10.1L7 12.5V2.5ZM14.8536 5.14645C15.0488 5.34171 15.0488 5.65829 14.8536 5.85355L13.2071 7.5L14.8536 9.14645C15.0488 9.34171 15.0488 9.65829 14.8536 9.85355C14.6583 10.0488 14.3417 10.0488 14.1464 9.85355L12.5 8.20711L10.8536 9.85355C10.6583 10.0488 10.3417 10.0488 10.1464 9.85355C9.95118 9.65829 9.95118 9.34171 10.1464 9.14645L11.7929 7.5L10.1464 5.85355C9.95118 5.65829 9.95118 5.34171 10.1464 5.14645C10.3417 4.95118 10.6583 4.95118 10.8536 5.14645L12.5 6.79289L14.1464 5.14645C14.3417 4.95118 14.6583 4.95118 14.8536 5.14645Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$47 = [\"color\"];\nvar SpeakerQuietIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$47);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8 1.5C8 1.31062 7.893 1.13749 7.72361 1.05279C7.55421 0.968093 7.35151 0.986371 7.2 1.1L3.33333 4H1.5C0.671573 4 0 4.67158 0 5.5V9.5C0 10.3284 0.671573 11 1.5 11H3.33333L7.2 13.9C7.35151 14.0136 7.55421 14.0319 7.72361 13.9472C7.893 13.8625 8 13.6894 8 13.5V1.5ZM3.8 4.9L7 2.5V12.5L3.8 10.1C3.71345 10.0351 3.60819 10 3.5 10H1.5C1.22386 10 1 9.77614 1 9.5V5.5C1 5.22386 1.22386 5 1.5 5H3.5C3.60819 5 3.71345 4.96491 3.8 4.9ZM10.083 5.05577C9.96066 4.87185 9.71235 4.82195 9.52843 4.94432C9.3445 5.06669 9.2946 5.31499 9.41697 5.49892C10.2207 6.70693 10.2207 8.29303 9.41697 9.50104C9.2946 9.68496 9.3445 9.93326 9.52843 10.0556C9.71235 10.178 9.96066 10.1281 10.083 9.94418C11.0653 8.46773 11.0653 6.53222 10.083 5.05577Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$48 = [\"color\"];\nvar SquareIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$48);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 1H1.5H13.5H14V1.5V13.5V14H13.5H1.5H1V13.5V1.5V1ZM2 2V13H13V2H2Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$49 = [\"color\"];\nvar StackIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$49);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.75432 1.81954C7.59742 1.72682 7.4025 1.72682 7.24559 1.81954L1.74559 5.06954C1.59336 5.15949 1.49996 5.32317 1.49996 5.5C1.49996 5.67683 1.59336 5.84051 1.74559 5.93046L7.24559 9.18046C7.4025 9.27318 7.59742 9.27318 7.75432 9.18046L13.2543 5.93046C13.4066 5.84051 13.5 5.67683 13.5 5.5C13.5 5.32317 13.4066 5.15949 13.2543 5.06954L7.75432 1.81954ZM7.49996 8.16923L2.9828 5.5L7.49996 2.83077L12.0171 5.5L7.49996 8.16923ZM2.25432 8.31954C2.01658 8.17906 1.70998 8.2579 1.56949 8.49564C1.42901 8.73337 1.50785 9.03998 1.74559 9.18046L7.24559 12.4305C7.4025 12.5232 7.59742 12.5232 7.75432 12.4305L13.2543 9.18046C13.4921 9.03998 13.5709 8.73337 13.4304 8.49564C13.2899 8.2579 12.9833 8.17906 12.7456 8.31954L7.49996 11.4192L2.25432 8.31954Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4a = [\"color\"];\nvar StarIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4a);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.97942 1.25171L6.9585 1.30199L5.58662 4.60039C5.54342 4.70426 5.44573 4.77523 5.3336 4.78422L1.7727 5.0697L1.71841 5.07405L1.38687 5.10063L1.08608 5.12475C0.820085 5.14607 0.712228 5.47802 0.914889 5.65162L1.14406 5.84793L1.39666 6.06431L1.43802 6.09974L4.15105 8.42374C4.23648 8.49692 4.2738 8.61176 4.24769 8.72118L3.41882 12.196L3.40618 12.249L3.32901 12.5725L3.25899 12.866C3.19708 13.1256 3.47945 13.3308 3.70718 13.1917L3.9647 13.0344L4.24854 12.861L4.29502 12.8326L7.34365 10.9705C7.43965 10.9119 7.5604 10.9119 7.6564 10.9705L10.705 12.8326L10.7515 12.861L11.0354 13.0344L11.2929 13.1917C11.5206 13.3308 11.803 13.1256 11.7411 12.866L11.671 12.5725L11.5939 12.249L11.5812 12.196L10.7524 8.72118C10.7263 8.61176 10.7636 8.49692 10.849 8.42374L13.562 6.09974L13.6034 6.06431L13.856 5.84793L14.0852 5.65162C14.2878 5.47802 14.18 5.14607 13.914 5.12475L13.6132 5.10063L13.2816 5.07405L13.2274 5.0697L9.66645 4.78422C9.55432 4.77523 9.45663 4.70426 9.41343 4.60039L8.04155 1.30199L8.02064 1.25171L7.89291 0.944609L7.77702 0.665992C7.67454 0.419604 7.32551 0.419604 7.22303 0.665992L7.10715 0.944609L6.97942 1.25171ZM7.50003 2.60397L6.50994 4.98442C6.32273 5.43453 5.89944 5.74207 5.41351 5.78103L2.84361 5.98705L4.8016 7.66428C5.17183 7.98142 5.33351 8.47903 5.2204 8.95321L4.62221 11.461L6.8224 10.1171C7.23842 9.86302 7.76164 9.86302 8.17766 10.1171L10.3778 11.461L9.77965 8.95321C9.66654 8.47903 9.82822 7.98142 10.1984 7.66428L12.1564 5.98705L9.58654 5.78103C9.10061 5.74207 8.67732 5.43453 8.49011 4.98442L7.50003 2.60397Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4b = [\"color\"];\nvar StarFilledIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4b);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.22303 0.665992C7.32551 0.419604 7.67454 0.419604 7.77702 0.665992L9.41343 4.60039C9.45663 4.70426 9.55432 4.77523 9.66645 4.78422L13.914 5.12475C14.18 5.14607 14.2878 5.47802 14.0852 5.65162L10.849 8.42374C10.7636 8.49692 10.7263 8.61176 10.7524 8.72118L11.7411 12.866C11.803 13.1256 11.5206 13.3308 11.2929 13.1917L7.6564 10.9705C7.5604 10.9119 7.43965 10.9119 7.34365 10.9705L3.70718 13.1917C3.47945 13.3308 3.19708 13.1256 3.25899 12.866L4.24769 8.72118C4.2738 8.61176 4.23648 8.49692 4.15105 8.42374L0.914889 5.65162C0.712228 5.47802 0.820086 5.14607 1.08608 5.12475L5.3336 4.78422C5.44573 4.77523 5.54342 4.70426 5.58662 4.60039L7.22303 0.665992Z\",\n    fill: color\n  }));\n});\nvar _excluded$4c = [\"color\"];\nvar StitchesLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4c);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.84998 7.49998C1.84998 7.21321 1.87134 6.93143 1.91256 6.65615L9.56374 2.23875C9.86311 2.35627 10.15 2.49861 10.4219 2.66322L3.77065 6.50332C3.73669 6.52183 3.70482 6.5449 3.67602 6.57238C3.5911 6.65308 3.54245 6.76286 3.53682 6.87658C3.53359 6.9418 3.54451 7.00831 3.57086 7.07137C3.58927 7.1157 3.6149 7.15742 3.64744 7.19458C3.67306 7.22396 3.702 7.24941 3.73337 7.27069L7.32533 9.83813L3.87232 11.8317C2.63604 10.7953 1.84998 9.23944 1.84998 7.49998ZM8.36843 10.2751C8.37682 10.2706 8.38509 10.2659 8.39322 10.2608L9.84091 9.42499C9.84706 9.42163 9.85314 9.41812 9.85915 9.41446L11.3101 8.57677C11.3655 8.54649 11.4154 8.504 11.4554 8.44995C11.6034 8.25031 11.5616 7.96848 11.362 7.82046L7.82779 5.20017L11.2161 3.24393C12.4013 4.27963 13.15 5.80237 13.15 7.49998C13.15 7.83546 13.1207 8.16411 13.0647 8.48353L5.56875 12.8113C5.26138 12.6995 4.96646 12.5618 4.68662 12.4008L8.36843 10.2751ZM8.18149 9.34383L4.81659 6.93868L5.50918 6.53881L8.80604 8.98324L8.18149 9.34383ZM6.35875 6.04832L6.97822 5.69067L10.2751 8.13506L9.6556 8.49275L6.35875 6.04832ZM8.3318 1.91078L2.24263 5.42636C3.06941 3.33188 5.11164 1.84998 7.49998 1.84998C7.78258 1.84998 8.06033 1.87072 8.3318 1.91078ZM6.84684 13.1126C7.06114 13.1373 7.27908 13.15 7.49998 13.15C9.8246 13.15 11.8213 11.7461 12.6886 9.7399L6.84684 13.1126ZM7.49998 0.849976C3.82728 0.849976 0.849976 3.82728 0.849976 7.49998C0.849976 11.1727 3.82728 14.15 7.49998 14.15C11.1727 14.15 14.15 11.1727 14.15 7.49998C14.15 3.82728 11.1727 0.849976 7.49998 0.849976Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4d = [\"color\"];\nvar StopIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4d);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 3C2 2.44772 2.44772 2 3 2H12C12.5523 2 13 2.44772 13 3V12C13 12.5523 12.5523 13 12 13H3C2.44772 13 2 12.5523 2 12V3ZM12 3H3V12H12V3Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4e = [\"color\"];\nvar StopwatchIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4e);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.49998 0.5C5.49998 0.223858 5.72383 0 5.99998 0H7.49998H8.99998C9.27612 0 9.49998 0.223858 9.49998 0.5C9.49998 0.776142 9.27612 1 8.99998 1H7.99998V2.11922C9.09832 2.20409 10.119 2.56622 10.992 3.13572C11.0116 3.10851 11.0336 3.08252 11.058 3.05806L11.858 2.25806C12.1021 2.01398 12.4978 2.01398 12.7419 2.25806C12.986 2.50214 12.986 2.89786 12.7419 3.14194L11.967 3.91682C13.1595 5.07925 13.9 6.70314 13.9 8.49998C13.9 12.0346 11.0346 14.9 7.49998 14.9C3.96535 14.9 1.09998 12.0346 1.09998 8.49998C1.09998 5.13362 3.69904 2.3743 6.99998 2.11922V1H5.99998C5.72383 1 5.49998 0.776142 5.49998 0.5ZM2.09998 8.49998C2.09998 5.51764 4.51764 3.09998 7.49998 3.09998C10.4823 3.09998 12.9 5.51764 12.9 8.49998C12.9 11.4823 10.4823 13.9 7.49998 13.9C4.51764 13.9 2.09998 11.4823 2.09998 8.49998ZM7.99998 4.5C7.99998 4.22386 7.77612 4 7.49998 4C7.22383 4 6.99998 4.22386 6.99998 4.5V9.5C6.99998 9.77614 7.22383 10 7.49998 10C7.77612 10 7.99998 9.77614 7.99998 9.5V4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4f = [\"color\"];\nvar StretchHorizontallyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4f);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14.4999 0.999992C14.2237 0.999992 13.9999 1.22385 13.9999 1.49999L13.9999 5.99995L0.999992 5.99995L0.999992 1.49999C0.999992 1.22385 0.776136 0.999992 0.499996 0.999992C0.223856 0.999992 -9.78509e-09 1.22385 -2.18556e-08 1.49999L4.07279e-07 13.4999C3.95208e-07 13.776 0.223855 13.9999 0.499996 13.9999C0.776136 13.9999 0.999992 13.776 0.999992 13.4999L0.999992 8.99992L13.9999 8.99992L13.9999 13.4999C13.9999 13.776 14.2237 13.9999 14.4999 13.9999C14.776 13.9999 14.9999 13.776 14.9999 13.4999L14.9999 1.49999C14.9999 1.22385 14.776 0.999992 14.4999 0.999992Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4g = [\"color\"];\nvar StretchVerticallyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4g);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.999878 0.5C0.999878 0.223858 1.22374 0 1.49988 0H13.4999C13.776 0 13.9999 0.223858 13.9999 0.5C13.9999 0.776142 13.776 1 13.4999 1H6H1.49988C1.22374 1 0.999878 0.776142 0.999878 0.5ZM9 14V1L6 1V14H1.49988C1.22374 14 0.999878 14.2239 0.999878 14.5C0.999878 14.7761 1.22374 15 1.49988 15H13.4999C13.776 15 13.9999 14.7761 13.9999 14.5C13.9999 14.2239 13.776 14 13.4999 14H9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4h = [\"color\"];\nvar StrikethroughIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4h);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.00003 3.25C5.00003 2.97386 4.77617 2.75 4.50003 2.75C4.22389 2.75 4.00003 2.97386 4.00003 3.25V7.10003H2.49998C2.27906 7.10003 2.09998 7.27912 2.09998 7.50003C2.09998 7.72094 2.27906 7.90003 2.49998 7.90003H4.00003V8.55C4.00003 10.483 5.56703 12.05 7.50003 12.05C9.43303 12.05 11 10.483 11 8.55V7.90003H12.5C12.7209 7.90003 12.9 7.72094 12.9 7.50003C12.9 7.27912 12.7209 7.10003 12.5 7.10003H11V3.25C11 2.97386 10.7762 2.75 10.5 2.75C10.2239 2.75 10 2.97386 10 3.25V7.10003H5.00003V3.25ZM5.00003 7.90003V8.55C5.00003 9.93071 6.11932 11.05 7.50003 11.05C8.88074 11.05 10 9.93071 10 8.55V7.90003H5.00003Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4i = [\"color\"];\nvar SunIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4i);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 0C7.77614 0 8 0.223858 8 0.5V2.5C8 2.77614 7.77614 3 7.5 3C7.22386 3 7 2.77614 7 2.5V0.5C7 0.223858 7.22386 0 7.5 0ZM2.1967 2.1967C2.39196 2.00144 2.70854 2.00144 2.90381 2.1967L4.31802 3.61091C4.51328 3.80617 4.51328 4.12276 4.31802 4.31802C4.12276 4.51328 3.80617 4.51328 3.61091 4.31802L2.1967 2.90381C2.00144 2.70854 2.00144 2.39196 2.1967 2.1967ZM0.5 7C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H2.5C2.77614 8 3 7.77614 3 7.5C3 7.22386 2.77614 7 2.5 7H0.5ZM2.1967 12.8033C2.00144 12.608 2.00144 12.2915 2.1967 12.0962L3.61091 10.682C3.80617 10.4867 4.12276 10.4867 4.31802 10.682C4.51328 10.8772 4.51328 11.1938 4.31802 11.3891L2.90381 12.8033C2.70854 12.9986 2.39196 12.9986 2.1967 12.8033ZM12.5 7C12.2239 7 12 7.22386 12 7.5C12 7.77614 12.2239 8 12.5 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12.5ZM10.682 4.31802C10.4867 4.12276 10.4867 3.80617 10.682 3.61091L12.0962 2.1967C12.2915 2.00144 12.608 2.00144 12.8033 2.1967C12.9986 2.39196 12.9986 2.70854 12.8033 2.90381L11.3891 4.31802C11.1938 4.51328 10.8772 4.51328 10.682 4.31802ZM8 12.5C8 12.2239 7.77614 12 7.5 12C7.22386 12 7 12.2239 7 12.5V14.5C7 14.7761 7.22386 15 7.5 15C7.77614 15 8 14.7761 8 14.5V12.5ZM10.682 10.682C10.8772 10.4867 11.1938 10.4867 11.3891 10.682L12.8033 12.0962C12.9986 12.2915 12.9986 12.608 12.8033 12.8033C12.608 12.9986 12.2915 12.9986 12.0962 12.8033L10.682 11.3891C10.4867 11.1938 10.4867 10.8772 10.682 10.682ZM5.5 7.5C5.5 6.39543 6.39543 5.5 7.5 5.5C8.60457 5.5 9.5 6.39543 9.5 7.5C9.5 8.60457 8.60457 9.5 7.5 9.5C6.39543 9.5 5.5 8.60457 5.5 7.5ZM7.5 4.5C5.84315 4.5 4.5 5.84315 4.5 7.5C4.5 9.15685 5.84315 10.5 7.5 10.5C9.15685 10.5 10.5 9.15685 10.5 7.5C10.5 5.84315 9.15685 4.5 7.5 4.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4j = [\"color\"];\nvar SwitchIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4j);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M10.5 4C8.567 4 7 5.567 7 7.5C7 9.433 8.567 11 10.5 11C12.433 11 14 9.433 14 7.5C14 5.567 12.433 4 10.5 4ZM7.67133 11C6.65183 10.175 6 8.91363 6 7.5C6 6.08637 6.65183 4.82498 7.67133 4H4.5C2.567 4 1 5.567 1 7.5C1 9.433 2.567 11 4.5 11H7.67133ZM0 7.5C0 5.01472 2.01472 3 4.5 3H10.5C12.9853 3 15 5.01472 15 7.5C15 9.98528 12.9853 12 10.5 12H4.5C2.01472 12 0 9.98528 0 7.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4k = [\"color\"];\nvar SymbolIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4k);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.90321 7.29677C1.90321 10.341 4.11041 12.4147 6.58893 12.8439C6.87255 12.893 7.06266 13.1627 7.01355 13.4464C6.96444 13.73 6.69471 13.9201 6.41109 13.871C3.49942 13.3668 0.86084 10.9127 0.86084 7.29677C0.860839 5.76009 1.55996 4.55245 2.37639 3.63377C2.96124 2.97568 3.63034 2.44135 4.16846 2.03202L2.53205 2.03202C2.25591 2.03202 2.03205 1.80816 2.03205 1.53202C2.03205 1.25588 2.25591 1.03202 2.53205 1.03202L5.53205 1.03202C5.80819 1.03202 6.03205 1.25588 6.03205 1.53202L6.03205 4.53202C6.03205 4.80816 5.80819 5.03202 5.53205 5.03202C5.25591 5.03202 5.03205 4.80816 5.03205 4.53202L5.03205 2.68645L5.03054 2.68759L5.03045 2.68766L5.03044 2.68767L5.03043 2.68767C4.45896 3.11868 3.76059 3.64538 3.15554 4.3262C2.44102 5.13021 1.90321 6.10154 1.90321 7.29677ZM13.0109 7.70321C13.0109 4.69115 10.8505 2.6296 8.40384 2.17029C8.12093 2.11718 7.93465 1.84479 7.98776 1.56188C8.04087 1.27898 8.31326 1.0927 8.59616 1.14581C11.4704 1.68541 14.0532 4.12605 14.0532 7.70321C14.0532 9.23988 13.3541 10.4475 12.5377 11.3662C11.9528 12.0243 11.2837 12.5586 10.7456 12.968L12.3821 12.968C12.6582 12.968 12.8821 13.1918 12.8821 13.468C12.8821 13.7441 12.6582 13.968 12.3821 13.968L9.38205 13.968C9.10591 13.968 8.88205 13.7441 8.88205 13.468L8.88205 10.468C8.88205 10.1918 9.10591 9.96796 9.38205 9.96796C9.65819 9.96796 9.88205 10.1918 9.88205 10.468L9.88205 12.3135L9.88362 12.3123C10.4551 11.8813 11.1535 11.3546 11.7585 10.6738C12.4731 9.86976 13.0109 8.89844 13.0109 7.70321Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4l = [\"color\"];\nvar TableIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4l);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8 2H12.5C12.7761 2 13 2.22386 13 2.5V5H8V2ZM7 5V2H2.5C2.22386 2 2 2.22386 2 2.5V5H7ZM2 6V9H7V6H2ZM8 6H13V9H8V6ZM8 10H13V12.5C13 12.7761 12.7761 13 12.5 13H8V10ZM2 12.5V10H7V13H2.5C2.22386 13 2 12.7761 2 12.5ZM1 2.5C1 1.67157 1.67157 1 2.5 1H12.5C13.3284 1 14 1.67157 14 2.5V12.5C14 13.3284 13.3284 14 12.5 14H2.5C1.67157 14 1 13.3284 1 12.5V2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4m = [\"color\"];\nvar TargetIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4m);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.900024 7.50002C0.900024 3.85495 3.85495 0.900024 7.50002 0.900024C11.1451 0.900024 14.1 3.85495 14.1 7.50002C14.1 11.1451 11.1451 14.1 7.50002 14.1C3.85495 14.1 0.900024 11.1451 0.900024 7.50002ZM7.50002 1.80002C4.35201 1.80002 1.80002 4.35201 1.80002 7.50002C1.80002 10.648 4.35201 13.2 7.50002 13.2C10.648 13.2 13.2 10.648 13.2 7.50002C13.2 4.35201 10.648 1.80002 7.50002 1.80002ZM3.07504 7.50002C3.07504 5.05617 5.05618 3.07502 7.50004 3.07502C9.94388 3.07502 11.925 5.05617 11.925 7.50002C11.925 9.94386 9.94388 11.925 7.50004 11.925C5.05618 11.925 3.07504 9.94386 3.07504 7.50002ZM7.50004 3.92502C5.52562 3.92502 3.92504 5.52561 3.92504 7.50002C3.92504 9.47442 5.52563 11.075 7.50004 11.075C9.47444 11.075 11.075 9.47442 11.075 7.50002C11.075 5.52561 9.47444 3.92502 7.50004 3.92502ZM7.50004 5.25002C6.2574 5.25002 5.25004 6.25739 5.25004 7.50002C5.25004 8.74266 6.2574 9.75002 7.50004 9.75002C8.74267 9.75002 9.75004 8.74266 9.75004 7.50002C9.75004 6.25738 8.74267 5.25002 7.50004 5.25002ZM6.05004 7.50002C6.05004 6.69921 6.69923 6.05002 7.50004 6.05002C8.30084 6.05002 8.95004 6.69921 8.95004 7.50002C8.95004 8.30083 8.30084 8.95002 7.50004 8.95002C6.69923 8.95002 6.05004 8.30083 6.05004 7.50002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4n = [\"color\"];\nvar TextIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4n);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.94993 2.95002L3.94993 4.49998C3.94993 4.74851 3.74845 4.94998 3.49993 4.94998C3.2514 4.94998 3.04993 4.74851 3.04993 4.49998V2.50004C3.04993 2.45246 3.05731 2.40661 3.07099 2.36357C3.12878 2.18175 3.29897 2.05002 3.49993 2.05002H11.4999C11.6553 2.05002 11.7922 2.12872 11.8731 2.24842C11.9216 2.32024 11.9499 2.40682 11.9499 2.50002L11.9499 2.50004V4.49998C11.9499 4.74851 11.7485 4.94998 11.4999 4.94998C11.2514 4.94998 11.0499 4.74851 11.0499 4.49998V2.95002H8.04993V12.05H9.25428C9.50281 12.05 9.70428 12.2515 9.70428 12.5C9.70428 12.7486 9.50281 12.95 9.25428 12.95H5.75428C5.50575 12.95 5.30428 12.7486 5.30428 12.5C5.30428 12.2515 5.50575 12.05 5.75428 12.05H6.94993V2.95002H3.94993Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4o = [\"color\"];\nvar TextAlignBottomIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4o);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.89949 5.50002C3.89949 5.27911 3.7204 5.10003 3.49949 5.10003C3.27857 5.10003 3.09949 5.27911 3.09949 5.50002L3.09949 12.5343L1.78233 11.2172C1.62612 11.061 1.37285 11.061 1.21664 11.2172C1.06043 11.3734 1.06043 11.6267 1.21664 11.7829L3.21664 13.7829C3.29166 13.8579 3.3934 13.9 3.49949 13.9C3.60557 13.9 3.70732 13.8579 3.78233 13.7829L5.78233 11.7829C5.93854 11.6267 5.93854 11.3734 5.78233 11.2172C5.62612 11.061 5.37285 11.061 5.21664 11.2172L3.89949 12.5343L3.89949 5.50002ZM8.49998 13C8.22383 13 7.99998 12.7762 7.99998 12.5C7.99998 12.2239 8.22383 12 8.49998 12H14.5C14.7761 12 15 12.2239 15 12.5C15 12.7762 14.7761 13 14.5 13H8.49998ZM8.49998 10C8.22383 10 7.99998 9.77617 7.99998 9.50002C7.99998 9.22388 8.22383 9.00002 8.49998 9.00002H14.5C14.7761 9.00002 15 9.22388 15 9.50002C15 9.77617 14.7761 10 14.5 10H8.49998ZM7.99998 6.50002C7.99998 6.77617 8.22383 7.00002 8.49998 7.00002H14.5C14.7761 7.00002 15 6.77617 15 6.50002C15 6.22388 14.7761 6.00002 14.5 6.00002H8.49998C8.22383 6.00002 7.99998 6.22388 7.99998 6.50002Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4p = [\"color\"];\nvar TextAlignCenterIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4p);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 4.5C2 4.22386 2.22386 4 2.5 4H12.5C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H2.5C2.22386 5 2 4.77614 2 4.5ZM4 7.5C4 7.22386 4.22386 7 4.5 7H10.5C10.7761 7 11 7.22386 11 7.5C11 7.77614 10.7761 8 10.5 8H4.5C4.22386 8 4 7.77614 4 7.5ZM3 10.5C3 10.2239 3.22386 10 3.5 10H11.5C11.7761 10 12 10.2239 12 10.5C12 10.7761 11.7761 11 11.5 11H3.5C3.22386 11 3 10.7761 3 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4q = [\"color\"];\nvar TextAlignJustifyIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2.5 4C2.22386 4 2 4.22386 2 4.5C2 4.77614 2.22386 5 2.5 5H12.5C12.7761 5 13 4.77614 13 4.5C13 4.22386 12.7761 4 12.5 4H2.5ZM2 7.5C2 7.22386 2.22386 7 2.5 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H2.5C2.22386 8 2 7.77614 2 7.5ZM2 10.5C2 10.2239 2.22386 10 2.5 10H12.5C12.7761 10 13 10.2239 13 10.5C13 10.7761 12.7761 11 12.5 11H2.5C2.22386 11 2 10.7761 2 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4r = [\"color\"];\nvar TextAlignLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4r);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 4.5C2 4.22386 2.22386 4 2.5 4H12.5C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H2.5C2.22386 5 2 4.77614 2 4.5ZM2 7.5C2 7.22386 2.22386 7 2.5 7H7.5C7.77614 7 8 7.22386 8 7.5C8 7.77614 7.77614 8 7.5 8H2.5C2.22386 8 2 7.77614 2 7.5ZM2 10.5C2 10.2239 2.22386 10 2.5 10H10.5C10.7761 10 11 10.2239 11 10.5C11 10.7761 10.7761 11 10.5 11H2.5C2.22386 11 2 10.7761 2 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4s = [\"color\"];\nvar TextAlignMiddleIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4s);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.49949 14.9C3.7204 14.9 3.89949 14.7209 3.89949 14.5L3.89949 10.4657L5.21664 11.7829C5.37285 11.9391 5.62612 11.9391 5.78233 11.7829C5.93854 11.6267 5.93854 11.3734 5.78233 11.2172L3.78233 9.21718C3.70732 9.14217 3.60557 9.10002 3.49949 9.10002C3.3934 9.10002 3.29166 9.14217 3.21664 9.21718L1.21664 11.2172C1.06043 11.3734 1.06043 11.6267 1.21664 11.7829C1.37285 11.9391 1.62612 11.9391 1.78233 11.7829L3.09949 10.4657L3.09949 14.5C3.09949 14.7209 3.27857 14.9 3.49949 14.9ZM7.99998 10.5C7.99998 10.7762 8.22383 11 8.49998 11H14.5C14.7761 11 15 10.7762 15 10.5C15 10.2239 14.7761 10 14.5 10H8.49998C8.22383 10 7.99998 10.2239 7.99998 10.5ZM7.99998 7.50002C7.99998 7.77617 8.22383 8.00002 8.49998 8.00002H14.5C14.7761 8.00002 15 7.77617 15 7.50002C15 7.22388 14.7761 7.00002 14.5 7.00002H8.49998C8.22383 7.00002 7.99998 7.22388 7.99998 7.50002ZM8.49998 5.00002C8.22383 5.00002 7.99998 4.77617 7.99998 4.50002C7.99998 4.22388 8.22383 4.00002 8.49998 4.00002H14.5C14.7761 4.00002 15 4.22388 15 4.50002C15 4.77617 14.7761 5.00002 14.5 5.00002H8.49998ZM3.89949 0.500025C3.89949 0.279111 3.7204 0.100025 3.49949 0.100025C3.27857 0.100025 3.09949 0.279111 3.09949 0.500025L3.09949 4.53434L1.78233 3.21718C1.62612 3.06097 1.37285 3.06097 1.21664 3.21718C1.06043 3.37339 1.06043 3.62666 1.21664 3.78287L3.21664 5.78287C3.29166 5.85788 3.3934 5.90002 3.49949 5.90002C3.60557 5.90002 3.70732 5.85788 3.78233 5.78287L5.78233 3.78287C5.93854 3.62666 5.93854 3.37339 5.78233 3.21718C5.62612 3.06097 5.37285 3.06097 5.21664 3.21718L3.89949 4.53434L3.89949 0.500025Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4t = [\"color\"];\nvar TextAlignRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4t);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M2 4.5C2 4.22386 2.22386 4 2.5 4H12.5C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H2.5C2.22386 5 2 4.77614 2 4.5ZM7 7.5C7 7.22386 7.22386 7 7.5 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H7.5C7.22386 8 7 7.77614 7 7.5ZM4 10.5C4 10.2239 4.22386 10 4.5 10H12.5C12.7761 10 13 10.2239 13 10.5C13 10.7761 12.7761 11 12.5 11H4.5C4.22386 11 4 10.7761 4 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4u = [\"color\"];\nvar TextAlignTopIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4u);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M3.89949 9.49998C3.89949 9.72089 3.7204 9.89997 3.49949 9.89997C3.27857 9.89997 3.09949 9.72089 3.09949 9.49998L3.09949 2.46566L1.78233 3.78282C1.62612 3.93903 1.37285 3.93903 1.21664 3.78282C1.06043 3.62661 1.06043 3.37334 1.21664 3.21713L3.21664 1.21713C3.29166 1.14212 3.3934 1.09998 3.49949 1.09998C3.60557 1.09998 3.70732 1.14212 3.78233 1.21713L5.78233 3.21713C5.93854 3.37334 5.93854 3.62661 5.78233 3.78282C5.62612 3.93903 5.37285 3.93903 5.21664 3.78282L3.89949 2.46566L3.89949 9.49998ZM8.49998 1.99998C8.22383 1.99998 7.99998 2.22383 7.99998 2.49998C7.99998 2.77612 8.22383 2.99998 8.49998 2.99998H14.5C14.7761 2.99998 15 2.77612 15 2.49998C15 2.22383 14.7761 1.99998 14.5 1.99998H8.49998ZM8.49998 4.99998C8.22383 4.99998 7.99998 5.22383 7.99998 5.49998C7.99998 5.77612 8.22383 5.99998 8.49998 5.99998H14.5C14.7761 5.99998 15 5.77612 15 5.49998C15 5.22383 14.7761 4.99998 14.5 4.99998H8.49998ZM7.99998 8.49998C7.99998 8.22383 8.22383 7.99998 8.49998 7.99998H14.5C14.7761 7.99998 15 8.22383 15 8.49998C15 8.77612 14.7761 8.99998 14.5 8.99998H8.49998C8.22383 8.99998 7.99998 8.77612 7.99998 8.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4v = [\"color\"];\nvar TextNoneIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4v);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.3536 2.35355C13.5488 2.15829 13.5488 1.84171 13.3536 1.64645C13.1583 1.45118 12.8417 1.45118 12.6464 1.64645L11.9291 2.36383C11.9159 2.32246 11.897 2.28368 11.8732 2.24845C11.7923 2.12875 11.6554 2.05005 11.5001 2.05005H3.50005C3.29909 2.05005 3.1289 2.18178 3.07111 2.3636C3.05743 2.40665 3.05005 2.45249 3.05005 2.50007V4.50001C3.05005 4.74854 3.25152 4.95001 3.50005 4.95001C3.74858 4.95001 3.95005 4.74854 3.95005 4.50001V2.95005H6.95006V7.34284L1.64645 12.6464C1.45118 12.8417 1.45118 13.1583 1.64645 13.3536C1.84171 13.5488 2.15829 13.5488 2.35355 13.3536L6.95006 8.75705V12.0501H5.7544C5.50587 12.0501 5.3044 12.2515 5.3044 12.5001C5.3044 12.7486 5.50587 12.9501 5.7544 12.9501H9.2544C9.50293 12.9501 9.7044 12.7486 9.7044 12.5001C9.7044 12.2515 9.50293 12.0501 9.2544 12.0501H8.05006V7.65705L13.3536 2.35355ZM8.05006 6.24284L11.0501 3.24283V2.95005H8.05006V6.24284Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4w = [\"color\"];\nvar ThickArrowDownIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4w);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5 3.5C5 3.22386 5.22386 3 5.5 3H9.5C9.77614 3 10 3.22386 10 3.5V6H12.5C12.6873 6 12.8589 6.10467 12.9446 6.27121C13.0303 6.43774 13.0157 6.63821 12.9069 6.79062L7.90687 13.7906C7.81301 13.922 7.66148 14 7.5 14C7.33853 14 7.18699 13.922 7.09314 13.7906L2.09314 6.79062C1.98427 6.63821 1.96972 6.43774 2.05542 6.27121C2.14112 6.10467 2.31271 6 2.5 6H5V3.5ZM6 4V6.5C6 6.77614 5.77614 7 5.5 7H3.4716L7.5 12.6398L11.5284 7H9.5C9.22386 7 9 6.77614 9 6.5V4H6Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4x = [\"color\"];\nvar ThickArrowLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4x);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1 7.5C1 7.66148 1.07798 7.81301 1.20938 7.90687L8.20938 12.9069C8.36179 13.0157 8.56226 13.0303 8.72879 12.9446C8.89533 12.8589 9 12.6873 9 12.5L9 10L11.5 10C11.7761 10 12 9.77614 12 9.5L12 5.5C12 5.22386 11.7761 5 11.5 5L9 5L9 2.5C9 2.31271 8.89533 2.14112 8.72879 2.05542C8.56226 1.96972 8.36179 1.98427 8.20938 2.09313L1.20938 7.09314C1.07798 7.18699 1 7.33853 1 7.5ZM8 3.4716L8 5.5C8 5.77614 8.22386 6 8.5 6L11 6L11 9L8.5 9C8.22386 9 8 9.22386 8 9.5L8 11.5284L2.36023 7.5L8 3.4716Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4y = [\"color\"];\nvar ThickArrowRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14 7.5C14 7.66148 13.922 7.81301 13.7906 7.90687L6.79062 12.9069C6.63821 13.0157 6.43774 13.0303 6.27121 12.9446C6.10467 12.8589 6 12.6873 6 12.5L6 10L3.5 10C3.22386 10 3 9.77614 3 9.5L3 5.5C3 5.22386 3.22386 5 3.5 5L6 5L6 2.5C6 2.31271 6.10467 2.14112 6.27121 2.05542C6.43774 1.96972 6.63821 1.98427 6.79062 2.09313L13.7906 7.09314C13.922 7.18699 14 7.33853 14 7.5ZM7 3.4716L7 5.5C7 5.77614 6.77614 6 6.5 6L4 6L4 9L6.5 9C6.77614 9 7 9.22386 7 9.5L7 11.5284L12.6398 7.5L7 3.4716Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4z = [\"color\"];\nvar ThickArrowUpIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.5 1C7.66148 1 7.81301 1.07798 7.90687 1.20938L12.9069 8.20938C13.0157 8.36179 13.0303 8.56226 12.9446 8.72879C12.8589 8.89533 12.6873 9 12.5 9H10V11.5C10 11.7761 9.77614 12 9.5 12H5.5C5.22386 12 5 11.7761 5 11.5V9H2.5C2.31271 9 2.14112 8.89533 2.05542 8.72879C1.96972 8.56226 1.98427 8.36179 2.09314 8.20938L7.09314 1.20938C7.18699 1.07798 7.33853 1 7.5 1ZM3.4716 8H5.5C5.77614 8 6 8.22386 6 8.5V11H9V8.5C9 8.22386 9.22386 8 9.5 8H11.5284L7.5 2.36023L3.4716 8Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4A = [\"color\"];\nvar TimerIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4A);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49998 0.849976C7.22383 0.849976 6.99998 1.07383 6.99998 1.34998V3.52234C6.99998 3.79848 7.22383 4.02234 7.49998 4.02234C7.77612 4.02234 7.99998 3.79848 7.99998 3.52234V1.8718C10.8862 2.12488 13.15 4.54806 13.15 7.49998C13.15 10.6204 10.6204 13.15 7.49998 13.15C4.37957 13.15 1.84998 10.6204 1.84998 7.49998C1.84998 6.10612 2.35407 4.83128 3.19049 3.8459C3.36919 3.63538 3.34339 3.31985 3.13286 3.14115C2.92234 2.96245 2.60681 2.98825 2.42811 3.19877C1.44405 4.35808 0.849976 5.86029 0.849976 7.49998C0.849976 11.1727 3.82728 14.15 7.49998 14.15C11.1727 14.15 14.15 11.1727 14.15 7.49998C14.15 3.82728 11.1727 0.849976 7.49998 0.849976ZM6.74049 8.08072L4.22363 4.57237C4.15231 4.47295 4.16346 4.33652 4.24998 4.25C4.33649 4.16348 4.47293 4.15233 4.57234 4.22365L8.08069 6.74051C8.56227 7.08599 8.61906 7.78091 8.19998 8.2C7.78089 8.61909 7.08597 8.56229 6.74049 8.08072Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4B = [\"color\"];\nvar TokensIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4B);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.5 2C3.11929 2 2 3.11929 2 4.5C2 5.88072 3.11929 7 4.5 7C5.88072 7 7 5.88072 7 4.5C7 3.11929 5.88072 2 4.5 2ZM3 4.5C3 3.67157 3.67157 3 4.5 3C5.32843 3 6 3.67157 6 4.5C6 5.32843 5.32843 6 4.5 6C3.67157 6 3 5.32843 3 4.5ZM10.5 2C9.11929 2 8 3.11929 8 4.5C8 5.88072 9.11929 7 10.5 7C11.8807 7 13 5.88072 13 4.5C13 3.11929 11.8807 2 10.5 2ZM9 4.5C9 3.67157 9.67157 3 10.5 3C11.3284 3 12 3.67157 12 4.5C12 5.32843 11.3284 6 10.5 6C9.67157 6 9 5.32843 9 4.5ZM2 10.5C2 9.11929 3.11929 8 4.5 8C5.88072 8 7 9.11929 7 10.5C7 11.8807 5.88072 13 4.5 13C3.11929 13 2 11.8807 2 10.5ZM4.5 9C3.67157 9 3 9.67157 3 10.5C3 11.3284 3.67157 12 4.5 12C5.32843 12 6 11.3284 6 10.5C6 9.67157 5.32843 9 4.5 9ZM10.5 8C9.11929 8 8 9.11929 8 10.5C8 11.8807 9.11929 13 10.5 13C11.8807 13 13 11.8807 13 10.5C13 9.11929 11.8807 8 10.5 8ZM9 10.5C9 9.67157 9.67157 9 10.5 9C11.3284 9 12 9.67157 12 10.5C12 11.3284 11.3284 12 10.5 12C9.67157 12 9 11.3284 9 10.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4C = [\"color\"];\nvar TrackNextIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4C);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M13.0502 2.74989C13.0502 2.44613 12.804 2.19989 12.5002 2.19989C12.1965 2.19989 11.9502 2.44613 11.9502 2.74989V7.2825C11.9046 7.18802 11.8295 7.10851 11.7334 7.05776L2.73338 2.30776C2.5784 2.22596 2.3919 2.23127 2.24182 2.32176C2.09175 2.41225 2 2.57471 2 2.74995V12.25C2 12.4252 2.09175 12.5877 2.24182 12.6781C2.3919 12.7686 2.5784 12.7739 2.73338 12.6921L11.7334 7.94214C11.8295 7.89139 11.9046 7.81188 11.9502 7.7174V12.2499C11.9502 12.5536 12.1965 12.7999 12.5002 12.7999C12.804 12.7999 13.0502 12.5536 13.0502 12.2499V2.74989ZM3 11.4207V3.5792L10.4288 7.49995L3 11.4207Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4D = [\"color\"];\nvar TrackPreviousIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4D);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.94976 2.74989C1.94976 2.44613 2.196 2.19989 2.49976 2.19989C2.80351 2.19989 3.04976 2.44613 3.04976 2.74989V7.2825C3.0954 7.18802 3.17046 7.10851 3.26662 7.05776L12.2666 2.30776C12.4216 2.22596 12.6081 2.23127 12.7582 2.32176C12.9083 2.41225 13 2.57471 13 2.74995V12.25C13 12.4252 12.9083 12.5877 12.7582 12.6781C12.6081 12.7686 12.4216 12.7739 12.2666 12.6921L3.26662 7.94214C3.17046 7.89139 3.0954 7.81188 3.04976 7.7174V12.2499C3.04976 12.5536 2.80351 12.7999 2.49976 12.7999C2.196 12.7999 1.94976 12.5536 1.94976 12.2499V2.74989ZM4.57122 7.49995L12 11.4207V3.5792L4.57122 7.49995Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4E = [\"color\"];\nvar TransformIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4E);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.849976 1.74998C0.849976 1.25292 1.25292 0.849976 1.74998 0.849976H3.24998C3.74703 0.849976 4.14998 1.25292 4.14998 1.74998V2.04998H10.85V1.74998C10.85 1.25292 11.2529 0.849976 11.75 0.849976H13.25C13.747 0.849976 14.15 1.25292 14.15 1.74998V3.24998C14.15 3.74703 13.747 4.14998 13.25 4.14998H12.95V10.85H13.25C13.747 10.85 14.15 11.2529 14.15 11.75V13.25C14.15 13.747 13.747 14.15 13.25 14.15H11.75C11.2529 14.15 10.85 13.747 10.85 13.25V12.95H4.14998V13.25C4.14998 13.747 3.74703 14.15 3.24998 14.15H1.74998C1.25292 14.15 0.849976 13.747 0.849976 13.25V11.75C0.849976 11.2529 1.25292 10.85 1.74998 10.85H2.04998V4.14998H1.74998C1.25292 4.14998 0.849976 3.74703 0.849976 3.24998V1.74998ZM2.94998 4.14998V10.85H3.24998C3.74703 10.85 4.14998 11.2529 4.14998 11.75V12.05H10.85V11.75C10.85 11.2529 11.2529 10.85 11.75 10.85H12.05V4.14998H11.75C11.2529 4.14998 10.85 3.74703 10.85 3.24998V2.94998H4.14998V3.24998C4.14998 3.74703 3.74703 4.14998 3.24998 4.14998H2.94998ZM2.34998 1.74998H1.74998V2.34998V2.64998V3.24998H2.34998H2.64998H3.24998V2.64998V2.34998V1.74998H2.64998H2.34998ZM5.09998 5.99998C5.09998 5.50292 5.50292 5.09998 5.99998 5.09998H6.99998C7.49703 5.09998 7.89998 5.50292 7.89998 5.99998V6.99998C7.89998 7.03591 7.89787 7.07134 7.89378 7.10618C7.92861 7.10208 7.96405 7.09998 7.99998 7.09998H8.99998C9.49703 7.09998 9.89998 7.50292 9.89998 7.99998V8.99998C9.89998 9.49703 9.49703 9.89998 8.99998 9.89998H7.99998C7.50292 9.89998 7.09998 9.49703 7.09998 8.99998V7.99998C7.09998 7.96405 7.10208 7.92861 7.10618 7.89378C7.07134 7.89787 7.03591 7.89998 6.99998 7.89998H5.99998C5.50292 7.89998 5.09998 7.49703 5.09998 6.99998V5.99998ZM6.09998 5.99998H5.99998V6.09998V6.89998V6.99998H6.09998H6.89998H6.99998V6.89998V6.09998V5.99998H6.89998H6.09998ZM7.99998 7.99998H8.09998H8.89998H8.99998V8.09998V8.89998V8.99998H8.89998H8.09998H7.99998V8.89998V8.09998V7.99998ZM2.64998 11.75H2.34998H1.74998V12.35V12.65V13.25H2.34998H2.64998H3.24998V12.65V12.35V11.75H2.64998ZM11.75 1.74998H12.35H12.65H13.25V2.34998V2.64998V3.24998H12.65H12.35H11.75V2.64998V2.34998V1.74998ZM12.65 11.75H12.35H11.75V12.35V12.65V13.25H12.35H12.65H13.25V12.65V12.35V11.75H12.65Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4F = [\"color\"];\nvar TransparencyGridIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4F);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    opacity: \".25\",\n    d: \"M0 0H3V3H0V0ZM6 3H3V6H0V9H3V12H0V15H3V12H6V15H9V12H12V15H15V12H12V9H15V6H12V3H15V0H12V3H9V0H6V3ZM6 6V3H9V6H6ZM6 9H3V6H6V9ZM9 9V6H12V9H9ZM9 9H6V12H9V9Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4G = [\"color\"];\nvar TrashIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4G);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.5 1C5.22386 1 5 1.22386 5 1.5C5 1.77614 5.22386 2 5.5 2H9.5C9.77614 2 10 1.77614 10 1.5C10 1.22386 9.77614 1 9.5 1H5.5ZM3 3.5C3 3.22386 3.22386 3 3.5 3H5H10H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H11V12C11 12.5523 10.5523 13 10 13H5C4.44772 13 4 12.5523 4 12V4L3.5 4C3.22386 4 3 3.77614 3 3.5ZM5 4H10V12H5V4Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4H = [\"color\"];\nvar TriangleDownIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4H);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4 6H11L7.5 10.5L4 6Z\",\n    fill: color\n  }));\n});\nvar _excluded$4I = [\"color\"];\nvar TriangleLeftIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4I);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M9 4L9 11L4.5 7.5L9 4Z\",\n    fill: color\n  }));\n});\nvar _excluded$4J = [\"color\"];\nvar TriangleRightIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4J);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6 11L6 4L10.5 7.5L6 11Z\",\n    fill: color\n  }));\n});\nvar _excluded$4K = [\"color\"];\nvar TriangleUpIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4K);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4 9H11L7.5 4.5L4 9Z\",\n    fill: color\n  }));\n});\nvar _excluded$4L = [\"color\"];\nvar TwitterLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4L);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.23336 4.69629C7.23336 2.96884 8.63335 1.56857 10.36 1.56857C11.3736 1.56857 12.183 2.04804 12.7254 2.74385C13.3079 2.62467 13.8557 2.40913 14.3513 2.11508C14.1559 2.72598 13.7424 3.2396 13.2033 3.56463C13.2038 3.56568 13.2042 3.56674 13.2047 3.56779C13.7334 3.50361 14.2364 3.36302 14.7048 3.15546L14.7037 3.15715C14.3667 3.66183 13.9431 4.10736 13.4561 4.47034C13.4823 4.64672 13.4956 4.82427 13.4956 5.00079C13.4956 8.6871 10.6873 12.9746 5.52122 12.9746C3.93906 12.9746 2.46544 12.511 1.22505 11.7152C0.992632 11.5661 0.925108 11.2568 1.07423 11.0244C1.0874 11.0038 1.10183 10.9846 1.11734 10.9666C1.20582 10.8202 1.37438 10.7309 1.5554 10.7522C2.47066 10.8601 3.38568 10.7485 4.19219 10.3962C3.39226 10.0434 2.77129 9.35975 2.50204 8.51974C2.45359 8.3686 2.48835 8.20311 2.59351 8.08422C2.59716 8.0801 2.60087 8.07606 2.60464 8.0721C1.96391 7.50819 1.55973 6.68208 1.55973 5.76143V5.72759C1.55973 5.56814 1.64411 5.42059 1.78155 5.33974C1.82671 5.31317 1.87537 5.29511 1.92532 5.28558C1.70549 4.86154 1.58116 4.37984 1.58116 3.86958C1.58116 3.40165 1.58384 2.81192 1.91332 2.28081C1.98718 2.16175 2.10758 2.08915 2.2364 2.07195C2.42588 2.01237 2.64087 2.06969 2.77406 2.23302C3.86536 3.57126 5.44066 4.49583 7.23366 4.73961L7.23336 4.69629ZM5.52122 11.9746C4.73387 11.9746 3.97781 11.8435 3.27248 11.6023C4.13012 11.4538 4.95307 11.1159 5.66218 10.5602C5.81211 10.4427 5.87182 10.2435 5.81126 10.0629C5.7507 9.88234 5.583 9.75943 5.39255 9.75607C4.68968 9.74366 4.06712 9.39716 3.67793 8.86845C3.86828 8.85306 4.05428 8.82039 4.23445 8.77167C4.43603 8.71716 4.57363 8.53114 4.56674 8.32243C4.55985 8.11372 4.41029 7.93718 4.20555 7.89607C3.42694 7.73977 2.79883 7.16764 2.56169 6.42174C2.76255 6.47025 2.97102 6.4991 3.18482 6.5061C3.38563 6.51267 3.56646 6.38533 3.62795 6.19405C3.68943 6.00277 3.61666 5.79391 3.44963 5.68224C2.86523 5.29155 2.48116 4.62464 2.48116 3.86958C2.48116 3.70213 2.48352 3.55268 2.49355 3.41719C3.85115 4.79913 5.70873 5.68931 7.77588 5.79338C7.93225 5.80126 8.08328 5.73543 8.18395 5.61553C8.28463 5.49562 8.32332 5.33548 8.28851 5.18284C8.25255 5.02517 8.23336 4.86284 8.23336 4.69629C8.23336 3.52085 9.18591 2.56857 10.36 2.56857C11.5943 2.56857 12.4956 3.71208 12.4956 5.00079C12.4956 8.25709 10.0202 11.9746 5.52122 11.9746Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4M = [\"color\"];\nvar UnderlineIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4M);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M5.00001 2.75C5.00001 2.47386 4.77615 2.25 4.50001 2.25C4.22387 2.25 4.00001 2.47386 4.00001 2.75V8.05C4.00001 9.983 5.56702 11.55 7.50001 11.55C9.43301 11.55 11 9.983 11 8.05V2.75C11 2.47386 10.7762 2.25 10.5 2.25C10.2239 2.25 10 2.47386 10 2.75V8.05C10 9.43071 8.88072 10.55 7.50001 10.55C6.1193 10.55 5.00001 9.43071 5.00001 8.05V2.75ZM3.49998 13.1001C3.27906 13.1001 3.09998 13.2791 3.09998 13.5001C3.09998 13.721 3.27906 13.9001 3.49998 13.9001H11.5C11.7209 13.9001 11.9 13.721 11.9 13.5001C11.9 13.2791 11.7209 13.1001 11.5 13.1001H3.49998Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4N = [\"color\"];\nvar UpdateIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4N);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.90321 7.29677C1.90321 10.341 4.11041 12.4147 6.58893 12.8439C6.87255 12.893 7.06266 13.1627 7.01355 13.4464C6.96444 13.73 6.69471 13.9201 6.41109 13.871C3.49942 13.3668 0.86084 10.9127 0.86084 7.29677C0.860839 5.76009 1.55996 4.55245 2.37639 3.63377C2.96124 2.97568 3.63034 2.44135 4.16846 2.03202L2.53205 2.03202C2.25591 2.03202 2.03205 1.80816 2.03205 1.53202C2.03205 1.25588 2.25591 1.03202 2.53205 1.03202L5.53205 1.03202C5.80819 1.03202 6.03205 1.25588 6.03205 1.53202L6.03205 4.53202C6.03205 4.80816 5.80819 5.03202 5.53205 5.03202C5.25591 5.03202 5.03205 4.80816 5.03205 4.53202L5.03205 2.68645L5.03054 2.68759L5.03045 2.68766L5.03044 2.68767L5.03043 2.68767C4.45896 3.11868 3.76059 3.64538 3.15554 4.3262C2.44102 5.13021 1.90321 6.10154 1.90321 7.29677ZM13.0109 7.70321C13.0109 4.69115 10.8505 2.6296 8.40384 2.17029C8.12093 2.11718 7.93465 1.84479 7.98776 1.56188C8.04087 1.27898 8.31326 1.0927 8.59616 1.14581C11.4704 1.68541 14.0532 4.12605 14.0532 7.70321C14.0532 9.23988 13.3541 10.4475 12.5377 11.3662C11.9528 12.0243 11.2837 12.5586 10.7456 12.968L12.3821 12.968C12.6582 12.968 12.8821 13.1918 12.8821 13.468C12.8821 13.7441 12.6582 13.968 12.3821 13.968L9.38205 13.968C9.10591 13.968 8.88205 13.7441 8.88205 13.468L8.88205 10.468C8.88205 10.1918 9.10591 9.96796 9.38205 9.96796C9.65819 9.96796 9.88205 10.1918 9.88205 10.468L9.88205 12.3135L9.88362 12.3123C10.4551 11.8813 11.1535 11.3546 11.7585 10.6738C12.4731 9.86976 13.0109 8.89844 13.0109 7.70321Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4O = [\"color\"];\nvar UploadIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4O);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.81825 1.18188C7.64251 1.00615 7.35759 1.00615 7.18185 1.18188L4.18185 4.18188C4.00611 4.35762 4.00611 4.64254 4.18185 4.81828C4.35759 4.99401 4.64251 4.99401 4.81825 4.81828L7.05005 2.58648V9.49996C7.05005 9.74849 7.25152 9.94996 7.50005 9.94996C7.74858 9.94996 7.95005 9.74849 7.95005 9.49996V2.58648L10.1819 4.81828C10.3576 4.99401 10.6425 4.99401 10.8182 4.81828C10.994 4.64254 10.994 4.35762 10.8182 4.18188L7.81825 1.18188ZM2.5 9.99997C2.77614 9.99997 3 10.2238 3 10.5V12C3 12.5538 3.44565 13 3.99635 13H11.0012C11.5529 13 12 12.5528 12 12V10.5C12 10.2238 12.2239 9.99997 12.5 9.99997C12.7761 9.99997 13 10.2238 13 10.5V12C13 13.104 12.1062 14 11.0012 14H3.99635C2.89019 14 2 13.103 2 12V10.5C2 10.2238 2.22386 9.99997 2.5 9.99997Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4P = [\"color\"];\nvar ValueIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4P);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4Q = [\"color\"];\nvar ValueNoneIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4Q);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49985 0.877045C3.84216 0.877045 0.877014 3.84219 0.877014 7.49988C0.877014 9.1488 1.47963 10.657 2.47665 11.8162L1.64643 12.6464C1.45117 12.8417 1.45117 13.1583 1.64643 13.3535C1.8417 13.5488 2.15828 13.5488 2.35354 13.3535L3.18377 12.5233C4.34296 13.5202 5.85104 14.1227 7.49985 14.1227C11.1575 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 5.85107 13.5202 4.34299 12.5233 3.1838L13.3535 2.35354C13.5488 2.15827 13.5488 1.84169 13.3535 1.64643C13.1583 1.45117 12.8417 1.45117 12.6464 1.64643L11.8162 2.47668C10.657 1.47966 9.14877 0.877045 7.49985 0.877045ZM11.1422 3.15066C10.1567 2.32449 8.88639 1.82704 7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.88642 2.32446 10.1568 3.15063 11.1422L11.1422 3.15066ZM3.85776 11.8493C4.84317 12.6753 6.11343 13.1727 7.49985 13.1727C10.6328 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 6.11346 12.6753 4.8432 11.8493 3.85779L3.85776 11.8493Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4R = [\"color\"];\nvar VercelLogoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4R);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7.49998 1L6.92321 2.00307L1.17498 12L0.599976 13H1.7535H13.2464H14.4L13.825 12L8.07674 2.00307L7.49998 1ZM7.49998 3.00613L2.3285 12H12.6714L7.49998 3.00613Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4S = [\"color\"];\nvar VideoIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4S);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.76447 3.12199C5.63151 3.04859 6.56082 3 7.5 3C8.43918 3 9.36849 3.04859 10.2355 3.12199C11.2796 3.21037 11.9553 3.27008 12.472 3.39203C12.9425 3.50304 13.2048 3.64976 13.4306 3.88086C13.4553 3.90618 13.4902 3.94414 13.5133 3.97092C13.7126 4.20149 13.8435 4.4887 13.918 5.03283C13.9978 5.6156 14 6.37644 14 7.52493C14 8.66026 13.9978 9.41019 13.9181 9.98538C13.8439 10.5206 13.7137 10.8061 13.5125 11.0387C13.4896 11.0651 13.4541 11.1038 13.4296 11.1287C13.2009 11.3625 12.9406 11.5076 12.4818 11.6164C11.9752 11.7365 11.3143 11.7942 10.2878 11.8797C9.41948 11.9521 8.47566 12 7.5 12C6.52434 12 5.58052 11.9521 4.7122 11.8797C3.68572 11.7942 3.02477 11.7365 2.51816 11.6164C2.05936 11.5076 1.7991 11.3625 1.57037 11.1287C1.54593 11.1038 1.51035 11.0651 1.48748 11.0387C1.28628 10.8061 1.15612 10.5206 1.08193 9.98538C1.00221 9.41019 1 8.66026 1 7.52493C1 6.37644 1.00216 5.6156 1.082 5.03283C1.15654 4.4887 1.28744 4.20149 1.48666 3.97092C1.5098 3.94414 1.54468 3.90618 1.56942 3.88086C1.7952 3.64976 2.05752 3.50304 2.52796 3.39203C3.04473 3.27008 3.7204 3.21037 4.76447 3.12199ZM0 7.52493C0 5.28296 0 4.16198 0.729985 3.31713C0.766457 3.27491 0.815139 3.22194 0.854123 3.18204C1.63439 2.38339 2.64963 2.29744 4.68012 2.12555C5.56923 2.05028 6.52724 2 7.5 2C8.47276 2 9.43077 2.05028 10.3199 2.12555C12.3504 2.29744 13.3656 2.38339 14.1459 3.18204C14.1849 3.22194 14.2335 3.27491 14.27 3.31713C15 4.16198 15 5.28296 15 7.52493C15 9.74012 15 10.8477 14.2688 11.6929C14.2326 11.7348 14.1832 11.7885 14.1444 11.8281C13.3629 12.6269 12.3655 12.71 10.3709 12.8763C9.47971 12.9505 8.50782 13 7.5 13C6.49218 13 5.52028 12.9505 4.62915 12.8763C2.63446 12.71 1.63712 12.6269 0.855558 11.8281C0.816844 11.7885 0.767442 11.7348 0.731221 11.6929C0 10.8477 0 9.74012 0 7.52493ZM5.25 5.38264C5.25 5.20225 5.43522 5.08124 5.60041 5.15369L10.428 7.27105C10.6274 7.35853 10.6274 7.64147 10.428 7.72895L5.60041 9.84631C5.43522 9.91876 5.25 9.79775 5.25 9.61736V5.38264Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4T = [\"color\"];\nvar ViewGridIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4T);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M7 2H1.5C1.22386 2 1 2.22386 1 2.5V7H7V2ZM8 2V7H14V2.5C14 2.22386 13.7761 2 13.5 2H8ZM7 8H1V12.5C1 12.7761 1.22386 13 1.5 13H7V8ZM8 13V8H14V12.5C14 12.7761 13.7761 13 13.5 13H8ZM1.5 1C0.671573 1 0 1.67157 0 2.5V12.5C0 13.3284 0.671573 14 1.5 14H13.5C14.3284 14 15 13.3284 15 12.5V2.5C15 1.67157 14.3284 1 13.5 1H1.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4U = [\"color\"];\nvar ViewHorizontalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4U);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M1.5 2H13.5C13.7761 2 14 2.22386 14 2.5V7H1V2.5C1 2.22386 1.22386 2 1.5 2ZM1 8V12.5C1 12.7761 1.22386 13 1.5 13H13.5C13.7761 13 14 12.7761 14 12.5V8H1ZM0 2.5C0 1.67157 0.671573 1 1.5 1H13.5C14.3284 1 15 1.67157 15 2.5V12.5C15 13.3284 14.3284 14 13.5 14H1.5C0.671573 14 0 13.3284 0 12.5V2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4V = [\"color\"];\nvar ViewNoneIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4V);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M14 2.58711L1.85163 13H13.5C13.7761 13 14 12.7761 14 12.5V2.58711ZM0.762879 13.8067L0.825396 13.8796L0.854717 13.8545C1.05017 13.9478 1.26899 14 1.5 14H13.5C14.3284 14 15 13.3284 15 12.5V2.5C15 1.93949 14.6926 1.45078 14.2371 1.19331L14.1746 1.12037L14.1453 1.1455C13.9498 1.05222 13.731 1 13.5 1H1.5C0.671573 1 0 1.67157 0 2.5V12.5C0 13.0605 0.307435 13.5492 0.762879 13.8067ZM1 12.4129L13.1484 2H1.5C1.22386 2 1 2.22386 1 2.5V12.4129Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4W = [\"color\"];\nvar ViewVerticalIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4W);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M8 2H13.5C13.7761 2 14 2.22386 14 2.5V12.5C14 12.7761 13.7761 13 13.5 13H8V2ZM7 2H1.5C1.22386 2 1 2.22386 1 2.5V12.5C1 12.7761 1.22386 13 1.5 13H7V2ZM0 2.5C0 1.67157 0.671573 1 1.5 1H13.5C14.3284 1 15 1.67157 15 2.5V12.5C15 13.3284 14.3284 14 13.5 14H1.5C0.671573 14 0 13.3284 0 12.5V2.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4X = [\"color\"];\nvar WidthIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4X);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M4.81812 4.68161C4.99386 4.85734 4.99386 5.14227 4.81812 5.318L3.08632 7.0498H11.9135L10.1817 5.318C10.006 5.14227 10.006 4.85734 10.1817 4.68161C10.3575 4.50587 10.6424 4.50587 10.8181 4.68161L13.3181 7.18161C13.4939 7.35734 13.4939 7.64227 13.3181 7.818L10.8181 10.318C10.6424 10.4937 10.3575 10.4937 10.1817 10.318C10.006 10.1423 10.006 9.85734 10.1817 9.68161L11.9135 7.9498H3.08632L4.81812 9.68161C4.99386 9.85734 4.99386 10.1423 4.81812 10.318C4.64239 10.4937 4.35746 10.4937 4.18173 10.318L1.68173 7.818C1.50599 7.64227 1.50599 7.35734 1.68173 7.18161L4.18173 4.68161C4.35746 4.50587 4.64239 4.50587 4.81812 4.68161Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4Y = [\"color\"];\nvar ZoomInIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4Y);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159ZM4.25 6.5C4.25 6.22386 4.47386 6 4.75 6H6V4.75C6 4.47386 6.22386 4.25 6.5 4.25C6.77614 4.25 7 4.47386 7 4.75V6H8.25C8.52614 6 8.75 6.22386 8.75 6.5C8.75 6.77614 8.52614 7 8.25 7H7V8.25C7 8.52614 6.77614 8.75 6.5 8.75C6.22386 8.75 6 8.52614 6 8.25V7H4.75C4.47386 7 4.25 6.77614 4.25 6.5Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\nvar _excluded$4Z = [\"color\"];\nvar ZoomOutIcon = (0, import_react8.forwardRef)(function(_ref, forwardedRef) {\n  var _ref$color = _ref.color, color = _ref$color === void 0 ? \"currentColor\" : _ref$color, props = _objectWithoutPropertiesLoose(_ref, _excluded$4Z);\n  return (0, import_react8.createElement)(\"svg\", Object.assign({\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  }, props, {\n    ref: forwardedRef\n  }), (0, import_react8.createElement)(\"path\", {\n    d: \"M6.5 10C8.433 10 10 8.433 10 6.5C10 4.567 8.433 3 6.5 3C4.567 3 3 4.567 3 6.5C3 8.433 4.567 10 6.5 10ZM6.5 11C7.56251 11 8.53901 10.6318 9.30884 10.0159L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L10.0159 9.30884C10.6318 8.53901 11 7.56251 11 6.5C11 4.01472 8.98528 2 6.5 2C4.01472 2 2 4.01472 2 6.5C2 8.98528 4.01472 11 6.5 11ZM4.75 6C4.47386 6 4.25 6.22386 4.25 6.5C4.25 6.77614 4.47386 7 4.75 7H8.25C8.52614 7 8.75 6.77614 8.75 6.5C8.75 6.22386 8.52614 6 8.25 6H4.75Z\",\n    fill: color,\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\"\n  }));\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/design-system/elements.js\nvar StyledDiv = newStyled.div;\nvar StyledSvg = newStyled.svg;\nvar StyledCircle = newStyled.circle;\nvar StyledSpan = newStyled.span;\nvar StyledAnchor = newStyled.a;\nvar StyledButton = newStyled.button;\nvar StyledLabel = newStyled.label;\nvar StyledInput = newStyled.input;\nvar StyledH2 = newStyled.h2;\nvar StyledP = newStyled.p;\nvar StyledUl = newStyled.ul;\nvar StyledSelect = newStyled.select;\nvar StyledOption = newStyled.option;\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/buttons.js\nvar Button = StyledButton((props) => {\n  const theme = useCustomTheme();\n  if (props.unstyled) {\n    return {};\n  }\n  return {\n    all: \"unset\",\n    cursor: \"pointer\",\n    display: \"inline-flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: radius.md,\n    padding: `${fontSize.sm} ${fontSize.sm}`,\n    fontSize: fontSize.sm,\n    fontWeight: 500,\n    boxSizing: \"border-box\",\n    WebkitTapHighlightColor: \"transparent\",\n    lineHeight: \"normal\",\n    flexShrink: 0,\n    transition: \"border 200ms ease\",\n    gap: props.gap && spacing[props.gap] || 0,\n    width: props.fullWidth ? \"100%\" : void 0,\n    textAlign: \"center\",\n    maxWidth: \"100%\",\n    background: (() => {\n      if (props.bg) {\n        return theme.colors[props.bg];\n      }\n      switch (props.variant) {\n        case \"primary\":\n          return theme.colors.primaryButtonBg;\n        case \"accent\":\n          return theme.colors.accentButtonBg;\n        case \"secondary\":\n          return theme.colors.secondaryButtonBg;\n        default:\n          return \"none\";\n      }\n    })(),\n    color: (() => {\n      switch (props.variant) {\n        case \"primary\":\n          return theme.colors.primaryButtonText;\n        case \"accent\":\n          return theme.colors.accentButtonText;\n        case \"secondary\":\n          return theme.colors.secondaryButtonText;\n        case \"ghost\":\n        case \"outline\":\n          return theme.colors.secondaryButtonText;\n        case \"link\":\n          return theme.colors.accentText;\n        default:\n          return theme.colors.primaryButtonText;\n      }\n    })(),\n    \"&:active\": {\n      transform: \"translateY(1px)\"\n    },\n    \"&[disabled]\": {\n      cursor: \"not-allowed\"\n    },\n    \"&[data-disabled='true']\": {\n      background: theme.colors.tertiaryBg,\n      color: theme.colors.secondaryText,\n      borderColor: \"transparent\",\n      boxShadow: \"none\",\n      \"&:hover\": {\n        borderColor: \"transparent\"\n      }\n    },\n    ...(() => {\n      if (props.variant === \"outline\") {\n        return {\n          border: `1px solid ${theme.colors.borderColor}`,\n          \"&:hover\": {\n            borderColor: theme.colors.accentText\n          },\n          '&[aria-selected=\"true\"]': {\n            borderColor: theme.colors.accentText\n          }\n        };\n      }\n      if (props.variant === \"ghost\") {\n        return {\n          border: \"1px solid transparent\",\n          \"&:hover\": {\n            borderColor: theme.colors.accentText\n          }\n        };\n      }\n      if (props.variant === \"secondary\") {\n        return {\n          \"&:hover\": {\n            background: theme.colors.secondaryButtonHoverBg\n          }\n        };\n      }\n      if (props.variant === \"link\") {\n        return {\n          padding: 0,\n          \"&:hover\": {\n            color: theme.colors.primaryText\n          }\n        };\n      }\n      return {};\n    })()\n  };\n});\nvar ButtonLink = (() => Button.withComponent(\"a\"))();\nvar IconButton = StyledButton((_) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    cursor: \"pointer\",\n    display: \"inline-flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: radius.sm,\n    WebkitTapHighlightColor: \"transparent\",\n    color: theme.colors.secondaryIconColor,\n    padding: \"2px\",\n    transition: \"background 200ms ease, color 200ms ease\",\n    \"&:hover\": {\n      background: theme.colors.secondaryIconHoverBg,\n      color: theme.colors.secondaryIconHoverColor\n    },\n    \"&[disabled]\": {\n      cursor: \"not-allowed\"\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/basic.js\nvar import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/design-system/animations.js\nvar floatUpAnimation = keyframes`\n  from {\n    opacity: 0;\n    transform: translateY(20%) scale(0.8) ;\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n`;\nvar floatDownAnimation = keyframes`\n  from {\n    opacity: 0;\n    transform: translateY(-20%) scale(0.8) ;\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n`;\nvar fadeInAnimation = keyframes`\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n`;\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/modalElements.js\nvar import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);\nvar ModalTitle = StyledH2((_) => {\n  const theme = useCustomTheme();\n  return {\n    margin: 0,\n    fontWeight: 600,\n    fontSize: fontSize.lg,\n    color: theme.colors.primaryText,\n    lineHeight: 1.3,\n    textAlign: \"left\"\n  };\n});\nvar BackButton = (props) => {\n  return (0, import_jsx_runtime4.jsx)(IconButton, { onClick: props.onClick, style: { transform: \"translateX(-25%)\", ...props.style }, type: \"button\", children: (0, import_jsx_runtime4.jsx)(ChevronLeftIcon, { width: iconSize.md, height: iconSize.md }) });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/basic.js\nvar ScreenBottomContainer = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    borderTop: `1px solid ${theme.colors.separatorLine}`,\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: spacing.lg,\n    padding: spacing.lg\n  };\n});\nvar noScrollBar = {\n  scrollbarWidth: \"none\",\n  \"&::-webkit-scrollbar\": {\n    width: 0,\n    display: \"none\"\n  }\n};\nfunction ModalHeader(props) {\n  const { onBack, title } = props;\n  return (0, import_jsx_runtime5.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: props.leftAligned ? \"flex-start\" : \"center\",\n    position: \"relative\"\n  }, children: [onBack && (0, import_jsx_runtime5.jsx)(BackButton, { onClick: onBack, style: {\n    position: \"absolute\",\n    left: 0,\n    top: 0\n  } }), (0, import_jsx_runtime5.jsx)(Container, { flex: \"row\", gap: \"xs\", center: \"both\", children: typeof title === \"string\" ? (0, import_jsx_runtime5.jsx)(ModalTitle, { children: title }) : title })] });\n}\nvar Line = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    height: \"1px\",\n    background: theme.colors.separatorLine\n  };\n});\nfunction Container(props) {\n  const styles = {};\n  if (props.relative) {\n    styles.position = \"relative\";\n  }\n  if (props.fullHeight) {\n    styles.height = \"100%\";\n  }\n  if (props.expand) {\n    styles.flex = \"1 1 0%\";\n  }\n  if (props.flex) {\n    styles.display = \"flex\";\n    styles.flexDirection = props.flex;\n    if (props.flex === \"row\") {\n      styles.flexWrap = \"wrap\";\n    }\n    if (props.gap) {\n      styles.gap = spacing[props.gap];\n    }\n    if (props.center) {\n      if (props.center === \"both\") {\n        styles.justifyContent = \"center\";\n        styles.alignItems = \"center\";\n      }\n      if (props.center === \"x\" && props.flex === \"row\" || props.center === \"y\" && props.flex === \"column\") {\n        styles.justifyContent = \"center\";\n      }\n      if (props.center === \"x\" && props.flex === \"column\" || props.center === \"y\" && props.flex === \"row\") {\n        styles.alignItems = \"center\";\n      }\n    }\n  }\n  if (props.p) {\n    styles.padding = spacing[props.p];\n  }\n  if (props.px) {\n    styles.paddingLeft = spacing[props.px];\n    styles.paddingRight = spacing[props.px];\n  }\n  if (props.py) {\n    styles.paddingTop = spacing[props.py];\n    styles.paddingBottom = spacing[props.py];\n  }\n  if (props.debug) {\n    styles.outline = \"1px solid red\";\n    styles.outlineOffset = \"-1px\";\n  }\n  return (0, import_jsx_runtime5.jsx)(Box, { \"data-scrolly\": props.scrollY, \"data-animate\": props.animate, bg: props.bg, color: props.color, borderColor: props.borderColor, style: {\n    ...styles,\n    ...props.style\n  }, children: props.children });\n}\nvar Box = StyledDiv((props) => {\n  const theme = useCustomTheme();\n  return {\n    color: props.color ? theme.colors[props.color] : \"inherit\",\n    background: props.bg ? theme.colors[props.bg] : void 0,\n    borderColor: props.borderColor ? theme.colors[props.borderColor] : void 0,\n    \"&[data-animate='fadein']\": {\n      opacity: 0,\n      animation: `${fadeInAnimation} 350ms ease forwards`\n    },\n    \"&[data-animate='floatup']\": {\n      opacity: 0,\n      animation: `${floatUpAnimation} 350ms ease forwards`\n    },\n    \"&[data-animate='floatdown']\": {\n      opacity: 0,\n      animation: `${floatDownAnimation} 350ms ease forwards`\n    },\n    \"&[data-scrolly='true']\": {\n      overflowY: \"auto\",\n      ...noScrollBar\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/wallets/utils/getWalletBalance.js\nasync function getWalletBalance(options) {\n  const { address, client, chain, tokenAddress } = options;\n  if (tokenAddress) {\n    const { getBalance } = await import(\"./getBalance-X6K77NBX.js\");\n    return getBalance({\n      contract: getContract({ client, chain, address: tokenAddress }),\n      address\n    });\n  }\n  const rpcRequest = getRpcClient({ client, chain });\n  const [nativeSymbol, nativeDecimals, nativeName, nativeBalance] = await Promise.all([\n    getChainSymbol(chain),\n    getChainDecimals(chain),\n    getChainNativeCurrencyName(chain),\n    eth_getBalance(rpcRequest, { address })\n  ]);\n  return {\n    value: nativeBalance,\n    decimals: nativeDecimals,\n    displayValue: toTokens(nativeBalance, nativeDecimals),\n    symbol: nativeSymbol,\n    name: nativeName\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/others/useWalletBalance.js\nfunction useWalletBalance(options, queryOptions2) {\n  const { chain, address, tokenAddress, client } = options;\n  return useQuery({\n    ...queryOptions2,\n    queryKey: [\n      \"walletBalance\",\n      (chain == null ? void 0 : chain.id) || -1,\n      address || \"0x0\",\n      { tokenAddress }\n    ],\n    queryFn: async () => {\n      if (!chain) {\n        throw new Error(\"chain is required\");\n      }\n      if (!client) {\n        throw new Error(\"client is required\");\n      }\n      if (!address) {\n        throw new Error(\"address is required\");\n      }\n      return getWalletBalance({\n        chain,\n        client,\n        address,\n        tokenAddress\n      });\n    },\n    enabled: ((queryOptions2 == null ? void 0 : queryOptions2.enabled) === void 0 || queryOptions2.enabled) && !!chain && !!client && !!address\n  });\n}\n\n// node_modules/thirdweb/dist/esm/social/profiles.js\nasync function getSocialProfiles(args) {\n  const { address, client } = args;\n  const clientFetch = getClientFetch(client);\n  const response = await clientFetch(`${getThirdwebBaseUrl(\"social\")}/v1/profiles/${address}`);\n  if (response.status !== 200) {\n    try {\n      const errorBody = await response.json();\n      throw new Error(`Failed to fetch profile: ${errorBody.message}`);\n    } catch {\n      throw new Error(`Failed to fetch profile: ${response.status}\n${await response.text()}`);\n    }\n  }\n  return (await response.json()).data;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/social/useSocialProfiles.js\nfunction useSocialProfiles(options) {\n  const { client, address } = options;\n  return useQuery({\n    queryKey: [\"social-profiles\", address],\n    enabled: !!address,\n    retry: 3,\n    queryFn: async () => {\n      if (!address) {\n        throw new Error(\"Address is required, should not have reached this point.\");\n      }\n      return await getSocialProfiles({ address, client });\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/utils/ens/avatar.js\nasync function parseAvatarRecord(options) {\n  let uri = options.uri;\n  if (/eip155:/i.test(options.uri)) {\n    uri = await parseNftUri(options);\n  }\n  if (!uri) {\n    return null;\n  }\n  const resolvedScheme = resolveScheme({\n    client: options.client,\n    uri\n  });\n  if (await isImageUri({ client: options.client, uri: resolvedScheme })) {\n    return resolvedScheme;\n  }\n  return null;\n}\nasync function isImageUri(options) {\n  try {\n    const res = await getClientFetch(options.client)(options.uri, {\n      method: \"HEAD\"\n    });\n    if (res.status === 200) {\n      const contentType = res.headers.get(\"content-type\");\n      return !!(contentType == null ? void 0 : contentType.startsWith(\"image/\"));\n    }\n    return false;\n  } catch (error) {\n    if (typeof error === \"object\" && typeof error.response !== \"undefined\") {\n      return false;\n    }\n    if (Object.hasOwn(globalThis, \"Image\")) {\n      return false;\n    }\n    return new Promise((resolve2) => {\n      const img = new Image();\n      img.onload = () => {\n        resolve2(true);\n      };\n      img.onerror = () => {\n        resolve2(false);\n      };\n      img.src = options.uri;\n    });\n  }\n}\n\n// node_modules/thirdweb/dist/esm/utils/ens/encodeLabelToLabelhash.js\nfunction encodedLabelToLabelhash(label) {\n  if (label.length !== 66) {\n    return null;\n  }\n  if (label.indexOf(\"[\") !== 0) {\n    return null;\n  }\n  if (label.indexOf(\"]\") !== 65) {\n    return null;\n  }\n  const hash2 = `0x${label.slice(1, 65)}`;\n  if (!isHex(hash2)) {\n    return null;\n  }\n  return hash2;\n}\n\n// node_modules/thirdweb/dist/esm/utils/ens/namehash.js\nfunction namehash(name) {\n  let result = new Uint8Array(32).fill(0);\n  if (!name) {\n    return bytesToHex(result);\n  }\n  const labels = name.split(\".\");\n  for (let i = labels.length - 1; i >= 0; i -= 1) {\n    const item = labels[i];\n    const hashFromEncodedLabel = encodedLabelToLabelhash(item);\n    const hashed = hashFromEncodedLabel ? toBytes(hashFromEncodedLabel) : keccak256(stringToBytes(item), \"bytes\");\n    result = keccak256(concat([result, hashed]), \"bytes\");\n  }\n  return bytesToHex(result);\n}\n\n// node_modules/thirdweb/dist/esm/utils/ens/encodeLabelhash.js\nfunction encodeLabelhash(hash2) {\n  return `[${hash2.slice(2)}]`;\n}\n\n// node_modules/thirdweb/dist/esm/utils/ens/packetToBytes.js\nfunction packetToBytes(packet) {\n  const value = packet.replace(/^\\.|\\.$/gm, \"\");\n  if (value.length === 0) {\n    return new Uint8Array(1);\n  }\n  const bytes = new Uint8Array(stringToBytes(value).byteLength + 2);\n  let offset = 0;\n  const list = value.split(\".\");\n  for (let i = 0; i < list.length; i++) {\n    const item = list[i];\n    let encoded = stringToBytes(item);\n    if (encoded.byteLength > 255) {\n      encoded = stringToBytes(encodeLabelhash(labelhash(item)));\n    }\n    bytes[offset] = encoded.length;\n    bytes.set(encoded, offset + 1);\n    offset += encoded.length + 1;\n  }\n  if (bytes.byteLength !== offset + 1) {\n    return bytes.slice(0, offset + 1);\n  }\n  return bytes;\n}\n\n// node_modules/thirdweb/dist/esm/extensions/ens/__generated__/AddressResolver/read/text.js\nvar FN_SELECTOR = \"0x59d1d43c\";\nvar FN_INPUTS = [\n  {\n    type: \"bytes32\",\n    name: \"name\"\n  },\n  {\n    type: \"string\",\n    name: \"key\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"string\"\n  }\n];\nfunction encodeTextParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.name, options.key]);\n}\nfunction encodeText(options) {\n  return FN_SELECTOR + encodeTextParams(options).slice(2);\n}\nfunction decodeTextResult(result) {\n  return decodeAbiParameters(FN_OUTPUTS, result)[0];\n}\n\n// node_modules/thirdweb/dist/esm/extensions/ens/__generated__/UniversalResolver/read/resolve.js\nvar FN_SELECTOR2 = \"0x9061b923\";\nvar FN_INPUTS2 = [\n  {\n    type: \"bytes\",\n    name: \"name\"\n  },\n  {\n    type: \"bytes\",\n    name: \"data\"\n  }\n];\nvar FN_OUTPUTS2 = [\n  {\n    type: \"bytes\"\n  },\n  {\n    type: \"address\"\n  }\n];\nasync function resolve(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2],\n    params: [options.name, options.data]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/ens/constants.js\nvar UNIVERSAL_RESOLVER_ADDRESS = \"0xce01f8eee7E479C928F8919abD53E553a36CeF67\";\n\n// node_modules/thirdweb/dist/esm/extensions/ens/resolve-text.js\nasync function resolveText(options) {\n  const { client, name, key, resolverAddress, resolverChain } = options;\n  return withCache(async () => {\n    const contract = getContract({\n      client,\n      chain: resolverChain || ethereum,\n      address: resolverAddress || UNIVERSAL_RESOLVER_ADDRESS\n    });\n    const data = encodeText({ name: namehash(name), key });\n    const result = await resolve({\n      contract,\n      name: toHex(packetToBytes(name)),\n      data\n    });\n    if (result[0] === \"0x\") {\n      return null;\n    }\n    const record = decodeTextResult(result[0]);\n    return record === \"\" ? null : record;\n  }, {\n    cacheKey: `ens:text:${name}:${key}`,\n    // 1min cache\n    cacheTime: 60 * 1e3\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/ens/resolve-avatar.js\nasync function resolveAvatar(options) {\n  const { client, name, resolverAddress, resolverChain } = options;\n  return withCache(async () => {\n    const record = await resolveText({\n      client,\n      key: \"avatar\",\n      name,\n      resolverAddress,\n      resolverChain\n    });\n    if (!record) {\n      return null;\n    }\n    try {\n      return parseAvatarRecord({ uri: record, client });\n    } catch (e) {\n      console.error(\"Error parsing avatar record\", e);\n      return null;\n    }\n  }, {\n    cacheKey: `ens:avatar:${name}`,\n    // 1min cache\n    cacheTime: 60 * 1e3\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/ens/__generated__/UniversalResolver/read/reverse.js\nvar FN_SELECTOR3 = \"0xec11c823\";\nvar FN_INPUTS3 = [\n  {\n    type: \"bytes\",\n    name: \"reverseName\"\n  }\n];\nvar FN_OUTPUTS3 = [\n  {\n    type: \"string\"\n  },\n  {\n    type: \"address\"\n  },\n  {\n    type: \"address\"\n  },\n  {\n    type: \"address\"\n  }\n];\nasync function reverse(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR3, FN_INPUTS3, FN_OUTPUTS3],\n    params: [options.reverseName]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/ens/resolve-name.js\nasync function resolveName(options) {\n  const { client, address, resolverAddress, resolverChain } = options;\n  return withCache(async () => {\n    const contract = getContract({\n      client,\n      chain: resolverChain || ethereum,\n      address: resolverAddress || UNIVERSAL_RESOLVER_ADDRESS\n    });\n    const reverseName = toHex(packetToBytes(`${address.toLowerCase().substring(2)}.addr.reverse`));\n    const [name, resolvedAddress] = await reverse({\n      contract,\n      reverseName\n    }).catch((e) => {\n      if (\"data\" in e && e.data === \"0x7199966d\") {\n        return [null, address];\n      }\n      throw e;\n    });\n    if (address.toLowerCase() !== resolvedAddress.toLowerCase()) {\n      return null;\n    }\n    return name;\n  }, {\n    cacheKey: `ens:name:${(resolverChain == null ? void 0 : resolverChain.id) || 1}:${address}`,\n    // 1min cache\n    cacheTime: 60 * 1e3\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/utils/wallet.js\nfunction useEnsName(options) {\n  const { client, address } = options;\n  return useQuery({\n    queryKey: [\"ens-name\", address],\n    enabled: !!address,\n    queryFn: () => resolveName({\n      client,\n      address: address || \"\",\n      resolverChain: ethereum\n    })\n  });\n}\nfunction useEnsAvatar(options) {\n  const { client, ensName } = options;\n  return useQuery({\n    queryKey: [\"ens-avatar\", ensName],\n    enabled: !!ensName,\n    queryFn: async () => resolveAvatar({\n      client,\n      name: ensName || \"\"\n    })\n  });\n}\nfunction useConnectedWalletDetails(client, walletChain, activeAccount, displayBalanceToken) {\n  var _a12, _b, _c, _d;\n  const tokenAddress = walletChain && displayBalanceToken ? displayBalanceToken[Number(walletChain.id)] : void 0;\n  const ensNameQuery = useEnsName({\n    client,\n    address: activeAccount == null ? void 0 : activeAccount.address\n  });\n  const ensAvatarQuery = useEnsAvatar({\n    client,\n    ensName: ensNameQuery.data\n  });\n  const socialProfileQuery = useSocialProfiles({\n    client,\n    address: activeAccount == null ? void 0 : activeAccount.address\n  });\n  const shortAddress = (activeAccount == null ? void 0 : activeAccount.address) ? shortenAddress(activeAccount.address, 4) : \"\";\n  const balanceQuery = useWalletBalance({\n    chain: walletChain ? walletChain : void 0,\n    tokenAddress,\n    address: activeAccount == null ? void 0 : activeAccount.address,\n    client\n  });\n  const addressOrENS = ensNameQuery.data || shortAddress;\n  const pfpUnresolved = (_b = (_a12 = socialProfileQuery.data) == null ? void 0 : _a12.filter((p) => p.avatar)[0]) == null ? void 0 : _b.avatar;\n  const { data: pfp } = useQuery({\n    queryKey: [\"ens-avatar\", pfpUnresolved],\n    queryFn: async () => {\n      if (!pfpUnresolved) {\n        return void 0;\n      }\n      return parseAvatarRecord({ client, uri: pfpUnresolved });\n    },\n    enabled: !!pfpUnresolved,\n    refetchOnWindowFocus: false,\n    refetchOnMount: false\n  });\n  const name = ((_d = (_c = socialProfileQuery.data) == null ? void 0 : _c.filter((p) => p.name)[0]) == null ? void 0 : _d.name) || addressOrENS;\n  return {\n    socialProfileQuery,\n    ensNameQuery,\n    ensAvatarQuery,\n    addressOrENS,\n    pfp,\n    name,\n    shortAddress,\n    balanceQuery\n  };\n}\nfunction useWalletInfo(id) {\n  return useQuery({\n    queryKey: [\"wallet-info\", id],\n    queryFn: () => {\n      if (!id) {\n        throw new Error(\"Wallet id is required\");\n      }\n      return getWalletInfo(id, false);\n    },\n    retry: false,\n    refetchOnWindowFocus: false,\n    refetchOnMount: false,\n    enabled: !!id\n  });\n}\nfunction useWalletImage(id) {\n  return useQuery({\n    queryKey: [\"wallet-image\", id],\n    queryFn: () => {\n      if (!id) {\n        throw new Error(\"Wallet id is required\");\n      }\n      return getWalletInfo(id, true);\n    },\n    retry: false,\n    refetchOnWindowFocus: false,\n    refetchOnMount: false,\n    enabled: !!id\n  });\n}\nfunction hasSponsoredTransactionsEnabled(wallet) {\n  if (!wallet) {\n    return false;\n  }\n  let sponsoredTransactionsEnabled = false;\n  if (wallet && wallet.id === \"smart\") {\n    const options = wallet.getConfig();\n    if (\"sponsorGas\" in options) {\n      sponsoredTransactionsEnabled = options.sponsorGas;\n    }\n    if (\"gasless\" in options) {\n      sponsoredTransactionsEnabled = options.gasless;\n    }\n  }\n  if (wallet && wallet.id === \"inApp\") {\n    const options = wallet.getConfig();\n    if (options && \"smartAccount\" in options && options.smartAccount) {\n      const smartOptions = options.smartAccount;\n      if (\"sponsorGas\" in smartOptions) {\n        sponsoredTransactionsEnabled = smartOptions.sponsorGas;\n      }\n      if (\"gasless\" in smartOptions) {\n        sponsoredTransactionsEnabled = smartOptions.gasless;\n      }\n    }\n  }\n  return sponsoredTransactionsEnabled;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Spacer.js\nvar import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);\nvar Spacer = ({ y }) => {\n  return (0, import_jsx_runtime6.jsx)(\"div\", { style: {\n    height: spacing[y]\n  } });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/text.js\nvar Text = StyledSpan((p) => {\n  const theme = useCustomTheme();\n  return {\n    fontSize: fontSize[p.size || \"md\"],\n    color: theme.colors[p.color || \"secondaryText\"],\n    margin: 0,\n    display: p.inline ? \"inline\" : \"block\",\n    fontWeight: p.weight || 500,\n    lineHeight: p.multiline ? 1.5 : \"normal\",\n    textAlign: p.center ? \"center\" : \"left\",\n    textWrap: p.balance ? \"balance\" : \"inherit\",\n    maxWidth: \"100%\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\"\n  };\n});\nvar Link = StyledAnchor((p) => {\n  const theme = useCustomTheme();\n  return {\n    all: \"unset\",\n    cursor: \"pointer\",\n    color: theme.colors[p.color || \"accentText\"],\n    fontSize: fontSize[p.size || \"md\"],\n    textDecoration: \"none\",\n    textAlign: p.center ? \"center\" : \"left\",\n    display: p.inline ? \"inline\" : \"block\",\n    fontWeight: p.weight || 500,\n    lineHeight: \"normal\",\n    transition: \"color 0.2s ease\",\n    \"&:hover\": {\n      color: theme.colors[p.hoverColor || \"primaryText\"],\n      textDecoration: \"none\"\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/core/utils/storage.js\nvar LAST_AUTH_PROVIDER_STORAGE_KEY = \"lastAuthProvider\";\nasync function setLastAuthProvider(authProvider, storage) {\n  await storage.setItem(LAST_AUTH_PROVIDER_STORAGE_KEY, authProvider);\n}\nasync function getLastAuthProvider(storage) {\n  return await storage.getItem(LAST_AUTH_PROVIDER_STORAGE_KEY);\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Skeleton.js\nvar import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);\nvar Skeleton = (props) => {\n  return (0, import_jsx_runtime7.jsx)(SkeletonDiv, { color: props.color, style: {\n    height: props.height,\n    width: props.width || \"auto\"\n  } });\n};\nvar skeletonAnimation = keyframes`\n0% {\n    opacity: 0.5;\n  }\n  100% {\n    opacity: 1;\n  }\n`;\nvar SkeletonDiv = StyledDiv((props) => {\n  const theme = useCustomTheme();\n  return {\n    backgroundSize: \"200% 200%\",\n    backgroundColor: theme.colors[props.color || \"skeletonBg\"],\n    animation: `${skeletonAnimation} 500ms ease-in-out infinite alternate`,\n    borderRadius: radius.sm\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/Img.js\nvar import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);\nvar import_react11 = __toESM(require_react(), 1);\nvar Img = (props) => {\n  const [isLoaded, setIsLoaded] = (0, import_react11.useState)(false);\n  const propSrc = props.src;\n  const widthPx = `${props.width}px`;\n  const heightPx = `${props.height || props.width}px`;\n  if (propSrc === void 0) {\n    return (0, import_jsx_runtime8.jsx)(Skeleton, { width: widthPx, height: heightPx });\n  }\n  const getSrc = () => {\n    try {\n      return resolveScheme({\n        uri: propSrc,\n        client: props.client\n      });\n    } catch {\n      return props.src;\n    }\n  };\n  const src = getSrc();\n  return (0, import_jsx_runtime8.jsxs)(\"div\", { style: {\n    position: \"relative\",\n    display: \"inline-flex\",\n    flexShrink: 0,\n    alignItems: \"center\",\n    justifyItems: \"center\"\n  }, children: [!isLoaded && (0, import_jsx_runtime8.jsx)(Skeleton, { width: widthPx, height: heightPx }), (0, import_jsx_runtime8.jsx)(\"img\", { onLoad: () => {\n    setIsLoaded(true);\n  }, width: props.width, height: props.height, src, alt: props.alt || \"\", loading: props.loading, decoding: \"async\", style: {\n    objectFit: \"contain\",\n    height: !isLoaded ? 0 : props.height ? `${props.height}px` : void 0,\n    width: !isLoaded ? 0 : props.width ? `${props.width}px` : void 0,\n    userSelect: \"none\",\n    visibility: isLoaded ? \"visible\" : \"hidden\",\n    opacity: isLoaded ? 1 : 0,\n    transition: \"opacity 0.4s ease\",\n    ...props.style\n  }, draggable: false, className: props.className, onError: (e) => {\n    if (props.fallbackImage && e.currentTarget.src !== props.fallbackImage) {\n      e.currentTarget.src = props.fallbackImage;\n    }\n  } }, src)] });\n};\n\n// node_modules/thirdweb/dist/esm/react/core/utils/walletIcon.js\nvar googleIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDUuNiIgaGVpZ2h0PSI3MjAiIHZpZXdCb3g9IjAgMCAxODYuNjkgMTkwLjUiIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE4NC41ODMgNzY1LjE3MSkiPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMDg5LjMzMy02ODcuMjM5djM2Ljg4OGg1MS4yNjJjLTIuMjUxIDExLjg2My05LjAwNiAyMS45MDgtMTkuMTM3IDI4LjY2MmwzMC45MTMgMjMuOTg2YzE4LjAxMS0xNi42MjUgMjguNDAyLTQxLjA0NCAyOC40MDItNzAuMDUyIDAtNi43NTQtLjYwNi0xMy4yNDktMS43MzItMTkuNDgzeiIgZmlsbD0iIzQyODVmNCIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTQyLjcxNC02NTEuNzkxbC02Ljk3MiA1LjMzNy0yNC42NzkgMTkuMjIzaDBjMTUuNjczIDMxLjA4NiA0Ny43OTYgNTIuNTYxIDg1LjAzIDUyLjU2MSAyNS43MTcgMCA0Ny4yNzgtOC40ODYgNjMuMDM4LTIzLjAzM2wtMzAuOTEzLTIzLjk4NmMtOC40ODYgNS43MTUtMTkuMzEgOS4xNzktMzIuMTI1IDkuMTc5LTI0Ljc2NSAwLTQ1LjgwNi0xNi43MTItNTMuMzQtMzkuMjI2eiIgZmlsbD0iIzM0YTg1MyIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTc0LjM2NS03MTIuNjFjLTYuNDk0IDEyLjgxNS0xMC4yMTcgMjcuMjc2LTEwLjIxNyA0Mi42ODlzMy43MjMgMjkuODc0IDEwLjIxNyA0Mi42ODljMCAuMDg2IDMxLjY5My0yNC41OTIgMzEuNjkzLTI0LjU5Mi0xLjkwNS01LjcxNS0zLjAzMS0xMS43NzYtMy4wMzEtMTguMDk4czEuMTI2LTEyLjM4MyAzLjAzMS0xOC4wOTh6IiBmaWxsPSIjZmJiYzA1Ii8+PHBhdGggZD0iTS0xMDg5LjMzMy03MjcuMjQ0YzE0LjAyOCAwIDI2LjQ5NyA0Ljg0OSAzNi40NTUgMTQuMjAxbDI3LjI3Ni0yNy4yNzZjLTE2LjUzOS0xNS40MTMtMzguMDEzLTI0Ljg1Mi02My43MzEtMjQuODUyLTM3LjIzNCAwLTY5LjM1OSAyMS4zODgtODUuMDMyIDUyLjU2MWwzMS42OTIgMjQuNTkyYzcuNTMzLTIyLjUxNCAyOC41NzUtMzkuMjI2IDUzLjM0LTM5LjIyNnoiIGZpbGw9IiNlYTQzMzUiIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIvPjwvZz48L3N2Zz4=\";\nvar facebookIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iRWJlbmUgMSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgaWQ9ImZhY2Vib29rLWxvZ28tMjAxOSI+PHBhdGggZmlsbD0iIzE4NzdmMiIgZD0iTTEwMjQsNTEyQzEwMjQsMjI5LjIzMDE2LDc5NC43Njk3OCwwLDUxMiwwUzAsMjI5LjIzMDE2LDAsNTEyYzAsMjU1LjU1NCwxODcuMjMxLDQ2Ny4zNzAxMiw0MzIsNTA1Ljc3Nzc3VjY2MEgzMDJWNTEySDQzMlYzOTkuMkM0MzIsMjcwLjg3OTgyLDUwOC40Mzg1NCwyMDAsNjI1LjM4OTIyLDIwMCw2ODEuNDA3NjUsMjAwLDc0MCwyMTAsNzQwLDIxMFYzMzZINjc1LjQzNzEzQzYxMS44MzUwOCwzMzYsNTkyLDM3NS40NjY2Nyw1OTIsNDE1Ljk1NzI4VjUxMkg3MzRMNzExLjMsNjYwSDU5MnYzNTcuNzc3NzdDODM2Ljc2OSw5NzkuMzcwMTIsMTAyNCw3NjcuNTU0LDEwMjQsNTEyWiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik03MTEuMyw2NjAsNzM0LDUxMkg1OTJWNDE1Ljk1NzI4QzU5MiwzNzUuNDY2NjcsNjExLjgzNTA4LDMzNiw2NzUuNDM3MTMsMzM2SDc0MFYyMTBzLTU4LjU5MjM1LTEwLTExNC42MTA3OC0xMEM1MDguNDM4NTQsMjAwLDQzMiwyNzAuODc5ODIsNDMyLDM5OS4yVjUxMkgzMDJWNjYwSDQzMnYzNTcuNzc3NzdhNTE3LjM5NjE5LDUxNy4zOTYxOSwwLDAsMCwxNjAsMFY2NjBaIj48L3BhdGg+PC9zdmc+\";\nvar appleIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDM4IiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCA0OTYuMjU1IDYwOC43MjgiIGlkPSJhcHBsZSI+PHBhdGggZmlsbD0iIzk5OSIgZD0iTTI3My44MSA1Mi45NzNDMzEzLjgwNi4yNTcgMzY5LjQxIDAgMzY5LjQxIDBzOC4yNzEgNDkuNTYyLTMxLjQ2MyA5Ny4zMDZjLTQyLjQyNiA1MC45OC05MC42NDkgNDIuNjM4LTkwLjY0OSA0Mi42MzhzLTkuMDU1LTQwLjA5NCAyNi41MTItODYuOTcxek0yNTIuMzg1IDE3NC42NjJjMjAuNTc2IDAgNTguNzY0LTI4LjI4NCAxMDguNDcxLTI4LjI4NCA4NS41NjIgMCAxMTkuMjIyIDYwLjg4MyAxMTkuMjIyIDYwLjg4M3MtNjUuODMzIDMzLjY1OS02NS44MzMgMTE1LjMzMWMwIDkyLjEzMyA4Mi4wMSAxMjMuODg1IDgyLjAxIDEyMy44ODVzLTU3LjMyOCAxNjEuMzU3LTEzNC43NjIgMTYxLjM1N2MtMzUuNTY1IDAtNjMuMjE1LTIzLjk2Ny0xMDAuNjg4LTIzLjk2Ny0zOC4xODggMC03Ni4wODQgMjQuODYxLTEwMC43NjYgMjQuODYxQzg5LjMzIDYwOC43MyAwIDQ1NS42NjYgMCAzMzIuNjI4YzAtMTIxLjA1MiA3NS42MTItMTg0LjU1NCAxNDYuNTMzLTE4NC41NTQgNDYuMTA1IDAgODEuODgzIDI2LjU4OCAxMDUuODUyIDI2LjU4OHoiPjwvcGF0aD48L3N2Zz4=\";\nvar discordIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBpZD0iZGlzY29yZCI+PHBhdGggZmlsbD0iIzY2NjVkMiIgZD0iTTg1LjIyLDI0Ljk1OGMtMTEuNDU5LTguNTc1LTIyLjQzOC04LjMzNC0yMi40MzgtOC4zMzRsLTEuMTIyLDEuMjgyCgkJCQljMTMuNjIzLDQuMDg3LDE5Ljk1NCwxMC4wOTcsMTkuOTU0LDEwLjA5N2MtMTkuNDkxLTEwLjczMS00NC4zMTctMTAuNjU0LTY0LjU5LDBjMCwwLDYuNTcxLTYuMzMxLDIwLjk5Ni0xMC40MThsLTAuODAxLTAuOTYyCgkJCQljMCwwLTEwLjg5OS0wLjI0LTIyLjQzOCw4LjMzNGMwLDAtMTEuNTQsMjAuNzU1LTExLjU0LDQ2LjMxOWMwLDAsNi43MzIsMTEuNTQsMjQuNDQyLDEyLjEwMWMwLDAsMi45NjUtMy41MjYsNS4zNjktNi41NzEKCQkJCWMtMTAuMTc3LTMuMDQ1LTE0LjAyNC05LjM3Ni0xNC4wMjQtOS4zNzZjNi4zOTQsNC4wMDEsMTIuODU5LDYuNTA1LDIwLjkxNiw4LjA5NGMxMy4xMDgsMi42OTgsMjkuNDEzLTAuMDc2LDQxLjU5MS04LjA5NAoJCQkJYzAsMC00LjAwNyw2LjQ5MS0xNC41MDUsOS40NTZjMi40MDQsMi45NjUsNS4yODksNi40MTEsNS4yODksNi40MTFjMTcuNzEtMC41NjEsMjQuNDQxLTEyLjEwMSwyNC40NDEtMTIuMDIKCQkJCUM5Ni43NTksNDUuNzEzLDg1LjIyLDI0Ljk1OCw4NS4yMiwyNC45NTh6IE0zNS4wNTUsNjMuODI0Yy00LjQ4OCwwLTguMTc0LTMuOTI3LTguMTc0LTguODE1CgkJCQljMC4zMjgtMTEuNzA3LDE2LjEwMi0xMS42NzEsMTYuMzQ4LDBDNDMuMjI5LDU5Ljg5NywzOS42MjIsNjMuODI0LDM1LjA1NSw2My44MjR6IE02NC4zMDQsNjMuODI0CgkJCQljLTQuNDg4LDAtOC4xNzQtMy45MjctOC4xNzQtOC44MTVjMC4zNi0xMS42ODQsMTUuOTM3LTExLjY4OSwxNi4zNDgsMEM3Mi40NzgsNTkuODk3LDY4Ljg3Miw2My44MjQsNjQuMzA0LDYzLjgyNHoiPjwvcGF0aD48L3N2Zz4=\";\nvar coinbaseIconUri = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTU2IiBoZWlnaHQ9IjU1NiIgdmlld0JveD0iMCAwIDU1NiA1NTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xNDhfNSkiPgo8cGF0aCBkPSJNMjc4IDBDNDMxLjUzMyAwIDU1NiAxMjQuNDY3IDU1NiAyNzhDNTU2IDQzMS41MzMgNDMxLjUzMyA1NTYgMjc4IDU1NkMxMjQuNDY3IDU1NiAwIDQzMS41MzMgMCAyNzhDMCAxMjQuNDY3IDEyNC40NjcgMCAyNzggMFoiIGZpbGw9IiMwMDUyRkYiLz4KPHBhdGggZD0iTTI3OC40ODIgMzc1LjE5QzIyNC40OSAzNzUuMTkgMTgwLjg2MiAzMzEuNDEgMTgwLjg2MiAyNzcuNUMxODAuODYyIDIyMy41OSAyMjQuNjEgMTc5LjgxIDI3OC40ODIgMTc5LjgxQzMyNi44MSAxNzkuODEgMzY2Ljk0MyAyMTUuMDI3IDM3NC42NTYgMjYxLjIxOEg0NzNDNDY0LjY4NCAxNjAuODc1IDM4MC44MDMgODIgMjc4LjM2MiA4MkMxNzAuNDk3IDgyIDgzIDE2OS41NTkgODMgMjc3LjVDODMgMzg1LjQ0MSAxNzAuNDk3IDQ3MyAyNzguMzYyIDQ3M0MzODAuODAzIDQ3MyA0NjQuNjg0IDM5NC4xMjUgNDczIDI5My43ODJIMzc0LjUzNkMzNjYuODIzIDMzOS45NzMgMzI2LjgxIDM3NS4xOSAyNzguNDgyIDM3NS4xOVoiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMTQ4XzUiPgo8cmVjdCB3aWR0aD0iNTU2IiBoZWlnaHQ9IjU1NiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K\";\nvar lineIconUri = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiB2aWV3Qm94PSIwIDAgMzIwIDMyMCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMwNmM3NTU7fS5jbHMtMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMSU5FX0xPR08iIGRhdGEtbmFtZT0iTElORSBMT0dPIj48cmVjdCBjbGFzcz0iY2xzLTEiIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiByeD0iNzIuMTQiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNjYuNjYsMTQ0LjkyYzAtNDcuNzQtNDcuODYtODYuNTgtMTA2LjY5LTg2LjU4UzUzLjI4LDk3LjE4LDUzLjI4LDE0NC45MmMwLDQyLjgsMzgsNzguNjUsODkuMjIsODUuNDIsMy40OC43NSw4LjIxLDIuMjksOS40LDUuMjYsMS4wOCwyLjcuNzEsNi45My4zNSw5LjY1LDAsMC0xLjI1LDcuNTMtMS41Miw5LjEzLS40NywyLjctMi4xNSwxMC41NSw5LjI0LDUuNzZzNjEuNDQtMzYuMTgsODMuODItNjEuOTVoMEMyNTkuMjUsMTgxLjI0LDI2Ni42NiwxNjQsMjY2LjY2LDE0NC45MloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMzEuMTYsMTcyLjQ5aC0zMGEyLDIsMCwwLDEtMi0ydjBoMFYxMjMuOTRoMHYwYTIsMiwwLDAsMSwyLTJoMzBhMiwyLDAsMCwxLDIsMnY3LjU3YTIsMiwwLDAsMS0yLDJIMjEwLjc5djcuODVoMjAuMzdhMiwyLDAsMCwxLDIsMlYxNTFhMiwyLDAsMCwxLTIsMkgyMTAuNzl2Ny44NmgyMC4zN2EyLDIsMCwwLDEsMiwydjcuNTZBMiwyLDAsMCwxLDIzMS4xNiwxNzIuNDlaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTIwLjI5LDE3Mi40OWEyLDIsMCwwLDAsMi0ydi03LjU2YTIsMiwwLDAsMC0yLTJIOTkuOTJ2LTM3YTIsMiwwLDAsMC0yLTJIOTAuMzJhMiwyLDAsMCwwLTIsMnY0Ni41M2gwdjBhMiwyLDAsMCwwLDIsMmgzMFoiLz48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjEyOC43MyIgeT0iMTIxLjg1IiB3aWR0aD0iMTEuNjQiIGhlaWdodD0iNTAuNjQiIHJ4PSIyLjA0Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTg5Ljg0LDEyMS44NWgtNy41NmEyLDIsMCwwLDAtMiwydjI3LjY2bC0yMS4zLTI4Ljc3YTEuMiwxLjIsMCwwLDAtLjE3LS4yMXYwbC0uMTItLjEyLDAsMC0uMTEtLjA5LS4wNiwwLS4xMS0uMDgtLjA2LDAtLjExLS4wNi0uMDcsMC0uMTEsMC0uMDcsMC0uMTIsMC0uMDgsMC0uMTIsMGgtLjA4bC0uMTEsMGgtNy43MWEyLDIsMCwwLDAtMiwydjQ2LjU2YTIsMiwwLDAsMCwyLDJoNy41N2EyLDIsMCwwLDAsMi0yVjE0Mi44MWwyMS4zMywyOC44YTIsMiwwLDAsMCwuNTIuNTJoMGwuMTIuMDguMDYsMCwuMS4wNS4xLDAsLjA3LDAsLjE0LDBoMGEyLjQyLDIuNDIsMCwwLDAsLjU0LjA3aDcuNTJhMiwyLDAsMCwwLDItMlYxMjMuODlBMiwyLDAsMCwwLDE4OS44NCwxMjEuODVaIi8+PC9nPjwvZz48L3N2Zz4=\";\nvar farcasterIconUri = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiByeD0iMjAwIiBmaWxsPSIjODU1RENEIi8+CjxwYXRoIGQ9Ik0yNTcuNzc4IDE1NS41NTZINzQyLjIyMlY4NDQuNDQ0SDY3MS4xMTFWNTI4Ljg4OUg2NzAuNDE0QzY2Mi41NTQgNDQxLjY3NyA1ODkuMjU4IDM3My4zMzMgNTAwIDM3My4zMzNDNDEwLjc0MiAzNzMuMzMzIDMzNy40NDYgNDQxLjY3NyAzMjkuNTg2IDUyOC44ODlIMzI4Ljg4OVY4NDQuNDQ0SDI1Ny43NzhWMTU1LjU1NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMjguODg5IDI1My4zMzNMMTU3Ljc3OCAzNTEuMTExSDE4Mi4yMjJWNzQ2LjY2N0MxNjkuOTQ5IDc0Ni42NjcgMTYwIDc1Ni42MTYgMTYwIDc2OC44ODlWNzk1LjU1NkgxNTUuNTU2QzE0My4yODMgNzk1LjU1NiAxMzMuMzMzIDgwNS41MDUgMTMzLjMzMyA4MTcuNzc4Vjg0NC40NDRIMzgyLjIyMlY4MTcuNzc4QzM4Mi4yMjIgODA1LjUwNSAzNzIuMjczIDc5NS41NTYgMzYwIDc5NS41NTZIMzU1LjU1NlY3NjguODg5QzM1NS41NTYgNzU2LjYxNiAzNDUuNjA2IDc0Ni42NjcgMzMzLjMzMyA3NDYuNjY3SDMwNi42NjdWMjUzLjMzM0gxMjguODg5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTY3NS41NTYgNzQ2LjY2N0M2NjMuMjgzIDc0Ni42NjcgNjUzLjMzMyA3NTYuNjE2IDY1My4zMzMgNzY4Ljg4OVY3OTUuNTU2SDY0OC44ODlDNjM2LjYxNiA3OTUuNTU2IDYyNi42NjcgODA1LjUwNSA2MjYuNjY3IDgxNy43NzhWODQ0LjQ0NEg4NzUuNTU2VjgxNy43NzhDODc1LjU1NiA4MDUuNTA1IDg2NS42MDYgNzk1LjU1NiA4NTMuMzMzIDc5NS41NTZIODQ4Ljg4OVY3NjguODg5Qzg0OC44ODkgNzU2LjYxNiA4MzguOTQgNzQ2LjY2NyA4MjYuNjY3IDc0Ni42NjdWMzUxLjExMUg4NTEuMTExTDg4MCAyNTMuMzMzSDcwMi4yMjJWNzQ2LjY2N0g2NzUuNTU2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\";\nvar telegramIconUri = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTAwMHB4IiBoZWlnaHQ9IjEwMDBweCIgdmlld0JveD0iMCAwIDEwMDAgMTAwMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNTMuMiAoNzI2NDMpIC0gaHR0cHM6Ly9za2V0Y2hhcHAuY29tIC0tPgogICAgPHRpdGxlPkFydGJvYXJkPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSI1MCUiIHkxPSIwJSIgeDI9IjUwJSIgeTI9Ijk5LjI1ODM0MDQlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyQUFCRUUiIG9mZnNldD0iMCUiPjwvc3RvcD4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzIyOUVEOSIgb2Zmc2V0PSIxMDAlIj48L3N0b3A+CiAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDwvZGVmcz4KICAgIDxnIGlkPSJBcnRib2FyZCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbCIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0xKSIgY3g9IjUwMCIgY3k9IjUwMCIgcj0iNTAwIj48L2NpcmNsZT4KICAgICAgICA8cGF0aCBkPSJNMjI2LjMyODQxOSw0OTQuNzIyMDY5IEMzNzIuMDg4NTczLDQzMS4yMTY2ODUgNDY5LjI4NDgzOSwzODkuMzUwMDQ5IDUxNy45MTcyMTYsMzY5LjEyMjE2MSBDNjU2Ljc3MjUzNSwzMTEuMzY3NDMgNjg1LjYyNTQ4MSwzMDEuMzM0ODE1IDcwNC40MzE0MjcsMzAxLjAwMzUzMiBDNzA4LjU2NzYyMSwzMDAuOTMwNjcgNzE3LjgxNTgzOSwzMDEuOTU1NzQzIDcyMy44MDY0NDYsMzA2LjgxNjcwNyBDNzI4Ljg2NDc5NywzMTAuOTIxMjEgNzMwLjI1NjU1MiwzMTYuNDY1ODEgNzMwLjkyMjU1MSwzMjAuMzU3MzI5IEM3MzEuNTg4NTUxLDMyNC4yNDg4NDggNzMyLjQxNzg3OSwzMzMuMTEzODI4IDczMS43NTg2MjYsMzQwLjA0MDY2NiBDNzI0LjIzNDAwNyw0MTkuMTAyNDg2IDY5MS42NzUxMDQsNjEwLjk2NDY3NCA2NzUuMTEwOTgyLDY5OS41MTUyNjcgQzY2OC4xMDIwOCw3MzYuOTg0MzQyIDY1NC4zMDEzMzYsNzQ5LjU0NzUzMiA2NDAuOTQwNjE4LDc1MC43NzcwMDYgQzYxMS45MDQ2ODQsNzUzLjQ0ODkzOCA1ODkuODU2MTE1LDczMS41ODgwMzUgNTYxLjczMzM5Myw3MTMuMTUzMjM3IEM1MTcuNzI2ODg2LDY4NC4zMDY0MTYgNDkyLjg2NjAwOSw2NjYuMzQ5MTgxIDQ1MC4xNTAwNzQsNjM4LjIwMDAxMyBDNDAwLjc4NDQyLDYwNS42Njg3OCA0MzIuNzg2MTE5LDU4Ny43ODkwNDggNDYwLjkxOTQ2Miw1NTguNTY4NTYzIEM0NjguMjgyMDkxLDU1MC45MjE0MjMgNTk2LjIxNTA4LDQzNC41NTY0NzkgNTk4LjY5MTIyNyw0MjQuMDAwMzU1IEM1OTkuMDAwOTEsNDIyLjY4MDEzNSA1OTkuMjg4MzEyLDQxNy43NTg5ODEgNTk2LjM2NDc0LDQxNS4xNjA0MzEgQzU5My40NDExNjgsNDEyLjU2MTg4MSA1ODkuMTI2MjI5LDQxMy40NTA0ODQgNTg2LjAxMjQ0OCw0MTQuMTU3MTk4IEM1ODEuNTk4NzU4LDQxNS4xNTg5NDMgNTExLjI5Nzc5Myw0NjEuNjI1Mjc0IDM3NS4xMDk1NTMsNTUzLjU1NjE4OSBDMzU1LjE1NDg1OCw1NjcuMjU4NjIzIDMzNy4wODA1MTUsNTczLjkzNDkwOCAzMjAuODg2NTI0LDU3My41ODUwNDYgQzMwMy4wMzM5NDgsNTczLjE5OTM1MSAyNjguNjkyNzU0LDU2My40OTA5MjggMjQzLjE2MzYwNiw1NTUuMTkyNDA4IEMyMTEuODUxMDY3LDU0NS4wMTM5MzYgMTg2Ljk2NDQ4NCw1MzkuNjMyNTA0IDE4OS4xMzE1NDcsNTIyLjM0NjMwOSBDMTkwLjI2MDI4Nyw1MTMuMzQyNTg5IDIwMi42NTkyNDQsNTA0LjEzNDUwOSAyMjYuMzI4NDE5LDQ5NC43MjIwNjkgWiIgaWQ9IlBhdGgtMyIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPgogICAgPC9nPgo8L3N2Zz4=\";\nvar twitchIconUri = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjQwMCAyODAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNDAwIDI4MDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZGRkZGO30KCS5zdDF7ZmlsbDojOTE0NkZGO30KPC9zdHlsZT4KPHRpdGxlPkFzc2V0IDI8L3RpdGxlPgo8Zz4KCTxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMjIwMCwxMzAwIDE4MDAsMTcwMCAxNDAwLDE3MDAgMTA1MCwyMDUwIDEwNTAsMTcwMCA2MDAsMTcwMCA2MDAsMjAwIDIyMDAsMjAwIAkiLz4KCTxnPgoJCTxnIGlkPSJMYXllcl8xLTIiPgoJCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNTAwLDBMMCw1MDB2MTgwMGg2MDB2NTAwbDUwMC01MDBoNDAwbDkwMC05MDBWMEg1MDB6IE0yMjAwLDEzMDBsLTQwMCw0MDBoLTQwMGwtMzUwLDM1MHYtMzUwSDYwMFYyMDBoMTYwMAoJCQkJVjEzMDB6Ii8+CgkJCTxyZWN0IHg9IjE3MDAiIHk9IjU1MCIgY2xhc3M9InN0MSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSI2MDAiLz4KCQkJPHJlY3QgeD0iMTE1MCIgeT0iNTUwIiBjbGFzcz0ic3QxIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjYwMCIvPgoJCTwvZz4KCTwvZz4KPC9nPgo8L3N2Zz4K\";\nvar githubIconUri = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTA2IiBoZWlnaHQ9IjEwNiIgdmlld0JveD0iMCAwIDEwNiAxMDYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxjaXJjbGUgY3g9IjUzIiBjeT0iNTMiIHI9IjUzIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUyLjg1NCA0QzI1LjgzOSA0IDQgMjYgNCA1My4yMTdDNCA3NC45NzMgMTcuOTkzIDkzLjM4OSAzNy40MDUgOTkuOTA3QzM5LjgzMiAxMDAuMzk3IDQwLjcyMSA5OC44NDggNDAuNzIxIDk3LjU0NUM0MC43MjEgOTYuNDA0IDQwLjY0MSA5Mi40OTMgNDAuNjQxIDg4LjQxOEMyNy4wNTEgOTEuMzUyIDI0LjIyMSA4Mi41NTEgMjQuMjIxIDgyLjU1MUMyMi4wMzcgNzYuODQ3IDE4LjgwMSA3NS4zODEgMTguODAxIDc1LjM4MUMxNC4zNTMgNzIuMzY2IDE5LjEyNSA3Mi4zNjYgMTkuMTI1IDcyLjM2NkMyNC4wNTkgNzIuNjkyIDI2LjY0OCA3Ny40MTggMjYuNjQ4IDc3LjQxOEMzMS4wMTUgODQuOTE0IDM4LjA1MiA4Mi43OTYgNDAuODgzIDgxLjQ5MkM0MS4yODcgNzguMzE0IDQyLjU4MiA3Ni4xMTQgNDMuOTU3IDc0Ljg5MkMzMy4xMTggNzMuNzUxIDIxLjcxNCA2OS41MTQgMjEuNzE0IDUwLjYwOUMyMS43MTQgNDUuMjMxIDIzLjY1NCA0MC44MzEgMjYuNzI4IDM3LjQwOUMyNi4yNDMgMzYuMTg3IDI0LjU0NCAzMS4xMzQgMjcuMjE0IDI0LjM3MUMyNy4yMTQgMjQuMzcxIDMxLjMzOSAyMy4wNjcgNDAuNjQgMjkuNDIzQzQ0LjYyMjEgMjguMzQ1NyA0OC43Mjg4IDI3Ljc5NzYgNTIuODU0IDI3Ljc5M0M1Ni45NzkgMjcuNzkzIDYxLjE4NCAyOC4zNjQgNjUuMDY3IDI5LjQyM0M3NC4zNjkgMjMuMDY3IDc4LjQ5NCAyNC4zNzEgNzguNDk0IDI0LjM3MUM4MS4xNjQgMzEuMTM0IDc5LjQ2NCAzNi4xODcgNzguOTc5IDM3LjQwOUM4Mi4xMzQgNDAuODMxIDgzLjk5NCA0NS4yMzEgODMuOTk0IDUwLjYwOUM4My45OTQgNjkuNTE0IDcyLjU5IDczLjY2OSA2MS42NyA3NC44OTJDNjMuNDUgNzYuNDQgNjQuOTg2IDc5LjM3MyA2NC45ODYgODQuMDE4QzY0Ljk4NiA5MC42MTggNjQuOTA2IDk1LjkxNSA2NC45MDYgOTcuNTQ0QzY0LjkwNiA5OC44NDggNjUuNzk2IDEwMC4zOTcgNjguMjIyIDk5LjkwOEM4Ny42MzQgOTMuMzg4IDEwMS42MjcgNzQuOTczIDEwMS42MjcgNTMuMjE3QzEwMS43MDcgMjYgNzkuNzg4IDQgNTIuODU0IDRaIiBmaWxsPSIjMjQyOTJGIi8+Cjwvc3ZnPgo=\";\nvar xIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjMyMCIgdmlld0JveD0iMCAwIDMyMCAzMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIiByeD0iMjQiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0xNzcuMzE1IDE0NS4zMzVMMjQ1LjA2OCA2N0gyMjkuMDEzTDE3MC4xODIgMTM1LjAxN0wxMjMuMTk1IDY3SDY5TDE0MC4wNTUgMTY5Ljg1NEw2OSAyNTJIODUuMDU2M0wxNDcuMTgzIDE4MC4xNzJMMTk2LjgwNSAyNTJIMjUxTDE3Ny4zMTEgMTQ1LjMzNUgxNzcuMzE1Wk0xNTUuMzIzIDE3MC43NkwxNDguMTI0IDE2MC41MThMOTAuODQxNyA3OS4wMjJIMTE1LjUwM0wxNjEuNzMxIDE0NC43OTJMMTY4LjkzIDE1NS4wMzRMMjI5LjAyIDI0MC41MjVIMjA0LjM1OUwxNTUuMzIzIDE3MC43NjRWMTcwLjc2WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\";\nvar emailIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjMzMzUgMi42NjY1SDIuNjY2ODNDMS45MzA0NSAyLjY2NjUgMS4zMzM1IDMuMjYzNDYgMS4zMzM1IDMuOTk5ODRWMTEuOTk5OEMxLjMzMzUgMTIuNzM2MiAxLjkzMDQ1IDEzLjMzMzIgMi42NjY4MyAxMy4zMzMySDEzLjMzMzVDMTQuMDY5OSAxMy4zMzMyIDE0LjY2NjggMTIuNzM2MiAxNC42NjY4IDExLjk5OThWMy45OTk4NEMxNC42NjY4IDMuMjYzNDYgMTQuMDY5OSAyLjY2NjUgMTMuMzMzNSAyLjY2NjVaIiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTQuNjY2OCA0LjY2NjVMOC42ODY4MyA4LjQ2NjVDOC40ODEwMSA4LjU5NTQ1IDguMjQzMDQgOC42NjM4NCA4LjAwMDE2IDguNjYzODRDNy43NTcyOCA4LjY2Mzg0IDcuNTE5MzEgOC41OTU0NSA3LjMxMzUgOC40NjY1TDEuMzMzNSA0LjY2NjUiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=\";\nvar phoneIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2MzlfNjMyKSI+CjxwYXRoIGQ9Ik0xNC42NjY5IDExLjI4MDJWMTMuMjgwMkMxNC42Njc3IDEzLjQ2NTkgMTQuNjI5NyAxMy42NDk3IDE0LjU1NTMgMTMuODE5OEMxNC40ODA5IDEzLjk4OTkgMTQuMzcxOCAxNC4xNDI2IDE0LjIzNSAxNC4yNjgxQzE0LjA5ODIgMTQuMzkzNyAxMy45MzY3IDE0LjQ4OTIgMTMuNzYwOCAxNC41NDg3QzEzLjU4NDkgMTQuNjA4MiAxMy4zOTg1IDE0LjYzMDMgMTMuMjEzNiAxNC42MTM2QzExLjE2MjIgMTQuMzkwNyA5LjE5MTYxIDEzLjY4OTcgNy40NjAyOCAxMi41NjY5QzUuODQ5NSAxMS41NDMzIDQuNDgzODQgMTAuMTc3NyAzLjQ2MDI4IDguNTY2ODlDMi4zMzM2IDYuODI3NyAxLjYzMjQ0IDQuODQ3NTYgMS40MTM2MSAyLjc4Njg5QzEuMzk2OTUgMi42MDI1NCAxLjQxODg2IDIuNDE2NzMgMS40Nzc5NSAyLjI0MTMxQzEuNTM3MDMgMi4wNjU4OSAxLjYzMTk5IDEuOTA0NjkgMS43NTY3OSAxLjc2Nzk3QzEuODgxNTkgMS42MzEyNiAyLjAzMzQ4IDEuNTIyMDMgMi4yMDI4MSAxLjQ0NzI0QzIuMzcyMTMgMS4zNzI0NSAyLjU1NTE3IDEuMzMzNzQgMi43NDAyOCAxLjMzMzU2SDQuNzQwMjhDNS4wNjM4MiAxLjMzMDM4IDUuMzc3NDggMS40NDQ5NSA1LjYyMjc5IDEuNjU1OTJDNS44NjgxIDEuODY2ODkgNi4wMjgzMyAyLjE1OTg2IDYuMDczNjEgMi40ODAyM0M2LjE1ODAzIDMuMTIwMjcgNi4zMTQ1OCAzLjc0ODcxIDYuNTQwMjggNC4zNTM1NkM2LjYyOTk4IDQuNTkyMTggNi42NDkzOSA0Ljg1MTUgNi41OTYyMiA1LjEwMDgxQzYuNTQzMDUgNS4zNTAxMiA2LjQxOTUyIDUuNTc4OTcgNi4yNDAyOCA1Ljc2MDIzTDUuMzkzNjEgNi42MDY4OUM2LjM0MjY1IDguMjc1OTIgNy43MjQ1OCA5LjY1Nzg2IDkuMzkzNjEgMTAuNjA2OUwxMC4yNDAzIDkuNzYwMjNDMTAuNDIxNSA5LjU4MDk5IDEwLjY1MDQgOS40NTc0NiAxMC44OTk3IDkuNDA0MjlDMTEuMTQ5IDkuMzUxMTIgMTEuNDA4MyA5LjM3MDUzIDExLjY0NjkgOS40NjAyM0MxMi4yNTE4IDkuNjg1OTMgMTIuODgwMiA5Ljg0MjQ4IDEzLjUyMDMgOS45MjY4OUMxMy44NDQxIDkuOTcyNTggMTQuMTM5OSAxMC4xMzU3IDE0LjM1MTMgMTAuMzg1MkMxNC41NjI3IDEwLjYzNDggMTQuNjc1MSAxMC45NTMzIDE0LjY2NjkgMTEuMjgwMloiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81NjM5XzYzMiI+CjxyZWN0IHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K\";\nvar genericTokenIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzQwNDhfNDIzMSkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNTg0IDQuODU1NjZDNy43MTA2OSA0Ljc4MjUyIDcuODU0MzkgNC43NDQwMiA4LjAwMDY3IDQuNzQ0MDJDOC4xNDY5NSA0Ljc0NDAyIDguMjkwNjUgNC43ODI1MiA4LjQxNzM0IDQuODU1NjZMMTAuNTE1MyA2LjA2NjY2QzEwLjY0MiA2LjEzOTggMTAuNzQ3MiA2LjI0NSAxMC44MjA0IDYuMzcxNjhDMTAuODkzNSA2LjQ5ODM1IDEwLjkzMiA2LjY0MjA1IDEwLjkzMiA2Ljc4ODMzVjkuMjExQzEwLjkzMiA5LjM1NzI3IDEwLjg5MzUgOS41MDA5NyAxMC44MjA0IDkuNjI3NjVDMTAuNzQ3MiA5Ljc1NDMzIDEwLjY0MiA5Ljg1OTUzIDEwLjUxNTMgOS45MzI2Nkw4LjQxNzM0IDExLjE0NEM4LjI5MDY1IDExLjIxNzEgOC4xNDY5NSAxMS4yNTU2IDguMDAwNjcgMTEuMjU1NkM3Ljg1NDM5IDExLjI1NTYgNy43MTA2OSAxMS4yMTcxIDcuNTg0IDExLjE0NEw1LjQ4NiA5LjkzMjY2QzUuMzU5MzIgOS44NTk1MyA1LjI1NDEzIDkuNzU0MzMgNS4xODA5OSA5LjYyNzY1QzUuMTA3ODUgOS41MDA5NyA1LjA2OTM0IDkuMzU3MjcgNS4wNjkzNCA5LjIxMVY2Ljc4ODY2QzUuMDY5MjggNi42NDIzMyA1LjEwNzc2IDYuNDk4NTYgNS4xODA5IDYuMzcxODJDNS4yNTQwNSA2LjI0NTA4IDUuMzU5MjcgNi4xMzk4MyA1LjQ4NiA2LjA2NjY2TDcuNTg0IDQuODU1NjZaTTguMDg0IDUuNDMzQzguMDU4NjcgNS40MTgzNyA4LjAyOTkzIDUuNDEwNjcgOC4wMDA2NyA1LjQxMDY3QzcuOTcxNDEgNS40MTA2NyA3Ljk0MjY3IDUuNDE4MzcgNy45MTczNCA1LjQzM0w1LjgxOTM0IDYuNjQ0MzNDNS43OTQgNi42NTg5NiA1Ljc3Mjk2IDYuNjggNS43NTgzMyA2LjcwNTMzQzUuNzQzNyA2LjczMDY3IDUuNzM2IDYuNzU5NDEgNS43MzYgNi43ODg2NlY5LjIxMTMzQzUuNzM2IDkuMjQwNTkgNS43NDM3IDkuMjY5MzMgNS43NTgzMyA5LjI5NDY2QzUuNzcyOTYgOS4zMiA1Ljc5NCA5LjM0MTA0IDUuODE5MzQgOS4zNTU2Nkw3LjkxNzM0IDEwLjU2NjdDNy45NDI2NyAxMC41ODEzIDcuOTcxNDEgMTAuNTg5IDguMDAwNjcgMTAuNTg5QzguMDI5OTMgMTAuNTg5IDguMDU4NjcgMTAuNTgxMyA4LjA4NCAxMC41NjY3TDEwLjE4MiA5LjM1NTMzQzEwLjIwNzMgOS4zNDA3IDEwLjIyODQgOS4zMTk2NiAxMC4yNDMgOS4yOTQzM0MxMC4yNTc2IDkuMjY4OTkgMTAuMjY1MyA5LjI0MDI1IDEwLjI2NTMgOS4yMTFWNi43ODg2NkMxMC4yNjUzIDYuNzU5NDEgMTAuMjU3NiA2LjczMDY3IDEwLjI0MyA2LjcwNTMzQzEwLjIyODQgNi42OCAxMC4yMDczIDYuNjU4OTYgMTAuMTgyIDYuNjQ0MzNMOC4wODQgNS40MzNaIiBmaWxsPSIjNUM1QzVDIi8+CjwvZz4KPGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjcuNjkyMzEiIHN0cm9rZT0iIzVDNUM1QyIgc3Ryb2tlLXdpZHRoPSIwLjYxNTM4NSIvPgo8Y2lyY2xlIGN4PSI3Ljk5OTU1IiBjeT0iOC4wMDAwNCIgcj0iNS44NDYxNSIgc3Ryb2tlPSIjNUM1QzVDIiBzdHJva2Utd2lkdGg9IjAuNjE1Mzg1Ii8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzQwNDhfNDIzMSI+CjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjgiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0IDQpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==\";\nvar guestIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDIxVjE5QzE5IDE3LjkzOTEgMTguNTc4NiAxNi45MjE3IDE3LjgyODQgMTYuMTcxNkMxNy4wNzgzIDE1LjQyMTQgMTYuMDYwOSAxNSAxNSAxNUg5QzcuOTM5MTMgMTUgNi45MjE3MiAxNS40MjE0IDYuMTcxNTcgMTYuMTcxNkM1LjQyMTQzIDE2LjkyMTcgNSAxNy45MzkxIDUgMTlWMjEiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEyIDExQzE0LjIwOTEgMTEgMTYgOS4yMDkxNCAxNiA3QzE2IDQuNzkwODYgMTQuMjA5MSAzIDEyIDNDOS43OTA4NiAzIDggNC43OTA4NiA4IDdDOCA5LjIwOTE0IDkuNzkwODYgMTEgMTIgMTFaIiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=\";\nvar genericWalletIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyLjY2NjcgNC42NjY2N1YyLjY2NjY3QzEyLjY2NjcgMi40ODk4NiAxMi41OTY0IDIuMzIwMjkgMTIuNDcxNCAyLjE5NTI2QzEyLjM0NjQgMi4wNzAyNCAxMi4xNzY4IDIgMTIgMkgzLjMzMzMzQzIuOTc5NzEgMiAyLjY0MDU3IDIuMTQwNDggMi4zOTA1MiAyLjM5MDUyQzIuMTQwNDggMi42NDA1NyAyIDIuOTc5NzEgMiAzLjMzMzMzQzIgMy42ODY5NiAyLjE0MDQ4IDQuMDI2MDkgMi4zOTA1MiA0LjI3NjE0QzIuNjQwNTcgNC41MjYxOSAyLjk3OTcxIDQuNjY2NjcgMy4zMzMzMyA0LjY2NjY3SDEzLjMzMzNDMTMuNTEwMSA0LjY2NjY3IDEzLjY3OTcgNC43MzY5IDEzLjgwNDcgNC44NjE5M0MxMy45Mjk4IDQuOTg2OTUgMTQgNS4xNTY1MiAxNCA1LjMzMzMzVjhNMTQgOEgxMkMxMS42NDY0IDggMTEuMzA3MiA4LjE0MDQ4IDExLjA1NzIgOC4zOTA1MkMxMC44MDcxIDguNjQwNTcgMTAuNjY2NyA4Ljk3OTcxIDEwLjY2NjcgOS4zMzMzM0MxMC42NjY3IDkuNjg2OTYgMTAuODA3MSAxMC4wMjYxIDExLjA1NzIgMTAuMjc2MUMxMS4zMDcyIDEwLjUyNjIgMTEuNjQ2NCAxMC42NjY3IDEyIDEwLjY2NjdIMTRDMTQuMTc2OCAxMC42NjY3IDE0LjM0NjQgMTAuNTk2NCAxNC40NzE0IDEwLjQ3MTRDMTQuNTk2NCAxMC4zNDY0IDE0LjY2NjcgMTAuMTc2OCAxNC42NjY3IDEwVjguNjY2NjdDMTQuNjY2NyA4LjQ4OTg2IDE0LjU5NjQgOC4zMjAyOSAxNC40NzE0IDguMTk1MjZDMTQuMzQ2NCA4LjA3MDI0IDE0LjE3NjggOCAxNCA4WiIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTIgMy4zMzM1VjEyLjY2NjhDMiAxMy4wMjA1IDIuMTQwNDggMTMuMzU5NiAyLjM5MDUyIDEzLjYwOTZDMi42NDA1NyAxMy44NTk3IDIuOTc5NzEgMTQuMDAwMiAzLjMzMzMzIDE0LjAwMDJIMTMuMzMzM0MxMy41MTAxIDE0LjAwMDIgMTMuNjc5NyAxMy45Mjk5IDEzLjgwNDcgMTMuODA0OUMxMy45Mjk4IDEzLjY3OTkgMTQgMTMuNTEwMyAxNCAxMy4zMzM1VjEwLjY2NjgiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=\";\nvar passkeyIcon = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2MzlfMzIpIj4KPHBhdGggZD0iTTcuOTk5NTkgNi42NjY1QzcuNjQ1OTYgNi42NjY1IDcuMzA2ODMgNi44MDY5OCA3LjA1Njc4IDcuMDU3MDNDNi44MDY3MyA3LjMwNzA4IDYuNjY2MjUgNy42NDYyMiA2LjY2NjI1IDcuOTk5ODRDNi42NjYyNSA4LjY3OTg0IDYuNTk5NTkgOS42NzMxNyA2LjQ5MjkyIDEwLjY2NjUiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjI1NDkiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNOS4zMzI5MyA4Ljc0NjU4QzkuMzMyOTMgMTAuMzMzMiA5LjMzMjkzIDEyLjk5OTkgOC42NjYyNiAxNC42NjY2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTExLjUyNzMgMTQuMDEzM0MxMS42MDczIDEzLjYxMzMgMTEuODE0IDEyLjQ4IDExLjg2MDcgMTIiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLXdpZHRoPSIxLjI1NDkiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMS4zMzM5OCA4LjAwMDE2QzEuMzMzOTggNi42MDA5NSAxLjc3NDIzIDUuMjM3MiAyLjU5MjM3IDQuMTAyMDlDMy40MTA1MSAyLjk2Njk5IDQuNTY1MDUgMi4xMTgwOCA1Ljg5MjQ3IDEuNjc1NjFDNy4yMTk4OCAxLjIzMzE0IDguNjUyODYgMS4yMTk1NCA5Ljk4ODQ0IDEuNjM2NzRDMTEuMzI0IDIuMDUzOTQgMTIuNDk0NSAyLjg4MDc5IDEzLjMzNCA0LjAwMDE2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEuMzMzOTggMTAuNjY2NUgxLjMzOTE0IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE0LjUzMjcgMTAuNjY2NUMxNC42NjYgOS4zMzMxNyAxNC42MiA3LjA5NzE3IDE0LjUzMjcgNi42NjY1IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTMuMzMzOTggMTIuOTk5OEMzLjY2NzMyIDExLjk5OTggNC4wMDA2NSA5Ljk5OTg0IDQuMDAwNjUgNy45OTk4NEMzLjk5OTk4IDcuNTQ1NzUgNC4wNzY2MyA3LjA5NDg2IDQuMjI3MzIgNi42NjY1IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTUuNzY3MDkgMTQuNjY2OEM1LjkwNzA5IDE0LjIyNjggNi4wNjcwOSAxMy43ODY4IDYuMTQ3MDkgMTMuMzMzNSIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2Utd2lkdGg9IjEuMjU0OSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik02IDQuNTMzNDZDNi42MDgyNyA0LjE4MjI4IDcuMjk4MjggMy45OTc0NSA4LjAwMDY0IDMuOTk3NTZDOC43MDMwMSAzLjk5NzY3IDkuMzkyOTYgNC4xODI3MiAxMC4wMDExIDQuNTM0MUMxMC42MDkzIDQuODg1NDggMTEuMTE0MiA1LjM5MDc5IDExLjQ2NTEgNS45OTkyM0MxMS44MTYgNi42MDc2NiAxMi4wMDA1IDcuMjk3NzYgMTIgOC4wMDAxMlY5LjMzMzQ2IiBzdHJva2U9IiMzMzg1RkYiIHN0cm9rZS13aWR0aD0iMS4yNTQ5IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF81NjM5XzMyIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=\";\nvar socialIcons = {\n  google: googleIconUri,\n  apple: appleIconUri,\n  coinbase: coinbaseIconUri,\n  facebook: facebookIconUri,\n  discord: discordIconUri,\n  line: lineIconUri,\n  x: xIcon,\n  farcaster: farcasterIconUri,\n  telegram: telegramIconUri,\n  twitch: twitchIconUri,\n  github: githubIconUri\n};\nfunction getSocialIcon(provider) {\n  switch (provider) {\n    case \"google\":\n      return googleIconUri;\n    case \"coinbase\":\n      return coinbaseIconUri;\n    case \"apple\":\n      return appleIconUri;\n    case \"facebook\":\n      return facebookIconUri;\n    case \"phone\":\n      return phoneIcon;\n    case \"email\":\n      return emailIcon;\n    case \"passkey\":\n      return passkeyIcon;\n    case \"discord\":\n      return discordIconUri;\n    case \"line\":\n      return lineIconUri;\n    case \"x\":\n      return xIcon;\n    case \"farcaster\":\n      return farcasterIconUri;\n    case \"telegram\":\n      return telegramIconUri;\n    case \"twitch\":\n      return twitchIconUri;\n    case \"github\":\n      return githubIconUri;\n    case \"guest\":\n      return guestIcon;\n    default:\n      return genericWalletIcon;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/EmailIcon.js\nvar import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);\nvar EmailIcon = (props) => {\n  return (0, import_jsx_runtime9.jsxs)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"presentation\", children: [(0, import_jsx_runtime9.jsx)(\"path\", { d: \"M13.3335 2.6665H2.66683C1.93045 2.6665 1.3335 3.26346 1.3335 3.99984V11.9998C1.3335 12.7362 1.93045 13.3332 2.66683 13.3332H13.3335C14.0699 13.3332 14.6668 12.7362 14.6668 11.9998V3.99984C14.6668 3.26346 14.0699 2.6665 13.3335 2.6665Z\", stroke: props.color ?? \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime9.jsx)(\"path\", { d: \"M14.6668 4.6665L8.68683 8.4665C8.48101 8.59545 8.24304 8.66384 8.00016 8.66384C7.75728 8.66384 7.51931 8.59545 7.3135 8.4665L1.3335 4.6665\", stroke: props.color ?? \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/FingerPrintIcon.js\nvar import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);\nvar FingerPrintIcon = (props) => {\n  return (0, import_jsx_runtime10.jsxs)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 36 36\", fill: \"none\", \"aria-hidden\": \"true\", children: [(0, import_jsx_runtime10.jsx)(\"path\", { d: \"M18.0001 15C17.2045 15 16.4414 15.3161 15.8788 15.8787C15.3162 16.4413 15.0001 17.2044 15.0001 18C15.0001 19.53 14.8501 21.765 14.6101 24\", stroke: props.color ?? \"currentColor\", strokeWidth: \"3\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M21.0002 19.6801C21.0002 23.2501 21.0002 29.2501 19.5002 33.0001\", stroke: props.color ?? \"currentColor\", strokeWidth: \"3\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M25.9348 31.53C26.1148 30.63 26.5798 28.08 26.6848 27\", stroke: props.color ?? \"currentColor\", strokeWidth: \"3\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M2.99976 18C2.99976 14.8518 3.99032 11.7833 5.83112 9.22935C7.67193 6.67536 10.2697 4.76531 13.2563 3.76975C16.243 2.77419 19.4672 2.74359 22.4723 3.6823C25.4773 4.621 28.1108 6.48141 29.9998 9\", stroke: props.color ?? \"currentColor\", strokeWidth: \"3\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M2.99976 24H3.01628\", stroke: props.color ?? \"currentColor\", strokeWidth: \"3\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M32.7 24C33 21 32.8965 15.969 32.7 15\", stroke: props.color ?? \"currentColor\", strokeWidth: \"3\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M7.49976 29.25C8.24976 27 8.99976 22.5 8.99976 18C8.99824 16.9783 9.17071 15.9638 9.50976 15\", stroke: props.color ?? \"currentColor\", strokeWidth: \"3\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M12.9751 33C13.2901 32.01 13.6501 31.02 13.8301 30\", stroke: props.color ?? \"currentColor\", strokeWidth: \"3\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime10.jsx)(\"path\", { d: \"M13.5 10.2C14.8686 9.40988 16.4211 8.99401 18.0014 8.99426C19.5818 8.99452 21.1342 9.41088 22.5025 10.2015C23.8708 10.9921 25.0069 12.129 25.7964 13.498C26.5859 14.867 27.001 16.4197 27 18V21\", stroke: props.color ?? \"currentColor\", strokeWidth: \"3\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/GuestIcon.js\nvar import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);\nvar GuestIcon = (props) => {\n  return (0, import_jsx_runtime11.jsxs)(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: props.size, height: props.size, viewBox: \"0 0 24 24\", fill: \"none\", stroke: props.color ?? \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", role: \"presentation\", children: [(0, import_jsx_runtime11.jsx)(\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" }), (0, import_jsx_runtime11.jsx)(\"circle\", { cx: \"12\", cy: \"7\", r: \"4\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.js\nvar import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);\nvar OutlineWalletIcon = (props) => {\n  return (0, import_jsx_runtime12.jsxs)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 24 24\", role: \"presentation\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", children: [(0, import_jsx_runtime12.jsx)(\"path\", { d: \"M19 7V4C19 3.73478 18.8946 3.48043 18.7071 3.29289C18.5196 3.10536 18.2652 3 18 3H5C4.46957 3 3.96086 3.21071 3.58579 3.58579C3.21071 3.96086 3 4.46957 3 5C3 5.53043 3.21071 6.03914 3.58579 6.41421C3.96086 6.78929 4.46957 7 5 7H20C20.2652 7 20.5196 7.10536 20.7071 7.29289C20.8946 7.48043 21 7.73478 21 8V12M21 12H18C17.4696 12 16.9609 12.2107 16.5858 12.5858C16.2107 12.9609 16 13.4696 16 14C16 14.5304 16.2107 15.0391 16.5858 15.4142C16.9609 15.7893 17.4696 16 18 16H21C21.2652 16 21.5196 15.8946 21.7071 15.7071C21.8946 15.5196 22 15.2652 22 15V13C22 12.7348 21.8946 12.4804 21.7071 12.2929C21.5196 12.1054 21.2652 12 21 12Z\", stroke: props.color ?? \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }), (0, import_jsx_runtime12.jsx)(\"path\", { d: \"M3 5V19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H20C20.2652 21 20.5196 20.8946 20.7071 20.7071C20.8946 20.5196 21 20.2652 21 20V16\", stroke: props.color ?? \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/icons/PhoneIcon.js\nvar import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);\nvar PhoneIcon = (props) => {\n  return (0, import_jsx_runtime13.jsxs)(\"svg\", { width: props.size, height: props.size, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"presentation\", children: [(0, import_jsx_runtime13.jsx)(\"g\", { clipPath: \"url(#clip0_5639_632)\", children: (0, import_jsx_runtime13.jsx)(\"path\", { d: \"M14.6669 11.2802V13.2802C14.6677 13.4659 14.6297 13.6497 14.5553 13.8198C14.4809 13.9899 14.3718 14.1426 14.235 14.2681C14.0982 14.3937 13.9367 14.4892 13.7608 14.5487C13.5849 14.6082 13.3985 14.6303 13.2136 14.6136C11.1622 14.3907 9.19161 13.6897 7.46028 12.5669C5.8495 11.5433 4.48384 10.1777 3.46028 8.56689C2.3336 6.8277 1.63244 4.84756 1.41361 2.78689C1.39695 2.60254 1.41886 2.41673 1.47795 2.24131C1.53703 2.06589 1.63199 1.90469 1.75679 1.76797C1.88159 1.63126 2.03348 1.52203 2.20281 1.44724C2.37213 1.37245 2.55517 1.33374 2.74028 1.33356H4.74028C5.06382 1.33038 5.37748 1.44495 5.62279 1.65592C5.8681 1.86689 6.02833 2.15986 6.07361 2.48023C6.15803 3.12027 6.31458 3.74871 6.54028 4.35356C6.62998 4.59218 6.64939 4.8515 6.59622 5.10081C6.54305 5.35012 6.41952 5.57897 6.24028 5.76023L5.39361 6.60689C6.34265 8.27592 7.72458 9.65786 9.39361 10.6069L10.2403 9.76023C10.4215 9.58099 10.6504 9.45746 10.8997 9.40429C11.149 9.35112 11.4083 9.37053 11.6469 9.46023C12.2518 9.68593 12.8802 9.84248 13.5203 9.92689C13.8441 9.97258 14.1399 10.1357 14.3513 10.3852C14.5627 10.6348 14.6751 10.9533 14.6669 11.2802Z\", stroke: props.color ?? \"currentColor\", strokeWidth: \"1.33333\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) }), (0, import_jsx_runtime13.jsx)(\"defs\", { children: (0, import_jsx_runtime13.jsx)(\"clipPath\", { id: \"clip0_5639_632\", children: (0, import_jsx_runtime13.jsx)(\"rect\", { width: \"16\", height: \"16\", fill: \"white\" }) }) })] });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/WalletImage.js\nvar import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);\nvar import_react12 = __toESM(require_react(), 1);\nfunction WalletImage(props) {\n  const theme = useCustomTheme();\n  const [image, setImage] = (0, import_react12.useState)(void 0);\n  const activeWallet = useActiveWallet();\n  (0, import_react12.useEffect)(() => {\n    async function fetchImage() {\n      var _a12;\n      const storage = webLocalStorage;\n      const activeEOAId = props.id;\n      let image2;\n      if (activeEOAId === \"inApp\" && activeWallet && (activeWallet.id === \"inApp\" || activeWallet.id === \"smart\")) {\n        const lastAuthProvider = await getLastAuthProvider(storage);\n        image2 = lastAuthProvider ? {\n          uri: getSocialIcon(lastAuthProvider),\n          authProvider: lastAuthProvider\n        } : { uri: \"\", authProvider: \"wallet\" };\n      } else {\n        const mipdImage = (_a12 = getInstalledWalletProviders().find((x) => x.info.rdns === activeEOAId)) == null ? void 0 : _a12.info.icon;\n        if (mipdImage) {\n          image2 = { uri: mipdImage };\n        } else {\n          image2 = {\n            uri: await getWalletInfo(activeEOAId, true)\n          };\n        }\n      }\n      setImage(image2);\n    }\n    fetchImage();\n  }, [props.id, activeWallet]);\n  if ((image == null ? void 0 : image.authProvider) === \"email\") {\n    return (0, import_jsx_runtime14.jsx)(EmailIcon, { size: props.size, color: theme.colors.accentText });\n  }\n  if ((image == null ? void 0 : image.authProvider) === \"phone\") {\n    return (0, import_jsx_runtime14.jsx)(PhoneIcon, { size: props.size, color: theme.colors.accentText });\n  }\n  if ((image == null ? void 0 : image.authProvider) === \"passkey\") {\n    return (0, import_jsx_runtime14.jsx)(FingerPrintIcon, { size: props.size, color: theme.colors.accentText });\n  }\n  if ((image == null ? void 0 : image.authProvider) === \"wallet\") {\n    return (0, import_jsx_runtime14.jsx)(OutlineWalletIcon, { size: props.size, color: theme.colors.accentText });\n  }\n  if ((image == null ? void 0 : image.authProvider) === \"guest\") {\n    return (0, import_jsx_runtime14.jsx)(GuestIcon, { size: props.size, color: theme.colors.accentText });\n  }\n  if (image == null ? void 0 : image.uri) {\n    return (0, import_jsx_runtime14.jsx)(Img, { src: image.uri, width: props.size, height: props.size, loading: \"eager\", client: props.client, style: {\n      borderRadius: radius.md,\n      ...props.style\n    } });\n  }\n  return (0, import_jsx_runtime14.jsx)(WalletImageQuery, { id: props.id, size: props.size, client: props.client });\n}\nfunction WalletImageQuery(props) {\n  const walletImage = useWalletImage(props.id);\n  if (walletImage.isFetched && !walletImage.data) {\n    return (0, import_jsx_runtime14.jsx)(Img, { client: props.client, src: genericWalletIcon, width: props.size, height: props.size });\n  }\n  return (0, import_jsx_runtime14.jsx)(OutlineWalletIcon, { size: props.size });\n}\n\nexport {\n  fontSize,\n  spacing,\n  radius,\n  iconSize,\n  media,\n  shadow,\n  lightTheme,\n  darkTheme,\n  keyframes,\n  newStyled,\n  replaceEqualDeep,\n  QueryClient,\n  useQueryClient,\n  QueryClientProvider,\n  useQueries,\n  useQuery,\n  useSuspenseQuery,\n  queryOptions,\n  useMutation,\n  ConnectionManagerCtx,\n  useConnectionManager,\n  useConnectionManagerCtx,\n  useActiveWallet,\n  CustomThemeProvider,\n  parseTheme,\n  useCustomTheme,\n  setLastAuthProvider,\n  getLastAuthProvider,\n  ArrowRightIcon,\n  CheckIcon,\n  CheckCircledIcon,\n  ChevronDownIcon,\n  ChevronLeftIcon,\n  ChevronRightIcon,\n  ClockIcon,\n  CopyIcon,\n  Cross1Icon,\n  Cross2Icon,\n  CrossCircledIcon,\n  ExclamationTriangleIcon,\n  ExitIcon,\n  ExternalLinkIcon,\n  IdCardIcon,\n  MagnifyingGlassIcon,\n  MinusIcon,\n  PaperPlaneIcon,\n  PinBottomIcon,\n  PlusIcon,\n  RadiobuttonIcon,\n  ReloadIcon,\n  ShuffleIcon,\n  TextAlignJustifyIcon,\n  TriangleDownIcon,\n  StyledDiv,\n  StyledSvg,\n  StyledCircle,\n  StyledButton,\n  StyledLabel,\n  StyledInput,\n  StyledP,\n  StyledUl,\n  StyledSelect,\n  StyledOption,\n  fadeInAnimation,\n  Button,\n  ButtonLink,\n  IconButton,\n  ModalTitle,\n  ScreenBottomContainer,\n  noScrollBar,\n  ModalHeader,\n  Line,\n  Container,\n  namehash,\n  packetToBytes,\n  resolve,\n  UNIVERSAL_RESOLVER_ADDRESS,\n  getWalletBalance,\n  useWalletBalance,\n  useSocialProfiles,\n  useEnsName,\n  useEnsAvatar,\n  useConnectedWalletDetails,\n  useWalletInfo,\n  useWalletImage,\n  hasSponsoredTransactionsEnabled,\n  Skeleton,\n  Img,\n  Spacer,\n  genericTokenIcon,\n  socialIcons,\n  getSocialIcon,\n  EmailIcon,\n  FingerPrintIcon,\n  GuestIcon,\n  OutlineWalletIcon,\n  PhoneIcon,\n  WalletImage,\n  Text,\n  Link\n};\n/*! Bundled license information:\n\nreact-is/cjs/react-is.development.js:\n  (** @license React v16.13.1\n   * react-is.development.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n*/\n//# sourceMappingURL=chunk-HI6IFF64.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-HJ6E36KT.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport {\n  decodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IDropSinglePhase1155/read/claimCondition.js\nvar FN_SELECTOR = \"0xe9703d25\";\nvar FN_INPUTS = [\n  {\n    type: \"uint256\",\n    name: \"tokenId\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"tuple\",\n    name: \"condition\",\n    components: [\n      {\n        type: \"uint256\",\n        name: \"startTimestamp\"\n      },\n      {\n        type: \"uint256\",\n        name: \"maxClaimableSupply\"\n      },\n      {\n        type: \"uint256\",\n        name: \"supplyClaimed\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantityLimitPerWallet\"\n      },\n      {\n        type: \"bytes32\",\n        name: \"merkleRoot\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      },\n      {\n        type: \"string\",\n        name: \"metadata\"\n      }\n    ]\n  }\n];\nfunction isClaimConditionSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction encodeClaimConditionParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.tokenId]);\n}\nfunction encodeClaimCondition(options) {\n  return FN_SELECTOR + encodeClaimConditionParams(options).slice(2);\n}\nfunction decodeClaimConditionResult(result) {\n  return decodeAbiParameters(FN_OUTPUTS, result)[0];\n}\nasync function claimCondition(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.tokenId]\n  });\n}\n\nexport {\n  FN_SELECTOR,\n  isClaimConditionSupported,\n  encodeClaimConditionParams,\n  encodeClaimCondition,\n  decodeClaimConditionResult,\n  claimCondition\n};\n//# sourceMappingURL=chunk-HJ6E36KT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-HL2TAEA2.js",
    "content": "// node_modules/thirdweb/dist/esm/rpc/actions/eth_getStorageAt.js\nasync function eth_getStorageAt(request, params) {\n  return await request({\n    method: \"eth_getStorageAt\",\n    params: [params.address, params.position, params.blockTag ?? \"latest\"]\n  });\n}\n\nexport {\n  eth_getStorageAt\n};\n//# sourceMappingURL=chunk-HL2TAEA2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-HO57TQQM.js",
    "content": "import {\n  Input,\n  Spinner,\n  WalletEntryButton,\n  useSetSelectionData\n} from \"./chunk-AARWH2GQ.js\";\nimport {\n  Container,\n  CrossCircledIcon,\n  MagnifyingGlassIcon,\n  ModalHeader,\n  Spacer,\n  Text,\n  iconSize,\n  newStyled,\n  spacing,\n  useCustomTheme\n} from \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  isEcosystemWallet\n} from \"./chunk-XC5J5ANL.js\";\nimport {\n  getInjectedProvider\n} from \"./chunk-FXBAO7K3.js\";\nimport {\n  getInstalledWalletProviders\n} from \"./chunk-PWFRCBEK.js\";\nimport {\n  smartWallet\n} from \"./chunk-2HYPHUAF.js\";\nimport {\n  createInAppWallet\n} from \"./chunk-6WNCTW75.js\";\nimport {\n  createWalletEmitter,\n  trackConnect\n} from \"./chunk-CLN3QXW2.js\";\nimport {\n  getCoinbaseWebProvider\n} from \"./chunk-R76ND7QY.js\";\nimport {\n  COINBASE\n} from \"./chunk-BZXRHH4X.js\";\nimport {\n  webLocalStorage\n} from \"./chunk-VIBS7Y3M.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  getCachedChainIfExists\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  detectOS\n} from \"./chunk-P7ZDTV2E.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/AllWalletsUI.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/fuse.js/dist/fuse.mjs\nfunction isArray(value) {\n  return !Array.isArray ? getTag(value) === \"[object Array]\" : Array.isArray(value);\n}\nvar INFINITY = 1 / 0;\nfunction baseToString(value) {\n  if (typeof value == \"string\") {\n    return value;\n  }\n  let result = value + \"\";\n  return result == \"0\" && 1 / value == -INFINITY ? \"-0\" : result;\n}\nfunction toString(value) {\n  return value == null ? \"\" : baseToString(value);\n}\nfunction isString(value) {\n  return typeof value === \"string\";\n}\nfunction isNumber(value) {\n  return typeof value === \"number\";\n}\nfunction isBoolean(value) {\n  return value === true || value === false || isObjectLike(value) && getTag(value) == \"[object Boolean]\";\n}\nfunction isObject(value) {\n  return typeof value === \"object\";\n}\nfunction isObjectLike(value) {\n  return isObject(value) && value !== null;\n}\nfunction isDefined(value) {\n  return value !== void 0 && value !== null;\n}\nfunction isBlank(value) {\n  return !value.trim().length;\n}\nfunction getTag(value) {\n  return value == null ? value === void 0 ? \"[object Undefined]\" : \"[object Null]\" : Object.prototype.toString.call(value);\n}\nvar INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\nvar LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) => `Invalid value for key ${key}`;\nvar PATTERN_LENGTH_TOO_LARGE = (max) => `Pattern length exceeds max of ${max}.`;\nvar MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\nvar INVALID_KEY_WEIGHT_VALUE = (key) => `Property 'weight' in key '${key}' must be a positive integer`;\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar KeyStore = class {\n  constructor(keys) {\n    this._keys = [];\n    this._keyMap = {};\n    let totalWeight = 0;\n    keys.forEach((key) => {\n      let obj = createKey(key);\n      this._keys.push(obj);\n      this._keyMap[obj.id] = obj;\n      totalWeight += obj.weight;\n    });\n    this._keys.forEach((key) => {\n      key.weight /= totalWeight;\n    });\n  }\n  get(keyId) {\n    return this._keyMap[keyId];\n  }\n  keys() {\n    return this._keys;\n  }\n  toJSON() {\n    return JSON.stringify(this._keys);\n  }\n};\nfunction createKey(key) {\n  let path = null;\n  let id = null;\n  let src = null;\n  let weight = 1;\n  let getFn = null;\n  if (isString(key) || isArray(key)) {\n    src = key;\n    path = createKeyPath(key);\n    id = createKeyId(key);\n  } else {\n    if (!hasOwn.call(key, \"name\")) {\n      throw new Error(MISSING_KEY_PROPERTY(\"name\"));\n    }\n    const name = key.name;\n    src = name;\n    if (hasOwn.call(key, \"weight\")) {\n      weight = key.weight;\n      if (weight <= 0) {\n        throw new Error(INVALID_KEY_WEIGHT_VALUE(name));\n      }\n    }\n    path = createKeyPath(name);\n    id = createKeyId(name);\n    getFn = key.getFn;\n  }\n  return { path, id, weight, src, getFn };\n}\nfunction createKeyPath(key) {\n  return isArray(key) ? key : key.split(\".\");\n}\nfunction createKeyId(key) {\n  return isArray(key) ? key.join(\".\") : key;\n}\nfunction get(obj, path) {\n  let list = [];\n  let arr = false;\n  const deepGet = (obj2, path2, index) => {\n    if (!isDefined(obj2)) {\n      return;\n    }\n    if (!path2[index]) {\n      list.push(obj2);\n    } else {\n      let key = path2[index];\n      const value = obj2[key];\n      if (!isDefined(value)) {\n        return;\n      }\n      if (index === path2.length - 1 && (isString(value) || isNumber(value) || isBoolean(value))) {\n        list.push(toString(value));\n      } else if (isArray(value)) {\n        arr = true;\n        for (let i = 0, len = value.length; i < len; i += 1) {\n          deepGet(value[i], path2, index + 1);\n        }\n      } else if (path2.length) {\n        deepGet(value, path2, index + 1);\n      }\n    }\n  };\n  deepGet(obj, isString(path) ? path.split(\".\") : path, 0);\n  return arr ? list : list[0];\n}\nvar MatchOptions = {\n  // Whether the matches should be included in the result set. When `true`, each record in the result\n  // set will include the indices of the matched characters.\n  // These can consequently be used for highlighting purposes.\n  includeMatches: false,\n  // When `true`, the matching function will continue to the end of a search pattern even if\n  // a perfect match has already been located in the string.\n  findAllMatches: false,\n  // Minimum number of characters that must be matched before a result is considered a match\n  minMatchCharLength: 1\n};\nvar BasicOptions = {\n  // When `true`, the algorithm continues searching to the end of the input even if a perfect\n  // match is found before the end of the same input.\n  isCaseSensitive: false,\n  // When true, the matching function will continue to the end of a search pattern even if\n  includeScore: false,\n  // List of properties that will be searched. This also supports nested properties.\n  keys: [],\n  // Whether to sort the result list, by score\n  shouldSort: true,\n  // Default sort function: sort by ascending score, ascending index\n  sortFn: (a, b) => a.score === b.score ? a.idx < b.idx ? -1 : 1 : a.score < b.score ? -1 : 1\n};\nvar FuzzyOptions = {\n  // Approximately where in the text is the pattern expected to be found?\n  location: 0,\n  // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n  // (of both letters and location), a threshold of '1.0' would match anything.\n  threshold: 0.6,\n  // Determines how close the match must be to the fuzzy location (specified above).\n  // An exact letter match which is 'distance' characters away from the fuzzy location\n  // would score as a complete mismatch. A distance of '0' requires the match be at\n  // the exact location specified, a threshold of '1000' would require a perfect match\n  // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n  distance: 100\n};\nvar AdvancedOptions = {\n  // When `true`, it enables the use of unix-like search commands\n  useExtendedSearch: false,\n  // The get function to use when fetching an object's properties.\n  // The default will search nested paths *ie foo.bar.baz*\n  getFn: get,\n  // When `true`, search will ignore `location` and `distance`, so it won't matter\n  // where in the string the pattern appears.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n  ignoreLocation: false,\n  // When `true`, the calculation for the relevance score (used for sorting) will\n  // ignore the field-length norm.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n  ignoreFieldNorm: false,\n  // The weight to determine how much field length norm effects scoring.\n  fieldNormWeight: 1\n};\nvar Config = {\n  ...BasicOptions,\n  ...MatchOptions,\n  ...FuzzyOptions,\n  ...AdvancedOptions\n};\nvar SPACE = /[^ ]+/g;\nfunction norm(weight = 1, mantissa = 3) {\n  const cache = /* @__PURE__ */ new Map();\n  const m = Math.pow(10, mantissa);\n  return {\n    get(value) {\n      const numTokens = value.match(SPACE).length;\n      if (cache.has(numTokens)) {\n        return cache.get(numTokens);\n      }\n      const norm2 = 1 / Math.pow(numTokens, 0.5 * weight);\n      const n = parseFloat(Math.round(norm2 * m) / m);\n      cache.set(numTokens, n);\n      return n;\n    },\n    clear() {\n      cache.clear();\n    }\n  };\n}\nvar FuseIndex = class {\n  constructor({\n    getFn = Config.getFn,\n    fieldNormWeight = Config.fieldNormWeight\n  } = {}) {\n    this.norm = norm(fieldNormWeight, 3);\n    this.getFn = getFn;\n    this.isCreated = false;\n    this.setIndexRecords();\n  }\n  setSources(docs = []) {\n    this.docs = docs;\n  }\n  setIndexRecords(records = []) {\n    this.records = records;\n  }\n  setKeys(keys = []) {\n    this.keys = keys;\n    this._keysMap = {};\n    keys.forEach((key, idx) => {\n      this._keysMap[key.id] = idx;\n    });\n  }\n  create() {\n    if (this.isCreated || !this.docs.length) {\n      return;\n    }\n    this.isCreated = true;\n    if (isString(this.docs[0])) {\n      this.docs.forEach((doc, docIndex) => {\n        this._addString(doc, docIndex);\n      });\n    } else {\n      this.docs.forEach((doc, docIndex) => {\n        this._addObject(doc, docIndex);\n      });\n    }\n    this.norm.clear();\n  }\n  // Adds a doc to the end of the index\n  add(doc) {\n    const idx = this.size();\n    if (isString(doc)) {\n      this._addString(doc, idx);\n    } else {\n      this._addObject(doc, idx);\n    }\n  }\n  // Removes the doc at the specified index of the index\n  removeAt(idx) {\n    this.records.splice(idx, 1);\n    for (let i = idx, len = this.size(); i < len; i += 1) {\n      this.records[i].i -= 1;\n    }\n  }\n  getValueForItemAtKeyId(item, keyId) {\n    return item[this._keysMap[keyId]];\n  }\n  size() {\n    return this.records.length;\n  }\n  _addString(doc, docIndex) {\n    if (!isDefined(doc) || isBlank(doc)) {\n      return;\n    }\n    let record = {\n      v: doc,\n      i: docIndex,\n      n: this.norm.get(doc)\n    };\n    this.records.push(record);\n  }\n  _addObject(doc, docIndex) {\n    let record = { i: docIndex, $: {} };\n    this.keys.forEach((key, keyIndex) => {\n      let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n      if (!isDefined(value)) {\n        return;\n      }\n      if (isArray(value)) {\n        let subRecords = [];\n        const stack = [{ nestedArrIndex: -1, value }];\n        while (stack.length) {\n          const { nestedArrIndex, value: value2 } = stack.pop();\n          if (!isDefined(value2)) {\n            continue;\n          }\n          if (isString(value2) && !isBlank(value2)) {\n            let subRecord = {\n              v: value2,\n              i: nestedArrIndex,\n              n: this.norm.get(value2)\n            };\n            subRecords.push(subRecord);\n          } else if (isArray(value2)) {\n            value2.forEach((item, k) => {\n              stack.push({\n                nestedArrIndex: k,\n                value: item\n              });\n            });\n          } else\n            ;\n        }\n        record.$[keyIndex] = subRecords;\n      } else if (isString(value) && !isBlank(value)) {\n        let subRecord = {\n          v: value,\n          n: this.norm.get(value)\n        };\n        record.$[keyIndex] = subRecord;\n      }\n    });\n    this.records.push(record);\n  }\n  toJSON() {\n    return {\n      keys: this.keys,\n      records: this.records\n    };\n  }\n};\nfunction createIndex(keys, docs, { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys.map(createKey));\n  myIndex.setSources(docs);\n  myIndex.create();\n  return myIndex;\n}\nfunction parseIndex(data, { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {\n  const { keys, records } = data;\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys);\n  myIndex.setIndexRecords(records);\n  return myIndex;\n}\nfunction computeScore$1(pattern, {\n  errors = 0,\n  currentLocation = 0,\n  expectedLocation = 0,\n  distance = Config.distance,\n  ignoreLocation = Config.ignoreLocation\n} = {}) {\n  const accuracy = errors / pattern.length;\n  if (ignoreLocation) {\n    return accuracy;\n  }\n  const proximity = Math.abs(expectedLocation - currentLocation);\n  if (!distance) {\n    return proximity ? 1 : accuracy;\n  }\n  return accuracy + proximity / distance;\n}\nfunction convertMaskToIndices(matchmask = [], minMatchCharLength = Config.minMatchCharLength) {\n  let indices = [];\n  let start = -1;\n  let end = -1;\n  let i = 0;\n  for (let len = matchmask.length; i < len; i += 1) {\n    let match = matchmask[i];\n    if (match && start === -1) {\n      start = i;\n    } else if (!match && start !== -1) {\n      end = i - 1;\n      if (end - start + 1 >= minMatchCharLength) {\n        indices.push([start, end]);\n      }\n      start = -1;\n    }\n  }\n  if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n    indices.push([start, i - 1]);\n  }\n  return indices;\n}\nvar MAX_BITS = 32;\nfunction search(text, pattern, patternAlphabet, {\n  location = Config.location,\n  distance = Config.distance,\n  threshold = Config.threshold,\n  findAllMatches = Config.findAllMatches,\n  minMatchCharLength = Config.minMatchCharLength,\n  includeMatches = Config.includeMatches,\n  ignoreLocation = Config.ignoreLocation\n} = {}) {\n  if (pattern.length > MAX_BITS) {\n    throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS));\n  }\n  const patternLen = pattern.length;\n  const textLen = text.length;\n  const expectedLocation = Math.max(0, Math.min(location, textLen));\n  let currentThreshold = threshold;\n  let bestLocation = expectedLocation;\n  const computeMatches = minMatchCharLength > 1 || includeMatches;\n  const matchMask = computeMatches ? Array(textLen) : [];\n  let index;\n  while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n    let score = computeScore$1(pattern, {\n      currentLocation: index,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n    currentThreshold = Math.min(score, currentThreshold);\n    bestLocation = index + patternLen;\n    if (computeMatches) {\n      let i = 0;\n      while (i < patternLen) {\n        matchMask[index + i] = 1;\n        i += 1;\n      }\n    }\n  }\n  bestLocation = -1;\n  let lastBitArr = [];\n  let finalScore = 1;\n  let binMax = patternLen + textLen;\n  const mask = 1 << patternLen - 1;\n  for (let i = 0; i < patternLen; i += 1) {\n    let binMin = 0;\n    let binMid = binMax;\n    while (binMin < binMid) {\n      const score2 = computeScore$1(pattern, {\n        errors: i,\n        currentLocation: expectedLocation + binMid,\n        expectedLocation,\n        distance,\n        ignoreLocation\n      });\n      if (score2 <= currentThreshold) {\n        binMin = binMid;\n      } else {\n        binMax = binMid;\n      }\n      binMid = Math.floor((binMax - binMin) / 2 + binMin);\n    }\n    binMax = binMid;\n    let start = Math.max(1, expectedLocation - binMid + 1);\n    let finish = findAllMatches ? textLen : Math.min(expectedLocation + binMid, textLen) + patternLen;\n    let bitArr = Array(finish + 2);\n    bitArr[finish + 1] = (1 << i) - 1;\n    for (let j = finish; j >= start; j -= 1) {\n      let currentLocation = j - 1;\n      let charMatch = patternAlphabet[text.charAt(currentLocation)];\n      if (computeMatches) {\n        matchMask[currentLocation] = +!!charMatch;\n      }\n      bitArr[j] = (bitArr[j + 1] << 1 | 1) & charMatch;\n      if (i) {\n        bitArr[j] |= (lastBitArr[j + 1] | lastBitArr[j]) << 1 | 1 | lastBitArr[j + 1];\n      }\n      if (bitArr[j] & mask) {\n        finalScore = computeScore$1(pattern, {\n          errors: i,\n          currentLocation,\n          expectedLocation,\n          distance,\n          ignoreLocation\n        });\n        if (finalScore <= currentThreshold) {\n          currentThreshold = finalScore;\n          bestLocation = currentLocation;\n          if (bestLocation <= expectedLocation) {\n            break;\n          }\n          start = Math.max(1, 2 * expectedLocation - bestLocation);\n        }\n      }\n    }\n    const score = computeScore$1(pattern, {\n      errors: i + 1,\n      currentLocation: expectedLocation,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n    if (score > currentThreshold) {\n      break;\n    }\n    lastBitArr = bitArr;\n  }\n  const result = {\n    isMatch: bestLocation >= 0,\n    // Count exact matches (those with a score of 0) to be \"almost\" exact\n    score: Math.max(1e-3, finalScore)\n  };\n  if (computeMatches) {\n    const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n    if (!indices.length) {\n      result.isMatch = false;\n    } else if (includeMatches) {\n      result.indices = indices;\n    }\n  }\n  return result;\n}\nfunction createPatternAlphabet(pattern) {\n  let mask = {};\n  for (let i = 0, len = pattern.length; i < len; i += 1) {\n    const char = pattern.charAt(i);\n    mask[char] = (mask[char] || 0) | 1 << len - i - 1;\n  }\n  return mask;\n}\nvar BitapSearch = class {\n  constructor(pattern, {\n    location = Config.location,\n    threshold = Config.threshold,\n    distance = Config.distance,\n    includeMatches = Config.includeMatches,\n    findAllMatches = Config.findAllMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    isCaseSensitive = Config.isCaseSensitive,\n    ignoreLocation = Config.ignoreLocation\n  } = {}) {\n    this.options = {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    };\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n    this.chunks = [];\n    if (!this.pattern.length) {\n      return;\n    }\n    const addChunk = (pattern2, startIndex) => {\n      this.chunks.push({\n        pattern: pattern2,\n        alphabet: createPatternAlphabet(pattern2),\n        startIndex\n      });\n    };\n    const len = this.pattern.length;\n    if (len > MAX_BITS) {\n      let i = 0;\n      const remainder = len % MAX_BITS;\n      const end = len - remainder;\n      while (i < end) {\n        addChunk(this.pattern.substr(i, MAX_BITS), i);\n        i += MAX_BITS;\n      }\n      if (remainder) {\n        const startIndex = len - MAX_BITS;\n        addChunk(this.pattern.substr(startIndex), startIndex);\n      }\n    } else {\n      addChunk(this.pattern, 0);\n    }\n  }\n  searchIn(text) {\n    const { isCaseSensitive, includeMatches } = this.options;\n    if (!isCaseSensitive) {\n      text = text.toLowerCase();\n    }\n    if (this.pattern === text) {\n      let result2 = {\n        isMatch: true,\n        score: 0\n      };\n      if (includeMatches) {\n        result2.indices = [[0, text.length - 1]];\n      }\n      return result2;\n    }\n    const {\n      location,\n      distance,\n      threshold,\n      findAllMatches,\n      minMatchCharLength,\n      ignoreLocation\n    } = this.options;\n    let allIndices = [];\n    let totalScore = 0;\n    let hasMatches = false;\n    this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n      const { isMatch, score, indices } = search(text, pattern, alphabet, {\n        location: location + startIndex,\n        distance,\n        threshold,\n        findAllMatches,\n        minMatchCharLength,\n        includeMatches,\n        ignoreLocation\n      });\n      if (isMatch) {\n        hasMatches = true;\n      }\n      totalScore += score;\n      if (isMatch && indices) {\n        allIndices = [...allIndices, ...indices];\n      }\n    });\n    let result = {\n      isMatch: hasMatches,\n      score: hasMatches ? totalScore / this.chunks.length : 1\n    };\n    if (hasMatches && includeMatches) {\n      result.indices = allIndices;\n    }\n    return result;\n  }\n};\nvar BaseMatch = class {\n  constructor(pattern) {\n    this.pattern = pattern;\n  }\n  static isMultiMatch(pattern) {\n    return getMatch(pattern, this.multiRegex);\n  }\n  static isSingleMatch(pattern) {\n    return getMatch(pattern, this.singleRegex);\n  }\n  search() {\n  }\n};\nfunction getMatch(pattern, exp) {\n  const matches = pattern.match(exp);\n  return matches ? matches[1] : null;\n}\nvar ExactMatch = class extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"exact\";\n  }\n  static get multiRegex() {\n    return /^=\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^=(.*)$/;\n  }\n  search(text) {\n    const isMatch = text === this.pattern;\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    };\n  }\n};\nvar InverseExactMatch = class extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"inverse-exact\";\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^!(.*)$/;\n  }\n  search(text) {\n    const index = text.indexOf(this.pattern);\n    const isMatch = index === -1;\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    };\n  }\n};\nvar PrefixExactMatch = class extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"prefix-exact\";\n  }\n  static get multiRegex() {\n    return /^\\^\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^\\^(.*)$/;\n  }\n  search(text) {\n    const isMatch = text.startsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    };\n  }\n};\nvar InversePrefixExactMatch = class extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"inverse-prefix-exact\";\n  }\n  static get multiRegex() {\n    return /^!\\^\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^!\\^(.*)$/;\n  }\n  search(text) {\n    const isMatch = !text.startsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    };\n  }\n};\nvar SuffixExactMatch = class extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"suffix-exact\";\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"\\$$/;\n  }\n  static get singleRegex() {\n    return /^(.*)\\$$/;\n  }\n  search(text) {\n    const isMatch = text.endsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [text.length - this.pattern.length, text.length - 1]\n    };\n  }\n};\nvar InverseSuffixExactMatch = class extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"inverse-suffix-exact\";\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"\\$$/;\n  }\n  static get singleRegex() {\n    return /^!(.*)\\$$/;\n  }\n  search(text) {\n    const isMatch = !text.endsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    };\n  }\n};\nvar FuzzyMatch = class extends BaseMatch {\n  constructor(pattern, {\n    location = Config.location,\n    threshold = Config.threshold,\n    distance = Config.distance,\n    includeMatches = Config.includeMatches,\n    findAllMatches = Config.findAllMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    isCaseSensitive = Config.isCaseSensitive,\n    ignoreLocation = Config.ignoreLocation\n  } = {}) {\n    super(pattern);\n    this._bitapSearch = new BitapSearch(pattern, {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    });\n  }\n  static get type() {\n    return \"fuzzy\";\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^(.*)$/;\n  }\n  search(text) {\n    return this._bitapSearch.searchIn(text);\n  }\n};\nvar IncludeMatch = class extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"include\";\n  }\n  static get multiRegex() {\n    return /^'\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^'(.*)$/;\n  }\n  search(text) {\n    let location = 0;\n    let index;\n    const indices = [];\n    const patternLen = this.pattern.length;\n    while ((index = text.indexOf(this.pattern, location)) > -1) {\n      location = index + patternLen;\n      indices.push([index, location - 1]);\n    }\n    const isMatch = !!indices.length;\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices\n    };\n  }\n};\nvar searchers = [\n  ExactMatch,\n  IncludeMatch,\n  PrefixExactMatch,\n  InversePrefixExactMatch,\n  InverseSuffixExactMatch,\n  SuffixExactMatch,\n  InverseExactMatch,\n  FuzzyMatch\n];\nvar searchersLen = searchers.length;\nvar SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nvar OR_TOKEN = \"|\";\nfunction parseQuery(pattern, options = {}) {\n  return pattern.split(OR_TOKEN).map((item) => {\n    let query = item.trim().split(SPACE_RE).filter((item2) => item2 && !!item2.trim());\n    let results = [];\n    for (let i = 0, len = query.length; i < len; i += 1) {\n      const queryItem = query[i];\n      let found = false;\n      let idx = -1;\n      while (!found && ++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isMultiMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          found = true;\n        }\n      }\n      if (found) {\n        continue;\n      }\n      idx = -1;\n      while (++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isSingleMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          break;\n        }\n      }\n    }\n    return results;\n  });\n}\nvar MultiMatchSet = /* @__PURE__ */ new Set([FuzzyMatch.type, IncludeMatch.type]);\nvar ExtendedSearch = class {\n  constructor(pattern, {\n    isCaseSensitive = Config.isCaseSensitive,\n    includeMatches = Config.includeMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    ignoreLocation = Config.ignoreLocation,\n    findAllMatches = Config.findAllMatches,\n    location = Config.location,\n    threshold = Config.threshold,\n    distance = Config.distance\n  } = {}) {\n    this.query = null;\n    this.options = {\n      isCaseSensitive,\n      includeMatches,\n      minMatchCharLength,\n      findAllMatches,\n      ignoreLocation,\n      location,\n      threshold,\n      distance\n    };\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n    this.query = parseQuery(this.pattern, this.options);\n  }\n  static condition(_, options) {\n    return options.useExtendedSearch;\n  }\n  searchIn(text) {\n    const query = this.query;\n    if (!query) {\n      return {\n        isMatch: false,\n        score: 1\n      };\n    }\n    const { includeMatches, isCaseSensitive } = this.options;\n    text = isCaseSensitive ? text : text.toLowerCase();\n    let numMatches = 0;\n    let allIndices = [];\n    let totalScore = 0;\n    for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n      const searchers2 = query[i];\n      allIndices.length = 0;\n      numMatches = 0;\n      for (let j = 0, pLen = searchers2.length; j < pLen; j += 1) {\n        const searcher = searchers2[j];\n        const { isMatch, indices, score } = searcher.search(text);\n        if (isMatch) {\n          numMatches += 1;\n          totalScore += score;\n          if (includeMatches) {\n            const type = searcher.constructor.type;\n            if (MultiMatchSet.has(type)) {\n              allIndices = [...allIndices, ...indices];\n            } else {\n              allIndices.push(indices);\n            }\n          }\n        } else {\n          totalScore = 0;\n          numMatches = 0;\n          allIndices.length = 0;\n          break;\n        }\n      }\n      if (numMatches) {\n        let result = {\n          isMatch: true,\n          score: totalScore / numMatches\n        };\n        if (includeMatches) {\n          result.indices = allIndices;\n        }\n        return result;\n      }\n    }\n    return {\n      isMatch: false,\n      score: 1\n    };\n  }\n};\nvar registeredSearchers = [];\nfunction register(...args) {\n  registeredSearchers.push(...args);\n}\nfunction createSearcher(pattern, options) {\n  for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n    let searcherClass = registeredSearchers[i];\n    if (searcherClass.condition(pattern, options)) {\n      return new searcherClass(pattern, options);\n    }\n  }\n  return new BitapSearch(pattern, options);\n}\nvar LogicalOperator = {\n  AND: \"$and\",\n  OR: \"$or\"\n};\nvar KeyType = {\n  PATH: \"$path\",\n  PATTERN: \"$val\"\n};\nvar isExpression = (query) => !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\nvar isPath = (query) => !!query[KeyType.PATH];\nvar isLeaf = (query) => !isArray(query) && isObject(query) && !isExpression(query);\nvar convertToExplicit = (query) => ({\n  [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n    [key]: query[key]\n  }))\n});\nfunction parse(query, options, { auto = true } = {}) {\n  const next = (query2) => {\n    let keys = Object.keys(query2);\n    const isQueryPath = isPath(query2);\n    if (!isQueryPath && keys.length > 1 && !isExpression(query2)) {\n      return next(convertToExplicit(query2));\n    }\n    if (isLeaf(query2)) {\n      const key = isQueryPath ? query2[KeyType.PATH] : keys[0];\n      const pattern = isQueryPath ? query2[KeyType.PATTERN] : query2[key];\n      if (!isString(pattern)) {\n        throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key));\n      }\n      const obj = {\n        keyId: createKeyId(key),\n        pattern\n      };\n      if (auto) {\n        obj.searcher = createSearcher(pattern, options);\n      }\n      return obj;\n    }\n    let node = {\n      children: [],\n      operator: keys[0]\n    };\n    keys.forEach((key) => {\n      const value = query2[key];\n      if (isArray(value)) {\n        value.forEach((item) => {\n          node.children.push(next(item));\n        });\n      }\n    });\n    return node;\n  };\n  if (!isExpression(query)) {\n    query = convertToExplicit(query);\n  }\n  return next(query);\n}\nfunction computeScore(results, { ignoreFieldNorm = Config.ignoreFieldNorm }) {\n  results.forEach((result) => {\n    let totalScore = 1;\n    result.matches.forEach(({ key, norm: norm2, score }) => {\n      const weight = key ? key.weight : null;\n      totalScore *= Math.pow(\n        score === 0 && weight ? Number.EPSILON : score,\n        (weight || 1) * (ignoreFieldNorm ? 1 : norm2)\n      );\n    });\n    result.score = totalScore;\n  });\n}\nfunction transformMatches(result, data) {\n  const matches = result.matches;\n  data.matches = [];\n  if (!isDefined(matches)) {\n    return;\n  }\n  matches.forEach((match) => {\n    if (!isDefined(match.indices) || !match.indices.length) {\n      return;\n    }\n    const { indices, value } = match;\n    let obj = {\n      indices,\n      value\n    };\n    if (match.key) {\n      obj.key = match.key.src;\n    }\n    if (match.idx > -1) {\n      obj.refIndex = match.idx;\n    }\n    data.matches.push(obj);\n  });\n}\nfunction transformScore(result, data) {\n  data.score = result.score;\n}\nfunction format(results, docs, {\n  includeMatches = Config.includeMatches,\n  includeScore = Config.includeScore\n} = {}) {\n  const transformers = [];\n  if (includeMatches)\n    transformers.push(transformMatches);\n  if (includeScore)\n    transformers.push(transformScore);\n  return results.map((result) => {\n    const { idx } = result;\n    const data = {\n      item: docs[idx],\n      refIndex: idx\n    };\n    if (transformers.length) {\n      transformers.forEach((transformer) => {\n        transformer(result, data);\n      });\n    }\n    return data;\n  });\n}\nvar Fuse = class {\n  constructor(docs, options = {}, index) {\n    this.options = { ...Config, ...options };\n    if (this.options.useExtendedSearch && false) {\n      throw new Error(EXTENDED_SEARCH_UNAVAILABLE);\n    }\n    this._keyStore = new KeyStore(this.options.keys);\n    this.setCollection(docs, index);\n  }\n  setCollection(docs, index) {\n    this._docs = docs;\n    if (index && !(index instanceof FuseIndex)) {\n      throw new Error(INCORRECT_INDEX_TYPE);\n    }\n    this._myIndex = index || createIndex(this.options.keys, this._docs, {\n      getFn: this.options.getFn,\n      fieldNormWeight: this.options.fieldNormWeight\n    });\n  }\n  add(doc) {\n    if (!isDefined(doc)) {\n      return;\n    }\n    this._docs.push(doc);\n    this._myIndex.add(doc);\n  }\n  remove(predicate = () => false) {\n    const results = [];\n    for (let i = 0, len = this._docs.length; i < len; i += 1) {\n      const doc = this._docs[i];\n      if (predicate(doc, i)) {\n        this.removeAt(i);\n        i -= 1;\n        len -= 1;\n        results.push(doc);\n      }\n    }\n    return results;\n  }\n  removeAt(idx) {\n    this._docs.splice(idx, 1);\n    this._myIndex.removeAt(idx);\n  }\n  getIndex() {\n    return this._myIndex;\n  }\n  search(query, { limit = -1 } = {}) {\n    const {\n      includeMatches,\n      includeScore,\n      shouldSort,\n      sortFn,\n      ignoreFieldNorm\n    } = this.options;\n    let results = isString(query) ? isString(this._docs[0]) ? this._searchStringList(query) : this._searchObjectList(query) : this._searchLogical(query);\n    computeScore(results, { ignoreFieldNorm });\n    if (shouldSort) {\n      results.sort(sortFn);\n    }\n    if (isNumber(limit) && limit > -1) {\n      results = results.slice(0, limit);\n    }\n    return format(results, this._docs, {\n      includeMatches,\n      includeScore\n    });\n  }\n  _searchStringList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { records } = this._myIndex;\n    const results = [];\n    records.forEach(({ v: text, i: idx, n: norm2 }) => {\n      if (!isDefined(text)) {\n        return;\n      }\n      const { isMatch, score, indices } = searcher.searchIn(text);\n      if (isMatch) {\n        results.push({\n          item: text,\n          idx,\n          matches: [{ score, value: text, norm: norm2, indices }]\n        });\n      }\n    });\n    return results;\n  }\n  _searchLogical(query) {\n    const expression = parse(query, this.options);\n    const evaluate = (node, item, idx) => {\n      if (!node.children) {\n        const { keyId, searcher } = node;\n        const matches = this._findMatches({\n          key: this._keyStore.get(keyId),\n          value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n          searcher\n        });\n        if (matches && matches.length) {\n          return [\n            {\n              idx,\n              item,\n              matches\n            }\n          ];\n        }\n        return [];\n      }\n      const res = [];\n      for (let i = 0, len = node.children.length; i < len; i += 1) {\n        const child = node.children[i];\n        const result = evaluate(child, item, idx);\n        if (result.length) {\n          res.push(...result);\n        } else if (node.operator === LogicalOperator.AND) {\n          return [];\n        }\n      }\n      return res;\n    };\n    const records = this._myIndex.records;\n    const resultMap = {};\n    const results = [];\n    records.forEach(({ $: item, i: idx }) => {\n      if (isDefined(item)) {\n        let expResults = evaluate(expression, item, idx);\n        if (expResults.length) {\n          if (!resultMap[idx]) {\n            resultMap[idx] = { idx, item, matches: [] };\n            results.push(resultMap[idx]);\n          }\n          expResults.forEach(({ matches }) => {\n            resultMap[idx].matches.push(...matches);\n          });\n        }\n      }\n    });\n    return results;\n  }\n  _searchObjectList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { keys, records } = this._myIndex;\n    const results = [];\n    records.forEach(({ $: item, i: idx }) => {\n      if (!isDefined(item)) {\n        return;\n      }\n      let matches = [];\n      keys.forEach((key, keyIndex) => {\n        matches.push(\n          ...this._findMatches({\n            key,\n            value: item[keyIndex],\n            searcher\n          })\n        );\n      });\n      if (matches.length) {\n        results.push({\n          idx,\n          item,\n          matches\n        });\n      }\n    });\n    return results;\n  }\n  _findMatches({ key, value, searcher }) {\n    if (!isDefined(value)) {\n      return [];\n    }\n    let matches = [];\n    if (isArray(value)) {\n      value.forEach(({ v: text, i: idx, n: norm2 }) => {\n        if (!isDefined(text)) {\n          return;\n        }\n        const { isMatch, score, indices } = searcher.searchIn(text);\n        if (isMatch) {\n          matches.push({\n            score,\n            key,\n            value: text,\n            idx,\n            norm: norm2,\n            indices\n          });\n        }\n      });\n    } else {\n      const { v: text, n: norm2 } = value;\n      const { isMatch, score, indices } = searcher.searchIn(text);\n      if (isMatch) {\n        matches.push({ score, key, value: text, norm: norm2, indices });\n      }\n    }\n    return matches;\n  }\n};\nFuse.version = \"7.0.0\";\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n{\n  Fuse.parseQuery = parse;\n}\n{\n  register(ExtendedSearch);\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/AllWalletsUI.js\nvar import_react3 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet-infos.js\nvar ALL_MINIMAL_WALLET_INFOS = [\n  {\n    id: \"io.metamask\",\n    name: \"MetaMask\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.trustwallet.app\",\n    name: \"Trust Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.okex.wallet\",\n    name: \"OKX Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bitget.web3\",\n    name: \"Bitget Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.binance\",\n    name: \"Binance Web3 Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.uniswap\",\n    name: \"Uniswap Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.safepal\",\n    name: \"SafePal\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"me.rainbow\",\n    name: \"Rainbow\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bybit\",\n    name: \"Bybit Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"pro.tokenpocket\",\n    name: \"TokenPocket\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.ledger\",\n    name: \"Ledger Live\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.timelesswallet\",\n    name: \"Timeless X\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"global.safe\",\n    name: \"Safe\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.zerion.wallet\",\n    name: \"Zerion\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.robinhood.wallet\",\n    name: \"Robinhood Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.1inch.wallet\",\n    name: \"1inch Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.crypto.wallet\",\n    name: \"Crypto.com | DeFi Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.exodus\",\n    name: \"Exodus\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.argent\",\n    name: \"Argent\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"im.token\",\n    name: \"imToken\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.blockchain\",\n    name: \"Blockchain.com\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.magiceden.wallet\",\n    name: \"Magic Eden\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.kraken\",\n    name: \"Kraken Wallet \",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.backpack\",\n    name: \"Backpack\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.zengo\",\n    name: \"Zengo Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.mewwallet\",\n    name: \"MEW wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.fireblocks\",\n    name: \"Fireblocks\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.mathwallet\",\n    name: \"MathWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.alphawallet\",\n    name: \"AlphaWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.unstoppabledomains\",\n    name: \"Unstoppable Domains\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.keyring\",\n    name: \"KEYRING PRO\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.frontier.wallet\",\n    name: \"Frontier\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.omni\",\n    name: \"Omni\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"co.lobstr\",\n    name: \"LOBSTR Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"technology.obvious\",\n    name: \"Obvious\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.ambire\",\n    name: \"Ambire Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.mtpelerin\",\n    name: \"Bridge Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.internetmoney\",\n    name: \"Internet Money Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.walletnow\",\n    name: \"NOW Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bitcoin\",\n    name: \"Bitcoin.com Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.alpha-u.wallet.web\",\n    name: \"αU wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.coin98\",\n    name: \"Coin98 Super Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.myabcwallet\",\n    name: \"ABC Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"co.arculus\",\n    name: \"Arculus Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.opera\",\n    name: \"Opera Crypto Browser\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.chain\",\n    name: \"Chain\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.huddln\",\n    name: \"Huddln\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.get-verso\",\n    name: \"Verso\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"me.haha\",\n    name: \"HaHa\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"pk.modular\",\n    name: \"Modular Wallet Prod\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.kelp\",\n    name: \"Kelp\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.clingon\",\n    name: \"Cling Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.broearn\",\n    name: \"Broearn Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.coinomi\",\n    name: \"Coinomi\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.ripio\",\n    name: \"Ripio Portal\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.sabay.wallet\",\n    name: \"Sabay Wallet App\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.tokoin\",\n    name: \"Tokoin | My-T Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"world.fncy\",\n    name: \"Fncy Mobile Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.copiosa\",\n    name: \"Copiosa\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.liberawallet\",\n    name: \"Libera\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.certhis\",\n    name: \"Certhis\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.burritowallet\",\n    name: \"Burrito\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.ancrypto\",\n    name: \"Ancrypto\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"network.cvl\",\n    name: \"CVL Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.cypherwallet\",\n    name: \"Cypher Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.status\",\n    name: \"Status\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.enjin\",\n    name: \"Enjin Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.trinity-tech\",\n    name: \"Essentials\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.everspace\",\n    name: \"Everspace\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.kriptomat\",\n    name: \"Kriptomat\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.oxalus\",\n    name: \"Oxalus Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.thetatoken\",\n    name: \"Theta Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.leapwallet\",\n    name: \"Leap Cosmos Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"finance.islamicoin\",\n    name: \"ISLAMIwallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.coca\",\n    name: \"COCA Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.monarchwallet\",\n    name: \"Monarch Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"co.filwallet\",\n    name: \"FILWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.valoraapp\",\n    name: \"Valora\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.coincircle\",\n    name: \"CoinCircle\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"money.snowball\",\n    name: \"Snowball\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.paraswap\",\n    name: \"ParaSwap Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"network.mrhb\",\n    name: \"Sahal Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.apollox\",\n    name: \"ApolloX\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.ennowallet\",\n    name: \"Enno Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.loopring.wallet\",\n    name: \"Loopring\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bee\",\n    name: \"BeeWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"cc.localtrade.lab\",\n    name: \"LocalTrade Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.xcapit\",\n    name: \"Xcapit\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.safematrix\",\n    name: \"Safematrix\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.neonwallet\",\n    name: \"Neon Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.sequence\",\n    name: \"Sequence Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.linen\",\n    name: \"Linen\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.nabox\",\n    name: \"Nabox\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"net.spatium\",\n    name: \"Spatium\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.cryptnox\",\n    name: \"Cryptnox Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.rktechworks\",\n    name: \"ID Pocket\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"pro.assure\",\n    name: \"Assure\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"trade.flooz.wallet\",\n    name: \"Flooz\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.keplr\",\n    name: \"Keplr\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.crossmint\",\n    name: \"Crossmint\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.pierwallet\",\n    name: \"pier\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.core\",\n    name: \"Core\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.keeper-wallet\",\n    name: \"Keeper\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.dcentwallet\",\n    name: \"D'CENT Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.withpaper\",\n    name: \"Paper\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"finance.klever\",\n    name: \"Klever Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.edge\",\n    name: \"Edge Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.neftipedia\",\n    name: \"NeftiWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.goldbit\",\n    name: \"GoldBit\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.coingrig\",\n    name: \"Coingrig\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.xfun\",\n    name: \"XFUN Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.ricewallet\",\n    name: \"RiceWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.antiersolutions\",\n    name: \"Ancrypto Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.okse\",\n    name: \"Okse Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.aktionariat\",\n    name: \"Aktionariat\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.itoken\",\n    name: \"iToken Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.zelus\",\n    name: \"Zelus\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.cardstack\",\n    name: \"Card Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.paybolt\",\n    name: \"PayBolt\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.arianee\",\n    name: \"Arianee Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.slavi\",\n    name: \"Slavi Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.plasma-wallet\",\n    name: \"Plasma Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"tech.defiantapp\",\n    name: \"Defiant\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"cc.avacus\",\n    name: \"Avacus\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.bytebank\",\n    name: \"ByteBank\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.coolbitx.cwsapp\",\n    name: \"CoolWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.optowallet\",\n    name: \"Opto Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"network.trustkeys\",\n    name: \"TK Finance\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.beewallet\",\n    name: \"Bee Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.ttmwallet\",\n    name: \"MDAO Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.pltwallet\",\n    name: \"PLTwallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.helixid\",\n    name: \"helix id\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"it.airgap\",\n    name: \"AirGap Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.qubic.wallet\",\n    name: \"Qubic Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.holdstation\",\n    name: \"Holdstation Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.saakuru.app\",\n    name: \"Saakuru All-in-One crypto App\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.3swallet\",\n    name: \"3S Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.payperless\",\n    name: \"Payperless\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"digital.minerva\",\n    name: \"Minerva Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"finance.voltage\",\n    name: \"Volt: DeFi\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.lif3\",\n    name: \"Lif3 Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"net.shinobi-wallet\",\n    name: \"Shinobi-Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.kryptogo\",\n    name: \"KryptoGO Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.feralfile.app\",\n    name: \"Feral File\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bifrostwallet\",\n    name: \"Bifrost Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.nufinetes\",\n    name: \"Nufinetes\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.wallet3\",\n    name: \"Wallet 3\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.abra\",\n    name: \"Abra Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.imem\",\n    name: \"iMe\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.premanft\",\n    name: \"PREMA Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"so.onekey.app.wallet\",\n    name: \"OneKey\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"finance.slingshot\",\n    name: \"Slingshot Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.kriptonio\",\n    name: \"Kriptonio\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.streakk\",\n    name: \"Streakk Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.saitamatoken\",\n    name: \"SaitaPro\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"group.com.flowfoundation.wallet\",\n    name: \"Flow Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.hippowallet\",\n    name: \"Hippo Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.cosmostation\",\n    name: \"Cosmostation\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.bitizen\",\n    name: \"Bitizen\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.blocto\",\n    name: \"Blocto\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.humbl\",\n    name: \"HUMBL WALLET\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.passpay\",\n    name: \"PassPay Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.ultimate\",\n    name: \"Ultimate\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"me.astrox\",\n    name: \"Me Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.thorwallet\",\n    name: \"THORWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.fizzwallet\",\n    name: \"Fizz\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.stickey\",\n    name: \"Stickey Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.klipwallet\",\n    name: \"Klip\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.coinstats\",\n    name: \"CoinStats\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"land.liker\",\n    name: \"LikerLand App\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.krystal\",\n    name: \"Krystal\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"fi.pillar\",\n    name: \"Pillar\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.harti\",\n    name: \"HARTi Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"net.stasis\",\n    name: \"Stasis Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.novawallet\",\n    name: \"Nova Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.dttd\",\n    name: \"DTTD\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.foxwallet\",\n    name: \"FoxWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"network.haqq\",\n    name: \"HAQQ Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.tomi\",\n    name: \"tomi Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.tradestrike\",\n    name: \"StrikeX Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.subwallet\",\n    name: \"SubWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"tech.okto\",\n    name: \"Okto\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.catecoin\",\n    name: \"Catecoin Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.ukiss\",\n    name: \"UKISS Hub\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.tellaw\",\n    name: \"Tellaw Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.tangem\",\n    name: \"Tangem Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"is.callback\",\n    name: \"Callback\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.summonersarena\",\n    name: \"SA ASSISTANT\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"co.xellar\",\n    name: \"Xellar\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.talken\",\n    name: \"Talken Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.uniultra.wallet\",\n    name: \"U2U Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.ozonewallet\",\n    name: \"OzoneWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.tiduswallet\",\n    name: \"Tidus Wallet \",\n    hasMobileSupport: true\n  },\n  {\n    id: \"world.ixo\",\n    name: \"Impact Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.zelcore\",\n    name: \"Zelcore\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"world.dosi.vault\",\n    name: \"DOSI Vault\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.ullapay\",\n    name: \"WOW EARN\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.ellipal\",\n    name: \"ELLIPAL\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"money.unstoppable\",\n    name: \"Unstoppable Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"dev.auroracloud\",\n    name: \"Aurora Pass\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"zone.bitverse\",\n    name: \"Bitverse\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.konio\",\n    name: \"Konio\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"net.gateweb3\",\n    name: \"GateWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.utorg\",\n    name: \"UTORG\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.coinsdo\",\n    name: \"CoinWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.ammer\",\n    name: \"Ammer Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"us.binance\",\n    name: \"Binance.US\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"co.muza\",\n    name: \"MUZA\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.fxwallet\",\n    name: \"FxWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.ryipay\",\n    name: \"RYIPAY\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.roninchain.wallet\",\n    name: \"Ronin Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.dota168\",\n    name: \"MetaWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.altme\",\n    name: \"Altme\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bitpie\",\n    name: \"Bitpie\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.moonstake\",\n    name: \"MOONSTAKE\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"gg.indi\",\n    name: \"IndiGG\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.yusetoken\",\n    name: \"Yuse Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.coininn\",\n    name: \"Coininn Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.functionx\",\n    name: \"f(x)Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.pockie\",\n    name: \"pockie\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.amazewallet\",\n    name: \"AmazeWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.paliwallet\",\n    name: \"Pali Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"me.easy\",\n    name: \"EASY\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"live.superex\",\n    name: \"SuperWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.secuxtech\",\n    name: \"SecuX\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.didwallet\",\n    name: \"DIDWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"social.halo\",\n    name: \"Halo Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.sinohope\",\n    name: \"Sinohope\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.ballet\",\n    name: \"Ballet Crypto\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.opz\",\n    name: \"OPZ Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.fizen\",\n    name: \"Fizen Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.kresus\",\n    name: \"Kresus SuperApp\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.midoin\",\n    name: \"midoin\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.onto\",\n    name: \"ONTO\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.oasys-wallet\",\n    name: \"Oasys Passport\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.gooddollar\",\n    name: \"GoodDollar\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"id.competence\",\n    name: \"Competence.id\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"ai.spotonchain.platform\",\n    name: \"Spot On Chain App\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"network.dgg\",\n    name: \"DGG Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"llc.besc\",\n    name: \"BeanBag\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.gamic\",\n    name: \"Gamic\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"baby.smart\",\n    name: \"Smart.Baby\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"network.gridlock\",\n    name: \"Gridlock Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.zeal\",\n    name: \"Zeal\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.ivirse\",\n    name: \"IApp\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"ch.dssecurity\",\n    name: \"DS Security SA\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.concordium\",\n    name: \"Concordium\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.zkape\",\n    name: \"Ape Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.thirdweb\",\n    name: \"thirdweb\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.pitaka\",\n    name: \"Pitaka\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.trusteeglobal\",\n    name: \"Trustee Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.mugambo\",\n    name: \"rss wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"cc.dropp\",\n    name: \"Dropp\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.roam.wallet\",\n    name: \"Roam\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"world.qoin\",\n    name: \"Qoin Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.meld.app\",\n    name: \"MELDapp\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bestwallet\",\n    name: \"Best Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.hyperpay\",\n    name: \"HyperPay\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.xucre\",\n    name: \"Xucre\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.herewallet\",\n    name: \"HERE Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.cakewallet\",\n    name: \"Cake Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.unagi.unawallet\",\n    name: \"una Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.ethos\",\n    name: \"Ethos Self-Custody Vault\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.pluswallet\",\n    name: \"Plus Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.authentrend\",\n    name: \"AT.Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"finance.plena\",\n    name: \"Plena-App\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.wemix\",\n    name: \"WemixWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.gemwallet\",\n    name: \"Gem Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.caesiumlab\",\n    name: \"Caesium\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"pro.fintoken\",\n    name: \"FINTOKEN\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.peakdefi\",\n    name: \"PEAKDEFI\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.nodle\",\n    name: \"Nodle\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.cryptokara\",\n    name: \"Cryptokara\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.poolsmobility.wallet\",\n    name: \"poolswallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.veworld\",\n    name: \"VeWorld Mobile\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.azcoiner\",\n    name: \"AZCoiner\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"technology.jambo\",\n    name: \"Jambo\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"vc.uincubator.api\",\n    name: \"UIIC\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.m1nty\",\n    name: \"M1NTY\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.noone\",\n    name: \"Noone Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bitso\",\n    name: \"Bitso Web3 Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"online.puzzle\",\n    name: \"Puzzle Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"network.blackfort\",\n    name: \"BlackFort Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.armana.portal\",\n    name: \"Armana Portal\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.bharatbox\",\n    name: \"BharatBox App\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.greengloryglobal\",\n    name: \"Blockaura\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.x9wallet\",\n    name: \"X9Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.miraiapp\",\n    name: \"Mirai App\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.kigo\",\n    name: \"Kigo\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.getcogni\",\n    name: \"Cogni \",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.fastex.wallet\",\n    name: \"Fastex Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.wallacy\",\n    name: \"Wallacy\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.talkapp\",\n    name: \"T+ Wallet \",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.usecapsule\",\n    name: \"Capsule\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.unitywallet\",\n    name: \"Unity Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.sinum\",\n    name: \"Sinum\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"finance.soulswap.app\",\n    name: \"SoulSwap\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.shapeshift\",\n    name: \"ShapeShift\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"finance.panaroma\",\n    name: \"Panaroma Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.neopin\",\n    name: \"NEOPIN\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.alicebob\",\n    name: \"Alicebob Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"co.cyber.wallet\",\n    name: \"CyberWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.dextrade\",\n    name: \"DexTrade\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.hashpack.wallet\",\n    name: \"HashPack\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"org.thepulsewallet\",\n    name: \"The Pulse Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"id.co.pintu\",\n    name: \"Pintu\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.bladewallet\",\n    name: \"Blade Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.pandoshi\",\n    name: \"Pandoshi Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"money.keychain\",\n    name: \"Keychain\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.mpcvault.broswerplugin\",\n    name: \"MPCVault | Team crypto wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.legacynetwork\",\n    name: \"Legacy Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.getclave\",\n    name: \"Clave\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"me.iopay\",\n    name: \"ioPay\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.kabila\",\n    name: \"Kabila Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"one.mixin.messenger\",\n    name: \"Mixin Messenger\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bettatrade\",\n    name: \"Bettatrade\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.scramberry\",\n    name: \"ScramberryWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.earthwallet\",\n    name: \"Earth Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.nestwallet\",\n    name: \"Nest Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.echooo\",\n    name: \"Echooo Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"net.myrenegade\",\n    name: \"Renegade\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.ready\",\n    name: \"Ready\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"ai.hacken\",\n    name: \"hAI by Hacken\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.plutope\",\n    name: \"Plutope\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.trustasset\",\n    name: \"Trust Asset Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.dfinnwallet\",\n    name: \"Dfinn Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bmawallet\",\n    name: \"BMA Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"net.spatium.wallet\",\n    name: \"Spatium\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.transi\",\n    name: \"Transi\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.dolletwallet\",\n    name: \"Dollet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.wombat\",\n    name: \"Wombat\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"fi.dropmate\",\n    name: \"Dropmate\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"pub.dg\",\n    name: \"DGPub App\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.icewal\",\n    name: \"icewal\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"one.metapro.wallet\",\n    name: \"metapro wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.bonuz\",\n    name: \"Bonuz Social Smart Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.shido\",\n    name: \"Shido App\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"co.lifedefi\",\n    name: \"Life DeFi\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"fun.tobi\",\n    name: \"Tobi\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.clot\",\n    name: \"Clot\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"me.komet.app\",\n    name: \"Komet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.guardiianwallet\",\n    name: \"GUARDIIAN Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.wallypto\",\n    name: \"Wallypto\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.safemoon\",\n    name: \"SafeMoon\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.elrond.maiar.wallet\",\n    name: \"xPortal\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"co.swopme\",\n    name: \"SWOP\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.bitpay\",\n    name: \"BitPay Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.tofee\",\n    name: \"Tofee Wallet Official\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.zypto\",\n    name: \"Zypto\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"xyz.orion\",\n    name: \"Orion\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.uptn.dapp-web\",\n    name: \"UPTN\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"app.nicegram\",\n    name: \"Nicegram Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"finance.openwallet\",\n    name: \"Open Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.tastycrypto\",\n    name: \"tastycrypto\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.ipmb\",\n    name: \"IPMB Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.daffione\",\n    name: \"DaffiOne\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"io.owallet\",\n    name: \"OWallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.beexo\",\n    name: \"Beexo\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.webauth\",\n    name: \"WebAuth\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"id.plumaa\",\n    name: \"Plumaa ID\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"social.gm2\",\n    name: \"GM² Social\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"nl.greenhood.wallet\",\n    name: \"Greenhood\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"com.coinbase.wallet\",\n    name: \"Coinbase Wallet\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"app.phantom\",\n    name: \"Phantom\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"io.rabby\",\n    name: \"Rabby\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"com.brave.wallet\",\n    name: \"Brave Wallet\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"io.xdefi\",\n    name: \"XDEFI Wallet\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"com.moongate.one\",\n    name: \"MG\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"com.blanqlabs.wallet\",\n    name: \"Blanq\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"tech.levain\",\n    name: \"Levain\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"com.enkrypt\",\n    name: \"Enkrypt\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"com.scramble\",\n    name: \"Scramble\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"io.finoa\",\n    name: \"FinoaConnect\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"inc.tomo\",\n    name: \"tomo extension wallet\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"com.walletconnect.com\",\n    name: \"SampleW\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"io.leapwallet.CompassWallet\",\n    name: \"Compass Wallet\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"app.nightly\",\n    name: \"Nightly\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"com.blazpay.wallet\",\n    name: \"Blazpay\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"com.lootrush\",\n    name: \"LootRush\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"app.core.extension\",\n    name: \"Core\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"xyz.dawnwallet\",\n    name: \"Dawn Wallet\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"xyz.abs\",\n    name: \"Abstract Global Wallet\",\n    hasMobileSupport: false\n  },\n  {\n    id: \"smart\",\n    name: \"Smart Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"inApp\",\n    name: \"In-App Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"embedded\",\n    name: \"In-App Wallet\",\n    hasMobileSupport: true\n  },\n  {\n    id: \"walletConnect\",\n    name: \"WalletConnect\",\n    hasMobileSupport: false\n  }\n];\nvar wallet_infos_default = ALL_MINIMAL_WALLET_INFOS;\n\n// node_modules/thirdweb/dist/esm/utils/web/isMobile.js\nfunction isAndroid() {\n  if (typeof navigator === \"undefined\") {\n    return false;\n  }\n  const os = detectOS(navigator.userAgent);\n  return os ? os.toLowerCase().includes(\"android\") : false;\n}\nfunction isIOS() {\n  if (typeof navigator === \"undefined\") {\n    return false;\n  }\n  const os = detectOS(navigator.userAgent);\n  return os ? os.toLowerCase().includes(\"ios\") || os.toLowerCase().includes(\"mac\") && navigator.maxTouchPoints > 1 : false;\n}\nfunction isMobile() {\n  return isAndroid() || isIOS();\n}\n\n// node_modules/thirdweb/dist/esm/utils/web/openWindow.js\nfunction openWindow(uri) {\n  const isInsideIframe = window !== window.top;\n  if (isInsideIframe) {\n    window.open(uri);\n  } else {\n    if (uri.startsWith(\"http\")) {\n      const link = document.createElement(\"a\");\n      link.href = uri;\n      link.target = \"_blank\";\n      link.rel = \"noreferrer noopener\";\n      link.click();\n    } else {\n      window.location.href = uri;\n    }\n  }\n}\n\n// node_modules/thirdweb/dist/esm/wallets/coinbase/coinbase-wallet.js\nfunction coinbaseWalletSDK(args) {\n  const { createOptions } = args;\n  const emitter = createWalletEmitter();\n  let account = void 0;\n  let chain = void 0;\n  function reset() {\n    account = void 0;\n    chain = void 0;\n  }\n  let handleDisconnect = async () => {\n  };\n  let handleSwitchChain = async (newChain) => {\n    chain = newChain;\n  };\n  const unsubscribeChainChanged = emitter.subscribe(\"chainChanged\", (newChain) => {\n    chain = newChain;\n  });\n  const unsubscribeDisconnect = emitter.subscribe(\"disconnect\", () => {\n    reset();\n    unsubscribeChainChanged();\n    unsubscribeDisconnect();\n  });\n  emitter.subscribe(\"accountChanged\", (_account) => {\n    account = _account;\n  });\n  return {\n    id: COINBASE,\n    subscribe: emitter.subscribe,\n    getChain() {\n      if (!chain) {\n        return void 0;\n      }\n      chain = getCachedChainIfExists(chain.id) || chain;\n      return chain;\n    },\n    getConfig: () => createOptions,\n    getAccount: () => account,\n    autoConnect: async (options) => {\n      const { autoConnectCoinbaseWalletSDK } = await import(\"./coinbaseWebSDK-RVHYUQN6.js\");\n      const provider = await args.providerFactory();\n      const [connectedAccount, connectedChain, doDisconnect, doSwitchChain] = await autoConnectCoinbaseWalletSDK(options, emitter, provider);\n      account = connectedAccount;\n      chain = connectedChain;\n      handleDisconnect = doDisconnect;\n      handleSwitchChain = doSwitchChain;\n      trackConnect({\n        client: options.client,\n        walletType: COINBASE,\n        walletAddress: account.address,\n        chainId: chain.id\n      });\n      return account;\n    },\n    connect: async (options) => {\n      const { connectCoinbaseWalletSDK } = await import(\"./coinbaseWebSDK-RVHYUQN6.js\");\n      const provider = await args.providerFactory();\n      const [connectedAccount, connectedChain, doDisconnect, doSwitchChain] = await connectCoinbaseWalletSDK(options, emitter, provider);\n      account = connectedAccount;\n      chain = connectedChain;\n      handleDisconnect = doDisconnect;\n      handleSwitchChain = doSwitchChain;\n      trackConnect({\n        client: options.client,\n        walletType: COINBASE,\n        walletAddress: account.address,\n        chainId: chain.id\n      });\n      return account;\n    },\n    disconnect: async () => {\n      reset();\n      await handleDisconnect();\n    },\n    switchChain: async (newChain) => {\n      await handleSwitchChain(newChain);\n    },\n    onConnectRequested: async () => {\n      var _a;\n      if (args.onConnectRequested) {\n        const provider = await args.providerFactory();\n        return (_a = args.onConnectRequested) == null ? void 0 : _a.call(args, provider);\n      }\n    }\n  };\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/ecosystem.js\nfunction ecosystemWallet(...args) {\n  const [ecosystemId, createOptions] = args;\n  const ecosystem = {\n    id: ecosystemId,\n    partnerId: createOptions == null ? void 0 : createOptions.partnerId\n  };\n  return createInAppWallet({\n    ecosystem,\n    createOptions: {\n      auth: {\n        ...createOptions == null ? void 0 : createOptions.auth,\n        options: []\n        // controlled by ecosystem\n      },\n      partnerId: ecosystem.partnerId\n    },\n    connectorFactory: async (client) => {\n      const { InAppWebConnector } = await import(\"./web-connector-5CMXT4ED.js\");\n      return new InAppWebConnector({\n        client,\n        ecosystem\n      });\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/in-app.js\nfunction inAppWallet(createOptions) {\n  return createInAppWallet({\n    createOptions,\n    connectorFactory: async (client) => {\n      var _a;\n      const { InAppWebConnector } = await import(\"./web-connector-5CMXT4ED.js\");\n      return new InAppWebConnector({\n        client,\n        passkeyDomain: (_a = createOptions == null ? void 0 : createOptions.auth) == null ? void 0 : _a.passkeyDomain\n      });\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/wallets/create-wallet.js\nfunction createWallet(...args) {\n  const [id, creationOptions] = args;\n  switch (true) {\n    case id === \"smart\": {\n      return smartWallet(creationOptions);\n    }\n    case (id === \"embedded\" || id === \"inApp\"): {\n      return inAppWallet(creationOptions);\n    }\n    case isEcosystemWallet(id):\n      return ecosystemWallet(...args);\n    case id === COINBASE: {\n      const options = creationOptions;\n      return coinbaseWalletSDK({\n        createOptions: options,\n        providerFactory: () => getCoinbaseWebProvider(options),\n        onConnectRequested: async (provider) => {\n          const { showCoinbasePopup } = await import(\"./utils-QE6HZ2TS.js\");\n          return showCoinbasePopup(provider);\n        }\n      });\n    }\n    default: {\n      let reset = function() {\n        account = void 0;\n        chain = void 0;\n      };\n      const emitter = createWalletEmitter();\n      let account = void 0;\n      let chain = void 0;\n      const unsubscribeChain = emitter.subscribe(\"chainChanged\", (newChain) => {\n        chain = newChain;\n      });\n      let handleDisconnect = async () => {\n      };\n      const unsubscribeDisconnect = emitter.subscribe(\"disconnect\", () => {\n        reset();\n        unsubscribeChain();\n        unsubscribeDisconnect();\n      });\n      emitter.subscribe(\"accountChanged\", (_account) => {\n        account = _account;\n      });\n      let handleSwitchChain = async () => {\n        throw new Error(\"Not implemented yet\");\n      };\n      const sessionHandler = isMobile() ? (uri) => openWindow(uri) : void 0;\n      const wallet = {\n        id,\n        subscribe: emitter.subscribe,\n        getConfig: () => args[1],\n        getChain() {\n          if (!chain) {\n            return void 0;\n          }\n          chain = getCachedChainIfExists(chain.id) || chain;\n          return chain;\n        },\n        getAccount: () => account,\n        autoConnect: async (options) => {\n          const { injectedProvider } = await import(\"./mipdStore-HEJSLGN7.js\");\n          if (id !== \"walletConnect\" && injectedProvider(id)) {\n            const { autoConnectEip1193Wallet } = await import(\"./injected-LISAWEIO.js\");\n            const [connectedAccount, connectedChain, doDisconnect, doSwitchChain] = await autoConnectEip1193Wallet({\n              id,\n              provider: getInjectedProvider(id),\n              emitter,\n              chain: options.chain,\n              client: options.client\n            });\n            account = connectedAccount;\n            chain = connectedChain;\n            handleDisconnect = doDisconnect;\n            handleSwitchChain = doSwitchChain;\n            trackConnect({\n              client: options.client,\n              walletType: id,\n              walletAddress: account.address,\n              chainId: chain.id\n            });\n            return account;\n          }\n          if (options && \"client\" in options) {\n            const { autoConnectWC } = await import(\"./controller-W2QS5UC4.js\");\n            const [connectedAccount, connectedChain, doDisconnect, doSwitchChain] = await autoConnectWC(options, emitter, wallet.id, webLocalStorage, sessionHandler);\n            account = connectedAccount;\n            chain = connectedChain;\n            handleDisconnect = doDisconnect;\n            handleSwitchChain = doSwitchChain;\n            trackConnect({\n              client: options.client,\n              walletType: id,\n              walletAddress: account.address,\n              chainId: chain.id\n            });\n            return account;\n          }\n          throw new Error(\"Failed to auto connect\");\n        },\n        connect: async (options) => {\n          async function wcConnect(wcOptions) {\n            const { connectWC } = await import(\"./controller-W2QS5UC4.js\");\n            const [connectedAccount, connectedChain, doDisconnect, doSwitchChain] = await connectWC(wcOptions, emitter, wallet.id, webLocalStorage, sessionHandler);\n            account = connectedAccount;\n            chain = connectedChain;\n            handleDisconnect = doDisconnect;\n            handleSwitchChain = doSwitchChain;\n            trackConnect({\n              client: wcOptions.client,\n              walletType: id,\n              walletAddress: account.address,\n              chainId: chain.id\n            });\n            return account;\n          }\n          if (id === \"walletConnect\") {\n            const { client, chain: _chain, ...walletConnectOptions } = options;\n            return wcConnect({\n              client,\n              chain: _chain,\n              walletConnect: {\n                ...walletConnectOptions\n              }\n            });\n          }\n          const forceWalletConnectOption = options && \"walletConnect\" in options;\n          const { injectedProvider } = await import(\"./mipdStore-HEJSLGN7.js\");\n          if (injectedProvider(id) && !forceWalletConnectOption) {\n            const { connectEip1193Wallet } = await import(\"./injected-LISAWEIO.js\");\n            const [connectedAccount, connectedChain, doDisconnect, doSwitchChain] = await connectEip1193Wallet({\n              id,\n              provider: getInjectedProvider(id),\n              client: options.client,\n              chain: options.chain,\n              emitter\n            });\n            account = connectedAccount;\n            chain = connectedChain;\n            handleDisconnect = doDisconnect;\n            handleSwitchChain = doSwitchChain;\n            trackConnect({\n              client: options.client,\n              walletType: id,\n              walletAddress: account.address,\n              chainId: chain.id\n            });\n            return account;\n          }\n          if (options && \"client\" in options) {\n            return wcConnect(options);\n          }\n          throw new Error(\"Failed to connect\");\n        },\n        // these get overridden in connect and autoConnect\n        disconnect: async () => {\n          reset();\n          await handleDisconnect();\n        },\n        switchChain: (c) => handleSwitchChain(c)\n      };\n      return wallet;\n    }\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/web/utils/sortWallets.js\nfunction sortWallets(wallets, recommendedWallets) {\n  const providers = getInstalledWalletProviders();\n  return wallets.sort((a, b) => {\n    const aInstalled = providers.find((p) => p.info.rdns === a.id);\n    const bInstalled = providers.find((p) => p.info.rdns === b.id);\n    if (aInstalled && !bInstalled) {\n      return -1;\n    }\n    if (!aInstalled && bInstalled) {\n      return 1;\n    }\n    return 0;\n  }).sort((a, b) => {\n    const aIsRecommended = recommendedWallets == null ? void 0 : recommendedWallets.find((w) => w.id === a.id);\n    const bIsRecommended = recommendedWallets == null ? void 0 : recommendedWallets.find((w) => w.id === b.id);\n    if (aIsRecommended && !bIsRecommended) {\n      return -1;\n    }\n    if (!aIsRecommended && bIsRecommended) {\n      return 1;\n    }\n    return 0;\n  }).sort((a, b) => {\n    const aIsInApp = a.id === \"inApp\" || a.id === \"embedded\";\n    const bIsInApp = b.id === \"inApp\" || b.id === \"embedded\";\n    if (aIsInApp && !bIsInApp) {\n      return -1;\n    }\n    if (!aIsInApp && bIsInApp) {\n      return 1;\n    }\n    return 0;\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/hooks/useDebouncedValue.js\nvar import_react = __toESM(require_react(), 1);\nfunction useDebouncedValue(value, delay) {\n  const [debouncedValue, setDebouncedValue] = (0, import_react.useState)(value);\n  (0, import_react.useEffect)(() => {\n    let ignore = false;\n    const id = setTimeout(() => {\n      if (ignore) {\n        return;\n      }\n      setDebouncedValue(value);\n    }, delay);\n    return () => {\n      ignore = true;\n      clearTimeout(id);\n    };\n  }, [value, delay]);\n  return debouncedValue;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/hooks/useShowMore.js\nvar import_react2 = __toESM(require_react(), 1);\nfunction useShowMore(initialItemsToShow, itemsToAdd) {\n  const [itemsToShow, setItemsToShow] = (0, import_react2.useState)(initialItemsToShow);\n  const lastItemRef = (0, import_react2.useCallback)((node) => {\n    if (!node) {\n      return;\n    }\n    const observer = new IntersectionObserver((entries) => {\n      var _a;\n      if ((_a = entries[0]) == null ? void 0 : _a.isIntersecting) {\n        setItemsToShow((prev) => prev + itemsToAdd);\n      }\n    }, { threshold: 1 });\n    observer.observe(node);\n  }, [itemsToAdd]);\n  return { itemsToShow, lastItemRef };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/AllWalletsUI.js\nfunction AllWalletsUI(props) {\n  const { itemsToShow, lastItemRef } = useShowMore(10, 10);\n  const setSelectionData = useSetSelectionData();\n  const walletList = (0, import_react3.useMemo)(() => {\n    return wallet_infos_default.filter((wallet) => {\n      return props.specifiedWallets.findIndex((x) => x.id === wallet.id) === -1;\n    });\n  }, [props.specifiedWallets]);\n  const fuseInstance = (0, import_react3.useMemo)(() => {\n    return new Fuse(walletList, {\n      threshold: 0.4,\n      keys: [\n        {\n          name: \"name\",\n          weight: 1\n        }\n      ]\n    });\n  }, [walletList]);\n  const listContainer = (0, import_react3.useRef)(null);\n  const [searchTerm, setSearchTerm] = (0, import_react3.useState)(\"\");\n  const deferredSearchTerm = useDebouncedValue(searchTerm, 300);\n  const searchResults = deferredSearchTerm ? fuseInstance.search(deferredSearchTerm).map((result) => result.item) : walletList;\n  const walletInfosToShow = (0, import_react3.useMemo)(() => {\n    return sortWallets(searchResults.slice(0, itemsToShow));\n  }, [searchResults, itemsToShow]);\n  return (0, import_jsx_runtime.jsxs)(Container, { fullHeight: true, flex: \"column\", animate: \"fadein\", children: [(0, import_jsx_runtime.jsx)(Container, { p: \"lg\", children: (0, import_jsx_runtime.jsx)(ModalHeader, { title: \"Select Wallet\", onBack: props.onBack }) }), (0, import_jsx_runtime.jsx)(Spacer, { y: \"xs\" }), (0, import_jsx_runtime.jsx)(Container, { px: \"lg\", children: (0, import_jsx_runtime.jsxs)(\"div\", { style: {\n    display: \"flex\",\n    alignItems: \"center\",\n    position: \"relative\"\n  }, children: [(0, import_jsx_runtime.jsx)(StyledMagnifyingGlassIcon, { width: iconSize.md, height: iconSize.md }), (0, import_jsx_runtime.jsx)(Input, { style: {\n    padding: `${spacing.sm} ${spacing.sm} ${spacing.sm} ${spacing.xxl}`\n  }, tabIndex: -1, variant: \"outline\", placeholder: \"Search Wallet\", value: searchTerm, onChange: (e) => {\n    var _a, _b;\n    (_b = (_a = listContainer.current) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.scroll({\n      top: 0\n    });\n    setSearchTerm(e.target.value);\n  } }), deferredSearchTerm !== searchTerm && (0, import_jsx_runtime.jsx)(\"div\", { style: {\n    position: \"absolute\",\n    right: spacing.md\n  }, children: (0, import_jsx_runtime.jsx)(Spinner, { size: \"md\", color: \"accentText\" }) })] }) }), walletInfosToShow.length > 0 && (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [(0, import_jsx_runtime.jsx)(Spacer, { y: \"md\" }), (0, import_jsx_runtime.jsxs)(Container, { animate: \"fadein\", expand: true, scrollY: true, children: [(0, import_jsx_runtime.jsx)(\"div\", { ref: listContainer, style: {\n    maxHeight: props.size === \"compact\" ? \"400px\" : void 0,\n    paddingInline: spacing.md\n  }, children: walletInfosToShow.map((walletInfo, i) => {\n    const isLast = i === walletInfosToShow.length - 1;\n    return (0, import_jsx_runtime.jsx)(\"li\", { ref: isLast ? lastItemRef : void 0, style: {\n      listStyle: \"none\"\n    }, children: (0, import_jsx_runtime.jsx)(WalletEntryButton, { walletId: walletInfo.id, selectWallet: () => {\n      const wallet = createWallet(walletInfo.id);\n      props.onSelect(wallet);\n      if (!props.disableSelectionDataReset) {\n        setSelectionData({});\n      }\n    }, client: props.client, recommendedWallets: props.recommendedWallets, connectLocale: props.connectLocale, isActive: false, badge: void 0 }) }, walletInfo.id);\n  }) }), (0, import_jsx_runtime.jsx)(Spacer, { y: \"xl\" })] })] }), walletInfosToShow.length === 0 && (0, import_jsx_runtime.jsxs)(Container, { flex: \"column\", gap: \"md\", center: \"both\", color: \"secondaryText\", animate: \"fadein\", expand: true, style: {\n    minHeight: \"250px\"\n  }, children: [(0, import_jsx_runtime.jsx)(CrossCircledIcon, { width: iconSize.xl, height: iconSize.xl }), (0, import_jsx_runtime.jsx)(Text, { children: \" No Results \" })] })] });\n}\nvar StyledMagnifyingGlassIcon = newStyled(MagnifyingGlassIcon)((_) => {\n  const theme = useCustomTheme();\n  return {\n    color: theme.colors.secondaryText,\n    position: \"absolute\",\n    left: spacing.sm\n  };\n});\nvar AllWalletsUI_default = AllWalletsUI;\n\nexport {\n  isAndroid,\n  isIOS,\n  isMobile,\n  openWindow,\n  createWallet,\n  Fuse,\n  useDebouncedValue,\n  useShowMore,\n  sortWallets,\n  AllWalletsUI_default\n};\n//# sourceMappingURL=chunk-HO57TQQM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-I2GEMA2B.js",
    "content": "import {\n  track\n} from \"./chunk-N24CESYN.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\n\n// node_modules/thirdweb/dist/esm/analytics/track/transaction.js\nasync function trackTransaction(args) {\n  return trackTransactionEvent({\n    ...args,\n    action: \"transaction:sent\"\n  });\n}\nfunction trackTransactionEvent(args) {\n  return track({\n    client: args.client,\n    ecosystem: args.ecosystem,\n    data: {\n      action: args.action,\n      clientId: args.client.clientId,\n      chainId: args.chainId,\n      transactionHash: args.transactionHash,\n      walletAddress: args.walletAddress,\n      walletType: args.walletType,\n      contractAddress: args.contractAddress,\n      functionName: args.functionName,\n      gasPrice: args.gasPrice,\n      errorCode: stringify(args.error)\n    }\n  });\n}\n\nexport {\n  trackTransaction\n};\n//# sourceMappingURL=chunk-I2GEMA2B.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-I5DK3TWY.js",
    "content": "import {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  getRpcUrlForChain\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\n\n// node_modules/thirdweb/dist/esm/rpc/fetch-rpc.js\nasync function fetchRpc(rpcUrl, client, options) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n  const response = await getClientFetch(client)(rpcUrl, {\n    headers: {\n      ...(_c = (_b = (_a = client.config) == null ? void 0 : _a.rpc) == null ? void 0 : _b.fetch) == null ? void 0 : _c.headers,\n      \"Content-Type\": \"application/json\"\n    },\n    body: stringify(options.requests),\n    method: \"POST\",\n    requestTimeoutMs: options.requestTimeoutMs ?? ((_f = (_e = (_d = client.config) == null ? void 0 : _d.rpc) == null ? void 0 : _e.fetch) == null ? void 0 : _f.requestTimeoutMs),\n    keepalive: (_i = (_h = (_g = client.config) == null ? void 0 : _g.rpc) == null ? void 0 : _h.fetch) == null ? void 0 : _i.keepalive\n  });\n  if (!response.ok) {\n    (_j = response.body) == null ? void 0 : _j.cancel();\n    throw new Error(`RPC request failed with status ${response.status} - ${response.statusText}`);\n  }\n  if ((_k = response.headers.get(\"Content-Type\")) == null ? void 0 : _k.startsWith(\"application/json\")) {\n    return await response.json();\n  }\n  const text = await response.text();\n  try {\n    return JSON.parse(text);\n  } catch (err) {\n    console.error(\"Error parsing response\", err, text);\n    throw err;\n  }\n}\nasync function fetchSingleRpc(rpcUrl, client, options) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n  const response = await getClientFetch(client)(rpcUrl, {\n    headers: {\n      ...((_c = (_b = (_a = client.config) == null ? void 0 : _a.rpc) == null ? void 0 : _b.fetch) == null ? void 0 : _c.headers) || {},\n      \"Content-Type\": \"application/json\"\n    },\n    body: stringify(options.request),\n    method: \"POST\",\n    requestTimeoutMs: options.requestTimeoutMs ?? ((_f = (_e = (_d = client.config) == null ? void 0 : _d.rpc) == null ? void 0 : _e.fetch) == null ? void 0 : _f.requestTimeoutMs),\n    keepalive: (_i = (_h = (_g = client.config) == null ? void 0 : _g.rpc) == null ? void 0 : _h.fetch) == null ? void 0 : _i.keepalive\n  });\n  if (!response.ok) {\n    (_j = response.body) == null ? void 0 : _j.cancel();\n    throw new Error(`RPC request failed with status ${response.status}`);\n  }\n  if ((_k = response.headers.get(\"Content-Type\")) == null ? void 0 : _k.startsWith(\"application/json\")) {\n    return await response.json();\n  }\n  const text = await response.text();\n  try {\n    return JSON.parse(text);\n  } catch (err) {\n    console.error(\"Error parsing response\", err, text);\n    throw err;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/rpc/rpc.js\nvar RPC_CLIENT_MAP = /* @__PURE__ */ new WeakMap();\nfunction getRpcClientMap(client) {\n  if (RPC_CLIENT_MAP.has(client)) {\n    return RPC_CLIENT_MAP.get(client);\n  }\n  const rpcClientMap = /* @__PURE__ */ new Map();\n  RPC_CLIENT_MAP.set(client, rpcClientMap);\n  return rpcClientMap;\n}\nfunction rpcRequestKey(request) {\n  return `${request.method}:${stringify(request.params)}`;\n}\nvar DEFAULT_MAX_BATCH_SIZE = 100;\nvar DEFAULT_BATCH_TIMEOUT_MS = 0;\nfunction getRpcClient(options) {\n  const rpcClientMap = getRpcClientMap(options.client);\n  const rpcUrl = options.chain.rpc;\n  if (rpcClientMap.has(rpcUrl)) {\n    return rpcClientMap.get(rpcUrl);\n  }\n  const rpcClient = (() => {\n    var _a, _b, _c, _d, _e, _f;\n    const rpcUrl2 = getRpcUrlForChain({\n      client: options.client,\n      chain: options.chain\n    });\n    const batchSize = (\n      // look at the direct options passed\n      ((_a = options.config) == null ? void 0 : _a.maxBatchSize) ?? // look at the client options\n      ((_c = (_b = options.client.config) == null ? void 0 : _b.rpc) == null ? void 0 : _c.maxBatchSize) ?? // use defaults\n      DEFAULT_MAX_BATCH_SIZE\n    );\n    const batchTimeoutMs = (\n      // look at the direct options passed\n      ((_d = options.config) == null ? void 0 : _d.batchTimeoutMs) ?? // look at the client options\n      ((_f = (_e = options.client.config) == null ? void 0 : _e.rpc) == null ? void 0 : _f.batchTimeoutMs) ?? DEFAULT_BATCH_TIMEOUT_MS\n    );\n    const inflightRequests = /* @__PURE__ */ new Map();\n    let pendingBatch = [];\n    let pendingBatchTimeout = null;\n    function sendPendingBatch() {\n      var _a2;\n      if (pendingBatchTimeout) {\n        clearTimeout(pendingBatchTimeout);\n        pendingBatchTimeout = null;\n      }\n      const requests = new Array(pendingBatch.length);\n      const activeBatch = pendingBatch.slice().map((inflight, index) => {\n        inflight.request.id = index;\n        inflight.request.jsonrpc = \"2.0\";\n        requests[index] = inflight.request;\n        return inflight;\n      });\n      pendingBatch = [];\n      fetchRpc(rpcUrl2, options.client, {\n        requests,\n        requestTimeoutMs: (_a2 = options.config) == null ? void 0 : _a2.requestTimeoutMs\n      }).then((responses) => {\n        activeBatch.forEach((inflight, index) => {\n          const response = responses[index];\n          if (!response) {\n            inflight.reject(new Error(\"No response\"));\n            return;\n          }\n          if (response instanceof Error) {\n            inflight.reject(response);\n            return;\n          }\n          if (typeof response === \"string\") {\n            inflight.reject(new Error(response));\n            return;\n          }\n          if (\"error\" in response) {\n            inflight.reject(response.error);\n          } else if (response.method === \"eth_subscription\") {\n            throw new Error(\"Subscriptions not supported yet\");\n          } else {\n            inflight.resolve(response.result);\n          }\n          inflightRequests.delete(inflight.requestKey);\n        });\n      }).catch((err) => {\n        for (const inflight of activeBatch) {\n          inflight.reject(err);\n          inflightRequests.delete(inflight.requestKey);\n        }\n      });\n    }\n    if (batchSize === 1) {\n      return async (request) => {\n        var _a2;\n        request.id = 1;\n        request.jsonrpc = \"2.0\";\n        const rpcResponse = await fetchSingleRpc(rpcUrl2, options.client, {\n          request,\n          requestTimeoutMs: (_a2 = options.config) == null ? void 0 : _a2.requestTimeoutMs\n        });\n        if (!rpcResponse) {\n          throw new Error(\"No response\");\n        }\n        if (\"error\" in rpcResponse) {\n          throw rpcResponse.error;\n        }\n        return rpcResponse.result;\n      };\n    }\n    return async (request) => {\n      const requestKey = rpcRequestKey(request);\n      if (inflightRequests.has(requestKey)) {\n        return inflightRequests.get(requestKey);\n      }\n      let resolve;\n      let reject;\n      const promise = new Promise((resolve_, reject_) => {\n        resolve = resolve_;\n        reject = reject_;\n      });\n      inflightRequests.set(requestKey, promise);\n      pendingBatch.push({ request, resolve, reject, requestKey });\n      if (batchSize > 1) {\n        if (!pendingBatchTimeout) {\n          pendingBatchTimeout = setTimeout(sendPendingBatch, batchTimeoutMs);\n        }\n        if (pendingBatch.length >= batchSize) {\n          sendPendingBatch();\n        }\n      } else {\n        sendPendingBatch();\n      }\n      return promise;\n    };\n  })();\n  rpcClientMap.set(rpcUrl, rpcClient);\n  return rpcClient;\n}\n\nexport {\n  getRpcClient\n};\n//# sourceMappingURL=chunk-I5DK3TWY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-IMSXM5CF.js",
    "content": "import {\n  hexToBigInt\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_estimateGas.js\nasync function eth_estimateGas(request, transactionRequest) {\n  const estimateResult = await request({\n    method: \"eth_estimateGas\",\n    params: [transactionRequest]\n  });\n  return hexToBigInt(estimateResult);\n}\n\nexport {\n  eth_estimateGas\n};\n//# sourceMappingURL=chunk-IMSXM5CF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-J7FYPWA5.js",
    "content": "import {\n  authOptions\n} from \"./chunk-EIBOABXT.js\";\nimport {\n  getThirdwebBaseUrl\n} from \"./chunk-QHKZ43P6.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/authentication/getLoginPath.js\nvar getLoginOptionRoute = (option) => {\n  if (!authOptions.includes(option)) {\n    throw new Error(`Unknown auth option ${option}`);\n  }\n  switch (option) {\n    case \"wallet\":\n      return \"siwe\";\n    default:\n      return option;\n  }\n};\nvar getLoginUrl = ({ authOption, client, ecosystem, mode = \"popup\", redirectUrl }) => {\n  if (mode === \"popup\" && redirectUrl) {\n    throw new Error(\"Redirect URL is not supported for popup mode\");\n  }\n  if (mode === \"window\" && !redirectUrl) {\n    throw new Error(\"Redirect URL is required for window mode\");\n  }\n  const route = getLoginOptionRoute(authOption);\n  let baseUrl = `${getThirdwebBaseUrl(\"inAppWallet\")}/api/2024-05-05/login/${route}?clientId=${client.clientId}`;\n  if (ecosystem == null ? void 0 : ecosystem.partnerId) {\n    baseUrl = `${baseUrl}&ecosystemId=${ecosystem.id}&ecosystemPartnerId=${ecosystem.partnerId}`;\n  } else if (ecosystem) {\n    baseUrl = `${baseUrl}&ecosystemId=${ecosystem.id}`;\n  }\n  if (mode !== \"popup\") {\n    const formattedRedirectUrl = new URL(redirectUrl || window.location.href);\n    formattedRedirectUrl.searchParams.set(\"walletId\", (ecosystem == null ? void 0 : ecosystem.id) || \"inApp\");\n    formattedRedirectUrl.searchParams.set(\"authProvider\", authOption);\n    baseUrl = `${baseUrl}&redirectUrl=${encodeURIComponent(formattedRedirectUrl.toString())}`;\n  }\n  return baseUrl;\n};\nvar getLoginCallbackUrl = ({ authOption, client, ecosystem }) => {\n  const route = getLoginOptionRoute(authOption);\n  let baseUrl = `${getThirdwebBaseUrl(\"inAppWallet\")}/api/2024-05-05/login/${route}/callback?clientId=${client.clientId}`;\n  if (ecosystem == null ? void 0 : ecosystem.partnerId) {\n    baseUrl = `${baseUrl}&ecosystemId=${ecosystem.id}&ecosystemPartnerId=${ecosystem.partnerId}`;\n  } else if (ecosystem) {\n    baseUrl = `${baseUrl}&ecosystemId=${ecosystem.id}`;\n  }\n  return baseUrl;\n};\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/auth/constants.js\nvar DEFAULT_POP_UP_SIZE = \"width=350, height=500\";\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/auth/oauth.js\nvar closeWindow = ({ isWindowOpenedByFn, win, closeOpenedWindow }) => {\n  if (isWindowOpenedByFn) {\n    win == null ? void 0 : win.close();\n  } else {\n    if (win && closeOpenedWindow) {\n      closeOpenedWindow(win);\n    } else if (win) {\n      win.close();\n    }\n  }\n};\nvar loginWithOauthRedirect = (options) => {\n  const loginUrl = getLoginUrl({\n    ...options,\n    mode: options.mode || \"redirect\"\n  });\n  if (options.mode === \"redirect\") {\n    window.location.href = loginUrl;\n  } else {\n    window.open(loginUrl);\n  }\n};\nvar loginWithOauth = async (options) => {\n  let win = options.openedWindow;\n  let isWindowOpenedByFn = false;\n  if (!win) {\n    win = window.open(getLoginUrl({ ...options, mode: \"popup\" }), `Login to ${options.authOption}`, DEFAULT_POP_UP_SIZE);\n    isWindowOpenedByFn = true;\n  }\n  if (!win) {\n    throw new Error(\"Something went wrong opening pop-up\");\n  }\n  const result = await new Promise((resolve, reject) => {\n    const pollTimer = window.setInterval(async () => {\n      if (win.closed) {\n        clearInterval(pollTimer);\n        window.removeEventListener(\"message\", messageListener);\n        reject(new Error(\"User closed login window\"));\n      }\n    }, 1e3);\n    const messageListener = async (event) => {\n      if (event.origin !== getThirdwebBaseUrl(\"inAppWallet\")) {\n        return;\n      }\n      if (typeof event.data !== \"object\") {\n        reject(new Error(\"Invalid event data\"));\n        return;\n      }\n      switch (event.data.eventType) {\n        case \"oauthSuccessResult\": {\n          window.removeEventListener(\"message\", messageListener);\n          clearInterval(pollTimer);\n          closeWindow({\n            isWindowOpenedByFn,\n            win,\n            closeOpenedWindow: options.closeOpenedWindow\n          });\n          if (event.data.authResult) {\n            resolve(event.data.authResult);\n          }\n          break;\n        }\n        case \"oauthFailureResult\": {\n          window.removeEventListener(\"message\", messageListener);\n          clearInterval(pollTimer);\n          closeWindow({\n            isWindowOpenedByFn,\n            win,\n            closeOpenedWindow: options.closeOpenedWindow\n          });\n          reject(new Error(event.data.errorString));\n          break;\n        }\n        default: {\n        }\n      }\n    };\n    window.addEventListener(\"message\", messageListener);\n  });\n  return result;\n};\n\nexport {\n  getLoginUrl,\n  getLoginCallbackUrl,\n  loginWithOauthRedirect,\n  loginWithOauth\n};\n//# sourceMappingURL=chunk-J7FYPWA5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-JBQP4JIV.js",
    "content": "import {\n  sleep\n} from \"./chunk-4OCU6WGG.js\";\nimport {\n  formatTransactionReceipt\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport {\n  hexToBigInt\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_blockNumber.js\nasync function eth_blockNumber(request) {\n  const blockNumberHex = await request({\n    method: \"eth_blockNumber\"\n  });\n  return hexToBigInt(blockNumberHex);\n}\n\n// node_modules/thirdweb/dist/esm/rpc/watchBlockNumber.js\nvar MAX_POLL_DELAY = 5e3;\nvar DEFAULT_POLL_DELAY = 1e3;\nvar MIN_POLL_DELAY = 500;\nvar DEFAULT_OVERPOLL_RATIO = 2;\nvar SLIDING_WINDOW_SIZE = 10;\nfunction getAverageBlockTime(blockTimes) {\n  while (blockTimes.length < SLIDING_WINDOW_SIZE) {\n    blockTimes.unshift(DEFAULT_POLL_DELAY);\n  }\n  const sum = blockTimes.reduce((acc, blockTime) => acc + blockTime, 0);\n  return sum / blockTimes.length;\n}\nfunction createBlockNumberPoller(client, chain, overPollRatio, onError) {\n  let subscribers = [];\n  let blockTimesWindow = [];\n  let isActive = false;\n  let lastBlockNumber;\n  let lastBlockAt;\n  const rpcRequest = getRpcClient({ client, chain });\n  async function poll() {\n    if (!isActive) {\n      return;\n    }\n    try {\n      const blockNumber = await eth_blockNumber(rpcRequest);\n      if (!lastBlockNumber || blockNumber > lastBlockNumber) {\n        let newBlockNumbers = [];\n        if (lastBlockNumber) {\n          for (let i = lastBlockNumber + 1n; i <= blockNumber; i++) {\n            newBlockNumbers.push(BigInt(i));\n          }\n        } else {\n          newBlockNumbers = [blockNumber];\n        }\n        lastBlockNumber = blockNumber;\n        const currentTime = (/* @__PURE__ */ new Date()).getTime();\n        if (lastBlockAt) {\n          const blockTime = (currentTime - lastBlockAt) / newBlockNumbers.length;\n          blockTimesWindow.push(blockTime);\n          blockTimesWindow = blockTimesWindow.slice(-SLIDING_WINDOW_SIZE);\n        }\n        lastBlockAt = currentTime;\n        for (const b of newBlockNumbers) {\n          for (const subscriberCallback of subscribers) {\n            subscriberCallback(b);\n          }\n        }\n      }\n    } catch (err) {\n      if (onError) {\n        onError(err);\n      } else {\n        console.error(`[watchBlockNumber]: Failed to poll for latest block number: ${err}`);\n      }\n    }\n    const currentApproximateBlockTime = getAverageBlockTime(blockTimesWindow);\n    const pollDelay = Math.max(MIN_POLL_DELAY, Math.min(MAX_POLL_DELAY, Math.max(MIN_POLL_DELAY, currentApproximateBlockTime)));\n    await sleep(pollDelay / (overPollRatio ?? DEFAULT_OVERPOLL_RATIO));\n    poll();\n  }\n  return function subscribe(callBack, initialBlockNumber) {\n    subscribers.push(callBack);\n    if (!isActive) {\n      lastBlockNumber = initialBlockNumber;\n      isActive = true;\n      poll();\n    }\n    return function unSubscribe() {\n      subscribers = subscribers.filter((fn) => fn !== callBack);\n      if (subscribers.length === 0) {\n        lastBlockNumber = void 0;\n        lastBlockAt = void 0;\n        isActive = false;\n      }\n    };\n  };\n}\nvar existingPollers = /* @__PURE__ */ new Map();\nfunction watchBlockNumber(opts) {\n  const { client, chain, onNewBlockNumber, overPollRatio, latestBlockNumber, onError } = opts;\n  const chainId = chain.id;\n  let poller = existingPollers.get(chainId);\n  if (!poller) {\n    poller = createBlockNumberPoller(client, chain, overPollRatio, onError);\n    existingPollers.set(chainId, poller);\n  }\n  return poller(onNewBlockNumber, latestBlockNumber);\n}\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_getTransactionReceipt.js\nasync function eth_getTransactionReceipt(request, params) {\n  const receipt = await request({\n    method: \"eth_getTransactionReceipt\",\n    params: [params.hash]\n  });\n  if (!receipt) {\n    throw new Error(\"Transaction receipt not found.\");\n  }\n  return formatTransactionReceipt(receipt);\n}\n\n// node_modules/thirdweb/dist/esm/transaction/actions/wait-for-tx-receipt.js\nvar DEFAULT_MAX_BLOCKS_WAIT_TIME = 100;\nvar map = /* @__PURE__ */ new Map();\nfunction waitForReceipt(options) {\n  const { transactionHash, chain, client } = options;\n  const chainId = chain.id;\n  const key = `${chainId}:tx_${transactionHash}`;\n  const maxBlocksWaitTime = options.maxBlocksWaitTime ?? DEFAULT_MAX_BLOCKS_WAIT_TIME;\n  if (map.has(key)) {\n    return map.get(key);\n  }\n  const promise = new Promise((resolve, reject) => {\n    if (!transactionHash) {\n      reject(new Error(\"Transaction has no transactionHash to wait for, did you execute it?\"));\n    }\n    const request = getRpcClient({ client, chain });\n    let blocksWaited = -1;\n    const unwatch = watchBlockNumber({\n      client,\n      chain,\n      onNewBlockNumber: async () => {\n        blocksWaited++;\n        if (blocksWaited >= maxBlocksWaitTime) {\n          unwatch();\n          reject(new Error(`Transaction not found after ${maxBlocksWaitTime} blocks`));\n          return;\n        }\n        try {\n          const receipt = await eth_getTransactionReceipt(request, {\n            hash: transactionHash\n          });\n          unwatch();\n          resolve(receipt);\n        } catch {\n        }\n      }\n    });\n  }).finally(() => {\n    map.delete(key);\n  });\n  map.set(key, promise);\n  return promise;\n}\n\nexport {\n  eth_blockNumber,\n  watchBlockNumber,\n  eth_getTransactionReceipt,\n  waitForReceipt\n};\n//# sourceMappingURL=chunk-JBQP4JIV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-JTR2PIFP.js",
    "content": "import {\n  toSerializableTransaction\n} from \"./chunk-JZC47WAY.js\";\nimport {\n  addTransactionToStore\n} from \"./chunk-3DBHE3NE.js\";\n\n// node_modules/thirdweb/dist/esm/utils/config.js\nvar transactionDecorator = null;\nfunction getTransactionDecorator() {\n  return transactionDecorator;\n}\n\n// node_modules/thirdweb/dist/esm/transaction/actions/send-transaction.js\nasync function sendTransaction(options) {\n  let { account, transaction, gasless } = options;\n  const decorator = getTransactionDecorator();\n  if (decorator) {\n    const { account: decoratedAccount, transaction: decoratedTransaction } = await decorator({ account, transaction });\n    account = decoratedAccount;\n    transaction = decoratedTransaction;\n  }\n  if (account.onTransactionRequested) {\n    await account.onTransactionRequested(transaction);\n  }\n  if (transaction.eip712) {\n    const { sendEip712Transaction } = await import(\"./send-eip712-transaction-GJNL63UQ.js\");\n    return sendEip712Transaction({\n      account,\n      transaction\n    });\n  }\n  const serializableTransaction = await toSerializableTransaction({\n    transaction,\n    from: account.address\n  });\n  if (gasless) {\n    const { sendGaslessTransaction } = await import(\"./send-gasless-transaction-VPJQYCQ5.js\");\n    return sendGaslessTransaction({\n      account,\n      transaction,\n      serializableTransaction,\n      gasless\n    });\n  }\n  const result = await account.sendTransaction(serializableTransaction);\n  addTransactionToStore({\n    address: account.address,\n    transactionHash: result.transactionHash,\n    chainId: transaction.chain.id\n  });\n  return { ...result, chain: transaction.chain, client: transaction.client };\n}\n\nexport {\n  sendTransaction\n};\n//# sourceMappingURL=chunk-JTR2PIFP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-JZC47WAY.js",
    "content": "import {\n  eth_getBlockByNumber\n} from \"./chunk-CXAZLQ2Z.js\";\nimport {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport {\n  isZkSyncChain\n} from \"./chunk-7ZCK2FX5.js\";\nimport {\n  encode\n} from \"./chunk-7QDK5KLB.js\";\nimport {\n  toUnits\n} from \"./chunk-UY2SRO54.js\";\nimport {\n  download\n} from \"./chunk-5CO5G7XZ.js\";\nimport {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  decodeErrorResult,\n  formatAbi,\n  formatTransactionRequest,\n  parseAbi\n} from \"./chunk-GINVHONX.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  IS_DEV,\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\nimport {\n  hexToBigInt,\n  isHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_gasPrice.js\nasync function eth_gasPrice(request) {\n  const result = await request({\n    method: \"eth_gasPrice\"\n  });\n  return hexToBigInt(result);\n}\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_maxPriorityFeePerGas.js\nasync function eth_maxPriorityFeePerGas(request) {\n  const result = await request({\n    method: \"eth_maxPriorityFeePerGas\"\n  });\n  return hexToBigInt(result);\n}\n\n// node_modules/thirdweb/dist/esm/gas/op-gas-fee-reducer.js\nfunction roundUpGas(value) {\n  if (value === 0n || (value & value - 1n) === 0n) {\n    return value;\n  }\n  let highestBit = 1n;\n  while (value > 0n) {\n    value >>= 1n;\n    highestBit <<= 1n;\n  }\n  return highestBit;\n}\n\n// node_modules/thirdweb/dist/esm/contract/actions/resolve-abi.js\nvar ABI_RESOLUTION_CACHE = /* @__PURE__ */ new WeakMap();\nfunction resolveContractAbi(contract, contractApiBaseUrl = \"https://contract.thirdweb.com/abi\") {\n  if (ABI_RESOLUTION_CACHE.has(contract)) {\n    return ABI_RESOLUTION_CACHE.get(contract);\n  }\n  const prom = (async () => {\n    if (contract.abi) {\n      return contract.abi;\n    }\n    try {\n      return await resolveAbiFromContractApi(contract, contractApiBaseUrl);\n    } catch {\n      return await resolveCompositeAbi(contract);\n    }\n  })();\n  ABI_RESOLUTION_CACHE.set(contract, prom);\n  return prom;\n}\nasync function resolveAbiFromContractApi(contract, contractApiBaseUrl = \"https://contract.thirdweb.com/abi\") {\n  const response = await getClientFetch(contract.client)(`${contractApiBaseUrl}/${contract.chain.id}/${contract.address}`);\n  const json = await response.json();\n  if (!json || json.error) {\n    throw new Error(`Failed to resolve ABI from contract API. ${json.error || \"\"}`);\n  }\n  return json;\n}\nasync function resolveAbiFromBytecode(contract) {\n  const [{ resolveImplementation }, { extractIPFSUri }] = await Promise.all([\n    import(\"./resolveImplementation-EUNLHKQW.js\"),\n    import(\"./extractIPFS-GFMPIVLN.js\")\n  ]);\n  const { bytecode } = await resolveImplementation(contract);\n  if (bytecode === \"0x\") {\n    const { id, name } = contract.chain;\n    throw new Error(`Failed to load contract bytecode. Make sure the contract [${contract.address}] exists on the chain [${name || \"Unknown Chain\"} (chain id: ${id})]`);\n  }\n  const ipfsUri = extractIPFSUri(bytecode);\n  if (!ipfsUri) {\n    return [];\n  }\n  try {\n    const res = await download({ uri: ipfsUri, client: contract.client });\n    const json = await res.json();\n    return json.output.abi;\n  } catch {\n    return [];\n  }\n}\nvar PLUGINS_ABI = {\n  inputs: [],\n  name: \"getAllPlugins\",\n  outputs: [\n    {\n      components: [\n        {\n          internalType: \"bytes4\",\n          name: \"functionSelector\",\n          type: \"bytes4\"\n        },\n        {\n          internalType: \"string\",\n          name: \"functionSignature\",\n          type: \"string\"\n        },\n        {\n          internalType: \"address\",\n          name: \"pluginAddress\",\n          type: \"address\"\n        }\n      ],\n      internalType: \"struct IPluginMap.Plugin[]\",\n      name: \"registered\",\n      type: \"tuple[]\"\n    }\n  ],\n  stateMutability: \"view\",\n  type: \"function\"\n};\nvar BASE_ROUTER_ABI = {\n  inputs: [],\n  name: \"getAllExtensions\",\n  outputs: [\n    {\n      components: [\n        {\n          components: [\n            {\n              internalType: \"string\",\n              name: \"name\",\n              type: \"string\"\n            },\n            {\n              internalType: \"string\",\n              name: \"metadataURI\",\n              type: \"string\"\n            },\n            {\n              internalType: \"address\",\n              name: \"implementation\",\n              type: \"address\"\n            }\n          ],\n          internalType: \"struct IExtension.ExtensionMetadata\",\n          name: \"metadata\",\n          type: \"tuple\"\n        },\n        {\n          components: [\n            {\n              internalType: \"bytes4\",\n              name: \"functionSelector\",\n              type: \"bytes4\"\n            },\n            {\n              internalType: \"string\",\n              name: \"functionSignature\",\n              type: \"string\"\n            }\n          ],\n          internalType: \"struct IExtension.ExtensionFunction[]\",\n          name: \"functions\",\n          type: \"tuple[]\"\n        }\n      ],\n      internalType: \"struct IExtension.Extension[]\",\n      name: \"allExtensions\",\n      type: \"tuple[]\"\n    }\n  ],\n  stateMutability: \"view\",\n  type: \"function\"\n};\nvar DIAMOND_ABI = {\n  inputs: [],\n  name: \"facets\",\n  outputs: [\n    {\n      components: [\n        {\n          internalType: \"address\",\n          name: \"facetAddress\",\n          type: \"address\"\n        },\n        {\n          internalType: \"bytes4[]\",\n          name: \"functionSelectors\",\n          type: \"bytes4[]\"\n        }\n      ],\n      type: \"tuple[]\"\n    }\n  ],\n  stateMutability: \"view\",\n  type: \"function\"\n};\nasync function resolveCompositeAbi(contract, rootAbi, resolveSubAbi) {\n  const [rootAbi_, pluginPatternAddresses, baseRouterAddresses, modularExtensionAddresses, diamondFacetAddresses] = await Promise.all([\n    rootAbi ? rootAbi : resolveAbiFromBytecode(contract),\n    // check these all at the same time\n    resolvePluginPatternAddresses(contract),\n    resolveBaseRouterAddresses(contract),\n    resolveModularModuleAddresses(contract),\n    resolveDiamondFacetAddresses(contract)\n  ]);\n  const mergedPlugins = [\n    .../* @__PURE__ */ new Set([\n      ...pluginPatternAddresses,\n      ...baseRouterAddresses,\n      ...modularExtensionAddresses,\n      ...diamondFacetAddresses\n    ])\n  ];\n  if (!mergedPlugins.length) {\n    return rootAbi_;\n  }\n  const pluginAbis = await getAbisForPlugins({\n    contract,\n    plugins: mergedPlugins,\n    resolveSubAbi\n  });\n  return joinAbis({ rootAbi: rootAbi_, pluginAbis });\n}\nasync function resolvePluginPatternAddresses(contract) {\n  try {\n    const { readContract } = await import(\"./read-contract-EXVZZYXE.js\");\n    const pluginMap = await readContract({\n      contract,\n      method: PLUGINS_ABI\n    });\n    if (!pluginMap.length) {\n      return [];\n    }\n    return [...new Set(pluginMap.map((item) => item.pluginAddress))];\n  } catch {\n  }\n  return [];\n}\nasync function resolveBaseRouterAddresses(contract) {\n  try {\n    const { readContract } = await import(\"./read-contract-EXVZZYXE.js\");\n    const pluginMap = await readContract({\n      contract,\n      method: BASE_ROUTER_ABI\n    });\n    if (!pluginMap.length) {\n      return [];\n    }\n    return [...new Set(pluginMap.map((item) => item.metadata.implementation))];\n  } catch {\n  }\n  return [];\n}\nasync function resolveModularModuleAddresses(contract) {\n  try {\n    const { getInstalledModules } = await import(\"./getInstalledModules-WVGJ43EF.js\");\n    const modules = await getInstalledModules({ contract });\n    if (!modules.length) {\n      return [];\n    }\n    return [...new Set(modules.map((item) => item.implementation))];\n  } catch {\n  }\n  return [];\n}\nasync function resolveDiamondFacetAddresses(contract) {\n  try {\n    const { readContract } = await import(\"./read-contract-EXVZZYXE.js\");\n    const facets = await readContract({ contract, method: DIAMOND_ABI });\n    if (!facets.length) {\n      return [];\n    }\n    return facets.map((item) => item.facetAddress);\n  } catch {\n  }\n  return [];\n}\nasync function getAbisForPlugins(options) {\n  return Promise.all(options.plugins.map((pluginAddress) => {\n    const newContract = {\n      ...options.contract,\n      address: pluginAddress\n    };\n    if (options.resolveSubAbi) {\n      return options.resolveSubAbi(newContract);\n    }\n    return resolveAbiFromBytecode(newContract);\n  }));\n}\nfunction joinAbis(options) {\n  let mergedPlugins = options.pluginAbis.flat().filter((item) => item.type !== \"constructor\");\n  if (options.rootAbi) {\n    mergedPlugins = [...options.rootAbi, ...mergedPlugins].filter((item) => item.type !== \"fallback\" && item.type !== \"receive\").filter(Boolean);\n  }\n  const humanReadableAbi = [...new Set(formatAbi(mergedPlugins))];\n  return parseAbi(humanReadableAbi);\n}\n\n// node_modules/thirdweb/dist/esm/transaction/extract-error.js\nasync function extractError(args) {\n  const { error, contract } = args;\n  if (typeof error === \"object\") {\n    const errorObj = error;\n    if (errorObj.data) {\n      if (errorObj.data !== \"0x\" && isHex(errorObj.data)) {\n        let abi = contract == null ? void 0 : contract.abi;\n        if (contract && !abi) {\n          abi = await resolveContractAbi(contract).catch(() => void 0);\n        }\n        const parsedError = decodeErrorResult({\n          data: errorObj.data,\n          abi\n        });\n        return new TransactionError(`${parsedError.errorName}${parsedError.args ? ` - ${parsedError.args}` : \"\"}`, contract);\n      }\n      return new TransactionError(`Execution Reverted: ${stringify(errorObj)}`, contract);\n    }\n  }\n  return error;\n}\nvar TransactionError = class extends Error {\n  constructor(reason, contract) {\n    var _a, _b;\n    let message = reason;\n    if (IS_DEV && contract) {\n      message = [\n        reason,\n        \"\",\n        `contract: ${contract.address}`,\n        `chainId: ${(_a = contract.chain) == null ? void 0 : _a.id}`\n      ].join(\"\\n\");\n    }\n    super(message);\n    Object.defineProperty(this, \"contractAddress\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"chainId\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.name = \"TransactionError\";\n    this.contractAddress = contract == null ? void 0 : contract.address;\n    this.chainId = (_b = contract == null ? void 0 : contract.chain) == null ? void 0 : _b.id;\n    this.message = message;\n  }\n};\n\n// node_modules/thirdweb/dist/esm/transaction/actions/estimate-gas.js\nvar cache = /* @__PURE__ */ new WeakMap();\nasync function estimateGas(options) {\n  var _a;\n  const from = options.from ?? ((_a = options.account) == null ? void 0 : _a.address) ?? void 0;\n  const txWithFrom = { ...options.transaction, from };\n  if (cache.has(txWithFrom)) {\n    return cache.get(txWithFrom);\n  }\n  const { account } = options;\n  const promise = (async () => {\n    var _a2, _b;\n    const predefinedGas = await resolvePromisedValue(options.transaction.gas);\n    if (predefinedGas !== void 0) {\n      return predefinedGas;\n    }\n    if (account == null ? void 0 : account.estimateGas) {\n      try {\n        let gas = await account.estimateGas(options.transaction);\n        if ((_a2 = options.transaction.chain.experimental) == null ? void 0 : _a2.increaseZeroByteCount) {\n          gas = roundUpGas(gas);\n        }\n        return gas;\n      } catch (error) {\n        throw await extractError({\n          error,\n          contract: options.transaction.__contract\n        });\n      }\n    }\n    const { encode: encode2 } = await import(\"./encode-4DQKNRWC.js\");\n    const [encodedData, toAddress, value] = await Promise.all([\n      encode2(options.transaction),\n      resolvePromisedValue(options.transaction.to),\n      resolvePromisedValue(options.transaction.value)\n    ]);\n    const [{ getRpcClient: getRpcClient2 }, { eth_estimateGas }] = await Promise.all([\n      import(\"./rpc-TW3OP7F4.js\"),\n      import(\"./eth_estimateGas-FTRTBPEZ.js\")\n    ]);\n    const rpcRequest = getRpcClient2(options.transaction);\n    try {\n      let gas = await eth_estimateGas(rpcRequest, formatTransactionRequest({\n        to: toAddress,\n        data: encodedData,\n        from,\n        value\n      }));\n      if ((_b = options.transaction.chain.experimental) == null ? void 0 : _b.increaseZeroByteCount) {\n        gas = roundUpGas(gas);\n      }\n      return gas;\n    } catch (error) {\n      throw await extractError({\n        error,\n        contract: options.transaction.__contract\n      });\n    }\n  })();\n  cache.set(txWithFrom, promise);\n  return promise;\n}\n\n// node_modules/thirdweb/dist/esm/gas/get-gas-price.js\nasync function getGasPrice(options) {\n  const { client, chain, percentMultiplier } = options;\n  const rpcClient = getRpcClient({ client, chain });\n  const gasPrice_ = await eth_gasPrice(rpcClient);\n  const extraTip = percentMultiplier ? gasPrice_ / BigInt(100) * BigInt(percentMultiplier) : 0n;\n  const txGasPrice = gasPrice_ + extraTip;\n  return txGasPrice;\n}\n\n// node_modules/thirdweb/dist/esm/gas/fee-data.js\nvar FORCE_GAS_PRICE_CHAIN_IDS = [\n  78600,\n  // Vanar testnet\n  2040,\n  // Vanar mainnet\n  248,\n  // Oasys Mainnet\n  9372,\n  // Oasys Testnet\n  841,\n  // Taraxa Mainnet\n  842,\n  // Taraxa Testnet\n  2016,\n  // MainnetZ Mainnet\n  9768,\n  // MainnetZ Testnet\n  2442\n  // Polygon zkEVM Cardona Testnet\n];\nasync function getGasOverridesForTransaction(transaction) {\n  var _a;\n  const [maxFeePerGas, maxPriorityFeePerGas, gasPrice] = await Promise.all([\n    resolvePromisedValue(transaction.maxFeePerGas),\n    resolvePromisedValue(transaction.maxPriorityFeePerGas),\n    resolvePromisedValue(transaction.gasPrice)\n  ]);\n  if (maxFeePerGas !== void 0 && maxPriorityFeePerGas !== void 0) {\n    return {\n      maxFeePerGas,\n      maxPriorityFeePerGas\n    };\n  }\n  if (gasPrice) {\n    return { gasPrice };\n  }\n  const defaultGasOverrides = await getDefaultGasOverrides(transaction.client, transaction.chain);\n  if ((_a = transaction.chain.experimental) == null ? void 0 : _a.increaseZeroByteCount) {\n    if (defaultGasOverrides.gasPrice) {\n      return { gasPrice: roundUpGas(defaultGasOverrides.gasPrice) };\n    }\n    return {\n      maxFeePerGas: maxFeePerGas ?? roundUpGas(defaultGasOverrides.maxFeePerGas ?? 0n),\n      maxPriorityFeePerGas: maxPriorityFeePerGas ?? roundUpGas(defaultGasOverrides.maxPriorityFeePerGas ?? 0n)\n    };\n  }\n  if (defaultGasOverrides.gasPrice) {\n    return defaultGasOverrides;\n  }\n  return {\n    maxFeePerGas: maxFeePerGas ?? defaultGasOverrides.maxFeePerGas,\n    maxPriorityFeePerGas: maxPriorityFeePerGas ?? defaultGasOverrides.maxPriorityFeePerGas\n  };\n}\nasync function getDefaultGasOverrides(client, chain) {\n  if (!FORCE_GAS_PRICE_CHAIN_IDS.includes(chain.id)) {\n    const feeData = await getDynamicFeeData(client, chain);\n    if (feeData.maxFeePerGas !== null && feeData.maxPriorityFeePerGas !== null) {\n      return {\n        maxFeePerGas: feeData.maxFeePerGas,\n        maxPriorityFeePerGas: feeData.maxPriorityFeePerGas\n      };\n    }\n  }\n  return {\n    gasPrice: await getGasPrice({ client, chain, percentMultiplier: 10 })\n  };\n}\nasync function getDynamicFeeData(client, chain, percentMultiplier = 10) {\n  let maxFeePerGas = null;\n  let maxPriorityFeePerGas_ = null;\n  const rpcRequest = getRpcClient({ client, chain });\n  const [block, maxPriorityFeePerGas] = await Promise.all([\n    eth_getBlockByNumber(rpcRequest, { blockTag: \"latest\" }),\n    eth_maxPriorityFeePerGas(rpcRequest).catch(() => null)\n  ]);\n  const baseBlockFee = (block == null ? void 0 : block.baseFeePerGas) ?? 0n;\n  const chainId = chain.id;\n  if (chainId === 220 || chainId === 1220) {\n    return { maxFeePerGas: null, maxPriorityFeePerGas: null };\n  }\n  if (chainId === 80002 || chainId === 137) {\n    maxPriorityFeePerGas_ = await getPolygonGasPriorityFee(chainId);\n  } else if (maxPriorityFeePerGas !== null) {\n    maxPriorityFeePerGas_ = maxPriorityFeePerGas;\n  }\n  if (maxPriorityFeePerGas_ == null) {\n    return { maxFeePerGas: null, maxPriorityFeePerGas: null };\n  }\n  maxPriorityFeePerGas_ = getPreferredPriorityFee(maxPriorityFeePerGas_, percentMultiplier);\n  maxFeePerGas = baseBlockFee * 2n + maxPriorityFeePerGas_;\n  if (chainId === 42220 || chainId === 44787 || chainId === 62320) {\n    maxPriorityFeePerGas_ = maxFeePerGas;\n  }\n  return {\n    maxFeePerGas,\n    maxPriorityFeePerGas: maxPriorityFeePerGas_\n  };\n}\nfunction getPreferredPriorityFee(defaultPriorityFeePerGas, percentMultiplier = 10) {\n  const extraTip = defaultPriorityFeePerGas / BigInt(100) * BigInt(percentMultiplier);\n  const totalPriorityFee = defaultPriorityFeePerGas + extraTip;\n  return totalPriorityFee;\n}\nfunction getGasStationUrl(chainId) {\n  switch (chainId) {\n    case 137:\n      return \"https://gasstation.polygon.technology/v2\";\n    case 80002:\n      return \"https://gasstation-testnet.polygon.technology/v2\";\n  }\n}\nvar MIN_POLYGON_GAS_PRICE = 31n;\nasync function getPolygonGasPriorityFee(chainId) {\n  const gasStationUrl = getGasStationUrl(chainId);\n  try {\n    const data = await (await fetch(gasStationUrl)).json();\n    const priorityFee = data.fast.maxPriorityFee;\n    if (priorityFee > 0) {\n      const fixedFee = Number.parseFloat(priorityFee).toFixed(9);\n      return toUnits(fixedFee, 9);\n    }\n  } catch (e) {\n    console.error(\"failed to fetch gas\", e);\n  }\n  return MIN_POLYGON_GAS_PRICE;\n}\n\n// node_modules/thirdweb/dist/esm/transaction/actions/to-serializable-transaction.js\nasync function toSerializableTransaction(options) {\n  const isZkSync = await isZkSyncChain(options.transaction.chain);\n  if (isZkSync) {\n    const { getZkGasFees } = await import(\"./send-eip712-transaction-GJNL63UQ.js\");\n    const { gas: gas2, maxFeePerGas, maxPriorityFeePerGas } = await getZkGasFees({\n      transaction: options.transaction,\n      from: options.from ? getAddress(options.from) : void 0\n    });\n    options.transaction = {\n      ...options.transaction,\n      gas: gas2,\n      maxFeePerGas,\n      maxPriorityFeePerGas\n    };\n  }\n  const rpcRequest = getRpcClient(options.transaction);\n  const chainId = options.transaction.chain.id;\n  const from = options.from;\n  let [data, nonce, gas, feeData, to, accessList, value] = await Promise.all([\n    encode(options.transaction),\n    (async () => {\n      const resolvedNonce = await resolvePromisedValue(options.transaction.nonce);\n      if (resolvedNonce !== void 0) {\n        return resolvedNonce;\n      }\n      return from ? await import(\"./eth_getTransactionCount-ITCGR7E4.js\").then(({ eth_getTransactionCount }) => eth_getTransactionCount(rpcRequest, {\n        address: from,\n        blockTag: \"pending\"\n      })) : void 0;\n    })(),\n    // takes the same options as the sendTransaction function thankfully!\n    estimateGas(options),\n    getGasOverridesForTransaction(options.transaction),\n    resolvePromisedValue(options.transaction.to),\n    resolvePromisedValue(options.transaction.accessList),\n    resolvePromisedValue(options.transaction.value)\n  ]);\n  const extraGas = await resolvePromisedValue(options.transaction.extraGas);\n  if (extraGas) {\n    gas += extraGas;\n  }\n  return {\n    to,\n    chainId,\n    data,\n    gas,\n    nonce,\n    accessList,\n    value,\n    ...feeData\n  };\n}\n\nexport {\n  eth_gasPrice,\n  eth_maxPriorityFeePerGas,\n  resolveContractAbi,\n  extractError,\n  estimateGas,\n  getGasPrice,\n  getDefaultGasOverrides,\n  toSerializableTransaction\n};\n//# sourceMappingURL=chunk-JZC47WAY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-KWA5PGSC.js",
    "content": "import {\n  linkProfile\n} from \"./chunk-65EUCVOP.js\";\nimport {\n  Input,\n  InputContainer,\n  Spinner,\n  useSetSelectionData\n} from \"./chunk-AARWH2GQ.js\";\nimport {\n  ArrowRightIcon,\n  Button,\n  Container,\n  EmailIcon,\n  FingerPrintIcon,\n  GuestIcon,\n  IconButton,\n  Img,\n  OutlineWalletIcon,\n  PhoneIcon,\n  Spacer,\n  StyledDiv,\n  StyledOption,\n  StyledSelect,\n  Text,\n  fontSize,\n  iconSize,\n  newStyled,\n  radius,\n  setLastAuthProvider,\n  socialIcons,\n  spacing,\n  useConnectionManagerCtx,\n  useCustomTheme,\n  useQuery\n} from \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  isEcosystemWallet\n} from \"./chunk-XC5J5ANL.js\";\nimport {\n  getEcosystemInfo\n} from \"./chunk-QLJVAXYD.js\";\nimport {\n  getLoginUrl,\n  loginWithOauthRedirect\n} from \"./chunk-J7FYPWA5.js\";\nimport {\n  socialAuthOptions\n} from \"./chunk-EIBOABXT.js\";\nimport {\n  webLocalStorage\n} from \"./chunk-VIBS7Y3M.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useActiveAccount.js\nvar import_react = __toESM(require_react(), 1);\nfunction useActiveAccount() {\n  const manager = useConnectionManagerCtx(\"useActiveAccount\");\n  const store = manager.activeAccountStore;\n  return (0, import_react.useSyncExternalStore)(store.subscribe, store.getValue, store.getValue);\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/constants.js\nvar reservedScreens = {\n  main: \"main\",\n  getStarted: \"getStarted\",\n  signIn: \"signIn\",\n  showAll: \"showAll\"\n};\nvar modalMaxWidthCompact = \"360px\";\nvar wideModalWidth = 730;\nvar modalMaxWidthWide = `${wideModalWidth}px`;\nvar wideModalScreenThreshold = wideModalWidth + 40;\nvar wideModalMaxHeight = \"570px\";\nvar compactModalMaxHeight = \"660px\";\nvar modalCloseFadeOutDuration = 250;\nfunction onModalUnmount(cb) {\n  setTimeout(cb, modalCloseFadeOutDuration + 100);\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/screen.js\nvar import_react2 = __toESM(require_react(), 1);\nvar ScreenSetupContext = (0, import_react2.createContext)(void 0);\nfunction useSetupScreen(props) {\n  let initialScreen = reservedScreens.main;\n  const socialLogin = props.wallets.find((w) => w.id === \"embedded\" || w.id === \"inApp\");\n  if (props.wallets.length === 1 && props.wallets[0]) {\n    initialScreen = props.wallets[0];\n  } else if (props.size === \"wide\" && !props.welcomeScreen && socialLogin) {\n    initialScreen = socialLogin;\n  }\n  const [screen, setScreen] = (0, import_react2.useState)(initialScreen);\n  const prevInitialScreen = (0, import_react2.useRef)(initialScreen);\n  const activeAccount = useActiveAccount();\n  (0, import_react2.useEffect)(() => {\n    if (initialScreen !== prevInitialScreen.current) {\n      prevInitialScreen.current = initialScreen;\n      setScreen(initialScreen);\n    }\n  }, [initialScreen]);\n  (0, import_react2.useEffect)(() => {\n    if (!activeAccount && screen === reservedScreens.signIn) {\n      setScreen(reservedScreens.main);\n    }\n  }, [activeAccount, screen]);\n  return {\n    screen,\n    setScreen,\n    initialScreen\n  };\n}\nfunction useScreenContext() {\n  const ctx = (0, import_react2.useContext)(ScreenSetupContext);\n  if (!ctx) {\n    throw new Error(\"useScreenContext must be used within a <ScreenSetupContext.Provider />\");\n  }\n  return ctx;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/LoadingScreen.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nfunction LoadingScreen(props) {\n  return (0, import_jsx_runtime.jsx)(Container, { style: {\n    minHeight: props.height || \"350px\"\n  }, fullHeight: true, flex: \"row\", center: \"both\", children: (0, import_jsx_runtime.jsx)(Spinner, { size: \"xl\", color: \"secondaryText\" }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js\nvar import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);\nvar import_react5 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/WalletTypeRowButton.js\nvar import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);\nfunction WalletTypeRowButton(props) {\n  return (0, import_jsx_runtime2.jsx)(Button, { fullWidth: true, variant: \"outline\", style: {\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    padding: spacing.sm\n  }, onClick: () => {\n    props.onClick();\n  }, disabled: props.disabled, children: (0, import_jsx_runtime2.jsxs)(Container, { flex: \"row\", gap: \"sm\", center: \"y\", color: \"accentText\", children: [(0, import_jsx_runtime2.jsx)(props.icon, { size: iconSize.md }), (0, import_jsx_runtime2.jsx)(Text, { color: \"primaryText\", children: props.title })] }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/components/TextDivider.js\nvar import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);\nvar TextDivider = (props) => {\n  return (0, import_jsx_runtime3.jsx)(TextDividerEl, { style: {\n    paddingBlock: props.py ? spacing[props.py] : 0\n  }, children: (0, import_jsx_runtime3.jsxs)(\"span\", { children: [\" \", props.text] }) });\n};\nvar TextDividerEl = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    display: \"flex\",\n    alignItems: \"center\",\n    color: theme.colors.secondaryText,\n    fontSize: fontSize.sm,\n    \"&::before, &::after\": {\n      content: '\"\"',\n      flex: 1,\n      borderBottom: `1px solid ${theme.colors.separatorLine}`\n    },\n    span: {\n      margin: \"0 16px\"\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/InputSelectionUI.js\nvar import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);\nvar import_react4 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/CountrySelector.js\nvar import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);\nvar import_react3 = __toESM(require_react(), 1);\nfunction CountrySelector({ countryCode, setCountryCode }) {\n  const selectRef = (0, import_react3.useRef)(null);\n  const { data: supportedCountries } = useQuery({\n    queryKey: [\"supported-sms-countries\"],\n    queryFn: async () => {\n      const { supportedSmsCountries } = await import(\"./supported-sms-countries-MILFNFSC.js\");\n      return supportedSmsCountries;\n    }\n  });\n  const supportedCountriesForSms = supportedCountries ?? [\n    {\n      countryIsoCode: \"US\",\n      countryName: \"United States\",\n      phoneNumberCode: 1\n    }\n  ];\n  return (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: (0, import_jsx_runtime4.jsxs)(Select, { ref: selectRef, name: \"countries\", id: \"countries\", value: countryCode, onChange: (e) => {\n    setCountryCode(e.target.value);\n  }, style: {\n    padding: `${spacing.sm} ${spacing.md}`\n  }, children: [(0, import_jsx_runtime4.jsx)(Option, { style: {\n    display: \"none\"\n  }, value: countryCode, children: countryCode }), supportedCountriesForSms.map((country) => {\n    return (0, import_jsx_runtime4.jsxs)(Option, { value: `${country.countryIsoCode} +${country.phoneNumberCode}`, children: [country.countryName, \" +\", country.phoneNumberCode] }, country.countryIsoCode);\n  })] }) });\n}\nvar Option = StyledOption(() => {\n  const theme = useCustomTheme();\n  return {\n    color: theme.colors.primaryText,\n    background: theme.colors.modalBg,\n    transition: \"background 0.3s ease\",\n    \"&:hover\": {\n      background: theme.colors.tertiaryBg\n    }\n  };\n});\nvar Select = StyledSelect((_) => {\n  const theme = useCustomTheme();\n  return {\n    display: \"block\",\n    padding: spacing.sm,\n    boxSizing: \"border-box\",\n    outline: \"none\",\n    border: \"none\",\n    borderRadius: radius.lg,\n    color: theme.colors.primaryText,\n    WebkitAppearance: \"none\",\n    appearance: \"none\",\n    cursor: \"pointer\",\n    background: \"transparent\",\n    \"&::placeholder\": {\n      color: theme.colors.secondaryText\n    },\n    \"&[disabled]\": {\n      cursor: \"not-allowed\"\n    },\n    minWidth: \"0px\",\n    maxWidth: \"90px\",\n    textOverflow: \"ellipsis\",\n    overflow: \"hidden\",\n    whiteSpace: \"nowrap\"\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/InputSelectionUI.js\nfunction InputSelectionUI(props) {\n  const [countryCodeInfo, setCountryCodeInfo] = (0, import_react4.useState)(\"US +1\");\n  const [input, setInput] = (0, import_react4.useState)(\"\");\n  const [error, setError] = (0, import_react4.useState)();\n  const [showError, setShowError] = (0, import_react4.useState)(false);\n  const handleSelect = () => {\n    setShowError(true);\n    if (!input || !!error) {\n      return;\n    }\n    props.onSelect(props.format === \"phone\" ? `+${countryCodeInfo.split(\"+\")[1]}${input}` : input);\n  };\n  const renderingError = showError && !!error || !input && !!props.emptyErrorMessage && showError;\n  return (0, import_jsx_runtime5.jsxs)(\"div\", { style: {\n    width: \"100%\"\n  }, children: [(0, import_jsx_runtime5.jsxs)(InputContainer, { style: {\n    position: \"relative\",\n    display: \"flex\",\n    flexDirection: \"row\"\n  }, \"data-error\": renderingError, children: [props.format === \"phone\" && (0, import_jsx_runtime5.jsx)(CountrySelector, { countryCode: countryCodeInfo, setCountryCode: setCountryCodeInfo }), (0, import_jsx_runtime5.jsx)(Input, { tabIndex: -1, placeholder: props.placeholder, style: {\n    flexGrow: 1,\n    padding: `${spacing.sm} ${props.format === \"phone\" ? 0 : spacing.sm}`\n  }, variant: \"transparent\", type: props.type, name: props.name, value: input, disabled: props.disabled, onChange: (e) => {\n    setInput(e.target.value);\n    if (props.errorMessage) {\n      setError(props.errorMessage(e.target.value));\n    } else {\n      setError(void 0);\n    }\n  }, onKeyDown: (e) => {\n    if (e.key === \"Enter\") {\n      handleSelect();\n    }\n  } }), (0, import_jsx_runtime5.jsx)(IconButton, { onClick: handleSelect, disabled: props.disabled, style: {\n    padding: spacing.sm,\n    borderRadius: `0 ${radius.md} ${radius.md} 0`\n  }, children: (0, import_jsx_runtime5.jsx)(ArrowRightIcon, { width: iconSize.md, height: iconSize.md }) })] }), showError && error && (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [(0, import_jsx_runtime5.jsx)(Spacer, { y: \"xs\" }), (0, import_jsx_runtime5.jsx)(Text, { color: \"danger\", size: \"sm\", children: error })] }), !(showError && error) && !input && props.emptyErrorMessage && showError && (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [(0, import_jsx_runtime5.jsx)(Spacer, { y: \"xs\" }), (0, import_jsx_runtime5.jsx)(Text, { color: \"danger\", size: \"sm\", children: props.emptyErrorMessage })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/validateEmail.js\nfunction validateEmail(str) {\n  const emailRegex = /^\\S+@\\S+\\.\\S+$/;\n  return emailRegex.test(str.replace(/\\+/g, \"\"));\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/oauthSignIn.js\nfunction getBodyTitle(authOption) {\n  switch (authOption) {\n    case \"google\":\n      return \"Sign In - Google Accounts\";\n    default:\n      return `Sign In - ${authOption.slice(0, 1).toUpperCase()}${authOption.slice(1)}`;\n  }\n}\nfunction getWidthAndHeight(authOption) {\n  switch (authOption) {\n    case \"facebook\":\n      return { width: 715, height: 555 };\n    default:\n      return { width: 350, height: 500 };\n  }\n}\nfunction getOauthLoginPath(authOption, client, ecosystem) {\n  switch (authOption) {\n    case \"apple\":\n    case \"facebook\":\n    case \"google\":\n    case \"farcaster\":\n    case \"telegram\":\n    case \"github\":\n    case \"twitch\":\n    case \"line\":\n    case \"x\":\n    case \"guest\":\n    case \"coinbase\":\n    case \"discord\":\n      return getLoginUrl({ authOption, client, ecosystem });\n    default:\n      throw new Error(`Unsupported auth option: ${authOption}`);\n  }\n}\nfunction openOauthSignInWindow({ authOption, themeObj, client, ecosystem }) {\n  const { height, width } = getWidthAndHeight(authOption);\n  const top = (window.innerHeight - height) / 2;\n  const left = (window.innerWidth - width) / 2;\n  const win = window.open(getOauthLoginPath(authOption, client, ecosystem), void 0, `width=${width}, height=${height}, top=${top}, left=${left}`);\n  if (win) {\n    const title = getBodyTitle(authOption);\n    win.document.title = title;\n    win.document.body.innerHTML = spinnerWindowHtml;\n    win.document.body.style.background = themeObj.colors.modalBg;\n    win.document.body.style.color = themeObj.colors.accentText;\n  }\n  if (win) {\n    window.addEventListener(\"beforeunload\", () => {\n      win == null ? void 0 : win.close();\n    });\n  }\n  return win;\n}\nvar spinnerWindowHtml = `\n<svg class=\"loader\" viewBox=\"0 0 50 50\">\n  <circle\n    cx=\"25\"\n    cy=\"25\"\n    r=\"20\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"4\"\n  />\n</svg>\n\n<style>\n  body,\n  html {\n    height: 100%;\n    margin: 0;\n    padding: 0;\n  }\n\n  body {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n  }\n\n  .loader {\n    width: 50px;\n    height: 50px;\n    animation: spin 2s linear infinite;\n  }\n\n  .loader circle {\n    animation: loading 1.5s linear infinite;\n  }\n\n  @keyframes loading {\n    0% {\n      stroke-dasharray: 1, 150;\n      stroke-dashoffset: 0;\n    }\n    50% {\n      stroke-dasharray: 90, 150;\n      stroke-dashoffset: -35;\n    }\n    100% {\n      stroke-dasharray: 90, 150;\n      stroke-dashoffset: -124;\n    }\n  }\n\n  @keyframes spin {\n    100% {\n      transform: rotate(360deg);\n        }\n  }\n</style>\n`;\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js\nvar defaultAuthOptions = [\n  \"email\",\n  \"phone\",\n  \"google\",\n  \"apple\",\n  \"facebook\",\n  \"passkey\"\n];\nvar ConnectWalletSocialOptions = (props) => {\n  var _a, _b, _c;\n  const locale = props.locale;\n  const { wallet } = props;\n  const setData = useSetSelectionData();\n  const themeObj = useCustomTheme();\n  const optionalImageMetadata = (0, import_react5.useMemo)(() => {\n    var _a2, _b2;\n    return props.wallet.id === \"inApp\" ? (_b2 = (_a2 = props.wallet.getConfig()) == null ? void 0 : _a2.metadata) == null ? void 0 : _b2.image : void 0;\n  }, [props.wallet]);\n  const loginMethodsLabel = {\n    google: locale.signInWithGoogle,\n    facebook: locale.signInWithFacebook,\n    apple: locale.signInWithApple,\n    discord: locale.signInWithDiscord,\n    line: \"LINE\",\n    x: \"X\",\n    coinbase: \"Coinbase\",\n    farcaster: \"Farcaster\",\n    telegram: \"Telegram\",\n    github: \"GitHub\",\n    twitch: \"Twitch\"\n  };\n  const { data: ecosystemAuthOptions, isLoading } = useQuery({\n    queryKey: [\"auth-options\", wallet.id],\n    queryFn: async () => {\n      if (isEcosystemWallet(wallet)) {\n        const options = await getEcosystemInfo(wallet.id);\n        return (options == null ? void 0 : options.authOptions) ?? null;\n      }\n      return null;\n    },\n    enabled: isEcosystemWallet(wallet),\n    retry: false\n  });\n  const authOptions = isEcosystemWallet(wallet) ? ecosystemAuthOptions ?? defaultAuthOptions : ((_b = (_a = wallet.getConfig()) == null ? void 0 : _a.auth) == null ? void 0 : _b.options) ?? defaultAuthOptions;\n  const emailIndex = authOptions.indexOf(\"email\");\n  const isEmailEnabled = emailIndex !== -1;\n  const phoneIndex = authOptions.indexOf(\"phone\");\n  const isPhoneEnabled = phoneIndex !== -1;\n  const socialLogins = authOptions.filter((o) => socialAuthOptions.includes(o));\n  const columnCount = (0, import_react5.useMemo)(() => {\n    switch (socialLogins.length) {\n      case 7:\n        return 4;\n      case 6:\n        return 4;\n      default:\n        return 5;\n    }\n  }, [socialLogins.length]);\n  const socialLoginColumns = (0, import_react5.useMemo)(() => {\n    return Array.from({ length: Math.ceil(socialLogins.length / columnCount) }, (_, i) => socialLogins.slice(i * columnCount, (i + 1) * columnCount));\n  }, [socialLogins, columnCount]);\n  const [manualInputMode, setManualInputMode] = (0, import_react5.useState)(null);\n  const inputMode = (0, import_react5.useMemo)(() => {\n    if (manualInputMode) {\n      return manualInputMode;\n    }\n    if (isEmailEnabled && isPhoneEnabled) {\n      return emailIndex < phoneIndex ? \"email\" : \"phone\";\n    }\n    if (isEmailEnabled) {\n      return \"email\";\n    }\n    if (isPhoneEnabled) {\n      return \"phone\";\n    }\n    return \"none\";\n  }, [isEmailEnabled, isPhoneEnabled, emailIndex, phoneIndex, manualInputMode]);\n  if (isEcosystemWallet(wallet) && isLoading) {\n    return (0, import_jsx_runtime6.jsx)(LoadingScreen, {});\n  }\n  const passKeyEnabled = authOptions.includes(\"passkey\");\n  const guestEnabled = authOptions.includes(\"guest\");\n  const siweEnabled = authOptions.includes(\"wallet\");\n  const placeholder = inputMode === \"email\" ? locale.emailPlaceholder : locale.phonePlaceholder;\n  const emptyErrorMessage = inputMode === \"email\" ? locale.emailRequired : locale.phoneRequired;\n  let type = \"text\";\n  if (inputMode === \"email\") {\n    type = \"email\";\n  } else if (inputMode === \"phone\") {\n    type = \"tel\";\n  }\n  const hasSocialLogins = socialLogins.length > 0;\n  const ecosystemInfo = isEcosystemWallet(wallet) ? {\n    id: wallet.id,\n    partnerId: (_c = wallet.getConfig()) == null ? void 0 : _c.partnerId\n  } : void 0;\n  const handleGuestLogin = async () => {\n    const connectOptions = {\n      client: props.client,\n      ecosystem: ecosystemInfo,\n      strategy: \"guest\"\n    };\n    const connectPromise = (async () => {\n      const result = await wallet.connect(connectOptions);\n      setLastAuthProvider(\"guest\", webLocalStorage);\n      return result;\n    })();\n    setData({\n      guestLogin: {\n        connectionPromise: connectPromise\n      }\n    });\n    props.select();\n  };\n  const handleSocialLogin = async (strategy) => {\n    var _a2, _b2;\n    const walletConfig = wallet.getConfig();\n    const authMode = ((_a2 = walletConfig == null ? void 0 : walletConfig.auth) == null ? void 0 : _a2.mode) ?? \"popup\";\n    if (walletConfig && \"auth\" in walletConfig && authMode !== \"popup\" && !props.isLinking) {\n      return loginWithOauthRedirect({\n        authOption: strategy,\n        client: props.client,\n        ecosystem: ecosystemInfo,\n        redirectUrl: (_b2 = walletConfig == null ? void 0 : walletConfig.auth) == null ? void 0 : _b2.redirectUrl,\n        mode: authMode\n      });\n    }\n    try {\n      const socialLoginWindow = openOauthSignInWindow({\n        authOption: strategy,\n        themeObj,\n        client: props.client,\n        ecosystem: ecosystemInfo\n      });\n      if (!socialLoginWindow) {\n        throw new Error(\"Failed to open login window\");\n      }\n      const connectOptions = {\n        chain: props.chain,\n        client: props.client,\n        strategy,\n        openedWindow: socialLoginWindow,\n        closeOpenedWindow: (openedWindow) => {\n          openedWindow.close();\n        },\n        ecosystem: ecosystemInfo\n      };\n      const connectPromise = (() => {\n        if (props.isLinking) {\n          if (wallet.id !== \"inApp\" && !isEcosystemWallet(wallet)) {\n            throw new Error(\"Only in-app wallets support multi-auth\");\n          }\n          return linkProfile(connectOptions);\n        }\n        const connectPromise2 = wallet.connect(connectOptions);\n        setLastAuthProvider(strategy, webLocalStorage);\n        return connectPromise2;\n      })();\n      setData({\n        socialLogin: {\n          type: strategy,\n          connectionPromise: connectPromise\n        }\n      });\n      props.select();\n    } catch (e) {\n      console.error(`Error signing in with ${strategy}`, e);\n    }\n  };\n  function handlePassKeyLogin() {\n    setData({\n      passkeyLogin: true\n    });\n    props.select();\n  }\n  function handleWalletLogin() {\n    setData({\n      walletLogin: {\n        linking: props.isLinking || false\n      }\n    });\n    props.select();\n  }\n  const showOnlyIcons = socialLogins.length > 2;\n  return (0, import_jsx_runtime6.jsxs)(Container, { flex: \"column\", gap: \"md\", style: {\n    position: \"relative\"\n  }, children: [optionalImageMetadata && (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [(0, import_jsx_runtime6.jsx)(Img, { client: props.client, src: optionalImageMetadata.src, alt: optionalImageMetadata.alt, width: `${optionalImageMetadata.width}`, height: `${optionalImageMetadata.height}`, style: { margin: \"auto\" } }), (0, import_jsx_runtime6.jsx)(Spacer, { y: \"xxs\" })] }), hasSocialLogins && (0, import_jsx_runtime6.jsx)(Container, { flex: \"column\", gap: socialLogins.length > 4 ? \"xs\" : \"sm\", children: socialLoginColumns.map((column) => (0, import_jsx_runtime6.jsx)(SocialButtonRow, { children: column.map((loginMethod) => {\n    const imgIconSize = (() => {\n      if (!showOnlyIcons) {\n        return iconSize.md;\n      }\n      if (socialLogins.length > 4) {\n        return iconSize.md;\n      }\n      return iconSize.lg;\n    })();\n    return (0, import_jsx_runtime6.jsxs)(SocialButton, { \"aria-label\": `Login with ${loginMethod}`, \"data-variant\": showOnlyIcons ? \"icon\" : \"full\", variant: \"outline\", disabled: props.disabled, onClick: () => {\n      handleSocialLogin(loginMethod);\n    }, style: {\n      flexGrow: socialLogins.length < 7 ? 1 : 0\n    }, children: [(0, import_jsx_runtime6.jsx)(Img, { src: socialIcons[loginMethod], width: imgIconSize, height: imgIconSize, client: props.client }), !showOnlyIcons && `${socialLogins.length === 1 ? \"Continue with \" : \"\"}${loginMethodsLabel[loginMethod]}`] }, loginMethod);\n  }) }, column[0])) }), props.size === \"wide\" && hasSocialLogins && (isEmailEnabled || isPhoneEnabled) && (0, import_jsx_runtime6.jsx)(TextDivider, { text: locale.or }), isEmailEnabled && (inputMode === \"email\" ? (0, import_jsx_runtime6.jsx)(InputSelectionUI, { type, onSelect: (value) => {\n    setData({ emailLogin: value });\n    props.select();\n  }, placeholder, name: \"email\", errorMessage: (input) => {\n    const isValidEmail = validateEmail(input.toLowerCase());\n    if (!isValidEmail) {\n      return locale.invalidEmail;\n    }\n    return void 0;\n  }, disabled: props.disabled, emptyErrorMessage, submitButtonText: locale.submitEmail }) : (0, import_jsx_runtime6.jsx)(WalletTypeRowButton, { client: props.client, icon: EmailIcon, onClick: () => {\n    setManualInputMode(\"email\");\n  }, title: locale.emailPlaceholder, disabled: props.disabled })), isPhoneEnabled && (inputMode === \"phone\" ? (0, import_jsx_runtime6.jsx)(InputSelectionUI, { format: \"phone\", type, onSelect: (value) => {\n    setData({ phoneLogin: value.replace(/[-\\(\\) ]/g, \"\") });\n    props.select();\n  }, placeholder, name: \"phone\", errorMessage: (_input) => {\n    const input = _input.replace(/[-\\(\\) ]/g, \"\");\n    const isPhone = /^[0-9]+$/.test(input);\n    if (!isPhone && isPhoneEnabled) {\n      return locale.invalidPhone;\n    }\n    return void 0;\n  }, disabled: props.disabled, emptyErrorMessage, submitButtonText: locale.submitEmail }) : (0, import_jsx_runtime6.jsx)(WalletTypeRowButton, { client: props.client, icon: PhoneIcon, onClick: () => {\n    setManualInputMode(\"phone\");\n  }, title: locale.phonePlaceholder, disabled: props.disabled })), passKeyEnabled && (0, import_jsx_runtime6.jsx)(WalletTypeRowButton, { client: props.client, icon: FingerPrintIcon, onClick: () => {\n    handlePassKeyLogin();\n  }, title: locale.passkey, disabled: props.disabled }), siweEnabled && (0, import_jsx_runtime6.jsx)(WalletTypeRowButton, { client: props.client, icon: OutlineWalletIcon, onClick: () => {\n    handleWalletLogin();\n  }, title: locale.signInWithWallet }), guestEnabled && (0, import_jsx_runtime6.jsx)(WalletTypeRowButton, { client: props.client, icon: GuestIcon, onClick: () => {\n    handleGuestLogin();\n  }, title: locale.loginAsGuest, disabled: props.disabled }), props.isLinking && (0, import_jsx_runtime6.jsx)(WalletTypeRowButton, { client: props.client, icon: OutlineWalletIcon, onClick: () => {\n    handleWalletLogin();\n  }, title: locale.linkWallet })] });\n};\nvar SocialButtonRow = (props) => (0, import_jsx_runtime6.jsx)(Container, { flex: \"row\", center: \"x\", gap: props.children.length > 4 ? \"xs\" : \"sm\", style: {\n  justifyContent: \"center\",\n  display: \"flex\",\n  ...{\n    \"& > *\": {\n      flexBasis: `${100 / props.children.length}%`,\n      maxWidth: `${100 / props.children.length}%`\n    }\n  }\n}, children: props.children });\nvar SocialButton = newStyled(Button)({\n  \"&[data-variant='full']\": {\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    padding: spacing.md,\n    gap: spacing.sm,\n    fontSize: fontSize.md,\n    fontWeight: 500,\n    transition: \"background-color 0.2s ease\",\n    \"&:active\": {\n      boxShadow: \"none\"\n    }\n  },\n  \"&[data-variant='icon']\": {\n    padding: spacing.sm\n  }\n});\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/useInAppWalletLocale.js\nvar import_react6 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/locale/getConnectLocale.js\nasync function getInAppWalletLocale(localeId) {\n  switch (localeId) {\n    case \"es_ES\":\n      return (await import(\"./es-LKAELXTV.js\")).default;\n    case \"ja_JP\":\n      return (await import(\"./ja-PZYAXXAL.js\")).default;\n    case \"tl_PH\":\n      return (await import(\"./tl-B6Y73PTZ.js\")).default;\n    case \"vi_VN\":\n      return (await import(\"./vi-6NOSFFF7.js\")).default;\n    case \"de_DE\":\n      return (await import(\"./de-BT7LP6QO.js\")).default;\n    case \"ko_KR\":\n      return (await import(\"./kr-QIL3MJCP.js\")).default;\n    case \"fr_FR\":\n      return (await import(\"./fr-DKOBC2XB.js\")).default;\n    default:\n      return (await import(\"./en-YMFAQ6ZL.js\")).default;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/useInAppWalletLocale.js\nfunction useInAppWalletLocale(localeId) {\n  const [locale, setLocale] = (0, import_react6.useState)(void 0);\n  (0, import_react6.useEffect)(() => {\n    getInAppWalletLocale(localeId).then((l) => {\n      setLocale(l);\n    });\n  }, [localeId]);\n  return locale;\n}\n\nexport {\n  useActiveAccount,\n  reservedScreens,\n  modalMaxWidthCompact,\n  modalMaxWidthWide,\n  wideModalScreenThreshold,\n  wideModalMaxHeight,\n  compactModalMaxHeight,\n  modalCloseFadeOutDuration,\n  onModalUnmount,\n  ScreenSetupContext,\n  useSetupScreen,\n  useScreenContext,\n  LoadingScreen,\n  TextDivider,\n  openOauthSignInWindow,\n  WalletTypeRowButton,\n  InputSelectionUI,\n  ConnectWalletSocialOptions,\n  useInAppWalletLocale\n};\n//# sourceMappingURL=chunk-KWA5PGSC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-LO5SQBMX.js",
    "content": "import {\n  HashMD,\n  sha256\n} from \"./chunk-O6UZ65WN.js\";\nimport {\n  AbiDecodingDataSizeTooSmallError,\n  AbiEncodingLengthMismatchError,\n  AbiEventNotFoundError,\n  AbiEventSignatureEmptyTopicsError,\n  AbiEventSignatureNotFoundError,\n  BaseError,\n  BytesSizeMismatchError,\n  DecodeLogDataMismatch,\n  DecodeLogTopicsMismatch,\n  FeeCapTooHighError,\n  InvalidAddressError,\n  InvalidChainIdError,\n  InvalidLegacyVError,\n  InvalidSerializableTransactionError,\n  InvalidStorageKeySizeError,\n  LruMap,\n  PositionOutOfBoundsError,\n  TipAboveFeeCapError,\n  UnsupportedPackedAbiType,\n  boolToHex,\n  bytesToHex,\n  concat,\n  concatHex,\n  createCursor,\n  decodeAbiParameters,\n  defineFormatter,\n  encodeAbiParameters,\n  formatAbiItem,\n  getAbiItem,\n  hexToBytes,\n  hexToNumber,\n  isAddress,\n  isAddressEqual,\n  isHex,\n  keccak256,\n  maxUint256,\n  numberToHex,\n  pad,\n  size,\n  slice,\n  stringToHex,\n  stringify,\n  toBytes,\n  toEventSelector,\n  toHex,\n  trim\n} from \"./chunk-GINVHONX.js\";\nimport {\n  rotl,\n  wrapConstructor\n} from \"./chunk-ME5GAE4N.js\";\n\n// node_modules/viem/_esm/utils/encoding/toRlp.js\nfunction toRlp(bytes, to = \"hex\") {\n  const encodable = getEncodable(bytes);\n  const cursor = createCursor(new Uint8Array(encodable.length));\n  encodable.encode(cursor);\n  if (to === \"hex\")\n    return bytesToHex(cursor.bytes);\n  return cursor.bytes;\n}\nfunction getEncodable(bytes) {\n  if (Array.isArray(bytes))\n    return getEncodableList(bytes.map((x) => getEncodable(x)));\n  return getEncodableBytes(bytes);\n}\nfunction getEncodableList(list) {\n  const bodyLength = list.reduce((acc, x) => acc + x.length, 0);\n  const sizeOfBodyLength = getSizeOfLength(bodyLength);\n  const length = (() => {\n    if (bodyLength <= 55)\n      return 1 + bodyLength;\n    return 1 + sizeOfBodyLength + bodyLength;\n  })();\n  return {\n    length,\n    encode(cursor) {\n      if (bodyLength <= 55) {\n        cursor.pushByte(192 + bodyLength);\n      } else {\n        cursor.pushByte(192 + 55 + sizeOfBodyLength);\n        if (sizeOfBodyLength === 1)\n          cursor.pushUint8(bodyLength);\n        else if (sizeOfBodyLength === 2)\n          cursor.pushUint16(bodyLength);\n        else if (sizeOfBodyLength === 3)\n          cursor.pushUint24(bodyLength);\n        else\n          cursor.pushUint32(bodyLength);\n      }\n      for (const { encode: encode2 } of list) {\n        encode2(cursor);\n      }\n    }\n  };\n}\nfunction getEncodableBytes(bytesOrHex) {\n  const bytes = typeof bytesOrHex === \"string\" ? hexToBytes(bytesOrHex) : bytesOrHex;\n  const sizeOfBytesLength = getSizeOfLength(bytes.length);\n  const length = (() => {\n    if (bytes.length === 1 && bytes[0] < 128)\n      return 1;\n    if (bytes.length <= 55)\n      return 1 + bytes.length;\n    return 1 + sizeOfBytesLength + bytes.length;\n  })();\n  return {\n    length,\n    encode(cursor) {\n      if (bytes.length === 1 && bytes[0] < 128) {\n        cursor.pushBytes(bytes);\n      } else if (bytes.length <= 55) {\n        cursor.pushByte(128 + bytes.length);\n        cursor.pushBytes(bytes);\n      } else {\n        cursor.pushByte(128 + 55 + sizeOfBytesLength);\n        if (sizeOfBytesLength === 1)\n          cursor.pushUint8(bytes.length);\n        else if (sizeOfBytesLength === 2)\n          cursor.pushUint16(bytes.length);\n        else if (sizeOfBytesLength === 3)\n          cursor.pushUint24(bytes.length);\n        else\n          cursor.pushUint32(bytes.length);\n        cursor.pushBytes(bytes);\n      }\n    }\n  };\n}\nfunction getSizeOfLength(length) {\n  if (length < 2 ** 8)\n    return 1;\n  if (length < 2 ** 16)\n    return 2;\n  if (length < 2 ** 24)\n    return 3;\n  if (length < 2 ** 32)\n    return 4;\n  throw new BaseError(\"Length is too large.\");\n}\n\n// node_modules/viem/_esm/errors/typedData.js\nvar InvalidPrimaryTypeError = class extends BaseError {\n  constructor({ primaryType, types }) {\n    super(`Invalid primary type \\`${primaryType}\\` must be one of \\`${JSON.stringify(Object.keys(types))}\\`.`, {\n      docsPath: \"/api/glossary/Errors#typeddatainvalidprimarytypeerror\",\n      metaMessages: [\"Check that the primary type is a key in `types`.\"]\n    });\n  }\n};\nvar InvalidStructTypeError = class extends BaseError {\n  constructor({ type }) {\n    super(`Struct type \"${type}\" is invalid.`, {\n      metaMessages: [\"Struct type must not be a Solidity type.\"],\n      name: \"InvalidStructTypeError\"\n    });\n  }\n};\n\n// node_modules/viem/_esm/utils/regex.js\nvar arrayRegex = /^(.*)\\[([0-9]*)\\]$/;\nvar bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\nvar integerRegex = /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\n\n// node_modules/viem/_esm/utils/typedData.js\nfunction serializeTypedData(parameters) {\n  const { domain: domain_, message: message_, primaryType, types } = parameters;\n  const normalizeData = (struct, data_) => {\n    const data = { ...data_ };\n    for (const param of struct) {\n      const { name, type } = param;\n      if (type === \"address\")\n        data[name] = data[name].toLowerCase();\n    }\n    return data;\n  };\n  const domain = (() => {\n    if (!types.EIP712Domain)\n      return {};\n    if (!domain_)\n      return {};\n    return normalizeData(types.EIP712Domain, domain_);\n  })();\n  const message = (() => {\n    if (primaryType === \"EIP712Domain\")\n      return void 0;\n    return normalizeData(types[primaryType], message_);\n  })();\n  return stringify({ domain, message, primaryType, types });\n}\nfunction validateTypedData(parameters) {\n  const { domain, message, primaryType, types } = parameters;\n  const validateData = (struct, data) => {\n    for (const param of struct) {\n      const { name, type } = param;\n      const value = data[name];\n      const integerMatch = type.match(integerRegex);\n      if (integerMatch && (typeof value === \"number\" || typeof value === \"bigint\")) {\n        const [_type, base, size_] = integerMatch;\n        numberToHex(value, {\n          signed: base === \"int\",\n          size: Number.parseInt(size_) / 8\n        });\n      }\n      if (type === \"address\" && typeof value === \"string\" && !isAddress(value))\n        throw new InvalidAddressError({ address: value });\n      const bytesMatch = type.match(bytesRegex);\n      if (bytesMatch) {\n        const [_type, size_] = bytesMatch;\n        if (size_ && size(value) !== Number.parseInt(size_))\n          throw new BytesSizeMismatchError({\n            expectedSize: Number.parseInt(size_),\n            givenSize: size(value)\n          });\n      }\n      const struct2 = types[type];\n      if (struct2) {\n        validateReference(type);\n        validateData(struct2, value);\n      }\n    }\n  };\n  if (types.EIP712Domain && domain)\n    validateData(types.EIP712Domain, domain);\n  if (primaryType !== \"EIP712Domain\") {\n    if (types[primaryType])\n      validateData(types[primaryType], message);\n    else\n      throw new InvalidPrimaryTypeError({ primaryType, types });\n  }\n}\nfunction getTypesForEIP712Domain({ domain }) {\n  return [\n    typeof (domain == null ? void 0 : domain.name) === \"string\" && { name: \"name\", type: \"string\" },\n    (domain == null ? void 0 : domain.version) && { name: \"version\", type: \"string\" },\n    typeof (domain == null ? void 0 : domain.chainId) === \"number\" && {\n      name: \"chainId\",\n      type: \"uint256\"\n    },\n    (domain == null ? void 0 : domain.verifyingContract) && {\n      name: \"verifyingContract\",\n      type: \"address\"\n    },\n    (domain == null ? void 0 : domain.salt) && { name: \"salt\", type: \"bytes32\" }\n  ].filter(Boolean);\n}\nfunction validateReference(type) {\n  if (type === \"address\" || type === \"bool\" || type === \"string\" || type.startsWith(\"bytes\") || type.startsWith(\"uint\") || type.startsWith(\"int\"))\n    throw new InvalidStructTypeError({ type });\n}\n\n// node_modules/viem/_esm/utils/signature/hashTypedData.js\nfunction hashTypedData(parameters) {\n  const { domain = {}, message, primaryType } = parameters;\n  const types = {\n    EIP712Domain: getTypesForEIP712Domain({ domain }),\n    ...parameters.types\n  };\n  validateTypedData({\n    domain,\n    message,\n    primaryType,\n    types\n  });\n  const parts = [\"0x1901\"];\n  if (domain)\n    parts.push(hashDomain({\n      domain,\n      types\n    }));\n  if (primaryType !== \"EIP712Domain\")\n    parts.push(hashStruct({\n      data: message,\n      primaryType,\n      types\n    }));\n  return keccak256(concat(parts));\n}\nfunction hashDomain({ domain, types }) {\n  return hashStruct({\n    data: domain,\n    primaryType: \"EIP712Domain\",\n    types\n  });\n}\nfunction hashStruct({ data, primaryType, types }) {\n  const encoded = encodeData({\n    data,\n    primaryType,\n    types\n  });\n  return keccak256(encoded);\n}\nfunction encodeData({ data, primaryType, types }) {\n  const encodedTypes = [{ type: \"bytes32\" }];\n  const encodedValues = [hashType({ primaryType, types })];\n  for (const field of types[primaryType]) {\n    const [type, value] = encodeField({\n      types,\n      name: field.name,\n      type: field.type,\n      value: data[field.name]\n    });\n    encodedTypes.push(type);\n    encodedValues.push(value);\n  }\n  return encodeAbiParameters(encodedTypes, encodedValues);\n}\nfunction hashType({ primaryType, types }) {\n  const encodedHashType = toHex(encodeType({ primaryType, types }));\n  return keccak256(encodedHashType);\n}\nfunction encodeType({ primaryType, types }) {\n  let result = \"\";\n  const unsortedDeps = findTypeDependencies({ primaryType, types });\n  unsortedDeps.delete(primaryType);\n  const deps = [primaryType, ...Array.from(unsortedDeps).sort()];\n  for (const type of deps) {\n    result += `${type}(${types[type].map(({ name, type: t }) => `${t} ${name}`).join(\",\")})`;\n  }\n  return result;\n}\nfunction findTypeDependencies({ primaryType: primaryType_, types }, results = /* @__PURE__ */ new Set()) {\n  const match = primaryType_.match(/^\\w*/u);\n  const primaryType = match == null ? void 0 : match[0];\n  if (results.has(primaryType) || types[primaryType] === void 0) {\n    return results;\n  }\n  results.add(primaryType);\n  for (const field of types[primaryType]) {\n    findTypeDependencies({ primaryType: field.type, types }, results);\n  }\n  return results;\n}\nfunction encodeField({ types, name, type, value }) {\n  if (types[type] !== void 0) {\n    return [\n      { type: \"bytes32\" },\n      keccak256(encodeData({ data: value, primaryType: type, types }))\n    ];\n  }\n  if (type === \"bytes\") {\n    const prepend = value.length % 2 ? \"0\" : \"\";\n    value = `0x${prepend + value.slice(2)}`;\n    return [{ type: \"bytes32\" }, keccak256(value)];\n  }\n  if (type === \"string\")\n    return [{ type: \"bytes32\" }, keccak256(toHex(value))];\n  if (type.lastIndexOf(\"]\") === type.length - 1) {\n    const parsedType = type.slice(0, type.lastIndexOf(\"[\"));\n    const typeValuePairs = value.map((item) => encodeField({\n      name,\n      type: parsedType,\n      types,\n      value: item\n    }));\n    return [\n      { type: \"bytes32\" },\n      keccak256(encodeAbiParameters(typeValuePairs.map(([t]) => t), typeValuePairs.map(([, v]) => v)))\n    ];\n  }\n  return [{ type }, value];\n}\n\n// node_modules/viem/_esm/constants/strings.js\nvar presignMessagePrefix = \"\u0019Ethereum Signed Message:\\n\";\n\n// node_modules/viem/_esm/utils/signature/toPrefixedMessage.js\nfunction toPrefixedMessage(message_) {\n  const message = (() => {\n    if (typeof message_ === \"string\")\n      return stringToHex(message_);\n    if (typeof message_.raw === \"string\")\n      return message_.raw;\n    return bytesToHex(message_.raw);\n  })();\n  const prefix = stringToHex(`${presignMessagePrefix}${size(message)}`);\n  return concat([prefix, message]);\n}\n\n// node_modules/viem/_esm/utils/signature/hashMessage.js\nfunction hashMessage(message, to_) {\n  return keccak256(toPrefixedMessage(message), to_);\n}\n\n// node_modules/viem/_esm/utils/blob/blobsToCommitments.js\nfunction blobsToCommitments(parameters) {\n  const { kzg } = parameters;\n  const to = parameters.to ?? (typeof parameters.blobs[0] === \"string\" ? \"hex\" : \"bytes\");\n  const blobs = typeof parameters.blobs[0] === \"string\" ? parameters.blobs.map((x) => hexToBytes(x)) : parameters.blobs;\n  const commitments = [];\n  for (const blob of blobs)\n    commitments.push(Uint8Array.from(kzg.blobToKzgCommitment(blob)));\n  return to === \"bytes\" ? commitments : commitments.map((x) => bytesToHex(x));\n}\n\n// node_modules/viem/_esm/utils/blob/blobsToProofs.js\nfunction blobsToProofs(parameters) {\n  const { kzg } = parameters;\n  const to = parameters.to ?? (typeof parameters.blobs[0] === \"string\" ? \"hex\" : \"bytes\");\n  const blobs = typeof parameters.blobs[0] === \"string\" ? parameters.blobs.map((x) => hexToBytes(x)) : parameters.blobs;\n  const commitments = typeof parameters.commitments[0] === \"string\" ? parameters.commitments.map((x) => hexToBytes(x)) : parameters.commitments;\n  const proofs = [];\n  for (let i = 0; i < blobs.length; i++) {\n    const blob = blobs[i];\n    const commitment = commitments[i];\n    proofs.push(Uint8Array.from(kzg.computeBlobKzgProof(blob, commitment)));\n  }\n  return to === \"bytes\" ? proofs : proofs.map((x) => bytesToHex(x));\n}\n\n// node_modules/viem/_esm/utils/hash/sha256.js\nfunction sha2562(value, to_) {\n  const to = to_ || \"hex\";\n  const bytes = sha256(isHex(value, { strict: false }) ? toBytes(value) : value);\n  if (to === \"bytes\")\n    return bytes;\n  return toHex(bytes);\n}\n\n// node_modules/viem/_esm/utils/blob/commitmentToVersionedHash.js\nfunction commitmentToVersionedHash(parameters) {\n  const { commitment, version = 1 } = parameters;\n  const to = parameters.to ?? (typeof commitment === \"string\" ? \"hex\" : \"bytes\");\n  const versionedHash = sha2562(commitment, \"bytes\");\n  versionedHash.set([version], 0);\n  return to === \"bytes\" ? versionedHash : bytesToHex(versionedHash);\n}\n\n// node_modules/viem/_esm/utils/blob/commitmentsToVersionedHashes.js\nfunction commitmentsToVersionedHashes(parameters) {\n  const { commitments, version } = parameters;\n  const to = parameters.to ?? (typeof commitments[0] === \"string\" ? \"hex\" : \"bytes\");\n  const hashes = [];\n  for (const commitment of commitments) {\n    hashes.push(commitmentToVersionedHash({\n      commitment,\n      to,\n      version\n    }));\n  }\n  return hashes;\n}\n\n// node_modules/viem/_esm/constants/blob.js\nvar blobsPerTransaction = 6;\nvar bytesPerFieldElement = 32;\nvar fieldElementsPerBlob = 4096;\nvar bytesPerBlob = bytesPerFieldElement * fieldElementsPerBlob;\nvar maxBytesPerTransaction = bytesPerBlob * blobsPerTransaction - // terminator byte (0x80).\n1 - // zero byte (0x00) appended to each field element.\n1 * fieldElementsPerBlob * blobsPerTransaction;\n\n// node_modules/viem/_esm/constants/kzg.js\nvar versionedHashVersionKzg = 1;\n\n// node_modules/viem/_esm/errors/blob.js\nvar BlobSizeTooLargeError = class extends BaseError {\n  constructor({ maxSize, size: size2 }) {\n    super(\"Blob size is too large.\", {\n      metaMessages: [`Max: ${maxSize} bytes`, `Given: ${size2} bytes`],\n      name: \"BlobSizeTooLargeError\"\n    });\n  }\n};\nvar EmptyBlobError = class extends BaseError {\n  constructor() {\n    super(\"Blob data must not be empty.\", { name: \"EmptyBlobError\" });\n  }\n};\nvar InvalidVersionedHashSizeError = class extends BaseError {\n  constructor({ hash, size: size2 }) {\n    super(`Versioned hash \"${hash}\" size is invalid.`, {\n      metaMessages: [\"Expected: 32\", `Received: ${size2}`],\n      name: \"InvalidVersionedHashSizeError\"\n    });\n  }\n};\nvar InvalidVersionedHashVersionError = class extends BaseError {\n  constructor({ hash, version }) {\n    super(`Versioned hash \"${hash}\" version is invalid.`, {\n      metaMessages: [\n        `Expected: ${versionedHashVersionKzg}`,\n        `Received: ${version}`\n      ],\n      name: \"InvalidVersionedHashVersionError\"\n    });\n  }\n};\n\n// node_modules/viem/_esm/utils/blob/toBlobs.js\nfunction toBlobs(parameters) {\n  const to = parameters.to ?? (typeof parameters.data === \"string\" ? \"hex\" : \"bytes\");\n  const data = typeof parameters.data === \"string\" ? hexToBytes(parameters.data) : parameters.data;\n  const size_ = size(data);\n  if (!size_)\n    throw new EmptyBlobError();\n  if (size_ > maxBytesPerTransaction)\n    throw new BlobSizeTooLargeError({\n      maxSize: maxBytesPerTransaction,\n      size: size_\n    });\n  const blobs = [];\n  let active = true;\n  let position = 0;\n  while (active) {\n    const blob = createCursor(new Uint8Array(bytesPerBlob));\n    let size2 = 0;\n    while (size2 < fieldElementsPerBlob) {\n      const bytes = data.slice(position, position + (bytesPerFieldElement - 1));\n      blob.pushByte(0);\n      blob.pushBytes(bytes);\n      if (bytes.length < 31) {\n        blob.pushByte(128);\n        active = false;\n        break;\n      }\n      size2++;\n      position += 31;\n    }\n    blobs.push(blob);\n  }\n  return to === \"bytes\" ? blobs.map((x) => x.bytes) : blobs.map((x) => bytesToHex(x.bytes));\n}\n\n// node_modules/viem/_esm/utils/blob/toBlobSidecars.js\nfunction toBlobSidecars(parameters) {\n  const { data, kzg, to } = parameters;\n  const blobs = parameters.blobs ?? toBlobs({ data, to });\n  const commitments = parameters.commitments ?? blobsToCommitments({ blobs, kzg, to });\n  const proofs = parameters.proofs ?? blobsToProofs({ blobs, commitments, kzg, to });\n  const sidecars = [];\n  for (let i = 0; i < blobs.length; i++)\n    sidecars.push({\n      blob: blobs[i],\n      commitment: commitments[i],\n      proof: proofs[i]\n    });\n  return sidecars;\n}\n\n// node_modules/viem/_esm/experimental/eip7702/utils/serializeAuthorizationList.js\nfunction serializeAuthorizationList(authorizationList) {\n  if (!authorizationList || authorizationList.length === 0)\n    return [];\n  const serializedAuthorizationList = [];\n  for (const authorization of authorizationList) {\n    const { contractAddress, chainId, nonce, ...signature } = authorization;\n    serializedAuthorizationList.push([\n      chainId ? toHex(chainId) : \"0x\",\n      contractAddress,\n      nonce ? toHex(nonce) : \"0x\",\n      ...toYParitySignatureArray({}, signature)\n    ]);\n  }\n  return serializedAuthorizationList;\n}\n\n// node_modules/viem/_esm/utils/transaction/assertTransaction.js\nfunction assertTransactionEIP7702(transaction) {\n  const { authorizationList } = transaction;\n  if (authorizationList) {\n    for (const authorization of authorizationList) {\n      const { contractAddress, chainId } = authorization;\n      if (!isAddress(contractAddress))\n        throw new InvalidAddressError({ address: contractAddress });\n      if (chainId < 0)\n        throw new InvalidChainIdError({ chainId });\n    }\n  }\n  assertTransactionEIP1559(transaction);\n}\nfunction assertTransactionEIP4844(transaction) {\n  const { blobVersionedHashes } = transaction;\n  if (blobVersionedHashes) {\n    if (blobVersionedHashes.length === 0)\n      throw new EmptyBlobError();\n    for (const hash of blobVersionedHashes) {\n      const size_ = size(hash);\n      const version = hexToNumber(slice(hash, 0, 1));\n      if (size_ !== 32)\n        throw new InvalidVersionedHashSizeError({ hash, size: size_ });\n      if (version !== versionedHashVersionKzg)\n        throw new InvalidVersionedHashVersionError({\n          hash,\n          version\n        });\n    }\n  }\n  assertTransactionEIP1559(transaction);\n}\nfunction assertTransactionEIP1559(transaction) {\n  const { chainId, maxPriorityFeePerGas, maxFeePerGas, to } = transaction;\n  if (chainId <= 0)\n    throw new InvalidChainIdError({ chainId });\n  if (to && !isAddress(to))\n    throw new InvalidAddressError({ address: to });\n  if (maxFeePerGas && maxFeePerGas > maxUint256)\n    throw new FeeCapTooHighError({ maxFeePerGas });\n  if (maxPriorityFeePerGas && maxFeePerGas && maxPriorityFeePerGas > maxFeePerGas)\n    throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas });\n}\nfunction assertTransactionEIP2930(transaction) {\n  const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to } = transaction;\n  if (chainId <= 0)\n    throw new InvalidChainIdError({ chainId });\n  if (to && !isAddress(to))\n    throw new InvalidAddressError({ address: to });\n  if (maxPriorityFeePerGas || maxFeePerGas)\n    throw new BaseError(\"`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.\");\n  if (gasPrice && gasPrice > maxUint256)\n    throw new FeeCapTooHighError({ maxFeePerGas: gasPrice });\n}\nfunction assertTransactionLegacy(transaction) {\n  const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to } = transaction;\n  if (to && !isAddress(to))\n    throw new InvalidAddressError({ address: to });\n  if (typeof chainId !== \"undefined\" && chainId <= 0)\n    throw new InvalidChainIdError({ chainId });\n  if (maxPriorityFeePerGas || maxFeePerGas)\n    throw new BaseError(\"`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.\");\n  if (gasPrice && gasPrice > maxUint256)\n    throw new FeeCapTooHighError({ maxFeePerGas: gasPrice });\n}\n\n// node_modules/viem/_esm/utils/transaction/getTransactionType.js\nfunction getTransactionType(transaction) {\n  if (transaction.type)\n    return transaction.type;\n  if (typeof transaction.authorizationList !== \"undefined\")\n    return \"eip7702\";\n  if (typeof transaction.blobs !== \"undefined\" || typeof transaction.blobVersionedHashes !== \"undefined\" || typeof transaction.maxFeePerBlobGas !== \"undefined\" || typeof transaction.sidecars !== \"undefined\")\n    return \"eip4844\";\n  if (typeof transaction.maxFeePerGas !== \"undefined\" || typeof transaction.maxPriorityFeePerGas !== \"undefined\") {\n    return \"eip1559\";\n  }\n  if (typeof transaction.gasPrice !== \"undefined\") {\n    if (typeof transaction.accessList !== \"undefined\")\n      return \"eip2930\";\n    return \"legacy\";\n  }\n  throw new InvalidSerializableTransactionError({ transaction });\n}\n\n// node_modules/viem/_esm/utils/transaction/serializeAccessList.js\nfunction serializeAccessList(accessList) {\n  if (!accessList || accessList.length === 0)\n    return [];\n  const serializedAccessList = [];\n  for (let i = 0; i < accessList.length; i++) {\n    const { address, storageKeys } = accessList[i];\n    for (let j = 0; j < storageKeys.length; j++) {\n      if (storageKeys[j].length - 2 !== 64) {\n        throw new InvalidStorageKeySizeError({ storageKey: storageKeys[j] });\n      }\n    }\n    if (!isAddress(address, { strict: false })) {\n      throw new InvalidAddressError({ address });\n    }\n    serializedAccessList.push([address, storageKeys]);\n  }\n  return serializedAccessList;\n}\n\n// node_modules/viem/_esm/utils/transaction/serializeTransaction.js\nfunction serializeTransaction(transaction, signature) {\n  const type = getTransactionType(transaction);\n  if (type === \"eip1559\")\n    return serializeTransactionEIP1559(transaction, signature);\n  if (type === \"eip2930\")\n    return serializeTransactionEIP2930(transaction, signature);\n  if (type === \"eip4844\")\n    return serializeTransactionEIP4844(transaction, signature);\n  if (type === \"eip7702\")\n    return serializeTransactionEIP7702(transaction, signature);\n  return serializeTransactionLegacy(transaction, signature);\n}\nfunction serializeTransactionEIP7702(transaction, signature) {\n  const { authorizationList, chainId, gas, nonce, to, value, maxFeePerGas, maxPriorityFeePerGas, accessList, data } = transaction;\n  assertTransactionEIP7702(transaction);\n  const serializedAccessList = serializeAccessList(accessList);\n  const serializedAuthorizationList = serializeAuthorizationList(authorizationList);\n  return concatHex([\n    \"0x04\",\n    toRlp([\n      toHex(chainId),\n      nonce ? toHex(nonce) : \"0x\",\n      maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : \"0x\",\n      maxFeePerGas ? toHex(maxFeePerGas) : \"0x\",\n      gas ? toHex(gas) : \"0x\",\n      to ?? \"0x\",\n      value ? toHex(value) : \"0x\",\n      data ?? \"0x\",\n      serializedAccessList,\n      serializedAuthorizationList,\n      ...toYParitySignatureArray(transaction, signature)\n    ])\n  ]);\n}\nfunction serializeTransactionEIP4844(transaction, signature) {\n  const { chainId, gas, nonce, to, value, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, accessList, data } = transaction;\n  assertTransactionEIP4844(transaction);\n  let blobVersionedHashes = transaction.blobVersionedHashes;\n  let sidecars = transaction.sidecars;\n  if (transaction.blobs && (typeof blobVersionedHashes === \"undefined\" || typeof sidecars === \"undefined\")) {\n    const blobs2 = typeof transaction.blobs[0] === \"string\" ? transaction.blobs : transaction.blobs.map((x) => bytesToHex(x));\n    const kzg = transaction.kzg;\n    const commitments2 = blobsToCommitments({\n      blobs: blobs2,\n      kzg\n    });\n    if (typeof blobVersionedHashes === \"undefined\")\n      blobVersionedHashes = commitmentsToVersionedHashes({\n        commitments: commitments2\n      });\n    if (typeof sidecars === \"undefined\") {\n      const proofs2 = blobsToProofs({ blobs: blobs2, commitments: commitments2, kzg });\n      sidecars = toBlobSidecars({ blobs: blobs2, commitments: commitments2, proofs: proofs2 });\n    }\n  }\n  const serializedAccessList = serializeAccessList(accessList);\n  const serializedTransaction = [\n    toHex(chainId),\n    nonce ? toHex(nonce) : \"0x\",\n    maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : \"0x\",\n    maxFeePerGas ? toHex(maxFeePerGas) : \"0x\",\n    gas ? toHex(gas) : \"0x\",\n    to ?? \"0x\",\n    value ? toHex(value) : \"0x\",\n    data ?? \"0x\",\n    serializedAccessList,\n    maxFeePerBlobGas ? toHex(maxFeePerBlobGas) : \"0x\",\n    blobVersionedHashes ?? [],\n    ...toYParitySignatureArray(transaction, signature)\n  ];\n  const blobs = [];\n  const commitments = [];\n  const proofs = [];\n  if (sidecars)\n    for (let i = 0; i < sidecars.length; i++) {\n      const { blob, commitment, proof } = sidecars[i];\n      blobs.push(blob);\n      commitments.push(commitment);\n      proofs.push(proof);\n    }\n  return concatHex([\n    \"0x03\",\n    sidecars ? (\n      // If sidecars are enabled, envelope turns into a \"wrapper\":\n      toRlp([serializedTransaction, blobs, commitments, proofs])\n    ) : (\n      // If sidecars are disabled, standard envelope is used:\n      toRlp(serializedTransaction)\n    )\n  ]);\n}\nfunction serializeTransactionEIP1559(transaction, signature) {\n  const { chainId, gas, nonce, to, value, maxFeePerGas, maxPriorityFeePerGas, accessList, data } = transaction;\n  assertTransactionEIP1559(transaction);\n  const serializedAccessList = serializeAccessList(accessList);\n  const serializedTransaction = [\n    toHex(chainId),\n    nonce ? toHex(nonce) : \"0x\",\n    maxPriorityFeePerGas ? toHex(maxPriorityFeePerGas) : \"0x\",\n    maxFeePerGas ? toHex(maxFeePerGas) : \"0x\",\n    gas ? toHex(gas) : \"0x\",\n    to ?? \"0x\",\n    value ? toHex(value) : \"0x\",\n    data ?? \"0x\",\n    serializedAccessList,\n    ...toYParitySignatureArray(transaction, signature)\n  ];\n  return concatHex([\n    \"0x02\",\n    toRlp(serializedTransaction)\n  ]);\n}\nfunction serializeTransactionEIP2930(transaction, signature) {\n  const { chainId, gas, data, nonce, to, value, accessList, gasPrice } = transaction;\n  assertTransactionEIP2930(transaction);\n  const serializedAccessList = serializeAccessList(accessList);\n  const serializedTransaction = [\n    toHex(chainId),\n    nonce ? toHex(nonce) : \"0x\",\n    gasPrice ? toHex(gasPrice) : \"0x\",\n    gas ? toHex(gas) : \"0x\",\n    to ?? \"0x\",\n    value ? toHex(value) : \"0x\",\n    data ?? \"0x\",\n    serializedAccessList,\n    ...toYParitySignatureArray(transaction, signature)\n  ];\n  return concatHex([\n    \"0x01\",\n    toRlp(serializedTransaction)\n  ]);\n}\nfunction serializeTransactionLegacy(transaction, signature) {\n  const { chainId = 0, gas, data, nonce, to, value, gasPrice } = transaction;\n  assertTransactionLegacy(transaction);\n  let serializedTransaction = [\n    nonce ? toHex(nonce) : \"0x\",\n    gasPrice ? toHex(gasPrice) : \"0x\",\n    gas ? toHex(gas) : \"0x\",\n    to ?? \"0x\",\n    value ? toHex(value) : \"0x\",\n    data ?? \"0x\"\n  ];\n  if (signature) {\n    const v = (() => {\n      if (signature.v >= 35n) {\n        const inferredChainId = (signature.v - 35n) / 2n;\n        if (inferredChainId > 0)\n          return signature.v;\n        return 27n + (signature.v === 35n ? 0n : 1n);\n      }\n      if (chainId > 0)\n        return BigInt(chainId * 2) + BigInt(35n + signature.v - 27n);\n      const v2 = 27n + (signature.v === 27n ? 0n : 1n);\n      if (signature.v !== v2)\n        throw new InvalidLegacyVError({ v: signature.v });\n      return v2;\n    })();\n    const r = trim(signature.r);\n    const s = trim(signature.s);\n    serializedTransaction = [\n      ...serializedTransaction,\n      toHex(v),\n      r === \"0x00\" ? \"0x\" : r,\n      s === \"0x00\" ? \"0x\" : s\n    ];\n  } else if (chainId > 0) {\n    serializedTransaction = [\n      ...serializedTransaction,\n      toHex(chainId),\n      \"0x\",\n      \"0x\"\n    ];\n  }\n  return toRlp(serializedTransaction);\n}\nfunction toYParitySignatureArray(transaction, signature_) {\n  const signature = signature_ ?? transaction;\n  const { v, yParity } = signature;\n  if (typeof signature.r === \"undefined\")\n    return [];\n  if (typeof signature.s === \"undefined\")\n    return [];\n  if (typeof v === \"undefined\" && typeof yParity === \"undefined\")\n    return [];\n  const r = trim(signature.r);\n  const s = trim(signature.s);\n  const yParity_ = (() => {\n    if (typeof yParity === \"number\")\n      return yParity ? toHex(1) : \"0x\";\n    if (v === 0n)\n      return \"0x\";\n    if (v === 1n)\n      return toHex(1);\n    return v === 27n ? \"0x\" : toHex(1);\n  })();\n  return [yParity_, r === \"0x00\" ? \"0x\" : r, s === \"0x00\" ? \"0x\" : s];\n}\n\n// node_modules/viem/_esm/utils/promise/withDedupe.js\nvar promiseCache = new LruMap(8192);\n\n// node_modules/viem/_esm/utils/chain/defineChain.js\nfunction defineChain(chain) {\n  return {\n    formatters: void 0,\n    fees: void 0,\n    serializers: void 0,\n    ...chain\n  };\n}\n\n// node_modules/viem/_esm/utils/rpc/id.js\nfunction createIdStore() {\n  return {\n    current: 0,\n    take() {\n      return this.current++;\n    },\n    reset() {\n      this.current = 0;\n    }\n  };\n}\nvar idCache = createIdStore();\n\n// node_modules/viem/_esm/utils/abi/decodeEventLog.js\nvar docsPath = \"/docs/contract/decodeEventLog\";\nfunction decodeEventLog(parameters) {\n  const { abi, data, strict: strict_, topics } = parameters;\n  const strict = strict_ ?? true;\n  const [signature, ...argTopics] = topics;\n  if (!signature)\n    throw new AbiEventSignatureEmptyTopicsError({ docsPath });\n  const abiItem = (() => {\n    if (abi.length === 1)\n      return abi[0];\n    return abi.find((x) => x.type === \"event\" && signature === toEventSelector(formatAbiItem(x)));\n  })();\n  if (!(abiItem && \"name\" in abiItem) || abiItem.type !== \"event\")\n    throw new AbiEventSignatureNotFoundError(signature, { docsPath });\n  const { name, inputs } = abiItem;\n  const isUnnamed = inputs == null ? void 0 : inputs.some((x) => !(\"name\" in x && x.name));\n  let args = isUnnamed ? [] : {};\n  const indexedInputs = inputs.filter((x) => \"indexed\" in x && x.indexed);\n  for (let i = 0; i < indexedInputs.length; i++) {\n    const param = indexedInputs[i];\n    const topic = argTopics[i];\n    if (!topic)\n      throw new DecodeLogTopicsMismatch({\n        abiItem,\n        param\n      });\n    args[isUnnamed ? i : param.name || i] = decodeTopic({ param, value: topic });\n  }\n  const nonIndexedInputs = inputs.filter((x) => !(\"indexed\" in x && x.indexed));\n  if (nonIndexedInputs.length > 0) {\n    if (data && data !== \"0x\") {\n      try {\n        const decodedData = decodeAbiParameters(nonIndexedInputs, data);\n        if (decodedData) {\n          if (isUnnamed)\n            args = [...args, ...decodedData];\n          else {\n            for (let i = 0; i < nonIndexedInputs.length; i++) {\n              args[nonIndexedInputs[i].name] = decodedData[i];\n            }\n          }\n        }\n      } catch (err) {\n        if (strict) {\n          if (err instanceof AbiDecodingDataSizeTooSmallError || err instanceof PositionOutOfBoundsError)\n            throw new DecodeLogDataMismatch({\n              abiItem,\n              data,\n              params: nonIndexedInputs,\n              size: size(data)\n            });\n          throw err;\n        }\n      }\n    } else if (strict) {\n      throw new DecodeLogDataMismatch({\n        abiItem,\n        data: \"0x\",\n        params: nonIndexedInputs,\n        size: 0\n      });\n    }\n  }\n  return {\n    eventName: name,\n    args: Object.values(args).length > 0 ? args : void 0\n  };\n}\nfunction decodeTopic({ param, value }) {\n  if (param.type === \"string\" || param.type === \"bytes\" || param.type === \"tuple\" || param.type.match(/^(.*)\\[(\\d+)?\\]$/))\n    return value;\n  const decodedArg = decodeAbiParameters([param], value) || [];\n  return decodedArg[0];\n}\n\n// node_modules/viem/_esm/errors/log.js\nvar FilterTypeNotSupportedError = class extends BaseError {\n  constructor(type) {\n    super(`Filter type \"${type}\" is not supported.`, {\n      name: \"FilterTypeNotSupportedError\"\n    });\n  }\n};\n\n// node_modules/viem/_esm/utils/abi/encodeEventTopics.js\nvar docsPath2 = \"/docs/contract/encodeEventTopics\";\nfunction encodeEventTopics(parameters) {\n  var _a;\n  const { abi, eventName, args } = parameters;\n  let abiItem = abi[0];\n  if (eventName) {\n    const item = getAbiItem({ abi, name: eventName });\n    if (!item)\n      throw new AbiEventNotFoundError(eventName, { docsPath: docsPath2 });\n    abiItem = item;\n  }\n  if (abiItem.type !== \"event\")\n    throw new AbiEventNotFoundError(void 0, { docsPath: docsPath2 });\n  const definition = formatAbiItem(abiItem);\n  const signature = toEventSelector(definition);\n  let topics = [];\n  if (args && \"inputs\" in abiItem) {\n    const indexedInputs = (_a = abiItem.inputs) == null ? void 0 : _a.filter((param) => \"indexed\" in param && param.indexed);\n    const args_ = Array.isArray(args) ? args : Object.values(args).length > 0 ? (indexedInputs == null ? void 0 : indexedInputs.map((x) => args[x.name])) ?? [] : [];\n    if (args_.length > 0) {\n      topics = (indexedInputs == null ? void 0 : indexedInputs.map((param, i) => {\n        if (Array.isArray(args_[i]))\n          return args_[i].map((_, j) => encodeArg({ param, value: args_[i][j] }));\n        return args_[i] ? encodeArg({ param, value: args_[i] }) : null;\n      })) ?? [];\n    }\n  }\n  return [signature, ...topics];\n}\nfunction encodeArg({ param, value }) {\n  if (param.type === \"string\" || param.type === \"bytes\")\n    return keccak256(toBytes(value));\n  if (param.type === \"tuple\" || param.type.match(/^(.*)\\[(\\d+)?\\]$/))\n    throw new FilterTypeNotSupportedError(param.type);\n  return encodeAbiParameters([param], [value]);\n}\n\n// node_modules/viem/_esm/utils/abi/parseEventLogs.js\nfunction parseEventLogs(parameters) {\n  const { abi, args, logs, strict = true } = parameters;\n  const eventName = (() => {\n    if (!parameters.eventName)\n      return void 0;\n    if (Array.isArray(parameters.eventName))\n      return parameters.eventName;\n    return [parameters.eventName];\n  })();\n  return logs.map((log) => {\n    var _a;\n    try {\n      const abiItem = abi.find((abiItem2) => abiItem2.type === \"event\" && log.topics[0] === toEventSelector(abiItem2));\n      if (!abiItem)\n        return null;\n      const event = decodeEventLog({\n        ...log,\n        abi: [abiItem],\n        strict\n      });\n      if (eventName && !eventName.includes(event.eventName))\n        return null;\n      if (!includesArgs({\n        args: event.args,\n        inputs: abiItem.inputs,\n        matchArgs: args\n      }))\n        return null;\n      return { ...event, ...log };\n    } catch (err) {\n      let eventName2;\n      let isUnnamed;\n      if (err instanceof AbiEventSignatureNotFoundError)\n        return null;\n      if (err instanceof DecodeLogDataMismatch || err instanceof DecodeLogTopicsMismatch) {\n        if (strict)\n          return null;\n        eventName2 = err.abiItem.name;\n        isUnnamed = (_a = err.abiItem.inputs) == null ? void 0 : _a.some((x) => !(\"name\" in x && x.name));\n      }\n      return { ...log, args: isUnnamed ? [] : {}, eventName: eventName2 };\n    }\n  }).filter(Boolean);\n}\nfunction includesArgs(parameters) {\n  const { args, inputs, matchArgs } = parameters;\n  if (!matchArgs)\n    return true;\n  if (!args)\n    return false;\n  function isEqual(input, value, arg) {\n    try {\n      if (input.type === \"address\")\n        return isAddressEqual(value, arg);\n      if (input.type === \"string\" || input.type === \"bytes\")\n        return keccak256(toBytes(value)) === arg;\n      return value === arg;\n    } catch {\n      return false;\n    }\n  }\n  if (Array.isArray(args) && Array.isArray(matchArgs)) {\n    return matchArgs.every((value, index) => {\n      if (value === null || value === void 0)\n        return true;\n      const input = inputs[index];\n      if (!input)\n        return false;\n      const value_ = Array.isArray(value) ? value : [value];\n      return value_.some((value2) => isEqual(input, value2, args[index]));\n    });\n  }\n  if (typeof args === \"object\" && !Array.isArray(args) && typeof matchArgs === \"object\" && !Array.isArray(matchArgs))\n    return Object.entries(matchArgs).every(([key, value]) => {\n      if (value === null || value === void 0)\n        return true;\n      const input = inputs.find((input2) => input2.name === key);\n      if (!input)\n        return false;\n      const value_ = Array.isArray(value) ? value : [value];\n      return value_.some((value2) => isEqual(input, value2, args[key]));\n    });\n  return false;\n}\n\n// node_modules/viem/_esm/utils/abi/encodePacked.js\nfunction encodePacked(types, values) {\n  if (types.length !== values.length)\n    throw new AbiEncodingLengthMismatchError({\n      expectedLength: types.length,\n      givenLength: values.length\n    });\n  const data = [];\n  for (let i = 0; i < types.length; i++) {\n    const type = types[i];\n    const value = values[i];\n    data.push(encode(type, value));\n  }\n  return concatHex(data);\n}\nfunction encode(type, value, isArray = false) {\n  if (type === \"address\") {\n    const address = value;\n    if (!isAddress(address))\n      throw new InvalidAddressError({ address });\n    return pad(address.toLowerCase(), {\n      size: isArray ? 32 : null\n    });\n  }\n  if (type === \"string\")\n    return stringToHex(value);\n  if (type === \"bytes\")\n    return value;\n  if (type === \"bool\")\n    return pad(boolToHex(value), { size: isArray ? 32 : 1 });\n  const intMatch = type.match(integerRegex);\n  if (intMatch) {\n    const [_type, baseType, bits = \"256\"] = intMatch;\n    const size2 = Number.parseInt(bits) / 8;\n    return numberToHex(value, {\n      size: isArray ? 32 : size2,\n      signed: baseType === \"int\"\n    });\n  }\n  const bytesMatch = type.match(bytesRegex);\n  if (bytesMatch) {\n    const [_type, size2] = bytesMatch;\n    if (Number.parseInt(size2) !== (value.length - 2) / 2)\n      throw new BytesSizeMismatchError({\n        expectedSize: Number.parseInt(size2),\n        givenSize: (value.length - 2) / 2\n      });\n    return pad(value, { dir: \"right\", size: isArray ? 32 : null });\n  }\n  const arrayMatch = type.match(arrayRegex);\n  if (arrayMatch && Array.isArray(value)) {\n    const [_type, childType] = arrayMatch;\n    const data = [];\n    for (let i = 0; i < value.length; i++) {\n      data.push(encode(childType, value[i], true));\n    }\n    if (data.length === 0)\n      return \"0x\";\n    return concatHex(data);\n  }\n  throw new UnsupportedPackedAbiType(type);\n}\n\n// node_modules/viem/_esm/utils/formatters/transaction.js\nvar transactionType = {\n  \"0x0\": \"legacy\",\n  \"0x1\": \"eip2930\",\n  \"0x2\": \"eip1559\",\n  \"0x3\": \"eip4844\",\n  \"0x4\": \"eip7702\"\n};\nfunction formatTransaction(transaction) {\n  const transaction_ = {\n    ...transaction,\n    blockHash: transaction.blockHash ? transaction.blockHash : null,\n    blockNumber: transaction.blockNumber ? BigInt(transaction.blockNumber) : null,\n    chainId: transaction.chainId ? hexToNumber(transaction.chainId) : void 0,\n    gas: transaction.gas ? BigInt(transaction.gas) : void 0,\n    gasPrice: transaction.gasPrice ? BigInt(transaction.gasPrice) : void 0,\n    maxFeePerBlobGas: transaction.maxFeePerBlobGas ? BigInt(transaction.maxFeePerBlobGas) : void 0,\n    maxFeePerGas: transaction.maxFeePerGas ? BigInt(transaction.maxFeePerGas) : void 0,\n    maxPriorityFeePerGas: transaction.maxPriorityFeePerGas ? BigInt(transaction.maxPriorityFeePerGas) : void 0,\n    nonce: transaction.nonce ? hexToNumber(transaction.nonce) : void 0,\n    to: transaction.to ? transaction.to : null,\n    transactionIndex: transaction.transactionIndex ? Number(transaction.transactionIndex) : null,\n    type: transaction.type ? transactionType[transaction.type] : void 0,\n    typeHex: transaction.type ? transaction.type : void 0,\n    value: transaction.value ? BigInt(transaction.value) : void 0,\n    v: transaction.v ? BigInt(transaction.v) : void 0\n  };\n  if (transaction.authorizationList)\n    transaction_.authorizationList = formatAuthorizationList(transaction.authorizationList);\n  transaction_.yParity = (() => {\n    if (transaction.yParity)\n      return Number(transaction.yParity);\n    if (typeof transaction_.v === \"bigint\") {\n      if (transaction_.v === 0n || transaction_.v === 27n)\n        return 0;\n      if (transaction_.v === 1n || transaction_.v === 28n)\n        return 1;\n      if (transaction_.v >= 35n)\n        return transaction_.v % 2n === 0n ? 1 : 0;\n    }\n    return void 0;\n  })();\n  if (transaction_.type === \"legacy\") {\n    delete transaction_.accessList;\n    delete transaction_.maxFeePerBlobGas;\n    delete transaction_.maxFeePerGas;\n    delete transaction_.maxPriorityFeePerGas;\n    delete transaction_.yParity;\n  }\n  if (transaction_.type === \"eip2930\") {\n    delete transaction_.maxFeePerBlobGas;\n    delete transaction_.maxFeePerGas;\n    delete transaction_.maxPriorityFeePerGas;\n  }\n  if (transaction_.type === \"eip1559\") {\n    delete transaction_.maxFeePerBlobGas;\n  }\n  return transaction_;\n}\nvar defineTransaction = defineFormatter(\"transaction\", formatTransaction);\nfunction formatAuthorizationList(authorizationList) {\n  return authorizationList.map((authorization) => ({\n    contractAddress: authorization.address,\n    chainId: Number(authorization.chainId),\n    nonce: Number(authorization.nonce),\n    r: authorization.r,\n    s: authorization.s,\n    yParity: Number(authorization.yParity)\n  }));\n}\n\n// node_modules/viem/_esm/utils/formatters/block.js\nfunction formatBlock(block) {\n  var _a;\n  const transactions = (_a = block.transactions) == null ? void 0 : _a.map((transaction) => {\n    if (typeof transaction === \"string\")\n      return transaction;\n    return formatTransaction(transaction);\n  });\n  return {\n    ...block,\n    baseFeePerGas: block.baseFeePerGas ? BigInt(block.baseFeePerGas) : null,\n    blobGasUsed: block.blobGasUsed ? BigInt(block.blobGasUsed) : void 0,\n    difficulty: block.difficulty ? BigInt(block.difficulty) : void 0,\n    excessBlobGas: block.excessBlobGas ? BigInt(block.excessBlobGas) : void 0,\n    gasLimit: block.gasLimit ? BigInt(block.gasLimit) : void 0,\n    gasUsed: block.gasUsed ? BigInt(block.gasUsed) : void 0,\n    hash: block.hash ? block.hash : null,\n    logsBloom: block.logsBloom ? block.logsBloom : null,\n    nonce: block.nonce ? block.nonce : null,\n    number: block.number ? BigInt(block.number) : null,\n    size: block.size ? BigInt(block.size) : void 0,\n    timestamp: block.timestamp ? BigInt(block.timestamp) : void 0,\n    transactions,\n    totalDifficulty: block.totalDifficulty ? BigInt(block.totalDifficulty) : null\n  };\n}\nvar defineBlock = defineFormatter(\"block\", formatBlock);\n\n// node_modules/viem/_esm/utils/formatters/log.js\nfunction formatLog(log, { args, eventName } = {}) {\n  return {\n    ...log,\n    blockHash: log.blockHash ? log.blockHash : null,\n    blockNumber: log.blockNumber ? BigInt(log.blockNumber) : null,\n    logIndex: log.logIndex ? Number(log.logIndex) : null,\n    transactionHash: log.transactionHash ? log.transactionHash : null,\n    transactionIndex: log.transactionIndex ? Number(log.transactionIndex) : null,\n    ...eventName ? { args, eventName } : {}\n  };\n}\n\n// node_modules/viem/_esm/utils/formatters/transactionReceipt.js\nvar receiptStatuses = {\n  \"0x0\": \"reverted\",\n  \"0x1\": \"success\"\n};\nfunction formatTransactionReceipt(transactionReceipt) {\n  const receipt = {\n    ...transactionReceipt,\n    blockNumber: transactionReceipt.blockNumber ? BigInt(transactionReceipt.blockNumber) : null,\n    contractAddress: transactionReceipt.contractAddress ? transactionReceipt.contractAddress : null,\n    cumulativeGasUsed: transactionReceipt.cumulativeGasUsed ? BigInt(transactionReceipt.cumulativeGasUsed) : null,\n    effectiveGasPrice: transactionReceipt.effectiveGasPrice ? BigInt(transactionReceipt.effectiveGasPrice) : null,\n    gasUsed: transactionReceipt.gasUsed ? BigInt(transactionReceipt.gasUsed) : null,\n    logs: transactionReceipt.logs ? transactionReceipt.logs.map((log) => formatLog(log)) : null,\n    to: transactionReceipt.to ? transactionReceipt.to : null,\n    transactionIndex: transactionReceipt.transactionIndex ? hexToNumber(transactionReceipt.transactionIndex) : null,\n    status: transactionReceipt.status ? receiptStatuses[transactionReceipt.status] : null,\n    type: transactionReceipt.type ? transactionType[transactionReceipt.type] || transactionReceipt.type : null\n  };\n  if (transactionReceipt.blobGasPrice)\n    receipt.blobGasPrice = BigInt(transactionReceipt.blobGasPrice);\n  if (transactionReceipt.blobGasUsed)\n    receipt.blobGasUsed = BigInt(transactionReceipt.blobGasUsed);\n  return receipt;\n}\nvar defineTransactionReceipt = defineFormatter(\"transactionReceipt\", formatTransactionReceipt);\n\n// node_modules/@noble/hashes/esm/ripemd160.js\nvar Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nvar Id = new Uint8Array(new Array(16).fill(0).map((_, i) => i));\nvar Pi = Id.map((i) => (9 * i + 5) % 16);\nvar idxL = [Id];\nvar idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n  for (let j of [idxL, idxR])\n    j.push(j[i].map((k) => Rho[k]));\nvar shifts = [\n  [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n  [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n  [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n  [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n  [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5]\n].map((i) => new Uint8Array(i));\nvar shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nvar shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nvar Kl = new Uint32Array([\n  0,\n  1518500249,\n  1859775393,\n  2400959708,\n  2840853838\n]);\nvar Kr = new Uint32Array([\n  1352829926,\n  1548603684,\n  1836072691,\n  2053994217,\n  0\n]);\nfunction f(group, x, y, z) {\n  if (group === 0)\n    return x ^ y ^ z;\n  else if (group === 1)\n    return x & y | ~x & z;\n  else if (group === 2)\n    return (x | ~y) ^ z;\n  else if (group === 3)\n    return x & z | y & ~z;\n  else\n    return x ^ (y | ~z);\n}\nvar R_BUF = new Uint32Array(16);\nvar RIPEMD160 = class extends HashMD {\n  constructor() {\n    super(64, 20, 8, true);\n    this.h0 = 1732584193 | 0;\n    this.h1 = 4023233417 | 0;\n    this.h2 = 2562383102 | 0;\n    this.h3 = 271733878 | 0;\n    this.h4 = 3285377520 | 0;\n  }\n  get() {\n    const { h0, h1, h2, h3, h4 } = this;\n    return [h0, h1, h2, h3, h4];\n  }\n  set(h0, h1, h2, h3, h4) {\n    this.h0 = h0 | 0;\n    this.h1 = h1 | 0;\n    this.h2 = h2 | 0;\n    this.h3 = h3 | 0;\n    this.h4 = h4 | 0;\n  }\n  process(view, offset) {\n    for (let i = 0; i < 16; i++, offset += 4)\n      R_BUF[i] = view.getUint32(offset, true);\n    let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n    for (let group = 0; group < 5; group++) {\n      const rGroup = 4 - group;\n      const hbl = Kl[group], hbr = Kr[group];\n      const rl = idxL[group], rr = idxR[group];\n      const sl = shiftsL[group], sr = shiftsR[group];\n      for (let i = 0; i < 16; i++) {\n        const tl = rotl(al + f(group, bl, cl, dl) + R_BUF[rl[i]] + hbl, sl[i]) + el | 0;\n        al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl;\n      }\n      for (let i = 0; i < 16; i++) {\n        const tr = rotl(ar + f(rGroup, br, cr, dr) + R_BUF[rr[i]] + hbr, sr[i]) + er | 0;\n        ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr;\n      }\n    }\n    this.set(this.h1 + cl + dr | 0, this.h2 + dl + er | 0, this.h3 + el + ar | 0, this.h4 + al + br | 0, this.h0 + bl + cr | 0);\n  }\n  roundClean() {\n    R_BUF.fill(0);\n  }\n  destroy() {\n    this.destroyed = true;\n    this.buffer.fill(0);\n    this.set(0, 0, 0, 0, 0);\n  }\n};\nvar ripemd160 = wrapConstructor(() => new RIPEMD160());\n\n// node_modules/viem/_esm/actions/public/getTransactionCount.js\nasync function getTransactionCount(client, { address, blockTag = \"latest\", blockNumber }) {\n  const count = await client.request({\n    method: \"eth_getTransactionCount\",\n    params: [address, blockNumber ? numberToHex(blockNumber) : blockTag]\n  }, { dedupe: Boolean(blockNumber) });\n  return hexToNumber(count);\n}\n\n// node_modules/viem/_esm/utils/nonceManager.js\nfunction createNonceManager(parameters) {\n  const { source } = parameters;\n  const deltaMap = /* @__PURE__ */ new Map();\n  const nonceMap = new LruMap(8192);\n  const promiseMap = /* @__PURE__ */ new Map();\n  const getKey = ({ address, chainId }) => `${address}.${chainId}`;\n  return {\n    async consume({ address, chainId, client }) {\n      const key = getKey({ address, chainId });\n      const promise = this.get({ address, chainId, client });\n      this.increment({ address, chainId });\n      const nonce = await promise;\n      await source.set({ address, chainId }, nonce);\n      nonceMap.set(key, nonce);\n      return nonce;\n    },\n    async increment({ address, chainId }) {\n      const key = getKey({ address, chainId });\n      const delta = deltaMap.get(key) ?? 0;\n      deltaMap.set(key, delta + 1);\n    },\n    async get({ address, chainId, client }) {\n      const key = getKey({ address, chainId });\n      let promise = promiseMap.get(key);\n      if (!promise) {\n        promise = (async () => {\n          try {\n            const nonce = await source.get({ address, chainId, client });\n            const previousNonce = nonceMap.get(key) ?? 0;\n            if (previousNonce > 0 && nonce <= previousNonce)\n              return previousNonce + 1;\n            nonceMap.delete(key);\n            return nonce;\n          } finally {\n            this.reset({ address, chainId });\n          }\n        })();\n        promiseMap.set(key, promise);\n      }\n      const delta = deltaMap.get(key) ?? 0;\n      return delta + await promise;\n    },\n    reset({ address, chainId }) {\n      const key = getKey({ address, chainId });\n      deltaMap.delete(key);\n      promiseMap.delete(key);\n    }\n  };\n}\nfunction jsonRpc() {\n  return {\n    async get(parameters) {\n      const { address, client } = parameters;\n      return getTransactionCount(client, {\n        address,\n        blockTag: \"pending\"\n      });\n    },\n    set() {\n    }\n  };\n}\nvar nonceManager = createNonceManager({\n  source: jsonRpc()\n});\n\nexport {\n  encodeEventTopics,\n  toRlp,\n  formatTransaction,\n  defineTransaction,\n  formatBlock,\n  defineBlock,\n  sha2562 as sha256,\n  parseEventLogs,\n  formatLog,\n  defineChain,\n  hashTypedData,\n  serializeTypedData,\n  validateTypedData,\n  getTypesForEIP712Domain,\n  encodePacked,\n  formatTransactionReceipt,\n  defineTransactionReceipt,\n  hashMessage,\n  serializeTransaction\n};\n//# sourceMappingURL=chunk-LO5SQBMX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-M3WBOOWW.js",
    "content": "import {\n  isERC1155,\n  isERC721\n} from \"./chunk-QLCPWJYR.js\";\nimport {\n  getCurrencyMetadata\n} from \"./chunk-GGVPULQZ.js\";\nimport {\n  eth_getBlockByNumber\n} from \"./chunk-CXAZLQ2Z.js\";\nimport {\n  toTokens\n} from \"./chunk-UY2SRO54.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/marketplace/utils.js\nasync function getNFTAsset(options) {\n  const [erc721, erc1155] = await Promise.all([\n    isERC721(options),\n    isERC1155(options)\n  ]);\n  switch (true) {\n    case erc721: {\n      const { getNFT } = await import(\"./getNFT-T7TVIXIV.js\");\n      return getNFT(options);\n    }\n    case erc1155: {\n      const { getNFT } = await import(\"./getNFT-CWYYXL36.js\");\n      return getNFT(options);\n    }\n    default: {\n      throw new Error(\"Contract is neither ERC721 nor ERC1155.\");\n    }\n  }\n}\nfunction computeStatus(options) {\n  switch (options.listingStatus) {\n    case 1: {\n      if (options.startTimestamp > options.blockTimeStamp) {\n        return \"CREATED\";\n      }\n      if (options.endTimestamp < options.blockTimeStamp) {\n        return \"EXPIRED\";\n      }\n      return \"ACTIVE\";\n    }\n    case 2: {\n      return \"COMPLETED\";\n    }\n    case 3: {\n      return \"CANCELLED\";\n    }\n    default: {\n      throw new Error(`Invalid listing status: \"${options.listingStatus}\"`);\n    }\n  }\n}\n\n// node_modules/thirdweb/dist/esm/extensions/marketplace/direct-listings/utils.js\nasync function mapDirectListing(options) {\n  const { latestBlock, rawListing } = options;\n  const status = computeStatus({\n    listingStatus: rawListing.status,\n    blockTimeStamp: latestBlock.timestamp,\n    startTimestamp: rawListing.startTimestamp,\n    endTimestamp: rawListing.endTimestamp\n  });\n  const [currencyValuePerToken, nftAsset] = await Promise.all([\n    getCurrencyMetadata({\n      contract: getContract({\n        ...options.contract,\n        address: rawListing.currency\n      })\n    }),\n    getNFTAsset({\n      ...options,\n      contract: getContract({\n        ...options.contract,\n        address: rawListing.assetContract\n      }),\n      tokenId: rawListing.tokenId\n    })\n  ]);\n  return {\n    id: rawListing.listingId,\n    creatorAddress: rawListing.listingCreator,\n    assetContractAddress: rawListing.assetContract,\n    tokenId: rawListing.tokenId,\n    quantity: rawListing.quantity,\n    currencyContractAddress: rawListing.currency,\n    currencyValuePerToken: {\n      ...currencyValuePerToken,\n      value: rawListing.pricePerToken,\n      displayValue: toTokens(rawListing.pricePerToken, currencyValuePerToken.decimals)\n    },\n    pricePerToken: rawListing.pricePerToken,\n    asset: nftAsset,\n    startTimeInSeconds: rawListing.startTimestamp,\n    endTimeInSeconds: rawListing.endTimestamp,\n    isReservedListing: rawListing.reserved,\n    status,\n    type: \"direct-listing\"\n  };\n}\nasync function isListingValid(options) {\n  const assetContract = getContract({\n    ...options.contract,\n    address: options.listing.assetContractAddress\n  });\n  const [erc721, erc1155] = await Promise.all([\n    isERC721({ contract: assetContract }),\n    isERC1155({ contract: assetContract })\n  ]);\n  if (erc721) {\n    const [{ isApprovedForAll }, { getApproved }, { ownerOf }] = await Promise.all([\n      import(\"./isApprovedForAll-CG3FQCVQ.js\"),\n      import(\"./getApproved-UMVYKWJJ.js\"),\n      import(\"./ownerOf-JJ32SN7R.js\")\n    ]);\n    const [approvedForAll, approvedOperator, tokenOwner] = await Promise.all([\n      isApprovedForAll({\n        contract: assetContract,\n        owner: options.listing.creatorAddress,\n        // the marketplace contract address has to be approved to transfer the token\n        operator: options.contract.address\n      }),\n      getApproved({\n        contract: assetContract,\n        tokenId: options.listing.tokenId\n      }).catch(() => \"\"),\n      ownerOf({\n        contract: assetContract,\n        tokenId: options.listing.tokenId\n      })\n    ]);\n    if (!approvedForAll && approvedOperator !== options.contract.address) {\n      return { valid: false, reason: \"Asset not approved for marketplace.\" };\n    }\n    if (tokenOwner !== options.listing.creatorAddress) {\n      return {\n        valid: false,\n        reason: \"Listing creator no longer owns this token.\"\n      };\n    }\n    return {\n      valid: true\n    };\n  }\n  if (erc1155) {\n    const [{ isApprovedForAll }, { balanceOf }] = await Promise.all([\n      import(\"./isApprovedForAll-JGBKL36G.js\"),\n      import(\"./balanceOf-77XLALLF.js\")\n    ]);\n    const [approvedForAll, balance] = await Promise.all([\n      isApprovedForAll({\n        contract: assetContract,\n        owner: options.listing.creatorAddress,\n        // the marketplace contract address has to be approved to transfer the token\n        operator: options.contract.address\n      }),\n      balanceOf({\n        contract: assetContract,\n        owner: options.listing.creatorAddress,\n        tokenId: options.listing.tokenId\n      })\n    ]);\n    if (!approvedForAll) {\n      return { valid: false, reason: \"Asset not approved for marketplace.\" };\n    }\n    const quantityWanted = options.quantity || options.listing.quantity;\n    if (balance < quantityWanted) {\n      return {\n        valid: false,\n        reason: \"Seller does not have enough balance of token to fulfill order.\"\n      };\n    }\n    return {\n      valid: true\n    };\n  }\n  return {\n    valid: false,\n    reason: \"AssetContract must implement ERC 1155 or ERC 721.\"\n  };\n}\n\n// node_modules/thirdweb/dist/esm/extensions/marketplace/__generated__/IDirectListings/read/getListing.js\nvar FN_SELECTOR = \"0x107a274a\";\nvar FN_INPUTS = [\n  {\n    type: \"uint256\",\n    name: \"_listingId\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"tuple\",\n    name: \"listing\",\n    components: [\n      {\n        type: \"uint256\",\n        name: \"listingId\"\n      },\n      {\n        type: \"uint256\",\n        name: \"tokenId\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantity\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"uint128\",\n        name: \"startTimestamp\"\n      },\n      {\n        type: \"uint128\",\n        name: \"endTimestamp\"\n      },\n      {\n        type: \"address\",\n        name: \"listingCreator\"\n      },\n      {\n        type: \"address\",\n        name: \"assetContract\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      },\n      {\n        type: \"uint8\",\n        name: \"tokenType\"\n      },\n      {\n        type: \"uint8\",\n        name: \"status\"\n      },\n      {\n        type: \"bool\",\n        name: \"reserved\"\n      }\n    ]\n  }\n];\nfunction isGetListingSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nasync function getListing(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.listingId]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/marketplace/direct-listings/read/getListing.js\nasync function getListing2(options) {\n  const rpcClient = getRpcClient(options.contract);\n  const [rawListing, latestBlock] = await Promise.all([\n    getListing(options),\n    eth_getBlockByNumber(rpcClient, {\n      blockTag: \"latest\"\n    })\n  ]);\n  return mapDirectListing({\n    contract: options.contract,\n    latestBlock,\n    rawListing\n  });\n}\nfunction isGetListingSupported2(availableSelectors) {\n  return isGetListingSupported(availableSelectors);\n}\n\nexport {\n  isListingValid,\n  getListing2 as getListing,\n  isGetListingSupported2 as isGetListingSupported\n};\n//# sourceMappingURL=chunk-M3WBOOWW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-ME5GAE4N.js",
    "content": "// node_modules/@noble/hashes/esm/crypto.js\nvar crypto = typeof globalThis === \"object\" && \"crypto\" in globalThis ? globalThis.crypto : void 0;\n\n// node_modules/@noble/hashes/esm/_assert.js\nfunction number(n) {\n  if (!Number.isSafeInteger(n) || n < 0)\n    throw new Error(`positive integer expected, not ${n}`);\n}\nfunction isBytes(a) {\n  return a instanceof Uint8Array || a != null && typeof a === \"object\" && a.constructor.name === \"Uint8Array\";\n}\nfunction bytes(b, ...lengths) {\n  if (!isBytes(b))\n    throw new Error(\"Uint8Array expected\");\n  if (lengths.length > 0 && !lengths.includes(b.length))\n    throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b.length}`);\n}\nfunction hash(h) {\n  if (typeof h !== \"function\" || typeof h.create !== \"function\")\n    throw new Error(\"Hash should be wrapped by utils.wrapConstructor\");\n  number(h.outputLen);\n  number(h.blockLen);\n}\nfunction exists(instance, checkFinished = true) {\n  if (instance.destroyed)\n    throw new Error(\"Hash instance has been destroyed\");\n  if (checkFinished && instance.finished)\n    throw new Error(\"Hash#digest() has already been called\");\n}\nfunction output(out, instance) {\n  bytes(out);\n  const min = instance.outputLen;\n  if (out.length < min) {\n    throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n  }\n}\n\n// node_modules/@noble/hashes/esm/utils.js\nvar u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nvar createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nvar rotr = (word, shift) => word << 32 - shift | word >>> shift;\nvar rotl = (word, shift) => word << shift | word >>> 32 - shift >>> 0;\nvar isLE = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68;\nvar byteSwap = (word) => word << 24 & 4278190080 | word << 8 & 16711680 | word >>> 8 & 65280 | word >>> 24 & 255;\nfunction byteSwap32(arr) {\n  for (let i = 0; i < arr.length; i++) {\n    arr[i] = byteSwap(arr[i]);\n  }\n}\nvar hexes = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\nfunction bytesToHex(bytes2) {\n  bytes(bytes2);\n  let hex = \"\";\n  for (let i = 0; i < bytes2.length; i++) {\n    hex += hexes[bytes2[i]];\n  }\n  return hex;\n}\nfunction utf8ToBytes(str) {\n  if (typeof str !== \"string\")\n    throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n  return new Uint8Array(new TextEncoder().encode(str));\n}\nfunction toBytes(data) {\n  if (typeof data === \"string\")\n    data = utf8ToBytes(data);\n  bytes(data);\n  return data;\n}\nfunction concatBytes(...arrays) {\n  let sum = 0;\n  for (let i = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    bytes(a);\n    sum += a.length;\n  }\n  const res = new Uint8Array(sum);\n  for (let i = 0, pad = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    res.set(a, pad);\n    pad += a.length;\n  }\n  return res;\n}\nvar Hash = class {\n  // Safe version that clones internal state\n  clone() {\n    return this._cloneInto();\n  }\n};\nvar toStr = {}.toString;\nfunction wrapConstructor(hashCons) {\n  const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n  const tmp = hashCons();\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = () => hashCons();\n  return hashC;\n}\nfunction wrapXOFConstructorWithOpts(hashCons) {\n  const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({});\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts) => hashCons(opts);\n  return hashC;\n}\nfunction randomBytes(bytesLength = 32) {\n  if (crypto && typeof crypto.getRandomValues === \"function\") {\n    return crypto.getRandomValues(new Uint8Array(bytesLength));\n  }\n  if (crypto && typeof crypto.randomBytes === \"function\") {\n    return crypto.randomBytes(bytesLength);\n  }\n  throw new Error(\"crypto.getRandomValues must be defined\");\n}\n\nexport {\n  number,\n  bytes,\n  hash,\n  exists,\n  output,\n  u32,\n  createView,\n  rotr,\n  rotl,\n  isLE,\n  byteSwap32,\n  bytesToHex,\n  toBytes,\n  concatBytes,\n  Hash,\n  wrapConstructor,\n  wrapXOFConstructorWithOpts,\n  randomBytes\n};\n/*! Bundled license information:\n\n@noble/hashes/esm/utils.js:\n  (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n*/\n//# sourceMappingURL=chunk-ME5GAE4N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-MGEBXLXC.js",
    "content": "import {\n  Button,\n  Container,\n  Line,\n  ModalHeader,\n  ReloadIcon,\n  Spacer,\n  StyledDiv,\n  Text,\n  WalletImage,\n  fadeInAnimation,\n  iconSize,\n  keyframes,\n  radius,\n  spacing,\n  useCustomTheme\n} from \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/ConnectingScreen.js\nvar import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/screens/WalletLogoSpinner.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nfunction WalletLogoSpinner(props) {\n  const loaderRadius = 20;\n  const radiusFactor = 36 - loaderRadius;\n  const dashArrayStart = 116 + radiusFactor;\n  const dashArrayEnd = 245 + radiusFactor;\n  const dashOffset = -1 * (360 + radiusFactor * 1.75);\n  return (0, import_jsx_runtime.jsx)(LogoContainer, { \"data-error\": props.error, children: (0, import_jsx_runtime.jsx)(\"div\", { \"data-container\": true, style: {\n    position: \"relative\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n  }, children: (0, import_jsx_runtime.jsxs)(\"div\", { \"data-img-container\": true, children: [!props.hideSpinner && (0, import_jsx_runtime.jsx)(\"svg\", { viewBox: \"0 0 110 110\", style: {\n    display: props.error ? \"none\" : \"block\"\n  }, role: \"presentation\", children: (0, import_jsx_runtime.jsx)(\"rect\", { x: \"2\", y: \"2\", width: \"106\", height: \"106\", rx: loaderRadius, strokeDasharray: `${dashArrayStart} ${dashArrayEnd}`, strokeDashoffset: dashOffset, strokeLinecap: \"round\", fill: \"none\", strokeWidth: 4 }) }), (0, import_jsx_runtime.jsx)(WalletBg, { children: (0, import_jsx_runtime.jsx)(WalletImage, { id: props.id, size: \"68\", client: props.client }) })] }) }) });\n}\nvar WalletBg = StyledDiv(() => {\n  const theme = useCustomTheme();\n  return {\n    background: theme.colors.tertiaryBg,\n    borderRadius: \"13px\",\n    border: `1px solid ${theme.colors.borderColor}`,\n    padding: spacing.xs,\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n  };\n});\nvar dashRotateAnimation = keyframes`\nfrom {\n  stroke-dashoffset: 0px;\n}\n`;\nvar shakeErrorAnimation = keyframes`\n  0% {\n    transform: translateX(0);\n  }\n  25% {\n    transform: translateX(-5px);\n  }\n  50% {\n    transform: translateX(5px);\n  }\n  75% {\n    transform: translateX(-5px);\n  }\n  100% {\n    transform: translateX(0);\n  }\n`;\nvar pulseAnimation = keyframes`\n0% {\n  transform: scale(0.95);\n}\n100% {\n  opacity: 0;\n  transform: scale(1.3);\n}\n`;\nvar LogoContainer = StyledDiv((_) => {\n  const theme = useCustomTheme();\n  return {\n    display: \"flex\",\n    justifyContent: \"center\",\n    position: \"relative\",\n    borderRadius: radius.xl,\n    \"[data-img-container]\": {\n      display: \"flex\",\n      justifyContent: \"center\",\n      alignItems: \"center\",\n      position: \"relative\"\n    },\n    \"&[data-error='true'] [data-container]\": {\n      animation: `${shakeErrorAnimation} 0.25s linear`\n    },\n    \"&[data-error='true'] [data-img-container]::before\": {\n      content: '\"\"',\n      position: \"absolute\",\n      inset: 0,\n      background: theme.colors.danger,\n      animation: `${pulseAnimation} 1.5s ease infinite`,\n      borderRadius: \"20px\",\n      zIndex: -1\n    },\n    svg: {\n      position: \"absolute\",\n      /* can't use inset because safari doesn't like it */\n      left: \"-8px\",\n      top: \"-8px\",\n      width: \"calc(100% + 16px)\",\n      height: \"calc(100% + 16px)\",\n      animation: `${fadeInAnimation} 400ms ease`\n    },\n    img: {\n      zIndex: 100\n    },\n    rect: {\n      animation: `${dashRotateAnimation} 1.2s linear infinite`,\n      stroke: theme.colors.accentText\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/ConnectingScreen.js\nvar ConnectingScreen = (props) => {\n  const { locale } = props;\n  return (0, import_jsx_runtime2.jsxs)(Container, { animate: \"fadein\", fullHeight: true, flex: \"column\", children: [(0, import_jsx_runtime2.jsx)(Container, { p: \"lg\", style: {\n    paddingBottom: 0\n  }, children: (0, import_jsx_runtime2.jsx)(ModalHeader, { title: props.walletName, onBack: props.onBack }) }), (0, import_jsx_runtime2.jsxs)(Container, { flex: \"column\", center: \"y\", expand: true, px: props.size === \"compact\" ? \"lg\" : \"xxl\", relative: true, style: {\n    paddingTop: 0\n  }, children: [(0, import_jsx_runtime2.jsx)(Container, { py: \"3xl\", children: (0, import_jsx_runtime2.jsx)(WalletLogoSpinner, { client: props.client, error: props.errorConnecting, id: props.walletId }) }), (0, import_jsx_runtime2.jsxs)(Container, { animate: \"fadein\", style: {\n    animationDuration: \"200ms\"\n  }, children: [(0, import_jsx_runtime2.jsx)(Text, { center: true, color: \"primaryText\", size: \"lg\", weight: 600, children: props.errorConnecting ? locale.failed : locale.inProgress }), (0, import_jsx_runtime2.jsx)(Spacer, { y: \"md\" }), !props.errorConnecting ? (0, import_jsx_runtime2.jsx)(Text, { balance: true, center: true, multiline: true, children: locale.instruction }) : (0, import_jsx_runtime2.jsx)(Container, { flex: \"row\", center: \"x\", animate: \"fadein\", children: (0, import_jsx_runtime2.jsxs)(Button, { fullWidth: true, variant: \"accent\", onClick: props.onRetry, style: {\n    gap: spacing.xs,\n    alignItems: \"center\"\n  }, children: [(0, import_jsx_runtime2.jsx)(ReloadIcon, { width: iconSize.sm, height: iconSize.sm }), locale.tryAgain] }) })] })] }), props.onGetStarted ? (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [(0, import_jsx_runtime2.jsx)(Spacer, { y: \"xl\" }), (0, import_jsx_runtime2.jsx)(Line, {}), (0, import_jsx_runtime2.jsx)(Container, { flex: \"row\", center: \"x\", p: \"lg\", children: (0, import_jsx_runtime2.jsx)(Button, { variant: \"link\", onClick: props.onGetStarted, children: locale.getStartedLink }) })] }) : (0, import_jsx_runtime2.jsx)(Spacer, { y: props.size === \"compact\" ? \"lg\" : \"xxl\" })] });\n};\n\nexport {\n  WalletLogoSpinner,\n  ConnectingScreen\n};\n//# sourceMappingURL=chunk-MGEBXLXC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-MWAIX6LF.js",
    "content": "// node_modules/thirdweb/dist/esm/rpc/actions/eth_sendRawTransaction.js\nasync function eth_sendRawTransaction(request, signedTransaction) {\n  return await request({\n    method: \"eth_sendRawTransaction\",\n    params: [signedTransaction]\n  });\n}\n\nexport {\n  eth_sendRawTransaction\n};\n//# sourceMappingURL=chunk-MWAIX6LF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-N24CESYN.js",
    "content": "import {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  getThirdwebBaseUrl\n} from \"./chunk-QHKZ43P6.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\n\n// node_modules/thirdweb/dist/esm/analytics/track/index.js\nasync function track({ client, ecosystem, data }) {\n  const fetch = getClientFetch(client, ecosystem);\n  const event = {\n    source: \"sdk\",\n    ...data\n  };\n  return fetch(`${getThirdwebBaseUrl(\"analytics\")}/event`, {\n    method: \"POST\",\n    body: stringify(event)\n  }).catch(() => {\n  });\n}\n\nexport {\n  track\n};\n//# sourceMappingURL=chunk-N24CESYN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-NJUWOGZE.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/json.js\nvar stringify = (value, replacer, space) => {\n  const res = JSON.stringify(value, (key, value_) => {\n    const value__ = typeof value_ === \"bigint\" ? value_.toString() : value_;\n    return typeof replacer === \"function\" ? replacer(key, value__) : value__;\n  }, space);\n  return res;\n};\n\nexport {\n  stringify\n};\n//# sourceMappingURL=chunk-NJUWOGZE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-NKFQ2LZT.js",
    "content": "import {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/__generated__/IERC20/read/allowance.js\nvar FN_SELECTOR = \"0xdd62ed3e\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"owner\"\n  },\n  {\n    type: \"address\",\n    name: \"spender\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint256\"\n  }\n];\nasync function allowance(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.owner, options.spender]\n  });\n}\n\nexport {\n  allowance\n};\n//# sourceMappingURL=chunk-NKFQ2LZT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-NOA36MVL.js",
    "content": "import {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  isAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  getCachedChain\n} from \"./chunk-TFBEDS4S.js\";\n\n// node_modules/thirdweb/dist/esm/utils/nft/parseNft.js\nfunction parseNFT(base, options) {\n  switch (options.type) {\n    case \"ERC721\":\n      return {\n        metadata: base,\n        owner: (options == null ? void 0 : options.owner) ?? null,\n        id: options.tokenId,\n        tokenURI: options.tokenUri,\n        type: options.type\n      };\n    case \"ERC1155\":\n      return {\n        metadata: base,\n        owner: (options == null ? void 0 : options.owner) ?? null,\n        id: options.tokenId,\n        tokenURI: options.tokenUri,\n        type: options.type,\n        supply: options.supply\n      };\n    default:\n      throw new Error(\"Invalid NFT type\");\n  }\n}\nasync function parseNftUri(options) {\n  let uri = options.uri;\n  if (uri.startsWith(\"did:nft:\")) {\n    uri = uri.replace(\"did:nft:\", \"\").replace(/_/g, \"/\");\n  }\n  const [reference = \"\", asset_namespace = \"\", tokenID = \"\"] = uri.split(\"/\");\n  const [eip_namespace, chainID] = reference.split(\":\");\n  const [erc_namespace, contractAddress] = asset_namespace.split(\":\");\n  if (!eip_namespace || eip_namespace.toLowerCase() !== \"eip155\") {\n    throw new Error(`Invalid EIP namespace, expected EIP155, got: \"${eip_namespace}\"`);\n  }\n  if (!chainID) {\n    throw new Error(\"Chain ID not found\");\n  }\n  if (!contractAddress || !isAddress(contractAddress)) {\n    throw new Error(\"Contract address not found\");\n  }\n  if (!tokenID) {\n    throw new Error(\"Token ID not found\");\n  }\n  const chain = getCachedChain(Number(chainID));\n  const contract = getContract({\n    client: options.client,\n    chain,\n    address: contractAddress\n  });\n  switch (erc_namespace) {\n    case \"erc721\": {\n      const { getNFT } = await import(\"./getNFT-T7TVIXIV.js\");\n      const nft = await getNFT({\n        contract,\n        tokenId: BigInt(tokenID)\n      });\n      return nft.metadata.image ?? null;\n    }\n    case \"erc1155\": {\n      const { getNFT } = await import(\"./getNFT-CWYYXL36.js\");\n      const nft = await getNFT({\n        contract,\n        tokenId: BigInt(tokenID)\n      });\n      return nft.metadata.image ?? null;\n    }\n    default: {\n      throw new Error(`Invalid ERC namespace, expected ERC721 or ERC1155, got: \"${erc_namespace}\"`);\n    }\n  }\n}\n\nexport {\n  parseNFT,\n  parseNftUri\n};\n//# sourceMappingURL=chunk-NOA36MVL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-NPJBMLFY.js",
    "content": "import {\n  parseAbiItem,\n  toFunctionSelector\n} from \"./chunk-GINVHONX.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  LruMap\n} from \"./chunk-SNQ54XRM.js\";\n\n// node_modules/thirdweb/dist/esm/utils/abi/prepare-method.js\nvar prepareMethodCache = new LruMap(4096);\nfunction prepareMethod(method) {\n  const key = typeof method === \"string\" ? method : stringify(method);\n  if (prepareMethodCache.has(key)) {\n    return prepareMethodCache.get(key);\n  }\n  const abiFn = typeof method === \"string\" ? (\n    // @ts-expect-error - we're sure it's a string...\n    parseAbiItem(method)\n  ) : method;\n  const sig = toFunctionSelector(abiFn);\n  const ret = [sig, abiFn.inputs, abiFn.outputs];\n  prepareMethodCache.set(key, ret);\n  return ret;\n}\n\n// node_modules/thirdweb/dist/esm/transaction/utils.js\nfunction isAbiFunction(item) {\n  return !!(item && typeof item === \"object\" && \"type\" in item && item.type === \"function\");\n}\n\nexport {\n  prepareMethod,\n  isAbiFunction\n};\n//# sourceMappingURL=chunk-NPJBMLFY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-NPXNISXJ.js",
    "content": "// node_modules/thirdweb/dist/esm/rpc/actions/eth_getCode.js\nasync function eth_getCode(request, params) {\n  return request({\n    method: \"eth_getCode\",\n    params: [params.address, params.blockTag || \"latest\"]\n  });\n}\n\nexport {\n  eth_getCode\n};\n//# sourceMappingURL=chunk-NPXNISXJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-O6KA6WKL.js",
    "content": "import {\n  ethereum\n} from \"./chunk-ZLJ6VYSG.js\";\nimport {\n  socialAuthOptions\n} from \"./chunk-EIBOABXT.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/wallet/index.js\nfunction isInAppWallet(wallet) {\n  return wallet.id === \"inApp\" || wallet.id === \"embedded\";\n}\nasync function connectInAppWallet(options, createOptions, connector) {\n  var _a, _b, _c, _d;\n  if (\n    // if auth mode is not specified, the default is popup\n    ((_a = createOptions == null ? void 0 : createOptions.auth) == null ? void 0 : _a.mode) !== \"popup\" && ((_b = createOptions == null ? void 0 : createOptions.auth) == null ? void 0 : _b.mode) !== void 0 && connector.authenticateWithRedirect\n  ) {\n    const strategy = options.strategy;\n    if (socialAuthOptions.includes(strategy)) {\n      connector.authenticateWithRedirect(strategy, (_c = createOptions == null ? void 0 : createOptions.auth) == null ? void 0 : _c.mode, (_d = createOptions == null ? void 0 : createOptions.auth) == null ? void 0 : _d.redirectUrl);\n    }\n  }\n  const authResult = await connector.connect(options);\n  const authAccount = authResult.user.account;\n  if (createOptions && \"smartAccount\" in createOptions && (createOptions == null ? void 0 : createOptions.smartAccount)) {\n    return convertToSmartAccount({\n      client: options.client,\n      authAccount,\n      smartAccountOptions: createOptions.smartAccount,\n      chain: options.chain\n    });\n  }\n  return [authAccount, options.chain || ethereum];\n}\nasync function autoConnectInAppWallet(options, createOptions, connector) {\n  if (options.authResult && connector.loginWithAuthToken) {\n    await connector.loginWithAuthToken(options.authResult);\n  }\n  const user = await getAuthenticatedUser(connector);\n  if (!user) {\n    throw new Error(\"Failed to authenticate user.\");\n  }\n  const authAccount = user.account;\n  if (createOptions && \"smartAccount\" in createOptions && (createOptions == null ? void 0 : createOptions.smartAccount)) {\n    return convertToSmartAccount({\n      client: options.client,\n      authAccount,\n      smartAccountOptions: createOptions.smartAccount,\n      chain: options.chain\n    });\n  }\n  return [authAccount, options.chain || ethereum];\n}\nasync function convertToSmartAccount(options) {\n  const [{ smartWallet }, { connectSmartWallet }] = await Promise.all([\n    import(\"./smart-wallet-5WA47S2O.js\"),\n    import(\"./smart-7AYCEGLU.js\")\n  ]);\n  const sa = smartWallet(options.smartAccountOptions);\n  return connectSmartWallet(sa, {\n    client: options.client,\n    personalAccount: options.authAccount,\n    chain: options.chain\n  }, options.smartAccountOptions);\n}\nasync function getAuthenticatedUser(connector) {\n  const user = await connector.getUser();\n  switch (user.status) {\n    case \"Logged In, Wallet Initialized\": {\n      return user;\n    }\n  }\n  return void 0;\n}\n\nexport {\n  isInAppWallet,\n  connectInAppWallet,\n  autoConnectInAppWallet\n};\n//# sourceMappingURL=chunk-O6KA6WKL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-O6LGEXJ4.js",
    "content": "import {\n  Hash,\n  byteSwap32,\n  bytes,\n  exists,\n  isLE,\n  number,\n  output,\n  toBytes,\n  u32,\n  wrapConstructor,\n  wrapXOFConstructorWithOpts\n} from \"./chunk-ME5GAE4N.js\";\n\n// node_modules/@noble/hashes/esm/_u64.js\nvar U32_MASK64 = BigInt(2 ** 32 - 1);\nvar _32n = BigInt(32);\nfunction fromBig(n, le = false) {\n  if (le)\n    return { h: Number(n & U32_MASK64), l: Number(n >> _32n & U32_MASK64) };\n  return { h: Number(n >> _32n & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n  let Ah = new Uint32Array(lst.length);\n  let Al = new Uint32Array(lst.length);\n  for (let i = 0; i < lst.length; i++) {\n    const { h, l } = fromBig(lst[i], le);\n    [Ah[i], Al[i]] = [h, l];\n  }\n  return [Ah, Al];\n}\nvar rotlSH = (h, l, s) => h << s | l >>> 32 - s;\nvar rotlSL = (h, l, s) => l << s | h >>> 32 - s;\nvar rotlBH = (h, l, s) => l << s - 32 | h >>> 64 - s;\nvar rotlBL = (h, l, s) => h << s - 32 | l >>> 64 - s;\n\n// node_modules/@noble/hashes/esm/sha3.js\nvar SHA3_PI = [];\nvar SHA3_ROTL = [];\nvar _SHA3_IOTA = [];\nvar _0n = BigInt(0);\nvar _1n = BigInt(1);\nvar _2n = BigInt(2);\nvar _7n = BigInt(7);\nvar _256n = BigInt(256);\nvar _0x71n = BigInt(113);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n  [x, y] = [y, (2 * x + 3 * y) % 5];\n  SHA3_PI.push(2 * (5 * y + x));\n  SHA3_ROTL.push((round + 1) * (round + 2) / 2 % 64);\n  let t = _0n;\n  for (let j = 0; j < 7; j++) {\n    R = (R << _1n ^ (R >> _7n) * _0x71n) % _256n;\n    if (R & _2n)\n      t ^= _1n << (_1n << BigInt(j)) - _1n;\n  }\n  _SHA3_IOTA.push(t);\n}\nvar [SHA3_IOTA_H, SHA3_IOTA_L] = split(_SHA3_IOTA, true);\nvar rotlH = (h, l, s) => s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s);\nvar rotlL = (h, l, s) => s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s);\nfunction keccakP(s, rounds = 24) {\n  const B = new Uint32Array(5 * 2);\n  for (let round = 24 - rounds; round < 24; round++) {\n    for (let x = 0; x < 10; x++)\n      B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n    for (let x = 0; x < 10; x += 2) {\n      const idx1 = (x + 8) % 10;\n      const idx0 = (x + 2) % 10;\n      const B0 = B[idx0];\n      const B1 = B[idx0 + 1];\n      const Th = rotlH(B0, B1, 1) ^ B[idx1];\n      const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n      for (let y = 0; y < 50; y += 10) {\n        s[x + y] ^= Th;\n        s[x + y + 1] ^= Tl;\n      }\n    }\n    let curH = s[2];\n    let curL = s[3];\n    for (let t = 0; t < 24; t++) {\n      const shift = SHA3_ROTL[t];\n      const Th = rotlH(curH, curL, shift);\n      const Tl = rotlL(curH, curL, shift);\n      const PI = SHA3_PI[t];\n      curH = s[PI];\n      curL = s[PI + 1];\n      s[PI] = Th;\n      s[PI + 1] = Tl;\n    }\n    for (let y = 0; y < 50; y += 10) {\n      for (let x = 0; x < 10; x++)\n        B[x] = s[y + x];\n      for (let x = 0; x < 10; x++)\n        s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n    }\n    s[0] ^= SHA3_IOTA_H[round];\n    s[1] ^= SHA3_IOTA_L[round];\n  }\n  B.fill(0);\n}\nvar Keccak = class _Keccak extends Hash {\n  // NOTE: we accept arguments in bytes instead of bits here.\n  constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n    super();\n    this.blockLen = blockLen;\n    this.suffix = suffix;\n    this.outputLen = outputLen;\n    this.enableXOF = enableXOF;\n    this.rounds = rounds;\n    this.pos = 0;\n    this.posOut = 0;\n    this.finished = false;\n    this.destroyed = false;\n    number(outputLen);\n    if (0 >= this.blockLen || this.blockLen >= 200)\n      throw new Error(\"Sha3 supports only keccak-f1600 function\");\n    this.state = new Uint8Array(200);\n    this.state32 = u32(this.state);\n  }\n  keccak() {\n    if (!isLE)\n      byteSwap32(this.state32);\n    keccakP(this.state32, this.rounds);\n    if (!isLE)\n      byteSwap32(this.state32);\n    this.posOut = 0;\n    this.pos = 0;\n  }\n  update(data) {\n    exists(this);\n    const { blockLen, state } = this;\n    data = toBytes(data);\n    const len = data.length;\n    for (let pos = 0; pos < len; ) {\n      const take = Math.min(blockLen - this.pos, len - pos);\n      for (let i = 0; i < take; i++)\n        state[this.pos++] ^= data[pos++];\n      if (this.pos === blockLen)\n        this.keccak();\n    }\n    return this;\n  }\n  finish() {\n    if (this.finished)\n      return;\n    this.finished = true;\n    const { state, suffix, pos, blockLen } = this;\n    state[pos] ^= suffix;\n    if ((suffix & 128) !== 0 && pos === blockLen - 1)\n      this.keccak();\n    state[blockLen - 1] ^= 128;\n    this.keccak();\n  }\n  writeInto(out) {\n    exists(this, false);\n    bytes(out);\n    this.finish();\n    const bufferOut = this.state;\n    const { blockLen } = this;\n    for (let pos = 0, len = out.length; pos < len; ) {\n      if (this.posOut >= blockLen)\n        this.keccak();\n      const take = Math.min(blockLen - this.posOut, len - pos);\n      out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n      this.posOut += take;\n      pos += take;\n    }\n    return out;\n  }\n  xofInto(out) {\n    if (!this.enableXOF)\n      throw new Error(\"XOF is not possible for this instance\");\n    return this.writeInto(out);\n  }\n  xof(bytes2) {\n    number(bytes2);\n    return this.xofInto(new Uint8Array(bytes2));\n  }\n  digestInto(out) {\n    output(out, this);\n    if (this.finished)\n      throw new Error(\"digest() was already called\");\n    this.writeInto(out);\n    this.destroy();\n    return out;\n  }\n  digest() {\n    return this.digestInto(new Uint8Array(this.outputLen));\n  }\n  destroy() {\n    this.destroyed = true;\n    this.state.fill(0);\n  }\n  _cloneInto(to) {\n    const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n    to || (to = new _Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n    to.state32.set(this.state32);\n    to.pos = this.pos;\n    to.posOut = this.posOut;\n    to.finished = this.finished;\n    to.rounds = rounds;\n    to.suffix = suffix;\n    to.outputLen = outputLen;\n    to.enableXOF = enableXOF;\n    to.destroyed = this.destroyed;\n    return to;\n  }\n};\nvar gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nvar sha3_224 = gen(6, 144, 224 / 8);\nvar sha3_256 = gen(6, 136, 256 / 8);\nvar sha3_384 = gen(6, 104, 384 / 8);\nvar sha3_512 = gen(6, 72, 512 / 8);\nvar keccak_224 = gen(1, 144, 224 / 8);\nvar keccak_256 = gen(1, 136, 256 / 8);\nvar keccak_384 = gen(1, 104, 384 / 8);\nvar keccak_512 = gen(1, 72, 512 / 8);\nvar genShake = (suffix, blockLen, outputLen) => wrapXOFConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === void 0 ? outputLen : opts.dkLen, true));\nvar shake128 = genShake(31, 168, 128 / 8);\nvar shake256 = genShake(31, 136, 256 / 8);\n\nexport {\n  keccak_256\n};\n//# sourceMappingURL=chunk-O6LGEXJ4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-O6UZ65WN.js",
    "content": "import {\n  Hash,\n  createView,\n  exists,\n  output,\n  rotr,\n  toBytes,\n  wrapConstructor\n} from \"./chunk-ME5GAE4N.js\";\n\n// node_modules/@noble/hashes/esm/_md.js\nfunction setBigUint64(view, byteOffset, value, isLE) {\n  if (typeof view.setBigUint64 === \"function\")\n    return view.setBigUint64(byteOffset, value, isLE);\n  const _32n = BigInt(32);\n  const _u32_max = BigInt(4294967295);\n  const wh = Number(value >> _32n & _u32_max);\n  const wl = Number(value & _u32_max);\n  const h = isLE ? 4 : 0;\n  const l = isLE ? 0 : 4;\n  view.setUint32(byteOffset + h, wh, isLE);\n  view.setUint32(byteOffset + l, wl, isLE);\n}\nvar Chi = (a, b, c) => a & b ^ ~a & c;\nvar Maj = (a, b, c) => a & b ^ a & c ^ b & c;\nvar HashMD = class extends Hash {\n  constructor(blockLen, outputLen, padOffset, isLE) {\n    super();\n    this.blockLen = blockLen;\n    this.outputLen = outputLen;\n    this.padOffset = padOffset;\n    this.isLE = isLE;\n    this.finished = false;\n    this.length = 0;\n    this.pos = 0;\n    this.destroyed = false;\n    this.buffer = new Uint8Array(blockLen);\n    this.view = createView(this.buffer);\n  }\n  update(data) {\n    exists(this);\n    const { view, buffer, blockLen } = this;\n    data = toBytes(data);\n    const len = data.length;\n    for (let pos = 0; pos < len; ) {\n      const take = Math.min(blockLen - this.pos, len - pos);\n      if (take === blockLen) {\n        const dataView = createView(data);\n        for (; blockLen <= len - pos; pos += blockLen)\n          this.process(dataView, pos);\n        continue;\n      }\n      buffer.set(data.subarray(pos, pos + take), this.pos);\n      this.pos += take;\n      pos += take;\n      if (this.pos === blockLen) {\n        this.process(view, 0);\n        this.pos = 0;\n      }\n    }\n    this.length += data.length;\n    this.roundClean();\n    return this;\n  }\n  digestInto(out) {\n    exists(this);\n    output(out, this);\n    this.finished = true;\n    const { buffer, view, blockLen, isLE } = this;\n    let { pos } = this;\n    buffer[pos++] = 128;\n    this.buffer.subarray(pos).fill(0);\n    if (this.padOffset > blockLen - pos) {\n      this.process(view, 0);\n      pos = 0;\n    }\n    for (let i = pos; i < blockLen; i++)\n      buffer[i] = 0;\n    setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n    this.process(view, 0);\n    const oview = createView(out);\n    const len = this.outputLen;\n    if (len % 4)\n      throw new Error(\"_sha2: outputLen should be aligned to 32bit\");\n    const outLen = len / 4;\n    const state = this.get();\n    if (outLen > state.length)\n      throw new Error(\"_sha2: outputLen bigger than state\");\n    for (let i = 0; i < outLen; i++)\n      oview.setUint32(4 * i, state[i], isLE);\n  }\n  digest() {\n    const { buffer, outputLen } = this;\n    this.digestInto(buffer);\n    const res = buffer.slice(0, outputLen);\n    this.destroy();\n    return res;\n  }\n  _cloneInto(to) {\n    to || (to = new this.constructor());\n    to.set(...this.get());\n    const { blockLen, buffer, length, finished, destroyed, pos } = this;\n    to.length = length;\n    to.pos = pos;\n    to.finished = finished;\n    to.destroyed = destroyed;\n    if (length % blockLen)\n      to.buffer.set(buffer);\n    return to;\n  }\n};\n\n// node_modules/@noble/hashes/esm/sha256.js\nvar SHA256_K = new Uint32Array([\n  1116352408,\n  1899447441,\n  3049323471,\n  3921009573,\n  961987163,\n  1508970993,\n  2453635748,\n  2870763221,\n  3624381080,\n  310598401,\n  607225278,\n  1426881987,\n  1925078388,\n  2162078206,\n  2614888103,\n  3248222580,\n  3835390401,\n  4022224774,\n  264347078,\n  604807628,\n  770255983,\n  1249150122,\n  1555081692,\n  1996064986,\n  2554220882,\n  2821834349,\n  2952996808,\n  3210313671,\n  3336571891,\n  3584528711,\n  113926993,\n  338241895,\n  666307205,\n  773529912,\n  1294757372,\n  1396182291,\n  1695183700,\n  1986661051,\n  2177026350,\n  2456956037,\n  2730485921,\n  2820302411,\n  3259730800,\n  3345764771,\n  3516065817,\n  3600352804,\n  4094571909,\n  275423344,\n  430227734,\n  506948616,\n  659060556,\n  883997877,\n  958139571,\n  1322822218,\n  1537002063,\n  1747873779,\n  1955562222,\n  2024104815,\n  2227730452,\n  2361852424,\n  2428436474,\n  2756734187,\n  3204031479,\n  3329325298\n]);\nvar SHA256_IV = new Uint32Array([\n  1779033703,\n  3144134277,\n  1013904242,\n  2773480762,\n  1359893119,\n  2600822924,\n  528734635,\n  1541459225\n]);\nvar SHA256_W = new Uint32Array(64);\nvar SHA256 = class extends HashMD {\n  constructor() {\n    super(64, 32, 8, false);\n    this.A = SHA256_IV[0] | 0;\n    this.B = SHA256_IV[1] | 0;\n    this.C = SHA256_IV[2] | 0;\n    this.D = SHA256_IV[3] | 0;\n    this.E = SHA256_IV[4] | 0;\n    this.F = SHA256_IV[5] | 0;\n    this.G = SHA256_IV[6] | 0;\n    this.H = SHA256_IV[7] | 0;\n  }\n  get() {\n    const { A, B, C, D, E, F, G, H } = this;\n    return [A, B, C, D, E, F, G, H];\n  }\n  // prettier-ignore\n  set(A, B, C, D, E, F, G, H) {\n    this.A = A | 0;\n    this.B = B | 0;\n    this.C = C | 0;\n    this.D = D | 0;\n    this.E = E | 0;\n    this.F = F | 0;\n    this.G = G | 0;\n    this.H = H | 0;\n  }\n  process(view, offset) {\n    for (let i = 0; i < 16; i++, offset += 4)\n      SHA256_W[i] = view.getUint32(offset, false);\n    for (let i = 16; i < 64; i++) {\n      const W15 = SHA256_W[i - 15];\n      const W2 = SHA256_W[i - 2];\n      const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ W15 >>> 3;\n      const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ W2 >>> 10;\n      SHA256_W[i] = s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16] | 0;\n    }\n    let { A, B, C, D, E, F, G, H } = this;\n    for (let i = 0; i < 64; i++) {\n      const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n      const T1 = H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i] | 0;\n      const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n      const T2 = sigma0 + Maj(A, B, C) | 0;\n      H = G;\n      G = F;\n      F = E;\n      E = D + T1 | 0;\n      D = C;\n      C = B;\n      B = A;\n      A = T1 + T2 | 0;\n    }\n    A = A + this.A | 0;\n    B = B + this.B | 0;\n    C = C + this.C | 0;\n    D = D + this.D | 0;\n    E = E + this.E | 0;\n    F = F + this.F | 0;\n    G = G + this.G | 0;\n    H = H + this.H | 0;\n    this.set(A, B, C, D, E, F, G, H);\n  }\n  roundClean() {\n    SHA256_W.fill(0);\n  }\n  destroy() {\n    this.set(0, 0, 0, 0, 0, 0, 0, 0);\n    this.buffer.fill(0);\n  }\n};\nvar SHA224 = class extends SHA256 {\n  constructor() {\n    super();\n    this.A = 3238371032 | 0;\n    this.B = 914150663 | 0;\n    this.C = 812702999 | 0;\n    this.D = 4144912697 | 0;\n    this.E = 4290775857 | 0;\n    this.F = 1750603025 | 0;\n    this.G = 1694076839 | 0;\n    this.H = 3204075428 | 0;\n    this.outputLen = 28;\n  }\n};\nvar sha256 = wrapConstructor(() => new SHA256());\nvar sha224 = wrapConstructor(() => new SHA224());\n\nexport {\n  HashMD,\n  sha256\n};\n//# sourceMappingURL=chunk-O6UZ65WN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-O7UPLLUM.js",
    "content": "import {\n  getContractMetadata\n} from \"./chunk-UZVZQZEM.js\";\nimport {\n  ZERO_ADDRESS,\n  isNativeTokenAddress\n} from \"./chunk-673YCYST.js\";\nimport {\n  maxUint256,\n  padHex\n} from \"./chunk-GINVHONX.js\";\n\n// node_modules/thirdweb/dist/esm/utils/extensions/drops/get-claim-params.js\nasync function getClaimParams(options) {\n  const cc = await (async () => {\n    if (options.type === \"erc1155\") {\n      if (options.singlePhaseDrop) {\n        const { claimCondition } = await import(\"./claimCondition-WJYCFSKY.js\");\n        return await claimCondition({\n          contract: options.contract,\n          tokenId: options.tokenId\n        });\n      }\n      const { getActiveClaimCondition: getActiveClaimCondition2 } = await import(\"./getActiveClaimCondition-X4R3SWY5.js\");\n      return await getActiveClaimCondition2({\n        contract: options.contract,\n        tokenId: options.tokenId\n      });\n    }\n    if (options.type === \"erc721\") {\n      if (options.singlePhaseDrop) {\n        const { claimCondition } = await import(\"./claimCondition-FZ3EKW2M.js\");\n        return await claimCondition({\n          contract: options.contract\n        });\n      }\n      const { getActiveClaimCondition: getActiveClaimCondition2 } = await import(\"./getActiveClaimCondition-5NTTTBA4.js\");\n      return await getActiveClaimCondition2({\n        contract: options.contract\n      });\n    }\n    if (options.singlePhaseDrop) {\n      const { claimCondition } = await import(\"./claimCondition-FZ3EKW2M.js\");\n      return await claimCondition({\n        contract: options.contract\n      });\n    }\n    const { getActiveClaimCondition } = await import(\"./getActiveClaimCondition-235FYDU5.js\");\n    return await getActiveClaimCondition({\n      contract: options.contract\n    });\n  })();\n  const tokenDecimals = options.type === \"erc20\" ? options.tokenDecimals : 0;\n  const allowlistProof = await (async () => {\n    if (!cc.merkleRoot || cc.merkleRoot === padHex(\"0x\", { size: 32 })) {\n      return {\n        currency: ZERO_ADDRESS,\n        proof: [],\n        quantityLimitPerWallet: 0n,\n        pricePerToken: maxUint256\n      };\n    }\n    const { fetchProofsForClaimer } = await import(\"./fetch-proofs-for-claimers-NQNU6O2D.js\");\n    const metadata = await getContractMetadata({\n      contract: options.contract\n    });\n    const merkleData = metadata.merkle || {};\n    const snapshotUri = merkleData[cc.merkleRoot];\n    if (!snapshotUri) {\n      return {\n        currency: ZERO_ADDRESS,\n        proof: [],\n        quantityLimitPerWallet: 0n,\n        pricePerToken: maxUint256\n      };\n    }\n    const allowListProof = await fetchProofsForClaimer({\n      contract: options.contract,\n      claimer: options.from || options.to,\n      // receiver and claimer can be different, always prioritize the claimer for allowlists\n      merkleTreeUri: snapshotUri,\n      tokenDecimals\n    });\n    if (!allowListProof) {\n      return {\n        currency: ZERO_ADDRESS,\n        proof: [],\n        quantityLimitPerWallet: 0n,\n        pricePerToken: maxUint256\n      };\n    }\n    return allowListProof;\n  })();\n  const currency = allowlistProof.currency && allowlistProof.currency !== ZERO_ADDRESS ? allowlistProof.currency : cc.currency;\n  const pricePerToken = allowlistProof.pricePerToken !== void 0 && allowlistProof.pricePerToken !== maxUint256 ? allowlistProof.pricePerToken : cc.pricePerToken;\n  const totalPrice = pricePerToken * options.quantity / BigInt(10 ** tokenDecimals);\n  const value = isNativeTokenAddress(currency) ? totalPrice : 0n;\n  const erc20Value = !isNativeTokenAddress(currency) && pricePerToken > 0n ? {\n    amountWei: totalPrice,\n    tokenAddress: currency\n  } : void 0;\n  return {\n    receiver: options.to,\n    tokenId: options.type === \"erc1155\" ? options.tokenId : void 0,\n    quantity: options.quantity,\n    currency,\n    pricePerToken,\n    allowlistProof,\n    data: \"0x\",\n    overrides: {\n      value,\n      erc20Value\n    }\n  };\n}\n\nexport {\n  getClaimParams\n};\n//# sourceMappingURL=chunk-O7UPLLUM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-OHYFITXC.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IDrop1155/read/getActiveClaimConditionId.js\nvar FN_SELECTOR = \"0x5ab063e8\";\nvar FN_INPUTS = [\n  {\n    type: \"uint256\",\n    name: \"_tokenId\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint256\"\n  }\n];\nfunction isGetActiveClaimConditionIdSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nasync function getActiveClaimConditionId(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.tokenId]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IDrop1155/read/getClaimConditionById.js\nvar FN_SELECTOR2 = \"0xd45b28d7\";\nvar FN_INPUTS2 = [\n  {\n    type: \"uint256\",\n    name: \"_tokenId\"\n  },\n  {\n    type: \"uint256\",\n    name: \"_conditionId\"\n  }\n];\nvar FN_OUTPUTS2 = [\n  {\n    type: \"tuple\",\n    name: \"condition\",\n    components: [\n      {\n        type: \"uint256\",\n        name: \"startTimestamp\"\n      },\n      {\n        type: \"uint256\",\n        name: \"maxClaimableSupply\"\n      },\n      {\n        type: \"uint256\",\n        name: \"supplyClaimed\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantityLimitPerWallet\"\n      },\n      {\n        type: \"bytes32\",\n        name: \"merkleRoot\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      },\n      {\n        type: \"string\",\n        name: \"metadata\"\n      }\n    ]\n  }\n];\nfunction isGetClaimConditionByIdSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2]\n  });\n}\nasync function getClaimConditionById(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2],\n    params: [options.tokenId, options.conditionId]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/drops/read/getActiveClaimCondition.js\nasync function getActiveClaimCondition(options) {\n  try {\n    const conditionId = await getActiveClaimConditionId(options);\n    return getClaimConditionById({ ...options, conditionId });\n  } catch {\n    throw new Error(\"Claim condition not found\");\n  }\n}\nfunction isGetActiveClaimConditionSupported(availableSelectors) {\n  return isGetActiveClaimConditionIdSupported(availableSelectors) && isGetClaimConditionByIdSupported(availableSelectors);\n}\n\nexport {\n  getActiveClaimCondition,\n  isGetActiveClaimConditionSupported\n};\n//# sourceMappingURL=chunk-OHYFITXC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-P7ZDTV2E.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/detect-platform.js\nvar operatingSystemRules = [\n  [\"iOS\", /iP(hone|od|ad)/],\n  [\"Android OS\", /Android/],\n  [\"BlackBerry OS\", /BlackBerry|BB10/],\n  [\"Windows Mobile\", /IEMobile/],\n  [\"Amazon OS\", /Kindle/],\n  [\"Windows 3.11\", /Win16/],\n  [\"Windows 95\", /(Windows 95)|(Win95)|(Windows_95)/],\n  [\"Windows 98\", /(Windows 98)|(Win98)/],\n  [\"Windows 2000\", /(Windows NT 5.0)|(Windows 2000)/],\n  [\"Windows XP\", /(Windows NT 5.1)|(Windows XP)/],\n  [\"Windows Server 2003\", /(Windows NT 5.2)/],\n  [\"Windows Vista\", /(Windows NT 6.0)/],\n  [\"Windows 7\", /(Windows NT 6.1)/],\n  [\"Windows 8\", /(Windows NT 6.2)/],\n  [\"Windows 8.1\", /(Windows NT 6.3)/],\n  [\"Windows 10\", /(Windows NT 10.0)/],\n  [\"Windows ME\", /Windows ME/],\n  [\"Windows CE\", /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n  [\"Open BSD\", /OpenBSD/],\n  [\"Sun OS\", /SunOS/],\n  [\"Chrome OS\", /CrOS/],\n  [\"Linux\", /(Linux)|(X11)/],\n  [\"Mac OS\", /(Mac_PowerPC)|(Macintosh)/],\n  [\"QNX\", /QNX/],\n  [\"BeOS\", /BeOS/],\n  [\"OS/2\", /OS\\/2/]\n];\nfunction detectPlatform() {\n  if (typeof document === \"undefined\" && typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\") {\n    return \"mobile\";\n  }\n  if (typeof navigator !== \"undefined\") {\n    return \"browser\";\n  }\n  return \"node\";\n}\nfunction detectOS(ua) {\n  for (let ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n    const [os, regex] = operatingSystemRules[ii];\n    const match = regex.exec(ua);\n    if (match) {\n      return os;\n    }\n  }\n  return null;\n}\n\nexport {\n  detectPlatform,\n  detectOS\n};\n//# sourceMappingURL=chunk-P7ZDTV2E.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-PB7CMXGP.js",
    "content": "import {\n  eth_getCode\n} from \"./chunk-NPXNISXJ.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\n\n// node_modules/thirdweb/dist/esm/contract/actions/get-bytecode.js\nvar BYTECODE_CACHE = /* @__PURE__ */ new WeakMap();\nfunction getBytecode(contract) {\n  if (BYTECODE_CACHE.has(contract)) {\n    return BYTECODE_CACHE.get(contract);\n  }\n  const prom = (async () => {\n    const rpcRequest = getRpcClient(contract);\n    const result = await eth_getCode(rpcRequest, {\n      address: contract.address,\n      blockTag: \"latest\"\n    });\n    if (result === \"0x\") {\n      BYTECODE_CACHE.delete(contract);\n    }\n    return result;\n  })();\n  BYTECODE_CACHE.set(contract, prom);\n  return prom;\n}\n\nexport {\n  getBytecode\n};\n//# sourceMappingURL=chunk-PB7CMXGP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-PHVX3XOV.js",
    "content": "import {\n  approve\n} from \"./chunk-TTOANXGP.js\";\nimport {\n  estimateGas,\n  getDefaultGasOverrides\n} from \"./chunk-JZC47WAY.js\";\nimport {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport {\n  toEther\n} from \"./chunk-UY2SRO54.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  defineChain,\n  getCachedChain\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  getThirdwebDomains\n} from \"./chunk-QHKZ43P6.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\n\n// node_modules/thirdweb/dist/esm/chains/chain-definitions/base-sepolia.js\nvar baseSepolia = defineChain({\n  id: 84532,\n  name: \"Base Sepolia\",\n  nativeCurrency: { name: \"Sepolia Ether\", symbol: \"ETH\", decimals: 18 },\n  blockExplorers: [\n    {\n      name: \"Basescan\",\n      url: \"https://sepolia.basescan.org\",\n      apiUrl: \"https://api-sepolia.basescan.org/api\"\n    }\n  ],\n  testnet: true\n});\n\n// node_modules/thirdweb/dist/esm/chains/chain-definitions/base.js\nvar base = defineChain({\n  id: 8453,\n  name: \"Base\",\n  nativeCurrency: { name: \"Ether\", symbol: \"ETH\", decimals: 18 },\n  blockExplorers: [\n    {\n      name: \"Basescan\",\n      url: \"https://basescan.org\",\n      apiUrl: \"https://api.basescan.org/api\"\n    }\n  ]\n});\n\n// node_modules/thirdweb/dist/esm/chains/chain-definitions/optimism-sepolia.js\nvar optimismSepolia = defineChain({\n  id: 11155420,\n  name: \"OP Sepolia\",\n  nativeCurrency: { name: \"Sepolia Ether\", symbol: \"ETH\", decimals: 18 },\n  blockExplorers: [\n    {\n      name: \"Blockscout\",\n      url: \"https://optimism-sepolia.blockscout.com\",\n      apiUrl: \"https://optimism-sepolia.blockscout.com/api\"\n    }\n  ],\n  testnet: true\n});\n\n// node_modules/thirdweb/dist/esm/chains/chain-definitions/optimism.js\nvar optimism = defineChain({\n  id: 10,\n  name: \"OP Mainnet\",\n  nativeCurrency: { name: \"Ether\", symbol: \"ETH\", decimals: 18 },\n  blockExplorers: [\n    {\n      name: \"Optimism Explorer\",\n      url: \"https://optimistic.etherscan.io\",\n      apiUrl: \"https://api-optimistic.etherscan.io\"\n    }\n  ]\n});\n\n// node_modules/thirdweb/dist/esm/chains/chain-definitions/zora-sepolia.js\nvar zoraSepolia = defineChain({\n  id: 999999999,\n  name: \"Zora Sepolia\",\n  nativeCurrency: {\n    decimals: 18,\n    name: \"Zora Sepolia\",\n    symbol: \"ETH\"\n  },\n  blockExplorers: [\n    {\n      name: \"Zora Sepolia Explorer\",\n      url: \"https://sepolia.explorer.zora.energy/\",\n      apiUrl: \"https://sepolia.explorer.zora.energy/api\"\n    }\n  ],\n  testnet: true\n});\n\n// node_modules/thirdweb/dist/esm/chains/chain-definitions/zora.js\nvar zora = defineChain({\n  id: 7777777,\n  name: \"Zora\",\n  nativeCurrency: {\n    decimals: 18,\n    name: \"Ether\",\n    symbol: \"ETH\"\n  },\n  blockExplorers: [\n    {\n      name: \"Explorer\",\n      url: \"https://explorer.zora.energy\",\n      apiUrl: \"https://explorer.zora.energy/api\"\n    }\n  ]\n});\n\n// node_modules/thirdweb/dist/esm/chains/constants.js\nvar opChains = [\n  base.id,\n  baseSepolia.id,\n  optimism.id,\n  optimismSepolia.id,\n  zora.id,\n  zoraSepolia.id,\n  34443,\n  // mode\n  919,\n  // mode testnet\n  42220,\n  // celo\n  44787,\n  // celo testnet\n  204,\n  // opBNB\n  5611\n  // opBNB testnet\n];\nfunction isOpStackChain(chain) {\n  return opChains.includes(chain.id);\n}\n\n// node_modules/thirdweb/dist/esm/transaction/actions/estimate-gas-cost.js\nasync function estimateGasCost(options) {\n  var _a;\n  const { transaction } = options;\n  const from = options.from ?? ((_a = options.account) == null ? void 0 : _a.address) ?? void 0;\n  const gasLimit = await resolvePromisedValue(transaction.gas) || await estimateGas({ transaction, from });\n  const fees = await getDefaultGasOverrides(transaction.client, transaction.chain);\n  const gasPrice = fees.maxFeePerGas || fees.gasPrice;\n  if (!gasPrice) {\n    throw new Error(`Unable to determine gas price for chain ${transaction.chain.id}`);\n  }\n  let l1Fee;\n  if (isOpStackChain(transaction.chain)) {\n    const { estimateL1Fee } = await import(\"./estimate-l1-fee-B2LECVR2.js\");\n    l1Fee = await estimateL1Fee({\n      transaction\n    });\n  } else {\n    l1Fee = 0n;\n  }\n  const wei = gasLimit * gasPrice + l1Fee;\n  return {\n    ether: toEther(wei),\n    wei\n  };\n}\n\n// node_modules/thirdweb/dist/esm/pay/utils/definitions.js\nvar getPayBaseUrl = () => {\n  const payDomain = getThirdwebDomains().pay;\n  return payDomain.startsWith(\"localhost\") ? `http://${payDomain}` : `https://${payDomain}`;\n};\nvar getPayBuyWithCryptoStatusUrl = () => `${getPayBaseUrl()}/buy-with-crypto/status/v1`;\nvar getPayBuyWithCryptoQuoteEndpoint = () => `${getPayBaseUrl()}/buy-with-crypto/quote/v1`;\nvar getPayBuyWithCryptoTransferEndpoint = () => `${getPayBaseUrl()}/buy-with-crypto/transfer/v1`;\nvar getPayBuyWithFiatQuoteEndpoint = () => `${getPayBaseUrl()}/buy-with-fiat/quote/v1`;\nvar getPayBuyWithFiatStatusEndpoint = () => `${getPayBaseUrl()}/buy-with-fiat/status/v1`;\nvar getPayBuyWithFiatHistoryEndpoint = () => `${getPayBaseUrl()}/buy-with-fiat/history/v1`;\nvar getPayBuyWithCryptoHistoryEndpoint = () => `${getPayBaseUrl()}/buy-with-crypto/history/v1`;\nvar getPaySupportedDestinations = () => `${getPayBaseUrl()}/destination-tokens/v1`;\nvar getPaySupportedSources = () => `${getPayBaseUrl()}/buy-with-crypto/source-tokens/v1`;\nvar getPayBuyHistoryEndpoint = () => `${getPayBaseUrl()}/wallet/history/v1`;\n\n// node_modules/thirdweb/dist/esm/pay/buyWithCrypto/getQuote.js\nasync function getBuyWithCryptoQuote(params) {\n  var _a;\n  try {\n    const clientFetch = getClientFetch(params.client);\n    const response = await clientFetch(getPayBuyWithCryptoQuoteEndpoint(), {\n      method: \"POST\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\"\n      },\n      body: stringify({\n        fromAddress: params.fromAddress,\n        toAddress: params.toAddress,\n        fromChainId: params.fromChainId.toString(),\n        fromTokenAddress: params.fromTokenAddress,\n        toChainId: params.toChainId.toString(),\n        toTokenAddress: params.toTokenAddress,\n        fromAmount: params.fromAmount,\n        toAmount: params.toAmount,\n        maxSlippageBPS: params.maxSlippageBPS,\n        intentId: params.intentId,\n        purchaseData: params.purchaseData\n      })\n    });\n    if (!response.ok) {\n      const errorObj = await response.json();\n      if (errorObj && \"error\" in errorObj) {\n        throw errorObj;\n      }\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    const data = (await response.json()).result;\n    const swapRoute = {\n      transactionRequest: {\n        chain: getCachedChain(data.transactionRequest.chainId),\n        client: params.client,\n        data: data.transactionRequest.data,\n        to: data.transactionRequest.to,\n        value: BigInt(data.transactionRequest.value),\n        gas: BigInt(data.transactionRequest.gasLimit),\n        gasPrice: BigInt(data.transactionRequest.gasPrice)\n      },\n      approval: data.approval ? approve({\n        contract: getContract({\n          client: params.client,\n          address: data.approval.tokenAddress,\n          chain: getCachedChain(data.approval.chainId)\n        }),\n        spender: (_a = data.approval) == null ? void 0 : _a.spenderAddress,\n        amountWei: BigInt(data.approval.amountWei)\n      }) : void 0,\n      swapDetails: {\n        fromAddress: data.fromAddress,\n        toAddress: data.toAddress,\n        fromToken: data.fromToken,\n        toToken: data.toToken,\n        fromAmount: data.fromAmount,\n        fromAmountWei: data.fromAmountWei,\n        toAmountMinWei: data.toAmountMinWei,\n        toAmountMin: data.toAmountMin,\n        toAmountWei: data.toAmountWei,\n        toAmount: data.toAmount,\n        estimated: data.estimated,\n        maxSlippageBPS: data.maxSlippageBPS\n      },\n      paymentTokens: data.paymentTokens,\n      processingFees: data.processingFees,\n      client: params.client\n    };\n    return swapRoute;\n  } catch (error) {\n    console.error(\"Error getting buy with crypto quote\", error);\n    throw error;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/pay/buyWithCrypto/getStatus.js\nasync function getBuyWithCryptoStatus(buyWithCryptoTransaction) {\n  var _a;\n  try {\n    if (!buyWithCryptoTransaction.transactionHash) {\n      throw new Error(\"Transaction hash is required\");\n    }\n    const queryString = new URLSearchParams({\n      transactionHash: buyWithCryptoTransaction.transactionHash\n    }).toString();\n    const url = `${getPayBuyWithCryptoStatusUrl()}?${queryString}`;\n    const response = await getClientFetch(buyWithCryptoTransaction.client)(url);\n    if (!response.ok) {\n      (_a = response.body) == null ? void 0 : _a.cancel();\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    const data = (await response.json()).result;\n    return data;\n  } catch (error) {\n    console.error(\"Fetch error:\", error);\n    throw new Error(`Fetch failed: ${error}`);\n  }\n}\n\n// node_modules/thirdweb/dist/esm/pay/buyWithCrypto/getTransfer.js\nasync function getBuyWithCryptoTransfer(params) {\n  try {\n    const clientFetch = getClientFetch(params.client);\n    const response = await clientFetch(getPayBuyWithCryptoTransferEndpoint(), {\n      method: \"POST\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\"\n      },\n      body: stringify({\n        fromAddress: params.fromAddress,\n        toAddress: params.toAddress,\n        chainId: params.chainId,\n        tokenAddress: params.tokenAddress,\n        amount: params.amount,\n        purchaseData: params.purchaseData\n      })\n    });\n    if (!response.ok) {\n      const errorObj = await response.json();\n      if (errorObj && \"error\" in errorObj) {\n        throw errorObj;\n      }\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    const data = (await response.json()).result;\n    const transfer = {\n      transactionRequest: {\n        chain: getCachedChain(data.transactionRequest.chainId),\n        client: params.client,\n        data: data.transactionRequest.data,\n        to: data.transactionRequest.to,\n        value: BigInt(data.transactionRequest.value),\n        gas: BigInt(data.transactionRequest.gasLimit)\n      },\n      approval: data.approval ? approve({\n        contract: getContract({\n          client: params.client,\n          address: data.approval.tokenAddress,\n          chain: getCachedChain(data.approval.chainId)\n        }),\n        spender: data.approval.spenderAddress,\n        amountWei: BigInt(data.approval.amountWei)\n      }) : void 0,\n      fromAddress: data.fromAddress,\n      toAddress: data.toAddress,\n      paymentToken: data.paymentToken,\n      processingFee: data.processingFee,\n      estimatedGasCostUSDCents: data.estimatedGasCostUSDCents,\n      client: params.client\n    };\n    return transfer;\n  } catch (error) {\n    console.error(\"Error getting buy with crypto transfer\", error);\n    throw error;\n  }\n}\n\nexport {\n  estimateGasCost,\n  getPayBuyWithFiatQuoteEndpoint,\n  getPayBuyWithFiatStatusEndpoint,\n  getPayBuyWithFiatHistoryEndpoint,\n  getPayBuyWithCryptoHistoryEndpoint,\n  getPaySupportedDestinations,\n  getPaySupportedSources,\n  getPayBuyHistoryEndpoint,\n  getBuyWithCryptoQuote,\n  getBuyWithCryptoStatus,\n  getBuyWithCryptoTransfer\n};\n//# sourceMappingURL=chunk-PHVX3XOV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-PK5NRJAC.js",
    "content": "import {\n  toFunctionSelector\n} from \"./chunk-GINVHONX.js\";\n\n// node_modules/thirdweb/dist/esm/utils/bytecode/detectExtension.js\nfunction detectMethod(options) {\n  const fnSelector = Array.isArray(options.method) ? options.method[0] : toFunctionSelector(options.method);\n  return options.availableSelectors.includes(fnSelector);\n}\n\nexport {\n  detectMethod\n};\n//# sourceMappingURL=chunk-PK5NRJAC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-PWFRCBEK.js",
    "content": "import {\n  METAMASK\n} from \"./chunk-BZXRHH4X.js\";\nimport {\n  isBrowser\n} from \"./chunk-QIUEWTOP.js\";\n\n// node_modules/mipd/dist/esm/utils.js\nfunction requestProviders(listener) {\n  if (typeof window === \"undefined\")\n    return;\n  const handler = (event) => listener(event.detail);\n  window.addEventListener(\"eip6963:announceProvider\", handler);\n  window.dispatchEvent(new CustomEvent(\"eip6963:requestProvider\"));\n  return () => window.removeEventListener(\"eip6963:announceProvider\", handler);\n}\n\n// node_modules/mipd/dist/esm/store.js\nfunction createStore() {\n  const listeners = /* @__PURE__ */ new Set();\n  let providerDetails = [];\n  const request = () => requestProviders((providerDetail) => {\n    if (providerDetails.some(({ info }) => info.uuid === providerDetail.info.uuid))\n      return;\n    providerDetails = [...providerDetails, providerDetail];\n    listeners.forEach((listener) => listener(providerDetails, { added: [providerDetail] }));\n  });\n  let unwatch = request();\n  return {\n    _listeners() {\n      return listeners;\n    },\n    clear() {\n      listeners.forEach((listener) => listener([], { removed: [...providerDetails] }));\n      providerDetails = [];\n    },\n    destroy() {\n      this.clear();\n      listeners.clear();\n      unwatch == null ? void 0 : unwatch();\n    },\n    findProvider({ rdns }) {\n      return providerDetails.find((providerDetail) => providerDetail.info.rdns === rdns);\n    },\n    getProviders() {\n      return providerDetails;\n    },\n    reset() {\n      this.clear();\n      unwatch == null ? void 0 : unwatch();\n      unwatch = request();\n    },\n    subscribe(listener, { emitImmediately } = {}) {\n      listeners.add(listener);\n      if (emitImmediately)\n        listener(providerDetails, { added: providerDetails });\n      return () => listeners.delete(listener);\n    }\n  };\n}\n\n// node_modules/thirdweb/dist/esm/wallets/injected/mipdStore.js\nvar mipdStore = (() => isBrowser() ? createStore() : void 0)();\nfunction injectedProvider(walletId) {\n  const injectedProviderDetail = getInstalledWalletProviders().find((p) => p.info.rdns === walletId);\n  return injectedProviderDetail == null ? void 0 : injectedProviderDetail.provider;\n}\nfunction getMIPDStore() {\n  if (!mipdStore) {\n    return void 0;\n  }\n  return mipdStore;\n}\nfunction getInstalledWalletProviders() {\n  var _a;\n  const providers = ((_a = getMIPDStore()) == null ? void 0 : _a.getProviders()) || [];\n  for (const provider of providers) {\n    if (provider.info.rdns === \"io.metamask.mobile\") {\n      provider.info.rdns = METAMASK;\n      break;\n    }\n  }\n  return providers;\n}\n\nexport {\n  injectedProvider,\n  getInstalledWalletProviders\n};\n//# sourceMappingURL=chunk-PWFRCBEK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-Q3TN3POE.js",
    "content": "import {\n  getBytecode\n} from \"./chunk-PB7CMXGP.js\";\n\n// node_modules/thirdweb/dist/esm/utils/bytecode/is-contract-deployed.js\nvar cache = /* @__PURE__ */ new WeakSet();\nasync function isContractDeployed(contract) {\n  if (cache.has(contract)) {\n    return true;\n  }\n  const bytecode = await getBytecode(contract);\n  const isDeployed = bytecode !== \"0x\";\n  if (isDeployed) {\n    cache.add(contract);\n  }\n  return isDeployed;\n}\n\nexport {\n  isContractDeployed\n};\n//# sourceMappingURL=chunk-Q3TN3POE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-QC3K2OKT.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/promise/resolve-promised-value.js\nasync function resolvePromisedValue(value) {\n  return typeof value === \"function\" ? await value() : value;\n}\n\nexport {\n  resolvePromisedValue\n};\n//# sourceMappingURL=chunk-QC3K2OKT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-QHKZ43P6.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/domains.js\nvar DEFAULT_RPC_URL = \"rpc.thirdweb.com\";\nvar DEFAULT_SOCIAL_URL = \"social.thirdweb.com\";\nvar DEFAULT_IN_APP_WALLET_URL = \"embedded-wallet.thirdweb.com\";\nvar DEFAULT_PAY_URL = \"pay.thirdweb.com\";\nvar DEFAULT_STORAGE_URL = \"storage.thirdweb.com\";\nvar DEFAULT_BUNDLER_URL = \"bundler.thirdweb.com\";\nvar DEFAULT_ANALYTICS_URL = \"c.thirdweb.com\";\nvar domains = {\n  rpc: DEFAULT_RPC_URL,\n  inAppWallet: DEFAULT_IN_APP_WALLET_URL,\n  social: DEFAULT_SOCIAL_URL,\n  pay: DEFAULT_PAY_URL,\n  storage: DEFAULT_STORAGE_URL,\n  bundler: DEFAULT_BUNDLER_URL,\n  analytics: DEFAULT_ANALYTICS_URL\n};\nvar getThirdwebDomains = () => {\n  return domains;\n};\nvar getThirdwebBaseUrl = (service) => {\n  const origin = domains[service];\n  if (origin.startsWith(\"localhost\")) {\n    return `http://${origin}`;\n  }\n  return `https://${origin}`;\n};\n\nexport {\n  DEFAULT_RPC_URL,\n  getThirdwebDomains,\n  getThirdwebBaseUrl\n};\n//# sourceMappingURL=chunk-QHKZ43P6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-QIUEWTOP.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/platform.js\nfunction isReactNative() {\n  return typeof document === \"undefined\" && typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\";\n}\nfunction isNode() {\n  return typeof process !== \"undefined\" && typeof process.versions !== \"undefined\" && typeof process.versions.node !== \"undefined\";\n}\nfunction isBrowser() {\n  return !isReactNative() && !isNode();\n}\n\nexport {\n  isBrowser\n};\n//# sourceMappingURL=chunk-QIUEWTOP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-QLCPWJYR.js",
    "content": "import {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc165/__generated__/IERC165/read/supportsInterface.js\nvar FN_SELECTOR = \"0x01ffc9a7\";\nvar FN_INPUTS = [\n  {\n    type: \"bytes4\",\n    name: \"interfaceId\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"bool\"\n  }\n];\nasync function supportsInterface(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.interfaceId]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/read/isERC721.js\nfunction isERC721(options) {\n  return supportsInterface({\n    contract: options.contract,\n    interfaceId: \"0x80ac58cd\"\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/read/isERC1155.js\nfunction isERC1155(options) {\n  return supportsInterface({\n    contract: options.contract,\n    interfaceId: \"0xd9b67a26\"\n  });\n}\n\nexport {\n  isERC721,\n  isERC1155\n};\n//# sourceMappingURL=chunk-QLCPWJYR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-QLJVAXYD.js",
    "content": "import {\n  withCache\n} from \"./chunk-GOA7IGSB.js\";\nimport {\n  getThirdwebBaseUrl\n} from \"./chunk-QHKZ43P6.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/ecosystem/get-ecosystem-wallet-auth-options.js\nasync function getEcosystemInfo(walletId) {\n  return withCache(async () => {\n    var _a;\n    const res = await fetch(`${getThirdwebBaseUrl(\"inAppWallet\")}/api/2024-05-05/ecosystem-wallet`, {\n      headers: {\n        \"x-ecosystem-id\": walletId\n      }\n    });\n    const data = await res.json();\n    if (!data || data.code === \"UNAUTHORIZED\") {\n      throw new Error(data.message || `Could not find ecosystem wallet with id ${walletId}, please check your ecosystem wallet configuration.`);\n    }\n    if ((_a = data.authOptions) == null ? void 0 : _a.includes(\"siwe\")) {\n      data.authOptions = data.authOptions.filter((o) => o !== \"siwe\");\n      data.authOptions.push(\"wallet\");\n    }\n    return data;\n  }, {\n    cacheKey: `ecosystem-wallet-options-${walletId}`,\n    cacheTime: 1e3 * 60 * 5\n    // 5 mins\n  });\n}\n\nexport {\n  getEcosystemInfo\n};\n//# sourceMappingURL=chunk-QLJVAXYD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-QVNJVROL.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/__generated__/IERC20/read/decimals.js\nvar FN_SELECTOR = \"0x313ce567\";\nvar FN_INPUTS = [];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint8\"\n  }\n];\nfunction isDecimalsSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nasync function decimals(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: []\n  });\n}\n\nexport {\n  isDecimalsSupported,\n  decimals\n};\n//# sourceMappingURL=chunk-QVNJVROL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-R554PO5S.js",
    "content": "import {\n  defineChain\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  hexToNumber\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/request-handlers/switch-chain.js\nasync function handleSwitchChain(options) {\n  var _a;\n  const { wallet, params } = options;\n  if (((_a = wallet.getChain()) == null ? void 0 : _a.id) === hexToNumber(params[0].chainId)) {\n    return \"0x1\";\n  }\n  await wallet.switchChain(defineChain(hexToNumber(params[0].chainId)));\n  return \"0x1\";\n}\n\nexport {\n  handleSwitchChain\n};\n//# sourceMappingURL=chunk-R554PO5S.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-R76ND7QY.js",
    "content": "import {\n  getDefaultAppMetadata\n} from \"./chunk-G26WKBGM.js\";\nimport {\n  getValidPublicRPCUrl,\n  normalizeChainId\n} from \"./chunk-7AY3QZZV.js\";\nimport {\n  COINBASE\n} from \"./chunk-BZXRHH4X.js\";\nimport {\n  showCoinbasePopup\n} from \"./chunk-2RRVHQYX.js\";\nimport {\n  trackTransaction\n} from \"./chunk-I2GEMA2B.js\";\nimport {\n  parseTypedData\n} from \"./chunk-SWMZXE3E.js\";\nimport {\n  getTypesForEIP712Domain,\n  serializeTypedData,\n  validateTypedData\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  isHex\n} from \"./chunk-GINVHONX.js\";\nimport {\n  getCachedChain,\n  getChainMetadata\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  numberToHex,\n  stringToHex,\n  uint8ArrayToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/coinbase/coinbaseWebSDK.js\nvar _provider;\nasync function getCoinbaseWebProvider(options) {\n  var _a, _b;\n  if (!_provider) {\n    let CoinbaseWalletSDK = (await import(\"./dist-UZFCJX5W.js\")).default;\n    if (typeof CoinbaseWalletSDK !== \"function\" && typeof CoinbaseWalletSDK.default === \"function\") {\n      CoinbaseWalletSDK = CoinbaseWalletSDK.default;\n    }\n    const client = new CoinbaseWalletSDK({\n      appName: ((_a = options == null ? void 0 : options.appMetadata) == null ? void 0 : _a.name) || getDefaultAppMetadata().name,\n      appChainIds: (options == null ? void 0 : options.chains) ? options.chains.map((c) => c.id) : void 0,\n      appLogoUrl: ((_b = options == null ? void 0 : options.appMetadata) == null ? void 0 : _b.logoUrl) || getDefaultAppMetadata().logoUrl\n    });\n    const provider = client.makeWeb3Provider(options == null ? void 0 : options.walletConfig);\n    _provider = provider;\n    return provider;\n  }\n  return _provider;\n}\nfunction isCoinbaseSDKWallet(wallet) {\n  return wallet.id === COINBASE;\n}\nasync function coinbaseSDKWalletGetCapabilities(args) {\n  const { wallet } = args;\n  const account = wallet.getAccount();\n  if (!account) {\n    return {\n      message: `Can't get capabilities, no account connected for wallet: ${wallet.id}`\n    };\n  }\n  const config = wallet.getConfig();\n  const provider = await getCoinbaseWebProvider(config);\n  try {\n    return await provider.request({\n      method: \"wallet_getCapabilities\",\n      params: [account.address]\n    });\n  } catch (error) {\n    if (/unsupport|not support/i.test(error.message)) {\n      return {\n        message: `${wallet.id} does not support wallet_getCapabilities, reach out to them directly to request EIP-5792 support.`\n      };\n    }\n    throw error;\n  }\n}\nasync function coinbaseSDKWalletSendCalls(args) {\n  const { wallet, params } = args;\n  const config = wallet.getConfig();\n  const provider = await getCoinbaseWebProvider(config);\n  try {\n    return await provider.request({\n      method: \"wallet_sendCalls\",\n      params\n    });\n  } catch (error) {\n    if (/unsupport|not support/i.test(error.message)) {\n      throw new Error(`${wallet.id} does not support wallet_sendCalls, reach out to them directly to request EIP-5792 support.`);\n    }\n    throw error;\n  }\n}\nasync function coinbaseSDKWalletShowCallsStatus(args) {\n  const { wallet, bundleId } = args;\n  const provider = await getCoinbaseWebProvider(wallet.getConfig());\n  try {\n    return await provider.request({\n      method: \"wallet_showCallsStatus\",\n      params: [bundleId]\n    });\n  } catch (error) {\n    if (/unsupport|not support/i.test(error.message)) {\n      throw new Error(`${wallet.id} does not support wallet_showCallsStatus, reach out to them directly to request EIP-5792 support.`);\n    }\n    throw error;\n  }\n}\nasync function coinbaseSDKWalletGetCallsStatus(args) {\n  const { wallet, bundleId } = args;\n  const config = wallet.getConfig();\n  const provider = await getCoinbaseWebProvider(config);\n  return provider.request({\n    method: \"wallet_getCallsStatus\",\n    params: [bundleId]\n  });\n}\nfunction createAccount({ provider, address, client }) {\n  const account = {\n    address,\n    async sendTransaction(tx) {\n      const transactionHash = await provider.request({\n        method: \"eth_sendTransaction\",\n        params: [\n          {\n            accessList: tx.accessList,\n            value: tx.value ? numberToHex(tx.value) : void 0,\n            gas: tx.gas ? numberToHex(tx.gas) : void 0,\n            from: getAddress(address),\n            to: tx.to,\n            data: tx.data\n          }\n        ]\n      });\n      trackTransaction({\n        client,\n        chainId: tx.chainId,\n        walletAddress: getAddress(address),\n        walletType: COINBASE,\n        transactionHash,\n        contractAddress: tx.to ?? void 0,\n        gasPrice: tx.gasPrice\n      });\n      return {\n        transactionHash\n      };\n    },\n    async signMessage({ message }) {\n      if (!account.address) {\n        throw new Error(\"Provider not setup\");\n      }\n      const messageToSign = (() => {\n        if (typeof message === \"string\") {\n          return stringToHex(message);\n        }\n        if (message.raw instanceof Uint8Array) {\n          return uint8ArrayToHex(message.raw);\n        }\n        return message.raw;\n      })();\n      const res = await provider.request({\n        method: \"personal_sign\",\n        params: [messageToSign, account.address]\n      });\n      if (!isHex(res)) {\n        throw new Error(\"Invalid signature returned\");\n      }\n      return res;\n    },\n    async signTypedData(_typedData) {\n      if (!account.address) {\n        throw new Error(\"Provider not setup\");\n      }\n      const typedData = parseTypedData(_typedData);\n      const { domain, message, primaryType } = typedData;\n      const types = {\n        EIP712Domain: getTypesForEIP712Domain({ domain }),\n        ...typedData.types\n      };\n      validateTypedData({ domain, message, primaryType, types });\n      const stringifiedData = serializeTypedData({\n        domain: domain ?? {},\n        message,\n        primaryType,\n        types\n      });\n      const res = await provider.request({\n        method: \"eth_signTypedData_v4\",\n        params: [account.address, stringifiedData]\n      });\n      if (!isHex(res)) {\n        throw new Error(\"Invalid signed payload returned\");\n      }\n      return res;\n    },\n    onTransactionRequested: async () => {\n      await showCoinbasePopup(provider);\n    }\n  };\n  return account;\n}\nfunction onConnect(address, chain, provider, emitter, client) {\n  const account = createAccount({ provider, address, client });\n  async function disconnect() {\n    provider.removeListener(\"accountsChanged\", onAccountsChanged);\n    provider.removeListener(\"chainChanged\", onChainChanged);\n    provider.removeListener(\"disconnect\", onDisconnect);\n    await provider.disconnect();\n  }\n  async function onDisconnect() {\n    disconnect();\n    emitter.emit(\"disconnect\", void 0);\n  }\n  function onAccountsChanged(accounts) {\n    if (accounts[0]) {\n      const newAccount = createAccount({\n        provider,\n        address: getAddress(accounts[0]),\n        client\n      });\n      emitter.emit(\"accountChanged\", newAccount);\n      emitter.emit(\"accountsChanged\", accounts);\n    } else {\n      onDisconnect();\n    }\n  }\n  function onChainChanged(newChainId) {\n    const newChain = getCachedChain(normalizeChainId(newChainId));\n    emitter.emit(\"chainChanged\", newChain);\n  }\n  provider.on(\"accountsChanged\", onAccountsChanged);\n  provider.on(\"chainChanged\", onChainChanged);\n  provider.on(\"disconnect\", onDisconnect);\n  return [\n    account,\n    chain,\n    onDisconnect,\n    (newChain) => switchChainCoinbaseWalletSDK(provider, newChain)\n  ];\n}\nasync function connectCoinbaseWalletSDK(options, emitter, provider) {\n  const accounts = await provider.request({\n    method: \"eth_requestAccounts\"\n  });\n  if (!accounts[0]) {\n    throw new Error(\"No accounts found\");\n  }\n  const address = getAddress(accounts[0]);\n  const connectedChainId = await provider.request({\n    method: \"eth_chainId\"\n  });\n  const chainId = normalizeChainId(connectedChainId);\n  let chain = options.chain && options.chain.id === chainId ? options.chain : getCachedChain(chainId);\n  if (connectedChainId && (options == null ? void 0 : options.chain) && connectedChainId !== (options == null ? void 0 : options.chain.id)) {\n    await switchChainCoinbaseWalletSDK(provider, options.chain);\n    chain = options.chain;\n  }\n  return onConnect(address, chain, provider, emitter, options.client);\n}\nasync function autoConnectCoinbaseWalletSDK(options, emitter, provider) {\n  const addresses = await provider.request({\n    method: \"eth_accounts\"\n  });\n  const address = addresses[0];\n  if (!address) {\n    throw new Error(\"No accounts found\");\n  }\n  const connectedChainId = await provider.request({\n    method: \"eth_chainId\"\n  });\n  const chainId = normalizeChainId(connectedChainId);\n  const chain = options.chain && options.chain.id === chainId ? options.chain : getCachedChain(chainId);\n  return onConnect(address, chain, provider, emitter, options.client);\n}\nasync function switchChainCoinbaseWalletSDK(provider, chain) {\n  var _a;\n  const chainIdHex = numberToHex(chain.id);\n  try {\n    await provider.request({\n      method: \"wallet_switchEthereumChain\",\n      params: [{ chainId: chainIdHex }]\n    });\n  } catch (error) {\n    const apiChain = await getChainMetadata(chain);\n    if ((error == null ? void 0 : error.code) === 4902) {\n      await provider.request({\n        method: \"wallet_addEthereumChain\",\n        params: [\n          {\n            chainId: chainIdHex,\n            chainName: apiChain.name,\n            nativeCurrency: apiChain.nativeCurrency,\n            rpcUrls: getValidPublicRPCUrl(apiChain),\n            // no client id on purpose here\n            blockExplorerUrls: ((_a = apiChain.explorers) == null ? void 0 : _a.map((x) => x.url)) || []\n          }\n        ]\n      });\n    }\n  }\n}\n\nexport {\n  getCoinbaseWebProvider,\n  isCoinbaseSDKWallet,\n  coinbaseSDKWalletGetCapabilities,\n  coinbaseSDKWalletSendCalls,\n  coinbaseSDKWalletShowCallsStatus,\n  coinbaseSDKWalletGetCallsStatus,\n  connectCoinbaseWalletSDK,\n  autoConnectCoinbaseWalletSDK\n};\n//# sourceMappingURL=chunk-R76ND7QY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-RC344ZND.js",
    "content": "import {\n  getSavedConnectParamsFromStorage,\n  saveConnectParamsToStorage\n} from \"./chunk-YGRUPXVB.js\";\nimport {\n  DEFAULT_PROJECT_ID,\n  NAMESPACE\n} from \"./chunk-XB34LHR5.js\";\nimport {\n  formatWalletConnectUrl\n} from \"./chunk-5U5XBS6S.js\";\nimport {\n  getWalletInfo\n} from \"./chunk-XC5J5ANL.js\";\nimport {\n  getDefaultAppMetadata\n} from \"./chunk-G26WKBGM.js\";\nimport {\n  getValidPublicRPCUrl,\n  normalizeChainId\n} from \"./chunk-7AY3QZZV.js\";\nimport {\n  trackTransaction\n} from \"./chunk-I2GEMA2B.js\";\nimport {\n  parseTypedData\n} from \"./chunk-SWMZXE3E.js\";\nimport {\n  getTypesForEIP712Domain,\n  serializeTypedData,\n  validateTypedData\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  SwitchChainError,\n  UserRejectedRequestError\n} from \"./chunk-GINVHONX.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  getCachedChain,\n  getChainMetadata,\n  getRpcUrlForChain\n} from \"./chunk-TFBEDS4S.js\";\nimport {\n  numberToHex,\n  stringToHex,\n  uint8ArrayToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/controller.js\nvar ADD_ETH_CHAIN_METHOD = \"wallet_addEthereumChain\";\nvar defaultShowQrModal = true;\nvar storageKeys = {\n  requestedChains: \"tw.wc.requestedChains\",\n  lastUsedChainId: \"tw.wc.lastUsedChainId\"\n};\nfunction isWalletConnect(wallet) {\n  return wallet.id === \"walletConnect\";\n}\nasync function connectWC(options, emitter, walletId, storage, sessionHandler) {\n  var _a, _b;\n  const provider = await initProvider(options, walletId, sessionHandler);\n  const wcOptions = options.walletConnect;\n  let { onDisplayUri } = wcOptions || {};\n  if (!onDisplayUri && sessionHandler && walletId !== \"walletConnect\") {\n    const walletInfo = await getWalletInfo(walletId);\n    const deeplinkHandler = (uri) => {\n      const appUrl = walletInfo.mobile.native || walletInfo.mobile.universal;\n      if (!appUrl) {\n        throw new Error(\"No app url found for wallet connect to redirect to.\");\n      }\n      const fullUrl = formatWalletConnectUrl(appUrl, uri).redirect;\n      sessionHandler(fullUrl);\n    };\n    onDisplayUri = deeplinkHandler;\n  }\n  if (onDisplayUri) {\n    provider.events.addListener(\"display_uri\", onDisplayUri);\n  }\n  let optionalChains = wcOptions == null ? void 0 : wcOptions.optionalChains;\n  let chainToRequest = options.chain;\n  if (walletId === \"global.safe\") {\n    optionalChains = chainsToRequestForSafe.map(getCachedChain);\n    if (chainToRequest && !optionalChains.includes(chainToRequest)) {\n      chainToRequest = void 0;\n    }\n  }\n  const { rpcMap, requiredChain, optionalChains: chainsToRequest } = getChainsToRequest({\n    client: options.client,\n    chain: chainToRequest,\n    optionalChains\n  });\n  if (provider.session) {\n    await provider.connect({\n      ...(wcOptions == null ? void 0 : wcOptions.pairingTopic) ? { pairingTopic: wcOptions == null ? void 0 : wcOptions.pairingTopic } : {},\n      optionalChains: chainsToRequest,\n      chains: requiredChain ? [requiredChain.id] : void 0,\n      rpcMap\n    });\n  }\n  setRequestedChainsIds(chainsToRequest, storage);\n  const addresses = await provider.enable();\n  const address = addresses[0];\n  if (!address) {\n    throw new Error(\"No accounts found on provider.\");\n  }\n  const providerChainId = normalizeChainId(provider.chainId);\n  const chain = options.chain && options.chain.id === providerChainId ? options.chain : getCachedChain(providerChainId);\n  if (options) {\n    const savedParams = {\n      optionalChains: (_a = options.walletConnect) == null ? void 0 : _a.optionalChains,\n      chain: options.chain,\n      pairingTopic: (_b = options.walletConnect) == null ? void 0 : _b.pairingTopic\n    };\n    if (storage) {\n      saveConnectParamsToStorage(storage, walletId, savedParams);\n    }\n  }\n  if (wcOptions == null ? void 0 : wcOptions.onDisplayUri) {\n    provider.events.removeListener(\"display_uri\", wcOptions.onDisplayUri);\n  }\n  return onConnect(address, chain, provider, emitter, storage, options.client);\n}\nasync function autoConnectWC(options, emitter, walletId, storage, sessionHandler) {\n  const savedConnectParams = storage ? await getSavedConnectParamsFromStorage(storage, walletId) : null;\n  const provider = await initProvider(savedConnectParams ? {\n    chain: savedConnectParams.chain,\n    client: options.client,\n    walletConnect: {\n      pairingTopic: savedConnectParams.pairingTopic,\n      optionalChains: savedConnectParams.optionalChains\n    }\n  } : {\n    client: options.client,\n    walletConnect: {}\n  }, walletId, sessionHandler, true);\n  const address = provider.accounts[0];\n  if (!address) {\n    throw new Error(\"No accounts found on provider.\");\n  }\n  const providerChainId = normalizeChainId(provider.chainId);\n  const chain = options.chain && options.chain.id === providerChainId ? options.chain : getCachedChain(providerChainId);\n  return onConnect(address, chain, provider, emitter, storage, options.client);\n}\nasync function initProvider(options, walletId, sessionRequestHandler, isAutoConnect = false) {\n  var _a, _b, _c, _d;\n  const walletInfo = await getWalletInfo(walletId);\n  const wcOptions = options.walletConnect;\n  const { EthereumProvider, OPTIONAL_EVENTS, OPTIONAL_METHODS } = await import(\"./index.es-AMKWX7QZ.js\");\n  let optionalChains = wcOptions == null ? void 0 : wcOptions.optionalChains;\n  let chainToRequest = options.chain;\n  if (walletId === \"global.safe\") {\n    optionalChains = chainsToRequestForSafe.map(getCachedChain);\n    if (chainToRequest && !optionalChains.includes(chainToRequest)) {\n      chainToRequest = void 0;\n    }\n  }\n  const { rpcMap, requiredChain, optionalChains: chainsToRequest } = getChainsToRequest({\n    client: options.client,\n    chain: chainToRequest,\n    optionalChains\n  });\n  const provider = await EthereumProvider.init({\n    showQrModal: (wcOptions == null ? void 0 : wcOptions.showQrModal) === void 0 ? sessionRequestHandler ? false : defaultShowQrModal : wcOptions.showQrModal,\n    projectId: (wcOptions == null ? void 0 : wcOptions.projectId) || DEFAULT_PROJECT_ID,\n    optionalMethods: OPTIONAL_METHODS,\n    optionalEvents: OPTIONAL_EVENTS,\n    optionalChains: chainsToRequest,\n    chains: requiredChain ? [requiredChain.id] : void 0,\n    metadata: {\n      name: ((_a = wcOptions == null ? void 0 : wcOptions.appMetadata) == null ? void 0 : _a.name) || getDefaultAppMetadata().name,\n      description: ((_b = wcOptions == null ? void 0 : wcOptions.appMetadata) == null ? void 0 : _b.description) || getDefaultAppMetadata().description,\n      url: ((_c = wcOptions == null ? void 0 : wcOptions.appMetadata) == null ? void 0 : _c.url) || getDefaultAppMetadata().url,\n      icons: [\n        ((_d = wcOptions == null ? void 0 : wcOptions.appMetadata) == null ? void 0 : _d.logoUrl) || getDefaultAppMetadata().logoUrl\n      ]\n    },\n    rpcMap,\n    qrModalOptions: wcOptions == null ? void 0 : wcOptions.qrModalOptions,\n    disableProviderPing: true\n  });\n  provider.events.setMaxListeners(Number.POSITIVE_INFINITY);\n  if (!isAutoConnect) {\n    if (provider.session) {\n      await provider.disconnect();\n    }\n  }\n  if (walletId !== \"walletConnect\") {\n    async function handleSessionRequest() {\n      var _a2, _b2, _c2, _d2;\n      const walletLinkToOpen = ((_d2 = (_c2 = (_b2 = (_a2 = provider.session) == null ? void 0 : _a2.peer) == null ? void 0 : _b2.metadata) == null ? void 0 : _c2.redirect) == null ? void 0 : _d2.native) || walletInfo.mobile.native || walletInfo.mobile.universal;\n      if (sessionRequestHandler && walletLinkToOpen) {\n        await sessionRequestHandler(walletLinkToOpen);\n      }\n    }\n    provider.signer.client.on(\"session_request_sent\", handleSessionRequest);\n    provider.events.addListener(\"disconnect\", () => {\n      provider.signer.client.off(\"session_request_sent\", handleSessionRequest);\n    });\n  }\n  return provider;\n}\nfunction createAccount({ provider, address, client }) {\n  const account = {\n    address,\n    async sendTransaction(tx) {\n      const transactionHash = await provider.request({\n        method: \"eth_sendTransaction\",\n        params: [\n          {\n            gas: tx.gas ? numberToHex(tx.gas) : void 0,\n            value: tx.value ? numberToHex(tx.value) : void 0,\n            from: getAddress(address),\n            to: tx.to,\n            data: tx.data\n          }\n        ]\n      });\n      trackTransaction({\n        client,\n        walletAddress: getAddress(address),\n        walletType: \"walletConnect\",\n        transactionHash,\n        chainId: tx.chainId,\n        contractAddress: tx.to ?? void 0,\n        gasPrice: tx.gasPrice\n      });\n      return {\n        transactionHash\n      };\n    },\n    async signMessage({ message }) {\n      const messageToSign = (() => {\n        if (typeof message === \"string\") {\n          return stringToHex(message);\n        }\n        if (message.raw instanceof Uint8Array) {\n          return uint8ArrayToHex(message.raw);\n        }\n        return message.raw;\n      })();\n      return provider.request({\n        method: \"personal_sign\",\n        params: [messageToSign, this.address]\n      });\n    },\n    async signTypedData(_data) {\n      const data = parseTypedData(_data);\n      const { domain, message, primaryType } = data;\n      const types = {\n        EIP712Domain: getTypesForEIP712Domain({ domain }),\n        ...data.types\n      };\n      validateTypedData({ domain, message, primaryType, types });\n      const typedData = serializeTypedData({\n        domain: domain ?? {},\n        message,\n        primaryType,\n        types\n      });\n      return await provider.request({\n        method: \"eth_signTypedData_v4\",\n        params: [this.address, typedData]\n      });\n    }\n  };\n  return account;\n}\nfunction onConnect(address, chain, provider, emitter, storage, client) {\n  const account = createAccount({ provider, address, client });\n  async function disconnect() {\n    provider.removeListener(\"accountsChanged\", onAccountsChanged);\n    provider.removeListener(\"chainChanged\", onChainChanged);\n    provider.removeListener(\"disconnect\", onDisconnect);\n    await provider.disconnect();\n  }\n  function onDisconnect() {\n    setRequestedChainsIds([], storage);\n    storage == null ? void 0 : storage.removeItem(storageKeys.lastUsedChainId);\n    disconnect();\n    emitter.emit(\"disconnect\", void 0);\n  }\n  function onAccountsChanged(accounts) {\n    if (accounts[0]) {\n      const newAccount = createAccount({\n        provider,\n        address: getAddress(accounts[0]),\n        client\n      });\n      emitter.emit(\"accountChanged\", newAccount);\n      emitter.emit(\"accountsChanged\", accounts);\n    } else {\n      onDisconnect();\n    }\n  }\n  function onChainChanged(newChainId) {\n    const newChain = getCachedChain(normalizeChainId(newChainId));\n    emitter.emit(\"chainChanged\", newChain);\n    storage == null ? void 0 : storage.setItem(storageKeys.lastUsedChainId, String(newChainId));\n  }\n  provider.on(\"accountsChanged\", onAccountsChanged);\n  provider.on(\"chainChanged\", onChainChanged);\n  provider.on(\"disconnect\", onDisconnect);\n  provider.on(\"session_delete\", onDisconnect);\n  return [\n    account,\n    chain,\n    disconnect,\n    (newChain) => switchChainWC(provider, newChain, storage)\n  ];\n}\nfunction getNamespaceMethods(provider) {\n  var _a, _b;\n  return ((_b = (_a = provider.session) == null ? void 0 : _a.namespaces[NAMESPACE]) == null ? void 0 : _b.methods) || [];\n}\nfunction getNamespaceChainsIds(provider) {\n  var _a, _b, _c;\n  const chainIds = (_c = (_b = (_a = provider.session) == null ? void 0 : _a.namespaces[NAMESPACE]) == null ? void 0 : _b.chains) == null ? void 0 : _c.map((chain) => Number.parseInt(chain.split(\":\")[1] || \"\"));\n  return chainIds ?? [];\n}\nasync function switchChainWC(provider, chain, storage) {\n  var _a, _b;\n  const chainId = chain.id;\n  try {\n    const namespaceChains = getNamespaceChainsIds(provider);\n    const namespaceMethods = getNamespaceMethods(provider);\n    const isChainApproved = namespaceChains.includes(chainId);\n    if (!isChainApproved && namespaceMethods.includes(ADD_ETH_CHAIN_METHOD)) {\n      const apiChain = await getChainMetadata(chain);\n      const blockExplorerUrls = [\n        .../* @__PURE__ */ new Set([\n          ...((_a = chain.blockExplorers) == null ? void 0 : _a.map((x) => x.url)) || [],\n          ...((_b = apiChain.explorers) == null ? void 0 : _b.map((x) => x.url)) || []\n        ])\n      ];\n      await provider.request({\n        method: ADD_ETH_CHAIN_METHOD,\n        params: [\n          {\n            chainId: numberToHex(apiChain.chainId),\n            chainName: apiChain.name,\n            nativeCurrency: apiChain.nativeCurrency,\n            rpcUrls: getValidPublicRPCUrl(apiChain),\n            // no clientId on purpose\n            blockExplorerUrls: blockExplorerUrls.length > 0 ? blockExplorerUrls : void 0\n          }\n        ]\n      });\n      const requestedChains = await getRequestedChainsIds(storage);\n      requestedChains.push(chainId);\n      setRequestedChainsIds(requestedChains, storage);\n    }\n    await provider.request({\n      method: \"wallet_switchEthereumChain\",\n      params: [{ chainId: numberToHex(chainId) }]\n    });\n  } catch (error) {\n    const message = typeof error === \"string\" ? error : error == null ? void 0 : error.message;\n    if (/user rejected request/i.test(message)) {\n      throw new UserRejectedRequestError(error);\n    }\n    throw new SwitchChainError(error);\n  }\n}\nfunction setRequestedChainsIds(chains, storage) {\n  storage == null ? void 0 : storage.setItem(storageKeys.requestedChains, stringify(chains));\n}\nasync function getRequestedChainsIds(storage) {\n  const data = await storage.getItem(storageKeys.requestedChains);\n  return data ? JSON.parse(data) : [];\n}\nfunction getChainsToRequest(options) {\n  const rpcMap = {};\n  if (options.chain) {\n    rpcMap[options.chain.id] = getRpcUrlForChain({\n      chain: options.chain,\n      client: options.client\n    });\n  }\n  const optionalChains = ((options == null ? void 0 : options.optionalChains) || []).slice(0, 10);\n  for (const chain of optionalChains) {\n    rpcMap[chain.id] = getRpcUrlForChain({\n      chain,\n      client: options.client\n    });\n  }\n  if (!options.chain && optionalChains.length === 0) {\n    rpcMap[1] = getCachedChain(1).rpc;\n  }\n  return {\n    rpcMap,\n    requiredChain: options.chain ? options.chain : void 0,\n    optionalChains: optionalChains.length > 0 ? optionalChains.map((x) => x.id) : [1]\n  };\n}\nvar chainsToRequestForSafe = [\n  1,\n  // Ethereum Mainnet\n  11155111,\n  // Sepolia Testnet\n  42161,\n  // Arbitrum One Mainnet\n  43114,\n  // Avalanche Mainnet\n  8453,\n  // Base Mainnet\n  1313161554,\n  // Aurora Mainnet\n  84532,\n  // Base Sepolia Testnet\n  56,\n  // Binance Smart Chain Mainnet\n  42220,\n  // Celo Mainnet\n  100,\n  // Gnosis Mainnet\n  10,\n  // Optimism Mainnet\n  137,\n  // Polygon Mainnet\n  1101,\n  // Polygon zkEVM Mainnet\n  324,\n  // zkSync Era mainnet\n  534352\n  // Scroll mainnet\n];\n\nexport {\n  isWalletConnect,\n  connectWC,\n  autoConnectWC\n};\n//# sourceMappingURL=chunk-RC344ZND.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-RF65TSG5.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IDrop/read/getActiveClaimConditionId.js\nvar FN_SELECTOR = \"0xc68907de\";\nvar FN_INPUTS = [];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint256\"\n  }\n];\nfunction isGetActiveClaimConditionIdSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nasync function getActiveClaimConditionId(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: []\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IDrop/read/getClaimConditionById.js\nvar FN_SELECTOR2 = \"0x6f8934f4\";\nvar FN_INPUTS2 = [\n  {\n    type: \"uint256\",\n    name: \"_conditionId\"\n  }\n];\nvar FN_OUTPUTS2 = [\n  {\n    type: \"tuple\",\n    name: \"condition\",\n    components: [\n      {\n        type: \"uint256\",\n        name: \"startTimestamp\"\n      },\n      {\n        type: \"uint256\",\n        name: \"maxClaimableSupply\"\n      },\n      {\n        type: \"uint256\",\n        name: \"supplyClaimed\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantityLimitPerWallet\"\n      },\n      {\n        type: \"bytes32\",\n        name: \"merkleRoot\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      },\n      {\n        type: \"string\",\n        name: \"metadata\"\n      }\n    ]\n  }\n];\nfunction isGetClaimConditionByIdSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2]\n  });\n}\nasync function getClaimConditionById(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2],\n    params: [options.conditionId]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/drops/read/getActiveClaimCondition.js\nasync function getActiveClaimCondition(options) {\n  try {\n    const conditionId = await getActiveClaimConditionId(options);\n    return getClaimConditionById({ ...options, conditionId });\n  } catch {\n    throw new Error(\"Claim condition not found\");\n  }\n}\nfunction isGetActiveClaimConditionSupported(availableSelectors) {\n  return isGetActiveClaimConditionIdSupported(availableSelectors) && isGetClaimConditionByIdSupported(availableSelectors);\n}\n\nexport {\n  getActiveClaimCondition,\n  isGetActiveClaimConditionSupported\n};\n//# sourceMappingURL=chunk-RF65TSG5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-S4ZGHGPT.js",
    "content": "import {\n  getPayBuyWithCryptoHistoryEndpoint\n} from \"./chunk-PHVX3XOV.js\";\nimport {\n  isAbiEvent,\n  parseEventLogs,\n  prepareEvent\n} from \"./chunk-DYKFWRMQ.js\";\nimport {\n  extractError,\n  resolveContractAbi\n} from \"./chunk-JZC47WAY.js\";\nimport {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport {\n  encode\n} from \"./chunk-7QDK5KLB.js\";\nimport {\n  eth_blockNumber,\n  watchBlockNumber\n} from \"./chunk-JBQP4JIV.js\";\nimport {\n  isObjectWithKeys\n} from \"./chunk-3ZOYRTTJ.js\";\nimport {\n  eth_call\n} from \"./chunk-AG4NO6K6.js\";\nimport {\n  formatLog\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  decodeAbiParameters,\n  formatTransactionRequest\n} from \"./chunk-GINVHONX.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\nimport {\n  numberToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_getLogs.js\nasync function eth_getLogs(request, params = {}) {\n  const topics = params.topics ?? [];\n  let logs;\n  if (params.blockHash) {\n    const param = {\n      topics,\n      blockHash: params.blockHash\n    };\n    if (params.address) {\n      param.address = params.address;\n    }\n    logs = await request({\n      method: \"eth_getLogs\",\n      params: [param]\n    });\n  } else {\n    const param = { topics };\n    if (params.address) {\n      param.address = params.address;\n    }\n    if (params.fromBlock) {\n      param.fromBlock = typeof params.fromBlock === \"bigint\" ? numberToHex(params.fromBlock) : params.fromBlock;\n    }\n    if (params.toBlock) {\n      param.toBlock = typeof params.toBlock === \"bigint\" ? numberToHex(params.toBlock) : params.toBlock;\n    }\n    logs = await request({\n      method: \"eth_getLogs\",\n      params: [param]\n    });\n  }\n  return logs.map((log) => formatLog(log));\n}\n\n// node_modules/thirdweb/dist/esm/transaction/types.js\nfunction isBaseTransactionOptions(value) {\n  return isObjectWithKeys(value, [\"__contract\"]) && isObjectWithKeys(value.__contract, [\"address\", \"chain\"]) && typeof value.__contract.address === \"string\";\n}\n\n// node_modules/thirdweb/dist/esm/transaction/actions/simulate.js\nasync function simulateTransaction(options) {\n  var _a;\n  const [data, to, accessList, value] = await Promise.all([\n    encode(options.transaction),\n    resolvePromisedValue(options.transaction.to),\n    resolvePromisedValue(options.transaction.accessList),\n    resolvePromisedValue(options.transaction.value)\n  ]);\n  const from = options.from ?? ((_a = options.account) == null ? void 0 : _a.address) ?? void 0;\n  const serializedTx = formatTransactionRequest({\n    data,\n    from,\n    to,\n    value,\n    accessList\n  });\n  const rpcRequest = getRpcClient(options.transaction);\n  try {\n    const result = await eth_call(rpcRequest, serializedTx);\n    if (!options.transaction.__preparedMethod) {\n      return result;\n    }\n    const prepared = await options.transaction.__preparedMethod();\n    const decoded = decodeAbiParameters(prepared[2], result);\n    if (Array.isArray(decoded) && decoded.length === 1) {\n      return decoded[0];\n    }\n    return decoded;\n  } catch (error) {\n    throw await extractError({\n      error,\n      contract: options.transaction.__contract\n    });\n  }\n}\n\n// node_modules/thirdweb/dist/esm/event/actions/get-events.js\nasync function getContractEvents(options) {\n  var _a;\n  const { contract, events, blockRange, ...restParams } = options;\n  const rpcRequest = getRpcClient(contract);\n  if (restParams.blockHash && (blockRange || restParams.fromBlock || restParams.toBlock)) {\n    throw new Error(\"Cannot specify blockHash and range simultaneously,\");\n  }\n  const latestBlockNumber = await eth_blockNumber(rpcRequest);\n  if (blockRange) {\n    const { fromBlock, toBlock } = restParams;\n    if (fromBlock !== void 0 && toBlock !== void 0 && BigInt(toBlock) - BigInt(fromBlock) !== BigInt(blockRange)) {\n      throw new Error(\"Incompatible blockRange with specified fromBlock and toBlock. Please only define fromBlock or toBlock when specifying blockRange.\");\n    }\n    if (fromBlock !== void 0) {\n      restParams.toBlock = BigInt(fromBlock) + BigInt(blockRange) - 1n;\n    } else if (toBlock !== void 0) {\n      restParams.fromBlock = BigInt(toBlock) - BigInt(blockRange) + 1n;\n    } else {\n      restParams.toBlock = latestBlockNumber;\n      restParams.fromBlock = latestBlockNumber - BigInt(blockRange) + 1n;\n    }\n  }\n  let resolvedEvents = events ?? [];\n  if (!(events == null ? void 0 : events.length) && !!contract) {\n    if ((_a = contract.abi) == null ? void 0 : _a.length) {\n      resolvedEvents = contract.abi.filter(isAbiEvent).map((abiEvent) => prepareEvent({ signature: abiEvent }));\n    } else {\n      const runtimeAbi = await resolveContractAbi(contract);\n      resolvedEvents = runtimeAbi.filter(isAbiEvent).map((abiEvent) => prepareEvent({ signature: abiEvent }));\n    }\n  }\n  const logsParams = events && events.length > 0 ? (\n    // if we have events passed in then we use those\n    events.map((e) => ({\n      ...restParams,\n      address: contract == null ? void 0 : contract.address,\n      topics: e.topics\n    }))\n  ) : (\n    // otherwise we want \"all\" events (aka not pass any topics at all)\n    [{ ...restParams, address: contract == null ? void 0 : contract.address }]\n  );\n  const logs = await Promise.all(logsParams.map((ethLogParams) => eth_getLogs(rpcRequest, ethLogParams)));\n  const flattenLogs = logs.flat().sort((a, b) => Number((a.blockNumber ?? 0n) - (b.blockNumber ?? 0n)));\n  return parseEventLogs({\n    logs: flattenLogs,\n    events: resolvedEvents\n  });\n}\n\n// node_modules/thirdweb/dist/esm/utils/retry.js\nasync function retry(fn, options) {\n  const retries = options.retries ?? 1;\n  const delay = options.delay ?? 0;\n  let lastError = null;\n  for (let i = 0; i < retries; i++) {\n    try {\n      return await fn();\n    } catch (error) {\n      lastError = error;\n      if (delay > 0) {\n        await new Promise((resolve) => setTimeout(resolve, delay));\n      }\n    }\n  }\n  throw lastError;\n}\n\n// node_modules/thirdweb/dist/esm/event/actions/watch-events.js\nfunction watchContractEvents(options) {\n  return watchBlockNumber({\n    ...options.contract,\n    /**\n     * This function is called every time a new block is mined.\n     * @param blockNumber - The block number of the new block.\n     * @returns A promise that resolves when the function is finished.\n     * @internal\n     */\n    onNewBlockNumber: async (blockNumber) => {\n      const logs = await retry(async () => getContractEvents({\n        ...options,\n        // fromBlock is inclusive\n        fromBlock: blockNumber,\n        // toBlock is inclusive\n        toBlock: blockNumber\n      }), {\n        retries: 3,\n        delay: 500\n      });\n      if (logs.length) {\n        options.onEvents(logs);\n      }\n    },\n    latestBlockNumber: options.latestBlockNumber\n  });\n}\n\n// node_modules/thirdweb/dist/esm/pay/buyWithCrypto/getHistory.js\nasync function getBuyWithCryptoHistory(params) {\n  var _a;\n  try {\n    const queryParams = new URLSearchParams();\n    queryParams.append(\"walletAddress\", params.walletAddress);\n    queryParams.append(\"start\", params.start.toString());\n    queryParams.append(\"count\", params.count.toString());\n    const queryString = queryParams.toString();\n    const url = `${getPayBuyWithCryptoHistoryEndpoint()}?${queryString}`;\n    const response = await getClientFetch(params.client)(url);\n    if (!response.ok) {\n      (_a = response.body) == null ? void 0 : _a.cancel();\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    const data = (await response.json()).result;\n    return data;\n  } catch (error) {\n    throw new Error(`Fetch failed: ${error}`);\n  }\n}\n\nexport {\n  eth_getLogs,\n  isBaseTransactionOptions,\n  simulateTransaction,\n  getContractEvents,\n  watchContractEvents,\n  getBuyWithCryptoHistory\n};\n//# sourceMappingURL=chunk-S4ZGHGPT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-S6VQW2VI.js",
    "content": "import {\n  uint8ArrayToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/utils/random.js\nfunction randomBytesHex(length = 32) {\n  return uint8ArrayToHex(randomBytesBuffer(length));\n}\nfunction randomBytesBuffer(length = 32) {\n  return globalThis.crypto.getRandomValues(new Uint8Array(length));\n}\n\nexport {\n  randomBytesHex\n};\n//# sourceMappingURL=chunk-S6VQW2VI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-SEVZ5PBP.js",
    "content": "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __require = /* @__PURE__ */ ((x) => typeof require !== \"undefined\" ? require : typeof Proxy !== \"undefined\" ? new Proxy(x, {\n  get: (a, b) => (typeof require !== \"undefined\" ? require : a)[b]\n}) : x)(function(x) {\n  if (typeof require !== \"undefined\")\n    return require.apply(this, arguments);\n  throw Error('Dynamic require of \"' + x + '\" is not supported');\n});\nvar __esm = (fn, res) => function __init() {\n  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require2() {\n  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n  // If the importer is in node compatibility mode or this is not an ESM\n  // file that has been converted to a CommonJS file using a Babel-\n  // compatible transform (i.e. \"__esModule\" has not been set), then set\n  // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n  mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\nvar __privateWrapper = (obj, member, setter, getter) => ({\n  set _(value) {\n    __privateSet(obj, member, value, setter);\n  },\n  get _() {\n    return __privateGet(obj, member, getter);\n  }\n});\nvar __privateMethod = (obj, member, method) => {\n  __accessCheck(obj, member, \"access private method\");\n  return method;\n};\n\nexport {\n  __require,\n  __esm,\n  __commonJS,\n  __export,\n  __reExport,\n  __toESM,\n  __toCommonJS,\n  __privateGet,\n  __privateAdd,\n  __privateSet,\n  __privateWrapper,\n  __privateMethod\n};\n//# sourceMappingURL=chunk-SEVZ5PBP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-SJKAB62J.js",
    "content": "import {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  __commonJS\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/scheduler/cjs/scheduler.development.js\nvar require_scheduler_development = __commonJS({\n  \"node_modules/scheduler/cjs/scheduler.development.js\"(exports) {\n    \"use strict\";\n    if (true) {\n      (function() {\n        \"use strict\";\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n        }\n        var enableSchedulerDebugging = false;\n        var enableProfiling = false;\n        var frameYieldMs = 5;\n        function push(heap, node) {\n          var index = heap.length;\n          heap.push(node);\n          siftUp(heap, node, index);\n        }\n        function peek(heap) {\n          return heap.length === 0 ? null : heap[0];\n        }\n        function pop(heap) {\n          if (heap.length === 0) {\n            return null;\n          }\n          var first = heap[0];\n          var last = heap.pop();\n          if (last !== first) {\n            heap[0] = last;\n            siftDown(heap, last, 0);\n          }\n          return first;\n        }\n        function siftUp(heap, node, i) {\n          var index = i;\n          while (index > 0) {\n            var parentIndex = index - 1 >>> 1;\n            var parent = heap[parentIndex];\n            if (compare(parent, node) > 0) {\n              heap[parentIndex] = node;\n              heap[index] = parent;\n              index = parentIndex;\n            } else {\n              return;\n            }\n          }\n        }\n        function siftDown(heap, node, i) {\n          var index = i;\n          var length = heap.length;\n          var halfLength = length >>> 1;\n          while (index < halfLength) {\n            var leftIndex = (index + 1) * 2 - 1;\n            var left = heap[leftIndex];\n            var rightIndex = leftIndex + 1;\n            var right = heap[rightIndex];\n            if (compare(left, node) < 0) {\n              if (rightIndex < length && compare(right, left) < 0) {\n                heap[index] = right;\n                heap[rightIndex] = node;\n                index = rightIndex;\n              } else {\n                heap[index] = left;\n                heap[leftIndex] = node;\n                index = leftIndex;\n              }\n            } else if (rightIndex < length && compare(right, node) < 0) {\n              heap[index] = right;\n              heap[rightIndex] = node;\n              index = rightIndex;\n            } else {\n              return;\n            }\n          }\n        }\n        function compare(a, b) {\n          var diff = a.sortIndex - b.sortIndex;\n          return diff !== 0 ? diff : a.id - b.id;\n        }\n        var ImmediatePriority = 1;\n        var UserBlockingPriority = 2;\n        var NormalPriority = 3;\n        var LowPriority = 4;\n        var IdlePriority = 5;\n        function markTaskErrored(task, ms) {\n        }\n        var hasPerformanceNow = typeof performance === \"object\" && typeof performance.now === \"function\";\n        if (hasPerformanceNow) {\n          var localPerformance = performance;\n          exports.unstable_now = function() {\n            return localPerformance.now();\n          };\n        } else {\n          var localDate = Date;\n          var initialTime = localDate.now();\n          exports.unstable_now = function() {\n            return localDate.now() - initialTime;\n          };\n        }\n        var maxSigned31BitInt = 1073741823;\n        var IMMEDIATE_PRIORITY_TIMEOUT = -1;\n        var USER_BLOCKING_PRIORITY_TIMEOUT = 250;\n        var NORMAL_PRIORITY_TIMEOUT = 5e3;\n        var LOW_PRIORITY_TIMEOUT = 1e4;\n        var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt;\n        var taskQueue = [];\n        var timerQueue = [];\n        var taskIdCounter = 1;\n        var currentTask = null;\n        var currentPriorityLevel = NormalPriority;\n        var isPerformingWork = false;\n        var isHostCallbackScheduled = false;\n        var isHostTimeoutScheduled = false;\n        var localSetTimeout = typeof setTimeout === \"function\" ? setTimeout : null;\n        var localClearTimeout = typeof clearTimeout === \"function\" ? clearTimeout : null;\n        var localSetImmediate = typeof setImmediate !== \"undefined\" ? setImmediate : null;\n        var isInputPending = typeof navigator !== \"undefined\" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n        function advanceTimers(currentTime) {\n          var timer = peek(timerQueue);\n          while (timer !== null) {\n            if (timer.callback === null) {\n              pop(timerQueue);\n            } else if (timer.startTime <= currentTime) {\n              pop(timerQueue);\n              timer.sortIndex = timer.expirationTime;\n              push(taskQueue, timer);\n            } else {\n              return;\n            }\n            timer = peek(timerQueue);\n          }\n        }\n        function handleTimeout(currentTime) {\n          isHostTimeoutScheduled = false;\n          advanceTimers(currentTime);\n          if (!isHostCallbackScheduled) {\n            if (peek(taskQueue) !== null) {\n              isHostCallbackScheduled = true;\n              requestHostCallback(flushWork);\n            } else {\n              var firstTimer = peek(timerQueue);\n              if (firstTimer !== null) {\n                requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n              }\n            }\n          }\n        }\n        function flushWork(hasTimeRemaining, initialTime2) {\n          isHostCallbackScheduled = false;\n          if (isHostTimeoutScheduled) {\n            isHostTimeoutScheduled = false;\n            cancelHostTimeout();\n          }\n          isPerformingWork = true;\n          var previousPriorityLevel = currentPriorityLevel;\n          try {\n            if (enableProfiling) {\n              try {\n                return workLoop(hasTimeRemaining, initialTime2);\n              } catch (error) {\n                if (currentTask !== null) {\n                  var currentTime = exports.unstable_now();\n                  markTaskErrored(currentTask, currentTime);\n                  currentTask.isQueued = false;\n                }\n                throw error;\n              }\n            } else {\n              return workLoop(hasTimeRemaining, initialTime2);\n            }\n          } finally {\n            currentTask = null;\n            currentPriorityLevel = previousPriorityLevel;\n            isPerformingWork = false;\n          }\n        }\n        function workLoop(hasTimeRemaining, initialTime2) {\n          var currentTime = initialTime2;\n          advanceTimers(currentTime);\n          currentTask = peek(taskQueue);\n          while (currentTask !== null && !enableSchedulerDebugging) {\n            if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n              break;\n            }\n            var callback = currentTask.callback;\n            if (typeof callback === \"function\") {\n              currentTask.callback = null;\n              currentPriorityLevel = currentTask.priorityLevel;\n              var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n              var continuationCallback = callback(didUserCallbackTimeout);\n              currentTime = exports.unstable_now();\n              if (typeof continuationCallback === \"function\") {\n                currentTask.callback = continuationCallback;\n              } else {\n                if (currentTask === peek(taskQueue)) {\n                  pop(taskQueue);\n                }\n              }\n              advanceTimers(currentTime);\n            } else {\n              pop(taskQueue);\n            }\n            currentTask = peek(taskQueue);\n          }\n          if (currentTask !== null) {\n            return true;\n          } else {\n            var firstTimer = peek(timerQueue);\n            if (firstTimer !== null) {\n              requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n            }\n            return false;\n          }\n        }\n        function unstable_runWithPriority(priorityLevel, eventHandler) {\n          switch (priorityLevel) {\n            case ImmediatePriority:\n            case UserBlockingPriority:\n            case NormalPriority:\n            case LowPriority:\n            case IdlePriority:\n              break;\n            default:\n              priorityLevel = NormalPriority;\n          }\n          var previousPriorityLevel = currentPriorityLevel;\n          currentPriorityLevel = priorityLevel;\n          try {\n            return eventHandler();\n          } finally {\n            currentPriorityLevel = previousPriorityLevel;\n          }\n        }\n        function unstable_next(eventHandler) {\n          var priorityLevel;\n          switch (currentPriorityLevel) {\n            case ImmediatePriority:\n            case UserBlockingPriority:\n            case NormalPriority:\n              priorityLevel = NormalPriority;\n              break;\n            default:\n              priorityLevel = currentPriorityLevel;\n              break;\n          }\n          var previousPriorityLevel = currentPriorityLevel;\n          currentPriorityLevel = priorityLevel;\n          try {\n            return eventHandler();\n          } finally {\n            currentPriorityLevel = previousPriorityLevel;\n          }\n        }\n        function unstable_wrapCallback(callback) {\n          var parentPriorityLevel = currentPriorityLevel;\n          return function() {\n            var previousPriorityLevel = currentPriorityLevel;\n            currentPriorityLevel = parentPriorityLevel;\n            try {\n              return callback.apply(this, arguments);\n            } finally {\n              currentPriorityLevel = previousPriorityLevel;\n            }\n          };\n        }\n        function unstable_scheduleCallback(priorityLevel, callback, options) {\n          var currentTime = exports.unstable_now();\n          var startTime2;\n          if (typeof options === \"object\" && options !== null) {\n            var delay = options.delay;\n            if (typeof delay === \"number\" && delay > 0) {\n              startTime2 = currentTime + delay;\n            } else {\n              startTime2 = currentTime;\n            }\n          } else {\n            startTime2 = currentTime;\n          }\n          var timeout;\n          switch (priorityLevel) {\n            case ImmediatePriority:\n              timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n              break;\n            case UserBlockingPriority:\n              timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n              break;\n            case IdlePriority:\n              timeout = IDLE_PRIORITY_TIMEOUT;\n              break;\n            case LowPriority:\n              timeout = LOW_PRIORITY_TIMEOUT;\n              break;\n            case NormalPriority:\n            default:\n              timeout = NORMAL_PRIORITY_TIMEOUT;\n              break;\n          }\n          var expirationTime = startTime2 + timeout;\n          var newTask = {\n            id: taskIdCounter++,\n            callback,\n            priorityLevel,\n            startTime: startTime2,\n            expirationTime,\n            sortIndex: -1\n          };\n          if (startTime2 > currentTime) {\n            newTask.sortIndex = startTime2;\n            push(timerQueue, newTask);\n            if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n              if (isHostTimeoutScheduled) {\n                cancelHostTimeout();\n              } else {\n                isHostTimeoutScheduled = true;\n              }\n              requestHostTimeout(handleTimeout, startTime2 - currentTime);\n            }\n          } else {\n            newTask.sortIndex = expirationTime;\n            push(taskQueue, newTask);\n            if (!isHostCallbackScheduled && !isPerformingWork) {\n              isHostCallbackScheduled = true;\n              requestHostCallback(flushWork);\n            }\n          }\n          return newTask;\n        }\n        function unstable_pauseExecution() {\n        }\n        function unstable_continueExecution() {\n          if (!isHostCallbackScheduled && !isPerformingWork) {\n            isHostCallbackScheduled = true;\n            requestHostCallback(flushWork);\n          }\n        }\n        function unstable_getFirstCallbackNode() {\n          return peek(taskQueue);\n        }\n        function unstable_cancelCallback(task) {\n          task.callback = null;\n        }\n        function unstable_getCurrentPriorityLevel() {\n          return currentPriorityLevel;\n        }\n        var isMessageLoopRunning = false;\n        var scheduledHostCallback = null;\n        var taskTimeoutID = -1;\n        var frameInterval = frameYieldMs;\n        var startTime = -1;\n        function shouldYieldToHost() {\n          var timeElapsed = exports.unstable_now() - startTime;\n          if (timeElapsed < frameInterval) {\n            return false;\n          }\n          return true;\n        }\n        function requestPaint() {\n        }\n        function forceFrameRate(fps) {\n          if (fps < 0 || fps > 125) {\n            console[\"error\"](\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\");\n            return;\n          }\n          if (fps > 0) {\n            frameInterval = Math.floor(1e3 / fps);\n          } else {\n            frameInterval = frameYieldMs;\n          }\n        }\n        var performWorkUntilDeadline = function() {\n          if (scheduledHostCallback !== null) {\n            var currentTime = exports.unstable_now();\n            startTime = currentTime;\n            var hasTimeRemaining = true;\n            var hasMoreWork = true;\n            try {\n              hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n            } finally {\n              if (hasMoreWork) {\n                schedulePerformWorkUntilDeadline();\n              } else {\n                isMessageLoopRunning = false;\n                scheduledHostCallback = null;\n              }\n            }\n          } else {\n            isMessageLoopRunning = false;\n          }\n        };\n        var schedulePerformWorkUntilDeadline;\n        if (typeof localSetImmediate === \"function\") {\n          schedulePerformWorkUntilDeadline = function() {\n            localSetImmediate(performWorkUntilDeadline);\n          };\n        } else if (typeof MessageChannel !== \"undefined\") {\n          var channel = new MessageChannel();\n          var port = channel.port2;\n          channel.port1.onmessage = performWorkUntilDeadline;\n          schedulePerformWorkUntilDeadline = function() {\n            port.postMessage(null);\n          };\n        } else {\n          schedulePerformWorkUntilDeadline = function() {\n            localSetTimeout(performWorkUntilDeadline, 0);\n          };\n        }\n        function requestHostCallback(callback) {\n          scheduledHostCallback = callback;\n          if (!isMessageLoopRunning) {\n            isMessageLoopRunning = true;\n            schedulePerformWorkUntilDeadline();\n          }\n        }\n        function requestHostTimeout(callback, ms) {\n          taskTimeoutID = localSetTimeout(function() {\n            callback(exports.unstable_now());\n          }, ms);\n        }\n        function cancelHostTimeout() {\n          localClearTimeout(taskTimeoutID);\n          taskTimeoutID = -1;\n        }\n        var unstable_requestPaint = requestPaint;\n        var unstable_Profiling = null;\n        exports.unstable_IdlePriority = IdlePriority;\n        exports.unstable_ImmediatePriority = ImmediatePriority;\n        exports.unstable_LowPriority = LowPriority;\n        exports.unstable_NormalPriority = NormalPriority;\n        exports.unstable_Profiling = unstable_Profiling;\n        exports.unstable_UserBlockingPriority = UserBlockingPriority;\n        exports.unstable_cancelCallback = unstable_cancelCallback;\n        exports.unstable_continueExecution = unstable_continueExecution;\n        exports.unstable_forceFrameRate = forceFrameRate;\n        exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\n        exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\n        exports.unstable_next = unstable_next;\n        exports.unstable_pauseExecution = unstable_pauseExecution;\n        exports.unstable_requestPaint = unstable_requestPaint;\n        exports.unstable_runWithPriority = unstable_runWithPriority;\n        exports.unstable_scheduleCallback = unstable_scheduleCallback;\n        exports.unstable_shouldYield = shouldYieldToHost;\n        exports.unstable_wrapCallback = unstable_wrapCallback;\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n        }\n      })();\n    }\n  }\n});\n\n// node_modules/scheduler/index.js\nvar require_scheduler = __commonJS({\n  \"node_modules/scheduler/index.js\"(exports, module) {\n    \"use strict\";\n    if (false) {\n      module.exports = null;\n    } else {\n      module.exports = require_scheduler_development();\n    }\n  }\n});\n\n// node_modules/react-dom/cjs/react-dom.development.js\nvar require_react_dom_development = __commonJS({\n  \"node_modules/react-dom/cjs/react-dom.development.js\"(exports) {\n    \"use strict\";\n    if (true) {\n      (function() {\n        \"use strict\";\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n        }\n        var React = require_react();\n        var Scheduler = require_scheduler();\n        var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n        var suppressWarning = false;\n        function setSuppressWarning(newSuppressWarning) {\n          {\n            suppressWarning = newSuppressWarning;\n          }\n        }\n        function warn(format) {\n          {\n            if (!suppressWarning) {\n              for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n                args[_key - 1] = arguments[_key];\n              }\n              printWarning(\"warn\", format, args);\n            }\n          }\n        }\n        function error(format) {\n          {\n            if (!suppressWarning) {\n              for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n                args[_key2 - 1] = arguments[_key2];\n              }\n              printWarning(\"error\", format, args);\n            }\n          }\n        }\n        function printWarning(level, format, args) {\n          {\n            var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame;\n            var stack = ReactDebugCurrentFrame2.getStackAddendum();\n            if (stack !== \"\") {\n              format += \"%s\";\n              args = args.concat([stack]);\n            }\n            var argsWithFormat = args.map(function(item) {\n              return String(item);\n            });\n            argsWithFormat.unshift(\"Warning: \" + format);\n            Function.prototype.apply.call(console[level], console, argsWithFormat);\n          }\n        }\n        var FunctionComponent = 0;\n        var ClassComponent = 1;\n        var IndeterminateComponent = 2;\n        var HostRoot = 3;\n        var HostPortal = 4;\n        var HostComponent = 5;\n        var HostText = 6;\n        var Fragment = 7;\n        var Mode = 8;\n        var ContextConsumer = 9;\n        var ContextProvider = 10;\n        var ForwardRef = 11;\n        var Profiler = 12;\n        var SuspenseComponent = 13;\n        var MemoComponent = 14;\n        var SimpleMemoComponent = 15;\n        var LazyComponent = 16;\n        var IncompleteClassComponent = 17;\n        var DehydratedFragment = 18;\n        var SuspenseListComponent = 19;\n        var ScopeComponent = 21;\n        var OffscreenComponent = 22;\n        var LegacyHiddenComponent = 23;\n        var CacheComponent = 24;\n        var TracingMarkerComponent = 25;\n        var enableClientRenderFallbackOnTextMismatch = true;\n        var enableNewReconciler = false;\n        var enableLazyContextPropagation = false;\n        var enableLegacyHidden = false;\n        var enableSuspenseAvoidThisFallback = false;\n        var disableCommentsAsDOMContainers = true;\n        var enableCustomElementPropertySupport = false;\n        var warnAboutStringRefs = true;\n        var enableSchedulingProfiler = true;\n        var enableProfilerTimer = true;\n        var enableProfilerCommitHooks = true;\n        var allNativeEvents = /* @__PURE__ */ new Set();\n        var registrationNameDependencies = {};\n        var possibleRegistrationNames = {};\n        function registerTwoPhaseEvent(registrationName, dependencies) {\n          registerDirectEvent(registrationName, dependencies);\n          registerDirectEvent(registrationName + \"Capture\", dependencies);\n        }\n        function registerDirectEvent(registrationName, dependencies) {\n          {\n            if (registrationNameDependencies[registrationName]) {\n              error(\"EventRegistry: More than one plugin attempted to publish the same registration name, `%s`.\", registrationName);\n            }\n          }\n          registrationNameDependencies[registrationName] = dependencies;\n          {\n            var lowerCasedName = registrationName.toLowerCase();\n            possibleRegistrationNames[lowerCasedName] = registrationName;\n            if (registrationName === \"onDoubleClick\") {\n              possibleRegistrationNames.ondblclick = registrationName;\n            }\n          }\n          for (var i = 0; i < dependencies.length; i++) {\n            allNativeEvents.add(dependencies[i]);\n          }\n        }\n        var canUseDOM = !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\n        var hasOwnProperty = Object.prototype.hasOwnProperty;\n        function typeName(value) {\n          {\n            var hasToStringTag = typeof Symbol === \"function\" && Symbol.toStringTag;\n            var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || \"Object\";\n            return type;\n          }\n        }\n        function willCoercionThrow(value) {\n          {\n            try {\n              testStringCoercion(value);\n              return false;\n            } catch (e) {\n              return true;\n            }\n          }\n        }\n        function testStringCoercion(value) {\n          return \"\" + value;\n        }\n        function checkAttributeStringCoercion(value, attributeName) {\n          {\n            if (willCoercionThrow(value)) {\n              error(\"The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before before using it here.\", attributeName, typeName(value));\n              return testStringCoercion(value);\n            }\n          }\n        }\n        function checkKeyStringCoercion(value) {\n          {\n            if (willCoercionThrow(value)) {\n              error(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\", typeName(value));\n              return testStringCoercion(value);\n            }\n          }\n        }\n        function checkPropStringCoercion(value, propName) {\n          {\n            if (willCoercionThrow(value)) {\n              error(\"The provided `%s` prop is an unsupported type %s. This value must be coerced to a string before before using it here.\", propName, typeName(value));\n              return testStringCoercion(value);\n            }\n          }\n        }\n        function checkCSSPropertyStringCoercion(value, propName) {\n          {\n            if (willCoercionThrow(value)) {\n              error(\"The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before before using it here.\", propName, typeName(value));\n              return testStringCoercion(value);\n            }\n          }\n        }\n        function checkHtmlStringCoercion(value) {\n          {\n            if (willCoercionThrow(value)) {\n              error(\"The provided HTML markup uses a value of unsupported type %s. This value must be coerced to a string before before using it here.\", typeName(value));\n              return testStringCoercion(value);\n            }\n          }\n        }\n        function checkFormFieldValueStringCoercion(value) {\n          {\n            if (willCoercionThrow(value)) {\n              error(\"Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before before using it here.\", typeName(value));\n              return testStringCoercion(value);\n            }\n          }\n        }\n        var RESERVED = 0;\n        var STRING = 1;\n        var BOOLEANISH_STRING = 2;\n        var BOOLEAN = 3;\n        var OVERLOADED_BOOLEAN = 4;\n        var NUMERIC = 5;\n        var POSITIVE_NUMERIC = 6;\n        var ATTRIBUTE_NAME_START_CHAR = \":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n        var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n        var VALID_ATTRIBUTE_NAME_REGEX = new RegExp(\"^[\" + ATTRIBUTE_NAME_START_CHAR + \"][\" + ATTRIBUTE_NAME_CHAR + \"]*$\");\n        var illegalAttributeNameCache = {};\n        var validatedAttributeNameCache = {};\n        function isAttributeNameSafe(attributeName) {\n          if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n            return true;\n          }\n          if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n            return false;\n          }\n          if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n            validatedAttributeNameCache[attributeName] = true;\n            return true;\n          }\n          illegalAttributeNameCache[attributeName] = true;\n          {\n            error(\"Invalid attribute name: `%s`\", attributeName);\n          }\n          return false;\n        }\n        function shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) {\n          if (propertyInfo !== null) {\n            return propertyInfo.type === RESERVED;\n          }\n          if (isCustomComponentTag) {\n            return false;\n          }\n          if (name.length > 2 && (name[0] === \"o\" || name[0] === \"O\") && (name[1] === \"n\" || name[1] === \"N\")) {\n            return true;\n          }\n          return false;\n        }\n        function shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {\n          if (propertyInfo !== null && propertyInfo.type === RESERVED) {\n            return false;\n          }\n          switch (typeof value) {\n            case \"function\":\n            case \"symbol\":\n              return true;\n            case \"boolean\": {\n              if (isCustomComponentTag) {\n                return false;\n              }\n              if (propertyInfo !== null) {\n                return !propertyInfo.acceptsBooleans;\n              } else {\n                var prefix2 = name.toLowerCase().slice(0, 5);\n                return prefix2 !== \"data-\" && prefix2 !== \"aria-\";\n              }\n            }\n            default:\n              return false;\n          }\n        }\n        function shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) {\n          if (value === null || typeof value === \"undefined\") {\n            return true;\n          }\n          if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) {\n            return true;\n          }\n          if (isCustomComponentTag) {\n            return false;\n          }\n          if (propertyInfo !== null) {\n            switch (propertyInfo.type) {\n              case BOOLEAN:\n                return !value;\n              case OVERLOADED_BOOLEAN:\n                return value === false;\n              case NUMERIC:\n                return isNaN(value);\n              case POSITIVE_NUMERIC:\n                return isNaN(value) || value < 1;\n            }\n          }\n          return false;\n        }\n        function getPropertyInfo(name) {\n          return properties.hasOwnProperty(name) ? properties[name] : null;\n        }\n        function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL2, removeEmptyString) {\n          this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n          this.attributeName = attributeName;\n          this.attributeNamespace = attributeNamespace;\n          this.mustUseProperty = mustUseProperty;\n          this.propertyName = name;\n          this.type = type;\n          this.sanitizeURL = sanitizeURL2;\n          this.removeEmptyString = removeEmptyString;\n        }\n        var properties = {};\n        var reservedProps = [\n          \"children\",\n          \"dangerouslySetInnerHTML\",\n          // TODO: This prevents the assignment of defaultValue to regular\n          // elements (not just inputs). Now that ReactDOMInput assigns to the\n          // defaultValue property -- do we need this?\n          \"defaultValue\",\n          \"defaultChecked\",\n          \"innerHTML\",\n          \"suppressContentEditableWarning\",\n          \"suppressHydrationWarning\",\n          \"style\"\n        ];\n        reservedProps.forEach(function(name) {\n          properties[name] = new PropertyInfoRecord(\n            name,\n            RESERVED,\n            false,\n            // mustUseProperty\n            name,\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [[\"acceptCharset\", \"accept-charset\"], [\"className\", \"class\"], [\"htmlFor\", \"for\"], [\"httpEquiv\", \"http-equiv\"]].forEach(function(_ref) {\n          var name = _ref[0], attributeName = _ref[1];\n          properties[name] = new PropertyInfoRecord(\n            name,\n            STRING,\n            false,\n            // mustUseProperty\n            attributeName,\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\"contentEditable\", \"draggable\", \"spellCheck\", \"value\"].forEach(function(name) {\n          properties[name] = new PropertyInfoRecord(\n            name,\n            BOOLEANISH_STRING,\n            false,\n            // mustUseProperty\n            name.toLowerCase(),\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\"autoReverse\", \"externalResourcesRequired\", \"focusable\", \"preserveAlpha\"].forEach(function(name) {\n          properties[name] = new PropertyInfoRecord(\n            name,\n            BOOLEANISH_STRING,\n            false,\n            // mustUseProperty\n            name,\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\n          \"allowFullScreen\",\n          \"async\",\n          // Note: there is a special case that prevents it from being written to the DOM\n          // on the client side because the browsers are inconsistent. Instead we call focus().\n          \"autoFocus\",\n          \"autoPlay\",\n          \"controls\",\n          \"default\",\n          \"defer\",\n          \"disabled\",\n          \"disablePictureInPicture\",\n          \"disableRemotePlayback\",\n          \"formNoValidate\",\n          \"hidden\",\n          \"loop\",\n          \"noModule\",\n          \"noValidate\",\n          \"open\",\n          \"playsInline\",\n          \"readOnly\",\n          \"required\",\n          \"reversed\",\n          \"scoped\",\n          \"seamless\",\n          // Microdata\n          \"itemScope\"\n        ].forEach(function(name) {\n          properties[name] = new PropertyInfoRecord(\n            name,\n            BOOLEAN,\n            false,\n            // mustUseProperty\n            name.toLowerCase(),\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\n          \"checked\",\n          // Note: `option.selected` is not updated if `select.multiple` is\n          // disabled with `removeAttribute`. We have special logic for handling this.\n          \"multiple\",\n          \"muted\",\n          \"selected\"\n          // NOTE: if you add a camelCased prop to this list,\n          // you'll need to set attributeName to name.toLowerCase()\n          // instead in the assignment below.\n        ].forEach(function(name) {\n          properties[name] = new PropertyInfoRecord(\n            name,\n            BOOLEAN,\n            true,\n            // mustUseProperty\n            name,\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\n          \"capture\",\n          \"download\"\n          // NOTE: if you add a camelCased prop to this list,\n          // you'll need to set attributeName to name.toLowerCase()\n          // instead in the assignment below.\n        ].forEach(function(name) {\n          properties[name] = new PropertyInfoRecord(\n            name,\n            OVERLOADED_BOOLEAN,\n            false,\n            // mustUseProperty\n            name,\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\n          \"cols\",\n          \"rows\",\n          \"size\",\n          \"span\"\n          // NOTE: if you add a camelCased prop to this list,\n          // you'll need to set attributeName to name.toLowerCase()\n          // instead in the assignment below.\n        ].forEach(function(name) {\n          properties[name] = new PropertyInfoRecord(\n            name,\n            POSITIVE_NUMERIC,\n            false,\n            // mustUseProperty\n            name,\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\"rowSpan\", \"start\"].forEach(function(name) {\n          properties[name] = new PropertyInfoRecord(\n            name,\n            NUMERIC,\n            false,\n            // mustUseProperty\n            name.toLowerCase(),\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        var CAMELIZE = /[\\-\\:]([a-z])/g;\n        var capitalize = function(token) {\n          return token[1].toUpperCase();\n        };\n        [\n          \"accent-height\",\n          \"alignment-baseline\",\n          \"arabic-form\",\n          \"baseline-shift\",\n          \"cap-height\",\n          \"clip-path\",\n          \"clip-rule\",\n          \"color-interpolation\",\n          \"color-interpolation-filters\",\n          \"color-profile\",\n          \"color-rendering\",\n          \"dominant-baseline\",\n          \"enable-background\",\n          \"fill-opacity\",\n          \"fill-rule\",\n          \"flood-color\",\n          \"flood-opacity\",\n          \"font-family\",\n          \"font-size\",\n          \"font-size-adjust\",\n          \"font-stretch\",\n          \"font-style\",\n          \"font-variant\",\n          \"font-weight\",\n          \"glyph-name\",\n          \"glyph-orientation-horizontal\",\n          \"glyph-orientation-vertical\",\n          \"horiz-adv-x\",\n          \"horiz-origin-x\",\n          \"image-rendering\",\n          \"letter-spacing\",\n          \"lighting-color\",\n          \"marker-end\",\n          \"marker-mid\",\n          \"marker-start\",\n          \"overline-position\",\n          \"overline-thickness\",\n          \"paint-order\",\n          \"panose-1\",\n          \"pointer-events\",\n          \"rendering-intent\",\n          \"shape-rendering\",\n          \"stop-color\",\n          \"stop-opacity\",\n          \"strikethrough-position\",\n          \"strikethrough-thickness\",\n          \"stroke-dasharray\",\n          \"stroke-dashoffset\",\n          \"stroke-linecap\",\n          \"stroke-linejoin\",\n          \"stroke-miterlimit\",\n          \"stroke-opacity\",\n          \"stroke-width\",\n          \"text-anchor\",\n          \"text-decoration\",\n          \"text-rendering\",\n          \"underline-position\",\n          \"underline-thickness\",\n          \"unicode-bidi\",\n          \"unicode-range\",\n          \"units-per-em\",\n          \"v-alphabetic\",\n          \"v-hanging\",\n          \"v-ideographic\",\n          \"v-mathematical\",\n          \"vector-effect\",\n          \"vert-adv-y\",\n          \"vert-origin-x\",\n          \"vert-origin-y\",\n          \"word-spacing\",\n          \"writing-mode\",\n          \"xmlns:xlink\",\n          \"x-height\"\n          // NOTE: if you add a camelCased prop to this list,\n          // you'll need to set attributeName to name.toLowerCase()\n          // instead in the assignment below.\n        ].forEach(function(attributeName) {\n          var name = attributeName.replace(CAMELIZE, capitalize);\n          properties[name] = new PropertyInfoRecord(\n            name,\n            STRING,\n            false,\n            // mustUseProperty\n            attributeName,\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\n          \"xlink:actuate\",\n          \"xlink:arcrole\",\n          \"xlink:role\",\n          \"xlink:show\",\n          \"xlink:title\",\n          \"xlink:type\"\n          // NOTE: if you add a camelCased prop to this list,\n          // you'll need to set attributeName to name.toLowerCase()\n          // instead in the assignment below.\n        ].forEach(function(attributeName) {\n          var name = attributeName.replace(CAMELIZE, capitalize);\n          properties[name] = new PropertyInfoRecord(\n            name,\n            STRING,\n            false,\n            // mustUseProperty\n            attributeName,\n            \"http://www.w3.org/1999/xlink\",\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\n          \"xml:base\",\n          \"xml:lang\",\n          \"xml:space\"\n          // NOTE: if you add a camelCased prop to this list,\n          // you'll need to set attributeName to name.toLowerCase()\n          // instead in the assignment below.\n        ].forEach(function(attributeName) {\n          var name = attributeName.replace(CAMELIZE, capitalize);\n          properties[name] = new PropertyInfoRecord(\n            name,\n            STRING,\n            false,\n            // mustUseProperty\n            attributeName,\n            \"http://www.w3.org/XML/1998/namespace\",\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        [\"tabIndex\", \"crossOrigin\"].forEach(function(attributeName) {\n          properties[attributeName] = new PropertyInfoRecord(\n            attributeName,\n            STRING,\n            false,\n            // mustUseProperty\n            attributeName.toLowerCase(),\n            // attributeName\n            null,\n            // attributeNamespace\n            false,\n            // sanitizeURL\n            false\n          );\n        });\n        var xlinkHref = \"xlinkHref\";\n        properties[xlinkHref] = new PropertyInfoRecord(\n          \"xlinkHref\",\n          STRING,\n          false,\n          // mustUseProperty\n          \"xlink:href\",\n          \"http://www.w3.org/1999/xlink\",\n          true,\n          // sanitizeURL\n          false\n        );\n        [\"src\", \"href\", \"action\", \"formAction\"].forEach(function(attributeName) {\n          properties[attributeName] = new PropertyInfoRecord(\n            attributeName,\n            STRING,\n            false,\n            // mustUseProperty\n            attributeName.toLowerCase(),\n            // attributeName\n            null,\n            // attributeNamespace\n            true,\n            // sanitizeURL\n            true\n          );\n        });\n        var isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*\\:/i;\n        var didWarn = false;\n        function sanitizeURL(url) {\n          {\n            if (!didWarn && isJavaScriptProtocol.test(url)) {\n              didWarn = true;\n              error(\"A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML try using dangerouslySetInnerHTML instead. React was passed %s.\", JSON.stringify(url));\n            }\n          }\n        }\n        function getValueForProperty(node, name, expected, propertyInfo) {\n          {\n            if (propertyInfo.mustUseProperty) {\n              var propertyName = propertyInfo.propertyName;\n              return node[propertyName];\n            } else {\n              {\n                checkAttributeStringCoercion(expected, name);\n              }\n              if (propertyInfo.sanitizeURL) {\n                sanitizeURL(\"\" + expected);\n              }\n              var attributeName = propertyInfo.attributeName;\n              var stringValue = null;\n              if (propertyInfo.type === OVERLOADED_BOOLEAN) {\n                if (node.hasAttribute(attributeName)) {\n                  var value = node.getAttribute(attributeName);\n                  if (value === \"\") {\n                    return true;\n                  }\n                  if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n                    return value;\n                  }\n                  if (value === \"\" + expected) {\n                    return expected;\n                  }\n                  return value;\n                }\n              } else if (node.hasAttribute(attributeName)) {\n                if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n                  return node.getAttribute(attributeName);\n                }\n                if (propertyInfo.type === BOOLEAN) {\n                  return expected;\n                }\n                stringValue = node.getAttribute(attributeName);\n              }\n              if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n                return stringValue === null ? expected : stringValue;\n              } else if (stringValue === \"\" + expected) {\n                return expected;\n              } else {\n                return stringValue;\n              }\n            }\n          }\n        }\n        function getValueForAttribute(node, name, expected, isCustomComponentTag) {\n          {\n            if (!isAttributeNameSafe(name)) {\n              return;\n            }\n            if (!node.hasAttribute(name)) {\n              return expected === void 0 ? void 0 : null;\n            }\n            var value = node.getAttribute(name);\n            {\n              checkAttributeStringCoercion(expected, name);\n            }\n            if (value === \"\" + expected) {\n              return expected;\n            }\n            return value;\n          }\n        }\n        function setValueForProperty(node, name, value, isCustomComponentTag) {\n          var propertyInfo = getPropertyInfo(name);\n          if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) {\n            return;\n          }\n          if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) {\n            value = null;\n          }\n          if (isCustomComponentTag || propertyInfo === null) {\n            if (isAttributeNameSafe(name)) {\n              var _attributeName = name;\n              if (value === null) {\n                node.removeAttribute(_attributeName);\n              } else {\n                {\n                  checkAttributeStringCoercion(value, name);\n                }\n                node.setAttribute(_attributeName, \"\" + value);\n              }\n            }\n            return;\n          }\n          var mustUseProperty = propertyInfo.mustUseProperty;\n          if (mustUseProperty) {\n            var propertyName = propertyInfo.propertyName;\n            if (value === null) {\n              var type = propertyInfo.type;\n              node[propertyName] = type === BOOLEAN ? false : \"\";\n            } else {\n              node[propertyName] = value;\n            }\n            return;\n          }\n          var attributeName = propertyInfo.attributeName, attributeNamespace = propertyInfo.attributeNamespace;\n          if (value === null) {\n            node.removeAttribute(attributeName);\n          } else {\n            var _type = propertyInfo.type;\n            var attributeValue;\n            if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) {\n              attributeValue = \"\";\n            } else {\n              {\n                {\n                  checkAttributeStringCoercion(value, attributeName);\n                }\n                attributeValue = \"\" + value;\n              }\n              if (propertyInfo.sanitizeURL) {\n                sanitizeURL(attributeValue.toString());\n              }\n            }\n            if (attributeNamespace) {\n              node.setAttributeNS(attributeNamespace, attributeName, attributeValue);\n            } else {\n              node.setAttribute(attributeName, attributeValue);\n            }\n          }\n        }\n        var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n        var REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\n        var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n        var REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\n        var REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n        var REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\n        var REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\n        var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n        var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n        var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n        var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n        var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n        var REACT_SCOPE_TYPE = Symbol.for(\"react.scope\");\n        var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for(\"react.debug_trace_mode\");\n        var REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\n        var REACT_LEGACY_HIDDEN_TYPE = Symbol.for(\"react.legacy_hidden\");\n        var REACT_CACHE_TYPE = Symbol.for(\"react.cache\");\n        var REACT_TRACING_MARKER_TYPE = Symbol.for(\"react.tracing_marker\");\n        var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n        var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n        function getIteratorFn(maybeIterable) {\n          if (maybeIterable === null || typeof maybeIterable !== \"object\") {\n            return null;\n          }\n          var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n          if (typeof maybeIterator === \"function\") {\n            return maybeIterator;\n          }\n          return null;\n        }\n        var assign = Object.assign;\n        var disabledDepth = 0;\n        var prevLog;\n        var prevInfo;\n        var prevWarn;\n        var prevError;\n        var prevGroup;\n        var prevGroupCollapsed;\n        var prevGroupEnd;\n        function disabledLog() {\n        }\n        disabledLog.__reactDisabledLog = true;\n        function disableLogs() {\n          {\n            if (disabledDepth === 0) {\n              prevLog = console.log;\n              prevInfo = console.info;\n              prevWarn = console.warn;\n              prevError = console.error;\n              prevGroup = console.group;\n              prevGroupCollapsed = console.groupCollapsed;\n              prevGroupEnd = console.groupEnd;\n              var props = {\n                configurable: true,\n                enumerable: true,\n                value: disabledLog,\n                writable: true\n              };\n              Object.defineProperties(console, {\n                info: props,\n                log: props,\n                warn: props,\n                error: props,\n                group: props,\n                groupCollapsed: props,\n                groupEnd: props\n              });\n            }\n            disabledDepth++;\n          }\n        }\n        function reenableLogs() {\n          {\n            disabledDepth--;\n            if (disabledDepth === 0) {\n              var props = {\n                configurable: true,\n                enumerable: true,\n                writable: true\n              };\n              Object.defineProperties(console, {\n                log: assign({}, props, {\n                  value: prevLog\n                }),\n                info: assign({}, props, {\n                  value: prevInfo\n                }),\n                warn: assign({}, props, {\n                  value: prevWarn\n                }),\n                error: assign({}, props, {\n                  value: prevError\n                }),\n                group: assign({}, props, {\n                  value: prevGroup\n                }),\n                groupCollapsed: assign({}, props, {\n                  value: prevGroupCollapsed\n                }),\n                groupEnd: assign({}, props, {\n                  value: prevGroupEnd\n                })\n              });\n            }\n            if (disabledDepth < 0) {\n              error(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\");\n            }\n          }\n        }\n        var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n        var prefix;\n        function describeBuiltInComponentFrame(name, source, ownerFn) {\n          {\n            if (prefix === void 0) {\n              try {\n                throw Error();\n              } catch (x) {\n                var match = x.stack.trim().match(/\\n( *(at )?)/);\n                prefix = match && match[1] || \"\";\n              }\n            }\n            return \"\\n\" + prefix + name;\n          }\n        }\n        var reentry = false;\n        var componentFrameCache;\n        {\n          var PossiblyWeakMap = typeof WeakMap === \"function\" ? WeakMap : Map;\n          componentFrameCache = new PossiblyWeakMap();\n        }\n        function describeNativeComponentFrame(fn, construct) {\n          if (!fn || reentry) {\n            return \"\";\n          }\n          {\n            var frame = componentFrameCache.get(fn);\n            if (frame !== void 0) {\n              return frame;\n            }\n          }\n          var control;\n          reentry = true;\n          var previousPrepareStackTrace = Error.prepareStackTrace;\n          Error.prepareStackTrace = void 0;\n          var previousDispatcher;\n          {\n            previousDispatcher = ReactCurrentDispatcher.current;\n            ReactCurrentDispatcher.current = null;\n            disableLogs();\n          }\n          try {\n            if (construct) {\n              var Fake = function() {\n                throw Error();\n              };\n              Object.defineProperty(Fake.prototype, \"props\", {\n                set: function() {\n                  throw Error();\n                }\n              });\n              if (typeof Reflect === \"object\" && Reflect.construct) {\n                try {\n                  Reflect.construct(Fake, []);\n                } catch (x) {\n                  control = x;\n                }\n                Reflect.construct(fn, [], Fake);\n              } else {\n                try {\n                  Fake.call();\n                } catch (x) {\n                  control = x;\n                }\n                fn.call(Fake.prototype);\n              }\n            } else {\n              try {\n                throw Error();\n              } catch (x) {\n                control = x;\n              }\n              fn();\n            }\n          } catch (sample) {\n            if (sample && control && typeof sample.stack === \"string\") {\n              var sampleLines = sample.stack.split(\"\\n\");\n              var controlLines = control.stack.split(\"\\n\");\n              var s = sampleLines.length - 1;\n              var c = controlLines.length - 1;\n              while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n                c--;\n              }\n              for (; s >= 1 && c >= 0; s--, c--) {\n                if (sampleLines[s] !== controlLines[c]) {\n                  if (s !== 1 || c !== 1) {\n                    do {\n                      s--;\n                      c--;\n                      if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                        var _frame = \"\\n\" + sampleLines[s].replace(\" at new \", \" at \");\n                        if (fn.displayName && _frame.includes(\"<anonymous>\")) {\n                          _frame = _frame.replace(\"<anonymous>\", fn.displayName);\n                        }\n                        {\n                          if (typeof fn === \"function\") {\n                            componentFrameCache.set(fn, _frame);\n                          }\n                        }\n                        return _frame;\n                      }\n                    } while (s >= 1 && c >= 0);\n                  }\n                  break;\n                }\n              }\n            }\n          } finally {\n            reentry = false;\n            {\n              ReactCurrentDispatcher.current = previousDispatcher;\n              reenableLogs();\n            }\n            Error.prepareStackTrace = previousPrepareStackTrace;\n          }\n          var name = fn ? fn.displayName || fn.name : \"\";\n          var syntheticFrame = name ? describeBuiltInComponentFrame(name) : \"\";\n          {\n            if (typeof fn === \"function\") {\n              componentFrameCache.set(fn, syntheticFrame);\n            }\n          }\n          return syntheticFrame;\n        }\n        function describeClassComponentFrame(ctor, source, ownerFn) {\n          {\n            return describeNativeComponentFrame(ctor, true);\n          }\n        }\n        function describeFunctionComponentFrame(fn, source, ownerFn) {\n          {\n            return describeNativeComponentFrame(fn, false);\n          }\n        }\n        function shouldConstruct(Component) {\n          var prototype = Component.prototype;\n          return !!(prototype && prototype.isReactComponent);\n        }\n        function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n          if (type == null) {\n            return \"\";\n          }\n          if (typeof type === \"function\") {\n            {\n              return describeNativeComponentFrame(type, shouldConstruct(type));\n            }\n          }\n          if (typeof type === \"string\") {\n            return describeBuiltInComponentFrame(type);\n          }\n          switch (type) {\n            case REACT_SUSPENSE_TYPE:\n              return describeBuiltInComponentFrame(\"Suspense\");\n            case REACT_SUSPENSE_LIST_TYPE:\n              return describeBuiltInComponentFrame(\"SuspenseList\");\n          }\n          if (typeof type === \"object\") {\n            switch (type.$$typeof) {\n              case REACT_FORWARD_REF_TYPE:\n                return describeFunctionComponentFrame(type.render);\n              case REACT_MEMO_TYPE:\n                return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n              case REACT_LAZY_TYPE: {\n                var lazyComponent = type;\n                var payload = lazyComponent._payload;\n                var init = lazyComponent._init;\n                try {\n                  return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n                } catch (x) {\n                }\n              }\n            }\n          }\n          return \"\";\n        }\n        function describeFiber(fiber) {\n          var owner = fiber._debugOwner ? fiber._debugOwner.type : null;\n          var source = fiber._debugSource;\n          switch (fiber.tag) {\n            case HostComponent:\n              return describeBuiltInComponentFrame(fiber.type);\n            case LazyComponent:\n              return describeBuiltInComponentFrame(\"Lazy\");\n            case SuspenseComponent:\n              return describeBuiltInComponentFrame(\"Suspense\");\n            case SuspenseListComponent:\n              return describeBuiltInComponentFrame(\"SuspenseList\");\n            case FunctionComponent:\n            case IndeterminateComponent:\n            case SimpleMemoComponent:\n              return describeFunctionComponentFrame(fiber.type);\n            case ForwardRef:\n              return describeFunctionComponentFrame(fiber.type.render);\n            case ClassComponent:\n              return describeClassComponentFrame(fiber.type);\n            default:\n              return \"\";\n          }\n        }\n        function getStackByFiberInDevAndProd(workInProgress2) {\n          try {\n            var info = \"\";\n            var node = workInProgress2;\n            do {\n              info += describeFiber(node);\n              node = node.return;\n            } while (node);\n            return info;\n          } catch (x) {\n            return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n          }\n        }\n        function getWrappedName(outerType, innerType, wrapperName) {\n          var displayName = outerType.displayName;\n          if (displayName) {\n            return displayName;\n          }\n          var functionName = innerType.displayName || innerType.name || \"\";\n          return functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n        }\n        function getContextName(type) {\n          return type.displayName || \"Context\";\n        }\n        function getComponentNameFromType(type) {\n          if (type == null) {\n            return null;\n          }\n          {\n            if (typeof type.tag === \"number\") {\n              error(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\");\n            }\n          }\n          if (typeof type === \"function\") {\n            return type.displayName || type.name || null;\n          }\n          if (typeof type === \"string\") {\n            return type;\n          }\n          switch (type) {\n            case REACT_FRAGMENT_TYPE:\n              return \"Fragment\";\n            case REACT_PORTAL_TYPE:\n              return \"Portal\";\n            case REACT_PROFILER_TYPE:\n              return \"Profiler\";\n            case REACT_STRICT_MODE_TYPE:\n              return \"StrictMode\";\n            case REACT_SUSPENSE_TYPE:\n              return \"Suspense\";\n            case REACT_SUSPENSE_LIST_TYPE:\n              return \"SuspenseList\";\n          }\n          if (typeof type === \"object\") {\n            switch (type.$$typeof) {\n              case REACT_CONTEXT_TYPE:\n                var context = type;\n                return getContextName(context) + \".Consumer\";\n              case REACT_PROVIDER_TYPE:\n                var provider = type;\n                return getContextName(provider._context) + \".Provider\";\n              case REACT_FORWARD_REF_TYPE:\n                return getWrappedName(type, type.render, \"ForwardRef\");\n              case REACT_MEMO_TYPE:\n                var outerName = type.displayName || null;\n                if (outerName !== null) {\n                  return outerName;\n                }\n                return getComponentNameFromType(type.type) || \"Memo\";\n              case REACT_LAZY_TYPE: {\n                var lazyComponent = type;\n                var payload = lazyComponent._payload;\n                var init = lazyComponent._init;\n                try {\n                  return getComponentNameFromType(init(payload));\n                } catch (x) {\n                  return null;\n                }\n              }\n            }\n          }\n          return null;\n        }\n        function getWrappedName$1(outerType, innerType, wrapperName) {\n          var functionName = innerType.displayName || innerType.name || \"\";\n          return outerType.displayName || (functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n        }\n        function getContextName$1(type) {\n          return type.displayName || \"Context\";\n        }\n        function getComponentNameFromFiber(fiber) {\n          var tag = fiber.tag, type = fiber.type;\n          switch (tag) {\n            case CacheComponent:\n              return \"Cache\";\n            case ContextConsumer:\n              var context = type;\n              return getContextName$1(context) + \".Consumer\";\n            case ContextProvider:\n              var provider = type;\n              return getContextName$1(provider._context) + \".Provider\";\n            case DehydratedFragment:\n              return \"DehydratedFragment\";\n            case ForwardRef:\n              return getWrappedName$1(type, type.render, \"ForwardRef\");\n            case Fragment:\n              return \"Fragment\";\n            case HostComponent:\n              return type;\n            case HostPortal:\n              return \"Portal\";\n            case HostRoot:\n              return \"Root\";\n            case HostText:\n              return \"Text\";\n            case LazyComponent:\n              return getComponentNameFromType(type);\n            case Mode:\n              if (type === REACT_STRICT_MODE_TYPE) {\n                return \"StrictMode\";\n              }\n              return \"Mode\";\n            case OffscreenComponent:\n              return \"Offscreen\";\n            case Profiler:\n              return \"Profiler\";\n            case ScopeComponent:\n              return \"Scope\";\n            case SuspenseComponent:\n              return \"Suspense\";\n            case SuspenseListComponent:\n              return \"SuspenseList\";\n            case TracingMarkerComponent:\n              return \"TracingMarker\";\n            case ClassComponent:\n            case FunctionComponent:\n            case IncompleteClassComponent:\n            case IndeterminateComponent:\n            case MemoComponent:\n            case SimpleMemoComponent:\n              if (typeof type === \"function\") {\n                return type.displayName || type.name || null;\n              }\n              if (typeof type === \"string\") {\n                return type;\n              }\n              break;\n          }\n          return null;\n        }\n        var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n        var current = null;\n        var isRendering = false;\n        function getCurrentFiberOwnerNameInDevOrNull() {\n          {\n            if (current === null) {\n              return null;\n            }\n            var owner = current._debugOwner;\n            if (owner !== null && typeof owner !== \"undefined\") {\n              return getComponentNameFromFiber(owner);\n            }\n          }\n          return null;\n        }\n        function getCurrentFiberStackInDev() {\n          {\n            if (current === null) {\n              return \"\";\n            }\n            return getStackByFiberInDevAndProd(current);\n          }\n        }\n        function resetCurrentFiber() {\n          {\n            ReactDebugCurrentFrame.getCurrentStack = null;\n            current = null;\n            isRendering = false;\n          }\n        }\n        function setCurrentFiber(fiber) {\n          {\n            ReactDebugCurrentFrame.getCurrentStack = fiber === null ? null : getCurrentFiberStackInDev;\n            current = fiber;\n            isRendering = false;\n          }\n        }\n        function getCurrentFiber() {\n          {\n            return current;\n          }\n        }\n        function setIsRendering(rendering) {\n          {\n            isRendering = rendering;\n          }\n        }\n        function toString(value) {\n          return \"\" + value;\n        }\n        function getToStringValue(value) {\n          switch (typeof value) {\n            case \"boolean\":\n            case \"number\":\n            case \"string\":\n            case \"undefined\":\n              return value;\n            case \"object\":\n              {\n                checkFormFieldValueStringCoercion(value);\n              }\n              return value;\n            default:\n              return \"\";\n          }\n        }\n        var hasReadOnlyValue = {\n          button: true,\n          checkbox: true,\n          image: true,\n          hidden: true,\n          radio: true,\n          reset: true,\n          submit: true\n        };\n        function checkControlledValueProps(tagName, props) {\n          {\n            if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {\n              error(\"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.\");\n            }\n            if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {\n              error(\"You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.\");\n            }\n          }\n        }\n        function isCheckable(elem) {\n          var type = elem.type;\n          var nodeName = elem.nodeName;\n          return nodeName && nodeName.toLowerCase() === \"input\" && (type === \"checkbox\" || type === \"radio\");\n        }\n        function getTracker(node) {\n          return node._valueTracker;\n        }\n        function detachTracker(node) {\n          node._valueTracker = null;\n        }\n        function getValueFromNode(node) {\n          var value = \"\";\n          if (!node) {\n            return value;\n          }\n          if (isCheckable(node)) {\n            value = node.checked ? \"true\" : \"false\";\n          } else {\n            value = node.value;\n          }\n          return value;\n        }\n        function trackValueOnNode(node) {\n          var valueField = isCheckable(node) ? \"checked\" : \"value\";\n          var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n          {\n            checkFormFieldValueStringCoercion(node[valueField]);\n          }\n          var currentValue = \"\" + node[valueField];\n          if (node.hasOwnProperty(valueField) || typeof descriptor === \"undefined\" || typeof descriptor.get !== \"function\" || typeof descriptor.set !== \"function\") {\n            return;\n          }\n          var get2 = descriptor.get, set2 = descriptor.set;\n          Object.defineProperty(node, valueField, {\n            configurable: true,\n            get: function() {\n              return get2.call(this);\n            },\n            set: function(value) {\n              {\n                checkFormFieldValueStringCoercion(value);\n              }\n              currentValue = \"\" + value;\n              set2.call(this, value);\n            }\n          });\n          Object.defineProperty(node, valueField, {\n            enumerable: descriptor.enumerable\n          });\n          var tracker = {\n            getValue: function() {\n              return currentValue;\n            },\n            setValue: function(value) {\n              {\n                checkFormFieldValueStringCoercion(value);\n              }\n              currentValue = \"\" + value;\n            },\n            stopTracking: function() {\n              detachTracker(node);\n              delete node[valueField];\n            }\n          };\n          return tracker;\n        }\n        function track(node) {\n          if (getTracker(node)) {\n            return;\n          }\n          node._valueTracker = trackValueOnNode(node);\n        }\n        function updateValueIfChanged(node) {\n          if (!node) {\n            return false;\n          }\n          var tracker = getTracker(node);\n          if (!tracker) {\n            return true;\n          }\n          var lastValue = tracker.getValue();\n          var nextValue = getValueFromNode(node);\n          if (nextValue !== lastValue) {\n            tracker.setValue(nextValue);\n            return true;\n          }\n          return false;\n        }\n        function getActiveElement(doc) {\n          doc = doc || (typeof document !== \"undefined\" ? document : void 0);\n          if (typeof doc === \"undefined\") {\n            return null;\n          }\n          try {\n            return doc.activeElement || doc.body;\n          } catch (e) {\n            return doc.body;\n          }\n        }\n        var didWarnValueDefaultValue = false;\n        var didWarnCheckedDefaultChecked = false;\n        var didWarnControlledToUncontrolled = false;\n        var didWarnUncontrolledToControlled = false;\n        function isControlled(props) {\n          var usesChecked = props.type === \"checkbox\" || props.type === \"radio\";\n          return usesChecked ? props.checked != null : props.value != null;\n        }\n        function getHostProps(element, props) {\n          var node = element;\n          var checked = props.checked;\n          var hostProps = assign({}, props, {\n            defaultChecked: void 0,\n            defaultValue: void 0,\n            value: void 0,\n            checked: checked != null ? checked : node._wrapperState.initialChecked\n          });\n          return hostProps;\n        }\n        function initWrapperState(element, props) {\n          {\n            checkControlledValueProps(\"input\", props);\n            if (props.checked !== void 0 && props.defaultChecked !== void 0 && !didWarnCheckedDefaultChecked) {\n              error(\"%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components\", getCurrentFiberOwnerNameInDevOrNull() || \"A component\", props.type);\n              didWarnCheckedDefaultChecked = true;\n            }\n            if (props.value !== void 0 && props.defaultValue !== void 0 && !didWarnValueDefaultValue) {\n              error(\"%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components\", getCurrentFiberOwnerNameInDevOrNull() || \"A component\", props.type);\n              didWarnValueDefaultValue = true;\n            }\n          }\n          var node = element;\n          var defaultValue = props.defaultValue == null ? \"\" : props.defaultValue;\n          node._wrapperState = {\n            initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n            initialValue: getToStringValue(props.value != null ? props.value : defaultValue),\n            controlled: isControlled(props)\n          };\n        }\n        function updateChecked(element, props) {\n          var node = element;\n          var checked = props.checked;\n          if (checked != null) {\n            setValueForProperty(node, \"checked\", checked, false);\n          }\n        }\n        function updateWrapper(element, props) {\n          var node = element;\n          {\n            var controlled = isControlled(props);\n            if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n              error(\"A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components\");\n              didWarnUncontrolledToControlled = true;\n            }\n            if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n              error(\"A component is changing a controlled input to be uncontrolled. This is likely caused by the value changing from a defined to undefined, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components\");\n              didWarnControlledToUncontrolled = true;\n            }\n          }\n          updateChecked(element, props);\n          var value = getToStringValue(props.value);\n          var type = props.type;\n          if (value != null) {\n            if (type === \"number\") {\n              if (value === 0 && node.value === \"\" || // We explicitly want to coerce to number here if possible.\n              // eslint-disable-next-line\n              node.value != value) {\n                node.value = toString(value);\n              }\n            } else if (node.value !== toString(value)) {\n              node.value = toString(value);\n            }\n          } else if (type === \"submit\" || type === \"reset\") {\n            node.removeAttribute(\"value\");\n            return;\n          }\n          {\n            if (props.hasOwnProperty(\"value\")) {\n              setDefaultValue(node, props.type, value);\n            } else if (props.hasOwnProperty(\"defaultValue\")) {\n              setDefaultValue(node, props.type, getToStringValue(props.defaultValue));\n            }\n          }\n          {\n            if (props.checked == null && props.defaultChecked != null) {\n              node.defaultChecked = !!props.defaultChecked;\n            }\n          }\n        }\n        function postMountWrapper(element, props, isHydrating2) {\n          var node = element;\n          if (props.hasOwnProperty(\"value\") || props.hasOwnProperty(\"defaultValue\")) {\n            var type = props.type;\n            var isButton = type === \"submit\" || type === \"reset\";\n            if (isButton && (props.value === void 0 || props.value === null)) {\n              return;\n            }\n            var initialValue = toString(node._wrapperState.initialValue);\n            if (!isHydrating2) {\n              {\n                if (initialValue !== node.value) {\n                  node.value = initialValue;\n                }\n              }\n            }\n            {\n              node.defaultValue = initialValue;\n            }\n          }\n          var name = node.name;\n          if (name !== \"\") {\n            node.name = \"\";\n          }\n          {\n            node.defaultChecked = !node.defaultChecked;\n            node.defaultChecked = !!node._wrapperState.initialChecked;\n          }\n          if (name !== \"\") {\n            node.name = name;\n          }\n        }\n        function restoreControlledState(element, props) {\n          var node = element;\n          updateWrapper(node, props);\n          updateNamedCousins(node, props);\n        }\n        function updateNamedCousins(rootNode, props) {\n          var name = props.name;\n          if (props.type === \"radio\" && name != null) {\n            var queryRoot = rootNode;\n            while (queryRoot.parentNode) {\n              queryRoot = queryRoot.parentNode;\n            }\n            {\n              checkAttributeStringCoercion(name, \"name\");\n            }\n            var group = queryRoot.querySelectorAll(\"input[name=\" + JSON.stringify(\"\" + name) + '][type=\"radio\"]');\n            for (var i = 0; i < group.length; i++) {\n              var otherNode = group[i];\n              if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n                continue;\n              }\n              var otherProps = getFiberCurrentPropsFromNode(otherNode);\n              if (!otherProps) {\n                throw new Error(\"ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.\");\n              }\n              updateValueIfChanged(otherNode);\n              updateWrapper(otherNode, otherProps);\n            }\n          }\n        }\n        function setDefaultValue(node, type, value) {\n          if (\n            // Focused number inputs synchronize on blur. See ChangeEventPlugin.js\n            type !== \"number\" || getActiveElement(node.ownerDocument) !== node\n          ) {\n            if (value == null) {\n              node.defaultValue = toString(node._wrapperState.initialValue);\n            } else if (node.defaultValue !== toString(value)) {\n              node.defaultValue = toString(value);\n            }\n          }\n        }\n        var didWarnSelectedSetOnOption = false;\n        var didWarnInvalidChild = false;\n        var didWarnInvalidInnerHTML = false;\n        function validateProps(element, props) {\n          {\n            if (props.value == null) {\n              if (typeof props.children === \"object\" && props.children !== null) {\n                React.Children.forEach(props.children, function(child) {\n                  if (child == null) {\n                    return;\n                  }\n                  if (typeof child === \"string\" || typeof child === \"number\") {\n                    return;\n                  }\n                  if (!didWarnInvalidChild) {\n                    didWarnInvalidChild = true;\n                    error(\"Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to <option>.\");\n                  }\n                });\n              } else if (props.dangerouslySetInnerHTML != null) {\n                if (!didWarnInvalidInnerHTML) {\n                  didWarnInvalidInnerHTML = true;\n                  error(\"Pass a `value` prop if you set dangerouslyInnerHTML so React knows which value should be selected.\");\n                }\n              }\n            }\n            if (props.selected != null && !didWarnSelectedSetOnOption) {\n              error(\"Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>.\");\n              didWarnSelectedSetOnOption = true;\n            }\n          }\n        }\n        function postMountWrapper$1(element, props) {\n          if (props.value != null) {\n            element.setAttribute(\"value\", toString(getToStringValue(props.value)));\n          }\n        }\n        var isArrayImpl = Array.isArray;\n        function isArray(a) {\n          return isArrayImpl(a);\n        }\n        var didWarnValueDefaultValue$1;\n        {\n          didWarnValueDefaultValue$1 = false;\n        }\n        function getDeclarationErrorAddendum() {\n          var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n          if (ownerName) {\n            return \"\\n\\nCheck the render method of `\" + ownerName + \"`.\";\n          }\n          return \"\";\n        }\n        var valuePropNames = [\"value\", \"defaultValue\"];\n        function checkSelectPropTypes(props) {\n          {\n            checkControlledValueProps(\"select\", props);\n            for (var i = 0; i < valuePropNames.length; i++) {\n              var propName = valuePropNames[i];\n              if (props[propName] == null) {\n                continue;\n              }\n              var propNameIsArray = isArray(props[propName]);\n              if (props.multiple && !propNameIsArray) {\n                error(\"The `%s` prop supplied to <select> must be an array if `multiple` is true.%s\", propName, getDeclarationErrorAddendum());\n              } else if (!props.multiple && propNameIsArray) {\n                error(\"The `%s` prop supplied to <select> must be a scalar value if `multiple` is false.%s\", propName, getDeclarationErrorAddendum());\n              }\n            }\n          }\n        }\n        function updateOptions(node, multiple, propValue, setDefaultSelected) {\n          var options2 = node.options;\n          if (multiple) {\n            var selectedValues = propValue;\n            var selectedValue = {};\n            for (var i = 0; i < selectedValues.length; i++) {\n              selectedValue[\"$\" + selectedValues[i]] = true;\n            }\n            for (var _i = 0; _i < options2.length; _i++) {\n              var selected = selectedValue.hasOwnProperty(\"$\" + options2[_i].value);\n              if (options2[_i].selected !== selected) {\n                options2[_i].selected = selected;\n              }\n              if (selected && setDefaultSelected) {\n                options2[_i].defaultSelected = true;\n              }\n            }\n          } else {\n            var _selectedValue = toString(getToStringValue(propValue));\n            var defaultSelected = null;\n            for (var _i2 = 0; _i2 < options2.length; _i2++) {\n              if (options2[_i2].value === _selectedValue) {\n                options2[_i2].selected = true;\n                if (setDefaultSelected) {\n                  options2[_i2].defaultSelected = true;\n                }\n                return;\n              }\n              if (defaultSelected === null && !options2[_i2].disabled) {\n                defaultSelected = options2[_i2];\n              }\n            }\n            if (defaultSelected !== null) {\n              defaultSelected.selected = true;\n            }\n          }\n        }\n        function getHostProps$1(element, props) {\n          return assign({}, props, {\n            value: void 0\n          });\n        }\n        function initWrapperState$1(element, props) {\n          var node = element;\n          {\n            checkSelectPropTypes(props);\n          }\n          node._wrapperState = {\n            wasMultiple: !!props.multiple\n          };\n          {\n            if (props.value !== void 0 && props.defaultValue !== void 0 && !didWarnValueDefaultValue$1) {\n              error(\"Select elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled select element and remove one of these props. More info: https://reactjs.org/link/controlled-components\");\n              didWarnValueDefaultValue$1 = true;\n            }\n          }\n        }\n        function postMountWrapper$2(element, props) {\n          var node = element;\n          node.multiple = !!props.multiple;\n          var value = props.value;\n          if (value != null) {\n            updateOptions(node, !!props.multiple, value, false);\n          } else if (props.defaultValue != null) {\n            updateOptions(node, !!props.multiple, props.defaultValue, true);\n          }\n        }\n        function postUpdateWrapper(element, props) {\n          var node = element;\n          var wasMultiple = node._wrapperState.wasMultiple;\n          node._wrapperState.wasMultiple = !!props.multiple;\n          var value = props.value;\n          if (value != null) {\n            updateOptions(node, !!props.multiple, value, false);\n          } else if (wasMultiple !== !!props.multiple) {\n            if (props.defaultValue != null) {\n              updateOptions(node, !!props.multiple, props.defaultValue, true);\n            } else {\n              updateOptions(node, !!props.multiple, props.multiple ? [] : \"\", false);\n            }\n          }\n        }\n        function restoreControlledState$1(element, props) {\n          var node = element;\n          var value = props.value;\n          if (value != null) {\n            updateOptions(node, !!props.multiple, value, false);\n          }\n        }\n        var didWarnValDefaultVal = false;\n        function getHostProps$2(element, props) {\n          var node = element;\n          if (props.dangerouslySetInnerHTML != null) {\n            throw new Error(\"`dangerouslySetInnerHTML` does not make sense on <textarea>.\");\n          }\n          var hostProps = assign({}, props, {\n            value: void 0,\n            defaultValue: void 0,\n            children: toString(node._wrapperState.initialValue)\n          });\n          return hostProps;\n        }\n        function initWrapperState$2(element, props) {\n          var node = element;\n          {\n            checkControlledValueProps(\"textarea\", props);\n            if (props.value !== void 0 && props.defaultValue !== void 0 && !didWarnValDefaultVal) {\n              error(\"%s contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props. More info: https://reactjs.org/link/controlled-components\", getCurrentFiberOwnerNameInDevOrNull() || \"A component\");\n              didWarnValDefaultVal = true;\n            }\n          }\n          var initialValue = props.value;\n          if (initialValue == null) {\n            var children = props.children, defaultValue = props.defaultValue;\n            if (children != null) {\n              {\n                error(\"Use the `defaultValue` or `value` props instead of setting children on <textarea>.\");\n              }\n              {\n                if (defaultValue != null) {\n                  throw new Error(\"If you supply `defaultValue` on a <textarea>, do not pass children.\");\n                }\n                if (isArray(children)) {\n                  if (children.length > 1) {\n                    throw new Error(\"<textarea> can only have at most one child.\");\n                  }\n                  children = children[0];\n                }\n                defaultValue = children;\n              }\n            }\n            if (defaultValue == null) {\n              defaultValue = \"\";\n            }\n            initialValue = defaultValue;\n          }\n          node._wrapperState = {\n            initialValue: getToStringValue(initialValue)\n          };\n        }\n        function updateWrapper$1(element, props) {\n          var node = element;\n          var value = getToStringValue(props.value);\n          var defaultValue = getToStringValue(props.defaultValue);\n          if (value != null) {\n            var newValue = toString(value);\n            if (newValue !== node.value) {\n              node.value = newValue;\n            }\n            if (props.defaultValue == null && node.defaultValue !== newValue) {\n              node.defaultValue = newValue;\n            }\n          }\n          if (defaultValue != null) {\n            node.defaultValue = toString(defaultValue);\n          }\n        }\n        function postMountWrapper$3(element, props) {\n          var node = element;\n          var textContent = node.textContent;\n          if (textContent === node._wrapperState.initialValue) {\n            if (textContent !== \"\" && textContent !== null) {\n              node.value = textContent;\n            }\n          }\n        }\n        function restoreControlledState$2(element, props) {\n          updateWrapper$1(element, props);\n        }\n        var HTML_NAMESPACE = \"http://www.w3.org/1999/xhtml\";\n        var MATH_NAMESPACE = \"http://www.w3.org/1998/Math/MathML\";\n        var SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n        function getIntrinsicNamespace(type) {\n          switch (type) {\n            case \"svg\":\n              return SVG_NAMESPACE;\n            case \"math\":\n              return MATH_NAMESPACE;\n            default:\n              return HTML_NAMESPACE;\n          }\n        }\n        function getChildNamespace(parentNamespace, type) {\n          if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {\n            return getIntrinsicNamespace(type);\n          }\n          if (parentNamespace === SVG_NAMESPACE && type === \"foreignObject\") {\n            return HTML_NAMESPACE;\n          }\n          return parentNamespace;\n        }\n        var createMicrosoftUnsafeLocalFunction = function(func) {\n          if (typeof MSApp !== \"undefined\" && MSApp.execUnsafeLocalFunction) {\n            return function(arg0, arg1, arg2, arg3) {\n              MSApp.execUnsafeLocalFunction(function() {\n                return func(arg0, arg1, arg2, arg3);\n              });\n            };\n          } else {\n            return func;\n          }\n        };\n        var reusableSVGContainer;\n        var setInnerHTML = createMicrosoftUnsafeLocalFunction(function(node, html) {\n          if (node.namespaceURI === SVG_NAMESPACE) {\n            if (!(\"innerHTML\" in node)) {\n              reusableSVGContainer = reusableSVGContainer || document.createElement(\"div\");\n              reusableSVGContainer.innerHTML = \"<svg>\" + html.valueOf().toString() + \"</svg>\";\n              var svgNode = reusableSVGContainer.firstChild;\n              while (node.firstChild) {\n                node.removeChild(node.firstChild);\n              }\n              while (svgNode.firstChild) {\n                node.appendChild(svgNode.firstChild);\n              }\n              return;\n            }\n          }\n          node.innerHTML = html;\n        });\n        var ELEMENT_NODE = 1;\n        var TEXT_NODE = 3;\n        var COMMENT_NODE = 8;\n        var DOCUMENT_NODE = 9;\n        var DOCUMENT_FRAGMENT_NODE = 11;\n        var setTextContent = function(node, text) {\n          if (text) {\n            var firstChild = node.firstChild;\n            if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {\n              firstChild.nodeValue = text;\n              return;\n            }\n          }\n          node.textContent = text;\n        };\n        var shorthandToLonghand = {\n          animation: [\"animationDelay\", \"animationDirection\", \"animationDuration\", \"animationFillMode\", \"animationIterationCount\", \"animationName\", \"animationPlayState\", \"animationTimingFunction\"],\n          background: [\"backgroundAttachment\", \"backgroundClip\", \"backgroundColor\", \"backgroundImage\", \"backgroundOrigin\", \"backgroundPositionX\", \"backgroundPositionY\", \"backgroundRepeat\", \"backgroundSize\"],\n          backgroundPosition: [\"backgroundPositionX\", \"backgroundPositionY\"],\n          border: [\"borderBottomColor\", \"borderBottomStyle\", \"borderBottomWidth\", \"borderImageOutset\", \"borderImageRepeat\", \"borderImageSlice\", \"borderImageSource\", \"borderImageWidth\", \"borderLeftColor\", \"borderLeftStyle\", \"borderLeftWidth\", \"borderRightColor\", \"borderRightStyle\", \"borderRightWidth\", \"borderTopColor\", \"borderTopStyle\", \"borderTopWidth\"],\n          borderBlockEnd: [\"borderBlockEndColor\", \"borderBlockEndStyle\", \"borderBlockEndWidth\"],\n          borderBlockStart: [\"borderBlockStartColor\", \"borderBlockStartStyle\", \"borderBlockStartWidth\"],\n          borderBottom: [\"borderBottomColor\", \"borderBottomStyle\", \"borderBottomWidth\"],\n          borderColor: [\"borderBottomColor\", \"borderLeftColor\", \"borderRightColor\", \"borderTopColor\"],\n          borderImage: [\"borderImageOutset\", \"borderImageRepeat\", \"borderImageSlice\", \"borderImageSource\", \"borderImageWidth\"],\n          borderInlineEnd: [\"borderInlineEndColor\", \"borderInlineEndStyle\", \"borderInlineEndWidth\"],\n          borderInlineStart: [\"borderInlineStartColor\", \"borderInlineStartStyle\", \"borderInlineStartWidth\"],\n          borderLeft: [\"borderLeftColor\", \"borderLeftStyle\", \"borderLeftWidth\"],\n          borderRadius: [\"borderBottomLeftRadius\", \"borderBottomRightRadius\", \"borderTopLeftRadius\", \"borderTopRightRadius\"],\n          borderRight: [\"borderRightColor\", \"borderRightStyle\", \"borderRightWidth\"],\n          borderStyle: [\"borderBottomStyle\", \"borderLeftStyle\", \"borderRightStyle\", \"borderTopStyle\"],\n          borderTop: [\"borderTopColor\", \"borderTopStyle\", \"borderTopWidth\"],\n          borderWidth: [\"borderBottomWidth\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopWidth\"],\n          columnRule: [\"columnRuleColor\", \"columnRuleStyle\", \"columnRuleWidth\"],\n          columns: [\"columnCount\", \"columnWidth\"],\n          flex: [\"flexBasis\", \"flexGrow\", \"flexShrink\"],\n          flexFlow: [\"flexDirection\", \"flexWrap\"],\n          font: [\"fontFamily\", \"fontFeatureSettings\", \"fontKerning\", \"fontLanguageOverride\", \"fontSize\", \"fontSizeAdjust\", \"fontStretch\", \"fontStyle\", \"fontVariant\", \"fontVariantAlternates\", \"fontVariantCaps\", \"fontVariantEastAsian\", \"fontVariantLigatures\", \"fontVariantNumeric\", \"fontVariantPosition\", \"fontWeight\", \"lineHeight\"],\n          fontVariant: [\"fontVariantAlternates\", \"fontVariantCaps\", \"fontVariantEastAsian\", \"fontVariantLigatures\", \"fontVariantNumeric\", \"fontVariantPosition\"],\n          gap: [\"columnGap\", \"rowGap\"],\n          grid: [\"gridAutoColumns\", \"gridAutoFlow\", \"gridAutoRows\", \"gridTemplateAreas\", \"gridTemplateColumns\", \"gridTemplateRows\"],\n          gridArea: [\"gridColumnEnd\", \"gridColumnStart\", \"gridRowEnd\", \"gridRowStart\"],\n          gridColumn: [\"gridColumnEnd\", \"gridColumnStart\"],\n          gridColumnGap: [\"columnGap\"],\n          gridGap: [\"columnGap\", \"rowGap\"],\n          gridRow: [\"gridRowEnd\", \"gridRowStart\"],\n          gridRowGap: [\"rowGap\"],\n          gridTemplate: [\"gridTemplateAreas\", \"gridTemplateColumns\", \"gridTemplateRows\"],\n          listStyle: [\"listStyleImage\", \"listStylePosition\", \"listStyleType\"],\n          margin: [\"marginBottom\", \"marginLeft\", \"marginRight\", \"marginTop\"],\n          marker: [\"markerEnd\", \"markerMid\", \"markerStart\"],\n          mask: [\"maskClip\", \"maskComposite\", \"maskImage\", \"maskMode\", \"maskOrigin\", \"maskPositionX\", \"maskPositionY\", \"maskRepeat\", \"maskSize\"],\n          maskPosition: [\"maskPositionX\", \"maskPositionY\"],\n          outline: [\"outlineColor\", \"outlineStyle\", \"outlineWidth\"],\n          overflow: [\"overflowX\", \"overflowY\"],\n          padding: [\"paddingBottom\", \"paddingLeft\", \"paddingRight\", \"paddingTop\"],\n          placeContent: [\"alignContent\", \"justifyContent\"],\n          placeItems: [\"alignItems\", \"justifyItems\"],\n          placeSelf: [\"alignSelf\", \"justifySelf\"],\n          textDecoration: [\"textDecorationColor\", \"textDecorationLine\", \"textDecorationStyle\"],\n          textEmphasis: [\"textEmphasisColor\", \"textEmphasisStyle\"],\n          transition: [\"transitionDelay\", \"transitionDuration\", \"transitionProperty\", \"transitionTimingFunction\"],\n          wordWrap: [\"overflowWrap\"]\n        };\n        var isUnitlessNumber = {\n          animationIterationCount: true,\n          aspectRatio: true,\n          borderImageOutset: true,\n          borderImageSlice: true,\n          borderImageWidth: true,\n          boxFlex: true,\n          boxFlexGroup: true,\n          boxOrdinalGroup: true,\n          columnCount: true,\n          columns: true,\n          flex: true,\n          flexGrow: true,\n          flexPositive: true,\n          flexShrink: true,\n          flexNegative: true,\n          flexOrder: true,\n          gridArea: true,\n          gridRow: true,\n          gridRowEnd: true,\n          gridRowSpan: true,\n          gridRowStart: true,\n          gridColumn: true,\n          gridColumnEnd: true,\n          gridColumnSpan: true,\n          gridColumnStart: true,\n          fontWeight: true,\n          lineClamp: true,\n          lineHeight: true,\n          opacity: true,\n          order: true,\n          orphans: true,\n          tabSize: true,\n          widows: true,\n          zIndex: true,\n          zoom: true,\n          // SVG-related properties\n          fillOpacity: true,\n          floodOpacity: true,\n          stopOpacity: true,\n          strokeDasharray: true,\n          strokeDashoffset: true,\n          strokeMiterlimit: true,\n          strokeOpacity: true,\n          strokeWidth: true\n        };\n        function prefixKey(prefix2, key) {\n          return prefix2 + key.charAt(0).toUpperCase() + key.substring(1);\n        }\n        var prefixes = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\n        Object.keys(isUnitlessNumber).forEach(function(prop) {\n          prefixes.forEach(function(prefix2) {\n            isUnitlessNumber[prefixKey(prefix2, prop)] = isUnitlessNumber[prop];\n          });\n        });\n        function dangerousStyleValue(name, value, isCustomProperty) {\n          var isEmpty = value == null || typeof value === \"boolean\" || value === \"\";\n          if (isEmpty) {\n            return \"\";\n          }\n          if (!isCustomProperty && typeof value === \"number\" && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {\n            return value + \"px\";\n          }\n          {\n            checkCSSPropertyStringCoercion(value, name);\n          }\n          return (\"\" + value).trim();\n        }\n        var uppercasePattern = /([A-Z])/g;\n        var msPattern = /^ms-/;\n        function hyphenateStyleName(name) {\n          return name.replace(uppercasePattern, \"-$1\").toLowerCase().replace(msPattern, \"-ms-\");\n        }\n        var warnValidStyle = function() {\n        };\n        {\n          var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n          var msPattern$1 = /^-ms-/;\n          var hyphenPattern = /-(.)/g;\n          var badStyleValueWithSemicolonPattern = /;\\s*$/;\n          var warnedStyleNames = {};\n          var warnedStyleValues = {};\n          var warnedForNaNValue = false;\n          var warnedForInfinityValue = false;\n          var camelize = function(string) {\n            return string.replace(hyphenPattern, function(_, character) {\n              return character.toUpperCase();\n            });\n          };\n          var warnHyphenatedStyleName = function(name) {\n            if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n              return;\n            }\n            warnedStyleNames[name] = true;\n            error(\n              \"Unsupported style property %s. Did you mean %s?\",\n              name,\n              // As Andi Smith suggests\n              // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n              // is converted to lowercase `ms`.\n              camelize(name.replace(msPattern$1, \"ms-\"))\n            );\n          };\n          var warnBadVendoredStyleName = function(name) {\n            if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n              return;\n            }\n            warnedStyleNames[name] = true;\n            error(\"Unsupported vendor-prefixed style property %s. Did you mean %s?\", name, name.charAt(0).toUpperCase() + name.slice(1));\n          };\n          var warnStyleValueWithSemicolon = function(name, value) {\n            if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n              return;\n            }\n            warnedStyleValues[value] = true;\n            error(`Style property values shouldn't contain a semicolon. Try \"%s: %s\" instead.`, name, value.replace(badStyleValueWithSemicolonPattern, \"\"));\n          };\n          var warnStyleValueIsNaN = function(name, value) {\n            if (warnedForNaNValue) {\n              return;\n            }\n            warnedForNaNValue = true;\n            error(\"`NaN` is an invalid value for the `%s` css style property.\", name);\n          };\n          var warnStyleValueIsInfinity = function(name, value) {\n            if (warnedForInfinityValue) {\n              return;\n            }\n            warnedForInfinityValue = true;\n            error(\"`Infinity` is an invalid value for the `%s` css style property.\", name);\n          };\n          warnValidStyle = function(name, value) {\n            if (name.indexOf(\"-\") > -1) {\n              warnHyphenatedStyleName(name);\n            } else if (badVendoredStyleNamePattern.test(name)) {\n              warnBadVendoredStyleName(name);\n            } else if (badStyleValueWithSemicolonPattern.test(value)) {\n              warnStyleValueWithSemicolon(name, value);\n            }\n            if (typeof value === \"number\") {\n              if (isNaN(value)) {\n                warnStyleValueIsNaN(name, value);\n              } else if (!isFinite(value)) {\n                warnStyleValueIsInfinity(name, value);\n              }\n            }\n          };\n        }\n        var warnValidStyle$1 = warnValidStyle;\n        function createDangerousStringForStyles(styles) {\n          {\n            var serialized = \"\";\n            var delimiter = \"\";\n            for (var styleName in styles) {\n              if (!styles.hasOwnProperty(styleName)) {\n                continue;\n              }\n              var styleValue = styles[styleName];\n              if (styleValue != null) {\n                var isCustomProperty = styleName.indexOf(\"--\") === 0;\n                serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + \":\";\n                serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);\n                delimiter = \";\";\n              }\n            }\n            return serialized || null;\n          }\n        }\n        function setValueForStyles(node, styles) {\n          var style2 = node.style;\n          for (var styleName in styles) {\n            if (!styles.hasOwnProperty(styleName)) {\n              continue;\n            }\n            var isCustomProperty = styleName.indexOf(\"--\") === 0;\n            {\n              if (!isCustomProperty) {\n                warnValidStyle$1(styleName, styles[styleName]);\n              }\n            }\n            var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);\n            if (styleName === \"float\") {\n              styleName = \"cssFloat\";\n            }\n            if (isCustomProperty) {\n              style2.setProperty(styleName, styleValue);\n            } else {\n              style2[styleName] = styleValue;\n            }\n          }\n        }\n        function isValueEmpty(value) {\n          return value == null || typeof value === \"boolean\" || value === \"\";\n        }\n        function expandShorthandMap(styles) {\n          var expanded = {};\n          for (var key in styles) {\n            var longhands = shorthandToLonghand[key] || [key];\n            for (var i = 0; i < longhands.length; i++) {\n              expanded[longhands[i]] = key;\n            }\n          }\n          return expanded;\n        }\n        function validateShorthandPropertyCollisionInDev(styleUpdates, nextStyles) {\n          {\n            if (!nextStyles) {\n              return;\n            }\n            var expandedUpdates = expandShorthandMap(styleUpdates);\n            var expandedStyles = expandShorthandMap(nextStyles);\n            var warnedAbout = {};\n            for (var key in expandedUpdates) {\n              var originalKey = expandedUpdates[key];\n              var correctOriginalKey = expandedStyles[key];\n              if (correctOriginalKey && originalKey !== correctOriginalKey) {\n                var warningKey = originalKey + \",\" + correctOriginalKey;\n                if (warnedAbout[warningKey]) {\n                  continue;\n                }\n                warnedAbout[warningKey] = true;\n                error(\"%s a style property during rerender (%s) when a conflicting property is set (%s) can lead to styling bugs. To avoid this, don't mix shorthand and non-shorthand properties for the same value; instead, replace the shorthand with separate values.\", isValueEmpty(styleUpdates[originalKey]) ? \"Removing\" : \"Updating\", originalKey, correctOriginalKey);\n              }\n            }\n          }\n        }\n        var omittedCloseTags = {\n          area: true,\n          base: true,\n          br: true,\n          col: true,\n          embed: true,\n          hr: true,\n          img: true,\n          input: true,\n          keygen: true,\n          link: true,\n          meta: true,\n          param: true,\n          source: true,\n          track: true,\n          wbr: true\n          // NOTE: menuitem's close tag should be omitted, but that causes problems.\n        };\n        var voidElementTags = assign({\n          menuitem: true\n        }, omittedCloseTags);\n        var HTML = \"__html\";\n        function assertValidProps(tag, props) {\n          if (!props) {\n            return;\n          }\n          if (voidElementTags[tag]) {\n            if (props.children != null || props.dangerouslySetInnerHTML != null) {\n              throw new Error(tag + \" is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\");\n            }\n          }\n          if (props.dangerouslySetInnerHTML != null) {\n            if (props.children != null) {\n              throw new Error(\"Can only set one of `children` or `props.dangerouslySetInnerHTML`.\");\n            }\n            if (typeof props.dangerouslySetInnerHTML !== \"object\" || !(HTML in props.dangerouslySetInnerHTML)) {\n              throw new Error(\"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://reactjs.org/link/dangerously-set-inner-html for more information.\");\n            }\n          }\n          {\n            if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {\n              error(\"A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional.\");\n            }\n          }\n          if (props.style != null && typeof props.style !== \"object\") {\n            throw new Error(\"The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.\");\n          }\n        }\n        function isCustomComponent(tagName, props) {\n          if (tagName.indexOf(\"-\") === -1) {\n            return typeof props.is === \"string\";\n          }\n          switch (tagName) {\n            case \"annotation-xml\":\n            case \"color-profile\":\n            case \"font-face\":\n            case \"font-face-src\":\n            case \"font-face-uri\":\n            case \"font-face-format\":\n            case \"font-face-name\":\n            case \"missing-glyph\":\n              return false;\n            default:\n              return true;\n          }\n        }\n        var possibleStandardNames = {\n          // HTML\n          accept: \"accept\",\n          acceptcharset: \"acceptCharset\",\n          \"accept-charset\": \"acceptCharset\",\n          accesskey: \"accessKey\",\n          action: \"action\",\n          allowfullscreen: \"allowFullScreen\",\n          alt: \"alt\",\n          as: \"as\",\n          async: \"async\",\n          autocapitalize: \"autoCapitalize\",\n          autocomplete: \"autoComplete\",\n          autocorrect: \"autoCorrect\",\n          autofocus: \"autoFocus\",\n          autoplay: \"autoPlay\",\n          autosave: \"autoSave\",\n          capture: \"capture\",\n          cellpadding: \"cellPadding\",\n          cellspacing: \"cellSpacing\",\n          challenge: \"challenge\",\n          charset: \"charSet\",\n          checked: \"checked\",\n          children: \"children\",\n          cite: \"cite\",\n          class: \"className\",\n          classid: \"classID\",\n          classname: \"className\",\n          cols: \"cols\",\n          colspan: \"colSpan\",\n          content: \"content\",\n          contenteditable: \"contentEditable\",\n          contextmenu: \"contextMenu\",\n          controls: \"controls\",\n          controlslist: \"controlsList\",\n          coords: \"coords\",\n          crossorigin: \"crossOrigin\",\n          dangerouslysetinnerhtml: \"dangerouslySetInnerHTML\",\n          data: \"data\",\n          datetime: \"dateTime\",\n          default: \"default\",\n          defaultchecked: \"defaultChecked\",\n          defaultvalue: \"defaultValue\",\n          defer: \"defer\",\n          dir: \"dir\",\n          disabled: \"disabled\",\n          disablepictureinpicture: \"disablePictureInPicture\",\n          disableremoteplayback: \"disableRemotePlayback\",\n          download: \"download\",\n          draggable: \"draggable\",\n          enctype: \"encType\",\n          enterkeyhint: \"enterKeyHint\",\n          for: \"htmlFor\",\n          form: \"form\",\n          formmethod: \"formMethod\",\n          formaction: \"formAction\",\n          formenctype: \"formEncType\",\n          formnovalidate: \"formNoValidate\",\n          formtarget: \"formTarget\",\n          frameborder: \"frameBorder\",\n          headers: \"headers\",\n          height: \"height\",\n          hidden: \"hidden\",\n          high: \"high\",\n          href: \"href\",\n          hreflang: \"hrefLang\",\n          htmlfor: \"htmlFor\",\n          httpequiv: \"httpEquiv\",\n          \"http-equiv\": \"httpEquiv\",\n          icon: \"icon\",\n          id: \"id\",\n          imagesizes: \"imageSizes\",\n          imagesrcset: \"imageSrcSet\",\n          innerhtml: \"innerHTML\",\n          inputmode: \"inputMode\",\n          integrity: \"integrity\",\n          is: \"is\",\n          itemid: \"itemID\",\n          itemprop: \"itemProp\",\n          itemref: \"itemRef\",\n          itemscope: \"itemScope\",\n          itemtype: \"itemType\",\n          keyparams: \"keyParams\",\n          keytype: \"keyType\",\n          kind: \"kind\",\n          label: \"label\",\n          lang: \"lang\",\n          list: \"list\",\n          loop: \"loop\",\n          low: \"low\",\n          manifest: \"manifest\",\n          marginwidth: \"marginWidth\",\n          marginheight: \"marginHeight\",\n          max: \"max\",\n          maxlength: \"maxLength\",\n          media: \"media\",\n          mediagroup: \"mediaGroup\",\n          method: \"method\",\n          min: \"min\",\n          minlength: \"minLength\",\n          multiple: \"multiple\",\n          muted: \"muted\",\n          name: \"name\",\n          nomodule: \"noModule\",\n          nonce: \"nonce\",\n          novalidate: \"noValidate\",\n          open: \"open\",\n          optimum: \"optimum\",\n          pattern: \"pattern\",\n          placeholder: \"placeholder\",\n          playsinline: \"playsInline\",\n          poster: \"poster\",\n          preload: \"preload\",\n          profile: \"profile\",\n          radiogroup: \"radioGroup\",\n          readonly: \"readOnly\",\n          referrerpolicy: \"referrerPolicy\",\n          rel: \"rel\",\n          required: \"required\",\n          reversed: \"reversed\",\n          role: \"role\",\n          rows: \"rows\",\n          rowspan: \"rowSpan\",\n          sandbox: \"sandbox\",\n          scope: \"scope\",\n          scoped: \"scoped\",\n          scrolling: \"scrolling\",\n          seamless: \"seamless\",\n          selected: \"selected\",\n          shape: \"shape\",\n          size: \"size\",\n          sizes: \"sizes\",\n          span: \"span\",\n          spellcheck: \"spellCheck\",\n          src: \"src\",\n          srcdoc: \"srcDoc\",\n          srclang: \"srcLang\",\n          srcset: \"srcSet\",\n          start: \"start\",\n          step: \"step\",\n          style: \"style\",\n          summary: \"summary\",\n          tabindex: \"tabIndex\",\n          target: \"target\",\n          title: \"title\",\n          type: \"type\",\n          usemap: \"useMap\",\n          value: \"value\",\n          width: \"width\",\n          wmode: \"wmode\",\n          wrap: \"wrap\",\n          // SVG\n          about: \"about\",\n          accentheight: \"accentHeight\",\n          \"accent-height\": \"accentHeight\",\n          accumulate: \"accumulate\",\n          additive: \"additive\",\n          alignmentbaseline: \"alignmentBaseline\",\n          \"alignment-baseline\": \"alignmentBaseline\",\n          allowreorder: \"allowReorder\",\n          alphabetic: \"alphabetic\",\n          amplitude: \"amplitude\",\n          arabicform: \"arabicForm\",\n          \"arabic-form\": \"arabicForm\",\n          ascent: \"ascent\",\n          attributename: \"attributeName\",\n          attributetype: \"attributeType\",\n          autoreverse: \"autoReverse\",\n          azimuth: \"azimuth\",\n          basefrequency: \"baseFrequency\",\n          baselineshift: \"baselineShift\",\n          \"baseline-shift\": \"baselineShift\",\n          baseprofile: \"baseProfile\",\n          bbox: \"bbox\",\n          begin: \"begin\",\n          bias: \"bias\",\n          by: \"by\",\n          calcmode: \"calcMode\",\n          capheight: \"capHeight\",\n          \"cap-height\": \"capHeight\",\n          clip: \"clip\",\n          clippath: \"clipPath\",\n          \"clip-path\": \"clipPath\",\n          clippathunits: \"clipPathUnits\",\n          cliprule: \"clipRule\",\n          \"clip-rule\": \"clipRule\",\n          color: \"color\",\n          colorinterpolation: \"colorInterpolation\",\n          \"color-interpolation\": \"colorInterpolation\",\n          colorinterpolationfilters: \"colorInterpolationFilters\",\n          \"color-interpolation-filters\": \"colorInterpolationFilters\",\n          colorprofile: \"colorProfile\",\n          \"color-profile\": \"colorProfile\",\n          colorrendering: \"colorRendering\",\n          \"color-rendering\": \"colorRendering\",\n          contentscripttype: \"contentScriptType\",\n          contentstyletype: \"contentStyleType\",\n          cursor: \"cursor\",\n          cx: \"cx\",\n          cy: \"cy\",\n          d: \"d\",\n          datatype: \"datatype\",\n          decelerate: \"decelerate\",\n          descent: \"descent\",\n          diffuseconstant: \"diffuseConstant\",\n          direction: \"direction\",\n          display: \"display\",\n          divisor: \"divisor\",\n          dominantbaseline: \"dominantBaseline\",\n          \"dominant-baseline\": \"dominantBaseline\",\n          dur: \"dur\",\n          dx: \"dx\",\n          dy: \"dy\",\n          edgemode: \"edgeMode\",\n          elevation: \"elevation\",\n          enablebackground: \"enableBackground\",\n          \"enable-background\": \"enableBackground\",\n          end: \"end\",\n          exponent: \"exponent\",\n          externalresourcesrequired: \"externalResourcesRequired\",\n          fill: \"fill\",\n          fillopacity: \"fillOpacity\",\n          \"fill-opacity\": \"fillOpacity\",\n          fillrule: \"fillRule\",\n          \"fill-rule\": \"fillRule\",\n          filter: \"filter\",\n          filterres: \"filterRes\",\n          filterunits: \"filterUnits\",\n          floodopacity: \"floodOpacity\",\n          \"flood-opacity\": \"floodOpacity\",\n          floodcolor: \"floodColor\",\n          \"flood-color\": \"floodColor\",\n          focusable: \"focusable\",\n          fontfamily: \"fontFamily\",\n          \"font-family\": \"fontFamily\",\n          fontsize: \"fontSize\",\n          \"font-size\": \"fontSize\",\n          fontsizeadjust: \"fontSizeAdjust\",\n          \"font-size-adjust\": \"fontSizeAdjust\",\n          fontstretch: \"fontStretch\",\n          \"font-stretch\": \"fontStretch\",\n          fontstyle: \"fontStyle\",\n          \"font-style\": \"fontStyle\",\n          fontvariant: \"fontVariant\",\n          \"font-variant\": \"fontVariant\",\n          fontweight: \"fontWeight\",\n          \"font-weight\": \"fontWeight\",\n          format: \"format\",\n          from: \"from\",\n          fx: \"fx\",\n          fy: \"fy\",\n          g1: \"g1\",\n          g2: \"g2\",\n          glyphname: \"glyphName\",\n          \"glyph-name\": \"glyphName\",\n          glyphorientationhorizontal: \"glyphOrientationHorizontal\",\n          \"glyph-orientation-horizontal\": \"glyphOrientationHorizontal\",\n          glyphorientationvertical: \"glyphOrientationVertical\",\n          \"glyph-orientation-vertical\": \"glyphOrientationVertical\",\n          glyphref: \"glyphRef\",\n          gradienttransform: \"gradientTransform\",\n          gradientunits: \"gradientUnits\",\n          hanging: \"hanging\",\n          horizadvx: \"horizAdvX\",\n          \"horiz-adv-x\": \"horizAdvX\",\n          horizoriginx: \"horizOriginX\",\n          \"horiz-origin-x\": \"horizOriginX\",\n          ideographic: \"ideographic\",\n          imagerendering: \"imageRendering\",\n          \"image-rendering\": \"imageRendering\",\n          in2: \"in2\",\n          in: \"in\",\n          inlist: \"inlist\",\n          intercept: \"intercept\",\n          k1: \"k1\",\n          k2: \"k2\",\n          k3: \"k3\",\n          k4: \"k4\",\n          k: \"k\",\n          kernelmatrix: \"kernelMatrix\",\n          kernelunitlength: \"kernelUnitLength\",\n          kerning: \"kerning\",\n          keypoints: \"keyPoints\",\n          keysplines: \"keySplines\",\n          keytimes: \"keyTimes\",\n          lengthadjust: \"lengthAdjust\",\n          letterspacing: \"letterSpacing\",\n          \"letter-spacing\": \"letterSpacing\",\n          lightingcolor: \"lightingColor\",\n          \"lighting-color\": \"lightingColor\",\n          limitingconeangle: \"limitingConeAngle\",\n          local: \"local\",\n          markerend: \"markerEnd\",\n          \"marker-end\": \"markerEnd\",\n          markerheight: \"markerHeight\",\n          markermid: \"markerMid\",\n          \"marker-mid\": \"markerMid\",\n          markerstart: \"markerStart\",\n          \"marker-start\": \"markerStart\",\n          markerunits: \"markerUnits\",\n          markerwidth: \"markerWidth\",\n          mask: \"mask\",\n          maskcontentunits: \"maskContentUnits\",\n          maskunits: \"maskUnits\",\n          mathematical: \"mathematical\",\n          mode: \"mode\",\n          numoctaves: \"numOctaves\",\n          offset: \"offset\",\n          opacity: \"opacity\",\n          operator: \"operator\",\n          order: \"order\",\n          orient: \"orient\",\n          orientation: \"orientation\",\n          origin: \"origin\",\n          overflow: \"overflow\",\n          overlineposition: \"overlinePosition\",\n          \"overline-position\": \"overlinePosition\",\n          overlinethickness: \"overlineThickness\",\n          \"overline-thickness\": \"overlineThickness\",\n          paintorder: \"paintOrder\",\n          \"paint-order\": \"paintOrder\",\n          panose1: \"panose1\",\n          \"panose-1\": \"panose1\",\n          pathlength: \"pathLength\",\n          patterncontentunits: \"patternContentUnits\",\n          patterntransform: \"patternTransform\",\n          patternunits: \"patternUnits\",\n          pointerevents: \"pointerEvents\",\n          \"pointer-events\": \"pointerEvents\",\n          points: \"points\",\n          pointsatx: \"pointsAtX\",\n          pointsaty: \"pointsAtY\",\n          pointsatz: \"pointsAtZ\",\n          prefix: \"prefix\",\n          preservealpha: \"preserveAlpha\",\n          preserveaspectratio: \"preserveAspectRatio\",\n          primitiveunits: \"primitiveUnits\",\n          property: \"property\",\n          r: \"r\",\n          radius: \"radius\",\n          refx: \"refX\",\n          refy: \"refY\",\n          renderingintent: \"renderingIntent\",\n          \"rendering-intent\": \"renderingIntent\",\n          repeatcount: \"repeatCount\",\n          repeatdur: \"repeatDur\",\n          requiredextensions: \"requiredExtensions\",\n          requiredfeatures: \"requiredFeatures\",\n          resource: \"resource\",\n          restart: \"restart\",\n          result: \"result\",\n          results: \"results\",\n          rotate: \"rotate\",\n          rx: \"rx\",\n          ry: \"ry\",\n          scale: \"scale\",\n          security: \"security\",\n          seed: \"seed\",\n          shaperendering: \"shapeRendering\",\n          \"shape-rendering\": \"shapeRendering\",\n          slope: \"slope\",\n          spacing: \"spacing\",\n          specularconstant: \"specularConstant\",\n          specularexponent: \"specularExponent\",\n          speed: \"speed\",\n          spreadmethod: \"spreadMethod\",\n          startoffset: \"startOffset\",\n          stddeviation: \"stdDeviation\",\n          stemh: \"stemh\",\n          stemv: \"stemv\",\n          stitchtiles: \"stitchTiles\",\n          stopcolor: \"stopColor\",\n          \"stop-color\": \"stopColor\",\n          stopopacity: \"stopOpacity\",\n          \"stop-opacity\": \"stopOpacity\",\n          strikethroughposition: \"strikethroughPosition\",\n          \"strikethrough-position\": \"strikethroughPosition\",\n          strikethroughthickness: \"strikethroughThickness\",\n          \"strikethrough-thickness\": \"strikethroughThickness\",\n          string: \"string\",\n          stroke: \"stroke\",\n          strokedasharray: \"strokeDasharray\",\n          \"stroke-dasharray\": \"strokeDasharray\",\n          strokedashoffset: \"strokeDashoffset\",\n          \"stroke-dashoffset\": \"strokeDashoffset\",\n          strokelinecap: \"strokeLinecap\",\n          \"stroke-linecap\": \"strokeLinecap\",\n          strokelinejoin: \"strokeLinejoin\",\n          \"stroke-linejoin\": \"strokeLinejoin\",\n          strokemiterlimit: \"strokeMiterlimit\",\n          \"stroke-miterlimit\": \"strokeMiterlimit\",\n          strokewidth: \"strokeWidth\",\n          \"stroke-width\": \"strokeWidth\",\n          strokeopacity: \"strokeOpacity\",\n          \"stroke-opacity\": \"strokeOpacity\",\n          suppresscontenteditablewarning: \"suppressContentEditableWarning\",\n          suppresshydrationwarning: \"suppressHydrationWarning\",\n          surfacescale: \"surfaceScale\",\n          systemlanguage: \"systemLanguage\",\n          tablevalues: \"tableValues\",\n          targetx: \"targetX\",\n          targety: \"targetY\",\n          textanchor: \"textAnchor\",\n          \"text-anchor\": \"textAnchor\",\n          textdecoration: \"textDecoration\",\n          \"text-decoration\": \"textDecoration\",\n          textlength: \"textLength\",\n          textrendering: \"textRendering\",\n          \"text-rendering\": \"textRendering\",\n          to: \"to\",\n          transform: \"transform\",\n          typeof: \"typeof\",\n          u1: \"u1\",\n          u2: \"u2\",\n          underlineposition: \"underlinePosition\",\n          \"underline-position\": \"underlinePosition\",\n          underlinethickness: \"underlineThickness\",\n          \"underline-thickness\": \"underlineThickness\",\n          unicode: \"unicode\",\n          unicodebidi: \"unicodeBidi\",\n          \"unicode-bidi\": \"unicodeBidi\",\n          unicoderange: \"unicodeRange\",\n          \"unicode-range\": \"unicodeRange\",\n          unitsperem: \"unitsPerEm\",\n          \"units-per-em\": \"unitsPerEm\",\n          unselectable: \"unselectable\",\n          valphabetic: \"vAlphabetic\",\n          \"v-alphabetic\": \"vAlphabetic\",\n          values: \"values\",\n          vectoreffect: \"vectorEffect\",\n          \"vector-effect\": \"vectorEffect\",\n          version: \"version\",\n          vertadvy: \"vertAdvY\",\n          \"vert-adv-y\": \"vertAdvY\",\n          vertoriginx: \"vertOriginX\",\n          \"vert-origin-x\": \"vertOriginX\",\n          vertoriginy: \"vertOriginY\",\n          \"vert-origin-y\": \"vertOriginY\",\n          vhanging: \"vHanging\",\n          \"v-hanging\": \"vHanging\",\n          videographic: \"vIdeographic\",\n          \"v-ideographic\": \"vIdeographic\",\n          viewbox: \"viewBox\",\n          viewtarget: \"viewTarget\",\n          visibility: \"visibility\",\n          vmathematical: \"vMathematical\",\n          \"v-mathematical\": \"vMathematical\",\n          vocab: \"vocab\",\n          widths: \"widths\",\n          wordspacing: \"wordSpacing\",\n          \"word-spacing\": \"wordSpacing\",\n          writingmode: \"writingMode\",\n          \"writing-mode\": \"writingMode\",\n          x1: \"x1\",\n          x2: \"x2\",\n          x: \"x\",\n          xchannelselector: \"xChannelSelector\",\n          xheight: \"xHeight\",\n          \"x-height\": \"xHeight\",\n          xlinkactuate: \"xlinkActuate\",\n          \"xlink:actuate\": \"xlinkActuate\",\n          xlinkarcrole: \"xlinkArcrole\",\n          \"xlink:arcrole\": \"xlinkArcrole\",\n          xlinkhref: \"xlinkHref\",\n          \"xlink:href\": \"xlinkHref\",\n          xlinkrole: \"xlinkRole\",\n          \"xlink:role\": \"xlinkRole\",\n          xlinkshow: \"xlinkShow\",\n          \"xlink:show\": \"xlinkShow\",\n          xlinktitle: \"xlinkTitle\",\n          \"xlink:title\": \"xlinkTitle\",\n          xlinktype: \"xlinkType\",\n          \"xlink:type\": \"xlinkType\",\n          xmlbase: \"xmlBase\",\n          \"xml:base\": \"xmlBase\",\n          xmllang: \"xmlLang\",\n          \"xml:lang\": \"xmlLang\",\n          xmlns: \"xmlns\",\n          \"xml:space\": \"xmlSpace\",\n          xmlnsxlink: \"xmlnsXlink\",\n          \"xmlns:xlink\": \"xmlnsXlink\",\n          xmlspace: \"xmlSpace\",\n          y1: \"y1\",\n          y2: \"y2\",\n          y: \"y\",\n          ychannelselector: \"yChannelSelector\",\n          z: \"z\",\n          zoomandpan: \"zoomAndPan\"\n        };\n        var ariaProperties = {\n          \"aria-current\": 0,\n          // state\n          \"aria-description\": 0,\n          \"aria-details\": 0,\n          \"aria-disabled\": 0,\n          // state\n          \"aria-hidden\": 0,\n          // state\n          \"aria-invalid\": 0,\n          // state\n          \"aria-keyshortcuts\": 0,\n          \"aria-label\": 0,\n          \"aria-roledescription\": 0,\n          // Widget Attributes\n          \"aria-autocomplete\": 0,\n          \"aria-checked\": 0,\n          \"aria-expanded\": 0,\n          \"aria-haspopup\": 0,\n          \"aria-level\": 0,\n          \"aria-modal\": 0,\n          \"aria-multiline\": 0,\n          \"aria-multiselectable\": 0,\n          \"aria-orientation\": 0,\n          \"aria-placeholder\": 0,\n          \"aria-pressed\": 0,\n          \"aria-readonly\": 0,\n          \"aria-required\": 0,\n          \"aria-selected\": 0,\n          \"aria-sort\": 0,\n          \"aria-valuemax\": 0,\n          \"aria-valuemin\": 0,\n          \"aria-valuenow\": 0,\n          \"aria-valuetext\": 0,\n          // Live Region Attributes\n          \"aria-atomic\": 0,\n          \"aria-busy\": 0,\n          \"aria-live\": 0,\n          \"aria-relevant\": 0,\n          // Drag-and-Drop Attributes\n          \"aria-dropeffect\": 0,\n          \"aria-grabbed\": 0,\n          // Relationship Attributes\n          \"aria-activedescendant\": 0,\n          \"aria-colcount\": 0,\n          \"aria-colindex\": 0,\n          \"aria-colspan\": 0,\n          \"aria-controls\": 0,\n          \"aria-describedby\": 0,\n          \"aria-errormessage\": 0,\n          \"aria-flowto\": 0,\n          \"aria-labelledby\": 0,\n          \"aria-owns\": 0,\n          \"aria-posinset\": 0,\n          \"aria-rowcount\": 0,\n          \"aria-rowindex\": 0,\n          \"aria-rowspan\": 0,\n          \"aria-setsize\": 0\n        };\n        var warnedProperties = {};\n        var rARIA = new RegExp(\"^(aria)-[\" + ATTRIBUTE_NAME_CHAR + \"]*$\");\n        var rARIACamel = new RegExp(\"^(aria)[A-Z][\" + ATTRIBUTE_NAME_CHAR + \"]*$\");\n        function validateProperty(tagName, name) {\n          {\n            if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {\n              return true;\n            }\n            if (rARIACamel.test(name)) {\n              var ariaName = \"aria-\" + name.slice(4).toLowerCase();\n              var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null;\n              if (correctName == null) {\n                error(\"Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.\", name);\n                warnedProperties[name] = true;\n                return true;\n              }\n              if (name !== correctName) {\n                error(\"Invalid ARIA attribute `%s`. Did you mean `%s`?\", name, correctName);\n                warnedProperties[name] = true;\n                return true;\n              }\n            }\n            if (rARIA.test(name)) {\n              var lowerCasedName = name.toLowerCase();\n              var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null;\n              if (standardName == null) {\n                warnedProperties[name] = true;\n                return false;\n              }\n              if (name !== standardName) {\n                error(\"Unknown ARIA attribute `%s`. Did you mean `%s`?\", name, standardName);\n                warnedProperties[name] = true;\n                return true;\n              }\n            }\n          }\n          return true;\n        }\n        function warnInvalidARIAProps(type, props) {\n          {\n            var invalidProps = [];\n            for (var key in props) {\n              var isValid = validateProperty(type, key);\n              if (!isValid) {\n                invalidProps.push(key);\n              }\n            }\n            var unknownPropString = invalidProps.map(function(prop) {\n              return \"`\" + prop + \"`\";\n            }).join(\", \");\n            if (invalidProps.length === 1) {\n              error(\"Invalid aria prop %s on <%s> tag. For details, see https://reactjs.org/link/invalid-aria-props\", unknownPropString, type);\n            } else if (invalidProps.length > 1) {\n              error(\"Invalid aria props %s on <%s> tag. For details, see https://reactjs.org/link/invalid-aria-props\", unknownPropString, type);\n            }\n          }\n        }\n        function validateProperties(type, props) {\n          if (isCustomComponent(type, props)) {\n            return;\n          }\n          warnInvalidARIAProps(type, props);\n        }\n        var didWarnValueNull = false;\n        function validateProperties$1(type, props) {\n          {\n            if (type !== \"input\" && type !== \"textarea\" && type !== \"select\") {\n              return;\n            }\n            if (props != null && props.value === null && !didWarnValueNull) {\n              didWarnValueNull = true;\n              if (type === \"select\" && props.multiple) {\n                error(\"`value` prop on `%s` should not be null. Consider using an empty array when `multiple` is set to `true` to clear the component or `undefined` for uncontrolled components.\", type);\n              } else {\n                error(\"`value` prop on `%s` should not be null. Consider using an empty string to clear the component or `undefined` for uncontrolled components.\", type);\n              }\n            }\n          }\n        }\n        var validateProperty$1 = function() {\n        };\n        {\n          var warnedProperties$1 = {};\n          var EVENT_NAME_REGEX = /^on./;\n          var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;\n          var rARIA$1 = new RegExp(\"^(aria)-[\" + ATTRIBUTE_NAME_CHAR + \"]*$\");\n          var rARIACamel$1 = new RegExp(\"^(aria)[A-Z][\" + ATTRIBUTE_NAME_CHAR + \"]*$\");\n          validateProperty$1 = function(tagName, name, value, eventRegistry) {\n            if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n              return true;\n            }\n            var lowerCasedName = name.toLowerCase();\n            if (lowerCasedName === \"onfocusin\" || lowerCasedName === \"onfocusout\") {\n              error(\"React uses onFocus and onBlur instead of onFocusIn and onFocusOut. All React events are normalized to bubble, so onFocusIn and onFocusOut are not needed/supported by React.\");\n              warnedProperties$1[name] = true;\n              return true;\n            }\n            if (eventRegistry != null) {\n              var registrationNameDependencies2 = eventRegistry.registrationNameDependencies, possibleRegistrationNames2 = eventRegistry.possibleRegistrationNames;\n              if (registrationNameDependencies2.hasOwnProperty(name)) {\n                return true;\n              }\n              var registrationName = possibleRegistrationNames2.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames2[lowerCasedName] : null;\n              if (registrationName != null) {\n                error(\"Invalid event handler property `%s`. Did you mean `%s`?\", name, registrationName);\n                warnedProperties$1[name] = true;\n                return true;\n              }\n              if (EVENT_NAME_REGEX.test(name)) {\n                error(\"Unknown event handler property `%s`. It will be ignored.\", name);\n                warnedProperties$1[name] = true;\n                return true;\n              }\n            } else if (EVENT_NAME_REGEX.test(name)) {\n              if (INVALID_EVENT_NAME_REGEX.test(name)) {\n                error(\"Invalid event handler property `%s`. React events use the camelCase naming convention, for example `onClick`.\", name);\n              }\n              warnedProperties$1[name] = true;\n              return true;\n            }\n            if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n              return true;\n            }\n            if (lowerCasedName === \"innerhtml\") {\n              error(\"Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`.\");\n              warnedProperties$1[name] = true;\n              return true;\n            }\n            if (lowerCasedName === \"aria\") {\n              error(\"The `aria` attribute is reserved for future use in React. Pass individual `aria-` attributes instead.\");\n              warnedProperties$1[name] = true;\n              return true;\n            }\n            if (lowerCasedName === \"is\" && value !== null && value !== void 0 && typeof value !== \"string\") {\n              error(\"Received a `%s` for a string attribute `is`. If this is expected, cast the value to a string.\", typeof value);\n              warnedProperties$1[name] = true;\n              return true;\n            }\n            if (typeof value === \"number\" && isNaN(value)) {\n              error(\"Received NaN for the `%s` attribute. If this is expected, cast the value to a string.\", name);\n              warnedProperties$1[name] = true;\n              return true;\n            }\n            var propertyInfo = getPropertyInfo(name);\n            var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED;\n            if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n              var standardName = possibleStandardNames[lowerCasedName];\n              if (standardName !== name) {\n                error(\"Invalid DOM property `%s`. Did you mean `%s`?\", name, standardName);\n                warnedProperties$1[name] = true;\n                return true;\n              }\n            } else if (!isReserved && name !== lowerCasedName) {\n              error(\"React does not recognize the `%s` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `%s` instead. If you accidentally passed it from a parent component, remove it from the DOM element.\", name, lowerCasedName);\n              warnedProperties$1[name] = true;\n              return true;\n            }\n            if (typeof value === \"boolean\" && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n              if (value) {\n                error('Received `%s` for a non-boolean attribute `%s`.\\n\\nIf you want to write it to the DOM, pass a string instead: %s=\"%s\" or %s={value.toString()}.', value, name, name, value, name);\n              } else {\n                error('Received `%s` for a non-boolean attribute `%s`.\\n\\nIf you want to write it to the DOM, pass a string instead: %s=\"%s\" or %s={value.toString()}.\\n\\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);\n              }\n              warnedProperties$1[name] = true;\n              return true;\n            }\n            if (isReserved) {\n              return true;\n            }\n            if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n              warnedProperties$1[name] = true;\n              return false;\n            }\n            if ((value === \"false\" || value === \"true\") && propertyInfo !== null && propertyInfo.type === BOOLEAN) {\n              error(\"Received the string `%s` for the boolean attribute `%s`. %s Did you mean %s={%s}?\", value, name, value === \"false\" ? \"The browser will interpret it as a truthy value.\" : 'Although this works, it will not work as expected if you pass the string \"false\".', name, value);\n              warnedProperties$1[name] = true;\n              return true;\n            }\n            return true;\n          };\n        }\n        var warnUnknownProperties = function(type, props, eventRegistry) {\n          {\n            var unknownProps = [];\n            for (var key in props) {\n              var isValid = validateProperty$1(type, key, props[key], eventRegistry);\n              if (!isValid) {\n                unknownProps.push(key);\n              }\n            }\n            var unknownPropString = unknownProps.map(function(prop) {\n              return \"`\" + prop + \"`\";\n            }).join(\", \");\n            if (unknownProps.length === 1) {\n              error(\"Invalid value for prop %s on <%s> tag. Either remove it from the element, or pass a string or number value to keep it in the DOM. For details, see https://reactjs.org/link/attribute-behavior \", unknownPropString, type);\n            } else if (unknownProps.length > 1) {\n              error(\"Invalid values for props %s on <%s> tag. Either remove them from the element, or pass a string or number value to keep them in the DOM. For details, see https://reactjs.org/link/attribute-behavior \", unknownPropString, type);\n            }\n          }\n        };\n        function validateProperties$2(type, props, eventRegistry) {\n          if (isCustomComponent(type, props)) {\n            return;\n          }\n          warnUnknownProperties(type, props, eventRegistry);\n        }\n        var IS_EVENT_HANDLE_NON_MANAGED_NODE = 1;\n        var IS_NON_DELEGATED = 1 << 1;\n        var IS_CAPTURE_PHASE = 1 << 2;\n        var SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS = IS_EVENT_HANDLE_NON_MANAGED_NODE | IS_NON_DELEGATED | IS_CAPTURE_PHASE;\n        var currentReplayingEvent = null;\n        function setReplayingEvent(event) {\n          {\n            if (currentReplayingEvent !== null) {\n              error(\"Expected currently replaying event to be null. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n          }\n          currentReplayingEvent = event;\n        }\n        function resetReplayingEvent() {\n          {\n            if (currentReplayingEvent === null) {\n              error(\"Expected currently replaying event to not be null. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n          }\n          currentReplayingEvent = null;\n        }\n        function isReplayingEvent(event) {\n          return event === currentReplayingEvent;\n        }\n        function getEventTarget(nativeEvent) {\n          var target = nativeEvent.target || nativeEvent.srcElement || window;\n          if (target.correspondingUseElement) {\n            target = target.correspondingUseElement;\n          }\n          return target.nodeType === TEXT_NODE ? target.parentNode : target;\n        }\n        var restoreImpl = null;\n        var restoreTarget = null;\n        var restoreQueue = null;\n        function restoreStateOfTarget(target) {\n          var internalInstance = getInstanceFromNode(target);\n          if (!internalInstance) {\n            return;\n          }\n          if (typeof restoreImpl !== \"function\") {\n            throw new Error(\"setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          var stateNode = internalInstance.stateNode;\n          if (stateNode) {\n            var _props = getFiberCurrentPropsFromNode(stateNode);\n            restoreImpl(internalInstance.stateNode, internalInstance.type, _props);\n          }\n        }\n        function setRestoreImplementation(impl) {\n          restoreImpl = impl;\n        }\n        function enqueueStateRestore(target) {\n          if (restoreTarget) {\n            if (restoreQueue) {\n              restoreQueue.push(target);\n            } else {\n              restoreQueue = [target];\n            }\n          } else {\n            restoreTarget = target;\n          }\n        }\n        function needsStateRestore() {\n          return restoreTarget !== null || restoreQueue !== null;\n        }\n        function restoreStateIfNeeded() {\n          if (!restoreTarget) {\n            return;\n          }\n          var target = restoreTarget;\n          var queuedTargets = restoreQueue;\n          restoreTarget = null;\n          restoreQueue = null;\n          restoreStateOfTarget(target);\n          if (queuedTargets) {\n            for (var i = 0; i < queuedTargets.length; i++) {\n              restoreStateOfTarget(queuedTargets[i]);\n            }\n          }\n        }\n        var batchedUpdatesImpl = function(fn, bookkeeping) {\n          return fn(bookkeeping);\n        };\n        var flushSyncImpl = function() {\n        };\n        var isInsideEventHandler = false;\n        function finishEventHandler() {\n          var controlledComponentsHavePendingUpdates = needsStateRestore();\n          if (controlledComponentsHavePendingUpdates) {\n            flushSyncImpl();\n            restoreStateIfNeeded();\n          }\n        }\n        function batchedUpdates(fn, a, b) {\n          if (isInsideEventHandler) {\n            return fn(a, b);\n          }\n          isInsideEventHandler = true;\n          try {\n            return batchedUpdatesImpl(fn, a, b);\n          } finally {\n            isInsideEventHandler = false;\n            finishEventHandler();\n          }\n        }\n        function setBatchingImplementation(_batchedUpdatesImpl, _discreteUpdatesImpl, _flushSyncImpl) {\n          batchedUpdatesImpl = _batchedUpdatesImpl;\n          flushSyncImpl = _flushSyncImpl;\n        }\n        function isInteractive(tag) {\n          return tag === \"button\" || tag === \"input\" || tag === \"select\" || tag === \"textarea\";\n        }\n        function shouldPreventMouseEvent(name, type, props) {\n          switch (name) {\n            case \"onClick\":\n            case \"onClickCapture\":\n            case \"onDoubleClick\":\n            case \"onDoubleClickCapture\":\n            case \"onMouseDown\":\n            case \"onMouseDownCapture\":\n            case \"onMouseMove\":\n            case \"onMouseMoveCapture\":\n            case \"onMouseUp\":\n            case \"onMouseUpCapture\":\n            case \"onMouseEnter\":\n              return !!(props.disabled && isInteractive(type));\n            default:\n              return false;\n          }\n        }\n        function getListener(inst, registrationName) {\n          var stateNode = inst.stateNode;\n          if (stateNode === null) {\n            return null;\n          }\n          var props = getFiberCurrentPropsFromNode(stateNode);\n          if (props === null) {\n            return null;\n          }\n          var listener = props[registrationName];\n          if (shouldPreventMouseEvent(registrationName, inst.type, props)) {\n            return null;\n          }\n          if (listener && typeof listener !== \"function\") {\n            throw new Error(\"Expected `\" + registrationName + \"` listener to be a function, instead got a value of `\" + typeof listener + \"` type.\");\n          }\n          return listener;\n        }\n        var passiveBrowserEventsSupported = false;\n        if (canUseDOM) {\n          try {\n            var options = {};\n            Object.defineProperty(options, \"passive\", {\n              get: function() {\n                passiveBrowserEventsSupported = true;\n              }\n            });\n            window.addEventListener(\"test\", options, options);\n            window.removeEventListener(\"test\", options, options);\n          } catch (e) {\n            passiveBrowserEventsSupported = false;\n          }\n        }\n        function invokeGuardedCallbackProd(name, func, context, a, b, c, d, e, f) {\n          var funcArgs = Array.prototype.slice.call(arguments, 3);\n          try {\n            func.apply(context, funcArgs);\n          } catch (error2) {\n            this.onError(error2);\n          }\n        }\n        var invokeGuardedCallbackImpl = invokeGuardedCallbackProd;\n        {\n          if (typeof window !== \"undefined\" && typeof window.dispatchEvent === \"function\" && typeof document !== \"undefined\" && typeof document.createEvent === \"function\") {\n            var fakeNode = document.createElement(\"react\");\n            invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context, a, b, c, d, e, f) {\n              if (typeof document === \"undefined\" || document === null) {\n                throw new Error(\"The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous.\");\n              }\n              var evt = document.createEvent(\"Event\");\n              var didCall = false;\n              var didError = true;\n              var windowEvent = window.event;\n              var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, \"event\");\n              function restoreAfterDispatch() {\n                fakeNode.removeEventListener(evtType, callCallback2, false);\n                if (typeof window.event !== \"undefined\" && window.hasOwnProperty(\"event\")) {\n                  window.event = windowEvent;\n                }\n              }\n              var funcArgs = Array.prototype.slice.call(arguments, 3);\n              function callCallback2() {\n                didCall = true;\n                restoreAfterDispatch();\n                func.apply(context, funcArgs);\n                didError = false;\n              }\n              var error2;\n              var didSetError = false;\n              var isCrossOriginError = false;\n              function handleWindowError(event) {\n                error2 = event.error;\n                didSetError = true;\n                if (error2 === null && event.colno === 0 && event.lineno === 0) {\n                  isCrossOriginError = true;\n                }\n                if (event.defaultPrevented) {\n                  if (error2 != null && typeof error2 === \"object\") {\n                    try {\n                      error2._suppressLogging = true;\n                    } catch (inner) {\n                    }\n                  }\n                }\n              }\n              var evtType = \"react-\" + (name ? name : \"invokeguardedcallback\");\n              window.addEventListener(\"error\", handleWindowError);\n              fakeNode.addEventListener(evtType, callCallback2, false);\n              evt.initEvent(evtType, false, false);\n              fakeNode.dispatchEvent(evt);\n              if (windowEventDescriptor) {\n                Object.defineProperty(window, \"event\", windowEventDescriptor);\n              }\n              if (didCall && didError) {\n                if (!didSetError) {\n                  error2 = new Error(`An error was thrown inside one of your components, but React doesn't know what it was. This is likely due to browser flakiness. React does its best to preserve the \"Pause on exceptions\" behavior of the DevTools, which requires some DEV-mode only tricks. It's possible that these don't work in your browser. Try triggering the error in production mode, or switching to a modern browser. If you suspect that this is actually an issue with React, please file an issue.`);\n                } else if (isCrossOriginError) {\n                  error2 = new Error(\"A cross-origin error was thrown. React doesn't have access to the actual error object in development. See https://reactjs.org/link/crossorigin-error for more information.\");\n                }\n                this.onError(error2);\n              }\n              window.removeEventListener(\"error\", handleWindowError);\n              if (!didCall) {\n                restoreAfterDispatch();\n                return invokeGuardedCallbackProd.apply(this, arguments);\n              }\n            };\n          }\n        }\n        var invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl;\n        var hasError = false;\n        var caughtError = null;\n        var hasRethrowError = false;\n        var rethrowError = null;\n        var reporter = {\n          onError: function(error2) {\n            hasError = true;\n            caughtError = error2;\n          }\n        };\n        function invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n          hasError = false;\n          caughtError = null;\n          invokeGuardedCallbackImpl$1.apply(reporter, arguments);\n        }\n        function invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) {\n          invokeGuardedCallback.apply(this, arguments);\n          if (hasError) {\n            var error2 = clearCaughtError();\n            if (!hasRethrowError) {\n              hasRethrowError = true;\n              rethrowError = error2;\n            }\n          }\n        }\n        function rethrowCaughtError() {\n          if (hasRethrowError) {\n            var error2 = rethrowError;\n            hasRethrowError = false;\n            rethrowError = null;\n            throw error2;\n          }\n        }\n        function hasCaughtError() {\n          return hasError;\n        }\n        function clearCaughtError() {\n          if (hasError) {\n            var error2 = caughtError;\n            hasError = false;\n            caughtError = null;\n            return error2;\n          } else {\n            throw new Error(\"clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n        }\n        function get(key) {\n          return key._reactInternals;\n        }\n        function has(key) {\n          return key._reactInternals !== void 0;\n        }\n        function set(key, value) {\n          key._reactInternals = value;\n        }\n        var NoFlags = (\n          /*                      */\n          0\n        );\n        var PerformedWork = (\n          /*                */\n          1\n        );\n        var Placement = (\n          /*                    */\n          2\n        );\n        var Update = (\n          /*                       */\n          4\n        );\n        var ChildDeletion = (\n          /*                */\n          16\n        );\n        var ContentReset = (\n          /*                 */\n          32\n        );\n        var Callback = (\n          /*                     */\n          64\n        );\n        var DidCapture = (\n          /*                   */\n          128\n        );\n        var ForceClientRender = (\n          /*            */\n          256\n        );\n        var Ref = (\n          /*                          */\n          512\n        );\n        var Snapshot = (\n          /*                     */\n          1024\n        );\n        var Passive = (\n          /*                      */\n          2048\n        );\n        var Hydrating = (\n          /*                    */\n          4096\n        );\n        var Visibility = (\n          /*                   */\n          8192\n        );\n        var StoreConsistency = (\n          /*             */\n          16384\n        );\n        var LifecycleEffectMask = Passive | Update | Callback | Ref | Snapshot | StoreConsistency;\n        var HostEffectMask = (\n          /*               */\n          32767\n        );\n        var Incomplete = (\n          /*                   */\n          32768\n        );\n        var ShouldCapture = (\n          /*                */\n          65536\n        );\n        var ForceUpdateForLegacySuspense = (\n          /* */\n          131072\n        );\n        var Forked = (\n          /*                       */\n          1048576\n        );\n        var RefStatic = (\n          /*                    */\n          2097152\n        );\n        var LayoutStatic = (\n          /*                 */\n          4194304\n        );\n        var PassiveStatic = (\n          /*                */\n          8388608\n        );\n        var MountLayoutDev = (\n          /*               */\n          16777216\n        );\n        var MountPassiveDev = (\n          /*              */\n          33554432\n        );\n        var BeforeMutationMask = (\n          // TODO: Remove Update flag from before mutation phase by re-landing Visibility\n          // flag logic (see #20043)\n          Update | Snapshot | 0\n        );\n        var MutationMask = Placement | Update | ChildDeletion | ContentReset | Ref | Hydrating | Visibility;\n        var LayoutMask = Update | Callback | Ref | Visibility;\n        var PassiveMask = Passive | ChildDeletion;\n        var StaticMask = LayoutStatic | PassiveStatic | RefStatic;\n        var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\n        function getNearestMountedFiber(fiber) {\n          var node = fiber;\n          var nearestMounted = fiber;\n          if (!fiber.alternate) {\n            var nextNode = node;\n            do {\n              node = nextNode;\n              if ((node.flags & (Placement | Hydrating)) !== NoFlags) {\n                nearestMounted = node.return;\n              }\n              nextNode = node.return;\n            } while (nextNode);\n          } else {\n            while (node.return) {\n              node = node.return;\n            }\n          }\n          if (node.tag === HostRoot) {\n            return nearestMounted;\n          }\n          return null;\n        }\n        function getSuspenseInstanceFromFiber(fiber) {\n          if (fiber.tag === SuspenseComponent) {\n            var suspenseState = fiber.memoizedState;\n            if (suspenseState === null) {\n              var current2 = fiber.alternate;\n              if (current2 !== null) {\n                suspenseState = current2.memoizedState;\n              }\n            }\n            if (suspenseState !== null) {\n              return suspenseState.dehydrated;\n            }\n          }\n          return null;\n        }\n        function getContainerFromFiber(fiber) {\n          return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null;\n        }\n        function isFiberMounted(fiber) {\n          return getNearestMountedFiber(fiber) === fiber;\n        }\n        function isMounted(component) {\n          {\n            var owner = ReactCurrentOwner.current;\n            if (owner !== null && owner.tag === ClassComponent) {\n              var ownerFiber = owner;\n              var instance = ownerFiber.stateNode;\n              if (!instance._warnedAboutRefsInRender) {\n                error(\"%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.\", getComponentNameFromFiber(ownerFiber) || \"A component\");\n              }\n              instance._warnedAboutRefsInRender = true;\n            }\n          }\n          var fiber = get(component);\n          if (!fiber) {\n            return false;\n          }\n          return getNearestMountedFiber(fiber) === fiber;\n        }\n        function assertIsMounted(fiber) {\n          if (getNearestMountedFiber(fiber) !== fiber) {\n            throw new Error(\"Unable to find node on an unmounted component.\");\n          }\n        }\n        function findCurrentFiberUsingSlowPath(fiber) {\n          var alternate = fiber.alternate;\n          if (!alternate) {\n            var nearestMounted = getNearestMountedFiber(fiber);\n            if (nearestMounted === null) {\n              throw new Error(\"Unable to find node on an unmounted component.\");\n            }\n            if (nearestMounted !== fiber) {\n              return null;\n            }\n            return fiber;\n          }\n          var a = fiber;\n          var b = alternate;\n          while (true) {\n            var parentA = a.return;\n            if (parentA === null) {\n              break;\n            }\n            var parentB = parentA.alternate;\n            if (parentB === null) {\n              var nextParent = parentA.return;\n              if (nextParent !== null) {\n                a = b = nextParent;\n                continue;\n              }\n              break;\n            }\n            if (parentA.child === parentB.child) {\n              var child = parentA.child;\n              while (child) {\n                if (child === a) {\n                  assertIsMounted(parentA);\n                  return fiber;\n                }\n                if (child === b) {\n                  assertIsMounted(parentA);\n                  return alternate;\n                }\n                child = child.sibling;\n              }\n              throw new Error(\"Unable to find node on an unmounted component.\");\n            }\n            if (a.return !== b.return) {\n              a = parentA;\n              b = parentB;\n            } else {\n              var didFindChild = false;\n              var _child = parentA.child;\n              while (_child) {\n                if (_child === a) {\n                  didFindChild = true;\n                  a = parentA;\n                  b = parentB;\n                  break;\n                }\n                if (_child === b) {\n                  didFindChild = true;\n                  b = parentA;\n                  a = parentB;\n                  break;\n                }\n                _child = _child.sibling;\n              }\n              if (!didFindChild) {\n                _child = parentB.child;\n                while (_child) {\n                  if (_child === a) {\n                    didFindChild = true;\n                    a = parentB;\n                    b = parentA;\n                    break;\n                  }\n                  if (_child === b) {\n                    didFindChild = true;\n                    b = parentB;\n                    a = parentA;\n                    break;\n                  }\n                  _child = _child.sibling;\n                }\n                if (!didFindChild) {\n                  throw new Error(\"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\");\n                }\n              }\n            }\n            if (a.alternate !== b) {\n              throw new Error(\"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n          }\n          if (a.tag !== HostRoot) {\n            throw new Error(\"Unable to find node on an unmounted component.\");\n          }\n          if (a.stateNode.current === a) {\n            return fiber;\n          }\n          return alternate;\n        }\n        function findCurrentHostFiber(parent) {\n          var currentParent = findCurrentFiberUsingSlowPath(parent);\n          return currentParent !== null ? findCurrentHostFiberImpl(currentParent) : null;\n        }\n        function findCurrentHostFiberImpl(node) {\n          if (node.tag === HostComponent || node.tag === HostText) {\n            return node;\n          }\n          var child = node.child;\n          while (child !== null) {\n            var match = findCurrentHostFiberImpl(child);\n            if (match !== null) {\n              return match;\n            }\n            child = child.sibling;\n          }\n          return null;\n        }\n        function findCurrentHostFiberWithNoPortals(parent) {\n          var currentParent = findCurrentFiberUsingSlowPath(parent);\n          return currentParent !== null ? findCurrentHostFiberWithNoPortalsImpl(currentParent) : null;\n        }\n        function findCurrentHostFiberWithNoPortalsImpl(node) {\n          if (node.tag === HostComponent || node.tag === HostText) {\n            return node;\n          }\n          var child = node.child;\n          while (child !== null) {\n            if (child.tag !== HostPortal) {\n              var match = findCurrentHostFiberWithNoPortalsImpl(child);\n              if (match !== null) {\n                return match;\n              }\n            }\n            child = child.sibling;\n          }\n          return null;\n        }\n        var scheduleCallback = Scheduler.unstable_scheduleCallback;\n        var cancelCallback = Scheduler.unstable_cancelCallback;\n        var shouldYield = Scheduler.unstable_shouldYield;\n        var requestPaint = Scheduler.unstable_requestPaint;\n        var now = Scheduler.unstable_now;\n        var getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel;\n        var ImmediatePriority = Scheduler.unstable_ImmediatePriority;\n        var UserBlockingPriority = Scheduler.unstable_UserBlockingPriority;\n        var NormalPriority = Scheduler.unstable_NormalPriority;\n        var LowPriority = Scheduler.unstable_LowPriority;\n        var IdlePriority = Scheduler.unstable_IdlePriority;\n        var unstable_yieldValue = Scheduler.unstable_yieldValue;\n        var unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue;\n        var rendererID = null;\n        var injectedHook = null;\n        var injectedProfilingHooks = null;\n        var hasLoggedError = false;\n        var isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\";\n        function injectInternals(internals) {\n          if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === \"undefined\") {\n            return false;\n          }\n          var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n          if (hook.isDisabled) {\n            return true;\n          }\n          if (!hook.supportsFiber) {\n            {\n              error(\"The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://reactjs.org/link/react-devtools\");\n            }\n            return true;\n          }\n          try {\n            if (enableSchedulingProfiler) {\n              internals = assign({}, internals, {\n                getLaneLabelMap,\n                injectProfilingHooks\n              });\n            }\n            rendererID = hook.inject(internals);\n            injectedHook = hook;\n          } catch (err) {\n            {\n              error(\"React instrumentation encountered an error: %s.\", err);\n            }\n          }\n          if (hook.checkDCE) {\n            return true;\n          } else {\n            return false;\n          }\n        }\n        function onScheduleRoot(root2, children) {\n          {\n            if (injectedHook && typeof injectedHook.onScheduleFiberRoot === \"function\") {\n              try {\n                injectedHook.onScheduleFiberRoot(rendererID, root2, children);\n              } catch (err) {\n                if (!hasLoggedError) {\n                  hasLoggedError = true;\n                  error(\"React instrumentation encountered an error: %s\", err);\n                }\n              }\n            }\n          }\n        }\n        function onCommitRoot(root2, eventPriority) {\n          if (injectedHook && typeof injectedHook.onCommitFiberRoot === \"function\") {\n            try {\n              var didError = (root2.current.flags & DidCapture) === DidCapture;\n              if (enableProfilerTimer) {\n                var schedulerPriority;\n                switch (eventPriority) {\n                  case DiscreteEventPriority:\n                    schedulerPriority = ImmediatePriority;\n                    break;\n                  case ContinuousEventPriority:\n                    schedulerPriority = UserBlockingPriority;\n                    break;\n                  case DefaultEventPriority:\n                    schedulerPriority = NormalPriority;\n                    break;\n                  case IdleEventPriority:\n                    schedulerPriority = IdlePriority;\n                    break;\n                  default:\n                    schedulerPriority = NormalPriority;\n                    break;\n                }\n                injectedHook.onCommitFiberRoot(rendererID, root2, schedulerPriority, didError);\n              } else {\n                injectedHook.onCommitFiberRoot(rendererID, root2, void 0, didError);\n              }\n            } catch (err) {\n              {\n                if (!hasLoggedError) {\n                  hasLoggedError = true;\n                  error(\"React instrumentation encountered an error: %s\", err);\n                }\n              }\n            }\n          }\n        }\n        function onPostCommitRoot(root2) {\n          if (injectedHook && typeof injectedHook.onPostCommitFiberRoot === \"function\") {\n            try {\n              injectedHook.onPostCommitFiberRoot(rendererID, root2);\n            } catch (err) {\n              {\n                if (!hasLoggedError) {\n                  hasLoggedError = true;\n                  error(\"React instrumentation encountered an error: %s\", err);\n                }\n              }\n            }\n          }\n        }\n        function onCommitUnmount(fiber) {\n          if (injectedHook && typeof injectedHook.onCommitFiberUnmount === \"function\") {\n            try {\n              injectedHook.onCommitFiberUnmount(rendererID, fiber);\n            } catch (err) {\n              {\n                if (!hasLoggedError) {\n                  hasLoggedError = true;\n                  error(\"React instrumentation encountered an error: %s\", err);\n                }\n              }\n            }\n          }\n        }\n        function setIsStrictModeForDevtools(newIsStrictMode) {\n          {\n            if (typeof unstable_yieldValue === \"function\") {\n              unstable_setDisableYieldValue(newIsStrictMode);\n              setSuppressWarning(newIsStrictMode);\n            }\n            if (injectedHook && typeof injectedHook.setStrictMode === \"function\") {\n              try {\n                injectedHook.setStrictMode(rendererID, newIsStrictMode);\n              } catch (err) {\n                {\n                  if (!hasLoggedError) {\n                    hasLoggedError = true;\n                    error(\"React instrumentation encountered an error: %s\", err);\n                  }\n                }\n              }\n            }\n          }\n        }\n        function injectProfilingHooks(profilingHooks) {\n          injectedProfilingHooks = profilingHooks;\n        }\n        function getLaneLabelMap() {\n          {\n            var map = /* @__PURE__ */ new Map();\n            var lane = 1;\n            for (var index2 = 0; index2 < TotalLanes; index2++) {\n              var label = getLabelForLane(lane);\n              map.set(lane, label);\n              lane *= 2;\n            }\n            return map;\n          }\n        }\n        function markCommitStarted(lanes) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStarted === \"function\") {\n              injectedProfilingHooks.markCommitStarted(lanes);\n            }\n          }\n        }\n        function markCommitStopped() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStopped === \"function\") {\n              injectedProfilingHooks.markCommitStopped();\n            }\n          }\n        }\n        function markComponentRenderStarted(fiber) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStarted === \"function\") {\n              injectedProfilingHooks.markComponentRenderStarted(fiber);\n            }\n          }\n        }\n        function markComponentRenderStopped() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStopped === \"function\") {\n              injectedProfilingHooks.markComponentRenderStopped();\n            }\n          }\n        }\n        function markComponentPassiveEffectMountStarted(fiber) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStarted === \"function\") {\n              injectedProfilingHooks.markComponentPassiveEffectMountStarted(fiber);\n            }\n          }\n        }\n        function markComponentPassiveEffectMountStopped() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStopped === \"function\") {\n              injectedProfilingHooks.markComponentPassiveEffectMountStopped();\n            }\n          }\n        }\n        function markComponentPassiveEffectUnmountStarted(fiber) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStarted === \"function\") {\n              injectedProfilingHooks.markComponentPassiveEffectUnmountStarted(fiber);\n            }\n          }\n        }\n        function markComponentPassiveEffectUnmountStopped() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStopped === \"function\") {\n              injectedProfilingHooks.markComponentPassiveEffectUnmountStopped();\n            }\n          }\n        }\n        function markComponentLayoutEffectMountStarted(fiber) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStarted === \"function\") {\n              injectedProfilingHooks.markComponentLayoutEffectMountStarted(fiber);\n            }\n          }\n        }\n        function markComponentLayoutEffectMountStopped() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStopped === \"function\") {\n              injectedProfilingHooks.markComponentLayoutEffectMountStopped();\n            }\n          }\n        }\n        function markComponentLayoutEffectUnmountStarted(fiber) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStarted === \"function\") {\n              injectedProfilingHooks.markComponentLayoutEffectUnmountStarted(fiber);\n            }\n          }\n        }\n        function markComponentLayoutEffectUnmountStopped() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStopped === \"function\") {\n              injectedProfilingHooks.markComponentLayoutEffectUnmountStopped();\n            }\n          }\n        }\n        function markComponentErrored(fiber, thrownValue, lanes) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentErrored === \"function\") {\n              injectedProfilingHooks.markComponentErrored(fiber, thrownValue, lanes);\n            }\n          }\n        }\n        function markComponentSuspended(fiber, wakeable, lanes) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentSuspended === \"function\") {\n              injectedProfilingHooks.markComponentSuspended(fiber, wakeable, lanes);\n            }\n          }\n        }\n        function markLayoutEffectsStarted(lanes) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStarted === \"function\") {\n              injectedProfilingHooks.markLayoutEffectsStarted(lanes);\n            }\n          }\n        }\n        function markLayoutEffectsStopped() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStopped === \"function\") {\n              injectedProfilingHooks.markLayoutEffectsStopped();\n            }\n          }\n        }\n        function markPassiveEffectsStarted(lanes) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStarted === \"function\") {\n              injectedProfilingHooks.markPassiveEffectsStarted(lanes);\n            }\n          }\n        }\n        function markPassiveEffectsStopped() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStopped === \"function\") {\n              injectedProfilingHooks.markPassiveEffectsStopped();\n            }\n          }\n        }\n        function markRenderStarted(lanes) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStarted === \"function\") {\n              injectedProfilingHooks.markRenderStarted(lanes);\n            }\n          }\n        }\n        function markRenderYielded() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderYielded === \"function\") {\n              injectedProfilingHooks.markRenderYielded();\n            }\n          }\n        }\n        function markRenderStopped() {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStopped === \"function\") {\n              injectedProfilingHooks.markRenderStopped();\n            }\n          }\n        }\n        function markRenderScheduled(lane) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderScheduled === \"function\") {\n              injectedProfilingHooks.markRenderScheduled(lane);\n            }\n          }\n        }\n        function markForceUpdateScheduled(fiber, lane) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markForceUpdateScheduled === \"function\") {\n              injectedProfilingHooks.markForceUpdateScheduled(fiber, lane);\n            }\n          }\n        }\n        function markStateUpdateScheduled(fiber, lane) {\n          {\n            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markStateUpdateScheduled === \"function\") {\n              injectedProfilingHooks.markStateUpdateScheduled(fiber, lane);\n            }\n          }\n        }\n        var NoMode = (\n          /*                         */\n          0\n        );\n        var ConcurrentMode = (\n          /*                 */\n          1\n        );\n        var ProfileMode = (\n          /*                    */\n          2\n        );\n        var StrictLegacyMode = (\n          /*               */\n          8\n        );\n        var StrictEffectsMode = (\n          /*              */\n          16\n        );\n        var clz32 = Math.clz32 ? Math.clz32 : clz32Fallback;\n        var log = Math.log;\n        var LN2 = Math.LN2;\n        function clz32Fallback(x) {\n          var asUint = x >>> 0;\n          if (asUint === 0) {\n            return 32;\n          }\n          return 31 - (log(asUint) / LN2 | 0) | 0;\n        }\n        var TotalLanes = 31;\n        var NoLanes = (\n          /*                        */\n          0\n        );\n        var NoLane = (\n          /*                          */\n          0\n        );\n        var SyncLane = (\n          /*                        */\n          1\n        );\n        var InputContinuousHydrationLane = (\n          /*    */\n          2\n        );\n        var InputContinuousLane = (\n          /*             */\n          4\n        );\n        var DefaultHydrationLane = (\n          /*            */\n          8\n        );\n        var DefaultLane = (\n          /*                     */\n          16\n        );\n        var TransitionHydrationLane = (\n          /*                */\n          32\n        );\n        var TransitionLanes = (\n          /*                       */\n          4194240\n        );\n        var TransitionLane1 = (\n          /*                        */\n          64\n        );\n        var TransitionLane2 = (\n          /*                        */\n          128\n        );\n        var TransitionLane3 = (\n          /*                        */\n          256\n        );\n        var TransitionLane4 = (\n          /*                        */\n          512\n        );\n        var TransitionLane5 = (\n          /*                        */\n          1024\n        );\n        var TransitionLane6 = (\n          /*                        */\n          2048\n        );\n        var TransitionLane7 = (\n          /*                        */\n          4096\n        );\n        var TransitionLane8 = (\n          /*                        */\n          8192\n        );\n        var TransitionLane9 = (\n          /*                        */\n          16384\n        );\n        var TransitionLane10 = (\n          /*                       */\n          32768\n        );\n        var TransitionLane11 = (\n          /*                       */\n          65536\n        );\n        var TransitionLane12 = (\n          /*                       */\n          131072\n        );\n        var TransitionLane13 = (\n          /*                       */\n          262144\n        );\n        var TransitionLane14 = (\n          /*                       */\n          524288\n        );\n        var TransitionLane15 = (\n          /*                       */\n          1048576\n        );\n        var TransitionLane16 = (\n          /*                       */\n          2097152\n        );\n        var RetryLanes = (\n          /*                            */\n          130023424\n        );\n        var RetryLane1 = (\n          /*                             */\n          4194304\n        );\n        var RetryLane2 = (\n          /*                             */\n          8388608\n        );\n        var RetryLane3 = (\n          /*                             */\n          16777216\n        );\n        var RetryLane4 = (\n          /*                             */\n          33554432\n        );\n        var RetryLane5 = (\n          /*                             */\n          67108864\n        );\n        var SomeRetryLane = RetryLane1;\n        var SelectiveHydrationLane = (\n          /*          */\n          134217728\n        );\n        var NonIdleLanes = (\n          /*                          */\n          268435455\n        );\n        var IdleHydrationLane = (\n          /*               */\n          268435456\n        );\n        var IdleLane = (\n          /*                        */\n          536870912\n        );\n        var OffscreenLane = (\n          /*                   */\n          1073741824\n        );\n        function getLabelForLane(lane) {\n          {\n            if (lane & SyncLane) {\n              return \"Sync\";\n            }\n            if (lane & InputContinuousHydrationLane) {\n              return \"InputContinuousHydration\";\n            }\n            if (lane & InputContinuousLane) {\n              return \"InputContinuous\";\n            }\n            if (lane & DefaultHydrationLane) {\n              return \"DefaultHydration\";\n            }\n            if (lane & DefaultLane) {\n              return \"Default\";\n            }\n            if (lane & TransitionHydrationLane) {\n              return \"TransitionHydration\";\n            }\n            if (lane & TransitionLanes) {\n              return \"Transition\";\n            }\n            if (lane & RetryLanes) {\n              return \"Retry\";\n            }\n            if (lane & SelectiveHydrationLane) {\n              return \"SelectiveHydration\";\n            }\n            if (lane & IdleHydrationLane) {\n              return \"IdleHydration\";\n            }\n            if (lane & IdleLane) {\n              return \"Idle\";\n            }\n            if (lane & OffscreenLane) {\n              return \"Offscreen\";\n            }\n          }\n        }\n        var NoTimestamp = -1;\n        var nextTransitionLane = TransitionLane1;\n        var nextRetryLane = RetryLane1;\n        function getHighestPriorityLanes(lanes) {\n          switch (getHighestPriorityLane(lanes)) {\n            case SyncLane:\n              return SyncLane;\n            case InputContinuousHydrationLane:\n              return InputContinuousHydrationLane;\n            case InputContinuousLane:\n              return InputContinuousLane;\n            case DefaultHydrationLane:\n              return DefaultHydrationLane;\n            case DefaultLane:\n              return DefaultLane;\n            case TransitionHydrationLane:\n              return TransitionHydrationLane;\n            case TransitionLane1:\n            case TransitionLane2:\n            case TransitionLane3:\n            case TransitionLane4:\n            case TransitionLane5:\n            case TransitionLane6:\n            case TransitionLane7:\n            case TransitionLane8:\n            case TransitionLane9:\n            case TransitionLane10:\n            case TransitionLane11:\n            case TransitionLane12:\n            case TransitionLane13:\n            case TransitionLane14:\n            case TransitionLane15:\n            case TransitionLane16:\n              return lanes & TransitionLanes;\n            case RetryLane1:\n            case RetryLane2:\n            case RetryLane3:\n            case RetryLane4:\n            case RetryLane5:\n              return lanes & RetryLanes;\n            case SelectiveHydrationLane:\n              return SelectiveHydrationLane;\n            case IdleHydrationLane:\n              return IdleHydrationLane;\n            case IdleLane:\n              return IdleLane;\n            case OffscreenLane:\n              return OffscreenLane;\n            default:\n              {\n                error(\"Should have found matching lanes. This is a bug in React.\");\n              }\n              return lanes;\n          }\n        }\n        function getNextLanes(root2, wipLanes) {\n          var pendingLanes = root2.pendingLanes;\n          if (pendingLanes === NoLanes) {\n            return NoLanes;\n          }\n          var nextLanes = NoLanes;\n          var suspendedLanes = root2.suspendedLanes;\n          var pingedLanes = root2.pingedLanes;\n          var nonIdlePendingLanes = pendingLanes & NonIdleLanes;\n          if (nonIdlePendingLanes !== NoLanes) {\n            var nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;\n            if (nonIdleUnblockedLanes !== NoLanes) {\n              nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);\n            } else {\n              var nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;\n              if (nonIdlePingedLanes !== NoLanes) {\n                nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);\n              }\n            }\n          } else {\n            var unblockedLanes = pendingLanes & ~suspendedLanes;\n            if (unblockedLanes !== NoLanes) {\n              nextLanes = getHighestPriorityLanes(unblockedLanes);\n            } else {\n              if (pingedLanes !== NoLanes) {\n                nextLanes = getHighestPriorityLanes(pingedLanes);\n              }\n            }\n          }\n          if (nextLanes === NoLanes) {\n            return NoLanes;\n          }\n          if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't\n          // bother waiting until the root is complete.\n          (wipLanes & suspendedLanes) === NoLanes) {\n            var nextLane = getHighestPriorityLane(nextLanes);\n            var wipLane = getHighestPriorityLane(wipLanes);\n            if (\n              // Tests whether the next lane is equal or lower priority than the wip\n              // one. This works because the bits decrease in priority as you go left.\n              nextLane >= wipLane || // Default priority updates should not interrupt transition updates. The\n              // only difference between default updates and transition updates is that\n              // default updates do not support refresh transitions.\n              nextLane === DefaultLane && (wipLane & TransitionLanes) !== NoLanes\n            ) {\n              return wipLanes;\n            }\n          }\n          if ((nextLanes & InputContinuousLane) !== NoLanes) {\n            nextLanes |= pendingLanes & DefaultLane;\n          }\n          var entangledLanes = root2.entangledLanes;\n          if (entangledLanes !== NoLanes) {\n            var entanglements = root2.entanglements;\n            var lanes = nextLanes & entangledLanes;\n            while (lanes > 0) {\n              var index2 = pickArbitraryLaneIndex(lanes);\n              var lane = 1 << index2;\n              nextLanes |= entanglements[index2];\n              lanes &= ~lane;\n            }\n          }\n          return nextLanes;\n        }\n        function getMostRecentEventTime(root2, lanes) {\n          var eventTimes = root2.eventTimes;\n          var mostRecentEventTime = NoTimestamp;\n          while (lanes > 0) {\n            var index2 = pickArbitraryLaneIndex(lanes);\n            var lane = 1 << index2;\n            var eventTime = eventTimes[index2];\n            if (eventTime > mostRecentEventTime) {\n              mostRecentEventTime = eventTime;\n            }\n            lanes &= ~lane;\n          }\n          return mostRecentEventTime;\n        }\n        function computeExpirationTime(lane, currentTime) {\n          switch (lane) {\n            case SyncLane:\n            case InputContinuousHydrationLane:\n            case InputContinuousLane:\n              return currentTime + 250;\n            case DefaultHydrationLane:\n            case DefaultLane:\n            case TransitionHydrationLane:\n            case TransitionLane1:\n            case TransitionLane2:\n            case TransitionLane3:\n            case TransitionLane4:\n            case TransitionLane5:\n            case TransitionLane6:\n            case TransitionLane7:\n            case TransitionLane8:\n            case TransitionLane9:\n            case TransitionLane10:\n            case TransitionLane11:\n            case TransitionLane12:\n            case TransitionLane13:\n            case TransitionLane14:\n            case TransitionLane15:\n            case TransitionLane16:\n              return currentTime + 5e3;\n            case RetryLane1:\n            case RetryLane2:\n            case RetryLane3:\n            case RetryLane4:\n            case RetryLane5:\n              return NoTimestamp;\n            case SelectiveHydrationLane:\n            case IdleHydrationLane:\n            case IdleLane:\n            case OffscreenLane:\n              return NoTimestamp;\n            default:\n              {\n                error(\"Should have found matching lanes. This is a bug in React.\");\n              }\n              return NoTimestamp;\n          }\n        }\n        function markStarvedLanesAsExpired(root2, currentTime) {\n          var pendingLanes = root2.pendingLanes;\n          var suspendedLanes = root2.suspendedLanes;\n          var pingedLanes = root2.pingedLanes;\n          var expirationTimes = root2.expirationTimes;\n          var lanes = pendingLanes;\n          while (lanes > 0) {\n            var index2 = pickArbitraryLaneIndex(lanes);\n            var lane = 1 << index2;\n            var expirationTime = expirationTimes[index2];\n            if (expirationTime === NoTimestamp) {\n              if ((lane & suspendedLanes) === NoLanes || (lane & pingedLanes) !== NoLanes) {\n                expirationTimes[index2] = computeExpirationTime(lane, currentTime);\n              }\n            } else if (expirationTime <= currentTime) {\n              root2.expiredLanes |= lane;\n            }\n            lanes &= ~lane;\n          }\n        }\n        function getHighestPriorityPendingLanes(root2) {\n          return getHighestPriorityLanes(root2.pendingLanes);\n        }\n        function getLanesToRetrySynchronouslyOnError(root2) {\n          var everythingButOffscreen = root2.pendingLanes & ~OffscreenLane;\n          if (everythingButOffscreen !== NoLanes) {\n            return everythingButOffscreen;\n          }\n          if (everythingButOffscreen & OffscreenLane) {\n            return OffscreenLane;\n          }\n          return NoLanes;\n        }\n        function includesSyncLane(lanes) {\n          return (lanes & SyncLane) !== NoLanes;\n        }\n        function includesNonIdleWork(lanes) {\n          return (lanes & NonIdleLanes) !== NoLanes;\n        }\n        function includesOnlyRetries(lanes) {\n          return (lanes & RetryLanes) === lanes;\n        }\n        function includesOnlyNonUrgentLanes(lanes) {\n          var UrgentLanes = SyncLane | InputContinuousLane | DefaultLane;\n          return (lanes & UrgentLanes) === NoLanes;\n        }\n        function includesOnlyTransitions(lanes) {\n          return (lanes & TransitionLanes) === lanes;\n        }\n        function includesBlockingLane(root2, lanes) {\n          var SyncDefaultLanes = InputContinuousHydrationLane | InputContinuousLane | DefaultHydrationLane | DefaultLane;\n          return (lanes & SyncDefaultLanes) !== NoLanes;\n        }\n        function includesExpiredLane(root2, lanes) {\n          return (lanes & root2.expiredLanes) !== NoLanes;\n        }\n        function isTransitionLane(lane) {\n          return (lane & TransitionLanes) !== NoLanes;\n        }\n        function claimNextTransitionLane() {\n          var lane = nextTransitionLane;\n          nextTransitionLane <<= 1;\n          if ((nextTransitionLane & TransitionLanes) === NoLanes) {\n            nextTransitionLane = TransitionLane1;\n          }\n          return lane;\n        }\n        function claimNextRetryLane() {\n          var lane = nextRetryLane;\n          nextRetryLane <<= 1;\n          if ((nextRetryLane & RetryLanes) === NoLanes) {\n            nextRetryLane = RetryLane1;\n          }\n          return lane;\n        }\n        function getHighestPriorityLane(lanes) {\n          return lanes & -lanes;\n        }\n        function pickArbitraryLane(lanes) {\n          return getHighestPriorityLane(lanes);\n        }\n        function pickArbitraryLaneIndex(lanes) {\n          return 31 - clz32(lanes);\n        }\n        function laneToIndex(lane) {\n          return pickArbitraryLaneIndex(lane);\n        }\n        function includesSomeLane(a, b) {\n          return (a & b) !== NoLanes;\n        }\n        function isSubsetOfLanes(set2, subset) {\n          return (set2 & subset) === subset;\n        }\n        function mergeLanes(a, b) {\n          return a | b;\n        }\n        function removeLanes(set2, subset) {\n          return set2 & ~subset;\n        }\n        function intersectLanes(a, b) {\n          return a & b;\n        }\n        function laneToLanes(lane) {\n          return lane;\n        }\n        function higherPriorityLane(a, b) {\n          return a !== NoLane && a < b ? a : b;\n        }\n        function createLaneMap(initial) {\n          var laneMap = [];\n          for (var i = 0; i < TotalLanes; i++) {\n            laneMap.push(initial);\n          }\n          return laneMap;\n        }\n        function markRootUpdated(root2, updateLane, eventTime) {\n          root2.pendingLanes |= updateLane;\n          if (updateLane !== IdleLane) {\n            root2.suspendedLanes = NoLanes;\n            root2.pingedLanes = NoLanes;\n          }\n          var eventTimes = root2.eventTimes;\n          var index2 = laneToIndex(updateLane);\n          eventTimes[index2] = eventTime;\n        }\n        function markRootSuspended(root2, suspendedLanes) {\n          root2.suspendedLanes |= suspendedLanes;\n          root2.pingedLanes &= ~suspendedLanes;\n          var expirationTimes = root2.expirationTimes;\n          var lanes = suspendedLanes;\n          while (lanes > 0) {\n            var index2 = pickArbitraryLaneIndex(lanes);\n            var lane = 1 << index2;\n            expirationTimes[index2] = NoTimestamp;\n            lanes &= ~lane;\n          }\n        }\n        function markRootPinged(root2, pingedLanes, eventTime) {\n          root2.pingedLanes |= root2.suspendedLanes & pingedLanes;\n        }\n        function markRootFinished(root2, remainingLanes) {\n          var noLongerPendingLanes = root2.pendingLanes & ~remainingLanes;\n          root2.pendingLanes = remainingLanes;\n          root2.suspendedLanes = NoLanes;\n          root2.pingedLanes = NoLanes;\n          root2.expiredLanes &= remainingLanes;\n          root2.mutableReadLanes &= remainingLanes;\n          root2.entangledLanes &= remainingLanes;\n          var entanglements = root2.entanglements;\n          var eventTimes = root2.eventTimes;\n          var expirationTimes = root2.expirationTimes;\n          var lanes = noLongerPendingLanes;\n          while (lanes > 0) {\n            var index2 = pickArbitraryLaneIndex(lanes);\n            var lane = 1 << index2;\n            entanglements[index2] = NoLanes;\n            eventTimes[index2] = NoTimestamp;\n            expirationTimes[index2] = NoTimestamp;\n            lanes &= ~lane;\n          }\n        }\n        function markRootEntangled(root2, entangledLanes) {\n          var rootEntangledLanes = root2.entangledLanes |= entangledLanes;\n          var entanglements = root2.entanglements;\n          var lanes = rootEntangledLanes;\n          while (lanes) {\n            var index2 = pickArbitraryLaneIndex(lanes);\n            var lane = 1 << index2;\n            if (\n              // Is this one of the newly entangled lanes?\n              lane & entangledLanes | // Is this lane transitively entangled with the newly entangled lanes?\n              entanglements[index2] & entangledLanes\n            ) {\n              entanglements[index2] |= entangledLanes;\n            }\n            lanes &= ~lane;\n          }\n        }\n        function getBumpedLaneForHydration(root2, renderLanes2) {\n          var renderLane = getHighestPriorityLane(renderLanes2);\n          var lane;\n          switch (renderLane) {\n            case InputContinuousLane:\n              lane = InputContinuousHydrationLane;\n              break;\n            case DefaultLane:\n              lane = DefaultHydrationLane;\n              break;\n            case TransitionLane1:\n            case TransitionLane2:\n            case TransitionLane3:\n            case TransitionLane4:\n            case TransitionLane5:\n            case TransitionLane6:\n            case TransitionLane7:\n            case TransitionLane8:\n            case TransitionLane9:\n            case TransitionLane10:\n            case TransitionLane11:\n            case TransitionLane12:\n            case TransitionLane13:\n            case TransitionLane14:\n            case TransitionLane15:\n            case TransitionLane16:\n            case RetryLane1:\n            case RetryLane2:\n            case RetryLane3:\n            case RetryLane4:\n            case RetryLane5:\n              lane = TransitionHydrationLane;\n              break;\n            case IdleLane:\n              lane = IdleHydrationLane;\n              break;\n            default:\n              lane = NoLane;\n              break;\n          }\n          if ((lane & (root2.suspendedLanes | renderLanes2)) !== NoLane) {\n            return NoLane;\n          }\n          return lane;\n        }\n        function addFiberToLanesMap(root2, fiber, lanes) {\n          if (!isDevToolsPresent) {\n            return;\n          }\n          var pendingUpdatersLaneMap = root2.pendingUpdatersLaneMap;\n          while (lanes > 0) {\n            var index2 = laneToIndex(lanes);\n            var lane = 1 << index2;\n            var updaters = pendingUpdatersLaneMap[index2];\n            updaters.add(fiber);\n            lanes &= ~lane;\n          }\n        }\n        function movePendingFibersToMemoized(root2, lanes) {\n          if (!isDevToolsPresent) {\n            return;\n          }\n          var pendingUpdatersLaneMap = root2.pendingUpdatersLaneMap;\n          var memoizedUpdaters = root2.memoizedUpdaters;\n          while (lanes > 0) {\n            var index2 = laneToIndex(lanes);\n            var lane = 1 << index2;\n            var updaters = pendingUpdatersLaneMap[index2];\n            if (updaters.size > 0) {\n              updaters.forEach(function(fiber) {\n                var alternate = fiber.alternate;\n                if (alternate === null || !memoizedUpdaters.has(alternate)) {\n                  memoizedUpdaters.add(fiber);\n                }\n              });\n              updaters.clear();\n            }\n            lanes &= ~lane;\n          }\n        }\n        function getTransitionsForLanes(root2, lanes) {\n          {\n            return null;\n          }\n        }\n        var DiscreteEventPriority = SyncLane;\n        var ContinuousEventPriority = InputContinuousLane;\n        var DefaultEventPriority = DefaultLane;\n        var IdleEventPriority = IdleLane;\n        var currentUpdatePriority = NoLane;\n        function getCurrentUpdatePriority() {\n          return currentUpdatePriority;\n        }\n        function setCurrentUpdatePriority(newPriority) {\n          currentUpdatePriority = newPriority;\n        }\n        function runWithPriority(priority, fn) {\n          var previousPriority = currentUpdatePriority;\n          try {\n            currentUpdatePriority = priority;\n            return fn();\n          } finally {\n            currentUpdatePriority = previousPriority;\n          }\n        }\n        function higherEventPriority(a, b) {\n          return a !== 0 && a < b ? a : b;\n        }\n        function lowerEventPriority(a, b) {\n          return a === 0 || a > b ? a : b;\n        }\n        function isHigherEventPriority(a, b) {\n          return a !== 0 && a < b;\n        }\n        function lanesToEventPriority(lanes) {\n          var lane = getHighestPriorityLane(lanes);\n          if (!isHigherEventPriority(DiscreteEventPriority, lane)) {\n            return DiscreteEventPriority;\n          }\n          if (!isHigherEventPriority(ContinuousEventPriority, lane)) {\n            return ContinuousEventPriority;\n          }\n          if (includesNonIdleWork(lane)) {\n            return DefaultEventPriority;\n          }\n          return IdleEventPriority;\n        }\n        function isRootDehydrated(root2) {\n          var currentState = root2.current.memoizedState;\n          return currentState.isDehydrated;\n        }\n        var _attemptSynchronousHydration;\n        function setAttemptSynchronousHydration(fn) {\n          _attemptSynchronousHydration = fn;\n        }\n        function attemptSynchronousHydration(fiber) {\n          _attemptSynchronousHydration(fiber);\n        }\n        var attemptContinuousHydration;\n        function setAttemptContinuousHydration(fn) {\n          attemptContinuousHydration = fn;\n        }\n        var attemptHydrationAtCurrentPriority;\n        function setAttemptHydrationAtCurrentPriority(fn) {\n          attemptHydrationAtCurrentPriority = fn;\n        }\n        var getCurrentUpdatePriority$1;\n        function setGetCurrentUpdatePriority(fn) {\n          getCurrentUpdatePriority$1 = fn;\n        }\n        var attemptHydrationAtPriority;\n        function setAttemptHydrationAtPriority(fn) {\n          attemptHydrationAtPriority = fn;\n        }\n        var hasScheduledReplayAttempt = false;\n        var queuedDiscreteEvents = [];\n        var queuedFocus = null;\n        var queuedDrag = null;\n        var queuedMouse = null;\n        var queuedPointers = /* @__PURE__ */ new Map();\n        var queuedPointerCaptures = /* @__PURE__ */ new Map();\n        var queuedExplicitHydrationTargets = [];\n        var discreteReplayableEvents = [\n          \"mousedown\",\n          \"mouseup\",\n          \"touchcancel\",\n          \"touchend\",\n          \"touchstart\",\n          \"auxclick\",\n          \"dblclick\",\n          \"pointercancel\",\n          \"pointerdown\",\n          \"pointerup\",\n          \"dragend\",\n          \"dragstart\",\n          \"drop\",\n          \"compositionend\",\n          \"compositionstart\",\n          \"keydown\",\n          \"keypress\",\n          \"keyup\",\n          \"input\",\n          \"textInput\",\n          // Intentionally camelCase\n          \"copy\",\n          \"cut\",\n          \"paste\",\n          \"click\",\n          \"change\",\n          \"contextmenu\",\n          \"reset\",\n          \"submit\"\n        ];\n        function isDiscreteEventThatRequiresHydration(eventType) {\n          return discreteReplayableEvents.indexOf(eventType) > -1;\n        }\n        function createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n          return {\n            blockedOn,\n            domEventName,\n            eventSystemFlags,\n            nativeEvent,\n            targetContainers: [targetContainer]\n          };\n        }\n        function clearIfContinuousEvent(domEventName, nativeEvent) {\n          switch (domEventName) {\n            case \"focusin\":\n            case \"focusout\":\n              queuedFocus = null;\n              break;\n            case \"dragenter\":\n            case \"dragleave\":\n              queuedDrag = null;\n              break;\n            case \"mouseover\":\n            case \"mouseout\":\n              queuedMouse = null;\n              break;\n            case \"pointerover\":\n            case \"pointerout\": {\n              var pointerId = nativeEvent.pointerId;\n              queuedPointers.delete(pointerId);\n              break;\n            }\n            case \"gotpointercapture\":\n            case \"lostpointercapture\": {\n              var _pointerId = nativeEvent.pointerId;\n              queuedPointerCaptures.delete(_pointerId);\n              break;\n            }\n          }\n        }\n        function accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n          if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) {\n            var queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);\n            if (blockedOn !== null) {\n              var _fiber2 = getInstanceFromNode(blockedOn);\n              if (_fiber2 !== null) {\n                attemptContinuousHydration(_fiber2);\n              }\n            }\n            return queuedEvent;\n          }\n          existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n          var targetContainers = existingQueuedEvent.targetContainers;\n          if (targetContainer !== null && targetContainers.indexOf(targetContainer) === -1) {\n            targetContainers.push(targetContainer);\n          }\n          return existingQueuedEvent;\n        }\n        function queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n          switch (domEventName) {\n            case \"focusin\": {\n              var focusEvent = nativeEvent;\n              queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, domEventName, eventSystemFlags, targetContainer, focusEvent);\n              return true;\n            }\n            case \"dragenter\": {\n              var dragEvent = nativeEvent;\n              queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, domEventName, eventSystemFlags, targetContainer, dragEvent);\n              return true;\n            }\n            case \"mouseover\": {\n              var mouseEvent = nativeEvent;\n              queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, domEventName, eventSystemFlags, targetContainer, mouseEvent);\n              return true;\n            }\n            case \"pointerover\": {\n              var pointerEvent = nativeEvent;\n              var pointerId = pointerEvent.pointerId;\n              queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, pointerEvent));\n              return true;\n            }\n            case \"gotpointercapture\": {\n              var _pointerEvent = nativeEvent;\n              var _pointerId2 = _pointerEvent.pointerId;\n              queuedPointerCaptures.set(_pointerId2, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, _pointerEvent));\n              return true;\n            }\n          }\n          return false;\n        }\n        function attemptExplicitHydrationTarget(queuedTarget) {\n          var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n          if (targetInst !== null) {\n            var nearestMounted = getNearestMountedFiber(targetInst);\n            if (nearestMounted !== null) {\n              var tag = nearestMounted.tag;\n              if (tag === SuspenseComponent) {\n                var instance = getSuspenseInstanceFromFiber(nearestMounted);\n                if (instance !== null) {\n                  queuedTarget.blockedOn = instance;\n                  attemptHydrationAtPriority(queuedTarget.priority, function() {\n                    attemptHydrationAtCurrentPriority(nearestMounted);\n                  });\n                  return;\n                }\n              } else if (tag === HostRoot) {\n                var root2 = nearestMounted.stateNode;\n                if (isRootDehydrated(root2)) {\n                  queuedTarget.blockedOn = getContainerFromFiber(nearestMounted);\n                  return;\n                }\n              }\n            }\n          }\n          queuedTarget.blockedOn = null;\n        }\n        function queueExplicitHydrationTarget(target) {\n          var updatePriority = getCurrentUpdatePriority$1();\n          var queuedTarget = {\n            blockedOn: null,\n            target,\n            priority: updatePriority\n          };\n          var i = 0;\n          for (; i < queuedExplicitHydrationTargets.length; i++) {\n            if (!isHigherEventPriority(updatePriority, queuedExplicitHydrationTargets[i].priority)) {\n              break;\n            }\n          }\n          queuedExplicitHydrationTargets.splice(i, 0, queuedTarget);\n          if (i === 0) {\n            attemptExplicitHydrationTarget(queuedTarget);\n          }\n        }\n        function attemptReplayContinuousQueuedEvent(queuedEvent) {\n          if (queuedEvent.blockedOn !== null) {\n            return false;\n          }\n          var targetContainers = queuedEvent.targetContainers;\n          while (targetContainers.length > 0) {\n            var targetContainer = targetContainers[0];\n            var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.domEventName, queuedEvent.eventSystemFlags, targetContainer, queuedEvent.nativeEvent);\n            if (nextBlockedOn === null) {\n              {\n                var nativeEvent = queuedEvent.nativeEvent;\n                var nativeEventClone = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n                setReplayingEvent(nativeEventClone);\n                nativeEvent.target.dispatchEvent(nativeEventClone);\n                resetReplayingEvent();\n              }\n            } else {\n              var _fiber3 = getInstanceFromNode(nextBlockedOn);\n              if (_fiber3 !== null) {\n                attemptContinuousHydration(_fiber3);\n              }\n              queuedEvent.blockedOn = nextBlockedOn;\n              return false;\n            }\n            targetContainers.shift();\n          }\n          return true;\n        }\n        function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n          if (attemptReplayContinuousQueuedEvent(queuedEvent)) {\n            map.delete(key);\n          }\n        }\n        function replayUnblockedEvents() {\n          hasScheduledReplayAttempt = false;\n          if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) {\n            queuedFocus = null;\n          }\n          if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) {\n            queuedDrag = null;\n          }\n          if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) {\n            queuedMouse = null;\n          }\n          queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n          queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n        }\n        function scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n          if (queuedEvent.blockedOn === unblocked) {\n            queuedEvent.blockedOn = null;\n            if (!hasScheduledReplayAttempt) {\n              hasScheduledReplayAttempt = true;\n              Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents);\n            }\n          }\n        }\n        function retryIfBlockedOn(unblocked) {\n          if (queuedDiscreteEvents.length > 0) {\n            scheduleCallbackIfUnblocked(queuedDiscreteEvents[0], unblocked);\n            for (var i = 1; i < queuedDiscreteEvents.length; i++) {\n              var queuedEvent = queuedDiscreteEvents[i];\n              if (queuedEvent.blockedOn === unblocked) {\n                queuedEvent.blockedOn = null;\n              }\n            }\n          }\n          if (queuedFocus !== null) {\n            scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n          }\n          if (queuedDrag !== null) {\n            scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n          }\n          if (queuedMouse !== null) {\n            scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n          }\n          var unblock = function(queuedEvent2) {\n            return scheduleCallbackIfUnblocked(queuedEvent2, unblocked);\n          };\n          queuedPointers.forEach(unblock);\n          queuedPointerCaptures.forEach(unblock);\n          for (var _i = 0; _i < queuedExplicitHydrationTargets.length; _i++) {\n            var queuedTarget = queuedExplicitHydrationTargets[_i];\n            if (queuedTarget.blockedOn === unblocked) {\n              queuedTarget.blockedOn = null;\n            }\n          }\n          while (queuedExplicitHydrationTargets.length > 0) {\n            var nextExplicitTarget = queuedExplicitHydrationTargets[0];\n            if (nextExplicitTarget.blockedOn !== null) {\n              break;\n            } else {\n              attemptExplicitHydrationTarget(nextExplicitTarget);\n              if (nextExplicitTarget.blockedOn === null) {\n                queuedExplicitHydrationTargets.shift();\n              }\n            }\n          }\n        }\n        var ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig;\n        var _enabled = true;\n        function setEnabled(enabled) {\n          _enabled = !!enabled;\n        }\n        function isEnabled() {\n          return _enabled;\n        }\n        function createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags) {\n          var eventPriority = getEventPriority(domEventName);\n          var listenerWrapper;\n          switch (eventPriority) {\n            case DiscreteEventPriority:\n              listenerWrapper = dispatchDiscreteEvent;\n              break;\n            case ContinuousEventPriority:\n              listenerWrapper = dispatchContinuousEvent;\n              break;\n            case DefaultEventPriority:\n            default:\n              listenerWrapper = dispatchEvent;\n              break;\n          }\n          return listenerWrapper.bind(null, domEventName, eventSystemFlags, targetContainer);\n        }\n        function dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n          var previousPriority = getCurrentUpdatePriority();\n          var prevTransition = ReactCurrentBatchConfig.transition;\n          ReactCurrentBatchConfig.transition = null;\n          try {\n            setCurrentUpdatePriority(DiscreteEventPriority);\n            dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n          } finally {\n            setCurrentUpdatePriority(previousPriority);\n            ReactCurrentBatchConfig.transition = prevTransition;\n          }\n        }\n        function dispatchContinuousEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n          var previousPriority = getCurrentUpdatePriority();\n          var prevTransition = ReactCurrentBatchConfig.transition;\n          ReactCurrentBatchConfig.transition = null;\n          try {\n            setCurrentUpdatePriority(ContinuousEventPriority);\n            dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n          } finally {\n            setCurrentUpdatePriority(previousPriority);\n            ReactCurrentBatchConfig.transition = prevTransition;\n          }\n        }\n        function dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n          if (!_enabled) {\n            return;\n          }\n          {\n            dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n          }\n        }\n        function dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n          var blockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n          if (blockedOn === null) {\n            dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n            clearIfContinuousEvent(domEventName, nativeEvent);\n            return;\n          }\n          if (queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent)) {\n            nativeEvent.stopPropagation();\n            return;\n          }\n          clearIfContinuousEvent(domEventName, nativeEvent);\n          if (eventSystemFlags & IS_CAPTURE_PHASE && isDiscreteEventThatRequiresHydration(domEventName)) {\n            while (blockedOn !== null) {\n              var fiber = getInstanceFromNode(blockedOn);\n              if (fiber !== null) {\n                attemptSynchronousHydration(fiber);\n              }\n              var nextBlockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n              if (nextBlockedOn === null) {\n                dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n              }\n              if (nextBlockedOn === blockedOn) {\n                break;\n              }\n              blockedOn = nextBlockedOn;\n            }\n            if (blockedOn !== null) {\n              nativeEvent.stopPropagation();\n            }\n            return;\n          }\n          dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, null, targetContainer);\n        }\n        var return_targetInst = null;\n        function findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n          return_targetInst = null;\n          var nativeEventTarget = getEventTarget(nativeEvent);\n          var targetInst = getClosestInstanceFromNode(nativeEventTarget);\n          if (targetInst !== null) {\n            var nearestMounted = getNearestMountedFiber(targetInst);\n            if (nearestMounted === null) {\n              targetInst = null;\n            } else {\n              var tag = nearestMounted.tag;\n              if (tag === SuspenseComponent) {\n                var instance = getSuspenseInstanceFromFiber(nearestMounted);\n                if (instance !== null) {\n                  return instance;\n                }\n                targetInst = null;\n              } else if (tag === HostRoot) {\n                var root2 = nearestMounted.stateNode;\n                if (isRootDehydrated(root2)) {\n                  return getContainerFromFiber(nearestMounted);\n                }\n                targetInst = null;\n              } else if (nearestMounted !== targetInst) {\n                targetInst = null;\n              }\n            }\n          }\n          return_targetInst = targetInst;\n          return null;\n        }\n        function getEventPriority(domEventName) {\n          switch (domEventName) {\n            case \"cancel\":\n            case \"click\":\n            case \"close\":\n            case \"contextmenu\":\n            case \"copy\":\n            case \"cut\":\n            case \"auxclick\":\n            case \"dblclick\":\n            case \"dragend\":\n            case \"dragstart\":\n            case \"drop\":\n            case \"focusin\":\n            case \"focusout\":\n            case \"input\":\n            case \"invalid\":\n            case \"keydown\":\n            case \"keypress\":\n            case \"keyup\":\n            case \"mousedown\":\n            case \"mouseup\":\n            case \"paste\":\n            case \"pause\":\n            case \"play\":\n            case \"pointercancel\":\n            case \"pointerdown\":\n            case \"pointerup\":\n            case \"ratechange\":\n            case \"reset\":\n            case \"resize\":\n            case \"seeked\":\n            case \"submit\":\n            case \"touchcancel\":\n            case \"touchend\":\n            case \"touchstart\":\n            case \"volumechange\":\n            case \"change\":\n            case \"selectionchange\":\n            case \"textInput\":\n            case \"compositionstart\":\n            case \"compositionend\":\n            case \"compositionupdate\":\n            case \"beforeblur\":\n            case \"afterblur\":\n            case \"beforeinput\":\n            case \"blur\":\n            case \"fullscreenchange\":\n            case \"focus\":\n            case \"hashchange\":\n            case \"popstate\":\n            case \"select\":\n            case \"selectstart\":\n              return DiscreteEventPriority;\n            case \"drag\":\n            case \"dragenter\":\n            case \"dragexit\":\n            case \"dragleave\":\n            case \"dragover\":\n            case \"mousemove\":\n            case \"mouseout\":\n            case \"mouseover\":\n            case \"pointermove\":\n            case \"pointerout\":\n            case \"pointerover\":\n            case \"scroll\":\n            case \"toggle\":\n            case \"touchmove\":\n            case \"wheel\":\n            case \"mouseenter\":\n            case \"mouseleave\":\n            case \"pointerenter\":\n            case \"pointerleave\":\n              return ContinuousEventPriority;\n            case \"message\": {\n              var schedulerPriority = getCurrentPriorityLevel();\n              switch (schedulerPriority) {\n                case ImmediatePriority:\n                  return DiscreteEventPriority;\n                case UserBlockingPriority:\n                  return ContinuousEventPriority;\n                case NormalPriority:\n                case LowPriority:\n                  return DefaultEventPriority;\n                case IdlePriority:\n                  return IdleEventPriority;\n                default:\n                  return DefaultEventPriority;\n              }\n            }\n            default:\n              return DefaultEventPriority;\n          }\n        }\n        function addEventBubbleListener(target, eventType, listener) {\n          target.addEventListener(eventType, listener, false);\n          return listener;\n        }\n        function addEventCaptureListener(target, eventType, listener) {\n          target.addEventListener(eventType, listener, true);\n          return listener;\n        }\n        function addEventCaptureListenerWithPassiveFlag(target, eventType, listener, passive) {\n          target.addEventListener(eventType, listener, {\n            capture: true,\n            passive\n          });\n          return listener;\n        }\n        function addEventBubbleListenerWithPassiveFlag(target, eventType, listener, passive) {\n          target.addEventListener(eventType, listener, {\n            passive\n          });\n          return listener;\n        }\n        var root = null;\n        var startText = null;\n        var fallbackText = null;\n        function initialize(nativeEventTarget) {\n          root = nativeEventTarget;\n          startText = getText();\n          return true;\n        }\n        function reset() {\n          root = null;\n          startText = null;\n          fallbackText = null;\n        }\n        function getData() {\n          if (fallbackText) {\n            return fallbackText;\n          }\n          var start;\n          var startValue = startText;\n          var startLength = startValue.length;\n          var end;\n          var endValue = getText();\n          var endLength = endValue.length;\n          for (start = 0; start < startLength; start++) {\n            if (startValue[start] !== endValue[start]) {\n              break;\n            }\n          }\n          var minEnd = startLength - start;\n          for (end = 1; end <= minEnd; end++) {\n            if (startValue[startLength - end] !== endValue[endLength - end]) {\n              break;\n            }\n          }\n          var sliceTail = end > 1 ? 1 - end : void 0;\n          fallbackText = endValue.slice(start, sliceTail);\n          return fallbackText;\n        }\n        function getText() {\n          if (\"value\" in root) {\n            return root.value;\n          }\n          return root.textContent;\n        }\n        function getEventCharCode(nativeEvent) {\n          var charCode;\n          var keyCode = nativeEvent.keyCode;\n          if (\"charCode\" in nativeEvent) {\n            charCode = nativeEvent.charCode;\n            if (charCode === 0 && keyCode === 13) {\n              charCode = 13;\n            }\n          } else {\n            charCode = keyCode;\n          }\n          if (charCode === 10) {\n            charCode = 13;\n          }\n          if (charCode >= 32 || charCode === 13) {\n            return charCode;\n          }\n          return 0;\n        }\n        function functionThatReturnsTrue() {\n          return true;\n        }\n        function functionThatReturnsFalse() {\n          return false;\n        }\n        function createSyntheticEvent(Interface) {\n          function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {\n            this._reactName = reactName;\n            this._targetInst = targetInst;\n            this.type = reactEventType;\n            this.nativeEvent = nativeEvent;\n            this.target = nativeEventTarget;\n            this.currentTarget = null;\n            for (var _propName in Interface) {\n              if (!Interface.hasOwnProperty(_propName)) {\n                continue;\n              }\n              var normalize = Interface[_propName];\n              if (normalize) {\n                this[_propName] = normalize(nativeEvent);\n              } else {\n                this[_propName] = nativeEvent[_propName];\n              }\n            }\n            var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n            if (defaultPrevented) {\n              this.isDefaultPrevented = functionThatReturnsTrue;\n            } else {\n              this.isDefaultPrevented = functionThatReturnsFalse;\n            }\n            this.isPropagationStopped = functionThatReturnsFalse;\n            return this;\n          }\n          assign(SyntheticBaseEvent.prototype, {\n            preventDefault: function() {\n              this.defaultPrevented = true;\n              var event = this.nativeEvent;\n              if (!event) {\n                return;\n              }\n              if (event.preventDefault) {\n                event.preventDefault();\n              } else if (typeof event.returnValue !== \"unknown\") {\n                event.returnValue = false;\n              }\n              this.isDefaultPrevented = functionThatReturnsTrue;\n            },\n            stopPropagation: function() {\n              var event = this.nativeEvent;\n              if (!event) {\n                return;\n              }\n              if (event.stopPropagation) {\n                event.stopPropagation();\n              } else if (typeof event.cancelBubble !== \"unknown\") {\n                event.cancelBubble = true;\n              }\n              this.isPropagationStopped = functionThatReturnsTrue;\n            },\n            /**\n             * We release all dispatched `SyntheticEvent`s after each event loop, adding\n             * them back into the pool. This allows a way to hold onto a reference that\n             * won't be added back into the pool.\n             */\n            persist: function() {\n            },\n            /**\n             * Checks if this event should be released back into the pool.\n             *\n             * @return {boolean} True if this should not be released, false otherwise.\n             */\n            isPersistent: functionThatReturnsTrue\n          });\n          return SyntheticBaseEvent;\n        }\n        var EventInterface = {\n          eventPhase: 0,\n          bubbles: 0,\n          cancelable: 0,\n          timeStamp: function(event) {\n            return event.timeStamp || Date.now();\n          },\n          defaultPrevented: 0,\n          isTrusted: 0\n        };\n        var SyntheticEvent = createSyntheticEvent(EventInterface);\n        var UIEventInterface = assign({}, EventInterface, {\n          view: 0,\n          detail: 0\n        });\n        var SyntheticUIEvent = createSyntheticEvent(UIEventInterface);\n        var lastMovementX;\n        var lastMovementY;\n        var lastMouseEvent;\n        function updateMouseMovementPolyfillState(event) {\n          if (event !== lastMouseEvent) {\n            if (lastMouseEvent && event.type === \"mousemove\") {\n              lastMovementX = event.screenX - lastMouseEvent.screenX;\n              lastMovementY = event.screenY - lastMouseEvent.screenY;\n            } else {\n              lastMovementX = 0;\n              lastMovementY = 0;\n            }\n            lastMouseEvent = event;\n          }\n        }\n        var MouseEventInterface = assign({}, UIEventInterface, {\n          screenX: 0,\n          screenY: 0,\n          clientX: 0,\n          clientY: 0,\n          pageX: 0,\n          pageY: 0,\n          ctrlKey: 0,\n          shiftKey: 0,\n          altKey: 0,\n          metaKey: 0,\n          getModifierState: getEventModifierState,\n          button: 0,\n          buttons: 0,\n          relatedTarget: function(event) {\n            if (event.relatedTarget === void 0)\n              return event.fromElement === event.srcElement ? event.toElement : event.fromElement;\n            return event.relatedTarget;\n          },\n          movementX: function(event) {\n            if (\"movementX\" in event) {\n              return event.movementX;\n            }\n            updateMouseMovementPolyfillState(event);\n            return lastMovementX;\n          },\n          movementY: function(event) {\n            if (\"movementY\" in event) {\n              return event.movementY;\n            }\n            return lastMovementY;\n          }\n        });\n        var SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface);\n        var DragEventInterface = assign({}, MouseEventInterface, {\n          dataTransfer: 0\n        });\n        var SyntheticDragEvent = createSyntheticEvent(DragEventInterface);\n        var FocusEventInterface = assign({}, UIEventInterface, {\n          relatedTarget: 0\n        });\n        var SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface);\n        var AnimationEventInterface = assign({}, EventInterface, {\n          animationName: 0,\n          elapsedTime: 0,\n          pseudoElement: 0\n        });\n        var SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface);\n        var ClipboardEventInterface = assign({}, EventInterface, {\n          clipboardData: function(event) {\n            return \"clipboardData\" in event ? event.clipboardData : window.clipboardData;\n          }\n        });\n        var SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface);\n        var CompositionEventInterface = assign({}, EventInterface, {\n          data: 0\n        });\n        var SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface);\n        var SyntheticInputEvent = SyntheticCompositionEvent;\n        var normalizeKey = {\n          Esc: \"Escape\",\n          Spacebar: \" \",\n          Left: \"ArrowLeft\",\n          Up: \"ArrowUp\",\n          Right: \"ArrowRight\",\n          Down: \"ArrowDown\",\n          Del: \"Delete\",\n          Win: \"OS\",\n          Menu: \"ContextMenu\",\n          Apps: \"ContextMenu\",\n          Scroll: \"ScrollLock\",\n          MozPrintableKey: \"Unidentified\"\n        };\n        var translateToKey = {\n          \"8\": \"Backspace\",\n          \"9\": \"Tab\",\n          \"12\": \"Clear\",\n          \"13\": \"Enter\",\n          \"16\": \"Shift\",\n          \"17\": \"Control\",\n          \"18\": \"Alt\",\n          \"19\": \"Pause\",\n          \"20\": \"CapsLock\",\n          \"27\": \"Escape\",\n          \"32\": \" \",\n          \"33\": \"PageUp\",\n          \"34\": \"PageDown\",\n          \"35\": \"End\",\n          \"36\": \"Home\",\n          \"37\": \"ArrowLeft\",\n          \"38\": \"ArrowUp\",\n          \"39\": \"ArrowRight\",\n          \"40\": \"ArrowDown\",\n          \"45\": \"Insert\",\n          \"46\": \"Delete\",\n          \"112\": \"F1\",\n          \"113\": \"F2\",\n          \"114\": \"F3\",\n          \"115\": \"F4\",\n          \"116\": \"F5\",\n          \"117\": \"F6\",\n          \"118\": \"F7\",\n          \"119\": \"F8\",\n          \"120\": \"F9\",\n          \"121\": \"F10\",\n          \"122\": \"F11\",\n          \"123\": \"F12\",\n          \"144\": \"NumLock\",\n          \"145\": \"ScrollLock\",\n          \"224\": \"Meta\"\n        };\n        function getEventKey(nativeEvent) {\n          if (nativeEvent.key) {\n            var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n            if (key !== \"Unidentified\") {\n              return key;\n            }\n          }\n          if (nativeEvent.type === \"keypress\") {\n            var charCode = getEventCharCode(nativeEvent);\n            return charCode === 13 ? \"Enter\" : String.fromCharCode(charCode);\n          }\n          if (nativeEvent.type === \"keydown\" || nativeEvent.type === \"keyup\") {\n            return translateToKey[nativeEvent.keyCode] || \"Unidentified\";\n          }\n          return \"\";\n        }\n        var modifierKeyToProp = {\n          Alt: \"altKey\",\n          Control: \"ctrlKey\",\n          Meta: \"metaKey\",\n          Shift: \"shiftKey\"\n        };\n        function modifierStateGetter(keyArg) {\n          var syntheticEvent = this;\n          var nativeEvent = syntheticEvent.nativeEvent;\n          if (nativeEvent.getModifierState) {\n            return nativeEvent.getModifierState(keyArg);\n          }\n          var keyProp = modifierKeyToProp[keyArg];\n          return keyProp ? !!nativeEvent[keyProp] : false;\n        }\n        function getEventModifierState(nativeEvent) {\n          return modifierStateGetter;\n        }\n        var KeyboardEventInterface = assign({}, UIEventInterface, {\n          key: getEventKey,\n          code: 0,\n          location: 0,\n          ctrlKey: 0,\n          shiftKey: 0,\n          altKey: 0,\n          metaKey: 0,\n          repeat: 0,\n          locale: 0,\n          getModifierState: getEventModifierState,\n          // Legacy Interface\n          charCode: function(event) {\n            if (event.type === \"keypress\") {\n              return getEventCharCode(event);\n            }\n            return 0;\n          },\n          keyCode: function(event) {\n            if (event.type === \"keydown\" || event.type === \"keyup\") {\n              return event.keyCode;\n            }\n            return 0;\n          },\n          which: function(event) {\n            if (event.type === \"keypress\") {\n              return getEventCharCode(event);\n            }\n            if (event.type === \"keydown\" || event.type === \"keyup\") {\n              return event.keyCode;\n            }\n            return 0;\n          }\n        });\n        var SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface);\n        var PointerEventInterface = assign({}, MouseEventInterface, {\n          pointerId: 0,\n          width: 0,\n          height: 0,\n          pressure: 0,\n          tangentialPressure: 0,\n          tiltX: 0,\n          tiltY: 0,\n          twist: 0,\n          pointerType: 0,\n          isPrimary: 0\n        });\n        var SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface);\n        var TouchEventInterface = assign({}, UIEventInterface, {\n          touches: 0,\n          targetTouches: 0,\n          changedTouches: 0,\n          altKey: 0,\n          metaKey: 0,\n          ctrlKey: 0,\n          shiftKey: 0,\n          getModifierState: getEventModifierState\n        });\n        var SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface);\n        var TransitionEventInterface = assign({}, EventInterface, {\n          propertyName: 0,\n          elapsedTime: 0,\n          pseudoElement: 0\n        });\n        var SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface);\n        var WheelEventInterface = assign({}, MouseEventInterface, {\n          deltaX: function(event) {\n            return \"deltaX\" in event ? event.deltaX : (\n              // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n              \"wheelDeltaX\" in event ? -event.wheelDeltaX : 0\n            );\n          },\n          deltaY: function(event) {\n            return \"deltaY\" in event ? event.deltaY : (\n              // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n              \"wheelDeltaY\" in event ? -event.wheelDeltaY : (\n                // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n                \"wheelDelta\" in event ? -event.wheelDelta : 0\n              )\n            );\n          },\n          deltaZ: 0,\n          // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n          // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n          // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n          // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n          deltaMode: 0\n        });\n        var SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface);\n        var END_KEYCODES = [9, 13, 27, 32];\n        var START_KEYCODE = 229;\n        var canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window;\n        var documentMode = null;\n        if (canUseDOM && \"documentMode\" in document) {\n          documentMode = document.documentMode;\n        }\n        var canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode;\n        var useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n        var SPACEBAR_CODE = 32;\n        var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n        function registerEvents() {\n          registerTwoPhaseEvent(\"onBeforeInput\", [\"compositionend\", \"keypress\", \"textInput\", \"paste\"]);\n          registerTwoPhaseEvent(\"onCompositionEnd\", [\"compositionend\", \"focusout\", \"keydown\", \"keypress\", \"keyup\", \"mousedown\"]);\n          registerTwoPhaseEvent(\"onCompositionStart\", [\"compositionstart\", \"focusout\", \"keydown\", \"keypress\", \"keyup\", \"mousedown\"]);\n          registerTwoPhaseEvent(\"onCompositionUpdate\", [\"compositionupdate\", \"focusout\", \"keydown\", \"keypress\", \"keyup\", \"mousedown\"]);\n        }\n        var hasSpaceKeypress = false;\n        function isKeypressCommand(nativeEvent) {\n          return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n          !(nativeEvent.ctrlKey && nativeEvent.altKey);\n        }\n        function getCompositionEventType(domEventName) {\n          switch (domEventName) {\n            case \"compositionstart\":\n              return \"onCompositionStart\";\n            case \"compositionend\":\n              return \"onCompositionEnd\";\n            case \"compositionupdate\":\n              return \"onCompositionUpdate\";\n          }\n        }\n        function isFallbackCompositionStart(domEventName, nativeEvent) {\n          return domEventName === \"keydown\" && nativeEvent.keyCode === START_KEYCODE;\n        }\n        function isFallbackCompositionEnd(domEventName, nativeEvent) {\n          switch (domEventName) {\n            case \"keyup\":\n              return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n            case \"keydown\":\n              return nativeEvent.keyCode !== START_KEYCODE;\n            case \"keypress\":\n            case \"mousedown\":\n            case \"focusout\":\n              return true;\n            default:\n              return false;\n          }\n        }\n        function getDataFromCustomEvent(nativeEvent) {\n          var detail = nativeEvent.detail;\n          if (typeof detail === \"object\" && \"data\" in detail) {\n            return detail.data;\n          }\n          return null;\n        }\n        function isUsingKoreanIME(nativeEvent) {\n          return nativeEvent.locale === \"ko\";\n        }\n        var isComposing = false;\n        function extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n          var eventType;\n          var fallbackData;\n          if (canUseCompositionEvent) {\n            eventType = getCompositionEventType(domEventName);\n          } else if (!isComposing) {\n            if (isFallbackCompositionStart(domEventName, nativeEvent)) {\n              eventType = \"onCompositionStart\";\n            }\n          } else if (isFallbackCompositionEnd(domEventName, nativeEvent)) {\n            eventType = \"onCompositionEnd\";\n          }\n          if (!eventType) {\n            return null;\n          }\n          if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) {\n            if (!isComposing && eventType === \"onCompositionStart\") {\n              isComposing = initialize(nativeEventTarget);\n            } else if (eventType === \"onCompositionEnd\") {\n              if (isComposing) {\n                fallbackData = getData();\n              }\n            }\n          }\n          var listeners = accumulateTwoPhaseListeners(targetInst, eventType);\n          if (listeners.length > 0) {\n            var event = new SyntheticCompositionEvent(eventType, domEventName, null, nativeEvent, nativeEventTarget);\n            dispatchQueue.push({\n              event,\n              listeners\n            });\n            if (fallbackData) {\n              event.data = fallbackData;\n            } else {\n              var customData = getDataFromCustomEvent(nativeEvent);\n              if (customData !== null) {\n                event.data = customData;\n              }\n            }\n          }\n        }\n        function getNativeBeforeInputChars(domEventName, nativeEvent) {\n          switch (domEventName) {\n            case \"compositionend\":\n              return getDataFromCustomEvent(nativeEvent);\n            case \"keypress\":\n              var which = nativeEvent.which;\n              if (which !== SPACEBAR_CODE) {\n                return null;\n              }\n              hasSpaceKeypress = true;\n              return SPACEBAR_CHAR;\n            case \"textInput\":\n              var chars = nativeEvent.data;\n              if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n                return null;\n              }\n              return chars;\n            default:\n              return null;\n          }\n        }\n        function getFallbackBeforeInputChars(domEventName, nativeEvent) {\n          if (isComposing) {\n            if (domEventName === \"compositionend\" || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) {\n              var chars = getData();\n              reset();\n              isComposing = false;\n              return chars;\n            }\n            return null;\n          }\n          switch (domEventName) {\n            case \"paste\":\n              return null;\n            case \"keypress\":\n              if (!isKeypressCommand(nativeEvent)) {\n                if (nativeEvent.char && nativeEvent.char.length > 1) {\n                  return nativeEvent.char;\n                } else if (nativeEvent.which) {\n                  return String.fromCharCode(nativeEvent.which);\n                }\n              }\n              return null;\n            case \"compositionend\":\n              return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data;\n            default:\n              return null;\n          }\n        }\n        function extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n          var chars;\n          if (canUseTextInputEvent) {\n            chars = getNativeBeforeInputChars(domEventName, nativeEvent);\n          } else {\n            chars = getFallbackBeforeInputChars(domEventName, nativeEvent);\n          }\n          if (!chars) {\n            return null;\n          }\n          var listeners = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\");\n          if (listeners.length > 0) {\n            var event = new SyntheticInputEvent(\"onBeforeInput\", \"beforeinput\", null, nativeEvent, nativeEventTarget);\n            dispatchQueue.push({\n              event,\n              listeners\n            });\n            event.data = chars;\n          }\n        }\n        function extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n          extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n          extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n        }\n        var supportedInputTypes = {\n          color: true,\n          date: true,\n          datetime: true,\n          \"datetime-local\": true,\n          email: true,\n          month: true,\n          number: true,\n          password: true,\n          range: true,\n          search: true,\n          tel: true,\n          text: true,\n          time: true,\n          url: true,\n          week: true\n        };\n        function isTextInputElement(elem) {\n          var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n          if (nodeName === \"input\") {\n            return !!supportedInputTypes[elem.type];\n          }\n          if (nodeName === \"textarea\") {\n            return true;\n          }\n          return false;\n        }\n        function isEventSupported(eventNameSuffix) {\n          if (!canUseDOM) {\n            return false;\n          }\n          var eventName = \"on\" + eventNameSuffix;\n          var isSupported = eventName in document;\n          if (!isSupported) {\n            var element = document.createElement(\"div\");\n            element.setAttribute(eventName, \"return;\");\n            isSupported = typeof element[eventName] === \"function\";\n          }\n          return isSupported;\n        }\n        function registerEvents$1() {\n          registerTwoPhaseEvent(\"onChange\", [\"change\", \"click\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"selectionchange\"]);\n        }\n        function createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {\n          enqueueStateRestore(target);\n          var listeners = accumulateTwoPhaseListeners(inst, \"onChange\");\n          if (listeners.length > 0) {\n            var event = new SyntheticEvent(\"onChange\", \"change\", null, nativeEvent, target);\n            dispatchQueue.push({\n              event,\n              listeners\n            });\n          }\n        }\n        var activeElement = null;\n        var activeElementInst = null;\n        function shouldUseChangeEvent(elem) {\n          var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n          return nodeName === \"select\" || nodeName === \"input\" && elem.type === \"file\";\n        }\n        function manualDispatchChangeEvent(nativeEvent) {\n          var dispatchQueue = [];\n          createAndAccumulateChangeEvent(dispatchQueue, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n          batchedUpdates(runEventInBatch, dispatchQueue);\n        }\n        function runEventInBatch(dispatchQueue) {\n          processDispatchQueue(dispatchQueue, 0);\n        }\n        function getInstIfValueChanged(targetInst) {\n          var targetNode = getNodeFromInstance(targetInst);\n          if (updateValueIfChanged(targetNode)) {\n            return targetInst;\n          }\n        }\n        function getTargetInstForChangeEvent(domEventName, targetInst) {\n          if (domEventName === \"change\") {\n            return targetInst;\n          }\n        }\n        var isInputEventSupported = false;\n        if (canUseDOM) {\n          isInputEventSupported = isEventSupported(\"input\") && (!document.documentMode || document.documentMode > 9);\n        }\n        function startWatchingForValueChange(target, targetInst) {\n          activeElement = target;\n          activeElementInst = targetInst;\n          activeElement.attachEvent(\"onpropertychange\", handlePropertyChange);\n        }\n        function stopWatchingForValueChange() {\n          if (!activeElement) {\n            return;\n          }\n          activeElement.detachEvent(\"onpropertychange\", handlePropertyChange);\n          activeElement = null;\n          activeElementInst = null;\n        }\n        function handlePropertyChange(nativeEvent) {\n          if (nativeEvent.propertyName !== \"value\") {\n            return;\n          }\n          if (getInstIfValueChanged(activeElementInst)) {\n            manualDispatchChangeEvent(nativeEvent);\n          }\n        }\n        function handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n          if (domEventName === \"focusin\") {\n            stopWatchingForValueChange();\n            startWatchingForValueChange(target, targetInst);\n          } else if (domEventName === \"focusout\") {\n            stopWatchingForValueChange();\n          }\n        }\n        function getTargetInstForInputEventPolyfill(domEventName, targetInst) {\n          if (domEventName === \"selectionchange\" || domEventName === \"keyup\" || domEventName === \"keydown\") {\n            return getInstIfValueChanged(activeElementInst);\n          }\n        }\n        function shouldUseClickEvent(elem) {\n          var nodeName = elem.nodeName;\n          return nodeName && nodeName.toLowerCase() === \"input\" && (elem.type === \"checkbox\" || elem.type === \"radio\");\n        }\n        function getTargetInstForClickEvent(domEventName, targetInst) {\n          if (domEventName === \"click\") {\n            return getInstIfValueChanged(targetInst);\n          }\n        }\n        function getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n          if (domEventName === \"input\" || domEventName === \"change\") {\n            return getInstIfValueChanged(targetInst);\n          }\n        }\n        function handleControlledInputBlur(node) {\n          var state = node._wrapperState;\n          if (!state || !state.controlled || node.type !== \"number\") {\n            return;\n          }\n          {\n            setDefaultValue(node, \"number\", node.value);\n          }\n        }\n        function extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n          var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n          var getTargetInstFunc, handleEventFunc;\n          if (shouldUseChangeEvent(targetNode)) {\n            getTargetInstFunc = getTargetInstForChangeEvent;\n          } else if (isTextInputElement(targetNode)) {\n            if (isInputEventSupported) {\n              getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n            } else {\n              getTargetInstFunc = getTargetInstForInputEventPolyfill;\n              handleEventFunc = handleEventsForInputEventPolyfill;\n            }\n          } else if (shouldUseClickEvent(targetNode)) {\n            getTargetInstFunc = getTargetInstForClickEvent;\n          }\n          if (getTargetInstFunc) {\n            var inst = getTargetInstFunc(domEventName, targetInst);\n            if (inst) {\n              createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, nativeEventTarget);\n              return;\n            }\n          }\n          if (handleEventFunc) {\n            handleEventFunc(domEventName, targetNode, targetInst);\n          }\n          if (domEventName === \"focusout\") {\n            handleControlledInputBlur(targetNode);\n          }\n        }\n        function registerEvents$2() {\n          registerDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\n          registerDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\n          registerDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\n          registerDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\n        }\n        function extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n          var isOverEvent = domEventName === \"mouseover\" || domEventName === \"pointerover\";\n          var isOutEvent = domEventName === \"mouseout\" || domEventName === \"pointerout\";\n          if (isOverEvent && !isReplayingEvent(nativeEvent)) {\n            var related = nativeEvent.relatedTarget || nativeEvent.fromElement;\n            if (related) {\n              if (getClosestInstanceFromNode(related) || isContainerMarkedAsRoot(related)) {\n                return;\n              }\n            }\n          }\n          if (!isOutEvent && !isOverEvent) {\n            return;\n          }\n          var win;\n          if (nativeEventTarget.window === nativeEventTarget) {\n            win = nativeEventTarget;\n          } else {\n            var doc = nativeEventTarget.ownerDocument;\n            if (doc) {\n              win = doc.defaultView || doc.parentWindow;\n            } else {\n              win = window;\n            }\n          }\n          var from;\n          var to;\n          if (isOutEvent) {\n            var _related = nativeEvent.relatedTarget || nativeEvent.toElement;\n            from = targetInst;\n            to = _related ? getClosestInstanceFromNode(_related) : null;\n            if (to !== null) {\n              var nearestMounted = getNearestMountedFiber(to);\n              if (to !== nearestMounted || to.tag !== HostComponent && to.tag !== HostText) {\n                to = null;\n              }\n            }\n          } else {\n            from = null;\n            to = targetInst;\n          }\n          if (from === to) {\n            return;\n          }\n          var SyntheticEventCtor = SyntheticMouseEvent;\n          var leaveEventType = \"onMouseLeave\";\n          var enterEventType = \"onMouseEnter\";\n          var eventTypePrefix = \"mouse\";\n          if (domEventName === \"pointerout\" || domEventName === \"pointerover\") {\n            SyntheticEventCtor = SyntheticPointerEvent;\n            leaveEventType = \"onPointerLeave\";\n            enterEventType = \"onPointerEnter\";\n            eventTypePrefix = \"pointer\";\n          }\n          var fromNode = from == null ? win : getNodeFromInstance(from);\n          var toNode = to == null ? win : getNodeFromInstance(to);\n          var leave = new SyntheticEventCtor(leaveEventType, eventTypePrefix + \"leave\", from, nativeEvent, nativeEventTarget);\n          leave.target = fromNode;\n          leave.relatedTarget = toNode;\n          var enter = null;\n          var nativeTargetInst = getClosestInstanceFromNode(nativeEventTarget);\n          if (nativeTargetInst === targetInst) {\n            var enterEvent = new SyntheticEventCtor(enterEventType, eventTypePrefix + \"enter\", to, nativeEvent, nativeEventTarget);\n            enterEvent.target = toNode;\n            enterEvent.relatedTarget = fromNode;\n            enter = enterEvent;\n          }\n          accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leave, enter, from, to);\n        }\n        function is(x, y) {\n          return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y;\n        }\n        var objectIs = typeof Object.is === \"function\" ? Object.is : is;\n        function shallowEqual(objA, objB) {\n          if (objectIs(objA, objB)) {\n            return true;\n          }\n          if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n            return false;\n          }\n          var keysA = Object.keys(objA);\n          var keysB = Object.keys(objB);\n          if (keysA.length !== keysB.length) {\n            return false;\n          }\n          for (var i = 0; i < keysA.length; i++) {\n            var currentKey = keysA[i];\n            if (!hasOwnProperty.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey])) {\n              return false;\n            }\n          }\n          return true;\n        }\n        function getLeafNode(node) {\n          while (node && node.firstChild) {\n            node = node.firstChild;\n          }\n          return node;\n        }\n        function getSiblingNode(node) {\n          while (node) {\n            if (node.nextSibling) {\n              return node.nextSibling;\n            }\n            node = node.parentNode;\n          }\n        }\n        function getNodeForCharacterOffset(root2, offset) {\n          var node = getLeafNode(root2);\n          var nodeStart = 0;\n          var nodeEnd = 0;\n          while (node) {\n            if (node.nodeType === TEXT_NODE) {\n              nodeEnd = nodeStart + node.textContent.length;\n              if (nodeStart <= offset && nodeEnd >= offset) {\n                return {\n                  node,\n                  offset: offset - nodeStart\n                };\n              }\n              nodeStart = nodeEnd;\n            }\n            node = getLeafNode(getSiblingNode(node));\n          }\n        }\n        function getOffsets(outerNode) {\n          var ownerDocument = outerNode.ownerDocument;\n          var win = ownerDocument && ownerDocument.defaultView || window;\n          var selection = win.getSelection && win.getSelection();\n          if (!selection || selection.rangeCount === 0) {\n            return null;\n          }\n          var anchorNode = selection.anchorNode, anchorOffset = selection.anchorOffset, focusNode = selection.focusNode, focusOffset = selection.focusOffset;\n          try {\n            anchorNode.nodeType;\n            focusNode.nodeType;\n          } catch (e) {\n            return null;\n          }\n          return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);\n        }\n        function getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {\n          var length = 0;\n          var start = -1;\n          var end = -1;\n          var indexWithinAnchor = 0;\n          var indexWithinFocus = 0;\n          var node = outerNode;\n          var parentNode = null;\n          outer:\n            while (true) {\n              var next = null;\n              while (true) {\n                if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {\n                  start = length + anchorOffset;\n                }\n                if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {\n                  end = length + focusOffset;\n                }\n                if (node.nodeType === TEXT_NODE) {\n                  length += node.nodeValue.length;\n                }\n                if ((next = node.firstChild) === null) {\n                  break;\n                }\n                parentNode = node;\n                node = next;\n              }\n              while (true) {\n                if (node === outerNode) {\n                  break outer;\n                }\n                if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {\n                  start = length;\n                }\n                if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {\n                  end = length;\n                }\n                if ((next = node.nextSibling) !== null) {\n                  break;\n                }\n                node = parentNode;\n                parentNode = node.parentNode;\n              }\n              node = next;\n            }\n          if (start === -1 || end === -1) {\n            return null;\n          }\n          return {\n            start,\n            end\n          };\n        }\n        function setOffsets(node, offsets) {\n          var doc = node.ownerDocument || document;\n          var win = doc && doc.defaultView || window;\n          if (!win.getSelection) {\n            return;\n          }\n          var selection = win.getSelection();\n          var length = node.textContent.length;\n          var start = Math.min(offsets.start, length);\n          var end = offsets.end === void 0 ? start : Math.min(offsets.end, length);\n          if (!selection.extend && start > end) {\n            var temp = end;\n            end = start;\n            start = temp;\n          }\n          var startMarker = getNodeForCharacterOffset(node, start);\n          var endMarker = getNodeForCharacterOffset(node, end);\n          if (startMarker && endMarker) {\n            if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {\n              return;\n            }\n            var range = doc.createRange();\n            range.setStart(startMarker.node, startMarker.offset);\n            selection.removeAllRanges();\n            if (start > end) {\n              selection.addRange(range);\n              selection.extend(endMarker.node, endMarker.offset);\n            } else {\n              range.setEnd(endMarker.node, endMarker.offset);\n              selection.addRange(range);\n            }\n          }\n        }\n        function isTextNode(node) {\n          return node && node.nodeType === TEXT_NODE;\n        }\n        function containsNode(outerNode, innerNode) {\n          if (!outerNode || !innerNode) {\n            return false;\n          } else if (outerNode === innerNode) {\n            return true;\n          } else if (isTextNode(outerNode)) {\n            return false;\n          } else if (isTextNode(innerNode)) {\n            return containsNode(outerNode, innerNode.parentNode);\n          } else if (\"contains\" in outerNode) {\n            return outerNode.contains(innerNode);\n          } else if (outerNode.compareDocumentPosition) {\n            return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n          } else {\n            return false;\n          }\n        }\n        function isInDocument(node) {\n          return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);\n        }\n        function isSameOriginFrame(iframe) {\n          try {\n            return typeof iframe.contentWindow.location.href === \"string\";\n          } catch (err) {\n            return false;\n          }\n        }\n        function getActiveElementDeep() {\n          var win = window;\n          var element = getActiveElement();\n          while (element instanceof win.HTMLIFrameElement) {\n            if (isSameOriginFrame(element)) {\n              win = element.contentWindow;\n            } else {\n              return element;\n            }\n            element = getActiveElement(win.document);\n          }\n          return element;\n        }\n        function hasSelectionCapabilities(elem) {\n          var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n          return nodeName && (nodeName === \"input\" && (elem.type === \"text\" || elem.type === \"search\" || elem.type === \"tel\" || elem.type === \"url\" || elem.type === \"password\") || nodeName === \"textarea\" || elem.contentEditable === \"true\");\n        }\n        function getSelectionInformation() {\n          var focusedElem = getActiveElementDeep();\n          return {\n            focusedElem,\n            selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection(focusedElem) : null\n          };\n        }\n        function restoreSelection(priorSelectionInformation) {\n          var curFocusedElem = getActiveElementDeep();\n          var priorFocusedElem = priorSelectionInformation.focusedElem;\n          var priorSelectionRange = priorSelectionInformation.selectionRange;\n          if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n            if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) {\n              setSelection(priorFocusedElem, priorSelectionRange);\n            }\n            var ancestors = [];\n            var ancestor = priorFocusedElem;\n            while (ancestor = ancestor.parentNode) {\n              if (ancestor.nodeType === ELEMENT_NODE) {\n                ancestors.push({\n                  element: ancestor,\n                  left: ancestor.scrollLeft,\n                  top: ancestor.scrollTop\n                });\n              }\n            }\n            if (typeof priorFocusedElem.focus === \"function\") {\n              priorFocusedElem.focus();\n            }\n            for (var i = 0; i < ancestors.length; i++) {\n              var info = ancestors[i];\n              info.element.scrollLeft = info.left;\n              info.element.scrollTop = info.top;\n            }\n          }\n        }\n        function getSelection(input) {\n          var selection;\n          if (\"selectionStart\" in input) {\n            selection = {\n              start: input.selectionStart,\n              end: input.selectionEnd\n            };\n          } else {\n            selection = getOffsets(input);\n          }\n          return selection || {\n            start: 0,\n            end: 0\n          };\n        }\n        function setSelection(input, offsets) {\n          var start = offsets.start;\n          var end = offsets.end;\n          if (end === void 0) {\n            end = start;\n          }\n          if (\"selectionStart\" in input) {\n            input.selectionStart = start;\n            input.selectionEnd = Math.min(end, input.value.length);\n          } else {\n            setOffsets(input, offsets);\n          }\n        }\n        var skipSelectionChangeEvent = canUseDOM && \"documentMode\" in document && document.documentMode <= 11;\n        function registerEvents$3() {\n          registerTwoPhaseEvent(\"onSelect\", [\"focusout\", \"contextmenu\", \"dragend\", \"focusin\", \"keydown\", \"keyup\", \"mousedown\", \"mouseup\", \"selectionchange\"]);\n        }\n        var activeElement$1 = null;\n        var activeElementInst$1 = null;\n        var lastSelection = null;\n        var mouseDown = false;\n        function getSelection$1(node) {\n          if (\"selectionStart\" in node && hasSelectionCapabilities(node)) {\n            return {\n              start: node.selectionStart,\n              end: node.selectionEnd\n            };\n          } else {\n            var win = node.ownerDocument && node.ownerDocument.defaultView || window;\n            var selection = win.getSelection();\n            return {\n              anchorNode: selection.anchorNode,\n              anchorOffset: selection.anchorOffset,\n              focusNode: selection.focusNode,\n              focusOffset: selection.focusOffset\n            };\n          }\n        }\n        function getEventTargetDocument(eventTarget) {\n          return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument;\n        }\n        function constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n          var doc = getEventTargetDocument(nativeEventTarget);\n          if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) {\n            return;\n          }\n          var currentSelection = getSelection$1(activeElement$1);\n          if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n            lastSelection = currentSelection;\n            var listeners = accumulateTwoPhaseListeners(activeElementInst$1, \"onSelect\");\n            if (listeners.length > 0) {\n              var event = new SyntheticEvent(\"onSelect\", \"select\", null, nativeEvent, nativeEventTarget);\n              dispatchQueue.push({\n                event,\n                listeners\n              });\n              event.target = activeElement$1;\n            }\n          }\n        }\n        function extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n          var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n          switch (domEventName) {\n            case \"focusin\":\n              if (isTextInputElement(targetNode) || targetNode.contentEditable === \"true\") {\n                activeElement$1 = targetNode;\n                activeElementInst$1 = targetInst;\n                lastSelection = null;\n              }\n              break;\n            case \"focusout\":\n              activeElement$1 = null;\n              activeElementInst$1 = null;\n              lastSelection = null;\n              break;\n            case \"mousedown\":\n              mouseDown = true;\n              break;\n            case \"contextmenu\":\n            case \"mouseup\":\n            case \"dragend\":\n              mouseDown = false;\n              constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n              break;\n            case \"selectionchange\":\n              if (skipSelectionChangeEvent) {\n                break;\n              }\n            case \"keydown\":\n            case \"keyup\":\n              constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n          }\n        }\n        function makePrefixMap(styleProp, eventName) {\n          var prefixes2 = {};\n          prefixes2[styleProp.toLowerCase()] = eventName.toLowerCase();\n          prefixes2[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n          prefixes2[\"Moz\" + styleProp] = \"moz\" + eventName;\n          return prefixes2;\n        }\n        var vendorPrefixes = {\n          animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n          animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n          animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n          transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n        };\n        var prefixedEventNames = {};\n        var style = {};\n        if (canUseDOM) {\n          style = document.createElement(\"div\").style;\n          if (!(\"AnimationEvent\" in window)) {\n            delete vendorPrefixes.animationend.animation;\n            delete vendorPrefixes.animationiteration.animation;\n            delete vendorPrefixes.animationstart.animation;\n          }\n          if (!(\"TransitionEvent\" in window)) {\n            delete vendorPrefixes.transitionend.transition;\n          }\n        }\n        function getVendorPrefixedEventName(eventName) {\n          if (prefixedEventNames[eventName]) {\n            return prefixedEventNames[eventName];\n          } else if (!vendorPrefixes[eventName]) {\n            return eventName;\n          }\n          var prefixMap = vendorPrefixes[eventName];\n          for (var styleProp in prefixMap) {\n            if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n              return prefixedEventNames[eventName] = prefixMap[styleProp];\n            }\n          }\n          return eventName;\n        }\n        var ANIMATION_END = getVendorPrefixedEventName(\"animationend\");\n        var ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\");\n        var ANIMATION_START = getVendorPrefixedEventName(\"animationstart\");\n        var TRANSITION_END = getVendorPrefixedEventName(\"transitionend\");\n        var topLevelEventsToReactNames = /* @__PURE__ */ new Map();\n        var simpleEventPluginEvents = [\"abort\", \"auxClick\", \"cancel\", \"canPlay\", \"canPlayThrough\", \"click\", \"close\", \"contextMenu\", \"copy\", \"cut\", \"drag\", \"dragEnd\", \"dragEnter\", \"dragExit\", \"dragLeave\", \"dragOver\", \"dragStart\", \"drop\", \"durationChange\", \"emptied\", \"encrypted\", \"ended\", \"error\", \"gotPointerCapture\", \"input\", \"invalid\", \"keyDown\", \"keyPress\", \"keyUp\", \"load\", \"loadedData\", \"loadedMetadata\", \"loadStart\", \"lostPointerCapture\", \"mouseDown\", \"mouseMove\", \"mouseOut\", \"mouseOver\", \"mouseUp\", \"paste\", \"pause\", \"play\", \"playing\", \"pointerCancel\", \"pointerDown\", \"pointerMove\", \"pointerOut\", \"pointerOver\", \"pointerUp\", \"progress\", \"rateChange\", \"reset\", \"resize\", \"seeked\", \"seeking\", \"stalled\", \"submit\", \"suspend\", \"timeUpdate\", \"touchCancel\", \"touchEnd\", \"touchStart\", \"volumeChange\", \"scroll\", \"toggle\", \"touchMove\", \"waiting\", \"wheel\"];\n        function registerSimpleEvent(domEventName, reactName) {\n          topLevelEventsToReactNames.set(domEventName, reactName);\n          registerTwoPhaseEvent(reactName, [domEventName]);\n        }\n        function registerSimpleEvents() {\n          for (var i = 0; i < simpleEventPluginEvents.length; i++) {\n            var eventName = simpleEventPluginEvents[i];\n            var domEventName = eventName.toLowerCase();\n            var capitalizedEvent = eventName[0].toUpperCase() + eventName.slice(1);\n            registerSimpleEvent(domEventName, \"on\" + capitalizedEvent);\n          }\n          registerSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\n          registerSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\n          registerSimpleEvent(ANIMATION_START, \"onAnimationStart\");\n          registerSimpleEvent(\"dblclick\", \"onDoubleClick\");\n          registerSimpleEvent(\"focusin\", \"onFocus\");\n          registerSimpleEvent(\"focusout\", \"onBlur\");\n          registerSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\n        }\n        function extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n          var reactName = topLevelEventsToReactNames.get(domEventName);\n          if (reactName === void 0) {\n            return;\n          }\n          var SyntheticEventCtor = SyntheticEvent;\n          var reactEventType = domEventName;\n          switch (domEventName) {\n            case \"keypress\":\n              if (getEventCharCode(nativeEvent) === 0) {\n                return;\n              }\n            case \"keydown\":\n            case \"keyup\":\n              SyntheticEventCtor = SyntheticKeyboardEvent;\n              break;\n            case \"focusin\":\n              reactEventType = \"focus\";\n              SyntheticEventCtor = SyntheticFocusEvent;\n              break;\n            case \"focusout\":\n              reactEventType = \"blur\";\n              SyntheticEventCtor = SyntheticFocusEvent;\n              break;\n            case \"beforeblur\":\n            case \"afterblur\":\n              SyntheticEventCtor = SyntheticFocusEvent;\n              break;\n            case \"click\":\n              if (nativeEvent.button === 2) {\n                return;\n              }\n            case \"auxclick\":\n            case \"dblclick\":\n            case \"mousedown\":\n            case \"mousemove\":\n            case \"mouseup\":\n            case \"mouseout\":\n            case \"mouseover\":\n            case \"contextmenu\":\n              SyntheticEventCtor = SyntheticMouseEvent;\n              break;\n            case \"drag\":\n            case \"dragend\":\n            case \"dragenter\":\n            case \"dragexit\":\n            case \"dragleave\":\n            case \"dragover\":\n            case \"dragstart\":\n            case \"drop\":\n              SyntheticEventCtor = SyntheticDragEvent;\n              break;\n            case \"touchcancel\":\n            case \"touchend\":\n            case \"touchmove\":\n            case \"touchstart\":\n              SyntheticEventCtor = SyntheticTouchEvent;\n              break;\n            case ANIMATION_END:\n            case ANIMATION_ITERATION:\n            case ANIMATION_START:\n              SyntheticEventCtor = SyntheticAnimationEvent;\n              break;\n            case TRANSITION_END:\n              SyntheticEventCtor = SyntheticTransitionEvent;\n              break;\n            case \"scroll\":\n              SyntheticEventCtor = SyntheticUIEvent;\n              break;\n            case \"wheel\":\n              SyntheticEventCtor = SyntheticWheelEvent;\n              break;\n            case \"copy\":\n            case \"cut\":\n            case \"paste\":\n              SyntheticEventCtor = SyntheticClipboardEvent;\n              break;\n            case \"gotpointercapture\":\n            case \"lostpointercapture\":\n            case \"pointercancel\":\n            case \"pointerdown\":\n            case \"pointermove\":\n            case \"pointerout\":\n            case \"pointerover\":\n            case \"pointerup\":\n              SyntheticEventCtor = SyntheticPointerEvent;\n              break;\n          }\n          var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n          {\n            var accumulateTargetOnly = !inCapturePhase && // TODO: ideally, we'd eventually add all events from\n            // nonDelegatedEvents list in DOMPluginEventSystem.\n            // Then we can remove this special list.\n            // This is a breaking change that can wait until React 18.\n            domEventName === \"scroll\";\n            var _listeners = accumulateSinglePhaseListeners(targetInst, reactName, nativeEvent.type, inCapturePhase, accumulateTargetOnly);\n            if (_listeners.length > 0) {\n              var _event = new SyntheticEventCtor(reactName, reactEventType, null, nativeEvent, nativeEventTarget);\n              dispatchQueue.push({\n                event: _event,\n                listeners: _listeners\n              });\n            }\n          }\n        }\n        registerSimpleEvents();\n        registerEvents$2();\n        registerEvents$1();\n        registerEvents$3();\n        registerEvents();\n        function extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n          extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n          var shouldProcessPolyfillPlugins = (eventSystemFlags & SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS) === 0;\n          if (shouldProcessPolyfillPlugins) {\n            extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n            extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n            extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n            extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n          }\n        }\n        var mediaEventTypes = [\"abort\", \"canplay\", \"canplaythrough\", \"durationchange\", \"emptied\", \"encrypted\", \"ended\", \"error\", \"loadeddata\", \"loadedmetadata\", \"loadstart\", \"pause\", \"play\", \"playing\", \"progress\", \"ratechange\", \"resize\", \"seeked\", \"seeking\", \"stalled\", \"suspend\", \"timeupdate\", \"volumechange\", \"waiting\"];\n        var nonDelegatedEvents = new Set([\"cancel\", \"close\", \"invalid\", \"load\", \"scroll\", \"toggle\"].concat(mediaEventTypes));\n        function executeDispatch(event, listener, currentTarget) {\n          var type = event.type || \"unknown-event\";\n          event.currentTarget = currentTarget;\n          invokeGuardedCallbackAndCatchFirstError(type, listener, void 0, event);\n          event.currentTarget = null;\n        }\n        function processDispatchQueueItemsInOrder(event, dispatchListeners, inCapturePhase) {\n          var previousInstance;\n          if (inCapturePhase) {\n            for (var i = dispatchListeners.length - 1; i >= 0; i--) {\n              var _dispatchListeners$i = dispatchListeners[i], instance = _dispatchListeners$i.instance, currentTarget = _dispatchListeners$i.currentTarget, listener = _dispatchListeners$i.listener;\n              if (instance !== previousInstance && event.isPropagationStopped()) {\n                return;\n              }\n              executeDispatch(event, listener, currentTarget);\n              previousInstance = instance;\n            }\n          } else {\n            for (var _i = 0; _i < dispatchListeners.length; _i++) {\n              var _dispatchListeners$_i = dispatchListeners[_i], _instance = _dispatchListeners$_i.instance, _currentTarget = _dispatchListeners$_i.currentTarget, _listener = _dispatchListeners$_i.listener;\n              if (_instance !== previousInstance && event.isPropagationStopped()) {\n                return;\n              }\n              executeDispatch(event, _listener, _currentTarget);\n              previousInstance = _instance;\n            }\n          }\n        }\n        function processDispatchQueue(dispatchQueue, eventSystemFlags) {\n          var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n          for (var i = 0; i < dispatchQueue.length; i++) {\n            var _dispatchQueue$i = dispatchQueue[i], event = _dispatchQueue$i.event, listeners = _dispatchQueue$i.listeners;\n            processDispatchQueueItemsInOrder(event, listeners, inCapturePhase);\n          }\n          rethrowCaughtError();\n        }\n        function dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n          var nativeEventTarget = getEventTarget(nativeEvent);\n          var dispatchQueue = [];\n          extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n          processDispatchQueue(dispatchQueue, eventSystemFlags);\n        }\n        function listenToNonDelegatedEvent(domEventName, targetElement) {\n          {\n            if (!nonDelegatedEvents.has(domEventName)) {\n              error('Did not expect a listenToNonDelegatedEvent() call for \"%s\". This is a bug in React. Please file an issue.', domEventName);\n            }\n          }\n          var isCapturePhaseListener = false;\n          var listenerSet = getEventListenerSet(targetElement);\n          var listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener);\n          if (!listenerSet.has(listenerSetKey)) {\n            addTrappedEventListener(targetElement, domEventName, IS_NON_DELEGATED, isCapturePhaseListener);\n            listenerSet.add(listenerSetKey);\n          }\n        }\n        function listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n          {\n            if (nonDelegatedEvents.has(domEventName) && !isCapturePhaseListener) {\n              error('Did not expect a listenToNativeEvent() call for \"%s\" in the bubble phase. This is a bug in React. Please file an issue.', domEventName);\n            }\n          }\n          var eventSystemFlags = 0;\n          if (isCapturePhaseListener) {\n            eventSystemFlags |= IS_CAPTURE_PHASE;\n          }\n          addTrappedEventListener(target, domEventName, eventSystemFlags, isCapturePhaseListener);\n        }\n        var listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\n        function listenToAllSupportedEvents(rootContainerElement) {\n          if (!rootContainerElement[listeningMarker]) {\n            rootContainerElement[listeningMarker] = true;\n            allNativeEvents.forEach(function(domEventName) {\n              if (domEventName !== \"selectionchange\") {\n                if (!nonDelegatedEvents.has(domEventName)) {\n                  listenToNativeEvent(domEventName, false, rootContainerElement);\n                }\n                listenToNativeEvent(domEventName, true, rootContainerElement);\n              }\n            });\n            var ownerDocument = rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n            if (ownerDocument !== null) {\n              if (!ownerDocument[listeningMarker]) {\n                ownerDocument[listeningMarker] = true;\n                listenToNativeEvent(\"selectionchange\", false, ownerDocument);\n              }\n            }\n          }\n        }\n        function addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener, isDeferredListenerForLegacyFBSupport) {\n          var listener = createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags);\n          var isPassiveListener = void 0;\n          if (passiveBrowserEventsSupported) {\n            if (domEventName === \"touchstart\" || domEventName === \"touchmove\" || domEventName === \"wheel\") {\n              isPassiveListener = true;\n            }\n          }\n          targetContainer = targetContainer;\n          var unsubscribeListener;\n          if (isCapturePhaseListener) {\n            if (isPassiveListener !== void 0) {\n              unsubscribeListener = addEventCaptureListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n            } else {\n              unsubscribeListener = addEventCaptureListener(targetContainer, domEventName, listener);\n            }\n          } else {\n            if (isPassiveListener !== void 0) {\n              unsubscribeListener = addEventBubbleListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n            } else {\n              unsubscribeListener = addEventBubbleListener(targetContainer, domEventName, listener);\n            }\n          }\n        }\n        function isMatchingRootContainer(grandContainer, targetContainer) {\n          return grandContainer === targetContainer || grandContainer.nodeType === COMMENT_NODE && grandContainer.parentNode === targetContainer;\n        }\n        function dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n          var ancestorInst = targetInst;\n          if ((eventSystemFlags & IS_EVENT_HANDLE_NON_MANAGED_NODE) === 0 && (eventSystemFlags & IS_NON_DELEGATED) === 0) {\n            var targetContainerNode = targetContainer;\n            if (targetInst !== null) {\n              var node = targetInst;\n              mainLoop:\n                while (true) {\n                  if (node === null) {\n                    return;\n                  }\n                  var nodeTag = node.tag;\n                  if (nodeTag === HostRoot || nodeTag === HostPortal) {\n                    var container = node.stateNode.containerInfo;\n                    if (isMatchingRootContainer(container, targetContainerNode)) {\n                      break;\n                    }\n                    if (nodeTag === HostPortal) {\n                      var grandNode = node.return;\n                      while (grandNode !== null) {\n                        var grandTag = grandNode.tag;\n                        if (grandTag === HostRoot || grandTag === HostPortal) {\n                          var grandContainer = grandNode.stateNode.containerInfo;\n                          if (isMatchingRootContainer(grandContainer, targetContainerNode)) {\n                            return;\n                          }\n                        }\n                        grandNode = grandNode.return;\n                      }\n                    }\n                    while (container !== null) {\n                      var parentNode = getClosestInstanceFromNode(container);\n                      if (parentNode === null) {\n                        return;\n                      }\n                      var parentTag = parentNode.tag;\n                      if (parentTag === HostComponent || parentTag === HostText) {\n                        node = ancestorInst = parentNode;\n                        continue mainLoop;\n                      }\n                      container = container.parentNode;\n                    }\n                  }\n                  node = node.return;\n                }\n            }\n          }\n          batchedUpdates(function() {\n            return dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, ancestorInst);\n          });\n        }\n        function createDispatchListener(instance, listener, currentTarget) {\n          return {\n            instance,\n            listener,\n            currentTarget\n          };\n        }\n        function accumulateSinglePhaseListeners(targetFiber, reactName, nativeEventType, inCapturePhase, accumulateTargetOnly, nativeEvent) {\n          var captureName = reactName !== null ? reactName + \"Capture\" : null;\n          var reactEventName = inCapturePhase ? captureName : reactName;\n          var listeners = [];\n          var instance = targetFiber;\n          var lastHostComponent = null;\n          while (instance !== null) {\n            var _instance2 = instance, stateNode = _instance2.stateNode, tag = _instance2.tag;\n            if (tag === HostComponent && stateNode !== null) {\n              lastHostComponent = stateNode;\n              if (reactEventName !== null) {\n                var listener = getListener(instance, reactEventName);\n                if (listener != null) {\n                  listeners.push(createDispatchListener(instance, listener, lastHostComponent));\n                }\n              }\n            }\n            if (accumulateTargetOnly) {\n              break;\n            }\n            instance = instance.return;\n          }\n          return listeners;\n        }\n        function accumulateTwoPhaseListeners(targetFiber, reactName) {\n          var captureName = reactName + \"Capture\";\n          var listeners = [];\n          var instance = targetFiber;\n          while (instance !== null) {\n            var _instance3 = instance, stateNode = _instance3.stateNode, tag = _instance3.tag;\n            if (tag === HostComponent && stateNode !== null) {\n              var currentTarget = stateNode;\n              var captureListener = getListener(instance, captureName);\n              if (captureListener != null) {\n                listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n              }\n              var bubbleListener = getListener(instance, reactName);\n              if (bubbleListener != null) {\n                listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n              }\n            }\n            instance = instance.return;\n          }\n          return listeners;\n        }\n        function getParent(inst) {\n          if (inst === null) {\n            return null;\n          }\n          do {\n            inst = inst.return;\n          } while (inst && inst.tag !== HostComponent);\n          if (inst) {\n            return inst;\n          }\n          return null;\n        }\n        function getLowestCommonAncestor(instA, instB) {\n          var nodeA = instA;\n          var nodeB = instB;\n          var depthA = 0;\n          for (var tempA = nodeA; tempA; tempA = getParent(tempA)) {\n            depthA++;\n          }\n          var depthB = 0;\n          for (var tempB = nodeB; tempB; tempB = getParent(tempB)) {\n            depthB++;\n          }\n          while (depthA - depthB > 0) {\n            nodeA = getParent(nodeA);\n            depthA--;\n          }\n          while (depthB - depthA > 0) {\n            nodeB = getParent(nodeB);\n            depthB--;\n          }\n          var depth = depthA;\n          while (depth--) {\n            if (nodeA === nodeB || nodeB !== null && nodeA === nodeB.alternate) {\n              return nodeA;\n            }\n            nodeA = getParent(nodeA);\n            nodeB = getParent(nodeB);\n          }\n          return null;\n        }\n        function accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {\n          var registrationName = event._reactName;\n          var listeners = [];\n          var instance = target;\n          while (instance !== null) {\n            if (instance === common) {\n              break;\n            }\n            var _instance4 = instance, alternate = _instance4.alternate, stateNode = _instance4.stateNode, tag = _instance4.tag;\n            if (alternate !== null && alternate === common) {\n              break;\n            }\n            if (tag === HostComponent && stateNode !== null) {\n              var currentTarget = stateNode;\n              if (inCapturePhase) {\n                var captureListener = getListener(instance, registrationName);\n                if (captureListener != null) {\n                  listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n                }\n              } else if (!inCapturePhase) {\n                var bubbleListener = getListener(instance, registrationName);\n                if (bubbleListener != null) {\n                  listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n                }\n              }\n            }\n            instance = instance.return;\n          }\n          if (listeners.length !== 0) {\n            dispatchQueue.push({\n              event,\n              listeners\n            });\n          }\n        }\n        function accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leaveEvent, enterEvent, from, to) {\n          var common = from && to ? getLowestCommonAncestor(from, to) : null;\n          if (from !== null) {\n            accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common, false);\n          }\n          if (to !== null && enterEvent !== null) {\n            accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common, true);\n          }\n        }\n        function getListenerSetKey(domEventName, capture) {\n          return domEventName + \"__\" + (capture ? \"capture\" : \"bubble\");\n        }\n        var didWarnInvalidHydration = false;\n        var DANGEROUSLY_SET_INNER_HTML = \"dangerouslySetInnerHTML\";\n        var SUPPRESS_CONTENT_EDITABLE_WARNING = \"suppressContentEditableWarning\";\n        var SUPPRESS_HYDRATION_WARNING = \"suppressHydrationWarning\";\n        var AUTOFOCUS = \"autoFocus\";\n        var CHILDREN = \"children\";\n        var STYLE = \"style\";\n        var HTML$1 = \"__html\";\n        var warnedUnknownTags;\n        var validatePropertiesInDevelopment;\n        var warnForPropDifference;\n        var warnForExtraAttributes;\n        var warnForInvalidEventListener;\n        var canDiffStyleForHydrationWarning;\n        var normalizeHTML;\n        {\n          warnedUnknownTags = {\n            // There are working polyfills for <dialog>. Let people use it.\n            dialog: true,\n            // Electron ships a custom <webview> tag to display external web content in\n            // an isolated frame and process.\n            // This tag is not present in non Electron environments such as JSDom which\n            // is often used for testing purposes.\n            // @see https://electronjs.org/docs/api/webview-tag\n            webview: true\n          };\n          validatePropertiesInDevelopment = function(type, props) {\n            validateProperties(type, props);\n            validateProperties$1(type, props);\n            validateProperties$2(type, props, {\n              registrationNameDependencies,\n              possibleRegistrationNames\n            });\n          };\n          canDiffStyleForHydrationWarning = canUseDOM && !document.documentMode;\n          warnForPropDifference = function(propName, serverValue, clientValue) {\n            if (didWarnInvalidHydration) {\n              return;\n            }\n            var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue);\n            var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue);\n            if (normalizedServerValue === normalizedClientValue) {\n              return;\n            }\n            didWarnInvalidHydration = true;\n            error(\"Prop `%s` did not match. Server: %s Client: %s\", propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));\n          };\n          warnForExtraAttributes = function(attributeNames) {\n            if (didWarnInvalidHydration) {\n              return;\n            }\n            didWarnInvalidHydration = true;\n            var names = [];\n            attributeNames.forEach(function(name) {\n              names.push(name);\n            });\n            error(\"Extra attributes from the server: %s\", names);\n          };\n          warnForInvalidEventListener = function(registrationName, listener) {\n            if (listener === false) {\n              error(\"Expected `%s` listener to be a function, instead got `false`.\\n\\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.\", registrationName, registrationName, registrationName);\n            } else {\n              error(\"Expected `%s` listener to be a function, instead got a value of `%s` type.\", registrationName, typeof listener);\n            }\n          };\n          normalizeHTML = function(parent, html) {\n            var testElement = parent.namespaceURI === HTML_NAMESPACE ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);\n            testElement.innerHTML = html;\n            return testElement.innerHTML;\n          };\n        }\n        var NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g;\n        var NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\n        function normalizeMarkupForTextOrAttribute(markup) {\n          {\n            checkHtmlStringCoercion(markup);\n          }\n          var markupString = typeof markup === \"string\" ? markup : \"\" + markup;\n          return markupString.replace(NORMALIZE_NEWLINES_REGEX, \"\\n\").replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n        }\n        function checkForUnmatchedText(serverText, clientText, isConcurrentMode, shouldWarnDev) {\n          var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);\n          var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);\n          if (normalizedServerText === normalizedClientText) {\n            return;\n          }\n          if (shouldWarnDev) {\n            {\n              if (!didWarnInvalidHydration) {\n                didWarnInvalidHydration = true;\n                error('Text content did not match. Server: \"%s\" Client: \"%s\"', normalizedServerText, normalizedClientText);\n              }\n            }\n          }\n          if (isConcurrentMode && enableClientRenderFallbackOnTextMismatch) {\n            throw new Error(\"Text content does not match server-rendered HTML.\");\n          }\n        }\n        function getOwnerDocumentFromRootContainer(rootContainerElement) {\n          return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n        }\n        function noop() {\n        }\n        function trapClickOnNonInteractiveElement(node) {\n          node.onclick = noop;\n        }\n        function setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) {\n          for (var propKey in nextProps) {\n            if (!nextProps.hasOwnProperty(propKey)) {\n              continue;\n            }\n            var nextProp = nextProps[propKey];\n            if (propKey === STYLE) {\n              {\n                if (nextProp) {\n                  Object.freeze(nextProp);\n                }\n              }\n              setValueForStyles(domElement, nextProp);\n            } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n              var nextHtml = nextProp ? nextProp[HTML$1] : void 0;\n              if (nextHtml != null) {\n                setInnerHTML(domElement, nextHtml);\n              }\n            } else if (propKey === CHILDREN) {\n              if (typeof nextProp === \"string\") {\n                var canSetTextContent = tag !== \"textarea\" || nextProp !== \"\";\n                if (canSetTextContent) {\n                  setTextContent(domElement, nextProp);\n                }\n              } else if (typeof nextProp === \"number\") {\n                setTextContent(domElement, \"\" + nextProp);\n              }\n            } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING)\n              ;\n            else if (propKey === AUTOFOCUS)\n              ;\n            else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n              if (nextProp != null) {\n                if (typeof nextProp !== \"function\") {\n                  warnForInvalidEventListener(propKey, nextProp);\n                }\n                if (propKey === \"onScroll\") {\n                  listenToNonDelegatedEvent(\"scroll\", domElement);\n                }\n              }\n            } else if (nextProp != null) {\n              setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag);\n            }\n          }\n        }\n        function updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {\n          for (var i = 0; i < updatePayload.length; i += 2) {\n            var propKey = updatePayload[i];\n            var propValue = updatePayload[i + 1];\n            if (propKey === STYLE) {\n              setValueForStyles(domElement, propValue);\n            } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n              setInnerHTML(domElement, propValue);\n            } else if (propKey === CHILDREN) {\n              setTextContent(domElement, propValue);\n            } else {\n              setValueForProperty(domElement, propKey, propValue, isCustomComponentTag);\n            }\n          }\n        }\n        function createElement(type, props, rootContainerElement, parentNamespace) {\n          var isCustomComponentTag;\n          var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);\n          var domElement;\n          var namespaceURI = parentNamespace;\n          if (namespaceURI === HTML_NAMESPACE) {\n            namespaceURI = getIntrinsicNamespace(type);\n          }\n          if (namespaceURI === HTML_NAMESPACE) {\n            {\n              isCustomComponentTag = isCustomComponent(type, props);\n              if (!isCustomComponentTag && type !== type.toLowerCase()) {\n                error(\"<%s /> is using incorrect casing. Use PascalCase for React components, or lowercase for HTML elements.\", type);\n              }\n            }\n            if (type === \"script\") {\n              var div = ownerDocument.createElement(\"div\");\n              div.innerHTML = \"<script><\\/script>\";\n              var firstChild = div.firstChild;\n              domElement = div.removeChild(firstChild);\n            } else if (typeof props.is === \"string\") {\n              domElement = ownerDocument.createElement(type, {\n                is: props.is\n              });\n            } else {\n              domElement = ownerDocument.createElement(type);\n              if (type === \"select\") {\n                var node = domElement;\n                if (props.multiple) {\n                  node.multiple = true;\n                } else if (props.size) {\n                  node.size = props.size;\n                }\n              }\n            }\n          } else {\n            domElement = ownerDocument.createElementNS(namespaceURI, type);\n          }\n          {\n            if (namespaceURI === HTML_NAMESPACE) {\n              if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === \"[object HTMLUnknownElement]\" && !hasOwnProperty.call(warnedUnknownTags, type)) {\n                warnedUnknownTags[type] = true;\n                error(\"The tag <%s> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.\", type);\n              }\n            }\n          }\n          return domElement;\n        }\n        function createTextNode(text, rootContainerElement) {\n          return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);\n        }\n        function setInitialProperties(domElement, tag, rawProps, rootContainerElement) {\n          var isCustomComponentTag = isCustomComponent(tag, rawProps);\n          {\n            validatePropertiesInDevelopment(tag, rawProps);\n          }\n          var props;\n          switch (tag) {\n            case \"dialog\":\n              listenToNonDelegatedEvent(\"cancel\", domElement);\n              listenToNonDelegatedEvent(\"close\", domElement);\n              props = rawProps;\n              break;\n            case \"iframe\":\n            case \"object\":\n            case \"embed\":\n              listenToNonDelegatedEvent(\"load\", domElement);\n              props = rawProps;\n              break;\n            case \"video\":\n            case \"audio\":\n              for (var i = 0; i < mediaEventTypes.length; i++) {\n                listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n              }\n              props = rawProps;\n              break;\n            case \"source\":\n              listenToNonDelegatedEvent(\"error\", domElement);\n              props = rawProps;\n              break;\n            case \"img\":\n            case \"image\":\n            case \"link\":\n              listenToNonDelegatedEvent(\"error\", domElement);\n              listenToNonDelegatedEvent(\"load\", domElement);\n              props = rawProps;\n              break;\n            case \"details\":\n              listenToNonDelegatedEvent(\"toggle\", domElement);\n              props = rawProps;\n              break;\n            case \"input\":\n              initWrapperState(domElement, rawProps);\n              props = getHostProps(domElement, rawProps);\n              listenToNonDelegatedEvent(\"invalid\", domElement);\n              break;\n            case \"option\":\n              validateProps(domElement, rawProps);\n              props = rawProps;\n              break;\n            case \"select\":\n              initWrapperState$1(domElement, rawProps);\n              props = getHostProps$1(domElement, rawProps);\n              listenToNonDelegatedEvent(\"invalid\", domElement);\n              break;\n            case \"textarea\":\n              initWrapperState$2(domElement, rawProps);\n              props = getHostProps$2(domElement, rawProps);\n              listenToNonDelegatedEvent(\"invalid\", domElement);\n              break;\n            default:\n              props = rawProps;\n          }\n          assertValidProps(tag, props);\n          setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag);\n          switch (tag) {\n            case \"input\":\n              track(domElement);\n              postMountWrapper(domElement, rawProps, false);\n              break;\n            case \"textarea\":\n              track(domElement);\n              postMountWrapper$3(domElement);\n              break;\n            case \"option\":\n              postMountWrapper$1(domElement, rawProps);\n              break;\n            case \"select\":\n              postMountWrapper$2(domElement, rawProps);\n              break;\n            default:\n              if (typeof props.onClick === \"function\") {\n                trapClickOnNonInteractiveElement(domElement);\n              }\n              break;\n          }\n        }\n        function diffProperties(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {\n          {\n            validatePropertiesInDevelopment(tag, nextRawProps);\n          }\n          var updatePayload = null;\n          var lastProps;\n          var nextProps;\n          switch (tag) {\n            case \"input\":\n              lastProps = getHostProps(domElement, lastRawProps);\n              nextProps = getHostProps(domElement, nextRawProps);\n              updatePayload = [];\n              break;\n            case \"select\":\n              lastProps = getHostProps$1(domElement, lastRawProps);\n              nextProps = getHostProps$1(domElement, nextRawProps);\n              updatePayload = [];\n              break;\n            case \"textarea\":\n              lastProps = getHostProps$2(domElement, lastRawProps);\n              nextProps = getHostProps$2(domElement, nextRawProps);\n              updatePayload = [];\n              break;\n            default:\n              lastProps = lastRawProps;\n              nextProps = nextRawProps;\n              if (typeof lastProps.onClick !== \"function\" && typeof nextProps.onClick === \"function\") {\n                trapClickOnNonInteractiveElement(domElement);\n              }\n              break;\n          }\n          assertValidProps(tag, nextProps);\n          var propKey;\n          var styleName;\n          var styleUpdates = null;\n          for (propKey in lastProps) {\n            if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n              continue;\n            }\n            if (propKey === STYLE) {\n              var lastStyle = lastProps[propKey];\n              for (styleName in lastStyle) {\n                if (lastStyle.hasOwnProperty(styleName)) {\n                  if (!styleUpdates) {\n                    styleUpdates = {};\n                  }\n                  styleUpdates[styleName] = \"\";\n                }\n              }\n            } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN)\n              ;\n            else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING)\n              ;\n            else if (propKey === AUTOFOCUS)\n              ;\n            else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n              if (!updatePayload) {\n                updatePayload = [];\n              }\n            } else {\n              (updatePayload = updatePayload || []).push(propKey, null);\n            }\n          }\n          for (propKey in nextProps) {\n            var nextProp = nextProps[propKey];\n            var lastProp = lastProps != null ? lastProps[propKey] : void 0;\n            if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n              continue;\n            }\n            if (propKey === STYLE) {\n              {\n                if (nextProp) {\n                  Object.freeze(nextProp);\n                }\n              }\n              if (lastProp) {\n                for (styleName in lastProp) {\n                  if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n                    if (!styleUpdates) {\n                      styleUpdates = {};\n                    }\n                    styleUpdates[styleName] = \"\";\n                  }\n                }\n                for (styleName in nextProp) {\n                  if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n                    if (!styleUpdates) {\n                      styleUpdates = {};\n                    }\n                    styleUpdates[styleName] = nextProp[styleName];\n                  }\n                }\n              } else {\n                if (!styleUpdates) {\n                  if (!updatePayload) {\n                    updatePayload = [];\n                  }\n                  updatePayload.push(propKey, styleUpdates);\n                }\n                styleUpdates = nextProp;\n              }\n            } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n              var nextHtml = nextProp ? nextProp[HTML$1] : void 0;\n              var lastHtml = lastProp ? lastProp[HTML$1] : void 0;\n              if (nextHtml != null) {\n                if (lastHtml !== nextHtml) {\n                  (updatePayload = updatePayload || []).push(propKey, nextHtml);\n                }\n              }\n            } else if (propKey === CHILDREN) {\n              if (typeof nextProp === \"string\" || typeof nextProp === \"number\") {\n                (updatePayload = updatePayload || []).push(propKey, \"\" + nextProp);\n              }\n            } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING)\n              ;\n            else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n              if (nextProp != null) {\n                if (typeof nextProp !== \"function\") {\n                  warnForInvalidEventListener(propKey, nextProp);\n                }\n                if (propKey === \"onScroll\") {\n                  listenToNonDelegatedEvent(\"scroll\", domElement);\n                }\n              }\n              if (!updatePayload && lastProp !== nextProp) {\n                updatePayload = [];\n              }\n            } else {\n              (updatePayload = updatePayload || []).push(propKey, nextProp);\n            }\n          }\n          if (styleUpdates) {\n            {\n              validateShorthandPropertyCollisionInDev(styleUpdates, nextProps[STYLE]);\n            }\n            (updatePayload = updatePayload || []).push(STYLE, styleUpdates);\n          }\n          return updatePayload;\n        }\n        function updateProperties(domElement, updatePayload, tag, lastRawProps, nextRawProps) {\n          if (tag === \"input\" && nextRawProps.type === \"radio\" && nextRawProps.name != null) {\n            updateChecked(domElement, nextRawProps);\n          }\n          var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);\n          var isCustomComponentTag = isCustomComponent(tag, nextRawProps);\n          updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag);\n          switch (tag) {\n            case \"input\":\n              updateWrapper(domElement, nextRawProps);\n              break;\n            case \"textarea\":\n              updateWrapper$1(domElement, nextRawProps);\n              break;\n            case \"select\":\n              postUpdateWrapper(domElement, nextRawProps);\n              break;\n          }\n        }\n        function getPossibleStandardName(propName) {\n          {\n            var lowerCasedName = propName.toLowerCase();\n            if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n              return null;\n            }\n            return possibleStandardNames[lowerCasedName] || null;\n          }\n        }\n        function diffHydratedProperties(domElement, tag, rawProps, parentNamespace, rootContainerElement, isConcurrentMode, shouldWarnDev) {\n          var isCustomComponentTag;\n          var extraAttributeNames;\n          {\n            isCustomComponentTag = isCustomComponent(tag, rawProps);\n            validatePropertiesInDevelopment(tag, rawProps);\n          }\n          switch (tag) {\n            case \"dialog\":\n              listenToNonDelegatedEvent(\"cancel\", domElement);\n              listenToNonDelegatedEvent(\"close\", domElement);\n              break;\n            case \"iframe\":\n            case \"object\":\n            case \"embed\":\n              listenToNonDelegatedEvent(\"load\", domElement);\n              break;\n            case \"video\":\n            case \"audio\":\n              for (var i = 0; i < mediaEventTypes.length; i++) {\n                listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n              }\n              break;\n            case \"source\":\n              listenToNonDelegatedEvent(\"error\", domElement);\n              break;\n            case \"img\":\n            case \"image\":\n            case \"link\":\n              listenToNonDelegatedEvent(\"error\", domElement);\n              listenToNonDelegatedEvent(\"load\", domElement);\n              break;\n            case \"details\":\n              listenToNonDelegatedEvent(\"toggle\", domElement);\n              break;\n            case \"input\":\n              initWrapperState(domElement, rawProps);\n              listenToNonDelegatedEvent(\"invalid\", domElement);\n              break;\n            case \"option\":\n              validateProps(domElement, rawProps);\n              break;\n            case \"select\":\n              initWrapperState$1(domElement, rawProps);\n              listenToNonDelegatedEvent(\"invalid\", domElement);\n              break;\n            case \"textarea\":\n              initWrapperState$2(domElement, rawProps);\n              listenToNonDelegatedEvent(\"invalid\", domElement);\n              break;\n          }\n          assertValidProps(tag, rawProps);\n          {\n            extraAttributeNames = /* @__PURE__ */ new Set();\n            var attributes = domElement.attributes;\n            for (var _i = 0; _i < attributes.length; _i++) {\n              var name = attributes[_i].name.toLowerCase();\n              switch (name) {\n                case \"value\":\n                  break;\n                case \"checked\":\n                  break;\n                case \"selected\":\n                  break;\n                default:\n                  extraAttributeNames.add(attributes[_i].name);\n              }\n            }\n          }\n          var updatePayload = null;\n          for (var propKey in rawProps) {\n            if (!rawProps.hasOwnProperty(propKey)) {\n              continue;\n            }\n            var nextProp = rawProps[propKey];\n            if (propKey === CHILDREN) {\n              if (typeof nextProp === \"string\") {\n                if (domElement.textContent !== nextProp) {\n                  if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n                    checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);\n                  }\n                  updatePayload = [CHILDREN, nextProp];\n                }\n              } else if (typeof nextProp === \"number\") {\n                if (domElement.textContent !== \"\" + nextProp) {\n                  if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n                    checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);\n                  }\n                  updatePayload = [CHILDREN, \"\" + nextProp];\n                }\n              }\n            } else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n              if (nextProp != null) {\n                if (typeof nextProp !== \"function\") {\n                  warnForInvalidEventListener(propKey, nextProp);\n                }\n                if (propKey === \"onScroll\") {\n                  listenToNonDelegatedEvent(\"scroll\", domElement);\n                }\n              }\n            } else if (shouldWarnDev && true && // Convince Flow we've calculated it (it's DEV-only in this method.)\n            typeof isCustomComponentTag === \"boolean\") {\n              var serverValue = void 0;\n              var propertyInfo = isCustomComponentTag && enableCustomElementPropertySupport ? null : getPropertyInfo(propKey);\n              if (rawProps[SUPPRESS_HYDRATION_WARNING] === true)\n                ;\n              else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated\n              // TODO: Only ignore them on controlled tags.\n              propKey === \"value\" || propKey === \"checked\" || propKey === \"selected\")\n                ;\n              else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n                var serverHTML = domElement.innerHTML;\n                var nextHtml = nextProp ? nextProp[HTML$1] : void 0;\n                if (nextHtml != null) {\n                  var expectedHTML = normalizeHTML(domElement, nextHtml);\n                  if (expectedHTML !== serverHTML) {\n                    warnForPropDifference(propKey, serverHTML, expectedHTML);\n                  }\n                }\n              } else if (propKey === STYLE) {\n                extraAttributeNames.delete(propKey);\n                if (canDiffStyleForHydrationWarning) {\n                  var expectedStyle = createDangerousStringForStyles(nextProp);\n                  serverValue = domElement.getAttribute(\"style\");\n                  if (expectedStyle !== serverValue) {\n                    warnForPropDifference(propKey, serverValue, expectedStyle);\n                  }\n                }\n              } else if (isCustomComponentTag && !enableCustomElementPropertySupport) {\n                extraAttributeNames.delete(propKey.toLowerCase());\n                serverValue = getValueForAttribute(domElement, propKey, nextProp);\n                if (nextProp !== serverValue) {\n                  warnForPropDifference(propKey, serverValue, nextProp);\n                }\n              } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) {\n                var isMismatchDueToBadCasing = false;\n                if (propertyInfo !== null) {\n                  extraAttributeNames.delete(propertyInfo.attributeName);\n                  serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);\n                } else {\n                  var ownNamespace = parentNamespace;\n                  if (ownNamespace === HTML_NAMESPACE) {\n                    ownNamespace = getIntrinsicNamespace(tag);\n                  }\n                  if (ownNamespace === HTML_NAMESPACE) {\n                    extraAttributeNames.delete(propKey.toLowerCase());\n                  } else {\n                    var standardName = getPossibleStandardName(propKey);\n                    if (standardName !== null && standardName !== propKey) {\n                      isMismatchDueToBadCasing = true;\n                      extraAttributeNames.delete(standardName);\n                    }\n                    extraAttributeNames.delete(propKey);\n                  }\n                  serverValue = getValueForAttribute(domElement, propKey, nextProp);\n                }\n                var dontWarnCustomElement = enableCustomElementPropertySupport;\n                if (!dontWarnCustomElement && nextProp !== serverValue && !isMismatchDueToBadCasing) {\n                  warnForPropDifference(propKey, serverValue, nextProp);\n                }\n              }\n            }\n          }\n          {\n            if (shouldWarnDev) {\n              if (\n                // $FlowFixMe - Should be inferred as not undefined.\n                extraAttributeNames.size > 0 && rawProps[SUPPRESS_HYDRATION_WARNING] !== true\n              ) {\n                warnForExtraAttributes(extraAttributeNames);\n              }\n            }\n          }\n          switch (tag) {\n            case \"input\":\n              track(domElement);\n              postMountWrapper(domElement, rawProps, true);\n              break;\n            case \"textarea\":\n              track(domElement);\n              postMountWrapper$3(domElement);\n              break;\n            case \"select\":\n            case \"option\":\n              break;\n            default:\n              if (typeof rawProps.onClick === \"function\") {\n                trapClickOnNonInteractiveElement(domElement);\n              }\n              break;\n          }\n          return updatePayload;\n        }\n        function diffHydratedText(textNode, text, isConcurrentMode) {\n          var isDifferent = textNode.nodeValue !== text;\n          return isDifferent;\n        }\n        function warnForDeletedHydratableElement(parentNode, child) {\n          {\n            if (didWarnInvalidHydration) {\n              return;\n            }\n            didWarnInvalidHydration = true;\n            error(\"Did not expect server HTML to contain a <%s> in <%s>.\", child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());\n          }\n        }\n        function warnForDeletedHydratableText(parentNode, child) {\n          {\n            if (didWarnInvalidHydration) {\n              return;\n            }\n            didWarnInvalidHydration = true;\n            error('Did not expect server HTML to contain the text node \"%s\" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());\n          }\n        }\n        function warnForInsertedHydratedElement(parentNode, tag, props) {\n          {\n            if (didWarnInvalidHydration) {\n              return;\n            }\n            didWarnInvalidHydration = true;\n            error(\"Expected server HTML to contain a matching <%s> in <%s>.\", tag, parentNode.nodeName.toLowerCase());\n          }\n        }\n        function warnForInsertedHydratedText(parentNode, text) {\n          {\n            if (text === \"\") {\n              return;\n            }\n            if (didWarnInvalidHydration) {\n              return;\n            }\n            didWarnInvalidHydration = true;\n            error('Expected server HTML to contain a matching text node for \"%s\" in <%s>.', text, parentNode.nodeName.toLowerCase());\n          }\n        }\n        function restoreControlledState$3(domElement, tag, props) {\n          switch (tag) {\n            case \"input\":\n              restoreControlledState(domElement, props);\n              return;\n            case \"textarea\":\n              restoreControlledState$2(domElement, props);\n              return;\n            case \"select\":\n              restoreControlledState$1(domElement, props);\n              return;\n          }\n        }\n        var validateDOMNesting = function() {\n        };\n        var updatedAncestorInfo = function() {\n        };\n        {\n          var specialTags = [\"address\", \"applet\", \"area\", \"article\", \"aside\", \"base\", \"basefont\", \"bgsound\", \"blockquote\", \"body\", \"br\", \"button\", \"caption\", \"center\", \"col\", \"colgroup\", \"dd\", \"details\", \"dir\", \"div\", \"dl\", \"dt\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"footer\", \"form\", \"frame\", \"frameset\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"iframe\", \"img\", \"input\", \"isindex\", \"li\", \"link\", \"listing\", \"main\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"nav\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"p\", \"param\", \"plaintext\", \"pre\", \"script\", \"section\", \"select\", \"source\", \"style\", \"summary\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"title\", \"tr\", \"track\", \"ul\", \"wbr\", \"xmp\"];\n          var inScopeTags = [\n            \"applet\",\n            \"caption\",\n            \"html\",\n            \"table\",\n            \"td\",\n            \"th\",\n            \"marquee\",\n            \"object\",\n            \"template\",\n            // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n            // TODO: Distinguish by namespace here -- for <title>, including it here\n            // errs on the side of fewer warnings\n            \"foreignObject\",\n            \"desc\",\n            \"title\"\n          ];\n          var buttonScopeTags = inScopeTags.concat([\"button\"]);\n          var impliedEndTags = [\"dd\", \"dt\", \"li\", \"option\", \"optgroup\", \"p\", \"rp\", \"rt\"];\n          var emptyAncestorInfo = {\n            current: null,\n            formTag: null,\n            aTagInScope: null,\n            buttonTagInScope: null,\n            nobrTagInScope: null,\n            pTagInButtonScope: null,\n            listItemTagAutoclosing: null,\n            dlItemTagAutoclosing: null\n          };\n          updatedAncestorInfo = function(oldInfo, tag) {\n            var ancestorInfo = assign({}, oldInfo || emptyAncestorInfo);\n            var info = {\n              tag\n            };\n            if (inScopeTags.indexOf(tag) !== -1) {\n              ancestorInfo.aTagInScope = null;\n              ancestorInfo.buttonTagInScope = null;\n              ancestorInfo.nobrTagInScope = null;\n            }\n            if (buttonScopeTags.indexOf(tag) !== -1) {\n              ancestorInfo.pTagInButtonScope = null;\n            }\n            if (specialTags.indexOf(tag) !== -1 && tag !== \"address\" && tag !== \"div\" && tag !== \"p\") {\n              ancestorInfo.listItemTagAutoclosing = null;\n              ancestorInfo.dlItemTagAutoclosing = null;\n            }\n            ancestorInfo.current = info;\n            if (tag === \"form\") {\n              ancestorInfo.formTag = info;\n            }\n            if (tag === \"a\") {\n              ancestorInfo.aTagInScope = info;\n            }\n            if (tag === \"button\") {\n              ancestorInfo.buttonTagInScope = info;\n            }\n            if (tag === \"nobr\") {\n              ancestorInfo.nobrTagInScope = info;\n            }\n            if (tag === \"p\") {\n              ancestorInfo.pTagInButtonScope = info;\n            }\n            if (tag === \"li\") {\n              ancestorInfo.listItemTagAutoclosing = info;\n            }\n            if (tag === \"dd\" || tag === \"dt\") {\n              ancestorInfo.dlItemTagAutoclosing = info;\n            }\n            return ancestorInfo;\n          };\n          var isTagValidWithParent = function(tag, parentTag) {\n            switch (parentTag) {\n              case \"select\":\n                return tag === \"option\" || tag === \"optgroup\" || tag === \"#text\";\n              case \"optgroup\":\n                return tag === \"option\" || tag === \"#text\";\n              case \"option\":\n                return tag === \"#text\";\n              case \"tr\":\n                return tag === \"th\" || tag === \"td\" || tag === \"style\" || tag === \"script\" || tag === \"template\";\n              case \"tbody\":\n              case \"thead\":\n              case \"tfoot\":\n                return tag === \"tr\" || tag === \"style\" || tag === \"script\" || tag === \"template\";\n              case \"colgroup\":\n                return tag === \"col\" || tag === \"template\";\n              case \"table\":\n                return tag === \"caption\" || tag === \"colgroup\" || tag === \"tbody\" || tag === \"tfoot\" || tag === \"thead\" || tag === \"style\" || tag === \"script\" || tag === \"template\";\n              case \"head\":\n                return tag === \"base\" || tag === \"basefont\" || tag === \"bgsound\" || tag === \"link\" || tag === \"meta\" || tag === \"title\" || tag === \"noscript\" || tag === \"noframes\" || tag === \"style\" || tag === \"script\" || tag === \"template\";\n              case \"html\":\n                return tag === \"head\" || tag === \"body\" || tag === \"frameset\";\n              case \"frameset\":\n                return tag === \"frame\";\n              case \"#document\":\n                return tag === \"html\";\n            }\n            switch (tag) {\n              case \"h1\":\n              case \"h2\":\n              case \"h3\":\n              case \"h4\":\n              case \"h5\":\n              case \"h6\":\n                return parentTag !== \"h1\" && parentTag !== \"h2\" && parentTag !== \"h3\" && parentTag !== \"h4\" && parentTag !== \"h5\" && parentTag !== \"h6\";\n              case \"rp\":\n              case \"rt\":\n                return impliedEndTags.indexOf(parentTag) === -1;\n              case \"body\":\n              case \"caption\":\n              case \"col\":\n              case \"colgroup\":\n              case \"frameset\":\n              case \"frame\":\n              case \"head\":\n              case \"html\":\n              case \"tbody\":\n              case \"td\":\n              case \"tfoot\":\n              case \"th\":\n              case \"thead\":\n              case \"tr\":\n                return parentTag == null;\n            }\n            return true;\n          };\n          var findInvalidAncestorForTag = function(tag, ancestorInfo) {\n            switch (tag) {\n              case \"address\":\n              case \"article\":\n              case \"aside\":\n              case \"blockquote\":\n              case \"center\":\n              case \"details\":\n              case \"dialog\":\n              case \"dir\":\n              case \"div\":\n              case \"dl\":\n              case \"fieldset\":\n              case \"figcaption\":\n              case \"figure\":\n              case \"footer\":\n              case \"header\":\n              case \"hgroup\":\n              case \"main\":\n              case \"menu\":\n              case \"nav\":\n              case \"ol\":\n              case \"p\":\n              case \"section\":\n              case \"summary\":\n              case \"ul\":\n              case \"pre\":\n              case \"listing\":\n              case \"table\":\n              case \"hr\":\n              case \"xmp\":\n              case \"h1\":\n              case \"h2\":\n              case \"h3\":\n              case \"h4\":\n              case \"h5\":\n              case \"h6\":\n                return ancestorInfo.pTagInButtonScope;\n              case \"form\":\n                return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n              case \"li\":\n                return ancestorInfo.listItemTagAutoclosing;\n              case \"dd\":\n              case \"dt\":\n                return ancestorInfo.dlItemTagAutoclosing;\n              case \"button\":\n                return ancestorInfo.buttonTagInScope;\n              case \"a\":\n                return ancestorInfo.aTagInScope;\n              case \"nobr\":\n                return ancestorInfo.nobrTagInScope;\n            }\n            return null;\n          };\n          var didWarn$1 = {};\n          validateDOMNesting = function(childTag, childText, ancestorInfo) {\n            ancestorInfo = ancestorInfo || emptyAncestorInfo;\n            var parentInfo = ancestorInfo.current;\n            var parentTag = parentInfo && parentInfo.tag;\n            if (childText != null) {\n              if (childTag != null) {\n                error(\"validateDOMNesting: when childText is passed, childTag should be null\");\n              }\n              childTag = \"#text\";\n            }\n            var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n            var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n            var invalidParentOrAncestor = invalidParent || invalidAncestor;\n            if (!invalidParentOrAncestor) {\n              return;\n            }\n            var ancestorTag = invalidParentOrAncestor.tag;\n            var warnKey = !!invalidParent + \"|\" + childTag + \"|\" + ancestorTag;\n            if (didWarn$1[warnKey]) {\n              return;\n            }\n            didWarn$1[warnKey] = true;\n            var tagDisplayName = childTag;\n            var whitespaceInfo = \"\";\n            if (childTag === \"#text\") {\n              if (/\\S/.test(childText)) {\n                tagDisplayName = \"Text nodes\";\n              } else {\n                tagDisplayName = \"Whitespace text nodes\";\n                whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on each line of your source code.\";\n              }\n            } else {\n              tagDisplayName = \"<\" + childTag + \">\";\n            }\n            if (invalidParent) {\n              var info = \"\";\n              if (ancestorTag === \"table\" && childTag === \"tr\") {\n                info += \" Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by the browser.\";\n              }\n              error(\"validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s\", tagDisplayName, ancestorTag, whitespaceInfo, info);\n            } else {\n              error(\"validateDOMNesting(...): %s cannot appear as a descendant of <%s>.\", tagDisplayName, ancestorTag);\n            }\n          };\n        }\n        var SUPPRESS_HYDRATION_WARNING$1 = \"suppressHydrationWarning\";\n        var SUSPENSE_START_DATA = \"$\";\n        var SUSPENSE_END_DATA = \"/$\";\n        var SUSPENSE_PENDING_START_DATA = \"$?\";\n        var SUSPENSE_FALLBACK_START_DATA = \"$!\";\n        var STYLE$1 = \"style\";\n        var eventsEnabled = null;\n        var selectionInformation = null;\n        function getRootHostContext(rootContainerInstance) {\n          var type;\n          var namespace;\n          var nodeType = rootContainerInstance.nodeType;\n          switch (nodeType) {\n            case DOCUMENT_NODE:\n            case DOCUMENT_FRAGMENT_NODE: {\n              type = nodeType === DOCUMENT_NODE ? \"#document\" : \"#fragment\";\n              var root2 = rootContainerInstance.documentElement;\n              namespace = root2 ? root2.namespaceURI : getChildNamespace(null, \"\");\n              break;\n            }\n            default: {\n              var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;\n              var ownNamespace = container.namespaceURI || null;\n              type = container.tagName;\n              namespace = getChildNamespace(ownNamespace, type);\n              break;\n            }\n          }\n          {\n            var validatedTag = type.toLowerCase();\n            var ancestorInfo = updatedAncestorInfo(null, validatedTag);\n            return {\n              namespace,\n              ancestorInfo\n            };\n          }\n        }\n        function getChildHostContext(parentHostContext, type, rootContainerInstance) {\n          {\n            var parentHostContextDev = parentHostContext;\n            var namespace = getChildNamespace(parentHostContextDev.namespace, type);\n            var ancestorInfo = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type);\n            return {\n              namespace,\n              ancestorInfo\n            };\n          }\n        }\n        function getPublicInstance(instance) {\n          return instance;\n        }\n        function prepareForCommit(containerInfo) {\n          eventsEnabled = isEnabled();\n          selectionInformation = getSelectionInformation();\n          var activeInstance = null;\n          setEnabled(false);\n          return activeInstance;\n        }\n        function resetAfterCommit(containerInfo) {\n          restoreSelection(selectionInformation);\n          setEnabled(eventsEnabled);\n          eventsEnabled = null;\n          selectionInformation = null;\n        }\n        function createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n          var parentNamespace;\n          {\n            var hostContextDev = hostContext;\n            validateDOMNesting(type, null, hostContextDev.ancestorInfo);\n            if (typeof props.children === \"string\" || typeof props.children === \"number\") {\n              var string = \"\" + props.children;\n              var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n              validateDOMNesting(null, string, ownAncestorInfo);\n            }\n            parentNamespace = hostContextDev.namespace;\n          }\n          var domElement = createElement(type, props, rootContainerInstance, parentNamespace);\n          precacheFiberNode(internalInstanceHandle, domElement);\n          updateFiberProps(domElement, props);\n          return domElement;\n        }\n        function appendInitialChild(parentInstance, child) {\n          parentInstance.appendChild(child);\n        }\n        function finalizeInitialChildren(domElement, type, props, rootContainerInstance, hostContext) {\n          setInitialProperties(domElement, type, props, rootContainerInstance);\n          switch (type) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              return !!props.autoFocus;\n            case \"img\":\n              return true;\n            default:\n              return false;\n          }\n        }\n        function prepareUpdate(domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {\n          {\n            var hostContextDev = hostContext;\n            if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === \"string\" || typeof newProps.children === \"number\")) {\n              var string = \"\" + newProps.children;\n              var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n              validateDOMNesting(null, string, ownAncestorInfo);\n            }\n          }\n          return diffProperties(domElement, type, oldProps, newProps);\n        }\n        function shouldSetTextContent(type, props) {\n          return type === \"textarea\" || type === \"noscript\" || typeof props.children === \"string\" || typeof props.children === \"number\" || typeof props.dangerouslySetInnerHTML === \"object\" && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null;\n        }\n        function createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) {\n          {\n            var hostContextDev = hostContext;\n            validateDOMNesting(null, text, hostContextDev.ancestorInfo);\n          }\n          var textNode = createTextNode(text, rootContainerInstance);\n          precacheFiberNode(internalInstanceHandle, textNode);\n          return textNode;\n        }\n        function getCurrentEventPriority() {\n          var currentEvent = window.event;\n          if (currentEvent === void 0) {\n            return DefaultEventPriority;\n          }\n          return getEventPriority(currentEvent.type);\n        }\n        var scheduleTimeout = typeof setTimeout === \"function\" ? setTimeout : void 0;\n        var cancelTimeout = typeof clearTimeout === \"function\" ? clearTimeout : void 0;\n        var noTimeout = -1;\n        var localPromise = typeof Promise === \"function\" ? Promise : void 0;\n        var scheduleMicrotask = typeof queueMicrotask === \"function\" ? queueMicrotask : typeof localPromise !== \"undefined\" ? function(callback) {\n          return localPromise.resolve(null).then(callback).catch(handleErrorInNextTick);\n        } : scheduleTimeout;\n        function handleErrorInNextTick(error2) {\n          setTimeout(function() {\n            throw error2;\n          });\n        }\n        function commitMount(domElement, type, newProps, internalInstanceHandle) {\n          switch (type) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              if (newProps.autoFocus) {\n                domElement.focus();\n              }\n              return;\n            case \"img\": {\n              if (newProps.src) {\n                domElement.src = newProps.src;\n              }\n              return;\n            }\n          }\n        }\n        function commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {\n          updateProperties(domElement, updatePayload, type, oldProps, newProps);\n          updateFiberProps(domElement, newProps);\n        }\n        function resetTextContent(domElement) {\n          setTextContent(domElement, \"\");\n        }\n        function commitTextUpdate(textInstance, oldText, newText) {\n          textInstance.nodeValue = newText;\n        }\n        function appendChild(parentInstance, child) {\n          parentInstance.appendChild(child);\n        }\n        function appendChildToContainer(container, child) {\n          var parentNode;\n          if (container.nodeType === COMMENT_NODE) {\n            parentNode = container.parentNode;\n            parentNode.insertBefore(child, container);\n          } else {\n            parentNode = container;\n            parentNode.appendChild(child);\n          }\n          var reactRootContainer = container._reactRootContainer;\n          if ((reactRootContainer === null || reactRootContainer === void 0) && parentNode.onclick === null) {\n            trapClickOnNonInteractiveElement(parentNode);\n          }\n        }\n        function insertBefore(parentInstance, child, beforeChild) {\n          parentInstance.insertBefore(child, beforeChild);\n        }\n        function insertInContainerBefore(container, child, beforeChild) {\n          if (container.nodeType === COMMENT_NODE) {\n            container.parentNode.insertBefore(child, beforeChild);\n          } else {\n            container.insertBefore(child, beforeChild);\n          }\n        }\n        function removeChild(parentInstance, child) {\n          parentInstance.removeChild(child);\n        }\n        function removeChildFromContainer(container, child) {\n          if (container.nodeType === COMMENT_NODE) {\n            container.parentNode.removeChild(child);\n          } else {\n            container.removeChild(child);\n          }\n        }\n        function clearSuspenseBoundary(parentInstance, suspenseInstance) {\n          var node = suspenseInstance;\n          var depth = 0;\n          do {\n            var nextNode = node.nextSibling;\n            parentInstance.removeChild(node);\n            if (nextNode && nextNode.nodeType === COMMENT_NODE) {\n              var data = nextNode.data;\n              if (data === SUSPENSE_END_DATA) {\n                if (depth === 0) {\n                  parentInstance.removeChild(nextNode);\n                  retryIfBlockedOn(suspenseInstance);\n                  return;\n                } else {\n                  depth--;\n                }\n              } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_PENDING_START_DATA || data === SUSPENSE_FALLBACK_START_DATA) {\n                depth++;\n              }\n            }\n            node = nextNode;\n          } while (node);\n          retryIfBlockedOn(suspenseInstance);\n        }\n        function clearSuspenseBoundaryFromContainer(container, suspenseInstance) {\n          if (container.nodeType === COMMENT_NODE) {\n            clearSuspenseBoundary(container.parentNode, suspenseInstance);\n          } else if (container.nodeType === ELEMENT_NODE) {\n            clearSuspenseBoundary(container, suspenseInstance);\n          }\n          retryIfBlockedOn(container);\n        }\n        function hideInstance(instance) {\n          instance = instance;\n          var style2 = instance.style;\n          if (typeof style2.setProperty === \"function\") {\n            style2.setProperty(\"display\", \"none\", \"important\");\n          } else {\n            style2.display = \"none\";\n          }\n        }\n        function hideTextInstance(textInstance) {\n          textInstance.nodeValue = \"\";\n        }\n        function unhideInstance(instance, props) {\n          instance = instance;\n          var styleProp = props[STYLE$1];\n          var display = styleProp !== void 0 && styleProp !== null && styleProp.hasOwnProperty(\"display\") ? styleProp.display : null;\n          instance.style.display = dangerousStyleValue(\"display\", display);\n        }\n        function unhideTextInstance(textInstance, text) {\n          textInstance.nodeValue = text;\n        }\n        function clearContainer(container) {\n          if (container.nodeType === ELEMENT_NODE) {\n            container.textContent = \"\";\n          } else if (container.nodeType === DOCUMENT_NODE) {\n            if (container.documentElement) {\n              container.removeChild(container.documentElement);\n            }\n          }\n        }\n        function canHydrateInstance(instance, type, props) {\n          if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {\n            return null;\n          }\n          return instance;\n        }\n        function canHydrateTextInstance(instance, text) {\n          if (text === \"\" || instance.nodeType !== TEXT_NODE) {\n            return null;\n          }\n          return instance;\n        }\n        function canHydrateSuspenseInstance(instance) {\n          if (instance.nodeType !== COMMENT_NODE) {\n            return null;\n          }\n          return instance;\n        }\n        function isSuspenseInstancePending(instance) {\n          return instance.data === SUSPENSE_PENDING_START_DATA;\n        }\n        function isSuspenseInstanceFallback(instance) {\n          return instance.data === SUSPENSE_FALLBACK_START_DATA;\n        }\n        function getSuspenseInstanceFallbackErrorDetails(instance) {\n          var dataset = instance.nextSibling && instance.nextSibling.dataset;\n          var digest, message, stack;\n          if (dataset) {\n            digest = dataset.dgst;\n            {\n              message = dataset.msg;\n              stack = dataset.stck;\n            }\n          }\n          {\n            return {\n              message,\n              digest,\n              stack\n            };\n          }\n        }\n        function registerSuspenseInstanceRetry(instance, callback) {\n          instance._reactRetry = callback;\n        }\n        function getNextHydratable(node) {\n          for (; node != null; node = node.nextSibling) {\n            var nodeType = node.nodeType;\n            if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) {\n              break;\n            }\n            if (nodeType === COMMENT_NODE) {\n              var nodeData = node.data;\n              if (nodeData === SUSPENSE_START_DATA || nodeData === SUSPENSE_FALLBACK_START_DATA || nodeData === SUSPENSE_PENDING_START_DATA) {\n                break;\n              }\n              if (nodeData === SUSPENSE_END_DATA) {\n                return null;\n              }\n            }\n          }\n          return node;\n        }\n        function getNextHydratableSibling(instance) {\n          return getNextHydratable(instance.nextSibling);\n        }\n        function getFirstHydratableChild(parentInstance) {\n          return getNextHydratable(parentInstance.firstChild);\n        }\n        function getFirstHydratableChildWithinContainer(parentContainer) {\n          return getNextHydratable(parentContainer.firstChild);\n        }\n        function getFirstHydratableChildWithinSuspenseInstance(parentInstance) {\n          return getNextHydratable(parentInstance.nextSibling);\n        }\n        function hydrateInstance(instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle, shouldWarnDev) {\n          precacheFiberNode(internalInstanceHandle, instance);\n          updateFiberProps(instance, props);\n          var parentNamespace;\n          {\n            var hostContextDev = hostContext;\n            parentNamespace = hostContextDev.namespace;\n          }\n          var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;\n          return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance, isConcurrentMode, shouldWarnDev);\n        }\n        function hydrateTextInstance(textInstance, text, internalInstanceHandle, shouldWarnDev) {\n          precacheFiberNode(internalInstanceHandle, textInstance);\n          var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;\n          return diffHydratedText(textInstance, text);\n        }\n        function hydrateSuspenseInstance(suspenseInstance, internalInstanceHandle) {\n          precacheFiberNode(internalInstanceHandle, suspenseInstance);\n        }\n        function getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) {\n          var node = suspenseInstance.nextSibling;\n          var depth = 0;\n          while (node) {\n            if (node.nodeType === COMMENT_NODE) {\n              var data = node.data;\n              if (data === SUSPENSE_END_DATA) {\n                if (depth === 0) {\n                  return getNextHydratableSibling(node);\n                } else {\n                  depth--;\n                }\n              } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n                depth++;\n              }\n            }\n            node = node.nextSibling;\n          }\n          return null;\n        }\n        function getParentSuspenseInstance(targetInstance) {\n          var node = targetInstance.previousSibling;\n          var depth = 0;\n          while (node) {\n            if (node.nodeType === COMMENT_NODE) {\n              var data = node.data;\n              if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n                if (depth === 0) {\n                  return node;\n                } else {\n                  depth--;\n                }\n              } else if (data === SUSPENSE_END_DATA) {\n                depth++;\n              }\n            }\n            node = node.previousSibling;\n          }\n          return null;\n        }\n        function commitHydratedContainer(container) {\n          retryIfBlockedOn(container);\n        }\n        function commitHydratedSuspenseInstance(suspenseInstance) {\n          retryIfBlockedOn(suspenseInstance);\n        }\n        function shouldDeleteUnhydratedTailInstances(parentType) {\n          return parentType !== \"head\" && parentType !== \"body\";\n        }\n        function didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text, isConcurrentMode) {\n          var shouldWarnDev = true;\n          checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);\n        }\n        function didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text, isConcurrentMode) {\n          if (parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n            var shouldWarnDev = true;\n            checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);\n          }\n        }\n        function didNotHydrateInstanceWithinContainer(parentContainer, instance) {\n          {\n            if (instance.nodeType === ELEMENT_NODE) {\n              warnForDeletedHydratableElement(parentContainer, instance);\n            } else if (instance.nodeType === COMMENT_NODE)\n              ;\n            else {\n              warnForDeletedHydratableText(parentContainer, instance);\n            }\n          }\n        }\n        function didNotHydrateInstanceWithinSuspenseInstance(parentInstance, instance) {\n          {\n            var parentNode = parentInstance.parentNode;\n            if (parentNode !== null) {\n              if (instance.nodeType === ELEMENT_NODE) {\n                warnForDeletedHydratableElement(parentNode, instance);\n              } else if (instance.nodeType === COMMENT_NODE)\n                ;\n              else {\n                warnForDeletedHydratableText(parentNode, instance);\n              }\n            }\n          }\n        }\n        function didNotHydrateInstance(parentType, parentProps, parentInstance, instance, isConcurrentMode) {\n          {\n            if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n              if (instance.nodeType === ELEMENT_NODE) {\n                warnForDeletedHydratableElement(parentInstance, instance);\n              } else if (instance.nodeType === COMMENT_NODE)\n                ;\n              else {\n                warnForDeletedHydratableText(parentInstance, instance);\n              }\n            }\n          }\n        }\n        function didNotFindHydratableInstanceWithinContainer(parentContainer, type, props) {\n          {\n            warnForInsertedHydratedElement(parentContainer, type);\n          }\n        }\n        function didNotFindHydratableTextInstanceWithinContainer(parentContainer, text) {\n          {\n            warnForInsertedHydratedText(parentContainer, text);\n          }\n        }\n        function didNotFindHydratableInstanceWithinSuspenseInstance(parentInstance, type, props) {\n          {\n            var parentNode = parentInstance.parentNode;\n            if (parentNode !== null)\n              warnForInsertedHydratedElement(parentNode, type);\n          }\n        }\n        function didNotFindHydratableTextInstanceWithinSuspenseInstance(parentInstance, text) {\n          {\n            var parentNode = parentInstance.parentNode;\n            if (parentNode !== null)\n              warnForInsertedHydratedText(parentNode, text);\n          }\n        }\n        function didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props, isConcurrentMode) {\n          {\n            if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n              warnForInsertedHydratedElement(parentInstance, type);\n            }\n          }\n        }\n        function didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text, isConcurrentMode) {\n          {\n            if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n              warnForInsertedHydratedText(parentInstance, text);\n            }\n          }\n        }\n        function errorHydratingContainer(parentContainer) {\n          {\n            error(\"An error occurred during hydration. The server HTML was replaced with client content in <%s>.\", parentContainer.nodeName.toLowerCase());\n          }\n        }\n        function preparePortalMount(portalInstance) {\n          listenToAllSupportedEvents(portalInstance);\n        }\n        var randomKey = Math.random().toString(36).slice(2);\n        var internalInstanceKey = \"__reactFiber$\" + randomKey;\n        var internalPropsKey = \"__reactProps$\" + randomKey;\n        var internalContainerInstanceKey = \"__reactContainer$\" + randomKey;\n        var internalEventHandlersKey = \"__reactEvents$\" + randomKey;\n        var internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey;\n        var internalEventHandlesSetKey = \"__reactHandles$\" + randomKey;\n        function detachDeletedInstance(node) {\n          delete node[internalInstanceKey];\n          delete node[internalPropsKey];\n          delete node[internalEventHandlersKey];\n          delete node[internalEventHandlerListenersKey];\n          delete node[internalEventHandlesSetKey];\n        }\n        function precacheFiberNode(hostInst, node) {\n          node[internalInstanceKey] = hostInst;\n        }\n        function markContainerAsRoot(hostRoot, node) {\n          node[internalContainerInstanceKey] = hostRoot;\n        }\n        function unmarkContainerAsRoot(node) {\n          node[internalContainerInstanceKey] = null;\n        }\n        function isContainerMarkedAsRoot(node) {\n          return !!node[internalContainerInstanceKey];\n        }\n        function getClosestInstanceFromNode(targetNode) {\n          var targetInst = targetNode[internalInstanceKey];\n          if (targetInst) {\n            return targetInst;\n          }\n          var parentNode = targetNode.parentNode;\n          while (parentNode) {\n            targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey];\n            if (targetInst) {\n              var alternate = targetInst.alternate;\n              if (targetInst.child !== null || alternate !== null && alternate.child !== null) {\n                var suspenseInstance = getParentSuspenseInstance(targetNode);\n                while (suspenseInstance !== null) {\n                  var targetSuspenseInst = suspenseInstance[internalInstanceKey];\n                  if (targetSuspenseInst) {\n                    return targetSuspenseInst;\n                  }\n                  suspenseInstance = getParentSuspenseInstance(suspenseInstance);\n                }\n              }\n              return targetInst;\n            }\n            targetNode = parentNode;\n            parentNode = targetNode.parentNode;\n          }\n          return null;\n        }\n        function getInstanceFromNode(node) {\n          var inst = node[internalInstanceKey] || node[internalContainerInstanceKey];\n          if (inst) {\n            if (inst.tag === HostComponent || inst.tag === HostText || inst.tag === SuspenseComponent || inst.tag === HostRoot) {\n              return inst;\n            } else {\n              return null;\n            }\n          }\n          return null;\n        }\n        function getNodeFromInstance(inst) {\n          if (inst.tag === HostComponent || inst.tag === HostText) {\n            return inst.stateNode;\n          }\n          throw new Error(\"getNodeFromInstance: Invalid argument.\");\n        }\n        function getFiberCurrentPropsFromNode(node) {\n          return node[internalPropsKey] || null;\n        }\n        function updateFiberProps(node, props) {\n          node[internalPropsKey] = props;\n        }\n        function getEventListenerSet(node) {\n          var elementListenerSet = node[internalEventHandlersKey];\n          if (elementListenerSet === void 0) {\n            elementListenerSet = node[internalEventHandlersKey] = /* @__PURE__ */ new Set();\n          }\n          return elementListenerSet;\n        }\n        var loggedTypeFailures = {};\n        var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n        function setCurrentlyValidatingElement(element) {\n          {\n            if (element) {\n              var owner = element._owner;\n              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n              ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n            } else {\n              ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n            }\n          }\n        }\n        function checkPropTypes(typeSpecs, values, location, componentName, element) {\n          {\n            var has2 = Function.call.bind(hasOwnProperty);\n            for (var typeSpecName in typeSpecs) {\n              if (has2(typeSpecs, typeSpecName)) {\n                var error$1 = void 0;\n                try {\n                  if (typeof typeSpecs[typeSpecName] !== \"function\") {\n                    var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n                    err.name = \"Invariant Violation\";\n                    throw err;\n                  }\n                  error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\");\n                } catch (ex) {\n                  error$1 = ex;\n                }\n                if (error$1 && !(error$1 instanceof Error)) {\n                  setCurrentlyValidatingElement(element);\n                  error(\"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\", componentName || \"React class\", location, typeSpecName, typeof error$1);\n                  setCurrentlyValidatingElement(null);\n                }\n                if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n                  loggedTypeFailures[error$1.message] = true;\n                  setCurrentlyValidatingElement(element);\n                  error(\"Failed %s type: %s\", location, error$1.message);\n                  setCurrentlyValidatingElement(null);\n                }\n              }\n            }\n          }\n        }\n        var valueStack = [];\n        var fiberStack;\n        {\n          fiberStack = [];\n        }\n        var index = -1;\n        function createCursor(defaultValue) {\n          return {\n            current: defaultValue\n          };\n        }\n        function pop(cursor, fiber) {\n          if (index < 0) {\n            {\n              error(\"Unexpected pop.\");\n            }\n            return;\n          }\n          {\n            if (fiber !== fiberStack[index]) {\n              error(\"Unexpected Fiber popped.\");\n            }\n          }\n          cursor.current = valueStack[index];\n          valueStack[index] = null;\n          {\n            fiberStack[index] = null;\n          }\n          index--;\n        }\n        function push(cursor, value, fiber) {\n          index++;\n          valueStack[index] = cursor.current;\n          {\n            fiberStack[index] = fiber;\n          }\n          cursor.current = value;\n        }\n        var warnedAboutMissingGetChildContext;\n        {\n          warnedAboutMissingGetChildContext = {};\n        }\n        var emptyContextObject = {};\n        {\n          Object.freeze(emptyContextObject);\n        }\n        var contextStackCursor = createCursor(emptyContextObject);\n        var didPerformWorkStackCursor = createCursor(false);\n        var previousContext = emptyContextObject;\n        function getUnmaskedContext(workInProgress2, Component, didPushOwnContextIfProvider) {\n          {\n            if (didPushOwnContextIfProvider && isContextProvider(Component)) {\n              return previousContext;\n            }\n            return contextStackCursor.current;\n          }\n        }\n        function cacheContext(workInProgress2, unmaskedContext, maskedContext) {\n          {\n            var instance = workInProgress2.stateNode;\n            instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;\n            instance.__reactInternalMemoizedMaskedChildContext = maskedContext;\n          }\n        }\n        function getMaskedContext(workInProgress2, unmaskedContext) {\n          {\n            var type = workInProgress2.type;\n            var contextTypes = type.contextTypes;\n            if (!contextTypes) {\n              return emptyContextObject;\n            }\n            var instance = workInProgress2.stateNode;\n            if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {\n              return instance.__reactInternalMemoizedMaskedChildContext;\n            }\n            var context = {};\n            for (var key in contextTypes) {\n              context[key] = unmaskedContext[key];\n            }\n            {\n              var name = getComponentNameFromFiber(workInProgress2) || \"Unknown\";\n              checkPropTypes(contextTypes, context, \"context\", name);\n            }\n            if (instance) {\n              cacheContext(workInProgress2, unmaskedContext, context);\n            }\n            return context;\n          }\n        }\n        function hasContextChanged() {\n          {\n            return didPerformWorkStackCursor.current;\n          }\n        }\n        function isContextProvider(type) {\n          {\n            var childContextTypes = type.childContextTypes;\n            return childContextTypes !== null && childContextTypes !== void 0;\n          }\n        }\n        function popContext(fiber) {\n          {\n            pop(didPerformWorkStackCursor, fiber);\n            pop(contextStackCursor, fiber);\n          }\n        }\n        function popTopLevelContextObject(fiber) {\n          {\n            pop(didPerformWorkStackCursor, fiber);\n            pop(contextStackCursor, fiber);\n          }\n        }\n        function pushTopLevelContextObject(fiber, context, didChange) {\n          {\n            if (contextStackCursor.current !== emptyContextObject) {\n              throw new Error(\"Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n            push(contextStackCursor, context, fiber);\n            push(didPerformWorkStackCursor, didChange, fiber);\n          }\n        }\n        function processChildContext(fiber, type, parentContext) {\n          {\n            var instance = fiber.stateNode;\n            var childContextTypes = type.childContextTypes;\n            if (typeof instance.getChildContext !== \"function\") {\n              {\n                var componentName = getComponentNameFromFiber(fiber) || \"Unknown\";\n                if (!warnedAboutMissingGetChildContext[componentName]) {\n                  warnedAboutMissingGetChildContext[componentName] = true;\n                  error(\"%s.childContextTypes is specified but there is no getChildContext() method on the instance. You can either define getChildContext() on %s or remove childContextTypes from it.\", componentName, componentName);\n                }\n              }\n              return parentContext;\n            }\n            var childContext = instance.getChildContext();\n            for (var contextKey in childContext) {\n              if (!(contextKey in childContextTypes)) {\n                throw new Error((getComponentNameFromFiber(fiber) || \"Unknown\") + '.getChildContext(): key \"' + contextKey + '\" is not defined in childContextTypes.');\n              }\n            }\n            {\n              var name = getComponentNameFromFiber(fiber) || \"Unknown\";\n              checkPropTypes(childContextTypes, childContext, \"child context\", name);\n            }\n            return assign({}, parentContext, childContext);\n          }\n        }\n        function pushContextProvider(workInProgress2) {\n          {\n            var instance = workInProgress2.stateNode;\n            var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject;\n            previousContext = contextStackCursor.current;\n            push(contextStackCursor, memoizedMergedChildContext, workInProgress2);\n            push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress2);\n            return true;\n          }\n        }\n        function invalidateContextProvider(workInProgress2, type, didChange) {\n          {\n            var instance = workInProgress2.stateNode;\n            if (!instance) {\n              throw new Error(\"Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n            if (didChange) {\n              var mergedContext = processChildContext(workInProgress2, type, previousContext);\n              instance.__reactInternalMemoizedMergedChildContext = mergedContext;\n              pop(didPerformWorkStackCursor, workInProgress2);\n              pop(contextStackCursor, workInProgress2);\n              push(contextStackCursor, mergedContext, workInProgress2);\n              push(didPerformWorkStackCursor, didChange, workInProgress2);\n            } else {\n              pop(didPerformWorkStackCursor, workInProgress2);\n              push(didPerformWorkStackCursor, didChange, workInProgress2);\n            }\n          }\n        }\n        function findCurrentUnmaskedContext(fiber) {\n          {\n            if (!isFiberMounted(fiber) || fiber.tag !== ClassComponent) {\n              throw new Error(\"Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n            var node = fiber;\n            do {\n              switch (node.tag) {\n                case HostRoot:\n                  return node.stateNode.context;\n                case ClassComponent: {\n                  var Component = node.type;\n                  if (isContextProvider(Component)) {\n                    return node.stateNode.__reactInternalMemoizedMergedChildContext;\n                  }\n                  break;\n                }\n              }\n              node = node.return;\n            } while (node !== null);\n            throw new Error(\"Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n        }\n        var LegacyRoot = 0;\n        var ConcurrentRoot = 1;\n        var syncQueue = null;\n        var includesLegacySyncCallbacks = false;\n        var isFlushingSyncQueue = false;\n        function scheduleSyncCallback(callback) {\n          if (syncQueue === null) {\n            syncQueue = [callback];\n          } else {\n            syncQueue.push(callback);\n          }\n        }\n        function scheduleLegacySyncCallback(callback) {\n          includesLegacySyncCallbacks = true;\n          scheduleSyncCallback(callback);\n        }\n        function flushSyncCallbacksOnlyInLegacyMode() {\n          if (includesLegacySyncCallbacks) {\n            flushSyncCallbacks();\n          }\n        }\n        function flushSyncCallbacks() {\n          if (!isFlushingSyncQueue && syncQueue !== null) {\n            isFlushingSyncQueue = true;\n            var i = 0;\n            var previousUpdatePriority = getCurrentUpdatePriority();\n            try {\n              var isSync = true;\n              var queue = syncQueue;\n              setCurrentUpdatePriority(DiscreteEventPriority);\n              for (; i < queue.length; i++) {\n                var callback = queue[i];\n                do {\n                  callback = callback(isSync);\n                } while (callback !== null);\n              }\n              syncQueue = null;\n              includesLegacySyncCallbacks = false;\n            } catch (error2) {\n              if (syncQueue !== null) {\n                syncQueue = syncQueue.slice(i + 1);\n              }\n              scheduleCallback(ImmediatePriority, flushSyncCallbacks);\n              throw error2;\n            } finally {\n              setCurrentUpdatePriority(previousUpdatePriority);\n              isFlushingSyncQueue = false;\n            }\n          }\n          return null;\n        }\n        var forkStack = [];\n        var forkStackIndex = 0;\n        var treeForkProvider = null;\n        var treeForkCount = 0;\n        var idStack = [];\n        var idStackIndex = 0;\n        var treeContextProvider = null;\n        var treeContextId = 1;\n        var treeContextOverflow = \"\";\n        function isForkedChild(workInProgress2) {\n          warnIfNotHydrating();\n          return (workInProgress2.flags & Forked) !== NoFlags;\n        }\n        function getForksAtLevel(workInProgress2) {\n          warnIfNotHydrating();\n          return treeForkCount;\n        }\n        function getTreeId() {\n          var overflow = treeContextOverflow;\n          var idWithLeadingBit = treeContextId;\n          var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n          return id.toString(32) + overflow;\n        }\n        function pushTreeFork(workInProgress2, totalChildren) {\n          warnIfNotHydrating();\n          forkStack[forkStackIndex++] = treeForkCount;\n          forkStack[forkStackIndex++] = treeForkProvider;\n          treeForkProvider = workInProgress2;\n          treeForkCount = totalChildren;\n        }\n        function pushTreeId(workInProgress2, totalChildren, index2) {\n          warnIfNotHydrating();\n          idStack[idStackIndex++] = treeContextId;\n          idStack[idStackIndex++] = treeContextOverflow;\n          idStack[idStackIndex++] = treeContextProvider;\n          treeContextProvider = workInProgress2;\n          var baseIdWithLeadingBit = treeContextId;\n          var baseOverflow = treeContextOverflow;\n          var baseLength = getBitLength(baseIdWithLeadingBit) - 1;\n          var baseId = baseIdWithLeadingBit & ~(1 << baseLength);\n          var slot = index2 + 1;\n          var length = getBitLength(totalChildren) + baseLength;\n          if (length > 30) {\n            var numberOfOverflowBits = baseLength - baseLength % 5;\n            var newOverflowBits = (1 << numberOfOverflowBits) - 1;\n            var newOverflow = (baseId & newOverflowBits).toString(32);\n            var restOfBaseId = baseId >> numberOfOverflowBits;\n            var restOfBaseLength = baseLength - numberOfOverflowBits;\n            var restOfLength = getBitLength(totalChildren) + restOfBaseLength;\n            var restOfNewBits = slot << restOfBaseLength;\n            var id = restOfNewBits | restOfBaseId;\n            var overflow = newOverflow + baseOverflow;\n            treeContextId = 1 << restOfLength | id;\n            treeContextOverflow = overflow;\n          } else {\n            var newBits = slot << baseLength;\n            var _id = newBits | baseId;\n            var _overflow = baseOverflow;\n            treeContextId = 1 << length | _id;\n            treeContextOverflow = _overflow;\n          }\n        }\n        function pushMaterializedTreeId(workInProgress2) {\n          warnIfNotHydrating();\n          var returnFiber = workInProgress2.return;\n          if (returnFiber !== null) {\n            var numberOfForks = 1;\n            var slotIndex = 0;\n            pushTreeFork(workInProgress2, numberOfForks);\n            pushTreeId(workInProgress2, numberOfForks, slotIndex);\n          }\n        }\n        function getBitLength(number) {\n          return 32 - clz32(number);\n        }\n        function getLeadingBit(id) {\n          return 1 << getBitLength(id) - 1;\n        }\n        function popTreeContext(workInProgress2) {\n          while (workInProgress2 === treeForkProvider) {\n            treeForkProvider = forkStack[--forkStackIndex];\n            forkStack[forkStackIndex] = null;\n            treeForkCount = forkStack[--forkStackIndex];\n            forkStack[forkStackIndex] = null;\n          }\n          while (workInProgress2 === treeContextProvider) {\n            treeContextProvider = idStack[--idStackIndex];\n            idStack[idStackIndex] = null;\n            treeContextOverflow = idStack[--idStackIndex];\n            idStack[idStackIndex] = null;\n            treeContextId = idStack[--idStackIndex];\n            idStack[idStackIndex] = null;\n          }\n        }\n        function getSuspendedTreeContext() {\n          warnIfNotHydrating();\n          if (treeContextProvider !== null) {\n            return {\n              id: treeContextId,\n              overflow: treeContextOverflow\n            };\n          } else {\n            return null;\n          }\n        }\n        function restoreSuspendedTreeContext(workInProgress2, suspendedContext) {\n          warnIfNotHydrating();\n          idStack[idStackIndex++] = treeContextId;\n          idStack[idStackIndex++] = treeContextOverflow;\n          idStack[idStackIndex++] = treeContextProvider;\n          treeContextId = suspendedContext.id;\n          treeContextOverflow = suspendedContext.overflow;\n          treeContextProvider = workInProgress2;\n        }\n        function warnIfNotHydrating() {\n          {\n            if (!getIsHydrating()) {\n              error(\"Expected to be hydrating. This is a bug in React. Please file an issue.\");\n            }\n          }\n        }\n        var hydrationParentFiber = null;\n        var nextHydratableInstance = null;\n        var isHydrating = false;\n        var didSuspendOrErrorDEV = false;\n        var hydrationErrors = null;\n        function warnIfHydrating() {\n          {\n            if (isHydrating) {\n              error(\"We should not be hydrating here. This is a bug in React. Please file a bug.\");\n            }\n          }\n        }\n        function markDidThrowWhileHydratingDEV() {\n          {\n            didSuspendOrErrorDEV = true;\n          }\n        }\n        function didSuspendOrErrorWhileHydratingDEV() {\n          {\n            return didSuspendOrErrorDEV;\n          }\n        }\n        function enterHydrationState(fiber) {\n          var parentInstance = fiber.stateNode.containerInfo;\n          nextHydratableInstance = getFirstHydratableChildWithinContainer(parentInstance);\n          hydrationParentFiber = fiber;\n          isHydrating = true;\n          hydrationErrors = null;\n          didSuspendOrErrorDEV = false;\n          return true;\n        }\n        function reenterHydrationStateFromDehydratedSuspenseInstance(fiber, suspenseInstance, treeContext) {\n          nextHydratableInstance = getFirstHydratableChildWithinSuspenseInstance(suspenseInstance);\n          hydrationParentFiber = fiber;\n          isHydrating = true;\n          hydrationErrors = null;\n          didSuspendOrErrorDEV = false;\n          if (treeContext !== null) {\n            restoreSuspendedTreeContext(fiber, treeContext);\n          }\n          return true;\n        }\n        function warnUnhydratedInstance(returnFiber, instance) {\n          {\n            switch (returnFiber.tag) {\n              case HostRoot: {\n                didNotHydrateInstanceWithinContainer(returnFiber.stateNode.containerInfo, instance);\n                break;\n              }\n              case HostComponent: {\n                var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n                didNotHydrateInstance(\n                  returnFiber.type,\n                  returnFiber.memoizedProps,\n                  returnFiber.stateNode,\n                  instance,\n                  // TODO: Delete this argument when we remove the legacy root API.\n                  isConcurrentMode\n                );\n                break;\n              }\n              case SuspenseComponent: {\n                var suspenseState = returnFiber.memoizedState;\n                if (suspenseState.dehydrated !== null)\n                  didNotHydrateInstanceWithinSuspenseInstance(suspenseState.dehydrated, instance);\n                break;\n              }\n            }\n          }\n        }\n        function deleteHydratableInstance(returnFiber, instance) {\n          warnUnhydratedInstance(returnFiber, instance);\n          var childToDelete = createFiberFromHostInstanceForDeletion();\n          childToDelete.stateNode = instance;\n          childToDelete.return = returnFiber;\n          var deletions = returnFiber.deletions;\n          if (deletions === null) {\n            returnFiber.deletions = [childToDelete];\n            returnFiber.flags |= ChildDeletion;\n          } else {\n            deletions.push(childToDelete);\n          }\n        }\n        function warnNonhydratedInstance(returnFiber, fiber) {\n          {\n            if (didSuspendOrErrorDEV) {\n              return;\n            }\n            switch (returnFiber.tag) {\n              case HostRoot: {\n                var parentContainer = returnFiber.stateNode.containerInfo;\n                switch (fiber.tag) {\n                  case HostComponent:\n                    var type = fiber.type;\n                    var props = fiber.pendingProps;\n                    didNotFindHydratableInstanceWithinContainer(parentContainer, type);\n                    break;\n                  case HostText:\n                    var text = fiber.pendingProps;\n                    didNotFindHydratableTextInstanceWithinContainer(parentContainer, text);\n                    break;\n                }\n                break;\n              }\n              case HostComponent: {\n                var parentType = returnFiber.type;\n                var parentProps = returnFiber.memoizedProps;\n                var parentInstance = returnFiber.stateNode;\n                switch (fiber.tag) {\n                  case HostComponent: {\n                    var _type = fiber.type;\n                    var _props = fiber.pendingProps;\n                    var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n                    didNotFindHydratableInstance(\n                      parentType,\n                      parentProps,\n                      parentInstance,\n                      _type,\n                      _props,\n                      // TODO: Delete this argument when we remove the legacy root API.\n                      isConcurrentMode\n                    );\n                    break;\n                  }\n                  case HostText: {\n                    var _text = fiber.pendingProps;\n                    var _isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n                    didNotFindHydratableTextInstance(\n                      parentType,\n                      parentProps,\n                      parentInstance,\n                      _text,\n                      // TODO: Delete this argument when we remove the legacy root API.\n                      _isConcurrentMode\n                    );\n                    break;\n                  }\n                }\n                break;\n              }\n              case SuspenseComponent: {\n                var suspenseState = returnFiber.memoizedState;\n                var _parentInstance = suspenseState.dehydrated;\n                if (_parentInstance !== null)\n                  switch (fiber.tag) {\n                    case HostComponent:\n                      var _type2 = fiber.type;\n                      var _props2 = fiber.pendingProps;\n                      didNotFindHydratableInstanceWithinSuspenseInstance(_parentInstance, _type2);\n                      break;\n                    case HostText:\n                      var _text2 = fiber.pendingProps;\n                      didNotFindHydratableTextInstanceWithinSuspenseInstance(_parentInstance, _text2);\n                      break;\n                  }\n                break;\n              }\n              default:\n                return;\n            }\n          }\n        }\n        function insertNonHydratedInstance(returnFiber, fiber) {\n          fiber.flags = fiber.flags & ~Hydrating | Placement;\n          warnNonhydratedInstance(returnFiber, fiber);\n        }\n        function tryHydrate(fiber, nextInstance) {\n          switch (fiber.tag) {\n            case HostComponent: {\n              var type = fiber.type;\n              var props = fiber.pendingProps;\n              var instance = canHydrateInstance(nextInstance, type);\n              if (instance !== null) {\n                fiber.stateNode = instance;\n                hydrationParentFiber = fiber;\n                nextHydratableInstance = getFirstHydratableChild(instance);\n                return true;\n              }\n              return false;\n            }\n            case HostText: {\n              var text = fiber.pendingProps;\n              var textInstance = canHydrateTextInstance(nextInstance, text);\n              if (textInstance !== null) {\n                fiber.stateNode = textInstance;\n                hydrationParentFiber = fiber;\n                nextHydratableInstance = null;\n                return true;\n              }\n              return false;\n            }\n            case SuspenseComponent: {\n              var suspenseInstance = canHydrateSuspenseInstance(nextInstance);\n              if (suspenseInstance !== null) {\n                var suspenseState = {\n                  dehydrated: suspenseInstance,\n                  treeContext: getSuspendedTreeContext(),\n                  retryLane: OffscreenLane\n                };\n                fiber.memoizedState = suspenseState;\n                var dehydratedFragment = createFiberFromDehydratedFragment(suspenseInstance);\n                dehydratedFragment.return = fiber;\n                fiber.child = dehydratedFragment;\n                hydrationParentFiber = fiber;\n                nextHydratableInstance = null;\n                return true;\n              }\n              return false;\n            }\n            default:\n              return false;\n          }\n        }\n        function shouldClientRenderOnMismatch(fiber) {\n          return (fiber.mode & ConcurrentMode) !== NoMode && (fiber.flags & DidCapture) === NoFlags;\n        }\n        function throwOnHydrationMismatch(fiber) {\n          throw new Error(\"Hydration failed because the initial UI does not match what was rendered on the server.\");\n        }\n        function tryToClaimNextHydratableInstance(fiber) {\n          if (!isHydrating) {\n            return;\n          }\n          var nextInstance = nextHydratableInstance;\n          if (!nextInstance) {\n            if (shouldClientRenderOnMismatch(fiber)) {\n              warnNonhydratedInstance(hydrationParentFiber, fiber);\n              throwOnHydrationMismatch();\n            }\n            insertNonHydratedInstance(hydrationParentFiber, fiber);\n            isHydrating = false;\n            hydrationParentFiber = fiber;\n            return;\n          }\n          var firstAttemptedInstance = nextInstance;\n          if (!tryHydrate(fiber, nextInstance)) {\n            if (shouldClientRenderOnMismatch(fiber)) {\n              warnNonhydratedInstance(hydrationParentFiber, fiber);\n              throwOnHydrationMismatch();\n            }\n            nextInstance = getNextHydratableSibling(firstAttemptedInstance);\n            var prevHydrationParentFiber = hydrationParentFiber;\n            if (!nextInstance || !tryHydrate(fiber, nextInstance)) {\n              insertNonHydratedInstance(hydrationParentFiber, fiber);\n              isHydrating = false;\n              hydrationParentFiber = fiber;\n              return;\n            }\n            deleteHydratableInstance(prevHydrationParentFiber, firstAttemptedInstance);\n          }\n        }\n        function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {\n          var instance = fiber.stateNode;\n          var shouldWarnIfMismatchDev = !didSuspendOrErrorDEV;\n          var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber, shouldWarnIfMismatchDev);\n          fiber.updateQueue = updatePayload;\n          if (updatePayload !== null) {\n            return true;\n          }\n          return false;\n        }\n        function prepareToHydrateHostTextInstance(fiber) {\n          var textInstance = fiber.stateNode;\n          var textContent = fiber.memoizedProps;\n          var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);\n          if (shouldUpdate) {\n            var returnFiber = hydrationParentFiber;\n            if (returnFiber !== null) {\n              switch (returnFiber.tag) {\n                case HostRoot: {\n                  var parentContainer = returnFiber.stateNode.containerInfo;\n                  var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n                  didNotMatchHydratedContainerTextInstance(\n                    parentContainer,\n                    textInstance,\n                    textContent,\n                    // TODO: Delete this argument when we remove the legacy root API.\n                    isConcurrentMode\n                  );\n                  break;\n                }\n                case HostComponent: {\n                  var parentType = returnFiber.type;\n                  var parentProps = returnFiber.memoizedProps;\n                  var parentInstance = returnFiber.stateNode;\n                  var _isConcurrentMode2 = (returnFiber.mode & ConcurrentMode) !== NoMode;\n                  didNotMatchHydratedTextInstance(\n                    parentType,\n                    parentProps,\n                    parentInstance,\n                    textInstance,\n                    textContent,\n                    // TODO: Delete this argument when we remove the legacy root API.\n                    _isConcurrentMode2\n                  );\n                  break;\n                }\n              }\n            }\n          }\n          return shouldUpdate;\n        }\n        function prepareToHydrateHostSuspenseInstance(fiber) {\n          var suspenseState = fiber.memoizedState;\n          var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n          if (!suspenseInstance) {\n            throw new Error(\"Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          hydrateSuspenseInstance(suspenseInstance, fiber);\n        }\n        function skipPastDehydratedSuspenseInstance(fiber) {\n          var suspenseState = fiber.memoizedState;\n          var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n          if (!suspenseInstance) {\n            throw new Error(\"Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);\n        }\n        function popToNextHostParent(fiber) {\n          var parent = fiber.return;\n          while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) {\n            parent = parent.return;\n          }\n          hydrationParentFiber = parent;\n        }\n        function popHydrationState(fiber) {\n          if (fiber !== hydrationParentFiber) {\n            return false;\n          }\n          if (!isHydrating) {\n            popToNextHostParent(fiber);\n            isHydrating = true;\n            return false;\n          }\n          if (fiber.tag !== HostRoot && (fiber.tag !== HostComponent || shouldDeleteUnhydratedTailInstances(fiber.type) && !shouldSetTextContent(fiber.type, fiber.memoizedProps))) {\n            var nextInstance = nextHydratableInstance;\n            if (nextInstance) {\n              if (shouldClientRenderOnMismatch(fiber)) {\n                warnIfUnhydratedTailNodes(fiber);\n                throwOnHydrationMismatch();\n              } else {\n                while (nextInstance) {\n                  deleteHydratableInstance(fiber, nextInstance);\n                  nextInstance = getNextHydratableSibling(nextInstance);\n                }\n              }\n            }\n          }\n          popToNextHostParent(fiber);\n          if (fiber.tag === SuspenseComponent) {\n            nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);\n          } else {\n            nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;\n          }\n          return true;\n        }\n        function hasUnhydratedTailNodes() {\n          return isHydrating && nextHydratableInstance !== null;\n        }\n        function warnIfUnhydratedTailNodes(fiber) {\n          var nextInstance = nextHydratableInstance;\n          while (nextInstance) {\n            warnUnhydratedInstance(fiber, nextInstance);\n            nextInstance = getNextHydratableSibling(nextInstance);\n          }\n        }\n        function resetHydrationState() {\n          hydrationParentFiber = null;\n          nextHydratableInstance = null;\n          isHydrating = false;\n          didSuspendOrErrorDEV = false;\n        }\n        function upgradeHydrationErrorsToRecoverable() {\n          if (hydrationErrors !== null) {\n            queueRecoverableErrors(hydrationErrors);\n            hydrationErrors = null;\n          }\n        }\n        function getIsHydrating() {\n          return isHydrating;\n        }\n        function queueHydrationError(error2) {\n          if (hydrationErrors === null) {\n            hydrationErrors = [error2];\n          } else {\n            hydrationErrors.push(error2);\n          }\n        }\n        var ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig;\n        var NoTransition = null;\n        function requestCurrentTransition() {\n          return ReactCurrentBatchConfig$1.transition;\n        }\n        var ReactStrictModeWarnings = {\n          recordUnsafeLifecycleWarnings: function(fiber, instance) {\n          },\n          flushPendingUnsafeLifecycleWarnings: function() {\n          },\n          recordLegacyContextWarning: function(fiber, instance) {\n          },\n          flushLegacyContextWarning: function() {\n          },\n          discardPendingWarnings: function() {\n          }\n        };\n        {\n          var findStrictRoot = function(fiber) {\n            var maybeStrictRoot = null;\n            var node = fiber;\n            while (node !== null) {\n              if (node.mode & StrictLegacyMode) {\n                maybeStrictRoot = node;\n              }\n              node = node.return;\n            }\n            return maybeStrictRoot;\n          };\n          var setToSortedString = function(set2) {\n            var array = [];\n            set2.forEach(function(value) {\n              array.push(value);\n            });\n            return array.sort().join(\", \");\n          };\n          var pendingComponentWillMountWarnings = [];\n          var pendingUNSAFE_ComponentWillMountWarnings = [];\n          var pendingComponentWillReceivePropsWarnings = [];\n          var pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n          var pendingComponentWillUpdateWarnings = [];\n          var pendingUNSAFE_ComponentWillUpdateWarnings = [];\n          var didWarnAboutUnsafeLifecycles = /* @__PURE__ */ new Set();\n          ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function(fiber, instance) {\n            if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {\n              return;\n            }\n            if (typeof instance.componentWillMount === \"function\" && // Don't warn about react-lifecycles-compat polyfilled components.\n            instance.componentWillMount.__suppressDeprecationWarning !== true) {\n              pendingComponentWillMountWarnings.push(fiber);\n            }\n            if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillMount === \"function\") {\n              pendingUNSAFE_ComponentWillMountWarnings.push(fiber);\n            }\n            if (typeof instance.componentWillReceiveProps === \"function\" && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n              pendingComponentWillReceivePropsWarnings.push(fiber);\n            }\n            if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillReceiveProps === \"function\") {\n              pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);\n            }\n            if (typeof instance.componentWillUpdate === \"function\" && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n              pendingComponentWillUpdateWarnings.push(fiber);\n            }\n            if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillUpdate === \"function\") {\n              pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);\n            }\n          };\n          ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function() {\n            var componentWillMountUniqueNames = /* @__PURE__ */ new Set();\n            if (pendingComponentWillMountWarnings.length > 0) {\n              pendingComponentWillMountWarnings.forEach(function(fiber) {\n                componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n                didWarnAboutUnsafeLifecycles.add(fiber.type);\n              });\n              pendingComponentWillMountWarnings = [];\n            }\n            var UNSAFE_componentWillMountUniqueNames = /* @__PURE__ */ new Set();\n            if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) {\n              pendingUNSAFE_ComponentWillMountWarnings.forEach(function(fiber) {\n                UNSAFE_componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n                didWarnAboutUnsafeLifecycles.add(fiber.type);\n              });\n              pendingUNSAFE_ComponentWillMountWarnings = [];\n            }\n            var componentWillReceivePropsUniqueNames = /* @__PURE__ */ new Set();\n            if (pendingComponentWillReceivePropsWarnings.length > 0) {\n              pendingComponentWillReceivePropsWarnings.forEach(function(fiber) {\n                componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n                didWarnAboutUnsafeLifecycles.add(fiber.type);\n              });\n              pendingComponentWillReceivePropsWarnings = [];\n            }\n            var UNSAFE_componentWillReceivePropsUniqueNames = /* @__PURE__ */ new Set();\n            if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) {\n              pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function(fiber) {\n                UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n                didWarnAboutUnsafeLifecycles.add(fiber.type);\n              });\n              pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n            }\n            var componentWillUpdateUniqueNames = /* @__PURE__ */ new Set();\n            if (pendingComponentWillUpdateWarnings.length > 0) {\n              pendingComponentWillUpdateWarnings.forEach(function(fiber) {\n                componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n                didWarnAboutUnsafeLifecycles.add(fiber.type);\n              });\n              pendingComponentWillUpdateWarnings = [];\n            }\n            var UNSAFE_componentWillUpdateUniqueNames = /* @__PURE__ */ new Set();\n            if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) {\n              pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function(fiber) {\n                UNSAFE_componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n                didWarnAboutUnsafeLifecycles.add(fiber.type);\n              });\n              pendingUNSAFE_ComponentWillUpdateWarnings = [];\n            }\n            if (UNSAFE_componentWillMountUniqueNames.size > 0) {\n              var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames);\n              error(\"Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n\\nPlease update the following components: %s\", sortedNames);\n            }\n            if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) {\n              var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);\n              error(\"Using UNSAFE_componentWillReceiveProps in strict mode is not recommended and may indicate bugs in your code. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move data fetching code or side effects to componentDidUpdate.\\n* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n\\nPlease update the following components: %s\", _sortedNames);\n            }\n            if (UNSAFE_componentWillUpdateUniqueNames.size > 0) {\n              var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames);\n              error(\"Using UNSAFE_componentWillUpdate in strict mode is not recommended and may indicate bugs in your code. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move data fetching code or side effects to componentDidUpdate.\\n\\nPlease update the following components: %s\", _sortedNames2);\n            }\n            if (componentWillMountUniqueNames.size > 0) {\n              var _sortedNames3 = setToSortedString(componentWillMountUniqueNames);\n              warn(\"componentWillMount has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n* Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n\\nPlease update the following components: %s\", _sortedNames3);\n            }\n            if (componentWillReceivePropsUniqueNames.size > 0) {\n              var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames);\n              warn(\"componentWillReceiveProps has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move data fetching code or side effects to componentDidUpdate.\\n* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n\\nPlease update the following components: %s\", _sortedNames4);\n            }\n            if (componentWillUpdateUniqueNames.size > 0) {\n              var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames);\n              warn(\"componentWillUpdate has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move data fetching code or side effects to componentDidUpdate.\\n* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n\\nPlease update the following components: %s\", _sortedNames5);\n            }\n          };\n          var pendingLegacyContextWarning = /* @__PURE__ */ new Map();\n          var didWarnAboutLegacyContext = /* @__PURE__ */ new Set();\n          ReactStrictModeWarnings.recordLegacyContextWarning = function(fiber, instance) {\n            var strictRoot = findStrictRoot(fiber);\n            if (strictRoot === null) {\n              error(\"Expected to find a StrictMode component in a strict mode tree. This error is likely caused by a bug in React. Please file an issue.\");\n              return;\n            }\n            if (didWarnAboutLegacyContext.has(fiber.type)) {\n              return;\n            }\n            var warningsForRoot = pendingLegacyContextWarning.get(strictRoot);\n            if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === \"function\") {\n              if (warningsForRoot === void 0) {\n                warningsForRoot = [];\n                pendingLegacyContextWarning.set(strictRoot, warningsForRoot);\n              }\n              warningsForRoot.push(fiber);\n            }\n          };\n          ReactStrictModeWarnings.flushLegacyContextWarning = function() {\n            pendingLegacyContextWarning.forEach(function(fiberArray, strictRoot) {\n              if (fiberArray.length === 0) {\n                return;\n              }\n              var firstFiber = fiberArray[0];\n              var uniqueNames = /* @__PURE__ */ new Set();\n              fiberArray.forEach(function(fiber) {\n                uniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n                didWarnAboutLegacyContext.add(fiber.type);\n              });\n              var sortedNames = setToSortedString(uniqueNames);\n              try {\n                setCurrentFiber(firstFiber);\n                error(\"Legacy context API has been detected within a strict-mode tree.\\n\\nThe old API will be supported in all 16.x releases, but applications using it should migrate to the new version.\\n\\nPlease update the following components: %s\\n\\nLearn more about this warning here: https://reactjs.org/link/legacy-context\", sortedNames);\n              } finally {\n                resetCurrentFiber();\n              }\n            });\n          };\n          ReactStrictModeWarnings.discardPendingWarnings = function() {\n            pendingComponentWillMountWarnings = [];\n            pendingUNSAFE_ComponentWillMountWarnings = [];\n            pendingComponentWillReceivePropsWarnings = [];\n            pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n            pendingComponentWillUpdateWarnings = [];\n            pendingUNSAFE_ComponentWillUpdateWarnings = [];\n            pendingLegacyContextWarning = /* @__PURE__ */ new Map();\n          };\n        }\n        var didWarnAboutMaps;\n        var didWarnAboutGenerators;\n        var didWarnAboutStringRefs;\n        var ownerHasKeyUseWarning;\n        var ownerHasFunctionTypeWarning;\n        var warnForMissingKey = function(child, returnFiber) {\n        };\n        {\n          didWarnAboutMaps = false;\n          didWarnAboutGenerators = false;\n          didWarnAboutStringRefs = {};\n          ownerHasKeyUseWarning = {};\n          ownerHasFunctionTypeWarning = {};\n          warnForMissingKey = function(child, returnFiber) {\n            if (child === null || typeof child !== \"object\") {\n              return;\n            }\n            if (!child._store || child._store.validated || child.key != null) {\n              return;\n            }\n            if (typeof child._store !== \"object\") {\n              throw new Error(\"React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n            child._store.validated = true;\n            var componentName = getComponentNameFromFiber(returnFiber) || \"Component\";\n            if (ownerHasKeyUseWarning[componentName]) {\n              return;\n            }\n            ownerHasKeyUseWarning[componentName] = true;\n            error('Each child in a list should have a unique \"key\" prop. See https://reactjs.org/link/warning-keys for more information.');\n          };\n        }\n        function isReactClass(type) {\n          return type.prototype && type.prototype.isReactComponent;\n        }\n        function coerceRef(returnFiber, current2, element) {\n          var mixedRef = element.ref;\n          if (mixedRef !== null && typeof mixedRef !== \"function\" && typeof mixedRef !== \"object\") {\n            {\n              if ((returnFiber.mode & StrictLegacyMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs\n              // because these cannot be automatically converted to an arrow function\n              // using a codemod. Therefore, we don't have to warn about string refs again.\n              !(element._owner && element._self && element._owner.stateNode !== element._self) && // Will already throw with \"Function components cannot have string refs\"\n              !(element._owner && element._owner.tag !== ClassComponent) && // Will already warn with \"Function components cannot be given refs\"\n              !(typeof element.type === \"function\" && !isReactClass(element.type)) && // Will already throw with \"Element ref was specified as a string (someStringRef) but no owner was set\"\n              element._owner) {\n                var componentName = getComponentNameFromFiber(returnFiber) || \"Component\";\n                if (!didWarnAboutStringRefs[componentName]) {\n                  {\n                    error('Component \"%s\" contains the string ref \"%s\". Support for string refs will be removed in a future major release. We recommend using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', componentName, mixedRef);\n                  }\n                  didWarnAboutStringRefs[componentName] = true;\n                }\n              }\n            }\n            if (element._owner) {\n              var owner = element._owner;\n              var inst;\n              if (owner) {\n                var ownerFiber = owner;\n                if (ownerFiber.tag !== ClassComponent) {\n                  throw new Error(\"Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref\");\n                }\n                inst = ownerFiber.stateNode;\n              }\n              if (!inst) {\n                throw new Error(\"Missing owner for string ref \" + mixedRef + \". This error is likely caused by a bug in React. Please file an issue.\");\n              }\n              var resolvedInst = inst;\n              {\n                checkPropStringCoercion(mixedRef, \"ref\");\n              }\n              var stringRef = \"\" + mixedRef;\n              if (current2 !== null && current2.ref !== null && typeof current2.ref === \"function\" && current2.ref._stringRef === stringRef) {\n                return current2.ref;\n              }\n              var ref = function(value) {\n                var refs = resolvedInst.refs;\n                if (value === null) {\n                  delete refs[stringRef];\n                } else {\n                  refs[stringRef] = value;\n                }\n              };\n              ref._stringRef = stringRef;\n              return ref;\n            } else {\n              if (typeof mixedRef !== \"string\") {\n                throw new Error(\"Expected ref to be a function, a string, an object returned by React.createRef(), or null.\");\n              }\n              if (!element._owner) {\n                throw new Error(\"Element ref was specified as a string (\" + mixedRef + \") but no owner was set. This could happen for one of the following reasons:\\n1. You may be adding a ref to a function component\\n2. You may be adding a ref to a component that was not created inside a component's render method\\n3. You have multiple copies of React loaded\\nSee https://reactjs.org/link/refs-must-have-owner for more information.\");\n              }\n            }\n          }\n          return mixedRef;\n        }\n        function throwOnInvalidObjectType(returnFiber, newChild) {\n          var childString = Object.prototype.toString.call(newChild);\n          throw new Error(\"Objects are not valid as a React child (found: \" + (childString === \"[object Object]\" ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\" : childString) + \"). If you meant to render a collection of children, use an array instead.\");\n        }\n        function warnOnFunctionType(returnFiber) {\n          {\n            var componentName = getComponentNameFromFiber(returnFiber) || \"Component\";\n            if (ownerHasFunctionTypeWarning[componentName]) {\n              return;\n            }\n            ownerHasFunctionTypeWarning[componentName] = true;\n            error(\"Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it.\");\n          }\n        }\n        function resolveLazy(lazyType) {\n          var payload = lazyType._payload;\n          var init = lazyType._init;\n          return init(payload);\n        }\n        function ChildReconciler(shouldTrackSideEffects) {\n          function deleteChild(returnFiber, childToDelete) {\n            if (!shouldTrackSideEffects) {\n              return;\n            }\n            var deletions = returnFiber.deletions;\n            if (deletions === null) {\n              returnFiber.deletions = [childToDelete];\n              returnFiber.flags |= ChildDeletion;\n            } else {\n              deletions.push(childToDelete);\n            }\n          }\n          function deleteRemainingChildren(returnFiber, currentFirstChild) {\n            if (!shouldTrackSideEffects) {\n              return null;\n            }\n            var childToDelete = currentFirstChild;\n            while (childToDelete !== null) {\n              deleteChild(returnFiber, childToDelete);\n              childToDelete = childToDelete.sibling;\n            }\n            return null;\n          }\n          function mapRemainingChildren(returnFiber, currentFirstChild) {\n            var existingChildren = /* @__PURE__ */ new Map();\n            var existingChild = currentFirstChild;\n            while (existingChild !== null) {\n              if (existingChild.key !== null) {\n                existingChildren.set(existingChild.key, existingChild);\n              } else {\n                existingChildren.set(existingChild.index, existingChild);\n              }\n              existingChild = existingChild.sibling;\n            }\n            return existingChildren;\n          }\n          function useFiber(fiber, pendingProps) {\n            var clone = createWorkInProgress(fiber, pendingProps);\n            clone.index = 0;\n            clone.sibling = null;\n            return clone;\n          }\n          function placeChild(newFiber, lastPlacedIndex, newIndex) {\n            newFiber.index = newIndex;\n            if (!shouldTrackSideEffects) {\n              newFiber.flags |= Forked;\n              return lastPlacedIndex;\n            }\n            var current2 = newFiber.alternate;\n            if (current2 !== null) {\n              var oldIndex = current2.index;\n              if (oldIndex < lastPlacedIndex) {\n                newFiber.flags |= Placement;\n                return lastPlacedIndex;\n              } else {\n                return oldIndex;\n              }\n            } else {\n              newFiber.flags |= Placement;\n              return lastPlacedIndex;\n            }\n          }\n          function placeSingleChild(newFiber) {\n            if (shouldTrackSideEffects && newFiber.alternate === null) {\n              newFiber.flags |= Placement;\n            }\n            return newFiber;\n          }\n          function updateTextNode(returnFiber, current2, textContent, lanes) {\n            if (current2 === null || current2.tag !== HostText) {\n              var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n              created.return = returnFiber;\n              return created;\n            } else {\n              var existing = useFiber(current2, textContent);\n              existing.return = returnFiber;\n              return existing;\n            }\n          }\n          function updateElement(returnFiber, current2, element, lanes) {\n            var elementType = element.type;\n            if (elementType === REACT_FRAGMENT_TYPE) {\n              return updateFragment2(returnFiber, current2, element.props.children, lanes, element.key);\n            }\n            if (current2 !== null) {\n              if (current2.elementType === elementType || // Keep this check inline so it only runs on the false path:\n              isCompatibleFamilyForHotReloading(current2, element) || // Lazy types should reconcile their resolved type.\n              // We need to do this after the Hot Reloading check above,\n              // because hot reloading has different semantics than prod because\n              // it doesn't resuspend. So we can't let the call below suspend.\n              typeof elementType === \"object\" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current2.type) {\n                var existing = useFiber(current2, element.props);\n                existing.ref = coerceRef(returnFiber, current2, element);\n                existing.return = returnFiber;\n                {\n                  existing._debugSource = element._source;\n                  existing._debugOwner = element._owner;\n                }\n                return existing;\n              }\n            }\n            var created = createFiberFromElement(element, returnFiber.mode, lanes);\n            created.ref = coerceRef(returnFiber, current2, element);\n            created.return = returnFiber;\n            return created;\n          }\n          function updatePortal(returnFiber, current2, portal, lanes) {\n            if (current2 === null || current2.tag !== HostPortal || current2.stateNode.containerInfo !== portal.containerInfo || current2.stateNode.implementation !== portal.implementation) {\n              var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n              created.return = returnFiber;\n              return created;\n            } else {\n              var existing = useFiber(current2, portal.children || []);\n              existing.return = returnFiber;\n              return existing;\n            }\n          }\n          function updateFragment2(returnFiber, current2, fragment, lanes, key) {\n            if (current2 === null || current2.tag !== Fragment) {\n              var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);\n              created.return = returnFiber;\n              return created;\n            } else {\n              var existing = useFiber(current2, fragment);\n              existing.return = returnFiber;\n              return existing;\n            }\n          }\n          function createChild(returnFiber, newChild, lanes) {\n            if (typeof newChild === \"string\" && newChild !== \"\" || typeof newChild === \"number\") {\n              var created = createFiberFromText(\"\" + newChild, returnFiber.mode, lanes);\n              created.return = returnFiber;\n              return created;\n            }\n            if (typeof newChild === \"object\" && newChild !== null) {\n              switch (newChild.$$typeof) {\n                case REACT_ELEMENT_TYPE: {\n                  var _created = createFiberFromElement(newChild, returnFiber.mode, lanes);\n                  _created.ref = coerceRef(returnFiber, null, newChild);\n                  _created.return = returnFiber;\n                  return _created;\n                }\n                case REACT_PORTAL_TYPE: {\n                  var _created2 = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n                  _created2.return = returnFiber;\n                  return _created2;\n                }\n                case REACT_LAZY_TYPE: {\n                  var payload = newChild._payload;\n                  var init = newChild._init;\n                  return createChild(returnFiber, init(payload), lanes);\n                }\n              }\n              if (isArray(newChild) || getIteratorFn(newChild)) {\n                var _created3 = createFiberFromFragment(newChild, returnFiber.mode, lanes, null);\n                _created3.return = returnFiber;\n                return _created3;\n              }\n              throwOnInvalidObjectType(returnFiber, newChild);\n            }\n            {\n              if (typeof newChild === \"function\") {\n                warnOnFunctionType(returnFiber);\n              }\n            }\n            return null;\n          }\n          function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n            var key = oldFiber !== null ? oldFiber.key : null;\n            if (typeof newChild === \"string\" && newChild !== \"\" || typeof newChild === \"number\") {\n              if (key !== null) {\n                return null;\n              }\n              return updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n            }\n            if (typeof newChild === \"object\" && newChild !== null) {\n              switch (newChild.$$typeof) {\n                case REACT_ELEMENT_TYPE: {\n                  if (newChild.key === key) {\n                    return updateElement(returnFiber, oldFiber, newChild, lanes);\n                  } else {\n                    return null;\n                  }\n                }\n                case REACT_PORTAL_TYPE: {\n                  if (newChild.key === key) {\n                    return updatePortal(returnFiber, oldFiber, newChild, lanes);\n                  } else {\n                    return null;\n                  }\n                }\n                case REACT_LAZY_TYPE: {\n                  var payload = newChild._payload;\n                  var init = newChild._init;\n                  return updateSlot(returnFiber, oldFiber, init(payload), lanes);\n                }\n              }\n              if (isArray(newChild) || getIteratorFn(newChild)) {\n                if (key !== null) {\n                  return null;\n                }\n                return updateFragment2(returnFiber, oldFiber, newChild, lanes, null);\n              }\n              throwOnInvalidObjectType(returnFiber, newChild);\n            }\n            {\n              if (typeof newChild === \"function\") {\n                warnOnFunctionType(returnFiber);\n              }\n            }\n            return null;\n          }\n          function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {\n            if (typeof newChild === \"string\" && newChild !== \"\" || typeof newChild === \"number\") {\n              var matchedFiber = existingChildren.get(newIdx) || null;\n              return updateTextNode(returnFiber, matchedFiber, \"\" + newChild, lanes);\n            }\n            if (typeof newChild === \"object\" && newChild !== null) {\n              switch (newChild.$$typeof) {\n                case REACT_ELEMENT_TYPE: {\n                  var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n                  return updateElement(returnFiber, _matchedFiber, newChild, lanes);\n                }\n                case REACT_PORTAL_TYPE: {\n                  var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n                  return updatePortal(returnFiber, _matchedFiber2, newChild, lanes);\n                }\n                case REACT_LAZY_TYPE:\n                  var payload = newChild._payload;\n                  var init = newChild._init;\n                  return updateFromMap(existingChildren, returnFiber, newIdx, init(payload), lanes);\n              }\n              if (isArray(newChild) || getIteratorFn(newChild)) {\n                var _matchedFiber3 = existingChildren.get(newIdx) || null;\n                return updateFragment2(returnFiber, _matchedFiber3, newChild, lanes, null);\n              }\n              throwOnInvalidObjectType(returnFiber, newChild);\n            }\n            {\n              if (typeof newChild === \"function\") {\n                warnOnFunctionType(returnFiber);\n              }\n            }\n            return null;\n          }\n          function warnOnInvalidKey(child, knownKeys, returnFiber) {\n            {\n              if (typeof child !== \"object\" || child === null) {\n                return knownKeys;\n              }\n              switch (child.$$typeof) {\n                case REACT_ELEMENT_TYPE:\n                case REACT_PORTAL_TYPE:\n                  warnForMissingKey(child, returnFiber);\n                  var key = child.key;\n                  if (typeof key !== \"string\") {\n                    break;\n                  }\n                  if (knownKeys === null) {\n                    knownKeys = /* @__PURE__ */ new Set();\n                    knownKeys.add(key);\n                    break;\n                  }\n                  if (!knownKeys.has(key)) {\n                    knownKeys.add(key);\n                    break;\n                  }\n                  error(\"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.\", key);\n                  break;\n                case REACT_LAZY_TYPE:\n                  var payload = child._payload;\n                  var init = child._init;\n                  warnOnInvalidKey(init(payload), knownKeys, returnFiber);\n                  break;\n              }\n            }\n            return knownKeys;\n          }\n          function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {\n            {\n              var knownKeys = null;\n              for (var i = 0; i < newChildren.length; i++) {\n                var child = newChildren[i];\n                knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n              }\n            }\n            var resultingFirstChild = null;\n            var previousNewFiber = null;\n            var oldFiber = currentFirstChild;\n            var lastPlacedIndex = 0;\n            var newIdx = 0;\n            var nextOldFiber = null;\n            for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n              if (oldFiber.index > newIdx) {\n                nextOldFiber = oldFiber;\n                oldFiber = null;\n              } else {\n                nextOldFiber = oldFiber.sibling;\n              }\n              var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], lanes);\n              if (newFiber === null) {\n                if (oldFiber === null) {\n                  oldFiber = nextOldFiber;\n                }\n                break;\n              }\n              if (shouldTrackSideEffects) {\n                if (oldFiber && newFiber.alternate === null) {\n                  deleteChild(returnFiber, oldFiber);\n                }\n              }\n              lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n              if (previousNewFiber === null) {\n                resultingFirstChild = newFiber;\n              } else {\n                previousNewFiber.sibling = newFiber;\n              }\n              previousNewFiber = newFiber;\n              oldFiber = nextOldFiber;\n            }\n            if (newIdx === newChildren.length) {\n              deleteRemainingChildren(returnFiber, oldFiber);\n              if (getIsHydrating()) {\n                var numberOfForks = newIdx;\n                pushTreeFork(returnFiber, numberOfForks);\n              }\n              return resultingFirstChild;\n            }\n            if (oldFiber === null) {\n              for (; newIdx < newChildren.length; newIdx++) {\n                var _newFiber = createChild(returnFiber, newChildren[newIdx], lanes);\n                if (_newFiber === null) {\n                  continue;\n                }\n                lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);\n                if (previousNewFiber === null) {\n                  resultingFirstChild = _newFiber;\n                } else {\n                  previousNewFiber.sibling = _newFiber;\n                }\n                previousNewFiber = _newFiber;\n              }\n              if (getIsHydrating()) {\n                var _numberOfForks = newIdx;\n                pushTreeFork(returnFiber, _numberOfForks);\n              }\n              return resultingFirstChild;\n            }\n            var existingChildren = mapRemainingChildren(returnFiber, oldFiber);\n            for (; newIdx < newChildren.length; newIdx++) {\n              var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], lanes);\n              if (_newFiber2 !== null) {\n                if (shouldTrackSideEffects) {\n                  if (_newFiber2.alternate !== null) {\n                    existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key);\n                  }\n                }\n                lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);\n                if (previousNewFiber === null) {\n                  resultingFirstChild = _newFiber2;\n                } else {\n                  previousNewFiber.sibling = _newFiber2;\n                }\n                previousNewFiber = _newFiber2;\n              }\n            }\n            if (shouldTrackSideEffects) {\n              existingChildren.forEach(function(child2) {\n                return deleteChild(returnFiber, child2);\n              });\n            }\n            if (getIsHydrating()) {\n              var _numberOfForks2 = newIdx;\n              pushTreeFork(returnFiber, _numberOfForks2);\n            }\n            return resultingFirstChild;\n          }\n          function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, lanes) {\n            var iteratorFn = getIteratorFn(newChildrenIterable);\n            if (typeof iteratorFn !== \"function\") {\n              throw new Error(\"An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n            {\n              if (typeof Symbol === \"function\" && // $FlowFixMe Flow doesn't know about toStringTag\n              newChildrenIterable[Symbol.toStringTag] === \"Generator\") {\n                if (!didWarnAboutGenerators) {\n                  error(\"Using Generators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. Keep in mind you might need to polyfill these features for older browsers.\");\n                }\n                didWarnAboutGenerators = true;\n              }\n              if (newChildrenIterable.entries === iteratorFn) {\n                if (!didWarnAboutMaps) {\n                  error(\"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\");\n                }\n                didWarnAboutMaps = true;\n              }\n              var _newChildren = iteratorFn.call(newChildrenIterable);\n              if (_newChildren) {\n                var knownKeys = null;\n                var _step = _newChildren.next();\n                for (; !_step.done; _step = _newChildren.next()) {\n                  var child = _step.value;\n                  knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n                }\n              }\n            }\n            var newChildren = iteratorFn.call(newChildrenIterable);\n            if (newChildren == null) {\n              throw new Error(\"An iterable object provided no iterator.\");\n            }\n            var resultingFirstChild = null;\n            var previousNewFiber = null;\n            var oldFiber = currentFirstChild;\n            var lastPlacedIndex = 0;\n            var newIdx = 0;\n            var nextOldFiber = null;\n            var step = newChildren.next();\n            for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {\n              if (oldFiber.index > newIdx) {\n                nextOldFiber = oldFiber;\n                oldFiber = null;\n              } else {\n                nextOldFiber = oldFiber.sibling;\n              }\n              var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n              if (newFiber === null) {\n                if (oldFiber === null) {\n                  oldFiber = nextOldFiber;\n                }\n                break;\n              }\n              if (shouldTrackSideEffects) {\n                if (oldFiber && newFiber.alternate === null) {\n                  deleteChild(returnFiber, oldFiber);\n                }\n              }\n              lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n              if (previousNewFiber === null) {\n                resultingFirstChild = newFiber;\n              } else {\n                previousNewFiber.sibling = newFiber;\n              }\n              previousNewFiber = newFiber;\n              oldFiber = nextOldFiber;\n            }\n            if (step.done) {\n              deleteRemainingChildren(returnFiber, oldFiber);\n              if (getIsHydrating()) {\n                var numberOfForks = newIdx;\n                pushTreeFork(returnFiber, numberOfForks);\n              }\n              return resultingFirstChild;\n            }\n            if (oldFiber === null) {\n              for (; !step.done; newIdx++, step = newChildren.next()) {\n                var _newFiber3 = createChild(returnFiber, step.value, lanes);\n                if (_newFiber3 === null) {\n                  continue;\n                }\n                lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);\n                if (previousNewFiber === null) {\n                  resultingFirstChild = _newFiber3;\n                } else {\n                  previousNewFiber.sibling = _newFiber3;\n                }\n                previousNewFiber = _newFiber3;\n              }\n              if (getIsHydrating()) {\n                var _numberOfForks3 = newIdx;\n                pushTreeFork(returnFiber, _numberOfForks3);\n              }\n              return resultingFirstChild;\n            }\n            var existingChildren = mapRemainingChildren(returnFiber, oldFiber);\n            for (; !step.done; newIdx++, step = newChildren.next()) {\n              var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, lanes);\n              if (_newFiber4 !== null) {\n                if (shouldTrackSideEffects) {\n                  if (_newFiber4.alternate !== null) {\n                    existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key);\n                  }\n                }\n                lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);\n                if (previousNewFiber === null) {\n                  resultingFirstChild = _newFiber4;\n                } else {\n                  previousNewFiber.sibling = _newFiber4;\n                }\n                previousNewFiber = _newFiber4;\n              }\n            }\n            if (shouldTrackSideEffects) {\n              existingChildren.forEach(function(child2) {\n                return deleteChild(returnFiber, child2);\n              });\n            }\n            if (getIsHydrating()) {\n              var _numberOfForks4 = newIdx;\n              pushTreeFork(returnFiber, _numberOfForks4);\n            }\n            return resultingFirstChild;\n          }\n          function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) {\n            if (currentFirstChild !== null && currentFirstChild.tag === HostText) {\n              deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n              var existing = useFiber(currentFirstChild, textContent);\n              existing.return = returnFiber;\n              return existing;\n            }\n            deleteRemainingChildren(returnFiber, currentFirstChild);\n            var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n            created.return = returnFiber;\n            return created;\n          }\n          function reconcileSingleElement(returnFiber, currentFirstChild, element, lanes) {\n            var key = element.key;\n            var child = currentFirstChild;\n            while (child !== null) {\n              if (child.key === key) {\n                var elementType = element.type;\n                if (elementType === REACT_FRAGMENT_TYPE) {\n                  if (child.tag === Fragment) {\n                    deleteRemainingChildren(returnFiber, child.sibling);\n                    var existing = useFiber(child, element.props.children);\n                    existing.return = returnFiber;\n                    {\n                      existing._debugSource = element._source;\n                      existing._debugOwner = element._owner;\n                    }\n                    return existing;\n                  }\n                } else {\n                  if (child.elementType === elementType || // Keep this check inline so it only runs on the false path:\n                  isCompatibleFamilyForHotReloading(child, element) || // Lazy types should reconcile their resolved type.\n                  // We need to do this after the Hot Reloading check above,\n                  // because hot reloading has different semantics than prod because\n                  // it doesn't resuspend. So we can't let the call below suspend.\n                  typeof elementType === \"object\" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === child.type) {\n                    deleteRemainingChildren(returnFiber, child.sibling);\n                    var _existing = useFiber(child, element.props);\n                    _existing.ref = coerceRef(returnFiber, child, element);\n                    _existing.return = returnFiber;\n                    {\n                      _existing._debugSource = element._source;\n                      _existing._debugOwner = element._owner;\n                    }\n                    return _existing;\n                  }\n                }\n                deleteRemainingChildren(returnFiber, child);\n                break;\n              } else {\n                deleteChild(returnFiber, child);\n              }\n              child = child.sibling;\n            }\n            if (element.type === REACT_FRAGMENT_TYPE) {\n              var created = createFiberFromFragment(element.props.children, returnFiber.mode, lanes, element.key);\n              created.return = returnFiber;\n              return created;\n            } else {\n              var _created4 = createFiberFromElement(element, returnFiber.mode, lanes);\n              _created4.ref = coerceRef(returnFiber, currentFirstChild, element);\n              _created4.return = returnFiber;\n              return _created4;\n            }\n          }\n          function reconcileSinglePortal(returnFiber, currentFirstChild, portal, lanes) {\n            var key = portal.key;\n            var child = currentFirstChild;\n            while (child !== null) {\n              if (child.key === key) {\n                if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {\n                  deleteRemainingChildren(returnFiber, child.sibling);\n                  var existing = useFiber(child, portal.children || []);\n                  existing.return = returnFiber;\n                  return existing;\n                } else {\n                  deleteRemainingChildren(returnFiber, child);\n                  break;\n                }\n              } else {\n                deleteChild(returnFiber, child);\n              }\n              child = child.sibling;\n            }\n            var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n            created.return = returnFiber;\n            return created;\n          }\n          function reconcileChildFibers2(returnFiber, currentFirstChild, newChild, lanes) {\n            var isUnkeyedTopLevelFragment = typeof newChild === \"object\" && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;\n            if (isUnkeyedTopLevelFragment) {\n              newChild = newChild.props.children;\n            }\n            if (typeof newChild === \"object\" && newChild !== null) {\n              switch (newChild.$$typeof) {\n                case REACT_ELEMENT_TYPE:\n                  return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, lanes));\n                case REACT_PORTAL_TYPE:\n                  return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes));\n                case REACT_LAZY_TYPE:\n                  var payload = newChild._payload;\n                  var init = newChild._init;\n                  return reconcileChildFibers2(returnFiber, currentFirstChild, init(payload), lanes);\n              }\n              if (isArray(newChild)) {\n                return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes);\n              }\n              if (getIteratorFn(newChild)) {\n                return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, lanes);\n              }\n              throwOnInvalidObjectType(returnFiber, newChild);\n            }\n            if (typeof newChild === \"string\" && newChild !== \"\" || typeof newChild === \"number\") {\n              return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, \"\" + newChild, lanes));\n            }\n            {\n              if (typeof newChild === \"function\") {\n                warnOnFunctionType(returnFiber);\n              }\n            }\n            return deleteRemainingChildren(returnFiber, currentFirstChild);\n          }\n          return reconcileChildFibers2;\n        }\n        var reconcileChildFibers = ChildReconciler(true);\n        var mountChildFibers = ChildReconciler(false);\n        function cloneChildFibers(current2, workInProgress2) {\n          if (current2 !== null && workInProgress2.child !== current2.child) {\n            throw new Error(\"Resuming work not yet implemented.\");\n          }\n          if (workInProgress2.child === null) {\n            return;\n          }\n          var currentChild = workInProgress2.child;\n          var newChild = createWorkInProgress(currentChild, currentChild.pendingProps);\n          workInProgress2.child = newChild;\n          newChild.return = workInProgress2;\n          while (currentChild.sibling !== null) {\n            currentChild = currentChild.sibling;\n            newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);\n            newChild.return = workInProgress2;\n          }\n          newChild.sibling = null;\n        }\n        function resetChildFibers(workInProgress2, lanes) {\n          var child = workInProgress2.child;\n          while (child !== null) {\n            resetWorkInProgress(child, lanes);\n            child = child.sibling;\n          }\n        }\n        var valueCursor = createCursor(null);\n        var rendererSigil;\n        {\n          rendererSigil = {};\n        }\n        var currentlyRenderingFiber = null;\n        var lastContextDependency = null;\n        var lastFullyObservedContext = null;\n        var isDisallowedContextReadInDEV = false;\n        function resetContextDependencies() {\n          currentlyRenderingFiber = null;\n          lastContextDependency = null;\n          lastFullyObservedContext = null;\n          {\n            isDisallowedContextReadInDEV = false;\n          }\n        }\n        function enterDisallowedContextReadInDEV() {\n          {\n            isDisallowedContextReadInDEV = true;\n          }\n        }\n        function exitDisallowedContextReadInDEV() {\n          {\n            isDisallowedContextReadInDEV = false;\n          }\n        }\n        function pushProvider(providerFiber, context, nextValue) {\n          {\n            push(valueCursor, context._currentValue, providerFiber);\n            context._currentValue = nextValue;\n            {\n              if (context._currentRenderer !== void 0 && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {\n                error(\"Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported.\");\n              }\n              context._currentRenderer = rendererSigil;\n            }\n          }\n        }\n        function popProvider(context, providerFiber) {\n          var currentValue = valueCursor.current;\n          pop(valueCursor, providerFiber);\n          {\n            {\n              context._currentValue = currentValue;\n            }\n          }\n        }\n        function scheduleContextWorkOnParentPath(parent, renderLanes2, propagationRoot) {\n          var node = parent;\n          while (node !== null) {\n            var alternate = node.alternate;\n            if (!isSubsetOfLanes(node.childLanes, renderLanes2)) {\n              node.childLanes = mergeLanes(node.childLanes, renderLanes2);\n              if (alternate !== null) {\n                alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes2);\n              }\n            } else if (alternate !== null && !isSubsetOfLanes(alternate.childLanes, renderLanes2)) {\n              alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes2);\n            }\n            if (node === propagationRoot) {\n              break;\n            }\n            node = node.return;\n          }\n          {\n            if (node !== propagationRoot) {\n              error(\"Expected to find the propagation root when scheduling context work. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n          }\n        }\n        function propagateContextChange(workInProgress2, context, renderLanes2) {\n          {\n            propagateContextChange_eager(workInProgress2, context, renderLanes2);\n          }\n        }\n        function propagateContextChange_eager(workInProgress2, context, renderLanes2) {\n          var fiber = workInProgress2.child;\n          if (fiber !== null) {\n            fiber.return = workInProgress2;\n          }\n          while (fiber !== null) {\n            var nextFiber = void 0;\n            var list = fiber.dependencies;\n            if (list !== null) {\n              nextFiber = fiber.child;\n              var dependency = list.firstContext;\n              while (dependency !== null) {\n                if (dependency.context === context) {\n                  if (fiber.tag === ClassComponent) {\n                    var lane = pickArbitraryLane(renderLanes2);\n                    var update = createUpdate(NoTimestamp, lane);\n                    update.tag = ForceUpdate;\n                    var updateQueue = fiber.updateQueue;\n                    if (updateQueue === null)\n                      ;\n                    else {\n                      var sharedQueue = updateQueue.shared;\n                      var pending = sharedQueue.pending;\n                      if (pending === null) {\n                        update.next = update;\n                      } else {\n                        update.next = pending.next;\n                        pending.next = update;\n                      }\n                      sharedQueue.pending = update;\n                    }\n                  }\n                  fiber.lanes = mergeLanes(fiber.lanes, renderLanes2);\n                  var alternate = fiber.alternate;\n                  if (alternate !== null) {\n                    alternate.lanes = mergeLanes(alternate.lanes, renderLanes2);\n                  }\n                  scheduleContextWorkOnParentPath(fiber.return, renderLanes2, workInProgress2);\n                  list.lanes = mergeLanes(list.lanes, renderLanes2);\n                  break;\n                }\n                dependency = dependency.next;\n              }\n            } else if (fiber.tag === ContextProvider) {\n              nextFiber = fiber.type === workInProgress2.type ? null : fiber.child;\n            } else if (fiber.tag === DehydratedFragment) {\n              var parentSuspense = fiber.return;\n              if (parentSuspense === null) {\n                throw new Error(\"We just came from a parent so we must have had a parent. This is a bug in React.\");\n              }\n              parentSuspense.lanes = mergeLanes(parentSuspense.lanes, renderLanes2);\n              var _alternate = parentSuspense.alternate;\n              if (_alternate !== null) {\n                _alternate.lanes = mergeLanes(_alternate.lanes, renderLanes2);\n              }\n              scheduleContextWorkOnParentPath(parentSuspense, renderLanes2, workInProgress2);\n              nextFiber = fiber.sibling;\n            } else {\n              nextFiber = fiber.child;\n            }\n            if (nextFiber !== null) {\n              nextFiber.return = fiber;\n            } else {\n              nextFiber = fiber;\n              while (nextFiber !== null) {\n                if (nextFiber === workInProgress2) {\n                  nextFiber = null;\n                  break;\n                }\n                var sibling = nextFiber.sibling;\n                if (sibling !== null) {\n                  sibling.return = nextFiber.return;\n                  nextFiber = sibling;\n                  break;\n                }\n                nextFiber = nextFiber.return;\n              }\n            }\n            fiber = nextFiber;\n          }\n        }\n        function prepareToReadContext(workInProgress2, renderLanes2) {\n          currentlyRenderingFiber = workInProgress2;\n          lastContextDependency = null;\n          lastFullyObservedContext = null;\n          var dependencies = workInProgress2.dependencies;\n          if (dependencies !== null) {\n            {\n              var firstContext = dependencies.firstContext;\n              if (firstContext !== null) {\n                if (includesSomeLane(dependencies.lanes, renderLanes2)) {\n                  markWorkInProgressReceivedUpdate();\n                }\n                dependencies.firstContext = null;\n              }\n            }\n          }\n        }\n        function readContext(context) {\n          {\n            if (isDisallowedContextReadInDEV) {\n              error(\"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\");\n            }\n          }\n          var value = context._currentValue;\n          if (lastFullyObservedContext === context)\n            ;\n          else {\n            var contextItem = {\n              context,\n              memoizedValue: value,\n              next: null\n            };\n            if (lastContextDependency === null) {\n              if (currentlyRenderingFiber === null) {\n                throw new Error(\"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\");\n              }\n              lastContextDependency = contextItem;\n              currentlyRenderingFiber.dependencies = {\n                lanes: NoLanes,\n                firstContext: contextItem\n              };\n            } else {\n              lastContextDependency = lastContextDependency.next = contextItem;\n            }\n          }\n          return value;\n        }\n        var concurrentQueues = null;\n        function pushConcurrentUpdateQueue(queue) {\n          if (concurrentQueues === null) {\n            concurrentQueues = [queue];\n          } else {\n            concurrentQueues.push(queue);\n          }\n        }\n        function finishQueueingConcurrentUpdates() {\n          if (concurrentQueues !== null) {\n            for (var i = 0; i < concurrentQueues.length; i++) {\n              var queue = concurrentQueues[i];\n              var lastInterleavedUpdate = queue.interleaved;\n              if (lastInterleavedUpdate !== null) {\n                queue.interleaved = null;\n                var firstInterleavedUpdate = lastInterleavedUpdate.next;\n                var lastPendingUpdate = queue.pending;\n                if (lastPendingUpdate !== null) {\n                  var firstPendingUpdate = lastPendingUpdate.next;\n                  lastPendingUpdate.next = firstInterleavedUpdate;\n                  lastInterleavedUpdate.next = firstPendingUpdate;\n                }\n                queue.pending = lastInterleavedUpdate;\n              }\n            }\n            concurrentQueues = null;\n          }\n        }\n        function enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n          var interleaved = queue.interleaved;\n          if (interleaved === null) {\n            update.next = update;\n            pushConcurrentUpdateQueue(queue);\n          } else {\n            update.next = interleaved.next;\n            interleaved.next = update;\n          }\n          queue.interleaved = update;\n          return markUpdateLaneFromFiberToRoot(fiber, lane);\n        }\n        function enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane) {\n          var interleaved = queue.interleaved;\n          if (interleaved === null) {\n            update.next = update;\n            pushConcurrentUpdateQueue(queue);\n          } else {\n            update.next = interleaved.next;\n            interleaved.next = update;\n          }\n          queue.interleaved = update;\n        }\n        function enqueueConcurrentClassUpdate(fiber, queue, update, lane) {\n          var interleaved = queue.interleaved;\n          if (interleaved === null) {\n            update.next = update;\n            pushConcurrentUpdateQueue(queue);\n          } else {\n            update.next = interleaved.next;\n            interleaved.next = update;\n          }\n          queue.interleaved = update;\n          return markUpdateLaneFromFiberToRoot(fiber, lane);\n        }\n        function enqueueConcurrentRenderForLane(fiber, lane) {\n          return markUpdateLaneFromFiberToRoot(fiber, lane);\n        }\n        var unsafe_markUpdateLaneFromFiberToRoot = markUpdateLaneFromFiberToRoot;\n        function markUpdateLaneFromFiberToRoot(sourceFiber, lane) {\n          sourceFiber.lanes = mergeLanes(sourceFiber.lanes, lane);\n          var alternate = sourceFiber.alternate;\n          if (alternate !== null) {\n            alternate.lanes = mergeLanes(alternate.lanes, lane);\n          }\n          {\n            if (alternate === null && (sourceFiber.flags & (Placement | Hydrating)) !== NoFlags) {\n              warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n            }\n          }\n          var node = sourceFiber;\n          var parent = sourceFiber.return;\n          while (parent !== null) {\n            parent.childLanes = mergeLanes(parent.childLanes, lane);\n            alternate = parent.alternate;\n            if (alternate !== null) {\n              alternate.childLanes = mergeLanes(alternate.childLanes, lane);\n            } else {\n              {\n                if ((parent.flags & (Placement | Hydrating)) !== NoFlags) {\n                  warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n                }\n              }\n            }\n            node = parent;\n            parent = parent.return;\n          }\n          if (node.tag === HostRoot) {\n            var root2 = node.stateNode;\n            return root2;\n          } else {\n            return null;\n          }\n        }\n        var UpdateState = 0;\n        var ReplaceState = 1;\n        var ForceUpdate = 2;\n        var CaptureUpdate = 3;\n        var hasForceUpdate = false;\n        var didWarnUpdateInsideUpdate;\n        var currentlyProcessingQueue;\n        {\n          didWarnUpdateInsideUpdate = false;\n          currentlyProcessingQueue = null;\n        }\n        function initializeUpdateQueue(fiber) {\n          var queue = {\n            baseState: fiber.memoizedState,\n            firstBaseUpdate: null,\n            lastBaseUpdate: null,\n            shared: {\n              pending: null,\n              interleaved: null,\n              lanes: NoLanes\n            },\n            effects: null\n          };\n          fiber.updateQueue = queue;\n        }\n        function cloneUpdateQueue(current2, workInProgress2) {\n          var queue = workInProgress2.updateQueue;\n          var currentQueue = current2.updateQueue;\n          if (queue === currentQueue) {\n            var clone = {\n              baseState: currentQueue.baseState,\n              firstBaseUpdate: currentQueue.firstBaseUpdate,\n              lastBaseUpdate: currentQueue.lastBaseUpdate,\n              shared: currentQueue.shared,\n              effects: currentQueue.effects\n            };\n            workInProgress2.updateQueue = clone;\n          }\n        }\n        function createUpdate(eventTime, lane) {\n          var update = {\n            eventTime,\n            lane,\n            tag: UpdateState,\n            payload: null,\n            callback: null,\n            next: null\n          };\n          return update;\n        }\n        function enqueueUpdate(fiber, update, lane) {\n          var updateQueue = fiber.updateQueue;\n          if (updateQueue === null) {\n            return null;\n          }\n          var sharedQueue = updateQueue.shared;\n          {\n            if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) {\n              error(\"An update (setState, replaceState, or forceUpdate) was scheduled from inside an update function. Update functions should be pure, with zero side-effects. Consider using componentDidUpdate or a callback.\");\n              didWarnUpdateInsideUpdate = true;\n            }\n          }\n          if (isUnsafeClassRenderPhaseUpdate()) {\n            var pending = sharedQueue.pending;\n            if (pending === null) {\n              update.next = update;\n            } else {\n              update.next = pending.next;\n              pending.next = update;\n            }\n            sharedQueue.pending = update;\n            return unsafe_markUpdateLaneFromFiberToRoot(fiber, lane);\n          } else {\n            return enqueueConcurrentClassUpdate(fiber, sharedQueue, update, lane);\n          }\n        }\n        function entangleTransitions(root2, fiber, lane) {\n          var updateQueue = fiber.updateQueue;\n          if (updateQueue === null) {\n            return;\n          }\n          var sharedQueue = updateQueue.shared;\n          if (isTransitionLane(lane)) {\n            var queueLanes = sharedQueue.lanes;\n            queueLanes = intersectLanes(queueLanes, root2.pendingLanes);\n            var newQueueLanes = mergeLanes(queueLanes, lane);\n            sharedQueue.lanes = newQueueLanes;\n            markRootEntangled(root2, newQueueLanes);\n          }\n        }\n        function enqueueCapturedUpdate(workInProgress2, capturedUpdate) {\n          var queue = workInProgress2.updateQueue;\n          var current2 = workInProgress2.alternate;\n          if (current2 !== null) {\n            var currentQueue = current2.updateQueue;\n            if (queue === currentQueue) {\n              var newFirst = null;\n              var newLast = null;\n              var firstBaseUpdate = queue.firstBaseUpdate;\n              if (firstBaseUpdate !== null) {\n                var update = firstBaseUpdate;\n                do {\n                  var clone = {\n                    eventTime: update.eventTime,\n                    lane: update.lane,\n                    tag: update.tag,\n                    payload: update.payload,\n                    callback: update.callback,\n                    next: null\n                  };\n                  if (newLast === null) {\n                    newFirst = newLast = clone;\n                  } else {\n                    newLast.next = clone;\n                    newLast = clone;\n                  }\n                  update = update.next;\n                } while (update !== null);\n                if (newLast === null) {\n                  newFirst = newLast = capturedUpdate;\n                } else {\n                  newLast.next = capturedUpdate;\n                  newLast = capturedUpdate;\n                }\n              } else {\n                newFirst = newLast = capturedUpdate;\n              }\n              queue = {\n                baseState: currentQueue.baseState,\n                firstBaseUpdate: newFirst,\n                lastBaseUpdate: newLast,\n                shared: currentQueue.shared,\n                effects: currentQueue.effects\n              };\n              workInProgress2.updateQueue = queue;\n              return;\n            }\n          }\n          var lastBaseUpdate = queue.lastBaseUpdate;\n          if (lastBaseUpdate === null) {\n            queue.firstBaseUpdate = capturedUpdate;\n          } else {\n            lastBaseUpdate.next = capturedUpdate;\n          }\n          queue.lastBaseUpdate = capturedUpdate;\n        }\n        function getStateFromUpdate(workInProgress2, queue, update, prevState, nextProps, instance) {\n          switch (update.tag) {\n            case ReplaceState: {\n              var payload = update.payload;\n              if (typeof payload === \"function\") {\n                {\n                  enterDisallowedContextReadInDEV();\n                }\n                var nextState = payload.call(instance, prevState, nextProps);\n                {\n                  if (workInProgress2.mode & StrictLegacyMode) {\n                    setIsStrictModeForDevtools(true);\n                    try {\n                      payload.call(instance, prevState, nextProps);\n                    } finally {\n                      setIsStrictModeForDevtools(false);\n                    }\n                  }\n                  exitDisallowedContextReadInDEV();\n                }\n                return nextState;\n              }\n              return payload;\n            }\n            case CaptureUpdate: {\n              workInProgress2.flags = workInProgress2.flags & ~ShouldCapture | DidCapture;\n            }\n            case UpdateState: {\n              var _payload = update.payload;\n              var partialState;\n              if (typeof _payload === \"function\") {\n                {\n                  enterDisallowedContextReadInDEV();\n                }\n                partialState = _payload.call(instance, prevState, nextProps);\n                {\n                  if (workInProgress2.mode & StrictLegacyMode) {\n                    setIsStrictModeForDevtools(true);\n                    try {\n                      _payload.call(instance, prevState, nextProps);\n                    } finally {\n                      setIsStrictModeForDevtools(false);\n                    }\n                  }\n                  exitDisallowedContextReadInDEV();\n                }\n              } else {\n                partialState = _payload;\n              }\n              if (partialState === null || partialState === void 0) {\n                return prevState;\n              }\n              return assign({}, prevState, partialState);\n            }\n            case ForceUpdate: {\n              hasForceUpdate = true;\n              return prevState;\n            }\n          }\n          return prevState;\n        }\n        function processUpdateQueue(workInProgress2, props, instance, renderLanes2) {\n          var queue = workInProgress2.updateQueue;\n          hasForceUpdate = false;\n          {\n            currentlyProcessingQueue = queue.shared;\n          }\n          var firstBaseUpdate = queue.firstBaseUpdate;\n          var lastBaseUpdate = queue.lastBaseUpdate;\n          var pendingQueue = queue.shared.pending;\n          if (pendingQueue !== null) {\n            queue.shared.pending = null;\n            var lastPendingUpdate = pendingQueue;\n            var firstPendingUpdate = lastPendingUpdate.next;\n            lastPendingUpdate.next = null;\n            if (lastBaseUpdate === null) {\n              firstBaseUpdate = firstPendingUpdate;\n            } else {\n              lastBaseUpdate.next = firstPendingUpdate;\n            }\n            lastBaseUpdate = lastPendingUpdate;\n            var current2 = workInProgress2.alternate;\n            if (current2 !== null) {\n              var currentQueue = current2.updateQueue;\n              var currentLastBaseUpdate = currentQueue.lastBaseUpdate;\n              if (currentLastBaseUpdate !== lastBaseUpdate) {\n                if (currentLastBaseUpdate === null) {\n                  currentQueue.firstBaseUpdate = firstPendingUpdate;\n                } else {\n                  currentLastBaseUpdate.next = firstPendingUpdate;\n                }\n                currentQueue.lastBaseUpdate = lastPendingUpdate;\n              }\n            }\n          }\n          if (firstBaseUpdate !== null) {\n            var newState = queue.baseState;\n            var newLanes = NoLanes;\n            var newBaseState = null;\n            var newFirstBaseUpdate = null;\n            var newLastBaseUpdate = null;\n            var update = firstBaseUpdate;\n            do {\n              var updateLane = update.lane;\n              var updateEventTime = update.eventTime;\n              if (!isSubsetOfLanes(renderLanes2, updateLane)) {\n                var clone = {\n                  eventTime: updateEventTime,\n                  lane: updateLane,\n                  tag: update.tag,\n                  payload: update.payload,\n                  callback: update.callback,\n                  next: null\n                };\n                if (newLastBaseUpdate === null) {\n                  newFirstBaseUpdate = newLastBaseUpdate = clone;\n                  newBaseState = newState;\n                } else {\n                  newLastBaseUpdate = newLastBaseUpdate.next = clone;\n                }\n                newLanes = mergeLanes(newLanes, updateLane);\n              } else {\n                if (newLastBaseUpdate !== null) {\n                  var _clone = {\n                    eventTime: updateEventTime,\n                    // This update is going to be committed so we never want uncommit\n                    // it. Using NoLane works because 0 is a subset of all bitmasks, so\n                    // this will never be skipped by the check above.\n                    lane: NoLane,\n                    tag: update.tag,\n                    payload: update.payload,\n                    callback: update.callback,\n                    next: null\n                  };\n                  newLastBaseUpdate = newLastBaseUpdate.next = _clone;\n                }\n                newState = getStateFromUpdate(workInProgress2, queue, update, newState, props, instance);\n                var callback = update.callback;\n                if (callback !== null && // If the update was already committed, we should not queue its\n                // callback again.\n                update.lane !== NoLane) {\n                  workInProgress2.flags |= Callback;\n                  var effects = queue.effects;\n                  if (effects === null) {\n                    queue.effects = [update];\n                  } else {\n                    effects.push(update);\n                  }\n                }\n              }\n              update = update.next;\n              if (update === null) {\n                pendingQueue = queue.shared.pending;\n                if (pendingQueue === null) {\n                  break;\n                } else {\n                  var _lastPendingUpdate = pendingQueue;\n                  var _firstPendingUpdate = _lastPendingUpdate.next;\n                  _lastPendingUpdate.next = null;\n                  update = _firstPendingUpdate;\n                  queue.lastBaseUpdate = _lastPendingUpdate;\n                  queue.shared.pending = null;\n                }\n              }\n            } while (true);\n            if (newLastBaseUpdate === null) {\n              newBaseState = newState;\n            }\n            queue.baseState = newBaseState;\n            queue.firstBaseUpdate = newFirstBaseUpdate;\n            queue.lastBaseUpdate = newLastBaseUpdate;\n            var lastInterleaved = queue.shared.interleaved;\n            if (lastInterleaved !== null) {\n              var interleaved = lastInterleaved;\n              do {\n                newLanes = mergeLanes(newLanes, interleaved.lane);\n                interleaved = interleaved.next;\n              } while (interleaved !== lastInterleaved);\n            } else if (firstBaseUpdate === null) {\n              queue.shared.lanes = NoLanes;\n            }\n            markSkippedUpdateLanes(newLanes);\n            workInProgress2.lanes = newLanes;\n            workInProgress2.memoizedState = newState;\n          }\n          {\n            currentlyProcessingQueue = null;\n          }\n        }\n        function callCallback(callback, context) {\n          if (typeof callback !== \"function\") {\n            throw new Error(\"Invalid argument passed as callback. Expected a function. Instead \" + (\"received: \" + callback));\n          }\n          callback.call(context);\n        }\n        function resetHasForceUpdateBeforeProcessing() {\n          hasForceUpdate = false;\n        }\n        function checkHasForceUpdateAfterProcessing() {\n          return hasForceUpdate;\n        }\n        function commitUpdateQueue(finishedWork, finishedQueue, instance) {\n          var effects = finishedQueue.effects;\n          finishedQueue.effects = null;\n          if (effects !== null) {\n            for (var i = 0; i < effects.length; i++) {\n              var effect = effects[i];\n              var callback = effect.callback;\n              if (callback !== null) {\n                effect.callback = null;\n                callCallback(callback, instance);\n              }\n            }\n          }\n        }\n        var NO_CONTEXT = {};\n        var contextStackCursor$1 = createCursor(NO_CONTEXT);\n        var contextFiberStackCursor = createCursor(NO_CONTEXT);\n        var rootInstanceStackCursor = createCursor(NO_CONTEXT);\n        function requiredContext(c) {\n          if (c === NO_CONTEXT) {\n            throw new Error(\"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          return c;\n        }\n        function getRootHostContainer() {\n          var rootInstance = requiredContext(rootInstanceStackCursor.current);\n          return rootInstance;\n        }\n        function pushHostContainer(fiber, nextRootInstance) {\n          push(rootInstanceStackCursor, nextRootInstance, fiber);\n          push(contextFiberStackCursor, fiber, fiber);\n          push(contextStackCursor$1, NO_CONTEXT, fiber);\n          var nextRootContext = getRootHostContext(nextRootInstance);\n          pop(contextStackCursor$1, fiber);\n          push(contextStackCursor$1, nextRootContext, fiber);\n        }\n        function popHostContainer(fiber) {\n          pop(contextStackCursor$1, fiber);\n          pop(contextFiberStackCursor, fiber);\n          pop(rootInstanceStackCursor, fiber);\n        }\n        function getHostContext() {\n          var context = requiredContext(contextStackCursor$1.current);\n          return context;\n        }\n        function pushHostContext(fiber) {\n          var rootInstance = requiredContext(rootInstanceStackCursor.current);\n          var context = requiredContext(contextStackCursor$1.current);\n          var nextContext = getChildHostContext(context, fiber.type);\n          if (context === nextContext) {\n            return;\n          }\n          push(contextFiberStackCursor, fiber, fiber);\n          push(contextStackCursor$1, nextContext, fiber);\n        }\n        function popHostContext(fiber) {\n          if (contextFiberStackCursor.current !== fiber) {\n            return;\n          }\n          pop(contextStackCursor$1, fiber);\n          pop(contextFiberStackCursor, fiber);\n        }\n        var DefaultSuspenseContext = 0;\n        var SubtreeSuspenseContextMask = 1;\n        var InvisibleParentSuspenseContext = 1;\n        var ForceSuspenseFallback = 2;\n        var suspenseStackCursor = createCursor(DefaultSuspenseContext);\n        function hasSuspenseContext(parentContext, flag) {\n          return (parentContext & flag) !== 0;\n        }\n        function setDefaultShallowSuspenseContext(parentContext) {\n          return parentContext & SubtreeSuspenseContextMask;\n        }\n        function setShallowSuspenseContext(parentContext, shallowContext) {\n          return parentContext & SubtreeSuspenseContextMask | shallowContext;\n        }\n        function addSubtreeSuspenseContext(parentContext, subtreeContext) {\n          return parentContext | subtreeContext;\n        }\n        function pushSuspenseContext(fiber, newContext) {\n          push(suspenseStackCursor, newContext, fiber);\n        }\n        function popSuspenseContext(fiber) {\n          pop(suspenseStackCursor, fiber);\n        }\n        function shouldCaptureSuspense(workInProgress2, hasInvisibleParent) {\n          var nextState = workInProgress2.memoizedState;\n          if (nextState !== null) {\n            if (nextState.dehydrated !== null) {\n              return true;\n            }\n            return false;\n          }\n          var props = workInProgress2.memoizedProps;\n          {\n            return true;\n          }\n        }\n        function findFirstSuspended(row) {\n          var node = row;\n          while (node !== null) {\n            if (node.tag === SuspenseComponent) {\n              var state = node.memoizedState;\n              if (state !== null) {\n                var dehydrated = state.dehydrated;\n                if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {\n                  return node;\n                }\n              }\n            } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't\n            // keep track of whether it suspended or not.\n            node.memoizedProps.revealOrder !== void 0) {\n              var didSuspend = (node.flags & DidCapture) !== NoFlags;\n              if (didSuspend) {\n                return node;\n              }\n            } else if (node.child !== null) {\n              node.child.return = node;\n              node = node.child;\n              continue;\n            }\n            if (node === row) {\n              return null;\n            }\n            while (node.sibling === null) {\n              if (node.return === null || node.return === row) {\n                return null;\n              }\n              node = node.return;\n            }\n            node.sibling.return = node.return;\n            node = node.sibling;\n          }\n          return null;\n        }\n        var NoFlags$1 = (\n          /*   */\n          0\n        );\n        var HasEffect = (\n          /* */\n          1\n        );\n        var Insertion = (\n          /*  */\n          2\n        );\n        var Layout = (\n          /*    */\n          4\n        );\n        var Passive$1 = (\n          /*   */\n          8\n        );\n        var workInProgressSources = [];\n        function resetWorkInProgressVersions() {\n          for (var i = 0; i < workInProgressSources.length; i++) {\n            var mutableSource = workInProgressSources[i];\n            {\n              mutableSource._workInProgressVersionPrimary = null;\n            }\n          }\n          workInProgressSources.length = 0;\n        }\n        function registerMutableSourceForHydration(root2, mutableSource) {\n          var getVersion = mutableSource._getVersion;\n          var version = getVersion(mutableSource._source);\n          if (root2.mutableSourceEagerHydrationData == null) {\n            root2.mutableSourceEagerHydrationData = [mutableSource, version];\n          } else {\n            root2.mutableSourceEagerHydrationData.push(mutableSource, version);\n          }\n        }\n        var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher, ReactCurrentBatchConfig$2 = ReactSharedInternals.ReactCurrentBatchConfig;\n        var didWarnAboutMismatchedHooksForComponent;\n        var didWarnUncachedGetSnapshot;\n        {\n          didWarnAboutMismatchedHooksForComponent = /* @__PURE__ */ new Set();\n        }\n        var renderLanes = NoLanes;\n        var currentlyRenderingFiber$1 = null;\n        var currentHook = null;\n        var workInProgressHook = null;\n        var didScheduleRenderPhaseUpdate = false;\n        var didScheduleRenderPhaseUpdateDuringThisPass = false;\n        var localIdCounter = 0;\n        var globalClientIdCounter = 0;\n        var RE_RENDER_LIMIT = 25;\n        var currentHookNameInDev = null;\n        var hookTypesDev = null;\n        var hookTypesUpdateIndexDev = -1;\n        var ignorePreviousDependencies = false;\n        function mountHookTypesDev() {\n          {\n            var hookName = currentHookNameInDev;\n            if (hookTypesDev === null) {\n              hookTypesDev = [hookName];\n            } else {\n              hookTypesDev.push(hookName);\n            }\n          }\n        }\n        function updateHookTypesDev() {\n          {\n            var hookName = currentHookNameInDev;\n            if (hookTypesDev !== null) {\n              hookTypesUpdateIndexDev++;\n              if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {\n                warnOnHookMismatchInDev(hookName);\n              }\n            }\n          }\n        }\n        function checkDepsAreArrayDev(deps) {\n          {\n            if (deps !== void 0 && deps !== null && !isArray(deps)) {\n              error(\"%s received a final argument that is not an array (instead, received `%s`). When specified, the final argument must be an array.\", currentHookNameInDev, typeof deps);\n            }\n          }\n        }\n        function warnOnHookMismatchInDev(currentHookName) {\n          {\n            var componentName = getComponentNameFromFiber(currentlyRenderingFiber$1);\n            if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {\n              didWarnAboutMismatchedHooksForComponent.add(componentName);\n              if (hookTypesDev !== null) {\n                var table = \"\";\n                var secondColumnStart = 30;\n                for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {\n                  var oldHookName = hookTypesDev[i];\n                  var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;\n                  var row = i + 1 + \". \" + oldHookName;\n                  while (row.length < secondColumnStart) {\n                    row += \" \";\n                  }\n                  row += newHookName + \"\\n\";\n                  table += row;\n                }\n                error(\"React has detected a change in the order of Hooks called by %s. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks\\n\\n   Previous render            Next render\\n   ------------------------------------------------------\\n%s   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\", componentName, table);\n              }\n            }\n          }\n        }\n        function throwInvalidHookError() {\n          throw new Error(\"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\");\n        }\n        function areHookInputsEqual(nextDeps, prevDeps) {\n          {\n            if (ignorePreviousDependencies) {\n              return false;\n            }\n          }\n          if (prevDeps === null) {\n            {\n              error(\"%s received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.\", currentHookNameInDev);\n            }\n            return false;\n          }\n          {\n            if (nextDeps.length !== prevDeps.length) {\n              error(\"The final argument passed to %s changed size between renders. The order and size of this array must remain constant.\\n\\nPrevious: %s\\nIncoming: %s\", currentHookNameInDev, \"[\" + prevDeps.join(\", \") + \"]\", \"[\" + nextDeps.join(\", \") + \"]\");\n            }\n          }\n          for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {\n            if (objectIs(nextDeps[i], prevDeps[i])) {\n              continue;\n            }\n            return false;\n          }\n          return true;\n        }\n        function renderWithHooks(current2, workInProgress2, Component, props, secondArg, nextRenderLanes) {\n          renderLanes = nextRenderLanes;\n          currentlyRenderingFiber$1 = workInProgress2;\n          {\n            hookTypesDev = current2 !== null ? current2._debugHookTypes : null;\n            hookTypesUpdateIndexDev = -1;\n            ignorePreviousDependencies = current2 !== null && current2.type !== workInProgress2.type;\n          }\n          workInProgress2.memoizedState = null;\n          workInProgress2.updateQueue = null;\n          workInProgress2.lanes = NoLanes;\n          {\n            if (current2 !== null && current2.memoizedState !== null) {\n              ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;\n            } else if (hookTypesDev !== null) {\n              ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;\n            } else {\n              ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;\n            }\n          }\n          var children = Component(props, secondArg);\n          if (didScheduleRenderPhaseUpdateDuringThisPass) {\n            var numberOfReRenders = 0;\n            do {\n              didScheduleRenderPhaseUpdateDuringThisPass = false;\n              localIdCounter = 0;\n              if (numberOfReRenders >= RE_RENDER_LIMIT) {\n                throw new Error(\"Too many re-renders. React limits the number of renders to prevent an infinite loop.\");\n              }\n              numberOfReRenders += 1;\n              {\n                ignorePreviousDependencies = false;\n              }\n              currentHook = null;\n              workInProgressHook = null;\n              workInProgress2.updateQueue = null;\n              {\n                hookTypesUpdateIndexDev = -1;\n              }\n              ReactCurrentDispatcher$1.current = HooksDispatcherOnRerenderInDEV;\n              children = Component(props, secondArg);\n            } while (didScheduleRenderPhaseUpdateDuringThisPass);\n          }\n          ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n          {\n            workInProgress2._debugHookTypes = hookTypesDev;\n          }\n          var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;\n          renderLanes = NoLanes;\n          currentlyRenderingFiber$1 = null;\n          currentHook = null;\n          workInProgressHook = null;\n          {\n            currentHookNameInDev = null;\n            hookTypesDev = null;\n            hookTypesUpdateIndexDev = -1;\n            if (current2 !== null && (current2.flags & StaticMask) !== (workInProgress2.flags & StaticMask) && // Disable this warning in legacy mode, because legacy Suspense is weird\n            // and creates false positives. To make this work in legacy mode, we'd\n            // need to mark fibers that commit in an incomplete state, somehow. For\n            // now I'll disable the warning that most of the bugs that would trigger\n            // it are either exclusive to concurrent mode or exist in both.\n            (current2.mode & ConcurrentMode) !== NoMode) {\n              error(\"Internal React error: Expected static flag was missing. Please notify the React team.\");\n            }\n          }\n          didScheduleRenderPhaseUpdate = false;\n          if (didRenderTooFewHooks) {\n            throw new Error(\"Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\");\n          }\n          return children;\n        }\n        function checkDidRenderIdHook() {\n          var didRenderIdHook = localIdCounter !== 0;\n          localIdCounter = 0;\n          return didRenderIdHook;\n        }\n        function bailoutHooks(current2, workInProgress2, lanes) {\n          workInProgress2.updateQueue = current2.updateQueue;\n          if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n            workInProgress2.flags &= ~(MountPassiveDev | MountLayoutDev | Passive | Update);\n          } else {\n            workInProgress2.flags &= ~(Passive | Update);\n          }\n          current2.lanes = removeLanes(current2.lanes, lanes);\n        }\n        function resetHooksAfterThrow() {\n          ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n          if (didScheduleRenderPhaseUpdate) {\n            var hook = currentlyRenderingFiber$1.memoizedState;\n            while (hook !== null) {\n              var queue = hook.queue;\n              if (queue !== null) {\n                queue.pending = null;\n              }\n              hook = hook.next;\n            }\n            didScheduleRenderPhaseUpdate = false;\n          }\n          renderLanes = NoLanes;\n          currentlyRenderingFiber$1 = null;\n          currentHook = null;\n          workInProgressHook = null;\n          {\n            hookTypesDev = null;\n            hookTypesUpdateIndexDev = -1;\n            currentHookNameInDev = null;\n            isUpdatingOpaqueValueInRenderPhase = false;\n          }\n          didScheduleRenderPhaseUpdateDuringThisPass = false;\n          localIdCounter = 0;\n        }\n        function mountWorkInProgressHook() {\n          var hook = {\n            memoizedState: null,\n            baseState: null,\n            baseQueue: null,\n            queue: null,\n            next: null\n          };\n          if (workInProgressHook === null) {\n            currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;\n          } else {\n            workInProgressHook = workInProgressHook.next = hook;\n          }\n          return workInProgressHook;\n        }\n        function updateWorkInProgressHook() {\n          var nextCurrentHook;\n          if (currentHook === null) {\n            var current2 = currentlyRenderingFiber$1.alternate;\n            if (current2 !== null) {\n              nextCurrentHook = current2.memoizedState;\n            } else {\n              nextCurrentHook = null;\n            }\n          } else {\n            nextCurrentHook = currentHook.next;\n          }\n          var nextWorkInProgressHook;\n          if (workInProgressHook === null) {\n            nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;\n          } else {\n            nextWorkInProgressHook = workInProgressHook.next;\n          }\n          if (nextWorkInProgressHook !== null) {\n            workInProgressHook = nextWorkInProgressHook;\n            nextWorkInProgressHook = workInProgressHook.next;\n            currentHook = nextCurrentHook;\n          } else {\n            if (nextCurrentHook === null) {\n              throw new Error(\"Rendered more hooks than during the previous render.\");\n            }\n            currentHook = nextCurrentHook;\n            var newHook = {\n              memoizedState: currentHook.memoizedState,\n              baseState: currentHook.baseState,\n              baseQueue: currentHook.baseQueue,\n              queue: currentHook.queue,\n              next: null\n            };\n            if (workInProgressHook === null) {\n              currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;\n            } else {\n              workInProgressHook = workInProgressHook.next = newHook;\n            }\n          }\n          return workInProgressHook;\n        }\n        function createFunctionComponentUpdateQueue() {\n          return {\n            lastEffect: null,\n            stores: null\n          };\n        }\n        function basicStateReducer(state, action) {\n          return typeof action === \"function\" ? action(state) : action;\n        }\n        function mountReducer(reducer, initialArg, init) {\n          var hook = mountWorkInProgressHook();\n          var initialState;\n          if (init !== void 0) {\n            initialState = init(initialArg);\n          } else {\n            initialState = initialArg;\n          }\n          hook.memoizedState = hook.baseState = initialState;\n          var queue = {\n            pending: null,\n            interleaved: null,\n            lanes: NoLanes,\n            dispatch: null,\n            lastRenderedReducer: reducer,\n            lastRenderedState: initialState\n          };\n          hook.queue = queue;\n          var dispatch = queue.dispatch = dispatchReducerAction.bind(null, currentlyRenderingFiber$1, queue);\n          return [hook.memoizedState, dispatch];\n        }\n        function updateReducer(reducer, initialArg, init) {\n          var hook = updateWorkInProgressHook();\n          var queue = hook.queue;\n          if (queue === null) {\n            throw new Error(\"Should have a queue. This is likely a bug in React. Please file an issue.\");\n          }\n          queue.lastRenderedReducer = reducer;\n          var current2 = currentHook;\n          var baseQueue = current2.baseQueue;\n          var pendingQueue = queue.pending;\n          if (pendingQueue !== null) {\n            if (baseQueue !== null) {\n              var baseFirst = baseQueue.next;\n              var pendingFirst = pendingQueue.next;\n              baseQueue.next = pendingFirst;\n              pendingQueue.next = baseFirst;\n            }\n            {\n              if (current2.baseQueue !== baseQueue) {\n                error(\"Internal error: Expected work-in-progress queue to be a clone. This is a bug in React.\");\n              }\n            }\n            current2.baseQueue = baseQueue = pendingQueue;\n            queue.pending = null;\n          }\n          if (baseQueue !== null) {\n            var first = baseQueue.next;\n            var newState = current2.baseState;\n            var newBaseState = null;\n            var newBaseQueueFirst = null;\n            var newBaseQueueLast = null;\n            var update = first;\n            do {\n              var updateLane = update.lane;\n              if (!isSubsetOfLanes(renderLanes, updateLane)) {\n                var clone = {\n                  lane: updateLane,\n                  action: update.action,\n                  hasEagerState: update.hasEagerState,\n                  eagerState: update.eagerState,\n                  next: null\n                };\n                if (newBaseQueueLast === null) {\n                  newBaseQueueFirst = newBaseQueueLast = clone;\n                  newBaseState = newState;\n                } else {\n                  newBaseQueueLast = newBaseQueueLast.next = clone;\n                }\n                currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane);\n                markSkippedUpdateLanes(updateLane);\n              } else {\n                if (newBaseQueueLast !== null) {\n                  var _clone = {\n                    // This update is going to be committed so we never want uncommit\n                    // it. Using NoLane works because 0 is a subset of all bitmasks, so\n                    // this will never be skipped by the check above.\n                    lane: NoLane,\n                    action: update.action,\n                    hasEagerState: update.hasEagerState,\n                    eagerState: update.eagerState,\n                    next: null\n                  };\n                  newBaseQueueLast = newBaseQueueLast.next = _clone;\n                }\n                if (update.hasEagerState) {\n                  newState = update.eagerState;\n                } else {\n                  var action = update.action;\n                  newState = reducer(newState, action);\n                }\n              }\n              update = update.next;\n            } while (update !== null && update !== first);\n            if (newBaseQueueLast === null) {\n              newBaseState = newState;\n            } else {\n              newBaseQueueLast.next = newBaseQueueFirst;\n            }\n            if (!objectIs(newState, hook.memoizedState)) {\n              markWorkInProgressReceivedUpdate();\n            }\n            hook.memoizedState = newState;\n            hook.baseState = newBaseState;\n            hook.baseQueue = newBaseQueueLast;\n            queue.lastRenderedState = newState;\n          }\n          var lastInterleaved = queue.interleaved;\n          if (lastInterleaved !== null) {\n            var interleaved = lastInterleaved;\n            do {\n              var interleavedLane = interleaved.lane;\n              currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, interleavedLane);\n              markSkippedUpdateLanes(interleavedLane);\n              interleaved = interleaved.next;\n            } while (interleaved !== lastInterleaved);\n          } else if (baseQueue === null) {\n            queue.lanes = NoLanes;\n          }\n          var dispatch = queue.dispatch;\n          return [hook.memoizedState, dispatch];\n        }\n        function rerenderReducer(reducer, initialArg, init) {\n          var hook = updateWorkInProgressHook();\n          var queue = hook.queue;\n          if (queue === null) {\n            throw new Error(\"Should have a queue. This is likely a bug in React. Please file an issue.\");\n          }\n          queue.lastRenderedReducer = reducer;\n          var dispatch = queue.dispatch;\n          var lastRenderPhaseUpdate = queue.pending;\n          var newState = hook.memoizedState;\n          if (lastRenderPhaseUpdate !== null) {\n            queue.pending = null;\n            var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n            var update = firstRenderPhaseUpdate;\n            do {\n              var action = update.action;\n              newState = reducer(newState, action);\n              update = update.next;\n            } while (update !== firstRenderPhaseUpdate);\n            if (!objectIs(newState, hook.memoizedState)) {\n              markWorkInProgressReceivedUpdate();\n            }\n            hook.memoizedState = newState;\n            if (hook.baseQueue === null) {\n              hook.baseState = newState;\n            }\n            queue.lastRenderedState = newState;\n          }\n          return [newState, dispatch];\n        }\n        function mountMutableSource(source, getSnapshot, subscribe) {\n          {\n            return void 0;\n          }\n        }\n        function updateMutableSource(source, getSnapshot, subscribe) {\n          {\n            return void 0;\n          }\n        }\n        function mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n          var fiber = currentlyRenderingFiber$1;\n          var hook = mountWorkInProgressHook();\n          var nextSnapshot;\n          var isHydrating2 = getIsHydrating();\n          if (isHydrating2) {\n            if (getServerSnapshot === void 0) {\n              throw new Error(\"Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering.\");\n            }\n            nextSnapshot = getServerSnapshot();\n            {\n              if (!didWarnUncachedGetSnapshot) {\n                if (nextSnapshot !== getServerSnapshot()) {\n                  error(\"The result of getServerSnapshot should be cached to avoid an infinite loop\");\n                  didWarnUncachedGetSnapshot = true;\n                }\n              }\n            }\n          } else {\n            nextSnapshot = getSnapshot();\n            {\n              if (!didWarnUncachedGetSnapshot) {\n                var cachedSnapshot = getSnapshot();\n                if (!objectIs(nextSnapshot, cachedSnapshot)) {\n                  error(\"The result of getSnapshot should be cached to avoid an infinite loop\");\n                  didWarnUncachedGetSnapshot = true;\n                }\n              }\n            }\n            var root2 = getWorkInProgressRoot();\n            if (root2 === null) {\n              throw new Error(\"Expected a work-in-progress root. This is a bug in React. Please file an issue.\");\n            }\n            if (!includesBlockingLane(root2, renderLanes)) {\n              pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n            }\n          }\n          hook.memoizedState = nextSnapshot;\n          var inst = {\n            value: nextSnapshot,\n            getSnapshot\n          };\n          hook.queue = inst;\n          mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]);\n          fiber.flags |= Passive;\n          pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), void 0, null);\n          return nextSnapshot;\n        }\n        function updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n          var fiber = currentlyRenderingFiber$1;\n          var hook = updateWorkInProgressHook();\n          var nextSnapshot = getSnapshot();\n          {\n            if (!didWarnUncachedGetSnapshot) {\n              var cachedSnapshot = getSnapshot();\n              if (!objectIs(nextSnapshot, cachedSnapshot)) {\n                error(\"The result of getSnapshot should be cached to avoid an infinite loop\");\n                didWarnUncachedGetSnapshot = true;\n              }\n            }\n          }\n          var prevSnapshot = hook.memoizedState;\n          var snapshotChanged = !objectIs(prevSnapshot, nextSnapshot);\n          if (snapshotChanged) {\n            hook.memoizedState = nextSnapshot;\n            markWorkInProgressReceivedUpdate();\n          }\n          var inst = hook.queue;\n          updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]);\n          if (inst.getSnapshot !== getSnapshot || snapshotChanged || // Check if the susbcribe function changed. We can save some memory by\n          // checking whether we scheduled a subscription effect above.\n          workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) {\n            fiber.flags |= Passive;\n            pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), void 0, null);\n            var root2 = getWorkInProgressRoot();\n            if (root2 === null) {\n              throw new Error(\"Expected a work-in-progress root. This is a bug in React. Please file an issue.\");\n            }\n            if (!includesBlockingLane(root2, renderLanes)) {\n              pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n            }\n          }\n          return nextSnapshot;\n        }\n        function pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n          fiber.flags |= StoreConsistency;\n          var check = {\n            getSnapshot,\n            value: renderedSnapshot\n          };\n          var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n          if (componentUpdateQueue === null) {\n            componentUpdateQueue = createFunctionComponentUpdateQueue();\n            currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n            componentUpdateQueue.stores = [check];\n          } else {\n            var stores = componentUpdateQueue.stores;\n            if (stores === null) {\n              componentUpdateQueue.stores = [check];\n            } else {\n              stores.push(check);\n            }\n          }\n        }\n        function updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n          inst.value = nextSnapshot;\n          inst.getSnapshot = getSnapshot;\n          if (checkIfSnapshotChanged(inst)) {\n            forceStoreRerender(fiber);\n          }\n        }\n        function subscribeToStore(fiber, inst, subscribe) {\n          var handleStoreChange = function() {\n            if (checkIfSnapshotChanged(inst)) {\n              forceStoreRerender(fiber);\n            }\n          };\n          return subscribe(handleStoreChange);\n        }\n        function checkIfSnapshotChanged(inst) {\n          var latestGetSnapshot = inst.getSnapshot;\n          var prevValue = inst.value;\n          try {\n            var nextValue = latestGetSnapshot();\n            return !objectIs(prevValue, nextValue);\n          } catch (error2) {\n            return true;\n          }\n        }\n        function forceStoreRerender(fiber) {\n          var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);\n          if (root2 !== null) {\n            scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);\n          }\n        }\n        function mountState(initialState) {\n          var hook = mountWorkInProgressHook();\n          if (typeof initialState === \"function\") {\n            initialState = initialState();\n          }\n          hook.memoizedState = hook.baseState = initialState;\n          var queue = {\n            pending: null,\n            interleaved: null,\n            lanes: NoLanes,\n            dispatch: null,\n            lastRenderedReducer: basicStateReducer,\n            lastRenderedState: initialState\n          };\n          hook.queue = queue;\n          var dispatch = queue.dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);\n          return [hook.memoizedState, dispatch];\n        }\n        function updateState(initialState) {\n          return updateReducer(basicStateReducer);\n        }\n        function rerenderState(initialState) {\n          return rerenderReducer(basicStateReducer);\n        }\n        function pushEffect(tag, create, destroy, deps) {\n          var effect = {\n            tag,\n            create,\n            destroy,\n            deps,\n            // Circular\n            next: null\n          };\n          var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n          if (componentUpdateQueue === null) {\n            componentUpdateQueue = createFunctionComponentUpdateQueue();\n            currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n            componentUpdateQueue.lastEffect = effect.next = effect;\n          } else {\n            var lastEffect = componentUpdateQueue.lastEffect;\n            if (lastEffect === null) {\n              componentUpdateQueue.lastEffect = effect.next = effect;\n            } else {\n              var firstEffect = lastEffect.next;\n              lastEffect.next = effect;\n              effect.next = firstEffect;\n              componentUpdateQueue.lastEffect = effect;\n            }\n          }\n          return effect;\n        }\n        function mountRef(initialValue) {\n          var hook = mountWorkInProgressHook();\n          {\n            var _ref2 = {\n              current: initialValue\n            };\n            hook.memoizedState = _ref2;\n            return _ref2;\n          }\n        }\n        function updateRef(initialValue) {\n          var hook = updateWorkInProgressHook();\n          return hook.memoizedState;\n        }\n        function mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n          var hook = mountWorkInProgressHook();\n          var nextDeps = deps === void 0 ? null : deps;\n          currentlyRenderingFiber$1.flags |= fiberFlags;\n          hook.memoizedState = pushEffect(HasEffect | hookFlags, create, void 0, nextDeps);\n        }\n        function updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n          var hook = updateWorkInProgressHook();\n          var nextDeps = deps === void 0 ? null : deps;\n          var destroy = void 0;\n          if (currentHook !== null) {\n            var prevEffect = currentHook.memoizedState;\n            destroy = prevEffect.destroy;\n            if (nextDeps !== null) {\n              var prevDeps = prevEffect.deps;\n              if (areHookInputsEqual(nextDeps, prevDeps)) {\n                hook.memoizedState = pushEffect(hookFlags, create, destroy, nextDeps);\n                return;\n              }\n            }\n          }\n          currentlyRenderingFiber$1.flags |= fiberFlags;\n          hook.memoizedState = pushEffect(HasEffect | hookFlags, create, destroy, nextDeps);\n        }\n        function mountEffect(create, deps) {\n          if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n            return mountEffectImpl(MountPassiveDev | Passive | PassiveStatic, Passive$1, create, deps);\n          } else {\n            return mountEffectImpl(Passive | PassiveStatic, Passive$1, create, deps);\n          }\n        }\n        function updateEffect(create, deps) {\n          return updateEffectImpl(Passive, Passive$1, create, deps);\n        }\n        function mountInsertionEffect(create, deps) {\n          return mountEffectImpl(Update, Insertion, create, deps);\n        }\n        function updateInsertionEffect(create, deps) {\n          return updateEffectImpl(Update, Insertion, create, deps);\n        }\n        function mountLayoutEffect(create, deps) {\n          var fiberFlags = Update;\n          {\n            fiberFlags |= LayoutStatic;\n          }\n          if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n            fiberFlags |= MountLayoutDev;\n          }\n          return mountEffectImpl(fiberFlags, Layout, create, deps);\n        }\n        function updateLayoutEffect(create, deps) {\n          return updateEffectImpl(Update, Layout, create, deps);\n        }\n        function imperativeHandleEffect(create, ref) {\n          if (typeof ref === \"function\") {\n            var refCallback = ref;\n            var _inst = create();\n            refCallback(_inst);\n            return function() {\n              refCallback(null);\n            };\n          } else if (ref !== null && ref !== void 0) {\n            var refObject = ref;\n            {\n              if (!refObject.hasOwnProperty(\"current\")) {\n                error(\"Expected useImperativeHandle() first argument to either be a ref callback or React.createRef() object. Instead received: %s.\", \"an object with keys {\" + Object.keys(refObject).join(\", \") + \"}\");\n              }\n            }\n            var _inst2 = create();\n            refObject.current = _inst2;\n            return function() {\n              refObject.current = null;\n            };\n          }\n        }\n        function mountImperativeHandle(ref, create, deps) {\n          {\n            if (typeof create !== \"function\") {\n              error(\"Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.\", create !== null ? typeof create : \"null\");\n            }\n          }\n          var effectDeps = deps !== null && deps !== void 0 ? deps.concat([ref]) : null;\n          var fiberFlags = Update;\n          {\n            fiberFlags |= LayoutStatic;\n          }\n          if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n            fiberFlags |= MountLayoutDev;\n          }\n          return mountEffectImpl(fiberFlags, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n        }\n        function updateImperativeHandle(ref, create, deps) {\n          {\n            if (typeof create !== \"function\") {\n              error(\"Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.\", create !== null ? typeof create : \"null\");\n            }\n          }\n          var effectDeps = deps !== null && deps !== void 0 ? deps.concat([ref]) : null;\n          return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n        }\n        function mountDebugValue(value, formatterFn) {\n        }\n        var updateDebugValue = mountDebugValue;\n        function mountCallback(callback, deps) {\n          var hook = mountWorkInProgressHook();\n          var nextDeps = deps === void 0 ? null : deps;\n          hook.memoizedState = [callback, nextDeps];\n          return callback;\n        }\n        function updateCallback(callback, deps) {\n          var hook = updateWorkInProgressHook();\n          var nextDeps = deps === void 0 ? null : deps;\n          var prevState = hook.memoizedState;\n          if (prevState !== null) {\n            if (nextDeps !== null) {\n              var prevDeps = prevState[1];\n              if (areHookInputsEqual(nextDeps, prevDeps)) {\n                return prevState[0];\n              }\n            }\n          }\n          hook.memoizedState = [callback, nextDeps];\n          return callback;\n        }\n        function mountMemo(nextCreate, deps) {\n          var hook = mountWorkInProgressHook();\n          var nextDeps = deps === void 0 ? null : deps;\n          var nextValue = nextCreate();\n          hook.memoizedState = [nextValue, nextDeps];\n          return nextValue;\n        }\n        function updateMemo(nextCreate, deps) {\n          var hook = updateWorkInProgressHook();\n          var nextDeps = deps === void 0 ? null : deps;\n          var prevState = hook.memoizedState;\n          if (prevState !== null) {\n            if (nextDeps !== null) {\n              var prevDeps = prevState[1];\n              if (areHookInputsEqual(nextDeps, prevDeps)) {\n                return prevState[0];\n              }\n            }\n          }\n          var nextValue = nextCreate();\n          hook.memoizedState = [nextValue, nextDeps];\n          return nextValue;\n        }\n        function mountDeferredValue(value) {\n          var hook = mountWorkInProgressHook();\n          hook.memoizedState = value;\n          return value;\n        }\n        function updateDeferredValue(value) {\n          var hook = updateWorkInProgressHook();\n          var resolvedCurrentHook = currentHook;\n          var prevValue = resolvedCurrentHook.memoizedState;\n          return updateDeferredValueImpl(hook, prevValue, value);\n        }\n        function rerenderDeferredValue(value) {\n          var hook = updateWorkInProgressHook();\n          if (currentHook === null) {\n            hook.memoizedState = value;\n            return value;\n          } else {\n            var prevValue = currentHook.memoizedState;\n            return updateDeferredValueImpl(hook, prevValue, value);\n          }\n        }\n        function updateDeferredValueImpl(hook, prevValue, value) {\n          var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes);\n          if (shouldDeferValue) {\n            if (!objectIs(value, prevValue)) {\n              var deferredLane = claimNextTransitionLane();\n              currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, deferredLane);\n              markSkippedUpdateLanes(deferredLane);\n              hook.baseState = true;\n            }\n            return prevValue;\n          } else {\n            if (hook.baseState) {\n              hook.baseState = false;\n              markWorkInProgressReceivedUpdate();\n            }\n            hook.memoizedState = value;\n            return value;\n          }\n        }\n        function startTransition(setPending, callback, options2) {\n          var previousPriority = getCurrentUpdatePriority();\n          setCurrentUpdatePriority(higherEventPriority(previousPriority, ContinuousEventPriority));\n          setPending(true);\n          var prevTransition = ReactCurrentBatchConfig$2.transition;\n          ReactCurrentBatchConfig$2.transition = {};\n          var currentTransition = ReactCurrentBatchConfig$2.transition;\n          {\n            ReactCurrentBatchConfig$2.transition._updatedFibers = /* @__PURE__ */ new Set();\n          }\n          try {\n            setPending(false);\n            callback();\n          } finally {\n            setCurrentUpdatePriority(previousPriority);\n            ReactCurrentBatchConfig$2.transition = prevTransition;\n            {\n              if (prevTransition === null && currentTransition._updatedFibers) {\n                var updatedFibersCount = currentTransition._updatedFibers.size;\n                if (updatedFibersCount > 10) {\n                  warn(\"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\");\n                }\n                currentTransition._updatedFibers.clear();\n              }\n            }\n          }\n        }\n        function mountTransition() {\n          var _mountState = mountState(false), isPending = _mountState[0], setPending = _mountState[1];\n          var start = startTransition.bind(null, setPending);\n          var hook = mountWorkInProgressHook();\n          hook.memoizedState = start;\n          return [isPending, start];\n        }\n        function updateTransition() {\n          var _updateState = updateState(), isPending = _updateState[0];\n          var hook = updateWorkInProgressHook();\n          var start = hook.memoizedState;\n          return [isPending, start];\n        }\n        function rerenderTransition() {\n          var _rerenderState = rerenderState(), isPending = _rerenderState[0];\n          var hook = updateWorkInProgressHook();\n          var start = hook.memoizedState;\n          return [isPending, start];\n        }\n        var isUpdatingOpaqueValueInRenderPhase = false;\n        function getIsUpdatingOpaqueValueInRenderPhaseInDEV() {\n          {\n            return isUpdatingOpaqueValueInRenderPhase;\n          }\n        }\n        function mountId() {\n          var hook = mountWorkInProgressHook();\n          var root2 = getWorkInProgressRoot();\n          var identifierPrefix = root2.identifierPrefix;\n          var id;\n          if (getIsHydrating()) {\n            var treeId = getTreeId();\n            id = \":\" + identifierPrefix + \"R\" + treeId;\n            var localId = localIdCounter++;\n            if (localId > 0) {\n              id += \"H\" + localId.toString(32);\n            }\n            id += \":\";\n          } else {\n            var globalClientId = globalClientIdCounter++;\n            id = \":\" + identifierPrefix + \"r\" + globalClientId.toString(32) + \":\";\n          }\n          hook.memoizedState = id;\n          return id;\n        }\n        function updateId() {\n          var hook = updateWorkInProgressHook();\n          var id = hook.memoizedState;\n          return id;\n        }\n        function dispatchReducerAction(fiber, queue, action) {\n          {\n            if (typeof arguments[3] === \"function\") {\n              error(\"State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect().\");\n            }\n          }\n          var lane = requestUpdateLane(fiber);\n          var update = {\n            lane,\n            action,\n            hasEagerState: false,\n            eagerState: null,\n            next: null\n          };\n          if (isRenderPhaseUpdate(fiber)) {\n            enqueueRenderPhaseUpdate(queue, update);\n          } else {\n            var root2 = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n            if (root2 !== null) {\n              var eventTime = requestEventTime();\n              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);\n              entangleTransitionUpdate(root2, queue, lane);\n            }\n          }\n          markUpdateInDevTools(fiber, lane);\n        }\n        function dispatchSetState(fiber, queue, action) {\n          {\n            if (typeof arguments[3] === \"function\") {\n              error(\"State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect().\");\n            }\n          }\n          var lane = requestUpdateLane(fiber);\n          var update = {\n            lane,\n            action,\n            hasEagerState: false,\n            eagerState: null,\n            next: null\n          };\n          if (isRenderPhaseUpdate(fiber)) {\n            enqueueRenderPhaseUpdate(queue, update);\n          } else {\n            var alternate = fiber.alternate;\n            if (fiber.lanes === NoLanes && (alternate === null || alternate.lanes === NoLanes)) {\n              var lastRenderedReducer = queue.lastRenderedReducer;\n              if (lastRenderedReducer !== null) {\n                var prevDispatcher;\n                {\n                  prevDispatcher = ReactCurrentDispatcher$1.current;\n                  ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n                }\n                try {\n                  var currentState = queue.lastRenderedState;\n                  var eagerState = lastRenderedReducer(currentState, action);\n                  update.hasEagerState = true;\n                  update.eagerState = eagerState;\n                  if (objectIs(eagerState, currentState)) {\n                    enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane);\n                    return;\n                  }\n                } catch (error2) {\n                } finally {\n                  {\n                    ReactCurrentDispatcher$1.current = prevDispatcher;\n                  }\n                }\n              }\n            }\n            var root2 = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n            if (root2 !== null) {\n              var eventTime = requestEventTime();\n              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);\n              entangleTransitionUpdate(root2, queue, lane);\n            }\n          }\n          markUpdateInDevTools(fiber, lane);\n        }\n        function isRenderPhaseUpdate(fiber) {\n          var alternate = fiber.alternate;\n          return fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1;\n        }\n        function enqueueRenderPhaseUpdate(queue, update) {\n          didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;\n          var pending = queue.pending;\n          if (pending === null) {\n            update.next = update;\n          } else {\n            update.next = pending.next;\n            pending.next = update;\n          }\n          queue.pending = update;\n        }\n        function entangleTransitionUpdate(root2, queue, lane) {\n          if (isTransitionLane(lane)) {\n            var queueLanes = queue.lanes;\n            queueLanes = intersectLanes(queueLanes, root2.pendingLanes);\n            var newQueueLanes = mergeLanes(queueLanes, lane);\n            queue.lanes = newQueueLanes;\n            markRootEntangled(root2, newQueueLanes);\n          }\n        }\n        function markUpdateInDevTools(fiber, lane, action) {\n          {\n            markStateUpdateScheduled(fiber, lane);\n          }\n        }\n        var ContextOnlyDispatcher = {\n          readContext,\n          useCallback: throwInvalidHookError,\n          useContext: throwInvalidHookError,\n          useEffect: throwInvalidHookError,\n          useImperativeHandle: throwInvalidHookError,\n          useInsertionEffect: throwInvalidHookError,\n          useLayoutEffect: throwInvalidHookError,\n          useMemo: throwInvalidHookError,\n          useReducer: throwInvalidHookError,\n          useRef: throwInvalidHookError,\n          useState: throwInvalidHookError,\n          useDebugValue: throwInvalidHookError,\n          useDeferredValue: throwInvalidHookError,\n          useTransition: throwInvalidHookError,\n          useMutableSource: throwInvalidHookError,\n          useSyncExternalStore: throwInvalidHookError,\n          useId: throwInvalidHookError,\n          unstable_isNewReconciler: enableNewReconciler\n        };\n        var HooksDispatcherOnMountInDEV = null;\n        var HooksDispatcherOnMountWithHookTypesInDEV = null;\n        var HooksDispatcherOnUpdateInDEV = null;\n        var HooksDispatcherOnRerenderInDEV = null;\n        var InvalidNestedHooksDispatcherOnMountInDEV = null;\n        var InvalidNestedHooksDispatcherOnUpdateInDEV = null;\n        var InvalidNestedHooksDispatcherOnRerenderInDEV = null;\n        {\n          var warnInvalidContextAccess = function() {\n            error(\"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\");\n          };\n          var warnInvalidHookAccess = function() {\n            error(\"Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://reactjs.org/link/rules-of-hooks\");\n          };\n          HooksDispatcherOnMountInDEV = {\n            readContext: function(context) {\n              return readContext(context);\n            },\n            useCallback: function(callback, deps) {\n              currentHookNameInDev = \"useCallback\";\n              mountHookTypesDev();\n              checkDepsAreArrayDev(deps);\n              return mountCallback(callback, deps);\n            },\n            useContext: function(context) {\n              currentHookNameInDev = \"useContext\";\n              mountHookTypesDev();\n              return readContext(context);\n            },\n            useEffect: function(create, deps) {\n              currentHookNameInDev = \"useEffect\";\n              mountHookTypesDev();\n              checkDepsAreArrayDev(deps);\n              return mountEffect(create, deps);\n            },\n            useImperativeHandle: function(ref, create, deps) {\n              currentHookNameInDev = \"useImperativeHandle\";\n              mountHookTypesDev();\n              checkDepsAreArrayDev(deps);\n              return mountImperativeHandle(ref, create, deps);\n            },\n            useInsertionEffect: function(create, deps) {\n              currentHookNameInDev = \"useInsertionEffect\";\n              mountHookTypesDev();\n              checkDepsAreArrayDev(deps);\n              return mountInsertionEffect(create, deps);\n            },\n            useLayoutEffect: function(create, deps) {\n              currentHookNameInDev = \"useLayoutEffect\";\n              mountHookTypesDev();\n              checkDepsAreArrayDev(deps);\n              return mountLayoutEffect(create, deps);\n            },\n            useMemo: function(create, deps) {\n              currentHookNameInDev = \"useMemo\";\n              mountHookTypesDev();\n              checkDepsAreArrayDev(deps);\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n              try {\n                return mountMemo(create, deps);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useReducer: function(reducer, initialArg, init) {\n              currentHookNameInDev = \"useReducer\";\n              mountHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n              try {\n                return mountReducer(reducer, initialArg, init);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useRef: function(initialValue) {\n              currentHookNameInDev = \"useRef\";\n              mountHookTypesDev();\n              return mountRef(initialValue);\n            },\n            useState: function(initialState) {\n              currentHookNameInDev = \"useState\";\n              mountHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n              try {\n                return mountState(initialState);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useDebugValue: function(value, formatterFn) {\n              currentHookNameInDev = \"useDebugValue\";\n              mountHookTypesDev();\n              return mountDebugValue();\n            },\n            useDeferredValue: function(value) {\n              currentHookNameInDev = \"useDeferredValue\";\n              mountHookTypesDev();\n              return mountDeferredValue(value);\n            },\n            useTransition: function() {\n              currentHookNameInDev = \"useTransition\";\n              mountHookTypesDev();\n              return mountTransition();\n            },\n            useMutableSource: function(source, getSnapshot, subscribe) {\n              currentHookNameInDev = \"useMutableSource\";\n              mountHookTypesDev();\n              return mountMutableSource();\n            },\n            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n              currentHookNameInDev = \"useSyncExternalStore\";\n              mountHookTypesDev();\n              return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n            },\n            useId: function() {\n              currentHookNameInDev = \"useId\";\n              mountHookTypesDev();\n              return mountId();\n            },\n            unstable_isNewReconciler: enableNewReconciler\n          };\n          HooksDispatcherOnMountWithHookTypesInDEV = {\n            readContext: function(context) {\n              return readContext(context);\n            },\n            useCallback: function(callback, deps) {\n              currentHookNameInDev = \"useCallback\";\n              updateHookTypesDev();\n              return mountCallback(callback, deps);\n            },\n            useContext: function(context) {\n              currentHookNameInDev = \"useContext\";\n              updateHookTypesDev();\n              return readContext(context);\n            },\n            useEffect: function(create, deps) {\n              currentHookNameInDev = \"useEffect\";\n              updateHookTypesDev();\n              return mountEffect(create, deps);\n            },\n            useImperativeHandle: function(ref, create, deps) {\n              currentHookNameInDev = \"useImperativeHandle\";\n              updateHookTypesDev();\n              return mountImperativeHandle(ref, create, deps);\n            },\n            useInsertionEffect: function(create, deps) {\n              currentHookNameInDev = \"useInsertionEffect\";\n              updateHookTypesDev();\n              return mountInsertionEffect(create, deps);\n            },\n            useLayoutEffect: function(create, deps) {\n              currentHookNameInDev = \"useLayoutEffect\";\n              updateHookTypesDev();\n              return mountLayoutEffect(create, deps);\n            },\n            useMemo: function(create, deps) {\n              currentHookNameInDev = \"useMemo\";\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n              try {\n                return mountMemo(create, deps);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useReducer: function(reducer, initialArg, init) {\n              currentHookNameInDev = \"useReducer\";\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n              try {\n                return mountReducer(reducer, initialArg, init);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useRef: function(initialValue) {\n              currentHookNameInDev = \"useRef\";\n              updateHookTypesDev();\n              return mountRef(initialValue);\n            },\n            useState: function(initialState) {\n              currentHookNameInDev = \"useState\";\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n              try {\n                return mountState(initialState);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useDebugValue: function(value, formatterFn) {\n              currentHookNameInDev = \"useDebugValue\";\n              updateHookTypesDev();\n              return mountDebugValue();\n            },\n            useDeferredValue: function(value) {\n              currentHookNameInDev = \"useDeferredValue\";\n              updateHookTypesDev();\n              return mountDeferredValue(value);\n            },\n            useTransition: function() {\n              currentHookNameInDev = \"useTransition\";\n              updateHookTypesDev();\n              return mountTransition();\n            },\n            useMutableSource: function(source, getSnapshot, subscribe) {\n              currentHookNameInDev = \"useMutableSource\";\n              updateHookTypesDev();\n              return mountMutableSource();\n            },\n            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n              currentHookNameInDev = \"useSyncExternalStore\";\n              updateHookTypesDev();\n              return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n            },\n            useId: function() {\n              currentHookNameInDev = \"useId\";\n              updateHookTypesDev();\n              return mountId();\n            },\n            unstable_isNewReconciler: enableNewReconciler\n          };\n          HooksDispatcherOnUpdateInDEV = {\n            readContext: function(context) {\n              return readContext(context);\n            },\n            useCallback: function(callback, deps) {\n              currentHookNameInDev = \"useCallback\";\n              updateHookTypesDev();\n              return updateCallback(callback, deps);\n            },\n            useContext: function(context) {\n              currentHookNameInDev = \"useContext\";\n              updateHookTypesDev();\n              return readContext(context);\n            },\n            useEffect: function(create, deps) {\n              currentHookNameInDev = \"useEffect\";\n              updateHookTypesDev();\n              return updateEffect(create, deps);\n            },\n            useImperativeHandle: function(ref, create, deps) {\n              currentHookNameInDev = \"useImperativeHandle\";\n              updateHookTypesDev();\n              return updateImperativeHandle(ref, create, deps);\n            },\n            useInsertionEffect: function(create, deps) {\n              currentHookNameInDev = \"useInsertionEffect\";\n              updateHookTypesDev();\n              return updateInsertionEffect(create, deps);\n            },\n            useLayoutEffect: function(create, deps) {\n              currentHookNameInDev = \"useLayoutEffect\";\n              updateHookTypesDev();\n              return updateLayoutEffect(create, deps);\n            },\n            useMemo: function(create, deps) {\n              currentHookNameInDev = \"useMemo\";\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              try {\n                return updateMemo(create, deps);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useReducer: function(reducer, initialArg, init) {\n              currentHookNameInDev = \"useReducer\";\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              try {\n                return updateReducer(reducer, initialArg, init);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useRef: function(initialValue) {\n              currentHookNameInDev = \"useRef\";\n              updateHookTypesDev();\n              return updateRef();\n            },\n            useState: function(initialState) {\n              currentHookNameInDev = \"useState\";\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              try {\n                return updateState(initialState);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useDebugValue: function(value, formatterFn) {\n              currentHookNameInDev = \"useDebugValue\";\n              updateHookTypesDev();\n              return updateDebugValue();\n            },\n            useDeferredValue: function(value) {\n              currentHookNameInDev = \"useDeferredValue\";\n              updateHookTypesDev();\n              return updateDeferredValue(value);\n            },\n            useTransition: function() {\n              currentHookNameInDev = \"useTransition\";\n              updateHookTypesDev();\n              return updateTransition();\n            },\n            useMutableSource: function(source, getSnapshot, subscribe) {\n              currentHookNameInDev = \"useMutableSource\";\n              updateHookTypesDev();\n              return updateMutableSource();\n            },\n            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n              currentHookNameInDev = \"useSyncExternalStore\";\n              updateHookTypesDev();\n              return updateSyncExternalStore(subscribe, getSnapshot);\n            },\n            useId: function() {\n              currentHookNameInDev = \"useId\";\n              updateHookTypesDev();\n              return updateId();\n            },\n            unstable_isNewReconciler: enableNewReconciler\n          };\n          HooksDispatcherOnRerenderInDEV = {\n            readContext: function(context) {\n              return readContext(context);\n            },\n            useCallback: function(callback, deps) {\n              currentHookNameInDev = \"useCallback\";\n              updateHookTypesDev();\n              return updateCallback(callback, deps);\n            },\n            useContext: function(context) {\n              currentHookNameInDev = \"useContext\";\n              updateHookTypesDev();\n              return readContext(context);\n            },\n            useEffect: function(create, deps) {\n              currentHookNameInDev = \"useEffect\";\n              updateHookTypesDev();\n              return updateEffect(create, deps);\n            },\n            useImperativeHandle: function(ref, create, deps) {\n              currentHookNameInDev = \"useImperativeHandle\";\n              updateHookTypesDev();\n              return updateImperativeHandle(ref, create, deps);\n            },\n            useInsertionEffect: function(create, deps) {\n              currentHookNameInDev = \"useInsertionEffect\";\n              updateHookTypesDev();\n              return updateInsertionEffect(create, deps);\n            },\n            useLayoutEffect: function(create, deps) {\n              currentHookNameInDev = \"useLayoutEffect\";\n              updateHookTypesDev();\n              return updateLayoutEffect(create, deps);\n            },\n            useMemo: function(create, deps) {\n              currentHookNameInDev = \"useMemo\";\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n              try {\n                return updateMemo(create, deps);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useReducer: function(reducer, initialArg, init) {\n              currentHookNameInDev = \"useReducer\";\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n              try {\n                return rerenderReducer(reducer, initialArg, init);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useRef: function(initialValue) {\n              currentHookNameInDev = \"useRef\";\n              updateHookTypesDev();\n              return updateRef();\n            },\n            useState: function(initialState) {\n              currentHookNameInDev = \"useState\";\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n              try {\n                return rerenderState(initialState);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useDebugValue: function(value, formatterFn) {\n              currentHookNameInDev = \"useDebugValue\";\n              updateHookTypesDev();\n              return updateDebugValue();\n            },\n            useDeferredValue: function(value) {\n              currentHookNameInDev = \"useDeferredValue\";\n              updateHookTypesDev();\n              return rerenderDeferredValue(value);\n            },\n            useTransition: function() {\n              currentHookNameInDev = \"useTransition\";\n              updateHookTypesDev();\n              return rerenderTransition();\n            },\n            useMutableSource: function(source, getSnapshot, subscribe) {\n              currentHookNameInDev = \"useMutableSource\";\n              updateHookTypesDev();\n              return updateMutableSource();\n            },\n            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n              currentHookNameInDev = \"useSyncExternalStore\";\n              updateHookTypesDev();\n              return updateSyncExternalStore(subscribe, getSnapshot);\n            },\n            useId: function() {\n              currentHookNameInDev = \"useId\";\n              updateHookTypesDev();\n              return updateId();\n            },\n            unstable_isNewReconciler: enableNewReconciler\n          };\n          InvalidNestedHooksDispatcherOnMountInDEV = {\n            readContext: function(context) {\n              warnInvalidContextAccess();\n              return readContext(context);\n            },\n            useCallback: function(callback, deps) {\n              currentHookNameInDev = \"useCallback\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountCallback(callback, deps);\n            },\n            useContext: function(context) {\n              currentHookNameInDev = \"useContext\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return readContext(context);\n            },\n            useEffect: function(create, deps) {\n              currentHookNameInDev = \"useEffect\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountEffect(create, deps);\n            },\n            useImperativeHandle: function(ref, create, deps) {\n              currentHookNameInDev = \"useImperativeHandle\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountImperativeHandle(ref, create, deps);\n            },\n            useInsertionEffect: function(create, deps) {\n              currentHookNameInDev = \"useInsertionEffect\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountInsertionEffect(create, deps);\n            },\n            useLayoutEffect: function(create, deps) {\n              currentHookNameInDev = \"useLayoutEffect\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountLayoutEffect(create, deps);\n            },\n            useMemo: function(create, deps) {\n              currentHookNameInDev = \"useMemo\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n              try {\n                return mountMemo(create, deps);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useReducer: function(reducer, initialArg, init) {\n              currentHookNameInDev = \"useReducer\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n              try {\n                return mountReducer(reducer, initialArg, init);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useRef: function(initialValue) {\n              currentHookNameInDev = \"useRef\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountRef(initialValue);\n            },\n            useState: function(initialState) {\n              currentHookNameInDev = \"useState\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n              try {\n                return mountState(initialState);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useDebugValue: function(value, formatterFn) {\n              currentHookNameInDev = \"useDebugValue\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountDebugValue();\n            },\n            useDeferredValue: function(value) {\n              currentHookNameInDev = \"useDeferredValue\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountDeferredValue(value);\n            },\n            useTransition: function() {\n              currentHookNameInDev = \"useTransition\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountTransition();\n            },\n            useMutableSource: function(source, getSnapshot, subscribe) {\n              currentHookNameInDev = \"useMutableSource\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountMutableSource();\n            },\n            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n              currentHookNameInDev = \"useSyncExternalStore\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n            },\n            useId: function() {\n              currentHookNameInDev = \"useId\";\n              warnInvalidHookAccess();\n              mountHookTypesDev();\n              return mountId();\n            },\n            unstable_isNewReconciler: enableNewReconciler\n          };\n          InvalidNestedHooksDispatcherOnUpdateInDEV = {\n            readContext: function(context) {\n              warnInvalidContextAccess();\n              return readContext(context);\n            },\n            useCallback: function(callback, deps) {\n              currentHookNameInDev = \"useCallback\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateCallback(callback, deps);\n            },\n            useContext: function(context) {\n              currentHookNameInDev = \"useContext\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return readContext(context);\n            },\n            useEffect: function(create, deps) {\n              currentHookNameInDev = \"useEffect\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateEffect(create, deps);\n            },\n            useImperativeHandle: function(ref, create, deps) {\n              currentHookNameInDev = \"useImperativeHandle\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateImperativeHandle(ref, create, deps);\n            },\n            useInsertionEffect: function(create, deps) {\n              currentHookNameInDev = \"useInsertionEffect\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateInsertionEffect(create, deps);\n            },\n            useLayoutEffect: function(create, deps) {\n              currentHookNameInDev = \"useLayoutEffect\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateLayoutEffect(create, deps);\n            },\n            useMemo: function(create, deps) {\n              currentHookNameInDev = \"useMemo\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              try {\n                return updateMemo(create, deps);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useReducer: function(reducer, initialArg, init) {\n              currentHookNameInDev = \"useReducer\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              try {\n                return updateReducer(reducer, initialArg, init);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useRef: function(initialValue) {\n              currentHookNameInDev = \"useRef\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateRef();\n            },\n            useState: function(initialState) {\n              currentHookNameInDev = \"useState\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              try {\n                return updateState(initialState);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useDebugValue: function(value, formatterFn) {\n              currentHookNameInDev = \"useDebugValue\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateDebugValue();\n            },\n            useDeferredValue: function(value) {\n              currentHookNameInDev = \"useDeferredValue\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateDeferredValue(value);\n            },\n            useTransition: function() {\n              currentHookNameInDev = \"useTransition\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateTransition();\n            },\n            useMutableSource: function(source, getSnapshot, subscribe) {\n              currentHookNameInDev = \"useMutableSource\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateMutableSource();\n            },\n            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n              currentHookNameInDev = \"useSyncExternalStore\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateSyncExternalStore(subscribe, getSnapshot);\n            },\n            useId: function() {\n              currentHookNameInDev = \"useId\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateId();\n            },\n            unstable_isNewReconciler: enableNewReconciler\n          };\n          InvalidNestedHooksDispatcherOnRerenderInDEV = {\n            readContext: function(context) {\n              warnInvalidContextAccess();\n              return readContext(context);\n            },\n            useCallback: function(callback, deps) {\n              currentHookNameInDev = \"useCallback\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateCallback(callback, deps);\n            },\n            useContext: function(context) {\n              currentHookNameInDev = \"useContext\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return readContext(context);\n            },\n            useEffect: function(create, deps) {\n              currentHookNameInDev = \"useEffect\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateEffect(create, deps);\n            },\n            useImperativeHandle: function(ref, create, deps) {\n              currentHookNameInDev = \"useImperativeHandle\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateImperativeHandle(ref, create, deps);\n            },\n            useInsertionEffect: function(create, deps) {\n              currentHookNameInDev = \"useInsertionEffect\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateInsertionEffect(create, deps);\n            },\n            useLayoutEffect: function(create, deps) {\n              currentHookNameInDev = \"useLayoutEffect\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateLayoutEffect(create, deps);\n            },\n            useMemo: function(create, deps) {\n              currentHookNameInDev = \"useMemo\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              try {\n                return updateMemo(create, deps);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useReducer: function(reducer, initialArg, init) {\n              currentHookNameInDev = \"useReducer\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              try {\n                return rerenderReducer(reducer, initialArg, init);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useRef: function(initialValue) {\n              currentHookNameInDev = \"useRef\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateRef();\n            },\n            useState: function(initialState) {\n              currentHookNameInDev = \"useState\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              var prevDispatcher = ReactCurrentDispatcher$1.current;\n              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              try {\n                return rerenderState(initialState);\n              } finally {\n                ReactCurrentDispatcher$1.current = prevDispatcher;\n              }\n            },\n            useDebugValue: function(value, formatterFn) {\n              currentHookNameInDev = \"useDebugValue\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateDebugValue();\n            },\n            useDeferredValue: function(value) {\n              currentHookNameInDev = \"useDeferredValue\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return rerenderDeferredValue(value);\n            },\n            useTransition: function() {\n              currentHookNameInDev = \"useTransition\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return rerenderTransition();\n            },\n            useMutableSource: function(source, getSnapshot, subscribe) {\n              currentHookNameInDev = \"useMutableSource\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateMutableSource();\n            },\n            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n              currentHookNameInDev = \"useSyncExternalStore\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateSyncExternalStore(subscribe, getSnapshot);\n            },\n            useId: function() {\n              currentHookNameInDev = \"useId\";\n              warnInvalidHookAccess();\n              updateHookTypesDev();\n              return updateId();\n            },\n            unstable_isNewReconciler: enableNewReconciler\n          };\n        }\n        var now$1 = Scheduler.unstable_now;\n        var commitTime = 0;\n        var layoutEffectStartTime = -1;\n        var profilerStartTime = -1;\n        var passiveEffectStartTime = -1;\n        var currentUpdateIsNested = false;\n        var nestedUpdateScheduled = false;\n        function isCurrentUpdateNested() {\n          return currentUpdateIsNested;\n        }\n        function markNestedUpdateScheduled() {\n          {\n            nestedUpdateScheduled = true;\n          }\n        }\n        function resetNestedUpdateFlag() {\n          {\n            currentUpdateIsNested = false;\n            nestedUpdateScheduled = false;\n          }\n        }\n        function syncNestedUpdateFlag() {\n          {\n            currentUpdateIsNested = nestedUpdateScheduled;\n            nestedUpdateScheduled = false;\n          }\n        }\n        function getCommitTime() {\n          return commitTime;\n        }\n        function recordCommitTime() {\n          commitTime = now$1();\n        }\n        function startProfilerTimer(fiber) {\n          profilerStartTime = now$1();\n          if (fiber.actualStartTime < 0) {\n            fiber.actualStartTime = now$1();\n          }\n        }\n        function stopProfilerTimerIfRunning(fiber) {\n          profilerStartTime = -1;\n        }\n        function stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) {\n          if (profilerStartTime >= 0) {\n            var elapsedTime = now$1() - profilerStartTime;\n            fiber.actualDuration += elapsedTime;\n            if (overrideBaseTime) {\n              fiber.selfBaseDuration = elapsedTime;\n            }\n            profilerStartTime = -1;\n          }\n        }\n        function recordLayoutEffectDuration(fiber) {\n          if (layoutEffectStartTime >= 0) {\n            var elapsedTime = now$1() - layoutEffectStartTime;\n            layoutEffectStartTime = -1;\n            var parentFiber = fiber.return;\n            while (parentFiber !== null) {\n              switch (parentFiber.tag) {\n                case HostRoot:\n                  var root2 = parentFiber.stateNode;\n                  root2.effectDuration += elapsedTime;\n                  return;\n                case Profiler:\n                  var parentStateNode = parentFiber.stateNode;\n                  parentStateNode.effectDuration += elapsedTime;\n                  return;\n              }\n              parentFiber = parentFiber.return;\n            }\n          }\n        }\n        function recordPassiveEffectDuration(fiber) {\n          if (passiveEffectStartTime >= 0) {\n            var elapsedTime = now$1() - passiveEffectStartTime;\n            passiveEffectStartTime = -1;\n            var parentFiber = fiber.return;\n            while (parentFiber !== null) {\n              switch (parentFiber.tag) {\n                case HostRoot:\n                  var root2 = parentFiber.stateNode;\n                  if (root2 !== null) {\n                    root2.passiveEffectDuration += elapsedTime;\n                  }\n                  return;\n                case Profiler:\n                  var parentStateNode = parentFiber.stateNode;\n                  if (parentStateNode !== null) {\n                    parentStateNode.passiveEffectDuration += elapsedTime;\n                  }\n                  return;\n              }\n              parentFiber = parentFiber.return;\n            }\n          }\n        }\n        function startLayoutEffectTimer() {\n          layoutEffectStartTime = now$1();\n        }\n        function startPassiveEffectTimer() {\n          passiveEffectStartTime = now$1();\n        }\n        function transferActualDuration(fiber) {\n          var child = fiber.child;\n          while (child) {\n            fiber.actualDuration += child.actualDuration;\n            child = child.sibling;\n          }\n        }\n        function resolveDefaultProps(Component, baseProps) {\n          if (Component && Component.defaultProps) {\n            var props = assign({}, baseProps);\n            var defaultProps = Component.defaultProps;\n            for (var propName in defaultProps) {\n              if (props[propName] === void 0) {\n                props[propName] = defaultProps[propName];\n              }\n            }\n            return props;\n          }\n          return baseProps;\n        }\n        var fakeInternalInstance = {};\n        var didWarnAboutStateAssignmentForComponent;\n        var didWarnAboutUninitializedState;\n        var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\n        var didWarnAboutLegacyLifecyclesAndDerivedState;\n        var didWarnAboutUndefinedDerivedState;\n        var warnOnUndefinedDerivedState;\n        var warnOnInvalidCallback;\n        var didWarnAboutDirectlyAssigningPropsToState;\n        var didWarnAboutContextTypeAndContextTypes;\n        var didWarnAboutInvalidateContextType;\n        var didWarnAboutLegacyContext$1;\n        {\n          didWarnAboutStateAssignmentForComponent = /* @__PURE__ */ new Set();\n          didWarnAboutUninitializedState = /* @__PURE__ */ new Set();\n          didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = /* @__PURE__ */ new Set();\n          didWarnAboutLegacyLifecyclesAndDerivedState = /* @__PURE__ */ new Set();\n          didWarnAboutDirectlyAssigningPropsToState = /* @__PURE__ */ new Set();\n          didWarnAboutUndefinedDerivedState = /* @__PURE__ */ new Set();\n          didWarnAboutContextTypeAndContextTypes = /* @__PURE__ */ new Set();\n          didWarnAboutInvalidateContextType = /* @__PURE__ */ new Set();\n          didWarnAboutLegacyContext$1 = /* @__PURE__ */ new Set();\n          var didWarnOnInvalidCallback = /* @__PURE__ */ new Set();\n          warnOnInvalidCallback = function(callback, callerName) {\n            if (callback === null || typeof callback === \"function\") {\n              return;\n            }\n            var key = callerName + \"_\" + callback;\n            if (!didWarnOnInvalidCallback.has(key)) {\n              didWarnOnInvalidCallback.add(key);\n              error(\"%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.\", callerName, callback);\n            }\n          };\n          warnOnUndefinedDerivedState = function(type, partialState) {\n            if (partialState === void 0) {\n              var componentName = getComponentNameFromType(type) || \"Component\";\n              if (!didWarnAboutUndefinedDerivedState.has(componentName)) {\n                didWarnAboutUndefinedDerivedState.add(componentName);\n                error(\"%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. You have returned undefined.\", componentName);\n              }\n            }\n          };\n          Object.defineProperty(fakeInternalInstance, \"_processChildContext\", {\n            enumerable: false,\n            value: function() {\n              throw new Error(\"_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn't supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal).\");\n            }\n          });\n          Object.freeze(fakeInternalInstance);\n        }\n        function applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, nextProps) {\n          var prevState = workInProgress2.memoizedState;\n          var partialState = getDerivedStateFromProps(nextProps, prevState);\n          {\n            if (workInProgress2.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n              try {\n                partialState = getDerivedStateFromProps(nextProps, prevState);\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n            warnOnUndefinedDerivedState(ctor, partialState);\n          }\n          var memoizedState = partialState === null || partialState === void 0 ? prevState : assign({}, prevState, partialState);\n          workInProgress2.memoizedState = memoizedState;\n          if (workInProgress2.lanes === NoLanes) {\n            var updateQueue = workInProgress2.updateQueue;\n            updateQueue.baseState = memoizedState;\n          }\n        }\n        var classComponentUpdater = {\n          isMounted,\n          enqueueSetState: function(inst, payload, callback) {\n            var fiber = get(inst);\n            var eventTime = requestEventTime();\n            var lane = requestUpdateLane(fiber);\n            var update = createUpdate(eventTime, lane);\n            update.payload = payload;\n            if (callback !== void 0 && callback !== null) {\n              {\n                warnOnInvalidCallback(callback, \"setState\");\n              }\n              update.callback = callback;\n            }\n            var root2 = enqueueUpdate(fiber, update, lane);\n            if (root2 !== null) {\n              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);\n              entangleTransitions(root2, fiber, lane);\n            }\n            {\n              markStateUpdateScheduled(fiber, lane);\n            }\n          },\n          enqueueReplaceState: function(inst, payload, callback) {\n            var fiber = get(inst);\n            var eventTime = requestEventTime();\n            var lane = requestUpdateLane(fiber);\n            var update = createUpdate(eventTime, lane);\n            update.tag = ReplaceState;\n            update.payload = payload;\n            if (callback !== void 0 && callback !== null) {\n              {\n                warnOnInvalidCallback(callback, \"replaceState\");\n              }\n              update.callback = callback;\n            }\n            var root2 = enqueueUpdate(fiber, update, lane);\n            if (root2 !== null) {\n              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);\n              entangleTransitions(root2, fiber, lane);\n            }\n            {\n              markStateUpdateScheduled(fiber, lane);\n            }\n          },\n          enqueueForceUpdate: function(inst, callback) {\n            var fiber = get(inst);\n            var eventTime = requestEventTime();\n            var lane = requestUpdateLane(fiber);\n            var update = createUpdate(eventTime, lane);\n            update.tag = ForceUpdate;\n            if (callback !== void 0 && callback !== null) {\n              {\n                warnOnInvalidCallback(callback, \"forceUpdate\");\n              }\n              update.callback = callback;\n            }\n            var root2 = enqueueUpdate(fiber, update, lane);\n            if (root2 !== null) {\n              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);\n              entangleTransitions(root2, fiber, lane);\n            }\n            {\n              markForceUpdateScheduled(fiber, lane);\n            }\n          }\n        };\n        function checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) {\n          var instance = workInProgress2.stateNode;\n          if (typeof instance.shouldComponentUpdate === \"function\") {\n            var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n            {\n              if (workInProgress2.mode & StrictLegacyMode) {\n                setIsStrictModeForDevtools(true);\n                try {\n                  shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n                } finally {\n                  setIsStrictModeForDevtools(false);\n                }\n              }\n              if (shouldUpdate === void 0) {\n                error(\"%s.shouldComponentUpdate(): Returned undefined instead of a boolean value. Make sure to return true or false.\", getComponentNameFromType(ctor) || \"Component\");\n              }\n            }\n            return shouldUpdate;\n          }\n          if (ctor.prototype && ctor.prototype.isPureReactComponent) {\n            return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);\n          }\n          return true;\n        }\n        function checkClassInstance(workInProgress2, ctor, newProps) {\n          var instance = workInProgress2.stateNode;\n          {\n            var name = getComponentNameFromType(ctor) || \"Component\";\n            var renderPresent = instance.render;\n            if (!renderPresent) {\n              if (ctor.prototype && typeof ctor.prototype.render === \"function\") {\n                error(\"%s(...): No `render` method found on the returned component instance: did you accidentally return an object from the constructor?\", name);\n              } else {\n                error(\"%s(...): No `render` method found on the returned component instance: you may have forgotten to define `render`.\", name);\n              }\n            }\n            if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {\n              error(\"getInitialState was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Did you mean to define a state property instead?\", name);\n            }\n            if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {\n              error(\"getDefaultProps was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Use a static property to define defaultProps instead.\", name);\n            }\n            if (instance.propTypes) {\n              error(\"propTypes was defined as an instance property on %s. Use a static property to define propTypes instead.\", name);\n            }\n            if (instance.contextType) {\n              error(\"contextType was defined as an instance property on %s. Use a static property to define contextType instead.\", name);\n            }\n            {\n              if (ctor.childContextTypes && !didWarnAboutLegacyContext$1.has(ctor) && // Strict Mode has its own warning for legacy context, so we can skip\n              // this one.\n              (workInProgress2.mode & StrictLegacyMode) === NoMode) {\n                didWarnAboutLegacyContext$1.add(ctor);\n                error(\"%s uses the legacy childContextTypes API which is no longer supported and will be removed in the next major release. Use React.createContext() instead\\n\\n.Learn more about this warning here: https://reactjs.org/link/legacy-context\", name);\n              }\n              if (ctor.contextTypes && !didWarnAboutLegacyContext$1.has(ctor) && // Strict Mode has its own warning for legacy context, so we can skip\n              // this one.\n              (workInProgress2.mode & StrictLegacyMode) === NoMode) {\n                didWarnAboutLegacyContext$1.add(ctor);\n                error(\"%s uses the legacy contextTypes API which is no longer supported and will be removed in the next major release. Use React.createContext() with static contextType instead.\\n\\nLearn more about this warning here: https://reactjs.org/link/legacy-context\", name);\n              }\n              if (instance.contextTypes) {\n                error(\"contextTypes was defined as an instance property on %s. Use a static property to define contextTypes instead.\", name);\n              }\n              if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {\n                didWarnAboutContextTypeAndContextTypes.add(ctor);\n                error(\"%s declares both contextTypes and contextType static properties. The legacy contextTypes property will be ignored.\", name);\n              }\n            }\n            if (typeof instance.componentShouldUpdate === \"function\") {\n              error(\"%s has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value.\", name);\n            }\n            if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== \"undefined\") {\n              error(\"%s has a method called shouldComponentUpdate(). shouldComponentUpdate should not be used when extending React.PureComponent. Please extend React.Component if shouldComponentUpdate is used.\", getComponentNameFromType(ctor) || \"A pure component\");\n            }\n            if (typeof instance.componentDidUnmount === \"function\") {\n              error(\"%s has a method called componentDidUnmount(). But there is no such lifecycle method. Did you mean componentWillUnmount()?\", name);\n            }\n            if (typeof instance.componentDidReceiveProps === \"function\") {\n              error(\"%s has a method called componentDidReceiveProps(). But there is no such lifecycle method. If you meant to update the state in response to changing props, use componentWillReceiveProps(). If you meant to fetch data or run side-effects or mutations after React has updated the UI, use componentDidUpdate().\", name);\n            }\n            if (typeof instance.componentWillRecieveProps === \"function\") {\n              error(\"%s has a method called componentWillRecieveProps(). Did you mean componentWillReceiveProps()?\", name);\n            }\n            if (typeof instance.UNSAFE_componentWillRecieveProps === \"function\") {\n              error(\"%s has a method called UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?\", name);\n            }\n            var hasMutatedProps = instance.props !== newProps;\n            if (instance.props !== void 0 && hasMutatedProps) {\n              error(\"%s(...): When calling super() in `%s`, make sure to pass up the same props that your component's constructor was passed.\", name, name);\n            }\n            if (instance.defaultProps) {\n              error(\"Setting defaultProps as an instance property on %s is not supported and will be ignored. Instead, define defaultProps as a static property on %s.\", name, name);\n            }\n            if (typeof instance.getSnapshotBeforeUpdate === \"function\" && typeof instance.componentDidUpdate !== \"function\" && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {\n              didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);\n              error(\"%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). This component defines getSnapshotBeforeUpdate() only.\", getComponentNameFromType(ctor));\n            }\n            if (typeof instance.getDerivedStateFromProps === \"function\") {\n              error(\"%s: getDerivedStateFromProps() is defined as an instance method and will be ignored. Instead, declare it as a static method.\", name);\n            }\n            if (typeof instance.getDerivedStateFromError === \"function\") {\n              error(\"%s: getDerivedStateFromError() is defined as an instance method and will be ignored. Instead, declare it as a static method.\", name);\n            }\n            if (typeof ctor.getSnapshotBeforeUpdate === \"function\") {\n              error(\"%s: getSnapshotBeforeUpdate() is defined as a static method and will be ignored. Instead, declare it as an instance method.\", name);\n            }\n            var _state = instance.state;\n            if (_state && (typeof _state !== \"object\" || isArray(_state))) {\n              error(\"%s.state: must be set to an object or null\", name);\n            }\n            if (typeof instance.getChildContext === \"function\" && typeof ctor.childContextTypes !== \"object\") {\n              error(\"%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().\", name);\n            }\n          }\n        }\n        function adoptClassInstance(workInProgress2, instance) {\n          instance.updater = classComponentUpdater;\n          workInProgress2.stateNode = instance;\n          set(instance, workInProgress2);\n          {\n            instance._reactInternalInstance = fakeInternalInstance;\n          }\n        }\n        function constructClassInstance(workInProgress2, ctor, props) {\n          var isLegacyContextConsumer = false;\n          var unmaskedContext = emptyContextObject;\n          var context = emptyContextObject;\n          var contextType = ctor.contextType;\n          {\n            if (\"contextType\" in ctor) {\n              var isValid = (\n                // Allow null for conditional declaration\n                contextType === null || contextType !== void 0 && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === void 0\n              );\n              if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {\n                didWarnAboutInvalidateContextType.add(ctor);\n                var addendum = \"\";\n                if (contextType === void 0) {\n                  addendum = \" However, it is set to undefined. This can be caused by a typo or by mixing up named and default imports. This can also happen due to a circular dependency, so try moving the createContext() call to a separate file.\";\n                } else if (typeof contextType !== \"object\") {\n                  addendum = \" However, it is set to a \" + typeof contextType + \".\";\n                } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {\n                  addendum = \" Did you accidentally pass the Context.Provider instead?\";\n                } else if (contextType._context !== void 0) {\n                  addendum = \" Did you accidentally pass the Context.Consumer instead?\";\n                } else {\n                  addendum = \" However, it is set to an object with keys {\" + Object.keys(contextType).join(\", \") + \"}.\";\n                }\n                error(\"%s defines an invalid contextType. contextType should point to the Context object returned by React.createContext().%s\", getComponentNameFromType(ctor) || \"Component\", addendum);\n              }\n            }\n          }\n          if (typeof contextType === \"object\" && contextType !== null) {\n            context = readContext(contextType);\n          } else {\n            unmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);\n            var contextTypes = ctor.contextTypes;\n            isLegacyContextConsumer = contextTypes !== null && contextTypes !== void 0;\n            context = isLegacyContextConsumer ? getMaskedContext(workInProgress2, unmaskedContext) : emptyContextObject;\n          }\n          var instance = new ctor(props, context);\n          {\n            if (workInProgress2.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n              try {\n                instance = new ctor(props, context);\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n          }\n          var state = workInProgress2.memoizedState = instance.state !== null && instance.state !== void 0 ? instance.state : null;\n          adoptClassInstance(workInProgress2, instance);\n          {\n            if (typeof ctor.getDerivedStateFromProps === \"function\" && state === null) {\n              var componentName = getComponentNameFromType(ctor) || \"Component\";\n              if (!didWarnAboutUninitializedState.has(componentName)) {\n                didWarnAboutUninitializedState.add(componentName);\n                error(\"`%s` uses `getDerivedStateFromProps` but its initial state is %s. This is not recommended. Instead, define the initial state by assigning an object to `this.state` in the constructor of `%s`. This ensures that `getDerivedStateFromProps` arguments have a consistent shape.\", componentName, instance.state === null ? \"null\" : \"undefined\", componentName);\n              }\n            }\n            if (typeof ctor.getDerivedStateFromProps === \"function\" || typeof instance.getSnapshotBeforeUpdate === \"function\") {\n              var foundWillMountName = null;\n              var foundWillReceivePropsName = null;\n              var foundWillUpdateName = null;\n              if (typeof instance.componentWillMount === \"function\" && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n                foundWillMountName = \"componentWillMount\";\n              } else if (typeof instance.UNSAFE_componentWillMount === \"function\") {\n                foundWillMountName = \"UNSAFE_componentWillMount\";\n              }\n              if (typeof instance.componentWillReceiveProps === \"function\" && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n                foundWillReceivePropsName = \"componentWillReceiveProps\";\n              } else if (typeof instance.UNSAFE_componentWillReceiveProps === \"function\") {\n                foundWillReceivePropsName = \"UNSAFE_componentWillReceiveProps\";\n              }\n              if (typeof instance.componentWillUpdate === \"function\" && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n                foundWillUpdateName = \"componentWillUpdate\";\n              } else if (typeof instance.UNSAFE_componentWillUpdate === \"function\") {\n                foundWillUpdateName = \"UNSAFE_componentWillUpdate\";\n              }\n              if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n                var _componentName = getComponentNameFromType(ctor) || \"Component\";\n                var newApiName = typeof ctor.getDerivedStateFromProps === \"function\" ? \"getDerivedStateFromProps()\" : \"getSnapshotBeforeUpdate()\";\n                if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {\n                  didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);\n                  error(\"Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\nhttps://reactjs.org/link/unsafe-component-lifecycles\", _componentName, newApiName, foundWillMountName !== null ? \"\\n  \" + foundWillMountName : \"\", foundWillReceivePropsName !== null ? \"\\n  \" + foundWillReceivePropsName : \"\", foundWillUpdateName !== null ? \"\\n  \" + foundWillUpdateName : \"\");\n                }\n              }\n            }\n          }\n          if (isLegacyContextConsumer) {\n            cacheContext(workInProgress2, unmaskedContext, context);\n          }\n          return instance;\n        }\n        function callComponentWillMount(workInProgress2, instance) {\n          var oldState = instance.state;\n          if (typeof instance.componentWillMount === \"function\") {\n            instance.componentWillMount();\n          }\n          if (typeof instance.UNSAFE_componentWillMount === \"function\") {\n            instance.UNSAFE_componentWillMount();\n          }\n          if (oldState !== instance.state) {\n            {\n              error(\"%s.componentWillMount(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.\", getComponentNameFromFiber(workInProgress2) || \"Component\");\n            }\n            classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n          }\n        }\n        function callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext) {\n          var oldState = instance.state;\n          if (typeof instance.componentWillReceiveProps === \"function\") {\n            instance.componentWillReceiveProps(newProps, nextContext);\n          }\n          if (typeof instance.UNSAFE_componentWillReceiveProps === \"function\") {\n            instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n          }\n          if (instance.state !== oldState) {\n            {\n              var componentName = getComponentNameFromFiber(workInProgress2) || \"Component\";\n              if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {\n                didWarnAboutStateAssignmentForComponent.add(componentName);\n                error(\"%s.componentWillReceiveProps(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.\", componentName);\n              }\n            }\n            classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n          }\n        }\n        function mountClassInstance(workInProgress2, ctor, newProps, renderLanes2) {\n          {\n            checkClassInstance(workInProgress2, ctor, newProps);\n          }\n          var instance = workInProgress2.stateNode;\n          instance.props = newProps;\n          instance.state = workInProgress2.memoizedState;\n          instance.refs = {};\n          initializeUpdateQueue(workInProgress2);\n          var contextType = ctor.contextType;\n          if (typeof contextType === \"object\" && contextType !== null) {\n            instance.context = readContext(contextType);\n          } else {\n            var unmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);\n            instance.context = getMaskedContext(workInProgress2, unmaskedContext);\n          }\n          {\n            if (instance.state === newProps) {\n              var componentName = getComponentNameFromType(ctor) || \"Component\";\n              if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {\n                didWarnAboutDirectlyAssigningPropsToState.add(componentName);\n                error(\"%s: It is not recommended to assign props directly to state because updates to props won't be reflected in state. In most cases, it is better to use props directly.\", componentName);\n              }\n            }\n            if (workInProgress2.mode & StrictLegacyMode) {\n              ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress2, instance);\n            }\n            {\n              ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress2, instance);\n            }\n          }\n          instance.state = workInProgress2.memoizedState;\n          var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n          if (typeof getDerivedStateFromProps === \"function\") {\n            applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps);\n            instance.state = workInProgress2.memoizedState;\n          }\n          if (typeof ctor.getDerivedStateFromProps !== \"function\" && typeof instance.getSnapshotBeforeUpdate !== \"function\" && (typeof instance.UNSAFE_componentWillMount === \"function\" || typeof instance.componentWillMount === \"function\")) {\n            callComponentWillMount(workInProgress2, instance);\n            processUpdateQueue(workInProgress2, newProps, instance, renderLanes2);\n            instance.state = workInProgress2.memoizedState;\n          }\n          if (typeof instance.componentDidMount === \"function\") {\n            var fiberFlags = Update;\n            {\n              fiberFlags |= LayoutStatic;\n            }\n            if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n              fiberFlags |= MountLayoutDev;\n            }\n            workInProgress2.flags |= fiberFlags;\n          }\n        }\n        function resumeMountClassInstance(workInProgress2, ctor, newProps, renderLanes2) {\n          var instance = workInProgress2.stateNode;\n          var oldProps = workInProgress2.memoizedProps;\n          instance.props = oldProps;\n          var oldContext = instance.context;\n          var contextType = ctor.contextType;\n          var nextContext = emptyContextObject;\n          if (typeof contextType === \"object\" && contextType !== null) {\n            nextContext = readContext(contextType);\n          } else {\n            var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);\n            nextContext = getMaskedContext(workInProgress2, nextLegacyUnmaskedContext);\n          }\n          var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n          var hasNewLifecycles = typeof getDerivedStateFromProps === \"function\" || typeof instance.getSnapshotBeforeUpdate === \"function\";\n          if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === \"function\" || typeof instance.componentWillReceiveProps === \"function\")) {\n            if (oldProps !== newProps || oldContext !== nextContext) {\n              callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext);\n            }\n          }\n          resetHasForceUpdateBeforeProcessing();\n          var oldState = workInProgress2.memoizedState;\n          var newState = instance.state = oldState;\n          processUpdateQueue(workInProgress2, newProps, instance, renderLanes2);\n          newState = workInProgress2.memoizedState;\n          if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {\n            if (typeof instance.componentDidMount === \"function\") {\n              var fiberFlags = Update;\n              {\n                fiberFlags |= LayoutStatic;\n              }\n              if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n                fiberFlags |= MountLayoutDev;\n              }\n              workInProgress2.flags |= fiberFlags;\n            }\n            return false;\n          }\n          if (typeof getDerivedStateFromProps === \"function\") {\n            applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps);\n            newState = workInProgress2.memoizedState;\n          }\n          var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext);\n          if (shouldUpdate) {\n            if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === \"function\" || typeof instance.componentWillMount === \"function\")) {\n              if (typeof instance.componentWillMount === \"function\") {\n                instance.componentWillMount();\n              }\n              if (typeof instance.UNSAFE_componentWillMount === \"function\") {\n                instance.UNSAFE_componentWillMount();\n              }\n            }\n            if (typeof instance.componentDidMount === \"function\") {\n              var _fiberFlags = Update;\n              {\n                _fiberFlags |= LayoutStatic;\n              }\n              if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n                _fiberFlags |= MountLayoutDev;\n              }\n              workInProgress2.flags |= _fiberFlags;\n            }\n          } else {\n            if (typeof instance.componentDidMount === \"function\") {\n              var _fiberFlags2 = Update;\n              {\n                _fiberFlags2 |= LayoutStatic;\n              }\n              if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n                _fiberFlags2 |= MountLayoutDev;\n              }\n              workInProgress2.flags |= _fiberFlags2;\n            }\n            workInProgress2.memoizedProps = newProps;\n            workInProgress2.memoizedState = newState;\n          }\n          instance.props = newProps;\n          instance.state = newState;\n          instance.context = nextContext;\n          return shouldUpdate;\n        }\n        function updateClassInstance(current2, workInProgress2, ctor, newProps, renderLanes2) {\n          var instance = workInProgress2.stateNode;\n          cloneUpdateQueue(current2, workInProgress2);\n          var unresolvedOldProps = workInProgress2.memoizedProps;\n          var oldProps = workInProgress2.type === workInProgress2.elementType ? unresolvedOldProps : resolveDefaultProps(workInProgress2.type, unresolvedOldProps);\n          instance.props = oldProps;\n          var unresolvedNewProps = workInProgress2.pendingProps;\n          var oldContext = instance.context;\n          var contextType = ctor.contextType;\n          var nextContext = emptyContextObject;\n          if (typeof contextType === \"object\" && contextType !== null) {\n            nextContext = readContext(contextType);\n          } else {\n            var nextUnmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);\n            nextContext = getMaskedContext(workInProgress2, nextUnmaskedContext);\n          }\n          var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n          var hasNewLifecycles = typeof getDerivedStateFromProps === \"function\" || typeof instance.getSnapshotBeforeUpdate === \"function\";\n          if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === \"function\" || typeof instance.componentWillReceiveProps === \"function\")) {\n            if (unresolvedOldProps !== unresolvedNewProps || oldContext !== nextContext) {\n              callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext);\n            }\n          }\n          resetHasForceUpdateBeforeProcessing();\n          var oldState = workInProgress2.memoizedState;\n          var newState = instance.state = oldState;\n          processUpdateQueue(workInProgress2, newProps, instance, renderLanes2);\n          newState = workInProgress2.memoizedState;\n          if (unresolvedOldProps === unresolvedNewProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing() && !enableLazyContextPropagation) {\n            if (typeof instance.componentDidUpdate === \"function\") {\n              if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {\n                workInProgress2.flags |= Update;\n              }\n            }\n            if (typeof instance.getSnapshotBeforeUpdate === \"function\") {\n              if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {\n                workInProgress2.flags |= Snapshot;\n              }\n            }\n            return false;\n          }\n          if (typeof getDerivedStateFromProps === \"function\") {\n            applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps);\n            newState = workInProgress2.memoizedState;\n          }\n          var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) || // TODO: In some cases, we'll end up checking if context has changed twice,\n          // both before and after `shouldComponentUpdate` has been called. Not ideal,\n          // but I'm loath to refactor this function. This only happens for memoized\n          // components so it's not that common.\n          enableLazyContextPropagation;\n          if (shouldUpdate) {\n            if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === \"function\" || typeof instance.componentWillUpdate === \"function\")) {\n              if (typeof instance.componentWillUpdate === \"function\") {\n                instance.componentWillUpdate(newProps, newState, nextContext);\n              }\n              if (typeof instance.UNSAFE_componentWillUpdate === \"function\") {\n                instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);\n              }\n            }\n            if (typeof instance.componentDidUpdate === \"function\") {\n              workInProgress2.flags |= Update;\n            }\n            if (typeof instance.getSnapshotBeforeUpdate === \"function\") {\n              workInProgress2.flags |= Snapshot;\n            }\n          } else {\n            if (typeof instance.componentDidUpdate === \"function\") {\n              if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {\n                workInProgress2.flags |= Update;\n              }\n            }\n            if (typeof instance.getSnapshotBeforeUpdate === \"function\") {\n              if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {\n                workInProgress2.flags |= Snapshot;\n              }\n            }\n            workInProgress2.memoizedProps = newProps;\n            workInProgress2.memoizedState = newState;\n          }\n          instance.props = newProps;\n          instance.state = newState;\n          instance.context = nextContext;\n          return shouldUpdate;\n        }\n        function createCapturedValueAtFiber(value, source) {\n          return {\n            value,\n            source,\n            stack: getStackByFiberInDevAndProd(source),\n            digest: null\n          };\n        }\n        function createCapturedValue(value, digest, stack) {\n          return {\n            value,\n            source: null,\n            stack: stack != null ? stack : null,\n            digest: digest != null ? digest : null\n          };\n        }\n        function showErrorDialog(boundary, errorInfo) {\n          return true;\n        }\n        function logCapturedError(boundary, errorInfo) {\n          try {\n            var logError = showErrorDialog(boundary, errorInfo);\n            if (logError === false) {\n              return;\n            }\n            var error2 = errorInfo.value;\n            if (true) {\n              var source = errorInfo.source;\n              var stack = errorInfo.stack;\n              var componentStack = stack !== null ? stack : \"\";\n              if (error2 != null && error2._suppressLogging) {\n                if (boundary.tag === ClassComponent) {\n                  return;\n                }\n                console[\"error\"](error2);\n              }\n              var componentName = source ? getComponentNameFromFiber(source) : null;\n              var componentNameMessage = componentName ? \"The above error occurred in the <\" + componentName + \"> component:\" : \"The above error occurred in one of your React components:\";\n              var errorBoundaryMessage;\n              if (boundary.tag === HostRoot) {\n                errorBoundaryMessage = \"Consider adding an error boundary to your tree to customize error handling behavior.\\nVisit https://reactjs.org/link/error-boundaries to learn more about error boundaries.\";\n              } else {\n                var errorBoundaryName = getComponentNameFromFiber(boundary) || \"Anonymous\";\n                errorBoundaryMessage = \"React will try to recreate this component tree from scratch \" + (\"using the error boundary you provided, \" + errorBoundaryName + \".\");\n              }\n              var combinedMessage = componentNameMessage + \"\\n\" + componentStack + \"\\n\\n\" + (\"\" + errorBoundaryMessage);\n              console[\"error\"](combinedMessage);\n            } else {\n              console[\"error\"](error2);\n            }\n          } catch (e) {\n            setTimeout(function() {\n              throw e;\n            });\n          }\n        }\n        var PossiblyWeakMap$1 = typeof WeakMap === \"function\" ? WeakMap : Map;\n        function createRootErrorUpdate(fiber, errorInfo, lane) {\n          var update = createUpdate(NoTimestamp, lane);\n          update.tag = CaptureUpdate;\n          update.payload = {\n            element: null\n          };\n          var error2 = errorInfo.value;\n          update.callback = function() {\n            onUncaughtError(error2);\n            logCapturedError(fiber, errorInfo);\n          };\n          return update;\n        }\n        function createClassErrorUpdate(fiber, errorInfo, lane) {\n          var update = createUpdate(NoTimestamp, lane);\n          update.tag = CaptureUpdate;\n          var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n          if (typeof getDerivedStateFromError === \"function\") {\n            var error$1 = errorInfo.value;\n            update.payload = function() {\n              return getDerivedStateFromError(error$1);\n            };\n            update.callback = function() {\n              {\n                markFailedErrorBoundaryForHotReloading(fiber);\n              }\n              logCapturedError(fiber, errorInfo);\n            };\n          }\n          var inst = fiber.stateNode;\n          if (inst !== null && typeof inst.componentDidCatch === \"function\") {\n            update.callback = function callback() {\n              {\n                markFailedErrorBoundaryForHotReloading(fiber);\n              }\n              logCapturedError(fiber, errorInfo);\n              if (typeof getDerivedStateFromError !== \"function\") {\n                markLegacyErrorBoundaryAsFailed(this);\n              }\n              var error$12 = errorInfo.value;\n              var stack = errorInfo.stack;\n              this.componentDidCatch(error$12, {\n                componentStack: stack !== null ? stack : \"\"\n              });\n              {\n                if (typeof getDerivedStateFromError !== \"function\") {\n                  if (!includesSomeLane(fiber.lanes, SyncLane)) {\n                    error(\"%s: Error boundaries should implement getDerivedStateFromError(). In that method, return a state update to display an error message or fallback UI.\", getComponentNameFromFiber(fiber) || \"Unknown\");\n                  }\n                }\n              }\n            };\n          }\n          return update;\n        }\n        function attachPingListener(root2, wakeable, lanes) {\n          var pingCache = root2.pingCache;\n          var threadIDs;\n          if (pingCache === null) {\n            pingCache = root2.pingCache = new PossiblyWeakMap$1();\n            threadIDs = /* @__PURE__ */ new Set();\n            pingCache.set(wakeable, threadIDs);\n          } else {\n            threadIDs = pingCache.get(wakeable);\n            if (threadIDs === void 0) {\n              threadIDs = /* @__PURE__ */ new Set();\n              pingCache.set(wakeable, threadIDs);\n            }\n          }\n          if (!threadIDs.has(lanes)) {\n            threadIDs.add(lanes);\n            var ping = pingSuspendedRoot.bind(null, root2, wakeable, lanes);\n            {\n              if (isDevToolsPresent) {\n                restorePendingUpdaters(root2, lanes);\n              }\n            }\n            wakeable.then(ping, ping);\n          }\n        }\n        function attachRetryListener(suspenseBoundary, root2, wakeable, lanes) {\n          var wakeables = suspenseBoundary.updateQueue;\n          if (wakeables === null) {\n            var updateQueue = /* @__PURE__ */ new Set();\n            updateQueue.add(wakeable);\n            suspenseBoundary.updateQueue = updateQueue;\n          } else {\n            wakeables.add(wakeable);\n          }\n        }\n        function resetSuspendedComponent(sourceFiber, rootRenderLanes) {\n          var tag = sourceFiber.tag;\n          if ((sourceFiber.mode & ConcurrentMode) === NoMode && (tag === FunctionComponent || tag === ForwardRef || tag === SimpleMemoComponent)) {\n            var currentSource = sourceFiber.alternate;\n            if (currentSource) {\n              sourceFiber.updateQueue = currentSource.updateQueue;\n              sourceFiber.memoizedState = currentSource.memoizedState;\n              sourceFiber.lanes = currentSource.lanes;\n            } else {\n              sourceFiber.updateQueue = null;\n              sourceFiber.memoizedState = null;\n            }\n          }\n        }\n        function getNearestSuspenseBoundaryToCapture(returnFiber) {\n          var node = returnFiber;\n          do {\n            if (node.tag === SuspenseComponent && shouldCaptureSuspense(node)) {\n              return node;\n            }\n            node = node.return;\n          } while (node !== null);\n          return null;\n        }\n        function markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root2, rootRenderLanes) {\n          if ((suspenseBoundary.mode & ConcurrentMode) === NoMode) {\n            if (suspenseBoundary === returnFiber) {\n              suspenseBoundary.flags |= ShouldCapture;\n            } else {\n              suspenseBoundary.flags |= DidCapture;\n              sourceFiber.flags |= ForceUpdateForLegacySuspense;\n              sourceFiber.flags &= ~(LifecycleEffectMask | Incomplete);\n              if (sourceFiber.tag === ClassComponent) {\n                var currentSourceFiber = sourceFiber.alternate;\n                if (currentSourceFiber === null) {\n                  sourceFiber.tag = IncompleteClassComponent;\n                } else {\n                  var update = createUpdate(NoTimestamp, SyncLane);\n                  update.tag = ForceUpdate;\n                  enqueueUpdate(sourceFiber, update, SyncLane);\n                }\n              }\n              sourceFiber.lanes = mergeLanes(sourceFiber.lanes, SyncLane);\n            }\n            return suspenseBoundary;\n          }\n          suspenseBoundary.flags |= ShouldCapture;\n          suspenseBoundary.lanes = rootRenderLanes;\n          return suspenseBoundary;\n        }\n        function throwException(root2, returnFiber, sourceFiber, value, rootRenderLanes) {\n          sourceFiber.flags |= Incomplete;\n          {\n            if (isDevToolsPresent) {\n              restorePendingUpdaters(root2, rootRenderLanes);\n            }\n          }\n          if (value !== null && typeof value === \"object\" && typeof value.then === \"function\") {\n            var wakeable = value;\n            resetSuspendedComponent(sourceFiber);\n            {\n              if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n                markDidThrowWhileHydratingDEV();\n              }\n            }\n            var suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber);\n            if (suspenseBoundary !== null) {\n              suspenseBoundary.flags &= ~ForceClientRender;\n              markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root2, rootRenderLanes);\n              if (suspenseBoundary.mode & ConcurrentMode) {\n                attachPingListener(root2, wakeable, rootRenderLanes);\n              }\n              attachRetryListener(suspenseBoundary, root2, wakeable);\n              return;\n            } else {\n              if (!includesSyncLane(rootRenderLanes)) {\n                attachPingListener(root2, wakeable, rootRenderLanes);\n                renderDidSuspendDelayIfPossible();\n                return;\n              }\n              var uncaughtSuspenseError = new Error(\"A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped with startTransition.\");\n              value = uncaughtSuspenseError;\n            }\n          } else {\n            if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n              markDidThrowWhileHydratingDEV();\n              var _suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber);\n              if (_suspenseBoundary !== null) {\n                if ((_suspenseBoundary.flags & ShouldCapture) === NoFlags) {\n                  _suspenseBoundary.flags |= ForceClientRender;\n                }\n                markSuspenseBoundaryShouldCapture(_suspenseBoundary, returnFiber, sourceFiber, root2, rootRenderLanes);\n                queueHydrationError(createCapturedValueAtFiber(value, sourceFiber));\n                return;\n              }\n            }\n          }\n          value = createCapturedValueAtFiber(value, sourceFiber);\n          renderDidError(value);\n          var workInProgress2 = returnFiber;\n          do {\n            switch (workInProgress2.tag) {\n              case HostRoot: {\n                var _errorInfo = value;\n                workInProgress2.flags |= ShouldCapture;\n                var lane = pickArbitraryLane(rootRenderLanes);\n                workInProgress2.lanes = mergeLanes(workInProgress2.lanes, lane);\n                var update = createRootErrorUpdate(workInProgress2, _errorInfo, lane);\n                enqueueCapturedUpdate(workInProgress2, update);\n                return;\n              }\n              case ClassComponent:\n                var errorInfo = value;\n                var ctor = workInProgress2.type;\n                var instance = workInProgress2.stateNode;\n                if ((workInProgress2.flags & DidCapture) === NoFlags && (typeof ctor.getDerivedStateFromError === \"function\" || instance !== null && typeof instance.componentDidCatch === \"function\" && !isAlreadyFailedLegacyErrorBoundary(instance))) {\n                  workInProgress2.flags |= ShouldCapture;\n                  var _lane = pickArbitraryLane(rootRenderLanes);\n                  workInProgress2.lanes = mergeLanes(workInProgress2.lanes, _lane);\n                  var _update = createClassErrorUpdate(workInProgress2, errorInfo, _lane);\n                  enqueueCapturedUpdate(workInProgress2, _update);\n                  return;\n                }\n                break;\n            }\n            workInProgress2 = workInProgress2.return;\n          } while (workInProgress2 !== null);\n        }\n        function getSuspendedCache() {\n          {\n            return null;\n          }\n        }\n        var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\n        var didReceiveUpdate = false;\n        var didWarnAboutBadClass;\n        var didWarnAboutModulePatternComponent;\n        var didWarnAboutContextTypeOnFunctionComponent;\n        var didWarnAboutGetDerivedStateOnFunctionComponent;\n        var didWarnAboutFunctionRefs;\n        var didWarnAboutReassigningProps;\n        var didWarnAboutRevealOrder;\n        var didWarnAboutTailOptions;\n        var didWarnAboutDefaultPropsOnFunctionComponent;\n        {\n          didWarnAboutBadClass = {};\n          didWarnAboutModulePatternComponent = {};\n          didWarnAboutContextTypeOnFunctionComponent = {};\n          didWarnAboutGetDerivedStateOnFunctionComponent = {};\n          didWarnAboutFunctionRefs = {};\n          didWarnAboutReassigningProps = false;\n          didWarnAboutRevealOrder = {};\n          didWarnAboutTailOptions = {};\n          didWarnAboutDefaultPropsOnFunctionComponent = {};\n        }\n        function reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2) {\n          if (current2 === null) {\n            workInProgress2.child = mountChildFibers(workInProgress2, null, nextChildren, renderLanes2);\n          } else {\n            workInProgress2.child = reconcileChildFibers(workInProgress2, current2.child, nextChildren, renderLanes2);\n          }\n        }\n        function forceUnmountCurrentAndReconcile(current2, workInProgress2, nextChildren, renderLanes2) {\n          workInProgress2.child = reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);\n          workInProgress2.child = reconcileChildFibers(workInProgress2, null, nextChildren, renderLanes2);\n        }\n        function updateForwardRef(current2, workInProgress2, Component, nextProps, renderLanes2) {\n          {\n            if (workInProgress2.type !== workInProgress2.elementType) {\n              var innerPropTypes = Component.propTypes;\n              if (innerPropTypes) {\n                checkPropTypes(\n                  innerPropTypes,\n                  nextProps,\n                  // Resolved props\n                  \"prop\",\n                  getComponentNameFromType(Component)\n                );\n              }\n            }\n          }\n          var render2 = Component.render;\n          var ref = workInProgress2.ref;\n          var nextChildren;\n          var hasId;\n          prepareToReadContext(workInProgress2, renderLanes2);\n          {\n            markComponentRenderStarted(workInProgress2);\n          }\n          {\n            ReactCurrentOwner$1.current = workInProgress2;\n            setIsRendering(true);\n            nextChildren = renderWithHooks(current2, workInProgress2, render2, nextProps, ref, renderLanes2);\n            hasId = checkDidRenderIdHook();\n            if (workInProgress2.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n              try {\n                nextChildren = renderWithHooks(current2, workInProgress2, render2, nextProps, ref, renderLanes2);\n                hasId = checkDidRenderIdHook();\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n            setIsRendering(false);\n          }\n          {\n            markComponentRenderStopped();\n          }\n          if (current2 !== null && !didReceiveUpdate) {\n            bailoutHooks(current2, workInProgress2, renderLanes2);\n            return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n          }\n          if (getIsHydrating() && hasId) {\n            pushMaterializedTreeId(workInProgress2);\n          }\n          workInProgress2.flags |= PerformedWork;\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        function updateMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {\n          if (current2 === null) {\n            var type = Component.type;\n            if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.\n            Component.defaultProps === void 0) {\n              var resolvedType = type;\n              {\n                resolvedType = resolveFunctionForHotReloading(type);\n              }\n              workInProgress2.tag = SimpleMemoComponent;\n              workInProgress2.type = resolvedType;\n              {\n                validateFunctionComponentInDev(workInProgress2, type);\n              }\n              return updateSimpleMemoComponent(current2, workInProgress2, resolvedType, nextProps, renderLanes2);\n            }\n            {\n              var innerPropTypes = type.propTypes;\n              if (innerPropTypes) {\n                checkPropTypes(\n                  innerPropTypes,\n                  nextProps,\n                  // Resolved props\n                  \"prop\",\n                  getComponentNameFromType(type)\n                );\n              }\n              if (Component.defaultProps !== void 0) {\n                var componentName = getComponentNameFromType(type) || \"Unknown\";\n                if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) {\n                  error(\"%s: Support for defaultProps will be removed from memo components in a future major release. Use JavaScript default parameters instead.\", componentName);\n                  didWarnAboutDefaultPropsOnFunctionComponent[componentName] = true;\n                }\n              }\n            }\n            var child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress2, workInProgress2.mode, renderLanes2);\n            child.ref = workInProgress2.ref;\n            child.return = workInProgress2;\n            workInProgress2.child = child;\n            return child;\n          }\n          {\n            var _type = Component.type;\n            var _innerPropTypes = _type.propTypes;\n            if (_innerPropTypes) {\n              checkPropTypes(\n                _innerPropTypes,\n                nextProps,\n                // Resolved props\n                \"prop\",\n                getComponentNameFromType(_type)\n              );\n            }\n          }\n          var currentChild = current2.child;\n          var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current2, renderLanes2);\n          if (!hasScheduledUpdateOrContext) {\n            var prevProps = currentChild.memoizedProps;\n            var compare = Component.compare;\n            compare = compare !== null ? compare : shallowEqual;\n            if (compare(prevProps, nextProps) && current2.ref === workInProgress2.ref) {\n              return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n            }\n          }\n          workInProgress2.flags |= PerformedWork;\n          var newChild = createWorkInProgress(currentChild, nextProps);\n          newChild.ref = workInProgress2.ref;\n          newChild.return = workInProgress2;\n          workInProgress2.child = newChild;\n          return newChild;\n        }\n        function updateSimpleMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {\n          {\n            if (workInProgress2.type !== workInProgress2.elementType) {\n              var outerMemoType = workInProgress2.elementType;\n              if (outerMemoType.$$typeof === REACT_LAZY_TYPE) {\n                var lazyComponent = outerMemoType;\n                var payload = lazyComponent._payload;\n                var init = lazyComponent._init;\n                try {\n                  outerMemoType = init(payload);\n                } catch (x) {\n                  outerMemoType = null;\n                }\n                var outerPropTypes = outerMemoType && outerMemoType.propTypes;\n                if (outerPropTypes) {\n                  checkPropTypes(\n                    outerPropTypes,\n                    nextProps,\n                    // Resolved (SimpleMemoComponent has no defaultProps)\n                    \"prop\",\n                    getComponentNameFromType(outerMemoType)\n                  );\n                }\n              }\n            }\n          }\n          if (current2 !== null) {\n            var prevProps = current2.memoizedProps;\n            if (shallowEqual(prevProps, nextProps) && current2.ref === workInProgress2.ref && // Prevent bailout if the implementation changed due to hot reload.\n            workInProgress2.type === current2.type) {\n              didReceiveUpdate = false;\n              workInProgress2.pendingProps = nextProps = prevProps;\n              if (!checkScheduledUpdateOrContext(current2, renderLanes2)) {\n                workInProgress2.lanes = current2.lanes;\n                return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n              } else if ((current2.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n                didReceiveUpdate = true;\n              }\n            }\n          }\n          return updateFunctionComponent(current2, workInProgress2, Component, nextProps, renderLanes2);\n        }\n        function updateOffscreenComponent(current2, workInProgress2, renderLanes2) {\n          var nextProps = workInProgress2.pendingProps;\n          var nextChildren = nextProps.children;\n          var prevState = current2 !== null ? current2.memoizedState : null;\n          if (nextProps.mode === \"hidden\" || enableLegacyHidden) {\n            if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n              var nextState = {\n                baseLanes: NoLanes,\n                cachePool: null,\n                transitions: null\n              };\n              workInProgress2.memoizedState = nextState;\n              pushRenderLanes(workInProgress2, renderLanes2);\n            } else if (!includesSomeLane(renderLanes2, OffscreenLane)) {\n              var spawnedCachePool = null;\n              var nextBaseLanes;\n              if (prevState !== null) {\n                var prevBaseLanes = prevState.baseLanes;\n                nextBaseLanes = mergeLanes(prevBaseLanes, renderLanes2);\n              } else {\n                nextBaseLanes = renderLanes2;\n              }\n              workInProgress2.lanes = workInProgress2.childLanes = laneToLanes(OffscreenLane);\n              var _nextState = {\n                baseLanes: nextBaseLanes,\n                cachePool: spawnedCachePool,\n                transitions: null\n              };\n              workInProgress2.memoizedState = _nextState;\n              workInProgress2.updateQueue = null;\n              pushRenderLanes(workInProgress2, nextBaseLanes);\n              return null;\n            } else {\n              var _nextState2 = {\n                baseLanes: NoLanes,\n                cachePool: null,\n                transitions: null\n              };\n              workInProgress2.memoizedState = _nextState2;\n              var subtreeRenderLanes2 = prevState !== null ? prevState.baseLanes : renderLanes2;\n              pushRenderLanes(workInProgress2, subtreeRenderLanes2);\n            }\n          } else {\n            var _subtreeRenderLanes;\n            if (prevState !== null) {\n              _subtreeRenderLanes = mergeLanes(prevState.baseLanes, renderLanes2);\n              workInProgress2.memoizedState = null;\n            } else {\n              _subtreeRenderLanes = renderLanes2;\n            }\n            pushRenderLanes(workInProgress2, _subtreeRenderLanes);\n          }\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        function updateFragment(current2, workInProgress2, renderLanes2) {\n          var nextChildren = workInProgress2.pendingProps;\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        function updateMode(current2, workInProgress2, renderLanes2) {\n          var nextChildren = workInProgress2.pendingProps.children;\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        function updateProfiler(current2, workInProgress2, renderLanes2) {\n          {\n            workInProgress2.flags |= Update;\n            {\n              var stateNode = workInProgress2.stateNode;\n              stateNode.effectDuration = 0;\n              stateNode.passiveEffectDuration = 0;\n            }\n          }\n          var nextProps = workInProgress2.pendingProps;\n          var nextChildren = nextProps.children;\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        function markRef(current2, workInProgress2) {\n          var ref = workInProgress2.ref;\n          if (current2 === null && ref !== null || current2 !== null && current2.ref !== ref) {\n            workInProgress2.flags |= Ref;\n            {\n              workInProgress2.flags |= RefStatic;\n            }\n          }\n        }\n        function updateFunctionComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {\n          {\n            if (workInProgress2.type !== workInProgress2.elementType) {\n              var innerPropTypes = Component.propTypes;\n              if (innerPropTypes) {\n                checkPropTypes(\n                  innerPropTypes,\n                  nextProps,\n                  // Resolved props\n                  \"prop\",\n                  getComponentNameFromType(Component)\n                );\n              }\n            }\n          }\n          var context;\n          {\n            var unmaskedContext = getUnmaskedContext(workInProgress2, Component, true);\n            context = getMaskedContext(workInProgress2, unmaskedContext);\n          }\n          var nextChildren;\n          var hasId;\n          prepareToReadContext(workInProgress2, renderLanes2);\n          {\n            markComponentRenderStarted(workInProgress2);\n          }\n          {\n            ReactCurrentOwner$1.current = workInProgress2;\n            setIsRendering(true);\n            nextChildren = renderWithHooks(current2, workInProgress2, Component, nextProps, context, renderLanes2);\n            hasId = checkDidRenderIdHook();\n            if (workInProgress2.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n              try {\n                nextChildren = renderWithHooks(current2, workInProgress2, Component, nextProps, context, renderLanes2);\n                hasId = checkDidRenderIdHook();\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n            setIsRendering(false);\n          }\n          {\n            markComponentRenderStopped();\n          }\n          if (current2 !== null && !didReceiveUpdate) {\n            bailoutHooks(current2, workInProgress2, renderLanes2);\n            return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n          }\n          if (getIsHydrating() && hasId) {\n            pushMaterializedTreeId(workInProgress2);\n          }\n          workInProgress2.flags |= PerformedWork;\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        function updateClassComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {\n          {\n            switch (shouldError(workInProgress2)) {\n              case false: {\n                var _instance = workInProgress2.stateNode;\n                var ctor = workInProgress2.type;\n                var tempInstance = new ctor(workInProgress2.memoizedProps, _instance.context);\n                var state = tempInstance.state;\n                _instance.updater.enqueueSetState(_instance, state, null);\n                break;\n              }\n              case true: {\n                workInProgress2.flags |= DidCapture;\n                workInProgress2.flags |= ShouldCapture;\n                var error$1 = new Error(\"Simulated error coming from DevTools\");\n                var lane = pickArbitraryLane(renderLanes2);\n                workInProgress2.lanes = mergeLanes(workInProgress2.lanes, lane);\n                var update = createClassErrorUpdate(workInProgress2, createCapturedValueAtFiber(error$1, workInProgress2), lane);\n                enqueueCapturedUpdate(workInProgress2, update);\n                break;\n              }\n            }\n            if (workInProgress2.type !== workInProgress2.elementType) {\n              var innerPropTypes = Component.propTypes;\n              if (innerPropTypes) {\n                checkPropTypes(\n                  innerPropTypes,\n                  nextProps,\n                  // Resolved props\n                  \"prop\",\n                  getComponentNameFromType(Component)\n                );\n              }\n            }\n          }\n          var hasContext;\n          if (isContextProvider(Component)) {\n            hasContext = true;\n            pushContextProvider(workInProgress2);\n          } else {\n            hasContext = false;\n          }\n          prepareToReadContext(workInProgress2, renderLanes2);\n          var instance = workInProgress2.stateNode;\n          var shouldUpdate;\n          if (instance === null) {\n            resetSuspendedCurrentOnMountInLegacyMode(current2, workInProgress2);\n            constructClassInstance(workInProgress2, Component, nextProps);\n            mountClassInstance(workInProgress2, Component, nextProps, renderLanes2);\n            shouldUpdate = true;\n          } else if (current2 === null) {\n            shouldUpdate = resumeMountClassInstance(workInProgress2, Component, nextProps, renderLanes2);\n          } else {\n            shouldUpdate = updateClassInstance(current2, workInProgress2, Component, nextProps, renderLanes2);\n          }\n          var nextUnitOfWork = finishClassComponent(current2, workInProgress2, Component, shouldUpdate, hasContext, renderLanes2);\n          {\n            var inst = workInProgress2.stateNode;\n            if (shouldUpdate && inst.props !== nextProps) {\n              if (!didWarnAboutReassigningProps) {\n                error(\"It looks like %s is reassigning its own `this.props` while rendering. This is not supported and can lead to confusing bugs.\", getComponentNameFromFiber(workInProgress2) || \"a component\");\n              }\n              didWarnAboutReassigningProps = true;\n            }\n          }\n          return nextUnitOfWork;\n        }\n        function finishClassComponent(current2, workInProgress2, Component, shouldUpdate, hasContext, renderLanes2) {\n          markRef(current2, workInProgress2);\n          var didCaptureError = (workInProgress2.flags & DidCapture) !== NoFlags;\n          if (!shouldUpdate && !didCaptureError) {\n            if (hasContext) {\n              invalidateContextProvider(workInProgress2, Component, false);\n            }\n            return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n          }\n          var instance = workInProgress2.stateNode;\n          ReactCurrentOwner$1.current = workInProgress2;\n          var nextChildren;\n          if (didCaptureError && typeof Component.getDerivedStateFromError !== \"function\") {\n            nextChildren = null;\n            {\n              stopProfilerTimerIfRunning();\n            }\n          } else {\n            {\n              markComponentRenderStarted(workInProgress2);\n            }\n            {\n              setIsRendering(true);\n              nextChildren = instance.render();\n              if (workInProgress2.mode & StrictLegacyMode) {\n                setIsStrictModeForDevtools(true);\n                try {\n                  instance.render();\n                } finally {\n                  setIsStrictModeForDevtools(false);\n                }\n              }\n              setIsRendering(false);\n            }\n            {\n              markComponentRenderStopped();\n            }\n          }\n          workInProgress2.flags |= PerformedWork;\n          if (current2 !== null && didCaptureError) {\n            forceUnmountCurrentAndReconcile(current2, workInProgress2, nextChildren, renderLanes2);\n          } else {\n            reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          }\n          workInProgress2.memoizedState = instance.state;\n          if (hasContext) {\n            invalidateContextProvider(workInProgress2, Component, true);\n          }\n          return workInProgress2.child;\n        }\n        function pushHostRootContext(workInProgress2) {\n          var root2 = workInProgress2.stateNode;\n          if (root2.pendingContext) {\n            pushTopLevelContextObject(workInProgress2, root2.pendingContext, root2.pendingContext !== root2.context);\n          } else if (root2.context) {\n            pushTopLevelContextObject(workInProgress2, root2.context, false);\n          }\n          pushHostContainer(workInProgress2, root2.containerInfo);\n        }\n        function updateHostRoot(current2, workInProgress2, renderLanes2) {\n          pushHostRootContext(workInProgress2);\n          if (current2 === null) {\n            throw new Error(\"Should have a current fiber. This is a bug in React.\");\n          }\n          var nextProps = workInProgress2.pendingProps;\n          var prevState = workInProgress2.memoizedState;\n          var prevChildren = prevState.element;\n          cloneUpdateQueue(current2, workInProgress2);\n          processUpdateQueue(workInProgress2, nextProps, null, renderLanes2);\n          var nextState = workInProgress2.memoizedState;\n          var root2 = workInProgress2.stateNode;\n          var nextChildren = nextState.element;\n          if (prevState.isDehydrated) {\n            var overrideState = {\n              element: nextChildren,\n              isDehydrated: false,\n              cache: nextState.cache,\n              pendingSuspenseBoundaries: nextState.pendingSuspenseBoundaries,\n              transitions: nextState.transitions\n            };\n            var updateQueue = workInProgress2.updateQueue;\n            updateQueue.baseState = overrideState;\n            workInProgress2.memoizedState = overrideState;\n            if (workInProgress2.flags & ForceClientRender) {\n              var recoverableError = createCapturedValueAtFiber(new Error(\"There was an error while hydrating. Because the error happened outside of a Suspense boundary, the entire root will switch to client rendering.\"), workInProgress2);\n              return mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2, recoverableError);\n            } else if (nextChildren !== prevChildren) {\n              var _recoverableError = createCapturedValueAtFiber(new Error(\"This root received an early update, before anything was able hydrate. Switched the entire root to client rendering.\"), workInProgress2);\n              return mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2, _recoverableError);\n            } else {\n              enterHydrationState(workInProgress2);\n              var child = mountChildFibers(workInProgress2, null, nextChildren, renderLanes2);\n              workInProgress2.child = child;\n              var node = child;\n              while (node) {\n                node.flags = node.flags & ~Placement | Hydrating;\n                node = node.sibling;\n              }\n            }\n          } else {\n            resetHydrationState();\n            if (nextChildren === prevChildren) {\n              return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n            }\n            reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          }\n          return workInProgress2.child;\n        }\n        function mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2, recoverableError) {\n          resetHydrationState();\n          queueHydrationError(recoverableError);\n          workInProgress2.flags |= ForceClientRender;\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        function updateHostComponent(current2, workInProgress2, renderLanes2) {\n          pushHostContext(workInProgress2);\n          if (current2 === null) {\n            tryToClaimNextHydratableInstance(workInProgress2);\n          }\n          var type = workInProgress2.type;\n          var nextProps = workInProgress2.pendingProps;\n          var prevProps = current2 !== null ? current2.memoizedProps : null;\n          var nextChildren = nextProps.children;\n          var isDirectTextChild = shouldSetTextContent(type, nextProps);\n          if (isDirectTextChild) {\n            nextChildren = null;\n          } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {\n            workInProgress2.flags |= ContentReset;\n          }\n          markRef(current2, workInProgress2);\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        function updateHostText(current2, workInProgress2) {\n          if (current2 === null) {\n            tryToClaimNextHydratableInstance(workInProgress2);\n          }\n          return null;\n        }\n        function mountLazyComponent(_current, workInProgress2, elementType, renderLanes2) {\n          resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress2);\n          var props = workInProgress2.pendingProps;\n          var lazyComponent = elementType;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n          var Component = init(payload);\n          workInProgress2.type = Component;\n          var resolvedTag = workInProgress2.tag = resolveLazyComponentTag(Component);\n          var resolvedProps = resolveDefaultProps(Component, props);\n          var child;\n          switch (resolvedTag) {\n            case FunctionComponent: {\n              {\n                validateFunctionComponentInDev(workInProgress2, Component);\n                workInProgress2.type = Component = resolveFunctionForHotReloading(Component);\n              }\n              child = updateFunctionComponent(null, workInProgress2, Component, resolvedProps, renderLanes2);\n              return child;\n            }\n            case ClassComponent: {\n              {\n                workInProgress2.type = Component = resolveClassForHotReloading(Component);\n              }\n              child = updateClassComponent(null, workInProgress2, Component, resolvedProps, renderLanes2);\n              return child;\n            }\n            case ForwardRef: {\n              {\n                workInProgress2.type = Component = resolveForwardRefForHotReloading(Component);\n              }\n              child = updateForwardRef(null, workInProgress2, Component, resolvedProps, renderLanes2);\n              return child;\n            }\n            case MemoComponent: {\n              {\n                if (workInProgress2.type !== workInProgress2.elementType) {\n                  var outerPropTypes = Component.propTypes;\n                  if (outerPropTypes) {\n                    checkPropTypes(\n                      outerPropTypes,\n                      resolvedProps,\n                      // Resolved for outer only\n                      \"prop\",\n                      getComponentNameFromType(Component)\n                    );\n                  }\n                }\n              }\n              child = updateMemoComponent(\n                null,\n                workInProgress2,\n                Component,\n                resolveDefaultProps(Component.type, resolvedProps),\n                // The inner type can have defaults too\n                renderLanes2\n              );\n              return child;\n            }\n          }\n          var hint = \"\";\n          {\n            if (Component !== null && typeof Component === \"object\" && Component.$$typeof === REACT_LAZY_TYPE) {\n              hint = \" Did you wrap a component in React.lazy() more than once?\";\n            }\n          }\n          throw new Error(\"Element type is invalid. Received a promise that resolves to: \" + Component + \". \" + (\"Lazy element type must resolve to a class or function.\" + hint));\n        }\n        function mountIncompleteClassComponent(_current, workInProgress2, Component, nextProps, renderLanes2) {\n          resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress2);\n          workInProgress2.tag = ClassComponent;\n          var hasContext;\n          if (isContextProvider(Component)) {\n            hasContext = true;\n            pushContextProvider(workInProgress2);\n          } else {\n            hasContext = false;\n          }\n          prepareToReadContext(workInProgress2, renderLanes2);\n          constructClassInstance(workInProgress2, Component, nextProps);\n          mountClassInstance(workInProgress2, Component, nextProps, renderLanes2);\n          return finishClassComponent(null, workInProgress2, Component, true, hasContext, renderLanes2);\n        }\n        function mountIndeterminateComponent(_current, workInProgress2, Component, renderLanes2) {\n          resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress2);\n          var props = workInProgress2.pendingProps;\n          var context;\n          {\n            var unmaskedContext = getUnmaskedContext(workInProgress2, Component, false);\n            context = getMaskedContext(workInProgress2, unmaskedContext);\n          }\n          prepareToReadContext(workInProgress2, renderLanes2);\n          var value;\n          var hasId;\n          {\n            markComponentRenderStarted(workInProgress2);\n          }\n          {\n            if (Component.prototype && typeof Component.prototype.render === \"function\") {\n              var componentName = getComponentNameFromType(Component) || \"Unknown\";\n              if (!didWarnAboutBadClass[componentName]) {\n                error(\"The <%s /> component appears to have a render method, but doesn't extend React.Component. This is likely to cause errors. Change %s to extend React.Component instead.\", componentName, componentName);\n                didWarnAboutBadClass[componentName] = true;\n              }\n            }\n            if (workInProgress2.mode & StrictLegacyMode) {\n              ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress2, null);\n            }\n            setIsRendering(true);\n            ReactCurrentOwner$1.current = workInProgress2;\n            value = renderWithHooks(null, workInProgress2, Component, props, context, renderLanes2);\n            hasId = checkDidRenderIdHook();\n            setIsRendering(false);\n          }\n          {\n            markComponentRenderStopped();\n          }\n          workInProgress2.flags |= PerformedWork;\n          {\n            if (typeof value === \"object\" && value !== null && typeof value.render === \"function\" && value.$$typeof === void 0) {\n              var _componentName = getComponentNameFromType(Component) || \"Unknown\";\n              if (!didWarnAboutModulePatternComponent[_componentName]) {\n                error(\"The <%s /> component appears to be a function component that returns a class instance. Change %s to a class that extends React.Component instead. If you can't use a class try assigning the prototype on the function as a workaround. `%s.prototype = React.Component.prototype`. Don't use an arrow function since it cannot be called with `new` by React.\", _componentName, _componentName, _componentName);\n                didWarnAboutModulePatternComponent[_componentName] = true;\n              }\n            }\n          }\n          if (\n            // Run these checks in production only if the flag is off.\n            // Eventually we'll delete this branch altogether.\n            typeof value === \"object\" && value !== null && typeof value.render === \"function\" && value.$$typeof === void 0\n          ) {\n            {\n              var _componentName2 = getComponentNameFromType(Component) || \"Unknown\";\n              if (!didWarnAboutModulePatternComponent[_componentName2]) {\n                error(\"The <%s /> component appears to be a function component that returns a class instance. Change %s to a class that extends React.Component instead. If you can't use a class try assigning the prototype on the function as a workaround. `%s.prototype = React.Component.prototype`. Don't use an arrow function since it cannot be called with `new` by React.\", _componentName2, _componentName2, _componentName2);\n                didWarnAboutModulePatternComponent[_componentName2] = true;\n              }\n            }\n            workInProgress2.tag = ClassComponent;\n            workInProgress2.memoizedState = null;\n            workInProgress2.updateQueue = null;\n            var hasContext = false;\n            if (isContextProvider(Component)) {\n              hasContext = true;\n              pushContextProvider(workInProgress2);\n            } else {\n              hasContext = false;\n            }\n            workInProgress2.memoizedState = value.state !== null && value.state !== void 0 ? value.state : null;\n            initializeUpdateQueue(workInProgress2);\n            adoptClassInstance(workInProgress2, value);\n            mountClassInstance(workInProgress2, Component, props, renderLanes2);\n            return finishClassComponent(null, workInProgress2, Component, true, hasContext, renderLanes2);\n          } else {\n            workInProgress2.tag = FunctionComponent;\n            {\n              if (workInProgress2.mode & StrictLegacyMode) {\n                setIsStrictModeForDevtools(true);\n                try {\n                  value = renderWithHooks(null, workInProgress2, Component, props, context, renderLanes2);\n                  hasId = checkDidRenderIdHook();\n                } finally {\n                  setIsStrictModeForDevtools(false);\n                }\n              }\n            }\n            if (getIsHydrating() && hasId) {\n              pushMaterializedTreeId(workInProgress2);\n            }\n            reconcileChildren(null, workInProgress2, value, renderLanes2);\n            {\n              validateFunctionComponentInDev(workInProgress2, Component);\n            }\n            return workInProgress2.child;\n          }\n        }\n        function validateFunctionComponentInDev(workInProgress2, Component) {\n          {\n            if (Component) {\n              if (Component.childContextTypes) {\n                error(\"%s(...): childContextTypes cannot be defined on a function component.\", Component.displayName || Component.name || \"Component\");\n              }\n            }\n            if (workInProgress2.ref !== null) {\n              var info = \"\";\n              var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n              if (ownerName) {\n                info += \"\\n\\nCheck the render method of `\" + ownerName + \"`.\";\n              }\n              var warningKey = ownerName || \"\";\n              var debugSource = workInProgress2._debugSource;\n              if (debugSource) {\n                warningKey = debugSource.fileName + \":\" + debugSource.lineNumber;\n              }\n              if (!didWarnAboutFunctionRefs[warningKey]) {\n                didWarnAboutFunctionRefs[warningKey] = true;\n                error(\"Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?%s\", info);\n              }\n            }\n            if (Component.defaultProps !== void 0) {\n              var componentName = getComponentNameFromType(Component) || \"Unknown\";\n              if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) {\n                error(\"%s: Support for defaultProps will be removed from function components in a future major release. Use JavaScript default parameters instead.\", componentName);\n                didWarnAboutDefaultPropsOnFunctionComponent[componentName] = true;\n              }\n            }\n            if (typeof Component.getDerivedStateFromProps === \"function\") {\n              var _componentName3 = getComponentNameFromType(Component) || \"Unknown\";\n              if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {\n                error(\"%s: Function components do not support getDerivedStateFromProps.\", _componentName3);\n                didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;\n              }\n            }\n            if (typeof Component.contextType === \"object\" && Component.contextType !== null) {\n              var _componentName4 = getComponentNameFromType(Component) || \"Unknown\";\n              if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {\n                error(\"%s: Function components do not support contextType.\", _componentName4);\n                didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;\n              }\n            }\n          }\n        }\n        var SUSPENDED_MARKER = {\n          dehydrated: null,\n          treeContext: null,\n          retryLane: NoLane\n        };\n        function mountSuspenseOffscreenState(renderLanes2) {\n          return {\n            baseLanes: renderLanes2,\n            cachePool: getSuspendedCache(),\n            transitions: null\n          };\n        }\n        function updateSuspenseOffscreenState(prevOffscreenState, renderLanes2) {\n          var cachePool = null;\n          return {\n            baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes2),\n            cachePool,\n            transitions: prevOffscreenState.transitions\n          };\n        }\n        function shouldRemainOnFallback(suspenseContext, current2, workInProgress2, renderLanes2) {\n          if (current2 !== null) {\n            var suspenseState = current2.memoizedState;\n            if (suspenseState === null) {\n              return false;\n            }\n          }\n          return hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n        }\n        function getRemainingWorkInPrimaryTree(current2, renderLanes2) {\n          return removeLanes(current2.childLanes, renderLanes2);\n        }\n        function updateSuspenseComponent(current2, workInProgress2, renderLanes2) {\n          var nextProps = workInProgress2.pendingProps;\n          {\n            if (shouldSuspend(workInProgress2)) {\n              workInProgress2.flags |= DidCapture;\n            }\n          }\n          var suspenseContext = suspenseStackCursor.current;\n          var showFallback = false;\n          var didSuspend = (workInProgress2.flags & DidCapture) !== NoFlags;\n          if (didSuspend || shouldRemainOnFallback(suspenseContext, current2)) {\n            showFallback = true;\n            workInProgress2.flags &= ~DidCapture;\n          } else {\n            if (current2 === null || current2.memoizedState !== null) {\n              {\n                suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext);\n              }\n            }\n          }\n          suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n          pushSuspenseContext(workInProgress2, suspenseContext);\n          if (current2 === null) {\n            tryToClaimNextHydratableInstance(workInProgress2);\n            var suspenseState = workInProgress2.memoizedState;\n            if (suspenseState !== null) {\n              var dehydrated = suspenseState.dehydrated;\n              if (dehydrated !== null) {\n                return mountDehydratedSuspenseComponent(workInProgress2, dehydrated);\n              }\n            }\n            var nextPrimaryChildren = nextProps.children;\n            var nextFallbackChildren = nextProps.fallback;\n            if (showFallback) {\n              var fallbackFragment = mountSuspenseFallbackChildren(workInProgress2, nextPrimaryChildren, nextFallbackChildren, renderLanes2);\n              var primaryChildFragment = workInProgress2.child;\n              primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes2);\n              workInProgress2.memoizedState = SUSPENDED_MARKER;\n              return fallbackFragment;\n            } else {\n              return mountSuspensePrimaryChildren(workInProgress2, nextPrimaryChildren);\n            }\n          } else {\n            var prevState = current2.memoizedState;\n            if (prevState !== null) {\n              var _dehydrated = prevState.dehydrated;\n              if (_dehydrated !== null) {\n                return updateDehydratedSuspenseComponent(current2, workInProgress2, didSuspend, nextProps, _dehydrated, prevState, renderLanes2);\n              }\n            }\n            if (showFallback) {\n              var _nextFallbackChildren = nextProps.fallback;\n              var _nextPrimaryChildren = nextProps.children;\n              var fallbackChildFragment = updateSuspenseFallbackChildren(current2, workInProgress2, _nextPrimaryChildren, _nextFallbackChildren, renderLanes2);\n              var _primaryChildFragment2 = workInProgress2.child;\n              var prevOffscreenState = current2.child.memoizedState;\n              _primaryChildFragment2.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes2) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes2);\n              _primaryChildFragment2.childLanes = getRemainingWorkInPrimaryTree(current2, renderLanes2);\n              workInProgress2.memoizedState = SUSPENDED_MARKER;\n              return fallbackChildFragment;\n            } else {\n              var _nextPrimaryChildren2 = nextProps.children;\n              var _primaryChildFragment3 = updateSuspensePrimaryChildren(current2, workInProgress2, _nextPrimaryChildren2, renderLanes2);\n              workInProgress2.memoizedState = null;\n              return _primaryChildFragment3;\n            }\n          }\n        }\n        function mountSuspensePrimaryChildren(workInProgress2, primaryChildren, renderLanes2) {\n          var mode = workInProgress2.mode;\n          var primaryChildProps = {\n            mode: \"visible\",\n            children: primaryChildren\n          };\n          var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n          primaryChildFragment.return = workInProgress2;\n          workInProgress2.child = primaryChildFragment;\n          return primaryChildFragment;\n        }\n        function mountSuspenseFallbackChildren(workInProgress2, primaryChildren, fallbackChildren, renderLanes2) {\n          var mode = workInProgress2.mode;\n          var progressedPrimaryFragment = workInProgress2.child;\n          var primaryChildProps = {\n            mode: \"hidden\",\n            children: primaryChildren\n          };\n          var primaryChildFragment;\n          var fallbackChildFragment;\n          if ((mode & ConcurrentMode) === NoMode && progressedPrimaryFragment !== null) {\n            primaryChildFragment = progressedPrimaryFragment;\n            primaryChildFragment.childLanes = NoLanes;\n            primaryChildFragment.pendingProps = primaryChildProps;\n            if (workInProgress2.mode & ProfileMode) {\n              primaryChildFragment.actualDuration = 0;\n              primaryChildFragment.actualStartTime = -1;\n              primaryChildFragment.selfBaseDuration = 0;\n              primaryChildFragment.treeBaseDuration = 0;\n            }\n            fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes2, null);\n          } else {\n            primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n            fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes2, null);\n          }\n          primaryChildFragment.return = workInProgress2;\n          fallbackChildFragment.return = workInProgress2;\n          primaryChildFragment.sibling = fallbackChildFragment;\n          workInProgress2.child = primaryChildFragment;\n          return fallbackChildFragment;\n        }\n        function mountWorkInProgressOffscreenFiber(offscreenProps, mode, renderLanes2) {\n          return createFiberFromOffscreen(offscreenProps, mode, NoLanes, null);\n        }\n        function updateWorkInProgressOffscreenFiber(current2, offscreenProps) {\n          return createWorkInProgress(current2, offscreenProps);\n        }\n        function updateSuspensePrimaryChildren(current2, workInProgress2, primaryChildren, renderLanes2) {\n          var currentPrimaryChildFragment = current2.child;\n          var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n          var primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, {\n            mode: \"visible\",\n            children: primaryChildren\n          });\n          if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n            primaryChildFragment.lanes = renderLanes2;\n          }\n          primaryChildFragment.return = workInProgress2;\n          primaryChildFragment.sibling = null;\n          if (currentFallbackChildFragment !== null) {\n            var deletions = workInProgress2.deletions;\n            if (deletions === null) {\n              workInProgress2.deletions = [currentFallbackChildFragment];\n              workInProgress2.flags |= ChildDeletion;\n            } else {\n              deletions.push(currentFallbackChildFragment);\n            }\n          }\n          workInProgress2.child = primaryChildFragment;\n          return primaryChildFragment;\n        }\n        function updateSuspenseFallbackChildren(current2, workInProgress2, primaryChildren, fallbackChildren, renderLanes2) {\n          var mode = workInProgress2.mode;\n          var currentPrimaryChildFragment = current2.child;\n          var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n          var primaryChildProps = {\n            mode: \"hidden\",\n            children: primaryChildren\n          };\n          var primaryChildFragment;\n          if (\n            // In legacy mode, we commit the primary tree as if it successfully\n            // completed, even though it's in an inconsistent state.\n            (mode & ConcurrentMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was\n            // already cloned. In legacy mode, the only case where this isn't true is\n            // when DevTools forces us to display a fallback; we skip the first render\n            // pass entirely and go straight to rendering the fallback. (In Concurrent\n            // Mode, SuspenseList can also trigger this scenario, but this is a legacy-\n            // only codepath.)\n            workInProgress2.child !== currentPrimaryChildFragment\n          ) {\n            var progressedPrimaryFragment = workInProgress2.child;\n            primaryChildFragment = progressedPrimaryFragment;\n            primaryChildFragment.childLanes = NoLanes;\n            primaryChildFragment.pendingProps = primaryChildProps;\n            if (workInProgress2.mode & ProfileMode) {\n              primaryChildFragment.actualDuration = 0;\n              primaryChildFragment.actualStartTime = -1;\n              primaryChildFragment.selfBaseDuration = currentPrimaryChildFragment.selfBaseDuration;\n              primaryChildFragment.treeBaseDuration = currentPrimaryChildFragment.treeBaseDuration;\n            }\n            workInProgress2.deletions = null;\n          } else {\n            primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, primaryChildProps);\n            primaryChildFragment.subtreeFlags = currentPrimaryChildFragment.subtreeFlags & StaticMask;\n          }\n          var fallbackChildFragment;\n          if (currentFallbackChildFragment !== null) {\n            fallbackChildFragment = createWorkInProgress(currentFallbackChildFragment, fallbackChildren);\n          } else {\n            fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes2, null);\n            fallbackChildFragment.flags |= Placement;\n          }\n          fallbackChildFragment.return = workInProgress2;\n          primaryChildFragment.return = workInProgress2;\n          primaryChildFragment.sibling = fallbackChildFragment;\n          workInProgress2.child = primaryChildFragment;\n          return fallbackChildFragment;\n        }\n        function retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, recoverableError) {\n          if (recoverableError !== null) {\n            queueHydrationError(recoverableError);\n          }\n          reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);\n          var nextProps = workInProgress2.pendingProps;\n          var primaryChildren = nextProps.children;\n          var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress2, primaryChildren);\n          primaryChildFragment.flags |= Placement;\n          workInProgress2.memoizedState = null;\n          return primaryChildFragment;\n        }\n        function mountSuspenseFallbackAfterRetryWithoutHydrating(current2, workInProgress2, primaryChildren, fallbackChildren, renderLanes2) {\n          var fiberMode = workInProgress2.mode;\n          var primaryChildProps = {\n            mode: \"visible\",\n            children: primaryChildren\n          };\n          var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, fiberMode);\n          var fallbackChildFragment = createFiberFromFragment(fallbackChildren, fiberMode, renderLanes2, null);\n          fallbackChildFragment.flags |= Placement;\n          primaryChildFragment.return = workInProgress2;\n          fallbackChildFragment.return = workInProgress2;\n          primaryChildFragment.sibling = fallbackChildFragment;\n          workInProgress2.child = primaryChildFragment;\n          if ((workInProgress2.mode & ConcurrentMode) !== NoMode) {\n            reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);\n          }\n          return fallbackChildFragment;\n        }\n        function mountDehydratedSuspenseComponent(workInProgress2, suspenseInstance, renderLanes2) {\n          if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n            {\n              error(\"Cannot hydrate Suspense in legacy mode. Switch from ReactDOM.hydrate(element, container) to ReactDOMClient.hydrateRoot(container, <App />).render(element) or remove the Suspense components from the server rendered components.\");\n            }\n            workInProgress2.lanes = laneToLanes(SyncLane);\n          } else if (isSuspenseInstanceFallback(suspenseInstance)) {\n            workInProgress2.lanes = laneToLanes(DefaultHydrationLane);\n          } else {\n            workInProgress2.lanes = laneToLanes(OffscreenLane);\n          }\n          return null;\n        }\n        function updateDehydratedSuspenseComponent(current2, workInProgress2, didSuspend, nextProps, suspenseInstance, suspenseState, renderLanes2) {\n          if (!didSuspend) {\n            warnIfHydrating();\n            if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n              return retrySuspenseComponentWithoutHydrating(\n                current2,\n                workInProgress2,\n                renderLanes2,\n                // TODO: When we delete legacy mode, we should make this error argument\n                // required — every concurrent mode path that causes hydration to\n                // de-opt to client rendering should have an error message.\n                null\n              );\n            }\n            if (isSuspenseInstanceFallback(suspenseInstance)) {\n              var digest, message, stack;\n              {\n                var _getSuspenseInstanceF = getSuspenseInstanceFallbackErrorDetails(suspenseInstance);\n                digest = _getSuspenseInstanceF.digest;\n                message = _getSuspenseInstanceF.message;\n                stack = _getSuspenseInstanceF.stack;\n              }\n              var error2;\n              if (message) {\n                error2 = new Error(message);\n              } else {\n                error2 = new Error(\"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering.\");\n              }\n              var capturedValue = createCapturedValue(error2, digest, stack);\n              return retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, capturedValue);\n            }\n            var hasContextChanged2 = includesSomeLane(renderLanes2, current2.childLanes);\n            if (didReceiveUpdate || hasContextChanged2) {\n              var root2 = getWorkInProgressRoot();\n              if (root2 !== null) {\n                var attemptHydrationAtLane = getBumpedLaneForHydration(root2, renderLanes2);\n                if (attemptHydrationAtLane !== NoLane && attemptHydrationAtLane !== suspenseState.retryLane) {\n                  suspenseState.retryLane = attemptHydrationAtLane;\n                  var eventTime = NoTimestamp;\n                  enqueueConcurrentRenderForLane(current2, attemptHydrationAtLane);\n                  scheduleUpdateOnFiber(root2, current2, attemptHydrationAtLane, eventTime);\n                }\n              }\n              renderDidSuspendDelayIfPossible();\n              var _capturedValue = createCapturedValue(new Error(\"This Suspense boundary received an update before it finished hydrating. This caused the boundary to switch to client rendering. The usual way to fix this is to wrap the original update in startTransition.\"));\n              return retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, _capturedValue);\n            } else if (isSuspenseInstancePending(suspenseInstance)) {\n              workInProgress2.flags |= DidCapture;\n              workInProgress2.child = current2.child;\n              var retry = retryDehydratedSuspenseBoundary.bind(null, current2);\n              registerSuspenseInstanceRetry(suspenseInstance, retry);\n              return null;\n            } else {\n              reenterHydrationStateFromDehydratedSuspenseInstance(workInProgress2, suspenseInstance, suspenseState.treeContext);\n              var primaryChildren = nextProps.children;\n              var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress2, primaryChildren);\n              primaryChildFragment.flags |= Hydrating;\n              return primaryChildFragment;\n            }\n          } else {\n            if (workInProgress2.flags & ForceClientRender) {\n              workInProgress2.flags &= ~ForceClientRender;\n              var _capturedValue2 = createCapturedValue(new Error(\"There was an error while hydrating this Suspense boundary. Switched to client rendering.\"));\n              return retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, _capturedValue2);\n            } else if (workInProgress2.memoizedState !== null) {\n              workInProgress2.child = current2.child;\n              workInProgress2.flags |= DidCapture;\n              return null;\n            } else {\n              var nextPrimaryChildren = nextProps.children;\n              var nextFallbackChildren = nextProps.fallback;\n              var fallbackChildFragment = mountSuspenseFallbackAfterRetryWithoutHydrating(current2, workInProgress2, nextPrimaryChildren, nextFallbackChildren, renderLanes2);\n              var _primaryChildFragment4 = workInProgress2.child;\n              _primaryChildFragment4.memoizedState = mountSuspenseOffscreenState(renderLanes2);\n              workInProgress2.memoizedState = SUSPENDED_MARKER;\n              return fallbackChildFragment;\n            }\n          }\n        }\n        function scheduleSuspenseWorkOnFiber(fiber, renderLanes2, propagationRoot) {\n          fiber.lanes = mergeLanes(fiber.lanes, renderLanes2);\n          var alternate = fiber.alternate;\n          if (alternate !== null) {\n            alternate.lanes = mergeLanes(alternate.lanes, renderLanes2);\n          }\n          scheduleContextWorkOnParentPath(fiber.return, renderLanes2, propagationRoot);\n        }\n        function propagateSuspenseContextChange(workInProgress2, firstChild, renderLanes2) {\n          var node = firstChild;\n          while (node !== null) {\n            if (node.tag === SuspenseComponent) {\n              var state = node.memoizedState;\n              if (state !== null) {\n                scheduleSuspenseWorkOnFiber(node, renderLanes2, workInProgress2);\n              }\n            } else if (node.tag === SuspenseListComponent) {\n              scheduleSuspenseWorkOnFiber(node, renderLanes2, workInProgress2);\n            } else if (node.child !== null) {\n              node.child.return = node;\n              node = node.child;\n              continue;\n            }\n            if (node === workInProgress2) {\n              return;\n            }\n            while (node.sibling === null) {\n              if (node.return === null || node.return === workInProgress2) {\n                return;\n              }\n              node = node.return;\n            }\n            node.sibling.return = node.return;\n            node = node.sibling;\n          }\n        }\n        function findLastContentRow(firstChild) {\n          var row = firstChild;\n          var lastContentRow = null;\n          while (row !== null) {\n            var currentRow = row.alternate;\n            if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n              lastContentRow = row;\n            }\n            row = row.sibling;\n          }\n          return lastContentRow;\n        }\n        function validateRevealOrder(revealOrder) {\n          {\n            if (revealOrder !== void 0 && revealOrder !== \"forwards\" && revealOrder !== \"backwards\" && revealOrder !== \"together\" && !didWarnAboutRevealOrder[revealOrder]) {\n              didWarnAboutRevealOrder[revealOrder] = true;\n              if (typeof revealOrder === \"string\") {\n                switch (revealOrder.toLowerCase()) {\n                  case \"together\":\n                  case \"forwards\":\n                  case \"backwards\": {\n                    error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. Use lowercase \"%s\" instead.', revealOrder, revealOrder.toLowerCase());\n                    break;\n                  }\n                  case \"forward\":\n                  case \"backward\": {\n                    error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. React uses the -s suffix in the spelling. Use \"%ss\" instead.', revealOrder, revealOrder.toLowerCase());\n                    break;\n                  }\n                  default:\n                    error('\"%s\" is not a supported revealOrder on <SuspenseList />. Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n                    break;\n                }\n              } else {\n                error('%s is not a supported value for revealOrder on <SuspenseList />. Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n              }\n            }\n          }\n        }\n        function validateTailOptions(tailMode, revealOrder) {\n          {\n            if (tailMode !== void 0 && !didWarnAboutTailOptions[tailMode]) {\n              if (tailMode !== \"collapsed\" && tailMode !== \"hidden\") {\n                didWarnAboutTailOptions[tailMode] = true;\n                error('\"%s\" is not a supported value for tail on <SuspenseList />. Did you mean \"collapsed\" or \"hidden\"?', tailMode);\n              } else if (revealOrder !== \"forwards\" && revealOrder !== \"backwards\") {\n                didWarnAboutTailOptions[tailMode] = true;\n                error('<SuspenseList tail=\"%s\" /> is only valid if revealOrder is \"forwards\" or \"backwards\". Did you mean to specify revealOrder=\"forwards\"?', tailMode);\n              }\n            }\n          }\n        }\n        function validateSuspenseListNestedChild(childSlot, index2) {\n          {\n            var isAnArray = isArray(childSlot);\n            var isIterable = !isAnArray && typeof getIteratorFn(childSlot) === \"function\";\n            if (isAnArray || isIterable) {\n              var type = isAnArray ? \"array\" : \"iterable\";\n              error(\"A nested %s was passed to row #%s in <SuspenseList />. Wrap it in an additional SuspenseList to configure its revealOrder: <SuspenseList revealOrder=...> ... <SuspenseList revealOrder=...>{%s}</SuspenseList> ... </SuspenseList>\", type, index2, type);\n              return false;\n            }\n          }\n          return true;\n        }\n        function validateSuspenseListChildren(children, revealOrder) {\n          {\n            if ((revealOrder === \"forwards\" || revealOrder === \"backwards\") && children !== void 0 && children !== null && children !== false) {\n              if (isArray(children)) {\n                for (var i = 0; i < children.length; i++) {\n                  if (!validateSuspenseListNestedChild(children[i], i)) {\n                    return;\n                  }\n                }\n              } else {\n                var iteratorFn = getIteratorFn(children);\n                if (typeof iteratorFn === \"function\") {\n                  var childrenIterator = iteratorFn.call(children);\n                  if (childrenIterator) {\n                    var step = childrenIterator.next();\n                    var _i = 0;\n                    for (; !step.done; step = childrenIterator.next()) {\n                      if (!validateSuspenseListNestedChild(step.value, _i)) {\n                        return;\n                      }\n                      _i++;\n                    }\n                  }\n                } else {\n                  error('A single row was passed to a <SuspenseList revealOrder=\"%s\" />. This is not useful since it needs multiple rows. Did you mean to pass multiple children or an array?', revealOrder);\n                }\n              }\n            }\n          }\n        }\n        function initSuspenseListRenderState(workInProgress2, isBackwards, tail, lastContentRow, tailMode) {\n          var renderState = workInProgress2.memoizedState;\n          if (renderState === null) {\n            workInProgress2.memoizedState = {\n              isBackwards,\n              rendering: null,\n              renderingStartTime: 0,\n              last: lastContentRow,\n              tail,\n              tailMode\n            };\n          } else {\n            renderState.isBackwards = isBackwards;\n            renderState.rendering = null;\n            renderState.renderingStartTime = 0;\n            renderState.last = lastContentRow;\n            renderState.tail = tail;\n            renderState.tailMode = tailMode;\n          }\n        }\n        function updateSuspenseListComponent(current2, workInProgress2, renderLanes2) {\n          var nextProps = workInProgress2.pendingProps;\n          var revealOrder = nextProps.revealOrder;\n          var tailMode = nextProps.tail;\n          var newChildren = nextProps.children;\n          validateRevealOrder(revealOrder);\n          validateTailOptions(tailMode, revealOrder);\n          validateSuspenseListChildren(newChildren, revealOrder);\n          reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);\n          var suspenseContext = suspenseStackCursor.current;\n          var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n          if (shouldForceFallback) {\n            suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n            workInProgress2.flags |= DidCapture;\n          } else {\n            var didSuspendBefore = current2 !== null && (current2.flags & DidCapture) !== NoFlags;\n            if (didSuspendBefore) {\n              propagateSuspenseContextChange(workInProgress2, workInProgress2.child, renderLanes2);\n            }\n            suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n          }\n          pushSuspenseContext(workInProgress2, suspenseContext);\n          if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n            workInProgress2.memoizedState = null;\n          } else {\n            switch (revealOrder) {\n              case \"forwards\": {\n                var lastContentRow = findLastContentRow(workInProgress2.child);\n                var tail;\n                if (lastContentRow === null) {\n                  tail = workInProgress2.child;\n                  workInProgress2.child = null;\n                } else {\n                  tail = lastContentRow.sibling;\n                  lastContentRow.sibling = null;\n                }\n                initSuspenseListRenderState(\n                  workInProgress2,\n                  false,\n                  // isBackwards\n                  tail,\n                  lastContentRow,\n                  tailMode\n                );\n                break;\n              }\n              case \"backwards\": {\n                var _tail = null;\n                var row = workInProgress2.child;\n                workInProgress2.child = null;\n                while (row !== null) {\n                  var currentRow = row.alternate;\n                  if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n                    workInProgress2.child = row;\n                    break;\n                  }\n                  var nextRow = row.sibling;\n                  row.sibling = _tail;\n                  _tail = row;\n                  row = nextRow;\n                }\n                initSuspenseListRenderState(\n                  workInProgress2,\n                  true,\n                  // isBackwards\n                  _tail,\n                  null,\n                  // last\n                  tailMode\n                );\n                break;\n              }\n              case \"together\": {\n                initSuspenseListRenderState(\n                  workInProgress2,\n                  false,\n                  // isBackwards\n                  null,\n                  // tail\n                  null,\n                  // last\n                  void 0\n                );\n                break;\n              }\n              default: {\n                workInProgress2.memoizedState = null;\n              }\n            }\n          }\n          return workInProgress2.child;\n        }\n        function updatePortalComponent(current2, workInProgress2, renderLanes2) {\n          pushHostContainer(workInProgress2, workInProgress2.stateNode.containerInfo);\n          var nextChildren = workInProgress2.pendingProps;\n          if (current2 === null) {\n            workInProgress2.child = reconcileChildFibers(workInProgress2, null, nextChildren, renderLanes2);\n          } else {\n            reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          }\n          return workInProgress2.child;\n        }\n        var hasWarnedAboutUsingNoValuePropOnContextProvider = false;\n        function updateContextProvider(current2, workInProgress2, renderLanes2) {\n          var providerType = workInProgress2.type;\n          var context = providerType._context;\n          var newProps = workInProgress2.pendingProps;\n          var oldProps = workInProgress2.memoizedProps;\n          var newValue = newProps.value;\n          {\n            if (!(\"value\" in newProps)) {\n              if (!hasWarnedAboutUsingNoValuePropOnContextProvider) {\n                hasWarnedAboutUsingNoValuePropOnContextProvider = true;\n                error(\"The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?\");\n              }\n            }\n            var providerPropTypes = workInProgress2.type.propTypes;\n            if (providerPropTypes) {\n              checkPropTypes(providerPropTypes, newProps, \"prop\", \"Context.Provider\");\n            }\n          }\n          pushProvider(workInProgress2, context, newValue);\n          {\n            if (oldProps !== null) {\n              var oldValue = oldProps.value;\n              if (objectIs(oldValue, newValue)) {\n                if (oldProps.children === newProps.children && !hasContextChanged()) {\n                  return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n                }\n              } else {\n                propagateContextChange(workInProgress2, context, renderLanes2);\n              }\n            }\n          }\n          var newChildren = newProps.children;\n          reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        var hasWarnedAboutUsingContextAsConsumer = false;\n        function updateContextConsumer(current2, workInProgress2, renderLanes2) {\n          var context = workInProgress2.type;\n          {\n            if (context._context === void 0) {\n              if (context !== context.Consumer) {\n                if (!hasWarnedAboutUsingContextAsConsumer) {\n                  hasWarnedAboutUsingContextAsConsumer = true;\n                  error(\"Rendering <Context> directly is not supported and will be removed in a future major release. Did you mean to render <Context.Consumer> instead?\");\n                }\n              }\n            } else {\n              context = context._context;\n            }\n          }\n          var newProps = workInProgress2.pendingProps;\n          var render2 = newProps.children;\n          {\n            if (typeof render2 !== \"function\") {\n              error(\"A context consumer was rendered with multiple children, or a child that isn't a function. A context consumer expects a single child that is a function. If you did pass a function, make sure there is no trailing or leading whitespace around it.\");\n            }\n          }\n          prepareToReadContext(workInProgress2, renderLanes2);\n          var newValue = readContext(context);\n          {\n            markComponentRenderStarted(workInProgress2);\n          }\n          var newChildren;\n          {\n            ReactCurrentOwner$1.current = workInProgress2;\n            setIsRendering(true);\n            newChildren = render2(newValue);\n            setIsRendering(false);\n          }\n          {\n            markComponentRenderStopped();\n          }\n          workInProgress2.flags |= PerformedWork;\n          reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n        function markWorkInProgressReceivedUpdate() {\n          didReceiveUpdate = true;\n        }\n        function resetSuspendedCurrentOnMountInLegacyMode(current2, workInProgress2) {\n          if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n            if (current2 !== null) {\n              current2.alternate = null;\n              workInProgress2.alternate = null;\n              workInProgress2.flags |= Placement;\n            }\n          }\n        }\n        function bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2) {\n          if (current2 !== null) {\n            workInProgress2.dependencies = current2.dependencies;\n          }\n          {\n            stopProfilerTimerIfRunning();\n          }\n          markSkippedUpdateLanes(workInProgress2.lanes);\n          if (!includesSomeLane(renderLanes2, workInProgress2.childLanes)) {\n            {\n              return null;\n            }\n          }\n          cloneChildFibers(current2, workInProgress2);\n          return workInProgress2.child;\n        }\n        function remountFiber(current2, oldWorkInProgress, newWorkInProgress) {\n          {\n            var returnFiber = oldWorkInProgress.return;\n            if (returnFiber === null) {\n              throw new Error(\"Cannot swap the root fiber.\");\n            }\n            current2.alternate = null;\n            oldWorkInProgress.alternate = null;\n            newWorkInProgress.index = oldWorkInProgress.index;\n            newWorkInProgress.sibling = oldWorkInProgress.sibling;\n            newWorkInProgress.return = oldWorkInProgress.return;\n            newWorkInProgress.ref = oldWorkInProgress.ref;\n            if (oldWorkInProgress === returnFiber.child) {\n              returnFiber.child = newWorkInProgress;\n            } else {\n              var prevSibling = returnFiber.child;\n              if (prevSibling === null) {\n                throw new Error(\"Expected parent to have a child.\");\n              }\n              while (prevSibling.sibling !== oldWorkInProgress) {\n                prevSibling = prevSibling.sibling;\n                if (prevSibling === null) {\n                  throw new Error(\"Expected to find the previous sibling.\");\n                }\n              }\n              prevSibling.sibling = newWorkInProgress;\n            }\n            var deletions = returnFiber.deletions;\n            if (deletions === null) {\n              returnFiber.deletions = [current2];\n              returnFiber.flags |= ChildDeletion;\n            } else {\n              deletions.push(current2);\n            }\n            newWorkInProgress.flags |= Placement;\n            return newWorkInProgress;\n          }\n        }\n        function checkScheduledUpdateOrContext(current2, renderLanes2) {\n          var updateLanes = current2.lanes;\n          if (includesSomeLane(updateLanes, renderLanes2)) {\n            return true;\n          }\n          return false;\n        }\n        function attemptEarlyBailoutIfNoScheduledUpdate(current2, workInProgress2, renderLanes2) {\n          switch (workInProgress2.tag) {\n            case HostRoot:\n              pushHostRootContext(workInProgress2);\n              var root2 = workInProgress2.stateNode;\n              resetHydrationState();\n              break;\n            case HostComponent:\n              pushHostContext(workInProgress2);\n              break;\n            case ClassComponent: {\n              var Component = workInProgress2.type;\n              if (isContextProvider(Component)) {\n                pushContextProvider(workInProgress2);\n              }\n              break;\n            }\n            case HostPortal:\n              pushHostContainer(workInProgress2, workInProgress2.stateNode.containerInfo);\n              break;\n            case ContextProvider: {\n              var newValue = workInProgress2.memoizedProps.value;\n              var context = workInProgress2.type._context;\n              pushProvider(workInProgress2, context, newValue);\n              break;\n            }\n            case Profiler:\n              {\n                var hasChildWork = includesSomeLane(renderLanes2, workInProgress2.childLanes);\n                if (hasChildWork) {\n                  workInProgress2.flags |= Update;\n                }\n                {\n                  var stateNode = workInProgress2.stateNode;\n                  stateNode.effectDuration = 0;\n                  stateNode.passiveEffectDuration = 0;\n                }\n              }\n              break;\n            case SuspenseComponent: {\n              var state = workInProgress2.memoizedState;\n              if (state !== null) {\n                if (state.dehydrated !== null) {\n                  pushSuspenseContext(workInProgress2, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n                  workInProgress2.flags |= DidCapture;\n                  return null;\n                }\n                var primaryChildFragment = workInProgress2.child;\n                var primaryChildLanes = primaryChildFragment.childLanes;\n                if (includesSomeLane(renderLanes2, primaryChildLanes)) {\n                  return updateSuspenseComponent(current2, workInProgress2, renderLanes2);\n                } else {\n                  pushSuspenseContext(workInProgress2, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n                  var child = bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n                  if (child !== null) {\n                    return child.sibling;\n                  } else {\n                    return null;\n                  }\n                }\n              } else {\n                pushSuspenseContext(workInProgress2, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n              }\n              break;\n            }\n            case SuspenseListComponent: {\n              var didSuspendBefore = (current2.flags & DidCapture) !== NoFlags;\n              var _hasChildWork = includesSomeLane(renderLanes2, workInProgress2.childLanes);\n              if (didSuspendBefore) {\n                if (_hasChildWork) {\n                  return updateSuspenseListComponent(current2, workInProgress2, renderLanes2);\n                }\n                workInProgress2.flags |= DidCapture;\n              }\n              var renderState = workInProgress2.memoizedState;\n              if (renderState !== null) {\n                renderState.rendering = null;\n                renderState.tail = null;\n                renderState.lastEffect = null;\n              }\n              pushSuspenseContext(workInProgress2, suspenseStackCursor.current);\n              if (_hasChildWork) {\n                break;\n              } else {\n                return null;\n              }\n            }\n            case OffscreenComponent:\n            case LegacyHiddenComponent: {\n              workInProgress2.lanes = NoLanes;\n              return updateOffscreenComponent(current2, workInProgress2, renderLanes2);\n            }\n          }\n          return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n        }\n        function beginWork(current2, workInProgress2, renderLanes2) {\n          {\n            if (workInProgress2._debugNeedsRemount && current2 !== null) {\n              return remountFiber(current2, workInProgress2, createFiberFromTypeAndProps(workInProgress2.type, workInProgress2.key, workInProgress2.pendingProps, workInProgress2._debugOwner || null, workInProgress2.mode, workInProgress2.lanes));\n            }\n          }\n          if (current2 !== null) {\n            var oldProps = current2.memoizedProps;\n            var newProps = workInProgress2.pendingProps;\n            if (oldProps !== newProps || hasContextChanged() || // Force a re-render if the implementation changed due to hot reload:\n            workInProgress2.type !== current2.type) {\n              didReceiveUpdate = true;\n            } else {\n              var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current2, renderLanes2);\n              if (!hasScheduledUpdateOrContext && // If this is the second pass of an error or suspense boundary, there\n              // may not be work scheduled on `current`, so we check for this flag.\n              (workInProgress2.flags & DidCapture) === NoFlags) {\n                didReceiveUpdate = false;\n                return attemptEarlyBailoutIfNoScheduledUpdate(current2, workInProgress2, renderLanes2);\n              }\n              if ((current2.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n                didReceiveUpdate = true;\n              } else {\n                didReceiveUpdate = false;\n              }\n            }\n          } else {\n            didReceiveUpdate = false;\n            if (getIsHydrating() && isForkedChild(workInProgress2)) {\n              var slotIndex = workInProgress2.index;\n              var numberOfForks = getForksAtLevel();\n              pushTreeId(workInProgress2, numberOfForks, slotIndex);\n            }\n          }\n          workInProgress2.lanes = NoLanes;\n          switch (workInProgress2.tag) {\n            case IndeterminateComponent: {\n              return mountIndeterminateComponent(current2, workInProgress2, workInProgress2.type, renderLanes2);\n            }\n            case LazyComponent: {\n              var elementType = workInProgress2.elementType;\n              return mountLazyComponent(current2, workInProgress2, elementType, renderLanes2);\n            }\n            case FunctionComponent: {\n              var Component = workInProgress2.type;\n              var unresolvedProps = workInProgress2.pendingProps;\n              var resolvedProps = workInProgress2.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n              return updateFunctionComponent(current2, workInProgress2, Component, resolvedProps, renderLanes2);\n            }\n            case ClassComponent: {\n              var _Component = workInProgress2.type;\n              var _unresolvedProps = workInProgress2.pendingProps;\n              var _resolvedProps = workInProgress2.elementType === _Component ? _unresolvedProps : resolveDefaultProps(_Component, _unresolvedProps);\n              return updateClassComponent(current2, workInProgress2, _Component, _resolvedProps, renderLanes2);\n            }\n            case HostRoot:\n              return updateHostRoot(current2, workInProgress2, renderLanes2);\n            case HostComponent:\n              return updateHostComponent(current2, workInProgress2, renderLanes2);\n            case HostText:\n              return updateHostText(current2, workInProgress2);\n            case SuspenseComponent:\n              return updateSuspenseComponent(current2, workInProgress2, renderLanes2);\n            case HostPortal:\n              return updatePortalComponent(current2, workInProgress2, renderLanes2);\n            case ForwardRef: {\n              var type = workInProgress2.type;\n              var _unresolvedProps2 = workInProgress2.pendingProps;\n              var _resolvedProps2 = workInProgress2.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);\n              return updateForwardRef(current2, workInProgress2, type, _resolvedProps2, renderLanes2);\n            }\n            case Fragment:\n              return updateFragment(current2, workInProgress2, renderLanes2);\n            case Mode:\n              return updateMode(current2, workInProgress2, renderLanes2);\n            case Profiler:\n              return updateProfiler(current2, workInProgress2, renderLanes2);\n            case ContextProvider:\n              return updateContextProvider(current2, workInProgress2, renderLanes2);\n            case ContextConsumer:\n              return updateContextConsumer(current2, workInProgress2, renderLanes2);\n            case MemoComponent: {\n              var _type2 = workInProgress2.type;\n              var _unresolvedProps3 = workInProgress2.pendingProps;\n              var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3);\n              {\n                if (workInProgress2.type !== workInProgress2.elementType) {\n                  var outerPropTypes = _type2.propTypes;\n                  if (outerPropTypes) {\n                    checkPropTypes(\n                      outerPropTypes,\n                      _resolvedProps3,\n                      // Resolved for outer only\n                      \"prop\",\n                      getComponentNameFromType(_type2)\n                    );\n                  }\n                }\n              }\n              _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3);\n              return updateMemoComponent(current2, workInProgress2, _type2, _resolvedProps3, renderLanes2);\n            }\n            case SimpleMemoComponent: {\n              return updateSimpleMemoComponent(current2, workInProgress2, workInProgress2.type, workInProgress2.pendingProps, renderLanes2);\n            }\n            case IncompleteClassComponent: {\n              var _Component2 = workInProgress2.type;\n              var _unresolvedProps4 = workInProgress2.pendingProps;\n              var _resolvedProps4 = workInProgress2.elementType === _Component2 ? _unresolvedProps4 : resolveDefaultProps(_Component2, _unresolvedProps4);\n              return mountIncompleteClassComponent(current2, workInProgress2, _Component2, _resolvedProps4, renderLanes2);\n            }\n            case SuspenseListComponent: {\n              return updateSuspenseListComponent(current2, workInProgress2, renderLanes2);\n            }\n            case ScopeComponent: {\n              break;\n            }\n            case OffscreenComponent: {\n              return updateOffscreenComponent(current2, workInProgress2, renderLanes2);\n            }\n          }\n          throw new Error(\"Unknown unit of work tag (\" + workInProgress2.tag + \"). This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        function markUpdate(workInProgress2) {\n          workInProgress2.flags |= Update;\n        }\n        function markRef$1(workInProgress2) {\n          workInProgress2.flags |= Ref;\n          {\n            workInProgress2.flags |= RefStatic;\n          }\n        }\n        var appendAllChildren;\n        var updateHostContainer;\n        var updateHostComponent$1;\n        var updateHostText$1;\n        {\n          appendAllChildren = function(parent, workInProgress2, needsVisibilityToggle, isHidden) {\n            var node = workInProgress2.child;\n            while (node !== null) {\n              if (node.tag === HostComponent || node.tag === HostText) {\n                appendInitialChild(parent, node.stateNode);\n              } else if (node.tag === HostPortal)\n                ;\n              else if (node.child !== null) {\n                node.child.return = node;\n                node = node.child;\n                continue;\n              }\n              if (node === workInProgress2) {\n                return;\n              }\n              while (node.sibling === null) {\n                if (node.return === null || node.return === workInProgress2) {\n                  return;\n                }\n                node = node.return;\n              }\n              node.sibling.return = node.return;\n              node = node.sibling;\n            }\n          };\n          updateHostContainer = function(current2, workInProgress2) {\n          };\n          updateHostComponent$1 = function(current2, workInProgress2, type, newProps, rootContainerInstance) {\n            var oldProps = current2.memoizedProps;\n            if (oldProps === newProps) {\n              return;\n            }\n            var instance = workInProgress2.stateNode;\n            var currentHostContext = getHostContext();\n            var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext);\n            workInProgress2.updateQueue = updatePayload;\n            if (updatePayload) {\n              markUpdate(workInProgress2);\n            }\n          };\n          updateHostText$1 = function(current2, workInProgress2, oldText, newText) {\n            if (oldText !== newText) {\n              markUpdate(workInProgress2);\n            }\n          };\n        }\n        function cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n          if (getIsHydrating()) {\n            return;\n          }\n          switch (renderState.tailMode) {\n            case \"hidden\": {\n              var tailNode = renderState.tail;\n              var lastTailNode = null;\n              while (tailNode !== null) {\n                if (tailNode.alternate !== null) {\n                  lastTailNode = tailNode;\n                }\n                tailNode = tailNode.sibling;\n              }\n              if (lastTailNode === null) {\n                renderState.tail = null;\n              } else {\n                lastTailNode.sibling = null;\n              }\n              break;\n            }\n            case \"collapsed\": {\n              var _tailNode = renderState.tail;\n              var _lastTailNode = null;\n              while (_tailNode !== null) {\n                if (_tailNode.alternate !== null) {\n                  _lastTailNode = _tailNode;\n                }\n                _tailNode = _tailNode.sibling;\n              }\n              if (_lastTailNode === null) {\n                if (!hasRenderedATailFallback && renderState.tail !== null) {\n                  renderState.tail.sibling = null;\n                } else {\n                  renderState.tail = null;\n                }\n              } else {\n                _lastTailNode.sibling = null;\n              }\n              break;\n            }\n          }\n        }\n        function bubbleProperties(completedWork) {\n          var didBailout = completedWork.alternate !== null && completedWork.alternate.child === completedWork.child;\n          var newChildLanes = NoLanes;\n          var subtreeFlags = NoFlags;\n          if (!didBailout) {\n            if ((completedWork.mode & ProfileMode) !== NoMode) {\n              var actualDuration = completedWork.actualDuration;\n              var treeBaseDuration = completedWork.selfBaseDuration;\n              var child = completedWork.child;\n              while (child !== null) {\n                newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes));\n                subtreeFlags |= child.subtreeFlags;\n                subtreeFlags |= child.flags;\n                actualDuration += child.actualDuration;\n                treeBaseDuration += child.treeBaseDuration;\n                child = child.sibling;\n              }\n              completedWork.actualDuration = actualDuration;\n              completedWork.treeBaseDuration = treeBaseDuration;\n            } else {\n              var _child = completedWork.child;\n              while (_child !== null) {\n                newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child.lanes, _child.childLanes));\n                subtreeFlags |= _child.subtreeFlags;\n                subtreeFlags |= _child.flags;\n                _child.return = completedWork;\n                _child = _child.sibling;\n              }\n            }\n            completedWork.subtreeFlags |= subtreeFlags;\n          } else {\n            if ((completedWork.mode & ProfileMode) !== NoMode) {\n              var _treeBaseDuration = completedWork.selfBaseDuration;\n              var _child2 = completedWork.child;\n              while (_child2 !== null) {\n                newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child2.lanes, _child2.childLanes));\n                subtreeFlags |= _child2.subtreeFlags & StaticMask;\n                subtreeFlags |= _child2.flags & StaticMask;\n                _treeBaseDuration += _child2.treeBaseDuration;\n                _child2 = _child2.sibling;\n              }\n              completedWork.treeBaseDuration = _treeBaseDuration;\n            } else {\n              var _child3 = completedWork.child;\n              while (_child3 !== null) {\n                newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child3.lanes, _child3.childLanes));\n                subtreeFlags |= _child3.subtreeFlags & StaticMask;\n                subtreeFlags |= _child3.flags & StaticMask;\n                _child3.return = completedWork;\n                _child3 = _child3.sibling;\n              }\n            }\n            completedWork.subtreeFlags |= subtreeFlags;\n          }\n          completedWork.childLanes = newChildLanes;\n          return didBailout;\n        }\n        function completeDehydratedSuspenseBoundary(current2, workInProgress2, nextState) {\n          if (hasUnhydratedTailNodes() && (workInProgress2.mode & ConcurrentMode) !== NoMode && (workInProgress2.flags & DidCapture) === NoFlags) {\n            warnIfUnhydratedTailNodes(workInProgress2);\n            resetHydrationState();\n            workInProgress2.flags |= ForceClientRender | Incomplete | ShouldCapture;\n            return false;\n          }\n          var wasHydrated = popHydrationState(workInProgress2);\n          if (nextState !== null && nextState.dehydrated !== null) {\n            if (current2 === null) {\n              if (!wasHydrated) {\n                throw new Error(\"A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.\");\n              }\n              prepareToHydrateHostSuspenseInstance(workInProgress2);\n              bubbleProperties(workInProgress2);\n              {\n                if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                  var isTimedOutSuspense = nextState !== null;\n                  if (isTimedOutSuspense) {\n                    var primaryChildFragment = workInProgress2.child;\n                    if (primaryChildFragment !== null) {\n                      workInProgress2.treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n                    }\n                  }\n                }\n              }\n              return false;\n            } else {\n              resetHydrationState();\n              if ((workInProgress2.flags & DidCapture) === NoFlags) {\n                workInProgress2.memoizedState = null;\n              }\n              workInProgress2.flags |= Update;\n              bubbleProperties(workInProgress2);\n              {\n                if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                  var _isTimedOutSuspense = nextState !== null;\n                  if (_isTimedOutSuspense) {\n                    var _primaryChildFragment = workInProgress2.child;\n                    if (_primaryChildFragment !== null) {\n                      workInProgress2.treeBaseDuration -= _primaryChildFragment.treeBaseDuration;\n                    }\n                  }\n                }\n              }\n              return false;\n            }\n          } else {\n            upgradeHydrationErrorsToRecoverable();\n            return true;\n          }\n        }\n        function completeWork(current2, workInProgress2, renderLanes2) {\n          var newProps = workInProgress2.pendingProps;\n          popTreeContext(workInProgress2);\n          switch (workInProgress2.tag) {\n            case IndeterminateComponent:\n            case LazyComponent:\n            case SimpleMemoComponent:\n            case FunctionComponent:\n            case ForwardRef:\n            case Fragment:\n            case Mode:\n            case Profiler:\n            case ContextConsumer:\n            case MemoComponent:\n              bubbleProperties(workInProgress2);\n              return null;\n            case ClassComponent: {\n              var Component = workInProgress2.type;\n              if (isContextProvider(Component)) {\n                popContext(workInProgress2);\n              }\n              bubbleProperties(workInProgress2);\n              return null;\n            }\n            case HostRoot: {\n              var fiberRoot = workInProgress2.stateNode;\n              popHostContainer(workInProgress2);\n              popTopLevelContextObject(workInProgress2);\n              resetWorkInProgressVersions();\n              if (fiberRoot.pendingContext) {\n                fiberRoot.context = fiberRoot.pendingContext;\n                fiberRoot.pendingContext = null;\n              }\n              if (current2 === null || current2.child === null) {\n                var wasHydrated = popHydrationState(workInProgress2);\n                if (wasHydrated) {\n                  markUpdate(workInProgress2);\n                } else {\n                  if (current2 !== null) {\n                    var prevState = current2.memoizedState;\n                    if (\n                      // Check if this is a client root\n                      !prevState.isDehydrated || // Check if we reverted to client rendering (e.g. due to an error)\n                      (workInProgress2.flags & ForceClientRender) !== NoFlags\n                    ) {\n                      workInProgress2.flags |= Snapshot;\n                      upgradeHydrationErrorsToRecoverable();\n                    }\n                  }\n                }\n              }\n              updateHostContainer(current2, workInProgress2);\n              bubbleProperties(workInProgress2);\n              return null;\n            }\n            case HostComponent: {\n              popHostContext(workInProgress2);\n              var rootContainerInstance = getRootHostContainer();\n              var type = workInProgress2.type;\n              if (current2 !== null && workInProgress2.stateNode != null) {\n                updateHostComponent$1(current2, workInProgress2, type, newProps, rootContainerInstance);\n                if (current2.ref !== workInProgress2.ref) {\n                  markRef$1(workInProgress2);\n                }\n              } else {\n                if (!newProps) {\n                  if (workInProgress2.stateNode === null) {\n                    throw new Error(\"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\");\n                  }\n                  bubbleProperties(workInProgress2);\n                  return null;\n                }\n                var currentHostContext = getHostContext();\n                var _wasHydrated = popHydrationState(workInProgress2);\n                if (_wasHydrated) {\n                  if (prepareToHydrateHostInstance(workInProgress2, rootContainerInstance, currentHostContext)) {\n                    markUpdate(workInProgress2);\n                  }\n                } else {\n                  var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress2);\n                  appendAllChildren(instance, workInProgress2, false, false);\n                  workInProgress2.stateNode = instance;\n                  if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance)) {\n                    markUpdate(workInProgress2);\n                  }\n                }\n                if (workInProgress2.ref !== null) {\n                  markRef$1(workInProgress2);\n                }\n              }\n              bubbleProperties(workInProgress2);\n              return null;\n            }\n            case HostText: {\n              var newText = newProps;\n              if (current2 && workInProgress2.stateNode != null) {\n                var oldText = current2.memoizedProps;\n                updateHostText$1(current2, workInProgress2, oldText, newText);\n              } else {\n                if (typeof newText !== \"string\") {\n                  if (workInProgress2.stateNode === null) {\n                    throw new Error(\"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\");\n                  }\n                }\n                var _rootContainerInstance = getRootHostContainer();\n                var _currentHostContext = getHostContext();\n                var _wasHydrated2 = popHydrationState(workInProgress2);\n                if (_wasHydrated2) {\n                  if (prepareToHydrateHostTextInstance(workInProgress2)) {\n                    markUpdate(workInProgress2);\n                  }\n                } else {\n                  workInProgress2.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress2);\n                }\n              }\n              bubbleProperties(workInProgress2);\n              return null;\n            }\n            case SuspenseComponent: {\n              popSuspenseContext(workInProgress2);\n              var nextState = workInProgress2.memoizedState;\n              if (current2 === null || current2.memoizedState !== null && current2.memoizedState.dehydrated !== null) {\n                var fallthroughToNormalSuspensePath = completeDehydratedSuspenseBoundary(current2, workInProgress2, nextState);\n                if (!fallthroughToNormalSuspensePath) {\n                  if (workInProgress2.flags & ShouldCapture) {\n                    return workInProgress2;\n                  } else {\n                    return null;\n                  }\n                }\n              }\n              if ((workInProgress2.flags & DidCapture) !== NoFlags) {\n                workInProgress2.lanes = renderLanes2;\n                if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                  transferActualDuration(workInProgress2);\n                }\n                return workInProgress2;\n              }\n              var nextDidTimeout = nextState !== null;\n              var prevDidTimeout = current2 !== null && current2.memoizedState !== null;\n              if (nextDidTimeout !== prevDidTimeout) {\n                if (nextDidTimeout) {\n                  var _offscreenFiber2 = workInProgress2.child;\n                  _offscreenFiber2.flags |= Visibility;\n                  if ((workInProgress2.mode & ConcurrentMode) !== NoMode) {\n                    var hasInvisibleChildContext = current2 === null && (workInProgress2.memoizedProps.unstable_avoidThisFallback !== true || !enableSuspenseAvoidThisFallback);\n                    if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) {\n                      renderDidSuspend();\n                    } else {\n                      renderDidSuspendDelayIfPossible();\n                    }\n                  }\n                }\n              }\n              var wakeables = workInProgress2.updateQueue;\n              if (wakeables !== null) {\n                workInProgress2.flags |= Update;\n              }\n              bubbleProperties(workInProgress2);\n              {\n                if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                  if (nextDidTimeout) {\n                    var primaryChildFragment = workInProgress2.child;\n                    if (primaryChildFragment !== null) {\n                      workInProgress2.treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n                    }\n                  }\n                }\n              }\n              return null;\n            }\n            case HostPortal:\n              popHostContainer(workInProgress2);\n              updateHostContainer(current2, workInProgress2);\n              if (current2 === null) {\n                preparePortalMount(workInProgress2.stateNode.containerInfo);\n              }\n              bubbleProperties(workInProgress2);\n              return null;\n            case ContextProvider:\n              var context = workInProgress2.type._context;\n              popProvider(context, workInProgress2);\n              bubbleProperties(workInProgress2);\n              return null;\n            case IncompleteClassComponent: {\n              var _Component = workInProgress2.type;\n              if (isContextProvider(_Component)) {\n                popContext(workInProgress2);\n              }\n              bubbleProperties(workInProgress2);\n              return null;\n            }\n            case SuspenseListComponent: {\n              popSuspenseContext(workInProgress2);\n              var renderState = workInProgress2.memoizedState;\n              if (renderState === null) {\n                bubbleProperties(workInProgress2);\n                return null;\n              }\n              var didSuspendAlready = (workInProgress2.flags & DidCapture) !== NoFlags;\n              var renderedTail = renderState.rendering;\n              if (renderedTail === null) {\n                if (!didSuspendAlready) {\n                  var cannotBeSuspended = renderHasNotSuspendedYet() && (current2 === null || (current2.flags & DidCapture) === NoFlags);\n                  if (!cannotBeSuspended) {\n                    var row = workInProgress2.child;\n                    while (row !== null) {\n                      var suspended = findFirstSuspended(row);\n                      if (suspended !== null) {\n                        didSuspendAlready = true;\n                        workInProgress2.flags |= DidCapture;\n                        cutOffTailIfNeeded(renderState, false);\n                        var newThenables = suspended.updateQueue;\n                        if (newThenables !== null) {\n                          workInProgress2.updateQueue = newThenables;\n                          workInProgress2.flags |= Update;\n                        }\n                        workInProgress2.subtreeFlags = NoFlags;\n                        resetChildFibers(workInProgress2, renderLanes2);\n                        pushSuspenseContext(workInProgress2, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback));\n                        return workInProgress2.child;\n                      }\n                      row = row.sibling;\n                    }\n                  }\n                  if (renderState.tail !== null && now() > getRenderTargetTime()) {\n                    workInProgress2.flags |= DidCapture;\n                    didSuspendAlready = true;\n                    cutOffTailIfNeeded(renderState, false);\n                    workInProgress2.lanes = SomeRetryLane;\n                  }\n                } else {\n                  cutOffTailIfNeeded(renderState, false);\n                }\n              } else {\n                if (!didSuspendAlready) {\n                  var _suspended = findFirstSuspended(renderedTail);\n                  if (_suspended !== null) {\n                    workInProgress2.flags |= DidCapture;\n                    didSuspendAlready = true;\n                    var _newThenables = _suspended.updateQueue;\n                    if (_newThenables !== null) {\n                      workInProgress2.updateQueue = _newThenables;\n                      workInProgress2.flags |= Update;\n                    }\n                    cutOffTailIfNeeded(renderState, true);\n                    if (renderState.tail === null && renderState.tailMode === \"hidden\" && !renderedTail.alternate && !getIsHydrating()) {\n                      bubbleProperties(workInProgress2);\n                      return null;\n                    }\n                  } else if (\n                    // The time it took to render last row is greater than the remaining\n                    // time we have to render. So rendering one more row would likely\n                    // exceed it.\n                    now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes2 !== OffscreenLane\n                  ) {\n                    workInProgress2.flags |= DidCapture;\n                    didSuspendAlready = true;\n                    cutOffTailIfNeeded(renderState, false);\n                    workInProgress2.lanes = SomeRetryLane;\n                  }\n                }\n                if (renderState.isBackwards) {\n                  renderedTail.sibling = workInProgress2.child;\n                  workInProgress2.child = renderedTail;\n                } else {\n                  var previousSibling = renderState.last;\n                  if (previousSibling !== null) {\n                    previousSibling.sibling = renderedTail;\n                  } else {\n                    workInProgress2.child = renderedTail;\n                  }\n                  renderState.last = renderedTail;\n                }\n              }\n              if (renderState.tail !== null) {\n                var next = renderState.tail;\n                renderState.rendering = next;\n                renderState.tail = next.sibling;\n                renderState.renderingStartTime = now();\n                next.sibling = null;\n                var suspenseContext = suspenseStackCursor.current;\n                if (didSuspendAlready) {\n                  suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n                } else {\n                  suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n                }\n                pushSuspenseContext(workInProgress2, suspenseContext);\n                return next;\n              }\n              bubbleProperties(workInProgress2);\n              return null;\n            }\n            case ScopeComponent: {\n              break;\n            }\n            case OffscreenComponent:\n            case LegacyHiddenComponent: {\n              popRenderLanes(workInProgress2);\n              var _nextState = workInProgress2.memoizedState;\n              var nextIsHidden = _nextState !== null;\n              if (current2 !== null) {\n                var _prevState = current2.memoizedState;\n                var prevIsHidden = _prevState !== null;\n                if (prevIsHidden !== nextIsHidden && // LegacyHidden doesn't do any hiding — it only pre-renders.\n                !enableLegacyHidden) {\n                  workInProgress2.flags |= Visibility;\n                }\n              }\n              if (!nextIsHidden || (workInProgress2.mode & ConcurrentMode) === NoMode) {\n                bubbleProperties(workInProgress2);\n              } else {\n                if (includesSomeLane(subtreeRenderLanes, OffscreenLane)) {\n                  bubbleProperties(workInProgress2);\n                  {\n                    if (workInProgress2.subtreeFlags & (Placement | Update)) {\n                      workInProgress2.flags |= Visibility;\n                    }\n                  }\n                }\n              }\n              return null;\n            }\n            case CacheComponent: {\n              return null;\n            }\n            case TracingMarkerComponent: {\n              return null;\n            }\n          }\n          throw new Error(\"Unknown unit of work tag (\" + workInProgress2.tag + \"). This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        function unwindWork(current2, workInProgress2, renderLanes2) {\n          popTreeContext(workInProgress2);\n          switch (workInProgress2.tag) {\n            case ClassComponent: {\n              var Component = workInProgress2.type;\n              if (isContextProvider(Component)) {\n                popContext(workInProgress2);\n              }\n              var flags = workInProgress2.flags;\n              if (flags & ShouldCapture) {\n                workInProgress2.flags = flags & ~ShouldCapture | DidCapture;\n                if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                  transferActualDuration(workInProgress2);\n                }\n                return workInProgress2;\n              }\n              return null;\n            }\n            case HostRoot: {\n              var root2 = workInProgress2.stateNode;\n              popHostContainer(workInProgress2);\n              popTopLevelContextObject(workInProgress2);\n              resetWorkInProgressVersions();\n              var _flags = workInProgress2.flags;\n              if ((_flags & ShouldCapture) !== NoFlags && (_flags & DidCapture) === NoFlags) {\n                workInProgress2.flags = _flags & ~ShouldCapture | DidCapture;\n                return workInProgress2;\n              }\n              return null;\n            }\n            case HostComponent: {\n              popHostContext(workInProgress2);\n              return null;\n            }\n            case SuspenseComponent: {\n              popSuspenseContext(workInProgress2);\n              var suspenseState = workInProgress2.memoizedState;\n              if (suspenseState !== null && suspenseState.dehydrated !== null) {\n                if (workInProgress2.alternate === null) {\n                  throw new Error(\"Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.\");\n                }\n                resetHydrationState();\n              }\n              var _flags2 = workInProgress2.flags;\n              if (_flags2 & ShouldCapture) {\n                workInProgress2.flags = _flags2 & ~ShouldCapture | DidCapture;\n                if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                  transferActualDuration(workInProgress2);\n                }\n                return workInProgress2;\n              }\n              return null;\n            }\n            case SuspenseListComponent: {\n              popSuspenseContext(workInProgress2);\n              return null;\n            }\n            case HostPortal:\n              popHostContainer(workInProgress2);\n              return null;\n            case ContextProvider:\n              var context = workInProgress2.type._context;\n              popProvider(context, workInProgress2);\n              return null;\n            case OffscreenComponent:\n            case LegacyHiddenComponent:\n              popRenderLanes(workInProgress2);\n              return null;\n            case CacheComponent:\n              return null;\n            default:\n              return null;\n          }\n        }\n        function unwindInterruptedWork(current2, interruptedWork, renderLanes2) {\n          popTreeContext(interruptedWork);\n          switch (interruptedWork.tag) {\n            case ClassComponent: {\n              var childContextTypes = interruptedWork.type.childContextTypes;\n              if (childContextTypes !== null && childContextTypes !== void 0) {\n                popContext(interruptedWork);\n              }\n              break;\n            }\n            case HostRoot: {\n              var root2 = interruptedWork.stateNode;\n              popHostContainer(interruptedWork);\n              popTopLevelContextObject(interruptedWork);\n              resetWorkInProgressVersions();\n              break;\n            }\n            case HostComponent: {\n              popHostContext(interruptedWork);\n              break;\n            }\n            case HostPortal:\n              popHostContainer(interruptedWork);\n              break;\n            case SuspenseComponent:\n              popSuspenseContext(interruptedWork);\n              break;\n            case SuspenseListComponent:\n              popSuspenseContext(interruptedWork);\n              break;\n            case ContextProvider:\n              var context = interruptedWork.type._context;\n              popProvider(context, interruptedWork);\n              break;\n            case OffscreenComponent:\n            case LegacyHiddenComponent:\n              popRenderLanes(interruptedWork);\n              break;\n          }\n        }\n        var didWarnAboutUndefinedSnapshotBeforeUpdate = null;\n        {\n          didWarnAboutUndefinedSnapshotBeforeUpdate = /* @__PURE__ */ new Set();\n        }\n        var offscreenSubtreeIsHidden = false;\n        var offscreenSubtreeWasHidden = false;\n        var PossiblyWeakSet = typeof WeakSet === \"function\" ? WeakSet : Set;\n        var nextEffect = null;\n        var inProgressLanes = null;\n        var inProgressRoot = null;\n        function reportUncaughtErrorInDEV(error2) {\n          {\n            invokeGuardedCallback(null, function() {\n              throw error2;\n            });\n            clearCaughtError();\n          }\n        }\n        var callComponentWillUnmountWithTimer = function(current2, instance) {\n          instance.props = current2.memoizedProps;\n          instance.state = current2.memoizedState;\n          if (current2.mode & ProfileMode) {\n            try {\n              startLayoutEffectTimer();\n              instance.componentWillUnmount();\n            } finally {\n              recordLayoutEffectDuration(current2);\n            }\n          } else {\n            instance.componentWillUnmount();\n          }\n        };\n        function safelyCallCommitHookLayoutEffectListMount(current2, nearestMountedAncestor) {\n          try {\n            commitHookEffectListMount(Layout, current2);\n          } catch (error2) {\n            captureCommitPhaseError(current2, nearestMountedAncestor, error2);\n          }\n        }\n        function safelyCallComponentWillUnmount(current2, nearestMountedAncestor, instance) {\n          try {\n            callComponentWillUnmountWithTimer(current2, instance);\n          } catch (error2) {\n            captureCommitPhaseError(current2, nearestMountedAncestor, error2);\n          }\n        }\n        function safelyCallComponentDidMount(current2, nearestMountedAncestor, instance) {\n          try {\n            instance.componentDidMount();\n          } catch (error2) {\n            captureCommitPhaseError(current2, nearestMountedAncestor, error2);\n          }\n        }\n        function safelyAttachRef(current2, nearestMountedAncestor) {\n          try {\n            commitAttachRef(current2);\n          } catch (error2) {\n            captureCommitPhaseError(current2, nearestMountedAncestor, error2);\n          }\n        }\n        function safelyDetachRef(current2, nearestMountedAncestor) {\n          var ref = current2.ref;\n          if (ref !== null) {\n            if (typeof ref === \"function\") {\n              var retVal;\n              try {\n                if (enableProfilerTimer && enableProfilerCommitHooks && current2.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    retVal = ref(null);\n                  } finally {\n                    recordLayoutEffectDuration(current2);\n                  }\n                } else {\n                  retVal = ref(null);\n                }\n              } catch (error2) {\n                captureCommitPhaseError(current2, nearestMountedAncestor, error2);\n              }\n              {\n                if (typeof retVal === \"function\") {\n                  error(\"Unexpected return value from a callback ref in %s. A callback ref should not return a function.\", getComponentNameFromFiber(current2));\n                }\n              }\n            } else {\n              ref.current = null;\n            }\n          }\n        }\n        function safelyCallDestroy(current2, nearestMountedAncestor, destroy) {\n          try {\n            destroy();\n          } catch (error2) {\n            captureCommitPhaseError(current2, nearestMountedAncestor, error2);\n          }\n        }\n        var focusedInstanceHandle = null;\n        var shouldFireAfterActiveInstanceBlur = false;\n        function commitBeforeMutationEffects(root2, firstChild) {\n          focusedInstanceHandle = prepareForCommit(root2.containerInfo);\n          nextEffect = firstChild;\n          commitBeforeMutationEffects_begin();\n          var shouldFire = shouldFireAfterActiveInstanceBlur;\n          shouldFireAfterActiveInstanceBlur = false;\n          focusedInstanceHandle = null;\n          return shouldFire;\n        }\n        function commitBeforeMutationEffects_begin() {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            var child = fiber.child;\n            if ((fiber.subtreeFlags & BeforeMutationMask) !== NoFlags && child !== null) {\n              child.return = fiber;\n              nextEffect = child;\n            } else {\n              commitBeforeMutationEffects_complete();\n            }\n          }\n        }\n        function commitBeforeMutationEffects_complete() {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            setCurrentFiber(fiber);\n            try {\n              commitBeforeMutationEffectsOnFiber(fiber);\n            } catch (error2) {\n              captureCommitPhaseError(fiber, fiber.return, error2);\n            }\n            resetCurrentFiber();\n            var sibling = fiber.sibling;\n            if (sibling !== null) {\n              sibling.return = fiber.return;\n              nextEffect = sibling;\n              return;\n            }\n            nextEffect = fiber.return;\n          }\n        }\n        function commitBeforeMutationEffectsOnFiber(finishedWork) {\n          var current2 = finishedWork.alternate;\n          var flags = finishedWork.flags;\n          if ((flags & Snapshot) !== NoFlags) {\n            setCurrentFiber(finishedWork);\n            switch (finishedWork.tag) {\n              case FunctionComponent:\n              case ForwardRef:\n              case SimpleMemoComponent: {\n                break;\n              }\n              case ClassComponent: {\n                if (current2 !== null) {\n                  var prevProps = current2.memoizedProps;\n                  var prevState = current2.memoizedState;\n                  var instance = finishedWork.stateNode;\n                  {\n                    if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                      if (instance.props !== finishedWork.memoizedProps) {\n                        error(\"Expected %s props to match memoized props before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                      }\n                      if (instance.state !== finishedWork.memoizedState) {\n                        error(\"Expected %s state to match memoized state before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                      }\n                    }\n                  }\n                  var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);\n                  {\n                    var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;\n                    if (snapshot === void 0 && !didWarnSet.has(finishedWork.type)) {\n                      didWarnSet.add(finishedWork.type);\n                      error(\"%s.getSnapshotBeforeUpdate(): A snapshot value (or null) must be returned. You have returned undefined.\", getComponentNameFromFiber(finishedWork));\n                    }\n                  }\n                  instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n                }\n                break;\n              }\n              case HostRoot: {\n                {\n                  var root2 = finishedWork.stateNode;\n                  clearContainer(root2.containerInfo);\n                }\n                break;\n              }\n              case HostComponent:\n              case HostText:\n              case HostPortal:\n              case IncompleteClassComponent:\n                break;\n              default: {\n                throw new Error(\"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\");\n              }\n            }\n            resetCurrentFiber();\n          }\n        }\n        function commitHookEffectListUnmount(flags, finishedWork, nearestMountedAncestor) {\n          var updateQueue = finishedWork.updateQueue;\n          var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n          if (lastEffect !== null) {\n            var firstEffect = lastEffect.next;\n            var effect = firstEffect;\n            do {\n              if ((effect.tag & flags) === flags) {\n                var destroy = effect.destroy;\n                effect.destroy = void 0;\n                if (destroy !== void 0) {\n                  {\n                    if ((flags & Passive$1) !== NoFlags$1) {\n                      markComponentPassiveEffectUnmountStarted(finishedWork);\n                    } else if ((flags & Layout) !== NoFlags$1) {\n                      markComponentLayoutEffectUnmountStarted(finishedWork);\n                    }\n                  }\n                  {\n                    if ((flags & Insertion) !== NoFlags$1) {\n                      setIsRunningInsertionEffect(true);\n                    }\n                  }\n                  safelyCallDestroy(finishedWork, nearestMountedAncestor, destroy);\n                  {\n                    if ((flags & Insertion) !== NoFlags$1) {\n                      setIsRunningInsertionEffect(false);\n                    }\n                  }\n                  {\n                    if ((flags & Passive$1) !== NoFlags$1) {\n                      markComponentPassiveEffectUnmountStopped();\n                    } else if ((flags & Layout) !== NoFlags$1) {\n                      markComponentLayoutEffectUnmountStopped();\n                    }\n                  }\n                }\n              }\n              effect = effect.next;\n            } while (effect !== firstEffect);\n          }\n        }\n        function commitHookEffectListMount(flags, finishedWork) {\n          var updateQueue = finishedWork.updateQueue;\n          var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n          if (lastEffect !== null) {\n            var firstEffect = lastEffect.next;\n            var effect = firstEffect;\n            do {\n              if ((effect.tag & flags) === flags) {\n                {\n                  if ((flags & Passive$1) !== NoFlags$1) {\n                    markComponentPassiveEffectMountStarted(finishedWork);\n                  } else if ((flags & Layout) !== NoFlags$1) {\n                    markComponentLayoutEffectMountStarted(finishedWork);\n                  }\n                }\n                var create = effect.create;\n                {\n                  if ((flags & Insertion) !== NoFlags$1) {\n                    setIsRunningInsertionEffect(true);\n                  }\n                }\n                effect.destroy = create();\n                {\n                  if ((flags & Insertion) !== NoFlags$1) {\n                    setIsRunningInsertionEffect(false);\n                  }\n                }\n                {\n                  if ((flags & Passive$1) !== NoFlags$1) {\n                    markComponentPassiveEffectMountStopped();\n                  } else if ((flags & Layout) !== NoFlags$1) {\n                    markComponentLayoutEffectMountStopped();\n                  }\n                }\n                {\n                  var destroy = effect.destroy;\n                  if (destroy !== void 0 && typeof destroy !== \"function\") {\n                    var hookName = void 0;\n                    if ((effect.tag & Layout) !== NoFlags) {\n                      hookName = \"useLayoutEffect\";\n                    } else if ((effect.tag & Insertion) !== NoFlags) {\n                      hookName = \"useInsertionEffect\";\n                    } else {\n                      hookName = \"useEffect\";\n                    }\n                    var addendum = void 0;\n                    if (destroy === null) {\n                      addendum = \" You returned null. If your effect does not require clean up, return undefined (or nothing).\";\n                    } else if (typeof destroy.then === \"function\") {\n                      addendum = \"\\n\\nIt looks like you wrote \" + hookName + \"(async () => ...) or returned a Promise. Instead, write the async function inside your effect and call it immediately:\\n\\n\" + hookName + \"(() => {\\n  async function fetchData() {\\n    // You can await here\\n    const response = await MyAPI.getData(someId);\\n    // ...\\n  }\\n  fetchData();\\n}, [someId]); // Or [] if effect doesn't need props or state\\n\\nLearn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching\";\n                    } else {\n                      addendum = \" You returned: \" + destroy;\n                    }\n                    error(\"%s must not return anything besides a function, which is used for clean-up.%s\", hookName, addendum);\n                  }\n                }\n              }\n              effect = effect.next;\n            } while (effect !== firstEffect);\n          }\n        }\n        function commitPassiveEffectDurations(finishedRoot, finishedWork) {\n          {\n            if ((finishedWork.flags & Update) !== NoFlags) {\n              switch (finishedWork.tag) {\n                case Profiler: {\n                  var passiveEffectDuration = finishedWork.stateNode.passiveEffectDuration;\n                  var _finishedWork$memoize = finishedWork.memoizedProps, id = _finishedWork$memoize.id, onPostCommit = _finishedWork$memoize.onPostCommit;\n                  var commitTime2 = getCommitTime();\n                  var phase = finishedWork.alternate === null ? \"mount\" : \"update\";\n                  {\n                    if (isCurrentUpdateNested()) {\n                      phase = \"nested-update\";\n                    }\n                  }\n                  if (typeof onPostCommit === \"function\") {\n                    onPostCommit(id, phase, passiveEffectDuration, commitTime2);\n                  }\n                  var parentFiber = finishedWork.return;\n                  outer:\n                    while (parentFiber !== null) {\n                      switch (parentFiber.tag) {\n                        case HostRoot:\n                          var root2 = parentFiber.stateNode;\n                          root2.passiveEffectDuration += passiveEffectDuration;\n                          break outer;\n                        case Profiler:\n                          var parentStateNode = parentFiber.stateNode;\n                          parentStateNode.passiveEffectDuration += passiveEffectDuration;\n                          break outer;\n                      }\n                      parentFiber = parentFiber.return;\n                    }\n                  break;\n                }\n              }\n            }\n          }\n        }\n        function commitLayoutEffectOnFiber(finishedRoot, current2, finishedWork, committedLanes) {\n          if ((finishedWork.flags & LayoutMask) !== NoFlags) {\n            switch (finishedWork.tag) {\n              case FunctionComponent:\n              case ForwardRef:\n              case SimpleMemoComponent: {\n                if (!offscreenSubtreeWasHidden) {\n                  if (finishedWork.mode & ProfileMode) {\n                    try {\n                      startLayoutEffectTimer();\n                      commitHookEffectListMount(Layout | HasEffect, finishedWork);\n                    } finally {\n                      recordLayoutEffectDuration(finishedWork);\n                    }\n                  } else {\n                    commitHookEffectListMount(Layout | HasEffect, finishedWork);\n                  }\n                }\n                break;\n              }\n              case ClassComponent: {\n                var instance = finishedWork.stateNode;\n                if (finishedWork.flags & Update) {\n                  if (!offscreenSubtreeWasHidden) {\n                    if (current2 === null) {\n                      {\n                        if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                          if (instance.props !== finishedWork.memoizedProps) {\n                            error(\"Expected %s props to match memoized props before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                          }\n                          if (instance.state !== finishedWork.memoizedState) {\n                            error(\"Expected %s state to match memoized state before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                          }\n                        }\n                      }\n                      if (finishedWork.mode & ProfileMode) {\n                        try {\n                          startLayoutEffectTimer();\n                          instance.componentDidMount();\n                        } finally {\n                          recordLayoutEffectDuration(finishedWork);\n                        }\n                      } else {\n                        instance.componentDidMount();\n                      }\n                    } else {\n                      var prevProps = finishedWork.elementType === finishedWork.type ? current2.memoizedProps : resolveDefaultProps(finishedWork.type, current2.memoizedProps);\n                      var prevState = current2.memoizedState;\n                      {\n                        if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                          if (instance.props !== finishedWork.memoizedProps) {\n                            error(\"Expected %s props to match memoized props before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                          }\n                          if (instance.state !== finishedWork.memoizedState) {\n                            error(\"Expected %s state to match memoized state before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                          }\n                        }\n                      }\n                      if (finishedWork.mode & ProfileMode) {\n                        try {\n                          startLayoutEffectTimer();\n                          instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                        } finally {\n                          recordLayoutEffectDuration(finishedWork);\n                        }\n                      } else {\n                        instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                      }\n                    }\n                  }\n                }\n                var updateQueue = finishedWork.updateQueue;\n                if (updateQueue !== null) {\n                  {\n                    if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                      if (instance.props !== finishedWork.memoizedProps) {\n                        error(\"Expected %s props to match memoized props before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                      }\n                      if (instance.state !== finishedWork.memoizedState) {\n                        error(\"Expected %s state to match memoized state before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                      }\n                    }\n                  }\n                  commitUpdateQueue(finishedWork, updateQueue, instance);\n                }\n                break;\n              }\n              case HostRoot: {\n                var _updateQueue = finishedWork.updateQueue;\n                if (_updateQueue !== null) {\n                  var _instance = null;\n                  if (finishedWork.child !== null) {\n                    switch (finishedWork.child.tag) {\n                      case HostComponent:\n                        _instance = getPublicInstance(finishedWork.child.stateNode);\n                        break;\n                      case ClassComponent:\n                        _instance = finishedWork.child.stateNode;\n                        break;\n                    }\n                  }\n                  commitUpdateQueue(finishedWork, _updateQueue, _instance);\n                }\n                break;\n              }\n              case HostComponent: {\n                var _instance2 = finishedWork.stateNode;\n                if (current2 === null && finishedWork.flags & Update) {\n                  var type = finishedWork.type;\n                  var props = finishedWork.memoizedProps;\n                  commitMount(_instance2, type, props);\n                }\n                break;\n              }\n              case HostText: {\n                break;\n              }\n              case HostPortal: {\n                break;\n              }\n              case Profiler: {\n                {\n                  var _finishedWork$memoize2 = finishedWork.memoizedProps, onCommit = _finishedWork$memoize2.onCommit, onRender = _finishedWork$memoize2.onRender;\n                  var effectDuration = finishedWork.stateNode.effectDuration;\n                  var commitTime2 = getCommitTime();\n                  var phase = current2 === null ? \"mount\" : \"update\";\n                  {\n                    if (isCurrentUpdateNested()) {\n                      phase = \"nested-update\";\n                    }\n                  }\n                  if (typeof onRender === \"function\") {\n                    onRender(finishedWork.memoizedProps.id, phase, finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, commitTime2);\n                  }\n                  {\n                    if (typeof onCommit === \"function\") {\n                      onCommit(finishedWork.memoizedProps.id, phase, effectDuration, commitTime2);\n                    }\n                    enqueuePendingPassiveProfilerEffect(finishedWork);\n                    var parentFiber = finishedWork.return;\n                    outer:\n                      while (parentFiber !== null) {\n                        switch (parentFiber.tag) {\n                          case HostRoot:\n                            var root2 = parentFiber.stateNode;\n                            root2.effectDuration += effectDuration;\n                            break outer;\n                          case Profiler:\n                            var parentStateNode = parentFiber.stateNode;\n                            parentStateNode.effectDuration += effectDuration;\n                            break outer;\n                        }\n                        parentFiber = parentFiber.return;\n                      }\n                  }\n                }\n                break;\n              }\n              case SuspenseComponent: {\n                commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n                break;\n              }\n              case SuspenseListComponent:\n              case IncompleteClassComponent:\n              case ScopeComponent:\n              case OffscreenComponent:\n              case LegacyHiddenComponent:\n              case TracingMarkerComponent: {\n                break;\n              }\n              default:\n                throw new Error(\"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n          }\n          if (!offscreenSubtreeWasHidden) {\n            {\n              if (finishedWork.flags & Ref) {\n                commitAttachRef(finishedWork);\n              }\n            }\n          }\n        }\n        function reappearLayoutEffectsOnFiber(node) {\n          switch (node.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              if (node.mode & ProfileMode) {\n                try {\n                  startLayoutEffectTimer();\n                  safelyCallCommitHookLayoutEffectListMount(node, node.return);\n                } finally {\n                  recordLayoutEffectDuration(node);\n                }\n              } else {\n                safelyCallCommitHookLayoutEffectListMount(node, node.return);\n              }\n              break;\n            }\n            case ClassComponent: {\n              var instance = node.stateNode;\n              if (typeof instance.componentDidMount === \"function\") {\n                safelyCallComponentDidMount(node, node.return, instance);\n              }\n              safelyAttachRef(node, node.return);\n              break;\n            }\n            case HostComponent: {\n              safelyAttachRef(node, node.return);\n              break;\n            }\n          }\n        }\n        function hideOrUnhideAllChildren(finishedWork, isHidden) {\n          var hostSubtreeRoot = null;\n          {\n            var node = finishedWork;\n            while (true) {\n              if (node.tag === HostComponent) {\n                if (hostSubtreeRoot === null) {\n                  hostSubtreeRoot = node;\n                  try {\n                    var instance = node.stateNode;\n                    if (isHidden) {\n                      hideInstance(instance);\n                    } else {\n                      unhideInstance(node.stateNode, node.memoizedProps);\n                    }\n                  } catch (error2) {\n                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                  }\n                }\n              } else if (node.tag === HostText) {\n                if (hostSubtreeRoot === null) {\n                  try {\n                    var _instance3 = node.stateNode;\n                    if (isHidden) {\n                      hideTextInstance(_instance3);\n                    } else {\n                      unhideTextInstance(_instance3, node.memoizedProps);\n                    }\n                  } catch (error2) {\n                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                  }\n                }\n              } else if ((node.tag === OffscreenComponent || node.tag === LegacyHiddenComponent) && node.memoizedState !== null && node !== finishedWork)\n                ;\n              else if (node.child !== null) {\n                node.child.return = node;\n                node = node.child;\n                continue;\n              }\n              if (node === finishedWork) {\n                return;\n              }\n              while (node.sibling === null) {\n                if (node.return === null || node.return === finishedWork) {\n                  return;\n                }\n                if (hostSubtreeRoot === node) {\n                  hostSubtreeRoot = null;\n                }\n                node = node.return;\n              }\n              if (hostSubtreeRoot === node) {\n                hostSubtreeRoot = null;\n              }\n              node.sibling.return = node.return;\n              node = node.sibling;\n            }\n          }\n        }\n        function commitAttachRef(finishedWork) {\n          var ref = finishedWork.ref;\n          if (ref !== null) {\n            var instance = finishedWork.stateNode;\n            var instanceToUse;\n            switch (finishedWork.tag) {\n              case HostComponent:\n                instanceToUse = getPublicInstance(instance);\n                break;\n              default:\n                instanceToUse = instance;\n            }\n            if (typeof ref === \"function\") {\n              var retVal;\n              if (finishedWork.mode & ProfileMode) {\n                try {\n                  startLayoutEffectTimer();\n                  retVal = ref(instanceToUse);\n                } finally {\n                  recordLayoutEffectDuration(finishedWork);\n                }\n              } else {\n                retVal = ref(instanceToUse);\n              }\n              {\n                if (typeof retVal === \"function\") {\n                  error(\"Unexpected return value from a callback ref in %s. A callback ref should not return a function.\", getComponentNameFromFiber(finishedWork));\n                }\n              }\n            } else {\n              {\n                if (!ref.hasOwnProperty(\"current\")) {\n                  error(\"Unexpected ref object provided for %s. Use either a ref-setter function or React.createRef().\", getComponentNameFromFiber(finishedWork));\n                }\n              }\n              ref.current = instanceToUse;\n            }\n          }\n        }\n        function detachFiberMutation(fiber) {\n          var alternate = fiber.alternate;\n          if (alternate !== null) {\n            alternate.return = null;\n          }\n          fiber.return = null;\n        }\n        function detachFiberAfterEffects(fiber) {\n          var alternate = fiber.alternate;\n          if (alternate !== null) {\n            fiber.alternate = null;\n            detachFiberAfterEffects(alternate);\n          }\n          {\n            fiber.child = null;\n            fiber.deletions = null;\n            fiber.sibling = null;\n            if (fiber.tag === HostComponent) {\n              var hostInstance = fiber.stateNode;\n              if (hostInstance !== null) {\n                detachDeletedInstance(hostInstance);\n              }\n            }\n            fiber.stateNode = null;\n            {\n              fiber._debugOwner = null;\n            }\n            {\n              fiber.return = null;\n              fiber.dependencies = null;\n              fiber.memoizedProps = null;\n              fiber.memoizedState = null;\n              fiber.pendingProps = null;\n              fiber.stateNode = null;\n              fiber.updateQueue = null;\n            }\n          }\n        }\n        function getHostParentFiber(fiber) {\n          var parent = fiber.return;\n          while (parent !== null) {\n            if (isHostParent(parent)) {\n              return parent;\n            }\n            parent = parent.return;\n          }\n          throw new Error(\"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        function isHostParent(fiber) {\n          return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;\n        }\n        function getHostSibling(fiber) {\n          var node = fiber;\n          siblings:\n            while (true) {\n              while (node.sibling === null) {\n                if (node.return === null || isHostParent(node.return)) {\n                  return null;\n                }\n                node = node.return;\n              }\n              node.sibling.return = node.return;\n              node = node.sibling;\n              while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) {\n                if (node.flags & Placement) {\n                  continue siblings;\n                }\n                if (node.child === null || node.tag === HostPortal) {\n                  continue siblings;\n                } else {\n                  node.child.return = node;\n                  node = node.child;\n                }\n              }\n              if (!(node.flags & Placement)) {\n                return node.stateNode;\n              }\n            }\n        }\n        function commitPlacement(finishedWork) {\n          var parentFiber = getHostParentFiber(finishedWork);\n          switch (parentFiber.tag) {\n            case HostComponent: {\n              var parent = parentFiber.stateNode;\n              if (parentFiber.flags & ContentReset) {\n                resetTextContent(parent);\n                parentFiber.flags &= ~ContentReset;\n              }\n              var before = getHostSibling(finishedWork);\n              insertOrAppendPlacementNode(finishedWork, before, parent);\n              break;\n            }\n            case HostRoot:\n            case HostPortal: {\n              var _parent = parentFiber.stateNode.containerInfo;\n              var _before = getHostSibling(finishedWork);\n              insertOrAppendPlacementNodeIntoContainer(finishedWork, _before, _parent);\n              break;\n            }\n            default:\n              throw new Error(\"Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n        }\n        function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n          var tag = node.tag;\n          var isHost = tag === HostComponent || tag === HostText;\n          if (isHost) {\n            var stateNode = node.stateNode;\n            if (before) {\n              insertInContainerBefore(parent, stateNode, before);\n            } else {\n              appendChildToContainer(parent, stateNode);\n            }\n          } else if (tag === HostPortal)\n            ;\n          else {\n            var child = node.child;\n            if (child !== null) {\n              insertOrAppendPlacementNodeIntoContainer(child, before, parent);\n              var sibling = child.sibling;\n              while (sibling !== null) {\n                insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);\n                sibling = sibling.sibling;\n              }\n            }\n          }\n        }\n        function insertOrAppendPlacementNode(node, before, parent) {\n          var tag = node.tag;\n          var isHost = tag === HostComponent || tag === HostText;\n          if (isHost) {\n            var stateNode = node.stateNode;\n            if (before) {\n              insertBefore(parent, stateNode, before);\n            } else {\n              appendChild(parent, stateNode);\n            }\n          } else if (tag === HostPortal)\n            ;\n          else {\n            var child = node.child;\n            if (child !== null) {\n              insertOrAppendPlacementNode(child, before, parent);\n              var sibling = child.sibling;\n              while (sibling !== null) {\n                insertOrAppendPlacementNode(sibling, before, parent);\n                sibling = sibling.sibling;\n              }\n            }\n          }\n        }\n        var hostParent = null;\n        var hostParentIsContainer = false;\n        function commitDeletionEffects(root2, returnFiber, deletedFiber) {\n          {\n            var parent = returnFiber;\n            findParent:\n              while (parent !== null) {\n                switch (parent.tag) {\n                  case HostComponent: {\n                    hostParent = parent.stateNode;\n                    hostParentIsContainer = false;\n                    break findParent;\n                  }\n                  case HostRoot: {\n                    hostParent = parent.stateNode.containerInfo;\n                    hostParentIsContainer = true;\n                    break findParent;\n                  }\n                  case HostPortal: {\n                    hostParent = parent.stateNode.containerInfo;\n                    hostParentIsContainer = true;\n                    break findParent;\n                  }\n                }\n                parent = parent.return;\n              }\n            if (hostParent === null) {\n              throw new Error(\"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n            commitDeletionEffectsOnFiber(root2, returnFiber, deletedFiber);\n            hostParent = null;\n            hostParentIsContainer = false;\n          }\n          detachFiberMutation(deletedFiber);\n        }\n        function recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, parent) {\n          var child = parent.child;\n          while (child !== null) {\n            commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, child);\n            child = child.sibling;\n          }\n        }\n        function commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, deletedFiber) {\n          onCommitUnmount(deletedFiber);\n          switch (deletedFiber.tag) {\n            case HostComponent: {\n              if (!offscreenSubtreeWasHidden) {\n                safelyDetachRef(deletedFiber, nearestMountedAncestor);\n              }\n            }\n            case HostText: {\n              {\n                var prevHostParent = hostParent;\n                var prevHostParentIsContainer = hostParentIsContainer;\n                hostParent = null;\n                recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n                hostParent = prevHostParent;\n                hostParentIsContainer = prevHostParentIsContainer;\n                if (hostParent !== null) {\n                  if (hostParentIsContainer) {\n                    removeChildFromContainer(hostParent, deletedFiber.stateNode);\n                  } else {\n                    removeChild(hostParent, deletedFiber.stateNode);\n                  }\n                }\n              }\n              return;\n            }\n            case DehydratedFragment: {\n              {\n                if (hostParent !== null) {\n                  if (hostParentIsContainer) {\n                    clearSuspenseBoundaryFromContainer(hostParent, deletedFiber.stateNode);\n                  } else {\n                    clearSuspenseBoundary(hostParent, deletedFiber.stateNode);\n                  }\n                }\n              }\n              return;\n            }\n            case HostPortal: {\n              {\n                var _prevHostParent = hostParent;\n                var _prevHostParentIsContainer = hostParentIsContainer;\n                hostParent = deletedFiber.stateNode.containerInfo;\n                hostParentIsContainer = true;\n                recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n                hostParent = _prevHostParent;\n                hostParentIsContainer = _prevHostParentIsContainer;\n              }\n              return;\n            }\n            case FunctionComponent:\n            case ForwardRef:\n            case MemoComponent:\n            case SimpleMemoComponent: {\n              if (!offscreenSubtreeWasHidden) {\n                var updateQueue = deletedFiber.updateQueue;\n                if (updateQueue !== null) {\n                  var lastEffect = updateQueue.lastEffect;\n                  if (lastEffect !== null) {\n                    var firstEffect = lastEffect.next;\n                    var effect = firstEffect;\n                    do {\n                      var _effect = effect, destroy = _effect.destroy, tag = _effect.tag;\n                      if (destroy !== void 0) {\n                        if ((tag & Insertion) !== NoFlags$1) {\n                          safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                        } else if ((tag & Layout) !== NoFlags$1) {\n                          {\n                            markComponentLayoutEffectUnmountStarted(deletedFiber);\n                          }\n                          if (deletedFiber.mode & ProfileMode) {\n                            startLayoutEffectTimer();\n                            safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                            recordLayoutEffectDuration(deletedFiber);\n                          } else {\n                            safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                          }\n                          {\n                            markComponentLayoutEffectUnmountStopped();\n                          }\n                        }\n                      }\n                      effect = effect.next;\n                    } while (effect !== firstEffect);\n                  }\n                }\n              }\n              recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n              return;\n            }\n            case ClassComponent: {\n              if (!offscreenSubtreeWasHidden) {\n                safelyDetachRef(deletedFiber, nearestMountedAncestor);\n                var instance = deletedFiber.stateNode;\n                if (typeof instance.componentWillUnmount === \"function\") {\n                  safelyCallComponentWillUnmount(deletedFiber, nearestMountedAncestor, instance);\n                }\n              }\n              recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n              return;\n            }\n            case ScopeComponent: {\n              recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n              return;\n            }\n            case OffscreenComponent: {\n              if (\n                // TODO: Remove this dead flag\n                deletedFiber.mode & ConcurrentMode\n              ) {\n                var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || deletedFiber.memoizedState !== null;\n                recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n              } else {\n                recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n              }\n              break;\n            }\n            default: {\n              recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n              return;\n            }\n          }\n        }\n        function commitSuspenseCallback(finishedWork) {\n          var newState = finishedWork.memoizedState;\n        }\n        function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n          var newState = finishedWork.memoizedState;\n          if (newState === null) {\n            var current2 = finishedWork.alternate;\n            if (current2 !== null) {\n              var prevState = current2.memoizedState;\n              if (prevState !== null) {\n                var suspenseInstance = prevState.dehydrated;\n                if (suspenseInstance !== null) {\n                  commitHydratedSuspenseInstance(suspenseInstance);\n                }\n              }\n            }\n          }\n        }\n        function attachSuspenseRetryListeners(finishedWork) {\n          var wakeables = finishedWork.updateQueue;\n          if (wakeables !== null) {\n            finishedWork.updateQueue = null;\n            var retryCache = finishedWork.stateNode;\n            if (retryCache === null) {\n              retryCache = finishedWork.stateNode = new PossiblyWeakSet();\n            }\n            wakeables.forEach(function(wakeable) {\n              var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n              if (!retryCache.has(wakeable)) {\n                retryCache.add(wakeable);\n                {\n                  if (isDevToolsPresent) {\n                    if (inProgressLanes !== null && inProgressRoot !== null) {\n                      restorePendingUpdaters(inProgressRoot, inProgressLanes);\n                    } else {\n                      throw Error(\"Expected finished root and lanes to be set. This is a bug in React.\");\n                    }\n                  }\n                }\n                wakeable.then(retry, retry);\n              }\n            });\n          }\n        }\n        function commitMutationEffects(root2, finishedWork, committedLanes) {\n          inProgressLanes = committedLanes;\n          inProgressRoot = root2;\n          setCurrentFiber(finishedWork);\n          commitMutationEffectsOnFiber(finishedWork, root2);\n          setCurrentFiber(finishedWork);\n          inProgressLanes = null;\n          inProgressRoot = null;\n        }\n        function recursivelyTraverseMutationEffects(root2, parentFiber, lanes) {\n          var deletions = parentFiber.deletions;\n          if (deletions !== null) {\n            for (var i = 0; i < deletions.length; i++) {\n              var childToDelete = deletions[i];\n              try {\n                commitDeletionEffects(root2, parentFiber, childToDelete);\n              } catch (error2) {\n                captureCommitPhaseError(childToDelete, parentFiber, error2);\n              }\n            }\n          }\n          var prevDebugFiber = getCurrentFiber();\n          if (parentFiber.subtreeFlags & MutationMask) {\n            var child = parentFiber.child;\n            while (child !== null) {\n              setCurrentFiber(child);\n              commitMutationEffectsOnFiber(child, root2);\n              child = child.sibling;\n            }\n          }\n          setCurrentFiber(prevDebugFiber);\n        }\n        function commitMutationEffectsOnFiber(finishedWork, root2, lanes) {\n          var current2 = finishedWork.alternate;\n          var flags = finishedWork.flags;\n          switch (finishedWork.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case MemoComponent:\n            case SimpleMemoComponent: {\n              recursivelyTraverseMutationEffects(root2, finishedWork);\n              commitReconciliationEffects(finishedWork);\n              if (flags & Update) {\n                try {\n                  commitHookEffectListUnmount(Insertion | HasEffect, finishedWork, finishedWork.return);\n                  commitHookEffectListMount(Insertion | HasEffect, finishedWork);\n                } catch (error2) {\n                  captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                }\n                if (finishedWork.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n                  } catch (error2) {\n                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                  }\n                  recordLayoutEffectDuration(finishedWork);\n                } else {\n                  try {\n                    commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n                  } catch (error2) {\n                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                  }\n                }\n              }\n              return;\n            }\n            case ClassComponent: {\n              recursivelyTraverseMutationEffects(root2, finishedWork);\n              commitReconciliationEffects(finishedWork);\n              if (flags & Ref) {\n                if (current2 !== null) {\n                  safelyDetachRef(current2, current2.return);\n                }\n              }\n              return;\n            }\n            case HostComponent: {\n              recursivelyTraverseMutationEffects(root2, finishedWork);\n              commitReconciliationEffects(finishedWork);\n              if (flags & Ref) {\n                if (current2 !== null) {\n                  safelyDetachRef(current2, current2.return);\n                }\n              }\n              {\n                if (finishedWork.flags & ContentReset) {\n                  var instance = finishedWork.stateNode;\n                  try {\n                    resetTextContent(instance);\n                  } catch (error2) {\n                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                  }\n                }\n                if (flags & Update) {\n                  var _instance4 = finishedWork.stateNode;\n                  if (_instance4 != null) {\n                    var newProps = finishedWork.memoizedProps;\n                    var oldProps = current2 !== null ? current2.memoizedProps : newProps;\n                    var type = finishedWork.type;\n                    var updatePayload = finishedWork.updateQueue;\n                    finishedWork.updateQueue = null;\n                    if (updatePayload !== null) {\n                      try {\n                        commitUpdate(_instance4, updatePayload, type, oldProps, newProps, finishedWork);\n                      } catch (error2) {\n                        captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                      }\n                    }\n                  }\n                }\n              }\n              return;\n            }\n            case HostText: {\n              recursivelyTraverseMutationEffects(root2, finishedWork);\n              commitReconciliationEffects(finishedWork);\n              if (flags & Update) {\n                {\n                  if (finishedWork.stateNode === null) {\n                    throw new Error(\"This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.\");\n                  }\n                  var textInstance = finishedWork.stateNode;\n                  var newText = finishedWork.memoizedProps;\n                  var oldText = current2 !== null ? current2.memoizedProps : newText;\n                  try {\n                    commitTextUpdate(textInstance, oldText, newText);\n                  } catch (error2) {\n                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                  }\n                }\n              }\n              return;\n            }\n            case HostRoot: {\n              recursivelyTraverseMutationEffects(root2, finishedWork);\n              commitReconciliationEffects(finishedWork);\n              if (flags & Update) {\n                {\n                  if (current2 !== null) {\n                    var prevRootState = current2.memoizedState;\n                    if (prevRootState.isDehydrated) {\n                      try {\n                        commitHydratedContainer(root2.containerInfo);\n                      } catch (error2) {\n                        captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                      }\n                    }\n                  }\n                }\n              }\n              return;\n            }\n            case HostPortal: {\n              recursivelyTraverseMutationEffects(root2, finishedWork);\n              commitReconciliationEffects(finishedWork);\n              return;\n            }\n            case SuspenseComponent: {\n              recursivelyTraverseMutationEffects(root2, finishedWork);\n              commitReconciliationEffects(finishedWork);\n              var offscreenFiber = finishedWork.child;\n              if (offscreenFiber.flags & Visibility) {\n                var offscreenInstance = offscreenFiber.stateNode;\n                var newState = offscreenFiber.memoizedState;\n                var isHidden = newState !== null;\n                offscreenInstance.isHidden = isHidden;\n                if (isHidden) {\n                  var wasHidden = offscreenFiber.alternate !== null && offscreenFiber.alternate.memoizedState !== null;\n                  if (!wasHidden) {\n                    markCommitTimeOfFallback();\n                  }\n                }\n              }\n              if (flags & Update) {\n                try {\n                  commitSuspenseCallback(finishedWork);\n                } catch (error2) {\n                  captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n                }\n                attachSuspenseRetryListeners(finishedWork);\n              }\n              return;\n            }\n            case OffscreenComponent: {\n              var _wasHidden = current2 !== null && current2.memoizedState !== null;\n              if (\n                // TODO: Remove this dead flag\n                finishedWork.mode & ConcurrentMode\n              ) {\n                var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || _wasHidden;\n                recursivelyTraverseMutationEffects(root2, finishedWork);\n                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n              } else {\n                recursivelyTraverseMutationEffects(root2, finishedWork);\n              }\n              commitReconciliationEffects(finishedWork);\n              if (flags & Visibility) {\n                var _offscreenInstance = finishedWork.stateNode;\n                var _newState = finishedWork.memoizedState;\n                var _isHidden = _newState !== null;\n                var offscreenBoundary = finishedWork;\n                _offscreenInstance.isHidden = _isHidden;\n                {\n                  if (_isHidden) {\n                    if (!_wasHidden) {\n                      if ((offscreenBoundary.mode & ConcurrentMode) !== NoMode) {\n                        nextEffect = offscreenBoundary;\n                        var offscreenChild = offscreenBoundary.child;\n                        while (offscreenChild !== null) {\n                          nextEffect = offscreenChild;\n                          disappearLayoutEffects_begin(offscreenChild);\n                          offscreenChild = offscreenChild.sibling;\n                        }\n                      }\n                    }\n                  }\n                }\n                {\n                  hideOrUnhideAllChildren(offscreenBoundary, _isHidden);\n                }\n              }\n              return;\n            }\n            case SuspenseListComponent: {\n              recursivelyTraverseMutationEffects(root2, finishedWork);\n              commitReconciliationEffects(finishedWork);\n              if (flags & Update) {\n                attachSuspenseRetryListeners(finishedWork);\n              }\n              return;\n            }\n            case ScopeComponent: {\n              return;\n            }\n            default: {\n              recursivelyTraverseMutationEffects(root2, finishedWork);\n              commitReconciliationEffects(finishedWork);\n              return;\n            }\n          }\n        }\n        function commitReconciliationEffects(finishedWork) {\n          var flags = finishedWork.flags;\n          if (flags & Placement) {\n            try {\n              commitPlacement(finishedWork);\n            } catch (error2) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error2);\n            }\n            finishedWork.flags &= ~Placement;\n          }\n          if (flags & Hydrating) {\n            finishedWork.flags &= ~Hydrating;\n          }\n        }\n        function commitLayoutEffects(finishedWork, root2, committedLanes) {\n          inProgressLanes = committedLanes;\n          inProgressRoot = root2;\n          nextEffect = finishedWork;\n          commitLayoutEffects_begin(finishedWork, root2, committedLanes);\n          inProgressLanes = null;\n          inProgressRoot = null;\n        }\n        function commitLayoutEffects_begin(subtreeRoot, root2, committedLanes) {\n          var isModernRoot = (subtreeRoot.mode & ConcurrentMode) !== NoMode;\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            var firstChild = fiber.child;\n            if (fiber.tag === OffscreenComponent && isModernRoot) {\n              var isHidden = fiber.memoizedState !== null;\n              var newOffscreenSubtreeIsHidden = isHidden || offscreenSubtreeIsHidden;\n              if (newOffscreenSubtreeIsHidden) {\n                commitLayoutMountEffects_complete(subtreeRoot, root2, committedLanes);\n                continue;\n              } else {\n                var current2 = fiber.alternate;\n                var wasHidden = current2 !== null && current2.memoizedState !== null;\n                var newOffscreenSubtreeWasHidden = wasHidden || offscreenSubtreeWasHidden;\n                var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden;\n                var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n                offscreenSubtreeIsHidden = newOffscreenSubtreeIsHidden;\n                offscreenSubtreeWasHidden = newOffscreenSubtreeWasHidden;\n                if (offscreenSubtreeWasHidden && !prevOffscreenSubtreeWasHidden) {\n                  nextEffect = fiber;\n                  reappearLayoutEffects_begin(fiber);\n                }\n                var child = firstChild;\n                while (child !== null) {\n                  nextEffect = child;\n                  commitLayoutEffects_begin(\n                    child,\n                    // New root; bubble back up to here and stop.\n                    root2,\n                    committedLanes\n                  );\n                  child = child.sibling;\n                }\n                nextEffect = fiber;\n                offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n                commitLayoutMountEffects_complete(subtreeRoot, root2, committedLanes);\n                continue;\n              }\n            }\n            if ((fiber.subtreeFlags & LayoutMask) !== NoFlags && firstChild !== null) {\n              firstChild.return = fiber;\n              nextEffect = firstChild;\n            } else {\n              commitLayoutMountEffects_complete(subtreeRoot, root2, committedLanes);\n            }\n          }\n        }\n        function commitLayoutMountEffects_complete(subtreeRoot, root2, committedLanes) {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            if ((fiber.flags & LayoutMask) !== NoFlags) {\n              var current2 = fiber.alternate;\n              setCurrentFiber(fiber);\n              try {\n                commitLayoutEffectOnFiber(root2, current2, fiber, committedLanes);\n              } catch (error2) {\n                captureCommitPhaseError(fiber, fiber.return, error2);\n              }\n              resetCurrentFiber();\n            }\n            if (fiber === subtreeRoot) {\n              nextEffect = null;\n              return;\n            }\n            var sibling = fiber.sibling;\n            if (sibling !== null) {\n              sibling.return = fiber.return;\n              nextEffect = sibling;\n              return;\n            }\n            nextEffect = fiber.return;\n          }\n        }\n        function disappearLayoutEffects_begin(subtreeRoot) {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            var firstChild = fiber.child;\n            switch (fiber.tag) {\n              case FunctionComponent:\n              case ForwardRef:\n              case MemoComponent:\n              case SimpleMemoComponent: {\n                if (fiber.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    commitHookEffectListUnmount(Layout, fiber, fiber.return);\n                  } finally {\n                    recordLayoutEffectDuration(fiber);\n                  }\n                } else {\n                  commitHookEffectListUnmount(Layout, fiber, fiber.return);\n                }\n                break;\n              }\n              case ClassComponent: {\n                safelyDetachRef(fiber, fiber.return);\n                var instance = fiber.stateNode;\n                if (typeof instance.componentWillUnmount === \"function\") {\n                  safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n                }\n                break;\n              }\n              case HostComponent: {\n                safelyDetachRef(fiber, fiber.return);\n                break;\n              }\n              case OffscreenComponent: {\n                var isHidden = fiber.memoizedState !== null;\n                if (isHidden) {\n                  disappearLayoutEffects_complete(subtreeRoot);\n                  continue;\n                }\n                break;\n              }\n            }\n            if (firstChild !== null) {\n              firstChild.return = fiber;\n              nextEffect = firstChild;\n            } else {\n              disappearLayoutEffects_complete(subtreeRoot);\n            }\n          }\n        }\n        function disappearLayoutEffects_complete(subtreeRoot) {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            if (fiber === subtreeRoot) {\n              nextEffect = null;\n              return;\n            }\n            var sibling = fiber.sibling;\n            if (sibling !== null) {\n              sibling.return = fiber.return;\n              nextEffect = sibling;\n              return;\n            }\n            nextEffect = fiber.return;\n          }\n        }\n        function reappearLayoutEffects_begin(subtreeRoot) {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            var firstChild = fiber.child;\n            if (fiber.tag === OffscreenComponent) {\n              var isHidden = fiber.memoizedState !== null;\n              if (isHidden) {\n                reappearLayoutEffects_complete(subtreeRoot);\n                continue;\n              }\n            }\n            if (firstChild !== null) {\n              firstChild.return = fiber;\n              nextEffect = firstChild;\n            } else {\n              reappearLayoutEffects_complete(subtreeRoot);\n            }\n          }\n        }\n        function reappearLayoutEffects_complete(subtreeRoot) {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            setCurrentFiber(fiber);\n            try {\n              reappearLayoutEffectsOnFiber(fiber);\n            } catch (error2) {\n              captureCommitPhaseError(fiber, fiber.return, error2);\n            }\n            resetCurrentFiber();\n            if (fiber === subtreeRoot) {\n              nextEffect = null;\n              return;\n            }\n            var sibling = fiber.sibling;\n            if (sibling !== null) {\n              sibling.return = fiber.return;\n              nextEffect = sibling;\n              return;\n            }\n            nextEffect = fiber.return;\n          }\n        }\n        function commitPassiveMountEffects(root2, finishedWork, committedLanes, committedTransitions) {\n          nextEffect = finishedWork;\n          commitPassiveMountEffects_begin(finishedWork, root2, committedLanes, committedTransitions);\n        }\n        function commitPassiveMountEffects_begin(subtreeRoot, root2, committedLanes, committedTransitions) {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            var firstChild = fiber.child;\n            if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && firstChild !== null) {\n              firstChild.return = fiber;\n              nextEffect = firstChild;\n            } else {\n              commitPassiveMountEffects_complete(subtreeRoot, root2, committedLanes, committedTransitions);\n            }\n          }\n        }\n        function commitPassiveMountEffects_complete(subtreeRoot, root2, committedLanes, committedTransitions) {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            if ((fiber.flags & Passive) !== NoFlags) {\n              setCurrentFiber(fiber);\n              try {\n                commitPassiveMountOnFiber(root2, fiber, committedLanes, committedTransitions);\n              } catch (error2) {\n                captureCommitPhaseError(fiber, fiber.return, error2);\n              }\n              resetCurrentFiber();\n            }\n            if (fiber === subtreeRoot) {\n              nextEffect = null;\n              return;\n            }\n            var sibling = fiber.sibling;\n            if (sibling !== null) {\n              sibling.return = fiber.return;\n              nextEffect = sibling;\n              return;\n            }\n            nextEffect = fiber.return;\n          }\n        }\n        function commitPassiveMountOnFiber(finishedRoot, finishedWork, committedLanes, committedTransitions) {\n          switch (finishedWork.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              if (finishedWork.mode & ProfileMode) {\n                startPassiveEffectTimer();\n                try {\n                  commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n                } finally {\n                  recordPassiveEffectDuration(finishedWork);\n                }\n              } else {\n                commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n              }\n              break;\n            }\n          }\n        }\n        function commitPassiveUnmountEffects(firstChild) {\n          nextEffect = firstChild;\n          commitPassiveUnmountEffects_begin();\n        }\n        function commitPassiveUnmountEffects_begin() {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            var child = fiber.child;\n            if ((nextEffect.flags & ChildDeletion) !== NoFlags) {\n              var deletions = fiber.deletions;\n              if (deletions !== null) {\n                for (var i = 0; i < deletions.length; i++) {\n                  var fiberToDelete = deletions[i];\n                  nextEffect = fiberToDelete;\n                  commitPassiveUnmountEffectsInsideOfDeletedTree_begin(fiberToDelete, fiber);\n                }\n                {\n                  var previousFiber = fiber.alternate;\n                  if (previousFiber !== null) {\n                    var detachedChild = previousFiber.child;\n                    if (detachedChild !== null) {\n                      previousFiber.child = null;\n                      do {\n                        var detachedSibling = detachedChild.sibling;\n                        detachedChild.sibling = null;\n                        detachedChild = detachedSibling;\n                      } while (detachedChild !== null);\n                    }\n                  }\n                }\n                nextEffect = fiber;\n              }\n            }\n            if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && child !== null) {\n              child.return = fiber;\n              nextEffect = child;\n            } else {\n              commitPassiveUnmountEffects_complete();\n            }\n          }\n        }\n        function commitPassiveUnmountEffects_complete() {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            if ((fiber.flags & Passive) !== NoFlags) {\n              setCurrentFiber(fiber);\n              commitPassiveUnmountOnFiber(fiber);\n              resetCurrentFiber();\n            }\n            var sibling = fiber.sibling;\n            if (sibling !== null) {\n              sibling.return = fiber.return;\n              nextEffect = sibling;\n              return;\n            }\n            nextEffect = fiber.return;\n          }\n        }\n        function commitPassiveUnmountOnFiber(finishedWork) {\n          switch (finishedWork.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              if (finishedWork.mode & ProfileMode) {\n                startPassiveEffectTimer();\n                commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n                recordPassiveEffectDuration(finishedWork);\n              } else {\n                commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n              }\n              break;\n            }\n          }\n        }\n        function commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot, nearestMountedAncestor) {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            setCurrentFiber(fiber);\n            commitPassiveUnmountInsideDeletedTreeOnFiber(fiber, nearestMountedAncestor);\n            resetCurrentFiber();\n            var child = fiber.child;\n            if (child !== null) {\n              child.return = fiber;\n              nextEffect = child;\n            } else {\n              commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot);\n            }\n          }\n        }\n        function commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot) {\n          while (nextEffect !== null) {\n            var fiber = nextEffect;\n            var sibling = fiber.sibling;\n            var returnFiber = fiber.return;\n            {\n              detachFiberAfterEffects(fiber);\n              if (fiber === deletedSubtreeRoot) {\n                nextEffect = null;\n                return;\n              }\n            }\n            if (sibling !== null) {\n              sibling.return = returnFiber;\n              nextEffect = sibling;\n              return;\n            }\n            nextEffect = returnFiber;\n          }\n        }\n        function commitPassiveUnmountInsideDeletedTreeOnFiber(current2, nearestMountedAncestor) {\n          switch (current2.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              if (current2.mode & ProfileMode) {\n                startPassiveEffectTimer();\n                commitHookEffectListUnmount(Passive$1, current2, nearestMountedAncestor);\n                recordPassiveEffectDuration(current2);\n              } else {\n                commitHookEffectListUnmount(Passive$1, current2, nearestMountedAncestor);\n              }\n              break;\n            }\n          }\n        }\n        function invokeLayoutEffectMountInDEV(fiber) {\n          {\n            switch (fiber.tag) {\n              case FunctionComponent:\n              case ForwardRef:\n              case SimpleMemoComponent: {\n                try {\n                  commitHookEffectListMount(Layout | HasEffect, fiber);\n                } catch (error2) {\n                  captureCommitPhaseError(fiber, fiber.return, error2);\n                }\n                break;\n              }\n              case ClassComponent: {\n                var instance = fiber.stateNode;\n                try {\n                  instance.componentDidMount();\n                } catch (error2) {\n                  captureCommitPhaseError(fiber, fiber.return, error2);\n                }\n                break;\n              }\n            }\n          }\n        }\n        function invokePassiveEffectMountInDEV(fiber) {\n          {\n            switch (fiber.tag) {\n              case FunctionComponent:\n              case ForwardRef:\n              case SimpleMemoComponent: {\n                try {\n                  commitHookEffectListMount(Passive$1 | HasEffect, fiber);\n                } catch (error2) {\n                  captureCommitPhaseError(fiber, fiber.return, error2);\n                }\n                break;\n              }\n            }\n          }\n        }\n        function invokeLayoutEffectUnmountInDEV(fiber) {\n          {\n            switch (fiber.tag) {\n              case FunctionComponent:\n              case ForwardRef:\n              case SimpleMemoComponent: {\n                try {\n                  commitHookEffectListUnmount(Layout | HasEffect, fiber, fiber.return);\n                } catch (error2) {\n                  captureCommitPhaseError(fiber, fiber.return, error2);\n                }\n                break;\n              }\n              case ClassComponent: {\n                var instance = fiber.stateNode;\n                if (typeof instance.componentWillUnmount === \"function\") {\n                  safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n                }\n                break;\n              }\n            }\n          }\n        }\n        function invokePassiveEffectUnmountInDEV(fiber) {\n          {\n            switch (fiber.tag) {\n              case FunctionComponent:\n              case ForwardRef:\n              case SimpleMemoComponent: {\n                try {\n                  commitHookEffectListUnmount(Passive$1 | HasEffect, fiber, fiber.return);\n                } catch (error2) {\n                  captureCommitPhaseError(fiber, fiber.return, error2);\n                }\n              }\n            }\n          }\n        }\n        var COMPONENT_TYPE = 0;\n        var HAS_PSEUDO_CLASS_TYPE = 1;\n        var ROLE_TYPE = 2;\n        var TEST_NAME_TYPE = 3;\n        var TEXT_TYPE = 4;\n        if (typeof Symbol === \"function\" && Symbol.for) {\n          var symbolFor = Symbol.for;\n          COMPONENT_TYPE = symbolFor(\"selector.component\");\n          HAS_PSEUDO_CLASS_TYPE = symbolFor(\"selector.has_pseudo_class\");\n          ROLE_TYPE = symbolFor(\"selector.role\");\n          TEST_NAME_TYPE = symbolFor(\"selector.test_id\");\n          TEXT_TYPE = symbolFor(\"selector.text\");\n        }\n        var commitHooks = [];\n        function onCommitRoot$1() {\n          {\n            commitHooks.forEach(function(commitHook) {\n              return commitHook();\n            });\n          }\n        }\n        var ReactCurrentActQueue = ReactSharedInternals.ReactCurrentActQueue;\n        function isLegacyActEnvironment(fiber) {\n          {\n            var isReactActEnvironmentGlobal = (\n              // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n              typeof IS_REACT_ACT_ENVIRONMENT !== \"undefined\" ? IS_REACT_ACT_ENVIRONMENT : void 0\n            );\n            var jestIsDefined = typeof jest !== \"undefined\";\n            return jestIsDefined && isReactActEnvironmentGlobal !== false;\n          }\n        }\n        function isConcurrentActEnvironment() {\n          {\n            var isReactActEnvironmentGlobal = (\n              // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n              typeof IS_REACT_ACT_ENVIRONMENT !== \"undefined\" ? IS_REACT_ACT_ENVIRONMENT : void 0\n            );\n            if (!isReactActEnvironmentGlobal && ReactCurrentActQueue.current !== null) {\n              error(\"The current testing environment is not configured to support act(...)\");\n            }\n            return isReactActEnvironmentGlobal;\n          }\n        }\n        var ceil = Math.ceil;\n        var ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher, ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner, ReactCurrentBatchConfig$3 = ReactSharedInternals.ReactCurrentBatchConfig, ReactCurrentActQueue$1 = ReactSharedInternals.ReactCurrentActQueue;\n        var NoContext = (\n          /*             */\n          0\n        );\n        var BatchedContext = (\n          /*               */\n          1\n        );\n        var RenderContext = (\n          /*                */\n          2\n        );\n        var CommitContext = (\n          /*                */\n          4\n        );\n        var RootInProgress = 0;\n        var RootFatalErrored = 1;\n        var RootErrored = 2;\n        var RootSuspended = 3;\n        var RootSuspendedWithDelay = 4;\n        var RootCompleted = 5;\n        var RootDidNotComplete = 6;\n        var executionContext = NoContext;\n        var workInProgressRoot = null;\n        var workInProgress = null;\n        var workInProgressRootRenderLanes = NoLanes;\n        var subtreeRenderLanes = NoLanes;\n        var subtreeRenderLanesCursor = createCursor(NoLanes);\n        var workInProgressRootExitStatus = RootInProgress;\n        var workInProgressRootFatalError = null;\n        var workInProgressRootIncludedLanes = NoLanes;\n        var workInProgressRootSkippedLanes = NoLanes;\n        var workInProgressRootInterleavedUpdatedLanes = NoLanes;\n        var workInProgressRootPingedLanes = NoLanes;\n        var workInProgressRootConcurrentErrors = null;\n        var workInProgressRootRecoverableErrors = null;\n        var globalMostRecentFallbackTime = 0;\n        var FALLBACK_THROTTLE_MS = 500;\n        var workInProgressRootRenderTargetTime = Infinity;\n        var RENDER_TIMEOUT_MS = 500;\n        var workInProgressTransitions = null;\n        function resetRenderTimer() {\n          workInProgressRootRenderTargetTime = now() + RENDER_TIMEOUT_MS;\n        }\n        function getRenderTargetTime() {\n          return workInProgressRootRenderTargetTime;\n        }\n        var hasUncaughtError = false;\n        var firstUncaughtError = null;\n        var legacyErrorBoundariesThatAlreadyFailed = null;\n        var rootDoesHavePassiveEffects = false;\n        var rootWithPendingPassiveEffects = null;\n        var pendingPassiveEffectsLanes = NoLanes;\n        var pendingPassiveProfilerEffects = [];\n        var pendingPassiveTransitions = null;\n        var NESTED_UPDATE_LIMIT = 50;\n        var nestedUpdateCount = 0;\n        var rootWithNestedUpdates = null;\n        var isFlushingPassiveEffects = false;\n        var didScheduleUpdateDuringPassiveEffects = false;\n        var NESTED_PASSIVE_UPDATE_LIMIT = 50;\n        var nestedPassiveUpdateCount = 0;\n        var rootWithPassiveNestedUpdates = null;\n        var currentEventTime = NoTimestamp;\n        var currentEventTransitionLane = NoLanes;\n        var isRunningInsertionEffect = false;\n        function getWorkInProgressRoot() {\n          return workInProgressRoot;\n        }\n        function requestEventTime() {\n          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n            return now();\n          }\n          if (currentEventTime !== NoTimestamp) {\n            return currentEventTime;\n          }\n          currentEventTime = now();\n          return currentEventTime;\n        }\n        function requestUpdateLane(fiber) {\n          var mode = fiber.mode;\n          if ((mode & ConcurrentMode) === NoMode) {\n            return SyncLane;\n          } else if ((executionContext & RenderContext) !== NoContext && workInProgressRootRenderLanes !== NoLanes) {\n            return pickArbitraryLane(workInProgressRootRenderLanes);\n          }\n          var isTransition = requestCurrentTransition() !== NoTransition;\n          if (isTransition) {\n            if (ReactCurrentBatchConfig$3.transition !== null) {\n              var transition = ReactCurrentBatchConfig$3.transition;\n              if (!transition._updatedFibers) {\n                transition._updatedFibers = /* @__PURE__ */ new Set();\n              }\n              transition._updatedFibers.add(fiber);\n            }\n            if (currentEventTransitionLane === NoLane) {\n              currentEventTransitionLane = claimNextTransitionLane();\n            }\n            return currentEventTransitionLane;\n          }\n          var updateLane = getCurrentUpdatePriority();\n          if (updateLane !== NoLane) {\n            return updateLane;\n          }\n          var eventLane = getCurrentEventPriority();\n          return eventLane;\n        }\n        function requestRetryLane(fiber) {\n          var mode = fiber.mode;\n          if ((mode & ConcurrentMode) === NoMode) {\n            return SyncLane;\n          }\n          return claimNextRetryLane();\n        }\n        function scheduleUpdateOnFiber(root2, fiber, lane, eventTime) {\n          checkForNestedUpdates();\n          {\n            if (isRunningInsertionEffect) {\n              error(\"useInsertionEffect must not schedule updates.\");\n            }\n          }\n          {\n            if (isFlushingPassiveEffects) {\n              didScheduleUpdateDuringPassiveEffects = true;\n            }\n          }\n          markRootUpdated(root2, lane, eventTime);\n          if ((executionContext & RenderContext) !== NoLanes && root2 === workInProgressRoot) {\n            warnAboutRenderPhaseUpdatesInDEV(fiber);\n          } else {\n            {\n              if (isDevToolsPresent) {\n                addFiberToLanesMap(root2, fiber, lane);\n              }\n            }\n            warnIfUpdatesNotWrappedWithActDEV(fiber);\n            if (root2 === workInProgressRoot) {\n              if ((executionContext & RenderContext) === NoContext) {\n                workInProgressRootInterleavedUpdatedLanes = mergeLanes(workInProgressRootInterleavedUpdatedLanes, lane);\n              }\n              if (workInProgressRootExitStatus === RootSuspendedWithDelay) {\n                markRootSuspended$1(root2, workInProgressRootRenderLanes);\n              }\n            }\n            ensureRootIsScheduled(root2, eventTime);\n            if (lane === SyncLane && executionContext === NoContext && (fiber.mode & ConcurrentMode) === NoMode && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n            !ReactCurrentActQueue$1.isBatchingLegacy) {\n              resetRenderTimer();\n              flushSyncCallbacksOnlyInLegacyMode();\n            }\n          }\n        }\n        function scheduleInitialHydrationOnRoot(root2, lane, eventTime) {\n          var current2 = root2.current;\n          current2.lanes = lane;\n          markRootUpdated(root2, lane, eventTime);\n          ensureRootIsScheduled(root2, eventTime);\n        }\n        function isUnsafeClassRenderPhaseUpdate(fiber) {\n          return (\n            // TODO: Remove outdated deferRenderPhaseUpdateToNextBatch experiment. We\n            // decided not to enable it.\n            (executionContext & RenderContext) !== NoContext\n          );\n        }\n        function ensureRootIsScheduled(root2, currentTime) {\n          var existingCallbackNode = root2.callbackNode;\n          markStarvedLanesAsExpired(root2, currentTime);\n          var nextLanes = getNextLanes(root2, root2 === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n          if (nextLanes === NoLanes) {\n            if (existingCallbackNode !== null) {\n              cancelCallback$1(existingCallbackNode);\n            }\n            root2.callbackNode = null;\n            root2.callbackPriority = NoLane;\n            return;\n          }\n          var newCallbackPriority = getHighestPriorityLane(nextLanes);\n          var existingCallbackPriority = root2.callbackPriority;\n          if (existingCallbackPriority === newCallbackPriority && // Special case related to `act`. If the currently scheduled task is a\n          // Scheduler task, rather than an `act` task, cancel it and re-scheduled\n          // on the `act` queue.\n          !(ReactCurrentActQueue$1.current !== null && existingCallbackNode !== fakeActCallbackNode)) {\n            {\n              if (existingCallbackNode == null && existingCallbackPriority !== SyncLane) {\n                error(\"Expected scheduled callback to exist. This error is likely caused by a bug in React. Please file an issue.\");\n              }\n            }\n            return;\n          }\n          if (existingCallbackNode != null) {\n            cancelCallback$1(existingCallbackNode);\n          }\n          var newCallbackNode;\n          if (newCallbackPriority === SyncLane) {\n            if (root2.tag === LegacyRoot) {\n              if (ReactCurrentActQueue$1.isBatchingLegacy !== null) {\n                ReactCurrentActQueue$1.didScheduleLegacyUpdate = true;\n              }\n              scheduleLegacySyncCallback(performSyncWorkOnRoot.bind(null, root2));\n            } else {\n              scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root2));\n            }\n            {\n              if (ReactCurrentActQueue$1.current !== null) {\n                ReactCurrentActQueue$1.current.push(flushSyncCallbacks);\n              } else {\n                scheduleMicrotask(function() {\n                  if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n                    flushSyncCallbacks();\n                  }\n                });\n              }\n            }\n            newCallbackNode = null;\n          } else {\n            var schedulerPriorityLevel;\n            switch (lanesToEventPriority(nextLanes)) {\n              case DiscreteEventPriority:\n                schedulerPriorityLevel = ImmediatePriority;\n                break;\n              case ContinuousEventPriority:\n                schedulerPriorityLevel = UserBlockingPriority;\n                break;\n              case DefaultEventPriority:\n                schedulerPriorityLevel = NormalPriority;\n                break;\n              case IdleEventPriority:\n                schedulerPriorityLevel = IdlePriority;\n                break;\n              default:\n                schedulerPriorityLevel = NormalPriority;\n                break;\n            }\n            newCallbackNode = scheduleCallback$1(schedulerPriorityLevel, performConcurrentWorkOnRoot.bind(null, root2));\n          }\n          root2.callbackPriority = newCallbackPriority;\n          root2.callbackNode = newCallbackNode;\n        }\n        function performConcurrentWorkOnRoot(root2, didTimeout) {\n          {\n            resetNestedUpdateFlag();\n          }\n          currentEventTime = NoTimestamp;\n          currentEventTransitionLane = NoLanes;\n          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n            throw new Error(\"Should not already be working.\");\n          }\n          var originalCallbackNode = root2.callbackNode;\n          var didFlushPassiveEffects = flushPassiveEffects();\n          if (didFlushPassiveEffects) {\n            if (root2.callbackNode !== originalCallbackNode) {\n              return null;\n            }\n          }\n          var lanes = getNextLanes(root2, root2 === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n          if (lanes === NoLanes) {\n            return null;\n          }\n          var shouldTimeSlice = !includesBlockingLane(root2, lanes) && !includesExpiredLane(root2, lanes) && !didTimeout;\n          var exitStatus = shouldTimeSlice ? renderRootConcurrent(root2, lanes) : renderRootSync(root2, lanes);\n          if (exitStatus !== RootInProgress) {\n            if (exitStatus === RootErrored) {\n              var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root2);\n              if (errorRetryLanes !== NoLanes) {\n                lanes = errorRetryLanes;\n                exitStatus = recoverFromConcurrentError(root2, errorRetryLanes);\n              }\n            }\n            if (exitStatus === RootFatalErrored) {\n              var fatalError = workInProgressRootFatalError;\n              prepareFreshStack(root2, NoLanes);\n              markRootSuspended$1(root2, lanes);\n              ensureRootIsScheduled(root2, now());\n              throw fatalError;\n            }\n            if (exitStatus === RootDidNotComplete) {\n              markRootSuspended$1(root2, lanes);\n            } else {\n              var renderWasConcurrent = !includesBlockingLane(root2, lanes);\n              var finishedWork = root2.current.alternate;\n              if (renderWasConcurrent && !isRenderConsistentWithExternalStores(finishedWork)) {\n                exitStatus = renderRootSync(root2, lanes);\n                if (exitStatus === RootErrored) {\n                  var _errorRetryLanes = getLanesToRetrySynchronouslyOnError(root2);\n                  if (_errorRetryLanes !== NoLanes) {\n                    lanes = _errorRetryLanes;\n                    exitStatus = recoverFromConcurrentError(root2, _errorRetryLanes);\n                  }\n                }\n                if (exitStatus === RootFatalErrored) {\n                  var _fatalError = workInProgressRootFatalError;\n                  prepareFreshStack(root2, NoLanes);\n                  markRootSuspended$1(root2, lanes);\n                  ensureRootIsScheduled(root2, now());\n                  throw _fatalError;\n                }\n              }\n              root2.finishedWork = finishedWork;\n              root2.finishedLanes = lanes;\n              finishConcurrentRender(root2, exitStatus, lanes);\n            }\n          }\n          ensureRootIsScheduled(root2, now());\n          if (root2.callbackNode === originalCallbackNode) {\n            return performConcurrentWorkOnRoot.bind(null, root2);\n          }\n          return null;\n        }\n        function recoverFromConcurrentError(root2, errorRetryLanes) {\n          var errorsFromFirstAttempt = workInProgressRootConcurrentErrors;\n          if (isRootDehydrated(root2)) {\n            var rootWorkInProgress = prepareFreshStack(root2, errorRetryLanes);\n            rootWorkInProgress.flags |= ForceClientRender;\n            {\n              errorHydratingContainer(root2.containerInfo);\n            }\n          }\n          var exitStatus = renderRootSync(root2, errorRetryLanes);\n          if (exitStatus !== RootErrored) {\n            var errorsFromSecondAttempt = workInProgressRootRecoverableErrors;\n            workInProgressRootRecoverableErrors = errorsFromFirstAttempt;\n            if (errorsFromSecondAttempt !== null) {\n              queueRecoverableErrors(errorsFromSecondAttempt);\n            }\n          }\n          return exitStatus;\n        }\n        function queueRecoverableErrors(errors) {\n          if (workInProgressRootRecoverableErrors === null) {\n            workInProgressRootRecoverableErrors = errors;\n          } else {\n            workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors, errors);\n          }\n        }\n        function finishConcurrentRender(root2, exitStatus, lanes) {\n          switch (exitStatus) {\n            case RootInProgress:\n            case RootFatalErrored: {\n              throw new Error(\"Root did not complete. This is a bug in React.\");\n            }\n            case RootErrored: {\n              commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);\n              break;\n            }\n            case RootSuspended: {\n              markRootSuspended$1(root2, lanes);\n              if (includesOnlyRetries(lanes) && // do not delay if we're inside an act() scope\n              !shouldForceFlushFallbacksInDEV()) {\n                var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now();\n                if (msUntilTimeout > 10) {\n                  var nextLanes = getNextLanes(root2, NoLanes);\n                  if (nextLanes !== NoLanes) {\n                    break;\n                  }\n                  var suspendedLanes = root2.suspendedLanes;\n                  if (!isSubsetOfLanes(suspendedLanes, lanes)) {\n                    var eventTime = requestEventTime();\n                    markRootPinged(root2, suspendedLanes);\n                    break;\n                  }\n                  root2.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root2, workInProgressRootRecoverableErrors, workInProgressTransitions), msUntilTimeout);\n                  break;\n                }\n              }\n              commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);\n              break;\n            }\n            case RootSuspendedWithDelay: {\n              markRootSuspended$1(root2, lanes);\n              if (includesOnlyTransitions(lanes)) {\n                break;\n              }\n              if (!shouldForceFlushFallbacksInDEV()) {\n                var mostRecentEventTime = getMostRecentEventTime(root2, lanes);\n                var eventTimeMs = mostRecentEventTime;\n                var timeElapsedMs = now() - eventTimeMs;\n                var _msUntilTimeout = jnd(timeElapsedMs) - timeElapsedMs;\n                if (_msUntilTimeout > 10) {\n                  root2.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root2, workInProgressRootRecoverableErrors, workInProgressTransitions), _msUntilTimeout);\n                  break;\n                }\n              }\n              commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);\n              break;\n            }\n            case RootCompleted: {\n              commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);\n              break;\n            }\n            default: {\n              throw new Error(\"Unknown root exit status.\");\n            }\n          }\n        }\n        function isRenderConsistentWithExternalStores(finishedWork) {\n          var node = finishedWork;\n          while (true) {\n            if (node.flags & StoreConsistency) {\n              var updateQueue = node.updateQueue;\n              if (updateQueue !== null) {\n                var checks = updateQueue.stores;\n                if (checks !== null) {\n                  for (var i = 0; i < checks.length; i++) {\n                    var check = checks[i];\n                    var getSnapshot = check.getSnapshot;\n                    var renderedValue = check.value;\n                    try {\n                      if (!objectIs(getSnapshot(), renderedValue)) {\n                        return false;\n                      }\n                    } catch (error2) {\n                      return false;\n                    }\n                  }\n                }\n              }\n            }\n            var child = node.child;\n            if (node.subtreeFlags & StoreConsistency && child !== null) {\n              child.return = node;\n              node = child;\n              continue;\n            }\n            if (node === finishedWork) {\n              return true;\n            }\n            while (node.sibling === null) {\n              if (node.return === null || node.return === finishedWork) {\n                return true;\n              }\n              node = node.return;\n            }\n            node.sibling.return = node.return;\n            node = node.sibling;\n          }\n          return true;\n        }\n        function markRootSuspended$1(root2, suspendedLanes) {\n          suspendedLanes = removeLanes(suspendedLanes, workInProgressRootPingedLanes);\n          suspendedLanes = removeLanes(suspendedLanes, workInProgressRootInterleavedUpdatedLanes);\n          markRootSuspended(root2, suspendedLanes);\n        }\n        function performSyncWorkOnRoot(root2) {\n          {\n            syncNestedUpdateFlag();\n          }\n          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n            throw new Error(\"Should not already be working.\");\n          }\n          flushPassiveEffects();\n          var lanes = getNextLanes(root2, NoLanes);\n          if (!includesSomeLane(lanes, SyncLane)) {\n            ensureRootIsScheduled(root2, now());\n            return null;\n          }\n          var exitStatus = renderRootSync(root2, lanes);\n          if (root2.tag !== LegacyRoot && exitStatus === RootErrored) {\n            var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root2);\n            if (errorRetryLanes !== NoLanes) {\n              lanes = errorRetryLanes;\n              exitStatus = recoverFromConcurrentError(root2, errorRetryLanes);\n            }\n          }\n          if (exitStatus === RootFatalErrored) {\n            var fatalError = workInProgressRootFatalError;\n            prepareFreshStack(root2, NoLanes);\n            markRootSuspended$1(root2, lanes);\n            ensureRootIsScheduled(root2, now());\n            throw fatalError;\n          }\n          if (exitStatus === RootDidNotComplete) {\n            throw new Error(\"Root did not complete. This is a bug in React.\");\n          }\n          var finishedWork = root2.current.alternate;\n          root2.finishedWork = finishedWork;\n          root2.finishedLanes = lanes;\n          commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);\n          ensureRootIsScheduled(root2, now());\n          return null;\n        }\n        function flushRoot(root2, lanes) {\n          if (lanes !== NoLanes) {\n            markRootEntangled(root2, mergeLanes(lanes, SyncLane));\n            ensureRootIsScheduled(root2, now());\n            if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n              resetRenderTimer();\n              flushSyncCallbacks();\n            }\n          }\n        }\n        function batchedUpdates$1(fn, a) {\n          var prevExecutionContext = executionContext;\n          executionContext |= BatchedContext;\n          try {\n            return fn(a);\n          } finally {\n            executionContext = prevExecutionContext;\n            if (executionContext === NoContext && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n            !ReactCurrentActQueue$1.isBatchingLegacy) {\n              resetRenderTimer();\n              flushSyncCallbacksOnlyInLegacyMode();\n            }\n          }\n        }\n        function discreteUpdates(fn, a, b, c, d) {\n          var previousPriority = getCurrentUpdatePriority();\n          var prevTransition = ReactCurrentBatchConfig$3.transition;\n          try {\n            ReactCurrentBatchConfig$3.transition = null;\n            setCurrentUpdatePriority(DiscreteEventPriority);\n            return fn(a, b, c, d);\n          } finally {\n            setCurrentUpdatePriority(previousPriority);\n            ReactCurrentBatchConfig$3.transition = prevTransition;\n            if (executionContext === NoContext) {\n              resetRenderTimer();\n            }\n          }\n        }\n        function flushSync(fn) {\n          if (rootWithPendingPassiveEffects !== null && rootWithPendingPassiveEffects.tag === LegacyRoot && (executionContext & (RenderContext | CommitContext)) === NoContext) {\n            flushPassiveEffects();\n          }\n          var prevExecutionContext = executionContext;\n          executionContext |= BatchedContext;\n          var prevTransition = ReactCurrentBatchConfig$3.transition;\n          var previousPriority = getCurrentUpdatePriority();\n          try {\n            ReactCurrentBatchConfig$3.transition = null;\n            setCurrentUpdatePriority(DiscreteEventPriority);\n            if (fn) {\n              return fn();\n            } else {\n              return void 0;\n            }\n          } finally {\n            setCurrentUpdatePriority(previousPriority);\n            ReactCurrentBatchConfig$3.transition = prevTransition;\n            executionContext = prevExecutionContext;\n            if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n              flushSyncCallbacks();\n            }\n          }\n        }\n        function isAlreadyRendering() {\n          return (executionContext & (RenderContext | CommitContext)) !== NoContext;\n        }\n        function pushRenderLanes(fiber, lanes) {\n          push(subtreeRenderLanesCursor, subtreeRenderLanes, fiber);\n          subtreeRenderLanes = mergeLanes(subtreeRenderLanes, lanes);\n          workInProgressRootIncludedLanes = mergeLanes(workInProgressRootIncludedLanes, lanes);\n        }\n        function popRenderLanes(fiber) {\n          subtreeRenderLanes = subtreeRenderLanesCursor.current;\n          pop(subtreeRenderLanesCursor, fiber);\n        }\n        function prepareFreshStack(root2, lanes) {\n          root2.finishedWork = null;\n          root2.finishedLanes = NoLanes;\n          var timeoutHandle = root2.timeoutHandle;\n          if (timeoutHandle !== noTimeout) {\n            root2.timeoutHandle = noTimeout;\n            cancelTimeout(timeoutHandle);\n          }\n          if (workInProgress !== null) {\n            var interruptedWork = workInProgress.return;\n            while (interruptedWork !== null) {\n              var current2 = interruptedWork.alternate;\n              unwindInterruptedWork(current2, interruptedWork);\n              interruptedWork = interruptedWork.return;\n            }\n          }\n          workInProgressRoot = root2;\n          var rootWorkInProgress = createWorkInProgress(root2.current, null);\n          workInProgress = rootWorkInProgress;\n          workInProgressRootRenderLanes = subtreeRenderLanes = workInProgressRootIncludedLanes = lanes;\n          workInProgressRootExitStatus = RootInProgress;\n          workInProgressRootFatalError = null;\n          workInProgressRootSkippedLanes = NoLanes;\n          workInProgressRootInterleavedUpdatedLanes = NoLanes;\n          workInProgressRootPingedLanes = NoLanes;\n          workInProgressRootConcurrentErrors = null;\n          workInProgressRootRecoverableErrors = null;\n          finishQueueingConcurrentUpdates();\n          {\n            ReactStrictModeWarnings.discardPendingWarnings();\n          }\n          return rootWorkInProgress;\n        }\n        function handleError(root2, thrownValue) {\n          do {\n            var erroredWork = workInProgress;\n            try {\n              resetContextDependencies();\n              resetHooksAfterThrow();\n              resetCurrentFiber();\n              ReactCurrentOwner$2.current = null;\n              if (erroredWork === null || erroredWork.return === null) {\n                workInProgressRootExitStatus = RootFatalErrored;\n                workInProgressRootFatalError = thrownValue;\n                workInProgress = null;\n                return;\n              }\n              if (enableProfilerTimer && erroredWork.mode & ProfileMode) {\n                stopProfilerTimerIfRunningAndRecordDelta(erroredWork, true);\n              }\n              if (enableSchedulingProfiler) {\n                markComponentRenderStopped();\n                if (thrownValue !== null && typeof thrownValue === \"object\" && typeof thrownValue.then === \"function\") {\n                  var wakeable = thrownValue;\n                  markComponentSuspended(erroredWork, wakeable, workInProgressRootRenderLanes);\n                } else {\n                  markComponentErrored(erroredWork, thrownValue, workInProgressRootRenderLanes);\n                }\n              }\n              throwException(root2, erroredWork.return, erroredWork, thrownValue, workInProgressRootRenderLanes);\n              completeUnitOfWork(erroredWork);\n            } catch (yetAnotherThrownValue) {\n              thrownValue = yetAnotherThrownValue;\n              if (workInProgress === erroredWork && erroredWork !== null) {\n                erroredWork = erroredWork.return;\n                workInProgress = erroredWork;\n              } else {\n                erroredWork = workInProgress;\n              }\n              continue;\n            }\n            return;\n          } while (true);\n        }\n        function pushDispatcher() {\n          var prevDispatcher = ReactCurrentDispatcher$2.current;\n          ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;\n          if (prevDispatcher === null) {\n            return ContextOnlyDispatcher;\n          } else {\n            return prevDispatcher;\n          }\n        }\n        function popDispatcher(prevDispatcher) {\n          ReactCurrentDispatcher$2.current = prevDispatcher;\n        }\n        function markCommitTimeOfFallback() {\n          globalMostRecentFallbackTime = now();\n        }\n        function markSkippedUpdateLanes(lane) {\n          workInProgressRootSkippedLanes = mergeLanes(lane, workInProgressRootSkippedLanes);\n        }\n        function renderDidSuspend() {\n          if (workInProgressRootExitStatus === RootInProgress) {\n            workInProgressRootExitStatus = RootSuspended;\n          }\n        }\n        function renderDidSuspendDelayIfPossible() {\n          if (workInProgressRootExitStatus === RootInProgress || workInProgressRootExitStatus === RootSuspended || workInProgressRootExitStatus === RootErrored) {\n            workInProgressRootExitStatus = RootSuspendedWithDelay;\n          }\n          if (workInProgressRoot !== null && (includesNonIdleWork(workInProgressRootSkippedLanes) || includesNonIdleWork(workInProgressRootInterleavedUpdatedLanes))) {\n            markRootSuspended$1(workInProgressRoot, workInProgressRootRenderLanes);\n          }\n        }\n        function renderDidError(error2) {\n          if (workInProgressRootExitStatus !== RootSuspendedWithDelay) {\n            workInProgressRootExitStatus = RootErrored;\n          }\n          if (workInProgressRootConcurrentErrors === null) {\n            workInProgressRootConcurrentErrors = [error2];\n          } else {\n            workInProgressRootConcurrentErrors.push(error2);\n          }\n        }\n        function renderHasNotSuspendedYet() {\n          return workInProgressRootExitStatus === RootInProgress;\n        }\n        function renderRootSync(root2, lanes) {\n          var prevExecutionContext = executionContext;\n          executionContext |= RenderContext;\n          var prevDispatcher = pushDispatcher();\n          if (workInProgressRoot !== root2 || workInProgressRootRenderLanes !== lanes) {\n            {\n              if (isDevToolsPresent) {\n                var memoizedUpdaters = root2.memoizedUpdaters;\n                if (memoizedUpdaters.size > 0) {\n                  restorePendingUpdaters(root2, workInProgressRootRenderLanes);\n                  memoizedUpdaters.clear();\n                }\n                movePendingFibersToMemoized(root2, lanes);\n              }\n            }\n            workInProgressTransitions = getTransitionsForLanes();\n            prepareFreshStack(root2, lanes);\n          }\n          {\n            markRenderStarted(lanes);\n          }\n          do {\n            try {\n              workLoopSync();\n              break;\n            } catch (thrownValue) {\n              handleError(root2, thrownValue);\n            }\n          } while (true);\n          resetContextDependencies();\n          executionContext = prevExecutionContext;\n          popDispatcher(prevDispatcher);\n          if (workInProgress !== null) {\n            throw new Error(\"Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          {\n            markRenderStopped();\n          }\n          workInProgressRoot = null;\n          workInProgressRootRenderLanes = NoLanes;\n          return workInProgressRootExitStatus;\n        }\n        function workLoopSync() {\n          while (workInProgress !== null) {\n            performUnitOfWork(workInProgress);\n          }\n        }\n        function renderRootConcurrent(root2, lanes) {\n          var prevExecutionContext = executionContext;\n          executionContext |= RenderContext;\n          var prevDispatcher = pushDispatcher();\n          if (workInProgressRoot !== root2 || workInProgressRootRenderLanes !== lanes) {\n            {\n              if (isDevToolsPresent) {\n                var memoizedUpdaters = root2.memoizedUpdaters;\n                if (memoizedUpdaters.size > 0) {\n                  restorePendingUpdaters(root2, workInProgressRootRenderLanes);\n                  memoizedUpdaters.clear();\n                }\n                movePendingFibersToMemoized(root2, lanes);\n              }\n            }\n            workInProgressTransitions = getTransitionsForLanes();\n            resetRenderTimer();\n            prepareFreshStack(root2, lanes);\n          }\n          {\n            markRenderStarted(lanes);\n          }\n          do {\n            try {\n              workLoopConcurrent();\n              break;\n            } catch (thrownValue) {\n              handleError(root2, thrownValue);\n            }\n          } while (true);\n          resetContextDependencies();\n          popDispatcher(prevDispatcher);\n          executionContext = prevExecutionContext;\n          if (workInProgress !== null) {\n            {\n              markRenderYielded();\n            }\n            return RootInProgress;\n          } else {\n            {\n              markRenderStopped();\n            }\n            workInProgressRoot = null;\n            workInProgressRootRenderLanes = NoLanes;\n            return workInProgressRootExitStatus;\n          }\n        }\n        function workLoopConcurrent() {\n          while (workInProgress !== null && !shouldYield()) {\n            performUnitOfWork(workInProgress);\n          }\n        }\n        function performUnitOfWork(unitOfWork) {\n          var current2 = unitOfWork.alternate;\n          setCurrentFiber(unitOfWork);\n          var next;\n          if ((unitOfWork.mode & ProfileMode) !== NoMode) {\n            startProfilerTimer(unitOfWork);\n            next = beginWork$1(current2, unitOfWork, subtreeRenderLanes);\n            stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true);\n          } else {\n            next = beginWork$1(current2, unitOfWork, subtreeRenderLanes);\n          }\n          resetCurrentFiber();\n          unitOfWork.memoizedProps = unitOfWork.pendingProps;\n          if (next === null) {\n            completeUnitOfWork(unitOfWork);\n          } else {\n            workInProgress = next;\n          }\n          ReactCurrentOwner$2.current = null;\n        }\n        function completeUnitOfWork(unitOfWork) {\n          var completedWork = unitOfWork;\n          do {\n            var current2 = completedWork.alternate;\n            var returnFiber = completedWork.return;\n            if ((completedWork.flags & Incomplete) === NoFlags) {\n              setCurrentFiber(completedWork);\n              var next = void 0;\n              if ((completedWork.mode & ProfileMode) === NoMode) {\n                next = completeWork(current2, completedWork, subtreeRenderLanes);\n              } else {\n                startProfilerTimer(completedWork);\n                next = completeWork(current2, completedWork, subtreeRenderLanes);\n                stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);\n              }\n              resetCurrentFiber();\n              if (next !== null) {\n                workInProgress = next;\n                return;\n              }\n            } else {\n              var _next = unwindWork(current2, completedWork);\n              if (_next !== null) {\n                _next.flags &= HostEffectMask;\n                workInProgress = _next;\n                return;\n              }\n              if ((completedWork.mode & ProfileMode) !== NoMode) {\n                stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);\n                var actualDuration = completedWork.actualDuration;\n                var child = completedWork.child;\n                while (child !== null) {\n                  actualDuration += child.actualDuration;\n                  child = child.sibling;\n                }\n                completedWork.actualDuration = actualDuration;\n              }\n              if (returnFiber !== null) {\n                returnFiber.flags |= Incomplete;\n                returnFiber.subtreeFlags = NoFlags;\n                returnFiber.deletions = null;\n              } else {\n                workInProgressRootExitStatus = RootDidNotComplete;\n                workInProgress = null;\n                return;\n              }\n            }\n            var siblingFiber = completedWork.sibling;\n            if (siblingFiber !== null) {\n              workInProgress = siblingFiber;\n              return;\n            }\n            completedWork = returnFiber;\n            workInProgress = completedWork;\n          } while (completedWork !== null);\n          if (workInProgressRootExitStatus === RootInProgress) {\n            workInProgressRootExitStatus = RootCompleted;\n          }\n        }\n        function commitRoot(root2, recoverableErrors, transitions) {\n          var previousUpdateLanePriority = getCurrentUpdatePriority();\n          var prevTransition = ReactCurrentBatchConfig$3.transition;\n          try {\n            ReactCurrentBatchConfig$3.transition = null;\n            setCurrentUpdatePriority(DiscreteEventPriority);\n            commitRootImpl(root2, recoverableErrors, transitions, previousUpdateLanePriority);\n          } finally {\n            ReactCurrentBatchConfig$3.transition = prevTransition;\n            setCurrentUpdatePriority(previousUpdateLanePriority);\n          }\n          return null;\n        }\n        function commitRootImpl(root2, recoverableErrors, transitions, renderPriorityLevel) {\n          do {\n            flushPassiveEffects();\n          } while (rootWithPendingPassiveEffects !== null);\n          flushRenderPhaseStrictModeWarningsInDEV();\n          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n            throw new Error(\"Should not already be working.\");\n          }\n          var finishedWork = root2.finishedWork;\n          var lanes = root2.finishedLanes;\n          {\n            markCommitStarted(lanes);\n          }\n          if (finishedWork === null) {\n            {\n              markCommitStopped();\n            }\n            return null;\n          } else {\n            {\n              if (lanes === NoLanes) {\n                error(\"root.finishedLanes should not be empty during a commit. This is a bug in React.\");\n              }\n            }\n          }\n          root2.finishedWork = null;\n          root2.finishedLanes = NoLanes;\n          if (finishedWork === root2.current) {\n            throw new Error(\"Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          root2.callbackNode = null;\n          root2.callbackPriority = NoLane;\n          var remainingLanes = mergeLanes(finishedWork.lanes, finishedWork.childLanes);\n          markRootFinished(root2, remainingLanes);\n          if (root2 === workInProgressRoot) {\n            workInProgressRoot = null;\n            workInProgress = null;\n            workInProgressRootRenderLanes = NoLanes;\n          }\n          if ((finishedWork.subtreeFlags & PassiveMask) !== NoFlags || (finishedWork.flags & PassiveMask) !== NoFlags) {\n            if (!rootDoesHavePassiveEffects) {\n              rootDoesHavePassiveEffects = true;\n              pendingPassiveTransitions = transitions;\n              scheduleCallback$1(NormalPriority, function() {\n                flushPassiveEffects();\n                return null;\n              });\n            }\n          }\n          var subtreeHasEffects = (finishedWork.subtreeFlags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n          var rootHasEffect = (finishedWork.flags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n          if (subtreeHasEffects || rootHasEffect) {\n            var prevTransition = ReactCurrentBatchConfig$3.transition;\n            ReactCurrentBatchConfig$3.transition = null;\n            var previousPriority = getCurrentUpdatePriority();\n            setCurrentUpdatePriority(DiscreteEventPriority);\n            var prevExecutionContext = executionContext;\n            executionContext |= CommitContext;\n            ReactCurrentOwner$2.current = null;\n            var shouldFireAfterActiveInstanceBlur2 = commitBeforeMutationEffects(root2, finishedWork);\n            {\n              recordCommitTime();\n            }\n            commitMutationEffects(root2, finishedWork, lanes);\n            resetAfterCommit(root2.containerInfo);\n            root2.current = finishedWork;\n            {\n              markLayoutEffectsStarted(lanes);\n            }\n            commitLayoutEffects(finishedWork, root2, lanes);\n            {\n              markLayoutEffectsStopped();\n            }\n            requestPaint();\n            executionContext = prevExecutionContext;\n            setCurrentUpdatePriority(previousPriority);\n            ReactCurrentBatchConfig$3.transition = prevTransition;\n          } else {\n            root2.current = finishedWork;\n            {\n              recordCommitTime();\n            }\n          }\n          var rootDidHavePassiveEffects = rootDoesHavePassiveEffects;\n          if (rootDoesHavePassiveEffects) {\n            rootDoesHavePassiveEffects = false;\n            rootWithPendingPassiveEffects = root2;\n            pendingPassiveEffectsLanes = lanes;\n          } else {\n            {\n              nestedPassiveUpdateCount = 0;\n              rootWithPassiveNestedUpdates = null;\n            }\n          }\n          remainingLanes = root2.pendingLanes;\n          if (remainingLanes === NoLanes) {\n            legacyErrorBoundariesThatAlreadyFailed = null;\n          }\n          {\n            if (!rootDidHavePassiveEffects) {\n              commitDoubleInvokeEffectsInDEV(root2.current, false);\n            }\n          }\n          onCommitRoot(finishedWork.stateNode, renderPriorityLevel);\n          {\n            if (isDevToolsPresent) {\n              root2.memoizedUpdaters.clear();\n            }\n          }\n          {\n            onCommitRoot$1();\n          }\n          ensureRootIsScheduled(root2, now());\n          if (recoverableErrors !== null) {\n            var onRecoverableError = root2.onRecoverableError;\n            for (var i = 0; i < recoverableErrors.length; i++) {\n              var recoverableError = recoverableErrors[i];\n              var componentStack = recoverableError.stack;\n              var digest = recoverableError.digest;\n              onRecoverableError(recoverableError.value, {\n                componentStack,\n                digest\n              });\n            }\n          }\n          if (hasUncaughtError) {\n            hasUncaughtError = false;\n            var error$1 = firstUncaughtError;\n            firstUncaughtError = null;\n            throw error$1;\n          }\n          if (includesSomeLane(pendingPassiveEffectsLanes, SyncLane) && root2.tag !== LegacyRoot) {\n            flushPassiveEffects();\n          }\n          remainingLanes = root2.pendingLanes;\n          if (includesSomeLane(remainingLanes, SyncLane)) {\n            {\n              markNestedUpdateScheduled();\n            }\n            if (root2 === rootWithNestedUpdates) {\n              nestedUpdateCount++;\n            } else {\n              nestedUpdateCount = 0;\n              rootWithNestedUpdates = root2;\n            }\n          } else {\n            nestedUpdateCount = 0;\n          }\n          flushSyncCallbacks();\n          {\n            markCommitStopped();\n          }\n          return null;\n        }\n        function flushPassiveEffects() {\n          if (rootWithPendingPassiveEffects !== null) {\n            var renderPriority = lanesToEventPriority(pendingPassiveEffectsLanes);\n            var priority = lowerEventPriority(DefaultEventPriority, renderPriority);\n            var prevTransition = ReactCurrentBatchConfig$3.transition;\n            var previousPriority = getCurrentUpdatePriority();\n            try {\n              ReactCurrentBatchConfig$3.transition = null;\n              setCurrentUpdatePriority(priority);\n              return flushPassiveEffectsImpl();\n            } finally {\n              setCurrentUpdatePriority(previousPriority);\n              ReactCurrentBatchConfig$3.transition = prevTransition;\n            }\n          }\n          return false;\n        }\n        function enqueuePendingPassiveProfilerEffect(fiber) {\n          {\n            pendingPassiveProfilerEffects.push(fiber);\n            if (!rootDoesHavePassiveEffects) {\n              rootDoesHavePassiveEffects = true;\n              scheduleCallback$1(NormalPriority, function() {\n                flushPassiveEffects();\n                return null;\n              });\n            }\n          }\n        }\n        function flushPassiveEffectsImpl() {\n          if (rootWithPendingPassiveEffects === null) {\n            return false;\n          }\n          var transitions = pendingPassiveTransitions;\n          pendingPassiveTransitions = null;\n          var root2 = rootWithPendingPassiveEffects;\n          var lanes = pendingPassiveEffectsLanes;\n          rootWithPendingPassiveEffects = null;\n          pendingPassiveEffectsLanes = NoLanes;\n          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n            throw new Error(\"Cannot flush passive effects while already rendering.\");\n          }\n          {\n            isFlushingPassiveEffects = true;\n            didScheduleUpdateDuringPassiveEffects = false;\n          }\n          {\n            markPassiveEffectsStarted(lanes);\n          }\n          var prevExecutionContext = executionContext;\n          executionContext |= CommitContext;\n          commitPassiveUnmountEffects(root2.current);\n          commitPassiveMountEffects(root2, root2.current, lanes, transitions);\n          {\n            var profilerEffects = pendingPassiveProfilerEffects;\n            pendingPassiveProfilerEffects = [];\n            for (var i = 0; i < profilerEffects.length; i++) {\n              var _fiber = profilerEffects[i];\n              commitPassiveEffectDurations(root2, _fiber);\n            }\n          }\n          {\n            markPassiveEffectsStopped();\n          }\n          {\n            commitDoubleInvokeEffectsInDEV(root2.current, true);\n          }\n          executionContext = prevExecutionContext;\n          flushSyncCallbacks();\n          {\n            if (didScheduleUpdateDuringPassiveEffects) {\n              if (root2 === rootWithPassiveNestedUpdates) {\n                nestedPassiveUpdateCount++;\n              } else {\n                nestedPassiveUpdateCount = 0;\n                rootWithPassiveNestedUpdates = root2;\n              }\n            } else {\n              nestedPassiveUpdateCount = 0;\n            }\n            isFlushingPassiveEffects = false;\n            didScheduleUpdateDuringPassiveEffects = false;\n          }\n          onPostCommitRoot(root2);\n          {\n            var stateNode = root2.current.stateNode;\n            stateNode.effectDuration = 0;\n            stateNode.passiveEffectDuration = 0;\n          }\n          return true;\n        }\n        function isAlreadyFailedLegacyErrorBoundary(instance) {\n          return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);\n        }\n        function markLegacyErrorBoundaryAsFailed(instance) {\n          if (legacyErrorBoundariesThatAlreadyFailed === null) {\n            legacyErrorBoundariesThatAlreadyFailed = /* @__PURE__ */ new Set([instance]);\n          } else {\n            legacyErrorBoundariesThatAlreadyFailed.add(instance);\n          }\n        }\n        function prepareToThrowUncaughtError(error2) {\n          if (!hasUncaughtError) {\n            hasUncaughtError = true;\n            firstUncaughtError = error2;\n          }\n        }\n        var onUncaughtError = prepareToThrowUncaughtError;\n        function captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error2) {\n          var errorInfo = createCapturedValueAtFiber(error2, sourceFiber);\n          var update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);\n          var root2 = enqueueUpdate(rootFiber, update, SyncLane);\n          var eventTime = requestEventTime();\n          if (root2 !== null) {\n            markRootUpdated(root2, SyncLane, eventTime);\n            ensureRootIsScheduled(root2, eventTime);\n          }\n        }\n        function captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error$1) {\n          {\n            reportUncaughtErrorInDEV(error$1);\n            setIsRunningInsertionEffect(false);\n          }\n          if (sourceFiber.tag === HostRoot) {\n            captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error$1);\n            return;\n          }\n          var fiber = null;\n          {\n            fiber = nearestMountedAncestor;\n          }\n          while (fiber !== null) {\n            if (fiber.tag === HostRoot) {\n              captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error$1);\n              return;\n            } else if (fiber.tag === ClassComponent) {\n              var ctor = fiber.type;\n              var instance = fiber.stateNode;\n              if (typeof ctor.getDerivedStateFromError === \"function\" || typeof instance.componentDidCatch === \"function\" && !isAlreadyFailedLegacyErrorBoundary(instance)) {\n                var errorInfo = createCapturedValueAtFiber(error$1, sourceFiber);\n                var update = createClassErrorUpdate(fiber, errorInfo, SyncLane);\n                var root2 = enqueueUpdate(fiber, update, SyncLane);\n                var eventTime = requestEventTime();\n                if (root2 !== null) {\n                  markRootUpdated(root2, SyncLane, eventTime);\n                  ensureRootIsScheduled(root2, eventTime);\n                }\n                return;\n              }\n            }\n            fiber = fiber.return;\n          }\n          {\n            error(\"Internal React error: Attempted to capture a commit phase error inside a detached tree. This indicates a bug in React. Likely causes include deleting the same fiber more than once, committing an already-finished tree, or an inconsistent return pointer.\\n\\nError message:\\n\\n%s\", error$1);\n          }\n        }\n        function pingSuspendedRoot(root2, wakeable, pingedLanes) {\n          var pingCache = root2.pingCache;\n          if (pingCache !== null) {\n            pingCache.delete(wakeable);\n          }\n          var eventTime = requestEventTime();\n          markRootPinged(root2, pingedLanes);\n          warnIfSuspenseResolutionNotWrappedWithActDEV(root2);\n          if (workInProgressRoot === root2 && isSubsetOfLanes(workInProgressRootRenderLanes, pingedLanes)) {\n            if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && includesOnlyRetries(workInProgressRootRenderLanes) && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {\n              prepareFreshStack(root2, NoLanes);\n            } else {\n              workInProgressRootPingedLanes = mergeLanes(workInProgressRootPingedLanes, pingedLanes);\n            }\n          }\n          ensureRootIsScheduled(root2, eventTime);\n        }\n        function retryTimedOutBoundary(boundaryFiber, retryLane) {\n          if (retryLane === NoLane) {\n            retryLane = requestRetryLane(boundaryFiber);\n          }\n          var eventTime = requestEventTime();\n          var root2 = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n          if (root2 !== null) {\n            markRootUpdated(root2, retryLane, eventTime);\n            ensureRootIsScheduled(root2, eventTime);\n          }\n        }\n        function retryDehydratedSuspenseBoundary(boundaryFiber) {\n          var suspenseState = boundaryFiber.memoizedState;\n          var retryLane = NoLane;\n          if (suspenseState !== null) {\n            retryLane = suspenseState.retryLane;\n          }\n          retryTimedOutBoundary(boundaryFiber, retryLane);\n        }\n        function resolveRetryWakeable(boundaryFiber, wakeable) {\n          var retryLane = NoLane;\n          var retryCache;\n          switch (boundaryFiber.tag) {\n            case SuspenseComponent:\n              retryCache = boundaryFiber.stateNode;\n              var suspenseState = boundaryFiber.memoizedState;\n              if (suspenseState !== null) {\n                retryLane = suspenseState.retryLane;\n              }\n              break;\n            case SuspenseListComponent:\n              retryCache = boundaryFiber.stateNode;\n              break;\n            default:\n              throw new Error(\"Pinged unknown suspense boundary type. This is probably a bug in React.\");\n          }\n          if (retryCache !== null) {\n            retryCache.delete(wakeable);\n          }\n          retryTimedOutBoundary(boundaryFiber, retryLane);\n        }\n        function jnd(timeElapsed) {\n          return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3e3 ? 3e3 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960;\n        }\n        function checkForNestedUpdates() {\n          if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {\n            nestedUpdateCount = 0;\n            rootWithNestedUpdates = null;\n            throw new Error(\"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\");\n          }\n          {\n            if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) {\n              nestedPassiveUpdateCount = 0;\n              rootWithPassiveNestedUpdates = null;\n              error(\"Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.\");\n            }\n          }\n        }\n        function flushRenderPhaseStrictModeWarningsInDEV() {\n          {\n            ReactStrictModeWarnings.flushLegacyContextWarning();\n            {\n              ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();\n            }\n          }\n        }\n        function commitDoubleInvokeEffectsInDEV(fiber, hasPassiveEffects) {\n          {\n            setCurrentFiber(fiber);\n            invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectUnmountInDEV);\n            if (hasPassiveEffects) {\n              invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectUnmountInDEV);\n            }\n            invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectMountInDEV);\n            if (hasPassiveEffects) {\n              invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectMountInDEV);\n            }\n            resetCurrentFiber();\n          }\n        }\n        function invokeEffectsInDev(firstChild, fiberFlags, invokeEffectFn) {\n          {\n            var current2 = firstChild;\n            var subtreeRoot = null;\n            while (current2 !== null) {\n              var primarySubtreeFlag = current2.subtreeFlags & fiberFlags;\n              if (current2 !== subtreeRoot && current2.child !== null && primarySubtreeFlag !== NoFlags) {\n                current2 = current2.child;\n              } else {\n                if ((current2.flags & fiberFlags) !== NoFlags) {\n                  invokeEffectFn(current2);\n                }\n                if (current2.sibling !== null) {\n                  current2 = current2.sibling;\n                } else {\n                  current2 = subtreeRoot = current2.return;\n                }\n              }\n            }\n          }\n        }\n        var didWarnStateUpdateForNotYetMountedComponent = null;\n        function warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {\n          {\n            if ((executionContext & RenderContext) !== NoContext) {\n              return;\n            }\n            if (!(fiber.mode & ConcurrentMode)) {\n              return;\n            }\n            var tag = fiber.tag;\n            if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent) {\n              return;\n            }\n            var componentName = getComponentNameFromFiber(fiber) || \"ReactComponent\";\n            if (didWarnStateUpdateForNotYetMountedComponent !== null) {\n              if (didWarnStateUpdateForNotYetMountedComponent.has(componentName)) {\n                return;\n              }\n              didWarnStateUpdateForNotYetMountedComponent.add(componentName);\n            } else {\n              didWarnStateUpdateForNotYetMountedComponent = /* @__PURE__ */ new Set([componentName]);\n            }\n            var previousFiber = current;\n            try {\n              setCurrentFiber(fiber);\n              error(\"Can't perform a React state update on a component that hasn't mounted yet. This indicates that you have a side-effect in your render function that asynchronously later calls tries to update the component. Move this work to useEffect instead.\");\n            } finally {\n              if (previousFiber) {\n                setCurrentFiber(fiber);\n              } else {\n                resetCurrentFiber();\n              }\n            }\n          }\n        }\n        var beginWork$1;\n        {\n          var dummyFiber = null;\n          beginWork$1 = function(current2, unitOfWork, lanes) {\n            var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork);\n            try {\n              return beginWork(current2, unitOfWork, lanes);\n            } catch (originalError) {\n              if (didSuspendOrErrorWhileHydratingDEV() || originalError !== null && typeof originalError === \"object\" && typeof originalError.then === \"function\") {\n                throw originalError;\n              }\n              resetContextDependencies();\n              resetHooksAfterThrow();\n              unwindInterruptedWork(current2, unitOfWork);\n              assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy);\n              if (unitOfWork.mode & ProfileMode) {\n                startProfilerTimer(unitOfWork);\n              }\n              invokeGuardedCallback(null, beginWork, null, current2, unitOfWork, lanes);\n              if (hasCaughtError()) {\n                var replayError = clearCaughtError();\n                if (typeof replayError === \"object\" && replayError !== null && replayError._suppressLogging && typeof originalError === \"object\" && originalError !== null && !originalError._suppressLogging) {\n                  originalError._suppressLogging = true;\n                }\n              }\n              throw originalError;\n            }\n          };\n        }\n        var didWarnAboutUpdateInRender = false;\n        var didWarnAboutUpdateInRenderForAnotherComponent;\n        {\n          didWarnAboutUpdateInRenderForAnotherComponent = /* @__PURE__ */ new Set();\n        }\n        function warnAboutRenderPhaseUpdatesInDEV(fiber) {\n          {\n            if (isRendering && !getIsUpdatingOpaqueValueInRenderPhaseInDEV()) {\n              switch (fiber.tag) {\n                case FunctionComponent:\n                case ForwardRef:\n                case SimpleMemoComponent: {\n                  var renderingComponentName = workInProgress && getComponentNameFromFiber(workInProgress) || \"Unknown\";\n                  var dedupeKey = renderingComponentName;\n                  if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) {\n                    didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);\n                    var setStateComponentName = getComponentNameFromFiber(fiber) || \"Unknown\";\n                    error(\"Cannot update a component (`%s`) while rendering a different component (`%s`). To locate the bad setState() call inside `%s`, follow the stack trace as described in https://reactjs.org/link/setstate-in-render\", setStateComponentName, renderingComponentName, renderingComponentName);\n                  }\n                  break;\n                }\n                case ClassComponent: {\n                  if (!didWarnAboutUpdateInRender) {\n                    error(\"Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state.\");\n                    didWarnAboutUpdateInRender = true;\n                  }\n                  break;\n                }\n              }\n            }\n          }\n        }\n        function restorePendingUpdaters(root2, lanes) {\n          {\n            if (isDevToolsPresent) {\n              var memoizedUpdaters = root2.memoizedUpdaters;\n              memoizedUpdaters.forEach(function(schedulingFiber) {\n                addFiberToLanesMap(root2, schedulingFiber, lanes);\n              });\n            }\n          }\n        }\n        var fakeActCallbackNode = {};\n        function scheduleCallback$1(priorityLevel, callback) {\n          {\n            var actQueue = ReactCurrentActQueue$1.current;\n            if (actQueue !== null) {\n              actQueue.push(callback);\n              return fakeActCallbackNode;\n            } else {\n              return scheduleCallback(priorityLevel, callback);\n            }\n          }\n        }\n        function cancelCallback$1(callbackNode) {\n          if (callbackNode === fakeActCallbackNode) {\n            return;\n          }\n          return cancelCallback(callbackNode);\n        }\n        function shouldForceFlushFallbacksInDEV() {\n          return ReactCurrentActQueue$1.current !== null;\n        }\n        function warnIfUpdatesNotWrappedWithActDEV(fiber) {\n          {\n            if (fiber.mode & ConcurrentMode) {\n              if (!isConcurrentActEnvironment()) {\n                return;\n              }\n            } else {\n              if (!isLegacyActEnvironment()) {\n                return;\n              }\n              if (executionContext !== NoContext) {\n                return;\n              }\n              if (fiber.tag !== FunctionComponent && fiber.tag !== ForwardRef && fiber.tag !== SimpleMemoComponent) {\n                return;\n              }\n            }\n            if (ReactCurrentActQueue$1.current === null) {\n              var previousFiber = current;\n              try {\n                setCurrentFiber(fiber);\n                error(\"An update to %s inside a test was not wrapped in act(...).\\n\\nWhen testing, code that causes React state updates should be wrapped into act(...):\\n\\nact(() => {\\n  /* fire events that update state */\\n});\\n/* assert on the output */\\n\\nThis ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act\", getComponentNameFromFiber(fiber));\n              } finally {\n                if (previousFiber) {\n                  setCurrentFiber(fiber);\n                } else {\n                  resetCurrentFiber();\n                }\n              }\n            }\n          }\n        }\n        function warnIfSuspenseResolutionNotWrappedWithActDEV(root2) {\n          {\n            if (root2.tag !== LegacyRoot && isConcurrentActEnvironment() && ReactCurrentActQueue$1.current === null) {\n              error(\"A suspended resource finished loading inside a test, but the event was not wrapped in act(...).\\n\\nWhen testing, code that resolves suspended data should be wrapped into act(...):\\n\\nact(() => {\\n  /* finish loading suspended data */\\n});\\n/* assert on the output */\\n\\nThis ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act\");\n            }\n          }\n        }\n        function setIsRunningInsertionEffect(isRunning) {\n          {\n            isRunningInsertionEffect = isRunning;\n          }\n        }\n        var resolveFamily = null;\n        var failedBoundaries = null;\n        var setRefreshHandler = function(handler) {\n          {\n            resolveFamily = handler;\n          }\n        };\n        function resolveFunctionForHotReloading(type) {\n          {\n            if (resolveFamily === null) {\n              return type;\n            }\n            var family = resolveFamily(type);\n            if (family === void 0) {\n              return type;\n            }\n            return family.current;\n          }\n        }\n        function resolveClassForHotReloading(type) {\n          return resolveFunctionForHotReloading(type);\n        }\n        function resolveForwardRefForHotReloading(type) {\n          {\n            if (resolveFamily === null) {\n              return type;\n            }\n            var family = resolveFamily(type);\n            if (family === void 0) {\n              if (type !== null && type !== void 0 && typeof type.render === \"function\") {\n                var currentRender = resolveFunctionForHotReloading(type.render);\n                if (type.render !== currentRender) {\n                  var syntheticType = {\n                    $$typeof: REACT_FORWARD_REF_TYPE,\n                    render: currentRender\n                  };\n                  if (type.displayName !== void 0) {\n                    syntheticType.displayName = type.displayName;\n                  }\n                  return syntheticType;\n                }\n              }\n              return type;\n            }\n            return family.current;\n          }\n        }\n        function isCompatibleFamilyForHotReloading(fiber, element) {\n          {\n            if (resolveFamily === null) {\n              return false;\n            }\n            var prevType = fiber.elementType;\n            var nextType = element.type;\n            var needsCompareFamilies = false;\n            var $$typeofNextType = typeof nextType === \"object\" && nextType !== null ? nextType.$$typeof : null;\n            switch (fiber.tag) {\n              case ClassComponent: {\n                if (typeof nextType === \"function\") {\n                  needsCompareFamilies = true;\n                }\n                break;\n              }\n              case FunctionComponent: {\n                if (typeof nextType === \"function\") {\n                  needsCompareFamilies = true;\n                } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n                  needsCompareFamilies = true;\n                }\n                break;\n              }\n              case ForwardRef: {\n                if ($$typeofNextType === REACT_FORWARD_REF_TYPE) {\n                  needsCompareFamilies = true;\n                } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n                  needsCompareFamilies = true;\n                }\n                break;\n              }\n              case MemoComponent:\n              case SimpleMemoComponent: {\n                if ($$typeofNextType === REACT_MEMO_TYPE) {\n                  needsCompareFamilies = true;\n                } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n                  needsCompareFamilies = true;\n                }\n                break;\n              }\n              default:\n                return false;\n            }\n            if (needsCompareFamilies) {\n              var prevFamily = resolveFamily(prevType);\n              if (prevFamily !== void 0 && prevFamily === resolveFamily(nextType)) {\n                return true;\n              }\n            }\n            return false;\n          }\n        }\n        function markFailedErrorBoundaryForHotReloading(fiber) {\n          {\n            if (resolveFamily === null) {\n              return;\n            }\n            if (typeof WeakSet !== \"function\") {\n              return;\n            }\n            if (failedBoundaries === null) {\n              failedBoundaries = /* @__PURE__ */ new WeakSet();\n            }\n            failedBoundaries.add(fiber);\n          }\n        }\n        var scheduleRefresh = function(root2, update) {\n          {\n            if (resolveFamily === null) {\n              return;\n            }\n            var staleFamilies = update.staleFamilies, updatedFamilies = update.updatedFamilies;\n            flushPassiveEffects();\n            flushSync(function() {\n              scheduleFibersWithFamiliesRecursively(root2.current, updatedFamilies, staleFamilies);\n            });\n          }\n        };\n        var scheduleRoot = function(root2, element) {\n          {\n            if (root2.context !== emptyContextObject) {\n              return;\n            }\n            flushPassiveEffects();\n            flushSync(function() {\n              updateContainer(element, root2, null, null);\n            });\n          }\n        };\n        function scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {\n          {\n            var alternate = fiber.alternate, child = fiber.child, sibling = fiber.sibling, tag = fiber.tag, type = fiber.type;\n            var candidateType = null;\n            switch (tag) {\n              case FunctionComponent:\n              case SimpleMemoComponent:\n              case ClassComponent:\n                candidateType = type;\n                break;\n              case ForwardRef:\n                candidateType = type.render;\n                break;\n            }\n            if (resolveFamily === null) {\n              throw new Error(\"Expected resolveFamily to be set during hot reload.\");\n            }\n            var needsRender = false;\n            var needsRemount = false;\n            if (candidateType !== null) {\n              var family = resolveFamily(candidateType);\n              if (family !== void 0) {\n                if (staleFamilies.has(family)) {\n                  needsRemount = true;\n                } else if (updatedFamilies.has(family)) {\n                  if (tag === ClassComponent) {\n                    needsRemount = true;\n                  } else {\n                    needsRender = true;\n                  }\n                }\n              }\n            }\n            if (failedBoundaries !== null) {\n              if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) {\n                needsRemount = true;\n              }\n            }\n            if (needsRemount) {\n              fiber._debugNeedsRemount = true;\n            }\n            if (needsRemount || needsRender) {\n              var _root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n              if (_root !== null) {\n                scheduleUpdateOnFiber(_root, fiber, SyncLane, NoTimestamp);\n              }\n            }\n            if (child !== null && !needsRemount) {\n              scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies);\n            }\n            if (sibling !== null) {\n              scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies);\n            }\n          }\n        }\n        var findHostInstancesForRefresh = function(root2, families) {\n          {\n            var hostInstances = /* @__PURE__ */ new Set();\n            var types = new Set(families.map(function(family) {\n              return family.current;\n            }));\n            findHostInstancesForMatchingFibersRecursively(root2.current, types, hostInstances);\n            return hostInstances;\n          }\n        };\n        function findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) {\n          {\n            var child = fiber.child, sibling = fiber.sibling, tag = fiber.tag, type = fiber.type;\n            var candidateType = null;\n            switch (tag) {\n              case FunctionComponent:\n              case SimpleMemoComponent:\n              case ClassComponent:\n                candidateType = type;\n                break;\n              case ForwardRef:\n                candidateType = type.render;\n                break;\n            }\n            var didMatch = false;\n            if (candidateType !== null) {\n              if (types.has(candidateType)) {\n                didMatch = true;\n              }\n            }\n            if (didMatch) {\n              findHostInstancesForFiberShallowly(fiber, hostInstances);\n            } else {\n              if (child !== null) {\n                findHostInstancesForMatchingFibersRecursively(child, types, hostInstances);\n              }\n            }\n            if (sibling !== null) {\n              findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances);\n            }\n          }\n        }\n        function findHostInstancesForFiberShallowly(fiber, hostInstances) {\n          {\n            var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances);\n            if (foundHostInstances) {\n              return;\n            }\n            var node = fiber;\n            while (true) {\n              switch (node.tag) {\n                case HostComponent:\n                  hostInstances.add(node.stateNode);\n                  return;\n                case HostPortal:\n                  hostInstances.add(node.stateNode.containerInfo);\n                  return;\n                case HostRoot:\n                  hostInstances.add(node.stateNode.containerInfo);\n                  return;\n              }\n              if (node.return === null) {\n                throw new Error(\"Expected to reach root first.\");\n              }\n              node = node.return;\n            }\n          }\n        }\n        function findChildHostInstancesForFiberShallowly(fiber, hostInstances) {\n          {\n            var node = fiber;\n            var foundHostInstances = false;\n            while (true) {\n              if (node.tag === HostComponent) {\n                foundHostInstances = true;\n                hostInstances.add(node.stateNode);\n              } else if (node.child !== null) {\n                node.child.return = node;\n                node = node.child;\n                continue;\n              }\n              if (node === fiber) {\n                return foundHostInstances;\n              }\n              while (node.sibling === null) {\n                if (node.return === null || node.return === fiber) {\n                  return foundHostInstances;\n                }\n                node = node.return;\n              }\n              node.sibling.return = node.return;\n              node = node.sibling;\n            }\n          }\n          return false;\n        }\n        var hasBadMapPolyfill;\n        {\n          hasBadMapPolyfill = false;\n          try {\n            var nonExtensibleObject = Object.preventExtensions({});\n            /* @__PURE__ */ new Map([[nonExtensibleObject, null]]);\n            /* @__PURE__ */ new Set([nonExtensibleObject]);\n          } catch (e) {\n            hasBadMapPolyfill = true;\n          }\n        }\n        function FiberNode(tag, pendingProps, key, mode) {\n          this.tag = tag;\n          this.key = key;\n          this.elementType = null;\n          this.type = null;\n          this.stateNode = null;\n          this.return = null;\n          this.child = null;\n          this.sibling = null;\n          this.index = 0;\n          this.ref = null;\n          this.pendingProps = pendingProps;\n          this.memoizedProps = null;\n          this.updateQueue = null;\n          this.memoizedState = null;\n          this.dependencies = null;\n          this.mode = mode;\n          this.flags = NoFlags;\n          this.subtreeFlags = NoFlags;\n          this.deletions = null;\n          this.lanes = NoLanes;\n          this.childLanes = NoLanes;\n          this.alternate = null;\n          {\n            this.actualDuration = Number.NaN;\n            this.actualStartTime = Number.NaN;\n            this.selfBaseDuration = Number.NaN;\n            this.treeBaseDuration = Number.NaN;\n            this.actualDuration = 0;\n            this.actualStartTime = -1;\n            this.selfBaseDuration = 0;\n            this.treeBaseDuration = 0;\n          }\n          {\n            this._debugSource = null;\n            this._debugOwner = null;\n            this._debugNeedsRemount = false;\n            this._debugHookTypes = null;\n            if (!hasBadMapPolyfill && typeof Object.preventExtensions === \"function\") {\n              Object.preventExtensions(this);\n            }\n          }\n        }\n        var createFiber = function(tag, pendingProps, key, mode) {\n          return new FiberNode(tag, pendingProps, key, mode);\n        };\n        function shouldConstruct$1(Component) {\n          var prototype = Component.prototype;\n          return !!(prototype && prototype.isReactComponent);\n        }\n        function isSimpleFunctionComponent(type) {\n          return typeof type === \"function\" && !shouldConstruct$1(type) && type.defaultProps === void 0;\n        }\n        function resolveLazyComponentTag(Component) {\n          if (typeof Component === \"function\") {\n            return shouldConstruct$1(Component) ? ClassComponent : FunctionComponent;\n          } else if (Component !== void 0 && Component !== null) {\n            var $$typeof = Component.$$typeof;\n            if ($$typeof === REACT_FORWARD_REF_TYPE) {\n              return ForwardRef;\n            }\n            if ($$typeof === REACT_MEMO_TYPE) {\n              return MemoComponent;\n            }\n          }\n          return IndeterminateComponent;\n        }\n        function createWorkInProgress(current2, pendingProps) {\n          var workInProgress2 = current2.alternate;\n          if (workInProgress2 === null) {\n            workInProgress2 = createFiber(current2.tag, pendingProps, current2.key, current2.mode);\n            workInProgress2.elementType = current2.elementType;\n            workInProgress2.type = current2.type;\n            workInProgress2.stateNode = current2.stateNode;\n            {\n              workInProgress2._debugSource = current2._debugSource;\n              workInProgress2._debugOwner = current2._debugOwner;\n              workInProgress2._debugHookTypes = current2._debugHookTypes;\n            }\n            workInProgress2.alternate = current2;\n            current2.alternate = workInProgress2;\n          } else {\n            workInProgress2.pendingProps = pendingProps;\n            workInProgress2.type = current2.type;\n            workInProgress2.flags = NoFlags;\n            workInProgress2.subtreeFlags = NoFlags;\n            workInProgress2.deletions = null;\n            {\n              workInProgress2.actualDuration = 0;\n              workInProgress2.actualStartTime = -1;\n            }\n          }\n          workInProgress2.flags = current2.flags & StaticMask;\n          workInProgress2.childLanes = current2.childLanes;\n          workInProgress2.lanes = current2.lanes;\n          workInProgress2.child = current2.child;\n          workInProgress2.memoizedProps = current2.memoizedProps;\n          workInProgress2.memoizedState = current2.memoizedState;\n          workInProgress2.updateQueue = current2.updateQueue;\n          var currentDependencies = current2.dependencies;\n          workInProgress2.dependencies = currentDependencies === null ? null : {\n            lanes: currentDependencies.lanes,\n            firstContext: currentDependencies.firstContext\n          };\n          workInProgress2.sibling = current2.sibling;\n          workInProgress2.index = current2.index;\n          workInProgress2.ref = current2.ref;\n          {\n            workInProgress2.selfBaseDuration = current2.selfBaseDuration;\n            workInProgress2.treeBaseDuration = current2.treeBaseDuration;\n          }\n          {\n            workInProgress2._debugNeedsRemount = current2._debugNeedsRemount;\n            switch (workInProgress2.tag) {\n              case IndeterminateComponent:\n              case FunctionComponent:\n              case SimpleMemoComponent:\n                workInProgress2.type = resolveFunctionForHotReloading(current2.type);\n                break;\n              case ClassComponent:\n                workInProgress2.type = resolveClassForHotReloading(current2.type);\n                break;\n              case ForwardRef:\n                workInProgress2.type = resolveForwardRefForHotReloading(current2.type);\n                break;\n            }\n          }\n          return workInProgress2;\n        }\n        function resetWorkInProgress(workInProgress2, renderLanes2) {\n          workInProgress2.flags &= StaticMask | Placement;\n          var current2 = workInProgress2.alternate;\n          if (current2 === null) {\n            workInProgress2.childLanes = NoLanes;\n            workInProgress2.lanes = renderLanes2;\n            workInProgress2.child = null;\n            workInProgress2.subtreeFlags = NoFlags;\n            workInProgress2.memoizedProps = null;\n            workInProgress2.memoizedState = null;\n            workInProgress2.updateQueue = null;\n            workInProgress2.dependencies = null;\n            workInProgress2.stateNode = null;\n            {\n              workInProgress2.selfBaseDuration = 0;\n              workInProgress2.treeBaseDuration = 0;\n            }\n          } else {\n            workInProgress2.childLanes = current2.childLanes;\n            workInProgress2.lanes = current2.lanes;\n            workInProgress2.child = current2.child;\n            workInProgress2.subtreeFlags = NoFlags;\n            workInProgress2.deletions = null;\n            workInProgress2.memoizedProps = current2.memoizedProps;\n            workInProgress2.memoizedState = current2.memoizedState;\n            workInProgress2.updateQueue = current2.updateQueue;\n            workInProgress2.type = current2.type;\n            var currentDependencies = current2.dependencies;\n            workInProgress2.dependencies = currentDependencies === null ? null : {\n              lanes: currentDependencies.lanes,\n              firstContext: currentDependencies.firstContext\n            };\n            {\n              workInProgress2.selfBaseDuration = current2.selfBaseDuration;\n              workInProgress2.treeBaseDuration = current2.treeBaseDuration;\n            }\n          }\n          return workInProgress2;\n        }\n        function createHostRootFiber(tag, isStrictMode, concurrentUpdatesByDefaultOverride) {\n          var mode;\n          if (tag === ConcurrentRoot) {\n            mode = ConcurrentMode;\n            if (isStrictMode === true) {\n              mode |= StrictLegacyMode;\n              {\n                mode |= StrictEffectsMode;\n              }\n            }\n          } else {\n            mode = NoMode;\n          }\n          if (isDevToolsPresent) {\n            mode |= ProfileMode;\n          }\n          return createFiber(HostRoot, null, null, mode);\n        }\n        function createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes) {\n          var fiberTag = IndeterminateComponent;\n          var resolvedType = type;\n          if (typeof type === \"function\") {\n            if (shouldConstruct$1(type)) {\n              fiberTag = ClassComponent;\n              {\n                resolvedType = resolveClassForHotReloading(resolvedType);\n              }\n            } else {\n              {\n                resolvedType = resolveFunctionForHotReloading(resolvedType);\n              }\n            }\n          } else if (typeof type === \"string\") {\n            fiberTag = HostComponent;\n          } else {\n            getTag:\n              switch (type) {\n                case REACT_FRAGMENT_TYPE:\n                  return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n                case REACT_STRICT_MODE_TYPE:\n                  fiberTag = Mode;\n                  mode |= StrictLegacyMode;\n                  if ((mode & ConcurrentMode) !== NoMode) {\n                    mode |= StrictEffectsMode;\n                  }\n                  break;\n                case REACT_PROFILER_TYPE:\n                  return createFiberFromProfiler(pendingProps, mode, lanes, key);\n                case REACT_SUSPENSE_TYPE:\n                  return createFiberFromSuspense(pendingProps, mode, lanes, key);\n                case REACT_SUSPENSE_LIST_TYPE:\n                  return createFiberFromSuspenseList(pendingProps, mode, lanes, key);\n                case REACT_OFFSCREEN_TYPE:\n                  return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n                case REACT_LEGACY_HIDDEN_TYPE:\n                case REACT_SCOPE_TYPE:\n                case REACT_CACHE_TYPE:\n                case REACT_TRACING_MARKER_TYPE:\n                case REACT_DEBUG_TRACING_MODE_TYPE:\n                default: {\n                  if (typeof type === \"object\" && type !== null) {\n                    switch (type.$$typeof) {\n                      case REACT_PROVIDER_TYPE:\n                        fiberTag = ContextProvider;\n                        break getTag;\n                      case REACT_CONTEXT_TYPE:\n                        fiberTag = ContextConsumer;\n                        break getTag;\n                      case REACT_FORWARD_REF_TYPE:\n                        fiberTag = ForwardRef;\n                        {\n                          resolvedType = resolveForwardRefForHotReloading(resolvedType);\n                        }\n                        break getTag;\n                      case REACT_MEMO_TYPE:\n                        fiberTag = MemoComponent;\n                        break getTag;\n                      case REACT_LAZY_TYPE:\n                        fiberTag = LazyComponent;\n                        resolvedType = null;\n                        break getTag;\n                    }\n                  }\n                  var info = \"\";\n                  {\n                    if (type === void 0 || typeof type === \"object\" && type !== null && Object.keys(type).length === 0) {\n                      info += \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n                    }\n                    var ownerName = owner ? getComponentNameFromFiber(owner) : null;\n                    if (ownerName) {\n                      info += \"\\n\\nCheck the render method of `\" + ownerName + \"`.\";\n                    }\n                  }\n                  throw new Error(\"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) \" + (\"but got: \" + (type == null ? type : typeof type) + \".\" + info));\n                }\n              }\n          }\n          var fiber = createFiber(fiberTag, pendingProps, key, mode);\n          fiber.elementType = type;\n          fiber.type = resolvedType;\n          fiber.lanes = lanes;\n          {\n            fiber._debugOwner = owner;\n          }\n          return fiber;\n        }\n        function createFiberFromElement(element, mode, lanes) {\n          var owner = null;\n          {\n            owner = element._owner;\n          }\n          var type = element.type;\n          var key = element.key;\n          var pendingProps = element.props;\n          var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes);\n          {\n            fiber._debugSource = element._source;\n            fiber._debugOwner = element._owner;\n          }\n          return fiber;\n        }\n        function createFiberFromFragment(elements, mode, lanes, key) {\n          var fiber = createFiber(Fragment, elements, key, mode);\n          fiber.lanes = lanes;\n          return fiber;\n        }\n        function createFiberFromProfiler(pendingProps, mode, lanes, key) {\n          {\n            if (typeof pendingProps.id !== \"string\") {\n              error('Profiler must specify an \"id\" of type `string` as a prop. Received the type `%s` instead.', typeof pendingProps.id);\n            }\n          }\n          var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode);\n          fiber.elementType = REACT_PROFILER_TYPE;\n          fiber.lanes = lanes;\n          {\n            fiber.stateNode = {\n              effectDuration: 0,\n              passiveEffectDuration: 0\n            };\n          }\n          return fiber;\n        }\n        function createFiberFromSuspense(pendingProps, mode, lanes, key) {\n          var fiber = createFiber(SuspenseComponent, pendingProps, key, mode);\n          fiber.elementType = REACT_SUSPENSE_TYPE;\n          fiber.lanes = lanes;\n          return fiber;\n        }\n        function createFiberFromSuspenseList(pendingProps, mode, lanes, key) {\n          var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);\n          fiber.elementType = REACT_SUSPENSE_LIST_TYPE;\n          fiber.lanes = lanes;\n          return fiber;\n        }\n        function createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n          var fiber = createFiber(OffscreenComponent, pendingProps, key, mode);\n          fiber.elementType = REACT_OFFSCREEN_TYPE;\n          fiber.lanes = lanes;\n          var primaryChildInstance = {\n            isHidden: false\n          };\n          fiber.stateNode = primaryChildInstance;\n          return fiber;\n        }\n        function createFiberFromText(content, mode, lanes) {\n          var fiber = createFiber(HostText, content, null, mode);\n          fiber.lanes = lanes;\n          return fiber;\n        }\n        function createFiberFromHostInstanceForDeletion() {\n          var fiber = createFiber(HostComponent, null, null, NoMode);\n          fiber.elementType = \"DELETED\";\n          return fiber;\n        }\n        function createFiberFromDehydratedFragment(dehydratedNode) {\n          var fiber = createFiber(DehydratedFragment, null, null, NoMode);\n          fiber.stateNode = dehydratedNode;\n          return fiber;\n        }\n        function createFiberFromPortal(portal, mode, lanes) {\n          var pendingProps = portal.children !== null ? portal.children : [];\n          var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);\n          fiber.lanes = lanes;\n          fiber.stateNode = {\n            containerInfo: portal.containerInfo,\n            pendingChildren: null,\n            // Used by persistent updates\n            implementation: portal.implementation\n          };\n          return fiber;\n        }\n        function assignFiberPropertiesInDEV(target, source) {\n          if (target === null) {\n            target = createFiber(IndeterminateComponent, null, null, NoMode);\n          }\n          target.tag = source.tag;\n          target.key = source.key;\n          target.elementType = source.elementType;\n          target.type = source.type;\n          target.stateNode = source.stateNode;\n          target.return = source.return;\n          target.child = source.child;\n          target.sibling = source.sibling;\n          target.index = source.index;\n          target.ref = source.ref;\n          target.pendingProps = source.pendingProps;\n          target.memoizedProps = source.memoizedProps;\n          target.updateQueue = source.updateQueue;\n          target.memoizedState = source.memoizedState;\n          target.dependencies = source.dependencies;\n          target.mode = source.mode;\n          target.flags = source.flags;\n          target.subtreeFlags = source.subtreeFlags;\n          target.deletions = source.deletions;\n          target.lanes = source.lanes;\n          target.childLanes = source.childLanes;\n          target.alternate = source.alternate;\n          {\n            target.actualDuration = source.actualDuration;\n            target.actualStartTime = source.actualStartTime;\n            target.selfBaseDuration = source.selfBaseDuration;\n            target.treeBaseDuration = source.treeBaseDuration;\n          }\n          target._debugSource = source._debugSource;\n          target._debugOwner = source._debugOwner;\n          target._debugNeedsRemount = source._debugNeedsRemount;\n          target._debugHookTypes = source._debugHookTypes;\n          return target;\n        }\n        function FiberRootNode(containerInfo, tag, hydrate2, identifierPrefix, onRecoverableError) {\n          this.tag = tag;\n          this.containerInfo = containerInfo;\n          this.pendingChildren = null;\n          this.current = null;\n          this.pingCache = null;\n          this.finishedWork = null;\n          this.timeoutHandle = noTimeout;\n          this.context = null;\n          this.pendingContext = null;\n          this.callbackNode = null;\n          this.callbackPriority = NoLane;\n          this.eventTimes = createLaneMap(NoLanes);\n          this.expirationTimes = createLaneMap(NoTimestamp);\n          this.pendingLanes = NoLanes;\n          this.suspendedLanes = NoLanes;\n          this.pingedLanes = NoLanes;\n          this.expiredLanes = NoLanes;\n          this.mutableReadLanes = NoLanes;\n          this.finishedLanes = NoLanes;\n          this.entangledLanes = NoLanes;\n          this.entanglements = createLaneMap(NoLanes);\n          this.identifierPrefix = identifierPrefix;\n          this.onRecoverableError = onRecoverableError;\n          {\n            this.mutableSourceEagerHydrationData = null;\n          }\n          {\n            this.effectDuration = 0;\n            this.passiveEffectDuration = 0;\n          }\n          {\n            this.memoizedUpdaters = /* @__PURE__ */ new Set();\n            var pendingUpdatersLaneMap = this.pendingUpdatersLaneMap = [];\n            for (var _i = 0; _i < TotalLanes; _i++) {\n              pendingUpdatersLaneMap.push(/* @__PURE__ */ new Set());\n            }\n          }\n          {\n            switch (tag) {\n              case ConcurrentRoot:\n                this._debugRootType = hydrate2 ? \"hydrateRoot()\" : \"createRoot()\";\n                break;\n              case LegacyRoot:\n                this._debugRootType = hydrate2 ? \"hydrate()\" : \"render()\";\n                break;\n            }\n          }\n        }\n        function createFiberRoot(containerInfo, tag, hydrate2, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n          var root2 = new FiberRootNode(containerInfo, tag, hydrate2, identifierPrefix, onRecoverableError);\n          var uninitializedFiber = createHostRootFiber(tag, isStrictMode);\n          root2.current = uninitializedFiber;\n          uninitializedFiber.stateNode = root2;\n          {\n            var _initialState = {\n              element: initialChildren,\n              isDehydrated: hydrate2,\n              cache: null,\n              // not enabled yet\n              transitions: null,\n              pendingSuspenseBoundaries: null\n            };\n            uninitializedFiber.memoizedState = _initialState;\n          }\n          initializeUpdateQueue(uninitializedFiber);\n          return root2;\n        }\n        var ReactVersion = \"18.3.1\";\n        function createPortal(children, containerInfo, implementation) {\n          var key = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;\n          {\n            checkKeyStringCoercion(key);\n          }\n          return {\n            // This tag allow us to uniquely identify this as a React Portal\n            $$typeof: REACT_PORTAL_TYPE,\n            key: key == null ? null : \"\" + key,\n            children,\n            containerInfo,\n            implementation\n          };\n        }\n        var didWarnAboutNestedUpdates;\n        var didWarnAboutFindNodeInStrictMode;\n        {\n          didWarnAboutNestedUpdates = false;\n          didWarnAboutFindNodeInStrictMode = {};\n        }\n        function getContextForSubtree(parentComponent) {\n          if (!parentComponent) {\n            return emptyContextObject;\n          }\n          var fiber = get(parentComponent);\n          var parentContext = findCurrentUnmaskedContext(fiber);\n          if (fiber.tag === ClassComponent) {\n            var Component = fiber.type;\n            if (isContextProvider(Component)) {\n              return processChildContext(fiber, Component, parentContext);\n            }\n          }\n          return parentContext;\n        }\n        function findHostInstanceWithWarning(component, methodName) {\n          {\n            var fiber = get(component);\n            if (fiber === void 0) {\n              if (typeof component.render === \"function\") {\n                throw new Error(\"Unable to find node on an unmounted component.\");\n              } else {\n                var keys = Object.keys(component).join(\",\");\n                throw new Error(\"Argument appears to not be a ReactComponent. Keys: \" + keys);\n              }\n            }\n            var hostFiber = findCurrentHostFiber(fiber);\n            if (hostFiber === null) {\n              return null;\n            }\n            if (hostFiber.mode & StrictLegacyMode) {\n              var componentName = getComponentNameFromFiber(fiber) || \"Component\";\n              if (!didWarnAboutFindNodeInStrictMode[componentName]) {\n                didWarnAboutFindNodeInStrictMode[componentName] = true;\n                var previousFiber = current;\n                try {\n                  setCurrentFiber(hostFiber);\n                  if (fiber.mode & StrictLegacyMode) {\n                    error(\"%s is deprecated in StrictMode. %s was passed an instance of %s which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node\", methodName, methodName, componentName);\n                  } else {\n                    error(\"%s is deprecated in StrictMode. %s was passed an instance of %s which renders StrictMode children. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node\", methodName, methodName, componentName);\n                  }\n                } finally {\n                  if (previousFiber) {\n                    setCurrentFiber(previousFiber);\n                  } else {\n                    resetCurrentFiber();\n                  }\n                }\n              }\n            }\n            return hostFiber.stateNode;\n          }\n        }\n        function createContainer(containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n          var hydrate2 = false;\n          var initialChildren = null;\n          return createFiberRoot(containerInfo, tag, hydrate2, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n        }\n        function createHydrationContainer(initialChildren, callback, containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n          var hydrate2 = true;\n          var root2 = createFiberRoot(containerInfo, tag, hydrate2, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n          root2.context = getContextForSubtree(null);\n          var current2 = root2.current;\n          var eventTime = requestEventTime();\n          var lane = requestUpdateLane(current2);\n          var update = createUpdate(eventTime, lane);\n          update.callback = callback !== void 0 && callback !== null ? callback : null;\n          enqueueUpdate(current2, update, lane);\n          scheduleInitialHydrationOnRoot(root2, lane, eventTime);\n          return root2;\n        }\n        function updateContainer(element, container, parentComponent, callback) {\n          {\n            onScheduleRoot(container, element);\n          }\n          var current$1 = container.current;\n          var eventTime = requestEventTime();\n          var lane = requestUpdateLane(current$1);\n          {\n            markRenderScheduled(lane);\n          }\n          var context = getContextForSubtree(parentComponent);\n          if (container.context === null) {\n            container.context = context;\n          } else {\n            container.pendingContext = context;\n          }\n          {\n            if (isRendering && current !== null && !didWarnAboutNestedUpdates) {\n              didWarnAboutNestedUpdates = true;\n              error(\"Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate.\\n\\nCheck the render method of %s.\", getComponentNameFromFiber(current) || \"Unknown\");\n            }\n          }\n          var update = createUpdate(eventTime, lane);\n          update.payload = {\n            element\n          };\n          callback = callback === void 0 ? null : callback;\n          if (callback !== null) {\n            {\n              if (typeof callback !== \"function\") {\n                error(\"render(...): Expected the last optional `callback` argument to be a function. Instead received: %s.\", callback);\n              }\n            }\n            update.callback = callback;\n          }\n          var root2 = enqueueUpdate(current$1, update, lane);\n          if (root2 !== null) {\n            scheduleUpdateOnFiber(root2, current$1, lane, eventTime);\n            entangleTransitions(root2, current$1, lane);\n          }\n          return lane;\n        }\n        function getPublicRootInstance(container) {\n          var containerFiber = container.current;\n          if (!containerFiber.child) {\n            return null;\n          }\n          switch (containerFiber.child.tag) {\n            case HostComponent:\n              return getPublicInstance(containerFiber.child.stateNode);\n            default:\n              return containerFiber.child.stateNode;\n          }\n        }\n        function attemptSynchronousHydration$1(fiber) {\n          switch (fiber.tag) {\n            case HostRoot: {\n              var root2 = fiber.stateNode;\n              if (isRootDehydrated(root2)) {\n                var lanes = getHighestPriorityPendingLanes(root2);\n                flushRoot(root2, lanes);\n              }\n              break;\n            }\n            case SuspenseComponent: {\n              flushSync(function() {\n                var root3 = enqueueConcurrentRenderForLane(fiber, SyncLane);\n                if (root3 !== null) {\n                  var eventTime = requestEventTime();\n                  scheduleUpdateOnFiber(root3, fiber, SyncLane, eventTime);\n                }\n              });\n              var retryLane = SyncLane;\n              markRetryLaneIfNotHydrated(fiber, retryLane);\n              break;\n            }\n          }\n        }\n        function markRetryLaneImpl(fiber, retryLane) {\n          var suspenseState = fiber.memoizedState;\n          if (suspenseState !== null && suspenseState.dehydrated !== null) {\n            suspenseState.retryLane = higherPriorityLane(suspenseState.retryLane, retryLane);\n          }\n        }\n        function markRetryLaneIfNotHydrated(fiber, retryLane) {\n          markRetryLaneImpl(fiber, retryLane);\n          var alternate = fiber.alternate;\n          if (alternate) {\n            markRetryLaneImpl(alternate, retryLane);\n          }\n        }\n        function attemptContinuousHydration$1(fiber) {\n          if (fiber.tag !== SuspenseComponent) {\n            return;\n          }\n          var lane = SelectiveHydrationLane;\n          var root2 = enqueueConcurrentRenderForLane(fiber, lane);\n          if (root2 !== null) {\n            var eventTime = requestEventTime();\n            scheduleUpdateOnFiber(root2, fiber, lane, eventTime);\n          }\n          markRetryLaneIfNotHydrated(fiber, lane);\n        }\n        function attemptHydrationAtCurrentPriority$1(fiber) {\n          if (fiber.tag !== SuspenseComponent) {\n            return;\n          }\n          var lane = requestUpdateLane(fiber);\n          var root2 = enqueueConcurrentRenderForLane(fiber, lane);\n          if (root2 !== null) {\n            var eventTime = requestEventTime();\n            scheduleUpdateOnFiber(root2, fiber, lane, eventTime);\n          }\n          markRetryLaneIfNotHydrated(fiber, lane);\n        }\n        function findHostInstanceWithNoPortals(fiber) {\n          var hostFiber = findCurrentHostFiberWithNoPortals(fiber);\n          if (hostFiber === null) {\n            return null;\n          }\n          return hostFiber.stateNode;\n        }\n        var shouldErrorImpl = function(fiber) {\n          return null;\n        };\n        function shouldError(fiber) {\n          return shouldErrorImpl(fiber);\n        }\n        var shouldSuspendImpl = function(fiber) {\n          return false;\n        };\n        function shouldSuspend(fiber) {\n          return shouldSuspendImpl(fiber);\n        }\n        var overrideHookState = null;\n        var overrideHookStateDeletePath = null;\n        var overrideHookStateRenamePath = null;\n        var overrideProps = null;\n        var overridePropsDeletePath = null;\n        var overridePropsRenamePath = null;\n        var scheduleUpdate = null;\n        var setErrorHandler = null;\n        var setSuspenseHandler = null;\n        {\n          var copyWithDeleteImpl = function(obj, path, index2) {\n            var key = path[index2];\n            var updated = isArray(obj) ? obj.slice() : assign({}, obj);\n            if (index2 + 1 === path.length) {\n              if (isArray(updated)) {\n                updated.splice(key, 1);\n              } else {\n                delete updated[key];\n              }\n              return updated;\n            }\n            updated[key] = copyWithDeleteImpl(obj[key], path, index2 + 1);\n            return updated;\n          };\n          var copyWithDelete = function(obj, path) {\n            return copyWithDeleteImpl(obj, path, 0);\n          };\n          var copyWithRenameImpl = function(obj, oldPath, newPath, index2) {\n            var oldKey = oldPath[index2];\n            var updated = isArray(obj) ? obj.slice() : assign({}, obj);\n            if (index2 + 1 === oldPath.length) {\n              var newKey = newPath[index2];\n              updated[newKey] = updated[oldKey];\n              if (isArray(updated)) {\n                updated.splice(oldKey, 1);\n              } else {\n                delete updated[oldKey];\n              }\n            } else {\n              updated[oldKey] = copyWithRenameImpl(\n                // $FlowFixMe number or string is fine here\n                obj[oldKey],\n                oldPath,\n                newPath,\n                index2 + 1\n              );\n            }\n            return updated;\n          };\n          var copyWithRename = function(obj, oldPath, newPath) {\n            if (oldPath.length !== newPath.length) {\n              warn(\"copyWithRename() expects paths of the same length\");\n              return;\n            } else {\n              for (var i = 0; i < newPath.length - 1; i++) {\n                if (oldPath[i] !== newPath[i]) {\n                  warn(\"copyWithRename() expects paths to be the same except for the deepest key\");\n                  return;\n                }\n              }\n            }\n            return copyWithRenameImpl(obj, oldPath, newPath, 0);\n          };\n          var copyWithSetImpl = function(obj, path, index2, value) {\n            if (index2 >= path.length) {\n              return value;\n            }\n            var key = path[index2];\n            var updated = isArray(obj) ? obj.slice() : assign({}, obj);\n            updated[key] = copyWithSetImpl(obj[key], path, index2 + 1, value);\n            return updated;\n          };\n          var copyWithSet = function(obj, path, value) {\n            return copyWithSetImpl(obj, path, 0, value);\n          };\n          var findHook = function(fiber, id) {\n            var currentHook2 = fiber.memoizedState;\n            while (currentHook2 !== null && id > 0) {\n              currentHook2 = currentHook2.next;\n              id--;\n            }\n            return currentHook2;\n          };\n          overrideHookState = function(fiber, id, path, value) {\n            var hook = findHook(fiber, id);\n            if (hook !== null) {\n              var newState = copyWithSet(hook.memoizedState, path, value);\n              hook.memoizedState = newState;\n              hook.baseState = newState;\n              fiber.memoizedProps = assign({}, fiber.memoizedProps);\n              var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);\n              if (root2 !== null) {\n                scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);\n              }\n            }\n          };\n          overrideHookStateDeletePath = function(fiber, id, path) {\n            var hook = findHook(fiber, id);\n            if (hook !== null) {\n              var newState = copyWithDelete(hook.memoizedState, path);\n              hook.memoizedState = newState;\n              hook.baseState = newState;\n              fiber.memoizedProps = assign({}, fiber.memoizedProps);\n              var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);\n              if (root2 !== null) {\n                scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);\n              }\n            }\n          };\n          overrideHookStateRenamePath = function(fiber, id, oldPath, newPath) {\n            var hook = findHook(fiber, id);\n            if (hook !== null) {\n              var newState = copyWithRename(hook.memoizedState, oldPath, newPath);\n              hook.memoizedState = newState;\n              hook.baseState = newState;\n              fiber.memoizedProps = assign({}, fiber.memoizedProps);\n              var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);\n              if (root2 !== null) {\n                scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);\n              }\n            }\n          };\n          overrideProps = function(fiber, path, value) {\n            fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value);\n            if (fiber.alternate) {\n              fiber.alternate.pendingProps = fiber.pendingProps;\n            }\n            var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);\n            if (root2 !== null) {\n              scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);\n            }\n          };\n          overridePropsDeletePath = function(fiber, path) {\n            fiber.pendingProps = copyWithDelete(fiber.memoizedProps, path);\n            if (fiber.alternate) {\n              fiber.alternate.pendingProps = fiber.pendingProps;\n            }\n            var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);\n            if (root2 !== null) {\n              scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);\n            }\n          };\n          overridePropsRenamePath = function(fiber, oldPath, newPath) {\n            fiber.pendingProps = copyWithRename(fiber.memoizedProps, oldPath, newPath);\n            if (fiber.alternate) {\n              fiber.alternate.pendingProps = fiber.pendingProps;\n            }\n            var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);\n            if (root2 !== null) {\n              scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);\n            }\n          };\n          scheduleUpdate = function(fiber) {\n            var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);\n            if (root2 !== null) {\n              scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);\n            }\n          };\n          setErrorHandler = function(newShouldErrorImpl) {\n            shouldErrorImpl = newShouldErrorImpl;\n          };\n          setSuspenseHandler = function(newShouldSuspendImpl) {\n            shouldSuspendImpl = newShouldSuspendImpl;\n          };\n        }\n        function findHostInstanceByFiber(fiber) {\n          var hostFiber = findCurrentHostFiber(fiber);\n          if (hostFiber === null) {\n            return null;\n          }\n          return hostFiber.stateNode;\n        }\n        function emptyFindFiberByHostInstance(instance) {\n          return null;\n        }\n        function getCurrentFiberForDevTools() {\n          return current;\n        }\n        function injectIntoDevTools(devToolsConfig) {\n          var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n          var ReactCurrentDispatcher2 = ReactSharedInternals.ReactCurrentDispatcher;\n          return injectInternals({\n            bundleType: devToolsConfig.bundleType,\n            version: devToolsConfig.version,\n            rendererPackageName: devToolsConfig.rendererPackageName,\n            rendererConfig: devToolsConfig.rendererConfig,\n            overrideHookState,\n            overrideHookStateDeletePath,\n            overrideHookStateRenamePath,\n            overrideProps,\n            overridePropsDeletePath,\n            overridePropsRenamePath,\n            setErrorHandler,\n            setSuspenseHandler,\n            scheduleUpdate,\n            currentDispatcherRef: ReactCurrentDispatcher2,\n            findHostInstanceByFiber,\n            findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance,\n            // React Refresh\n            findHostInstancesForRefresh,\n            scheduleRefresh,\n            scheduleRoot,\n            setRefreshHandler,\n            // Enables DevTools to append owner stacks to error messages in DEV mode.\n            getCurrentFiber: getCurrentFiberForDevTools,\n            // Enables DevTools to detect reconciler version rather than renderer version\n            // which may not match for third party renderers.\n            reconcilerVersion: ReactVersion\n          });\n        }\n        var defaultOnRecoverableError = typeof reportError === \"function\" ? (\n          // In modern browsers, reportError will dispatch an error event,\n          // emulating an uncaught JavaScript error.\n          reportError\n        ) : function(error2) {\n          console[\"error\"](error2);\n        };\n        function ReactDOMRoot(internalRoot) {\n          this._internalRoot = internalRoot;\n        }\n        ReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render = function(children) {\n          var root2 = this._internalRoot;\n          if (root2 === null) {\n            throw new Error(\"Cannot update an unmounted root.\");\n          }\n          {\n            if (typeof arguments[1] === \"function\") {\n              error(\"render(...): does not support the second callback argument. To execute a side effect after rendering, declare it in a component body with useEffect().\");\n            } else if (isValidContainer(arguments[1])) {\n              error(\"You passed a container to the second argument of root.render(...). You don't need to pass it again since you already passed it to create the root.\");\n            } else if (typeof arguments[1] !== \"undefined\") {\n              error(\"You passed a second argument to root.render(...) but it only accepts one argument.\");\n            }\n            var container = root2.containerInfo;\n            if (container.nodeType !== COMMENT_NODE) {\n              var hostInstance = findHostInstanceWithNoPortals(root2.current);\n              if (hostInstance) {\n                if (hostInstance.parentNode !== container) {\n                  error(\"render(...): It looks like the React-rendered content of the root container was removed without using React. This is not supported and will cause errors. Instead, call root.unmount() to empty a root's container.\");\n                }\n              }\n            }\n          }\n          updateContainer(children, root2, null, null);\n        };\n        ReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount = function() {\n          {\n            if (typeof arguments[0] === \"function\") {\n              error(\"unmount(...): does not support a callback argument. To execute a side effect after rendering, declare it in a component body with useEffect().\");\n            }\n          }\n          var root2 = this._internalRoot;\n          if (root2 !== null) {\n            this._internalRoot = null;\n            var container = root2.containerInfo;\n            {\n              if (isAlreadyRendering()) {\n                error(\"Attempted to synchronously unmount a root while React was already rendering. React cannot finish unmounting the root until the current render has completed, which may lead to a race condition.\");\n              }\n            }\n            flushSync(function() {\n              updateContainer(null, root2, null, null);\n            });\n            unmarkContainerAsRoot(container);\n          }\n        };\n        function createRoot(container, options2) {\n          if (!isValidContainer(container)) {\n            throw new Error(\"createRoot(...): Target container is not a DOM element.\");\n          }\n          warnIfReactDOMContainerInDEV(container);\n          var isStrictMode = false;\n          var concurrentUpdatesByDefaultOverride = false;\n          var identifierPrefix = \"\";\n          var onRecoverableError = defaultOnRecoverableError;\n          var transitionCallbacks = null;\n          if (options2 !== null && options2 !== void 0) {\n            {\n              if (options2.hydrate) {\n                warn(\"hydrate through createRoot is deprecated. Use ReactDOMClient.hydrateRoot(container, <App />) instead.\");\n              } else {\n                if (typeof options2 === \"object\" && options2 !== null && options2.$$typeof === REACT_ELEMENT_TYPE) {\n                  error(\"You passed a JSX element to createRoot. You probably meant to call root.render instead. Example usage:\\n\\n  let root = createRoot(domContainer);\\n  root.render(<App />);\");\n                }\n              }\n            }\n            if (options2.unstable_strictMode === true) {\n              isStrictMode = true;\n            }\n            if (options2.identifierPrefix !== void 0) {\n              identifierPrefix = options2.identifierPrefix;\n            }\n            if (options2.onRecoverableError !== void 0) {\n              onRecoverableError = options2.onRecoverableError;\n            }\n            if (options2.transitionCallbacks !== void 0) {\n              transitionCallbacks = options2.transitionCallbacks;\n            }\n          }\n          var root2 = createContainer(container, ConcurrentRoot, null, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n          markContainerAsRoot(root2.current, container);\n          var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n          listenToAllSupportedEvents(rootContainerElement);\n          return new ReactDOMRoot(root2);\n        }\n        function ReactDOMHydrationRoot(internalRoot) {\n          this._internalRoot = internalRoot;\n        }\n        function scheduleHydration(target) {\n          if (target) {\n            queueExplicitHydrationTarget(target);\n          }\n        }\n        ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = scheduleHydration;\n        function hydrateRoot(container, initialChildren, options2) {\n          if (!isValidContainer(container)) {\n            throw new Error(\"hydrateRoot(...): Target container is not a DOM element.\");\n          }\n          warnIfReactDOMContainerInDEV(container);\n          {\n            if (initialChildren === void 0) {\n              error(\"Must provide initial children as second argument to hydrateRoot. Example usage: hydrateRoot(domContainer, <App />)\");\n            }\n          }\n          var hydrationCallbacks = options2 != null ? options2 : null;\n          var mutableSources = options2 != null && options2.hydratedSources || null;\n          var isStrictMode = false;\n          var concurrentUpdatesByDefaultOverride = false;\n          var identifierPrefix = \"\";\n          var onRecoverableError = defaultOnRecoverableError;\n          if (options2 !== null && options2 !== void 0) {\n            if (options2.unstable_strictMode === true) {\n              isStrictMode = true;\n            }\n            if (options2.identifierPrefix !== void 0) {\n              identifierPrefix = options2.identifierPrefix;\n            }\n            if (options2.onRecoverableError !== void 0) {\n              onRecoverableError = options2.onRecoverableError;\n            }\n          }\n          var root2 = createHydrationContainer(initialChildren, null, container, ConcurrentRoot, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n          markContainerAsRoot(root2.current, container);\n          listenToAllSupportedEvents(container);\n          if (mutableSources) {\n            for (var i = 0; i < mutableSources.length; i++) {\n              var mutableSource = mutableSources[i];\n              registerMutableSourceForHydration(root2, mutableSource);\n            }\n          }\n          return new ReactDOMHydrationRoot(root2);\n        }\n        function isValidContainer(node) {\n          return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || !disableCommentsAsDOMContainers));\n        }\n        function isValidContainerLegacy(node) {\n          return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === \" react-mount-point-unstable \"));\n        }\n        function warnIfReactDOMContainerInDEV(container) {\n          {\n            if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === \"BODY\") {\n              error(\"createRoot(): Creating roots directly with document.body is discouraged, since its children are often manipulated by third-party scripts and browser extensions. This may lead to subtle reconciliation issues. Try using a container element created for your app.\");\n            }\n            if (isContainerMarkedAsRoot(container)) {\n              if (container._reactRootContainer) {\n                error(\"You are calling ReactDOMClient.createRoot() on a container that was previously passed to ReactDOM.render(). This is not supported.\");\n              } else {\n                error(\"You are calling ReactDOMClient.createRoot() on a container that has already been passed to createRoot() before. Instead, call root.render() on the existing root instead if you want to update it.\");\n              }\n            }\n          }\n        }\n        var ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;\n        var topLevelUpdateWarnings;\n        {\n          topLevelUpdateWarnings = function(container) {\n            if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {\n              var hostInstance = findHostInstanceWithNoPortals(container._reactRootContainer.current);\n              if (hostInstance) {\n                if (hostInstance.parentNode !== container) {\n                  error(\"render(...): It looks like the React-rendered content of this container was removed without using React. This is not supported and will cause errors. Instead, call ReactDOM.unmountComponentAtNode to empty a container.\");\n                }\n              }\n            }\n            var isRootRenderedBySomeReact = !!container._reactRootContainer;\n            var rootEl = getReactRootElementInContainer(container);\n            var hasNonRootReactChild = !!(rootEl && getInstanceFromNode(rootEl));\n            if (hasNonRootReactChild && !isRootRenderedBySomeReact) {\n              error(\"render(...): Replacing React-rendered children with a new root component. If you intended to update the children of this node, you should instead have the existing children update their state and render the new components instead of calling ReactDOM.render.\");\n            }\n            if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === \"BODY\") {\n              error(\"render(): Rendering components directly into document.body is discouraged, since its children are often manipulated by third-party scripts and browser extensions. This may lead to subtle reconciliation issues. Try rendering into a container element created for your app.\");\n            }\n          };\n        }\n        function getReactRootElementInContainer(container) {\n          if (!container) {\n            return null;\n          }\n          if (container.nodeType === DOCUMENT_NODE) {\n            return container.documentElement;\n          } else {\n            return container.firstChild;\n          }\n        }\n        function noopOnRecoverableError() {\n        }\n        function legacyCreateRootFromDOMContainer(container, initialChildren, parentComponent, callback, isHydrationContainer) {\n          if (isHydrationContainer) {\n            if (typeof callback === \"function\") {\n              var originalCallback = callback;\n              callback = function() {\n                var instance = getPublicRootInstance(root2);\n                originalCallback.call(instance);\n              };\n            }\n            var root2 = createHydrationContainer(\n              initialChildren,\n              callback,\n              container,\n              LegacyRoot,\n              null,\n              // hydrationCallbacks\n              false,\n              // isStrictMode\n              false,\n              // concurrentUpdatesByDefaultOverride,\n              \"\",\n              // identifierPrefix\n              noopOnRecoverableError\n            );\n            container._reactRootContainer = root2;\n            markContainerAsRoot(root2.current, container);\n            var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n            listenToAllSupportedEvents(rootContainerElement);\n            flushSync();\n            return root2;\n          } else {\n            var rootSibling;\n            while (rootSibling = container.lastChild) {\n              container.removeChild(rootSibling);\n            }\n            if (typeof callback === \"function\") {\n              var _originalCallback = callback;\n              callback = function() {\n                var instance = getPublicRootInstance(_root);\n                _originalCallback.call(instance);\n              };\n            }\n            var _root = createContainer(\n              container,\n              LegacyRoot,\n              null,\n              // hydrationCallbacks\n              false,\n              // isStrictMode\n              false,\n              // concurrentUpdatesByDefaultOverride,\n              \"\",\n              // identifierPrefix\n              noopOnRecoverableError\n            );\n            container._reactRootContainer = _root;\n            markContainerAsRoot(_root.current, container);\n            var _rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n            listenToAllSupportedEvents(_rootContainerElement);\n            flushSync(function() {\n              updateContainer(initialChildren, _root, parentComponent, callback);\n            });\n            return _root;\n          }\n        }\n        function warnOnInvalidCallback$1(callback, callerName) {\n          {\n            if (callback !== null && typeof callback !== \"function\") {\n              error(\"%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.\", callerName, callback);\n            }\n          }\n        }\n        function legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {\n          {\n            topLevelUpdateWarnings(container);\n            warnOnInvalidCallback$1(callback === void 0 ? null : callback, \"render\");\n          }\n          var maybeRoot = container._reactRootContainer;\n          var root2;\n          if (!maybeRoot) {\n            root2 = legacyCreateRootFromDOMContainer(container, children, parentComponent, callback, forceHydrate);\n          } else {\n            root2 = maybeRoot;\n            if (typeof callback === \"function\") {\n              var originalCallback = callback;\n              callback = function() {\n                var instance = getPublicRootInstance(root2);\n                originalCallback.call(instance);\n              };\n            }\n            updateContainer(children, root2, parentComponent, callback);\n          }\n          return getPublicRootInstance(root2);\n        }\n        var didWarnAboutFindDOMNode = false;\n        function findDOMNode(componentOrElement) {\n          {\n            if (!didWarnAboutFindDOMNode) {\n              didWarnAboutFindDOMNode = true;\n              error(\"findDOMNode is deprecated and will be removed in the next major release. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node\");\n            }\n            var owner = ReactCurrentOwner$3.current;\n            if (owner !== null && owner.stateNode !== null) {\n              var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;\n              if (!warnedAboutRefsInRender) {\n                error(\"%s is accessing findDOMNode inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.\", getComponentNameFromType(owner.type) || \"A component\");\n              }\n              owner.stateNode._warnedAboutRefsInRender = true;\n            }\n          }\n          if (componentOrElement == null) {\n            return null;\n          }\n          if (componentOrElement.nodeType === ELEMENT_NODE) {\n            return componentOrElement;\n          }\n          {\n            return findHostInstanceWithWarning(componentOrElement, \"findDOMNode\");\n          }\n        }\n        function hydrate(element, container, callback) {\n          {\n            error(\"ReactDOM.hydrate is no longer supported in React 18. Use hydrateRoot instead. Until you switch to the new API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot\");\n          }\n          if (!isValidContainerLegacy(container)) {\n            throw new Error(\"Target container is not a DOM element.\");\n          }\n          {\n            var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === void 0;\n            if (isModernRoot) {\n              error(\"You are calling ReactDOM.hydrate() on a container that was previously passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call hydrateRoot(container, element)?\");\n            }\n          }\n          return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);\n        }\n        function render(element, container, callback) {\n          {\n            error(\"ReactDOM.render is no longer supported in React 18. Use createRoot instead. Until you switch to the new API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot\");\n          }\n          if (!isValidContainerLegacy(container)) {\n            throw new Error(\"Target container is not a DOM element.\");\n          }\n          {\n            var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === void 0;\n            if (isModernRoot) {\n              error(\"You are calling ReactDOM.render() on a container that was previously passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call root.render(element)?\");\n            }\n          }\n          return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);\n        }\n        function unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n          {\n            error(\"ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported in React 18. Consider using a portal instead. Until you switch to the createRoot API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot\");\n          }\n          if (!isValidContainerLegacy(containerNode)) {\n            throw new Error(\"Target container is not a DOM element.\");\n          }\n          if (parentComponent == null || !has(parentComponent)) {\n            throw new Error(\"parentComponent must be a valid React Component\");\n          }\n          return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);\n        }\n        var didWarnAboutUnmountComponentAtNode = false;\n        function unmountComponentAtNode(container) {\n          {\n            if (!didWarnAboutUnmountComponentAtNode) {\n              didWarnAboutUnmountComponentAtNode = true;\n              error(\"unmountComponentAtNode is deprecated and will be removed in the next major release. Switch to the createRoot API. Learn more: https://reactjs.org/link/switch-to-createroot\");\n            }\n          }\n          if (!isValidContainerLegacy(container)) {\n            throw new Error(\"unmountComponentAtNode(...): Target container is not a DOM element.\");\n          }\n          {\n            var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === void 0;\n            if (isModernRoot) {\n              error(\"You are calling ReactDOM.unmountComponentAtNode() on a container that was previously passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call root.unmount()?\");\n            }\n          }\n          if (container._reactRootContainer) {\n            {\n              var rootEl = getReactRootElementInContainer(container);\n              var renderedByDifferentReact = rootEl && !getInstanceFromNode(rootEl);\n              if (renderedByDifferentReact) {\n                error(\"unmountComponentAtNode(): The node you're attempting to unmount was rendered by another copy of React.\");\n              }\n            }\n            flushSync(function() {\n              legacyRenderSubtreeIntoContainer(null, null, container, false, function() {\n                container._reactRootContainer = null;\n                unmarkContainerAsRoot(container);\n              });\n            });\n            return true;\n          } else {\n            {\n              var _rootEl = getReactRootElementInContainer(container);\n              var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode(_rootEl));\n              var isContainerReactRoot = container.nodeType === ELEMENT_NODE && isValidContainerLegacy(container.parentNode) && !!container.parentNode._reactRootContainer;\n              if (hasNonRootReactChild) {\n                error(\"unmountComponentAtNode(): The node you're attempting to unmount was rendered by React and is not a top-level container. %s\", isContainerReactRoot ? \"You may have accidentally passed in a React root node instead of its container.\" : \"Instead, have the parent component update its state and rerender in order to remove this component.\");\n              }\n            }\n            return false;\n          }\n        }\n        setAttemptSynchronousHydration(attemptSynchronousHydration$1);\n        setAttemptContinuousHydration(attemptContinuousHydration$1);\n        setAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);\n        setGetCurrentUpdatePriority(getCurrentUpdatePriority);\n        setAttemptHydrationAtPriority(runWithPriority);\n        {\n          if (typeof Map !== \"function\" || // $FlowIssue Flow incorrectly thinks Map has no prototype\n          Map.prototype == null || typeof Map.prototype.forEach !== \"function\" || typeof Set !== \"function\" || // $FlowIssue Flow incorrectly thinks Set has no prototype\n          Set.prototype == null || typeof Set.prototype.clear !== \"function\" || typeof Set.prototype.forEach !== \"function\") {\n            error(\"React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\n          }\n        }\n        setRestoreImplementation(restoreControlledState$3);\n        setBatchingImplementation(batchedUpdates$1, discreteUpdates, flushSync);\n        function createPortal$1(children, container) {\n          var key = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;\n          if (!isValidContainer(container)) {\n            throw new Error(\"Target container is not a DOM element.\");\n          }\n          return createPortal(children, container, null, key);\n        }\n        function renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n          return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback);\n        }\n        var Internals = {\n          usingClientEntryPoint: false,\n          // Keep in sync with ReactTestUtils.js.\n          // This is an array for better minification.\n          Events: [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, batchedUpdates$1]\n        };\n        function createRoot$1(container, options2) {\n          {\n            if (!Internals.usingClientEntryPoint && true) {\n              error('You are importing createRoot from \"react-dom\" which is not supported. You should instead import it from \"react-dom/client\".');\n            }\n          }\n          return createRoot(container, options2);\n        }\n        function hydrateRoot$1(container, initialChildren, options2) {\n          {\n            if (!Internals.usingClientEntryPoint && true) {\n              error('You are importing hydrateRoot from \"react-dom\" which is not supported. You should instead import it from \"react-dom/client\".');\n            }\n          }\n          return hydrateRoot(container, initialChildren, options2);\n        }\n        function flushSync$1(fn) {\n          {\n            if (isAlreadyRendering()) {\n              error(\"flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.\");\n            }\n          }\n          return flushSync(fn);\n        }\n        var foundDevTools = injectIntoDevTools({\n          findFiberByHostInstance: getClosestInstanceFromNode,\n          bundleType: 1,\n          version: ReactVersion,\n          rendererPackageName: \"react-dom\"\n        });\n        {\n          if (!foundDevTools && canUseDOM && window.top === window.self) {\n            if (navigator.userAgent.indexOf(\"Chrome\") > -1 && navigator.userAgent.indexOf(\"Edge\") === -1 || navigator.userAgent.indexOf(\"Firefox\") > -1) {\n              var protocol = window.location.protocol;\n              if (/^(https?|file):$/.test(protocol)) {\n                console.info(\"%cDownload the React DevTools for a better development experience: https://reactjs.org/link/react-devtools\" + (protocol === \"file:\" ? \"\\nYou might need to use a local HTTP server (instead of file://): https://reactjs.org/link/react-devtools-faq\" : \"\"), \"font-weight:bold\");\n              }\n            }\n          }\n        }\n        exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;\n        exports.createPortal = createPortal$1;\n        exports.createRoot = createRoot$1;\n        exports.findDOMNode = findDOMNode;\n        exports.flushSync = flushSync$1;\n        exports.hydrate = hydrate;\n        exports.hydrateRoot = hydrateRoot$1;\n        exports.render = render;\n        exports.unmountComponentAtNode = unmountComponentAtNode;\n        exports.unstable_batchedUpdates = batchedUpdates$1;\n        exports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer;\n        exports.version = ReactVersion;\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n        }\n      })();\n    }\n  }\n});\n\n// node_modules/react-dom/index.js\nvar require_react_dom = __commonJS({\n  \"node_modules/react-dom/index.js\"(exports, module) {\n    \"use strict\";\n    if (false) {\n      checkDCE();\n      module.exports = null;\n    } else {\n      module.exports = require_react_dom_development();\n    }\n  }\n});\n\nexport {\n  require_react_dom\n};\n/*! Bundled license information:\n\nscheduler/cjs/scheduler.development.js:\n  (**\n   * @license React\n   * scheduler.development.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nreact-dom/cjs/react-dom.development.js:\n  (**\n   * @license React\n   * react-dom.development.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n  (**\n   * Checks if an event is supported in the current execution environment.\n   *\n   * NOTE: This will not work correctly for non-generic events such as `change`,\n   * `reset`, `load`, `error`, and `select`.\n   *\n   * Borrows from Modernizr.\n   *\n   * @param {string} eventNameSuffix Event name, e.g. \"click\".\n   * @return {boolean} True if the event is supported.\n   * @internal\n   * @license Modernizr 3.0.0pre (Custom Build) | MIT\n   *)\n*/\n//# sourceMappingURL=chunk-SJKAB62J.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-SNQ54XRM.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/caching/lru.js\nvar LruMap = class extends Map {\n  constructor(size) {\n    super();\n    Object.defineProperty(this, \"maxSize\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.maxSize = size;\n  }\n  get(key) {\n    const value = super.get(key);\n    if (super.has(key) && value !== void 0) {\n      this.delete(key);\n      super.set(key, value);\n    }\n    return value;\n  }\n  set(key, value) {\n    super.set(key, value);\n    if (this.maxSize && this.size > this.maxSize) {\n      const firstKey = this.keys().next().value;\n      if (firstKey) {\n        this.delete(firstKey);\n      }\n    }\n    return this;\n  }\n};\n\nexport {\n  LruMap\n};\n//# sourceMappingURL=chunk-SNQ54XRM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-SPELR2RL.js",
    "content": "import {\n  __export\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/@noble/curves/esm/abstract/utils.js\nvar utils_exports = {};\n__export(utils_exports, {\n  aInRange: () => aInRange,\n  abool: () => abool,\n  abytes: () => abytes,\n  bitGet: () => bitGet,\n  bitLen: () => bitLen,\n  bitMask: () => bitMask,\n  bitSet: () => bitSet,\n  bytesToHex: () => bytesToHex,\n  bytesToNumberBE: () => bytesToNumberBE,\n  bytesToNumberLE: () => bytesToNumberLE,\n  concatBytes: () => concatBytes,\n  createHmacDrbg: () => createHmacDrbg,\n  ensureBytes: () => ensureBytes,\n  equalBytes: () => equalBytes,\n  hexToBytes: () => hexToBytes,\n  hexToNumber: () => hexToNumber,\n  inRange: () => inRange,\n  isBytes: () => isBytes,\n  memoized: () => memoized,\n  notImplemented: () => notImplemented,\n  numberToBytesBE: () => numberToBytesBE,\n  numberToBytesLE: () => numberToBytesLE,\n  numberToHexUnpadded: () => numberToHexUnpadded,\n  numberToVarBytesBE: () => numberToVarBytesBE,\n  utf8ToBytes: () => utf8ToBytes,\n  validateObject: () => validateObject\n});\nvar _0n = BigInt(0);\nvar _1n = BigInt(1);\nvar _2n = BigInt(2);\nfunction isBytes(a) {\n  return a instanceof Uint8Array || a != null && typeof a === \"object\" && a.constructor.name === \"Uint8Array\";\n}\nfunction abytes(item) {\n  if (!isBytes(item))\n    throw new Error(\"Uint8Array expected\");\n}\nfunction abool(title, value) {\n  if (typeof value !== \"boolean\")\n    throw new Error(`${title} must be valid boolean, got \"${value}\".`);\n}\nvar hexes = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\nfunction bytesToHex(bytes) {\n  abytes(bytes);\n  let hex = \"\";\n  for (let i = 0; i < bytes.length; i++) {\n    hex += hexes[bytes[i]];\n  }\n  return hex;\n}\nfunction numberToHexUnpadded(num) {\n  const hex = num.toString(16);\n  return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n  if (typeof hex !== \"string\")\n    throw new Error(\"hex string expected, got \" + typeof hex);\n  return BigInt(hex === \"\" ? \"0\" : `0x${hex}`);\n}\nvar asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\nfunction asciiToBase16(char) {\n  if (char >= asciis._0 && char <= asciis._9)\n    return char - asciis._0;\n  if (char >= asciis._A && char <= asciis._F)\n    return char - (asciis._A - 10);\n  if (char >= asciis._a && char <= asciis._f)\n    return char - (asciis._a - 10);\n  return;\n}\nfunction hexToBytes(hex) {\n  if (typeof hex !== \"string\")\n    throw new Error(\"hex string expected, got \" + typeof hex);\n  const hl = hex.length;\n  const al = hl / 2;\n  if (hl % 2)\n    throw new Error(\"padded hex string expected, got unpadded hex of length \" + hl);\n  const array = new Uint8Array(al);\n  for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n    const n1 = asciiToBase16(hex.charCodeAt(hi));\n    const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n    if (n1 === void 0 || n2 === void 0) {\n      const char = hex[hi] + hex[hi + 1];\n      throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n    }\n    array[ai] = n1 * 16 + n2;\n  }\n  return array;\n}\nfunction bytesToNumberBE(bytes) {\n  return hexToNumber(bytesToHex(bytes));\n}\nfunction bytesToNumberLE(bytes) {\n  abytes(bytes);\n  return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nfunction numberToBytesBE(n, len) {\n  return hexToBytes(n.toString(16).padStart(len * 2, \"0\"));\n}\nfunction numberToBytesLE(n, len) {\n  return numberToBytesBE(n, len).reverse();\n}\nfunction numberToVarBytesBE(n) {\n  return hexToBytes(numberToHexUnpadded(n));\n}\nfunction ensureBytes(title, hex, expectedLength) {\n  let res;\n  if (typeof hex === \"string\") {\n    try {\n      res = hexToBytes(hex);\n    } catch (e) {\n      throw new Error(`${title} must be valid hex string, got \"${hex}\". Cause: ${e}`);\n    }\n  } else if (isBytes(hex)) {\n    res = Uint8Array.from(hex);\n  } else {\n    throw new Error(`${title} must be hex string or Uint8Array`);\n  }\n  const len = res.length;\n  if (typeof expectedLength === \"number\" && len !== expectedLength)\n    throw new Error(`${title} expected ${expectedLength} bytes, got ${len}`);\n  return res;\n}\nfunction concatBytes(...arrays) {\n  let sum = 0;\n  for (let i = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    abytes(a);\n    sum += a.length;\n  }\n  const res = new Uint8Array(sum);\n  for (let i = 0, pad = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    res.set(a, pad);\n    pad += a.length;\n  }\n  return res;\n}\nfunction equalBytes(a, b) {\n  if (a.length !== b.length)\n    return false;\n  let diff = 0;\n  for (let i = 0; i < a.length; i++)\n    diff |= a[i] ^ b[i];\n  return diff === 0;\n}\nfunction utf8ToBytes(str) {\n  if (typeof str !== \"string\")\n    throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n  return new Uint8Array(new TextEncoder().encode(str));\n}\nvar isPosBig = (n) => typeof n === \"bigint\" && _0n <= n;\nfunction inRange(n, min, max) {\n  return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\nfunction aInRange(title, n, min, max) {\n  if (!inRange(n, min, max))\n    throw new Error(`expected valid ${title}: ${min} <= n < ${max}, got ${typeof n} ${n}`);\n}\nfunction bitLen(n) {\n  let len;\n  for (len = 0; n > _0n; n >>= _1n, len += 1)\n    ;\n  return len;\n}\nfunction bitGet(n, pos) {\n  return n >> BigInt(pos) & _1n;\n}\nfunction bitSet(n, pos, value) {\n  return n | (value ? _1n : _0n) << BigInt(pos);\n}\nvar bitMask = (n) => (_2n << BigInt(n - 1)) - _1n;\nvar u8n = (data) => new Uint8Array(data);\nvar u8fr = (arr) => Uint8Array.from(arr);\nfunction createHmacDrbg(hashLen, qByteLen, hmacFn) {\n  if (typeof hashLen !== \"number\" || hashLen < 2)\n    throw new Error(\"hashLen must be a number\");\n  if (typeof qByteLen !== \"number\" || qByteLen < 2)\n    throw new Error(\"qByteLen must be a number\");\n  if (typeof hmacFn !== \"function\")\n    throw new Error(\"hmacFn must be a function\");\n  let v = u8n(hashLen);\n  let k = u8n(hashLen);\n  let i = 0;\n  const reset = () => {\n    v.fill(1);\n    k.fill(0);\n    i = 0;\n  };\n  const h = (...b) => hmacFn(k, v, ...b);\n  const reseed = (seed = u8n()) => {\n    k = h(u8fr([0]), seed);\n    v = h();\n    if (seed.length === 0)\n      return;\n    k = h(u8fr([1]), seed);\n    v = h();\n  };\n  const gen = () => {\n    if (i++ >= 1e3)\n      throw new Error(\"drbg: tried 1000 values\");\n    let len = 0;\n    const out = [];\n    while (len < qByteLen) {\n      v = h();\n      const sl = v.slice();\n      out.push(sl);\n      len += v.length;\n    }\n    return concatBytes(...out);\n  };\n  const genUntil = (seed, pred) => {\n    reset();\n    reseed(seed);\n    let res = void 0;\n    while (!(res = pred(gen())))\n      reseed();\n    reset();\n    return res;\n  };\n  return genUntil;\n}\nvar validatorFns = {\n  bigint: (val) => typeof val === \"bigint\",\n  function: (val) => typeof val === \"function\",\n  boolean: (val) => typeof val === \"boolean\",\n  string: (val) => typeof val === \"string\",\n  stringOrUint8Array: (val) => typeof val === \"string\" || isBytes(val),\n  isSafeInteger: (val) => Number.isSafeInteger(val),\n  array: (val) => Array.isArray(val),\n  field: (val, object) => object.Fp.isValid(val),\n  hash: (val) => typeof val === \"function\" && Number.isSafeInteger(val.outputLen)\n};\nfunction validateObject(object, validators, optValidators = {}) {\n  const checkField = (fieldName, type, isOptional) => {\n    const checkVal = validatorFns[type];\n    if (typeof checkVal !== \"function\")\n      throw new Error(`Invalid validator \"${type}\", expected function`);\n    const val = object[fieldName];\n    if (isOptional && val === void 0)\n      return;\n    if (!checkVal(val, object)) {\n      throw new Error(`Invalid param ${String(fieldName)}=${val} (${typeof val}), expected ${type}`);\n    }\n  };\n  for (const [fieldName, type] of Object.entries(validators))\n    checkField(fieldName, type, false);\n  for (const [fieldName, type] of Object.entries(optValidators))\n    checkField(fieldName, type, true);\n  return object;\n}\nvar notImplemented = () => {\n  throw new Error(\"not implemented\");\n};\nfunction memoized(fn) {\n  const map = /* @__PURE__ */ new WeakMap();\n  return (arg, ...args) => {\n    const val = map.get(arg);\n    if (val !== void 0)\n      return val;\n    const computed = fn(arg, ...args);\n    map.set(arg, computed);\n    return computed;\n  };\n}\n\nexport {\n  isBytes,\n  abytes,\n  abool,\n  bytesToHex,\n  numberToHexUnpadded,\n  hexToNumber,\n  hexToBytes,\n  bytesToNumberBE,\n  bytesToNumberLE,\n  numberToBytesBE,\n  numberToBytesLE,\n  ensureBytes,\n  concatBytes,\n  equalBytes,\n  utf8ToBytes,\n  inRange,\n  aInRange,\n  bitLen,\n  bitMask,\n  createHmacDrbg,\n  validateObject,\n  memoized,\n  utils_exports\n};\n/*! Bundled license information:\n\n@noble/curves/esm/abstract/utils.js:\n  (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n*/\n//# sourceMappingURL=chunk-SPELR2RL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-SWMZXE3E.js",
    "content": "import {\n  hexToNumber,\n  isHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/utils/signatures/helpers/parseTypedData.js\nfunction parseTypedData(typedData) {\n  const domain = typedData.domain;\n  if ((domain == null ? void 0 : domain.chainId) !== void 0 && isHex(domain.chainId)) {\n    typedData.domain = {\n      ...typedData.domain,\n      chainId: hexToNumber(typedData.domain.chainId)\n    };\n  }\n  return typedData;\n}\n\nexport {\n  parseTypedData\n};\n//# sourceMappingURL=chunk-SWMZXE3E.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-TFBEDS4S.js",
    "content": "import {\n  withCache\n} from \"./chunk-GOA7IGSB.js\";\nimport {\n  DEFAULT_RPC_URL,\n  getThirdwebDomains\n} from \"./chunk-QHKZ43P6.js\";\nimport {\n  isThirdwebUrl\n} from \"./chunk-3GSJ2FQJ.js\";\n\n// node_modules/thirdweb/dist/esm/chains/utils.js\nvar CUSTOM_CHAIN_MAP = /* @__PURE__ */ new Map();\nfunction defineChain(options) {\n  const RPC_URL = getThirdwebDomains().rpc;\n  if (typeof options === \"number\") {\n    return {\n      id: options,\n      rpc: `https://${options}.${RPC_URL}`\n    };\n  }\n  if (isViemChain(options)) {\n    return convertViemChain(options);\n  }\n  if (isLegacyChain(options)) {\n    return convertLegacyChain(options);\n  }\n  let rpc = options.rpc;\n  if (!rpc) {\n    rpc = `https://${options.id}.${RPC_URL}`;\n  }\n  const chain = { ...options, rpc };\n  CUSTOM_CHAIN_MAP.set(options.id, chain);\n  return chain;\n}\nfunction cacheChains(chains) {\n  for (const chain of chains) {\n    CUSTOM_CHAIN_MAP.set(chain.id, chain);\n  }\n}\nfunction getCachedChain(id) {\n  if (CUSTOM_CHAIN_MAP.has(id)) {\n    return CUSTOM_CHAIN_MAP.get(id);\n  }\n  const RPC_URL = getThirdwebDomains().rpc;\n  const chain = {\n    id,\n    rpc: `https://${id}.${RPC_URL}`\n  };\n  return chain;\n}\nfunction getCachedChainIfExists(id) {\n  return CUSTOM_CHAIN_MAP.get(id);\n}\nfunction isLegacyChain(chain) {\n  return \"rpc\" in chain && Array.isArray(chain.rpc) && \"slug\" in chain;\n}\nfunction convertLegacyChain(legacyChain) {\n  var _a;\n  const RPC_URL = getThirdwebDomains().rpc;\n  return {\n    id: legacyChain.chainId,\n    name: legacyChain.name,\n    rpc: legacyChain.rpc[0] ?? `https://${legacyChain.chainId}.${RPC_URL}`,\n    blockExplorers: (_a = legacyChain == null ? void 0 : legacyChain.explorers) == null ? void 0 : _a.map((explorer) => ({\n      name: explorer.name,\n      url: explorer.url,\n      apiUrl: explorer.url\n    })),\n    nativeCurrency: {\n      name: legacyChain.nativeCurrency.name,\n      symbol: legacyChain.nativeCurrency.symbol,\n      decimals: legacyChain.nativeCurrency.decimals\n    },\n    faucets: legacyChain.faucets ? [...legacyChain.faucets] : void 0,\n    icon: legacyChain.icon,\n    testnet: legacyChain.testnet ? true : void 0\n  };\n}\nfunction isViemChain(chain) {\n  return \"rpcUrls\" in chain && !(\"rpc\" in chain);\n}\nfunction convertViemChain(viemChain) {\n  const RPC_URL = getThirdwebDomains().rpc;\n  return {\n    id: viemChain.id,\n    name: viemChain.name,\n    nativeCurrency: {\n      name: viemChain.nativeCurrency.name,\n      symbol: viemChain.nativeCurrency.symbol,\n      decimals: viemChain.nativeCurrency.decimals\n    },\n    rpc: viemChain.rpcUrls.default.http[0] ?? `https://${viemChain.id}.${RPC_URL}`,\n    blockExplorers: (viemChain == null ? void 0 : viemChain.blockExplorers) ? Object.values(viemChain == null ? void 0 : viemChain.blockExplorers).map((explorer) => {\n      return {\n        name: explorer.name,\n        url: explorer.url,\n        apiUrl: explorer.apiUrl\n      };\n    }) : [],\n    testnet: viemChain.testnet ? true : void 0\n  };\n}\nfunction getRpcUrlForChain(options) {\n  const baseRpcUrl = getThirdwebDomains().rpc;\n  if (typeof options.chain === \"number\") {\n    return `https://${options.chain}.${baseRpcUrl}/${options.client.clientId}`;\n  }\n  const { rpc } = options.chain;\n  if (isThirdwebUrl(rpc)) {\n    const rpcUrl = new URL(options.chain.rpc.replace(DEFAULT_RPC_URL, baseRpcUrl));\n    rpcUrl.pathname = `/${options.client.clientId}`;\n    return rpcUrl.toString();\n  }\n  return rpc;\n}\nasync function getChainSymbol(chain) {\n  var _a;\n  if (!((_a = chain.nativeCurrency) == null ? void 0 : _a.symbol)) {\n    return getChainMetadata(chain).then((data) => data.nativeCurrency.symbol).catch(() => {\n      return \"ETH\";\n    });\n  }\n  return chain.nativeCurrency.symbol;\n}\nasync function getChainDecimals(chain) {\n  var _a;\n  if (!((_a = chain.nativeCurrency) == null ? void 0 : _a.decimals)) {\n    return getChainMetadata(chain).then((data) => data.nativeCurrency.decimals).catch(() => {\n      return 18;\n    });\n  }\n  return chain.nativeCurrency.decimals;\n}\nasync function getChainNativeCurrencyName(chain) {\n  var _a;\n  if (!((_a = chain.nativeCurrency) == null ? void 0 : _a.name)) {\n    return getChainMetadata(chain).then((data) => data.nativeCurrency.name).catch(() => {\n      return \"ETH\";\n    });\n  }\n  return chain.nativeCurrency.name;\n}\nfunction getChainMetadata(chain) {\n  const chainId = chain.id;\n  return withCache(async () => {\n    var _a;\n    try {\n      const res = await fetch(`https://api.thirdweb.com/v1/chains/${chainId}`);\n      if (!res.ok) {\n        (_a = res.body) == null ? void 0 : _a.cancel();\n        throw new Error(`Failed to fetch chain data for chainId ${chainId}`);\n      }\n      const response = await res.json();\n      if (response.error) {\n        throw new Error(`Failed to fetch chain data for chainId ${chainId}`);\n      }\n      if (!response.data) {\n        throw new Error(`Failed to fetch chain data for chainId ${chainId}`);\n      }\n      const data = response.data;\n      return createChainMetadata(chain, data);\n    } catch {\n      return createChainMetadata(chain);\n    }\n  }, {\n    cacheKey: `chain:${chainId}`,\n    cacheTime: 5 * 60 * 1e3\n    // 5 minutes\n  });\n}\nfunction convertApiChainToChain(apiChain) {\n  var _a;\n  return {\n    id: apiChain.chainId,\n    name: apiChain.name,\n    rpc: apiChain.rpc[0] || \"\",\n    testnet: apiChain.testnet === true ? true : void 0,\n    nativeCurrency: apiChain.nativeCurrency,\n    blockExplorers: (_a = apiChain.explorers) == null ? void 0 : _a.map((explorer) => {\n      return {\n        name: explorer.name,\n        url: explorer.url,\n        apiUrl: explorer.url\n      };\n    }),\n    faucets: apiChain.faucets ? [...apiChain.faucets] : void 0,\n    icon: apiChain.icon\n  };\n}\nfunction createChainMetadata(chain, data) {\n  var _a;\n  const nativeCurrency = chain.nativeCurrency ? {\n    ...data == null ? void 0 : data.nativeCurrency,\n    ...chain.nativeCurrency\n  } : data == null ? void 0 : data.nativeCurrency;\n  return {\n    ...data,\n    name: chain.name || (data == null ? void 0 : data.name) || \"\",\n    chainId: chain.id || (data == null ? void 0 : data.chainId) || -1,\n    rpc: chain.rpc ? [chain.rpc] : (data == null ? void 0 : data.rpc) || [\"\"],\n    testnet: chain.testnet || (data == null ? void 0 : data.testnet) || false,\n    nativeCurrency: {\n      name: (nativeCurrency == null ? void 0 : nativeCurrency.name) || \"\",\n      symbol: (nativeCurrency == null ? void 0 : nativeCurrency.symbol) || \"\",\n      decimals: (nativeCurrency == null ? void 0 : nativeCurrency.decimals) || 18\n    },\n    icon: chain.icon || (data == null ? void 0 : data.icon),\n    chain: (data == null ? void 0 : data.chain) || chain.name || \"\",\n    shortName: (data == null ? void 0 : data.shortName) || chain.name || \"\",\n    slug: (data == null ? void 0 : data.slug) || chain.name || \"\",\n    explorers: ((_a = chain.blockExplorers) == null ? void 0 : _a.map((e) => ({\n      name: e.name,\n      url: e.url,\n      standard: \"EIP3091\"\n    }))) || (data == null ? void 0 : data.explorers),\n    stackType: (data == null ? void 0 : data.stackType) || \"\"\n  };\n}\n\nexport {\n  CUSTOM_CHAIN_MAP,\n  defineChain,\n  cacheChains,\n  getCachedChain,\n  getCachedChainIfExists,\n  convertLegacyChain,\n  getRpcUrlForChain,\n  getChainSymbol,\n  getChainDecimals,\n  getChainNativeCurrencyName,\n  getChainMetadata,\n  convertApiChainToChain\n};\n//# sourceMappingURL=chunk-TFBEDS4S.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-TTOANXGP.js",
    "content": "import {\n  approve\n} from \"./chunk-AWMNEQRO.js\";\nimport {\n  toUnits\n} from \"./chunk-UY2SRO54.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/write/approve.js\nfunction approve2(options) {\n  return approve({\n    contract: options.contract,\n    asyncParams: async () => {\n      let amount;\n      if (\"amount\" in options) {\n        const { decimals } = await import(\"./decimals-OWVEHM45.js\");\n        const d = await decimals(options).catch(() => 18);\n        amount = toUnits(options.amount.toString(), d);\n      } else {\n        amount = options.amountWei;\n      }\n      return {\n        spender: options.spender,\n        value: amount,\n        overrides: {\n          erc20Value: {\n            amountWei: amount,\n            tokenAddress: options.contract.address\n          }\n        }\n      };\n    }\n  });\n}\n\nexport {\n  approve2 as approve\n};\n//# sourceMappingURL=chunk-TTOANXGP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-U3QNWT4A.js",
    "content": "import {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  __commonJS\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/react/cjs/react-jsx-runtime.development.js\nvar require_react_jsx_runtime_development = __commonJS({\n  \"node_modules/react/cjs/react-jsx-runtime.development.js\"(exports) {\n    \"use strict\";\n    if (true) {\n      (function() {\n        \"use strict\";\n        var React = require_react();\n        var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n        var REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\n        var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n        var REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\n        var REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n        var REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\n        var REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\n        var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n        var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n        var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n        var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n        var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n        var REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\n        var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n        var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n        function getIteratorFn(maybeIterable) {\n          if (maybeIterable === null || typeof maybeIterable !== \"object\") {\n            return null;\n          }\n          var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n          if (typeof maybeIterator === \"function\") {\n            return maybeIterator;\n          }\n          return null;\n        }\n        var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n        function error(format) {\n          {\n            {\n              for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n                args[_key2 - 1] = arguments[_key2];\n              }\n              printWarning(\"error\", format, args);\n            }\n          }\n        }\n        function printWarning(level, format, args) {\n          {\n            var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame;\n            var stack = ReactDebugCurrentFrame2.getStackAddendum();\n            if (stack !== \"\") {\n              format += \"%s\";\n              args = args.concat([stack]);\n            }\n            var argsWithFormat = args.map(function(item) {\n              return String(item);\n            });\n            argsWithFormat.unshift(\"Warning: \" + format);\n            Function.prototype.apply.call(console[level], console, argsWithFormat);\n          }\n        }\n        var enableScopeAPI = false;\n        var enableCacheElement = false;\n        var enableTransitionTracing = false;\n        var enableLegacyHidden = false;\n        var enableDebugTracing = false;\n        var REACT_MODULE_REFERENCE;\n        {\n          REACT_MODULE_REFERENCE = Symbol.for(\"react.module.reference\");\n        }\n        function isValidElementType(type) {\n          if (typeof type === \"string\" || typeof type === \"function\") {\n            return true;\n          }\n          if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {\n            return true;\n          }\n          if (typeof type === \"object\" && type !== null) {\n            if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n            // types supported by any Flight configuration anywhere since\n            // we don't know which Flight build this will end up being used\n            // with.\n            type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) {\n              return true;\n            }\n          }\n          return false;\n        }\n        function getWrappedName(outerType, innerType, wrapperName) {\n          var displayName = outerType.displayName;\n          if (displayName) {\n            return displayName;\n          }\n          var functionName = innerType.displayName || innerType.name || \"\";\n          return functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n        }\n        function getContextName(type) {\n          return type.displayName || \"Context\";\n        }\n        function getComponentNameFromType(type) {\n          if (type == null) {\n            return null;\n          }\n          {\n            if (typeof type.tag === \"number\") {\n              error(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\");\n            }\n          }\n          if (typeof type === \"function\") {\n            return type.displayName || type.name || null;\n          }\n          if (typeof type === \"string\") {\n            return type;\n          }\n          switch (type) {\n            case REACT_FRAGMENT_TYPE:\n              return \"Fragment\";\n            case REACT_PORTAL_TYPE:\n              return \"Portal\";\n            case REACT_PROFILER_TYPE:\n              return \"Profiler\";\n            case REACT_STRICT_MODE_TYPE:\n              return \"StrictMode\";\n            case REACT_SUSPENSE_TYPE:\n              return \"Suspense\";\n            case REACT_SUSPENSE_LIST_TYPE:\n              return \"SuspenseList\";\n          }\n          if (typeof type === \"object\") {\n            switch (type.$$typeof) {\n              case REACT_CONTEXT_TYPE:\n                var context = type;\n                return getContextName(context) + \".Consumer\";\n              case REACT_PROVIDER_TYPE:\n                var provider = type;\n                return getContextName(provider._context) + \".Provider\";\n              case REACT_FORWARD_REF_TYPE:\n                return getWrappedName(type, type.render, \"ForwardRef\");\n              case REACT_MEMO_TYPE:\n                var outerName = type.displayName || null;\n                if (outerName !== null) {\n                  return outerName;\n                }\n                return getComponentNameFromType(type.type) || \"Memo\";\n              case REACT_LAZY_TYPE: {\n                var lazyComponent = type;\n                var payload = lazyComponent._payload;\n                var init = lazyComponent._init;\n                try {\n                  return getComponentNameFromType(init(payload));\n                } catch (x) {\n                  return null;\n                }\n              }\n            }\n          }\n          return null;\n        }\n        var assign = Object.assign;\n        var disabledDepth = 0;\n        var prevLog;\n        var prevInfo;\n        var prevWarn;\n        var prevError;\n        var prevGroup;\n        var prevGroupCollapsed;\n        var prevGroupEnd;\n        function disabledLog() {\n        }\n        disabledLog.__reactDisabledLog = true;\n        function disableLogs() {\n          {\n            if (disabledDepth === 0) {\n              prevLog = console.log;\n              prevInfo = console.info;\n              prevWarn = console.warn;\n              prevError = console.error;\n              prevGroup = console.group;\n              prevGroupCollapsed = console.groupCollapsed;\n              prevGroupEnd = console.groupEnd;\n              var props = {\n                configurable: true,\n                enumerable: true,\n                value: disabledLog,\n                writable: true\n              };\n              Object.defineProperties(console, {\n                info: props,\n                log: props,\n                warn: props,\n                error: props,\n                group: props,\n                groupCollapsed: props,\n                groupEnd: props\n              });\n            }\n            disabledDepth++;\n          }\n        }\n        function reenableLogs() {\n          {\n            disabledDepth--;\n            if (disabledDepth === 0) {\n              var props = {\n                configurable: true,\n                enumerable: true,\n                writable: true\n              };\n              Object.defineProperties(console, {\n                log: assign({}, props, {\n                  value: prevLog\n                }),\n                info: assign({}, props, {\n                  value: prevInfo\n                }),\n                warn: assign({}, props, {\n                  value: prevWarn\n                }),\n                error: assign({}, props, {\n                  value: prevError\n                }),\n                group: assign({}, props, {\n                  value: prevGroup\n                }),\n                groupCollapsed: assign({}, props, {\n                  value: prevGroupCollapsed\n                }),\n                groupEnd: assign({}, props, {\n                  value: prevGroupEnd\n                })\n              });\n            }\n            if (disabledDepth < 0) {\n              error(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\");\n            }\n          }\n        }\n        var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n        var prefix;\n        function describeBuiltInComponentFrame(name, source, ownerFn) {\n          {\n            if (prefix === void 0) {\n              try {\n                throw Error();\n              } catch (x) {\n                var match = x.stack.trim().match(/\\n( *(at )?)/);\n                prefix = match && match[1] || \"\";\n              }\n            }\n            return \"\\n\" + prefix + name;\n          }\n        }\n        var reentry = false;\n        var componentFrameCache;\n        {\n          var PossiblyWeakMap = typeof WeakMap === \"function\" ? WeakMap : Map;\n          componentFrameCache = new PossiblyWeakMap();\n        }\n        function describeNativeComponentFrame(fn, construct) {\n          if (!fn || reentry) {\n            return \"\";\n          }\n          {\n            var frame = componentFrameCache.get(fn);\n            if (frame !== void 0) {\n              return frame;\n            }\n          }\n          var control;\n          reentry = true;\n          var previousPrepareStackTrace = Error.prepareStackTrace;\n          Error.prepareStackTrace = void 0;\n          var previousDispatcher;\n          {\n            previousDispatcher = ReactCurrentDispatcher.current;\n            ReactCurrentDispatcher.current = null;\n            disableLogs();\n          }\n          try {\n            if (construct) {\n              var Fake = function() {\n                throw Error();\n              };\n              Object.defineProperty(Fake.prototype, \"props\", {\n                set: function() {\n                  throw Error();\n                }\n              });\n              if (typeof Reflect === \"object\" && Reflect.construct) {\n                try {\n                  Reflect.construct(Fake, []);\n                } catch (x) {\n                  control = x;\n                }\n                Reflect.construct(fn, [], Fake);\n              } else {\n                try {\n                  Fake.call();\n                } catch (x) {\n                  control = x;\n                }\n                fn.call(Fake.prototype);\n              }\n            } else {\n              try {\n                throw Error();\n              } catch (x) {\n                control = x;\n              }\n              fn();\n            }\n          } catch (sample) {\n            if (sample && control && typeof sample.stack === \"string\") {\n              var sampleLines = sample.stack.split(\"\\n\");\n              var controlLines = control.stack.split(\"\\n\");\n              var s = sampleLines.length - 1;\n              var c = controlLines.length - 1;\n              while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n                c--;\n              }\n              for (; s >= 1 && c >= 0; s--, c--) {\n                if (sampleLines[s] !== controlLines[c]) {\n                  if (s !== 1 || c !== 1) {\n                    do {\n                      s--;\n                      c--;\n                      if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                        var _frame = \"\\n\" + sampleLines[s].replace(\" at new \", \" at \");\n                        if (fn.displayName && _frame.includes(\"<anonymous>\")) {\n                          _frame = _frame.replace(\"<anonymous>\", fn.displayName);\n                        }\n                        {\n                          if (typeof fn === \"function\") {\n                            componentFrameCache.set(fn, _frame);\n                          }\n                        }\n                        return _frame;\n                      }\n                    } while (s >= 1 && c >= 0);\n                  }\n                  break;\n                }\n              }\n            }\n          } finally {\n            reentry = false;\n            {\n              ReactCurrentDispatcher.current = previousDispatcher;\n              reenableLogs();\n            }\n            Error.prepareStackTrace = previousPrepareStackTrace;\n          }\n          var name = fn ? fn.displayName || fn.name : \"\";\n          var syntheticFrame = name ? describeBuiltInComponentFrame(name) : \"\";\n          {\n            if (typeof fn === \"function\") {\n              componentFrameCache.set(fn, syntheticFrame);\n            }\n          }\n          return syntheticFrame;\n        }\n        function describeFunctionComponentFrame(fn, source, ownerFn) {\n          {\n            return describeNativeComponentFrame(fn, false);\n          }\n        }\n        function shouldConstruct(Component) {\n          var prototype = Component.prototype;\n          return !!(prototype && prototype.isReactComponent);\n        }\n        function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n          if (type == null) {\n            return \"\";\n          }\n          if (typeof type === \"function\") {\n            {\n              return describeNativeComponentFrame(type, shouldConstruct(type));\n            }\n          }\n          if (typeof type === \"string\") {\n            return describeBuiltInComponentFrame(type);\n          }\n          switch (type) {\n            case REACT_SUSPENSE_TYPE:\n              return describeBuiltInComponentFrame(\"Suspense\");\n            case REACT_SUSPENSE_LIST_TYPE:\n              return describeBuiltInComponentFrame(\"SuspenseList\");\n          }\n          if (typeof type === \"object\") {\n            switch (type.$$typeof) {\n              case REACT_FORWARD_REF_TYPE:\n                return describeFunctionComponentFrame(type.render);\n              case REACT_MEMO_TYPE:\n                return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n              case REACT_LAZY_TYPE: {\n                var lazyComponent = type;\n                var payload = lazyComponent._payload;\n                var init = lazyComponent._init;\n                try {\n                  return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n                } catch (x) {\n                }\n              }\n            }\n          }\n          return \"\";\n        }\n        var hasOwnProperty = Object.prototype.hasOwnProperty;\n        var loggedTypeFailures = {};\n        var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n        function setCurrentlyValidatingElement(element) {\n          {\n            if (element) {\n              var owner = element._owner;\n              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n              ReactDebugCurrentFrame.setExtraStackFrame(stack);\n            } else {\n              ReactDebugCurrentFrame.setExtraStackFrame(null);\n            }\n          }\n        }\n        function checkPropTypes(typeSpecs, values, location, componentName, element) {\n          {\n            var has = Function.call.bind(hasOwnProperty);\n            for (var typeSpecName in typeSpecs) {\n              if (has(typeSpecs, typeSpecName)) {\n                var error$1 = void 0;\n                try {\n                  if (typeof typeSpecs[typeSpecName] !== \"function\") {\n                    var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n                    err.name = \"Invariant Violation\";\n                    throw err;\n                  }\n                  error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\");\n                } catch (ex) {\n                  error$1 = ex;\n                }\n                if (error$1 && !(error$1 instanceof Error)) {\n                  setCurrentlyValidatingElement(element);\n                  error(\"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\", componentName || \"React class\", location, typeSpecName, typeof error$1);\n                  setCurrentlyValidatingElement(null);\n                }\n                if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n                  loggedTypeFailures[error$1.message] = true;\n                  setCurrentlyValidatingElement(element);\n                  error(\"Failed %s type: %s\", location, error$1.message);\n                  setCurrentlyValidatingElement(null);\n                }\n              }\n            }\n          }\n        }\n        var isArrayImpl = Array.isArray;\n        function isArray(a) {\n          return isArrayImpl(a);\n        }\n        function typeName(value) {\n          {\n            var hasToStringTag = typeof Symbol === \"function\" && Symbol.toStringTag;\n            var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || \"Object\";\n            return type;\n          }\n        }\n        function willCoercionThrow(value) {\n          {\n            try {\n              testStringCoercion(value);\n              return false;\n            } catch (e) {\n              return true;\n            }\n          }\n        }\n        function testStringCoercion(value) {\n          return \"\" + value;\n        }\n        function checkKeyStringCoercion(value) {\n          {\n            if (willCoercionThrow(value)) {\n              error(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\", typeName(value));\n              return testStringCoercion(value);\n            }\n          }\n        }\n        var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\n        var RESERVED_PROPS = {\n          key: true,\n          ref: true,\n          __self: true,\n          __source: true\n        };\n        var specialPropKeyWarningShown;\n        var specialPropRefWarningShown;\n        var didWarnAboutStringRefs;\n        {\n          didWarnAboutStringRefs = {};\n        }\n        function hasValidRef(config) {\n          {\n            if (hasOwnProperty.call(config, \"ref\")) {\n              var getter = Object.getOwnPropertyDescriptor(config, \"ref\").get;\n              if (getter && getter.isReactWarning) {\n                return false;\n              }\n            }\n          }\n          return config.ref !== void 0;\n        }\n        function hasValidKey(config) {\n          {\n            if (hasOwnProperty.call(config, \"key\")) {\n              var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n              if (getter && getter.isReactWarning) {\n                return false;\n              }\n            }\n          }\n          return config.key !== void 0;\n        }\n        function warnIfStringRefCannotBeAutoConverted(config, self) {\n          {\n            if (typeof config.ref === \"string\" && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n              var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n              if (!didWarnAboutStringRefs[componentName]) {\n                error('Component \"%s\" contains the string ref \"%s\". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n                didWarnAboutStringRefs[componentName] = true;\n              }\n            }\n          }\n        }\n        function defineKeyPropWarningGetter(props, displayName) {\n          {\n            var warnAboutAccessingKey = function() {\n              if (!specialPropKeyWarningShown) {\n                specialPropKeyWarningShown = true;\n                error(\"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", displayName);\n              }\n            };\n            warnAboutAccessingKey.isReactWarning = true;\n            Object.defineProperty(props, \"key\", {\n              get: warnAboutAccessingKey,\n              configurable: true\n            });\n          }\n        }\n        function defineRefPropWarningGetter(props, displayName) {\n          {\n            var warnAboutAccessingRef = function() {\n              if (!specialPropRefWarningShown) {\n                specialPropRefWarningShown = true;\n                error(\"%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", displayName);\n              }\n            };\n            warnAboutAccessingRef.isReactWarning = true;\n            Object.defineProperty(props, \"ref\", {\n              get: warnAboutAccessingRef,\n              configurable: true\n            });\n          }\n        }\n        var ReactElement = function(type, key, ref, self, source, owner, props) {\n          var element = {\n            // This tag allows us to uniquely identify this as a React Element\n            $$typeof: REACT_ELEMENT_TYPE,\n            // Built-in properties that belong on the element\n            type,\n            key,\n            ref,\n            props,\n            // Record the component responsible for creating this element.\n            _owner: owner\n          };\n          {\n            element._store = {};\n            Object.defineProperty(element._store, \"validated\", {\n              configurable: false,\n              enumerable: false,\n              writable: true,\n              value: false\n            });\n            Object.defineProperty(element, \"_self\", {\n              configurable: false,\n              enumerable: false,\n              writable: false,\n              value: self\n            });\n            Object.defineProperty(element, \"_source\", {\n              configurable: false,\n              enumerable: false,\n              writable: false,\n              value: source\n            });\n            if (Object.freeze) {\n              Object.freeze(element.props);\n              Object.freeze(element);\n            }\n          }\n          return element;\n        };\n        function jsxDEV(type, config, maybeKey, source, self) {\n          {\n            var propName;\n            var props = {};\n            var key = null;\n            var ref = null;\n            if (maybeKey !== void 0) {\n              {\n                checkKeyStringCoercion(maybeKey);\n              }\n              key = \"\" + maybeKey;\n            }\n            if (hasValidKey(config)) {\n              {\n                checkKeyStringCoercion(config.key);\n              }\n              key = \"\" + config.key;\n            }\n            if (hasValidRef(config)) {\n              ref = config.ref;\n              warnIfStringRefCannotBeAutoConverted(config, self);\n            }\n            for (propName in config) {\n              if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n                props[propName] = config[propName];\n              }\n            }\n            if (type && type.defaultProps) {\n              var defaultProps = type.defaultProps;\n              for (propName in defaultProps) {\n                if (props[propName] === void 0) {\n                  props[propName] = defaultProps[propName];\n                }\n              }\n            }\n            if (key || ref) {\n              var displayName = typeof type === \"function\" ? type.displayName || type.name || \"Unknown\" : type;\n              if (key) {\n                defineKeyPropWarningGetter(props, displayName);\n              }\n              if (ref) {\n                defineRefPropWarningGetter(props, displayName);\n              }\n            }\n            return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n          }\n        }\n        var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\n        var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n        function setCurrentlyValidatingElement$1(element) {\n          {\n            if (element) {\n              var owner = element._owner;\n              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n              ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n            } else {\n              ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n            }\n          }\n        }\n        var propTypesMisspellWarningShown;\n        {\n          propTypesMisspellWarningShown = false;\n        }\n        function isValidElement(object) {\n          {\n            return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n          }\n        }\n        function getDeclarationErrorAddendum() {\n          {\n            if (ReactCurrentOwner$1.current) {\n              var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n              if (name) {\n                return \"\\n\\nCheck the render method of `\" + name + \"`.\";\n              }\n            }\n            return \"\";\n          }\n        }\n        function getSourceInfoErrorAddendum(source) {\n          {\n            if (source !== void 0) {\n              var fileName = source.fileName.replace(/^.*[\\\\\\/]/, \"\");\n              var lineNumber = source.lineNumber;\n              return \"\\n\\nCheck your code at \" + fileName + \":\" + lineNumber + \".\";\n            }\n            return \"\";\n          }\n        }\n        var ownerHasKeyUseWarning = {};\n        function getCurrentComponentErrorInfo(parentType) {\n          {\n            var info = getDeclarationErrorAddendum();\n            if (!info) {\n              var parentName = typeof parentType === \"string\" ? parentType : parentType.displayName || parentType.name;\n              if (parentName) {\n                info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n              }\n            }\n            return info;\n          }\n        }\n        function validateExplicitKey(element, parentType) {\n          {\n            if (!element._store || element._store.validated || element.key != null) {\n              return;\n            }\n            element._store.validated = true;\n            var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n            if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n              return;\n            }\n            ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n            var childOwner = \"\";\n            if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n              childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n            }\n            setCurrentlyValidatingElement$1(element);\n            error('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n            setCurrentlyValidatingElement$1(null);\n          }\n        }\n        function validateChildKeys(node, parentType) {\n          {\n            if (typeof node !== \"object\") {\n              return;\n            }\n            if (isArray(node)) {\n              for (var i = 0; i < node.length; i++) {\n                var child = node[i];\n                if (isValidElement(child)) {\n                  validateExplicitKey(child, parentType);\n                }\n              }\n            } else if (isValidElement(node)) {\n              if (node._store) {\n                node._store.validated = true;\n              }\n            } else if (node) {\n              var iteratorFn = getIteratorFn(node);\n              if (typeof iteratorFn === \"function\") {\n                if (iteratorFn !== node.entries) {\n                  var iterator = iteratorFn.call(node);\n                  var step;\n                  while (!(step = iterator.next()).done) {\n                    if (isValidElement(step.value)) {\n                      validateExplicitKey(step.value, parentType);\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n        function validatePropTypes(element) {\n          {\n            var type = element.type;\n            if (type === null || type === void 0 || typeof type === \"string\") {\n              return;\n            }\n            var propTypes;\n            if (typeof type === \"function\") {\n              propTypes = type.propTypes;\n            } else if (typeof type === \"object\" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n            // Inner props are checked in the reconciler.\n            type.$$typeof === REACT_MEMO_TYPE)) {\n              propTypes = type.propTypes;\n            } else {\n              return;\n            }\n            if (propTypes) {\n              var name = getComponentNameFromType(type);\n              checkPropTypes(propTypes, element.props, \"prop\", name, element);\n            } else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) {\n              propTypesMisspellWarningShown = true;\n              var _name = getComponentNameFromType(type);\n              error(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\", _name || \"Unknown\");\n            }\n            if (typeof type.getDefaultProps === \"function\" && !type.getDefaultProps.isReactClassApproved) {\n              error(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\");\n            }\n          }\n        }\n        function validateFragmentProps(fragment) {\n          {\n            var keys = Object.keys(fragment.props);\n            for (var i = 0; i < keys.length; i++) {\n              var key = keys[i];\n              if (key !== \"children\" && key !== \"key\") {\n                setCurrentlyValidatingElement$1(fragment);\n                error(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\", key);\n                setCurrentlyValidatingElement$1(null);\n                break;\n              }\n            }\n            if (fragment.ref !== null) {\n              setCurrentlyValidatingElement$1(fragment);\n              error(\"Invalid attribute `ref` supplied to `React.Fragment`.\");\n              setCurrentlyValidatingElement$1(null);\n            }\n          }\n        }\n        var didWarnAboutKeySpread = {};\n        function jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n          {\n            var validType = isValidElementType(type);\n            if (!validType) {\n              var info = \"\";\n              if (type === void 0 || typeof type === \"object\" && type !== null && Object.keys(type).length === 0) {\n                info += \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n              }\n              var sourceInfo = getSourceInfoErrorAddendum(source);\n              if (sourceInfo) {\n                info += sourceInfo;\n              } else {\n                info += getDeclarationErrorAddendum();\n              }\n              var typeString;\n              if (type === null) {\n                typeString = \"null\";\n              } else if (isArray(type)) {\n                typeString = \"array\";\n              } else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) {\n                typeString = \"<\" + (getComponentNameFromType(type.type) || \"Unknown\") + \" />\";\n                info = \" Did you accidentally export a JSX literal instead of a component?\";\n              } else {\n                typeString = typeof type;\n              }\n              error(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\", typeString, info);\n            }\n            var element = jsxDEV(type, props, key, source, self);\n            if (element == null) {\n              return element;\n            }\n            if (validType) {\n              var children = props.children;\n              if (children !== void 0) {\n                if (isStaticChildren) {\n                  if (isArray(children)) {\n                    for (var i = 0; i < children.length; i++) {\n                      validateChildKeys(children[i], type);\n                    }\n                    if (Object.freeze) {\n                      Object.freeze(children);\n                    }\n                  } else {\n                    error(\"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\");\n                  }\n                } else {\n                  validateChildKeys(children, type);\n                }\n              }\n            }\n            {\n              if (hasOwnProperty.call(props, \"key\")) {\n                var componentName = getComponentNameFromType(type);\n                var keys = Object.keys(props).filter(function(k) {\n                  return k !== \"key\";\n                });\n                var beforeExample = keys.length > 0 ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\" : \"{key: someKey}\";\n                if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n                  var afterExample = keys.length > 0 ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\";\n                  error('A props object containing a \"key\" prop is being spread into JSX:\\n  let props = %s;\\n  <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n  let props = %s;\\n  <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n                  didWarnAboutKeySpread[componentName + beforeExample] = true;\n                }\n              }\n            }\n            if (type === REACT_FRAGMENT_TYPE) {\n              validateFragmentProps(element);\n            } else {\n              validatePropTypes(element);\n            }\n            return element;\n          }\n        }\n        function jsxWithValidationStatic(type, props, key) {\n          {\n            return jsxWithValidation(type, props, key, true);\n          }\n        }\n        function jsxWithValidationDynamic(type, props, key) {\n          {\n            return jsxWithValidation(type, props, key, false);\n          }\n        }\n        var jsx = jsxWithValidationDynamic;\n        var jsxs = jsxWithValidationStatic;\n        exports.Fragment = REACT_FRAGMENT_TYPE;\n        exports.jsx = jsx;\n        exports.jsxs = jsxs;\n      })();\n    }\n  }\n});\n\n// node_modules/react/jsx-runtime.js\nvar require_jsx_runtime = __commonJS({\n  \"node_modules/react/jsx-runtime.js\"(exports, module) {\n    \"use strict\";\n    if (false) {\n      module.exports = null;\n    } else {\n      module.exports = require_react_jsx_runtime_development();\n    }\n  }\n});\n\nexport {\n  require_jsx_runtime\n};\n/*! Bundled license information:\n\nreact/cjs/react-jsx-runtime.development.js:\n  (**\n   * @license React\n   * react-jsx-runtime.development.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n*/\n//# sourceMappingURL=chunk-U3QNWT4A.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-U55JVTZU.js",
    "content": "import {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1271/__generated__/isValidSignature/read/isValidSignature.js\nvar FN_SELECTOR = \"0x1626ba7e\";\nvar FN_INPUTS = [\n  {\n    type: \"bytes32\",\n    name: \"hash\"\n  },\n  {\n    type: \"bytes\",\n    name: \"signature\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"bytes4\"\n  }\n];\nasync function isValidSignature(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.hash, options.signature]\n  });\n}\n\nexport {\n  isValidSignature\n};\n//# sourceMappingURL=chunk-U55JVTZU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-U7TO6S3N.js",
    "content": "import {\n  isAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  concat,\n  slice\n} from \"./chunk-GINVHONX.js\";\nimport {\n  boolToHex,\n  isHex,\n  numberToHex,\n  padHex,\n  stringToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/utils/encoding/helpers/byte-size.js\nfunction byteSize(value) {\n  if (isHex(value, { strict: false })) {\n    return Math.ceil((value.length - 2) / 2);\n  }\n  return value.length;\n}\n\n// node_modules/thirdweb/dist/esm/utils/abi/encodeAbiParameters.js\nfunction encodeAbiParameters(params, values) {\n  if (params.length !== values.length) {\n    throw new Error(\"The number of parameters and values must match.\");\n  }\n  const preparedParams = prepareParams({\n    params,\n    values\n  });\n  const data = encodeParams(preparedParams);\n  if (data.length === 0) {\n    return \"0x\";\n  }\n  return data;\n}\nfunction prepareParams({ params, values }) {\n  const preparedParams = [];\n  for (let i = 0; i < params.length; i++) {\n    preparedParams.push(prepareParam({ param: params[i], value: values[i] }));\n  }\n  return preparedParams;\n}\nfunction prepareParam({ param, value }) {\n  const arrayComponents = getArrayComponents(param.type);\n  if (arrayComponents) {\n    const [length, type] = arrayComponents;\n    return encodeArray(value, { length, param: { ...param, type } });\n  }\n  if (param.type === \"tuple\") {\n    return encodeTuple(value, {\n      param\n    });\n  }\n  if (param.type === \"address\") {\n    return encodeAddress(value);\n  }\n  if (param.type === \"bool\") {\n    return encodeBool(value);\n  }\n  if (param.type.startsWith(\"uint\") || param.type.startsWith(\"int\")) {\n    const signed = param.type.startsWith(\"int\");\n    return encodeNumber(value, { signed });\n  }\n  if (param.type.startsWith(\"bytes\")) {\n    return encodeBytes(value, { param });\n  }\n  if (param.type === \"string\") {\n    return encodeString(value);\n  }\n  throw new Error(`Unsupported parameter type: ${param.type}`);\n}\nfunction encodeParams(preparedParams) {\n  let staticSize = 0;\n  for (let i = 0; i < preparedParams.length; i++) {\n    const { dynamic, encoded } = preparedParams[i];\n    if (dynamic) {\n      staticSize += 32;\n    } else {\n      staticSize += byteSize(encoded);\n    }\n  }\n  const staticParams = [];\n  const dynamicParams = [];\n  let dynamicSize = 0;\n  for (let i = 0; i < preparedParams.length; i++) {\n    const { dynamic, encoded } = preparedParams[i];\n    if (dynamic) {\n      staticParams.push(numberToHex(staticSize + dynamicSize, { size: 32 }));\n      dynamicParams.push(encoded);\n      dynamicSize += byteSize(encoded);\n    } else {\n      staticParams.push(encoded);\n    }\n  }\n  return concat([...staticParams, ...dynamicParams]);\n}\nfunction encodeAddress(value) {\n  if (value !== \"\" && value !== void 0 && !isAddress(value)) {\n    throw new Error(`Invalid address: ${value}`);\n  }\n  return { dynamic: false, encoded: padHex(value.toLowerCase()) };\n}\nfunction encodeArray(value, { length, param }) {\n  const dynamic = length === null;\n  if (!Array.isArray(value)) {\n    throw new Error(\"Invalid array value.\");\n  }\n  if (!dynamic && value.length !== length) {\n    throw new Error(\"Invalid array length.\");\n  }\n  let dynamicChild = false;\n  const preparedParams = [];\n  for (let i = 0; i < value.length; i++) {\n    const preparedParam = prepareParam({ param, value: value[i] });\n    if (preparedParam.dynamic) {\n      dynamicChild = true;\n    }\n    preparedParams.push(preparedParam);\n  }\n  if (dynamic || dynamicChild) {\n    const data = encodeParams(preparedParams);\n    if (dynamic) {\n      const length_ = numberToHex(preparedParams.length, { size: 32 });\n      return {\n        dynamic: true,\n        encoded: preparedParams.length > 0 ? concat([length_, data]) : length_\n      };\n    }\n    if (dynamicChild) {\n      return { dynamic: true, encoded: data };\n    }\n  }\n  return {\n    dynamic: false,\n    encoded: concat(preparedParams.map(({ encoded }) => encoded))\n  };\n}\nfunction encodeBytes(value, { param }) {\n  const [, paramSize] = param.type.split(\"bytes\");\n  const bytesSize = byteSize(value);\n  if (!paramSize) {\n    let value_ = value;\n    if (bytesSize % 32 !== 0) {\n      value_ = padHex(value_, {\n        dir: \"right\",\n        size: Math.ceil((value.length - 2) / 2 / 32) * 32\n      });\n    }\n    return {\n      dynamic: true,\n      encoded: concat([padHex(numberToHex(bytesSize, { size: 32 })), value_])\n    };\n  }\n  if (bytesSize !== Number.parseInt(paramSize)) {\n    throw new Error(`Invalid bytes${paramSize} size: ${bytesSize}`);\n  }\n  return { dynamic: false, encoded: padHex(value, { dir: \"right\" }) };\n}\nfunction encodeBool(value) {\n  return { dynamic: false, encoded: padHex(boolToHex(value)) };\n}\nfunction encodeNumber(value, { signed }) {\n  return {\n    dynamic: false,\n    encoded: numberToHex(value, {\n      size: 32,\n      signed\n    })\n  };\n}\nfunction encodeString(value) {\n  const hexValue = stringToHex(value);\n  const partsLength = Math.ceil(byteSize(hexValue) / 32);\n  const parts = [];\n  for (let i = 0; i < partsLength; i++) {\n    parts.push(padHex(slice(hexValue, i * 32, (i + 1) * 32), {\n      dir: \"right\"\n    }));\n  }\n  return {\n    dynamic: true,\n    encoded: concat([\n      padHex(numberToHex(byteSize(hexValue), { size: 32 })),\n      ...parts\n    ])\n  };\n}\nfunction encodeTuple(value, { param }) {\n  let dynamic = false;\n  const preparedParams = [];\n  for (let i = 0; i < param.components.length; i++) {\n    const param_ = param.components[i];\n    const index = Array.isArray(value) ? i : param_.name;\n    const preparedParam = prepareParam({\n      param: param_,\n      // biome-ignore lint/style/noNonNullAssertion: we know the value is not `undefined`.\n      // biome-ignore lint/suspicious/noExplicitAny: TODO: fix any\n      value: value[index]\n    });\n    preparedParams.push(preparedParam);\n    if (preparedParam.dynamic) {\n      dynamic = true;\n    }\n  }\n  return {\n    dynamic,\n    encoded: dynamic ? encodeParams(preparedParams) : concat(preparedParams.map(({ encoded }) => encoded))\n  };\n}\nfunction getArrayComponents(type) {\n  const matches = type.match(/^(.*)\\[(\\d+)?\\]$/);\n  return matches ? (\n    // Return `null` if the array is dynamic.\n    // biome-ignore lint/style/noNonNullAssertion: we know the value is not `undefined`.\n    [matches[2] ? Number(matches[2]) : null, matches[1]]\n  ) : void 0;\n}\n\nexport {\n  encodeAbiParameters,\n  prepareParam,\n  encodeAddress\n};\n//# sourceMappingURL=chunk-U7TO6S3N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-UY2SRO54.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/units.js\nfunction toTokens(units, decimals) {\n  const stringValue = units.toString();\n  const prefix = stringValue[0] === \"-\" ? \"-\" : \"\";\n  const absStringValue = prefix ? stringValue.slice(1) : stringValue;\n  const paddedValue = absStringValue.padStart(decimals + 1, \"0\");\n  const splitIndex = paddedValue.length - decimals;\n  const integerPart = paddedValue.slice(0, splitIndex) || \"0\";\n  let fractionPart = paddedValue.slice(splitIndex);\n  for (let i = fractionPart.length - 1; i >= 0; i--) {\n    if (fractionPart[i] !== \"0\") {\n      fractionPart = fractionPart.slice(0, i + 1);\n      break;\n    }\n    if (i === 0) {\n      fractionPart = \"\";\n    }\n  }\n  return `${prefix}${integerPart}${fractionPart ? `.${fractionPart}` : \"\"}`;\n}\nfunction toEther(wei) {\n  return toTokens(wei, 18);\n}\nfunction toUnits(tokens, decimals) {\n  let [integerPart, fractionPart = \"\"] = tokens.split(\".\");\n  const prefix = integerPart.startsWith(\"-\") ? \"-\" : \"\";\n  if (prefix) {\n    integerPart = integerPart.slice(1);\n  }\n  fractionPart = fractionPart.padEnd(decimals, \"0\");\n  if (decimals === 0) {\n    if (fractionPart[0] && Number.parseInt(fractionPart[0]) >= 5) {\n      integerPart = (BigInt(integerPart) + 1n).toString();\n    }\n    fractionPart = \"\";\n  } else {\n    if (fractionPart.length > decimals) {\n      const roundingDigit = fractionPart[decimals];\n      if (roundingDigit && Number.parseInt(roundingDigit, 10) >= 5) {\n        const roundedFraction = BigInt(fractionPart.substring(0, decimals)) + 1n;\n        fractionPart = roundedFraction.toString().padStart(decimals, \"0\");\n        if (fractionPart.length > decimals) {\n          integerPart = (BigInt(integerPart) + 1n).toString();\n          fractionPart = fractionPart.substring(fractionPart.length - decimals);\n        }\n      } else {\n        fractionPart = fractionPart.substring(0, decimals);\n      }\n    }\n  }\n  return BigInt(`${prefix}${integerPart}${fractionPart}`);\n}\nfunction toWei(tokens) {\n  return toUnits(tokens, 18);\n}\nfunction fromGwei(gwei) {\n  return toUnits(gwei, 9);\n}\n\nexport {\n  toTokens,\n  toEther,\n  toUnits,\n  toWei,\n  fromGwei\n};\n//# sourceMappingURL=chunk-UY2SRO54.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-UZVZQZEM.js",
    "content": "import {\n  name,\n  symbol\n} from \"./chunk-6RU56BH7.js\";\nimport {\n  isBase64JSON,\n  parseBase64String\n} from \"./chunk-VJFQPB47.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/utils/contract/fetchContractMetadata.js\nasync function fetchContractMetadata(options) {\n  const { client, uri } = options;\n  if (isBase64JSON(uri)) {\n    try {\n      return JSON.parse(parseBase64String(uri));\n    } catch (e) {\n      console.error(\"Failed to decode base64 encoded contract metadata\", { uri }, e);\n      return void 0;\n    }\n  }\n  const { download } = await import(\"./download-F3MJUB7B.js\");\n  return await (await download({ client, uri })).json();\n}\n\n// node_modules/thirdweb/dist/esm/extensions/common/__generated__/IContractMetadata/read/contractURI.js\nvar FN_SELECTOR = \"0xe8a3d485\";\nvar FN_INPUTS = [];\nvar FN_OUTPUTS = [\n  {\n    type: \"string\"\n  }\n];\nfunction isContractURISupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nasync function contractURI(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: []\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/common/read/getContractMetadata.js\nasync function getContractMetadata(options) {\n  const [resolvedMetadata, resolvedName, resolvedSymbol] = await Promise.all([\n    contractURI(options).then((uri) => {\n      if (uri) {\n        return fetchContractMetadata({\n          client: options.contract.client,\n          uri\n        });\n      }\n      return null;\n    }).catch(() => null),\n    name(options).catch(() => null),\n    symbol(options).catch(() => null)\n  ]);\n  return {\n    ...resolvedMetadata,\n    name: (resolvedMetadata == null ? void 0 : resolvedMetadata.name) ?? resolvedName,\n    symbol: (resolvedMetadata == null ? void 0 : resolvedMetadata.symbol) ?? resolvedSymbol\n  };\n}\n\nexport {\n  isContractURISupported,\n  getContractMetadata\n};\n//# sourceMappingURL=chunk-UZVZQZEM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-VIBS7Y3M.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/storage/webStorage.js\nvar webLocalStorage = {\n  async getItem(key) {\n    if (typeof window !== \"undefined\" && window.localStorage) {\n      return localStorage.getItem(key);\n    }\n    return null;\n  },\n  async setItem(key, value) {\n    if (typeof window !== \"undefined\" && window.localStorage) {\n      localStorage.setItem(key, value);\n    }\n  },\n  async removeItem(key) {\n    if (typeof window !== \"undefined\" && window.localStorage) {\n      localStorage.removeItem(key);\n    }\n  }\n};\n\nexport {\n  webLocalStorage\n};\n//# sourceMappingURL=chunk-VIBS7Y3M.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-VJFQPB47.js",
    "content": "import {\n  base64ToString\n} from \"./chunk-VJOHABJ4.js\";\n\n// node_modules/thirdweb/dist/esm/utils/base64/base64.js\nfunction isBase64JSON(input) {\n  if (input.startsWith(\"data:application/json;base64\")) {\n    return true;\n  }\n  return false;\n}\nfunction parseBase64String(input) {\n  const [, base64] = input.split(\",\");\n  return base64ToString(base64);\n}\n\nexport {\n  isBase64JSON,\n  parseBase64String\n};\n//# sourceMappingURL=chunk-VJFQPB47.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-VJOHABJ4.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/text-decoder.js\nvar textDecoder;\nfunction cachedTextDecoder() {\n  if (!textDecoder) {\n    textDecoder = new TextDecoder();\n  }\n  return textDecoder;\n}\n\n// node_modules/thirdweb/dist/esm/utils/uint8-array.js\nvar uint8ArrayStringified = \"[object Uint8Array]\";\nfunction assertUint8Array(value) {\n  if (!isUint8Array(value)) {\n    throw new TypeError(`Expected \\`Uint8Array\\`, got \\`${typeof value}\\``);\n  }\n}\nfunction isUint8Array(value) {\n  if (!value) {\n    return false;\n  }\n  if (value.constructor === Uint8Array) {\n    return true;\n  }\n  return Object.prototype.toString.call(value) === uint8ArrayStringified;\n}\nfunction areUint8ArraysEqual(a, b) {\n  assertUint8Array(a);\n  assertUint8Array(b);\n  if (a === b) {\n    return true;\n  }\n  if (a.length !== b.length) {\n    return false;\n  }\n  for (let index = 0; index < a.length; index++) {\n    if (a[index] !== b[index]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction uint8ArrayToString(array) {\n  assertUint8Array(array);\n  return cachedTextDecoder().decode(array);\n}\nfunction assertString(value) {\n  if (typeof value !== \"string\") {\n    throw new TypeError(`Expected \\`string\\`, got \\`${typeof value}\\``);\n  }\n}\nfunction base64UrlToBase64(base64url) {\n  let base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n  const padding = base64.length % 4;\n  if (padding !== 0) {\n    base64 += \"=\".repeat(4 - padding);\n  }\n  return base64;\n}\nfunction base64ToUint8Array(base64String) {\n  assertString(base64String);\n  return Uint8Array.from(\n    globalThis.atob(base64UrlToBase64(base64String)),\n    // biome-ignore lint/style/noNonNullAssertion: we know that the code points exist\n    (x) => x.codePointAt(0)\n  );\n}\nfunction base64ToString(base64String) {\n  assertString(base64String);\n  return uint8ArrayToString(base64ToUint8Array(base64String));\n}\nfunction concatUint8Arrays(arrays, totalLength) {\n  if (arrays.length === 0) {\n    return new Uint8Array(0);\n  }\n  const calculatedTotalLength = totalLength ?? arrays.reduce((accumulator, currentValue) => accumulator + currentValue.length, 0);\n  const returnValue = new Uint8Array(calculatedTotalLength);\n  let offset = 0;\n  for (const array of arrays) {\n    assertUint8Array(array);\n    returnValue.set(array, offset);\n    offset += array.length;\n  }\n  return returnValue;\n}\nfunction compareUint8Arrays(a, b) {\n  assertUint8Array(a);\n  assertUint8Array(b);\n  const length = Math.min(a.length, b.length);\n  for (let index = 0; index < length; index++) {\n    const diff = a[index] - b[index];\n    if (diff !== 0) {\n      return Math.sign(diff);\n    }\n  }\n  return Math.sign(a.length - b.length);\n}\n\nexport {\n  isUint8Array,\n  areUint8ArraysEqual,\n  base64UrlToBase64,\n  base64ToString,\n  concatUint8Arrays,\n  compareUint8Arrays\n};\n//# sourceMappingURL=chunk-VJOHABJ4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-VUXPTMXZ.js",
    "content": "import {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport {\n  encode\n} from \"./chunk-7QDK5KLB.js\";\n\n// node_modules/thirdweb/dist/esm/transaction/actions/send-batch-transaction.js\nasync function sendBatchTransaction(options) {\n  const { account, transactions } = options;\n  if (!account) {\n    throw new Error(\"not connected\");\n  }\n  if (transactions.length === 0) {\n    throw new Error(\"No transactions to send\");\n  }\n  const firstTx = transactions[0];\n  if (!firstTx) {\n    throw new Error(\"No transactions to send\");\n  }\n  if (account.sendBatchTransaction) {\n    const serializedTxs = await Promise.all(transactions.map(async (tx) => {\n      const [data, to, accessList, value] = await Promise.all([\n        encode(tx),\n        resolvePromisedValue(tx.to),\n        resolvePromisedValue(tx.accessList),\n        resolvePromisedValue(tx.value)\n      ]);\n      const serializedTx = {\n        data,\n        chainId: tx.chain.id,\n        to,\n        value,\n        accessList\n      };\n      return serializedTx;\n    }));\n    const result = await account.sendBatchTransaction(serializedTxs);\n    return {\n      ...result,\n      chain: firstTx.chain,\n      client: firstTx.client\n    };\n  }\n  throw new Error(\"Account doesn't implement sendBatchTransaction\");\n}\n\nexport {\n  sendBatchTransaction\n};\n//# sourceMappingURL=chunk-VUXPTMXZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-XB34LHR5.js",
    "content": "// node_modules/thirdweb/dist/esm/wallets/wallet-connect/constants.js\nvar DEFAULT_PROJECT_ID = \"08c4b07e3ad25f1a27c14a4e8cecb6f0\";\nvar NAMESPACE = \"eip155\";\n\nexport {\n  DEFAULT_PROJECT_ID,\n  NAMESPACE\n};\n//# sourceMappingURL=chunk-XB34LHR5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-XC5J5ANL.js",
    "content": "// node_modules/thirdweb/dist/esm/wallets/ecosystem/is-ecosystem-wallet.js\nfunction isEcosystemWallet(wallet) {\n  return typeof wallet === \"string\" ? wallet.startsWith(\"ecosystem.\") : wallet.id.startsWith(\"ecosystem.\");\n}\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/getWalletInfo.js\nasync function getWalletInfo(id, image) {\n  if (isEcosystemWallet(id)) {\n    const { getEcosystemWalletInfo } = await import(\"./get-ecosystem-wallet-info-HRASHZ5U.js\");\n    return image ? getEcosystemWalletInfo(id).then((info) => info.image_id) : getEcosystemWalletInfo(id);\n  }\n  switch (id) {\n    case \"smart\": {\n      return image ? import(\"./image-CZEVKSDD.js\").then((img) => img.default) : import(\"./smart-GOSZ6KLE.js\").then((w) => w.wallet);\n    }\n    case \"inApp\": {\n      return image ? import(\"./image-UT6D5LIM.js\").then((img) => img.default) : import(\"./inApp-RQNC3GM2.js\").then((w) => w.wallet);\n    }\n    case \"walletConnect\": {\n      return image ? import(\"./image-XPJLKRRI.js\").then((img) => img.default) : import(\"./walletConnect-4SOZLMQZ.js\").then((w) => w.wallet);\n    }\n    case \"embedded\": {\n      return image ? import(\"./image-I2EVY3PN.js\").then((img) => img.default) : import(\"./embedded-5JDH6LO6.js\").then((w) => w.wallet);\n    }\n    case \"adapter\": {\n      return image ? import(\"./image-7FZSFD63.js\").then((img) => img.default) : import(\"./adapter-F5WOI5K5.js\").then((w) => w.wallet);\n    }\n    case \"io.metamask\": {\n      return image ? import(\"./image-PY3RCMKE.js\").then((img) => img.default) : import(\"./io-YAK5FOPT.js\").then((w) => w.wallet);\n    }\n    case \"com.trustwallet.app\": {\n      return image ? import(\"./image-ARYWL2OH.js\").then((img) => img.default) : import(\"./com.trustwallet-QTE52ZJ2.js\").then((w) => w.wallet);\n    }\n    case \"com.okex.wallet\": {\n      return image ? import(\"./image-7TE6IAEE.js\").then((img) => img.default) : import(\"./com.okex-ASVE2B3U.js\").then((w) => w.wallet);\n    }\n    case \"com.bitget.web3\": {\n      return image ? import(\"./image-G77AOOTY.js\").then((img) => img.default) : import(\"./com.bitget-2APLDUWF.js\").then((w) => w.wallet);\n    }\n    case \"com.binance\": {\n      return image ? import(\"./image-JRV26T7R.js\").then((img) => img.default) : import(\"./com-HIQMW3M5.js\").then((w) => w.wallet);\n    }\n    case \"org.uniswap\": {\n      return image ? import(\"./image-NJXZFZEG.js\").then((img) => img.default) : import(\"./org-Q7GOFRGY.js\").then((w) => w.wallet);\n    }\n    case \"com.safepal\": {\n      return image ? import(\"./image-QEGCG76B.js\").then((img) => img.default) : import(\"./com-SKB3SMG6.js\").then((w) => w.wallet);\n    }\n    case \"me.rainbow\": {\n      return image ? import(\"./image-7O3C362W.js\").then((img) => img.default) : import(\"./me-NGGLTLQU.js\").then((w) => w.wallet);\n    }\n    case \"com.bybit\": {\n      return image ? import(\"./image-P5CCQF6U.js\").then((img) => img.default) : import(\"./com-OLXXEOCB.js\").then((w) => w.wallet);\n    }\n    case \"pro.tokenpocket\": {\n      return image ? import(\"./image-4E3QCNWY.js\").then((img) => img.default) : import(\"./pro-PKIFCXCH.js\").then((w) => w.wallet);\n    }\n    case \"com.ledger\": {\n      return image ? import(\"./image-KBI4EQQC.js\").then((img) => img.default) : import(\"./com-GGEHZ3ML.js\").then((w) => w.wallet);\n    }\n    case \"xyz.timelesswallet\": {\n      return image ? import(\"./image-I63OXZPK.js\").then((img) => img.default) : import(\"./xyz-H7ZRM2VE.js\").then((w) => w.wallet);\n    }\n    case \"global.safe\": {\n      return image ? import(\"./image-IXHLX5GF.js\").then((img) => img.default) : import(\"./global-ASRTB772.js\").then((w) => w.wallet);\n    }\n    case \"io.zerion.wallet\": {\n      return image ? import(\"./image-KAKKP25H.js\").then((img) => img.default) : import(\"./io.zerion-DKRTCZVY.js\").then((w) => w.wallet);\n    }\n    case \"com.robinhood.wallet\": {\n      return image ? import(\"./image-WE7PFB2W.js\").then((img) => img.default) : import(\"./com.robinhood-ZVFBQFK2.js\").then((w) => w.wallet);\n    }\n    case \"io.1inch.wallet\": {\n      return image ? import(\"./image-HNJVUIHP.js\").then((img) => img.default) : import(\"./io.1inch-3Q4NZZ2L.js\").then((w) => w.wallet);\n    }\n    case \"com.crypto.wallet\": {\n      return image ? import(\"./image-GNG4HAZI.js\").then((img) => img.default) : import(\"./com.crypto-53A63ZCL.js\").then((w) => w.wallet);\n    }\n    case \"com.exodus\": {\n      return image ? import(\"./image-L64YUXOP.js\").then((img) => img.default) : import(\"./com-DXBW5XU7.js\").then((w) => w.wallet);\n    }\n    case \"xyz.argent\": {\n      return image ? import(\"./image-AHWRIMZI.js\").then((img) => img.default) : import(\"./xyz-N4RTWSXS.js\").then((w) => w.wallet);\n    }\n    case \"im.token\": {\n      return image ? import(\"./image-3PHNAY7F.js\").then((img) => img.default) : import(\"./im-ALROWXFB.js\").then((w) => w.wallet);\n    }\n    case \"com.blockchain\": {\n      return image ? import(\"./image-4TRY3NEW.js\").then((img) => img.default) : import(\"./com-TH3B64WW.js\").then((w) => w.wallet);\n    }\n    case \"io.magiceden.wallet\": {\n      return image ? import(\"./image-BNSPIEBR.js\").then((img) => img.default) : import(\"./io.magiceden-H3CGBW6M.js\").then((w) => w.wallet);\n    }\n    case \"com.kraken\": {\n      return image ? import(\"./image-M3IUK3S6.js\").then((img) => img.default) : import(\"./com-5EVQS4IZ.js\").then((w) => w.wallet);\n    }\n    case \"app.backpack\": {\n      return image ? import(\"./image-2XQ227AO.js\").then((img) => img.default) : import(\"./app-IVIV25DE.js\").then((w) => w.wallet);\n    }\n    case \"com.zengo\": {\n      return image ? import(\"./image-RJ6X2NMJ.js\").then((img) => img.default) : import(\"./com-L5FHGFHX.js\").then((w) => w.wallet);\n    }\n    case \"com.mewwallet\": {\n      return image ? import(\"./image-ARHGIDNB.js\").then((img) => img.default) : import(\"./com-QNHV5LXE.js\").then((w) => w.wallet);\n    }\n    case \"com.fireblocks\": {\n      return image ? import(\"./image-QEJ5TH25.js\").then((img) => img.default) : import(\"./com-EW5K7JF2.js\").then((w) => w.wallet);\n    }\n    case \"org.mathwallet\": {\n      return image ? import(\"./image-NEI5WDWA.js\").then((img) => img.default) : import(\"./org-JCLIAWVT.js\").then((w) => w.wallet);\n    }\n    case \"com.alphawallet\": {\n      return image ? import(\"./image-FIGWZRNB.js\").then((img) => img.default) : import(\"./com-O7HEL5UM.js\").then((w) => w.wallet);\n    }\n    case \"com.unstoppabledomains\": {\n      return image ? import(\"./image-XD5TFSHC.js\").then((img) => img.default) : import(\"./com-PK4DXA46.js\").then((w) => w.wallet);\n    }\n    case \"app.keyring\": {\n      return image ? import(\"./image-LDYJOQU6.js\").then((img) => img.default) : import(\"./app-M6LRY2SK.js\").then((w) => w.wallet);\n    }\n    case \"xyz.frontier.wallet\": {\n      return image ? import(\"./image-VYS6PNRX.js\").then((img) => img.default) : import(\"./xyz.frontier-GCK2SAXV.js\").then((w) => w.wallet);\n    }\n    case \"app.omni\": {\n      return image ? import(\"./image-KERZY3VS.js\").then((img) => img.default) : import(\"./app-KCNXS7XQ.js\").then((w) => w.wallet);\n    }\n    case \"co.lobstr\": {\n      return image ? import(\"./image-3J2YWWMT.js\").then((img) => img.default) : import(\"./co-2W272KST.js\").then((w) => w.wallet);\n    }\n    case \"technology.obvious\": {\n      return image ? import(\"./image-PPYVKDO3.js\").then((img) => img.default) : import(\"./technology-NIZQELB7.js\").then((w) => w.wallet);\n    }\n    case \"com.ambire\": {\n      return image ? import(\"./image-3BBR6ZUL.js\").then((img) => img.default) : import(\"./com-SGOLCA56.js\").then((w) => w.wallet);\n    }\n    case \"com.mtpelerin\": {\n      return image ? import(\"./image-GXMDZVE7.js\").then((img) => img.default) : import(\"./com-6OLGJVDZ.js\").then((w) => w.wallet);\n    }\n    case \"io.internetmoney\": {\n      return image ? import(\"./image-YBCZSQ3A.js\").then((img) => img.default) : import(\"./io-3SGNGSBU.js\").then((w) => w.wallet);\n    }\n    case \"app.walletnow\": {\n      return image ? import(\"./image-YFUELAZQ.js\").then((img) => img.default) : import(\"./app-5PJX72YN.js\").then((w) => w.wallet);\n    }\n    case \"com.bitcoin\": {\n      return image ? import(\"./image-64EL5CZZ.js\").then((img) => img.default) : import(\"./com-X7JZBOMI.js\").then((w) => w.wallet);\n    }\n    case \"io.alpha-u.wallet.web\": {\n      return image ? import(\"./image-5DMCMTIS.js\").then((img) => img.default) : import(\"./io.alpha-u.wallet-RANY436R.js\").then((w) => w.wallet);\n    }\n    case \"com.coin98\": {\n      return image ? import(\"./image-FT5E5S2S.js\").then((img) => img.default) : import(\"./com-VV2KAHH7.js\").then((w) => w.wallet);\n    }\n    case \"io.myabcwallet\": {\n      return image ? import(\"./image-BG36EIFN.js\").then((img) => img.default) : import(\"./io-GQDRISAH.js\").then((w) => w.wallet);\n    }\n    case \"co.arculus\": {\n      return image ? import(\"./image-7Q42EE45.js\").then((img) => img.default) : import(\"./co-CVN2M45H.js\").then((w) => w.wallet);\n    }\n    case \"com.opera\": {\n      return image ? import(\"./image-CVW43WHN.js\").then((img) => img.default) : import(\"./com-M5EROV3A.js\").then((w) => w.wallet);\n    }\n    case \"com.chain\": {\n      return image ? import(\"./image-U2DNOUXB.js\").then((img) => img.default) : import(\"./com-IQ3TTO6K.js\").then((w) => w.wallet);\n    }\n    case \"io.huddln\": {\n      return image ? import(\"./image-HTVYZ4M3.js\").then((img) => img.default) : import(\"./io-DNXFQ4K2.js\").then((w) => w.wallet);\n    }\n    case \"com.get-verso\": {\n      return image ? import(\"./image-RPHSLWEQ.js\").then((img) => img.default) : import(\"./com-FE3NAAEW.js\").then((w) => w.wallet);\n    }\n    case \"me.haha\": {\n      return image ? import(\"./image-YBTBDTUR.js\").then((img) => img.default) : import(\"./me-KVZQT25O.js\").then((w) => w.wallet);\n    }\n    case \"pk.modular\": {\n      return image ? import(\"./image-IKZ2FUDX.js\").then((img) => img.default) : import(\"./pk-OX3FADHO.js\").then((w) => w.wallet);\n    }\n    case \"org.kelp\": {\n      return image ? import(\"./image-GN5KL5XH.js\").then((img) => img.default) : import(\"./org-3WSS4ISS.js\").then((w) => w.wallet);\n    }\n    case \"io.clingon\": {\n      return image ? import(\"./image-PG2LM3EN.js\").then((img) => img.default) : import(\"./io-PJ4YO55N.js\").then((w) => w.wallet);\n    }\n    case \"com.broearn\": {\n      return image ? import(\"./image-EA2TAA73.js\").then((img) => img.default) : import(\"./com-6DTOF6TL.js\").then((w) => w.wallet);\n    }\n    case \"com.coinomi\": {\n      return image ? import(\"./image-6UEQME7W.js\").then((img) => img.default) : import(\"./com-XBDXJT7H.js\").then((w) => w.wallet);\n    }\n    case \"com.ripio\": {\n      return image ? import(\"./image-LRZBNW6B.js\").then((img) => img.default) : import(\"./com-KW7LIQVX.js\").then((w) => w.wallet);\n    }\n    case \"com.sabay.wallet\": {\n      return image ? import(\"./image-3BYLTMYN.js\").then((img) => img.default) : import(\"./com.sabay-NHKDAQVI.js\").then((w) => w.wallet);\n    }\n    case \"io.tokoin\": {\n      return image ? import(\"./image-XMKRZUH2.js\").then((img) => img.default) : import(\"./io-NH2GD2IR.js\").then((w) => w.wallet);\n    }\n    case \"world.fncy\": {\n      return image ? import(\"./image-PNENEROM.js\").then((img) => img.default) : import(\"./world-ZNOYGYAZ.js\").then((w) => w.wallet);\n    }\n    case \"io.copiosa\": {\n      return image ? import(\"./image-HXAPNAO4.js\").then((img) => img.default) : import(\"./io-XMCECLIZ.js\").then((w) => w.wallet);\n    }\n    case \"com.liberawallet\": {\n      return image ? import(\"./image-3RZJFPYY.js\").then((img) => img.default) : import(\"./com-EDWOBHQ5.js\").then((w) => w.wallet);\n    }\n    case \"io.certhis\": {\n      return image ? import(\"./image-GTS26XGE.js\").then((img) => img.default) : import(\"./io-HBM5KOQE.js\").then((w) => w.wallet);\n    }\n    case \"com.burritowallet\": {\n      return image ? import(\"./image-FAAEH6VN.js\").then((img) => img.default) : import(\"./com-FTU5JU6L.js\").then((w) => w.wallet);\n    }\n    case \"io.ancrypto\": {\n      return image ? import(\"./image-X6M72D7S.js\").then((img) => img.default) : import(\"./io-B43YO5G7.js\").then((w) => w.wallet);\n    }\n    case \"network.cvl\": {\n      return image ? import(\"./image-KDIH7RV7.js\").then((img) => img.default) : import(\"./network-64V4ODDY.js\").then((w) => w.wallet);\n    }\n    case \"io.cypherwallet\": {\n      return image ? import(\"./image-IW5JZSWC.js\").then((img) => img.default) : import(\"./io-NVBZJAWM.js\").then((w) => w.wallet);\n    }\n    case \"app.status\": {\n      return image ? import(\"./image-NBPCTXNN.js\").then((img) => img.default) : import(\"./app-FEBEDQ5O.js\").then((w) => w.wallet);\n    }\n    case \"io.enjin\": {\n      return image ? import(\"./image-BERR6HPQ.js\").then((img) => img.default) : import(\"./io-O7JBQJEM.js\").then((w) => w.wallet);\n    }\n    case \"io.trinity-tech\": {\n      return image ? import(\"./image-77YEUPFU.js\").then((img) => img.default) : import(\"./io-LX45HK7A.js\").then((w) => w.wallet);\n    }\n    case \"app.everspace\": {\n      return image ? import(\"./image-BAWP6F3E.js\").then((img) => img.default) : import(\"./app-MS6Z5MIK.js\").then((w) => w.wallet);\n    }\n    case \"io.kriptomat\": {\n      return image ? import(\"./image-SPBIVFWA.js\").then((img) => img.default) : import(\"./io-K5M75KPN.js\").then((w) => w.wallet);\n    }\n    case \"io.oxalus\": {\n      return image ? import(\"./image-52SKIAAZ.js\").then((img) => img.default) : import(\"./io-JWG2DSVL.js\").then((w) => w.wallet);\n    }\n    case \"org.thetatoken\": {\n      return image ? import(\"./image-OI2FPOZK.js\").then((img) => img.default) : import(\"./org-DASW2CEB.js\").then((w) => w.wallet);\n    }\n    case \"io.leapwallet\": {\n      return image ? import(\"./image-PXXJ7YGR.js\").then((img) => img.default) : import(\"./io-RSWIM3NG.js\").then((w) => w.wallet);\n    }\n    case \"finance.islamicoin\": {\n      return image ? import(\"./image-SZDGRZKO.js\").then((img) => img.default) : import(\"./finance-43KN2CYS.js\").then((w) => w.wallet);\n    }\n    case \"xyz.coca\": {\n      return image ? import(\"./image-KYZRZXTL.js\").then((img) => img.default) : import(\"./xyz-P3VWILEP.js\").then((w) => w.wallet);\n    }\n    case \"com.monarchwallet\": {\n      return image ? import(\"./image-WFPL2XOD.js\").then((img) => img.default) : import(\"./com-UYAKF2N2.js\").then((w) => w.wallet);\n    }\n    case \"co.filwallet\": {\n      return image ? import(\"./image-OAPLK3NK.js\").then((img) => img.default) : import(\"./co-Y7ICLZEM.js\").then((w) => w.wallet);\n    }\n    case \"com.valoraapp\": {\n      return image ? import(\"./image-47XQBRNK.js\").then((img) => img.default) : import(\"./com-FIMPM75U.js\").then((w) => w.wallet);\n    }\n    case \"com.coincircle\": {\n      return image ? import(\"./image-WLVFTPS6.js\").then((img) => img.default) : import(\"./com-BA67M6JA.js\").then((w) => w.wallet);\n    }\n    case \"money.snowball\": {\n      return image ? import(\"./image-PIHQFTZW.js\").then((img) => img.default) : import(\"./money-SUJPFHWI.js\").then((w) => w.wallet);\n    }\n    case \"io.paraswap\": {\n      return image ? import(\"./image-GSTKM7MD.js\").then((img) => img.default) : import(\"./io-D255FR7U.js\").then((w) => w.wallet);\n    }\n    case \"network.mrhb\": {\n      return image ? import(\"./image-53R3T2KM.js\").then((img) => img.default) : import(\"./network-WFECV2ZU.js\").then((w) => w.wallet);\n    }\n    case \"com.apollox\": {\n      return image ? import(\"./image-MOU2RL63.js\").then((img) => img.default) : import(\"./com-ZRV5E3J2.js\").then((w) => w.wallet);\n    }\n    case \"com.ennowallet\": {\n      return image ? import(\"./image-JCM4SCK7.js\").then((img) => img.default) : import(\"./com-SMDDEG7M.js\").then((w) => w.wallet);\n    }\n    case \"io.loopring.wallet\": {\n      return image ? import(\"./image-GRZ6ITK5.js\").then((img) => img.default) : import(\"./io.loopring-BX5AMZUR.js\").then((w) => w.wallet);\n    }\n    case \"com.bee\": {\n      return image ? import(\"./image-FC2BPU25.js\").then((img) => img.default) : import(\"./com-QUF6BW3N.js\").then((w) => w.wallet);\n    }\n    case \"cc.localtrade.lab\": {\n      return image ? import(\"./image-2NWF3JOZ.js\").then((img) => img.default) : import(\"./cc.localtrade-QLM7DIOM.js\").then((w) => w.wallet);\n    }\n    case \"com.xcapit\": {\n      return image ? import(\"./image-KTCD3ACC.js\").then((img) => img.default) : import(\"./com-IF7EFBYY.js\").then((w) => w.wallet);\n    }\n    case \"io.safematrix\": {\n      return image ? import(\"./image-GK45NHUD.js\").then((img) => img.default) : import(\"./io-KZJ22VPA.js\").then((w) => w.wallet);\n    }\n    case \"com.neonwallet\": {\n      return image ? import(\"./image-UY6RYQ2N.js\").then((img) => img.default) : import(\"./com-77L55XPO.js\").then((w) => w.wallet);\n    }\n    case \"xyz.sequence\": {\n      return image ? import(\"./image-HVHSAD3I.js\").then((img) => img.default) : import(\"./xyz-C2SGGGJN.js\").then((w) => w.wallet);\n    }\n    case \"app.linen\": {\n      return image ? import(\"./image-U74NACFH.js\").then((img) => img.default) : import(\"./app-HRMMGDE2.js\").then((w) => w.wallet);\n    }\n    case \"io.nabox\": {\n      return image ? import(\"./image-VVOWBOZ5.js\").then((img) => img.default) : import(\"./io-KUZCCGFO.js\").then((w) => w.wallet);\n    }\n    case \"net.spatium\": {\n      return image ? import(\"./image-ZZDK3IJV.js\").then((img) => img.default) : import(\"./net-KQRWOTI5.js\").then((w) => w.wallet);\n    }\n    case \"com.cryptnox\": {\n      return image ? import(\"./image-LPMTTLXQ.js\").then((img) => img.default) : import(\"./com-RCO2EJCO.js\").then((w) => w.wallet);\n    }\n    case \"com.rktechworks\": {\n      return image ? import(\"./image-MJ7T6PNW.js\").then((img) => img.default) : import(\"./com-AKMGTE6O.js\").then((w) => w.wallet);\n    }\n    case \"pro.assure\": {\n      return image ? import(\"./image-BNWDNWZ7.js\").then((img) => img.default) : import(\"./pro-GX6XLDQ3.js\").then((w) => w.wallet);\n    }\n    case \"trade.flooz.wallet\": {\n      return image ? import(\"./image-JVUHELHQ.js\").then((img) => img.default) : import(\"./trade.flooz-RHPEJ2TY.js\").then((w) => w.wallet);\n    }\n    case \"app.keplr\": {\n      return image ? import(\"./image-WFYTTEWO.js\").then((img) => img.default) : import(\"./app-5BPIXU3J.js\").then((w) => w.wallet);\n    }\n    case \"com.crossmint\": {\n      return image ? import(\"./image-R6MZNPDW.js\").then((img) => img.default) : import(\"./com-GPM5NTEM.js\").then((w) => w.wallet);\n    }\n    case \"com.pierwallet\": {\n      return image ? import(\"./image-CVFAIAQD.js\").then((img) => img.default) : import(\"./com-P73TZQWI.js\").then((w) => w.wallet);\n    }\n    case \"app.core\": {\n      return image ? import(\"./image-NAO2HSQA.js\").then((img) => img.default) : import(\"./app-RQXR7MZ5.js\").then((w) => w.wallet);\n    }\n    case \"app.keeper-wallet\": {\n      return image ? import(\"./image-IK4KYWSE.js\").then((img) => img.default) : import(\"./app-FXWSJIOW.js\").then((w) => w.wallet);\n    }\n    case \"com.dcentwallet\": {\n      return image ? import(\"./image-ZTVWJS7Y.js\").then((img) => img.default) : import(\"./com-BLXPUI47.js\").then((w) => w.wallet);\n    }\n    case \"com.withpaper\": {\n      return image ? import(\"./image-LH6FUJDR.js\").then((img) => img.default) : import(\"./com-6SKA46QA.js\").then((w) => w.wallet);\n    }\n    case \"finance.klever\": {\n      return image ? import(\"./image-MYNVEIRO.js\").then((img) => img.default) : import(\"./finance-BPBXKFLP.js\").then((w) => w.wallet);\n    }\n    case \"app.edge\": {\n      return image ? import(\"./image-A3KPWLYO.js\").then((img) => img.default) : import(\"./app-6X4TWE2O.js\").then((w) => w.wallet);\n    }\n    case \"com.neftipedia\": {\n      return image ? import(\"./image-CPWAGIZP.js\").then((img) => img.default) : import(\"./com-GY4RR463.js\").then((w) => w.wallet);\n    }\n    case \"io.goldbit\": {\n      return image ? import(\"./image-SHZEEMLS.js\").then((img) => img.default) : import(\"./io-3U2SLLGY.js\").then((w) => w.wallet);\n    }\n    case \"com.coingrig\": {\n      return image ? import(\"./image-X75OW5JK.js\").then((img) => img.default) : import(\"./com-V5JX4VHE.js\").then((w) => w.wallet);\n    }\n    case \"io.xfun\": {\n      return image ? import(\"./image-CTUNVIGS.js\").then((img) => img.default) : import(\"./io-MMDEOZ3N.js\").then((w) => w.wallet);\n    }\n    case \"io.ricewallet\": {\n      return image ? import(\"./image-7ZYGDOS3.js\").then((img) => img.default) : import(\"./io-XEVP2DVS.js\").then((w) => w.wallet);\n    }\n    case \"com.antiersolutions\": {\n      return image ? import(\"./image-25FYMXPP.js\").then((img) => img.default) : import(\"./com-3M4YXHEP.js\").then((w) => w.wallet);\n    }\n    case \"io.okse\": {\n      return image ? import(\"./image-P7A7UY6Q.js\").then((img) => img.default) : import(\"./io-TLTTCINM.js\").then((w) => w.wallet);\n    }\n    case \"com.aktionariat\": {\n      return image ? import(\"./image-3SSVXVQA.js\").then((img) => img.default) : import(\"./com-ZXAV47A3.js\").then((w) => w.wallet);\n    }\n    case \"com.itoken\": {\n      return image ? import(\"./image-FY6NEZXX.js\").then((img) => img.default) : import(\"./com-JCVLXBH6.js\").then((w) => w.wallet);\n    }\n    case \"io.zelus\": {\n      return image ? import(\"./image-FL2436IW.js\").then((img) => img.default) : import(\"./io-RZ7W5PGA.js\").then((w) => w.wallet);\n    }\n    case \"com.cardstack\": {\n      return image ? import(\"./image-B42LGYLK.js\").then((img) => img.default) : import(\"./com-SD7QZXVI.js\").then((w) => w.wallet);\n    }\n    case \"com.paybolt\": {\n      return image ? import(\"./image-BG7Q7U5Z.js\").then((img) => img.default) : import(\"./com-TV4K6JFU.js\").then((w) => w.wallet);\n    }\n    case \"org.arianee\": {\n      return image ? import(\"./image-UEMJEQYK.js\").then((img) => img.default) : import(\"./org-6JIS4GGD.js\").then((w) => w.wallet);\n    }\n    case \"io.slavi\": {\n      return image ? import(\"./image-O63UCCVG.js\").then((img) => img.default) : import(\"./io-UP4NGDBV.js\").then((w) => w.wallet);\n    }\n    case \"com.plasma-wallet\": {\n      return image ? import(\"./image-LVVWGSGE.js\").then((img) => img.default) : import(\"./com-GHGCPYMS.js\").then((w) => w.wallet);\n    }\n    case \"tech.defiantapp\": {\n      return image ? import(\"./image-5ZJILWQW.js\").then((img) => img.default) : import(\"./tech-NOIENMRJ.js\").then((w) => w.wallet);\n    }\n    case \"cc.avacus\": {\n      return image ? import(\"./image-DX3LHC5E.js\").then((img) => img.default) : import(\"./cc-XODV5KUP.js\").then((w) => w.wallet);\n    }\n    case \"org.bytebank\": {\n      return image ? import(\"./image-BPJ747KI.js\").then((img) => img.default) : import(\"./org-U6MXPNQX.js\").then((w) => w.wallet);\n    }\n    case \"com.coolbitx.cwsapp\": {\n      return image ? import(\"./image-ORMFBD3D.js\").then((img) => img.default) : import(\"./com.coolbitx-54F2B4QS.js\").then((w) => w.wallet);\n    }\n    case \"com.optowallet\": {\n      return image ? import(\"./image-AXBX7NPH.js\").then((img) => img.default) : import(\"./com-D37EIKB4.js\").then((w) => w.wallet);\n    }\n    case \"network.trustkeys\": {\n      return image ? import(\"./image-LPCCHEBL.js\").then((img) => img.default) : import(\"./network-OTQ66RXU.js\").then((w) => w.wallet);\n    }\n    case \"app.beewallet\": {\n      return image ? import(\"./image-FAMMBKWU.js\").then((img) => img.default) : import(\"./app-XMYPKI5F.js\").then((w) => w.wallet);\n    }\n    case \"io.ttmwallet\": {\n      return image ? import(\"./image-MJJT532J.js\").then((img) => img.default) : import(\"./io-2GPQFRQF.js\").then((w) => w.wallet);\n    }\n    case \"io.pltwallet\": {\n      return image ? import(\"./image-OROPDYCP.js\").then((img) => img.default) : import(\"./io-UTHDBEVN.js\").then((w) => w.wallet);\n    }\n    case \"io.helixid\": {\n      return image ? import(\"./image-F3W3U35F.js\").then((img) => img.default) : import(\"./io-6LSXSNGH.js\").then((w) => w.wallet);\n    }\n    case \"it.airgap\": {\n      return image ? import(\"./image-D3PKEAGG.js\").then((img) => img.default) : import(\"./it-Y3SJTOXS.js\").then((w) => w.wallet);\n    }\n    case \"app.qubic.wallet\": {\n      return image ? import(\"./image-G3UZPUMP.js\").then((img) => img.default) : import(\"./app.qubic-45GFYY2N.js\").then((w) => w.wallet);\n    }\n    case \"com.holdstation\": {\n      return image ? import(\"./image-KRKMGIRW.js\").then((img) => img.default) : import(\"./com-IF7AHQFJ.js\").then((w) => w.wallet);\n    }\n    case \"com.saakuru.app\": {\n      return image ? import(\"./image-ZEXGTQP2.js\").then((img) => img.default) : import(\"./com.saakuru-3DH4OCRJ.js\").then((w) => w.wallet);\n    }\n    case \"com.3swallet\": {\n      return image ? import(\"./image-7KY4GSTR.js\").then((img) => img.default) : import(\"./com-UUE4VT6F.js\").then((w) => w.wallet);\n    }\n    case \"com.payperless\": {\n      return image ? import(\"./image-KHNJTNG5.js\").then((img) => img.default) : import(\"./com-ZFAFSEQR.js\").then((w) => w.wallet);\n    }\n    case \"digital.minerva\": {\n      return image ? import(\"./image-6PJHCB7N.js\").then((img) => img.default) : import(\"./digital-TWPYUQDY.js\").then((w) => w.wallet);\n    }\n    case \"finance.voltage\": {\n      return image ? import(\"./image-R3QO5B5O.js\").then((img) => img.default) : import(\"./finance-ROSDRD4N.js\").then((w) => w.wallet);\n    }\n    case \"com.lif3\": {\n      return image ? import(\"./image-J3BDNCMB.js\").then((img) => img.default) : import(\"./com-4GPSLLOX.js\").then((w) => w.wallet);\n    }\n    case \"net.shinobi-wallet\": {\n      return image ? import(\"./image-FX3DIZMC.js\").then((img) => img.default) : import(\"./net-TAG5PSHX.js\").then((w) => w.wallet);\n    }\n    case \"com.kryptogo\": {\n      return image ? import(\"./image-5KGJZFSW.js\").then((img) => img.default) : import(\"./com-2M7N6F5U.js\").then((w) => w.wallet);\n    }\n    case \"com.feralfile.app\": {\n      return image ? import(\"./image-L7CIHOLP.js\").then((img) => img.default) : import(\"./com.feralfile-6FVJKEDQ.js\").then((w) => w.wallet);\n    }\n    case \"com.bifrostwallet\": {\n      return image ? import(\"./image-XMXXH2OG.js\").then((img) => img.default) : import(\"./com-TDMJBI2M.js\").then((w) => w.wallet);\n    }\n    case \"com.nufinetes\": {\n      return image ? import(\"./image-CJLAIZ3U.js\").then((img) => img.default) : import(\"./com-ABZNTRLZ.js\").then((w) => w.wallet);\n    }\n    case \"io.wallet3\": {\n      return image ? import(\"./image-DQRQW2SI.js\").then((img) => img.default) : import(\"./io-6JQ4CHJH.js\").then((w) => w.wallet);\n    }\n    case \"com.abra\": {\n      return image ? import(\"./image-XOUIMWYP.js\").then((img) => img.default) : import(\"./com-VCBNOXWU.js\").then((w) => w.wallet);\n    }\n    case \"app.imem\": {\n      return image ? import(\"./image-TBQHCWRX.js\").then((img) => img.default) : import(\"./app-R4JLN24B.js\").then((w) => w.wallet);\n    }\n    case \"com.premanft\": {\n      return image ? import(\"./image-V5HQDG55.js\").then((img) => img.default) : import(\"./com-O32AFMCX.js\").then((w) => w.wallet);\n    }\n    case \"so.onekey.app.wallet\": {\n      return image ? import(\"./image-5C7T5MCW.js\").then((img) => img.default) : import(\"./so.onekey.app-3NGOLXP4.js\").then((w) => w.wallet);\n    }\n    case \"finance.slingshot\": {\n      return image ? import(\"./image-BAPZ7ZQ5.js\").then((img) => img.default) : import(\"./finance-B7FMBRBP.js\").then((w) => w.wallet);\n    }\n    case \"com.kriptonio\": {\n      return image ? import(\"./image-PRRYYAGC.js\").then((img) => img.default) : import(\"./com-XIFKBSI7.js\").then((w) => w.wallet);\n    }\n    case \"io.streakk\": {\n      return image ? import(\"./image-KNB5HTQS.js\").then((img) => img.default) : import(\"./io-S3TORZWD.js\").then((w) => w.wallet);\n    }\n    case \"com.saitamatoken\": {\n      return image ? import(\"./image-IEQIMBFO.js\").then((img) => img.default) : import(\"./com-DMBFR3TM.js\").then((w) => w.wallet);\n    }\n    case \"group.com.flowfoundation.wallet\": {\n      return image ? import(\"./image-NG6MRBT7.js\").then((img) => img.default) : import(\"./group.com.flowfoundation-Y5NGFX4Q.js\").then((w) => w.wallet);\n    }\n    case \"io.hippowallet\": {\n      return image ? import(\"./image-6V6UQQYW.js\").then((img) => img.default) : import(\"./io-TRUR62J5.js\").then((w) => w.wallet);\n    }\n    case \"io.cosmostation\": {\n      return image ? import(\"./image-Y6FK2F2P.js\").then((img) => img.default) : import(\"./io-DK5QUX7W.js\").then((w) => w.wallet);\n    }\n    case \"org.bitizen\": {\n      return image ? import(\"./image-FK2QQOEC.js\").then((img) => img.default) : import(\"./org-RVVOAAYD.js\").then((w) => w.wallet);\n    }\n    case \"io.blocto\": {\n      return image ? import(\"./image-WRJBQNVE.js\").then((img) => img.default) : import(\"./io-57PCDAYK.js\").then((w) => w.wallet);\n    }\n    case \"com.humbl\": {\n      return image ? import(\"./image-JGVAVBEO.js\").then((img) => img.default) : import(\"./com-Q7LI3IVT.js\").then((w) => w.wallet);\n    }\n    case \"io.passpay\": {\n      return image ? import(\"./image-XIC6EKNY.js\").then((img) => img.default) : import(\"./io-PVGHQBA3.js\").then((w) => w.wallet);\n    }\n    case \"app.ultimate\": {\n      return image ? import(\"./image-QTWRL6IY.js\").then((img) => img.default) : import(\"./app-JGIJQHBM.js\").then((w) => w.wallet);\n    }\n    case \"me.astrox\": {\n      return image ? import(\"./image-KMUGR2JC.js\").then((img) => img.default) : import(\"./me-KZ3JFV6V.js\").then((w) => w.wallet);\n    }\n    case \"org.thorwallet\": {\n      return image ? import(\"./image-ENIPULMK.js\").then((img) => img.default) : import(\"./org-XS7DVMFS.js\").then((w) => w.wallet);\n    }\n    case \"app.fizzwallet\": {\n      return image ? import(\"./image-BZHOLM24.js\").then((img) => img.default) : import(\"./app-Z3ZKSY2N.js\").then((w) => w.wallet);\n    }\n    case \"app.stickey\": {\n      return image ? import(\"./image-4XAPYK5Y.js\").then((img) => img.default) : import(\"./app-IC2A3RDS.js\").then((w) => w.wallet);\n    }\n    case \"com.klipwallet\": {\n      return image ? import(\"./image-POSUEFBS.js\").then((img) => img.default) : import(\"./com-6OK3IP35.js\").then((w) => w.wallet);\n    }\n    case \"app.coinstats\": {\n      return image ? import(\"./image-VMYFLQHY.js\").then((img) => img.default) : import(\"./app-JPKIQZES.js\").then((w) => w.wallet);\n    }\n    case \"land.liker\": {\n      return image ? import(\"./image-4ZXADMKV.js\").then((img) => img.default) : import(\"./land-CKBS6ZRZ.js\").then((w) => w.wallet);\n    }\n    case \"app.krystal\": {\n      return image ? import(\"./image-7YYGXP6N.js\").then((img) => img.default) : import(\"./app-O5DHUCKC.js\").then((w) => w.wallet);\n    }\n    case \"fi.pillar\": {\n      return image ? import(\"./image-WXZTVPXW.js\").then((img) => img.default) : import(\"./fi-AVCNJCZU.js\").then((w) => w.wallet);\n    }\n    case \"io.harti\": {\n      return image ? import(\"./image-OGVGI6IX.js\").then((img) => img.default) : import(\"./io-L6UQ2STJ.js\").then((w) => w.wallet);\n    }\n    case \"net.stasis\": {\n      return image ? import(\"./image-R2PA3K44.js\").then((img) => img.default) : import(\"./net-Z743Z374.js\").then((w) => w.wallet);\n    }\n    case \"io.novawallet\": {\n      return image ? import(\"./image-6VK7QNZB.js\").then((img) => img.default) : import(\"./io-ZIBKO2EM.js\").then((w) => w.wallet);\n    }\n    case \"io.dttd\": {\n      return image ? import(\"./image-7TSPO7Y6.js\").then((img) => img.default) : import(\"./io-BH2JNQLL.js\").then((w) => w.wallet);\n    }\n    case \"com.foxwallet\": {\n      return image ? import(\"./image-MBAEXQG7.js\").then((img) => img.default) : import(\"./com-2C4IBZJC.js\").then((w) => w.wallet);\n    }\n    case \"network.haqq\": {\n      return image ? import(\"./image-2TID5QYA.js\").then((img) => img.default) : import(\"./network-FCNDYIML.js\").then((w) => w.wallet);\n    }\n    case \"com.tomi\": {\n      return image ? import(\"./image-VF6EIX5D.js\").then((img) => img.default) : import(\"./com-URZWZY6W.js\").then((w) => w.wallet);\n    }\n    case \"io.tradestrike\": {\n      return image ? import(\"./image-YB4GRPL2.js\").then((img) => img.default) : import(\"./io-E2M2HE5Z.js\").then((w) => w.wallet);\n    }\n    case \"app.subwallet\": {\n      return image ? import(\"./image-KFBVQYIK.js\").then((img) => img.default) : import(\"./app-ICREXY5T.js\").then((w) => w.wallet);\n    }\n    case \"tech.okto\": {\n      return image ? import(\"./image-KI6G2NXA.js\").then((img) => img.default) : import(\"./tech-4UEY76KS.js\").then((w) => w.wallet);\n    }\n    case \"app.catecoin\": {\n      return image ? import(\"./image-HRDDJY2V.js\").then((img) => img.default) : import(\"./app-C6AFF7V2.js\").then((w) => w.wallet);\n    }\n    case \"io.ukiss\": {\n      return image ? import(\"./image-J72YUI7L.js\").then((img) => img.default) : import(\"./io-TRTOW6FM.js\").then((w) => w.wallet);\n    }\n    case \"com.tellaw\": {\n      return image ? import(\"./image-KLR4DGUS.js\").then((img) => img.default) : import(\"./com-7Y4S6AXS.js\").then((w) => w.wallet);\n    }\n    case \"com.tangem\": {\n      return image ? import(\"./image-4NVIL47X.js\").then((img) => img.default) : import(\"./com-CAZP4XAV.js\").then((w) => w.wallet);\n    }\n    case \"is.callback\": {\n      return image ? import(\"./image-VTXLRGUL.js\").then((img) => img.default) : import(\"./is-UU4FXVPC.js\").then((w) => w.wallet);\n    }\n    case \"io.summonersarena\": {\n      return image ? import(\"./image-SZ53EEZI.js\").then((img) => img.default) : import(\"./io-EA2JOUTZ.js\").then((w) => w.wallet);\n    }\n    case \"co.xellar\": {\n      return image ? import(\"./image-XLAW77N3.js\").then((img) => img.default) : import(\"./co-4KSSMBL6.js\").then((w) => w.wallet);\n    }\n    case \"io.talken\": {\n      return image ? import(\"./image-M4Z3YR4Z.js\").then((img) => img.default) : import(\"./io-5FGKYHDW.js\").then((w) => w.wallet);\n    }\n    case \"xyz.uniultra.wallet\": {\n      return image ? import(\"./image-JIBY7LRH.js\").then((img) => img.default) : import(\"./xyz.uniultra-YQ7QTAVX.js\").then((w) => w.wallet);\n    }\n    case \"io.ozonewallet\": {\n      return image ? import(\"./image-MRBGWX2E.js\").then((img) => img.default) : import(\"./io-XFMVSGBX.js\").then((w) => w.wallet);\n    }\n    case \"com.tiduswallet\": {\n      return image ? import(\"./image-LZY7JTRH.js\").then((img) => img.default) : import(\"./com-MIWCOGLD.js\").then((w) => w.wallet);\n    }\n    case \"world.ixo\": {\n      return image ? import(\"./image-4B3NOTPE.js\").then((img) => img.default) : import(\"./world-AAINEXQX.js\").then((w) => w.wallet);\n    }\n    case \"io.zelcore\": {\n      return image ? import(\"./image-KFCJWUYA.js\").then((img) => img.default) : import(\"./io-YSSN6F3W.js\").then((w) => w.wallet);\n    }\n    case \"world.dosi.vault\": {\n      return image ? import(\"./image-4R5252N7.js\").then((img) => img.default) : import(\"./world.dosi-Y2A7IFAO.js\").then((w) => w.wallet);\n    }\n    case \"com.ullapay\": {\n      return image ? import(\"./image-TCNXR5Y6.js\").then((img) => img.default) : import(\"./com-7CFZD43L.js\").then((w) => w.wallet);\n    }\n    case \"com.ellipal\": {\n      return image ? import(\"./image-XWTER34E.js\").then((img) => img.default) : import(\"./com-BJY3WLWU.js\").then((w) => w.wallet);\n    }\n    case \"money.unstoppable\": {\n      return image ? import(\"./image-DFLQ2XFN.js\").then((img) => img.default) : import(\"./money-E4VOZHJR.js\").then((w) => w.wallet);\n    }\n    case \"dev.auroracloud\": {\n      return image ? import(\"./image-BKAIFC5N.js\").then((img) => img.default) : import(\"./dev-CGZJG7WM.js\").then((w) => w.wallet);\n    }\n    case \"zone.bitverse\": {\n      return image ? import(\"./image-EQG2WO73.js\").then((img) => img.default) : import(\"./zone-DAJ2TSNU.js\").then((w) => w.wallet);\n    }\n    case \"io.konio\": {\n      return image ? import(\"./image-WZMMOWKO.js\").then((img) => img.default) : import(\"./io-LVXFK7U5.js\").then((w) => w.wallet);\n    }\n    case \"net.gateweb3\": {\n      return image ? import(\"./image-6GWDZO4B.js\").then((img) => img.default) : import(\"./net-Q5SVTUAO.js\").then((w) => w.wallet);\n    }\n    case \"app.utorg\": {\n      return image ? import(\"./image-Z5YWXRKQ.js\").then((img) => img.default) : import(\"./app-4OQAM2FO.js\").then((w) => w.wallet);\n    }\n    case \"com.coinsdo\": {\n      return image ? import(\"./image-Q5EEGXM4.js\").then((img) => img.default) : import(\"./com-UWJR5TCW.js\").then((w) => w.wallet);\n    }\n    case \"app.ammer\": {\n      return image ? import(\"./image-YJF46UIP.js\").then((img) => img.default) : import(\"./app-BJYH6WND.js\").then((w) => w.wallet);\n    }\n    case \"us.binance\": {\n      return image ? import(\"./image-YA6DLLJV.js\").then((img) => img.default) : import(\"./us-A63RIC6G.js\").then((w) => w.wallet);\n    }\n    case \"co.muza\": {\n      return image ? import(\"./image-RBD6CLZB.js\").then((img) => img.default) : import(\"./co-7LLLWALO.js\").then((w) => w.wallet);\n    }\n    case \"com.fxwallet\": {\n      return image ? import(\"./image-6ORYMNNS.js\").then((img) => img.default) : import(\"./com-CADNHKSZ.js\").then((w) => w.wallet);\n    }\n    case \"app.ryipay\": {\n      return image ? import(\"./image-ODMYDNAD.js\").then((img) => img.default) : import(\"./app-3BIDNXMN.js\").then((w) => w.wallet);\n    }\n    case \"com.roninchain.wallet\": {\n      return image ? import(\"./image-5N5BSRVW.js\").then((img) => img.default) : import(\"./com.roninchain-VOI4TK6H.js\").then((w) => w.wallet);\n    }\n    case \"org.dota168\": {\n      return image ? import(\"./image-PYNIXTYI.js\").then((img) => img.default) : import(\"./org-NOFWJHNU.js\").then((w) => w.wallet);\n    }\n    case \"io.altme\": {\n      return image ? import(\"./image-C3DYJZTD.js\").then((img) => img.default) : import(\"./io-XXPRYPG2.js\").then((w) => w.wallet);\n    }\n    case \"com.bitpie\": {\n      return image ? import(\"./image-LIVCGAOB.js\").then((img) => img.default) : import(\"./com-ECD626HL.js\").then((w) => w.wallet);\n    }\n    case \"io.moonstake\": {\n      return image ? import(\"./image-UFGCOQGW.js\").then((img) => img.default) : import(\"./io-2ZBQUD2Z.js\").then((w) => w.wallet);\n    }\n    case \"gg.indi\": {\n      return image ? import(\"./image-AZATAZUW.js\").then((img) => img.default) : import(\"./gg-7LOCEDJU.js\").then((w) => w.wallet);\n    }\n    case \"io.yusetoken\": {\n      return image ? import(\"./image-ZPU7UHI2.js\").then((img) => img.default) : import(\"./io-7F2E4V7R.js\").then((w) => w.wallet);\n    }\n    case \"com.coininn\": {\n      return image ? import(\"./image-G566PLZR.js\").then((img) => img.default) : import(\"./com-FLBLVTBY.js\").then((w) => w.wallet);\n    }\n    case \"io.functionx\": {\n      return image ? import(\"./image-EA6HZGAP.js\").then((img) => img.default) : import(\"./io-QLQLOVVJ.js\").then((w) => w.wallet);\n    }\n    case \"io.pockie\": {\n      return image ? import(\"./image-J5PWF63O.js\").then((img) => img.default) : import(\"./io-TZCRE2KR.js\").then((w) => w.wallet);\n    }\n    case \"com.amazewallet\": {\n      return image ? import(\"./image-EIETVCAX.js\").then((img) => img.default) : import(\"./com-2FMSNEYI.js\").then((w) => w.wallet);\n    }\n    case \"com.paliwallet\": {\n      return image ? import(\"./image-NOPIDNPE.js\").then((img) => img.default) : import(\"./com-G4PABABE.js\").then((w) => w.wallet);\n    }\n    case \"me.easy\": {\n      return image ? import(\"./image-OOBSXLNR.js\").then((img) => img.default) : import(\"./me-3MEDDZC5.js\").then((w) => w.wallet);\n    }\n    case \"live.superex\": {\n      return image ? import(\"./image-LOHR2RIE.js\").then((img) => img.default) : import(\"./live-5DC3MAHO.js\").then((w) => w.wallet);\n    }\n    case \"com.secuxtech\": {\n      return image ? import(\"./image-MBFXNJFS.js\").then((img) => img.default) : import(\"./com-WWOKZBON.js\").then((w) => w.wallet);\n    }\n    case \"io.didwallet\": {\n      return image ? import(\"./image-SFV565LD.js\").then((img) => img.default) : import(\"./io-24YA5BRN.js\").then((w) => w.wallet);\n    }\n    case \"social.halo\": {\n      return image ? import(\"./image-UHZP3BTN.js\").then((img) => img.default) : import(\"./social-WQVOUPQP.js\").then((w) => w.wallet);\n    }\n    case \"com.sinohope\": {\n      return image ? import(\"./image-45QC47QJ.js\").then((img) => img.default) : import(\"./com-Q4R5QXMD.js\").then((w) => w.wallet);\n    }\n    case \"com.ballet\": {\n      return image ? import(\"./image-7SUEPBLK.js\").then((img) => img.default) : import(\"./com-DJRJPGME.js\").then((w) => w.wallet);\n    }\n    case \"com.opz\": {\n      return image ? import(\"./image-5B72RBCK.js\").then((img) => img.default) : import(\"./com-MPMYNQIR.js\").then((w) => w.wallet);\n    }\n    case \"io.fizen\": {\n      return image ? import(\"./image-HOZVYDVK.js\").then((img) => img.default) : import(\"./io-ANOLLYWK.js\").then((w) => w.wallet);\n    }\n    case \"com.kresus\": {\n      return image ? import(\"./image-ZIEWC7ZM.js\").then((img) => img.default) : import(\"./com-KPWIFBRV.js\").then((w) => w.wallet);\n    }\n    case \"com.midoin\": {\n      return image ? import(\"./image-DJJHB4NK.js\").then((img) => img.default) : import(\"./com-TE3IRJVG.js\").then((w) => w.wallet);\n    }\n    case \"app.onto\": {\n      return image ? import(\"./image-AI7WZWEM.js\").then((img) => img.default) : import(\"./app-RRYWU2T6.js\").then((w) => w.wallet);\n    }\n    case \"com.oasys-wallet\": {\n      return image ? import(\"./image-SQEC6SWZ.js\").then((img) => img.default) : import(\"./com-MT3HKQ3R.js\").then((w) => w.wallet);\n    }\n    case \"org.gooddollar\": {\n      return image ? import(\"./image-IFJOAVNI.js\").then((img) => img.default) : import(\"./org-BHEY6VU5.js\").then((w) => w.wallet);\n    }\n    case \"id.competence\": {\n      return image ? import(\"./image-UGV6XSD5.js\").then((img) => img.default) : import(\"./id-JCDDJMLP.js\").then((w) => w.wallet);\n    }\n    case \"ai.spotonchain.platform\": {\n      return image ? import(\"./image-EHTA7ND2.js\").then((img) => img.default) : import(\"./ai.spotonchain-Q44G73RV.js\").then((w) => w.wallet);\n    }\n    case \"network.dgg\": {\n      return image ? import(\"./image-4KSYJONE.js\").then((img) => img.default) : import(\"./network-3HZ5XME7.js\").then((w) => w.wallet);\n    }\n    case \"llc.besc\": {\n      return image ? import(\"./image-MUVOHF4W.js\").then((img) => img.default) : import(\"./llc-JHHSY2C6.js\").then((w) => w.wallet);\n    }\n    case \"app.gamic\": {\n      return image ? import(\"./image-WCQARS7C.js\").then((img) => img.default) : import(\"./app-4WB6G67C.js\").then((w) => w.wallet);\n    }\n    case \"baby.smart\": {\n      return image ? import(\"./image-SON77BIL.js\").then((img) => img.default) : import(\"./baby-VXQWXU2X.js\").then((w) => w.wallet);\n    }\n    case \"network.gridlock\": {\n      return image ? import(\"./image-Z2CATCDR.js\").then((img) => img.default) : import(\"./network-7CN3ZGB5.js\").then((w) => w.wallet);\n    }\n    case \"app.zeal\": {\n      return image ? import(\"./image-DGAWLDDT.js\").then((img) => img.default) : import(\"./app-PUVYKP42.js\").then((w) => w.wallet);\n    }\n    case \"com.ivirse\": {\n      return image ? import(\"./image-LLODPB4V.js\").then((img) => img.default) : import(\"./com-XUD7P7EW.js\").then((w) => w.wallet);\n    }\n    case \"ch.dssecurity\": {\n      return image ? import(\"./image-R65TRIAG.js\").then((img) => img.default) : import(\"./ch-DJKOH7L6.js\").then((w) => w.wallet);\n    }\n    case \"com.concordium\": {\n      return image ? import(\"./image-SDS6MUPN.js\").then((img) => img.default) : import(\"./com-7ESFL2XC.js\").then((w) => w.wallet);\n    }\n    case \"io.zkape\": {\n      return image ? import(\"./image-IO2WKRLV.js\").then((img) => img.default) : import(\"./io-XAR6YN2H.js\").then((w) => w.wallet);\n    }\n    case \"com.thirdweb\": {\n      return image ? import(\"./image-WEIHHJID.js\").then((img) => img.default) : import(\"./com-7FNIVOH3.js\").then((w) => w.wallet);\n    }\n    case \"io.pitaka\": {\n      return image ? import(\"./image-QFDO4ERO.js\").then((img) => img.default) : import(\"./io-N5RGMBCH.js\").then((w) => w.wallet);\n    }\n    case \"com.trusteeglobal\": {\n      return image ? import(\"./image-CTC6AICN.js\").then((img) => img.default) : import(\"./com-I4GOOXU3.js\").then((w) => w.wallet);\n    }\n    case \"org.mugambo\": {\n      return image ? import(\"./image-43VCVTQW.js\").then((img) => img.default) : import(\"./org-5JOGDD4T.js\").then((w) => w.wallet);\n    }\n    case \"cc.dropp\": {\n      return image ? import(\"./image-3WCIGCJE.js\").then((img) => img.default) : import(\"./cc-VULA5ISR.js\").then((w) => w.wallet);\n    }\n    case \"xyz.roam.wallet\": {\n      return image ? import(\"./image-OS6F5ASF.js\").then((img) => img.default) : import(\"./xyz.roam-5PWBMVLT.js\").then((w) => w.wallet);\n    }\n    case \"world.qoin\": {\n      return image ? import(\"./image-CTWYLNEW.js\").then((img) => img.default) : import(\"./world-IQ7VTL27.js\").then((w) => w.wallet);\n    }\n    case \"com.meld.app\": {\n      return image ? import(\"./image-IGUKS27J.js\").then((img) => img.default) : import(\"./com.meld-U3J7XNQI.js\").then((w) => w.wallet);\n    }\n    case \"com.bestwallet\": {\n      return image ? import(\"./image-ZNKOF6C2.js\").then((img) => img.default) : import(\"./com-CHX2N46L.js\").then((w) => w.wallet);\n    }\n    case \"io.hyperpay\": {\n      return image ? import(\"./image-K423YJHO.js\").then((img) => img.default) : import(\"./io-JGARBW27.js\").then((w) => w.wallet);\n    }\n    case \"io.xucre\": {\n      return image ? import(\"./image-WGY4E5ZS.js\").then((img) => img.default) : import(\"./io-FVLW4E3K.js\").then((w) => w.wallet);\n    }\n    case \"app.herewallet\": {\n      return image ? import(\"./image-OMOWTLJH.js\").then((img) => img.default) : import(\"./app-XKLTXZZ5.js\").then((w) => w.wallet);\n    }\n    case \"com.cakewallet\": {\n      return image ? import(\"./image-4BA3AXSR.js\").then((img) => img.default) : import(\"./com-CMFYLJ3T.js\").then((w) => w.wallet);\n    }\n    case \"io.unagi.unawallet\": {\n      return image ? import(\"./image-CWA3VVUM.js\").then((img) => img.default) : import(\"./io.unagi-YSJDUHMV.js\").then((w) => w.wallet);\n    }\n    case \"io.ethos\": {\n      return image ? import(\"./image-2P2TSVGP.js\").then((img) => img.default) : import(\"./io-T6NWZUPR.js\").then((w) => w.wallet);\n    }\n    case \"app.pluswallet\": {\n      return image ? import(\"./image-R5MXAYSI.js\").then((img) => img.default) : import(\"./app-VCRSWMVS.js\").then((w) => w.wallet);\n    }\n    case \"com.authentrend\": {\n      return image ? import(\"./image-VB7IUURT.js\").then((img) => img.default) : import(\"./com-ZU576A7T.js\").then((w) => w.wallet);\n    }\n    case \"finance.plena\": {\n      return image ? import(\"./image-OCLQH6ET.js\").then((img) => img.default) : import(\"./finance-TUEUOJYQ.js\").then((w) => w.wallet);\n    }\n    case \"com.wemix\": {\n      return image ? import(\"./image-3QRD6CSU.js\").then((img) => img.default) : import(\"./com-VMFG63WD.js\").then((w) => w.wallet);\n    }\n    case \"com.gemwallet\": {\n      return image ? import(\"./image-6HQIDK6K.js\").then((img) => img.default) : import(\"./com-4MAE4SLL.js\").then((w) => w.wallet);\n    }\n    case \"com.caesiumlab\": {\n      return image ? import(\"./image-XIG5YKUC.js\").then((img) => img.default) : import(\"./com-ICJNKASS.js\").then((w) => w.wallet);\n    }\n    case \"pro.fintoken\": {\n      return image ? import(\"./image-4UXLJEY6.js\").then((img) => img.default) : import(\"./pro-VKWWWAVU.js\").then((w) => w.wallet);\n    }\n    case \"com.peakdefi\": {\n      return image ? import(\"./image-JBLGJN6S.js\").then((img) => img.default) : import(\"./com-XCMJDOF3.js\").then((w) => w.wallet);\n    }\n    case \"com.nodle\": {\n      return image ? import(\"./image-OYVSS2NW.js\").then((img) => img.default) : import(\"./com-SGLYOLT6.js\").then((w) => w.wallet);\n    }\n    case \"com.cryptokara\": {\n      return image ? import(\"./image-5EEVHG37.js\").then((img) => img.default) : import(\"./com-FUBWL26I.js\").then((w) => w.wallet);\n    }\n    case \"com.poolsmobility.wallet\": {\n      return image ? import(\"./image-XNCYDJC5.js\").then((img) => img.default) : import(\"./com.poolsmobility-MPUANJAV.js\").then((w) => w.wallet);\n    }\n    case \"com.veworld\": {\n      return image ? import(\"./image-K675SLCQ.js\").then((img) => img.default) : import(\"./com-ZCJBLCGU.js\").then((w) => w.wallet);\n    }\n    case \"com.azcoiner\": {\n      return image ? import(\"./image-DXG4ARNI.js\").then((img) => img.default) : import(\"./com-UGZ7W7CO.js\").then((w) => w.wallet);\n    }\n    case \"technology.jambo\": {\n      return image ? import(\"./image-YFLBT3YJ.js\").then((img) => img.default) : import(\"./technology-4ON2FUI4.js\").then((w) => w.wallet);\n    }\n    case \"vc.uincubator.api\": {\n      return image ? import(\"./image-PFLIBWNB.js\").then((img) => img.default) : import(\"./vc.uincubator-4WN5IZUJ.js\").then((w) => w.wallet);\n    }\n    case \"app.m1nty\": {\n      return image ? import(\"./image-BFCLTXKV.js\").then((img) => img.default) : import(\"./app-OXRH4XRW.js\").then((w) => w.wallet);\n    }\n    case \"io.noone\": {\n      return image ? import(\"./image-MO47H6ZA.js\").then((img) => img.default) : import(\"./io-24QRWA4Y.js\").then((w) => w.wallet);\n    }\n    case \"com.bitso\": {\n      return image ? import(\"./image-NBHYUHD2.js\").then((img) => img.default) : import(\"./com-RVMYGOTN.js\").then((w) => w.wallet);\n    }\n    case \"online.puzzle\": {\n      return image ? import(\"./image-CIXW5BVB.js\").then((img) => img.default) : import(\"./online-4UBMQVRH.js\").then((w) => w.wallet);\n    }\n    case \"network.blackfort\": {\n      return image ? import(\"./image-R6ZY7ODL.js\").then((img) => img.default) : import(\"./network-FHGUIPWM.js\").then((w) => w.wallet);\n    }\n    case \"io.armana.portal\": {\n      return image ? import(\"./image-TLQGVZIE.js\").then((img) => img.default) : import(\"./io.armana-FQHHA7CM.js\").then((w) => w.wallet);\n    }\n    case \"io.bharatbox\": {\n      return image ? import(\"./image-O3FWYAMJ.js\").then((img) => img.default) : import(\"./io-X54FGMH5.js\").then((w) => w.wallet);\n    }\n    case \"com.greengloryglobal\": {\n      return image ? import(\"./image-TLCK7IBC.js\").then((img) => img.default) : import(\"./com-Z7KH6LCA.js\").then((w) => w.wallet);\n    }\n    case \"com.x9wallet\": {\n      return image ? import(\"./image-PX7PII22.js\").then((img) => img.default) : import(\"./com-YMKJ5J5V.js\").then((w) => w.wallet);\n    }\n    case \"io.miraiapp\": {\n      return image ? import(\"./image-YBPOXOCZ.js\").then((img) => img.default) : import(\"./io-PV6OW5YR.js\").then((w) => w.wallet);\n    }\n    case \"io.kigo\": {\n      return image ? import(\"./image-WJBIEWRP.js\").then((img) => img.default) : import(\"./io-WHYZVMCN.js\").then((w) => w.wallet);\n    }\n    case \"com.getcogni\": {\n      return image ? import(\"./image-BAWNJLDB.js\").then((img) => img.default) : import(\"./com-5NZOMD6O.js\").then((w) => w.wallet);\n    }\n    case \"com.fastex.wallet\": {\n      return image ? import(\"./image-JCMNNBDZ.js\").then((img) => img.default) : import(\"./com.fastex-OSMD2QUY.js\").then((w) => w.wallet);\n    }\n    case \"io.wallacy\": {\n      return image ? import(\"./image-LY3RZ44R.js\").then((img) => img.default) : import(\"./io-YKR37A4G.js\").then((w) => w.wallet);\n    }\n    case \"org.talkapp\": {\n      return image ? import(\"./image-RLLVBJI7.js\").then((img) => img.default) : import(\"./org-IQR2KWLE.js\").then((w) => w.wallet);\n    }\n    case \"com.usecapsule\": {\n      return image ? import(\"./image-D6HXSW23.js\").then((img) => img.default) : import(\"./com-AODZYQWL.js\").then((w) => w.wallet);\n    }\n    case \"com.unitywallet\": {\n      return image ? import(\"./image-VNMGUJNB.js\").then((img) => img.default) : import(\"./com-HQ3ZNBVK.js\").then((w) => w.wallet);\n    }\n    case \"app.sinum\": {\n      return image ? import(\"./image-GSMGI7VJ.js\").then((img) => img.default) : import(\"./app-QASKZRBP.js\").then((w) => w.wallet);\n    }\n    case \"finance.soulswap.app\": {\n      return image ? import(\"./image-TLL7ZWDJ.js\").then((img) => img.default) : import(\"./finance.soulswap-JBPBKOGF.js\").then((w) => w.wallet);\n    }\n    case \"com.shapeshift\": {\n      return image ? import(\"./image-TVOSPHN4.js\").then((img) => img.default) : import(\"./com-SH3JOPDV.js\").then((w) => w.wallet);\n    }\n    case \"finance.panaroma\": {\n      return image ? import(\"./image-J26M6VNU.js\").then((img) => img.default) : import(\"./finance-XE4OWK2N.js\").then((w) => w.wallet);\n    }\n    case \"io.neopin\": {\n      return image ? import(\"./image-PJ56ZJZI.js\").then((img) => img.default) : import(\"./io-H454JI3W.js\").then((w) => w.wallet);\n    }\n    case \"com.alicebob\": {\n      return image ? import(\"./image-YCZSZUXE.js\").then((img) => img.default) : import(\"./com-IVJ4ODXS.js\").then((w) => w.wallet);\n    }\n    case \"co.cyber.wallet\": {\n      return image ? import(\"./image-3NR45HO4.js\").then((img) => img.default) : import(\"./co.cyber-W3ZB2PHU.js\").then((w) => w.wallet);\n    }\n    case \"com.dextrade\": {\n      return image ? import(\"./image-2DVLCOT5.js\").then((img) => img.default) : import(\"./com-UJZJA6SZ.js\").then((w) => w.wallet);\n    }\n    case \"com.hashpack.wallet\": {\n      return image ? import(\"./image-NFV4FTVS.js\").then((img) => img.default) : import(\"./com.hashpack-VBVIF33I.js\").then((w) => w.wallet);\n    }\n    case \"org.thepulsewallet\": {\n      return image ? import(\"./image-QBQHKWYU.js\").then((img) => img.default) : import(\"./org-PJ6LCHSF.js\").then((w) => w.wallet);\n    }\n    case \"id.co.pintu\": {\n      return image ? import(\"./image-G4VVMDLA.js\").then((img) => img.default) : import(\"./id.co-KFRG5HP3.js\").then((w) => w.wallet);\n    }\n    case \"io.bladewallet\": {\n      return image ? import(\"./image-4MUDZ5WJ.js\").then((img) => img.default) : import(\"./io-WTWNTQY2.js\").then((w) => w.wallet);\n    }\n    case \"com.pandoshi\": {\n      return image ? import(\"./image-WAEURFBG.js\").then((img) => img.default) : import(\"./com-ZL3AON34.js\").then((w) => w.wallet);\n    }\n    case \"money.keychain\": {\n      return image ? import(\"./image-J3VWG5MZ.js\").then((img) => img.default) : import(\"./money-5LMST26O.js\").then((w) => w.wallet);\n    }\n    case \"com.mpcvault.broswerplugin\": {\n      return image ? import(\"./image-V7OWVN52.js\").then((img) => img.default) : import(\"./com.mpcvault-5RS5XOJS.js\").then((w) => w.wallet);\n    }\n    case \"io.legacynetwork\": {\n      return image ? import(\"./image-G4OOMJFL.js\").then((img) => img.default) : import(\"./io-E6S6IBUY.js\").then((w) => w.wallet);\n    }\n    case \"io.getclave\": {\n      return image ? import(\"./image-NG66JYBW.js\").then((img) => img.default) : import(\"./io-CTRCTP32.js\").then((w) => w.wallet);\n    }\n    case \"me.iopay\": {\n      return image ? import(\"./image-RCPUSQIA.js\").then((img) => img.default) : import(\"./me-N5NHUYM7.js\").then((w) => w.wallet);\n    }\n    case \"app.kabila\": {\n      return image ? import(\"./image-OMOLG6BP.js\").then((img) => img.default) : import(\"./app-SFALV7Q7.js\").then((w) => w.wallet);\n    }\n    case \"one.mixin.messenger\": {\n      return image ? import(\"./image-VUQ2UL4L.js\").then((img) => img.default) : import(\"./one.mixin-AYEP2MDG.js\").then((w) => w.wallet);\n    }\n    case \"com.bettatrade\": {\n      return image ? import(\"./image-FFW5ALAV.js\").then((img) => img.default) : import(\"./com-EC74KZVH.js\").then((w) => w.wallet);\n    }\n    case \"io.scramberry\": {\n      return image ? import(\"./image-MDU42EYU.js\").then((img) => img.default) : import(\"./io-J7ET3CPL.js\").then((w) => w.wallet);\n    }\n    case \"io.earthwallet\": {\n      return image ? import(\"./image-T5624ZCD.js\").then((img) => img.default) : import(\"./io-3FD4NDEY.js\").then((w) => w.wallet);\n    }\n    case \"xyz.nestwallet\": {\n      return image ? import(\"./image-JVTGPVY4.js\").then((img) => img.default) : import(\"./xyz-6TGRCCCS.js\").then((w) => w.wallet);\n    }\n    case \"xyz.echooo\": {\n      return image ? import(\"./image-2C6TWMD7.js\").then((img) => img.default) : import(\"./xyz-JTTBORVS.js\").then((w) => w.wallet);\n    }\n    case \"net.myrenegade\": {\n      return image ? import(\"./image-T4K2HHHO.js\").then((img) => img.default) : import(\"./net-4I6DBKNS.js\").then((w) => w.wallet);\n    }\n    case \"io.ready\": {\n      return image ? import(\"./image-OX5V2TE5.js\").then((img) => img.default) : import(\"./io-TLH32OUQ.js\").then((w) => w.wallet);\n    }\n    case \"ai.hacken\": {\n      return image ? import(\"./image-FUZODB6Q.js\").then((img) => img.default) : import(\"./ai-M4CK2DAC.js\").then((w) => w.wallet);\n    }\n    case \"io.plutope\": {\n      return image ? import(\"./image-MTJY6UAP.js\").then((img) => img.default) : import(\"./io-4K37O2UO.js\").then((w) => w.wallet);\n    }\n    case \"io.trustasset\": {\n      return image ? import(\"./image-XA4X52SC.js\").then((img) => img.default) : import(\"./io-2OUEZVZU.js\").then((w) => w.wallet);\n    }\n    case \"app.dfinnwallet\": {\n      return image ? import(\"./image-VLI6ZCKX.js\").then((img) => img.default) : import(\"./app-HGBIYGYJ.js\").then((w) => w.wallet);\n    }\n    case \"com.bmawallet\": {\n      return image ? import(\"./image-WRTS63PY.js\").then((img) => img.default) : import(\"./com-IDR25SRZ.js\").then((w) => w.wallet);\n    }\n    case \"net.spatium.wallet\": {\n      return image ? import(\"./image-KXOZP327.js\").then((img) => img.default) : import(\"./net.spatium-EBSLJIM4.js\").then((w) => w.wallet);\n    }\n    case \"io.transi\": {\n      return image ? import(\"./image-KWDZM3JO.js\").then((img) => img.default) : import(\"./io-H2C73JK2.js\").then((w) => w.wallet);\n    }\n    case \"com.dolletwallet\": {\n      return image ? import(\"./image-3XPXEUVI.js\").then((img) => img.default) : import(\"./com-SPRTZXVD.js\").then((w) => w.wallet);\n    }\n    case \"app.wombat\": {\n      return image ? import(\"./image-VKEDKKKR.js\").then((img) => img.default) : import(\"./app-J7XLYP5E.js\").then((w) => w.wallet);\n    }\n    case \"fi.dropmate\": {\n      return image ? import(\"./image-HN4UT2MP.js\").then((img) => img.default) : import(\"./fi-MH46U2IW.js\").then((w) => w.wallet);\n    }\n    case \"pub.dg\": {\n      return image ? import(\"./image-6MCAWLUJ.js\").then((img) => img.default) : import(\"./pub-BCM6XBN4.js\").then((w) => w.wallet);\n    }\n    case \"com.icewal\": {\n      return image ? import(\"./image-5ESOAIQD.js\").then((img) => img.default) : import(\"./com-QQPVG7PP.js\").then((w) => w.wallet);\n    }\n    case \"one.metapro.wallet\": {\n      return image ? import(\"./image-6VDTM3JY.js\").then((img) => img.default) : import(\"./one.metapro-JZZTCOTQ.js\").then((w) => w.wallet);\n    }\n    case \"xyz.bonuz\": {\n      return image ? import(\"./image-24U2WBYW.js\").then((img) => img.default) : import(\"./xyz-QSKGFGJW.js\").then((w) => w.wallet);\n    }\n    case \"io.shido\": {\n      return image ? import(\"./image-7OU6UVPL.js\").then((img) => img.default) : import(\"./io-X4AWA27Q.js\").then((w) => w.wallet);\n    }\n    case \"co.lifedefi\": {\n      return image ? import(\"./image-N53KCP2W.js\").then((img) => img.default) : import(\"./co-4QEGB6VV.js\").then((w) => w.wallet);\n    }\n    case \"fun.tobi\": {\n      return image ? import(\"./image-XUGPYK2I.js\").then((img) => img.default) : import(\"./fun-LYGVTTTP.js\").then((w) => w.wallet);\n    }\n    case \"app.clot\": {\n      return image ? import(\"./image-D5ZHP4L6.js\").then((img) => img.default) : import(\"./app-MFHNNKPC.js\").then((w) => w.wallet);\n    }\n    case \"me.komet.app\": {\n      return image ? import(\"./image-QZKB4QH2.js\").then((img) => img.default) : import(\"./me.komet-E7D6F2JB.js\").then((w) => w.wallet);\n    }\n    case \"io.guardiianwallet\": {\n      return image ? import(\"./image-H66KD67W.js\").then((img) => img.default) : import(\"./io-DIWAXNTD.js\").then((w) => w.wallet);\n    }\n    case \"io.wallypto\": {\n      return image ? import(\"./image-TJPXCNVF.js\").then((img) => img.default) : import(\"./io-Z5GSMWWC.js\").then((w) => w.wallet);\n    }\n    case \"com.safemoon\": {\n      return image ? import(\"./image-T7NA4A2Y.js\").then((img) => img.default) : import(\"./com-OKQHPEYA.js\").then((w) => w.wallet);\n    }\n    case \"com.elrond.maiar.wallet\": {\n      return image ? import(\"./image-L7XMXCCE.js\").then((img) => img.default) : import(\"./com.elrond.maiar-CPDDYEOU.js\").then((w) => w.wallet);\n    }\n    case \"co.swopme\": {\n      return image ? import(\"./image-63JBKI3J.js\").then((img) => img.default) : import(\"./co-A2VHPEPT.js\").then((w) => w.wallet);\n    }\n    case \"com.bitpay\": {\n      return image ? import(\"./image-R5DDRXEO.js\").then((img) => img.default) : import(\"./com-NSXJ3MYN.js\").then((w) => w.wallet);\n    }\n    case \"app.tofee\": {\n      return image ? import(\"./image-WD5JWD6U.js\").then((img) => img.default) : import(\"./app-LUGTXPGI.js\").then((w) => w.wallet);\n    }\n    case \"com.zypto\": {\n      return image ? import(\"./image-CX4RMA4S.js\").then((img) => img.default) : import(\"./com-USI3H3ZY.js\").then((w) => w.wallet);\n    }\n    case \"xyz.orion\": {\n      return image ? import(\"./image-2DLIROHM.js\").then((img) => img.default) : import(\"./xyz-ZHYDMTP5.js\").then((w) => w.wallet);\n    }\n    case \"io.uptn.dapp-web\": {\n      return image ? import(\"./image-7U7UXPGY.js\").then((img) => img.default) : import(\"./io.uptn-GWS6HTWS.js\").then((w) => w.wallet);\n    }\n    case \"app.nicegram\": {\n      return image ? import(\"./image-AR3FQDWK.js\").then((img) => img.default) : import(\"./app-CEHOPHKL.js\").then((w) => w.wallet);\n    }\n    case \"finance.openwallet\": {\n      return image ? import(\"./image-TW36VKLS.js\").then((img) => img.default) : import(\"./finance-GAXWYNOQ.js\").then((w) => w.wallet);\n    }\n    case \"com.tastycrypto\": {\n      return image ? import(\"./image-J6OTD3HY.js\").then((img) => img.default) : import(\"./com-HUVDUN75.js\").then((w) => w.wallet);\n    }\n    case \"com.ipmb\": {\n      return image ? import(\"./image-EWL7XSZS.js\").then((img) => img.default) : import(\"./com-66Q6X2AN.js\").then((w) => w.wallet);\n    }\n    case \"com.daffione\": {\n      return image ? import(\"./image-2MC3OA63.js\").then((img) => img.default) : import(\"./com-LFG2VXGV.js\").then((w) => w.wallet);\n    }\n    case \"io.owallet\": {\n      return image ? import(\"./image-RCVINJ4L.js\").then((img) => img.default) : import(\"./io-CWMDB2MU.js\").then((w) => w.wallet);\n    }\n    case \"com.beexo\": {\n      return image ? import(\"./image-22XCL4QC.js\").then((img) => img.default) : import(\"./com-KFSYP3UK.js\").then((w) => w.wallet);\n    }\n    case \"com.webauth\": {\n      return image ? import(\"./image-QMD3UXYM.js\").then((img) => img.default) : import(\"./com-IATVSYRF.js\").then((w) => w.wallet);\n    }\n    case \"id.plumaa\": {\n      return image ? import(\"./image-TGDIBLJ5.js\").then((img) => img.default) : import(\"./id-UVORZUHE.js\").then((w) => w.wallet);\n    }\n    case \"social.gm2\": {\n      return image ? import(\"./image-DZDKYDL2.js\").then((img) => img.default) : import(\"./social-IGLKXP3O.js\").then((w) => w.wallet);\n    }\n    case \"nl.greenhood.wallet\": {\n      return image ? import(\"./image-P3F6JWUP.js\").then((img) => img.default) : import(\"./nl.greenhood-2VCIICQQ.js\").then((w) => w.wallet);\n    }\n    case \"com.coinbase.wallet\": {\n      return image ? import(\"./image-UR6R66GX.js\").then((img) => img.default) : import(\"./com.coinbase-XCXEA6KF.js\").then((w) => w.wallet);\n    }\n    case \"app.phantom\": {\n      return image ? import(\"./image-SKFBWVXM.js\").then((img) => img.default) : import(\"./app-IEYL7BOV.js\").then((w) => w.wallet);\n    }\n    case \"io.rabby\": {\n      return image ? import(\"./image-RUAKVMHJ.js\").then((img) => img.default) : import(\"./io-6HD3H3FJ.js\").then((w) => w.wallet);\n    }\n    case \"com.brave.wallet\": {\n      return image ? import(\"./image-KVUL54ZL.js\").then((img) => img.default) : import(\"./com.brave-D3ZUHE7V.js\").then((w) => w.wallet);\n    }\n    case \"io.xdefi\": {\n      return image ? import(\"./image-FNGTNT45.js\").then((img) => img.default) : import(\"./io-D6Z3AKMH.js\").then((w) => w.wallet);\n    }\n    case \"com.moongate.one\": {\n      return image ? import(\"./image-2VBH6P4I.js\").then((img) => img.default) : import(\"./com.moongate-IFYOW5HA.js\").then((w) => w.wallet);\n    }\n    case \"com.blanqlabs.wallet\": {\n      return image ? import(\"./image-V5M6SPNZ.js\").then((img) => img.default) : import(\"./com.blanqlabs-SYJXQAS6.js\").then((w) => w.wallet);\n    }\n    case \"tech.levain\": {\n      return image ? import(\"./image-NDYGNMMC.js\").then((img) => img.default) : import(\"./tech-C727ACOE.js\").then((w) => w.wallet);\n    }\n    case \"com.enkrypt\": {\n      return image ? import(\"./image-D2BFLLX6.js\").then((img) => img.default) : import(\"./com-7ZICZNFF.js\").then((w) => w.wallet);\n    }\n    case \"com.scramble\": {\n      return image ? import(\"./image-L7F3ZTNT.js\").then((img) => img.default) : import(\"./com-KWK64UB7.js\").then((w) => w.wallet);\n    }\n    case \"io.finoa\": {\n      return image ? import(\"./image-7EORRWO4.js\").then((img) => img.default) : import(\"./io-DXHXE7IX.js\").then((w) => w.wallet);\n    }\n    case \"inc.tomo\": {\n      return image ? import(\"./image-I2F4TK64.js\").then((img) => img.default) : import(\"./inc-2JDOS23Q.js\").then((w) => w.wallet);\n    }\n    case \"com.walletconnect.com\": {\n      return image ? import(\"./image-EZTUCZIK.js\").then((img) => img.default) : import(\"./com.walletconnect-QWEQRBQR.js\").then((w) => w.wallet);\n    }\n    case \"io.leapwallet.CompassWallet\": {\n      return image ? import(\"./image-VW2FN7E5.js\").then((img) => img.default) : import(\"./io.leapwallet-GH33NGTJ.js\").then((w) => w.wallet);\n    }\n    case \"app.nightly\": {\n      return image ? import(\"./image-CP6E35DJ.js\").then((img) => img.default) : import(\"./app-YG5QZHYU.js\").then((w) => w.wallet);\n    }\n    case \"com.blazpay.wallet\": {\n      return image ? import(\"./image-ZOCXRE6K.js\").then((img) => img.default) : import(\"./com.blazpay-G2RYDJ7L.js\").then((w) => w.wallet);\n    }\n    case \"com.lootrush\": {\n      return image ? import(\"./image-2O2NSLAV.js\").then((img) => img.default) : import(\"./com-NFP3O76O.js\").then((w) => w.wallet);\n    }\n    case \"app.core.extension\": {\n      return image ? import(\"./image-XFK44ZH7.js\").then((img) => img.default) : import(\"./app.core-FOKZSNJL.js\").then((w) => w.wallet);\n    }\n    case \"xyz.dawnwallet\": {\n      return image ? import(\"./image-CFMPEXUH.js\").then((img) => img.default) : import(\"./xyz-3DUFJPG6.js\").then((w) => w.wallet);\n    }\n    case \"xyz.abs\": {\n      return image ? import(\"./image-5QOWOT7K.js\").then((img) => img.default) : import(\"./xyz-WOO5ZF56.js\").then((w) => w.wallet);\n    }\n    default: {\n      throw new Error(`Wallet with id ${id} not found`);\n    }\n  }\n}\n\nexport {\n  isEcosystemWallet,\n  getWalletInfo\n};\n//# sourceMappingURL=chunk-XC5J5ANL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-XTOEMUZK.js",
    "content": "import {\n  ClientScopedStorage\n} from \"./chunk-CYVKJMZE.js\";\nimport {\n  webLocalStorage\n} from \"./chunk-VIBS7Y3M.js\";\nimport {\n  base64ToString,\n  base64UrlToBase64\n} from \"./chunk-VJOHABJ4.js\";\n\n// node_modules/@passwordless-id/webauthn/dist/webauthn.min.js\nvar N = Object.defineProperty;\nvar b = (e, a) => {\n  for (var t in a)\n    N(e, t, { get: a[t], enumerable: true });\n};\nvar S = {};\nb(S, { authenticate: () => M, isAvailable: () => U, isLocalAuthenticator: () => I, register: () => V });\nvar s = {};\nb(s, { bufferToHex: () => m, concatenateBuffers: () => D, isBase64url: () => l, parseBase64url: () => d, parseBuffer: () => E, randomChallenge: () => R, sha256: () => u, toBase64url: () => o, toBuffer: () => f });\nfunction R() {\n  return crypto.randomUUID();\n}\nfunction f(e) {\n  return Uint8Array.from(e, (a) => a.charCodeAt(0)).buffer;\n}\nfunction E(e) {\n  return String.fromCharCode(...new Uint8Array(e));\n}\nfunction l(e) {\n  return e.match(/^[a-zA-Z0-9\\-_]+=*$/) !== null;\n}\nfunction o(e) {\n  return btoa(E(e)).replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\");\n}\nfunction d(e) {\n  return e = e.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\"), f(atob(e));\n}\nasync function u(e) {\n  return await crypto.subtle.digest(\"SHA-256\", e);\n}\nfunction m(e) {\n  return [...new Uint8Array(e)].map((a) => a.toString(16).padStart(2, \"0\")).join(\"\");\n}\nfunction D(e, a) {\n  var t = new Uint8Array(e.byteLength + a.byteLength);\n  return t.set(new Uint8Array(e), 0), t.set(new Uint8Array(a), e.byteLength), t;\n}\nfunction U() {\n  return !!window.PublicKeyCredential;\n}\nasync function I() {\n  return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n}\nasync function H(e) {\n  if (e === \"local\")\n    return \"platform\";\n  if (e === \"roaming\" || e === \"extern\")\n    return \"cross-platform\";\n  if (e !== \"both\")\n    try {\n      return await I() ? \"platform\" : \"cross-platform\";\n    } catch {\n      return;\n    }\n}\nfunction v(e) {\n  switch (e) {\n    case -7:\n      return \"ES256\";\n    case -257:\n      return \"RS256\";\n    default:\n      throw new Error(`Unknown algorithm code: ${e}`);\n  }\n}\nasync function V(e, a, t) {\n  if (t = t ?? {}, !l(a))\n    throw new Error(\"Provided challenge is not properly encoded in Base64url\");\n  let i = { challenge: d(a), rp: { id: t.domain ?? window.location.hostname, name: t.domain ?? window.location.hostname }, user: { id: t.userHandle ? f(t.userHandle) : await u(new TextEncoder().encode(\"passwordless.id-user:\" + e)), name: e, displayName: e }, pubKeyCredParams: [{ alg: -7, type: \"public-key\" }, { alg: -257, type: \"public-key\" }], timeout: t.timeout ?? 6e4, authenticatorSelection: { userVerification: t.userVerification ?? \"required\", authenticatorAttachment: await H(t.authenticatorType ?? \"auto\"), residentKey: t.discoverable ?? \"preferred\", requireResidentKey: t.discoverable === \"required\" }, attestation: \"direct\" };\n  t.debug && console.debug(i);\n  let r = await navigator.credentials.create({ publicKey: i, signal: t.signal });\n  t.debug && console.debug(r);\n  let c = r.response, n = { username: e, credential: { id: r.id, publicKey: o(c.getPublicKey()), algorithm: v(r.response.getPublicKeyAlgorithm()) }, authenticatorData: o(c.getAuthenticatorData()), clientData: o(c.clientDataJSON) };\n  return t.attestation && (n.attestationData = o(c.attestationObject)), n;\n}\nasync function k(e) {\n  let a = [\"internal\"], t = [\"hybrid\", \"usb\", \"ble\", \"nfc\"];\n  if (e === \"local\")\n    return a;\n  if (e == \"roaming\" || e === \"extern\")\n    return t;\n  if (e === \"both\")\n    return [...a, ...t];\n  try {\n    return await I() ? a : t;\n  } catch {\n    return [...a, ...t];\n  }\n}\nasync function M(e, a, t) {\n  if (t = t ?? {}, !l(a))\n    throw new Error(\"Provided challenge is not properly encoded in Base64url\");\n  let i = await k(t.authenticatorType ?? \"auto\"), r = { challenge: d(a), rpId: t.domain ?? window.location.hostname, allowCredentials: e.map((A) => ({ id: d(A), type: \"public-key\", transports: i })), userVerification: t.userVerification ?? \"required\", timeout: t.timeout ?? 6e4 };\n  t.debug && console.debug(r);\n  let c = await navigator.credentials.get({ publicKey: r, mediation: t.mediation, signal: t.signal });\n  t.debug && console.debug(c);\n  let n = c.response;\n  return { credentialId: c.id, authenticatorData: o(n.authenticatorData), clientData: o(n.clientDataJSON), signature: o(n.signature), userHandle: n.userHandle ? o(n.userHandle) : void 0 };\n}\nvar K = {};\nb(K, { verifyAuthentication: () => X, verifyRegistration: () => J, verifySignature: () => x });\nvar C = {};\nb(C, { parseAttestation: () => _, parseAuthentication: () => w, parseAuthenticator: () => O, parseClient: () => F, parseRegistration: () => P });\nvar h = { \"00000000-0000-0000-0000-000000000000\": \"Unknown authenticator\", \"0076631b-d4a0-427f-5773-0ec71c9e0279\": \"HYPR FIDO2 Authenticator\", \"07a9f89c-6407-4594-9d56-621d5f1e358b\": \"NXP Semiconductros FIDO2 Conformance Testing CTAP2 Authenticator\", \"08987058-cadc-4b81-b6e1-30de50dcbe96\": \"Windows Hello\", \"09591fc6-9811-48f7-8f57-b9f23df6413f\": \"Pone Biometrics OFFPAD Authenticator\", \"0acf3011-bc60-f375-fb53-6f05f43154e0\": \"Nymi FIDO2 Authenticator\", \"0bb43545-fd2c-4185-87dd-feb0b2916ace\": \"Security Key NFC by Yubico - Enterprise Edition\", \"0d9b2e56-566b-c393-2940-f821b7f15d6d\": \"Excelsecu eSecu FIDO2 Pro Security Key\", \"0ea242b4-43c4-4a1b-8b17-dd6d0b6baec6\": \"Keeper\", \"1105e4ed-af1d-02ff-ffff-ffffffffffff\": \"Egomet FIDO2 Authenticator for Android\", \"12ded745-4bed-47d4-abaa-e713f51d6393\": \"Feitian AllinOne FIDO2 Authenticator\", \"149a2021-8ef6-4133-96b8-81f8d5b7f1f5\": \"Security Key by Yubico with NFC\", \"17290f1e-c212-34d0-1423-365d729f09d9\": \"Thales PIN iOS SDK\", \"175cd298-83d2-4a26-b637-313c07a6434e\": \"Chunghwa Telecom FIDO2 Smart Card Authenticator\", \"1c086528-58d5-f211-823c-356786e36140\": \"Atos CardOS FIDO2\", \"20f0be98-9af9-986a-4b42-8eca4acb28e4\": \"Excelsecu eSecu FIDO2 Fingerprint Security Key\", \"2194b428-9397-4046-8f39-007a1605a482\": \"IDPrime 931 Fido\", \"23786452-f02d-4344-87ed-aaf703726881\": \"SafeNet eToken Fusion CC\", \"2c0df832-92de-4be1-8412-88a8f074df4a\": \"Feitian FIDO Smart Card\", \"2d3bec26-15ee-4f5d-88b2-53622490270b\": \"HID Crescendo Key V2\", \"2fc0579f-8113-47ea-b116-bb5a8db9202a\": \"YubiKey 5 Series with NFC\", \"2ffd6452-01da-471f-821b-ea4bf6c8676a\": \"IDPrime 941 Fido\", \"30b5035e-d297-4fc1-b00b-addc96ba6a97\": \"OneSpan FIDO Touch\", \"30b5035e-d297-4ff1-b00b-addc96ba6a98\": \"OneSpan DIGIPASS FX1 BIO\", \"341e4da9-3c2e-8103-5a9f-aad887135200\": \"Ledger Nano S FIDO2 Authenticator\", \"34f5766d-1536-4a24-9033-0e294e510fb0\": \"YubiKey 5 Series CTAP2.1 Preview Expired \", \"361a3082-0278-4583-a16f-72a527f973e4\": \"eWBM eFA500 FIDO2 Authenticator\", \"3789da91-f943-46bc-95c3-50ea2012f03a\": \"NEOWAVE Winkeo FIDO2\", \"39a5647e-1853-446c-a1f6-a79bae9f5bc7\": \"IDmelon\", \"3b1adb99-0dfe-46fd-90b8-7f7614a4de2a\": \"GoTrust Idem Key FIDO2 Authenticator\", \"3e078ffd-4c54-4586-8baa-a77da113aec5\": \"Hideez Key 3 FIDO2\", \"3e22415d-7fdf-4ea4-8a0c-dd60c4249b9d\": \"Feitian iePass FIDO Authenticator\", \"3f59672f-20aa-4afe-b6f4-7e5e916b6d98\": \"Arculus FIDO 2.1 Key Card [P71]\", \"42b4fb4a-2866-43b2-9bf7-6c6669c2e5d3\": \"Google Titan Security Key v2\", \"454e5346-4944-4ffd-6c93-8e9267193e9a\": \"Ensurity ThinC\", \"4b3f8944-d4f2-4d21-bb19-764a986ec160\": \"KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator\", \"4c0cf95d-2f40-43b5-ba42-4c83a11c04ba\": \"Feitian BioPass FIDO2 Pro Authenticator\", \"4c50ff10-1057-4fc6-b8ed-43a529530c3c\": \"ImproveID Authenticator\", \"4d41190c-7beb-4a84-8018-adf265a6352d\": \"Thales IDPrime FIDO Bio\", \"4e768f2c-5fab-48b3-b300-220eb487752b\": \"Hideez Key 4 FIDO2 SDK\", \"504d7149-4e4c-3841-4555-55445a677357\": \"WiSECURE AuthTron USB FIDO2 Authenticator\", \"50a45b0c-80e7-f944-bf29-f552bfa2e048\": \"ACS FIDO Authenticator\", \"516d3969-5a57-5651-5958-4e7a49434167\": \"SmartDisplayer BobeePass FIDO2 Authenticator\", \"531126d6-e717-415c-9320-3d9aa6981239\": \"Dashlane\", \"53414d53-554e-4700-0000-000000000000\": \"Samsung Pass\", \"5343502d-5343-5343-6172-644649444f32\": \"ESS Smart Card Inc. Authenticator\", \"54d9fee8-e621-4291-8b18-7157b99c5bec\": \"HID Crescendo Enabled\", \"5626bed4-e756-430b-a7ff-ca78c8b12738\": \"VALMIDO PRO FIDO\", \"58b44d0b-0a7c-f33a-fd48-f7153c871352\": \"Ledger Nano S Plus FIDO2 Authenticator\", \"5ca1ab1e-1337-fa57-f1d0-a117e71ca702\": \"Allthenticator App: roaming BLE FIDO2 Allthenticator for Windows, Mac, Linux, and Allthenticate door readers\", \"5d629218-d3a5-11ed-afa1-0242ac120002\": \"Swissbit iShield Key Pro\", \"5fdb81b8-53f0-4967-a881-f5ec26fe4d18\": \"VinCSS FIDO2 Authenticator\", \"6002f033-3c07-ce3e-d0f7-0ffe5ed42543\": \"Excelsecu eSecu FIDO2 Fingerprint Key\", \"6028b017-b1d4-4c02-b4b3-afcdafc96bb2\": \"Windows Hello\", \"61250591-b2bc-4456-b719-0b17be90bb30\": \"eWBM eFPA FIDO2 Authenticator\", \"664d9f67-84a2-412a-9ff7-b4f7d8ee6d05\": \"OpenSK authenticator\", \"66a0ccb3-bd6a-191f-ee06-e375c50b9846\": \"Thales Bio iOS SDK\", \"692db549-7ae5-44d5-a1e5-dd20a493b723\": \"HID Crescendo Key\", \"69700f79-d1fb-472e-bd9b-a3a3b9a9eda0\": \"Pone Biometrics OFFPAD Authenticator\", \"6d44ba9b-f6ec-2e49-b930-0c8fe920cb73\": \"Security Key by Yubico with NFC\", \"73402251-f2a8-4f03-873e-3cb6db604b03\": \"uTrust FIDO2 Security Key\", \"73bb0cd4-e502-49b8-9c6f-b59445bf720b\": \"YubiKey 5 FIPS Series\", \"74820b05-a6c9-40f9-8fb0-9f86aca93998\": \"SafeNet eToken Fusion\", \"77010bd7-212a-4fc9-b236-d2ca5e9d4084\": \"Feitian BioPass FIDO2 Authenticator\", \"771b48fd-d3d4-4f74-9232-fc157ab0507a\": \"Edge on Mac\", \"7e3f3d30-3557-4442-bdae-139312178b39\": \"RSA DS100\", \"820d89ed-d65a-409e-85cb-f73f0578f82a\": \"IDmelon iOS Authenticator\", \"833b721a-ff5f-4d00-bb2e-bdda3ec01e29\": \"Feitian ePass FIDO2 Authenticator\", \"83c47309-aabb-4108-8470-8be838b573cb\": \"YubiKey Bio Series (Enterprise Profile)\", \"85203421-48f9-4355-9bc8-8a53846e5083\": \"YubiKey 5 FIPS Series with Lightning\", \"87dbc5a1-4c94-4dc8-8a47-97d800fd1f3c\": \"eWBM eFA320 FIDO2 Authenticator\", \"8836336a-f590-0921-301d-46427531eee6\": \"Thales Bio Android SDK\", \"8876631b-d4a0-427f-5773-0ec71c9e0279\": \"Solo Secp256R1 FIDO2 CTAP2 Authenticator\", \"88bbd2f0-342a-42e7-9729-dd158be5407a\": \"Precision InnaIT Key FIDO 2 Level 2 certified\", \"8976631b-d4a0-427f-5773-0ec71c9e0279\": \"Solo Tap Secp256R1 FIDO2 CTAP2 Authenticator\", \"89b19028-256b-4025-8872-255358d950e4\": \"Sentry Enterprises CTAP2 Authenticator\", \"8c97a730-3f7b-41a6-87d6-1e9b62bda6f0\": \"FT-JCOS FIDO Fingerprint Card\", \"8d1b1fcb-3c76-49a9-9129-5515b346aa02\": \"IDEMIA ID-ONE Card\", \"91ad6b93-264b-4987-8737-3a690cad6917\": \"Token Ring FIDO2 Authenticator\", \"931327dd-c89b-406c-a81e-ed7058ef36c6\": \"Swissbit iShield Key FIDO2\", \"95442b2e-f15e-4def-b270-efb106facb4e\": \"eWBM eFA310 FIDO2 Authenticator\", \"95e4d58c-056e-4a65-866d-f5a69659e880\": \"TruU Windows Authenticator\", \"973446ca-e21c-9a9b-99f5-9b985a67af0f\": \"ACS FIDO Authenticator Card\", \"9876631b-d4a0-427f-5773-0ec71c9e0279\": \"Somu Secp256R1 FIDO2 CTAP2 Authenticator\", \"998f358b-2dd2-4cbe-a43a-e8107438dfb3\": \"OnlyKey Secp256R1 FIDO2 CTAP2 Authenticator\", \"99bf4610-ec26-4252-b31f-7380ccd59db5\": \"ZTPass Card\", \"9c835346-796b-4c27-8898-d6032f515cc5\": \"Cryptnox FIDO2\", \"9d3df6ba-282f-11ed-a261-0242ac120002\": \"Arculus FIDO2/U2F Key Card\", \"9ddd1817-af5a-4672-a2b9-3e3dd95000a9\": \"Windows Hello\", \"9f0d8150-baa5-4c00-9299-ad62c8bb4e87\": \"GoTrust Idem Card FIDO2 Authenticator\", \"9f77e279-a6e2-4d58-b700-31e5943c6a98\": \"Hyper FIDO Pro\", \"a1f52be5-dfab-4364-b51c-2bd496b14a56\": \"OCTATCO EzFinger2 FIDO2 AUTHENTICATOR\", \"a3975549-b191-fd67-b8fb-017e2917fdb3\": \"Excelsecu eSecu FIDO2 NFC Security Key\", \"a4e9fc6d-4cbe-4758-b8ba-37598bb5bbaa\": \"Security Key NFC by Yubico\", \"ab32f0c6-2239-afbb-c470-d2ef4e254db6\": \"TEST (DUMMY RECORD)\", \"ab32f0c6-2239-afbb-c470-d2ef4e254db7\": \"TOKEN2 FIDO2 Security Key\", \"adce0002-35bc-c60a-648b-0b25f1f05503\": \"Chrome on Mac\", \"aeb6569c-f8fb-4950-ac60-24ca2bbe2e52\": \"HID Crescendo C2300\", \"b267239b-954f-4041-a01b-ee4f33c145b6\": \"authenton1 - CTAP2.1\", \"b50d5e0a-7f81-4959-9b12-f45407407503\": \"IDPrime 3940 FIDO\", \"b5397666-4885-aa6b-cebf-e52262a439a2\": \"Chromium Browser\", \"b6ede29c-3772-412c-8a78-539c1f4c62d2\": \"Feitian BioPass FIDO2 Plus Authenticator\", \"b84e4048-15dc-4dd0-8640-f4f60813c8af\": \"NordPass\", \"b92c3f9a-c014-4056-887f-140a2501163b\": \"Security Key by Yubico\", \"b93fd961-f2e6-462f-b122-82002247de78\": \"Android Authenticator with SafetyNet Attestation\", \"ba76a271-6eb6-4171-874d-b6428dbe3437\": \"ATKey.ProS\", \"ba86dc56-635f-4141-aef6-00227b1b9af6\": \"TruU Windows Authenticator\", \"bada5566-a7aa-401f-bd96-45619a55120d\": \"1Password\", \"bbf4b6a7-679d-f6fc-c4f2-8ac0ddf9015a\": \"Excelsecu eSecu FIDO2 PRO Security Key\", \"bc2fe499-0d8e-4ffe-96f3-94a82840cf8c\": \"OCTATCO EzQuant FIDO2 AUTHENTICATOR\", \"be727034-574a-f799-5c76-0929e0430973\": \"Crayonic KeyVault K1 (USB-NFC-BLE FIDO2 Authenticator)\", \"c1f9a0bc-1dd2-404a-b27f-8e29047a43fd\": \"YubiKey 5 FIPS Series with NFC\", \"c5703116-972b-4851-a3e7-ae1259843399\": \"NEOWAVE Badgeo FIDO2\", \"c5ef55ff-ad9a-4b9f-b580-adebafe026d0\": \"YubiKey 5 Series with Lightning\", \"c80dbd9a-533f-4a17-b941-1a2f1c7cedff\": \"HID Crescendo C3000\", \"ca4cff1b-5a81-4404-8194-59aabcf1660b\": \"IDPrime 3930 FIDO\", \"ca87cb70-4c1b-4579-a8e8-4efdd7c007e0\": \"FIDO Alliance TruU Sample FIDO2 Authenticator\", \"cb69481e-8ff7-4039-93ec-0a2729a154a8\": \"YubiKey 5 Series\", \"cd69adb5-3c7a-deb9-3177-6800ea6cb72a\": \"Thales PIN Android SDK\", \"cdbdaea2-c415-5073-50f7-c04e968640b6\": \"Excelsecu eSecu FIDO2 Security Key\", \"cfcb13a2-244f-4b36-9077-82b79d6a7de7\": \"USB/NFC Passcode Authenticator\", \"d384db22-4d50-ebde-2eac-5765cf1e2a44\": \"Excelsecu eSecu FIDO2 Fingerprint Security Key\", \"d41f5a69-b817-4144-a13c-9ebd6d9254d6\": \"ATKey.Card CTAP2.0\", \"d548826e-79b4-db40-a3d8-11116f7e8349\": \"Bitwarden\", \"d61d3b87-3e7c-4aea-9c50-441c371903ad\": \"KeyVault Secp256R1 FIDO2 CTAP2 Authenticator\", \"d7a423ad-3e19-4492-9200-78137dccc136\": \"VivoKey Apex FIDO2\", \"d821a7d4-e97c-4cb6-bd82-4237731fd4be\": \"Hyper FIDO Bio Security Key\", \"d8522d9f-575b-4866-88a9-ba99fa02f35b\": \"YubiKey Bio Series\", \"d91c5288-0ef0-49b7-b8ae-21ca0aa6b3f3\": \"KEY-ID FIDO2 Authenticator\", \"d94a29d9-52dd-4247-9c2d-8b818b610389\": \"VeriMark Guard Fingerprint Key\", \"da1fa263-8b25-42b6-a820-c0036f21ba7f\": \"ATKey.Card NFC\", \"dd4ec289-e01d-41c9-bb89-70fa845d4bf2\": \"iCloud Keychain (Managed)\", \"e1a96183-5016-4f24-b55b-e3ae23614cc6\": \"ATKey.Pro CTAP2.0\", \"e416201b-afeb-41ca-a03d-2281c28322aa\": \"ATKey.Pro CTAP2.1\", \"e86addcd-7711-47e5-b42a-c18257b0bf61\": \"IDCore 3121 Fido\", \"ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4\": \"Google Password Manager\", \"eabb46cc-e241-80bf-ae9e-96fa6d2975cf\": \"TOKEN2 PIN Plus Security Key Series \", \"eb3b131e-59dc-536a-d176-cb7306da10f5\": \"ellipticSecure MIRkey USB Authenticator\", \"ec31b4cc-2acc-4b8e-9c01-bade00ccbe26\": \"KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator\", \"ee041bce-25e5-4cdb-8f86-897fd6418464\": \"Feitian ePass FIDO2-NFC Authenticator\", \"ee882879-721c-4913-9775-3dfcce97072a\": \"YubiKey 5 Series\", \"efb96b10-a9ee-4b6c-a4a9-d32125ccd4a4\": \"Safenet eToken FIDO\", \"f3809540-7f14-49c1-a8b3-8f813b225541\": \"Enpass\", \"f4c63eff-d26c-4248-801c-3736c7eaa93a\": \"FIDO KeyPass S3\", \"f7c558a0-f465-11e8-b568-0800200c9a66\": \"KONAI Secp256R1 FIDO2 Conformance Testing CTAP2 Authenticator\", \"f8a011f3-8c0a-4d15-8006-17111f9edc7d\": \"Security Key by Yubico\", \"fa2b99dc-9e39-4257-8f92-4a30d23c4118\": \"YubiKey 5 Series with NFC\", \"fbefdf68-fe86-0106-213e-4d5fa24cbe2e\": \"Excelsecu eSecu FIDO2 NFC Security Key\", \"fbfc3007-154e-4ecc-8c0b-6e020557d7bd\": \"iCloud Keychain\", \"fcb1bcb4-f370-078c-6993-bc24d0ae3fbe\": \"Ledger Nano X FIDO2 Authenticator\", \"fec067a1-f1d0-4c5e-b4c0-cc3237475461\": \"KX701 SmartToken FIDO\" };\nfunction T(e) {\n  let a = new DataView(e.slice(32, 33)).getUint8(0), t = { rpIdHash: o(e.slice(0, 32)), flags: { userPresent: !!(a & 1), userVerified: !!(a & 4), backupEligibility: !!(a & 8), backupState: !!(a & 16), attestedData: !!(a & 64), extensionsIncluded: !!(a & 128) }, counter: new DataView(e.slice(33, 37)).getUint32(0, false) };\n  if (t.synced = t.flags.backupState, e.byteLength > 37) {\n    let i = Y(e);\n    t = { ...t, aaguid: i, name: h[i] ?? \"Unknown\", icon_light: \"https://webauthn.passwordless.id/authenticators/\" + i + \"-light.png\", icon_dark: \"https://webauthn.passwordless.id/authenticators/\" + i + \"-dark.png\" };\n  }\n  return t;\n}\nfunction Y(e) {\n  return L(e.slice(37, 53));\n}\nfunction L(e) {\n  let a = m(e);\n  return a = a.substring(0, 8) + \"-\" + a.substring(8, 12) + \"-\" + a.substring(12, 16) + \"-\" + a.substring(16, 20) + \"-\" + a.substring(20, 32), a;\n}\nvar W = new TextDecoder(\"utf-8\");\nfunction F(e) {\n  return typeof e == \"string\" && (e = d(e)), JSON.parse(W.decode(e));\n}\nfunction O(e) {\n  return typeof e == \"string\" && (e = d(e)), T(e);\n}\nfunction _(e) {\n  return e;\n}\nfunction P(e) {\n  return { username: e.username, credential: e.credential, client: F(e.clientData), authenticator: O(e.authenticatorData), attestation: e.attestationData ? e.attestationData : null };\n}\nfunction w(e) {\n  return { credentialId: e.credentialId, client: F(e.clientData), authenticator: O(e.authenticatorData), signature: e.signature };\n}\nasync function G(e, a) {\n  if (typeof e == \"function\") {\n    let t = e(a);\n    return t instanceof Promise ? await t : t;\n  }\n  return e === a;\n}\nasync function y(e, a) {\n  return !await G(e, a);\n}\nasync function J(e, a) {\n  let t = P(e);\n  if (t.client.type !== \"webauthn.create\")\n    throw new Error(`Unexpected ClientData type: ${t.client.type}`);\n  if (await y(a.origin, t.client.origin))\n    throw new Error(`Unexpected ClientData origin: ${t.client.origin}`);\n  if (await y(a.challenge, t.client.challenge))\n    throw new Error(`Unexpected ClientData challenge: ${t.client.challenge}`);\n  return t;\n}\nasync function X(e, a, t) {\n  if (e.credentialId !== a.id)\n    throw new Error(`Credential ID mismatch: ${e.credentialId} vs ${a.id}`);\n  if (!await x({ algorithm: a.algorithm, publicKey: a.publicKey, authenticatorData: e.authenticatorData, clientData: e.clientData, signature: e.signature, verbose: t.verbose }))\n    throw new Error(`Invalid signature: ${e.signature}`);\n  let r = w(e);\n  if (t.verbose && console.debug(r), r.client.type !== \"webauthn.get\")\n    throw new Error(`Unexpected clientData type: ${r.client.type}`);\n  if (await y(t.origin, r.client.origin))\n    throw new Error(`Unexpected ClientData origin: ${r.client.origin}`);\n  if (await y(t.challenge, r.client.challenge))\n    throw new Error(`Unexpected ClientData challenge: ${r.client.challenge}`);\n  let c = t.domain ?? new URL(r.client.origin).hostname, n = o(await u(f(c)));\n  if (r.authenticator.rpIdHash !== n)\n    throw new Error(`Unexpected RpIdHash: ${r.authenticator.rpIdHash} vs ${n}`);\n  if (!r.authenticator.flags.userPresent)\n    throw new Error(\"Unexpected authenticator flags: missing userPresent\");\n  if (!r.authenticator.flags.userVerified && t.userVerified)\n    throw new Error(\"Unexpected authenticator flags: missing userVerified\");\n  if (t.counter && r.authenticator.counter <= t.counter)\n    throw new Error(`Unexpected authenticator counter: ${r.authenticator.counter} (should be > ${t.counter})`);\n  return r;\n}\nfunction q(e) {\n  switch (e) {\n    case \"RS256\":\n      return { name: \"RSASSA-PKCS1-v1_5\", hash: \"SHA-256\" };\n    case \"ES256\":\n      return { name: \"ECDSA\", namedCurve: \"P-256\", hash: \"SHA-256\" };\n    default:\n      throw new Error(`Unknown or unsupported crypto algorithm: ${e}. Only 'RS256' and 'ES256' are supported.`);\n  }\n}\nasync function z(e, a) {\n  let t = d(a);\n  return crypto.subtle.importKey(\"spki\", t, e, false, [\"verify\"]);\n}\nasync function x({ algorithm: e, publicKey: a, authenticatorData: t, clientData: i, signature: r, verbose: c }) {\n  let n = q(e), g = await z(n, a);\n  c && console.debug(g);\n  let A = await u(d(i)), B = D(d(t), A);\n  c && (console.debug(\"Crypto Algo: \" + JSON.stringify(n)), console.debug(\"Public key: \" + a), console.debug(\"Data: \" + o(B)), console.debug(\"Signature: \" + r));\n  let p = d(r);\n  return e == \"ES256\" && (p = j(p)), await crypto.subtle.verify(n, g, p, B);\n}\nfunction j(e) {\n  let a = new Uint8Array(e), t = a[4] === 0 ? 5 : 4, i = t + 32, r = a[i + 2] === 0 ? i + 3 : i + 2, c = a.slice(t, i), n = a.slice(r);\n  return new Uint8Array([...c, ...n]);\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/auth/passkeys.js\nvar PasskeyWebClient = class {\n  isAvailable() {\n    return S.isAvailable();\n  }\n  async register(args) {\n    const { name, challenge, rp } = args;\n    const registration = await S.register(name, challenge, {\n      authenticatorType: \"auto\",\n      userVerification: \"required\",\n      domain: rp.id,\n      attestation: true,\n      debug: false\n    });\n    const clientDataB64 = base64UrlToBase64(registration.clientData);\n    const clientDataParsed = JSON.parse(base64ToString(clientDataB64));\n    return {\n      authenticatorData: registration.authenticatorData,\n      credentialId: registration.credential.id,\n      clientData: registration.clientData,\n      credential: {\n        publicKey: registration.credential.publicKey,\n        algorithm: registration.credential.algorithm\n      },\n      origin: clientDataParsed.origin\n    };\n  }\n  async authenticate(args) {\n    const { credentialId, challenge, rp } = args;\n    const result = await S.authenticate(credentialId ? [credentialId] : [], challenge, {\n      authenticatorType: \"auto\",\n      userVerification: \"required\",\n      domain: rp.id\n    });\n    const clientDataB64 = base64UrlToBase64(result.clientData);\n    const clientDataParsed = JSON.parse(base64ToString(clientDataB64));\n    return {\n      authenticatorData: result.authenticatorData,\n      credentialId: result.credentialId,\n      clientData: result.clientData,\n      signature: result.signature,\n      origin: clientDataParsed.origin\n    };\n  }\n};\nasync function hasStoredPasskey(client, ecosystemId) {\n  const storage = new ClientScopedStorage({\n    storage: webLocalStorage,\n    // TODO (passkey) react native variant of this fn\n    clientId: client.clientId,\n    ecosystem: ecosystemId ? { id: ecosystemId } : void 0\n  });\n  const credId = await storage.getPasskeyCredentialId();\n  return !!credId;\n}\n\nexport {\n  PasskeyWebClient,\n  hasStoredPasskey\n};\n//# sourceMappingURL=chunk-XTOEMUZK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-Y3WKETHV.js",
    "content": "import {\n  equalBytes\n} from \"./chunk-SPELR2RL.js\";\n\n// node_modules/ox/_esm/core/version.js\nvar version = \"0.1.1\";\n\n// node_modules/ox/_esm/core/internal/errors.js\nfunction getVersion() {\n  return version;\n}\n\n// node_modules/ox/_esm/core/Errors.js\nvar BaseError = class _BaseError extends Error {\n  constructor(shortMessage, options = {}) {\n    const details = (() => {\n      var _a;\n      if (options.cause instanceof _BaseError) {\n        if (options.cause.details)\n          return options.cause.details;\n        if (options.cause.shortMessage)\n          return options.cause.shortMessage;\n      }\n      if ((_a = options.cause) == null ? void 0 : _a.message)\n        return options.cause.message;\n      return options.details;\n    })();\n    const docsPath = (() => {\n      if (options.cause instanceof _BaseError)\n        return options.cause.docsPath || options.docsPath;\n      return options.docsPath;\n    })();\n    const docsBaseUrl = \"https://oxlib.sh\";\n    const docs = `${docsBaseUrl}${docsPath ?? \"\"}`;\n    const message = [\n      shortMessage || \"An error occurred.\",\n      ...options.metaMessages ? [\"\", ...options.metaMessages] : [],\n      ...details || docsPath ? [\n        \"\",\n        details ? `Details: ${details}` : void 0,\n        docsPath ? `See: ${docs}` : void 0\n      ] : []\n    ].filter((x) => typeof x === \"string\").join(\"\\n\");\n    super(message, options.cause ? { cause: options.cause } : void 0);\n    Object.defineProperty(this, \"details\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"docs\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"docsPath\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"shortMessage\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"cause\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"BaseError\"\n    });\n    Object.defineProperty(this, \"version\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: `ox@${getVersion()}`\n    });\n    this.cause = options.cause;\n    this.details = details;\n    this.docs = docs;\n    this.docsPath = docsPath;\n    this.shortMessage = shortMessage;\n  }\n  walk(fn) {\n    return walk(this, fn);\n  }\n};\nfunction walk(err, fn) {\n  if (fn == null ? void 0 : fn(err))\n    return err;\n  if (err && typeof err === \"object\" && \"cause\" in err && err.cause)\n    return walk(err.cause, fn);\n  return fn ? null : err;\n}\n\n// node_modules/ox/_esm/core/Json.js\nvar bigIntSuffix = \"#__bigint\";\nfunction parse(string, reviver) {\n  return JSON.parse(string, (key, value_) => {\n    const value = value_;\n    if (typeof value === \"string\" && value.endsWith(bigIntSuffix))\n      return BigInt(value.slice(0, -bigIntSuffix.length));\n    return typeof reviver === \"function\" ? reviver(key, value) : value;\n  });\n}\nparse.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction stringify(value, replacer, space) {\n  return JSON.stringify(value, (key, value2) => {\n    if (typeof replacer === \"function\")\n      return replacer(key, value2);\n    if (typeof value2 === \"bigint\")\n      return value2.toString() + bigIntSuffix;\n    return value2;\n  }, space);\n}\nstringify.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\n\n// node_modules/ox/_esm/core/internal/bytes.js\nfunction assertSize(bytes, size_) {\n  if (size(bytes) > size_)\n    throw new SizeOverflowError({\n      givenSize: size(bytes),\n      maxSize: size_\n    });\n}\nfunction assertStartOffset(value, start) {\n  if (typeof start === \"number\" && start > 0 && start > size(value) - 1)\n    throw new SliceOffsetOutOfBoundsError({\n      offset: start,\n      position: \"start\",\n      size: size(value)\n    });\n}\nfunction assertEndOffset(value, start, end) {\n  if (typeof start === \"number\" && typeof end === \"number\" && size(value) !== end - start) {\n    throw new SliceOffsetOutOfBoundsError({\n      offset: end,\n      position: \"end\",\n      size: size(value)\n    });\n  }\n}\nvar charCodeMap = {\n  zero: 48,\n  nine: 57,\n  A: 65,\n  F: 70,\n  a: 97,\n  f: 102\n};\nfunction charCodeToBase16(char) {\n  if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n    return char - charCodeMap.zero;\n  if (char >= charCodeMap.A && char <= charCodeMap.F)\n    return char - (charCodeMap.A - 10);\n  if (char >= charCodeMap.a && char <= charCodeMap.f)\n    return char - (charCodeMap.a - 10);\n  return void 0;\n}\nfunction pad(bytes, options = {}) {\n  const { dir, size: size3 = 32 } = options;\n  if (size3 === 0)\n    return bytes;\n  if (bytes.length > size3)\n    throw new SizeExceedsPaddingSizeError({\n      size: bytes.length,\n      targetSize: size3,\n      type: \"Bytes\"\n    });\n  const paddedBytes = new Uint8Array(size3);\n  for (let i = 0; i < size3; i++) {\n    const padEnd = dir === \"right\";\n    paddedBytes[padEnd ? i : size3 - i - 1] = bytes[padEnd ? i : bytes.length - i - 1];\n  }\n  return paddedBytes;\n}\nfunction trim(value, options = {}) {\n  const { dir = \"left\" } = options;\n  let data = value;\n  let sliceLength = 0;\n  for (let i = 0; i < data.length - 1; i++) {\n    if (data[dir === \"left\" ? i : data.length - i - 1].toString() === \"0\")\n      sliceLength++;\n    else\n      break;\n  }\n  data = dir === \"left\" ? data.slice(sliceLength) : data.slice(0, data.length - sliceLength);\n  return data;\n}\n\n// node_modules/ox/_esm/core/internal/hex.js\nfunction assertSize2(hex, size_) {\n  if (size2(hex) > size_)\n    throw new SizeOverflowError2({\n      givenSize: size2(hex),\n      maxSize: size_\n    });\n}\nfunction assertStartOffset2(value, start) {\n  if (typeof start === \"number\" && start > 0 && start > size2(value) - 1)\n    throw new SliceOffsetOutOfBoundsError2({\n      offset: start,\n      position: \"start\",\n      size: size2(value)\n    });\n}\nfunction assertEndOffset2(value, start, end) {\n  if (typeof start === \"number\" && typeof end === \"number\" && size2(value) !== end - start) {\n    throw new SliceOffsetOutOfBoundsError2({\n      offset: end,\n      position: \"end\",\n      size: size2(value)\n    });\n  }\n}\nfunction pad2(hex_, options = {}) {\n  const { dir, size: size3 = 32 } = options;\n  if (size3 === 0)\n    return hex_;\n  const hex = hex_.replace(\"0x\", \"\");\n  if (hex.length > size3 * 2)\n    throw new SizeExceedsPaddingSizeError2({\n      size: Math.ceil(hex.length / 2),\n      targetSize: size3,\n      type: \"Hex\"\n    });\n  return `0x${hex[dir === \"right\" ? \"padEnd\" : \"padStart\"](size3 * 2, \"0\")}`;\n}\nfunction trim2(value, options = {}) {\n  const { dir = \"left\" } = options;\n  let data = value.replace(\"0x\", \"\");\n  let sliceLength = 0;\n  for (let i = 0; i < data.length - 1; i++) {\n    if (data[dir === \"left\" ? i : data.length - i - 1].toString() === \"0\")\n      sliceLength++;\n    else\n      break;\n  }\n  data = dir === \"left\" ? data.slice(sliceLength) : data.slice(0, data.length - sliceLength);\n  if (data.length === 1 && dir === \"right\")\n    data = `${data}0`;\n  return `0x${data.length % 2 === 1 ? `0${data}` : data}`;\n}\n\n// node_modules/ox/_esm/core/Bytes.js\nvar decoder = new TextDecoder();\nvar encoder = new TextEncoder();\nfunction assert(value) {\n  if (value instanceof Uint8Array)\n    return;\n  if (!value)\n    throw new InvalidBytesTypeError(value);\n  if (typeof value !== \"object\")\n    throw new InvalidBytesTypeError(value);\n  if (!(\"BYTES_PER_ELEMENT\" in value))\n    throw new InvalidBytesTypeError(value);\n  if (value.BYTES_PER_ELEMENT !== 1 || value.constructor.name !== \"Uint8Array\")\n    throw new InvalidBytesTypeError(value);\n}\nassert.parseError = (error) => error;\nfunction concat(...values) {\n  let length = 0;\n  for (const arr of values) {\n    length += arr.length;\n  }\n  const result = new Uint8Array(length);\n  for (let i = 0, index = 0; i < values.length; i++) {\n    const arr = values[i];\n    result.set(arr, index);\n    index += arr.length;\n  }\n  return result;\n}\nconcat.parseError = (error) => error;\nfunction from(value) {\n  if (value instanceof Uint8Array)\n    return value;\n  if (typeof value === \"string\")\n    return fromHex(value);\n  return fromArray(value);\n}\nfrom.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction fromArray(value) {\n  return value instanceof Uint8Array ? value : new Uint8Array(value);\n}\nfromArray.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction fromBoolean(value, options = {}) {\n  const { size: size3 } = options;\n  const bytes = new Uint8Array(1);\n  bytes[0] = Number(value);\n  if (typeof size3 === \"number\") {\n    assertSize(bytes, size3);\n    return padLeft(bytes, size3);\n  }\n  return bytes;\n}\nfromBoolean.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction fromHex(value, options = {}) {\n  const { size: size3 } = options;\n  let hex = value;\n  if (size3) {\n    assertSize2(value, size3);\n    hex = padRight(value, size3);\n  }\n  let hexString = hex.slice(2);\n  if (hexString.length % 2)\n    hexString = `0${hexString}`;\n  const length = hexString.length / 2;\n  const bytes = new Uint8Array(length);\n  for (let index = 0, j = 0; index < length; index++) {\n    const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++));\n    const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++));\n    if (nibbleLeft === void 0 || nibbleRight === void 0) {\n      throw new BaseError(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n    }\n    bytes[index] = nibbleLeft * 16 + nibbleRight;\n  }\n  return bytes;\n}\nfromHex.parseError = (error) => error;\nfunction fromNumber2(value, options) {\n  const hex = fromNumber(value, options);\n  return fromHex(hex);\n}\nfromNumber2.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction fromString(value, options = {}) {\n  const { size: size3 } = options;\n  const bytes = encoder.encode(value);\n  if (typeof size3 === \"number\") {\n    assertSize(bytes, size3);\n    return padRight2(bytes, size3);\n  }\n  return bytes;\n}\nfromString.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction isEqual(bytesA, bytesB) {\n  return equalBytes(bytesA, bytesB);\n}\nisEqual.parseError = (error) => error;\nfunction padLeft(value, size3) {\n  return pad(value, { dir: \"left\", size: size3 });\n}\npadLeft.parseError = (error) => error;\nfunction padRight2(value, size3) {\n  return pad(value, { dir: \"right\", size: size3 });\n}\npadRight2.parseError = (error) => error;\nfunction random(length) {\n  return crypto.getRandomValues(new Uint8Array(length));\n}\nrandom.parseError = (error) => error;\nfunction size(value) {\n  return value.length;\n}\nsize.parseError = (error) => error;\nfunction slice(value, start, end, options = {}) {\n  const { strict } = options;\n  assertStartOffset(value, start);\n  const value_ = value.slice(start, end);\n  if (strict)\n    assertEndOffset(value_, start, end);\n  return value_;\n}\nslice.parseError = (error) => error;\nfunction toBigInt2(bytes, options = {}) {\n  const { size: size3 } = options;\n  if (typeof size3 !== \"undefined\")\n    assertSize(bytes, size3);\n  const hex = fromBytes(bytes, options);\n  return toBigInt(hex, options);\n}\ntoBigInt2.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction toBoolean(bytes, options = {}) {\n  const { size: size3 } = options;\n  let bytes_ = bytes;\n  if (typeof size3 !== \"undefined\") {\n    assertSize(bytes_, size3);\n    bytes_ = trimLeft(bytes_);\n  }\n  if (bytes_.length > 1 || bytes_[0] > 1)\n    throw new InvalidBytesBooleanError(bytes_);\n  return Boolean(bytes_[0]);\n}\ntoBoolean.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction toHex(value, options = {}) {\n  return fromBytes(value, options);\n}\ntoHex.parseError = (error) => error;\nfunction toNumber2(bytes, options = {}) {\n  const { size: size3 } = options;\n  if (typeof size3 !== \"undefined\")\n    assertSize(bytes, size3);\n  const hex = fromBytes(bytes, options);\n  return toNumber(hex, options);\n}\ntoNumber2.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction toString(bytes, options = {}) {\n  const { size: size3 } = options;\n  let bytes_ = bytes;\n  if (typeof size3 !== \"undefined\") {\n    assertSize(bytes_, size3);\n    bytes_ = trimRight(bytes_);\n  }\n  return decoder.decode(bytes_);\n}\ntoString.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction trimLeft(value) {\n  return trim(value, { dir: \"left\" });\n}\ntrimLeft.parseError = (error) => error;\nfunction trimRight(value) {\n  return trim(value, { dir: \"right\" });\n}\ntrimRight.parseError = (error) => error;\nfunction validate(value) {\n  try {\n    assert(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\nvalidate.parseError = (error) => error;\nvar InvalidBytesBooleanError = class extends BaseError {\n  constructor(bytes) {\n    super(`Bytes value \\`${bytes}\\` is not a valid boolean.`, {\n      metaMessages: [\n        \"The bytes array must contain a single byte of either a `0` or `1` value.\"\n      ]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Bytes.InvalidBytesBooleanError\"\n    });\n  }\n};\nvar InvalidBytesTypeError = class extends BaseError {\n  constructor(value) {\n    super(`Value \\`${typeof value === \"object\" ? stringify(value) : value}\\` of type \\`${typeof value}\\` is an invalid Bytes value.`, {\n      metaMessages: [\"Bytes values must be of type `Bytes`.\"]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Bytes.InvalidBytesTypeError\"\n    });\n  }\n};\nvar SizeOverflowError = class extends BaseError {\n  constructor({ givenSize, maxSize }) {\n    super(`Size cannot exceed \\`${maxSize}\\` bytes. Given size: \\`${givenSize}\\` bytes.`);\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Bytes.SizeOverflowError\"\n    });\n  }\n};\nvar SliceOffsetOutOfBoundsError = class extends BaseError {\n  constructor({ offset, position, size: size3 }) {\n    super(`Slice ${position === \"start\" ? \"starting\" : \"ending\"} at offset \\`${offset}\\` is out-of-bounds (size: \\`${size3}\\`).`);\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Bytes.SliceOffsetOutOfBoundsError\"\n    });\n  }\n};\nvar SizeExceedsPaddingSizeError = class extends BaseError {\n  constructor({ size: size3, targetSize, type }) {\n    super(`${type.charAt(0).toUpperCase()}${type.slice(1).toLowerCase()} size (\\`${size3}\\`) exceeds padding size (\\`${targetSize}\\`).`);\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Bytes.SizeExceedsPaddingSizeError\"\n    });\n  }\n};\n\n// node_modules/ox/_esm/core/Hex.js\nvar encoder2 = new TextEncoder();\nvar hexes = Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, \"0\"));\nfunction assert2(value, options = {}) {\n  const { strict = false } = options;\n  if (!value)\n    throw new InvalidHexTypeError(value);\n  if (typeof value !== \"string\")\n    throw new InvalidHexTypeError(value);\n  if (strict) {\n    if (!/^0x[0-9a-fA-F]*$/.test(value))\n      throw new InvalidHexValueError(value);\n  }\n  if (!value.startsWith(\"0x\"))\n    throw new InvalidHexValueError(value);\n}\nassert2.parseError = (error) => error;\nfunction concat2(...values) {\n  return `0x${values.reduce((acc, x) => acc + x.replace(\"0x\", \"\"), \"\")}`;\n}\nconcat2.parseError = (error) => error;\nfunction from2(value) {\n  if (value instanceof Uint8Array)\n    return fromBytes(value);\n  if (Array.isArray(value))\n    return fromBytes(new Uint8Array(value));\n  return value;\n}\nfrom2.parseError = (error) => error;\nfunction fromBoolean2(value, options = {}) {\n  const hex = `0x${Number(value)}`;\n  if (typeof options.size === \"number\") {\n    assertSize2(hex, options.size);\n    return padLeft2(hex, options.size);\n  }\n  return hex;\n}\nfromBoolean2.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction fromBytes(value, options = {}) {\n  let string = \"\";\n  for (let i = 0; i < value.length; i++)\n    string += hexes[value[i]];\n  const hex = `0x${string}`;\n  if (typeof options.size === \"number\") {\n    assertSize2(hex, options.size);\n    return padRight(hex, options.size);\n  }\n  return hex;\n}\nfromBytes.parseError = (error) => error;\nfunction fromNumber(value, options = {}) {\n  const { signed, size: size3 } = options;\n  const value_ = BigInt(value);\n  let maxValue;\n  if (size3) {\n    if (signed)\n      maxValue = (1n << BigInt(size3) * 8n - 1n) - 1n;\n    else\n      maxValue = 2n ** (BigInt(size3) * 8n) - 1n;\n  } else if (typeof value === \"number\") {\n    maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n  }\n  const minValue = typeof maxValue === \"bigint\" && signed ? -maxValue - 1n : 0;\n  if (maxValue && value_ > maxValue || value_ < minValue) {\n    const suffix = typeof value === \"bigint\" ? \"n\" : \"\";\n    throw new IntegerOutOfRangeError({\n      max: maxValue ? `${maxValue}${suffix}` : void 0,\n      min: `${minValue}${suffix}`,\n      signed,\n      size: size3,\n      value: `${value}${suffix}`\n    });\n  }\n  const stringValue = (signed && value_ < 0 ? (1n << BigInt(size3 * 8)) + BigInt(value_) : value_).toString(16);\n  const hex = `0x${stringValue}`;\n  if (size3)\n    return padLeft2(hex, size3);\n  return hex;\n}\nfromNumber.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction fromString2(value, options = {}) {\n  return fromBytes(encoder2.encode(value), options);\n}\nfromString2.parseError = (error) => (\n  /* v8 ignore next */\n  error\n);\nfunction isEqual2(hexA, hexB) {\n  return equalBytes(fromHex(hexA), fromHex(hexB));\n}\nisEqual2.parseError = (error) => error;\nfunction padLeft2(value, size3) {\n  return pad2(value, { dir: \"left\", size: size3 });\n}\npadLeft2.parseError = (error) => error;\nfunction padRight(value, size3) {\n  return pad2(value, { dir: \"right\", size: size3 });\n}\npadRight.parseError = (error) => error;\nfunction random2(length) {\n  return fromBytes(random(length));\n}\nrandom2.parseError = (error) => error;\nfunction slice2(value, start, end, options = {}) {\n  const { strict } = options;\n  assertStartOffset2(value, start);\n  const value_ = `0x${value.replace(\"0x\", \"\").slice((start ?? 0) * 2, (end ?? value.length) * 2)}`;\n  if (strict)\n    assertEndOffset2(value_, start, end);\n  return value_;\n}\nslice2.parseError = (error) => error;\nfunction size2(value) {\n  return Math.ceil((value.length - 2) / 2);\n}\nsize2.parseError = (error) => error;\nfunction trimLeft2(value) {\n  return trim2(value, { dir: \"left\" });\n}\ntrimLeft2.parseError = (error) => error;\nfunction trimRight2(value) {\n  return trim2(value, { dir: \"right\" });\n}\ntrimRight2.parseError = (error) => error;\nfunction toBigInt(hex, options = {}) {\n  const { signed } = options;\n  if (options.size)\n    assertSize2(hex, options.size);\n  const value = BigInt(hex);\n  if (!signed)\n    return value;\n  const size3 = (hex.length - 2) / 2;\n  const max_unsigned = (1n << BigInt(size3) * 8n) - 1n;\n  const max_signed = max_unsigned >> 1n;\n  if (value <= max_signed)\n    return value;\n  return value - max_unsigned - 1n;\n}\ntoBigInt.parseError = (error) => error;\nfunction toBoolean2(hex, options = {}) {\n  let hex_ = hex;\n  if (options.size) {\n    assertSize2(hex, options.size);\n    hex_ = trimLeft2(hex_);\n  }\n  if (trimLeft2(hex_) === \"0x00\")\n    return false;\n  if (trimLeft2(hex_) === \"0x01\")\n    return true;\n  throw new InvalidHexBooleanError(hex_);\n}\ntoBoolean2.parseError = (error) => error;\nfunction toBytes(hex, options = {}) {\n  return fromHex(hex, options);\n}\ntoBytes.parseError = (error) => error;\nfunction toNumber(hex, options = {}) {\n  const { signed, size: size3 } = options;\n  if (!signed && !size3)\n    return Number(hex);\n  return Number(toBigInt(hex, options));\n}\ntoNumber.parseError = (error) => error;\nfunction toString2(hex, options = {}) {\n  const { size: size3 } = options;\n  let bytes = fromHex(hex);\n  if (size3) {\n    assertSize(bytes, size3);\n    bytes = trimRight(bytes);\n  }\n  return new TextDecoder().decode(bytes);\n}\ntoString2.parseError = (error) => error;\nfunction validate2(value, options = {}) {\n  const { strict = false } = options;\n  try {\n    assert2(value, { strict });\n    return true;\n  } catch {\n    return false;\n  }\n}\nvalidate2.parseError = (error) => error;\nvar IntegerOutOfRangeError = class extends BaseError {\n  constructor({ max, min, signed, size: size3, value }) {\n    super(`Number \\`${value}\\` is not in safe${size3 ? ` ${size3 * 8}-bit` : \"\"}${signed ? \" signed\" : \" unsigned\"} integer range ${max ? `(\\`${min}\\` to \\`${max}\\`)` : `(above \\`${min}\\`)`}`);\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Hex.IntegerOutOfRangeError\"\n    });\n  }\n};\nvar InvalidHexBooleanError = class extends BaseError {\n  constructor(hex) {\n    super(`Hex value \\`\"${hex}\"\\` is not a valid boolean.`, {\n      metaMessages: [\n        'The hex value must be `\"0x0\"` (false) or `\"0x1\"` (true).'\n      ]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Hex.InvalidHexBooleanError\"\n    });\n  }\n};\nvar InvalidHexTypeError = class extends BaseError {\n  constructor(value) {\n    super(`Value \\`${typeof value === \"object\" ? stringify(value) : value}\\` of type \\`${typeof value}\\` is an invalid hex type.`, {\n      metaMessages: ['Hex types must be represented as `\"0x${string}\"`.']\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Hex.InvalidHexTypeError\"\n    });\n  }\n};\nvar InvalidHexValueError = class extends BaseError {\n  constructor(value) {\n    super(`Value \\`${value}\\` is an invalid hex value.`, {\n      metaMessages: [\n        'Hex values must start with `\"0x\"` and contain only hexadecimal characters (0-9, a-f, A-F).'\n      ]\n    });\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Hex.InvalidHexValueError\"\n    });\n  }\n};\nvar SizeOverflowError2 = class extends BaseError {\n  constructor({ givenSize, maxSize }) {\n    super(`Size cannot exceed \\`${maxSize}\\` bytes. Given size: \\`${givenSize}\\` bytes.`);\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Hex.SizeOverflowError\"\n    });\n  }\n};\nvar SliceOffsetOutOfBoundsError2 = class extends BaseError {\n  constructor({ offset, position, size: size3 }) {\n    super(`Slice ${position === \"start\" ? \"starting\" : \"ending\"} at offset \\`${offset}\\` is out-of-bounds (size: \\`${size3}\\`).`);\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Hex.SliceOffsetOutOfBoundsError\"\n    });\n  }\n};\nvar SizeExceedsPaddingSizeError2 = class extends BaseError {\n  constructor({ size: size3, targetSize, type }) {\n    super(`${type.charAt(0).toUpperCase()}${type.slice(1).toLowerCase()} size (\\`${size3}\\`) exceeds padding size (\\`${targetSize}\\`).`);\n    Object.defineProperty(this, \"name\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: \"Hex.SizeExceedsPaddingSizeError\"\n    });\n  }\n};\n\nexport {\n  concat2 as concat,\n  fromBoolean2 as fromBoolean,\n  fromBytes,\n  fromNumber,\n  fromString2 as fromString,\n  padLeft2 as padLeft,\n  padRight,\n  toBigInt,\n  toBoolean2 as toBoolean,\n  toBytes,\n  toNumber,\n  toString2 as toString,\n  validate2 as validate,\n  fromBoolean as fromBoolean2,\n  fromHex,\n  fromNumber2,\n  fromString as fromString2,\n  toBigInt2,\n  toBoolean as toBoolean2,\n  toNumber2,\n  toString as toString2\n};\n//# sourceMappingURL=chunk-Y3WKETHV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-YG7T4W43.js",
    "content": "import {\n  Ps\n} from \"./chunk-EHYTL2NA.js\";\nimport {\n  DEFAULT_PROJECT_ID\n} from \"./chunk-XB34LHR5.js\";\nimport {\n  getDefaultAppMetadata\n} from \"./chunk-G26WKBGM.js\";\nimport {\n  ClientScopedStorage\n} from \"./chunk-CYVKJMZE.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/session-store.js\nvar walletConnectSessions;\nasync function getSessions() {\n  if (!walletConnectSessions) {\n    return [];\n  }\n  const stringifiedSessions = await walletConnectSessions.getWalletConnectSessions();\n  return JSON.parse(stringifiedSessions ?? \"[]\");\n}\nfunction initializeSessionStore(options) {\n  if (!walletConnectSessions) {\n    walletConnectSessions = new ClientScopedStorage({\n      storage: null,\n      // TODO: inject storage\n      clientId: options.clientId\n    });\n  }\n}\nasync function saveSession(session) {\n  if (!walletConnectSessions) {\n    return;\n  }\n  const stringifiedSessions = await walletConnectSessions.getWalletConnectSessions();\n  const sessions = JSON.parse(stringifiedSessions ?? \"[]\");\n  sessions.push(session);\n  await walletConnectSessions.saveWalletConnectSessions(stringify(sessions));\n}\nasync function removeSession(session) {\n  if (!walletConnectSessions) {\n    return;\n  }\n  const stringifiedSessions = await walletConnectSessions.getWalletConnectSessions();\n  const sessions = JSON.parse(stringifiedSessions ?? \"[]\");\n  const newSessions = sessions.filter((s) => s.topic !== session.topic);\n  await walletConnectSessions.saveWalletConnectSessions(stringify(newSessions));\n}\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/index.js\nvar walletConnectClientCache = /* @__PURE__ */ new WeakMap();\nasync function createWalletConnectClient(options) {\n  var _a, _b, _c, _d;\n  const { wallet, requestHandlers, chains, onConnect, onDisconnect, client: thirdwebClient } = options;\n  if (walletConnectClientCache.has(thirdwebClient)) {\n    return walletConnectClientCache.get(thirdwebClient);\n  }\n  initializeSessionStore({ clientId: options.client.clientId });\n  const defaults = getDefaultAppMetadata();\n  const walletConnectClient = await Ps.init({\n    projectId: options.projectId ?? DEFAULT_PROJECT_ID,\n    metadata: {\n      name: ((_a = options.appMetadata) == null ? void 0 : _a.name) ?? defaults.name,\n      url: ((_b = options.appMetadata) == null ? void 0 : _b.url) ?? defaults.url,\n      description: ((_c = options.appMetadata) == null ? void 0 : _c.description) ?? defaults.description,\n      icons: [((_d = options.appMetadata) == null ? void 0 : _d.logoUrl) ?? defaults.logoUrl]\n    }\n  });\n  walletConnectClient.on(\"session_proposal\", async (event) => {\n    const { onSessionProposal } = await import(\"./session-proposal-FKZO7EJB.js\");\n    await onSessionProposal({\n      wallet,\n      walletConnectClient,\n      event,\n      chains,\n      onConnect\n    }).catch((error) => {\n      if (options.onError) {\n        options.onError(error);\n      } else {\n        throw error;\n      }\n    });\n  });\n  walletConnectClient.on(\"session_request\", async (event) => {\n    const { fulfillRequest } = await import(\"./session-request-E5B34J42.js\");\n    await fulfillRequest({\n      wallet,\n      walletConnectClient,\n      event,\n      handlers: requestHandlers,\n      thirdwebClient\n    }).catch((error) => {\n      if (options.onError) {\n        options.onError(error);\n      } else {\n        throw error;\n      }\n    });\n  });\n  walletConnectClient.on(\"session_event\", async (_event) => {\n  });\n  walletConnectClient.on(\"session_ping\", (_event) => {\n  });\n  walletConnectClient.on(\"session_delete\", async (event) => {\n    await disconnectWalletConnectSession({\n      session: { topic: event.topic },\n      walletConnectClient\n    }).catch((error) => {\n      if (options.onError) {\n        options.onError(error);\n      } else {\n        throw error;\n      }\n    });\n  });\n  const _disconnect = walletConnectClient.disconnect;\n  walletConnectClient.disconnect = async (args) => {\n    const result = await _disconnect(args).catch(() => {\n    });\n    if (onDisconnect) {\n      disconnectHook({ topic: args.topic, onDisconnect });\n    }\n    return result;\n  };\n  walletConnectClientCache.set(options.client, walletConnectClient);\n  return walletConnectClient;\n}\nfunction createWalletConnectSession(options) {\n  const { uri, walletConnectClient } = options;\n  walletConnectClient.core.pairing.pair({ uri });\n}\nasync function getActiveWalletConnectSessions() {\n  return getSessions();\n}\nasync function disconnectWalletConnectSession(options) {\n  removeSession(options.session);\n  try {\n    await options.walletConnectClient.disconnect({\n      topic: options.session.topic,\n      reason: {\n        code: 6e3,\n        message: \"Disconnected\"\n      }\n    });\n  } catch {\n  }\n}\nasync function disconnectHook(options) {\n  const { topic, onDisconnect } = options;\n  const sessions = await getSessions();\n  onDisconnect(sessions.find((s) => s.topic === topic) ?? {\n    topic\n  });\n}\n\nexport {\n  getSessions,\n  saveSession,\n  createWalletConnectClient,\n  createWalletConnectSession,\n  getActiveWalletConnectSessions,\n  disconnectWalletConnectSession\n};\n//# sourceMappingURL=chunk-YG7T4W43.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-YGRUPXVB.js",
    "content": "import {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\n\n// node_modules/thirdweb/dist/esm/utils/storage/walletStorage.js\nvar CONNECT_PARAMS_MAP_KEY = \"tw:connected-wallet-params\";\nasync function saveConnectParamsToStorage(storage, walletId, params) {\n  if (!isStringifiable(params)) {\n    throw new Error(\"given params are not stringifiable\");\n  }\n  const currentValueStr = await storage.getItem(CONNECT_PARAMS_MAP_KEY);\n  let value;\n  if (currentValueStr) {\n    try {\n      value = JSON.parse(currentValueStr);\n    } catch {\n      value = {};\n    }\n    value[walletId] = params;\n  } else {\n    value = {\n      [walletId]: params\n    };\n  }\n  storage.setItem(CONNECT_PARAMS_MAP_KEY, stringify(value));\n}\nasync function deleteConnectParamsFromStorage(storage, walletId) {\n  const currentValueStr = await storage.getItem(CONNECT_PARAMS_MAP_KEY);\n  let value;\n  if (currentValueStr) {\n    try {\n      value = JSON.parse(currentValueStr);\n    } catch {\n      value = {};\n    }\n    delete value[walletId];\n    storage.setItem(CONNECT_PARAMS_MAP_KEY, stringify(value));\n  }\n}\nasync function getSavedConnectParamsFromStorage(storage, walletId) {\n  const valueStr = await storage.getItem(CONNECT_PARAMS_MAP_KEY);\n  if (!valueStr) {\n    return null;\n  }\n  try {\n    const value = JSON.parse(valueStr);\n    if (value == null ? void 0 : value[walletId]) {\n      return value[walletId];\n    }\n    return null;\n  } catch {\n    return null;\n  }\n}\nfunction isStringifiable(value) {\n  try {\n    stringify(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport {\n  saveConnectParamsToStorage,\n  deleteConnectParamsFromStorage,\n  getSavedConnectParamsFromStorage\n};\n//# sourceMappingURL=chunk-YGRUPXVB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-YPFLLHK6.js",
    "content": "import {\n  secp256k1\n} from \"./chunk-7EY5MWB2.js\";\nimport {\n  LruMap,\n  bytesToHex,\n  hexToBigInt,\n  hexToBytes,\n  isHex,\n  keccak256,\n  stringToBytes\n} from \"./chunk-GINVHONX.js\";\n\n// node_modules/viem/_esm/actions/wallet/sendTransaction.js\nvar supportsWalletNamespace = new LruMap(128);\n\n// node_modules/viem/_esm/utils/ens/encodedLabelToLabelhash.js\nfunction encodedLabelToLabelhash(label) {\n  if (label.length !== 66)\n    return null;\n  if (label.indexOf(\"[\") !== 0)\n    return null;\n  if (label.indexOf(\"]\") !== 65)\n    return null;\n  const hash = `0x${label.slice(1, 65)}`;\n  if (!isHex(hash))\n    return null;\n  return hash;\n}\n\n// node_modules/viem/_esm/utils/ens/labelhash.js\nfunction labelhash(label) {\n  const result = new Uint8Array(32).fill(0);\n  if (!label)\n    return bytesToHex(result);\n  return encodedLabelToLabelhash(label) || keccak256(stringToBytes(label));\n}\n\n// node_modules/viem/_esm/utils/signature/serializeSignature.js\nfunction serializeSignature({ r, s, to = \"hex\", v, yParity }) {\n  const yParity_ = (() => {\n    if (yParity === 0 || yParity === 1)\n      return yParity;\n    if (v && (v === 27n || v === 28n || v >= 35n))\n      return v % 2n === 0n ? 1 : 0;\n    throw new Error(\"Invalid `v` or `yParity` value\");\n  })();\n  const signature = `0x${new secp256k1.Signature(hexToBigInt(r), hexToBigInt(s)).toCompactHex()}${yParity_ === 0 ? \"1b\" : \"1c\"}`;\n  if (to === \"hex\")\n    return signature;\n  return hexToBytes(signature);\n}\n\nexport {\n  labelhash,\n  serializeSignature\n};\n//# sourceMappingURL=chunk-YPFLLHK6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-YXQ5KEQC.js",
    "content": "import {\n  hexToNumber,\n  numberToHex\n} from \"./chunk-BBNNHC5G.js\";\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_getTransactionCount.js\nasync function eth_getTransactionCount(request, params) {\n  const count = await request({\n    method: \"eth_getTransactionCount\",\n    params: [\n      params.address,\n      // makes sense to default to `pending` here, since we're asking for a transaction count (nonce)\n      params.blockNumber ? numberToHex(params.blockNumber) : params.blockTag || \"pending\"\n    ]\n  });\n  return hexToNumber(count);\n}\n\nexport {\n  eth_getTransactionCount\n};\n//# sourceMappingURL=chunk-YXQ5KEQC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-ZDZJSHMF.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/__generated__/IDropERC20/read/getActiveClaimConditionId.js\nvar FN_SELECTOR = \"0xc68907de\";\nvar FN_INPUTS = [];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint256\"\n  }\n];\nfunction isGetActiveClaimConditionIdSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nasync function getActiveClaimConditionId(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: []\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/__generated__/IDropERC20/read/getClaimConditionById.js\nvar FN_SELECTOR2 = \"0x6f8934f4\";\nvar FN_INPUTS2 = [\n  {\n    type: \"uint256\",\n    name: \"_conditionId\"\n  }\n];\nvar FN_OUTPUTS2 = [\n  {\n    type: \"tuple\",\n    name: \"condition\",\n    components: [\n      {\n        type: \"uint256\",\n        name: \"startTimestamp\"\n      },\n      {\n        type: \"uint256\",\n        name: \"maxClaimableSupply\"\n      },\n      {\n        type: \"uint256\",\n        name: \"supplyClaimed\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantityLimitPerWallet\"\n      },\n      {\n        type: \"bytes32\",\n        name: \"merkleRoot\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      },\n      {\n        type: \"string\",\n        name: \"metadata\"\n      }\n    ]\n  }\n];\nfunction isGetClaimConditionByIdSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2]\n  });\n}\nasync function getClaimConditionById(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR2, FN_INPUTS2, FN_OUTPUTS2],\n    params: [options.conditionId]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/drops/read/getActiveClaimCondition.js\nasync function getActiveClaimCondition(options) {\n  try {\n    const conditionId = await getActiveClaimConditionId(options);\n    return getClaimConditionById({ ...options, conditionId });\n  } catch {\n    throw new Error(\"Claim condition not found\");\n  }\n}\nfunction isGetActiveClaimConditionSupported(availableSelectors) {\n  return isGetActiveClaimConditionIdSupported(availableSelectors) && isGetClaimConditionByIdSupported(availableSelectors);\n}\n\nexport {\n  getActiveClaimCondition,\n  isGetActiveClaimConditionSupported\n};\n//# sourceMappingURL=chunk-ZDZJSHMF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-ZLJ6VYSG.js",
    "content": "import {\n  defineChain\n} from \"./chunk-TFBEDS4S.js\";\n\n// node_modules/thirdweb/dist/esm/chains/chain-definitions/ethereum.js\nvar ethereum = defineChain({\n  id: 1,\n  name: \"Ethereum\",\n  nativeCurrency: {\n    name: \"Ether\",\n    symbol: \"ETH\",\n    decimals: 18\n  },\n  blockExplorers: [\n    {\n      name: \"Etherscan\",\n      url: \"https://etherscan.io\"\n    }\n  ]\n});\n\nexport {\n  ethereum\n};\n//# sourceMappingURL=chunk-ZLJ6VYSG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/chunk-ZNEQLT5Q.js",
    "content": "// node_modules/thirdweb/dist/esm/utils/ipfs.js\nvar DEFAULT_GATEWAY = \"https://{clientId}.ipfscdn.io/ipfs/{cid}\";\nfunction resolveScheme(options) {\n  var _a, _b;\n  if (options.uri.startsWith(\"ipfs://\")) {\n    const gateway = ((_b = (_a = options.client.config) == null ? void 0 : _a.storage) == null ? void 0 : _b.gatewayUrl) ?? DEFAULT_GATEWAY;\n    const clientId = options.client.clientId;\n    const cid = findIPFSCidFromUri(options.uri);\n    let bundleId = void 0;\n    if (typeof globalThis !== \"undefined\" && \"Application\" in globalThis) {\n      bundleId = globalThis.Application.applicationId;\n    }\n    return `${gateway.replace(\"{clientId}\", clientId).split(\"/ipfs\")[0]}/ipfs/${cid}${bundleId ? `?bundleId=${bundleId}` : \"\"}`;\n  }\n  if (options.uri.startsWith(\"http\")) {\n    return options.uri;\n  }\n  throw new Error(`Invalid URI scheme, expected \"ipfs://\" or \"http(s)://\"`);\n}\nfunction findIPFSCidFromUri(uri) {\n  if (!uri.startsWith(\"ipfs://\")) {\n    return uri;\n  }\n  const firstIndex = uri.search(/\\/(Qm|baf)/i);\n  return uri.slice(firstIndex + 1);\n}\n\nexport {\n  resolveScheme\n};\n//# sourceMappingURL=chunk-ZNEQLT5Q.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/claimCondition-FZ3EKW2M.js",
    "content": "import {\n  FN_SELECTOR,\n  claimCondition,\n  decodeClaimConditionResult,\n  isClaimConditionSupported\n} from \"./chunk-253DMNI3.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  FN_SELECTOR,\n  claimCondition,\n  decodeClaimConditionResult,\n  isClaimConditionSupported\n};\n//# sourceMappingURL=claimCondition-FZ3EKW2M.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/claimCondition-WJYCFSKY.js",
    "content": "import {\n  FN_SELECTOR,\n  claimCondition,\n  decodeClaimConditionResult,\n  encodeClaimCondition,\n  encodeClaimConditionParams,\n  isClaimConditionSupported\n} from \"./chunk-HJ6E36KT.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  FN_SELECTOR,\n  claimCondition,\n  decodeClaimConditionResult,\n  encodeClaimCondition,\n  encodeClaimConditionParams,\n  isClaimConditionSupported\n};\n//# sourceMappingURL=claimCondition-WJYCFSKY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/claimTo-3OGSZAGD.js",
    "content": "import {\n  getClaimParams\n} from \"./chunk-O7UPLLUM.js\";\nimport {\n  isClaimConditionSupported\n} from \"./chunk-HJ6E36KT.js\";\nimport {\n  isGetActiveClaimConditionSupported\n} from \"./chunk-OHYFITXC.js\";\nimport {\n  isContractURISupported\n} from \"./chunk-UZVZQZEM.js\";\nimport \"./chunk-6RU56BH7.js\";\nimport \"./chunk-VJFQPB47.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport {\n  once,\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-673YCYST.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IDrop1155/write/claim.js\nvar FN_SELECTOR = \"0x57bc3d78\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"receiver\"\n  },\n  {\n    type: \"uint256\",\n    name: \"tokenId\"\n  },\n  {\n    type: \"uint256\",\n    name: \"quantity\"\n  },\n  {\n    type: \"address\",\n    name: \"currency\"\n  },\n  {\n    type: \"uint256\",\n    name: \"pricePerToken\"\n  },\n  {\n    type: \"tuple\",\n    name: \"allowlistProof\",\n    components: [\n      {\n        type: \"bytes32[]\",\n        name: \"proof\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantityLimitPerWallet\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      }\n    ]\n  },\n  {\n    type: \"bytes\",\n    name: \"data\"\n  }\n];\nvar FN_OUTPUTS = [];\nfunction isClaimSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction claim(options) {\n  const asyncOptions = once(async () => {\n    return \"asyncParams\" in options ? await options.asyncParams() : options;\n  });\n  return prepareContractCall({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: async () => {\n      const resolvedOptions = await asyncOptions();\n      return [\n        resolvedOptions.receiver,\n        resolvedOptions.tokenId,\n        resolvedOptions.quantity,\n        resolvedOptions.currency,\n        resolvedOptions.pricePerToken,\n        resolvedOptions.allowlistProof,\n        resolvedOptions.data\n      ];\n    },\n    value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.value;\n    },\n    accessList: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.accessList;\n    },\n    gas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gas;\n    },\n    gasPrice: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gasPrice;\n    },\n    maxFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxFeePerGas;\n    },\n    maxPriorityFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxPriorityFeePerGas;\n    },\n    nonce: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.nonce;\n    },\n    extraGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.extraGas;\n    },\n    erc20Value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.erc20Value;\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/drops/write/claimTo.js\nfunction claimTo(options) {\n  return claim({\n    contract: options.contract,\n    async asyncParams() {\n      const params = await getClaimParams({\n        type: \"erc1155\",\n        contract: options.contract,\n        to: options.to,\n        quantity: options.quantity,\n        from: options.from,\n        tokenId: options.tokenId,\n        singlePhaseDrop: options.singlePhaseDrop\n      });\n      return {\n        ...params,\n        tokenId: options.tokenId\n      };\n    }\n  });\n}\nfunction isClaimToSupported(availableSelectors) {\n  return [\n    // has to support the claim method\n    isClaimSupported(availableSelectors),\n    // requires contractMetadata for claimer proofs\n    isContractURISupported(availableSelectors),\n    // required to check if the contract supports the getActiveClaimCondition method\n    isGetActiveClaimConditionSupported(availableSelectors) || isClaimConditionSupported(availableSelectors)\n  ].every(Boolean);\n}\nexport {\n  claimTo,\n  isClaimToSupported\n};\n//# sourceMappingURL=claimTo-3OGSZAGD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/claimTo-7N7PJK5O.js",
    "content": "import {\n  isGetActiveClaimConditionSupported\n} from \"./chunk-ZDZJSHMF.js\";\nimport {\n  getClaimParams\n} from \"./chunk-O7UPLLUM.js\";\nimport {\n  isContractURISupported\n} from \"./chunk-UZVZQZEM.js\";\nimport \"./chunk-6RU56BH7.js\";\nimport \"./chunk-VJFQPB47.js\";\nimport {\n  decimals\n} from \"./chunk-4RRAU5V7.js\";\nimport {\n  isDecimalsSupported\n} from \"./chunk-QVNJVROL.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport {\n  once,\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-673YCYST.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/__generated__/IDropERC20/write/claim.js\nvar FN_SELECTOR = \"0x84bb1e42\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"receiver\"\n  },\n  {\n    type: \"uint256\",\n    name: \"quantity\"\n  },\n  {\n    type: \"address\",\n    name: \"currency\"\n  },\n  {\n    type: \"uint256\",\n    name: \"pricePerToken\"\n  },\n  {\n    type: \"tuple\",\n    name: \"allowlistProof\",\n    components: [\n      {\n        type: \"bytes32[]\",\n        name: \"proof\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantityLimitPerWallet\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      }\n    ]\n  },\n  {\n    type: \"bytes\",\n    name: \"data\"\n  }\n];\nvar FN_OUTPUTS = [];\nfunction isClaimSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction claim(options) {\n  const asyncOptions = once(async () => {\n    return \"asyncParams\" in options ? await options.asyncParams() : options;\n  });\n  return prepareContractCall({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: async () => {\n      const resolvedOptions = await asyncOptions();\n      return [\n        resolvedOptions.receiver,\n        resolvedOptions.quantity,\n        resolvedOptions.currency,\n        resolvedOptions.pricePerToken,\n        resolvedOptions.allowlistProof,\n        resolvedOptions.data\n      ];\n    },\n    value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.value;\n    },\n    accessList: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.accessList;\n    },\n    gas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gas;\n    },\n    gasPrice: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gasPrice;\n    },\n    maxFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxFeePerGas;\n    },\n    maxPriorityFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxPriorityFeePerGas;\n    },\n    nonce: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.nonce;\n    },\n    extraGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.extraGas;\n    },\n    erc20Value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.erc20Value;\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/drops/write/claimTo.js\nfunction claimTo(options) {\n  return claim({\n    contract: options.contract,\n    asyncParams: async () => {\n      const quantity = await (async () => {\n        if (\"quantityInWei\" in options) {\n          return options.quantityInWei;\n        }\n        const { toUnits } = await import(\"./units-OLWSIMOC.js\");\n        return toUnits(options.quantity, await decimals({ contract: options.contract }));\n      })();\n      return getClaimParams({\n        type: \"erc20\",\n        contract: options.contract,\n        to: options.to,\n        quantity,\n        from: options.from,\n        tokenDecimals: await decimals({ contract: options.contract }),\n        singlePhaseDrop: options.singlePhaseDrop\n      });\n    }\n  });\n}\nfunction isClaimToSupported(availableSelectors) {\n  return [\n    // has to support the claim method\n    isClaimSupported(availableSelectors),\n    // has to support the getActiveClaimCondition method\n    isGetActiveClaimConditionSupported(availableSelectors),\n    // has to support the decimals method\n    isDecimalsSupported(availableSelectors),\n    // requires contractMetadata for claimer proofs\n    isContractURISupported(availableSelectors)\n  ].every(Boolean);\n}\nexport {\n  claimTo,\n  isClaimToSupported\n};\n//# sourceMappingURL=claimTo-7N7PJK5O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/claimTo-LNJZHHT3.js",
    "content": "import {\n  getClaimParams\n} from \"./chunk-O7UPLLUM.js\";\nimport {\n  isClaimConditionSupported\n} from \"./chunk-253DMNI3.js\";\nimport {\n  isGetActiveClaimConditionSupported\n} from \"./chunk-RF65TSG5.js\";\nimport {\n  isContractURISupported\n} from \"./chunk-UZVZQZEM.js\";\nimport \"./chunk-6RU56BH7.js\";\nimport \"./chunk-VJFQPB47.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport {\n  once,\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-673YCYST.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IDrop/write/claim.js\nvar FN_SELECTOR = \"0x84bb1e42\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"receiver\"\n  },\n  {\n    type: \"uint256\",\n    name: \"quantity\"\n  },\n  {\n    type: \"address\",\n    name: \"currency\"\n  },\n  {\n    type: \"uint256\",\n    name: \"pricePerToken\"\n  },\n  {\n    type: \"tuple\",\n    name: \"allowlistProof\",\n    components: [\n      {\n        type: \"bytes32[]\",\n        name: \"proof\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantityLimitPerWallet\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      }\n    ]\n  },\n  {\n    type: \"bytes\",\n    name: \"data\"\n  }\n];\nvar FN_OUTPUTS = [];\nfunction isClaimSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction claim(options) {\n  const asyncOptions = once(async () => {\n    return \"asyncParams\" in options ? await options.asyncParams() : options;\n  });\n  return prepareContractCall({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: async () => {\n      const resolvedOptions = await asyncOptions();\n      return [\n        resolvedOptions.receiver,\n        resolvedOptions.quantity,\n        resolvedOptions.currency,\n        resolvedOptions.pricePerToken,\n        resolvedOptions.allowlistProof,\n        resolvedOptions.data\n      ];\n    },\n    value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.value;\n    },\n    accessList: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.accessList;\n    },\n    gas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gas;\n    },\n    gasPrice: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gasPrice;\n    },\n    maxFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxFeePerGas;\n    },\n    maxPriorityFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxPriorityFeePerGas;\n    },\n    nonce: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.nonce;\n    },\n    extraGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.extraGas;\n    },\n    erc20Value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.erc20Value;\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/drops/write/claimTo.js\nfunction claimTo(options) {\n  return claim({\n    contract: options.contract,\n    asyncParams: () => getClaimParams({\n      type: \"erc721\",\n      contract: options.contract,\n      to: options.to,\n      quantity: options.quantity,\n      from: options.from,\n      singlePhaseDrop: options.singlePhaseDrop\n    })\n  });\n}\nfunction isClaimToSupported(availableSelectors) {\n  return isClaimSupported(availableSelectors) && // requires contractMetadata for claimer proofs\n  isContractURISupported(availableSelectors) && // required to check if the contract supports the getActiveClaimCondition method\n  (isGetActiveClaimConditionSupported(availableSelectors) || isClaimConditionSupported(availableSelectors));\n}\nexport {\n  claimTo,\n  isClaimToSupported\n};\n//# sourceMappingURL=claimTo-LNJZHHT3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/co-2W272KST.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.lobstr/index.js\nvar wallet = {\n  id: \"co.lobstr\",\n  name: \"LOBSTR Wallet\",\n  homepage: \"https://lobstr.co/\",\n  image_id: \"0dafcaab-0852-47f7-85dd-436b86491d00\",\n  app: {\n    browser: \"https://lobstr.co/\",\n    ios: \"https://apps.apple.com/us/app/lobstr-stellar-wallet/id1404357892\",\n    android: \"https://play.google.com/store/apps/details?id=com.lobstr.client\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"lobstr://\",\n    universal: \"https://lobstr.co/uni/wc\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=co-2W272KST.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/co-4KSSMBL6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.xellar/index.js\nvar wallet = {\n  id: \"co.xellar\",\n  name: \"Xellar\",\n  homepage: \"https://xellar.co\",\n  image_id: \"67b5a91d-a9ce-4268-d73d-b2f924a0b400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/xellar-crypto-wallet/id1671215861\",\n    android: \"https://play.google.com/store/apps/details?id=com.xellar.wallets\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"xellar://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=co-4KSSMBL6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/co-4QEGB6VV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.lifedefi/index.js\nvar wallet = {\n  id: \"co.lifedefi\",\n  name: \"Life DeFi\",\n  homepage: \"https://lifedefi.co\",\n  image_id: \"d249af4f-e9b8-498d-cbc3-9eab04568700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ca/app/life-the-defi-wallet/id1591427970\",\n    android: \"https://play.google.com/store/apps/details?id=life.lifecrypto.app&hl=en_US&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"w3akvrn:/\",\n    universal: null\n  },\n  desktop: {\n    native: \"w3akvrn:/\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=co-4QEGB6VV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/co-7LLLWALO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.muza/index.js\nvar wallet = {\n  id: \"co.muza\",\n  name: \"MUZA\",\n  homepage: \"https://muza.co\",\n  image_id: \"f8516ff9-ca2e-4b59-65f6-ed8ef438f100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/th/app/muza-wallet-nft-web3/id6450735857\",\n    android: \"https://play.google.com/store/apps/details?id=com.muza.muza&pcampaignid=web_share\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"muza://\",\n    universal: \"https://muza.co/app\"\n  },\n  desktop: {\n    native: \"muza://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=co-7LLLWALO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/co-A2VHPEPT.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.swopme/index.js\nvar wallet = {\n  id: \"co.swopme\",\n  name: \"SWOP\",\n  homepage: \"https://swopme.co/\",\n  image_id: \"6e773b07-efcc-40eb-b3a2-300efc5df800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/swop-connecting-the-world/id1593201322\",\n    android: \"https://play.google.com/store/apps/details?id=com.travisheron.swopapp&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"swopapp://\",\n    universal: \"https://swopme.app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=co-A2VHPEPT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/co-CVN2M45H.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.arculus/index.js\nvar wallet = {\n  id: \"co.arculus\",\n  name: \"Arculus Wallet\",\n  homepage: \"https://www.arculus.co\",\n  image_id: \"f78dab27-7165-4a3d-fdb1-fcff06c0a700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/arculus-wallet/id1575425801\",\n    android: \"https://play.google.com/store/apps/details?id=co.arculus.wallet.android&hl=en_US&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"arculuswc://\",\n    universal: \"https://gw.arculus.co/app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=co-CVN2M45H.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/co-Y7ICLZEM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.filwallet/index.js\nvar wallet = {\n  id: \"co.filwallet\",\n  name: \"FILWallet\",\n  homepage: \"https://filwallet.co/\",\n  image_id: \"f400f6c2-ca6c-487b-654d-e119af247500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/filwallet-io/id1572930901\",\n    android: \"https://filwallet.co/\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://h5.filwallet.co\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=co-Y7ICLZEM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/co.cyber-W3ZB2PHU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.cyber.wallet/index.js\nvar wallet = {\n  id: \"co.cyber.wallet\",\n  name: \"CyberWallet\",\n  homepage: \"https://wallet.cyber.co\",\n  image_id: \"24887576-8e74-4518-36b3-3c5e13f11a00\",\n  app: {\n    browser: null,\n    ios: \"https://wallet.cyber.co\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://wallet.cyber.co\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://wallet.cyber.co\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=co.cyber-W3ZB2PHU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/coinbaseWebSDK-RVHYUQN6.js",
    "content": "import {\n  autoConnectCoinbaseWalletSDK,\n  coinbaseSDKWalletGetCallsStatus,\n  coinbaseSDKWalletGetCapabilities,\n  coinbaseSDKWalletSendCalls,\n  coinbaseSDKWalletShowCallsStatus,\n  connectCoinbaseWalletSDK,\n  getCoinbaseWebProvider,\n  isCoinbaseSDKWallet\n} from \"./chunk-R76ND7QY.js\";\nimport \"./chunk-G26WKBGM.js\";\nimport \"./chunk-7AY3QZZV.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-2RRVHQYX.js\";\nimport \"./chunk-I2GEMA2B.js\";\nimport \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  autoConnectCoinbaseWalletSDK,\n  coinbaseSDKWalletGetCallsStatus,\n  coinbaseSDKWalletGetCapabilities,\n  coinbaseSDKWalletSendCalls,\n  coinbaseSDKWalletShowCallsStatus,\n  connectCoinbaseWalletSDK,\n  getCoinbaseWebProvider,\n  isCoinbaseSDKWallet\n};\n//# sourceMappingURL=coinbaseWebSDK-RVHYUQN6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-2C4IBZJC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.foxwallet/index.js\nvar wallet = {\n  id: \"com.foxwallet\",\n  name: \"FoxWallet\",\n  homepage: \"http://foxwallet.com\",\n  image_id: \"d673068d-1acf-4372-76ee-8eb931c59e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/foxwallet-crypto-web3/id1590983231\",\n    android: \"https://play.google.com/store/apps/details?id=com.foxwallet.play\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"foxwallet://\",\n    universal: \"https://link.foxwallet.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-2C4IBZJC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-2FMSNEYI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.amazewallet/index.js\nvar wallet = {\n  id: \"com.amazewallet\",\n  name: \"AmazeWallet\",\n  homepage: \"https://amazewallet.com/\",\n  image_id: \"38495eb4-efcf-47cb-be73-a695510f9f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/gb/app/amazewallet/id1622941204\",\n    android: \"https://play.google.com/store/apps/details?id=com.mining.amaze.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"amazeapp://amazewallet.com\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-2FMSNEYI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-2M7N6F5U.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.kryptogo/index.js\nvar wallet = {\n  id: \"com.kryptogo\",\n  name: \"KryptoGO Wallet\",\n  homepage: \"https://kryptogo.com/wallet\",\n  image_id: \"4eb31988-f494-403c-6127-cfcef036ac00\",\n  app: {\n    browser: \"https://kryptogo.com/wallet\",\n    ios: \"https://apps.apple.com/il/app/kryptogo/id1593830910\",\n    android: \"https://play.google.com/store/apps/details?id=com.kryptogo.walletapp\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/bgaihnkooadagpjddlcaleaopmkjadfl\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"kryptogo://\",\n    universal: \"https://kryptogo.page.link\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-2M7N6F5U.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-3M4YXHEP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.antiersolutions/index.js\nvar wallet = {\n  id: \"com.antiersolutions\",\n  name: \"Ancrypto Wallet\",\n  homepage: \"https://www.antiersolutions.com/\",\n  image_id: \"d4382329-e288-4d7a-0ac8-3eb0facfb900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/in/app/ancrypto-wallet/id1453657650\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ancrypto://app\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-3M4YXHEP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-4GPSLLOX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.lif3/index.js\nvar wallet = {\n  id: \"com.lif3\",\n  name: \"Lif3 Wallet\",\n  homepage: \"https://lif3.com/\",\n  image_id: \"1a89c0ec-9059-4515-afb6-8204d49f0900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/lif3/id6444389674\",\n    android: \"https://play.google.com/store/apps/details?id=com.lif3.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"lif3wallet://walletview\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-4GPSLLOX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-4MAE4SLL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.gemwallet/index.js\nvar wallet = {\n  id: \"com.gemwallet\",\n  name: \"Gem Wallet\",\n  homepage: \"https://gemwallet.com\",\n  image_id: \"28f1b431-9d2a-4083-1bf8-5958939a2300\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/apple-store/id6448712670?mt=8\",\n    android: \"https://play.google.com/store/apps/details?id=com.gemwallet.android\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"gem://\",\n    universal: \"https://gemwallet.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-4MAE4SLL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-5EVQS4IZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.kraken/index.js\nvar wallet = {\n  id: \"com.kraken\",\n  name: \"Kraken Wallet \",\n  homepage: \"https://www.kraken.com/wallet\",\n  image_id: \"8909e826-63e4-42b3-60b2-8a6a54060900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/kraken-wallet/id1626327149\",\n    android: \"https://play.google.com/store/apps/details?id=com.kraken.superwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"krakenwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-5EVQS4IZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-5NZOMD6O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.getcogni/index.js\nvar wallet = {\n  id: \"com.getcogni\",\n  name: \"Cogni \",\n  homepage: \"https://www.getcogni.com/\",\n  image_id: \"b650cd08-21eb-4769-8ef9-96feb6e38e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/cogni-mobile-banking/id1483957512\",\n    android: \"https://play.google.com/store/apps/details?id=com.getcogni.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"getcogni://web3/\",\n    universal: \"https://getcogni.com/web3_wc_connect\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-5NZOMD6O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-66Q6X2AN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ipmb/index.js\nvar wallet = {\n  id: \"com.ipmb\",\n  name: \"IPMB Wallet\",\n  homepage: \"https://www.ipmb.com\",\n  image_id: \"846ae068-c112-412a-c103-7aa414bc9400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/gb/app/ipmb-wallet/id6474244533\",\n    android: \"https://play.google.com/store/apps/details?id=com.ipmb.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/ipmb-wallet/gohpeceldnpglangfimhdjlfhgalohco\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"com.ipmb.app://walletcon\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-66Q6X2AN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-6DTOF6TL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.broearn/index.js\nvar wallet = {\n  id: \"com.broearn\",\n  name: \"Broearn Wallet\",\n  homepage: \"https://www.broearn.com\",\n  image_id: \"b3c2c77c-a8cf-46e1-095a-77f0a3891500\",\n  app: {\n    browser: \"https://www.broearn.com\",\n    ios: \"https://apps.apple.com/us/app/broearn/id6444156587\",\n    android: \"https://play.google.com/store/apps/details?id=com.broearn.browser\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"broearn://wallet/\",\n    universal: \"https://www.broearn.com/link/wallet\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-6DTOF6TL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-6OK3IP35.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.klipwallet/index.js\nvar wallet = {\n  id: \"com.klipwallet\",\n  name: \"Klip\",\n  homepage: \"https://klipwallet.com/\",\n  image_id: \"f7b6b2a6-ebe7-4779-6ad1-79a3142e6b00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/kr/app/클립-klip/id1627665524\",\n    android: \"https://play.google.com/store/apps/details?id=com.klipwallet.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"klipwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-6OK3IP35.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-6OLGJVDZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.mtpelerin/index.js\nvar wallet = {\n  id: \"com.mtpelerin\",\n  name: \"Bridge Wallet\",\n  homepage: \"https://mtpelerin.com\",\n  image_id: \"20c3072e-c92e-4902-d4b9-cb2b6ab29100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/bridge-wallet/id1481859680\",\n    android: \"https://play.google.com/store/apps/details?id=com.mtpelerin.bridge&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://bridge.mtpelerin.com/wc\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-6OLGJVDZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-6SKA46QA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.withpaper/index.js\nvar wallet = {\n  id: \"com.withpaper\",\n  name: \"Paper\",\n  homepage: \"https://withpaper.com\",\n  image_id: \"37d7a10f-d94d-4a56-c30e-267e8afbd500\",\n  app: {\n    browser: \"https://withpaper.com\",\n    ios: null,\n    android: null,\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://withpaper.com\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://withpaper.com\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-6SKA46QA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-77L55XPO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.neonwallet/index.js\nvar wallet = {\n  id: \"com.neonwallet\",\n  name: \"Neon Wallet\",\n  homepage: \"https://neonwallet.com\",\n  image_id: \"322bd6f0-09b5-4595-cb15-0dfab8054800\",\n  app: {\n    browser: \"https://neonwallet.com/\",\n    ios: \"https://apps.apple.com/my/app/neon-wallet-mobile/id1530111452\",\n    android: \"https://play.google.com/store/apps/details?id=neo.org.freewallet.app&hl=pt_BR&gl=US\",\n    mac: \"https://neonwallet.com/\",\n    windows: \"https://neonwallet.com/\",\n    linux: \"https://neonwallet.com/\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"neon://uri=\",\n    universal: null\n  },\n  desktop: {\n    native: \"neon://uri=\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-77L55XPO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-7CFZD43L.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ullapay/index.js\nvar wallet = {\n  id: \"com.ullapay\",\n  name: \"WOW EARN\",\n  homepage: \"https://www.ullapay.com/\",\n  image_id: \"1985a753-7fd8-4d75-4c50-7998ea68a800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id6443434220\",\n    android: \"https://play.google.com/store/apps/details?id=com.hxg.wallet&pli=1\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ullawallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-7CFZD43L.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-7ESFL2XC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.concordium/index.js\nvar wallet = {\n  id: \"com.concordium\",\n  name: \"Concordium\",\n  homepage: \"https://concordium.com/\",\n  image_id: \"b1ca907e-2f5f-42a8-d11c-86a15a291600\",\n  app: {\n    browser: \"https://concordium.com/\",\n    ios: \"https://apps.apple.com/us/app/concordium-blockchain-wallet/id6444703764\",\n    android: \"https://play.google.com/store/apps/details?id=software.concordium.mobilewallet.seedphrase.mainnet&pli=1\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/concordium-wallet/mnnkpffndmickbiakofclnpoiajlegmg?hl=en-US\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"concordiumwallet://\",\n    universal: \"https://wallet.concordium.software\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-7ESFL2XC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-7FNIVOH3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.thirdweb/index.js\nvar wallet = {\n  id: \"com.thirdweb\",\n  name: \"thirdweb\",\n  homepage: \"https://thirdweb.com\",\n  image_id: \"c8d820ec-54fb-4c0e-210e-5cbbf92e1000\",\n  app: {\n    browser: \"https://thirdweb.com\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://ews.thirdweb.com\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://ews.thirdweb.com\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-7FNIVOH3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-7Y4S6AXS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tellaw/index.js\nvar wallet = {\n  id: \"com.tellaw\",\n  name: \"Tellaw Wallet\",\n  homepage: \"https://www.tellaw.com/\",\n  image_id: \"c1cb03f5-e1c2-4c3e-86e1-9a90565ea300\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id6446802245\",\n    android: \"https://play.google.com/store/apps/details?id=com.tellaw.tellaw\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"tellaw://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-7Y4S6AXS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-7ZICZNFF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.enkrypt/index.js\nvar wallet = {\n  id: \"com.enkrypt\",\n  name: \"Enkrypt\",\n  homepage: \"https://www.enkrypt.com\",\n  image_id: \"5aafd680-95a8-41e6-6df0-632ea23f4700\",\n  app: {\n    browser: \"https://google.com\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/enkrypt-multichain-crypto/kkpllkodjeloidieedojogacfhpaihoh\",\n    firefox: \"https://addons.mozilla.org/en-US/firefox/addon/enkrypt/\",\n    safari: \"https://apps.apple.com/us/app/enkrypt-web3-wallet/id1640164309?mt=12\",\n    edge: \"https://microsoftedge.microsoft.com/addons/detail/gfenajajnjjmmdojhdjmnngomkhlnfjl\",\n    opera: \"https://addons.opera.com/en/extensions/details/enkrypt/\"\n  },\n  rdns: \"com.enkrypt\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-7ZICZNFF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-ABZNTRLZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.nufinetes/index.js\nvar wallet = {\n  id: \"com.nufinetes\",\n  name: \"Nufinetes\",\n  homepage: \"https://www.nufinetes.com\",\n  image_id: \"4bb6c1ca-4196-4ba3-ece2-c3d335e1f800\",\n  app: {\n    browser: \"https://www.nufinetes.com\",\n    ios: \"https://apps.apple.com/us/app/nufinetes/id1609562349\",\n    android: \"https://play.google.com/store/apps/details?id=com.vimworld.wallet\",\n    mac: \"https://apps.apple.com/us/app/nufinetes-desktop/id1629768725\",\n    windows: \"https://d3va9f6jgm4z2y.cloudfront.net/nufinetes-prod/Nufinetes_Windows_latest.exe\",\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"vimwallet://\",\n    universal: \"https://apple.vimworld.org\"\n  },\n  desktop: {\n    native: \"vimwallet://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-ABZNTRLZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-AKMGTE6O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.rktechworks/index.js\nvar wallet = {\n  id: \"com.rktechworks\",\n  name: \"ID Pocket\",\n  homepage: \"https://rktechworks.com/idpocket\",\n  image_id: \"c227ee0a-5127-4707-ded9-c3cd81348d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id-pocket/id1549462128\",\n    android: \"https://play.google.com/store/apps/details?id=com.rktechworks.idpocket\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-AKMGTE6O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-AODZYQWL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.usecapsule/index.js\nvar wallet = {\n  id: \"com.usecapsule\",\n  name: \"Capsule\",\n  homepage: \"https://usecapsule.com\",\n  image_id: \"8308dacf-028c-4f0a-9636-1ccd95768300\",\n  app: {\n    browser: \"https://walletconnect.usecapsule.com\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://walletconnect.usecapsule.com/\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://walletconnect.usecapsule.com/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-AODZYQWL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-BA67M6JA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coincircle/index.js\nvar wallet = {\n  id: \"com.coincircle\",\n  name: \"CoinCircle\",\n  homepage: \"https://coincircle.com\",\n  image_id: \"eae63a23-c7ba-4f7e-24b3-e6fc69215d00\",\n  app: {\n    browser: \"https://coincircle.com\",\n    ios: \"https://coincircle.com/app\",\n    android: \"https://coincircle.com/app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://coincircle.com/app/walletconnect\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-BA67M6JA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-BJY3WLWU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ellipal/index.js\nvar wallet = {\n  id: \"com.ellipal\",\n  name: \"ELLIPAL\",\n  homepage: \"https://www.ellipal.com\",\n  image_id: \"0a5b45a1-c974-4f41-6c14-376714478c00\",\n  app: {\n    browser: null,\n    ios: \"https://itunes.apple.com/us/app/ellipal/id1426179665?l=zh&ls=1&mt=8\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ELLIPAL://\",\n    universal: \"https://www.ellipal.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-BJY3WLWU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-BLXPUI47.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.dcentwallet/index.js\nvar wallet = {\n  id: \"com.dcentwallet\",\n  name: \"D'CENT Wallet\",\n  homepage: \"https://dcentwallet.com\",\n  image_id: \"0b0ca1f1-1e43-4429-7b23-2e0ce4b1b700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/dcent-hardware-wallet/id1447206611\",\n    android: \"https://play.google.com/store/apps/details?id=com.kr.iotrust.dcent.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"dcent://\",\n    universal: \"https://link.dcentwallet.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-BLXPUI47.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-CADNHKSZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.fxwallet/index.js\nvar wallet = {\n  id: \"com.fxwallet\",\n  name: \"FxWallet\",\n  homepage: \"https://www.fxwallet.com\",\n  image_id: \"46a80541-e639-483d-e230-731fcbf13000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/fxwallet/id1560943983\",\n    android: \"https://play.google.com/store/apps/details?id=com.fxfi.fxwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"fxwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-CADNHKSZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-CAZP4XAV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tangem/index.js\nvar wallet = {\n  id: \"com.tangem\",\n  name: \"Tangem Wallet\",\n  homepage: \"https://tangem.com\",\n  image_id: \"80679c6f-bb0b-43d0-83e0-462ac268b600\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/uz/app/tangem/id1354868448\",\n    android: \"https://play.google.com/store/apps/details?id=com.tangem.wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"tangem://\",\n    universal: \"https://app.tangem.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-CAZP4XAV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-CHX2N46L.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bestwallet/index.js\nvar wallet = {\n  id: \"com.bestwallet\",\n  name: \"Best Wallet\",\n  homepage: \"https://bestwallet.com/\",\n  image_id: \"7f9574ed-eb42-4e04-0888-be2939936700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/best-wallet/id6451312105\",\n    android: \"https://play.google.com/store/apps/details?id=com.bestwallet.mobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bw://app/connect\",\n    universal: \"https://best-wallet-prod.web.app/connect\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-CHX2N46L.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-CMFYLJ3T.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.cakewallet/index.js\nvar wallet = {\n  id: \"com.cakewallet\",\n  name: \"Cake Wallet\",\n  homepage: \"https://cakewallet.com/\",\n  image_id: \"547998c5-7908-4f11-bdc3-93da789d8c00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/cake-wallet/id1334702542?platform=iphone\",\n    android: \"https://play.google.com/store/apps/details?id=com.cakewallet.cake_wallet\",\n    mac: \"https://apps.apple.com/us/app/cake-wallet/id1334702542?platform=mac\",\n    windows: null,\n    linux: \"https://github.com/cake-tech/cake_wallet/releases/tag/v4.10.0\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"cakewallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-CMFYLJ3T.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-D37EIKB4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.optowallet/index.js\nvar wallet = {\n  id: \"com.optowallet\",\n  name: \"Opto Wallet\",\n  homepage: \"https://optowallet.com/\",\n  image_id: \"3df102e4-e435-49dd-d4b1-5ea74ebed500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/opto-wallet/id6443854537\",\n    android: \"https://play.google.com/store/apps/details?id=app.opto.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"opto://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-D37EIKB4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-DJRJPGME.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ballet/index.js\nvar wallet = {\n  id: \"com.ballet\",\n  name: \"Ballet Crypto\",\n  homepage: \"https://www.ballet.com\",\n  image_id: \"fd46e96d-350d-4922-a4a9-b2bfe7c92400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id1474912942\",\n    android: \"https://play.google.com/store/apps/details?id=com.balletcrypto\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"balletcrypto://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-DJRJPGME.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-DMBFR3TM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.saitamatoken/index.js\nvar wallet = {\n  id: \"com.saitamatoken\",\n  name: \"SaitaPro\",\n  homepage: \"https://www.saitamatoken.com/saitapro/\",\n  image_id: \"fedd85cd-fa5e-4c66-0b05-1ff2ce864e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/saitapro/id1636523777\",\n    android: \"https://play.google.com/store/apps/details?id=com.saitapro&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"SaitaPro://app\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-DMBFR3TM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-DXBW5XU7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.exodus/index.js\nvar wallet = {\n  id: \"com.exodus\",\n  name: \"Exodus\",\n  homepage: \"https://exodus.com/\",\n  image_id: \"4c16cad4-cac9-4643-6726-c696efaf5200\",\n  app: {\n    browser: \"https://exodus.com/download/\",\n    ios: \"https://apps.apple.com/us/app/exodus-crypto-bitcoin-wallet/id1414384820\",\n    android: \"https://play.google.com/store/apps/details?id=exodusmovement.exodus&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/exodus-web3-wallet/aholpfdialjgjfhomihkjbmgjidlcdno\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"exodus://\",\n    universal: \"https://exodus.com/m\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-DXBW5XU7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-EC74KZVH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bettatrade/index.js\nvar wallet = {\n  id: \"com.bettatrade\",\n  name: \"Bettatrade\",\n  homepage: \"https://bettatrade.com\",\n  image_id: \"938053f6-6e81-4d58-4033-8ae8625e5f00\",\n  app: {\n    browser: \"https://apps.apple.com/us/app/bettatrade/id6474153866\",\n    ios: \"https://apps.apple.com/us/app/bettatrade/id6474153866\",\n    android: \"https://play.google.com/store/apps/details?id=com.wallet.Bettatrade\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bettatrade://\",\n    universal: \"https://bettatrade.page.link/Fc4u\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-EC74KZVH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-ECD626HL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitpie/index.js\nvar wallet = {\n  id: \"com.bitpie\",\n  name: \"Bitpie\",\n  homepage: \"https://bitpie.com\",\n  image_id: \"e6dce4ec-a1a8-49e6-d8e1-8329fdd5c700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/bitpie-universal-crypto-wallet/id1481314229\",\n    android: \"https://bitpie.com/android/\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bitpiewc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-ECD626HL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-EDWOBHQ5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.liberawallet/index.js\nvar wallet = {\n  id: \"com.liberawallet\",\n  name: \"Libera\",\n  homepage: \"https://liberawallet.com\",\n  image_id: \"9485d17f-c413-47fe-ebee-a876a9dc9100\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.impactmarket.mobile&&pli=1\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"libera://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-EDWOBHQ5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-EW5K7JF2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.fireblocks/index.js\nvar wallet = {\n  id: \"com.fireblocks\",\n  name: \"Fireblocks\",\n  homepage: \"https://www.fireblocks.com/\",\n  image_id: \"7e1514ba-932d-415d-1bdb-bccb6c2cbc00\",\n  app: {\n    browser: \"https://console.fireblocks.io/\",\n    ios: \"https://apps.apple.com/us/app/fireblocks/id1439296596\",\n    android: \"https://play.google.com/store/apps/details?id=com.fireblocks.client&gl=IL\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"fireblocks-wc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: \"https://console.fireblocks.io/v2/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-EW5K7JF2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-FE3NAAEW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.get-verso/index.js\nvar wallet = {\n  id: \"com.get-verso\",\n  name: \"Verso\",\n  homepage: \"https://get-verso.com\",\n  image_id: \"109d7c90-86ed-4ee0-e17d-3c87624ddf00\",\n  app: {\n    browser: \"https://get-verso.com\",\n    ios: \"https://apps.apple.com/app/btu-protocol/id1539304605\",\n    android: \"https://play.google.com/store/apps/details?id=com.btuprotocol.btu_wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"verso://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-FE3NAAEW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-FIMPM75U.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.valoraapp/index.js\nvar wallet = {\n  id: \"com.valoraapp\",\n  name: \"Valora\",\n  homepage: \"https://valoraapp.com\",\n  image_id: \"a03bfa44-ce98-4883-9b2a-75e2b68f5700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/id1520414263\",\n    android: \"https://play.google.com/store/apps/details?id=co.clabs.valora\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"celo://wallet\",\n    universal: \"https://valoraapp.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-FIMPM75U.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-FLBLVTBY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coininn/index.js\nvar wallet = {\n  id: \"com.coininn\",\n  name: \"Coininn Wallet\",\n  homepage: \"https://www.coininn.com/coinwallet\",\n  image_id: \"52efd5a7-65fa-428d-668c-f53ceb4b5f00\",\n  app: {\n    browser: null,\n    ios: \"https://itunes.apple.com/app/id6448525015\",\n    android: \"https://play.google.com/store/apps/details?id=com.coininn.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"coininn_wallet_wc://request\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-FLBLVTBY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-FTU5JU6L.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.burritowallet/index.js\nvar wallet = {\n  id: \"com.burritowallet\",\n  name: \"Burrito\",\n  homepage: \"https://burritowallet.com\",\n  image_id: \"7eec7187-3f48-4fda-53bb-b0ad55749a00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/burrito-wallet/id6449563083\",\n    android: \"https://play.google.com/store/apps/details?id=com.burritowallet.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"burrito://\",\n    universal: \"https://app.burritowallet.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-FTU5JU6L.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-FUBWL26I.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.cryptokara/index.js\nvar wallet = {\n  id: \"com.cryptokara\",\n  name: \"Cryptokara\",\n  homepage: \"https://cryptokara.com\",\n  image_id: \"028ef53f-b5d9-4a63-2bf0-d384c8522500\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.cryptokara&hl=en_US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.cryptokara\",\n  mobile: {\n    native: \"cryptokara://StartScreen\",\n    universal: \"https://play.google.com/store/apps/details?id=com.cryptokara&hl=en_US\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-FUBWL26I.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-G4PABABE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.paliwallet/index.js\nvar wallet = {\n  id: \"com.paliwallet\",\n  name: \"Pali Wallet\",\n  homepage: \"https://paliwallet.com\",\n  image_id: \"4672cbde-0f96-42f3-84a0-524e9ad70a00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/pali-wallet-dex-nft-defi/id6447639615\",\n    android: \"https://play.google.com/store/apps/details?id=io.paliwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://play.google.com/store/apps/details?id=io.paliwallet\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"paliwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-G4PABABE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-GGEHZ3ML.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ledger/index.js\nvar wallet = {\n  id: \"com.ledger\",\n  name: \"Ledger Live\",\n  homepage: \"https://www.ledger.com/ledger-live\",\n  image_id: \"a7f416de-aa03-4c5e-3280-ab49269aef00\",\n  app: {\n    browser: null,\n    ios: \"https://itunes.apple.com/app/id1361671700\",\n    android: \"https://play.google.com/store/apps/details?id=com.ledger.live\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ledgerlive://\",\n    universal: null\n  },\n  desktop: {\n    native: \"ledgerlive://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-GGEHZ3ML.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-GHGCPYMS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.plasma-wallet/index.js\nvar wallet = {\n  id: \"com.plasma-wallet\",\n  name: \"Plasma Wallet\",\n  homepage: \"https://plasma-wallet.com\",\n  image_id: \"c268e78d-ffb0-4c8b-5cad-04c3add48500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/plasmapay-defi-crypto-wallet/id1461735396\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"plasmawallet://\",\n    universal: \"https://plasma-wallet.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-GHGCPYMS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-GPM5NTEM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.crossmint/index.js\nvar wallet = {\n  id: \"com.crossmint\",\n  name: \"Crossmint\",\n  homepage: \"https://www.crossmint.com/\",\n  image_id: \"8ad627ec-cbcd-4878-ec5c-3df588055200\",\n  app: {\n    browser: \"https://www.crossmint.com\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://www.crossmint.com\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://www.crossmint.com\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://www.crossmint.com\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-GPM5NTEM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-GY4RR463.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.neftipedia/index.js\nvar wallet = {\n  id: \"com.neftipedia\",\n  name: \"NeftiWallet\",\n  homepage: \"https://neftipedia.com/\",\n  image_id: \"1f812dec-be3d-446c-52f7-a79eb0dd5400\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.NEFTiPEDiA.mp\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"nefti://nefti.id/asset/\",\n    universal: \"https://nefti.id/asset/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-GY4RR463.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-HIQMW3M5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.binance/index.js\nvar wallet = {\n  id: \"com.binance\",\n  name: \"Binance Web3 Wallet\",\n  homepage: \"https://www.binance.com/en/web3wallet\",\n  image_id: \"ebac7b39-688c-41e3-7912-a4fefba74600\",\n  app: {\n    browser: \"https://www.binance.com/en/web3wallet\",\n    ios: \"https://www.binance.com/en/download\",\n    android: \"https://www.binance.com/en/download\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bnc://app.binance.com/cedefi/\",\n    universal: \"https://app.binance.com/cedefi\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-HIQMW3M5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-HQ3ZNBVK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.unitywallet/index.js\nvar wallet = {\n  id: \"com.unitywallet\",\n  name: \"Unity Wallet\",\n  homepage: \"https://unitywallet.com\",\n  image_id: \"09b4aad3-c007-40e7-ec8f-6a62585e6900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/savl-wallet-bitcoin-solana/id1369912925\",\n    android: \"https://play.google.com/store/apps/details?id=com.savl\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"savl://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-HQ3ZNBVK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-HUVDUN75.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tastycrypto/index.js\nvar wallet = {\n  id: \"com.tastycrypto\",\n  name: \"tastycrypto\",\n  homepage: \"https://www.tastycrypto.com/\",\n  image_id: \"357878c9-a195-4102-8f69-55eb2c578700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/tastycrypto-crypto-wallet/id1670102186\",\n    android: \"https://play.google.com/store/apps/details?id=com.tastycrypto&hl=en\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"tastycrypto://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-HUVDUN75.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-I4GOOXU3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.trusteeglobal/index.js\nvar wallet = {\n  id: \"com.trusteeglobal\",\n  name: \"Trustee Wallet\",\n  homepage: \"https://trusteeglobal.com\",\n  image_id: \"853e6f0a-ccb6-4b7e-e73b-89171a4e0a00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/trustee-wallet/id1462924276\",\n    android: \"https://play.google.com/store/apps/details?id=com.trusteewallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"tw://\",\n    universal: \"https://trusteeglobal.com/link/Pxxum8Yt\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-I4GOOXU3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-IATVSYRF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.webauth/index.js\nvar wallet = {\n  id: \"com.webauth\",\n  name: \"WebAuth\",\n  homepage: \"https://webauth.com\",\n  image_id: \"93fcd24e-431d-421f-32c2-9563d725c800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/webauth/id1594500069\",\n    android: \"https://play.google.com/store/apps/details?id=com.metallicus.webauth&hl=en_US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"proton://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-IATVSYRF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-ICJNKASS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.caesiumlab/index.js\nvar wallet = {\n  id: \"com.caesiumlab\",\n  name: \"Caesium\",\n  homepage: \"https://caesiumlab.com/\",\n  image_id: \"b3a456db-43c7-463c-cc3c-8c550c5b9500\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.csm_app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"caesium-app://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-ICJNKASS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-IDR25SRZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bmawallet/index.js\nvar wallet = {\n  id: \"com.bmawallet\",\n  name: \"BMA Wallet\",\n  homepage: \"https://bmawallet.com/\",\n  image_id: \"5d8240f7-1d58-4ada-12b3-0b5e7d5b1300\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.bmawallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bmawalletapp://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-IDR25SRZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-IF7AHQFJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.holdstation/index.js\nvar wallet = {\n  id: \"com.holdstation\",\n  name: \"Holdstation Wallet\",\n  homepage: \"https://www.holdstation.com\",\n  image_id: \"dba228fc-d0c9-497b-903e-843ad1076e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/holdstation-web3-wallet/id6444925618\",\n    android: \"https://play.google.com/store/apps/details?id=io.holdstation\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"holdstation://\",\n    universal: \"https://staging-referral.holdstation.com/wallet-connect?uri=\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-IF7AHQFJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-IF7EFBYY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.xcapit/index.js\nvar wallet = {\n  id: \"com.xcapit\",\n  name: \"Xcapit\",\n  homepage: \"https://xcapit.com/\",\n  image_id: \"17f59b75-21b0-4b3f-b024-fe4b9b8d2300\",\n  app: {\n    browser: \"https://app.xcapit.com/\",\n    ios: \"https://apps.apple.com/ar/app/xcapit/id1545648148\",\n    android: \"https://play.google.com/store/apps/details?id=com.xcapit.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://app.xcapit.com/links\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-IF7EFBYY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-IQ3TTO6K.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.chain/index.js\nvar wallet = {\n  id: \"com.chain\",\n  name: \"Chain\",\n  homepage: \"https://chain.com\",\n  image_id: \"f9f3d8da-e791-47d2-98c2-031712617e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id6444779277\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"chainapp://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-IQ3TTO6K.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-IVJ4ODXS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.alicebob/index.js\nvar wallet = {\n  id: \"com.alicebob\",\n  name: \"Alicebob Wallet\",\n  homepage: \"https://alicebob.com/\",\n  image_id: \"15be8ddd-0bef-4948-56d1-6101347a6b00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/alicebob-crypto-btc-wallet/id6467197622\",\n    android: \"https://play.google.com/store/apps/details?id=com.crypto.ab.wallet.app\",\n    mac: \"https://apps.apple.com/us/app/alicebob-crypto-btc-wallet/id6467197622\",\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/alicebob-wallet/mjmpkbeecljmaoojijflpfpmpdhnpabd\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"crypto.ab.wallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-IVJ4ODXS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-JCVLXBH6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.itoken/index.js\nvar wallet = {\n  id: \"com.itoken\",\n  name: \"iToken Wallet\",\n  homepage: \"https://www.itoken.com/\",\n  image_id: \"5cd60c34-038d-470c-c024-d58f64260200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id1433883012\",\n    android: \"https://play.google.com/store/apps/details?id=com.huobionchainwallet.gp\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"huobiwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-JCVLXBH6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-KFSYP3UK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.beexo/index.js\nvar wallet = {\n  id: \"com.beexo\",\n  name: \"Beexo\",\n  homepage: \"https://beexo.com/\",\n  image_id: \"7074bf0c-d0f7-4d86-2dc4-28430d629d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ar/app/beexo-wallet/id1533311061\",\n    android: \"https://play.google.com/store/apps/details?id=com.beexo\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"beexo://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: \"https://app.beexo.com/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-KFSYP3UK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-KPWIFBRV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.kresus/index.js\nvar wallet = {\n  id: \"com.kresus\",\n  name: \"Kresus SuperApp\",\n  homepage: \"https://www.kresus.com/\",\n  image_id: \"ee242aea-3ffd-4ad8-db88-e29a1ccd2000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/kresus-crypto-nft-superapp/id6444355152?referrer=singular_click_id%3Da713aaae-ea8e-4919-882d-a053ad9a8278\",\n    android: \"https://play.google.com/store/apps/details?id=com.kresus.superapp&pli=1\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"com.kresus.superapp://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-KPWIFBRV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-KW7LIQVX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ripio/index.js\nvar wallet = {\n  id: \"com.ripio\",\n  name: \"Ripio Portal\",\n  homepage: \"https://ripio.com/portal\",\n  image_id: \"fd56c695-ce58-4df5-1625-767571c80700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ar/app/ripio-comprar-bitcoin-y-eth/id1221006761\",\n    android: \"https://play.google.com/store/apps/details?id=com.ripio.android&hl=en&gl=US\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/ripio-portal/ddamhapapianibkkkcclabgicmpnpdnj\",\n    firefox: null,\n    safari: null,\n    edge: \"https://chrome.google.com/webstore/detail/ripio-portal/ddamhapapianibkkkcclabgicmpnpdnj\",\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ripio://portal\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-KW7LIQVX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-KWK64UB7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.scramble/index.js\nvar wallet = {\n  id: \"com.scramble\",\n  name: \"Scramble\",\n  homepage: \"https://scramble-wallet.com\",\n  image_id: \"c00ef3da-aacb-4c27-66ae-3cb9537a4800\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/scramble-evm-btc-polkadot/dfkkefmblkgnecepjogenokjpagglfhj\",\n    firefox: \"https://addons.mozilla.org/en-US/firefox/addon/scramble-multichain-wallet/\",\n    safari: \"https://apps.apple.com/at/app/scramble-multichain-wallet/id6463812878?mt=12\",\n    edge: \"https://chrome.google.com/webstore/detail/scramble-evm-btc-polkadot/dfkkefmblkgnecepjogenokjpagglfhj\",\n    opera: \"https://chrome.google.com/webstore/detail/scramble-evm-btc-polkadot/dfkkefmblkgnecepjogenokjpagglfhj\"\n  },\n  rdns: \"com.scramble\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-KWK64UB7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-L5FHGFHX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.zengo/index.js\nvar wallet = {\n  id: \"com.zengo\",\n  name: \"Zengo Wallet\",\n  homepage: \"https://zengo.com/\",\n  image_id: \"6133c399-ae32-4eba-0c5a-0fb84492bf00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/zengo-crypto-bitcoin-wallet/id1440147115\",\n    android: \"https://play.google.com/store/apps/details?id=com.zengo.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"zengo://get.zengo.com/\",\n    universal: \"https://get.zengo.com/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-L5FHGFHX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-LFG2VXGV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.daffione/index.js\nvar wallet = {\n  id: \"com.daffione\",\n  name: \"DaffiOne\",\n  homepage: \"https://www.daffione.com/\",\n  image_id: \"1e87bcb9-452c-4ad7-471c-130ae0115000\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.me.daffione\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"DaffiOne:// wc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-LFG2VXGV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-M5EROV3A.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.opera/index.js\nvar wallet = {\n  id: \"com.opera\",\n  name: \"Opera Crypto Browser\",\n  homepage: \"http://opera.com\",\n  image_id: \"877fa1a4-304d-4d45-ca8e-f76d1a556f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/itunes-u/id1604311726?action=write-review\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://www.opera.com/crypto/next\",\n    firefox: \"https://www.opera.com/crypto/next\",\n    safari: \"https://www.opera.com/crypto/next\",\n    edge: \"https://www.opera.com/crypto/next\",\n    opera: \"https://www.opera.com/crypto/next\"\n  },\n  rdns: null,\n  mobile: {\n    native: \"cryptobrowser://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-M5EROV3A.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-MIWCOGLD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tiduswallet/index.js\nvar wallet = {\n  id: \"com.tiduswallet\",\n  name: \"Tidus Wallet \",\n  homepage: \"https://tiduswallet.com/\",\n  image_id: \"797bd108-d862-4d1b-d339-883de9a75000\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=co.nycrypto.tiduswallet&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"tiduswallet://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-MIWCOGLD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-MPMYNQIR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.opz/index.js\nvar wallet = {\n  id: \"com.opz\",\n  name: \"OPZ Wallet\",\n  homepage: \"https://www.opz.com/\",\n  image_id: \"bb347024-46c1-4be1-dd1f-98e6c51f8600\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.opz.dev&pli=1\",\n    mac: null,\n    windows: null,\n    linux: \"https://www.opz.com/apps/\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"opz-wallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-MPMYNQIR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-MT3HKQ3R.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.oasys-wallet/index.js\nvar wallet = {\n  id: \"com.oasys-wallet\",\n  name: \"Oasys Passport\",\n  homepage: \"https://www.oasys-wallet.com/\",\n  image_id: \"43eb1fb9-e0db-4c9b-d864-4d7fc5abcc00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/jp/app/oasys-passport/id6449960854\",\n    android: \"https://play.google.com/store/apps/details?id=com.oasys_wallet.oas_app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"oasys-wallet://\",\n    universal: \"https://www.oasys-wallet.com/wc/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-MT3HKQ3R.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-NFP3O76O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.lootrush/index.js\nvar wallet = {\n  id: \"com.lootrush\",\n  name: \"LootRush\",\n  homepage: \"https://www.lootrush.com/lootrush-wallet\",\n  image_id: \"lootrush.svg\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/lootrush-wallet/lfmmjkfllhmfmkcobchabopkcefjkoip\",\n    firefox: \"https://addons.mozilla.org/en-US/firefox/addon/lootrush-wallet/\",\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.lootrush\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-NFP3O76O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-NSXJ3MYN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitpay/index.js\nvar wallet = {\n  id: \"com.bitpay\",\n  name: \"BitPay Wallet\",\n  homepage: \"https://bitpay.com/wallet\",\n  image_id: \"553e8fff-37c9-4a62-5bfe-02ff22e1e200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/bitpay-bitcoin-wallet-card/id1149581638?platform=iphone\",\n    android: \"https://play.google.com/store/apps/details?id=com.bitpay.wallet\",\n    mac: \"https://apps.apple.com/us/app/bitpay-bitcoin-wallet-card/id1149581638?platform=ipad\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bitpay://\",\n    universal: \"https://link.bitpay.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-NSXJ3MYN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-O32AFMCX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.premanft/index.js\nvar wallet = {\n  id: \"com.premanft\",\n  name: \"PREMA Wallet\",\n  homepage: \"https://premanft.com/\",\n  image_id: \"6487869b-1165-4f30-aa3a-115665be8300\",\n  app: {\n    browser: \"https://premanft.com/\",\n    ios: \"https://apps.apple.com/us/app/prema%E3%82%A6%E3%82%A9%E3%83%AC%E3%83%83%E3%83%88-%E3%83%9E%E3%83%AB%E3%83%81%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%82%A2%E3%83%97%E3%83%AA/id1603556315\",\n    android: \"https://play.google.com/store/apps/details?id=co.jp.xcreation.premawallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"premawallet://\",\n    universal: \"https://premanft.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-O32AFMCX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-O7HEL5UM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.alphawallet/index.js\nvar wallet = {\n  id: \"com.alphawallet\",\n  name: \"AlphaWallet\",\n  homepage: \"https://alphawallet.com/\",\n  image_id: \"5b1cddfb-056e-4e78-029a-54de5d70c500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/alphawallet-eth-wallet/id1358230430\",\n    android: \"https://play.google.com/store/apps/details?id=io.stormbird.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"awallet://\",\n    universal: \"https://aw.app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-O7HEL5UM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-OKQHPEYA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.safemoon/index.js\nvar wallet = {\n  id: \"com.safemoon\",\n  name: \"SafeMoon\",\n  homepage: \"https://safemoon.com/\",\n  image_id: \"ea0140c7-787c-43a4-838f-d5ab6a342000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/safemoon/id1579735495\",\n    android: \"https://play.google.com/store/apps/details?id=net.safemoon.androidwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"safemoon://\",\n    universal: \"https://safemoon.com/wc/wc\"\n  },\n  desktop: {\n    native: \"safemoon://\",\n    universal: \"https://safemoon.com/wc/wc\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-OKQHPEYA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-OLXXEOCB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bybit/index.js\nvar wallet = {\n  id: \"com.bybit\",\n  name: \"Bybit Wallet\",\n  homepage: \"https://www.bybit.com/web3/\",\n  image_id: \"b9e64f74-0176-44fd-c603-673a45ed5b00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/US/app/id1488296980\",\n    android: \"https://play.google.com/store/apps/details?id=com.bybit.app&hl=en\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/bybit-wallet/pdliaogehgdbhbnmkklieghmmjkpigpa\",\n    firefox: null,\n    safari: null,\n    edge: \"https://chrome.google.com/webstore/detail/bybit-wallet/pdliaogehgdbhbnmkklieghmmjkpigpa\",\n    opera: null\n  },\n  rdns: \"com.bybit\",\n  mobile: {\n    native: \"bybitapp://open/route?targetUrl=by://web3/walletconnect/\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-OLXXEOCB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-P73TZQWI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.pierwallet/index.js\nvar wallet = {\n  id: \"com.pierwallet\",\n  name: \"pier\",\n  homepage: \"https://www.pierwallet.com\",\n  image_id: \"cf3f0da1-40ec-4940-aebe-df075513d100\",\n  app: {\n    browser: \"https://www.pierwallet.com\",\n    ios: \"https://apps.apple.com/lb/app/id1613187762\",\n    android: \"https://play.google.com/store/apps/details?id=one.nobank.app\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://pierwallet.xyz/wc\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-P73TZQWI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-PK4DXA46.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.unstoppabledomains/index.js\nvar wallet = {\n  id: \"com.unstoppabledomains\",\n  name: \"Unstoppable Domains\",\n  homepage: \"https://unstoppabledomains.com/\",\n  image_id: \"4725dda0-4471-4d0f-7adf-6bbe8b929c00\",\n  app: {\n    browser: \"https://unstoppabledomains.com/\",\n    ios: \"https://apps.apple.com/us/app/unstoppable-domains/id1544748602\",\n    android: \"https://play.google.com/store/apps/details?id=com.unstoppabledomains.manager\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"unstoppabledomains://\",\n    universal: \"https://unstoppabledomains.com/mobile\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-PK4DXA46.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-Q4R5QXMD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.sinohope/index.js\nvar wallet = {\n  id: \"com.sinohope\",\n  name: \"Sinohope\",\n  homepage: \"https://www.sinohope.com/\",\n  image_id: \"06d056b9-aba7-453c-ddaf-a077a448ea00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/sinohope-hotgroup-wallet/id1672956199\",\n    android: \"https://play.google.com/store/apps/details?id=com.sinohope.mpcwallet.app\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"sinohopeapp://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-Q4R5QXMD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-Q7LI3IVT.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.humbl/index.js\nvar wallet = {\n  id: \"com.humbl\",\n  name: \"HUMBL WALLET\",\n  homepage: \"https://www.humbl.com\",\n  image_id: \"1ac55ba2-aa98-4ed0-59b3-b3155dea4200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/humbl-wallet/id1627171234\",\n    android: \"https://play.google.com/store/apps/details?id=com.humbl.wallet.app&hl=en_US&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"humblwallet://\",\n    universal: \"https://wallet.search3.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-Q7LI3IVT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-QNHV5LXE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.mewwallet/index.js\nvar wallet = {\n  id: \"com.mewwallet\",\n  name: \"MEW wallet\",\n  homepage: \"https://mewwallet.com\",\n  image_id: \"e2024511-2c9b-46d7-3111-52df3d241700\",\n  app: {\n    browser: \"https://download.mewwallet.com/?source=wc\",\n    ios: \"https://apps.apple.com/app/id1464614025\",\n    android: \"https://play.google.com/store/apps/details?id=com.myetherwallet.mewwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: \"https://apps.apple.com/app/id1464614025\",\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"mewwallet://\",\n    universal: \"https://mewwallet.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-QNHV5LXE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-QQPVG7PP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.icewal/index.js\nvar wallet = {\n  id: \"com.icewal\",\n  name: \"icewal\",\n  homepage: \"https://icewal.com\",\n  image_id: \"bbfa8e6a-984d-4955-c919-8181e8bc9e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/uk/app/icewal/id1629607532\",\n    android: \"https://play.google.com/store/apps/details?id=com.icecorp.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"icewal://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-QQPVG7PP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-QUF6BW3N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bee/index.js\nvar wallet = {\n  id: \"com.bee\",\n  name: \"BeeWallet\",\n  homepage: \"https://www.bee.com/en\",\n  image_id: \"77743ed9-5ac6-48f7-867d-0f98e481b500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/id1529988919\",\n    android: \"https://play.google.com/store/apps/details?id=network.bee.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/bee-wallet/nankopfjhdflikcokhgohiaoehnjfako\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bee://\",\n    universal: \"https://main.apple.bee9527.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-QUF6BW3N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-RCO2EJCO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.cryptnox/index.js\nvar wallet = {\n  id: \"com.cryptnox\",\n  name: \"Cryptnox Wallet\",\n  homepage: \"https://cryptnox.com\",\n  image_id: \"2947b7c8-8966-4485-a98d-25fe43c16700\",\n  app: {\n    browser: \"https://cryptnox.com\",\n    ios: \"https://apps.apple.com/app/id1583011693\",\n    android: \"https://play.google.com/store/apps/details?id=com.cryptnox.cryptnoxwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"cryptnox://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-RCO2EJCO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-RVMYGOTN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitso/index.js\nvar wallet = {\n  id: \"com.bitso\",\n  name: \"Bitso Web3 Wallet\",\n  homepage: \"https://bitso.com/web3-wallet\",\n  image_id: \"7e4953fb-de22-4761-1ff6-8c494549aa00\",\n  app: {\n    browser: \"https://bitso.com/web3-wallet\",\n    ios: \"https://apps.apple.com/br/app/bitso-%C3%A9-f%C3%A1cil-comprar-bitcoin/id1292836438\",\n    android: \"https://play.google.com/store/apps/details?id=com.bitso.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bitso://bitso.com/web3-wallet\",\n    universal: \"https://bitso.com/web3-wallet\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-RVMYGOTN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-SD7QZXVI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.cardstack/index.js\nvar wallet = {\n  id: \"com.cardstack\",\n  name: \"Card Wallet\",\n  homepage: \"https://cardstack.com/earn-together\",\n  image_id: \"325428cf-c212-4d83-a434-7f48902d2c00\",\n  app: {\n    browser: null,\n    ios: \"https://cardstack.com/ios\",\n    android: \"https://cardstack.com/android\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"cardwallet://\",\n    universal: \"https://wallet.cardstack.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-SD7QZXVI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-SGLYOLT6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.nodle/index.js\nvar wallet = {\n  id: \"com.nodle\",\n  name: \"Nodle\",\n  homepage: \"https://www.nodle.com/products/cash_app\",\n  image_id: \"39badb5c-adeb-4188-c803-a63a5cffdf00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/nodle-app-to-earn-crypto/id1480763553\",\n    android: \"https://play.google.com/store/apps/details?id=io.nodle.cash\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"nodle://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-SGLYOLT6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-SGOLCA56.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ambire/index.js\nvar wallet = {\n  id: \"com.ambire\",\n  name: \"Ambire Wallet\",\n  homepage: \"https://www.ambire.com\",\n  image_id: \"c39b3a16-1a38-4588-f089-cb7aeb584700\",\n  app: {\n    browser: \"https://wallet.ambire.com\",\n    ios: \"https://apps.apple.com/bg/app/ambire-smart-crypto-wallet/id6444863857\",\n    android: \"https://play.google.com/store/apps/details?id=com.ambire.wallet&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ambire://\",\n    universal: \"https://mobile.ambire.com\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://wallet.ambire.com\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-SGOLCA56.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-SH3JOPDV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.shapeshift/index.js\nvar wallet = {\n  id: \"com.shapeshift\",\n  name: \"ShapeShift\",\n  homepage: \"https://shapeshift.com\",\n  image_id: \"f8de2385-7d9b-4b31-bfed-5555b14fad00\",\n  app: {\n    browser: \"https://app.shapeshift.com\",\n    ios: \"https://apps.apple.com/us/app/shapeshift-crypto-platform/id996569075\",\n    android: \"https://play.google.com/store/apps/details?id=com.shapeshift.droid_shapeshift&hl=en_US&gl=US&pli=1\",\n    mac: \"https://apps.apple.com/us/app/shapeshift-crypto-platform/id996569075\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://shapeshift.app.link/\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://app.shapeshift.com\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-SH3JOPDV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-SKB3SMG6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.safepal/index.js\nvar wallet = {\n  id: \"com.safepal\",\n  name: \"SafePal\",\n  homepage: \"https://safepal.com/\",\n  image_id: \"252753e7-b783-4e03-7f77-d39864530900\",\n  app: {\n    browser: \"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa\",\n    ios: \"https://apps.apple.com/app/safepal-wallet/id1548297139\",\n    android: \"https://play.google.com/store/apps/details?id=io.safepal.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/safepal-extension-wallet/lgmpcpglpngdoalbgeoldeajfclnhafa\",\n    firefox: \"https://addons.mozilla.org/firefox/addon/safepal-extension-wallet\",\n    safari: null,\n    edge: \"https://microsoftedge.microsoft.com/addons/detail/safepal%E6%8F%92%E4%BB%B6%E9%92%B1%E5%8C%85/apenkfbbpmhihehmihndmmcdanacolnh\",\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"safepalwallet://\",\n    universal: \"https://link.safepal.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-SKB3SMG6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-SMDDEG7M.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ennowallet/index.js\nvar wallet = {\n  id: \"com.ennowallet\",\n  name: \"Enno Wallet\",\n  homepage: \"https://www.ennowallet.com\",\n  image_id: \"ae4f5167-0b61-43bd-7d76-1f8579271000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/enno-wallet/id1577011660#iosmph\",\n    android: \"https://play.google.com/store/apps/details?id=com.app.awqsome.ennowallet#gpmph\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ennowallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-SMDDEG7M.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-SPRTZXVD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.dolletwallet/index.js\nvar wallet = {\n  id: \"com.dolletwallet\",\n  name: \"Dollet\",\n  homepage: \"https://dolletwallet.com/\",\n  image_id: \"21679e58-e829-44f6-78d3-6a9d6e9ce900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/dollet/id6451143361\",\n    android: \"https://play.google.com/store/apps/details?id=com.dolllet.mainnet&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"dolletwc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-SPRTZXVD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-TDMJBI2M.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bifrostwallet/index.js\nvar wallet = {\n  id: \"com.bifrostwallet\",\n  name: \"Bifrost Wallet\",\n  homepage: \"https://bifrostwallet.com\",\n  image_id: \"86be07e2-6652-4fd1-5f33-651682c95400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/bifrost-wallet/id1577198351\",\n    android: \"https://play.google.com/store/apps/details?id=com.bifrostwallet.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.bifrostwallet\",\n  mobile: {\n    native: \"bifrostwallet://\",\n    universal: \"https://app.bifrostwallet.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-TDMJBI2M.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-TE3IRJVG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.midoin/index.js\nvar wallet = {\n  id: \"com.midoin\",\n  name: \"midoin\",\n  homepage: \"https://midoin.com\",\n  image_id: \"9728246c-9504-4b0f-9881-ed848c9fa000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/midoin/id1374974523\",\n    android: \"https://play.google.com/store/apps/details?id=com.midoin\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"midoin://\",\n    universal: \"https://midoin.app.link\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-TE3IRJVG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-TH3B64WW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.blockchain/index.js\nvar wallet = {\n  id: \"com.blockchain\",\n  name: \"Blockchain.com\",\n  homepage: \"https://www.blockchain.com/en/app\",\n  image_id: \"6f913b80-86c0-46f9-61ca-cc90a1805900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/blockchain-bitcoin-wallet/id493253309\",\n    android: \"https://play.google.com/store/apps/details?id=piuk.blockchain.android\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"blockchain-wallet://\",\n    universal: \"https://www.blockchain.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-TH3B64WW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-TV4K6JFU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.paybolt/index.js\nvar wallet = {\n  id: \"com.paybolt\",\n  name: \"PayBolt\",\n  homepage: \"https://www.paybolt.com\",\n  image_id: \"cc8f4e0c-56a8-465a-6cb6-3e9d60846500\",\n  app: {\n    browser: \"https://www.paybolt.com\",\n    ios: \"https://apps.apple.com/app/paybolt-crypto/id1599880290\",\n    android: \"https://play.google.com/store/apps/details?id=com.fincrypt.paybolt\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"paybolt://Wallet\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-TV4K6JFU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-UGZ7W7CO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.azcoiner/index.js\nvar wallet = {\n  id: \"com.azcoiner\",\n  name: \"AZCoiner\",\n  homepage: \"https://azcoiner.com/\",\n  image_id: \"c6601184-7eb7-46c9-f6ad-0808cfd16100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/vn/app/azcoiner/id6467728839?l=vi\",\n    android: \"https://play.google.com/store/apps/details?id=com.azc.azcoiner&hl=vi-VN\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"azcoiner://\",\n    universal: \"https://azcoiner.com/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-UGZ7W7CO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-UJZJA6SZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.dextrade/index.js\nvar wallet = {\n  id: \"com.dextrade\",\n  name: \"DexTrade\",\n  homepage: \"https://dextrade.com\",\n  image_id: \"d33237c0-a4e1-4339-9db8-a1087311c400\",\n  app: {\n    browser: \"https://pwa.dextrade.com\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/dextrade/nmladckinifchdidkoaagbcpnieocoah?hl=en\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.dextrade\",\n  mobile: {\n    native: null,\n    universal: \"https://pwa.dextrade.com\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://pwa.dextrade.com\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-UJZJA6SZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-URZWZY6W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tomi/index.js\nvar wallet = {\n  id: \"com.tomi\",\n  name: \"tomi Wallet\",\n  homepage: \"https://tomi.com/wallet\",\n  image_id: \"ebc78bed-8771-4745-0fbd-f846cc107100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/tomipay-digital-payment-system/id1643501440\",\n    android: \"https://play.google.com/store/apps/details?id=com.tomiapp.production\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/tomipay/feoojlbclclaoifjiedeeenhldlenopl\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"tomiwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-URZWZY6W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-USI3H3ZY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.zypto/index.js\nvar wallet = {\n  id: \"com.zypto\",\n  name: \"Zypto\",\n  homepage: \"https://zypto.com\",\n  image_id: \"4f6ae851-7fe6-41ac-5714-3a910b2ff400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/zypto-all-in-one-crypto-wallet/id6463755992\",\n    android: \"https://play.google.com/store/apps/details?id=com.zypto&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.zypto\",\n  mobile: {\n    native: \"zypto://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-USI3H3ZY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-UUE4VT6F.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.3swallet/index.js\nvar wallet = {\n  id: \"com.3swallet\",\n  name: \"3S Wallet\",\n  homepage: \"https://3swallet.com/\",\n  image_id: \"f3b6a89d-ec8f-49dc-e07f-6bf723e1e500\",\n  app: {\n    browser: \"https://3swallet.com/\",\n    ios: \"https://apps.apple.com/us/app/3s-wallet-crypto-wallet/id1622316272\",\n    android: \"https://play.google.com/store/apps/details?id=network.bho.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bhcwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-UUE4VT6F.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-UWJR5TCW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coinsdo/index.js\nvar wallet = {\n  id: \"com.coinsdo\",\n  name: \"CoinWallet\",\n  homepage: \"https://www.coinsdo.com\",\n  image_id: \"1c0cd352-ce8e-4bcc-f91d-8763eab60b00\",\n  app: {\n    browser: \"https://www.coinsdo.com/wallet_coinsdo.html\",\n    ios: \"https://apps.apple.com/us/app/coinsdo-wallet-btc-eth-wallet/id6479635869\",\n    android: \"https://play.google.com/store/apps/details?id=com.coinsdo.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/coinwallet-btc-crypto-wal/oafedfoadhdjjcipmcbecikgokpaphjk\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"coinwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: \"coinwallet://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-UWJR5TCW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-UYAKF2N2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.monarchwallet/index.js\nvar wallet = {\n  id: \"com.monarchwallet\",\n  name: \"Monarch Wallet\",\n  homepage: \"https://monarchwallet.com\",\n  image_id: \"c664d955-8a1e-4460-3917-4cfcf198f000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/monarch-wallet/id1386397997\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://monarchwallet.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-UYAKF2N2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-V5JX4VHE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coingrig/index.js\nvar wallet = {\n  id: \"com.coingrig\",\n  name: \"Coingrig\",\n  homepage: \"https://coingrig.com\",\n  image_id: \"18e38e41-a387-4402-ca31-6d2d5eb91100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/coingrig-crypto-btc-wallet/id1583464451\",\n    android: \"https://play.google.com/store/apps/details?id=com.coingrig\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"coingrig://\",\n    universal: \"https://link.coingrig.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-V5JX4VHE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-VCBNOXWU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.abra/index.js\nvar wallet = {\n  id: \"com.abra\",\n  name: \"Abra Wallet\",\n  homepage: \"https://abra.com\",\n  image_id: \"2219db01-e0c9-471c-5def-fd3b4e7a7a00\",\n  app: {\n    browser: \"https://abra.com\",\n    ios: \"https://abra.com\",\n    android: \"https://abra.com\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"abra://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-VCBNOXWU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-VMFG63WD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.wemix/index.js\nvar wallet = {\n  id: \"com.wemix\",\n  name: \"WemixWallet\",\n  homepage: \"https://www.wemix.com/\",\n  image_id: \"2439d9a4-2c1e-4d29-3bc6-654fc23a4b00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/kr/app/wemix-wallet/id1628230003\",\n    android: \"https://play.google.com/store/apps/details?id=com.wemixfoundation.wemixwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wemixwallet30://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-VMFG63WD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-VV2KAHH7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coin98/index.js\nvar wallet = {\n  id: \"com.coin98\",\n  name: \"Coin98 Super Wallet\",\n  homepage: \"https://coin98.com/wallet\",\n  image_id: \"e7c6d5d0-b986-4348-de22-fc940e1aee00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/vn/app/coin98-wallet/id1561969966\",\n    android: \"https://play.google.com/store/apps/details?id=coin98.crypto.finance.media&hl=vi&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.coin98\",\n  mobile: {\n    native: \"coin98://\",\n    universal: \"https://coin98.com/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-VV2KAHH7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-WWOKZBON.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.secuxtech/index.js\nvar wallet = {\n  id: \"com.secuxtech\",\n  name: \"SecuX\",\n  homepage: \"https://secuxtech.com/\",\n  image_id: \"98183be0-3125-45ee-a6b6-fbd47ebefd00\",\n  app: {\n    browser: \"https://wallet.secuxtech.com/secuxess/#/\",\n    ios: \"https://apps.apple.com/tw/app/secux-mobile/id1477437607\",\n    android: \"https://play.google.com/store/apps/details?id=com.secuxapp&hl=zh_TW&gl=US&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"secux://\",\n    universal: \"https://wsweb.secuxtech.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-WWOKZBON.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-X7JZBOMI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitcoin/index.js\nvar wallet = {\n  id: \"com.bitcoin\",\n  name: \"Bitcoin.com Wallet\",\n  homepage: \"https://www.bitcoin.com/\",\n  image_id: \"0d7938e1-9b3b-4d8b-177b-98188c4cf400\",\n  app: {\n    browser: \"https://wallet.bitcoin.com/\",\n    ios: \"https://apps.apple.com/us/app/bitcoin-wallet-by-bitcoin-com/id1252903728\",\n    android: \"https://play.google.com/store/apps/details?id=com.bitcoin.mwallet\",\n    mac: \"https://apps.apple.com/us/app/bitcoin-wallet-by-bitcoin-com/id1252903728\",\n    windows: \"https://wallet.bitcoin.com/\",\n    linux: \"https://wallet.bitcoin.com/\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bitcoincom://\",\n    universal: \"https://wallet.bitcoin.com/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-X7JZBOMI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-XBDXJT7H.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coinomi/index.js\nvar wallet = {\n  id: \"com.coinomi\",\n  name: \"Coinomi\",\n  homepage: \"https://www.coinomi.com/\",\n  image_id: \"3b446d16-a908-40c8-5835-9a6efe90dd00\",\n  app: {\n    browser: null,\n    ios: \"https://itunes.apple.com/app/coinomi-wallet/id1333588809\",\n    android: \"https://play.google.com/store/apps/details?id=com.coinomi.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"coinomi://\",\n    universal: \"https://coinomi.page.link\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-XBDXJT7H.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-XCMJDOF3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.peakdefi/index.js\nvar wallet = {\n  id: \"com.peakdefi\",\n  name: \"PEAKDEFI\",\n  homepage: \"https://peakdefi.com/\",\n  image_id: \"918006e2-2f6d-4233-0e72-10c2caaed500\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.peakdefiwallet&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-XCMJDOF3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-XIFKBSI7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.kriptonio/index.js\nvar wallet = {\n  id: \"com.kriptonio\",\n  name: \"Kriptonio\",\n  homepage: \"https://kriptonio.com\",\n  image_id: \"331e57d3-d157-4bc3-8ea5-48a03f705e00\",\n  app: {\n    browser: \"https://kriptonio.com\",\n    ios: \"https://apps.apple.com/hr/app/kriptonio/id6444807361\",\n    android: \"https://play.google.com/store/apps/details?id=com.kriptonio.mobile.android\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"kriptonio://\",\n    universal: \"https://app.kriptonio.com/mobile\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-XIFKBSI7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-XUD7P7EW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ivirse/index.js\nvar wallet = {\n  id: \"com.ivirse\",\n  name: \"IApp\",\n  homepage: \"https://ivirse.com\",\n  image_id: \"5da95e88-2d6c-4880-e6d8-b6a8d0663900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/vn/app/oomy/id6446265246\",\n    android: \"https://play.google.com/store/apps/details?id=com.ivirse.figame\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ivirse://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-XUD7P7EW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-YMKJ5J5V.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.x9wallet/index.js\nvar wallet = {\n  id: \"com.x9wallet\",\n  name: \"X9Wallet\",\n  homepage: \"https://x9wallet.com\",\n  image_id: \"f64f7bf8-62ea-4d1e-087b-82d374d04d00\",\n  app: {\n    browser: null,\n    ios: \"https://expo.dev/accounts/teza8899x/projects/x9wallet/updates/d8aa245f-076d-4634-b2ba-e23489b04dde\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"x9wallet://a\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-YMKJ5J5V.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-Z7KH6LCA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.greengloryglobal/index.js\nvar wallet = {\n  id: \"com.greengloryglobal\",\n  name: \"Blockaura\",\n  homepage: \"https://greengloryglobal.com/\",\n  image_id: \"8cc7ddbc-a257-4383-4f84-3847e707bb00\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.blockaura_classic\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"blockaura://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-Z7KH6LCA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-ZCJBLCGU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.veworld/index.js\nvar wallet = {\n  id: \"com.veworld\",\n  name: \"VeWorld Mobile\",\n  homepage: \"https://veworld.com\",\n  image_id: \"afa5084b-02da-4dd4-418b-9f6410e34e00\",\n  app: {\n    browser: null,\n    ios: \"https://www.veworld.com/\",\n    android: \"https://www.veworld.com/\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"veworld://org.vechain.veworld.app/\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-ZCJBLCGU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-ZFAFSEQR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.payperless/index.js\nvar wallet = {\n  id: \"com.payperless\",\n  name: \"Payperless\",\n  homepage: \"https://payperless.com\",\n  image_id: \"4a867e30-44c9-4627-6281-33457b8e2100\",\n  app: {\n    browser: \"https://payperless.com\",\n    ios: \"https://apps.apple.com/us/app/payperless-wallet/id1552741313\",\n    android: \"https://play.google.com/store/apps/details?id=com.payperless.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \" payperless.com://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-ZFAFSEQR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-ZL3AON34.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.pandoshi/index.js\nvar wallet = {\n  id: \"com.pandoshi\",\n  name: \"Pandoshi Wallet\",\n  homepage: \"https://pandoshi.com\",\n  image_id: \"d5be0305-ff38-4412-6089-a94c2e445300\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.pandoshi.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"pandoshiwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-ZL3AON34.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-ZRV5E3J2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.apollox/index.js\nvar wallet = {\n  id: \"com.apollox\",\n  name: \"ApolloX\",\n  homepage: \"https://www.apollox.com/en\",\n  image_id: \"80ab63a2-1b32-4140-3577-9fbc8ea82e00\",\n  app: {\n    browser: \"https://www.apollox.com/en\",\n    ios: \"https://apps.apple.com/us/app/apx-apollox/id1589405398\",\n    android: \"https://play.google.com/store/apps/details?id=com.apollox.android\",\n    mac: \"https://www.apollox.com/en\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://app.apollox.finance\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://app.apollox.finance\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-ZRV5E3J2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-ZU576A7T.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.authentrend/index.js\nvar wallet = {\n  id: \"com.authentrend\",\n  name: \"AT.Wallet\",\n  homepage: \"https://authentrend.com/at-wallet/\",\n  image_id: \"98bd3b9a-097e-4743-8808-986b4ad1ad00\",\n  app: {\n    browser: \"https://authentrend.com/at-wallet/\",\n    ios: \"https://apps.apple.com/app/at-wallet/id1479171310\",\n    android: \"https://play.google.com/store/apps/details?id=com.authentrend.atwallet\",\n    mac: \"https://apps.apple.com/app/at-wallet/id1490097962\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"atwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: \"atwallet://\",\n    universal: \"https://apps.apple.com/us/app/at-wallet/id1490097962?mt=12\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-ZU576A7T.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com-ZXAV47A3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.aktionariat/index.js\nvar wallet = {\n  id: \"com.aktionariat\",\n  name: \"Aktionariat\",\n  homepage: \"https://aktionariat.com/\",\n  image_id: \"6d18e8ea-b536-4038-c5bf-94a499d5a400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ch/app/aktionariat/id1518326813\",\n    android: \"https://play.google.com/store/apps/details?id=com.aktionariat.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"aktionariat://\",\n    universal: \"https://app.aktionariat.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com-ZXAV47A3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.bitget-2APLDUWF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitget.web3/index.js\nvar wallet = {\n  id: \"com.bitget.web3\",\n  name: \"Bitget Wallet\",\n  homepage: \"https://web3.bitget.com\",\n  image_id: \"68e8063a-ff69-4941-3b40-af09e2fcd700\",\n  app: {\n    browser: \"https://bitkeep.com\",\n    ios: \"https://web3.bitget.com/en/wallet-download?type=0\",\n    android: \"https://web3.bitget.com/en/wallet-download?type=0\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/bitkeep-crypto-nft-wallet/jiidiaalihmmhddjgbnbgdfflelocpak\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bitkeep://\",\n    universal: \"https://bkapp.vip\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.bitget-2APLDUWF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.blanqlabs-SYJXQAS6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.blanqlabs.wallet/index.js\nvar wallet = {\n  id: \"com.blanqlabs.wallet\",\n  name: \"Blanq\",\n  homepage: \"https://www.blanqlabs.com\",\n  image_id: \"d02dcb81-d279-4414-627a-681dcad51200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/blanq-wallet-buy-store-crypto/id6470715307\",\n    android: \"https://play.google.com/store/apps/details?id=xyz.blanq.mobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.blanqlabs.wallet\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: \"https://wallet.blanq.app\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.blanqlabs-SYJXQAS6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.blazpay-G2RYDJ7L.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.blazpay.wallet/index.js\nvar wallet = {\n  id: \"com.blazpay.wallet\",\n  name: \"Blazpay\",\n  homepage: \"https://blazpay.com/download\",\n  image_id: \"ba0ed3d1-e94c-408d-c8f5-a384edcba700\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/blazpay/cecndeddohekaklkfehmcnhejflmclhc\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.blazpay.wallet\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.blazpay-G2RYDJ7L.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.brave-D3ZUHE7V.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.brave.wallet/index.js\nvar wallet = {\n  id: \"com.brave.wallet\",\n  name: \"Brave Wallet\",\n  homepage: \"https://brave.com/wallet/\",\n  image_id: \"8cecad66-73e3-46ee-f45f-01503c032f00\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://brave.com/wallet/\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.brave.wallet\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.brave-D3ZUHE7V.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.coinbase-XCXEA6KF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coinbase.wallet/index.js\nvar wallet = {\n  id: \"com.coinbase.wallet\",\n  name: \"Coinbase Wallet\",\n  homepage: \"https://www.coinbase.com/wallet/\",\n  image_id: \"a5ebc364-8f91-4200-fcc6-be81310a0000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/apple-store/id1278383455\",\n    android: \"https://play.google.com/store/apps/details?id=org.toshi\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad?hl=en\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.coinbase.wallet\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.coinbase-XCXEA6KF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.coolbitx-54F2B4QS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coolbitx.cwsapp/index.js\nvar wallet = {\n  id: \"com.coolbitx.cwsapp\",\n  name: \"CoolWallet\",\n  homepage: \"https://coolwallet.io/\",\n  image_id: \"f581365d-e844-4d21-8e35-44a755a32d00\",\n  app: {\n    browser: null,\n    ios: \"https://itunes.apple.com/us/app/coolwallet-s-2018/id1328764142\",\n    android: \"https://play.google.com/store/apps/details?id=com.coolbitx.cwsapp\",\n    mac: \"https://itunes.apple.com/us/app/coolwallet-s-2018/id1328764142\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.coolbitx.cwsapp\",\n  mobile: {\n    native: \"coolwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.coolbitx-54F2B4QS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.crypto-53A63ZCL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.crypto.wallet/index.js\nvar wallet = {\n  id: \"com.crypto.wallet\",\n  name: \"Crypto.com | DeFi Wallet\",\n  homepage: \"https://crypto.com/\",\n  image_id: \"88388eb4-4471-4e72-c4b4-852d496fea00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/US/app/id1512048310?mt=8\",\n    android: \"https://play.google.com/store/apps/details?id=com.defi.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/cryptocom-wallet-extensio/hifafgmccdpekplomjjkcfgodnhcellj\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.crypto.wallet\",\n  mobile: {\n    native: \"dfw://\",\n    universal: \"https://wallet.crypto.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.crypto-53A63ZCL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.elrond.maiar-CPDDYEOU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.elrond.maiar.wallet/index.js\nvar wallet = {\n  id: \"com.elrond.maiar.wallet\",\n  name: \"xPortal\",\n  homepage: \"https://xportal.com\",\n  image_id: \"ad14e385-5452-457b-4b84-31e4d4c75f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ro/app/xportal/id1519405832\",\n    android: \"https://play.google.com/store/apps/details?id=com.elrond.maiar.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.elrond.maiar.wallet\",\n  mobile: {\n    native: \"xportal://\",\n    universal: \"https://xport.al\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.elrond.maiar-CPDDYEOU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.fastex-OSMD2QUY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.fastex.wallet/index.js\nvar wallet = {\n  id: \"com.fastex.wallet\",\n  name: \"Fastex Wallet\",\n  homepage: \"https://fastexwallet.com\",\n  image_id: \"a38db32b-8291-4d25-9aae-4bf4b6e6f300\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/fastex-wallet/id6474118944\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.fastex.wallet\",\n  mobile: {\n    native: \"fastex-wallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.fastex-OSMD2QUY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.feralfile-6FVJKEDQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.feralfile.app/index.js\nvar wallet = {\n  id: \"com.feralfile.app\",\n  name: \"Feral File\",\n  homepage: \"https://app.feralfile.com\",\n  image_id: \"0fc3d016-d52a-4e84-2bb0-5d0a12964500\",\n  app: {\n    browser: \"https://autonomy.io\",\n    ios: \"https://apps.apple.com/us/app/autonomy-app/id1544022728\",\n    android: \"https://play.google.com/store/apps/details?id=com.bitmark.autonomy_client\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"autonomy-wc://\",\n    universal: \"https://autonomy.io/apps/wc\"\n  },\n  desktop: {\n    native: \"autonomy://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.feralfile-6FVJKEDQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.hashpack-VBVIF33I.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.hashpack.wallet/index.js\nvar wallet = {\n  id: \"com.hashpack.wallet\",\n  name: \"HashPack\",\n  homepage: \"https://hashpack.app\",\n  image_id: \"8d55dd5a-7c9f-4929-d2d1-00564e41ac00\",\n  app: {\n    browser: \"https://wallet.hashpack.app/\",\n    ios: \"https://apps.apple.com/app/id6444389849\",\n    android: \"https://play.google.com/store/apps/details?id=app.hashpack.wallet.twa\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/hashpack/gjagmgiddbbciopjhllkdnddhcglnemk\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.hashpack.wallet\",\n  mobile: {\n    native: \"hashpack://\",\n    universal: \"https://link.hashpack.app\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://link.hashpack.app\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.hashpack-VBVIF33I.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.meld-U3J7XNQI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.meld.app/index.js\nvar wallet = {\n  id: \"com.meld.app\",\n  name: \"MELDapp\",\n  homepage: \"https://app.meld.com\",\n  image_id: \"7946da4c-c8b7-4037-f044-8c3f7f1cb200\",\n  app: {\n    browser: \"https://app.meld.com\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.meld.app\",\n  mobile: {\n    native: \"meld://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: \"https://app.meld.com\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.meld-U3J7XNQI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.moongate-IFYOW5HA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.moongate.one/index.js\nvar wallet = {\n  id: \"com.moongate.one\",\n  name: \"MG\",\n  homepage: \"https://moongate.one\",\n  image_id: \"84946308-413c-4191-5414-a325547a5c00\",\n  app: {\n    browser: \"https://wallet.moongate.one/\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://wallet.moongate.one/\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.moongate.one\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.moongate-IFYOW5HA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.mpcvault-5RS5XOJS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.mpcvault.broswerplugin/index.js\nvar wallet = {\n  id: \"com.mpcvault.broswerplugin\",\n  name: \"MPCVault | Team crypto wallet\",\n  homepage: \"https://mpcvault.com\",\n  image_id: \"3cbf71ea-c90b-427c-6b2c-a9a7c7c0d500\",\n  app: {\n    browser: \"https://console.mpcvault.com\",\n    ios: \"https://apps.apple.com/us/app/mpcvault/id1622756458\",\n    android: \"https://play.google.com/store/apps/details?id=com.mpcvault.mobileapp.android\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/mpcvault/jgfmfplofjigjfokigdiaiibhonfnedj\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.mpcvault.broswerplugin\",\n  mobile: {\n    native: \"com.mpcvault.mobileapp://wccallback\",\n    universal: \"https://ulink.mpcvault.com/wccallback\"\n  },\n  desktop: {\n    native: \"com.mpcvault.mobileapp://wccallback\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.mpcvault-5RS5XOJS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.okex-ASVE2B3U.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.okex.wallet/index.js\nvar wallet = {\n  id: \"com.okex.wallet\",\n  name: \"OKX Wallet\",\n  homepage: \"https://www.okx.com/web3\",\n  image_id: \"45f2f08e-fc0c-4d62-3e63-404e72170500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/okx-buy-bitcoin-eth-crypto/id1327268470\",\n    android: \"https://play.google.com/store/apps/details?id=com.okinc.okex.gp\",\n    mac: \"https://www.okx.com/download\",\n    windows: \"https://www.okx.com/download\",\n    linux: \"https://www.okx.com/download\",\n    chrome: \"https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.okex.wallet\",\n  mobile: {\n    native: \"okex://main\",\n    universal: \"https://www.okx.com/download\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.okex-ASVE2B3U.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.poolsmobility-MPUANJAV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.poolsmobility.wallet/index.js\nvar wallet = {\n  id: \"com.poolsmobility.wallet\",\n  name: \"poolswallet\",\n  homepage: \"https://wallet.poolsmobility.com/\",\n  image_id: \"1bd15c9e-cd7c-48e2-af7d-47fda2236600\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/pools-wallet/id6446882533\",\n    android: \"https://play.google.com/store/apps/details?id=com.wallet.pools&hl=en_US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"poolswallet://deeplink.poolsmobility.com\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.poolsmobility-MPUANJAV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.robinhood-ZVFBQFK2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.robinhood.wallet/index.js\nvar wallet = {\n  id: \"com.robinhood.wallet\",\n  name: \"Robinhood Wallet\",\n  homepage: \"https://robinhood.com/web3-wallet/\",\n  image_id: \"dfe0e3e3-5746-4e2b-12ad-704608531500\",\n  app: {\n    browser: \"https://robinhood.com/web3-wallet/\",\n    ios: \"https://robinhood.com/web3-wallet/\",\n    android: \"https://play.google.com/store/apps/details?id=com.robinhood.gateway\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://robinhood.com/web3-wallet/\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.robinhood.wallet\",\n  mobile: {\n    native: \"robinhood-wallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.robinhood-ZVFBQFK2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.roninchain-VOI4TK6H.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.roninchain.wallet/index.js\nvar wallet = {\n  id: \"com.roninchain.wallet\",\n  name: \"Ronin Wallet\",\n  homepage: \"https://wallet.roninchain.com/\",\n  image_id: \"bd78de7e-36da-4552-ebdd-2e420ba05900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/ronin-wallet/id1592675001\",\n    android: \"https://play.google.com/store/apps/details?id=com.skymavis.genesis\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/ronin-wallet/fnjhmkhhmkbjkkabndcnnogagogbneec\",\n    firefox: \"https://addons.mozilla.org/firefox/addon/ronin-wallet/\",\n    safari: null,\n    edge: \"https://microsoftedge.microsoft.com/addons/detail/ronin-wallet/kjmoohlgokccodicjjfebfomlbljgfhk\",\n    opera: null\n  },\n  rdns: \"com.roninchain.wallet\",\n  mobile: {\n    native: \"roninwallet://\",\n    universal: \"https://wallet.roninchain.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.roninchain-VOI4TK6H.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.saakuru-3DH4OCRJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.saakuru.app/index.js\nvar wallet = {\n  id: \"com.saakuru.app\",\n  name: \"Saakuru All-in-One crypto App\",\n  homepage: \"https://app.saakuru.com\",\n  image_id: \"bb9120f9-9757-4aae-0378-3e4dc2f82100\",\n  app: {\n    browser: \"https://getmeta.one/\",\n    ios: \"https://apps.apple.com/us/app/saakuru-all-in-one-crypto-app/id1627212812\",\n    android: \"https://play.google.com/store/apps/details?id=ventures.aag.metaone\",\n    mac: \"https://apps.apple.com/lt/app/saakuru-all-in-one-crypto-app/id1627212812\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"metaone://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.saakuru-3DH4OCRJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.sabay-NHKDAQVI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.sabay.wallet/index.js\nvar wallet = {\n  id: \"com.sabay.wallet\",\n  name: \"Sabay Wallet App\",\n  homepage: \"https://wallet.sabay.com\",\n  image_id: \"c4df7014-abaf-4016-8180-fb994804b400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/kh/app/sabay-wallet/id6449341309\",\n    android: \"https://play.google.com/store/apps/details?id=kh.com.sabay.sabaywallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"myApp://kh.com.sabay.sabaywallet\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.sabay-NHKDAQVI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.trustwallet-QTE52ZJ2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.trustwallet.app/index.js\nvar wallet = {\n  id: \"com.trustwallet.app\",\n  name: \"Trust Wallet\",\n  homepage: \"https://trustwallet.com/\",\n  image_id: \"7677b54f-3486-46e2-4e37-bf8747814f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/apple-store/id1288339409\",\n    android: \"https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/trust-wallet/egjidjbpglichdcondbcbdnbeeppgdph\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.trustwallet.app\",\n  mobile: {\n    native: \"trust://\",\n    universal: \"https://link.trustwallet.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.trustwallet-QTE52ZJ2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/com.walletconnect-QWEQRBQR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.walletconnect.com/index.js\nvar wallet = {\n  id: \"com.walletconnect.com\",\n  name: \"SampleW\",\n  homepage: \"https://walletconnect.com\",\n  image_id: \"b81aaf2d-3548-4e65-46cd-fd59fbb6b300\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://cloud.walletconnect.com\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"com.walletconnect.com\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: \"sampleW://\",\n    universal: \"https://wallet-connect.sampleW.com\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=com.walletconnect-QWEQRBQR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/concat-hex-2F4R6DIF.js",
    "content": "import {\n  concatHex\n} from \"./chunk-4BCIASJM.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  concatHex\n};\n//# sourceMappingURL=concat-hex-2F4R6DIF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/contract-GEGWMZWS.js",
    "content": "import {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getContract\n};\n//# sourceMappingURL=contract-GEGWMZWS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/controller-W2QS5UC4.js",
    "content": "import {\n  autoConnectWC,\n  connectWC,\n  isWalletConnect\n} from \"./chunk-RC344ZND.js\";\nimport \"./chunk-YGRUPXVB.js\";\nimport \"./chunk-XB34LHR5.js\";\nimport \"./chunk-5U5XBS6S.js\";\nimport \"./chunk-XC5J5ANL.js\";\nimport \"./chunk-G26WKBGM.js\";\nimport \"./chunk-7AY3QZZV.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-I2GEMA2B.js\";\nimport \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  autoConnectWC,\n  connectWC,\n  isWalletConnect\n};\n//# sourceMappingURL=controller-W2QS5UC4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/de-BT7LP6QO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/locale/de.js\nvar de_default = {\n  signInWithGoogle: \"Google\",\n  signInWithFacebook: \"Facebook\",\n  signInWithApple: \"Apple\",\n  signInWithDiscord: \"Discord\",\n  emailPlaceholder: \"E-Mail Adresse\",\n  submitEmail: \"Weiter\",\n  signIn: \"Anmelden\",\n  or: \"Oder\",\n  emailRequired: \"E-Mail Adresse ist erforderlich\",\n  invalidEmail: \"Ungültige E-Mail Adresse\",\n  maxAccountsExceeded: \"Maximale Anzahl von Konten überschritten. Bitte informiere den App-Entwickler.\",\n  socialLoginScreen: {\n    title: \"Anmelden\",\n    instruction: \"Melde dich im Popup Fenster an\",\n    failed: \"Anmeldung fehlgeschlagen\",\n    retry: \"Erneut versuchen\"\n  },\n  emailLoginScreen: {\n    title: \"Anmelden\",\n    enterCodeSendTo: \"Gib den Bestätigungscode ein. Gesendet an\",\n    newDeviceDetected: \"Neues Gerät erkannt\",\n    enterRecoveryCode: \"Gib den Wiederherstellungscode ein, der dir per E-Mail zugesandt wurde, als du dich zum ersten Mal angemeldet hast\",\n    invalidCode: \"Ungültiger Bestätigungscode\",\n    invalidCodeOrRecoveryCode: \"Ungültiger Bestätigungscode oder Wiederherstellungscode\",\n    verify: \"Bestätigen\",\n    failedToSendCode: \"Bestätigungscode konnte nicht gesendet werden\",\n    sendingCode: \"Bestätigungscode wird gesendet\",\n    resendCode: \"Bestätigungscode erneut senden\"\n  },\n  createPassword: {\n    title: \"Passwort erstellen\",\n    instruction: \"Lege ein Passwort für dein Konto fest. Du benötigst dieses Passwort, um dich von einem neuen Gerät aus anzumelden.\",\n    saveInstruction: \"Stelle sicher, dass du es gespeichert hast\",\n    inputPlaceholder: \"Gib dein Passwort ein\",\n    confirmation: \"Ich habe mein Passwort gespeichert\",\n    submitButton: \"Passwort festlegen\",\n    failedToSetPassword: \"Passwort festlegen fehlgeschlagen\"\n  },\n  enterPassword: {\n    title: \"Passwort eingeben\",\n    instruction: \"Gib das Passwort für dein Konto ein\",\n    inputPlaceholder: \"Gib dein Passwort ein\",\n    submitButton: \"Überprüfen\",\n    wrongPassword: \"Falsches Passwort\"\n  },\n  signInWithEmail: \"Mit E-Mail Adresse anmelden\",\n  invalidPhone: \"Ungültige Telefonnummer\",\n  phonePlaceholder: \"Telefonnummer\",\n  signInWithPhone: \"Mit Telefonnummer anmelden\",\n  phoneRequired: \"Telefonnummer ist erforderlich\",\n  passkey: \"Passkey\",\n  linkWallet: \"Verknüpfen Sie eine Brieftasche\",\n  loginAsGuest: \"Melden Sie sich als Gast an\",\n  signInWithWallet: \"Mit Wallet anmelden\"\n};\nexport {\n  de_default as default\n};\n//# sourceMappingURL=de-BT7LP6QO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/de-IU2DXG5T.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/locale/de.js\nvar connectLocaleDe = {\n  id: \"de_DE\",\n  signIn: \"Anmelden\",\n  defaultButtonTitle: \"Wallet verbinden\",\n  connecting: \"Anmelden\",\n  switchNetwork: \"Netzwerk wechseln\",\n  switchingNetwork: \"Netzwerk wechseln\",\n  defaultModalTitle: \"Anmelden\",\n  recommended: \"Empfohlen\",\n  installed: \"Installiert\",\n  buy: \"Kaufen\",\n  continueAsGuest: \"Als Gast fortfahren\",\n  connectAWallet: \"Wallet verbinden\",\n  newToWallets: `Was ist ein \"Wallet\"?`,\n  getStarted: \"Loslegen\",\n  guest: \"Gast\",\n  send: \"Senden\",\n  receive: \"Empfangen\",\n  currentNetwork: \"Aktuelles Netzwerk\",\n  switchAccount: \"Account wechseln\",\n  requestTestnetFunds: \"Testnetz-Geld anfordern\",\n  transactions: \"Transaktionen\",\n  payTransactions: \"Fiat Transaktionen\",\n  walletTransactions: \"Wallet Transaktionen\",\n  viewAllTransactions: \"Alle Transaktionen anzeigen\",\n  backupWallet: \"Wallet sichern\",\n  guestWalletWarning: \"Dies ist ein temporäres Gast-Wallet. Sichere das Wallet, wenn du den Zugriff darauf nicht verlieren möchtest\",\n  switchTo: \"Wechsle zu\",\n  // Used in \"Switch to <Wallet-Name>\"\n  connectedToSmartWallet: \"Smart Account\",\n  confirmInWallet: \"Im Wallet bestätigen\",\n  disconnectWallet: \"Wallet trennen\",\n  copyAddress: \"Adresse kopieren\",\n  personalWallet: \"Persönliches Wallet\",\n  smartWallet: \"Smart Wallet\",\n  or: \"Oder\",\n  goBackButton: \"Zurück\",\n  passkeys: {\n    title: \"Passkeys\",\n    linkPasskey: \"Passkey verknüpfen\"\n  },\n  welcomeScreen: {\n    defaultTitle: \"Dein Tor zur dezentralen Welt\",\n    defaultSubtitle: \"Verbinde ein Wallet, um loszulegen\"\n  },\n  agreement: {\n    prefix: \"Durch die Verbindung stimmst du diesen zu:\",\n    termsOfService: \"Nutzungsbedingungen\",\n    and: \"&\",\n    privacyPolicy: \"Datenschutzrichtlinien\"\n  },\n  networkSelector: {\n    title: \"Netzwerk auswählen\",\n    mainnets: \"Mainnets\",\n    testnets: \"Testnets\",\n    allNetworks: \"Alle\",\n    addCustomNetwork: \"Eigenes Netzwerk hinzufügen\",\n    inputPlaceholder: \"Netzwerk oder Chain ID suchen\",\n    categoryLabel: {\n      recentlyUsed: \"Zuletzt verwendet\",\n      popular: \"Beliebt\",\n      others: \"Alle Netzwerke\"\n    },\n    loading: \"Laden\",\n    failedToSwitch: \"Netzwerkwechsel fehlgeschlagen\"\n  },\n  receiveFundsScreen: {\n    title: \"Geld empfangen\",\n    instruction: \"Kopiere die Wallet-Adresse, um Geld an dieses Wallet zu senden\"\n  },\n  sendFundsScreen: {\n    title: \"Geld senden\",\n    submitButton: \"Senden\",\n    token: \"Token\",\n    sendTo: \"Senden an\",\n    amount: \"Betrag\",\n    successMessage: \"Transaktion erfolgreich\",\n    invalidAddress: \"Ungültige Adresse\",\n    noTokensFound: \"Keine Token gefunden\",\n    searchToken: \"Token suchen oder einfügen\",\n    transactionFailed: \"Transaktion fehlgeschlagen\",\n    transactionRejected: \"Transaktion abgelehnt\",\n    insufficientFunds: \"Nicht genügend Guthaben\",\n    selectTokenTitle: \"Token auswählen\",\n    sending: \"Sende\"\n  },\n  signatureScreen: {\n    instructionScreen: {\n      title: \"Anmelden\",\n      instruction: \"Signiere die Anmeldeanfrage in deinem Wallet\",\n      signInButton: \"Anmelden\",\n      disconnectWallet: \"Wallet trennen\"\n    },\n    signingScreen: {\n      title: \"Signaturanfrage\",\n      prompt: \"Signiere die Signaturanfrage in deinem Wallet\",\n      promptForSafe: \"Signiere die Signaturanfrage in deinem Wallet, um fortzufahren\",\n      approveTransactionInSafe: \"Transaktion im Safe bestätigen\",\n      tryAgain: \"Erneut versuchen\",\n      failedToSignIn: \"Anmeldung fehlgeschlagen\",\n      inProgress: \"Warte auf Bestätigung\"\n    }\n  },\n  manageWallet: {\n    title: \"Wallet verwalten\",\n    connectAnApp: \"App verbinden\",\n    linkProfile: \"Profil verknüpfen\",\n    linkedProfiles: \"Verknüpfte Profile\",\n    exportPrivateKey: \"PrivateKey exportieren\"\n  },\n  viewFunds: {\n    title: \"Guthaben anzeigen\",\n    viewNFTs: \"NFTs anzeigen\",\n    viewTokens: \"Tokens anzeigen\",\n    viewAssets: \"Assets anzeigen\"\n  }\n};\nvar de_default = connectLocaleDe;\nexport {\n  de_default as default\n};\n//# sourceMappingURL=de-IU2DXG5T.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/de-OKZ4QL64.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/smartWallet/locale/de.js\nvar smartWalletLocalEn = {\n  connecting: \"Verbindung zum Smart Account wird hergestellt\",\n  failedToConnect: \"Verbindung zum Smart Account fehlgeschlagen\",\n  wrongNetworkScreen: {\n    title: \"Falsches Netzwerk\",\n    subtitle: \"Dein Wallet ist nicht mit dem erforderlichen Netzwerk verbunden\",\n    failedToSwitch: \"Netzwerkwechsel fehlgeschlagen\"\n  }\n};\nvar de_default = smartWalletLocalEn;\nexport {\n  de_default as default\n};\n//# sourceMappingURL=de-OKZ4QL64.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/de-WT7ZYIRL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/injected/locale/de.js\nvar injectedWalletLocaleEn = (wallet) => ({\n  connectionScreen: {\n    inProgress: \"Verbindung wird hergestellt\",\n    failed: \"Verbindung fehlgeschlagen\",\n    instruction: `Akzeptiere die Verbindung in ${wallet}`,\n    retry: \"Erneut versuchen\"\n  },\n  getStartedScreen: {\n    instruction: `Scanne den QR Code um ${wallet} herunterzuladen`\n  },\n  scanScreen: {\n    instruction: `Scanne den QR Code um ${wallet} zu verbinden`\n  },\n  getStartedLink: `Du hast ${wallet} nicht?`,\n  download: {\n    chrome: \"Chrome Extension installieren\",\n    android: \"Von Google Play herunterladen\",\n    iOS: \"Von App Store herunterladen\"\n  }\n});\nvar de_default = injectedWalletLocaleEn;\nexport {\n  de_default as default\n};\n//# sourceMappingURL=de-WT7ZYIRL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/decimals-OWVEHM45.js",
    "content": "import {\n  decimals\n} from \"./chunk-4RRAU5V7.js\";\nimport {\n  isDecimalsSupported\n} from \"./chunk-QVNJVROL.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  decimals,\n  isDecimalsSupported\n};\n//# sourceMappingURL=decimals-OWVEHM45.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/dev-CGZJG7WM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/dev.auroracloud/index.js\nvar wallet = {\n  id: \"dev.auroracloud\",\n  name: \"Aurora Pass\",\n  homepage: \"https://auroracloud.dev/pass\",\n  image_id: \"6d93eeba-edce-431c-4293-e25784e61f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/aurora-pass-web3-wallet/id6447244286\",\n    android: \"https://play.google.com/store/apps/details?id=aurora.pass.android.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"aurora-pass://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=dev-CGZJG7WM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/digital-TWPYUQDY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/digital.minerva/index.js\nvar wallet = {\n  id: \"digital.minerva\",\n  name: \"Minerva Wallet\",\n  homepage: \"https://minerva.digital/\",\n  image_id: \"b57b2163-1bd8-4f6b-3311-470767e6d200\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=digital.minerva\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"minerva://\",\n    universal: \"https://minerva.digital\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=digital-TWPYUQDY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/dist-7FXCYDP5.js",
    "content": "import {\n  LitElement,\n  css,\n  customElement,\n  html,\n  noChange,\n  nothing,\n  property,\n  state,\n  svg\n} from \"./chunk-6LAJV43E.js\";\nimport {\n  ConfigCtrl,\n  CoreUtil,\n  EventsCtrl,\n  ExplorerCtrl,\n  ModalCtrl,\n  OptionsCtrl,\n  RouterCtrl,\n  ThemeCtrl,\n  ToastCtrl\n} from \"./chunk-35YKZJSE.js\";\nimport {\n  __commonJS,\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/qrcode/lib/can-promise.js\nvar require_can_promise = __commonJS({\n  \"node_modules/qrcode/lib/can-promise.js\"(exports, module) {\n    module.exports = function() {\n      return typeof Promise === \"function\" && Promise.prototype && Promise.prototype.then;\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/utils.js\nvar require_utils = __commonJS({\n  \"node_modules/qrcode/lib/core/utils.js\"(exports) {\n    var toSJISFunction;\n    var CODEWORDS_COUNT = [\n      0,\n      // Not used\n      26,\n      44,\n      70,\n      100,\n      134,\n      172,\n      196,\n      242,\n      292,\n      346,\n      404,\n      466,\n      532,\n      581,\n      655,\n      733,\n      815,\n      901,\n      991,\n      1085,\n      1156,\n      1258,\n      1364,\n      1474,\n      1588,\n      1706,\n      1828,\n      1921,\n      2051,\n      2185,\n      2323,\n      2465,\n      2611,\n      2761,\n      2876,\n      3034,\n      3196,\n      3362,\n      3532,\n      3706\n    ];\n    exports.getSymbolSize = function getSymbolSize(version) {\n      if (!version)\n        throw new Error('\"version\" cannot be null or undefined');\n      if (version < 1 || version > 40)\n        throw new Error('\"version\" should be in range from 1 to 40');\n      return version * 4 + 17;\n    };\n    exports.getSymbolTotalCodewords = function getSymbolTotalCodewords(version) {\n      return CODEWORDS_COUNT[version];\n    };\n    exports.getBCHDigit = function(data2) {\n      let digit = 0;\n      while (data2 !== 0) {\n        digit++;\n        data2 >>>= 1;\n      }\n      return digit;\n    };\n    exports.setToSJISFunction = function setToSJISFunction(f) {\n      if (typeof f !== \"function\") {\n        throw new Error('\"toSJISFunc\" is not a valid function.');\n      }\n      toSJISFunction = f;\n    };\n    exports.isKanjiModeEnabled = function() {\n      return typeof toSJISFunction !== \"undefined\";\n    };\n    exports.toSJIS = function toSJIS(kanji) {\n      return toSJISFunction(kanji);\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/error-correction-level.js\nvar require_error_correction_level = __commonJS({\n  \"node_modules/qrcode/lib/core/error-correction-level.js\"(exports) {\n    exports.L = { bit: 1 };\n    exports.M = { bit: 0 };\n    exports.Q = { bit: 3 };\n    exports.H = { bit: 2 };\n    function fromString(string) {\n      if (typeof string !== \"string\") {\n        throw new Error(\"Param is not a string\");\n      }\n      const lcStr = string.toLowerCase();\n      switch (lcStr) {\n        case \"l\":\n        case \"low\":\n          return exports.L;\n        case \"m\":\n        case \"medium\":\n          return exports.M;\n        case \"q\":\n        case \"quartile\":\n          return exports.Q;\n        case \"h\":\n        case \"high\":\n          return exports.H;\n        default:\n          throw new Error(\"Unknown EC Level: \" + string);\n      }\n    }\n    exports.isValid = function isValid(level) {\n      return level && typeof level.bit !== \"undefined\" && level.bit >= 0 && level.bit < 4;\n    };\n    exports.from = function from(value, defaultValue) {\n      if (exports.isValid(value)) {\n        return value;\n      }\n      try {\n        return fromString(value);\n      } catch (e) {\n        return defaultValue;\n      }\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/bit-buffer.js\nvar require_bit_buffer = __commonJS({\n  \"node_modules/qrcode/lib/core/bit-buffer.js\"(exports, module) {\n    function BitBuffer() {\n      this.buffer = [];\n      this.length = 0;\n    }\n    BitBuffer.prototype = {\n      get: function(index) {\n        const bufIndex = Math.floor(index / 8);\n        return (this.buffer[bufIndex] >>> 7 - index % 8 & 1) === 1;\n      },\n      put: function(num, length) {\n        for (let i = 0; i < length; i++) {\n          this.putBit((num >>> length - i - 1 & 1) === 1);\n        }\n      },\n      getLengthInBits: function() {\n        return this.length;\n      },\n      putBit: function(bit) {\n        const bufIndex = Math.floor(this.length / 8);\n        if (this.buffer.length <= bufIndex) {\n          this.buffer.push(0);\n        }\n        if (bit) {\n          this.buffer[bufIndex] |= 128 >>> this.length % 8;\n        }\n        this.length++;\n      }\n    };\n    module.exports = BitBuffer;\n  }\n});\n\n// node_modules/qrcode/lib/core/bit-matrix.js\nvar require_bit_matrix = __commonJS({\n  \"node_modules/qrcode/lib/core/bit-matrix.js\"(exports, module) {\n    function BitMatrix(size) {\n      if (!size || size < 1) {\n        throw new Error(\"BitMatrix size must be defined and greater than 0\");\n      }\n      this.size = size;\n      this.data = new Uint8Array(size * size);\n      this.reservedBit = new Uint8Array(size * size);\n    }\n    BitMatrix.prototype.set = function(row, col, value, reserved) {\n      const index = row * this.size + col;\n      this.data[index] = value;\n      if (reserved)\n        this.reservedBit[index] = true;\n    };\n    BitMatrix.prototype.get = function(row, col) {\n      return this.data[row * this.size + col];\n    };\n    BitMatrix.prototype.xor = function(row, col, value) {\n      this.data[row * this.size + col] ^= value;\n    };\n    BitMatrix.prototype.isReserved = function(row, col) {\n      return this.reservedBit[row * this.size + col];\n    };\n    module.exports = BitMatrix;\n  }\n});\n\n// node_modules/qrcode/lib/core/alignment-pattern.js\nvar require_alignment_pattern = __commonJS({\n  \"node_modules/qrcode/lib/core/alignment-pattern.js\"(exports) {\n    var getSymbolSize = require_utils().getSymbolSize;\n    exports.getRowColCoords = function getRowColCoords(version) {\n      if (version === 1)\n        return [];\n      const posCount = Math.floor(version / 7) + 2;\n      const size = getSymbolSize(version);\n      const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2;\n      const positions = [size - 7];\n      for (let i = 1; i < posCount - 1; i++) {\n        positions[i] = positions[i - 1] - intervals;\n      }\n      positions.push(6);\n      return positions.reverse();\n    };\n    exports.getPositions = function getPositions(version) {\n      const coords = [];\n      const pos = exports.getRowColCoords(version);\n      const posLength = pos.length;\n      for (let i = 0; i < posLength; i++) {\n        for (let j = 0; j < posLength; j++) {\n          if (i === 0 && j === 0 || // top-left\n          i === 0 && j === posLength - 1 || // bottom-left\n          i === posLength - 1 && j === 0) {\n            continue;\n          }\n          coords.push([pos[i], pos[j]]);\n        }\n      }\n      return coords;\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/finder-pattern.js\nvar require_finder_pattern = __commonJS({\n  \"node_modules/qrcode/lib/core/finder-pattern.js\"(exports) {\n    var getSymbolSize = require_utils().getSymbolSize;\n    var FINDER_PATTERN_SIZE = 7;\n    exports.getPositions = function getPositions(version) {\n      const size = getSymbolSize(version);\n      return [\n        // top-left\n        [0, 0],\n        // top-right\n        [size - FINDER_PATTERN_SIZE, 0],\n        // bottom-left\n        [0, size - FINDER_PATTERN_SIZE]\n      ];\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/mask-pattern.js\nvar require_mask_pattern = __commonJS({\n  \"node_modules/qrcode/lib/core/mask-pattern.js\"(exports) {\n    exports.Patterns = {\n      PATTERN000: 0,\n      PATTERN001: 1,\n      PATTERN010: 2,\n      PATTERN011: 3,\n      PATTERN100: 4,\n      PATTERN101: 5,\n      PATTERN110: 6,\n      PATTERN111: 7\n    };\n    var PenaltyScores = {\n      N1: 3,\n      N2: 3,\n      N3: 40,\n      N4: 10\n    };\n    exports.isValid = function isValid(mask) {\n      return mask != null && mask !== \"\" && !isNaN(mask) && mask >= 0 && mask <= 7;\n    };\n    exports.from = function from(value) {\n      return exports.isValid(value) ? parseInt(value, 10) : void 0;\n    };\n    exports.getPenaltyN1 = function getPenaltyN1(data2) {\n      const size = data2.size;\n      let points = 0;\n      let sameCountCol = 0;\n      let sameCountRow = 0;\n      let lastCol = null;\n      let lastRow = null;\n      for (let row = 0; row < size; row++) {\n        sameCountCol = sameCountRow = 0;\n        lastCol = lastRow = null;\n        for (let col = 0; col < size; col++) {\n          let module2 = data2.get(row, col);\n          if (module2 === lastCol) {\n            sameCountCol++;\n          } else {\n            if (sameCountCol >= 5)\n              points += PenaltyScores.N1 + (sameCountCol - 5);\n            lastCol = module2;\n            sameCountCol = 1;\n          }\n          module2 = data2.get(col, row);\n          if (module2 === lastRow) {\n            sameCountRow++;\n          } else {\n            if (sameCountRow >= 5)\n              points += PenaltyScores.N1 + (sameCountRow - 5);\n            lastRow = module2;\n            sameCountRow = 1;\n          }\n        }\n        if (sameCountCol >= 5)\n          points += PenaltyScores.N1 + (sameCountCol - 5);\n        if (sameCountRow >= 5)\n          points += PenaltyScores.N1 + (sameCountRow - 5);\n      }\n      return points;\n    };\n    exports.getPenaltyN2 = function getPenaltyN2(data2) {\n      const size = data2.size;\n      let points = 0;\n      for (let row = 0; row < size - 1; row++) {\n        for (let col = 0; col < size - 1; col++) {\n          const last = data2.get(row, col) + data2.get(row, col + 1) + data2.get(row + 1, col) + data2.get(row + 1, col + 1);\n          if (last === 4 || last === 0)\n            points++;\n        }\n      }\n      return points * PenaltyScores.N2;\n    };\n    exports.getPenaltyN3 = function getPenaltyN3(data2) {\n      const size = data2.size;\n      let points = 0;\n      let bitsCol = 0;\n      let bitsRow = 0;\n      for (let row = 0; row < size; row++) {\n        bitsCol = bitsRow = 0;\n        for (let col = 0; col < size; col++) {\n          bitsCol = bitsCol << 1 & 2047 | data2.get(row, col);\n          if (col >= 10 && (bitsCol === 1488 || bitsCol === 93))\n            points++;\n          bitsRow = bitsRow << 1 & 2047 | data2.get(col, row);\n          if (col >= 10 && (bitsRow === 1488 || bitsRow === 93))\n            points++;\n        }\n      }\n      return points * PenaltyScores.N3;\n    };\n    exports.getPenaltyN4 = function getPenaltyN4(data2) {\n      let darkCount = 0;\n      const modulesCount = data2.data.length;\n      for (let i = 0; i < modulesCount; i++)\n        darkCount += data2.data[i];\n      const k = Math.abs(Math.ceil(darkCount * 100 / modulesCount / 5) - 10);\n      return k * PenaltyScores.N4;\n    };\n    function getMaskAt(maskPattern, i, j) {\n      switch (maskPattern) {\n        case exports.Patterns.PATTERN000:\n          return (i + j) % 2 === 0;\n        case exports.Patterns.PATTERN001:\n          return i % 2 === 0;\n        case exports.Patterns.PATTERN010:\n          return j % 3 === 0;\n        case exports.Patterns.PATTERN011:\n          return (i + j) % 3 === 0;\n        case exports.Patterns.PATTERN100:\n          return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0;\n        case exports.Patterns.PATTERN101:\n          return i * j % 2 + i * j % 3 === 0;\n        case exports.Patterns.PATTERN110:\n          return (i * j % 2 + i * j % 3) % 2 === 0;\n        case exports.Patterns.PATTERN111:\n          return (i * j % 3 + (i + j) % 2) % 2 === 0;\n        default:\n          throw new Error(\"bad maskPattern:\" + maskPattern);\n      }\n    }\n    exports.applyMask = function applyMask(pattern, data2) {\n      const size = data2.size;\n      for (let col = 0; col < size; col++) {\n        for (let row = 0; row < size; row++) {\n          if (data2.isReserved(row, col))\n            continue;\n          data2.xor(row, col, getMaskAt(pattern, row, col));\n        }\n      }\n    };\n    exports.getBestMask = function getBestMask(data2, setupFormatFunc) {\n      const numPatterns = Object.keys(exports.Patterns).length;\n      let bestPattern = 0;\n      let lowerPenalty = Infinity;\n      for (let p = 0; p < numPatterns; p++) {\n        setupFormatFunc(p);\n        exports.applyMask(p, data2);\n        const penalty = exports.getPenaltyN1(data2) + exports.getPenaltyN2(data2) + exports.getPenaltyN3(data2) + exports.getPenaltyN4(data2);\n        exports.applyMask(p, data2);\n        if (penalty < lowerPenalty) {\n          lowerPenalty = penalty;\n          bestPattern = p;\n        }\n      }\n      return bestPattern;\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/error-correction-code.js\nvar require_error_correction_code = __commonJS({\n  \"node_modules/qrcode/lib/core/error-correction-code.js\"(exports) {\n    var ECLevel = require_error_correction_level();\n    var EC_BLOCKS_TABLE = [\n      // L  M  Q  H\n      1,\n      1,\n      1,\n      1,\n      1,\n      1,\n      1,\n      1,\n      1,\n      1,\n      2,\n      2,\n      1,\n      2,\n      2,\n      4,\n      1,\n      2,\n      4,\n      4,\n      2,\n      4,\n      4,\n      4,\n      2,\n      4,\n      6,\n      5,\n      2,\n      4,\n      6,\n      6,\n      2,\n      5,\n      8,\n      8,\n      4,\n      5,\n      8,\n      8,\n      4,\n      5,\n      8,\n      11,\n      4,\n      8,\n      10,\n      11,\n      4,\n      9,\n      12,\n      16,\n      4,\n      9,\n      16,\n      16,\n      6,\n      10,\n      12,\n      18,\n      6,\n      10,\n      17,\n      16,\n      6,\n      11,\n      16,\n      19,\n      6,\n      13,\n      18,\n      21,\n      7,\n      14,\n      21,\n      25,\n      8,\n      16,\n      20,\n      25,\n      8,\n      17,\n      23,\n      25,\n      9,\n      17,\n      23,\n      34,\n      9,\n      18,\n      25,\n      30,\n      10,\n      20,\n      27,\n      32,\n      12,\n      21,\n      29,\n      35,\n      12,\n      23,\n      34,\n      37,\n      12,\n      25,\n      34,\n      40,\n      13,\n      26,\n      35,\n      42,\n      14,\n      28,\n      38,\n      45,\n      15,\n      29,\n      40,\n      48,\n      16,\n      31,\n      43,\n      51,\n      17,\n      33,\n      45,\n      54,\n      18,\n      35,\n      48,\n      57,\n      19,\n      37,\n      51,\n      60,\n      19,\n      38,\n      53,\n      63,\n      20,\n      40,\n      56,\n      66,\n      21,\n      43,\n      59,\n      70,\n      22,\n      45,\n      62,\n      74,\n      24,\n      47,\n      65,\n      77,\n      25,\n      49,\n      68,\n      81\n    ];\n    var EC_CODEWORDS_TABLE = [\n      // L  M  Q  H\n      7,\n      10,\n      13,\n      17,\n      10,\n      16,\n      22,\n      28,\n      15,\n      26,\n      36,\n      44,\n      20,\n      36,\n      52,\n      64,\n      26,\n      48,\n      72,\n      88,\n      36,\n      64,\n      96,\n      112,\n      40,\n      72,\n      108,\n      130,\n      48,\n      88,\n      132,\n      156,\n      60,\n      110,\n      160,\n      192,\n      72,\n      130,\n      192,\n      224,\n      80,\n      150,\n      224,\n      264,\n      96,\n      176,\n      260,\n      308,\n      104,\n      198,\n      288,\n      352,\n      120,\n      216,\n      320,\n      384,\n      132,\n      240,\n      360,\n      432,\n      144,\n      280,\n      408,\n      480,\n      168,\n      308,\n      448,\n      532,\n      180,\n      338,\n      504,\n      588,\n      196,\n      364,\n      546,\n      650,\n      224,\n      416,\n      600,\n      700,\n      224,\n      442,\n      644,\n      750,\n      252,\n      476,\n      690,\n      816,\n      270,\n      504,\n      750,\n      900,\n      300,\n      560,\n      810,\n      960,\n      312,\n      588,\n      870,\n      1050,\n      336,\n      644,\n      952,\n      1110,\n      360,\n      700,\n      1020,\n      1200,\n      390,\n      728,\n      1050,\n      1260,\n      420,\n      784,\n      1140,\n      1350,\n      450,\n      812,\n      1200,\n      1440,\n      480,\n      868,\n      1290,\n      1530,\n      510,\n      924,\n      1350,\n      1620,\n      540,\n      980,\n      1440,\n      1710,\n      570,\n      1036,\n      1530,\n      1800,\n      570,\n      1064,\n      1590,\n      1890,\n      600,\n      1120,\n      1680,\n      1980,\n      630,\n      1204,\n      1770,\n      2100,\n      660,\n      1260,\n      1860,\n      2220,\n      720,\n      1316,\n      1950,\n      2310,\n      750,\n      1372,\n      2040,\n      2430\n    ];\n    exports.getBlocksCount = function getBlocksCount(version, errorCorrectionLevel) {\n      switch (errorCorrectionLevel) {\n        case ECLevel.L:\n          return EC_BLOCKS_TABLE[(version - 1) * 4 + 0];\n        case ECLevel.M:\n          return EC_BLOCKS_TABLE[(version - 1) * 4 + 1];\n        case ECLevel.Q:\n          return EC_BLOCKS_TABLE[(version - 1) * 4 + 2];\n        case ECLevel.H:\n          return EC_BLOCKS_TABLE[(version - 1) * 4 + 3];\n        default:\n          return void 0;\n      }\n    };\n    exports.getTotalCodewordsCount = function getTotalCodewordsCount(version, errorCorrectionLevel) {\n      switch (errorCorrectionLevel) {\n        case ECLevel.L:\n          return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0];\n        case ECLevel.M:\n          return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1];\n        case ECLevel.Q:\n          return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2];\n        case ECLevel.H:\n          return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3];\n        default:\n          return void 0;\n      }\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/galois-field.js\nvar require_galois_field = __commonJS({\n  \"node_modules/qrcode/lib/core/galois-field.js\"(exports) {\n    var EXP_TABLE = new Uint8Array(512);\n    var LOG_TABLE = new Uint8Array(256);\n    (function initTables() {\n      let x = 1;\n      for (let i = 0; i < 255; i++) {\n        EXP_TABLE[i] = x;\n        LOG_TABLE[x] = i;\n        x <<= 1;\n        if (x & 256) {\n          x ^= 285;\n        }\n      }\n      for (let i = 255; i < 512; i++) {\n        EXP_TABLE[i] = EXP_TABLE[i - 255];\n      }\n    })();\n    exports.log = function log(n) {\n      if (n < 1)\n        throw new Error(\"log(\" + n + \")\");\n      return LOG_TABLE[n];\n    };\n    exports.exp = function exp(n) {\n      return EXP_TABLE[n];\n    };\n    exports.mul = function mul(x, y) {\n      if (x === 0 || y === 0)\n        return 0;\n      return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]];\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/polynomial.js\nvar require_polynomial = __commonJS({\n  \"node_modules/qrcode/lib/core/polynomial.js\"(exports) {\n    var GF = require_galois_field();\n    exports.mul = function mul(p1, p2) {\n      const coeff = new Uint8Array(p1.length + p2.length - 1);\n      for (let i = 0; i < p1.length; i++) {\n        for (let j = 0; j < p2.length; j++) {\n          coeff[i + j] ^= GF.mul(p1[i], p2[j]);\n        }\n      }\n      return coeff;\n    };\n    exports.mod = function mod(divident, divisor) {\n      let result = new Uint8Array(divident);\n      while (result.length - divisor.length >= 0) {\n        const coeff = result[0];\n        for (let i = 0; i < divisor.length; i++) {\n          result[i] ^= GF.mul(divisor[i], coeff);\n        }\n        let offset = 0;\n        while (offset < result.length && result[offset] === 0)\n          offset++;\n        result = result.slice(offset);\n      }\n      return result;\n    };\n    exports.generateECPolynomial = function generateECPolynomial(degree) {\n      let poly = new Uint8Array([1]);\n      for (let i = 0; i < degree; i++) {\n        poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]));\n      }\n      return poly;\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/reed-solomon-encoder.js\nvar require_reed_solomon_encoder = __commonJS({\n  \"node_modules/qrcode/lib/core/reed-solomon-encoder.js\"(exports, module) {\n    var Polynomial = require_polynomial();\n    function ReedSolomonEncoder(degree) {\n      this.genPoly = void 0;\n      this.degree = degree;\n      if (this.degree)\n        this.initialize(this.degree);\n    }\n    ReedSolomonEncoder.prototype.initialize = function initialize(degree) {\n      this.degree = degree;\n      this.genPoly = Polynomial.generateECPolynomial(this.degree);\n    };\n    ReedSolomonEncoder.prototype.encode = function encode(data2) {\n      if (!this.genPoly) {\n        throw new Error(\"Encoder not initialized\");\n      }\n      const paddedData = new Uint8Array(data2.length + this.degree);\n      paddedData.set(data2);\n      const remainder = Polynomial.mod(paddedData, this.genPoly);\n      const start = this.degree - remainder.length;\n      if (start > 0) {\n        const buff = new Uint8Array(this.degree);\n        buff.set(remainder, start);\n        return buff;\n      }\n      return remainder;\n    };\n    module.exports = ReedSolomonEncoder;\n  }\n});\n\n// node_modules/qrcode/lib/core/version-check.js\nvar require_version_check = __commonJS({\n  \"node_modules/qrcode/lib/core/version-check.js\"(exports) {\n    exports.isValid = function isValid(version) {\n      return !isNaN(version) && version >= 1 && version <= 40;\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/regex.js\nvar require_regex = __commonJS({\n  \"node_modules/qrcode/lib/core/regex.js\"(exports) {\n    var numeric = \"[0-9]+\";\n    var alphanumeric = \"[A-Z $%*+\\\\-./:]+\";\n    var kanji = \"(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+\";\n    kanji = kanji.replace(/u/g, \"\\\\u\");\n    var byte = \"(?:(?![A-Z0-9 $%*+\\\\-./:]|\" + kanji + \")(?:.|[\\r\\n]))+\";\n    exports.KANJI = new RegExp(kanji, \"g\");\n    exports.BYTE_KANJI = new RegExp(\"[^A-Z0-9 $%*+\\\\-./:]+\", \"g\");\n    exports.BYTE = new RegExp(byte, \"g\");\n    exports.NUMERIC = new RegExp(numeric, \"g\");\n    exports.ALPHANUMERIC = new RegExp(alphanumeric, \"g\");\n    var TEST_KANJI = new RegExp(\"^\" + kanji + \"$\");\n    var TEST_NUMERIC = new RegExp(\"^\" + numeric + \"$\");\n    var TEST_ALPHANUMERIC = new RegExp(\"^[A-Z0-9 $%*+\\\\-./:]+$\");\n    exports.testKanji = function testKanji(str) {\n      return TEST_KANJI.test(str);\n    };\n    exports.testNumeric = function testNumeric(str) {\n      return TEST_NUMERIC.test(str);\n    };\n    exports.testAlphanumeric = function testAlphanumeric(str) {\n      return TEST_ALPHANUMERIC.test(str);\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/mode.js\nvar require_mode = __commonJS({\n  \"node_modules/qrcode/lib/core/mode.js\"(exports) {\n    var VersionCheck = require_version_check();\n    var Regex = require_regex();\n    exports.NUMERIC = {\n      id: \"Numeric\",\n      bit: 1 << 0,\n      ccBits: [10, 12, 14]\n    };\n    exports.ALPHANUMERIC = {\n      id: \"Alphanumeric\",\n      bit: 1 << 1,\n      ccBits: [9, 11, 13]\n    };\n    exports.BYTE = {\n      id: \"Byte\",\n      bit: 1 << 2,\n      ccBits: [8, 16, 16]\n    };\n    exports.KANJI = {\n      id: \"Kanji\",\n      bit: 1 << 3,\n      ccBits: [8, 10, 12]\n    };\n    exports.MIXED = {\n      bit: -1\n    };\n    exports.getCharCountIndicator = function getCharCountIndicator(mode, version) {\n      if (!mode.ccBits)\n        throw new Error(\"Invalid mode: \" + mode);\n      if (!VersionCheck.isValid(version)) {\n        throw new Error(\"Invalid version: \" + version);\n      }\n      if (version >= 1 && version < 10)\n        return mode.ccBits[0];\n      else if (version < 27)\n        return mode.ccBits[1];\n      return mode.ccBits[2];\n    };\n    exports.getBestModeForData = function getBestModeForData(dataStr) {\n      if (Regex.testNumeric(dataStr))\n        return exports.NUMERIC;\n      else if (Regex.testAlphanumeric(dataStr))\n        return exports.ALPHANUMERIC;\n      else if (Regex.testKanji(dataStr))\n        return exports.KANJI;\n      else\n        return exports.BYTE;\n    };\n    exports.toString = function toString(mode) {\n      if (mode && mode.id)\n        return mode.id;\n      throw new Error(\"Invalid mode\");\n    };\n    exports.isValid = function isValid(mode) {\n      return mode && mode.bit && mode.ccBits;\n    };\n    function fromString(string) {\n      if (typeof string !== \"string\") {\n        throw new Error(\"Param is not a string\");\n      }\n      const lcStr = string.toLowerCase();\n      switch (lcStr) {\n        case \"numeric\":\n          return exports.NUMERIC;\n        case \"alphanumeric\":\n          return exports.ALPHANUMERIC;\n        case \"kanji\":\n          return exports.KANJI;\n        case \"byte\":\n          return exports.BYTE;\n        default:\n          throw new Error(\"Unknown mode: \" + string);\n      }\n    }\n    exports.from = function from(value, defaultValue) {\n      if (exports.isValid(value)) {\n        return value;\n      }\n      try {\n        return fromString(value);\n      } catch (e) {\n        return defaultValue;\n      }\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/version.js\nvar require_version = __commonJS({\n  \"node_modules/qrcode/lib/core/version.js\"(exports) {\n    var Utils = require_utils();\n    var ECCode = require_error_correction_code();\n    var ECLevel = require_error_correction_level();\n    var Mode = require_mode();\n    var VersionCheck = require_version_check();\n    var G18 = 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0;\n    var G18_BCH = Utils.getBCHDigit(G18);\n    function getBestVersionForDataLength(mode, length, errorCorrectionLevel) {\n      for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n        if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n          return currentVersion;\n        }\n      }\n      return void 0;\n    }\n    function getReservedBitsCount(mode, version) {\n      return Mode.getCharCountIndicator(mode, version) + 4;\n    }\n    function getTotalBitsFromDataArray(segments, version) {\n      let totalBits = 0;\n      segments.forEach(function(data2) {\n        const reservedBits = getReservedBitsCount(data2.mode, version);\n        totalBits += reservedBits + data2.getBitsLength();\n      });\n      return totalBits;\n    }\n    function getBestVersionForMixedData(segments, errorCorrectionLevel) {\n      for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n        const length = getTotalBitsFromDataArray(segments, currentVersion);\n        if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n          return currentVersion;\n        }\n      }\n      return void 0;\n    }\n    exports.from = function from(value, defaultValue) {\n      if (VersionCheck.isValid(value)) {\n        return parseInt(value, 10);\n      }\n      return defaultValue;\n    };\n    exports.getCapacity = function getCapacity(version, errorCorrectionLevel, mode) {\n      if (!VersionCheck.isValid(version)) {\n        throw new Error(\"Invalid QR Code version\");\n      }\n      if (typeof mode === \"undefined\")\n        mode = Mode.BYTE;\n      const totalCodewords = Utils.getSymbolTotalCodewords(version);\n      const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n      const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n      if (mode === Mode.MIXED)\n        return dataTotalCodewordsBits;\n      const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version);\n      switch (mode) {\n        case Mode.NUMERIC:\n          return Math.floor(usableBits / 10 * 3);\n        case Mode.ALPHANUMERIC:\n          return Math.floor(usableBits / 11 * 2);\n        case Mode.KANJI:\n          return Math.floor(usableBits / 13);\n        case Mode.BYTE:\n        default:\n          return Math.floor(usableBits / 8);\n      }\n    };\n    exports.getBestVersionForData = function getBestVersionForData(data2, errorCorrectionLevel) {\n      let seg;\n      const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M);\n      if (Array.isArray(data2)) {\n        if (data2.length > 1) {\n          return getBestVersionForMixedData(data2, ecl);\n        }\n        if (data2.length === 0) {\n          return 1;\n        }\n        seg = data2[0];\n      } else {\n        seg = data2;\n      }\n      return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl);\n    };\n    exports.getEncodedBits = function getEncodedBits(version) {\n      if (!VersionCheck.isValid(version) || version < 7) {\n        throw new Error(\"Invalid QR Code version\");\n      }\n      let d = version << 12;\n      while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n        d ^= G18 << Utils.getBCHDigit(d) - G18_BCH;\n      }\n      return version << 12 | d;\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/format-info.js\nvar require_format_info = __commonJS({\n  \"node_modules/qrcode/lib/core/format-info.js\"(exports) {\n    var Utils = require_utils();\n    var G15 = 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0;\n    var G15_MASK = 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1;\n    var G15_BCH = Utils.getBCHDigit(G15);\n    exports.getEncodedBits = function getEncodedBits(errorCorrectionLevel, mask) {\n      const data2 = errorCorrectionLevel.bit << 3 | mask;\n      let d = data2 << 10;\n      while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n        d ^= G15 << Utils.getBCHDigit(d) - G15_BCH;\n      }\n      return (data2 << 10 | d) ^ G15_MASK;\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/numeric-data.js\nvar require_numeric_data = __commonJS({\n  \"node_modules/qrcode/lib/core/numeric-data.js\"(exports, module) {\n    var Mode = require_mode();\n    function NumericData(data2) {\n      this.mode = Mode.NUMERIC;\n      this.data = data2.toString();\n    }\n    NumericData.getBitsLength = function getBitsLength(length) {\n      return 10 * Math.floor(length / 3) + (length % 3 ? length % 3 * 3 + 1 : 0);\n    };\n    NumericData.prototype.getLength = function getLength() {\n      return this.data.length;\n    };\n    NumericData.prototype.getBitsLength = function getBitsLength() {\n      return NumericData.getBitsLength(this.data.length);\n    };\n    NumericData.prototype.write = function write(bitBuffer) {\n      let i, group, value;\n      for (i = 0; i + 3 <= this.data.length; i += 3) {\n        group = this.data.substr(i, 3);\n        value = parseInt(group, 10);\n        bitBuffer.put(value, 10);\n      }\n      const remainingNum = this.data.length - i;\n      if (remainingNum > 0) {\n        group = this.data.substr(i);\n        value = parseInt(group, 10);\n        bitBuffer.put(value, remainingNum * 3 + 1);\n      }\n    };\n    module.exports = NumericData;\n  }\n});\n\n// node_modules/qrcode/lib/core/alphanumeric-data.js\nvar require_alphanumeric_data = __commonJS({\n  \"node_modules/qrcode/lib/core/alphanumeric-data.js\"(exports, module) {\n    var Mode = require_mode();\n    var ALPHA_NUM_CHARS = [\n      \"0\",\n      \"1\",\n      \"2\",\n      \"3\",\n      \"4\",\n      \"5\",\n      \"6\",\n      \"7\",\n      \"8\",\n      \"9\",\n      \"A\",\n      \"B\",\n      \"C\",\n      \"D\",\n      \"E\",\n      \"F\",\n      \"G\",\n      \"H\",\n      \"I\",\n      \"J\",\n      \"K\",\n      \"L\",\n      \"M\",\n      \"N\",\n      \"O\",\n      \"P\",\n      \"Q\",\n      \"R\",\n      \"S\",\n      \"T\",\n      \"U\",\n      \"V\",\n      \"W\",\n      \"X\",\n      \"Y\",\n      \"Z\",\n      \" \",\n      \"$\",\n      \"%\",\n      \"*\",\n      \"+\",\n      \"-\",\n      \".\",\n      \"/\",\n      \":\"\n    ];\n    function AlphanumericData(data2) {\n      this.mode = Mode.ALPHANUMERIC;\n      this.data = data2;\n    }\n    AlphanumericData.getBitsLength = function getBitsLength(length) {\n      return 11 * Math.floor(length / 2) + 6 * (length % 2);\n    };\n    AlphanumericData.prototype.getLength = function getLength() {\n      return this.data.length;\n    };\n    AlphanumericData.prototype.getBitsLength = function getBitsLength() {\n      return AlphanumericData.getBitsLength(this.data.length);\n    };\n    AlphanumericData.prototype.write = function write(bitBuffer) {\n      let i;\n      for (i = 0; i + 2 <= this.data.length; i += 2) {\n        let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45;\n        value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1]);\n        bitBuffer.put(value, 11);\n      }\n      if (this.data.length % 2) {\n        bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6);\n      }\n    };\n    module.exports = AlphanumericData;\n  }\n});\n\n// node_modules/encode-utf8/index.js\nvar require_encode_utf8 = __commonJS({\n  \"node_modules/encode-utf8/index.js\"(exports, module) {\n    \"use strict\";\n    module.exports = function encodeUtf8(input) {\n      var result = [];\n      var size = input.length;\n      for (var index = 0; index < size; index++) {\n        var point = input.charCodeAt(index);\n        if (point >= 55296 && point <= 56319 && size > index + 1) {\n          var second = input.charCodeAt(index + 1);\n          if (second >= 56320 && second <= 57343) {\n            point = (point - 55296) * 1024 + second - 56320 + 65536;\n            index += 1;\n          }\n        }\n        if (point < 128) {\n          result.push(point);\n          continue;\n        }\n        if (point < 2048) {\n          result.push(point >> 6 | 192);\n          result.push(point & 63 | 128);\n          continue;\n        }\n        if (point < 55296 || point >= 57344 && point < 65536) {\n          result.push(point >> 12 | 224);\n          result.push(point >> 6 & 63 | 128);\n          result.push(point & 63 | 128);\n          continue;\n        }\n        if (point >= 65536 && point <= 1114111) {\n          result.push(point >> 18 | 240);\n          result.push(point >> 12 & 63 | 128);\n          result.push(point >> 6 & 63 | 128);\n          result.push(point & 63 | 128);\n          continue;\n        }\n        result.push(239, 191, 189);\n      }\n      return new Uint8Array(result).buffer;\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/byte-data.js\nvar require_byte_data = __commonJS({\n  \"node_modules/qrcode/lib/core/byte-data.js\"(exports, module) {\n    var encodeUtf8 = require_encode_utf8();\n    var Mode = require_mode();\n    function ByteData(data2) {\n      this.mode = Mode.BYTE;\n      if (typeof data2 === \"string\") {\n        data2 = encodeUtf8(data2);\n      }\n      this.data = new Uint8Array(data2);\n    }\n    ByteData.getBitsLength = function getBitsLength(length) {\n      return length * 8;\n    };\n    ByteData.prototype.getLength = function getLength() {\n      return this.data.length;\n    };\n    ByteData.prototype.getBitsLength = function getBitsLength() {\n      return ByteData.getBitsLength(this.data.length);\n    };\n    ByteData.prototype.write = function(bitBuffer) {\n      for (let i = 0, l = this.data.length; i < l; i++) {\n        bitBuffer.put(this.data[i], 8);\n      }\n    };\n    module.exports = ByteData;\n  }\n});\n\n// node_modules/qrcode/lib/core/kanji-data.js\nvar require_kanji_data = __commonJS({\n  \"node_modules/qrcode/lib/core/kanji-data.js\"(exports, module) {\n    var Mode = require_mode();\n    var Utils = require_utils();\n    function KanjiData(data2) {\n      this.mode = Mode.KANJI;\n      this.data = data2;\n    }\n    KanjiData.getBitsLength = function getBitsLength(length) {\n      return length * 13;\n    };\n    KanjiData.prototype.getLength = function getLength() {\n      return this.data.length;\n    };\n    KanjiData.prototype.getBitsLength = function getBitsLength() {\n      return KanjiData.getBitsLength(this.data.length);\n    };\n    KanjiData.prototype.write = function(bitBuffer) {\n      let i;\n      for (i = 0; i < this.data.length; i++) {\n        let value = Utils.toSJIS(this.data[i]);\n        if (value >= 33088 && value <= 40956) {\n          value -= 33088;\n        } else if (value >= 57408 && value <= 60351) {\n          value -= 49472;\n        } else {\n          throw new Error(\n            \"Invalid SJIS character: \" + this.data[i] + \"\\nMake sure your charset is UTF-8\"\n          );\n        }\n        value = (value >>> 8 & 255) * 192 + (value & 255);\n        bitBuffer.put(value, 13);\n      }\n    };\n    module.exports = KanjiData;\n  }\n});\n\n// node_modules/dijkstrajs/dijkstra.js\nvar require_dijkstra = __commonJS({\n  \"node_modules/dijkstrajs/dijkstra.js\"(exports, module) {\n    \"use strict\";\n    var dijkstra = {\n      single_source_shortest_paths: function(graph, s, d) {\n        var predecessors = {};\n        var costs = {};\n        costs[s] = 0;\n        var open = dijkstra.PriorityQueue.make();\n        open.push(s, 0);\n        var closest, u, v, cost_of_s_to_u, adjacent_nodes, cost_of_e, cost_of_s_to_u_plus_cost_of_e, cost_of_s_to_v, first_visit;\n        while (!open.empty()) {\n          closest = open.pop();\n          u = closest.value;\n          cost_of_s_to_u = closest.cost;\n          adjacent_nodes = graph[u] || {};\n          for (v in adjacent_nodes) {\n            if (adjacent_nodes.hasOwnProperty(v)) {\n              cost_of_e = adjacent_nodes[v];\n              cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n              cost_of_s_to_v = costs[v];\n              first_visit = typeof costs[v] === \"undefined\";\n              if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n                costs[v] = cost_of_s_to_u_plus_cost_of_e;\n                open.push(v, cost_of_s_to_u_plus_cost_of_e);\n                predecessors[v] = u;\n              }\n            }\n          }\n        }\n        if (typeof d !== \"undefined\" && typeof costs[d] === \"undefined\") {\n          var msg = [\"Could not find a path from \", s, \" to \", d, \".\"].join(\"\");\n          throw new Error(msg);\n        }\n        return predecessors;\n      },\n      extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n        var nodes = [];\n        var u = d;\n        var predecessor;\n        while (u) {\n          nodes.push(u);\n          predecessor = predecessors[u];\n          u = predecessors[u];\n        }\n        nodes.reverse();\n        return nodes;\n      },\n      find_path: function(graph, s, d) {\n        var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n        return dijkstra.extract_shortest_path_from_predecessor_list(\n          predecessors,\n          d\n        );\n      },\n      /**\n       * A very naive priority queue implementation.\n       */\n      PriorityQueue: {\n        make: function(opts) {\n          var T = dijkstra.PriorityQueue, t = {}, key;\n          opts = opts || {};\n          for (key in T) {\n            if (T.hasOwnProperty(key)) {\n              t[key] = T[key];\n            }\n          }\n          t.queue = [];\n          t.sorter = opts.sorter || T.default_sorter;\n          return t;\n        },\n        default_sorter: function(a, b) {\n          return a.cost - b.cost;\n        },\n        /**\n         * Add a new item to the queue and ensure the highest priority element\n         * is at the front of the queue.\n         */\n        push: function(value, cost) {\n          var item = { value, cost };\n          this.queue.push(item);\n          this.queue.sort(this.sorter);\n        },\n        /**\n         * Return the highest priority element in the queue.\n         */\n        pop: function() {\n          return this.queue.shift();\n        },\n        empty: function() {\n          return this.queue.length === 0;\n        }\n      }\n    };\n    if (typeof module !== \"undefined\") {\n      module.exports = dijkstra;\n    }\n  }\n});\n\n// node_modules/qrcode/lib/core/segments.js\nvar require_segments = __commonJS({\n  \"node_modules/qrcode/lib/core/segments.js\"(exports) {\n    var Mode = require_mode();\n    var NumericData = require_numeric_data();\n    var AlphanumericData = require_alphanumeric_data();\n    var ByteData = require_byte_data();\n    var KanjiData = require_kanji_data();\n    var Regex = require_regex();\n    var Utils = require_utils();\n    var dijkstra = require_dijkstra();\n    function getStringByteLength(str) {\n      return unescape(encodeURIComponent(str)).length;\n    }\n    function getSegments(regex, mode, str) {\n      const segments = [];\n      let result;\n      while ((result = regex.exec(str)) !== null) {\n        segments.push({\n          data: result[0],\n          index: result.index,\n          mode,\n          length: result[0].length\n        });\n      }\n      return segments;\n    }\n    function getSegmentsFromString(dataStr) {\n      const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr);\n      const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr);\n      let byteSegs;\n      let kanjiSegs;\n      if (Utils.isKanjiModeEnabled()) {\n        byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr);\n        kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr);\n      } else {\n        byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr);\n        kanjiSegs = [];\n      }\n      const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs);\n      return segs.sort(function(s1, s2) {\n        return s1.index - s2.index;\n      }).map(function(obj) {\n        return {\n          data: obj.data,\n          mode: obj.mode,\n          length: obj.length\n        };\n      });\n    }\n    function getSegmentBitsLength(length, mode) {\n      switch (mode) {\n        case Mode.NUMERIC:\n          return NumericData.getBitsLength(length);\n        case Mode.ALPHANUMERIC:\n          return AlphanumericData.getBitsLength(length);\n        case Mode.KANJI:\n          return KanjiData.getBitsLength(length);\n        case Mode.BYTE:\n          return ByteData.getBitsLength(length);\n      }\n    }\n    function mergeSegments(segs) {\n      return segs.reduce(function(acc, curr) {\n        const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null;\n        if (prevSeg && prevSeg.mode === curr.mode) {\n          acc[acc.length - 1].data += curr.data;\n          return acc;\n        }\n        acc.push(curr);\n        return acc;\n      }, []);\n    }\n    function buildNodes(segs) {\n      const nodes = [];\n      for (let i = 0; i < segs.length; i++) {\n        const seg = segs[i];\n        switch (seg.mode) {\n          case Mode.NUMERIC:\n            nodes.push([\n              seg,\n              { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n              { data: seg.data, mode: Mode.BYTE, length: seg.length }\n            ]);\n            break;\n          case Mode.ALPHANUMERIC:\n            nodes.push([\n              seg,\n              { data: seg.data, mode: Mode.BYTE, length: seg.length }\n            ]);\n            break;\n          case Mode.KANJI:\n            nodes.push([\n              seg,\n              { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n            ]);\n            break;\n          case Mode.BYTE:\n            nodes.push([\n              { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n            ]);\n        }\n      }\n      return nodes;\n    }\n    function buildGraph(nodes, version) {\n      const table = {};\n      const graph = { start: {} };\n      let prevNodeIds = [\"start\"];\n      for (let i = 0; i < nodes.length; i++) {\n        const nodeGroup = nodes[i];\n        const currentNodeIds = [];\n        for (let j = 0; j < nodeGroup.length; j++) {\n          const node = nodeGroup[j];\n          const key = \"\" + i + j;\n          currentNodeIds.push(key);\n          table[key] = { node, lastCount: 0 };\n          graph[key] = {};\n          for (let n = 0; n < prevNodeIds.length; n++) {\n            const prevNodeId = prevNodeIds[n];\n            if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n              graph[prevNodeId][key] = getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) - getSegmentBitsLength(table[prevNodeId].lastCount, node.mode);\n              table[prevNodeId].lastCount += node.length;\n            } else {\n              if (table[prevNodeId])\n                table[prevNodeId].lastCount = node.length;\n              graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) + 4 + Mode.getCharCountIndicator(node.mode, version);\n            }\n          }\n        }\n        prevNodeIds = currentNodeIds;\n      }\n      for (let n = 0; n < prevNodeIds.length; n++) {\n        graph[prevNodeIds[n]].end = 0;\n      }\n      return { map: graph, table };\n    }\n    function buildSingleSegment(data2, modesHint) {\n      let mode;\n      const bestMode = Mode.getBestModeForData(data2);\n      mode = Mode.from(modesHint, bestMode);\n      if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n        throw new Error('\"' + data2 + '\" cannot be encoded with mode ' + Mode.toString(mode) + \".\\n Suggested mode is: \" + Mode.toString(bestMode));\n      }\n      if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n        mode = Mode.BYTE;\n      }\n      switch (mode) {\n        case Mode.NUMERIC:\n          return new NumericData(data2);\n        case Mode.ALPHANUMERIC:\n          return new AlphanumericData(data2);\n        case Mode.KANJI:\n          return new KanjiData(data2);\n        case Mode.BYTE:\n          return new ByteData(data2);\n      }\n    }\n    exports.fromArray = function fromArray(array) {\n      return array.reduce(function(acc, seg) {\n        if (typeof seg === \"string\") {\n          acc.push(buildSingleSegment(seg, null));\n        } else if (seg.data) {\n          acc.push(buildSingleSegment(seg.data, seg.mode));\n        }\n        return acc;\n      }, []);\n    };\n    exports.fromString = function fromString(data2, version) {\n      const segs = getSegmentsFromString(data2, Utils.isKanjiModeEnabled());\n      const nodes = buildNodes(segs);\n      const graph = buildGraph(nodes, version);\n      const path = dijkstra.find_path(graph.map, \"start\", \"end\");\n      const optimizedSegs = [];\n      for (let i = 1; i < path.length - 1; i++) {\n        optimizedSegs.push(graph.table[path[i]].node);\n      }\n      return exports.fromArray(mergeSegments(optimizedSegs));\n    };\n    exports.rawSplit = function rawSplit(data2) {\n      return exports.fromArray(\n        getSegmentsFromString(data2, Utils.isKanjiModeEnabled())\n      );\n    };\n  }\n});\n\n// node_modules/qrcode/lib/core/qrcode.js\nvar require_qrcode = __commonJS({\n  \"node_modules/qrcode/lib/core/qrcode.js\"(exports) {\n    var Utils = require_utils();\n    var ECLevel = require_error_correction_level();\n    var BitBuffer = require_bit_buffer();\n    var BitMatrix = require_bit_matrix();\n    var AlignmentPattern = require_alignment_pattern();\n    var FinderPattern = require_finder_pattern();\n    var MaskPattern = require_mask_pattern();\n    var ECCode = require_error_correction_code();\n    var ReedSolomonEncoder = require_reed_solomon_encoder();\n    var Version = require_version();\n    var FormatInfo = require_format_info();\n    var Mode = require_mode();\n    var Segments = require_segments();\n    function setupFinderPattern(matrix, version) {\n      const size = matrix.size;\n      const pos = FinderPattern.getPositions(version);\n      for (let i = 0; i < pos.length; i++) {\n        const row = pos[i][0];\n        const col = pos[i][1];\n        for (let r = -1; r <= 7; r++) {\n          if (row + r <= -1 || size <= row + r)\n            continue;\n          for (let c = -1; c <= 7; c++) {\n            if (col + c <= -1 || size <= col + c)\n              continue;\n            if (r >= 0 && r <= 6 && (c === 0 || c === 6) || c >= 0 && c <= 6 && (r === 0 || r === 6) || r >= 2 && r <= 4 && c >= 2 && c <= 4) {\n              matrix.set(row + r, col + c, true, true);\n            } else {\n              matrix.set(row + r, col + c, false, true);\n            }\n          }\n        }\n      }\n    }\n    function setupTimingPattern(matrix) {\n      const size = matrix.size;\n      for (let r = 8; r < size - 8; r++) {\n        const value = r % 2 === 0;\n        matrix.set(r, 6, value, true);\n        matrix.set(6, r, value, true);\n      }\n    }\n    function setupAlignmentPattern(matrix, version) {\n      const pos = AlignmentPattern.getPositions(version);\n      for (let i = 0; i < pos.length; i++) {\n        const row = pos[i][0];\n        const col = pos[i][1];\n        for (let r = -2; r <= 2; r++) {\n          for (let c = -2; c <= 2; c++) {\n            if (r === -2 || r === 2 || c === -2 || c === 2 || r === 0 && c === 0) {\n              matrix.set(row + r, col + c, true, true);\n            } else {\n              matrix.set(row + r, col + c, false, true);\n            }\n          }\n        }\n      }\n    }\n    function setupVersionInfo(matrix, version) {\n      const size = matrix.size;\n      const bits = Version.getEncodedBits(version);\n      let row, col, mod;\n      for (let i = 0; i < 18; i++) {\n        row = Math.floor(i / 3);\n        col = i % 3 + size - 8 - 3;\n        mod = (bits >> i & 1) === 1;\n        matrix.set(row, col, mod, true);\n        matrix.set(col, row, mod, true);\n      }\n    }\n    function setupFormatInfo(matrix, errorCorrectionLevel, maskPattern) {\n      const size = matrix.size;\n      const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern);\n      let i, mod;\n      for (i = 0; i < 15; i++) {\n        mod = (bits >> i & 1) === 1;\n        if (i < 6) {\n          matrix.set(i, 8, mod, true);\n        } else if (i < 8) {\n          matrix.set(i + 1, 8, mod, true);\n        } else {\n          matrix.set(size - 15 + i, 8, mod, true);\n        }\n        if (i < 8) {\n          matrix.set(8, size - i - 1, mod, true);\n        } else if (i < 9) {\n          matrix.set(8, 15 - i - 1 + 1, mod, true);\n        } else {\n          matrix.set(8, 15 - i - 1, mod, true);\n        }\n      }\n      matrix.set(size - 8, 8, 1, true);\n    }\n    function setupData(matrix, data2) {\n      const size = matrix.size;\n      let inc = -1;\n      let row = size - 1;\n      let bitIndex = 7;\n      let byteIndex = 0;\n      for (let col = size - 1; col > 0; col -= 2) {\n        if (col === 6)\n          col--;\n        while (true) {\n          for (let c = 0; c < 2; c++) {\n            if (!matrix.isReserved(row, col - c)) {\n              let dark = false;\n              if (byteIndex < data2.length) {\n                dark = (data2[byteIndex] >>> bitIndex & 1) === 1;\n              }\n              matrix.set(row, col - c, dark);\n              bitIndex--;\n              if (bitIndex === -1) {\n                byteIndex++;\n                bitIndex = 7;\n              }\n            }\n          }\n          row += inc;\n          if (row < 0 || size <= row) {\n            row -= inc;\n            inc = -inc;\n            break;\n          }\n        }\n      }\n    }\n    function createData(version, errorCorrectionLevel, segments) {\n      const buffer = new BitBuffer();\n      segments.forEach(function(data2) {\n        buffer.put(data2.mode.bit, 4);\n        buffer.put(data2.getLength(), Mode.getCharCountIndicator(data2.mode, version));\n        data2.write(buffer);\n      });\n      const totalCodewords = Utils.getSymbolTotalCodewords(version);\n      const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n      const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n      if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n        buffer.put(0, 4);\n      }\n      while (buffer.getLengthInBits() % 8 !== 0) {\n        buffer.putBit(0);\n      }\n      const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8;\n      for (let i = 0; i < remainingByte; i++) {\n        buffer.put(i % 2 ? 17 : 236, 8);\n      }\n      return createCodewords(buffer, version, errorCorrectionLevel);\n    }\n    function createCodewords(bitBuffer, version, errorCorrectionLevel) {\n      const totalCodewords = Utils.getSymbolTotalCodewords(version);\n      const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel);\n      const dataTotalCodewords = totalCodewords - ecTotalCodewords;\n      const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel);\n      const blocksInGroup2 = totalCodewords % ecTotalBlocks;\n      const blocksInGroup1 = ecTotalBlocks - blocksInGroup2;\n      const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks);\n      const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks);\n      const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1;\n      const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1;\n      const rs = new ReedSolomonEncoder(ecCount);\n      let offset = 0;\n      const dcData = new Array(ecTotalBlocks);\n      const ecData = new Array(ecTotalBlocks);\n      let maxDataSize = 0;\n      const buffer = new Uint8Array(bitBuffer.buffer);\n      for (let b = 0; b < ecTotalBlocks; b++) {\n        const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2;\n        dcData[b] = buffer.slice(offset, offset + dataSize);\n        ecData[b] = rs.encode(dcData[b]);\n        offset += dataSize;\n        maxDataSize = Math.max(maxDataSize, dataSize);\n      }\n      const data2 = new Uint8Array(totalCodewords);\n      let index = 0;\n      let i, r;\n      for (i = 0; i < maxDataSize; i++) {\n        for (r = 0; r < ecTotalBlocks; r++) {\n          if (i < dcData[r].length) {\n            data2[index++] = dcData[r][i];\n          }\n        }\n      }\n      for (i = 0; i < ecCount; i++) {\n        for (r = 0; r < ecTotalBlocks; r++) {\n          data2[index++] = ecData[r][i];\n        }\n      }\n      return data2;\n    }\n    function createSymbol(data2, version, errorCorrectionLevel, maskPattern) {\n      let segments;\n      if (Array.isArray(data2)) {\n        segments = Segments.fromArray(data2);\n      } else if (typeof data2 === \"string\") {\n        let estimatedVersion = version;\n        if (!estimatedVersion) {\n          const rawSegments = Segments.rawSplit(data2);\n          estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel);\n        }\n        segments = Segments.fromString(data2, estimatedVersion || 40);\n      } else {\n        throw new Error(\"Invalid data\");\n      }\n      const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel);\n      if (!bestVersion) {\n        throw new Error(\"The amount of data is too big to be stored in a QR Code\");\n      }\n      if (!version) {\n        version = bestVersion;\n      } else if (version < bestVersion) {\n        throw new Error(\n          \"\\nThe chosen QR Code version cannot contain this amount of data.\\nMinimum version required to store current data is: \" + bestVersion + \".\\n\"\n        );\n      }\n      const dataBits = createData(version, errorCorrectionLevel, segments);\n      const moduleCount = Utils.getSymbolSize(version);\n      const modules = new BitMatrix(moduleCount);\n      setupFinderPattern(modules, version);\n      setupTimingPattern(modules);\n      setupAlignmentPattern(modules, version);\n      setupFormatInfo(modules, errorCorrectionLevel, 0);\n      if (version >= 7) {\n        setupVersionInfo(modules, version);\n      }\n      setupData(modules, dataBits);\n      if (isNaN(maskPattern)) {\n        maskPattern = MaskPattern.getBestMask(\n          modules,\n          setupFormatInfo.bind(null, modules, errorCorrectionLevel)\n        );\n      }\n      MaskPattern.applyMask(maskPattern, modules);\n      setupFormatInfo(modules, errorCorrectionLevel, maskPattern);\n      return {\n        modules,\n        version,\n        errorCorrectionLevel,\n        maskPattern,\n        segments\n      };\n    }\n    exports.create = function create(data2, options) {\n      if (typeof data2 === \"undefined\" || data2 === \"\") {\n        throw new Error(\"No input text\");\n      }\n      let errorCorrectionLevel = ECLevel.M;\n      let version;\n      let mask;\n      if (typeof options !== \"undefined\") {\n        errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M);\n        version = Version.from(options.version);\n        mask = MaskPattern.from(options.maskPattern);\n        if (options.toSJISFunc) {\n          Utils.setToSJISFunction(options.toSJISFunc);\n        }\n      }\n      return createSymbol(data2, version, errorCorrectionLevel, mask);\n    };\n  }\n});\n\n// node_modules/qrcode/lib/renderer/utils.js\nvar require_utils2 = __commonJS({\n  \"node_modules/qrcode/lib/renderer/utils.js\"(exports) {\n    function hex2rgba(hex) {\n      if (typeof hex === \"number\") {\n        hex = hex.toString();\n      }\n      if (typeof hex !== \"string\") {\n        throw new Error(\"Color should be defined as hex string\");\n      }\n      let hexCode = hex.slice().replace(\"#\", \"\").split(\"\");\n      if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n        throw new Error(\"Invalid hex color: \" + hex);\n      }\n      if (hexCode.length === 3 || hexCode.length === 4) {\n        hexCode = Array.prototype.concat.apply([], hexCode.map(function(c) {\n          return [c, c];\n        }));\n      }\n      if (hexCode.length === 6)\n        hexCode.push(\"F\", \"F\");\n      const hexValue = parseInt(hexCode.join(\"\"), 16);\n      return {\n        r: hexValue >> 24 & 255,\n        g: hexValue >> 16 & 255,\n        b: hexValue >> 8 & 255,\n        a: hexValue & 255,\n        hex: \"#\" + hexCode.slice(0, 6).join(\"\")\n      };\n    }\n    exports.getOptions = function getOptions2(options) {\n      if (!options)\n        options = {};\n      if (!options.color)\n        options.color = {};\n      const margin = typeof options.margin === \"undefined\" || options.margin === null || options.margin < 0 ? 4 : options.margin;\n      const width = options.width && options.width >= 21 ? options.width : void 0;\n      const scale = options.scale || 4;\n      return {\n        width,\n        scale: width ? 4 : scale,\n        margin,\n        color: {\n          dark: hex2rgba(options.color.dark || \"#000000ff\"),\n          light: hex2rgba(options.color.light || \"#ffffffff\")\n        },\n        type: options.type,\n        rendererOpts: options.rendererOpts || {}\n      };\n    };\n    exports.getScale = function getScale(qrSize, opts) {\n      return opts.width && opts.width >= qrSize + opts.margin * 2 ? opts.width / (qrSize + opts.margin * 2) : opts.scale;\n    };\n    exports.getImageWidth = function getImageWidth(qrSize, opts) {\n      const scale = exports.getScale(qrSize, opts);\n      return Math.floor((qrSize + opts.margin * 2) * scale);\n    };\n    exports.qrToImageData = function qrToImageData(imgData, qr, opts) {\n      const size = qr.modules.size;\n      const data2 = qr.modules.data;\n      const scale = exports.getScale(size, opts);\n      const symbolSize = Math.floor((size + opts.margin * 2) * scale);\n      const scaledMargin = opts.margin * scale;\n      const palette = [opts.color.light, opts.color.dark];\n      for (let i = 0; i < symbolSize; i++) {\n        for (let j = 0; j < symbolSize; j++) {\n          let posDst = (i * symbolSize + j) * 4;\n          let pxColor = opts.color.light;\n          if (i >= scaledMargin && j >= scaledMargin && i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n            const iSrc = Math.floor((i - scaledMargin) / scale);\n            const jSrc = Math.floor((j - scaledMargin) / scale);\n            pxColor = palette[data2[iSrc * size + jSrc] ? 1 : 0];\n          }\n          imgData[posDst++] = pxColor.r;\n          imgData[posDst++] = pxColor.g;\n          imgData[posDst++] = pxColor.b;\n          imgData[posDst] = pxColor.a;\n        }\n      }\n    };\n  }\n});\n\n// node_modules/qrcode/lib/renderer/canvas.js\nvar require_canvas = __commonJS({\n  \"node_modules/qrcode/lib/renderer/canvas.js\"(exports) {\n    var Utils = require_utils2();\n    function clearCanvas(ctx, canvas, size) {\n      ctx.clearRect(0, 0, canvas.width, canvas.height);\n      if (!canvas.style)\n        canvas.style = {};\n      canvas.height = size;\n      canvas.width = size;\n      canvas.style.height = size + \"px\";\n      canvas.style.width = size + \"px\";\n    }\n    function getCanvasElement() {\n      try {\n        return document.createElement(\"canvas\");\n      } catch (e) {\n        throw new Error(\"You need to specify a canvas element\");\n      }\n    }\n    exports.render = function render(qrData, canvas, options) {\n      let opts = options;\n      let canvasEl = canvas;\n      if (typeof opts === \"undefined\" && (!canvas || !canvas.getContext)) {\n        opts = canvas;\n        canvas = void 0;\n      }\n      if (!canvas) {\n        canvasEl = getCanvasElement();\n      }\n      opts = Utils.getOptions(opts);\n      const size = Utils.getImageWidth(qrData.modules.size, opts);\n      const ctx = canvasEl.getContext(\"2d\");\n      const image = ctx.createImageData(size, size);\n      Utils.qrToImageData(image.data, qrData, opts);\n      clearCanvas(ctx, canvasEl, size);\n      ctx.putImageData(image, 0, 0);\n      return canvasEl;\n    };\n    exports.renderToDataURL = function renderToDataURL(qrData, canvas, options) {\n      let opts = options;\n      if (typeof opts === \"undefined\" && (!canvas || !canvas.getContext)) {\n        opts = canvas;\n        canvas = void 0;\n      }\n      if (!opts)\n        opts = {};\n      const canvasEl = exports.render(qrData, canvas, opts);\n      const type = opts.type || \"image/png\";\n      const rendererOpts = opts.rendererOpts || {};\n      return canvasEl.toDataURL(type, rendererOpts.quality);\n    };\n  }\n});\n\n// node_modules/qrcode/lib/renderer/svg-tag.js\nvar require_svg_tag = __commonJS({\n  \"node_modules/qrcode/lib/renderer/svg-tag.js\"(exports) {\n    var Utils = require_utils2();\n    function getColorAttrib(color, attrib) {\n      const alpha = color.a / 255;\n      const str = attrib + '=\"' + color.hex + '\"';\n      return alpha < 1 ? str + \" \" + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"' : str;\n    }\n    function svgCmd(cmd, x, y) {\n      let str = cmd + x;\n      if (typeof y !== \"undefined\")\n        str += \" \" + y;\n      return str;\n    }\n    function qrToPath(data2, size, margin) {\n      let path = \"\";\n      let moveBy = 0;\n      let newRow = false;\n      let lineLength = 0;\n      for (let i = 0; i < data2.length; i++) {\n        const col = Math.floor(i % size);\n        const row = Math.floor(i / size);\n        if (!col && !newRow)\n          newRow = true;\n        if (data2[i]) {\n          lineLength++;\n          if (!(i > 0 && col > 0 && data2[i - 1])) {\n            path += newRow ? svgCmd(\"M\", col + margin, 0.5 + row + margin) : svgCmd(\"m\", moveBy, 0);\n            moveBy = 0;\n            newRow = false;\n          }\n          if (!(col + 1 < size && data2[i + 1])) {\n            path += svgCmd(\"h\", lineLength);\n            lineLength = 0;\n          }\n        } else {\n          moveBy++;\n        }\n      }\n      return path;\n    }\n    exports.render = function render(qrData, options, cb) {\n      const opts = Utils.getOptions(options);\n      const size = qrData.modules.size;\n      const data2 = qrData.modules.data;\n      const qrcodesize = size + opts.margin * 2;\n      const bg = !opts.color.light.a ? \"\" : \"<path \" + getColorAttrib(opts.color.light, \"fill\") + ' d=\"M0 0h' + qrcodesize + \"v\" + qrcodesize + 'H0z\"/>';\n      const path = \"<path \" + getColorAttrib(opts.color.dark, \"stroke\") + ' d=\"' + qrToPath(data2, size, opts.margin) + '\"/>';\n      const viewBox = 'viewBox=\"0 0 ' + qrcodesize + \" \" + qrcodesize + '\"';\n      const width = !opts.width ? \"\" : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" ';\n      const svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + \"</svg>\\n\";\n      if (typeof cb === \"function\") {\n        cb(null, svgTag);\n      }\n      return svgTag;\n    };\n  }\n});\n\n// node_modules/qrcode/lib/browser.js\nvar require_browser = __commonJS({\n  \"node_modules/qrcode/lib/browser.js\"(exports) {\n    var canPromise = require_can_promise();\n    var QRCode = require_qrcode();\n    var CanvasRenderer = require_canvas();\n    var SvgRenderer = require_svg_tag();\n    function renderCanvas(renderFunc, canvas, text, opts, cb) {\n      const args = [].slice.call(arguments, 1);\n      const argsNum = args.length;\n      const isLastArgCb = typeof args[argsNum - 1] === \"function\";\n      if (!isLastArgCb && !canPromise()) {\n        throw new Error(\"Callback required as last argument\");\n      }\n      if (isLastArgCb) {\n        if (argsNum < 2) {\n          throw new Error(\"Too few arguments provided\");\n        }\n        if (argsNum === 2) {\n          cb = text;\n          text = canvas;\n          canvas = opts = void 0;\n        } else if (argsNum === 3) {\n          if (canvas.getContext && typeof cb === \"undefined\") {\n            cb = opts;\n            opts = void 0;\n          } else {\n            cb = opts;\n            opts = text;\n            text = canvas;\n            canvas = void 0;\n          }\n        }\n      } else {\n        if (argsNum < 1) {\n          throw new Error(\"Too few arguments provided\");\n        }\n        if (argsNum === 1) {\n          text = canvas;\n          canvas = opts = void 0;\n        } else if (argsNum === 2 && !canvas.getContext) {\n          opts = text;\n          text = canvas;\n          canvas = void 0;\n        }\n        return new Promise(function(resolve, reject) {\n          try {\n            const data2 = QRCode.create(text, opts);\n            resolve(renderFunc(data2, canvas, opts));\n          } catch (e) {\n            reject(e);\n          }\n        });\n      }\n      try {\n        const data2 = QRCode.create(text, opts);\n        cb(null, renderFunc(data2, canvas, opts));\n      } catch (e) {\n        cb(e);\n      }\n    }\n    exports.create = QRCode.create;\n    exports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render);\n    exports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL);\n    exports.toString = renderCanvas.bind(null, function(data2, _, opts) {\n      return SvgRenderer.render(data2, opts);\n    });\n  }\n});\n\n// node_modules/lit-html/development/directive.js\nvar PartType = {\n  ATTRIBUTE: 1,\n  CHILD: 2,\n  PROPERTY: 3,\n  BOOLEAN_ATTRIBUTE: 4,\n  EVENT: 5,\n  ELEMENT: 6\n};\nvar directive = (c) => (...values) => ({\n  // This property needs to remain unminified.\n  [\"_$litDirective$\"]: c,\n  values\n});\nvar Directive = class {\n  constructor(_partInfo) {\n  }\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n  /** @internal */\n  _$initialize(part, parent, attributeIndex) {\n    this.__part = part;\n    this._$parent = parent;\n    this.__attributeIndex = attributeIndex;\n  }\n  /** @internal */\n  _$resolve(part, props) {\n    return this.update(part, props);\n  }\n  update(_part, props) {\n    return this.render(...props);\n  }\n};\n\n// node_modules/lit-html/development/directives/class-map.js\nvar ClassMapDirective = class extends Directive {\n  constructor(partInfo) {\n    var _a;\n    super(partInfo);\n    if (partInfo.type !== PartType.ATTRIBUTE || partInfo.name !== \"class\" || ((_a = partInfo.strings) === null || _a === void 0 ? void 0 : _a.length) > 2) {\n      throw new Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n    }\n  }\n  render(classInfo) {\n    return \" \" + Object.keys(classInfo).filter((key) => classInfo[key]).join(\" \") + \" \";\n  }\n  update(part, [classInfo]) {\n    var _a, _b;\n    if (this._previousClasses === void 0) {\n      this._previousClasses = /* @__PURE__ */ new Set();\n      if (part.strings !== void 0) {\n        this._staticClasses = new Set(part.strings.join(\" \").split(/\\s/).filter((s) => s !== \"\"));\n      }\n      for (const name in classInfo) {\n        if (classInfo[name] && !((_a = this._staticClasses) === null || _a === void 0 ? void 0 : _a.has(name))) {\n          this._previousClasses.add(name);\n        }\n      }\n      return this.render(classInfo);\n    }\n    const classList = part.element.classList;\n    this._previousClasses.forEach((name) => {\n      if (!(name in classInfo)) {\n        classList.remove(name);\n        this._previousClasses.delete(name);\n      }\n    });\n    for (const name in classInfo) {\n      const value = !!classInfo[name];\n      if (value !== this._previousClasses.has(name) && !((_b = this._staticClasses) === null || _b === void 0 ? void 0 : _b.has(name))) {\n        if (value) {\n          classList.add(name);\n          this._previousClasses.add(name);\n        } else {\n          classList.remove(name);\n          this._previousClasses.delete(name);\n        }\n      }\n    }\n    return noChange;\n  }\n};\nvar classMap = directive(ClassMapDirective);\n\n// node_modules/@motionone/utils/dist/array.es.js\nfunction addUniqueItem(array, item) {\n  array.indexOf(item) === -1 && array.push(item);\n}\n\n// node_modules/@motionone/utils/dist/clamp.es.js\nvar clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\n// node_modules/@motionone/utils/dist/defaults.es.js\nvar defaults = {\n  duration: 0.3,\n  delay: 0,\n  endDelay: 0,\n  repeat: 0,\n  easing: \"ease\"\n};\n\n// node_modules/@motionone/utils/dist/is-number.es.js\nvar isNumber = (value) => typeof value === \"number\";\n\n// node_modules/@motionone/utils/dist/is-easing-list.es.js\nvar isEasingList = (easing) => Array.isArray(easing) && !isNumber(easing[0]);\n\n// node_modules/@motionone/utils/dist/wrap.es.js\nvar wrap = (min, max, v) => {\n  const rangeSize = max - min;\n  return ((v - min) % rangeSize + rangeSize) % rangeSize + min;\n};\n\n// node_modules/@motionone/utils/dist/easing.es.js\nfunction getEasingForSegment(easing, i) {\n  return isEasingList(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\n// node_modules/@motionone/utils/dist/mix.es.js\nvar mix = (min, max, progress2) => -progress2 * min + progress2 * max + min;\n\n// node_modules/@motionone/utils/dist/noop.es.js\nvar noop = () => {\n};\nvar noopReturn = (v) => v;\n\n// node_modules/@motionone/utils/dist/progress.es.js\nvar progress = (min, max, value) => max - min === 0 ? 1 : (value - min) / (max - min);\n\n// node_modules/@motionone/utils/dist/offset.es.js\nfunction fillOffset(offset, remaining) {\n  const min = offset[offset.length - 1];\n  for (let i = 1; i <= remaining; i++) {\n    const offsetProgress = progress(0, remaining, i);\n    offset.push(mix(min, 1, offsetProgress));\n  }\n}\nfunction defaultOffset(length) {\n  const offset = [0];\n  fillOffset(offset, length - 1);\n  return offset;\n}\n\n// node_modules/@motionone/utils/dist/interpolate.es.js\nfunction interpolate(output, input = defaultOffset(output.length), easing = noopReturn) {\n  const length = output.length;\n  const remainder = length - input.length;\n  remainder > 0 && fillOffset(input, remainder);\n  return (t) => {\n    let i = 0;\n    for (; i < length - 2; i++) {\n      if (t < input[i + 1])\n        break;\n    }\n    let progressInRange = clamp(0, 1, progress(input[i], input[i + 1], t));\n    const segmentEasing = getEasingForSegment(easing, i);\n    progressInRange = segmentEasing(progressInRange);\n    return mix(output[i], output[i + 1], progressInRange);\n  };\n}\n\n// node_modules/@motionone/utils/dist/is-cubic-bezier.es.js\nvar isCubicBezier = (easing) => Array.isArray(easing) && isNumber(easing[0]);\n\n// node_modules/@motionone/utils/dist/is-easing-generator.es.js\nvar isEasingGenerator = (easing) => typeof easing === \"object\" && Boolean(easing.createAnimation);\n\n// node_modules/@motionone/utils/dist/is-function.es.js\nvar isFunction = (value) => typeof value === \"function\";\n\n// node_modules/@motionone/utils/dist/is-string.es.js\nvar isString = (value) => typeof value === \"string\";\n\n// node_modules/@motionone/utils/dist/time.es.js\nvar time = {\n  ms: (seconds) => seconds * 1e3,\n  s: (milliseconds) => milliseconds / 1e3\n};\n\n// node_modules/@motionone/utils/dist/velocity.es.js\nfunction velocityPerSecond(velocity, frameDuration) {\n  return frameDuration ? velocity * (1e3 / frameDuration) : 0;\n}\n\n// node_modules/@motionone/easing/dist/cubic-bezier.es.js\nvar calcBezier = (t, a1, a2) => (((1 - 3 * a2 + 3 * a1) * t + (3 * a2 - 6 * a1)) * t + 3 * a1) * t;\nvar subdivisionPrecision = 1e-7;\nvar subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n  let currentX;\n  let currentT;\n  let i = 0;\n  do {\n    currentT = lowerBound + (upperBound - lowerBound) / 2;\n    currentX = calcBezier(currentT, mX1, mX2) - x;\n    if (currentX > 0) {\n      upperBound = currentT;\n    } else {\n      lowerBound = currentT;\n    }\n  } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);\n  return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n  if (mX1 === mY1 && mX2 === mY2)\n    return noopReturn;\n  const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n  return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\n// node_modules/@motionone/easing/dist/steps.es.js\nvar steps = (steps2, direction = \"end\") => (progress2) => {\n  progress2 = direction === \"end\" ? Math.min(progress2, 0.999) : Math.max(progress2, 1e-3);\n  const expanded = progress2 * steps2;\n  const rounded = direction === \"end\" ? Math.floor(expanded) : Math.ceil(expanded);\n  return clamp(0, 1, rounded / steps2);\n};\n\n// node_modules/@motionone/animation/dist/utils/easing.es.js\nvar namedEasings = {\n  ease: cubicBezier(0.25, 0.1, 0.25, 1),\n  \"ease-in\": cubicBezier(0.42, 0, 1, 1),\n  \"ease-in-out\": cubicBezier(0.42, 0, 0.58, 1),\n  \"ease-out\": cubicBezier(0, 0, 0.58, 1)\n};\nvar functionArgsRegex = /\\((.*?)\\)/;\nfunction getEasingFunction(definition) {\n  if (isFunction(definition))\n    return definition;\n  if (isCubicBezier(definition))\n    return cubicBezier(...definition);\n  const namedEasing = namedEasings[definition];\n  if (namedEasing)\n    return namedEasing;\n  if (definition.startsWith(\"steps\")) {\n    const args = functionArgsRegex.exec(definition);\n    if (args) {\n      const argsArray = args[1].split(\",\");\n      return steps(parseFloat(argsArray[0]), argsArray[1].trim());\n    }\n  }\n  return noopReturn;\n}\n\n// node_modules/@motionone/animation/dist/Animation.es.js\nvar Animation = class {\n  constructor(output, keyframes = [0, 1], { easing, duration: initialDuration = defaults.duration, delay = defaults.delay, endDelay = defaults.endDelay, repeat = defaults.repeat, offset, direction = \"normal\", autoplay = true } = {}) {\n    this.startTime = null;\n    this.rate = 1;\n    this.t = 0;\n    this.cancelTimestamp = null;\n    this.easing = noopReturn;\n    this.duration = 0;\n    this.totalDuration = 0;\n    this.repeat = 0;\n    this.playState = \"idle\";\n    this.finished = new Promise((resolve, reject) => {\n      this.resolve = resolve;\n      this.reject = reject;\n    });\n    easing = easing || defaults.easing;\n    if (isEasingGenerator(easing)) {\n      const custom = easing.createAnimation(keyframes);\n      easing = custom.easing;\n      keyframes = custom.keyframes || keyframes;\n      initialDuration = custom.duration || initialDuration;\n    }\n    this.repeat = repeat;\n    this.easing = isEasingList(easing) ? noopReturn : getEasingFunction(easing);\n    this.updateDuration(initialDuration);\n    const interpolate$1 = interpolate(keyframes, offset, isEasingList(easing) ? easing.map(getEasingFunction) : noopReturn);\n    this.tick = (timestamp) => {\n      var _a;\n      delay = delay;\n      let t = 0;\n      if (this.pauseTime !== void 0) {\n        t = this.pauseTime;\n      } else {\n        t = (timestamp - this.startTime) * this.rate;\n      }\n      this.t = t;\n      t /= 1e3;\n      t = Math.max(t - delay, 0);\n      if (this.playState === \"finished\" && this.pauseTime === void 0) {\n        t = this.totalDuration;\n      }\n      const progress2 = t / this.duration;\n      let currentIteration = Math.floor(progress2);\n      let iterationProgress = progress2 % 1;\n      if (!iterationProgress && progress2 >= 1) {\n        iterationProgress = 1;\n      }\n      iterationProgress === 1 && currentIteration--;\n      const iterationIsOdd = currentIteration % 2;\n      if (direction === \"reverse\" || direction === \"alternate\" && iterationIsOdd || direction === \"alternate-reverse\" && !iterationIsOdd) {\n        iterationProgress = 1 - iterationProgress;\n      }\n      const p = t >= this.totalDuration ? 1 : Math.min(iterationProgress, 1);\n      const latest = interpolate$1(this.easing(p));\n      output(latest);\n      const isAnimationFinished = this.pauseTime === void 0 && (this.playState === \"finished\" || t >= this.totalDuration + endDelay);\n      if (isAnimationFinished) {\n        this.playState = \"finished\";\n        (_a = this.resolve) === null || _a === void 0 ? void 0 : _a.call(this, latest);\n      } else if (this.playState !== \"idle\") {\n        this.frameRequestId = requestAnimationFrame(this.tick);\n      }\n    };\n    if (autoplay)\n      this.play();\n  }\n  play() {\n    const now = performance.now();\n    this.playState = \"running\";\n    if (this.pauseTime !== void 0) {\n      this.startTime = now - this.pauseTime;\n    } else if (!this.startTime) {\n      this.startTime = now;\n    }\n    this.cancelTimestamp = this.startTime;\n    this.pauseTime = void 0;\n    this.frameRequestId = requestAnimationFrame(this.tick);\n  }\n  pause() {\n    this.playState = \"paused\";\n    this.pauseTime = this.t;\n  }\n  finish() {\n    this.playState = \"finished\";\n    this.tick(0);\n  }\n  stop() {\n    var _a;\n    this.playState = \"idle\";\n    if (this.frameRequestId !== void 0) {\n      cancelAnimationFrame(this.frameRequestId);\n    }\n    (_a = this.reject) === null || _a === void 0 ? void 0 : _a.call(this, false);\n  }\n  cancel() {\n    this.stop();\n    this.tick(this.cancelTimestamp);\n  }\n  reverse() {\n    this.rate *= -1;\n  }\n  commitStyles() {\n  }\n  updateDuration(duration) {\n    this.duration = duration;\n    this.totalDuration = duration * (this.repeat + 1);\n  }\n  get currentTime() {\n    return this.t;\n  }\n  set currentTime(t) {\n    if (this.pauseTime !== void 0 || this.rate === 0) {\n      this.pauseTime = t;\n    } else {\n      this.startTime = performance.now() - t / this.rate;\n    }\n  }\n  get playbackRate() {\n    return this.rate;\n  }\n  set playbackRate(rate) {\n    this.rate = rate;\n  }\n};\n\n// node_modules/hey-listen/dist/hey-listen.es.js\nvar warning = function() {\n};\nvar invariant = function() {\n};\nif (true) {\n  warning = function(check, message) {\n    if (!check && typeof console !== \"undefined\") {\n      console.warn(message);\n    }\n  };\n  invariant = function(check, message) {\n    if (!check) {\n      throw new Error(message);\n    }\n  };\n}\n\n// node_modules/@motionone/types/dist/MotionValue.es.js\nvar MotionValue = class {\n  setAnimation(animation) {\n    this.animation = animation;\n    animation === null || animation === void 0 ? void 0 : animation.finished.then(() => this.clearAnimation()).catch(() => {\n    });\n  }\n  clearAnimation() {\n    this.animation = this.generator = void 0;\n  }\n};\n\n// node_modules/@motionone/dom/dist/animate/data.es.js\nvar data = /* @__PURE__ */ new WeakMap();\nfunction getAnimationData(element) {\n  if (!data.has(element)) {\n    data.set(element, {\n      transforms: [],\n      values: /* @__PURE__ */ new Map()\n    });\n  }\n  return data.get(element);\n}\nfunction getMotionValue(motionValues, name) {\n  if (!motionValues.has(name)) {\n    motionValues.set(name, new MotionValue());\n  }\n  return motionValues.get(name);\n}\n\n// node_modules/@motionone/dom/dist/animate/utils/transforms.es.js\nvar axes = [\"\", \"X\", \"Y\", \"Z\"];\nvar order = [\"translate\", \"scale\", \"rotate\", \"skew\"];\nvar transformAlias = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\"\n};\nvar rotation = {\n  syntax: \"<angle>\",\n  initialValue: \"0deg\",\n  toDefaultUnit: (v) => v + \"deg\"\n};\nvar baseTransformProperties = {\n  translate: {\n    syntax: \"<length-percentage>\",\n    initialValue: \"0px\",\n    toDefaultUnit: (v) => v + \"px\"\n  },\n  rotate: rotation,\n  scale: {\n    syntax: \"<number>\",\n    initialValue: 1,\n    toDefaultUnit: noopReturn\n  },\n  skew: rotation\n};\nvar transformDefinitions = /* @__PURE__ */ new Map();\nvar asTransformCssVar = (name) => `--motion-${name}`;\nvar transforms = [\"x\", \"y\", \"z\"];\norder.forEach((name) => {\n  axes.forEach((axis) => {\n    transforms.push(name + axis);\n    transformDefinitions.set(asTransformCssVar(name + axis), baseTransformProperties[name]);\n  });\n});\nvar compareTransformOrder = (a, b) => transforms.indexOf(a) - transforms.indexOf(b);\nvar transformLookup = new Set(transforms);\nvar isTransform = (name) => transformLookup.has(name);\nvar addTransformToElement = (element, name) => {\n  if (transformAlias[name])\n    name = transformAlias[name];\n  const { transforms: transforms2 } = getAnimationData(element);\n  addUniqueItem(transforms2, name);\n  element.style.transform = buildTransformTemplate(transforms2);\n};\nvar buildTransformTemplate = (transforms2) => transforms2.sort(compareTransformOrder).reduce(transformListToString, \"\").trim();\nvar transformListToString = (template, name) => `${template} ${name}(var(${asTransformCssVar(name)}))`;\n\n// node_modules/@motionone/dom/dist/animate/utils/css-var.es.js\nvar isCssVar = (name) => name.startsWith(\"--\");\nvar registeredProperties = /* @__PURE__ */ new Set();\nfunction registerCssVariable(name) {\n  if (registeredProperties.has(name))\n    return;\n  registeredProperties.add(name);\n  try {\n    const { syntax, initialValue } = transformDefinitions.has(name) ? transformDefinitions.get(name) : {};\n    CSS.registerProperty({\n      name,\n      inherits: false,\n      syntax,\n      initialValue\n    });\n  } catch (e) {\n  }\n}\n\n// node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js\nvar testAnimation = (keyframes, options) => document.createElement(\"div\").animate(keyframes, options);\nvar featureTests = {\n  cssRegisterProperty: () => typeof CSS !== \"undefined\" && Object.hasOwnProperty.call(CSS, \"registerProperty\"),\n  waapi: () => Object.hasOwnProperty.call(Element.prototype, \"animate\"),\n  partialKeyframes: () => {\n    try {\n      testAnimation({ opacity: [1] });\n    } catch (e) {\n      return false;\n    }\n    return true;\n  },\n  finished: () => Boolean(testAnimation({ opacity: [0, 1] }, { duration: 1e-3 }).finished),\n  linearEasing: () => {\n    try {\n      testAnimation({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n    } catch (e) {\n      return false;\n    }\n    return true;\n  }\n};\nvar results = {};\nvar supports = {};\nfor (const key in featureTests) {\n  supports[key] = () => {\n    if (results[key] === void 0)\n      results[key] = featureTests[key]();\n    return results[key];\n  };\n}\n\n// node_modules/@motionone/dom/dist/animate/utils/easing.es.js\nvar resolution = 0.015;\nvar generateLinearEasingPoints = (easing, duration) => {\n  let points = \"\";\n  const numPoints = Math.round(duration / resolution);\n  for (let i = 0; i < numPoints; i++) {\n    points += easing(progress(0, numPoints - 1, i)) + \", \";\n  }\n  return points.substring(0, points.length - 2);\n};\nvar convertEasing = (easing, duration) => {\n  if (isFunction(easing)) {\n    return supports.linearEasing() ? `linear(${generateLinearEasingPoints(easing, duration)})` : defaults.easing;\n  } else {\n    return isCubicBezier(easing) ? cubicBezierAsString(easing) : easing;\n  }\n};\nvar cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n\n// node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js\nfunction hydrateKeyframes(keyframes, readInitialValue) {\n  for (let i = 0; i < keyframes.length; i++) {\n    if (keyframes[i] === null) {\n      keyframes[i] = i ? keyframes[i - 1] : readInitialValue();\n    }\n  }\n  return keyframes;\n}\nvar keyframesList = (keyframes) => Array.isArray(keyframes) ? keyframes : [keyframes];\n\n// node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js\nfunction getStyleName(key) {\n  if (transformAlias[key])\n    key = transformAlias[key];\n  return isTransform(key) ? asTransformCssVar(key) : key;\n}\n\n// node_modules/@motionone/dom/dist/animate/style.es.js\nvar style = {\n  get: (element, name) => {\n    name = getStyleName(name);\n    let value = isCssVar(name) ? element.style.getPropertyValue(name) : getComputedStyle(element)[name];\n    if (!value && value !== 0) {\n      const definition = transformDefinitions.get(name);\n      if (definition)\n        value = definition.initialValue;\n    }\n    return value;\n  },\n  set: (element, name, value) => {\n    name = getStyleName(name);\n    if (isCssVar(name)) {\n      element.style.setProperty(name, value);\n    } else {\n      element.style[name] = value;\n    }\n  }\n};\n\n// node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js\nfunction stopAnimation(animation, needsCommit = true) {\n  if (!animation || animation.playState === \"finished\")\n    return;\n  try {\n    if (animation.stop) {\n      animation.stop();\n    } else {\n      needsCommit && animation.commitStyles();\n      animation.cancel();\n    }\n  } catch (e) {\n  }\n}\n\n// node_modules/@motionone/dom/dist/animate/utils/get-unit.es.js\nfunction getUnitConverter(keyframes, definition) {\n  var _a;\n  let toUnit = (definition === null || definition === void 0 ? void 0 : definition.toDefaultUnit) || noopReturn;\n  const finalKeyframe = keyframes[keyframes.length - 1];\n  if (isString(finalKeyframe)) {\n    const unit = ((_a = finalKeyframe.match(/(-?[\\d.]+)([a-z%]*)/)) === null || _a === void 0 ? void 0 : _a[2]) || \"\";\n    if (unit)\n      toUnit = (value) => value + unit;\n  }\n  return toUnit;\n}\n\n// node_modules/@motionone/dom/dist/animate/animate-style.es.js\nfunction getDevToolsRecord() {\n  return window.__MOTION_DEV_TOOLS_RECORD;\n}\nfunction animateStyle(element, key, keyframesDefinition, options = {}, AnimationPolyfill) {\n  const record = getDevToolsRecord();\n  const isRecording = options.record !== false && record;\n  let animation;\n  let { duration = defaults.duration, delay = defaults.delay, endDelay = defaults.endDelay, repeat = defaults.repeat, easing = defaults.easing, persist = false, direction, offset, allowWebkitAcceleration = false, autoplay = true } = options;\n  const data2 = getAnimationData(element);\n  const valueIsTransform = isTransform(key);\n  let canAnimateNatively = supports.waapi();\n  valueIsTransform && addTransformToElement(element, key);\n  const name = getStyleName(key);\n  const motionValue = getMotionValue(data2.values, name);\n  const definition = transformDefinitions.get(name);\n  stopAnimation(motionValue.animation, !(isEasingGenerator(easing) && motionValue.generator) && options.record !== false);\n  return () => {\n    const readInitialValue = () => {\n      var _a, _b;\n      return (_b = (_a = style.get(element, name)) !== null && _a !== void 0 ? _a : definition === null || definition === void 0 ? void 0 : definition.initialValue) !== null && _b !== void 0 ? _b : 0;\n    };\n    let keyframes = hydrateKeyframes(keyframesList(keyframesDefinition), readInitialValue);\n    const toUnit = getUnitConverter(keyframes, definition);\n    if (isEasingGenerator(easing)) {\n      const custom = easing.createAnimation(keyframes, key !== \"opacity\", readInitialValue, name, motionValue);\n      easing = custom.easing;\n      keyframes = custom.keyframes || keyframes;\n      duration = custom.duration || duration;\n    }\n    if (isCssVar(name)) {\n      if (supports.cssRegisterProperty()) {\n        registerCssVariable(name);\n      } else {\n        canAnimateNatively = false;\n      }\n    }\n    if (valueIsTransform && !supports.linearEasing() && (isFunction(easing) || isEasingList(easing) && easing.some(isFunction))) {\n      canAnimateNatively = false;\n    }\n    if (canAnimateNatively) {\n      if (definition) {\n        keyframes = keyframes.map((value) => isNumber(value) ? definition.toDefaultUnit(value) : value);\n      }\n      if (keyframes.length === 1 && (!supports.partialKeyframes() || isRecording)) {\n        keyframes.unshift(readInitialValue());\n      }\n      const animationOptions = {\n        delay: time.ms(delay),\n        duration: time.ms(duration),\n        endDelay: time.ms(endDelay),\n        easing: !isEasingList(easing) ? convertEasing(easing, duration) : void 0,\n        direction,\n        iterations: repeat + 1,\n        fill: \"both\"\n      };\n      animation = element.animate({\n        [name]: keyframes,\n        offset,\n        easing: isEasingList(easing) ? easing.map((thisEasing) => convertEasing(thisEasing, duration)) : void 0\n      }, animationOptions);\n      if (!animation.finished) {\n        animation.finished = new Promise((resolve, reject) => {\n          animation.onfinish = resolve;\n          animation.oncancel = reject;\n        });\n      }\n      const target = keyframes[keyframes.length - 1];\n      animation.finished.then(() => {\n        if (persist)\n          return;\n        style.set(element, name, target);\n        animation.cancel();\n      }).catch(noop);\n      if (!allowWebkitAcceleration)\n        animation.playbackRate = 1.000001;\n    } else if (AnimationPolyfill && valueIsTransform) {\n      keyframes = keyframes.map((value) => typeof value === \"string\" ? parseFloat(value) : value);\n      if (keyframes.length === 1) {\n        keyframes.unshift(parseFloat(readInitialValue()));\n      }\n      animation = new AnimationPolyfill((latest) => {\n        style.set(element, name, toUnit ? toUnit(latest) : latest);\n      }, keyframes, Object.assign(Object.assign({}, options), {\n        duration,\n        easing\n      }));\n    } else {\n      const target = keyframes[keyframes.length - 1];\n      style.set(element, name, definition && isNumber(target) ? definition.toDefaultUnit(target) : target);\n    }\n    if (isRecording) {\n      record(element, key, keyframes, {\n        duration,\n        delay,\n        easing,\n        repeat,\n        offset\n      }, \"motion-one\");\n    }\n    motionValue.setAnimation(animation);\n    if (animation && !autoplay)\n      animation.pause();\n    return animation;\n  };\n}\n\n// node_modules/@motionone/dom/dist/animate/utils/options.es.js\nvar getOptions = (options, key) => (\n  /**\n   * TODO: Make test for this\n   * Always return a new object otherwise delay is overwritten by results of stagger\n   * and this results in no stagger\n   */\n  options[key] ? Object.assign(Object.assign({}, options), options[key]) : Object.assign({}, options)\n);\n\n// node_modules/@motionone/dom/dist/utils/resolve-elements.es.js\nfunction resolveElements(elements, selectorCache) {\n  var _a;\n  if (typeof elements === \"string\") {\n    if (selectorCache) {\n      (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : selectorCache[elements] = document.querySelectorAll(elements);\n      elements = selectorCache[elements];\n    } else {\n      elements = document.querySelectorAll(elements);\n    }\n  } else if (elements instanceof Element) {\n    elements = [elements];\n  }\n  return Array.from(elements || []);\n}\n\n// node_modules/@motionone/dom/dist/animate/utils/controls.es.js\nvar createAnimation = (factory) => factory();\nvar withControls = (animationFactory, options, duration = defaults.duration) => {\n  return new Proxy({\n    animations: animationFactory.map(createAnimation).filter(Boolean),\n    duration,\n    options\n  }, controls);\n};\nvar getActiveAnimation = (state2) => state2.animations[0];\nvar controls = {\n  get: (target, key) => {\n    const activeAnimation = getActiveAnimation(target);\n    switch (key) {\n      case \"duration\":\n        return target.duration;\n      case \"currentTime\":\n        return time.s((activeAnimation === null || activeAnimation === void 0 ? void 0 : activeAnimation[key]) || 0);\n      case \"playbackRate\":\n      case \"playState\":\n        return activeAnimation === null || activeAnimation === void 0 ? void 0 : activeAnimation[key];\n      case \"finished\":\n        if (!target.finished) {\n          target.finished = Promise.all(target.animations.map(selectFinished)).catch(noop);\n        }\n        return target.finished;\n      case \"stop\":\n        return () => {\n          target.animations.forEach((animation) => stopAnimation(animation));\n        };\n      case \"forEachNative\":\n        return (callback) => {\n          target.animations.forEach((animation) => callback(animation, target));\n        };\n      default:\n        return typeof (activeAnimation === null || activeAnimation === void 0 ? void 0 : activeAnimation[key]) === \"undefined\" ? void 0 : () => target.animations.forEach((animation) => animation[key]());\n    }\n  },\n  set: (target, key, value) => {\n    switch (key) {\n      case \"currentTime\":\n        value = time.ms(value);\n      case \"playbackRate\":\n        for (let i = 0; i < target.animations.length; i++) {\n          target.animations[i][key] = value;\n        }\n        return true;\n    }\n    return false;\n  }\n};\nvar selectFinished = (animation) => animation.finished;\n\n// node_modules/@motionone/dom/dist/utils/stagger.es.js\nfunction resolveOption(option, i, total) {\n  return isFunction(option) ? option(i, total) : option;\n}\n\n// node_modules/@motionone/dom/dist/animate/create-animate.es.js\nfunction createAnimate(AnimatePolyfill) {\n  return function animate3(elements, keyframes, options = {}) {\n    elements = resolveElements(elements);\n    const numElements = elements.length;\n    invariant(Boolean(numElements), \"No valid element provided.\");\n    invariant(Boolean(keyframes), \"No keyframes defined.\");\n    const animationFactories = [];\n    for (let i = 0; i < numElements; i++) {\n      const element = elements[i];\n      for (const key in keyframes) {\n        const valueOptions = getOptions(options, key);\n        valueOptions.delay = resolveOption(valueOptions.delay, i, numElements);\n        const animation = animateStyle(element, key, keyframes[key], valueOptions, AnimatePolyfill);\n        animationFactories.push(animation);\n      }\n    }\n    return withControls(\n      animationFactories,\n      options,\n      /**\n       * TODO:\n       * If easing is set to spring or glide, duration will be dynamically\n       * generated. Ideally we would dynamically generate this from\n       * animation.effect.getComputedTiming().duration but this isn't\n       * supported in iOS13 or our number polyfill. Perhaps it's possible\n       * to Proxy animations returned from animateStyle that has duration\n       * as a getter.\n       */\n      options.duration\n    );\n  };\n}\n\n// node_modules/@motionone/dom/dist/animate/index.es.js\nvar animate = createAnimate(Animation);\n\n// node_modules/@motionone/dom/node_modules/tslib/tslib.es6.mjs\nfunction __rest(s, e) {\n  var t = {};\n  for (var p in s)\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n      if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n        t[p[i]] = s[p[i]];\n    }\n  return t;\n}\n\n// node_modules/@motionone/generators/dist/utils/velocity.es.js\nvar sampleT = 5;\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n  const prevT = Math.max(t - sampleT, 0);\n  return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\n// node_modules/@motionone/generators/dist/spring/defaults.es.js\nvar defaults2 = {\n  stiffness: 100,\n  damping: 10,\n  mass: 1\n};\n\n// node_modules/@motionone/generators/dist/spring/utils.es.js\nvar calcDampingRatio = (stiffness = defaults2.stiffness, damping = defaults2.damping, mass = defaults2.mass) => damping / (2 * Math.sqrt(stiffness * mass));\n\n// node_modules/@motionone/generators/dist/utils/has-reached-target.es.js\nfunction hasReachedTarget(origin, target, current) {\n  return origin < target && current >= target || origin > target && current <= target;\n}\n\n// node_modules/@motionone/generators/dist/spring/index.es.js\nvar spring = ({ stiffness = defaults2.stiffness, damping = defaults2.damping, mass = defaults2.mass, from = 0, to = 1, velocity = 0, restSpeed, restDistance } = {}) => {\n  velocity = velocity ? time.s(velocity) : 0;\n  const state2 = {\n    done: false,\n    hasReachedTarget: false,\n    current: from,\n    target: to\n  };\n  const initialDelta = to - from;\n  const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1e3;\n  const dampingRatio = calcDampingRatio(stiffness, damping, mass);\n  const isGranularScale = Math.abs(initialDelta) < 5;\n  restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n  restDistance || (restDistance = isGranularScale ? 5e-3 : 0.5);\n  let resolveSpring;\n  if (dampingRatio < 1) {\n    const angularFreq = undampedAngularFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n    resolveSpring = (t) => to - Math.exp(-dampingRatio * undampedAngularFreq * t) * ((-velocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));\n  } else {\n    resolveSpring = (t) => {\n      return to - Math.exp(-undampedAngularFreq * t) * (initialDelta + (-velocity + undampedAngularFreq * initialDelta) * t);\n    };\n  }\n  return (t) => {\n    state2.current = resolveSpring(t);\n    const currentVelocity = t === 0 ? velocity : calcGeneratorVelocity(resolveSpring, t, state2.current);\n    const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n    const isBelowDisplacementThreshold = Math.abs(to - state2.current) <= restDistance;\n    state2.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;\n    state2.hasReachedTarget = hasReachedTarget(from, to, state2.current);\n    return state2;\n  };\n};\n\n// node_modules/@motionone/generators/dist/glide/index.es.js\nvar glide = ({ from = 0, velocity = 0, power = 0.8, decay = 0.325, bounceDamping, bounceStiffness, changeTarget, min, max, restDistance = 0.5, restSpeed }) => {\n  decay = time.ms(decay);\n  const state2 = {\n    hasReachedTarget: false,\n    done: false,\n    current: from,\n    target: from\n  };\n  const isOutOfBounds = (v) => min !== void 0 && v < min || max !== void 0 && v > max;\n  const nearestBoundary = (v) => {\n    if (min === void 0)\n      return max;\n    if (max === void 0)\n      return min;\n    return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n  };\n  let amplitude = power * velocity;\n  const ideal = from + amplitude;\n  const target = changeTarget === void 0 ? ideal : changeTarget(ideal);\n  state2.target = target;\n  if (target !== ideal)\n    amplitude = target - from;\n  const calcDelta = (t) => -amplitude * Math.exp(-t / decay);\n  const calcLatest = (t) => target + calcDelta(t);\n  const applyFriction = (t) => {\n    const delta = calcDelta(t);\n    const latest = calcLatest(t);\n    state2.done = Math.abs(delta) <= restDistance;\n    state2.current = state2.done ? target : latest;\n  };\n  let timeReachedBoundary;\n  let spring$1;\n  const checkCatchBoundary = (t) => {\n    if (!isOutOfBounds(state2.current))\n      return;\n    timeReachedBoundary = t;\n    spring$1 = spring({\n      from: state2.current,\n      to: nearestBoundary(state2.current),\n      velocity: calcGeneratorVelocity(calcLatest, t, state2.current),\n      // TODO: This should be passing * 1000\n      damping: bounceDamping,\n      stiffness: bounceStiffness,\n      restDistance,\n      restSpeed\n    });\n  };\n  checkCatchBoundary(0);\n  return (t) => {\n    let hasUpdatedFrame = false;\n    if (!spring$1 && timeReachedBoundary === void 0) {\n      hasUpdatedFrame = true;\n      applyFriction(t);\n      checkCatchBoundary(t);\n    }\n    if (timeReachedBoundary !== void 0 && t > timeReachedBoundary) {\n      state2.hasReachedTarget = true;\n      return spring$1(t - timeReachedBoundary);\n    } else {\n      state2.hasReachedTarget = false;\n      !hasUpdatedFrame && applyFriction(t);\n      return state2;\n    }\n  };\n};\n\n// node_modules/@motionone/generators/dist/utils/pregenerate-keyframes.es.js\nvar timeStep = 10;\nvar maxDuration = 1e4;\nfunction pregenerateKeyframes(generator, toUnit = noopReturn) {\n  let overshootDuration = void 0;\n  let timestamp = timeStep;\n  let state2 = generator(0);\n  const keyframes = [toUnit(state2.current)];\n  while (!state2.done && timestamp < maxDuration) {\n    state2 = generator(timestamp);\n    keyframes.push(toUnit(state2.done ? state2.target : state2.current));\n    if (overshootDuration === void 0 && state2.hasReachedTarget) {\n      overshootDuration = timestamp;\n    }\n    timestamp += timeStep;\n  }\n  const duration = timestamp - timeStep;\n  if (keyframes.length === 1)\n    keyframes.push(state2.current);\n  return {\n    keyframes,\n    duration: duration / 1e3,\n    overshootDuration: (overshootDuration !== null && overshootDuration !== void 0 ? overshootDuration : duration) / 1e3\n  };\n}\n\n// node_modules/@motionone/dom/dist/easing/create-generator-easing.es.js\nfunction canGenerate(value) {\n  return isNumber(value) && !isNaN(value);\n}\nfunction getAsNumber(value) {\n  return isString(value) ? parseFloat(value) : value;\n}\nfunction createGeneratorEasing(createGenerator) {\n  const keyframesCache = /* @__PURE__ */ new WeakMap();\n  return (options = {}) => {\n    const generatorCache = /* @__PURE__ */ new Map();\n    const getGenerator = (from = 0, to = 100, velocity = 0, isScale = false) => {\n      const key = `${from}-${to}-${velocity}-${isScale}`;\n      if (!generatorCache.has(key)) {\n        generatorCache.set(key, createGenerator(Object.assign({\n          from,\n          to,\n          velocity\n        }, options)));\n      }\n      return generatorCache.get(key);\n    };\n    const getKeyframes = (generator, toUnit) => {\n      if (!keyframesCache.has(generator)) {\n        keyframesCache.set(generator, pregenerateKeyframes(generator, toUnit));\n      }\n      return keyframesCache.get(generator);\n    };\n    return {\n      createAnimation: (keyframes, shouldGenerate = true, getOrigin, name, motionValue) => {\n        let settings;\n        let origin;\n        let target;\n        let velocity = 0;\n        let toUnit = noopReturn;\n        const numKeyframes = keyframes.length;\n        if (shouldGenerate) {\n          toUnit = getUnitConverter(keyframes, name ? transformDefinitions.get(getStyleName(name)) : void 0);\n          const targetDefinition = keyframes[numKeyframes - 1];\n          target = getAsNumber(targetDefinition);\n          if (numKeyframes > 1 && keyframes[0] !== null) {\n            origin = getAsNumber(keyframes[0]);\n          } else {\n            const prevGenerator = motionValue === null || motionValue === void 0 ? void 0 : motionValue.generator;\n            if (prevGenerator) {\n              const { animation, generatorStartTime } = motionValue;\n              const startTime = (animation === null || animation === void 0 ? void 0 : animation.startTime) || generatorStartTime || 0;\n              const currentTime = (animation === null || animation === void 0 ? void 0 : animation.currentTime) || performance.now() - startTime;\n              const prevGeneratorCurrent = prevGenerator(currentTime).current;\n              origin = prevGeneratorCurrent;\n              velocity = calcGeneratorVelocity((t) => prevGenerator(t).current, currentTime, prevGeneratorCurrent);\n            } else if (getOrigin) {\n              origin = getAsNumber(getOrigin());\n            }\n          }\n        }\n        if (canGenerate(origin) && canGenerate(target)) {\n          const generator = getGenerator(origin, target, velocity, name === null || name === void 0 ? void 0 : name.includes(\"scale\"));\n          settings = Object.assign(Object.assign({}, getKeyframes(generator, toUnit)), { easing: \"linear\" });\n          if (motionValue) {\n            motionValue.generator = generator;\n            motionValue.generatorStartTime = performance.now();\n          }\n        }\n        if (!settings) {\n          const keyframesMetadata = getKeyframes(getGenerator(0, 100));\n          settings = {\n            easing: \"ease\",\n            duration: keyframesMetadata.overshootDuration\n          };\n        }\n        return settings;\n      }\n    };\n  };\n}\n\n// node_modules/@motionone/dom/dist/easing/spring/index.es.js\nvar spring2 = createGeneratorEasing(spring);\n\n// node_modules/@motionone/dom/dist/easing/glide/index.es.js\nvar glide2 = createGeneratorEasing(glide);\n\n// node_modules/@motionone/dom/dist/gestures/in-view.es.js\nvar thresholds = {\n  any: 0,\n  all: 1\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"any\" } = {}) {\n  if (typeof IntersectionObserver === \"undefined\") {\n    return () => {\n    };\n  }\n  const elements = resolveElements(elementOrSelector);\n  const activeIntersections = /* @__PURE__ */ new WeakMap();\n  const onIntersectionChange = (entries) => {\n    entries.forEach((entry) => {\n      const onEnd = activeIntersections.get(entry.target);\n      if (entry.isIntersecting === Boolean(onEnd))\n        return;\n      if (entry.isIntersecting) {\n        const newOnEnd = onStart(entry);\n        if (isFunction(newOnEnd)) {\n          activeIntersections.set(entry.target, newOnEnd);\n        } else {\n          observer.unobserve(entry.target);\n        }\n      } else if (onEnd) {\n        onEnd(entry);\n        activeIntersections.delete(entry.target);\n      }\n    });\n  };\n  const observer = new IntersectionObserver(onIntersectionChange, {\n    root,\n    rootMargin,\n    threshold: typeof amount === \"number\" ? amount : thresholds[amount]\n  });\n  elements.forEach((element) => observer.observe(element));\n  return () => observer.disconnect();\n}\n\n// node_modules/@motionone/dom/dist/state/utils/events.es.js\nfunction dispatchPointerEvent(element, name, event) {\n  element.dispatchEvent(new CustomEvent(name, { detail: { originalEvent: event } }));\n}\nfunction dispatchViewEvent(element, name, entry) {\n  element.dispatchEvent(new CustomEvent(name, { detail: { originalEntry: entry } }));\n}\n\n// node_modules/@motionone/dom/dist/state/gestures/in-view.es.js\nvar inView2 = {\n  isActive: (options) => Boolean(options.inView),\n  subscribe: (element, { enable, disable }, { inViewOptions = {} }) => {\n    const { once } = inViewOptions, viewOptions = __rest(inViewOptions, [\"once\"]);\n    return inView(element, (enterEntry) => {\n      enable();\n      dispatchViewEvent(element, \"viewenter\", enterEntry);\n      if (!once) {\n        return (leaveEntry) => {\n          disable();\n          dispatchViewEvent(element, \"viewleave\", leaveEntry);\n        };\n      }\n    }, viewOptions);\n  }\n};\n\n// node_modules/@motionone/dom/dist/state/gestures/hover.es.js\nvar mouseEvent = (element, name, action) => (event) => {\n  if (event.pointerType && event.pointerType !== \"mouse\")\n    return;\n  action();\n  dispatchPointerEvent(element, name, event);\n};\nvar hover = {\n  isActive: (options) => Boolean(options.hover),\n  subscribe: (element, { enable, disable }) => {\n    const onEnter = mouseEvent(element, \"hoverstart\", enable);\n    const onLeave = mouseEvent(element, \"hoverend\", disable);\n    element.addEventListener(\"pointerenter\", onEnter);\n    element.addEventListener(\"pointerleave\", onLeave);\n    return () => {\n      element.removeEventListener(\"pointerenter\", onEnter);\n      element.removeEventListener(\"pointerleave\", onLeave);\n    };\n  }\n};\n\n// node_modules/@motionone/dom/dist/state/gestures/press.es.js\nvar press = {\n  isActive: (options) => Boolean(options.press),\n  subscribe: (element, { enable, disable }) => {\n    const onPointerUp = (event) => {\n      disable();\n      dispatchPointerEvent(element, \"pressend\", event);\n      window.removeEventListener(\"pointerup\", onPointerUp);\n    };\n    const onPointerDown = (event) => {\n      enable();\n      dispatchPointerEvent(element, \"pressstart\", event);\n      window.addEventListener(\"pointerup\", onPointerUp);\n    };\n    element.addEventListener(\"pointerdown\", onPointerDown);\n    return () => {\n      element.removeEventListener(\"pointerdown\", onPointerDown);\n      window.removeEventListener(\"pointerup\", onPointerUp);\n    };\n  }\n};\n\n// node_modules/@motionone/dom/dist/state/index.es.js\nvar gestures = { inView: inView2, hover, press };\nvar stateTypes = [\"initial\", \"animate\", ...Object.keys(gestures), \"exit\"];\n\n// node_modules/motion/dist/animate.es.js\nfunction animateProgress(target, options = {}) {\n  return withControls([\n    () => {\n      const animation = new Animation(target, [0, 1], options);\n      animation.finished.catch(() => {\n      });\n      return animation;\n    }\n  ], options, options.duration);\n}\nfunction animate2(target, keyframesOrOptions, options) {\n  const factory = isFunction(target) ? animateProgress : animate;\n  return factory(target, keyframesOrOptions, options);\n}\n\n// node_modules/lit-html/development/directives/if-defined.js\nvar ifDefined = (value) => value !== null && value !== void 0 ? value : nothing;\n\n// node_modules/@walletconnect/modal-ui/dist/index.js\nvar import_qrcode = __toESM(require_browser());\nvar __defProp$y = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp$y(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nfunction themeModeVariables() {\n  var _a;\n  const themeMode = (_a = ThemeCtrl.state.themeMode) != null ? _a : \"dark\";\n  const themeModePresets = {\n    light: {\n      foreground: { 1: `rgb(20,20,20)`, 2: `rgb(121,134,134)`, 3: `rgb(158,169,169)` },\n      background: { 1: `rgb(255,255,255)`, 2: `rgb(241,243,243)`, 3: `rgb(228,231,231)` },\n      overlay: \"rgba(0,0,0,0.1)\"\n    },\n    dark: {\n      foreground: { 1: `rgb(228,231,231)`, 2: `rgb(148,158,158)`, 3: `rgb(110,119,119)` },\n      background: { 1: `rgb(20,20,20)`, 2: `rgb(39,42,42)`, 3: `rgb(59,64,64)` },\n      overlay: \"rgba(255,255,255,0.1)\"\n    }\n  };\n  const themeModeColors = themeModePresets[themeMode];\n  return {\n    \"--wcm-color-fg-1\": themeModeColors.foreground[1],\n    \"--wcm-color-fg-2\": themeModeColors.foreground[2],\n    \"--wcm-color-fg-3\": themeModeColors.foreground[3],\n    \"--wcm-color-bg-1\": themeModeColors.background[1],\n    \"--wcm-color-bg-2\": themeModeColors.background[2],\n    \"--wcm-color-bg-3\": themeModeColors.background[3],\n    \"--wcm-color-overlay\": themeModeColors.overlay\n  };\n}\nfunction themeVariablesPresets() {\n  return {\n    \"--wcm-accent-color\": \"#3396FF\",\n    \"--wcm-accent-fill-color\": \"#FFFFFF\",\n    \"--wcm-z-index\": \"89\",\n    \"--wcm-background-color\": \"#3396FF\",\n    \"--wcm-background-border-radius\": \"8px\",\n    \"--wcm-container-border-radius\": \"30px\",\n    \"--wcm-wallet-icon-border-radius\": \"15px\",\n    \"--wcm-wallet-icon-large-border-radius\": \"30px\",\n    \"--wcm-wallet-icon-small-border-radius\": \"7px\",\n    \"--wcm-input-border-radius\": \"28px\",\n    \"--wcm-button-border-radius\": \"10px\",\n    \"--wcm-notification-border-radius\": \"36px\",\n    \"--wcm-secondary-button-border-radius\": \"28px\",\n    \"--wcm-icon-button-border-radius\": \"50%\",\n    \"--wcm-button-hover-highlight-border-radius\": \"10px\",\n    \"--wcm-text-big-bold-size\": \"20px\",\n    \"--wcm-text-big-bold-weight\": \"600\",\n    \"--wcm-text-big-bold-line-height\": \"24px\",\n    \"--wcm-text-big-bold-letter-spacing\": \"-0.03em\",\n    \"--wcm-text-big-bold-text-transform\": \"none\",\n    \"--wcm-text-xsmall-bold-size\": \"10px\",\n    \"--wcm-text-xsmall-bold-weight\": \"700\",\n    \"--wcm-text-xsmall-bold-line-height\": \"12px\",\n    \"--wcm-text-xsmall-bold-letter-spacing\": \"0.02em\",\n    \"--wcm-text-xsmall-bold-text-transform\": \"uppercase\",\n    \"--wcm-text-xsmall-regular-size\": \"12px\",\n    \"--wcm-text-xsmall-regular-weight\": \"600\",\n    \"--wcm-text-xsmall-regular-line-height\": \"14px\",\n    \"--wcm-text-xsmall-regular-letter-spacing\": \"-0.03em\",\n    \"--wcm-text-xsmall-regular-text-transform\": \"none\",\n    \"--wcm-text-small-thin-size\": \"14px\",\n    \"--wcm-text-small-thin-weight\": \"500\",\n    \"--wcm-text-small-thin-line-height\": \"16px\",\n    \"--wcm-text-small-thin-letter-spacing\": \"-0.03em\",\n    \"--wcm-text-small-thin-text-transform\": \"none\",\n    \"--wcm-text-small-regular-size\": \"14px\",\n    \"--wcm-text-small-regular-weight\": \"600\",\n    \"--wcm-text-small-regular-line-height\": \"16px\",\n    \"--wcm-text-small-regular-letter-spacing\": \"-0.03em\",\n    \"--wcm-text-small-regular-text-transform\": \"none\",\n    \"--wcm-text-medium-regular-size\": \"16px\",\n    \"--wcm-text-medium-regular-weight\": \"600\",\n    \"--wcm-text-medium-regular-line-height\": \"20px\",\n    \"--wcm-text-medium-regular-letter-spacing\": \"-0.03em\",\n    \"--wcm-text-medium-regular-text-transform\": \"none\",\n    \"--wcm-font-family\": \"-apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, Ubuntu, 'Helvetica Neue', sans-serif\",\n    \"--wcm-font-feature-settings\": `'tnum' on, 'lnum' on, 'case' on`,\n    \"--wcm-success-color\": \"rgb(38,181,98)\",\n    \"--wcm-error-color\": \"rgb(242, 90, 103)\",\n    \"--wcm-overlay-background-color\": \"rgba(0, 0, 0, 0.3)\",\n    \"--wcm-overlay-backdrop-filter\": \"none\"\n  };\n}\nvar ThemeUtil = {\n  getPreset(key) {\n    return themeVariablesPresets()[key];\n  },\n  setTheme() {\n    const root = document.querySelector(\":root\");\n    const { themeVariables } = ThemeCtrl.state;\n    if (root) {\n      const variables = __spreadValues(__spreadValues(__spreadValues({}, themeModeVariables()), themeVariablesPresets()), themeVariables);\n      Object.entries(variables).forEach(([key, val]) => root.style.setProperty(key, val));\n    }\n  },\n  globalCss: css`*,::after,::before{margin:0;padding:0;box-sizing:border-box;font-style:normal;text-rendering:optimizeSpeed;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;backface-visibility:hidden}button{cursor:pointer;display:flex;justify-content:center;align-items:center;position:relative;border:none;background-color:transparent;transition:all .2s ease}@media (hover:hover) and (pointer:fine){button:active{transition:all .1s ease;transform:scale(.93)}}button::after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;transition:background-color,.2s ease}button:disabled{cursor:not-allowed}button svg,button wcm-text{position:relative;z-index:1}input{border:none;outline:0;appearance:none}img{display:block}::selection{color:var(--wcm-accent-fill-color);background:var(--wcm-accent-color)}`\n};\nvar styles$t = css`button{border-radius:var(--wcm-secondary-button-border-radius);height:28px;padding:0 10px;background-color:var(--wcm-accent-color)}button path{fill:var(--wcm-accent-fill-color)}button::after{border-radius:inherit;border:1px solid var(--wcm-color-overlay)}button:disabled::after{background-color:transparent}.wcm-icon-left svg{margin-right:5px}.wcm-icon-right svg{margin-left:5px}button:active::after{background-color:var(--wcm-color-overlay)}.wcm-ghost,.wcm-ghost:active::after,.wcm-outline{background-color:transparent}.wcm-ghost:active{opacity:.5}@media(hover:hover){button:hover::after{background-color:var(--wcm-color-overlay)}.wcm-ghost:hover::after{background-color:transparent}.wcm-ghost:hover{opacity:.5}}button:disabled{background-color:var(--wcm-color-bg-3);pointer-events:none}.wcm-ghost::after{border-color:transparent}.wcm-ghost path{fill:var(--wcm-color-fg-2)}.wcm-outline path{fill:var(--wcm-accent-color)}.wcm-outline:disabled{background-color:transparent;opacity:.5}`;\nvar __defProp$x = Object.defineProperty;\nvar __getOwnPropDesc$x = Object.getOwnPropertyDescriptor;\nvar __decorateClass$x = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$x(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$x(target, key, result);\n  return result;\n};\nvar WcmButton = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.disabled = false;\n    this.iconLeft = void 0;\n    this.iconRight = void 0;\n    this.onClick = () => null;\n    this.variant = \"default\";\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const classes = {\n      \"wcm-icon-left\": this.iconLeft !== void 0,\n      \"wcm-icon-right\": this.iconRight !== void 0,\n      \"wcm-ghost\": this.variant === \"ghost\",\n      \"wcm-outline\": this.variant === \"outline\"\n    };\n    let textColor = \"inverse\";\n    if (this.variant === \"ghost\") {\n      textColor = \"secondary\";\n    }\n    if (this.variant === \"outline\") {\n      textColor = \"accent\";\n    }\n    return html`<button class=\"${classMap(classes)}\" ?disabled=\"${this.disabled}\" @click=\"${this.onClick}\">${this.iconLeft}<wcm-text variant=\"small-regular\" color=\"${textColor}\"><slot></slot></wcm-text>${this.iconRight}</button>`;\n  }\n};\nWcmButton.styles = [ThemeUtil.globalCss, styles$t];\n__decorateClass$x([\n  property({ type: Boolean })\n], WcmButton.prototype, \"disabled\", 2);\n__decorateClass$x([\n  property()\n], WcmButton.prototype, \"iconLeft\", 2);\n__decorateClass$x([\n  property()\n], WcmButton.prototype, \"iconRight\", 2);\n__decorateClass$x([\n  property()\n], WcmButton.prototype, \"onClick\", 2);\n__decorateClass$x([\n  property()\n], WcmButton.prototype, \"variant\", 2);\nWcmButton = __decorateClass$x([\n  customElement(\"wcm-button\")\n], WcmButton);\nvar styles$s = css`:host{display:inline-block}button{padding:0 15px 1px;height:40px;border-radius:var(--wcm-button-border-radius);color:var(--wcm-accent-fill-color);background-color:var(--wcm-accent-color)}button::after{content:'';top:0;bottom:0;left:0;right:0;position:absolute;background-color:transparent;border-radius:inherit;transition:background-color .2s ease;border:1px solid var(--wcm-color-overlay)}button:active::after{background-color:var(--wcm-color-overlay)}button:disabled{padding-bottom:0;background-color:var(--wcm-color-bg-3);color:var(--wcm-color-fg-3)}.wcm-secondary{color:var(--wcm-accent-color);background-color:transparent}.wcm-secondary::after{display:none}@media(hover:hover){button:hover::after{background-color:var(--wcm-color-overlay)}}`;\nvar __defProp$w = Object.defineProperty;\nvar __getOwnPropDesc$w = Object.getOwnPropertyDescriptor;\nvar __decorateClass$w = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$w(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$w(target, key, result);\n  return result;\n};\nvar WcmButtonBig = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.disabled = false;\n    this.variant = \"primary\";\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const classes = {\n      \"wcm-secondary\": this.variant === \"secondary\"\n    };\n    return html`<button ?disabled=\"${this.disabled}\" class=\"${classMap(classes)}\"><slot></slot></button>`;\n  }\n};\nWcmButtonBig.styles = [ThemeUtil.globalCss, styles$s];\n__decorateClass$w([\n  property({ type: Boolean })\n], WcmButtonBig.prototype, \"disabled\", 2);\n__decorateClass$w([\n  property()\n], WcmButtonBig.prototype, \"variant\", 2);\nWcmButtonBig = __decorateClass$w([\n  customElement(\"wcm-button-big\")\n], WcmButtonBig);\nvar styles$r = css`:host{background-color:var(--wcm-color-bg-2);border-top:1px solid var(--wcm-color-bg-3)}div{padding:10px 20px;display:inherit;flex-direction:inherit;align-items:inherit;width:inherit;justify-content:inherit}`;\nvar __defProp$v = Object.defineProperty;\nvar __getOwnPropDesc$v = Object.getOwnPropertyDescriptor;\nvar __decorateClass$v = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$v(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$v(target, key, result);\n  return result;\n};\nvar WcmInfoFooter = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<div><slot></slot></div>`;\n  }\n};\nWcmInfoFooter.styles = [ThemeUtil.globalCss, styles$r];\nWcmInfoFooter = __decorateClass$v([\n  customElement(\"wcm-info-footer\")\n], WcmInfoFooter);\nvar SvgUtil = {\n  CROSS_ICON: svg`<svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"><path d=\"M9.94 11A.75.75 0 1 0 11 9.94L7.414 6.353a.5.5 0 0 1 0-.708L11 2.061A.75.75 0 1 0 9.94 1L6.353 4.586a.5.5 0 0 1-.708 0L2.061 1A.75.75 0 0 0 1 2.06l3.586 3.586a.5.5 0 0 1 0 .708L1 9.939A.75.75 0 1 0 2.06 11l3.586-3.586a.5.5 0 0 1 .708 0L9.939 11Z\" fill=\"#fff\"/></svg>`,\n  WALLET_CONNECT_LOGO: svg`<svg width=\"178\" height=\"29\" viewBox=\"0 0 178 29\" id=\"wcm-wc-logo\"><path d=\"M10.683 7.926c5.284-5.17 13.85-5.17 19.134 0l.636.623a.652.652 0 0 1 0 .936l-2.176 2.129a.343.343 0 0 1-.478 0l-.875-.857c-3.686-3.607-9.662-3.607-13.348 0l-.937.918a.343.343 0 0 1-.479 0l-2.175-2.13a.652.652 0 0 1 0-.936l.698-.683Zm23.633 4.403 1.935 1.895a.652.652 0 0 1 0 .936l-8.73 8.543a.687.687 0 0 1-.956 0L20.37 17.64a.172.172 0 0 0-.239 0l-6.195 6.063a.687.687 0 0 1-.957 0l-8.73-8.543a.652.652 0 0 1 0-.936l1.936-1.895a.687.687 0 0 1 .957 0l6.196 6.064a.172.172 0 0 0 .239 0l6.195-6.064a.687.687 0 0 1 .957 0l6.196 6.064a.172.172 0 0 0 .24 0l6.195-6.064a.687.687 0 0 1 .956 0ZM48.093 20.948l2.338-9.355c.139-.515.258-1.07.416-1.942.12.872.258 1.427.357 1.942l2.022 9.355h4.181l3.528-13.874h-3.21l-1.943 8.523a24.825 24.825 0 0 0-.456 2.457c-.158-.931-.317-1.625-.495-2.438l-1.883-8.542h-4.201l-2.042 8.542a41.204 41.204 0 0 0-.475 2.438 41.208 41.208 0 0 0-.476-2.438l-1.903-8.542h-3.349l3.508 13.874h4.083ZM63.33 21.304c1.585 0 2.596-.654 3.11-1.605-.059.297-.078.595-.078.892v.357h2.655V15.22c0-2.735-1.248-4.32-4.3-4.32-2.636 0-4.36 1.466-4.52 3.487h2.914c.1-.891.734-1.426 1.705-1.426.911 0 1.407.515 1.407 1.11 0 .435-.258.693-1.03.792l-1.388.159c-2.061.257-3.825 1.01-3.825 3.19 0 1.982 1.645 3.092 3.35 3.092Zm.891-2.041c-.773 0-1.348-.436-1.348-1.19 0-.733.655-1.09 1.645-1.268l.674-.119c.575-.118.892-.218 1.09-.396v.912c0 1.228-.892 2.06-2.06 2.06ZM70.398 7.074v13.874h2.874V7.074h-2.874ZM74.934 7.074v13.874h2.874V7.074h-2.874ZM84.08 21.304c2.735 0 4.5-1.546 4.697-3.567h-2.893c-.139.892-.892 1.387-1.804 1.387-1.228 0-2.12-.99-2.14-2.358h6.897v-.555c0-3.21-1.764-5.312-4.816-5.312-2.933 0-4.994 2.062-4.994 5.173 0 3.37 2.12 5.232 5.053 5.232Zm-2.16-6.421c.119-1.11.932-1.922 2.081-1.922 1.11 0 1.883.772 1.903 1.922H81.92ZM94.92 21.146c.633 0 1.248-.1 1.525-.179v-2.18c-.218.04-.475.06-.693.06-1.05 0-1.427-.595-1.427-1.566v-3.805h2.338v-2.24h-2.338V7.788H91.47v3.448H89.37v2.24h2.1v4.201c0 2.3 1.15 3.469 3.45 3.469ZM104.62 21.304c3.924 0 6.302-2.299 6.599-5.608h-3.111c-.238 1.803-1.506 3.032-3.369 3.032-2.2 0-3.746-1.784-3.746-4.796 0-2.953 1.605-4.638 3.805-4.638 1.883 0 2.953 1.15 3.171 2.834h3.191c-.317-3.448-2.854-5.41-6.342-5.41-3.984 0-7.036 2.695-7.036 7.214 0 4.677 2.676 7.372 6.838 7.372ZM117.449 21.304c2.993 0 5.114-1.882 5.114-5.172 0-3.23-2.121-5.233-5.114-5.233-2.972 0-5.093 2.002-5.093 5.233 0 3.29 2.101 5.172 5.093 5.172Zm0-2.22c-1.327 0-2.18-1.09-2.18-2.952 0-1.903.892-2.973 2.18-2.973 1.308 0 2.2 1.07 2.2 2.973 0 1.862-.872 2.953-2.2 2.953ZM126.569 20.948v-5.689c0-1.208.753-2.1 1.823-2.1 1.011 0 1.606.773 1.606 2.06v5.729h2.873v-6.144c0-2.339-1.229-3.905-3.428-3.905-1.526 0-2.458.734-2.953 1.606a5.31 5.31 0 0 0 .079-.892v-.377h-2.874v9.712h2.874ZM137.464 20.948v-5.689c0-1.208.753-2.1 1.823-2.1 1.011 0 1.606.773 1.606 2.06v5.729h2.873v-6.144c0-2.339-1.228-3.905-3.428-3.905-1.526 0-2.458.734-2.953 1.606a5.31 5.31 0 0 0 .079-.892v-.377h-2.874v9.712h2.874ZM149.949 21.304c2.735 0 4.499-1.546 4.697-3.567h-2.893c-.139.892-.892 1.387-1.804 1.387-1.228 0-2.12-.99-2.14-2.358h6.897v-.555c0-3.21-1.764-5.312-4.816-5.312-2.933 0-4.994 2.062-4.994 5.173 0 3.37 2.12 5.232 5.053 5.232Zm-2.16-6.421c.119-1.11.932-1.922 2.081-1.922 1.11 0 1.883.772 1.903 1.922h-3.984ZM160.876 21.304c3.013 0 4.658-1.645 4.975-4.201h-2.874c-.099 1.07-.713 1.982-2.001 1.982-1.309 0-2.2-1.21-2.2-2.993 0-1.942 1.03-2.933 2.259-2.933 1.209 0 1.803.872 1.883 1.882h2.873c-.218-2.358-1.823-4.142-4.776-4.142-2.874 0-5.153 1.903-5.153 5.193 0 3.25 1.923 5.212 5.014 5.212ZM172.067 21.146c.634 0 1.248-.1 1.526-.179v-2.18c-.218.04-.476.06-.694.06-1.05 0-1.427-.595-1.427-1.566v-3.805h2.339v-2.24h-2.339V7.788h-2.854v3.448h-2.1v2.24h2.1v4.201c0 2.3 1.15 3.469 3.449 3.469Z\" fill=\"#fff\"/></svg>`,\n  WALLET_CONNECT_ICON: svg`<svg width=\"28\" height=\"20\" viewBox=\"0 0 28 20\"><g clip-path=\"url(#a)\"><path d=\"M7.386 6.482c3.653-3.576 9.575-3.576 13.228 0l.44.43a.451.451 0 0 1 0 .648L19.55 9.033a.237.237 0 0 1-.33 0l-.606-.592c-2.548-2.496-6.68-2.496-9.228 0l-.648.634a.237.237 0 0 1-.33 0L6.902 7.602a.451.451 0 0 1 0-.647l.483-.473Zm16.338 3.046 1.339 1.31a.451.451 0 0 1 0 .648l-6.035 5.909a.475.475 0 0 1-.662 0L14.083 13.2a.119.119 0 0 0-.166 0l-4.283 4.194a.475.475 0 0 1-.662 0l-6.035-5.91a.451.451 0 0 1 0-.647l1.338-1.31a.475.475 0 0 1 .662 0l4.283 4.194c.046.044.12.044.166 0l4.283-4.194a.475.475 0 0 1 .662 0l4.283 4.194c.046.044.12.044.166 0l4.283-4.194a.475.475 0 0 1 .662 0Z\" fill=\"#000000\"/></g><defs><clipPath id=\"a\"><path fill=\"#ffffff\" d=\"M0 0h28v20H0z\"/></clipPath></defs></svg>`,\n  WALLET_CONNECT_ICON_COLORED: svg`<svg width=\"96\" height=\"96\" fill=\"none\"><path fill=\"#fff\" d=\"M25.322 33.597c12.525-12.263 32.83-12.263 45.355 0l1.507 1.476a1.547 1.547 0 0 1 0 2.22l-5.156 5.048a.814.814 0 0 1-1.134 0l-2.074-2.03c-8.737-8.555-22.903-8.555-31.64 0l-2.222 2.175a.814.814 0 0 1-1.134 0l-5.156-5.049a1.547 1.547 0 0 1 0-2.22l1.654-1.62Zm56.019 10.44 4.589 4.494a1.547 1.547 0 0 1 0 2.22l-20.693 20.26a1.628 1.628 0 0 1-2.267 0L48.283 56.632a.407.407 0 0 0-.567 0L33.03 71.012a1.628 1.628 0 0 1-2.268 0L10.07 50.75a1.547 1.547 0 0 1 0-2.22l4.59-4.494a1.628 1.628 0 0 1 2.267 0l14.687 14.38c.156.153.41.153.567 0l14.685-14.38a1.628 1.628 0 0 1 2.268 0l14.687 14.38c.156.153.41.153.567 0l14.686-14.38a1.628 1.628 0 0 1 2.268 0Z\"/><path stroke=\"#000\" d=\"M25.672 33.954c12.33-12.072 32.325-12.072 44.655 0l1.508 1.476a1.047 1.047 0 0 1 0 1.506l-5.157 5.048a.314.314 0 0 1-.434 0l-2.074-2.03c-8.932-8.746-23.409-8.746-32.34 0l-2.222 2.174a.314.314 0 0 1-.434 0l-5.157-5.048a1.047 1.047 0 0 1 0-1.506l1.655-1.62Zm55.319 10.44 4.59 4.494a1.047 1.047 0 0 1 0 1.506l-20.694 20.26a1.128 1.128 0 0 1-1.568 0l-14.686-14.38a.907.907 0 0 0-1.267 0L32.68 70.655a1.128 1.128 0 0 1-1.568 0L10.42 50.394a1.047 1.047 0 0 1 0-1.506l4.59-4.493a1.128 1.128 0 0 1 1.567 0l14.687 14.379a.907.907 0 0 0 1.266 0l-.35-.357.35.357 14.686-14.38a1.128 1.128 0 0 1 1.568 0l14.687 14.38a.907.907 0 0 0 1.267 0l14.686-14.38a1.128 1.128 0 0 1 1.568 0Z\"/></svg>`,\n  BACK_ICON: svg`<svg width=\"10\" height=\"18\" viewBox=\"0 0 10 18\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.735.179a.75.75 0 0 1 .087 1.057L2.92 8.192a1.25 1.25 0 0 0 0 1.617l5.902 6.956a.75.75 0 1 1-1.144.97L1.776 10.78a2.75 2.75 0 0 1 0-3.559L7.678.265A.75.75 0 0 1 8.735.18Z\" fill=\"#fff\"/></svg>`,\n  COPY_ICON: svg`<svg width=\"24\" height=\"24\" fill=\"none\"><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M7.01 7.01c.03-1.545.138-2.5.535-3.28A5 5 0 0 1 9.73 1.545C10.8 1 12.2 1 15 1c2.8 0 4.2 0 5.27.545a5 5 0 0 1 2.185 2.185C23 4.8 23 6.2 23 9c0 2.8 0 4.2-.545 5.27a5 5 0 0 1-2.185 2.185c-.78.397-1.735.505-3.28.534l-.001.01c-.03 1.54-.138 2.493-.534 3.27a5 5 0 0 1-2.185 2.186C13.2 23 11.8 23 9 23c-2.8 0-4.2 0-5.27-.545a5 5 0 0 1-2.185-2.185C1 19.2 1 17.8 1 15c0-2.8 0-4.2.545-5.27A5 5 0 0 1 3.73 7.545C4.508 7.149 5.46 7.04 7 7.01h.01ZM15 15.5c-1.425 0-2.403-.001-3.162-.063-.74-.06-1.139-.172-1.427-.319a3.5 3.5 0 0 1-1.53-1.529c-.146-.288-.257-.686-.318-1.427C8.501 11.403 8.5 10.425 8.5 9c0-1.425.001-2.403.063-3.162.06-.74.172-1.139.318-1.427a3.5 3.5 0 0 1 1.53-1.53c.288-.146.686-.257 1.427-.318.759-.062 1.737-.063 3.162-.063 1.425 0 2.403.001 3.162.063.74.06 1.139.172 1.427.318a3.5 3.5 0 0 1 1.53 1.53c.146.288.257.686.318 1.427.062.759.063 1.737.063 3.162 0 1.425-.001 2.403-.063 3.162-.06.74-.172 1.139-.319 1.427a3.5 3.5 0 0 1-1.529 1.53c-.288.146-.686.257-1.427.318-.759.062-1.737.063-3.162.063ZM7 8.511c-.444.009-.825.025-1.162.052-.74.06-1.139.172-1.427.318a3.5 3.5 0 0 0-1.53 1.53c-.146.288-.257.686-.318 1.427-.062.759-.063 1.737-.063 3.162 0 1.425.001 2.403.063 3.162.06.74.172 1.139.318 1.427a3.5 3.5 0 0 0 1.53 1.53c.288.146.686.257 1.427.318.759.062 1.737.063 3.162.063 1.425 0 2.403-.001 3.162-.063.74-.06 1.139-.172 1.427-.319a3.5 3.5 0 0 0 1.53-1.53c.146-.287.257-.685.318-1.426.027-.337.043-.718.052-1.162H15c-2.8 0-4.2 0-5.27-.545a5 5 0 0 1-2.185-2.185C7 13.2 7 11.8 7 9v-.489Z\" clip-rule=\"evenodd\"/></svg>`,\n  RETRY_ICON: svg`<svg width=\"15\" height=\"16\" viewBox=\"0 0 15 16\"><path d=\"M6.464 2.03A.75.75 0 0 0 5.403.97L2.08 4.293a1 1 0 0 0 0 1.414L5.403 9.03a.75.75 0 0 0 1.06-1.06L4.672 6.177a.25.25 0 0 1 .177-.427h2.085a4 4 0 1 1-3.93 4.746c-.077-.407-.405-.746-.82-.746-.414 0-.755.338-.7.748a5.501 5.501 0 1 0 5.45-6.248H4.848a.25.25 0 0 1-.177-.427L6.464 2.03Z\" fill=\"#fff\"/></svg>`,\n  DESKTOP_ICON: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 5.98c0-1.85 0-2.775.394-3.466a3 3 0 0 1 1.12-1.12C2.204 1 3.13 1 4.98 1h6.04c1.85 0 2.775 0 3.466.394a3 3 0 0 1 1.12 1.12C16 3.204 16 4.13 16 5.98v1.04c0 1.85 0 2.775-.394 3.466a3 3 0 0 1-1.12 1.12C13.796 12 12.87 12 11.02 12H4.98c-1.85 0-2.775 0-3.466-.394a3 3 0 0 1-1.12-1.12C0 9.796 0 8.87 0 7.02V5.98ZM4.98 2.5h6.04c.953 0 1.568.001 2.034.043.446.04.608.108.69.154a1.5 1.5 0 0 1 .559.56c.046.08.114.243.154.69.042.465.043 1.08.043 2.033v1.04c0 .952-.001 1.568-.043 2.034-.04.446-.108.608-.154.69a1.499 1.499 0 0 1-.56.559c-.08.046-.243.114-.69.154-.466.042-1.08.043-2.033.043H4.98c-.952 0-1.568-.001-2.034-.043-.446-.04-.608-.108-.69-.154a1.5 1.5 0 0 1-.559-.56c-.046-.08-.114-.243-.154-.69-.042-.465-.043-1.08-.043-2.033V5.98c0-.952.001-1.568.043-2.034.04-.446.108-.608.154-.69a1.5 1.5 0 0 1 .56-.559c.08-.046.243-.114.69-.154.465-.042 1.08-.043 2.033-.043Z\" fill=\"#fff\"/><path d=\"M4 14.25a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Z\" fill=\"#fff\"/></svg>`,\n  MOBILE_ICON: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M6.75 5a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 4.98c0-1.85 0-2.775.394-3.466a3 3 0 0 1 1.12-1.12C5.204 0 6.136 0 8 0s2.795 0 3.486.394a3 3 0 0 1 1.12 1.12C13 2.204 13 3.13 13 4.98v6.04c0 1.85 0 2.775-.394 3.466a3 3 0 0 1-1.12 1.12C10.796 16 9.864 16 8 16s-2.795 0-3.486-.394a3 3 0 0 1-1.12-1.12C3 13.796 3 12.87 3 11.02V4.98Zm8.5 0v6.04c0 .953-.001 1.568-.043 2.034-.04.446-.108.608-.154.69a1.499 1.499 0 0 1-.56.559c-.08.045-.242.113-.693.154-.47.042-1.091.043-2.05.043-.959 0-1.58-.001-2.05-.043-.45-.04-.613-.109-.693-.154a1.5 1.5 0 0 1-.56-.56c-.046-.08-.114-.243-.154-.69-.042-.466-.043-1.08-.043-2.033V4.98c0-.952.001-1.568.043-2.034.04-.446.108-.608.154-.69a1.5 1.5 0 0 1 .56-.559c.08-.045.243-.113.693-.154C6.42 1.501 7.041 1.5 8 1.5c.959 0 1.58.001 2.05.043.45.04.613.109.693.154a1.5 1.5 0 0 1 .56.56c.046.08.114.243.154.69.042.465.043 1.08.043 2.033Z\" fill=\"#fff\"/></svg>`,\n  ARROW_DOWN_ICON: svg`<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\"><path d=\"M2.28 7.47a.75.75 0 0 0-1.06 1.06l5.25 5.25a.75.75 0 0 0 1.06 0l5.25-5.25a.75.75 0 0 0-1.06-1.06l-3.544 3.543a.25.25 0 0 1-.426-.177V.75a.75.75 0 0 0-1.5 0v10.086a.25.25 0 0 1-.427.176L2.28 7.47Z\" fill=\"#fff\"/></svg>`,\n  ARROW_UP_RIGHT_ICON: svg`<svg width=\"15\" height=\"14\" fill=\"none\"><path d=\"M4.5 1.75A.75.75 0 0 1 5.25 1H12a1.5 1.5 0 0 1 1.5 1.5v6.75a.75.75 0 0 1-1.5 0V4.164a.25.25 0 0 0-.427-.176L4.061 11.5A.75.75 0 0 1 3 10.44l7.513-7.513a.25.25 0 0 0-.177-.427H5.25a.75.75 0 0 1-.75-.75Z\" fill=\"#fff\"/></svg>`,\n  ARROW_RIGHT_ICON: svg`<svg width=\"6\" height=\"14\" viewBox=\"0 0 6 14\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.181 1.099a.75.75 0 0 1 1.024.279l2.433 4.258a2.75 2.75 0 0 1 0 2.729l-2.433 4.257a.75.75 0 1 1-1.303-.744L4.335 7.62a1.25 1.25 0 0 0 0-1.24L1.902 2.122a.75.75 0 0 1 .28-1.023Z\" fill=\"#fff\"/></svg>`,\n  QRCODE_ICON: svg`<svg width=\"25\" height=\"24\" viewBox=\"0 0 25 24\"><path d=\"M23.748 9a.748.748 0 0 0 .748-.752c-.018-2.596-.128-4.07-.784-5.22a6 6 0 0 0-2.24-2.24c-1.15-.656-2.624-.766-5.22-.784a.748.748 0 0 0-.752.748c0 .414.335.749.748.752 1.015.007 1.82.028 2.494.088.995.09 1.561.256 1.988.5.7.398 1.28.978 1.679 1.678.243.427.41.993.498 1.988.061.675.082 1.479.09 2.493a.753.753 0 0 0 .75.749ZM3.527.788C4.677.132 6.152.022 8.747.004A.748.748 0 0 1 9.5.752a.753.753 0 0 1-.749.752c-1.014.007-1.818.028-2.493.088-.995.09-1.561.256-1.988.5-.7.398-1.28.978-1.679 1.678-.243.427-.41.993-.499 1.988-.06.675-.081 1.479-.088 2.493A.753.753 0 0 1 1.252 9a.748.748 0 0 1-.748-.752c.018-2.596.128-4.07.784-5.22a6 6 0 0 1 2.24-2.24ZM1.252 15a.748.748 0 0 0-.748.752c.018 2.596.128 4.07.784 5.22a6 6 0 0 0 2.24 2.24c1.15.656 2.624.766 5.22.784a.748.748 0 0 0 .752-.748.753.753 0 0 0-.749-.752c-1.014-.007-1.818-.028-2.493-.089-.995-.089-1.561-.255-1.988-.498a4.5 4.5 0 0 1-1.679-1.68c-.243-.426-.41-.992-.499-1.987-.06-.675-.081-1.479-.088-2.493A.753.753 0 0 0 1.252 15ZM22.996 15.749a.753.753 0 0 1 .752-.749c.415 0 .751.338.748.752-.018 2.596-.128 4.07-.784 5.22a6 6 0 0 1-2.24 2.24c-1.15.656-2.624.766-5.22.784a.748.748 0 0 1-.752-.748c0-.414.335-.749.748-.752 1.015-.007 1.82-.028 2.494-.089.995-.089 1.561-.255 1.988-.498a4.5 4.5 0 0 0 1.679-1.68c.243-.426.41-.992.498-1.987.061-.675.082-1.479.09-2.493Z\" fill=\"#fff\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7 4a2.5 2.5 0 0 0-2.5 2.5v2A2.5 2.5 0 0 0 7 11h2a2.5 2.5 0 0 0 2.5-2.5v-2A2.5 2.5 0 0 0 9 4H7Zm2 1.5H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1ZM13.5 6.5A2.5 2.5 0 0 1 16 4h2a2.5 2.5 0 0 1 2.5 2.5v2A2.5 2.5 0 0 1 18 11h-2a2.5 2.5 0 0 1-2.5-2.5v-2Zm2.5-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1ZM7 13a2.5 2.5 0 0 0-2.5 2.5v2A2.5 2.5 0 0 0 7 20h2a2.5 2.5 0 0 0 2.5-2.5v-2A2.5 2.5 0 0 0 9 13H7Zm2 1.5H7a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1Z\" fill=\"#fff\"/><path d=\"M13.5 15.5c0-.465 0-.697.038-.89a2 2 0 0 1 1.572-1.572C15.303 13 15.535 13 16 13v2.5h-2.5ZM18 13c.465 0 .697 0 .89.038a2 2 0 0 1 1.572 1.572c.038.193.038.425.038.89H18V13ZM18 17.5h2.5c0 .465 0 .697-.038.89a2 2 0 0 1-1.572 1.572C18.697 20 18.465 20 18 20v-2.5ZM13.5 17.5H16V20c-.465 0-.697 0-.89-.038a2 2 0 0 1-1.572-1.572c-.038-.193-.038-.425-.038-.89Z\" fill=\"#fff\"/></svg>`,\n  SCAN_ICON: svg`<svg width=\"16\" height=\"16\" fill=\"none\"><path fill=\"#fff\" d=\"M10 15.216c0 .422.347.763.768.74 1.202-.064 2.025-.222 2.71-.613a5.001 5.001 0 0 0 1.865-1.866c.39-.684.549-1.507.613-2.709a.735.735 0 0 0-.74-.768.768.768 0 0 0-.76.732c-.009.157-.02.306-.032.447-.073.812-.206 1.244-.384 1.555-.31.545-.761.996-1.306 1.306-.311.178-.743.311-1.555.384-.141.013-.29.023-.447.032a.768.768 0 0 0-.732.76ZM10 .784c0 .407.325.737.732.76.157.009.306.02.447.032.812.073 1.244.206 1.555.384a3.5 3.5 0 0 1 1.306 1.306c.178.311.311.743.384 1.555.013.142.023.29.032.447a.768.768 0 0 0 .76.732.734.734 0 0 0 .74-.768c-.064-1.202-.222-2.025-.613-2.71A5 5 0 0 0 13.477.658c-.684-.39-1.507-.549-2.709-.613a.735.735 0 0 0-.768.74ZM5.232.044A.735.735 0 0 1 6 .784a.768.768 0 0 1-.732.76c-.157.009-.305.02-.447.032-.812.073-1.244.206-1.555.384A3.5 3.5 0 0 0 1.96 3.266c-.178.311-.311.743-.384 1.555-.013.142-.023.29-.032.447A.768.768 0 0 1 .784 6a.735.735 0 0 1-.74-.768c.064-1.202.222-2.025.613-2.71A5 5 0 0 1 2.523.658C3.207.267 4.03.108 5.233.044ZM5.268 14.456a.768.768 0 0 1 .732.76.734.734 0 0 1-.768.74c-1.202-.064-2.025-.222-2.71-.613a5 5 0 0 1-1.865-1.866c-.39-.684-.549-1.507-.613-2.709A.735.735 0 0 1 .784 10c.407 0 .737.325.76.732.009.157.02.306.032.447.073.812.206 1.244.384 1.555a3.5 3.5 0 0 0 1.306 1.306c.311.178.743.311 1.555.384.142.013.29.023.447.032Z\"/></svg>`,\n  CHECKMARK_ICON: svg`<svg width=\"13\" height=\"12\" viewBox=\"0 0 13 12\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.155.132a.75.75 0 0 1 .232 1.035L5.821 11.535a1 1 0 0 1-1.626.09L.665 7.21a.75.75 0 1 1 1.17-.937L4.71 9.867a.25.25 0 0 0 .406-.023L11.12.364a.75.75 0 0 1 1.035-.232Z\" fill=\"#fff\"/></svg>`,\n  SEARCH_ICON: svg`<svg width=\"20\" height=\"21\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.432 13.992c-.354-.353-.91-.382-1.35-.146a5.5 5.5 0 1 1 2.265-2.265c-.237.441-.208.997.145 1.35l3.296 3.296a.75.75 0 1 1-1.06 1.061l-3.296-3.296Zm.06-5a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z\" fill=\"#949E9E\"/></svg>`,\n  WALLET_PLACEHOLDER: svg`<svg width=\"60\" height=\"60\" fill=\"none\" viewBox=\"0 0 60 60\"><g clip-path=\"url(#q)\"><path id=\"wallet-placeholder-fill\" fill=\"#fff\" d=\"M0 24.9c0-9.251 0-13.877 1.97-17.332a15 15 0 0 1 5.598-5.597C11.023 0 15.648 0 24.9 0h10.2c9.252 0 13.877 0 17.332 1.97a15 15 0 0 1 5.597 5.598C60 11.023 60 15.648 60 24.9v10.2c0 9.252 0 13.877-1.97 17.332a15.001 15.001 0 0 1-5.598 5.597C48.977 60 44.352 60 35.1 60H24.9c-9.251 0-13.877 0-17.332-1.97a15 15 0 0 1-5.597-5.598C0 48.977 0 44.352 0 35.1V24.9Z\"/><path id=\"wallet-placeholder-dash\" stroke=\"#000\" stroke-dasharray=\"4 4\" stroke-width=\"1.5\" d=\"M.04 41.708a231.598 231.598 0 0 1-.039-4.403l.75-.001L.75 35.1v-2.55H0v-5.1h.75V24.9l.001-2.204h-.75c.003-1.617.011-3.077.039-4.404l.75.016c.034-1.65.099-3.08.218-4.343l-.746-.07c.158-1.678.412-3.083.82-4.316l.713.236c.224-.679.497-1.296.827-1.875a14.25 14.25 0 0 1 1.05-1.585L3.076 5.9A15 15 0 0 1 5.9 3.076l.455.596a14.25 14.25 0 0 1 1.585-1.05c.579-.33 1.196-.603 1.875-.827l-.236-.712C10.812.674 12.217.42 13.895.262l.07.746C15.23.89 16.66.824 18.308.79l-.016-.75C19.62.012 21.08.004 22.695.001l.001.75L24.9.75h2.55V0h5.1v.75h2.55l2.204.001v-.75c1.617.003 3.077.011 4.404.039l-.016.75c1.65.034 3.08.099 4.343.218l.07-.746c1.678.158 3.083.412 4.316.82l-.236.713c.679.224 1.296.497 1.875.827a14.24 14.24 0 0 1 1.585 1.05l.455-.596A14.999 14.999 0 0 1 56.924 5.9l-.596.455c.384.502.735 1.032 1.05 1.585.33.579.602 1.196.827 1.875l.712-.236c.409 1.233.663 2.638.822 4.316l-.747.07c.119 1.264.184 2.694.218 4.343l.75-.016c.028 1.327.036 2.787.039 4.403l-.75.001.001 2.204v2.55H60v5.1h-.75v2.55l-.001 2.204h.75a231.431 231.431 0 0 1-.039 4.404l-.75-.016c-.034 1.65-.099 3.08-.218 4.343l.747.07c-.159 1.678-.413 3.083-.822 4.316l-.712-.236a10.255 10.255 0 0 1-.827 1.875 14.242 14.242 0 0 1-1.05 1.585l.596.455a14.997 14.997 0 0 1-2.824 2.824l-.455-.596c-.502.384-1.032.735-1.585 1.05-.579.33-1.196.602-1.875.827l.236.712c-1.233.409-2.638.663-4.316.822l-.07-.747c-1.264.119-2.694.184-4.343.218l.016.75c-1.327.028-2.787.036-4.403.039l-.001-.75-2.204.001h-2.55V60h-5.1v-.75H24.9l-2.204-.001v.75a231.431 231.431 0 0 1-4.404-.039l.016-.75c-1.65-.034-3.08-.099-4.343-.218l-.07.747c-1.678-.159-3.083-.413-4.316-.822l.236-.712a10.258 10.258 0 0 1-1.875-.827 14.252 14.252 0 0 1-1.585-1.05l-.455.596A14.999 14.999 0 0 1 3.076 54.1l.596-.455a14.24 14.24 0 0 1-1.05-1.585 10.259 10.259 0 0 1-.827-1.875l-.712.236C.674 49.188.42 47.783.262 46.105l.746-.07C.89 44.77.824 43.34.79 41.692l-.75.016Z\"/><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M35.643 32.145c-.297-.743-.445-1.114-.401-1.275a.42.42 0 0 1 .182-.27c.134-.1.463-.1 1.123-.1.742 0 1.499.046 2.236-.05a6 6 0 0 0 5.166-5.166c.051-.39.051-.855.051-1.784 0-.928 0-1.393-.051-1.783a6 6 0 0 0-5.166-5.165c-.39-.052-.854-.052-1.783-.052h-7.72c-4.934 0-7.401 0-9.244 1.051a8 8 0 0 0-2.985 2.986C16.057 22.28 16.003 24.58 16 29 15.998 31.075 16 33.15 16 35.224A7.778 7.778 0 0 0 23.778 43H28.5c1.394 0 2.09 0 2.67-.116a6 6 0 0 0 4.715-4.714c.115-.58.115-1.301.115-2.744 0-1.31 0-1.964-.114-2.49a4.998 4.998 0 0 0-.243-.792Z\" clip-rule=\"evenodd\"/><path fill=\"#9EA9A9\" fill-rule=\"evenodd\" d=\"M37 18h-7.72c-2.494 0-4.266.002-5.647.126-1.361.122-2.197.354-2.854.728a6.5 6.5 0 0 0-2.425 2.426c-.375.657-.607 1.492-.729 2.853-.11 1.233-.123 2.777-.125 4.867 0 .7 0 1.05.097 1.181.096.13.182.181.343.2.163.02.518-.18 1.229-.581a6.195 6.195 0 0 1 3.053-.8H37c.977 0 1.32-.003 1.587-.038a4.5 4.5 0 0 0 3.874-3.874c.036-.268.039-.611.039-1.588 0-.976-.003-1.319-.038-1.587a4.5 4.5 0 0 0-3.875-3.874C38.32 18.004 37.977 18 37 18Zm-7.364 12.5h-7.414a4.722 4.722 0 0 0-4.722 4.723 6.278 6.278 0 0 0 6.278 6.278H28.5c1.466 0 1.98-.008 2.378-.087a4.5 4.5 0 0 0 3.535-3.536c.08-.397.087-.933.087-2.451 0-1.391-.009-1.843-.08-2.17a3.5 3.5 0 0 0-2.676-2.676c-.328-.072-.762-.08-2.108-.08Z\" clip-rule=\"evenodd\"/></g><defs><clipPath id=\"q\"><path fill=\"#fff\" d=\"M0 0h60v60H0z\"/></clipPath></defs></svg>`,\n  GLOBE_ICON: svg`<svg width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 16 16\"><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M15.5 8a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0Zm-2.113.75c.301 0 .535.264.47.558a6.01 6.01 0 0 1-2.867 3.896c-.203.116-.42-.103-.334-.32.409-1.018.691-2.274.797-3.657a.512.512 0 0 1 .507-.477h1.427Zm.47-2.058c.065.294-.169.558-.47.558H11.96a.512.512 0 0 1-.507-.477c-.106-1.383-.389-2.638-.797-3.656-.087-.217.13-.437.333-.32a6.01 6.01 0 0 1 2.868 3.895Zm-4.402.558c.286 0 .515-.24.49-.525-.121-1.361-.429-2.534-.83-3.393-.279-.6-.549-.93-.753-1.112a.535.535 0 0 0-.724 0c-.204.182-.474.513-.754 1.112-.4.859-.708 2.032-.828 3.393a.486.486 0 0 0 .49.525h2.909Zm-5.415 0c.267 0 .486-.21.507-.477.106-1.383.389-2.638.797-3.656.087-.217-.13-.437-.333-.32a6.01 6.01 0 0 0-2.868 3.895c-.065.294.169.558.47.558H4.04ZM2.143 9.308c-.065-.294.169-.558.47-.558H4.04c.267 0 .486.21.507.477.106 1.383.389 2.639.797 3.657.087.217-.13.436-.333.32a6.01 6.01 0 0 1-2.868-3.896Zm3.913-.033a.486.486 0 0 1 .49-.525h2.909c.286 0 .515.24.49.525-.121 1.361-.428 2.535-.83 3.394-.279.6-.549.93-.753 1.112a.535.535 0 0 1-.724 0c-.204-.182-.474-.513-.754-1.112-.4-.859-.708-2.033-.828-3.394Z\" clip-rule=\"evenodd\"/></svg>`\n};\nvar styles$q = css`.wcm-toolbar-placeholder{top:0;bottom:0;left:0;right:0;width:100%;position:absolute;display:block;pointer-events:none;height:100px;border-radius:calc(var(--wcm-background-border-radius) * .9);background-color:var(--wcm-background-color);background-position:center;background-size:cover}.wcm-toolbar{height:38px;display:flex;position:relative;margin:5px 15px 5px 5px;justify-content:space-between;align-items:center}.wcm-toolbar img,.wcm-toolbar svg{height:28px;object-position:left center;object-fit:contain}#wcm-wc-logo path{fill:var(--wcm-accent-fill-color)}button{width:28px;height:28px;border-radius:var(--wcm-icon-button-border-radius);border:0;display:flex;justify-content:center;align-items:center;cursor:pointer;background-color:var(--wcm-color-bg-1);box-shadow:0 0 0 1px var(--wcm-color-overlay)}button:active{background-color:var(--wcm-color-bg-2)}button svg{display:block;object-position:center}button path{fill:var(--wcm-color-fg-1)}.wcm-toolbar div{display:flex}@media(hover:hover){button:hover{background-color:var(--wcm-color-bg-2)}}`;\nvar __defProp$u = Object.defineProperty;\nvar __getOwnPropDesc$u = Object.getOwnPropertyDescriptor;\nvar __decorateClass$u = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$u(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$u(target, key, result);\n  return result;\n};\nvar WcmModalBackcard = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<div class=\"wcm-toolbar-placeholder\"></div><div class=\"wcm-toolbar\">${SvgUtil.WALLET_CONNECT_LOGO} <button @click=\"${ModalCtrl.close}\">${SvgUtil.CROSS_ICON}</button></div>`;\n  }\n};\nWcmModalBackcard.styles = [ThemeUtil.globalCss, styles$q];\nWcmModalBackcard = __decorateClass$u([\n  customElement(\"wcm-modal-backcard\")\n], WcmModalBackcard);\nvar styles$p = css`main{padding:20px;padding-top:0;width:100%}`;\nvar __defProp$t = Object.defineProperty;\nvar __getOwnPropDesc$t = Object.getOwnPropertyDescriptor;\nvar __decorateClass$t = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$t(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$t(target, key, result);\n  return result;\n};\nvar WcmModalContent = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<main><slot></slot></main>`;\n  }\n};\nWcmModalContent.styles = [ThemeUtil.globalCss, styles$p];\nWcmModalContent = __decorateClass$t([\n  customElement(\"wcm-modal-content\")\n], WcmModalContent);\nvar styles$o = css`footer{padding:10px;display:flex;flex-direction:column;align-items:inherit;justify-content:inherit;border-top:1px solid var(--wcm-color-bg-2)}`;\nvar __defProp$s = Object.defineProperty;\nvar __getOwnPropDesc$s = Object.getOwnPropertyDescriptor;\nvar __decorateClass$s = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$s(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$s(target, key, result);\n  return result;\n};\nvar WcmModalFooter = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<footer><slot></slot></footer>`;\n  }\n};\nWcmModalFooter.styles = [ThemeUtil.globalCss, styles$o];\nWcmModalFooter = __decorateClass$s([\n  customElement(\"wcm-modal-footer\")\n], WcmModalFooter);\nvar styles$n = css`header{display:flex;justify-content:center;align-items:center;padding:20px;position:relative}.wcm-border{border-bottom:1px solid var(--wcm-color-bg-2);margin-bottom:20px}header button{padding:15px 20px}header button:active{opacity:.5}@media(hover:hover){header button:hover{opacity:.5}}.wcm-back-btn{position:absolute;left:0}.wcm-action-btn{position:absolute;right:0}path{fill:var(--wcm-accent-color)}`;\nvar __defProp$r = Object.defineProperty;\nvar __getOwnPropDesc$r = Object.getOwnPropertyDescriptor;\nvar __decorateClass$r = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$r(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$r(target, key, result);\n  return result;\n};\nvar WcmModalHeader = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.title = \"\";\n    this.onAction = void 0;\n    this.actionIcon = void 0;\n    this.border = false;\n  }\n  // -- private ------------------------------------------------------ //\n  backBtnTemplate() {\n    return html`<button class=\"wcm-back-btn\" @click=\"${RouterCtrl.goBack}\">${SvgUtil.BACK_ICON}</button>`;\n  }\n  actionBtnTemplate() {\n    return html`<button class=\"wcm-action-btn\" @click=\"${this.onAction}\">${this.actionIcon}</button>`;\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const classes = {\n      \"wcm-border\": this.border\n    };\n    const backBtn = RouterCtrl.state.history.length > 1;\n    const content = this.title ? html`<wcm-text variant=\"big-bold\">${this.title}</wcm-text>` : html`<slot></slot>`;\n    return html`<header class=\"${classMap(classes)}\">${backBtn ? this.backBtnTemplate() : null} ${content} ${this.onAction ? this.actionBtnTemplate() : null}</header>`;\n  }\n};\nWcmModalHeader.styles = [ThemeUtil.globalCss, styles$n];\n__decorateClass$r([\n  property()\n], WcmModalHeader.prototype, \"title\", 2);\n__decorateClass$r([\n  property()\n], WcmModalHeader.prototype, \"onAction\", 2);\n__decorateClass$r([\n  property()\n], WcmModalHeader.prototype, \"actionIcon\", 2);\n__decorateClass$r([\n  property({ type: Boolean })\n], WcmModalHeader.prototype, \"border\", 2);\nWcmModalHeader = __decorateClass$r([\n  customElement(\"wcm-modal-header\")\n], WcmModalHeader);\nvar UiUtil = {\n  MOBILE_BREAKPOINT: 600,\n  WCM_RECENT_WALLET_DATA: \"WCM_RECENT_WALLET_DATA\",\n  EXPLORER_WALLET_URL: \"https://explorer.walletconnect.com/?type=wallet\",\n  getShadowRootElement(root, selector) {\n    const el = root.renderRoot.querySelector(selector);\n    if (!el) {\n      throw new Error(`${selector} not found`);\n    }\n    return el;\n  },\n  getWalletIcon({ id, image_id }) {\n    const { walletImages } = ConfigCtrl.state;\n    if (walletImages == null ? void 0 : walletImages[id]) {\n      return walletImages[id];\n    } else if (image_id) {\n      return ExplorerCtrl.getWalletImageUrl(image_id);\n    }\n    return \"\";\n  },\n  getWalletName(name, short = false) {\n    return short && name.length > 8 ? `${name.substring(0, 8)}..` : name;\n  },\n  isMobileAnimation() {\n    return window.innerWidth <= UiUtil.MOBILE_BREAKPOINT;\n  },\n  async preloadImage(src) {\n    const imagePromise = new Promise((resolve, reject) => {\n      const image = new Image();\n      image.onload = resolve;\n      image.onerror = reject;\n      image.crossOrigin = \"anonymous\";\n      image.src = src;\n    });\n    return Promise.race([imagePromise, CoreUtil.wait(3e3)]);\n  },\n  getErrorMessage(err) {\n    return err instanceof Error ? err.message : \"Unknown Error\";\n  },\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  debounce(func, timeout = 500) {\n    let timer = void 0;\n    return (...args) => {\n      function next() {\n        func(...args);\n      }\n      if (timer) {\n        clearTimeout(timer);\n      }\n      timer = setTimeout(next, timeout);\n    };\n  },\n  handleMobileLinking(wallet, target = \"_self\") {\n    const { walletConnectUri } = OptionsCtrl.state;\n    const { mobile, name } = wallet;\n    const nativeUrl = mobile == null ? void 0 : mobile.native;\n    const universalUrl = mobile == null ? void 0 : mobile.universal;\n    UiUtil.setRecentWallet(wallet);\n    function onRedirect(uri) {\n      if (nativeUrl) {\n        const href = CoreUtil.formatNativeUrl(nativeUrl, uri, name);\n        CoreUtil.openHref(href, target);\n      } else if (universalUrl) {\n        const href = CoreUtil.formatUniversalUrl(universalUrl, uri, name);\n        CoreUtil.openHref(href, target);\n      }\n    }\n    if (walletConnectUri) {\n      onRedirect(walletConnectUri);\n    }\n  },\n  handleAndroidLinking() {\n    const { walletConnectUri } = OptionsCtrl.state;\n    if (walletConnectUri) {\n      CoreUtil.setWalletConnectAndroidDeepLink(walletConnectUri);\n      CoreUtil.openHref(walletConnectUri, CoreUtil.isTelegram() ? \"_blank\" : \"_self\");\n    }\n  },\n  async handleUriCopy() {\n    const { walletConnectUri } = OptionsCtrl.state;\n    if (walletConnectUri) {\n      try {\n        await navigator.clipboard.writeText(walletConnectUri);\n        ToastCtrl.openToast(\"Link copied\", \"success\");\n      } catch (e) {\n        ToastCtrl.openToast(\"Failed to copy\", \"error\");\n      }\n    }\n  },\n  getCustomImageUrls() {\n    const { walletImages } = ConfigCtrl.state;\n    const walletUrls = Object.values(walletImages != null ? walletImages : {});\n    return Object.values(walletUrls);\n  },\n  truncate(value, strLen = 8) {\n    if (value.length <= strLen) {\n      return value;\n    }\n    return `${value.substring(0, 4)}...${value.substring(value.length - 4)}`;\n  },\n  setRecentWallet(wallet) {\n    try {\n      localStorage.setItem(UiUtil.WCM_RECENT_WALLET_DATA, JSON.stringify(wallet));\n    } catch (e) {\n      console.info(\"Unable to set recent wallet\");\n    }\n  },\n  getRecentWallet() {\n    try {\n      const wallet = localStorage.getItem(UiUtil.WCM_RECENT_WALLET_DATA);\n      if (wallet) {\n        const json = JSON.parse(wallet);\n        return json;\n      }\n      return void 0;\n    } catch (e) {\n      console.info(\"Unable to get recent wallet\");\n    }\n    return void 0;\n  },\n  caseSafeIncludes(str1, str2) {\n    return str1.toUpperCase().includes(str2.toUpperCase());\n  },\n  openWalletExplorerUrl() {\n    CoreUtil.openHref(UiUtil.EXPLORER_WALLET_URL, \"_blank\");\n  },\n  getCachedRouterWalletPlatforms() {\n    const { desktop, mobile } = CoreUtil.getWalletRouterData();\n    const isDesktop = Boolean(desktop == null ? void 0 : desktop.native);\n    const isWeb = Boolean(desktop == null ? void 0 : desktop.universal);\n    const isMobile = Boolean(mobile == null ? void 0 : mobile.native) || Boolean(mobile == null ? void 0 : mobile.universal);\n    return { isDesktop, isMobile, isWeb };\n  },\n  goToConnectingView(wallet) {\n    RouterCtrl.setData({ Wallet: wallet });\n    const isMobileDevice = CoreUtil.isMobile();\n    const { isDesktop, isWeb, isMobile } = UiUtil.getCachedRouterWalletPlatforms();\n    if (isMobileDevice) {\n      if (isMobile) {\n        RouterCtrl.push(\"MobileConnecting\");\n        if (!CoreUtil.isAndroid() && CoreUtil.isTelegram()) {\n          this.handleMobileLinking(wallet, \"_blank\");\n        }\n      } else if (isWeb) {\n        RouterCtrl.push(\"WebConnecting\");\n      } else {\n        RouterCtrl.push(\"InstallWallet\");\n      }\n    } else if (isDesktop) {\n      RouterCtrl.push(\"DesktopConnecting\");\n    } else if (isWeb) {\n      RouterCtrl.push(\"WebConnecting\");\n    } else if (isMobile) {\n      RouterCtrl.push(\"MobileQrcodeConnecting\");\n    } else {\n      RouterCtrl.push(\"InstallWallet\");\n    }\n  }\n};\nvar styles$m = css`.wcm-router{overflow:hidden;will-change:transform}.wcm-content{display:flex;flex-direction:column}`;\nvar __defProp$q = Object.defineProperty;\nvar __getOwnPropDesc$q = Object.getOwnPropertyDescriptor;\nvar __decorateClass$q = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$q(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$q(target, key, result);\n  return result;\n};\nvar WcmModalRouter = class extends LitElement {\n  // -- lifecycle ---------------------------------------------------- //\n  constructor() {\n    super();\n    this.view = RouterCtrl.state.view;\n    this.prevView = RouterCtrl.state.view;\n    this.unsubscribe = void 0;\n    this.oldHeight = \"0px\";\n    this.resizeObserver = void 0;\n    this.unsubscribe = RouterCtrl.subscribe((routerState) => {\n      if (this.view !== routerState.view) {\n        this.onChangeRoute();\n      }\n    });\n  }\n  firstUpdated() {\n    this.resizeObserver = new ResizeObserver(([conetnt]) => {\n      const newHeight = `${conetnt.contentRect.height}px`;\n      if (this.oldHeight !== \"0px\") {\n        animate2(this.routerEl, { height: [this.oldHeight, newHeight] }, { duration: 0.2 });\n      }\n      this.oldHeight = newHeight;\n    });\n    this.resizeObserver.observe(this.contentEl);\n  }\n  disconnectedCallback() {\n    var _a, _b;\n    (_a = this.unsubscribe) == null ? void 0 : _a.call(this);\n    (_b = this.resizeObserver) == null ? void 0 : _b.disconnect();\n  }\n  get routerEl() {\n    return UiUtil.getShadowRootElement(this, \".wcm-router\");\n  }\n  get contentEl() {\n    return UiUtil.getShadowRootElement(this, \".wcm-content\");\n  }\n  viewTemplate() {\n    switch (this.view) {\n      case \"ConnectWallet\":\n        return html`<wcm-connect-wallet-view></wcm-connect-wallet-view>`;\n      case \"DesktopConnecting\":\n        return html`<wcm-desktop-connecting-view></wcm-desktop-connecting-view>`;\n      case \"MobileConnecting\":\n        return html`<wcm-mobile-connecting-view></wcm-mobile-connecting-view>`;\n      case \"WebConnecting\":\n        return html`<wcm-web-connecting-view></wcm-web-connecting-view>`;\n      case \"MobileQrcodeConnecting\":\n        return html`<wcm-mobile-qr-connecting-view></wcm-mobile-qr-connecting-view>`;\n      case \"WalletExplorer\":\n        return html`<wcm-wallet-explorer-view></wcm-wallet-explorer-view>`;\n      case \"Qrcode\":\n        return html`<wcm-qrcode-view></wcm-qrcode-view>`;\n      case \"InstallWallet\":\n        return html`<wcm-install-wallet-view></wcm-install-wallet-view>`;\n      default:\n        return html`<div>Not Found</div>`;\n    }\n  }\n  async onChangeRoute() {\n    await animate2(\n      this.routerEl,\n      { opacity: [1, 0], scale: [1, 1.02] },\n      { duration: 0.15, delay: 0.1 }\n    ).finished;\n    this.view = RouterCtrl.state.view;\n    animate2(this.routerEl, { opacity: [0, 1], scale: [0.99, 1] }, { duration: 0.37, delay: 0.05 });\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<div class=\"wcm-router\"><div class=\"wcm-content\">${this.viewTemplate()}</div></div>`;\n  }\n};\nWcmModalRouter.styles = [ThemeUtil.globalCss, styles$m];\n__decorateClass$q([\n  state()\n], WcmModalRouter.prototype, \"view\", 2);\n__decorateClass$q([\n  state()\n], WcmModalRouter.prototype, \"prevView\", 2);\nWcmModalRouter = __decorateClass$q([\n  customElement(\"wcm-modal-router\")\n], WcmModalRouter);\nvar styles$l = css`div{height:36px;width:max-content;display:flex;justify-content:center;align-items:center;padding:9px 15px 11px;position:absolute;top:12px;box-shadow:0 6px 14px -6px rgba(10,16,31,.3),0 10px 32px -4px rgba(10,16,31,.15);z-index:2;left:50%;transform:translateX(-50%);pointer-events:none;backdrop-filter:blur(20px) saturate(1.8);-webkit-backdrop-filter:blur(20px) saturate(1.8);border-radius:var(--wcm-notification-border-radius);border:1px solid var(--wcm-color-overlay);background-color:var(--wcm-color-overlay)}svg{margin-right:5px}@-moz-document url-prefix(){div{background-color:var(--wcm-color-bg-3)}}.wcm-success path{fill:var(--wcm-accent-color)}.wcm-error path{fill:var(--wcm-error-color)}`;\nvar __defProp$p = Object.defineProperty;\nvar __getOwnPropDesc$p = Object.getOwnPropertyDescriptor;\nvar __decorateClass$p = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$p(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$p(target, key, result);\n  return result;\n};\nvar WcmModalToast = class extends LitElement {\n  constructor() {\n    super();\n    this.open = false;\n    this.unsubscribe = void 0;\n    this.timeout = void 0;\n    this.unsubscribe = ToastCtrl.subscribe((newState) => {\n      if (newState.open) {\n        this.open = true;\n        this.timeout = setTimeout(() => ToastCtrl.closeToast(), 2200);\n      } else {\n        this.open = false;\n        clearTimeout(this.timeout);\n      }\n    });\n  }\n  disconnectedCallback() {\n    var _a;\n    (_a = this.unsubscribe) == null ? void 0 : _a.call(this);\n    clearTimeout(this.timeout);\n    ToastCtrl.closeToast();\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { message, variant } = ToastCtrl.state;\n    const classes = {\n      \"wcm-success\": variant === \"success\",\n      \"wcm-error\": variant === \"error\"\n    };\n    return this.open ? html`<div class=\"${classMap(classes)}\">${variant === \"success\" ? SvgUtil.CHECKMARK_ICON : null} ${variant === \"error\" ? SvgUtil.CROSS_ICON : null}<wcm-text variant=\"small-regular\">${message}</wcm-text></div>` : null;\n  }\n};\nWcmModalToast.styles = [ThemeUtil.globalCss, styles$l];\n__decorateClass$p([\n  state()\n], WcmModalToast.prototype, \"open\", 2);\nWcmModalToast = __decorateClass$p([\n  customElement(\"wcm-modal-toast\")\n], WcmModalToast);\nvar CONNECTING_ERROR_MARGIN = 0.1;\nvar CIRCLE_SIZE_MODIFIER = 2.5;\nvar QRCODE_MATRIX_MARGIN = 7;\nfunction isAdjecentDots(cy, otherCy, cellSize) {\n  if (cy === otherCy) {\n    return false;\n  }\n  const diff = cy - otherCy < 0 ? otherCy - cy : cy - otherCy;\n  return diff <= cellSize + CONNECTING_ERROR_MARGIN;\n}\nfunction getMatrix(value, errorCorrectionLevel) {\n  const arr = Array.prototype.slice.call(\n    import_qrcode.default.create(value, { errorCorrectionLevel }).modules.data,\n    0\n  );\n  const sqrt = Math.sqrt(arr.length);\n  return arr.reduce(\n    (rows, key, index) => (index % sqrt === 0 ? rows.push([key]) : rows[rows.length - 1].push(key)) && rows,\n    []\n  );\n}\nvar QrCodeUtil = {\n  generate(uri, size, logoSize) {\n    const dotColor = \"#141414\";\n    const edgeColor = \"#ffffff\";\n    const dots = [];\n    const matrix = getMatrix(uri, \"Q\");\n    const cellSize = size / matrix.length;\n    const qrList = [\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: 0, y: 1 }\n    ];\n    qrList.forEach(({ x, y }) => {\n      const x1 = (matrix.length - QRCODE_MATRIX_MARGIN) * cellSize * x;\n      const y1 = (matrix.length - QRCODE_MATRIX_MARGIN) * cellSize * y;\n      const borderRadius = 0.45;\n      for (let i = 0; i < qrList.length; i += 1) {\n        const dotSize = cellSize * (QRCODE_MATRIX_MARGIN - i * 2);\n        dots.push(\n          svg`<rect fill=\"${i % 2 === 0 ? dotColor : edgeColor}\" height=\"${dotSize}\" rx=\"${dotSize * borderRadius}\" ry=\"${dotSize * borderRadius}\" width=\"${dotSize}\" x=\"${x1 + cellSize * i}\" y=\"${y1 + cellSize * i}\">`\n        );\n      }\n    });\n    const clearArenaSize = Math.floor((logoSize + 25) / cellSize);\n    const matrixMiddleStart = matrix.length / 2 - clearArenaSize / 2;\n    const matrixMiddleEnd = matrix.length / 2 + clearArenaSize / 2 - 1;\n    const circles = [];\n    matrix.forEach((row, i) => {\n      row.forEach((_, j) => {\n        if (matrix[i][j]) {\n          if (!(i < QRCODE_MATRIX_MARGIN && j < QRCODE_MATRIX_MARGIN || i > matrix.length - (QRCODE_MATRIX_MARGIN + 1) && j < QRCODE_MATRIX_MARGIN || i < QRCODE_MATRIX_MARGIN && j > matrix.length - (QRCODE_MATRIX_MARGIN + 1))) {\n            if (!(i > matrixMiddleStart && i < matrixMiddleEnd && j > matrixMiddleStart && j < matrixMiddleEnd)) {\n              const cx = i * cellSize + cellSize / 2;\n              const cy = j * cellSize + cellSize / 2;\n              circles.push([cx, cy]);\n            }\n          }\n        }\n      });\n    });\n    const circlesToConnect = {};\n    circles.forEach(([cx, cy]) => {\n      if (circlesToConnect[cx]) {\n        circlesToConnect[cx].push(cy);\n      } else {\n        circlesToConnect[cx] = [cy];\n      }\n    });\n    Object.entries(circlesToConnect).map(([cx, cys]) => {\n      const newCys = cys.filter(\n        (cy) => cys.every((otherCy) => !isAdjecentDots(cy, otherCy, cellSize))\n      );\n      return [Number(cx), newCys];\n    }).forEach(([cx, cys]) => {\n      cys.forEach((cy) => {\n        dots.push(\n          svg`<circle cx=\"${cx}\" cy=\"${cy}\" fill=\"${dotColor}\" r=\"${cellSize / CIRCLE_SIZE_MODIFIER}\">`\n        );\n      });\n    });\n    Object.entries(circlesToConnect).filter(([_, cys]) => cys.length > 1).map(([cx, cys]) => {\n      const newCys = cys.filter((cy) => cys.some((otherCy) => isAdjecentDots(cy, otherCy, cellSize)));\n      return [Number(cx), newCys];\n    }).map(([cx, cys]) => {\n      cys.sort((a, b) => a < b ? -1 : 1);\n      const groups = [];\n      for (const cy of cys) {\n        const group = groups.find(\n          (item) => item.some((otherCy) => isAdjecentDots(cy, otherCy, cellSize))\n        );\n        if (group) {\n          group.push(cy);\n        } else {\n          groups.push([cy]);\n        }\n      }\n      return [cx, groups.map((item) => [item[0], item[item.length - 1]])];\n    }).forEach(([cx, groups]) => {\n      groups.forEach(([y1, y2]) => {\n        dots.push(\n          svg`<line x1=\"${cx}\" x2=\"${cx}\" y1=\"${y1}\" y2=\"${y2}\" stroke=\"${dotColor}\" stroke-width=\"${cellSize / (CIRCLE_SIZE_MODIFIER / 2)}\" stroke-linecap=\"round\">`\n        );\n      });\n    });\n    return dots;\n  }\n};\nvar styles$k = css`@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}div{position:relative;user-select:none;display:block;overflow:hidden;aspect-ratio:1/1;animation:fadeIn ease .2s}.wcm-dark{background-color:#fff;border-radius:var(--wcm-container-border-radius);padding:18px;box-shadow:0 2px 5px #000}svg:first-child,wcm-wallet-image{position:absolute;top:50%;left:50%;transform:translateY(-50%) translateX(-50%)}wcm-wallet-image{transform:translateY(-50%) translateX(-50%)}wcm-wallet-image{width:25%;height:25%;border-radius:var(--wcm-wallet-icon-border-radius)}svg:first-child{transform:translateY(-50%) translateX(-50%) scale(.9)}svg:first-child path:first-child{fill:var(--wcm-accent-color)}svg:first-child path:last-child{stroke:var(--wcm-color-overlay)}`;\nvar __defProp$o = Object.defineProperty;\nvar __getOwnPropDesc$o = Object.getOwnPropertyDescriptor;\nvar __decorateClass$o = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$o(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$o(target, key, result);\n  return result;\n};\nvar WcmQrCode = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.uri = \"\";\n    this.size = 0;\n    this.imageId = void 0;\n    this.walletId = void 0;\n    this.imageUrl = void 0;\n  }\n  // -- private ------------------------------------------------------ //\n  svgTemplate() {\n    const isLightMode = ThemeCtrl.state.themeMode === \"light\";\n    const size = isLightMode ? this.size : this.size - 18 * 2;\n    return svg`<svg height=\"${size}\" width=\"${size}\">${QrCodeUtil.generate(this.uri, size, size / 4)}</svg>`;\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const classes = {\n      \"wcm-dark\": ThemeCtrl.state.themeMode === \"dark\"\n    };\n    return html`<div style=\"${`width: ${this.size}px`}\" class=\"${classMap(classes)}\">${this.walletId || this.imageUrl ? html`<wcm-wallet-image walletId=\"${ifDefined(this.walletId)}\" imageId=\"${ifDefined(this.imageId)}\" imageUrl=\"${ifDefined(this.imageUrl)}\"></wcm-wallet-image>` : SvgUtil.WALLET_CONNECT_ICON_COLORED} ${this.svgTemplate()}</div>`;\n  }\n};\nWcmQrCode.styles = [ThemeUtil.globalCss, styles$k];\n__decorateClass$o([\n  property()\n], WcmQrCode.prototype, \"uri\", 2);\n__decorateClass$o([\n  property({ type: Number })\n], WcmQrCode.prototype, \"size\", 2);\n__decorateClass$o([\n  property()\n], WcmQrCode.prototype, \"imageId\", 2);\n__decorateClass$o([\n  property()\n], WcmQrCode.prototype, \"walletId\", 2);\n__decorateClass$o([\n  property()\n], WcmQrCode.prototype, \"imageUrl\", 2);\nWcmQrCode = __decorateClass$o([\n  customElement(\"wcm-qrcode\")\n], WcmQrCode);\nvar styles$j = css`:host{position:relative;height:28px;width:80%}input{width:100%;height:100%;line-height:28px!important;border-radius:var(--wcm-input-border-radius);font-style:normal;font-family:-apple-system,system-ui,BlinkMacSystemFont,'Segoe UI',Roboto,Ubuntu,'Helvetica Neue',sans-serif;font-feature-settings:'case' on;font-weight:500;font-size:16px;letter-spacing:-.03em;padding:0 10px 0 34px;transition:.2s all ease;color:var(--wcm-color-fg-1);background-color:var(--wcm-color-bg-3);box-shadow:inset 0 0 0 1px var(--wcm-color-overlay);caret-color:var(--wcm-accent-color)}input::placeholder{color:var(--wcm-color-fg-2)}svg{left:10px;top:4px;pointer-events:none;position:absolute;width:20px;height:20px}input:focus-within{box-shadow:inset 0 0 0 1px var(--wcm-accent-color)}path{fill:var(--wcm-color-fg-2)}`;\nvar __defProp$n = Object.defineProperty;\nvar __getOwnPropDesc$n = Object.getOwnPropertyDescriptor;\nvar __decorateClass$n = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$n(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$n(target, key, result);\n  return result;\n};\nvar WcmSearchInput = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.onChange = () => null;\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<input type=\"text\" @input=\"${this.onChange}\" placeholder=\"Search wallets\"> ${SvgUtil.SEARCH_ICON}`;\n  }\n};\nWcmSearchInput.styles = [ThemeUtil.globalCss, styles$j];\n__decorateClass$n([\n  property()\n], WcmSearchInput.prototype, \"onChange\", 2);\nWcmSearchInput = __decorateClass$n([\n  customElement(\"wcm-search-input\")\n], WcmSearchInput);\nvar styles$i = css`@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}svg{animation:rotate 2s linear infinite;display:flex;justify-content:center;align-items:center}svg circle{stroke-linecap:round;animation:dash 1.5s ease infinite;stroke:var(--wcm-accent-color)}`;\nvar __defProp$m = Object.defineProperty;\nvar __getOwnPropDesc$m = Object.getOwnPropertyDescriptor;\nvar __decorateClass$m = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$m(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$m(target, key, result);\n  return result;\n};\nvar WcmSpinner = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<svg viewBox=\"0 0 50 50\" width=\"24\" height=\"24\"><circle cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke-width=\"4\" stroke=\"#fff\"/></svg>`;\n  }\n};\nWcmSpinner.styles = [ThemeUtil.globalCss, styles$i];\nWcmSpinner = __decorateClass$m([\n  customElement(\"wcm-spinner\")\n], WcmSpinner);\nvar styles$h = css`span{font-style:normal;font-family:var(--wcm-font-family);font-feature-settings:var(--wcm-font-feature-settings)}.wcm-xsmall-bold{font-family:var(--wcm-text-xsmall-bold-font-family);font-weight:var(--wcm-text-xsmall-bold-weight);font-size:var(--wcm-text-xsmall-bold-size);line-height:var(--wcm-text-xsmall-bold-line-height);letter-spacing:var(--wcm-text-xsmall-bold-letter-spacing);text-transform:var(--wcm-text-xsmall-bold-text-transform)}.wcm-xsmall-regular{font-family:var(--wcm-text-xsmall-regular-font-family);font-weight:var(--wcm-text-xsmall-regular-weight);font-size:var(--wcm-text-xsmall-regular-size);line-height:var(--wcm-text-xsmall-regular-line-height);letter-spacing:var(--wcm-text-xsmall-regular-letter-spacing);text-transform:var(--wcm-text-xsmall-regular-text-transform)}.wcm-small-thin{font-family:var(--wcm-text-small-thin-font-family);font-weight:var(--wcm-text-small-thin-weight);font-size:var(--wcm-text-small-thin-size);line-height:var(--wcm-text-small-thin-line-height);letter-spacing:var(--wcm-text-small-thin-letter-spacing);text-transform:var(--wcm-text-small-thin-text-transform)}.wcm-small-regular{font-family:var(--wcm-text-small-regular-font-family);font-weight:var(--wcm-text-small-regular-weight);font-size:var(--wcm-text-small-regular-size);line-height:var(--wcm-text-small-regular-line-height);letter-spacing:var(--wcm-text-small-regular-letter-spacing);text-transform:var(--wcm-text-small-regular-text-transform)}.wcm-medium-regular{font-family:var(--wcm-text-medium-regular-font-family);font-weight:var(--wcm-text-medium-regular-weight);font-size:var(--wcm-text-medium-regular-size);line-height:var(--wcm-text-medium-regular-line-height);letter-spacing:var(--wcm-text-medium-regular-letter-spacing);text-transform:var(--wcm-text-medium-regular-text-transform)}.wcm-big-bold{font-family:var(--wcm-text-big-bold-font-family);font-weight:var(--wcm-text-big-bold-weight);font-size:var(--wcm-text-big-bold-size);line-height:var(--wcm-text-big-bold-line-height);letter-spacing:var(--wcm-text-big-bold-letter-spacing);text-transform:var(--wcm-text-big-bold-text-transform)}:host(*){color:var(--wcm-color-fg-1)}.wcm-color-primary{color:var(--wcm-color-fg-1)}.wcm-color-secondary{color:var(--wcm-color-fg-2)}.wcm-color-tertiary{color:var(--wcm-color-fg-3)}.wcm-color-inverse{color:var(--wcm-accent-fill-color)}.wcm-color-accnt{color:var(--wcm-accent-color)}.wcm-color-error{color:var(--wcm-error-color)}`;\nvar __defProp$l = Object.defineProperty;\nvar __getOwnPropDesc$l = Object.getOwnPropertyDescriptor;\nvar __decorateClass$l = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$l(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$l(target, key, result);\n  return result;\n};\nvar WcmText = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.variant = \"medium-regular\";\n    this.color = \"primary\";\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const classes = {\n      \"wcm-big-bold\": this.variant === \"big-bold\",\n      \"wcm-medium-regular\": this.variant === \"medium-regular\",\n      \"wcm-small-regular\": this.variant === \"small-regular\",\n      \"wcm-small-thin\": this.variant === \"small-thin\",\n      \"wcm-xsmall-regular\": this.variant === \"xsmall-regular\",\n      \"wcm-xsmall-bold\": this.variant === \"xsmall-bold\",\n      \"wcm-color-primary\": this.color === \"primary\",\n      \"wcm-color-secondary\": this.color === \"secondary\",\n      \"wcm-color-tertiary\": this.color === \"tertiary\",\n      \"wcm-color-inverse\": this.color === \"inverse\",\n      \"wcm-color-accnt\": this.color === \"accent\",\n      \"wcm-color-error\": this.color === \"error\"\n    };\n    return html`<span><slot class=\"${classMap(classes)}\"></slot></span>`;\n  }\n};\nWcmText.styles = [ThemeUtil.globalCss, styles$h];\n__decorateClass$l([\n  property()\n], WcmText.prototype, \"variant\", 2);\n__decorateClass$l([\n  property()\n], WcmText.prototype, \"color\", 2);\nWcmText = __decorateClass$l([\n  customElement(\"wcm-text\")\n], WcmText);\nvar styles$g = css`button{width:100%;height:100%;border-radius:var(--wcm-button-hover-highlight-border-radius);display:flex;align-items:flex-start}button:active{background-color:var(--wcm-color-overlay)}@media(hover:hover){button:hover{background-color:var(--wcm-color-overlay)}}button>div{width:80px;padding:5px 0;display:flex;flex-direction:column;align-items:center}wcm-text{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}wcm-wallet-image{height:60px;width:60px;transition:all .2s ease;border-radius:var(--wcm-wallet-icon-border-radius);margin-bottom:5px}.wcm-sublabel{margin-top:2px}`;\nvar __defProp$k = Object.defineProperty;\nvar __getOwnPropDesc$k = Object.getOwnPropertyDescriptor;\nvar __decorateClass$k = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$k(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$k(target, key, result);\n  return result;\n};\nvar WcmWalletButton = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.onClick = () => null;\n    this.name = \"\";\n    this.walletId = \"\";\n    this.label = void 0;\n    this.imageId = void 0;\n    this.installed = false;\n    this.recent = false;\n  }\n  // -- private ------------------------------------------------------ //\n  sublabelTemplate() {\n    if (this.recent) {\n      return html`<wcm-text class=\"wcm-sublabel\" variant=\"xsmall-bold\" color=\"tertiary\">RECENT</wcm-text>`;\n    } else if (this.installed) {\n      return html`<wcm-text class=\"wcm-sublabel\" variant=\"xsmall-bold\" color=\"tertiary\">INSTALLED</wcm-text>`;\n    }\n    return null;\n  }\n  handleClick() {\n    EventsCtrl.click({ name: \"WALLET_BUTTON\", walletId: this.walletId });\n    this.onClick();\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    var _a;\n    return html`<button @click=\"${this.handleClick.bind(this)}\"><div><wcm-wallet-image walletId=\"${this.walletId}\" imageId=\"${ifDefined(this.imageId)}\"></wcm-wallet-image><wcm-text variant=\"xsmall-regular\">${(_a = this.label) != null ? _a : UiUtil.getWalletName(this.name, true)}</wcm-text>${this.sublabelTemplate()}</div></button>`;\n  }\n};\nWcmWalletButton.styles = [ThemeUtil.globalCss, styles$g];\n__decorateClass$k([\n  property()\n], WcmWalletButton.prototype, \"onClick\", 2);\n__decorateClass$k([\n  property()\n], WcmWalletButton.prototype, \"name\", 2);\n__decorateClass$k([\n  property()\n], WcmWalletButton.prototype, \"walletId\", 2);\n__decorateClass$k([\n  property()\n], WcmWalletButton.prototype, \"label\", 2);\n__decorateClass$k([\n  property()\n], WcmWalletButton.prototype, \"imageId\", 2);\n__decorateClass$k([\n  property({ type: Boolean })\n], WcmWalletButton.prototype, \"installed\", 2);\n__decorateClass$k([\n  property({ type: Boolean })\n], WcmWalletButton.prototype, \"recent\", 2);\nWcmWalletButton = __decorateClass$k([\n  customElement(\"wcm-wallet-button\")\n], WcmWalletButton);\nvar styles$f = css`:host{display:block}div{overflow:hidden;position:relative;border-radius:inherit;width:100%;height:100%;background-color:var(--wcm-color-overlay)}svg{position:relative;width:100%;height:100%}div::after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border-radius:inherit;border:1px solid var(--wcm-color-overlay)}div img{width:100%;height:100%;object-fit:cover;object-position:center}#wallet-placeholder-fill{fill:var(--wcm-color-bg-3)}#wallet-placeholder-dash{stroke:var(--wcm-color-overlay)}`;\nvar __defProp$j = Object.defineProperty;\nvar __getOwnPropDesc$j = Object.getOwnPropertyDescriptor;\nvar __decorateClass$j = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$j(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$j(target, key, result);\n  return result;\n};\nvar WcmWalletImage = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.walletId = \"\";\n    this.imageId = void 0;\n    this.imageUrl = void 0;\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    var _a;\n    const src = ((_a = this.imageUrl) == null ? void 0 : _a.length) ? this.imageUrl : UiUtil.getWalletIcon({ id: this.walletId, image_id: this.imageId });\n    return html`${src.length ? html`<div><img crossorigin=\"anonymous\" src=\"${src}\" alt=\"${this.id}\"></div>` : SvgUtil.WALLET_PLACEHOLDER}`;\n  }\n};\nWcmWalletImage.styles = [ThemeUtil.globalCss, styles$f];\n__decorateClass$j([\n  property()\n], WcmWalletImage.prototype, \"walletId\", 2);\n__decorateClass$j([\n  property()\n], WcmWalletImage.prototype, \"imageId\", 2);\n__decorateClass$j([\n  property()\n], WcmWalletImage.prototype, \"imageUrl\", 2);\nWcmWalletImage = __decorateClass$j([\n  customElement(\"wcm-wallet-image\")\n], WcmWalletImage);\nvar __defProp$i = Object.defineProperty;\nvar __getOwnPropDesc$i = Object.getOwnPropertyDescriptor;\nvar __decorateClass$i = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$i(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$i(target, key, result);\n  return result;\n};\nvar WcmExplorerContext = class extends LitElement {\n  // -- lifecycle ---------------------------------------------------- //\n  constructor() {\n    super();\n    this.preload = true;\n    this.preloadData();\n  }\n  // -- private ------------------------------------------------------ //\n  async loadImages(images) {\n    try {\n      if (images == null ? void 0 : images.length) {\n        await Promise.all(images.map(async (url) => UiUtil.preloadImage(url)));\n      }\n    } catch (e) {\n      console.info(\"Unsuccessful attempt at preloading some images\", images);\n    }\n  }\n  async preloadListings() {\n    if (ConfigCtrl.state.enableExplorer) {\n      await ExplorerCtrl.getRecomendedWallets();\n      OptionsCtrl.setIsDataLoaded(true);\n      const { recomendedWallets } = ExplorerCtrl.state;\n      const walletImgs = recomendedWallets.map((wallet) => UiUtil.getWalletIcon(wallet));\n      await this.loadImages(walletImgs);\n    } else {\n      OptionsCtrl.setIsDataLoaded(true);\n    }\n  }\n  async preloadCustomImages() {\n    const images = UiUtil.getCustomImageUrls();\n    await this.loadImages(images);\n  }\n  async preloadData() {\n    try {\n      if (this.preload) {\n        this.preload = false;\n        await Promise.all([this.preloadListings(), this.preloadCustomImages()]);\n      }\n    } catch (err) {\n      console.error(err);\n      ToastCtrl.openToast(\"Failed preloading\", \"error\");\n    }\n  }\n};\n__decorateClass$i([\n  state()\n], WcmExplorerContext.prototype, \"preload\", 2);\nWcmExplorerContext = __decorateClass$i([\n  customElement(\"wcm-explorer-context\")\n], WcmExplorerContext);\nvar __defProp$h = Object.defineProperty;\nvar __getOwnPropDesc$h = Object.getOwnPropertyDescriptor;\nvar __decorateClass$h = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$h(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$h(target, key, result);\n  return result;\n};\nvar WcmThemeContext = class extends LitElement {\n  // -- lifecycle ---------------------------------------------------- //\n  constructor() {\n    super();\n    this.unsubscribeTheme = void 0;\n    ThemeUtil.setTheme();\n    this.unsubscribeTheme = ThemeCtrl.subscribe(ThemeUtil.setTheme);\n  }\n  disconnectedCallback() {\n    var _a;\n    (_a = this.unsubscribeTheme) == null ? void 0 : _a.call(this);\n  }\n};\nWcmThemeContext = __decorateClass$h([\n  customElement(\"wcm-theme-context\")\n], WcmThemeContext);\nvar styles$e = css`@keyframes scroll{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(calc(-70px * 9),0,0)}}.wcm-slider{position:relative;overflow-x:hidden;padding:10px 0;margin:0 -20px;width:calc(100% + 40px)}.wcm-track{display:flex;width:calc(70px * 18);animation:scroll 20s linear infinite;opacity:.7}.wcm-track svg{margin:0 5px}wcm-wallet-image{width:60px;height:60px;margin:0 5px;border-radius:var(--wcm-wallet-icon-border-radius)}.wcm-grid{display:grid;grid-template-columns:repeat(4,80px);justify-content:space-between}.wcm-title{display:flex;align-items:center;margin-bottom:10px}.wcm-title svg{margin-right:6px}.wcm-title path{fill:var(--wcm-accent-color)}wcm-modal-footer .wcm-title{padding:0 10px}wcm-button-big{position:absolute;top:50%;left:50%;transform:translateY(-50%) translateX(-50%);filter:drop-shadow(0 0 17px var(--wcm-color-bg-1))}wcm-info-footer{flex-direction:column;align-items:center;display:flex;width:100%;padding:5px 0}wcm-info-footer wcm-text{text-align:center;margin-bottom:15px}#wallet-placeholder-fill{fill:var(--wcm-color-bg-3)}#wallet-placeholder-dash{stroke:var(--wcm-color-overlay)}`;\nvar __defProp$g = Object.defineProperty;\nvar __getOwnPropDesc$g = Object.getOwnPropertyDescriptor;\nvar __decorateClass$g = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$g(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$g(target, key, result);\n  return result;\n};\nvar WcmAndroidWalletSelection = class extends LitElement {\n  // -- private ------------------------------------------------------ //\n  onGoToQrcode() {\n    RouterCtrl.push(\"Qrcode\");\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { recomendedWallets } = ExplorerCtrl.state;\n    const wallets = [...recomendedWallets, ...recomendedWallets];\n    const recomendedCount = CoreUtil.RECOMMENDED_WALLET_AMOUNT * 2;\n    return html`<wcm-modal-header title=\"Connect your wallet\" .onAction=\"${this.onGoToQrcode}\" .actionIcon=\"${SvgUtil.QRCODE_ICON}\"></wcm-modal-header><wcm-modal-content><div class=\"wcm-title\">${SvgUtil.MOBILE_ICON}<wcm-text variant=\"small-regular\" color=\"accent\">WalletConnect</wcm-text></div><div class=\"wcm-slider\"><div class=\"wcm-track\">${[...Array(recomendedCount)].map((_, index) => {\n      const wallet = wallets[index % wallets.length];\n      return wallet ? html`<wcm-wallet-image walletId=\"${wallet.id}\" imageId=\"${wallet.image_id}\"></wcm-wallet-image>` : SvgUtil.WALLET_PLACEHOLDER;\n    })}</div><wcm-button-big @click=\"${UiUtil.handleAndroidLinking}\"><wcm-text variant=\"medium-regular\" color=\"inverse\">Select Wallet</wcm-text></wcm-button-big></div></wcm-modal-content><wcm-info-footer><wcm-text color=\"secondary\" variant=\"small-thin\">Choose WalletConnect to see supported apps on your device</wcm-text></wcm-info-footer>`;\n  }\n};\nWcmAndroidWalletSelection.styles = [ThemeUtil.globalCss, styles$e];\nWcmAndroidWalletSelection = __decorateClass$g([\n  customElement(\"wcm-android-wallet-selection\")\n], WcmAndroidWalletSelection);\nvar styles$d = css`@keyframes loading{to{stroke-dashoffset:0}}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(1px,0,0)}30%,50%,70%{transform:translate3d(-2px,0,0)}40%,60%{transform:translate3d(2px,0,0)}}:host{display:flex;flex-direction:column;align-items:center}div{position:relative;width:110px;height:110px;display:flex;justify-content:center;align-items:center;margin:40px 0 20px 0;transform:translate3d(0,0,0)}svg{position:absolute;width:110px;height:110px;fill:none;stroke:transparent;stroke-linecap:round;stroke-width:2px;top:0;left:0}use{stroke:var(--wcm-accent-color);animation:loading 1s linear infinite}wcm-wallet-image{border-radius:var(--wcm-wallet-icon-large-border-radius);width:90px;height:90px}wcm-text{margin-bottom:40px}.wcm-error svg{stroke:var(--wcm-error-color)}.wcm-error use{display:none}.wcm-error{animation:shake .4s cubic-bezier(.36,.07,.19,.97) both}.wcm-stale svg,.wcm-stale use{display:none}`;\nvar __defProp$f = Object.defineProperty;\nvar __getOwnPropDesc$f = Object.getOwnPropertyDescriptor;\nvar __decorateClass$f = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$f(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$f(target, key, result);\n  return result;\n};\nvar WcmConnectorWaiting = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.walletId = void 0;\n    this.imageId = void 0;\n    this.isError = false;\n    this.isStale = false;\n    this.label = \"\";\n  }\n  // -- private ------------------------------------------------------ //\n  svgLoaderTemplate() {\n    var _a, _b;\n    const ICON_SIZE = 88;\n    const DH_ARRAY = 317;\n    const DH_OFFSET = 425;\n    const radius = (_b = (_a = ThemeCtrl.state.themeVariables) == null ? void 0 : _a[\"--wcm-wallet-icon-large-border-radius\"]) != null ? _b : ThemeUtil.getPreset(\"--wcm-wallet-icon-large-border-radius\");\n    let numRadius = 0;\n    if (radius.includes(\"%\")) {\n      numRadius = ICON_SIZE / 100 * parseInt(radius, 10);\n    } else {\n      numRadius = parseInt(radius, 10);\n    }\n    numRadius *= 1.17;\n    const dashArray = DH_ARRAY - numRadius * 1.57;\n    const dashOffset = DH_OFFSET - numRadius * 1.8;\n    return html`<svg viewBox=\"0 0 110 110\" width=\"110\" height=\"110\"><rect id=\"wcm-loader\" x=\"2\" y=\"2\" width=\"106\" height=\"106\" rx=\"${numRadius}\"/><use xlink:href=\"#wcm-loader\" stroke-dasharray=\"106 ${dashArray}\" stroke-dashoffset=\"${dashOffset}\"></use></svg>`;\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const classes = {\n      \"wcm-error\": this.isError,\n      \"wcm-stale\": this.isStale\n    };\n    return html`<div class=\"${classMap(classes)}\">${this.svgLoaderTemplate()}<wcm-wallet-image walletId=\"${ifDefined(this.walletId)}\" imageId=\"${ifDefined(this.imageId)}\"></wcm-wallet-image></div><wcm-text variant=\"medium-regular\" color=\"${this.isError ? \"error\" : \"primary\"}\">${this.isError ? \"Connection declined\" : this.label}</wcm-text>`;\n  }\n};\nWcmConnectorWaiting.styles = [ThemeUtil.globalCss, styles$d];\n__decorateClass$f([\n  property()\n], WcmConnectorWaiting.prototype, \"walletId\", 2);\n__decorateClass$f([\n  property()\n], WcmConnectorWaiting.prototype, \"imageId\", 2);\n__decorateClass$f([\n  property({ type: Boolean })\n], WcmConnectorWaiting.prototype, \"isError\", 2);\n__decorateClass$f([\n  property({ type: Boolean })\n], WcmConnectorWaiting.prototype, \"isStale\", 2);\n__decorateClass$f([\n  property()\n], WcmConnectorWaiting.prototype, \"label\", 2);\nWcmConnectorWaiting = __decorateClass$f([\n  customElement(\"wcm-connector-waiting\")\n], WcmConnectorWaiting);\nvar DataUtil = {\n  manualWallets() {\n    var _a, _b;\n    const { mobileWallets, desktopWallets } = ConfigCtrl.state;\n    const recentWalletId = (_a = DataUtil.recentWallet()) == null ? void 0 : _a.id;\n    const platformWallets = CoreUtil.isMobile() ? mobileWallets : desktopWallets;\n    const wallets = platformWallets == null ? void 0 : platformWallets.filter((wallet) => recentWalletId !== wallet.id);\n    return (_b = CoreUtil.isMobile() ? wallets == null ? void 0 : wallets.map(({ id, name, links }) => ({ id, name, mobile: links, links })) : wallets == null ? void 0 : wallets.map(({ id, name, links }) => ({ id, name, desktop: links, links }))) != null ? _b : [];\n  },\n  recentWallet() {\n    return UiUtil.getRecentWallet();\n  },\n  recomendedWallets(skipRecent = false) {\n    var _a;\n    const recentWalletId = skipRecent ? void 0 : (_a = DataUtil.recentWallet()) == null ? void 0 : _a.id;\n    const { recomendedWallets } = ExplorerCtrl.state;\n    const wallets = recomendedWallets.filter((wallet) => recentWalletId !== wallet.id);\n    return wallets;\n  }\n};\nvar TemplateUtil = {\n  onConnecting(data2) {\n    UiUtil.goToConnectingView(data2);\n  },\n  manualWalletsTemplate() {\n    const wallets = DataUtil.manualWallets();\n    return wallets.map(\n      (wallet) => html`<wcm-wallet-button walletId=\"${wallet.id}\" name=\"${wallet.name}\" .onClick=\"${() => this.onConnecting(wallet)}\"></wcm-wallet-button>`\n    );\n  },\n  recomendedWalletsTemplate(skipRecent = false) {\n    const wallets = DataUtil.recomendedWallets(skipRecent);\n    return wallets.map(\n      (wallet) => html`<wcm-wallet-button name=\"${wallet.name}\" walletId=\"${wallet.id}\" imageId=\"${wallet.image_id}\" .onClick=\"${() => this.onConnecting(wallet)}\"></wcm-wallet-button>`\n    );\n  },\n  recentWalletTemplate() {\n    const wallet = DataUtil.recentWallet();\n    if (!wallet) {\n      return void 0;\n    }\n    return html`<wcm-wallet-button name=\"${wallet.name}\" walletId=\"${wallet.id}\" imageId=\"${ifDefined(wallet.image_id)}\" .recent=\"${true}\" .onClick=\"${() => this.onConnecting(wallet)}\"></wcm-wallet-button>`;\n  }\n};\nvar styles$c = css`.wcm-grid{display:grid;grid-template-columns:repeat(4,80px);justify-content:space-between}.wcm-desktop-title,.wcm-mobile-title{display:flex;align-items:center}.wcm-mobile-title{justify-content:space-between;margin-bottom:20px;margin-top:-10px}.wcm-desktop-title{margin-bottom:10px;padding:0 10px}.wcm-subtitle{display:flex;align-items:center}.wcm-subtitle:last-child path{fill:var(--wcm-color-fg-3)}.wcm-desktop-title svg,.wcm-mobile-title svg{margin-right:6px}.wcm-desktop-title path,.wcm-mobile-title path{fill:var(--wcm-accent-color)}`;\nvar __defProp$e = Object.defineProperty;\nvar __getOwnPropDesc$e = Object.getOwnPropertyDescriptor;\nvar __decorateClass$e = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$e(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$e(target, key, result);\n  return result;\n};\nvar WcmDesktopWalletSelection = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { explorerExcludedWalletIds, enableExplorer } = ConfigCtrl.state;\n    const isExplorerWallets = explorerExcludedWalletIds !== \"ALL\" && enableExplorer;\n    const manualTemplate = TemplateUtil.manualWalletsTemplate();\n    const recomendedTemplate = TemplateUtil.recomendedWalletsTemplate();\n    const recentTemplate = TemplateUtil.recentWalletTemplate();\n    let templates = [recentTemplate, ...manualTemplate, ...recomendedTemplate];\n    templates = templates.filter(Boolean);\n    const isViewAll = templates.length > 4 || isExplorerWallets;\n    let wallets = [];\n    if (isViewAll) {\n      wallets = templates.slice(0, 3);\n    } else {\n      wallets = templates;\n    }\n    const isWallets = Boolean(wallets.length);\n    return html`<wcm-modal-header .border=\"${true}\" title=\"Connect your wallet\" .onAction=\"${UiUtil.handleUriCopy}\" .actionIcon=\"${SvgUtil.COPY_ICON}\"></wcm-modal-header><wcm-modal-content><div class=\"wcm-mobile-title\"><div class=\"wcm-subtitle\">${SvgUtil.MOBILE_ICON}<wcm-text variant=\"small-regular\" color=\"accent\">Mobile</wcm-text></div><div class=\"wcm-subtitle\">${SvgUtil.SCAN_ICON}<wcm-text variant=\"small-regular\" color=\"secondary\">Scan with your wallet</wcm-text></div></div><wcm-walletconnect-qr></wcm-walletconnect-qr></wcm-modal-content>${isWallets ? html`<wcm-modal-footer><div class=\"wcm-desktop-title\">${SvgUtil.DESKTOP_ICON}<wcm-text variant=\"small-regular\" color=\"accent\">Desktop</wcm-text></div><div class=\"wcm-grid\">${wallets} ${isViewAll ? html`<wcm-view-all-wallets-button></wcm-view-all-wallets-button>` : null}</div></wcm-modal-footer>` : null}`;\n  }\n};\nWcmDesktopWalletSelection.styles = [ThemeUtil.globalCss, styles$c];\nWcmDesktopWalletSelection = __decorateClass$e([\n  customElement(\"wcm-desktop-wallet-selection\")\n], WcmDesktopWalletSelection);\nvar styles$b = css`div{background-color:var(--wcm-color-bg-2);padding:10px 20px 15px 20px;border-top:1px solid var(--wcm-color-bg-3);text-align:center}a{color:var(--wcm-accent-color);text-decoration:none;transition:opacity .2s ease-in-out;display:inline}a:active{opacity:.8}@media(hover:hover){a:hover{opacity:.8}}`;\nvar __defProp$d = Object.defineProperty;\nvar __getOwnPropDesc$d = Object.getOwnPropertyDescriptor;\nvar __decorateClass$d = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$d(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$d(target, key, result);\n  return result;\n};\nvar WcmLegalNotice = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { termsOfServiceUrl, privacyPolicyUrl } = ConfigCtrl.state;\n    const isLegal = termsOfServiceUrl != null ? termsOfServiceUrl : privacyPolicyUrl;\n    if (!isLegal) {\n      return null;\n    }\n    return html`<div><wcm-text variant=\"small-regular\" color=\"secondary\">By connecting your wallet to this app, you agree to the app's ${termsOfServiceUrl ? html`<a href=\"${termsOfServiceUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">Terms of Service</a>` : null} ${termsOfServiceUrl && privacyPolicyUrl ? \"and\" : null} ${privacyPolicyUrl ? html`<a href=\"${privacyPolicyUrl}\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Policy</a>` : null}</wcm-text></div>`;\n  }\n};\nWcmLegalNotice.styles = [ThemeUtil.globalCss, styles$b];\nWcmLegalNotice = __decorateClass$d([\n  customElement(\"wcm-legal-notice\")\n], WcmLegalNotice);\nvar styles$a = css`div{display:grid;grid-template-columns:repeat(4,80px);margin:0 -10px;justify-content:space-between;row-gap:10px}`;\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropDesc$c = Object.getOwnPropertyDescriptor;\nvar __decorateClass$c = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$c(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$c(target, key, result);\n  return result;\n};\nvar WcmMobileWalletSelection = class extends LitElement {\n  // -- private ------------------------------------------------------ //\n  onQrcode() {\n    RouterCtrl.push(\"Qrcode\");\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { explorerExcludedWalletIds, enableExplorer } = ConfigCtrl.state;\n    const isExplorerWallets = explorerExcludedWalletIds !== \"ALL\" && enableExplorer;\n    const manualTemplate = TemplateUtil.manualWalletsTemplate();\n    const recomendedTemplate = TemplateUtil.recomendedWalletsTemplate();\n    const recentTemplate = TemplateUtil.recentWalletTemplate();\n    let templates = [recentTemplate, ...manualTemplate, ...recomendedTemplate];\n    templates = templates.filter(Boolean);\n    const isViewAll = templates.length > 8 || isExplorerWallets;\n    let wallets = [];\n    if (isViewAll) {\n      wallets = templates.slice(0, 7);\n    } else {\n      wallets = templates;\n    }\n    const isWallets = Boolean(wallets.length);\n    return html`<wcm-modal-header title=\"Connect your wallet\" .onAction=\"${this.onQrcode}\" .actionIcon=\"${SvgUtil.QRCODE_ICON}\"></wcm-modal-header>${isWallets ? html`<wcm-modal-content><div>${wallets} ${isViewAll ? html`<wcm-view-all-wallets-button></wcm-view-all-wallets-button>` : null}</div></wcm-modal-content>` : null}`;\n  }\n};\nWcmMobileWalletSelection.styles = [ThemeUtil.globalCss, styles$a];\nWcmMobileWalletSelection = __decorateClass$c([\n  customElement(\"wcm-mobile-wallet-selection\")\n], WcmMobileWalletSelection);\nvar styles$9 = css`:host{all:initial}.wcm-overlay{top:0;bottom:0;left:0;right:0;position:fixed;z-index:var(--wcm-z-index);overflow:hidden;display:flex;justify-content:center;align-items:center;opacity:0;pointer-events:none;background-color:var(--wcm-overlay-background-color);backdrop-filter:var(--wcm-overlay-backdrop-filter)}@media(max-height:720px) and (orientation:landscape){.wcm-overlay{overflow:scroll;align-items:flex-start;padding:20px 0}}.wcm-active{pointer-events:auto}.wcm-container{position:relative;max-width:360px;width:100%;outline:0;border-radius:var(--wcm-background-border-radius) var(--wcm-background-border-radius) var(--wcm-container-border-radius) var(--wcm-container-border-radius);border:1px solid var(--wcm-color-overlay);overflow:hidden}.wcm-card{width:100%;position:relative;border-radius:var(--wcm-container-border-radius);overflow:hidden;box-shadow:0 6px 14px -6px rgba(10,16,31,.12),0 10px 32px -4px rgba(10,16,31,.1),0 0 0 1px var(--wcm-color-overlay);background-color:var(--wcm-color-bg-1);color:var(--wcm-color-fg-1)}@media(max-width:600px){.wcm-container{max-width:440px;border-radius:var(--wcm-background-border-radius) var(--wcm-background-border-radius) 0 0}.wcm-card{border-radius:var(--wcm-container-border-radius) var(--wcm-container-border-radius) 0 0}.wcm-overlay{align-items:flex-end}}@media(max-width:440px){.wcm-container{border:0}}`;\nvar __defProp$b = Object.defineProperty;\nvar __getOwnPropDesc$b = Object.getOwnPropertyDescriptor;\nvar __decorateClass$b = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$b(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$b(target, key, result);\n  return result;\n};\nvar WcmModal = class extends LitElement {\n  // -- lifecycle ---------------------------------------------------- //\n  constructor() {\n    super();\n    this.open = false;\n    this.active = false;\n    this.unsubscribeModal = void 0;\n    this.abortController = void 0;\n    this.unsubscribeModal = ModalCtrl.subscribe((modalState) => {\n      if (modalState.open) {\n        this.onOpenModalEvent();\n      } else {\n        this.onCloseModalEvent();\n      }\n    });\n  }\n  disconnectedCallback() {\n    var _a;\n    (_a = this.unsubscribeModal) == null ? void 0 : _a.call(this);\n  }\n  get overlayEl() {\n    return UiUtil.getShadowRootElement(this, \".wcm-overlay\");\n  }\n  get containerEl() {\n    return UiUtil.getShadowRootElement(this, \".wcm-container\");\n  }\n  toggleBodyScroll(enabled) {\n    const body = document.querySelector(\"body\");\n    if (body) {\n      if (enabled) {\n        const wcmStyles = document.getElementById(\"wcm-styles\");\n        wcmStyles == null ? void 0 : wcmStyles.remove();\n      } else {\n        document.head.insertAdjacentHTML(\n          \"beforeend\",\n          `<style id=\"wcm-styles\">html,body{touch-action:none;overflow:hidden;overscroll-behavior:contain;}</style>`\n        );\n      }\n    }\n  }\n  onCloseModal(event) {\n    if (event.target === event.currentTarget) {\n      ModalCtrl.close();\n    }\n  }\n  onOpenModalEvent() {\n    this.toggleBodyScroll(false);\n    this.addKeyboardEvents();\n    this.open = true;\n    setTimeout(async () => {\n      const animation = UiUtil.isMobileAnimation() ? { y: [\"50vh\", \"0vh\"] } : { scale: [0.98, 1] };\n      const delay = 0.1;\n      const duration = 0.2;\n      await Promise.all([\n        animate2(this.overlayEl, { opacity: [0, 1] }, { delay, duration }).finished,\n        animate2(this.containerEl, animation, { delay, duration }).finished\n      ]);\n      this.active = true;\n    }, 0);\n  }\n  async onCloseModalEvent() {\n    this.toggleBodyScroll(true);\n    this.removeKeyboardEvents();\n    const animation = UiUtil.isMobileAnimation() ? { y: [\"0vh\", \"50vh\"] } : { scale: [1, 0.98] };\n    const duration = 0.2;\n    await Promise.all([\n      animate2(this.overlayEl, { opacity: [1, 0] }, { duration }).finished,\n      animate2(this.containerEl, animation, { duration }).finished\n    ]);\n    this.containerEl.removeAttribute(\"style\");\n    this.active = false;\n    this.open = false;\n  }\n  addKeyboardEvents() {\n    this.abortController = new AbortController();\n    window.addEventListener(\n      \"keydown\",\n      (event) => {\n        var _a;\n        if (event.key === \"Escape\") {\n          ModalCtrl.close();\n        } else if (event.key === \"Tab\") {\n          if (!((_a = event.target) == null ? void 0 : _a.tagName.includes(\"wcm-\"))) {\n            this.containerEl.focus();\n          }\n        }\n      },\n      this.abortController\n    );\n    this.containerEl.focus();\n  }\n  removeKeyboardEvents() {\n    var _a;\n    (_a = this.abortController) == null ? void 0 : _a.abort();\n    this.abortController = void 0;\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const classes = {\n      \"wcm-overlay\": true,\n      \"wcm-active\": this.active\n    };\n    return html`<wcm-explorer-context></wcm-explorer-context><wcm-theme-context></wcm-theme-context><div id=\"wcm-modal\" class=\"${classMap(classes)}\" @click=\"${this.onCloseModal}\" role=\"alertdialog\" aria-modal=\"true\"><div class=\"wcm-container\" tabindex=\"0\">${this.open ? html`<wcm-modal-backcard></wcm-modal-backcard><div class=\"wcm-card\"><wcm-modal-router></wcm-modal-router><wcm-modal-toast></wcm-modal-toast></div>` : null}</div></div>`;\n  }\n};\nWcmModal.styles = [ThemeUtil.globalCss, styles$9];\n__decorateClass$b([\n  state()\n], WcmModal.prototype, \"open\", 2);\n__decorateClass$b([\n  state()\n], WcmModal.prototype, \"active\", 2);\nWcmModal = __decorateClass$b([\n  customElement(\"wcm-modal\")\n], WcmModal);\nvar styles$8 = css`div{display:flex;margin-top:15px}slot{display:inline-block;margin:0 5px}wcm-button{margin:0 5px}`;\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropDesc$a = Object.getOwnPropertyDescriptor;\nvar __decorateClass$a = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$a(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$a(target, key, result);\n  return result;\n};\nvar WcmPlatformSelection = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.isMobile = false;\n    this.isDesktop = false;\n    this.isWeb = false;\n    this.isRetry = false;\n  }\n  // -- private ------------------------------------------------------ //\n  onMobile() {\n    const isMobile = CoreUtil.isMobile();\n    if (isMobile) {\n      RouterCtrl.replace(\"MobileConnecting\");\n    } else {\n      RouterCtrl.replace(\"MobileQrcodeConnecting\");\n    }\n  }\n  onDesktop() {\n    RouterCtrl.replace(\"DesktopConnecting\");\n  }\n  onWeb() {\n    RouterCtrl.replace(\"WebConnecting\");\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<div>${this.isRetry ? html`<slot></slot>` : null} ${this.isMobile ? html`<wcm-button .onClick=\"${this.onMobile}\" .iconLeft=\"${SvgUtil.MOBILE_ICON}\" variant=\"outline\">Mobile</wcm-button>` : null} ${this.isDesktop ? html`<wcm-button .onClick=\"${this.onDesktop}\" .iconLeft=\"${SvgUtil.DESKTOP_ICON}\" variant=\"outline\">Desktop</wcm-button>` : null} ${this.isWeb ? html`<wcm-button .onClick=\"${this.onWeb}\" .iconLeft=\"${SvgUtil.GLOBE_ICON}\" variant=\"outline\">Web</wcm-button>` : null}</div>`;\n  }\n};\nWcmPlatformSelection.styles = [ThemeUtil.globalCss, styles$8];\n__decorateClass$a([\n  property({ type: Boolean })\n], WcmPlatformSelection.prototype, \"isMobile\", 2);\n__decorateClass$a([\n  property({ type: Boolean })\n], WcmPlatformSelection.prototype, \"isDesktop\", 2);\n__decorateClass$a([\n  property({ type: Boolean })\n], WcmPlatformSelection.prototype, \"isWeb\", 2);\n__decorateClass$a([\n  property({ type: Boolean })\n], WcmPlatformSelection.prototype, \"isRetry\", 2);\nWcmPlatformSelection = __decorateClass$a([\n  customElement(\"wcm-platform-selection\")\n], WcmPlatformSelection);\nvar styles$7 = css`button{display:flex;flex-direction:column;padding:5px 10px;border-radius:var(--wcm-button-hover-highlight-border-radius);height:100%;justify-content:flex-start}.wcm-icons{width:60px;height:60px;display:flex;flex-wrap:wrap;padding:7px;border-radius:var(--wcm-wallet-icon-border-radius);justify-content:space-between;align-items:center;margin-bottom:5px;background-color:var(--wcm-color-bg-2);box-shadow:inset 0 0 0 1px var(--wcm-color-overlay)}button:active{background-color:var(--wcm-color-overlay)}@media(hover:hover){button:hover{background-color:var(--wcm-color-overlay)}}.wcm-icons img{width:21px;height:21px;object-fit:cover;object-position:center;border-radius:calc(var(--wcm-wallet-icon-border-radius)/ 2);border:1px solid var(--wcm-color-overlay)}.wcm-icons svg{width:21px;height:21px}.wcm-icons img:nth-child(1),.wcm-icons img:nth-child(2),.wcm-icons svg:nth-child(1),.wcm-icons svg:nth-child(2){margin-bottom:4px}wcm-text{width:100%;text-align:center}#wallet-placeholder-fill{fill:var(--wcm-color-bg-3)}#wallet-placeholder-dash{stroke:var(--wcm-color-overlay)}`;\nvar __defProp$9 = Object.defineProperty;\nvar __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$9 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$9(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$9(target, key, result);\n  return result;\n};\nvar WcmViewAllWalletsButton = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  onClick() {\n    RouterCtrl.push(\"WalletExplorer\");\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { recomendedWallets } = ExplorerCtrl.state;\n    const manualWallets = DataUtil.manualWallets();\n    const reversedWallets = [...recomendedWallets, ...manualWallets].reverse().slice(0, 4);\n    return html`<button @click=\"${this.onClick}\"><div class=\"wcm-icons\">${reversedWallets.map((wallet) => {\n      const explorerImg = UiUtil.getWalletIcon(wallet);\n      if (explorerImg) {\n        return html`<img crossorigin=\"anonymous\" src=\"${explorerImg}\">`;\n      }\n      const src = UiUtil.getWalletIcon({ id: wallet.id });\n      return src ? html`<img crossorigin=\"anonymous\" src=\"${src}\">` : SvgUtil.WALLET_PLACEHOLDER;\n    })} ${[...Array(4 - reversedWallets.length)].map(() => SvgUtil.WALLET_PLACEHOLDER)}</div><wcm-text variant=\"xsmall-regular\">View All</wcm-text></button>`;\n  }\n};\nWcmViewAllWalletsButton.styles = [ThemeUtil.globalCss, styles$7];\nWcmViewAllWalletsButton = __decorateClass$9([\n  customElement(\"wcm-view-all-wallets-button\")\n], WcmViewAllWalletsButton);\nvar styles$6 = css`.wcm-qr-container{width:100%;display:flex;justify-content:center;align-items:center;aspect-ratio:1/1}`;\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$8 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$8(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$8(target, key, result);\n  return result;\n};\nvar WcmWalletConnectQr = class extends LitElement {\n  // -- lifecycle ---------------------------------------------------- //\n  constructor() {\n    super();\n    this.walletId = \"\";\n    this.imageId = \"\";\n    this.uri = \"\";\n    setTimeout(() => {\n      const { walletConnectUri } = OptionsCtrl.state;\n      this.uri = walletConnectUri;\n    }, 0);\n  }\n  // -- private ------------------------------------------------------ //\n  get overlayEl() {\n    return UiUtil.getShadowRootElement(this, \".wcm-qr-container\");\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<div class=\"wcm-qr-container\">${this.uri ? html`<wcm-qrcode size=\"${this.overlayEl.offsetWidth}\" uri=\"${this.uri}\" walletId=\"${ifDefined(this.walletId)}\" imageId=\"${ifDefined(this.imageId)}\"></wcm-qrcode>` : html`<wcm-spinner></wcm-spinner>`}</div>`;\n  }\n};\nWcmWalletConnectQr.styles = [ThemeUtil.globalCss, styles$6];\n__decorateClass$8([\n  property()\n], WcmWalletConnectQr.prototype, \"walletId\", 2);\n__decorateClass$8([\n  property()\n], WcmWalletConnectQr.prototype, \"imageId\", 2);\n__decorateClass$8([\n  state()\n], WcmWalletConnectQr.prototype, \"uri\", 2);\nWcmWalletConnectQr = __decorateClass$8([\n  customElement(\"wcm-walletconnect-qr\")\n], WcmWalletConnectQr);\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$7 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$7(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$7(target, key, result);\n  return result;\n};\nvar WcmConnectWalletView = class extends LitElement {\n  // -- private ------------------------------------------------------ //\n  viewTemplate() {\n    if (CoreUtil.isAndroid() && !CoreUtil.isTelegram()) {\n      return html`<wcm-android-wallet-selection></wcm-android-wallet-selection>`;\n    }\n    if (CoreUtil.isMobile()) {\n      return html`<wcm-mobile-wallet-selection></wcm-mobile-wallet-selection>`;\n    }\n    return html`<wcm-desktop-wallet-selection></wcm-desktop-wallet-selection>`;\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`${this.viewTemplate()}<wcm-legal-notice></wcm-legal-notice>`;\n  }\n};\nWcmConnectWalletView.styles = [ThemeUtil.globalCss];\nWcmConnectWalletView = __decorateClass$7([\n  customElement(\"wcm-connect-wallet-view\")\n], WcmConnectWalletView);\nvar styles$5 = css`wcm-info-footer{flex-direction:column;align-items:center;display:flex;width:100%;padding:5px 0}wcm-text{text-align:center}`;\nvar __defProp$6 = Object.defineProperty;\nvar __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$6 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$6(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$6(target, key, result);\n  return result;\n};\nvar WcmDesktopConnectingView = class extends LitElement {\n  // -- lifecycle ---------------------------------------------------- //\n  constructor() {\n    super();\n    this.isError = false;\n    this.openDesktopApp();\n  }\n  // -- private ------------------------------------------------------ //\n  onFormatAndRedirect(uri) {\n    const { desktop, name } = CoreUtil.getWalletRouterData();\n    const nativeUrl = desktop == null ? void 0 : desktop.native;\n    const universalUrl = desktop == null ? void 0 : desktop.universal;\n    if (nativeUrl) {\n      const href = CoreUtil.formatNativeUrl(nativeUrl, uri, name);\n      CoreUtil.openHref(href, \"_self\");\n    } else if (universalUrl) {\n      const href = CoreUtil.formatUniversalUrl(universalUrl, uri, name);\n      CoreUtil.openHref(href, \"_blank\");\n    }\n  }\n  openDesktopApp() {\n    const { walletConnectUri } = OptionsCtrl.state;\n    const routerData = CoreUtil.getWalletRouterData();\n    UiUtil.setRecentWallet(routerData);\n    if (walletConnectUri) {\n      this.onFormatAndRedirect(walletConnectUri);\n    }\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { name, id, image_id } = CoreUtil.getWalletRouterData();\n    const { isMobile, isWeb } = UiUtil.getCachedRouterWalletPlatforms();\n    return html`<wcm-modal-header title=\"${name}\" .onAction=\"${UiUtil.handleUriCopy}\" .actionIcon=\"${SvgUtil.COPY_ICON}\"></wcm-modal-header><wcm-modal-content><wcm-connector-waiting walletId=\"${id}\" imageId=\"${ifDefined(image_id)}\" label=\"${`Continue in ${name}...`}\" .isError=\"${this.isError}\"></wcm-connector-waiting></wcm-modal-content><wcm-info-footer><wcm-text color=\"secondary\" variant=\"small-thin\">${`Connection can continue loading if ${name} is not installed on your device`}</wcm-text><wcm-platform-selection .isMobile=\"${isMobile}\" .isWeb=\"${isWeb}\" .isRetry=\"${true}\"><wcm-button .onClick=\"${this.openDesktopApp.bind(this)}\" .iconRight=\"${SvgUtil.RETRY_ICON}\">Retry</wcm-button></wcm-platform-selection></wcm-info-footer>`;\n  }\n};\nWcmDesktopConnectingView.styles = [ThemeUtil.globalCss, styles$5];\n__decorateClass$6([\n  state()\n], WcmDesktopConnectingView.prototype, \"isError\", 2);\nWcmDesktopConnectingView = __decorateClass$6([\n  customElement(\"wcm-desktop-connecting-view\")\n], WcmDesktopConnectingView);\nvar styles$4 = css`wcm-info-footer{flex-direction:column;align-items:center;display:flex;width:100%;padding:5px 0}wcm-text{text-align:center}wcm-button{margin-top:15px}`;\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$5 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$5(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$5(target, key, result);\n  return result;\n};\nvar WcmInstallWalletView = class extends LitElement {\n  // -- private ------------------------------------------------------ //\n  onInstall(uri) {\n    if (uri) {\n      CoreUtil.openHref(uri, \"_blank\");\n    }\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { name, id, image_id, homepage } = CoreUtil.getWalletRouterData();\n    return html`<wcm-modal-header title=\"${name}\"></wcm-modal-header><wcm-modal-content><wcm-connector-waiting walletId=\"${id}\" imageId=\"${ifDefined(image_id)}\" label=\"Not Detected\" .isStale=\"${true}\"></wcm-connector-waiting></wcm-modal-content><wcm-info-footer><wcm-text color=\"secondary\" variant=\"small-thin\">${`Download ${name} to continue. If multiple browser extensions are installed, disable non ${name} ones and try again`}</wcm-text><wcm-button .onClick=\"${() => this.onInstall(homepage)}\" .iconLeft=\"${SvgUtil.ARROW_DOWN_ICON}\">Download</wcm-button></wcm-info-footer>`;\n  }\n};\nWcmInstallWalletView.styles = [ThemeUtil.globalCss, styles$4];\nWcmInstallWalletView = __decorateClass$5([\n  customElement(\"wcm-install-wallet-view\")\n], WcmInstallWalletView);\nvar styles$3 = css`wcm-wallet-image{border-radius:var(--wcm-wallet-icon-large-border-radius);width:96px;height:96px;margin-bottom:20px}wcm-info-footer{display:flex;width:100%}.wcm-app-store{justify-content:space-between}.wcm-app-store wcm-wallet-image{margin-right:10px;margin-bottom:0;width:28px;height:28px;border-radius:var(--wcm-wallet-icon-small-border-radius)}.wcm-app-store div{display:flex;align-items:center}.wcm-app-store wcm-button{margin-right:-10px}.wcm-note{flex-direction:column;align-items:center;padding:5px 0}.wcm-note wcm-text{text-align:center}wcm-platform-selection{margin-top:-15px}.wcm-note wcm-text{margin-top:15px}.wcm-note wcm-text span{color:var(--wcm-accent-color)}`;\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$4 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$4(target, key, result);\n  return result;\n};\nvar WcmMobileConnectingView = class extends LitElement {\n  // -- lifecycle ---------------------------------------------------- //\n  constructor() {\n    super();\n    this.isError = false;\n    this.openMobileApp();\n  }\n  // -- private ------------------------------------------------------ //\n  onFormatAndRedirect(uri, forceUniversalUrl = false) {\n    const { mobile, name } = CoreUtil.getWalletRouterData();\n    const nativeUrl = mobile == null ? void 0 : mobile.native;\n    const universalUrl = mobile == null ? void 0 : mobile.universal;\n    const target = CoreUtil.isTelegram() ? \"_blank\" : \"_self\";\n    uri = CoreUtil.isTelegram() && CoreUtil.isAndroid() ? encodeURIComponent(uri) : uri;\n    if (nativeUrl && !forceUniversalUrl) {\n      const href = CoreUtil.formatNativeUrl(nativeUrl, uri, name);\n      CoreUtil.openHref(href, target);\n    } else if (universalUrl) {\n      const href = CoreUtil.formatUniversalUrl(universalUrl, uri, name);\n      CoreUtil.openHref(href, target);\n    }\n  }\n  openMobileApp(forceUniversalUrl = false) {\n    const { walletConnectUri } = OptionsCtrl.state;\n    const routerData = CoreUtil.getWalletRouterData();\n    if (walletConnectUri) {\n      this.onFormatAndRedirect(walletConnectUri, forceUniversalUrl);\n    }\n    UiUtil.setRecentWallet(routerData);\n  }\n  onGoToAppStore(downloadUrl) {\n    if (downloadUrl) {\n      CoreUtil.openHref(downloadUrl, \"_blank\");\n    }\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { name, id, image_id, app, mobile } = CoreUtil.getWalletRouterData();\n    const { isWeb } = UiUtil.getCachedRouterWalletPlatforms();\n    const downloadUrl = app == null ? void 0 : app.ios;\n    const universalUrl = mobile == null ? void 0 : mobile.universal;\n    return html`<wcm-modal-header title=\"${name}\"></wcm-modal-header><wcm-modal-content><wcm-connector-waiting walletId=\"${id}\" imageId=\"${ifDefined(image_id)}\" label=\"Tap 'Open' to continue…\" .isError=\"${this.isError}\"></wcm-connector-waiting></wcm-modal-content><wcm-info-footer class=\"wcm-note\"><wcm-platform-selection .isWeb=\"${isWeb}\" .isRetry=\"${true}\"><wcm-button .onClick=\"${() => this.openMobileApp(false)}\" .iconRight=\"${SvgUtil.RETRY_ICON}\">Retry</wcm-button></wcm-platform-selection>${universalUrl ? html`<wcm-text color=\"secondary\" variant=\"small-thin\">Still doesn't work? <span tabindex=\"0\" @click=\"${() => this.openMobileApp(true)}\">Try this alternate link</span></wcm-text>` : null}</wcm-info-footer><wcm-info-footer class=\"wcm-app-store\"><div><wcm-wallet-image walletId=\"${id}\" imageId=\"${ifDefined(image_id)}\"></wcm-wallet-image><wcm-text>${`Get ${name}`}</wcm-text></div><wcm-button .iconRight=\"${SvgUtil.ARROW_RIGHT_ICON}\" .onClick=\"${() => this.onGoToAppStore(downloadUrl)}\" variant=\"ghost\">App Store</wcm-button></wcm-info-footer>`;\n  }\n};\nWcmMobileConnectingView.styles = [ThemeUtil.globalCss, styles$3];\n__decorateClass$4([\n  state()\n], WcmMobileConnectingView.prototype, \"isError\", 2);\nWcmMobileConnectingView = __decorateClass$4([\n  customElement(\"wcm-mobile-connecting-view\")\n], WcmMobileConnectingView);\nvar styles$2 = css`wcm-info-footer{flex-direction:column;align-items:center;display:flex;width:100%;padding:5px 0}wcm-text{text-align:center}`;\nvar __defProp$3 = Object.defineProperty;\nvar __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$3 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$3(target, key, result);\n  return result;\n};\nvar WcmMobileQrConnectingView = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { name, id, image_id } = CoreUtil.getWalletRouterData();\n    const { isDesktop, isWeb } = UiUtil.getCachedRouterWalletPlatforms();\n    return html`<wcm-modal-header title=\"${name}\" .onAction=\"${UiUtil.handleUriCopy}\" .actionIcon=\"${SvgUtil.COPY_ICON}\"></wcm-modal-header><wcm-modal-content><wcm-walletconnect-qr walletId=\"${id}\" imageId=\"${ifDefined(image_id)}\"></wcm-walletconnect-qr></wcm-modal-content><wcm-info-footer><wcm-text color=\"secondary\" variant=\"small-thin\">${`Scan this QR Code with your phone's camera or inside ${name} app`}</wcm-text><wcm-platform-selection .isDesktop=\"${isDesktop}\" .isWeb=\"${isWeb}\"></wcm-platform-selection></wcm-info-footer>`;\n  }\n};\nWcmMobileQrConnectingView.styles = [ThemeUtil.globalCss, styles$2];\nWcmMobileQrConnectingView = __decorateClass$3([\n  customElement(\"wcm-mobile-qr-connecting-view\")\n], WcmMobileQrConnectingView);\nvar __defProp$2 = Object.defineProperty;\nvar __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$2 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$2(target, key, result);\n  return result;\n};\nvar WcmQrcodeView = class extends LitElement {\n  // -- render ------------------------------------------------------- //\n  render() {\n    return html`<wcm-modal-header title=\"Scan the code\" .onAction=\"${UiUtil.handleUriCopy}\" .actionIcon=\"${SvgUtil.COPY_ICON}\"></wcm-modal-header><wcm-modal-content><wcm-walletconnect-qr></wcm-walletconnect-qr></wcm-modal-content>`;\n  }\n};\nWcmQrcodeView.styles = [ThemeUtil.globalCss];\nWcmQrcodeView = __decorateClass$2([\n  customElement(\"wcm-qrcode-view\")\n], WcmQrcodeView);\nvar styles$1 = css`wcm-modal-content{height:clamp(200px,60vh,600px);display:block;overflow:scroll;scrollbar-width:none;position:relative;margin-top:1px}.wcm-grid{display:grid;grid-template-columns:repeat(4,80px);justify-content:space-between;margin:-15px -10px;padding-top:20px}wcm-modal-content::after,wcm-modal-content::before{content:'';position:fixed;pointer-events:none;z-index:1;width:100%;height:20px;opacity:1}wcm-modal-content::before{box-shadow:0 -1px 0 0 var(--wcm-color-bg-1);background:linear-gradient(var(--wcm-color-bg-1),rgba(255,255,255,0))}wcm-modal-content::after{box-shadow:0 1px 0 0 var(--wcm-color-bg-1);background:linear-gradient(rgba(255,255,255,0),var(--wcm-color-bg-1));top:calc(100% - 20px)}wcm-modal-content::-webkit-scrollbar{display:none}.wcm-placeholder-block{display:flex;justify-content:center;align-items:center;height:100px;overflow:hidden}.wcm-empty,.wcm-loading{display:flex}.wcm-loading .wcm-placeholder-block{height:100%}.wcm-end-reached .wcm-placeholder-block{height:0;opacity:0}.wcm-empty .wcm-placeholder-block{opacity:1;height:100%}wcm-wallet-button{margin:calc((100% - 60px)/ 3) 0}`;\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$1 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp$1(target, key, result);\n  return result;\n};\nvar PAGE_ENTRIES = 40;\nvar WcmWalletExplorerView = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.loading = !ExplorerCtrl.state.wallets.listings.length;\n    this.firstFetch = !ExplorerCtrl.state.wallets.listings.length;\n    this.search = \"\";\n    this.endReached = false;\n    this.intersectionObserver = void 0;\n    this.searchDebounce = UiUtil.debounce((value) => {\n      if (value.length >= 1) {\n        this.firstFetch = true;\n        this.endReached = false;\n        this.search = value;\n        ExplorerCtrl.resetSearch();\n        this.fetchWallets();\n      } else if (this.search) {\n        this.search = \"\";\n        this.endReached = this.isLastPage();\n        ExplorerCtrl.resetSearch();\n      }\n    });\n  }\n  // -- lifecycle ---------------------------------------------------- //\n  firstUpdated() {\n    this.createPaginationObserver();\n  }\n  disconnectedCallback() {\n    var _a;\n    (_a = this.intersectionObserver) == null ? void 0 : _a.disconnect();\n  }\n  // -- private ------------------------------------------------------ //\n  get placeholderEl() {\n    return UiUtil.getShadowRootElement(this, \".wcm-placeholder-block\");\n  }\n  createPaginationObserver() {\n    this.intersectionObserver = new IntersectionObserver(([element]) => {\n      if (element.isIntersecting && !(this.search && this.firstFetch)) {\n        this.fetchWallets();\n      }\n    });\n    this.intersectionObserver.observe(this.placeholderEl);\n  }\n  isLastPage() {\n    const { wallets, search } = ExplorerCtrl.state;\n    const { listings, total } = this.search ? search : wallets;\n    return total <= PAGE_ENTRIES || listings.length >= total;\n  }\n  async fetchWallets() {\n    var _a;\n    const { wallets, search } = ExplorerCtrl.state;\n    const { listings, total, page } = this.search ? search : wallets;\n    if (!this.endReached && (this.firstFetch || total > PAGE_ENTRIES && listings.length < total)) {\n      try {\n        this.loading = true;\n        const chains = (_a = OptionsCtrl.state.chains) == null ? void 0 : _a.join(\",\");\n        const { listings: newListings } = await ExplorerCtrl.getWallets({\n          page: this.firstFetch ? 1 : page + 1,\n          entries: PAGE_ENTRIES,\n          search: this.search,\n          version: 2,\n          chains\n        });\n        const explorerImages = newListings.map((wallet) => UiUtil.getWalletIcon(wallet));\n        await Promise.all([\n          ...explorerImages.map(async (url) => UiUtil.preloadImage(url)),\n          CoreUtil.wait(300)\n        ]);\n        this.endReached = this.isLastPage();\n      } catch (err) {\n        console.error(err);\n        ToastCtrl.openToast(UiUtil.getErrorMessage(err), \"error\");\n      } finally {\n        this.loading = false;\n        this.firstFetch = false;\n      }\n    }\n  }\n  onConnect(listing) {\n    if (CoreUtil.isAndroid()) {\n      UiUtil.handleMobileLinking(listing);\n    } else {\n      UiUtil.goToConnectingView(listing);\n    }\n  }\n  onSearchChange(event) {\n    const { value } = event.target;\n    this.searchDebounce(value);\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { wallets, search } = ExplorerCtrl.state;\n    const { listings } = this.search ? search : wallets;\n    const isLoading = this.loading && !listings.length;\n    const isSearch = this.search.length >= 3;\n    let manualWallets = TemplateUtil.manualWalletsTemplate();\n    let recomendedWallets = TemplateUtil.recomendedWalletsTemplate(true);\n    if (isSearch) {\n      manualWallets = manualWallets.filter(\n        ({ values }) => UiUtil.caseSafeIncludes(values[0], this.search)\n      );\n      recomendedWallets = recomendedWallets.filter(\n        ({ values }) => UiUtil.caseSafeIncludes(values[0], this.search)\n      );\n    }\n    const isEmpty = !this.loading && !listings.length && !recomendedWallets.length;\n    const classes = {\n      \"wcm-loading\": isLoading,\n      \"wcm-end-reached\": this.endReached || !this.loading,\n      \"wcm-empty\": isEmpty\n    };\n    return html`<wcm-modal-header><wcm-search-input .onChange=\"${this.onSearchChange.bind(this)}\"></wcm-search-input></wcm-modal-header><wcm-modal-content class=\"${classMap(classes)}\"><div class=\"wcm-grid\">${isLoading ? null : manualWallets} ${isLoading ? null : recomendedWallets} ${isLoading ? null : listings.map(\n      (listing) => html`${listing ? html`<wcm-wallet-button imageId=\"${listing.image_id}\" name=\"${listing.name}\" walletId=\"${listing.id}\" .onClick=\"${() => this.onConnect(listing)}\"></wcm-wallet-button>` : null}`\n    )}</div><div class=\"wcm-placeholder-block\">${isEmpty ? html`<wcm-text variant=\"big-bold\" color=\"secondary\">No results found</wcm-text>` : null} ${!isEmpty && this.loading ? html`<wcm-spinner></wcm-spinner>` : null}</div></wcm-modal-content>`;\n  }\n};\nWcmWalletExplorerView.styles = [ThemeUtil.globalCss, styles$1];\n__decorateClass$1([\n  state()\n], WcmWalletExplorerView.prototype, \"loading\", 2);\n__decorateClass$1([\n  state()\n], WcmWalletExplorerView.prototype, \"firstFetch\", 2);\n__decorateClass$1([\n  state()\n], WcmWalletExplorerView.prototype, \"search\", 2);\n__decorateClass$1([\n  state()\n], WcmWalletExplorerView.prototype, \"endReached\", 2);\nWcmWalletExplorerView = __decorateClass$1([\n  customElement(\"wcm-wallet-explorer-view\")\n], WcmWalletExplorerView);\nvar styles = css`wcm-info-footer{flex-direction:column;align-items:center;display:flex;width:100%;padding:5px 0}wcm-text{text-align:center}`;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result)\n    __defProp(target, key, result);\n  return result;\n};\nvar WcmWebConnectingView = class extends LitElement {\n  // -- lifecycle ---------------------------------------------------- //\n  constructor() {\n    super();\n    this.isError = false;\n    this.openWebWallet();\n  }\n  // -- private ------------------------------------------------------ //\n  onFormatAndRedirect(uri) {\n    const { desktop, name } = CoreUtil.getWalletRouterData();\n    const universalUrl = desktop == null ? void 0 : desktop.universal;\n    if (universalUrl) {\n      const href = CoreUtil.formatUniversalUrl(universalUrl, uri, name);\n      CoreUtil.openHref(href, \"_blank\");\n    }\n  }\n  openWebWallet() {\n    const { walletConnectUri } = OptionsCtrl.state;\n    const routerData = CoreUtil.getWalletRouterData();\n    UiUtil.setRecentWallet(routerData);\n    if (walletConnectUri) {\n      this.onFormatAndRedirect(walletConnectUri);\n    }\n  }\n  // -- render ------------------------------------------------------- //\n  render() {\n    const { name, id, image_id } = CoreUtil.getWalletRouterData();\n    const { isMobile, isDesktop } = UiUtil.getCachedRouterWalletPlatforms();\n    const isMobilePlatform = CoreUtil.isMobile();\n    return html`<wcm-modal-header title=\"${name}\" .onAction=\"${UiUtil.handleUriCopy}\" .actionIcon=\"${SvgUtil.COPY_ICON}\"></wcm-modal-header><wcm-modal-content><wcm-connector-waiting walletId=\"${id}\" imageId=\"${ifDefined(image_id)}\" label=\"${`Continue in ${name}...`}\" .isError=\"${this.isError}\"></wcm-connector-waiting></wcm-modal-content><wcm-info-footer><wcm-text color=\"secondary\" variant=\"small-thin\">${`${name} web app has opened in a new tab. Go there, accept the connection, and come back`}</wcm-text><wcm-platform-selection .isMobile=\"${isMobile}\" .isDesktop=\"${isMobilePlatform ? false : isDesktop}\" .isRetry=\"${true}\"><wcm-button .onClick=\"${this.openWebWallet.bind(this)}\" .iconRight=\"${SvgUtil.RETRY_ICON}\">Retry</wcm-button></wcm-platform-selection></wcm-info-footer>`;\n  }\n};\nWcmWebConnectingView.styles = [ThemeUtil.globalCss, styles];\n__decorateClass([\n  state()\n], WcmWebConnectingView.prototype, \"isError\", 2);\nWcmWebConnectingView = __decorateClass([\n  customElement(\"wcm-web-connecting-view\")\n], WcmWebConnectingView);\nexport {\n  WcmModal,\n  WcmQrCode\n};\n/*! Bundled license information:\n\nlit-html/development/directive.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/development/directives/class-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/development/directives/if-defined.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n//# sourceMappingURL=dist-7FXCYDP5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/dist-JQ3EDHJY.js",
    "content": "import {\n  ConfigCtrl,\n  ModalCtrl,\n  OptionsCtrl,\n  ThemeCtrl\n} from \"./chunk-35YKZJSE.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/@walletconnect/modal/dist/index.js\nvar WalletConnectModal = class {\n  constructor(config) {\n    this.openModal = ModalCtrl.open;\n    this.closeModal = ModalCtrl.close;\n    this.subscribeModal = ModalCtrl.subscribe;\n    this.setTheme = ThemeCtrl.setThemeConfig;\n    ThemeCtrl.setThemeConfig(config);\n    ConfigCtrl.setConfig(config);\n    this.initUi();\n  }\n  async initUi() {\n    if (typeof window !== \"undefined\") {\n      await import(\"./dist-7FXCYDP5.js\");\n      const modal = document.createElement(\"wcm-modal\");\n      document.body.insertAdjacentElement(\"beforeend\", modal);\n      OptionsCtrl.setIsUiLoaded(true);\n    }\n  }\n};\nexport {\n  WalletConnectModal\n};\n//# sourceMappingURL=dist-JQ3EDHJY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/dist-UZFCJX5W.js",
    "content": "import {\n  sha256\n} from \"./chunk-O6UZ65WN.js\";\nimport {\n  bytesToHex\n} from \"./chunk-ME5GAE4N.js\";\nimport {\n  __commonJS,\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/@noble/hashes/_assert.js\nvar require_assert = __commonJS({\n  \"node_modules/@noble/hashes/_assert.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.isBytes = isBytes;\n    exports.number = number;\n    exports.bool = bool;\n    exports.bytes = bytes;\n    exports.hash = hash;\n    exports.exists = exists;\n    exports.output = output;\n    function number(n2) {\n      if (!Number.isSafeInteger(n2) || n2 < 0)\n        throw new Error(`positive integer expected, not ${n2}`);\n    }\n    function bool(b2) {\n      if (typeof b2 !== \"boolean\")\n        throw new Error(`boolean expected, not ${b2}`);\n    }\n    function isBytes(a3) {\n      return a3 instanceof Uint8Array || a3 != null && typeof a3 === \"object\" && a3.constructor.name === \"Uint8Array\";\n    }\n    function bytes(b2, ...lengths) {\n      if (!isBytes(b2))\n        throw new Error(\"Uint8Array expected\");\n      if (lengths.length > 0 && !lengths.includes(b2.length))\n        throw new Error(`Uint8Array expected of length ${lengths}, not of length=${b2.length}`);\n    }\n    function hash(h3) {\n      if (typeof h3 !== \"function\" || typeof h3.create !== \"function\")\n        throw new Error(\"Hash should be wrapped by utils.wrapConstructor\");\n      number(h3.outputLen);\n      number(h3.blockLen);\n    }\n    function exists(instance, checkFinished = true) {\n      if (instance.destroyed)\n        throw new Error(\"Hash instance has been destroyed\");\n      if (checkFinished && instance.finished)\n        throw new Error(\"Hash#digest() has already been called\");\n    }\n    function output(out, instance) {\n      bytes(out);\n      const min = instance.outputLen;\n      if (out.length < min) {\n        throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n      }\n    }\n    var assert = { number, bool, bytes, hash, exists, output };\n    exports.default = assert;\n  }\n});\n\n// node_modules/@noble/hashes/_u64.js\nvar require_u64 = __commonJS({\n  \"node_modules/@noble/hashes/_u64.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.add5L = exports.add5H = exports.add4H = exports.add4L = exports.add3H = exports.add3L = exports.rotlBL = exports.rotlBH = exports.rotlSL = exports.rotlSH = exports.rotr32L = exports.rotr32H = exports.rotrBL = exports.rotrBH = exports.rotrSL = exports.rotrSH = exports.shrSL = exports.shrSH = exports.toBig = void 0;\n    exports.fromBig = fromBig;\n    exports.split = split;\n    exports.add = add;\n    var U32_MASK64 = BigInt(2 ** 32 - 1);\n    var _32n = BigInt(32);\n    function fromBig(n2, le = false) {\n      if (le)\n        return { h: Number(n2 & U32_MASK64), l: Number(n2 >> _32n & U32_MASK64) };\n      return { h: Number(n2 >> _32n & U32_MASK64) | 0, l: Number(n2 & U32_MASK64) | 0 };\n    }\n    function split(lst, le = false) {\n      let Ah = new Uint32Array(lst.length);\n      let Al = new Uint32Array(lst.length);\n      for (let i3 = 0; i3 < lst.length; i3++) {\n        const { h: h3, l: l3 } = fromBig(lst[i3], le);\n        [Ah[i3], Al[i3]] = [h3, l3];\n      }\n      return [Ah, Al];\n    }\n    var toBig = (h3, l3) => BigInt(h3 >>> 0) << _32n | BigInt(l3 >>> 0);\n    exports.toBig = toBig;\n    var shrSH = (h3, _l, s3) => h3 >>> s3;\n    exports.shrSH = shrSH;\n    var shrSL = (h3, l3, s3) => h3 << 32 - s3 | l3 >>> s3;\n    exports.shrSL = shrSL;\n    var rotrSH = (h3, l3, s3) => h3 >>> s3 | l3 << 32 - s3;\n    exports.rotrSH = rotrSH;\n    var rotrSL = (h3, l3, s3) => h3 << 32 - s3 | l3 >>> s3;\n    exports.rotrSL = rotrSL;\n    var rotrBH = (h3, l3, s3) => h3 << 64 - s3 | l3 >>> s3 - 32;\n    exports.rotrBH = rotrBH;\n    var rotrBL = (h3, l3, s3) => h3 >>> s3 - 32 | l3 << 64 - s3;\n    exports.rotrBL = rotrBL;\n    var rotr32H = (_h, l3) => l3;\n    exports.rotr32H = rotr32H;\n    var rotr32L = (h3, _l) => h3;\n    exports.rotr32L = rotr32L;\n    var rotlSH = (h3, l3, s3) => h3 << s3 | l3 >>> 32 - s3;\n    exports.rotlSH = rotlSH;\n    var rotlSL = (h3, l3, s3) => l3 << s3 | h3 >>> 32 - s3;\n    exports.rotlSL = rotlSL;\n    var rotlBH = (h3, l3, s3) => l3 << s3 - 32 | h3 >>> 64 - s3;\n    exports.rotlBH = rotlBH;\n    var rotlBL = (h3, l3, s3) => h3 << s3 - 32 | l3 >>> 64 - s3;\n    exports.rotlBL = rotlBL;\n    function add(Ah, Al, Bh, Bl) {\n      const l3 = (Al >>> 0) + (Bl >>> 0);\n      return { h: Ah + Bh + (l3 / 2 ** 32 | 0) | 0, l: l3 | 0 };\n    }\n    var add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\n    exports.add3L = add3L;\n    var add3H = (low, Ah, Bh, Ch) => Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0;\n    exports.add3H = add3H;\n    var add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\n    exports.add4L = add4L;\n    var add4H = (low, Ah, Bh, Ch, Dh) => Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0;\n    exports.add4H = add4H;\n    var add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\n    exports.add5L = add5L;\n    var add5H = (low, Ah, Bh, Ch, Dh, Eh) => Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0;\n    exports.add5H = add5H;\n    var u64 = {\n      fromBig,\n      split,\n      toBig,\n      shrSH,\n      shrSL,\n      rotrSH,\n      rotrSL,\n      rotrBH,\n      rotrBL,\n      rotr32H,\n      rotr32L,\n      rotlSH,\n      rotlSL,\n      rotlBH,\n      rotlBL,\n      add,\n      add3L,\n      add3H,\n      add4L,\n      add4H,\n      add5H,\n      add5L\n    };\n    exports.default = u64;\n  }\n});\n\n// node_modules/@noble/hashes/crypto.js\nvar require_crypto = __commonJS({\n  \"node_modules/@noble/hashes/crypto.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.crypto = void 0;\n    exports.crypto = typeof globalThis === \"object\" && \"crypto\" in globalThis ? globalThis.crypto : void 0;\n  }\n});\n\n// node_modules/@noble/hashes/utils.js\nvar require_utils = __commonJS({\n  \"node_modules/@noble/hashes/utils.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.Hash = exports.nextTick = exports.byteSwapIfBE = exports.byteSwap = exports.isLE = exports.rotl = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\n    exports.isBytes = isBytes;\n    exports.byteSwap32 = byteSwap32;\n    exports.bytesToHex = bytesToHex2;\n    exports.hexToBytes = hexToBytes;\n    exports.asyncLoop = asyncLoop;\n    exports.utf8ToBytes = utf8ToBytes;\n    exports.toBytes = toBytes;\n    exports.concatBytes = concatBytes;\n    exports.checkOpts = checkOpts;\n    exports.wrapConstructor = wrapConstructor;\n    exports.wrapConstructorWithOpts = wrapConstructorWithOpts;\n    exports.wrapXOFConstructorWithOpts = wrapXOFConstructorWithOpts;\n    exports.randomBytes = randomBytes;\n    var crypto_1 = require_crypto();\n    var _assert_js_1 = require_assert();\n    function isBytes(a3) {\n      return a3 instanceof Uint8Array || a3 != null && typeof a3 === \"object\" && a3.constructor.name === \"Uint8Array\";\n    }\n    var u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n    exports.u8 = u8;\n    var u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n    exports.u32 = u32;\n    var createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n    exports.createView = createView;\n    var rotr = (word, shift) => word << 32 - shift | word >>> shift;\n    exports.rotr = rotr;\n    var rotl = (word, shift) => word << shift | word >>> 32 - shift >>> 0;\n    exports.rotl = rotl;\n    exports.isLE = new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68;\n    var byteSwap = (word) => word << 24 & 4278190080 | word << 8 & 16711680 | word >>> 8 & 65280 | word >>> 24 & 255;\n    exports.byteSwap = byteSwap;\n    exports.byteSwapIfBE = exports.isLE ? (n2) => n2 : (n2) => (0, exports.byteSwap)(n2);\n    function byteSwap32(arr) {\n      for (let i3 = 0; i3 < arr.length; i3++) {\n        arr[i3] = (0, exports.byteSwap)(arr[i3]);\n      }\n    }\n    var hexes = Array.from({ length: 256 }, (_2, i3) => i3.toString(16).padStart(2, \"0\"));\n    function bytesToHex2(bytes) {\n      (0, _assert_js_1.bytes)(bytes);\n      let hex = \"\";\n      for (let i3 = 0; i3 < bytes.length; i3++) {\n        hex += hexes[bytes[i3]];\n      }\n      return hex;\n    }\n    var asciis = { _0: 48, _9: 57, _A: 65, _F: 70, _a: 97, _f: 102 };\n    function asciiToBase16(char) {\n      if (char >= asciis._0 && char <= asciis._9)\n        return char - asciis._0;\n      if (char >= asciis._A && char <= asciis._F)\n        return char - (asciis._A - 10);\n      if (char >= asciis._a && char <= asciis._f)\n        return char - (asciis._a - 10);\n      return;\n    }\n    function hexToBytes(hex) {\n      if (typeof hex !== \"string\")\n        throw new Error(\"hex string expected, got \" + typeof hex);\n      const hl = hex.length;\n      const al = hl / 2;\n      if (hl % 2)\n        throw new Error(\"padded hex string expected, got unpadded hex of length \" + hl);\n      const array = new Uint8Array(al);\n      for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n        const n1 = asciiToBase16(hex.charCodeAt(hi));\n        const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n        if (n1 === void 0 || n2 === void 0) {\n          const char = hex[hi] + hex[hi + 1];\n          throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n        }\n        array[ai] = n1 * 16 + n2;\n      }\n      return array;\n    }\n    var nextTick = async () => {\n    };\n    exports.nextTick = nextTick;\n    async function asyncLoop(iters, tick, cb) {\n      let ts = Date.now();\n      for (let i3 = 0; i3 < iters; i3++) {\n        cb(i3);\n        const diff = Date.now() - ts;\n        if (diff >= 0 && diff < tick)\n          continue;\n        await (0, exports.nextTick)();\n        ts += diff;\n      }\n    }\n    function utf8ToBytes(str) {\n      if (typeof str !== \"string\")\n        throw new Error(`utf8ToBytes expected string, got ${typeof str}`);\n      return new Uint8Array(new TextEncoder().encode(str));\n    }\n    function toBytes(data) {\n      if (typeof data === \"string\")\n        data = utf8ToBytes(data);\n      (0, _assert_js_1.bytes)(data);\n      return data;\n    }\n    function concatBytes(...arrays) {\n      let sum = 0;\n      for (let i3 = 0; i3 < arrays.length; i3++) {\n        const a3 = arrays[i3];\n        (0, _assert_js_1.bytes)(a3);\n        sum += a3.length;\n      }\n      const res = new Uint8Array(sum);\n      for (let i3 = 0, pad = 0; i3 < arrays.length; i3++) {\n        const a3 = arrays[i3];\n        res.set(a3, pad);\n        pad += a3.length;\n      }\n      return res;\n    }\n    var Hash = class {\n      // Safe version that clones internal state\n      clone() {\n        return this._cloneInto();\n      }\n    };\n    exports.Hash = Hash;\n    var toStr = {}.toString;\n    function checkOpts(defaults, opts) {\n      if (opts !== void 0 && toStr.call(opts) !== \"[object Object]\")\n        throw new Error(\"Options should be object or undefined\");\n      const merged = Object.assign(defaults, opts);\n      return merged;\n    }\n    function wrapConstructor(hashCons) {\n      const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n      const tmp = hashCons();\n      hashC.outputLen = tmp.outputLen;\n      hashC.blockLen = tmp.blockLen;\n      hashC.create = () => hashCons();\n      return hashC;\n    }\n    function wrapConstructorWithOpts(hashCons) {\n      const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n      const tmp = hashCons({});\n      hashC.outputLen = tmp.outputLen;\n      hashC.blockLen = tmp.blockLen;\n      hashC.create = (opts) => hashCons(opts);\n      return hashC;\n    }\n    function wrapXOFConstructorWithOpts(hashCons) {\n      const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n      const tmp = hashCons({});\n      hashC.outputLen = tmp.outputLen;\n      hashC.blockLen = tmp.blockLen;\n      hashC.create = (opts) => hashCons(opts);\n      return hashC;\n    }\n    function randomBytes(bytesLength = 32) {\n      if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === \"function\") {\n        return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength));\n      }\n      if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === \"function\") {\n        return crypto_1.crypto.randomBytes(bytesLength);\n      }\n      throw new Error(\"crypto.getRandomValues must be defined\");\n    }\n  }\n});\n\n// node_modules/@noble/hashes/sha3.js\nvar require_sha3 = __commonJS({\n  \"node_modules/@noble/hashes/sha3.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.shake256 = exports.shake128 = exports.keccak_512 = exports.keccak_384 = exports.keccak_256 = exports.keccak_224 = exports.sha3_512 = exports.sha3_384 = exports.sha3_256 = exports.sha3_224 = exports.Keccak = void 0;\n    exports.keccakP = keccakP;\n    var _assert_js_1 = require_assert();\n    var _u64_js_1 = require_u64();\n    var utils_js_1 = require_utils();\n    var SHA3_PI = [];\n    var SHA3_ROTL = [];\n    var _SHA3_IOTA = [];\n    var _0n = BigInt(0);\n    var _1n = BigInt(1);\n    var _2n = BigInt(2);\n    var _7n = BigInt(7);\n    var _256n = BigInt(256);\n    var _0x71n = BigInt(113);\n    for (let round = 0, R = _1n, x2 = 1, y3 = 0; round < 24; round++) {\n      [x2, y3] = [y3, (2 * x2 + 3 * y3) % 5];\n      SHA3_PI.push(2 * (5 * y3 + x2));\n      SHA3_ROTL.push((round + 1) * (round + 2) / 2 % 64);\n      let t3 = _0n;\n      for (let j3 = 0; j3 < 7; j3++) {\n        R = (R << _1n ^ (R >> _7n) * _0x71n) % _256n;\n        if (R & _2n)\n          t3 ^= _1n << (_1n << BigInt(j3)) - _1n;\n      }\n      _SHA3_IOTA.push(t3);\n    }\n    var [SHA3_IOTA_H, SHA3_IOTA_L] = (0, _u64_js_1.split)(_SHA3_IOTA, true);\n    var rotlH = (h3, l3, s3) => s3 > 32 ? (0, _u64_js_1.rotlBH)(h3, l3, s3) : (0, _u64_js_1.rotlSH)(h3, l3, s3);\n    var rotlL = (h3, l3, s3) => s3 > 32 ? (0, _u64_js_1.rotlBL)(h3, l3, s3) : (0, _u64_js_1.rotlSL)(h3, l3, s3);\n    function keccakP(s3, rounds = 24) {\n      const B3 = new Uint32Array(5 * 2);\n      for (let round = 24 - rounds; round < 24; round++) {\n        for (let x2 = 0; x2 < 10; x2++)\n          B3[x2] = s3[x2] ^ s3[x2 + 10] ^ s3[x2 + 20] ^ s3[x2 + 30] ^ s3[x2 + 40];\n        for (let x2 = 0; x2 < 10; x2 += 2) {\n          const idx1 = (x2 + 8) % 10;\n          const idx0 = (x2 + 2) % 10;\n          const B0 = B3[idx0];\n          const B1 = B3[idx0 + 1];\n          const Th = rotlH(B0, B1, 1) ^ B3[idx1];\n          const Tl = rotlL(B0, B1, 1) ^ B3[idx1 + 1];\n          for (let y3 = 0; y3 < 50; y3 += 10) {\n            s3[x2 + y3] ^= Th;\n            s3[x2 + y3 + 1] ^= Tl;\n          }\n        }\n        let curH = s3[2];\n        let curL = s3[3];\n        for (let t3 = 0; t3 < 24; t3++) {\n          const shift = SHA3_ROTL[t3];\n          const Th = rotlH(curH, curL, shift);\n          const Tl = rotlL(curH, curL, shift);\n          const PI = SHA3_PI[t3];\n          curH = s3[PI];\n          curL = s3[PI + 1];\n          s3[PI] = Th;\n          s3[PI + 1] = Tl;\n        }\n        for (let y3 = 0; y3 < 50; y3 += 10) {\n          for (let x2 = 0; x2 < 10; x2++)\n            B3[x2] = s3[y3 + x2];\n          for (let x2 = 0; x2 < 10; x2++)\n            s3[y3 + x2] ^= ~B3[(x2 + 2) % 10] & B3[(x2 + 4) % 10];\n        }\n        s3[0] ^= SHA3_IOTA_H[round];\n        s3[1] ^= SHA3_IOTA_L[round];\n      }\n      B3.fill(0);\n    }\n    var Keccak = class _Keccak extends utils_js_1.Hash {\n      // NOTE: we accept arguments in bytes instead of bits here.\n      constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n        super();\n        this.blockLen = blockLen;\n        this.suffix = suffix;\n        this.outputLen = outputLen;\n        this.enableXOF = enableXOF;\n        this.rounds = rounds;\n        this.pos = 0;\n        this.posOut = 0;\n        this.finished = false;\n        this.destroyed = false;\n        (0, _assert_js_1.number)(outputLen);\n        if (0 >= this.blockLen || this.blockLen >= 200)\n          throw new Error(\"Sha3 supports only keccak-f1600 function\");\n        this.state = new Uint8Array(200);\n        this.state32 = (0, utils_js_1.u32)(this.state);\n      }\n      keccak() {\n        if (!utils_js_1.isLE)\n          (0, utils_js_1.byteSwap32)(this.state32);\n        keccakP(this.state32, this.rounds);\n        if (!utils_js_1.isLE)\n          (0, utils_js_1.byteSwap32)(this.state32);\n        this.posOut = 0;\n        this.pos = 0;\n      }\n      update(data) {\n        (0, _assert_js_1.exists)(this);\n        const { blockLen, state } = this;\n        data = (0, utils_js_1.toBytes)(data);\n        const len = data.length;\n        for (let pos = 0; pos < len; ) {\n          const take = Math.min(blockLen - this.pos, len - pos);\n          for (let i3 = 0; i3 < take; i3++)\n            state[this.pos++] ^= data[pos++];\n          if (this.pos === blockLen)\n            this.keccak();\n        }\n        return this;\n      }\n      finish() {\n        if (this.finished)\n          return;\n        this.finished = true;\n        const { state, suffix, pos, blockLen } = this;\n        state[pos] ^= suffix;\n        if ((suffix & 128) !== 0 && pos === blockLen - 1)\n          this.keccak();\n        state[blockLen - 1] ^= 128;\n        this.keccak();\n      }\n      writeInto(out) {\n        (0, _assert_js_1.exists)(this, false);\n        (0, _assert_js_1.bytes)(out);\n        this.finish();\n        const bufferOut = this.state;\n        const { blockLen } = this;\n        for (let pos = 0, len = out.length; pos < len; ) {\n          if (this.posOut >= blockLen)\n            this.keccak();\n          const take = Math.min(blockLen - this.posOut, len - pos);\n          out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n          this.posOut += take;\n          pos += take;\n        }\n        return out;\n      }\n      xofInto(out) {\n        if (!this.enableXOF)\n          throw new Error(\"XOF is not possible for this instance\");\n        return this.writeInto(out);\n      }\n      xof(bytes) {\n        (0, _assert_js_1.number)(bytes);\n        return this.xofInto(new Uint8Array(bytes));\n      }\n      digestInto(out) {\n        (0, _assert_js_1.output)(out, this);\n        if (this.finished)\n          throw new Error(\"digest() was already called\");\n        this.writeInto(out);\n        this.destroy();\n        return out;\n      }\n      digest() {\n        return this.digestInto(new Uint8Array(this.outputLen));\n      }\n      destroy() {\n        this.destroyed = true;\n        this.state.fill(0);\n      }\n      _cloneInto(to) {\n        const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n        to || (to = new _Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n        to.state32.set(this.state32);\n        to.pos = this.pos;\n        to.posOut = this.posOut;\n        to.finished = this.finished;\n        to.rounds = rounds;\n        to.suffix = suffix;\n        to.outputLen = outputLen;\n        to.enableXOF = enableXOF;\n        to.destroyed = this.destroyed;\n        return to;\n      }\n    };\n    exports.Keccak = Keccak;\n    var gen = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapConstructor)(() => new Keccak(blockLen, suffix, outputLen));\n    exports.sha3_224 = gen(6, 144, 224 / 8);\n    exports.sha3_256 = gen(6, 136, 256 / 8);\n    exports.sha3_384 = gen(6, 104, 384 / 8);\n    exports.sha3_512 = gen(6, 72, 512 / 8);\n    exports.keccak_224 = gen(1, 144, 224 / 8);\n    exports.keccak_256 = gen(1, 136, 256 / 8);\n    exports.keccak_384 = gen(1, 104, 384 / 8);\n    exports.keccak_512 = gen(1, 72, 512 / 8);\n    var genShake = (suffix, blockLen, outputLen) => (0, utils_js_1.wrapXOFConstructorWithOpts)((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === void 0 ? outputLen : opts.dkLen, true));\n    exports.shake128 = genShake(31, 168, 128 / 8);\n    exports.shake256 = genShake(31, 136, 256 / 8);\n  }\n});\n\n// node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/util.cjs\nvar require_util = __commonJS({\n  \"node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/util.cjs\"(exports, module) {\n    var { keccak_256 } = require_sha3();\n    function zeros(bytes) {\n      return Buffer.allocUnsafe(bytes).fill(0);\n    }\n    function bitLengthFromBigInt(num) {\n      return num.toString(2).length;\n    }\n    function bufferBEFromBigInt(num, length) {\n      let hex = num.toString(16);\n      if (hex.length % 2 !== 0)\n        hex = \"0\" + hex;\n      const byteArray = hex.match(/.{1,2}/g).map((byte) => parseInt(byte, 16));\n      while (byteArray.length < length) {\n        byteArray.unshift(0);\n      }\n      return Buffer.from(byteArray);\n    }\n    function twosFromBigInt(value, width) {\n      const isNegative = value < 0n;\n      let result;\n      if (isNegative) {\n        const mask = (1n << BigInt(width)) - 1n;\n        result = (~value & mask) + 1n;\n      } else {\n        result = value;\n      }\n      result &= (1n << BigInt(width)) - 1n;\n      return result;\n    }\n    function setLength(msg, length, right) {\n      const buf = zeros(length);\n      msg = toBuffer(msg);\n      if (right) {\n        if (msg.length < length) {\n          msg.copy(buf);\n          return buf;\n        }\n        return msg.slice(0, length);\n      } else {\n        if (msg.length < length) {\n          msg.copy(buf, length - msg.length);\n          return buf;\n        }\n        return msg.slice(-length);\n      }\n    }\n    function setLengthRight(msg, length) {\n      return setLength(msg, length, true);\n    }\n    function toBuffer(v3) {\n      if (!Buffer.isBuffer(v3)) {\n        if (Array.isArray(v3)) {\n          v3 = Buffer.from(v3);\n        } else if (typeof v3 === \"string\") {\n          if (isHexString2(v3)) {\n            v3 = Buffer.from(padToEven(stripHexPrefix(v3)), \"hex\");\n          } else {\n            v3 = Buffer.from(v3);\n          }\n        } else if (typeof v3 === \"number\") {\n          v3 = intToBuffer(v3);\n        } else if (v3 === null || v3 === void 0) {\n          v3 = Buffer.allocUnsafe(0);\n        } else if (typeof v3 === \"bigint\") {\n          v3 = bufferBEFromBigInt(v3);\n        } else if (v3.toArray) {\n          v3 = Buffer.from(v3.toArray());\n        } else {\n          throw new Error(\"invalid type\");\n        }\n      }\n      return v3;\n    }\n    function bufferToHex(buf) {\n      buf = toBuffer(buf);\n      return \"0x\" + buf.toString(\"hex\");\n    }\n    function keccak(a3, bits) {\n      a3 = toBuffer(a3);\n      if (!bits)\n        bits = 256;\n      if (bits !== 256) {\n        throw new Error(\"unsupported\");\n      }\n      return Buffer.from(keccak_256(new Uint8Array(a3)));\n    }\n    function padToEven(str) {\n      return str.length % 2 ? \"0\" + str : str;\n    }\n    function isHexString2(str) {\n      return typeof str === \"string\" && str.match(/^0x[0-9A-Fa-f]*$/);\n    }\n    function stripHexPrefix(str) {\n      if (typeof str === \"string\" && str.startsWith(\"0x\")) {\n        return str.slice(2);\n      }\n      return str;\n    }\n    module.exports = {\n      zeros,\n      setLength,\n      setLengthRight,\n      isHexString: isHexString2,\n      stripHexPrefix,\n      toBuffer,\n      bufferToHex,\n      keccak,\n      bitLengthFromBigInt,\n      bufferBEFromBigInt,\n      twosFromBigInt\n    };\n  }\n});\n\n// node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/abi.cjs\nvar require_abi = __commonJS({\n  \"node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/abi.cjs\"(exports, module) {\n    var util = require_util();\n    function elementaryName(name) {\n      if (name.startsWith(\"int[\")) {\n        return \"int256\" + name.slice(3);\n      } else if (name === \"int\") {\n        return \"int256\";\n      } else if (name.startsWith(\"uint[\")) {\n        return \"uint256\" + name.slice(4);\n      } else if (name === \"uint\") {\n        return \"uint256\";\n      } else if (name.startsWith(\"fixed[\")) {\n        return \"fixed128x128\" + name.slice(5);\n      } else if (name === \"fixed\") {\n        return \"fixed128x128\";\n      } else if (name.startsWith(\"ufixed[\")) {\n        return \"ufixed128x128\" + name.slice(6);\n      } else if (name === \"ufixed\") {\n        return \"ufixed128x128\";\n      }\n      return name;\n    }\n    function parseTypeN(type) {\n      return Number.parseInt(/^\\D+(\\d+)$/.exec(type)[1], 10);\n    }\n    function parseTypeNxM(type) {\n      var tmp = /^\\D+(\\d+)x(\\d+)$/.exec(type);\n      return [Number.parseInt(tmp[1], 10), Number.parseInt(tmp[2], 10)];\n    }\n    function parseTypeArray(type) {\n      var tmp = type.match(/(.*)\\[(.*?)\\]$/);\n      if (tmp) {\n        return tmp[2] === \"\" ? \"dynamic\" : Number.parseInt(tmp[2], 10);\n      }\n      return null;\n    }\n    function parseNumber(arg) {\n      var type = typeof arg;\n      if (type === \"string\" || type === \"number\") {\n        return BigInt(arg);\n      } else if (type === \"bigint\") {\n        return arg;\n      } else {\n        throw new Error(\"Argument is not a number\");\n      }\n    }\n    function encodeSingle(type, arg) {\n      var size, num, ret, i3;\n      if (type === \"address\") {\n        return encodeSingle(\"uint160\", parseNumber(arg));\n      } else if (type === \"bool\") {\n        return encodeSingle(\"uint8\", arg ? 1 : 0);\n      } else if (type === \"string\") {\n        return encodeSingle(\"bytes\", new Buffer(arg, \"utf8\"));\n      } else if (isArray(type)) {\n        if (typeof arg.length === \"undefined\") {\n          throw new Error(\"Not an array?\");\n        }\n        size = parseTypeArray(type);\n        if (size !== \"dynamic\" && size !== 0 && arg.length > size) {\n          throw new Error(\"Elements exceed array size: \" + size);\n        }\n        ret = [];\n        type = type.slice(0, type.lastIndexOf(\"[\"));\n        if (typeof arg === \"string\") {\n          arg = JSON.parse(arg);\n        }\n        for (i3 in arg) {\n          ret.push(encodeSingle(type, arg[i3]));\n        }\n        if (size === \"dynamic\") {\n          var length = encodeSingle(\"uint256\", arg.length);\n          ret.unshift(length);\n        }\n        return Buffer.concat(ret);\n      } else if (type === \"bytes\") {\n        arg = new Buffer(arg);\n        ret = Buffer.concat([encodeSingle(\"uint256\", arg.length), arg]);\n        if (arg.length % 32 !== 0) {\n          ret = Buffer.concat([ret, util.zeros(32 - arg.length % 32)]);\n        }\n        return ret;\n      } else if (type.startsWith(\"bytes\")) {\n        size = parseTypeN(type);\n        if (size < 1 || size > 32) {\n          throw new Error(\"Invalid bytes<N> width: \" + size);\n        }\n        return util.setLengthRight(arg, 32);\n      } else if (type.startsWith(\"uint\")) {\n        size = parseTypeN(type);\n        if (size % 8 || size < 8 || size > 256) {\n          throw new Error(\"Invalid uint<N> width: \" + size);\n        }\n        num = parseNumber(arg);\n        const bitLength = util.bitLengthFromBigInt(num);\n        if (bitLength > size) {\n          throw new Error(\"Supplied uint exceeds width: \" + size + \" vs \" + bitLength);\n        }\n        if (num < 0) {\n          throw new Error(\"Supplied uint is negative\");\n        }\n        return util.bufferBEFromBigInt(num, 32);\n      } else if (type.startsWith(\"int\")) {\n        size = parseTypeN(type);\n        if (size % 8 || size < 8 || size > 256) {\n          throw new Error(\"Invalid int<N> width: \" + size);\n        }\n        num = parseNumber(arg);\n        const bitLength = util.bitLengthFromBigInt(num);\n        if (bitLength > size) {\n          throw new Error(\"Supplied int exceeds width: \" + size + \" vs \" + bitLength);\n        }\n        const twos = util.twosFromBigInt(num, 256);\n        return util.bufferBEFromBigInt(twos, 32);\n      } else if (type.startsWith(\"ufixed\")) {\n        size = parseTypeNxM(type);\n        num = parseNumber(arg);\n        if (num < 0) {\n          throw new Error(\"Supplied ufixed is negative\");\n        }\n        return encodeSingle(\"uint256\", num * BigInt(2) ** BigInt(size[1]));\n      } else if (type.startsWith(\"fixed\")) {\n        size = parseTypeNxM(type);\n        return encodeSingle(\"int256\", parseNumber(arg) * BigInt(2) ** BigInt(size[1]));\n      }\n      throw new Error(\"Unsupported or invalid type: \" + type);\n    }\n    function isDynamic(type) {\n      return type === \"string\" || type === \"bytes\" || parseTypeArray(type) === \"dynamic\";\n    }\n    function isArray(type) {\n      return type.lastIndexOf(\"]\") === type.length - 1;\n    }\n    function rawEncode(types, values) {\n      var output = [];\n      var data = [];\n      var headLength = 32 * types.length;\n      for (var i3 in types) {\n        var type = elementaryName(types[i3]);\n        var value = values[i3];\n        var cur = encodeSingle(type, value);\n        if (isDynamic(type)) {\n          output.push(encodeSingle(\"uint256\", headLength));\n          data.push(cur);\n          headLength += cur.length;\n        } else {\n          output.push(cur);\n        }\n      }\n      return Buffer.concat(output.concat(data));\n    }\n    function solidityPack(types, values) {\n      if (types.length !== values.length) {\n        throw new Error(\"Number of types are not matching the values\");\n      }\n      var size, num;\n      var ret = [];\n      for (var i3 = 0; i3 < types.length; i3++) {\n        var type = elementaryName(types[i3]);\n        var value = values[i3];\n        if (type === \"bytes\") {\n          ret.push(value);\n        } else if (type === \"string\") {\n          ret.push(new Buffer(value, \"utf8\"));\n        } else if (type === \"bool\") {\n          ret.push(new Buffer(value ? \"01\" : \"00\", \"hex\"));\n        } else if (type === \"address\") {\n          ret.push(util.setLength(value, 20));\n        } else if (type.startsWith(\"bytes\")) {\n          size = parseTypeN(type);\n          if (size < 1 || size > 32) {\n            throw new Error(\"Invalid bytes<N> width: \" + size);\n          }\n          ret.push(util.setLengthRight(value, size));\n        } else if (type.startsWith(\"uint\")) {\n          size = parseTypeN(type);\n          if (size % 8 || size < 8 || size > 256) {\n            throw new Error(\"Invalid uint<N> width: \" + size);\n          }\n          num = parseNumber(value);\n          const bitLength = util.bitLengthFromBigInt(num);\n          if (bitLength > size) {\n            throw new Error(\"Supplied uint exceeds width: \" + size + \" vs \" + bitLength);\n          }\n          ret.push(util.bufferBEFromBigInt(num, size / 8));\n        } else if (type.startsWith(\"int\")) {\n          size = parseTypeN(type);\n          if (size % 8 || size < 8 || size > 256) {\n            throw new Error(\"Invalid int<N> width: \" + size);\n          }\n          num = parseNumber(value);\n          const bitLength = util.bitLengthFromBigInt(num);\n          if (bitLength > size) {\n            throw new Error(\"Supplied int exceeds width: \" + size + \" vs \" + bitLength);\n          }\n          const twos = util.twosFromBigInt(num, size);\n          ret.push(util.bufferBEFromBigInt(twos, size / 8));\n        } else {\n          throw new Error(\"Unsupported or invalid type: \" + type);\n        }\n      }\n      return Buffer.concat(ret);\n    }\n    function soliditySHA3(types, values) {\n      return util.keccak(solidityPack(types, values));\n    }\n    module.exports = {\n      rawEncode,\n      solidityPack,\n      soliditySHA3\n    };\n  }\n});\n\n// node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/index.cjs\nvar require_eth_eip712_util = __commonJS({\n  \"node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/index.cjs\"(exports, module) {\n    var util = require_util();\n    var abi = require_abi();\n    var TYPED_MESSAGE_SCHEMA = {\n      type: \"object\",\n      properties: {\n        types: {\n          type: \"object\",\n          additionalProperties: {\n            type: \"array\",\n            items: {\n              type: \"object\",\n              properties: {\n                name: { type: \"string\" },\n                type: { type: \"string\" }\n              },\n              required: [\"name\", \"type\"]\n            }\n          }\n        },\n        primaryType: { type: \"string\" },\n        domain: { type: \"object\" },\n        message: { type: \"object\" }\n      },\n      required: [\"types\", \"primaryType\", \"domain\", \"message\"]\n    };\n    var TypedDataUtils = {\n      /**\n       * Encodes an object by encoding and concatenating each of its members\n       *\n       * @param {string} primaryType - Root type\n       * @param {Object} data - Object to encode\n       * @param {Object} types - Type definitions\n       * @returns {string} - Encoded representation of an object\n       */\n      encodeData(primaryType, data, types, useV4 = true) {\n        const encodedTypes = [\"bytes32\"];\n        const encodedValues = [this.hashType(primaryType, types)];\n        if (useV4) {\n          const encodeField = (name, type, value) => {\n            if (types[type] !== void 0) {\n              return [\"bytes32\", value == null ? \"0x0000000000000000000000000000000000000000000000000000000000000000\" : util.keccak(this.encodeData(type, value, types, useV4))];\n            }\n            if (value === void 0)\n              throw new Error(`missing value for field ${name} of type ${type}`);\n            if (type === \"bytes\") {\n              return [\"bytes32\", util.keccak(value)];\n            }\n            if (type === \"string\") {\n              if (typeof value === \"string\") {\n                value = Buffer.from(value, \"utf8\");\n              }\n              return [\"bytes32\", util.keccak(value)];\n            }\n            if (type.lastIndexOf(\"]\") === type.length - 1) {\n              const parsedType = type.slice(0, type.lastIndexOf(\"[\"));\n              const typeValuePairs = value.map((item) => encodeField(name, parsedType, item));\n              return [\"bytes32\", util.keccak(abi.rawEncode(\n                typeValuePairs.map(([type2]) => type2),\n                typeValuePairs.map(([, value2]) => value2)\n              ))];\n            }\n            return [type, value];\n          };\n          for (const field of types[primaryType]) {\n            const [type, value] = encodeField(field.name, field.type, data[field.name]);\n            encodedTypes.push(type);\n            encodedValues.push(value);\n          }\n        } else {\n          for (const field of types[primaryType]) {\n            let value = data[field.name];\n            if (value !== void 0) {\n              if (field.type === \"bytes\") {\n                encodedTypes.push(\"bytes32\");\n                value = util.keccak(value);\n                encodedValues.push(value);\n              } else if (field.type === \"string\") {\n                encodedTypes.push(\"bytes32\");\n                if (typeof value === \"string\") {\n                  value = Buffer.from(value, \"utf8\");\n                }\n                value = util.keccak(value);\n                encodedValues.push(value);\n              } else if (types[field.type] !== void 0) {\n                encodedTypes.push(\"bytes32\");\n                value = util.keccak(this.encodeData(field.type, value, types, useV4));\n                encodedValues.push(value);\n              } else if (field.type.lastIndexOf(\"]\") === field.type.length - 1) {\n                throw new Error(\"Arrays currently unimplemented in encodeData\");\n              } else {\n                encodedTypes.push(field.type);\n                encodedValues.push(value);\n              }\n            }\n          }\n        }\n        return abi.rawEncode(encodedTypes, encodedValues);\n      },\n      /**\n       * Encodes the type of an object by encoding a comma delimited list of its members\n       *\n       * @param {string} primaryType - Root type to encode\n       * @param {Object} types - Type definitions\n       * @returns {string} - Encoded representation of the type of an object\n       */\n      encodeType(primaryType, types) {\n        let result = \"\";\n        let deps = this.findTypeDependencies(primaryType, types).filter((dep) => dep !== primaryType);\n        deps = [primaryType].concat(deps.sort());\n        for (const type of deps) {\n          const children = types[type];\n          if (!children) {\n            throw new Error(\"No type definition specified: \" + type);\n          }\n          result += type + \"(\" + types[type].map(({ name, type: type2 }) => type2 + \" \" + name).join(\",\") + \")\";\n        }\n        return result;\n      },\n      /**\n       * Finds all types within a type definition object\n       *\n       * @param {string} primaryType - Root type\n       * @param {Object} types - Type definitions\n       * @param {Array} results - current set of accumulated types\n       * @returns {Array} - Set of all types found in the type definition\n       */\n      findTypeDependencies(primaryType, types, results = []) {\n        primaryType = primaryType.match(/^\\w*/)[0];\n        if (results.includes(primaryType) || types[primaryType] === void 0) {\n          return results;\n        }\n        results.push(primaryType);\n        for (const field of types[primaryType]) {\n          for (const dep of this.findTypeDependencies(field.type, types, results)) {\n            !results.includes(dep) && results.push(dep);\n          }\n        }\n        return results;\n      },\n      /**\n       * Hashes an object\n       *\n       * @param {string} primaryType - Root type\n       * @param {Object} data - Object to hash\n       * @param {Object} types - Type definitions\n       * @returns {Buffer} - Hash of an object\n       */\n      hashStruct(primaryType, data, types, useV4 = true) {\n        return util.keccak(this.encodeData(primaryType, data, types, useV4));\n      },\n      /**\n       * Hashes the type of an object\n       *\n       * @param {string} primaryType - Root type to hash\n       * @param {Object} types - Type definitions\n       * @returns {string} - Hash of an object\n       */\n      hashType(primaryType, types) {\n        return util.keccak(this.encodeType(primaryType, types));\n      },\n      /**\n       * Removes properties from a message object that are not defined per EIP-712\n       *\n       * @param {Object} data - typed message object\n       * @returns {Object} - typed message object with only allowed fields\n       */\n      sanitizeData(data) {\n        const sanitizedData = {};\n        for (const key in TYPED_MESSAGE_SCHEMA.properties) {\n          data[key] && (sanitizedData[key] = data[key]);\n        }\n        if (sanitizedData.types) {\n          sanitizedData.types = Object.assign({ EIP712Domain: [] }, sanitizedData.types);\n        }\n        return sanitizedData;\n      },\n      /**\n       * Returns the hash of a typed message as per EIP-712 for signing\n       *\n       * @param {Object} typedData - Types message data to sign\n       * @returns {string} - sha3 hash for signing\n       */\n      hash(typedData, useV4 = true) {\n        const sanitizedData = this.sanitizeData(typedData);\n        const parts = [Buffer.from(\"1901\", \"hex\")];\n        parts.push(this.hashStruct(\"EIP712Domain\", sanitizedData.domain, sanitizedData.types, useV4));\n        if (sanitizedData.primaryType !== \"EIP712Domain\") {\n          parts.push(this.hashStruct(sanitizedData.primaryType, sanitizedData.message, sanitizedData.types, useV4));\n        }\n        return util.keccak(Buffer.concat(parts));\n      }\n    };\n    module.exports = {\n      TYPED_MESSAGE_SCHEMA,\n      TypedDataUtils,\n      hashForSignTypedDataLegacy: function(msgParams) {\n        return typedSignatureHashLegacy(msgParams.data);\n      },\n      hashForSignTypedData_v3: function(msgParams) {\n        return TypedDataUtils.hash(msgParams.data, false);\n      },\n      hashForSignTypedData_v4: function(msgParams) {\n        return TypedDataUtils.hash(msgParams.data);\n      }\n    };\n    function typedSignatureHashLegacy(typedData) {\n      const error = new Error(\"Expect argument to be non-empty array\");\n      if (typeof typedData !== \"object\" || !typedData.length)\n        throw error;\n      const data = typedData.map(function(e3) {\n        return e3.type === \"bytes\" ? util.toBuffer(e3.value) : e3.value;\n      });\n      const types = typedData.map(function(e3) {\n        return e3.type;\n      });\n      const schema = typedData.map(function(e3) {\n        if (!e3.name)\n          throw error;\n        return e3.type + \" \" + e3.name;\n      });\n      return abi.soliditySHA3(\n        [\"bytes32\", \"bytes32\"],\n        [\n          abi.soliditySHA3(new Array(typedData.length).fill(\"string\"), schema),\n          abi.soliditySHA3(types, data)\n        ]\n      );\n    }\n  }\n});\n\n// node_modules/eventemitter3/index.js\nvar require_eventemitter3 = __commonJS({\n  \"node_modules/eventemitter3/index.js\"(exports, module) {\n    \"use strict\";\n    var has = Object.prototype.hasOwnProperty;\n    var prefix = \"~\";\n    function Events() {\n    }\n    if (Object.create) {\n      Events.prototype = /* @__PURE__ */ Object.create(null);\n      if (!new Events().__proto__)\n        prefix = false;\n    }\n    function EE(fn, context, once) {\n      this.fn = fn;\n      this.context = context;\n      this.once = once || false;\n    }\n    function addListener(emitter, event, fn, context, once) {\n      if (typeof fn !== \"function\") {\n        throw new TypeError(\"The listener must be a function\");\n      }\n      var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;\n      if (!emitter._events[evt])\n        emitter._events[evt] = listener, emitter._eventsCount++;\n      else if (!emitter._events[evt].fn)\n        emitter._events[evt].push(listener);\n      else\n        emitter._events[evt] = [emitter._events[evt], listener];\n      return emitter;\n    }\n    function clearEvent(emitter, evt) {\n      if (--emitter._eventsCount === 0)\n        emitter._events = new Events();\n      else\n        delete emitter._events[evt];\n    }\n    function EventEmitter2() {\n      this._events = new Events();\n      this._eventsCount = 0;\n    }\n    EventEmitter2.prototype.eventNames = function eventNames() {\n      var names = [], events, name;\n      if (this._eventsCount === 0)\n        return names;\n      for (name in events = this._events) {\n        if (has.call(events, name))\n          names.push(prefix ? name.slice(1) : name);\n      }\n      if (Object.getOwnPropertySymbols) {\n        return names.concat(Object.getOwnPropertySymbols(events));\n      }\n      return names;\n    };\n    EventEmitter2.prototype.listeners = function listeners(event) {\n      var evt = prefix ? prefix + event : event, handlers = this._events[evt];\n      if (!handlers)\n        return [];\n      if (handlers.fn)\n        return [handlers.fn];\n      for (var i3 = 0, l3 = handlers.length, ee = new Array(l3); i3 < l3; i3++) {\n        ee[i3] = handlers[i3].fn;\n      }\n      return ee;\n    };\n    EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n      var evt = prefix ? prefix + event : event, listeners = this._events[evt];\n      if (!listeners)\n        return 0;\n      if (listeners.fn)\n        return 1;\n      return listeners.length;\n    };\n    EventEmitter2.prototype.emit = function emit(event, a1, a22, a3, a4, a5) {\n      var evt = prefix ? prefix + event : event;\n      if (!this._events[evt])\n        return false;\n      var listeners = this._events[evt], len = arguments.length, args, i3;\n      if (listeners.fn) {\n        if (listeners.once)\n          this.removeListener(event, listeners.fn, void 0, true);\n        switch (len) {\n          case 1:\n            return listeners.fn.call(listeners.context), true;\n          case 2:\n            return listeners.fn.call(listeners.context, a1), true;\n          case 3:\n            return listeners.fn.call(listeners.context, a1, a22), true;\n          case 4:\n            return listeners.fn.call(listeners.context, a1, a22, a3), true;\n          case 5:\n            return listeners.fn.call(listeners.context, a1, a22, a3, a4), true;\n          case 6:\n            return listeners.fn.call(listeners.context, a1, a22, a3, a4, a5), true;\n        }\n        for (i3 = 1, args = new Array(len - 1); i3 < len; i3++) {\n          args[i3 - 1] = arguments[i3];\n        }\n        listeners.fn.apply(listeners.context, args);\n      } else {\n        var length = listeners.length, j3;\n        for (i3 = 0; i3 < length; i3++) {\n          if (listeners[i3].once)\n            this.removeListener(event, listeners[i3].fn, void 0, true);\n          switch (len) {\n            case 1:\n              listeners[i3].fn.call(listeners[i3].context);\n              break;\n            case 2:\n              listeners[i3].fn.call(listeners[i3].context, a1);\n              break;\n            case 3:\n              listeners[i3].fn.call(listeners[i3].context, a1, a22);\n              break;\n            case 4:\n              listeners[i3].fn.call(listeners[i3].context, a1, a22, a3);\n              break;\n            default:\n              if (!args)\n                for (j3 = 1, args = new Array(len - 1); j3 < len; j3++) {\n                  args[j3 - 1] = arguments[j3];\n                }\n              listeners[i3].fn.apply(listeners[i3].context, args);\n          }\n        }\n      }\n      return true;\n    };\n    EventEmitter2.prototype.on = function on(event, fn, context) {\n      return addListener(this, event, fn, context, false);\n    };\n    EventEmitter2.prototype.once = function once(event, fn, context) {\n      return addListener(this, event, fn, context, true);\n    };\n    EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n      var evt = prefix ? prefix + event : event;\n      if (!this._events[evt])\n        return this;\n      if (!fn) {\n        clearEvent(this, evt);\n        return this;\n      }\n      var listeners = this._events[evt];\n      if (listeners.fn) {\n        if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n          clearEvent(this, evt);\n        }\n      } else {\n        for (var i3 = 0, events = [], length = listeners.length; i3 < length; i3++) {\n          if (listeners[i3].fn !== fn || once && !listeners[i3].once || context && listeners[i3].context !== context) {\n            events.push(listeners[i3]);\n          }\n        }\n        if (events.length)\n          this._events[evt] = events.length === 1 ? events[0] : events;\n        else\n          clearEvent(this, evt);\n      }\n      return this;\n    };\n    EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n      var evt;\n      if (event) {\n        evt = prefix ? prefix + event : event;\n        if (this._events[evt])\n          clearEvent(this, evt);\n      } else {\n        this._events = new Events();\n        this._eventsCount = 0;\n      }\n      return this;\n    };\n    EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n    EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n    EventEmitter2.prefixed = prefix;\n    EventEmitter2.EventEmitter = EventEmitter2;\n    if (\"undefined\" !== typeof module) {\n      module.exports = EventEmitter2;\n    }\n  }\n});\n\n// node_modules/@coinbase/wallet-sdk/dist/assets/wallet-logo.js\nvar walletLogo = (type, width) => {\n  let height;\n  switch (type) {\n    case \"standard\":\n      height = width;\n      return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' viewBox='0 0 1024 1024' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Crect width='1024' height='1024' fill='%230052FF'/%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z' fill='white'/%3E %3C/svg%3E `;\n    case \"circle\":\n      height = width;\n      return `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='${width}' height='${height}' viewBox='0 0 999.81 999.81'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052fe;%7D.cls-2%7Bfill:%23fefefe;%7D.cls-3%7Bfill:%230152fe;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M655-115.9h56c.83,1.59,2.36.88,3.56,1a478,478,0,0,1,75.06,10.42C891.4-81.76,978.33-32.58,1049.19,44q116.7,126,131.94,297.61c.38,4.14-.34,8.53,1.78,12.45v59c-1.58.84-.91,2.35-1,3.56a482.05,482.05,0,0,1-10.38,74.05c-24,106.72-76.64,196.76-158.83,268.93s-178.18,112.82-287.2,122.6c-4.83.43-9.86-.25-14.51,1.77H654c-1-1.68-2.69-.91-4.06-1a496.89,496.89,0,0,1-105.9-18.59c-93.54-27.42-172.78-77.59-236.91-150.94Q199.34,590.1,184.87,426.58c-.47-5.19.25-10.56-1.77-15.59V355c1.68-1,.91-2.7,1-4.06a498.12,498.12,0,0,1,18.58-105.9c26-88.75,72.64-164.9,140.6-227.57q126-116.27,297.21-131.61C645.32-114.57,650.35-113.88,655-115.9Zm377.92,500c0-192.44-156.31-349.49-347.56-350.15-194.13-.68-350.94,155.13-352.29,347.42-1.37,194.55,155.51,352.1,348.56,352.47C876.15,734.23,1032.93,577.84,1032.93,384.11Z' transform='translate(-183.1 115.9)'/%3E%3Cpath class='cls-2' d='M1032.93,384.11c0,193.73-156.78,350.12-351.29,349.74-193-.37-349.93-157.92-348.56-352.47C334.43,189.09,491.24,33.28,685.37,34,876.62,34.62,1032.94,191.67,1032.93,384.11ZM683,496.81q43.74,0,87.48,0c15.55,0,25.32-9.72,25.33-25.21q0-87.48,0-175c0-15.83-9.68-25.46-25.59-25.46H595.77c-15.88,0-25.57,9.64-25.58,25.46q0,87.23,0,174.45c0,16.18,9.59,25.7,25.84,25.71Z' transform='translate(-183.1 115.9)'/%3E%3Cpath class='cls-3' d='M683,496.81H596c-16.25,0-25.84-9.53-25.84-25.71q0-87.23,0-174.45c0-15.82,9.7-25.46,25.58-25.46H770.22c15.91,0,25.59,9.63,25.59,25.46q0,87.47,0,175c0,15.49-9.78,25.2-25.33,25.21Q726.74,496.84,683,496.81Z' transform='translate(-183.1 115.9)'/%3E%3C/svg%3E`;\n    case \"text\":\n      height = (0.1 * width).toFixed(2);\n      return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 528.15 53.64'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052ff;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3ECoinbase_Wordmark_SubBrands_ALL%3C/title%3E%3Cpath class='cls-1' d='M164.45,15a15,15,0,0,0-11.74,5.4V0h-8.64V52.92h8.5V48a15,15,0,0,0,11.88,5.62c10.37,0,18.21-8.21,18.21-19.3S174.67,15,164.45,15Zm-1.3,30.67c-6.19,0-10.73-4.83-10.73-11.31S157,23,163.22,23s10.66,4.82,10.66,11.37S169.34,45.65,163.15,45.65Zm83.31-14.91-6.34-.93c-3-.43-5.18-1.44-5.18-3.82,0-2.59,2.8-3.89,6.62-3.89,4.18,0,6.84,1.8,7.42,4.76h8.35c-.94-7.49-6.7-11.88-15.55-11.88-9.15,0-15.2,4.68-15.2,11.3,0,6.34,4,10,12,11.16l6.33.94c3.1.43,4.83,1.65,4.83,4,0,2.95-3,4.17-7.2,4.17-5.12,0-8-2.09-8.43-5.25h-8.49c.79,7.27,6.48,12.38,16.84,12.38,9.44,0,15.7-4.32,15.7-11.74C258.12,35.28,253.58,31.82,246.46,30.74Zm-27.65-2.3c0-8.06-4.9-13.46-15.27-13.46-9.79,0-15.26,5-16.34,12.6h8.57c.43-3,2.73-5.4,7.63-5.4,4.39,0,6.55,1.94,6.55,4.32,0,3.09-4,3.88-8.85,4.39-6.63.72-14.84,3-14.84,11.66,0,6.7,5,11,12.89,11,6.19,0,10.08-2.59,12-6.7.28,3.67,3,6.05,6.84,6.05h5v-7.7h-4.25Zm-8.5,9.36c0,5-4.32,8.64-9.57,8.64-3.24,0-6-1.37-6-4.25,0-3.67,4.39-4.68,8.42-5.11s6-1.22,7.13-2.88ZM281.09,15c-11.09,0-19.23,8.35-19.23,19.36,0,11.6,8.72,19.3,19.37,19.3,9,0,16.06-5.33,17.86-12.89h-9c-1.3,3.31-4.47,5.19-8.71,5.19-5.55,0-9.72-3.46-10.66-9.51H299.3V33.12C299.3,22.46,291.53,15,281.09,15Zm-9.87,15.26c1.37-5.18,5.26-7.7,9.72-7.7,4.9,0,8.64,2.8,9.51,7.7ZM19.3,23a9.84,9.84,0,0,1,9.5,7h9.14c-1.65-8.93-9-15-18.57-15A19,19,0,0,0,0,34.34c0,11.09,8.28,19.3,19.37,19.3,9.36,0,16.85-6,18.5-15H28.8a9.75,9.75,0,0,1-9.43,7.06c-6.27,0-10.66-4.83-10.66-11.31S13,23,19.3,23Zm41.11-8A19,19,0,0,0,41,34.34c0,11.09,8.28,19.3,19.37,19.3A19,19,0,0,0,79.92,34.27C79.92,23.33,71.64,15,60.41,15Zm.07,30.67c-6.19,0-10.73-4.83-10.73-11.31S54.22,23,60.41,23s10.8,4.89,10.8,11.37S66.67,45.65,60.48,45.65ZM123.41,15c-5.62,0-9.29,2.3-11.45,5.54V15.7h-8.57V52.92H112V32.69C112,27,115.63,23,121,23c5,0,8.06,3.53,8.06,8.64V52.92h8.64V31C137.66,21.6,132.84,15,123.41,15ZM92,.36a5.36,5.36,0,0,0-5.55,5.47,5.55,5.55,0,0,0,11.09,0A5.35,5.35,0,0,0,92,.36Zm-9.72,23h5.4V52.92h8.64V15.7h-14Zm298.17-7.7L366.2,52.92H372L375.29,44H392l3.33,8.88h6L386.87,15.7ZM377,39.23l6.45-17.56h.1l6.56,17.56ZM362.66,15.7l-7.88,29h-.11l-8.14-29H341l-8,28.93h-.1l-8-28.87H319L329.82,53h5.45l8.19-29.24h.11L352,53h5.66L368.1,15.7Zm135.25,0v4.86h12.32V52.92h5.6V20.56h12.32V15.7ZM467.82,52.92h25.54V48.06H473.43v-12h18.35V31.35H473.43V20.56h19.93V15.7H467.82ZM443,15.7h-5.6V52.92h24.32V48.06H443Zm-30.45,0h-5.61V52.92h24.32V48.06H412.52Z'/%3E%3C/svg%3E`;\n    case \"textWithLogo\":\n      height = (0.25 * width).toFixed(2);\n      return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 308.44 77.61'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052ff;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M142.94,20.2l-7.88,29H135l-8.15-29h-5.55l-8,28.93h-.11l-8-28.87H99.27l10.84,37.27h5.44l8.2-29.24h.1l8.41,29.24h5.66L148.39,20.2Zm17.82,0L146.48,57.42h5.82l3.28-8.88h16.65l3.34,8.88h6L167.16,20.2Zm-3.44,23.52,6.45-17.55h.11l6.56,17.55ZM278.2,20.2v4.86h12.32V57.42h5.6V25.06h12.32V20.2ZM248.11,57.42h25.54V52.55H253.71V40.61h18.35V35.85H253.71V25.06h19.94V20.2H248.11ZM223.26,20.2h-5.61V57.42H242V52.55H223.26Zm-30.46,0h-5.6V57.42h24.32V52.55H192.8Zm-154,38A19.41,19.41,0,1,1,57.92,35.57H77.47a38.81,38.81,0,1,0,0,6.47H57.92A19.39,19.39,0,0,1,38.81,58.21Z'/%3E%3C/svg%3E`;\n    case \"textLight\":\n      height = (0.1 * width).toFixed(2);\n      return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 528.15 53.64'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fefefe;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3ECoinbase_Wordmark_SubBrands_ALL%3C/title%3E%3Cpath class='cls-1' d='M164.45,15a15,15,0,0,0-11.74,5.4V0h-8.64V52.92h8.5V48a15,15,0,0,0,11.88,5.62c10.37,0,18.21-8.21,18.21-19.3S174.67,15,164.45,15Zm-1.3,30.67c-6.19,0-10.73-4.83-10.73-11.31S157,23,163.22,23s10.66,4.82,10.66,11.37S169.34,45.65,163.15,45.65Zm83.31-14.91-6.34-.93c-3-.43-5.18-1.44-5.18-3.82,0-2.59,2.8-3.89,6.62-3.89,4.18,0,6.84,1.8,7.42,4.76h8.35c-.94-7.49-6.7-11.88-15.55-11.88-9.15,0-15.2,4.68-15.2,11.3,0,6.34,4,10,12,11.16l6.33.94c3.1.43,4.83,1.65,4.83,4,0,2.95-3,4.17-7.2,4.17-5.12,0-8-2.09-8.43-5.25h-8.49c.79,7.27,6.48,12.38,16.84,12.38,9.44,0,15.7-4.32,15.7-11.74C258.12,35.28,253.58,31.82,246.46,30.74Zm-27.65-2.3c0-8.06-4.9-13.46-15.27-13.46-9.79,0-15.26,5-16.34,12.6h8.57c.43-3,2.73-5.4,7.63-5.4,4.39,0,6.55,1.94,6.55,4.32,0,3.09-4,3.88-8.85,4.39-6.63.72-14.84,3-14.84,11.66,0,6.7,5,11,12.89,11,6.19,0,10.08-2.59,12-6.7.28,3.67,3,6.05,6.84,6.05h5v-7.7h-4.25Zm-8.5,9.36c0,5-4.32,8.64-9.57,8.64-3.24,0-6-1.37-6-4.25,0-3.67,4.39-4.68,8.42-5.11s6-1.22,7.13-2.88ZM281.09,15c-11.09,0-19.23,8.35-19.23,19.36,0,11.6,8.72,19.3,19.37,19.3,9,0,16.06-5.33,17.86-12.89h-9c-1.3,3.31-4.47,5.19-8.71,5.19-5.55,0-9.72-3.46-10.66-9.51H299.3V33.12C299.3,22.46,291.53,15,281.09,15Zm-9.87,15.26c1.37-5.18,5.26-7.7,9.72-7.7,4.9,0,8.64,2.8,9.51,7.7ZM19.3,23a9.84,9.84,0,0,1,9.5,7h9.14c-1.65-8.93-9-15-18.57-15A19,19,0,0,0,0,34.34c0,11.09,8.28,19.3,19.37,19.3,9.36,0,16.85-6,18.5-15H28.8a9.75,9.75,0,0,1-9.43,7.06c-6.27,0-10.66-4.83-10.66-11.31S13,23,19.3,23Zm41.11-8A19,19,0,0,0,41,34.34c0,11.09,8.28,19.3,19.37,19.3A19,19,0,0,0,79.92,34.27C79.92,23.33,71.64,15,60.41,15Zm.07,30.67c-6.19,0-10.73-4.83-10.73-11.31S54.22,23,60.41,23s10.8,4.89,10.8,11.37S66.67,45.65,60.48,45.65ZM123.41,15c-5.62,0-9.29,2.3-11.45,5.54V15.7h-8.57V52.92H112V32.69C112,27,115.63,23,121,23c5,0,8.06,3.53,8.06,8.64V52.92h8.64V31C137.66,21.6,132.84,15,123.41,15ZM92,.36a5.36,5.36,0,0,0-5.55,5.47,5.55,5.55,0,0,0,11.09,0A5.35,5.35,0,0,0,92,.36Zm-9.72,23h5.4V52.92h8.64V15.7h-14Zm298.17-7.7L366.2,52.92H372L375.29,44H392l3.33,8.88h6L386.87,15.7ZM377,39.23l6.45-17.56h.1l6.56,17.56ZM362.66,15.7l-7.88,29h-.11l-8.14-29H341l-8,28.93h-.1l-8-28.87H319L329.82,53h5.45l8.19-29.24h.11L352,53h5.66L368.1,15.7Zm135.25,0v4.86h12.32V52.92h5.6V20.56h12.32V15.7ZM467.82,52.92h25.54V48.06H473.43v-12h18.35V31.35H473.43V20.56h19.93V15.7H467.82ZM443,15.7h-5.6V52.92h24.32V48.06H443Zm-30.45,0h-5.61V52.92h24.32V48.06H412.52Z'/%3E%3C/svg%3E`;\n    case \"textWithLogoLight\":\n      height = (0.25 * width).toFixed(2);\n      return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 308.44 77.61'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fefefe;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M142.94,20.2l-7.88,29H135l-8.15-29h-5.55l-8,28.93h-.11l-8-28.87H99.27l10.84,37.27h5.44l8.2-29.24h.1l8.41,29.24h5.66L148.39,20.2Zm17.82,0L146.48,57.42h5.82l3.28-8.88h16.65l3.34,8.88h6L167.16,20.2Zm-3.44,23.52,6.45-17.55h.11l6.56,17.55ZM278.2,20.2v4.86h12.32V57.42h5.6V25.06h12.32V20.2ZM248.11,57.42h25.54V52.55H253.71V40.61h18.35V35.85H253.71V25.06h19.94V20.2H248.11ZM223.26,20.2h-5.61V57.42H242V52.55H223.26Zm-30.46,0h-5.6V57.42h24.32V52.55H192.8Zm-154,38A19.41,19.41,0,1,1,57.92,35.57H77.47a38.81,38.81,0,1,0,0,6.47H57.92A19.39,19.39,0,0,1,38.81,58.21Z'/%3E%3C/svg%3E`;\n    default:\n      height = width;\n      return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' viewBox='0 0 1024 1024' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Crect width='1024' height='1024' fill='%230052FF'/%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z' fill='white'/%3E %3C/svg%3E `;\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/core/storage/ScopedLocalStorage.js\nvar ScopedLocalStorage = class _ScopedLocalStorage {\n  constructor(scope, module) {\n    this.scope = scope;\n    this.module = module;\n  }\n  storeObject(key, item) {\n    this.setItem(key, JSON.stringify(item));\n  }\n  loadObject(key) {\n    const item = this.getItem(key);\n    return item ? JSON.parse(item) : void 0;\n  }\n  setItem(key, value) {\n    localStorage.setItem(this.scopedKey(key), value);\n  }\n  getItem(key) {\n    return localStorage.getItem(this.scopedKey(key));\n  }\n  removeItem(key) {\n    localStorage.removeItem(this.scopedKey(key));\n  }\n  clear() {\n    const prefix = this.scopedKey(\"\");\n    const keysToRemove = [];\n    for (let i3 = 0; i3 < localStorage.length; i3++) {\n      const key = localStorage.key(i3);\n      if (typeof key === \"string\" && key.startsWith(prefix)) {\n        keysToRemove.push(key);\n      }\n    }\n    keysToRemove.forEach((key) => localStorage.removeItem(key));\n  }\n  scopedKey(key) {\n    return `-${this.scope}${this.module ? `:${this.module}` : \"\"}:${key}`;\n  }\n  static clearAll() {\n    new _ScopedLocalStorage(\"CBWSDK\").clear();\n    new _ScopedLocalStorage(\"walletlink\").clear();\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/core/error/constants.js\nvar standardErrorCodes = {\n  rpc: {\n    invalidInput: -32e3,\n    resourceNotFound: -32001,\n    resourceUnavailable: -32002,\n    transactionRejected: -32003,\n    methodNotSupported: -32004,\n    limitExceeded: -32005,\n    parse: -32700,\n    invalidRequest: -32600,\n    methodNotFound: -32601,\n    invalidParams: -32602,\n    internal: -32603\n  },\n  provider: {\n    userRejectedRequest: 4001,\n    unauthorized: 4100,\n    unsupportedMethod: 4200,\n    disconnected: 4900,\n    chainDisconnected: 4901,\n    unsupportedChain: 4902\n  }\n};\nvar errorValues = {\n  \"-32700\": {\n    standard: \"JSON RPC 2.0\",\n    message: \"Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.\"\n  },\n  \"-32600\": {\n    standard: \"JSON RPC 2.0\",\n    message: \"The JSON sent is not a valid Request object.\"\n  },\n  \"-32601\": {\n    standard: \"JSON RPC 2.0\",\n    message: \"The method does not exist / is not available.\"\n  },\n  \"-32602\": {\n    standard: \"JSON RPC 2.0\",\n    message: \"Invalid method parameter(s).\"\n  },\n  \"-32603\": {\n    standard: \"JSON RPC 2.0\",\n    message: \"Internal JSON-RPC error.\"\n  },\n  \"-32000\": {\n    standard: \"EIP-1474\",\n    message: \"Invalid input.\"\n  },\n  \"-32001\": {\n    standard: \"EIP-1474\",\n    message: \"Resource not found.\"\n  },\n  \"-32002\": {\n    standard: \"EIP-1474\",\n    message: \"Resource unavailable.\"\n  },\n  \"-32003\": {\n    standard: \"EIP-1474\",\n    message: \"Transaction rejected.\"\n  },\n  \"-32004\": {\n    standard: \"EIP-1474\",\n    message: \"Method not supported.\"\n  },\n  \"-32005\": {\n    standard: \"EIP-1474\",\n    message: \"Request limit exceeded.\"\n  },\n  \"4001\": {\n    standard: \"EIP-1193\",\n    message: \"User rejected the request.\"\n  },\n  \"4100\": {\n    standard: \"EIP-1193\",\n    message: \"The requested account and/or method has not been authorized by the user.\"\n  },\n  \"4200\": {\n    standard: \"EIP-1193\",\n    message: \"The requested method is not supported by this Ethereum provider.\"\n  },\n  \"4900\": {\n    standard: \"EIP-1193\",\n    message: \"The provider is disconnected from all chains.\"\n  },\n  \"4901\": {\n    standard: \"EIP-1193\",\n    message: \"The provider is disconnected from the specified chain.\"\n  },\n  \"4902\": {\n    standard: \"EIP-3085\",\n    message: \"Unrecognized chain ID.\"\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/core/error/utils.js\nvar FALLBACK_MESSAGE = \"Unspecified error message.\";\nvar JSON_RPC_SERVER_ERROR_MESSAGE = \"Unspecified server error.\";\nfunction getMessageFromCode(code, fallbackMessage = FALLBACK_MESSAGE) {\n  if (code && Number.isInteger(code)) {\n    const codeString = code.toString();\n    if (hasKey(errorValues, codeString)) {\n      return errorValues[codeString].message;\n    }\n    if (isJsonRpcServerError(code)) {\n      return JSON_RPC_SERVER_ERROR_MESSAGE;\n    }\n  }\n  return fallbackMessage;\n}\nfunction isValidCode(code) {\n  if (!Number.isInteger(code)) {\n    return false;\n  }\n  const codeString = code.toString();\n  if (errorValues[codeString]) {\n    return true;\n  }\n  if (isJsonRpcServerError(code)) {\n    return true;\n  }\n  return false;\n}\nfunction serialize(error, { shouldIncludeStack = false } = {}) {\n  const serialized = {};\n  if (error && typeof error === \"object\" && !Array.isArray(error) && hasKey(error, \"code\") && isValidCode(error.code)) {\n    const _error = error;\n    serialized.code = _error.code;\n    if (_error.message && typeof _error.message === \"string\") {\n      serialized.message = _error.message;\n      if (hasKey(_error, \"data\")) {\n        serialized.data = _error.data;\n      }\n    } else {\n      serialized.message = getMessageFromCode(serialized.code);\n      serialized.data = { originalError: assignOriginalError(error) };\n    }\n  } else {\n    serialized.code = standardErrorCodes.rpc.internal;\n    serialized.message = hasStringProperty(error, \"message\") ? error.message : FALLBACK_MESSAGE;\n    serialized.data = { originalError: assignOriginalError(error) };\n  }\n  if (shouldIncludeStack) {\n    serialized.stack = hasStringProperty(error, \"stack\") ? error.stack : void 0;\n  }\n  return serialized;\n}\nfunction isJsonRpcServerError(code) {\n  return code >= -32099 && code <= -32e3;\n}\nfunction assignOriginalError(error) {\n  if (error && typeof error === \"object\" && !Array.isArray(error)) {\n    return Object.assign({}, error);\n  }\n  return error;\n}\nfunction hasKey(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\nfunction hasStringProperty(obj, prop) {\n  return typeof obj === \"object\" && obj !== null && prop in obj && typeof obj[prop] === \"string\";\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/core/error/errors.js\nvar standardErrors = {\n  rpc: {\n    parse: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.parse, arg),\n    invalidRequest: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.invalidRequest, arg),\n    invalidParams: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.invalidParams, arg),\n    methodNotFound: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.methodNotFound, arg),\n    internal: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.internal, arg),\n    server: (opts) => {\n      if (!opts || typeof opts !== \"object\" || Array.isArray(opts)) {\n        throw new Error(\"Ethereum RPC Server errors must provide single object argument.\");\n      }\n      const { code } = opts;\n      if (!Number.isInteger(code) || code > -32005 || code < -32099) {\n        throw new Error('\"code\" must be an integer such that: -32099 <= code <= -32005');\n      }\n      return getEthJsonRpcError(code, opts);\n    },\n    invalidInput: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.invalidInput, arg),\n    resourceNotFound: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.resourceNotFound, arg),\n    resourceUnavailable: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.resourceUnavailable, arg),\n    transactionRejected: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.transactionRejected, arg),\n    methodNotSupported: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.methodNotSupported, arg),\n    limitExceeded: (arg) => getEthJsonRpcError(standardErrorCodes.rpc.limitExceeded, arg)\n  },\n  provider: {\n    userRejectedRequest: (arg) => {\n      return getEthProviderError(standardErrorCodes.provider.userRejectedRequest, arg);\n    },\n    unauthorized: (arg) => {\n      return getEthProviderError(standardErrorCodes.provider.unauthorized, arg);\n    },\n    unsupportedMethod: (arg) => {\n      return getEthProviderError(standardErrorCodes.provider.unsupportedMethod, arg);\n    },\n    disconnected: (arg) => {\n      return getEthProviderError(standardErrorCodes.provider.disconnected, arg);\n    },\n    chainDisconnected: (arg) => {\n      return getEthProviderError(standardErrorCodes.provider.chainDisconnected, arg);\n    },\n    unsupportedChain: (arg) => {\n      return getEthProviderError(standardErrorCodes.provider.unsupportedChain, arg);\n    },\n    custom: (opts) => {\n      if (!opts || typeof opts !== \"object\" || Array.isArray(opts)) {\n        throw new Error(\"Ethereum Provider custom errors must provide single object argument.\");\n      }\n      const { code, message, data } = opts;\n      if (!message || typeof message !== \"string\") {\n        throw new Error('\"message\" must be a nonempty string');\n      }\n      return new EthereumProviderError(code, message, data);\n    }\n  }\n};\nfunction getEthJsonRpcError(code, arg) {\n  const [message, data] = parseOpts(arg);\n  return new EthereumRpcError(code, message || getMessageFromCode(code), data);\n}\nfunction getEthProviderError(code, arg) {\n  const [message, data] = parseOpts(arg);\n  return new EthereumProviderError(code, message || getMessageFromCode(code), data);\n}\nfunction parseOpts(arg) {\n  if (arg) {\n    if (typeof arg === \"string\") {\n      return [arg];\n    } else if (typeof arg === \"object\" && !Array.isArray(arg)) {\n      const { message, data } = arg;\n      if (message && typeof message !== \"string\") {\n        throw new Error(\"Must specify string message.\");\n      }\n      return [message || void 0, data];\n    }\n  }\n  return [];\n}\nvar EthereumRpcError = class extends Error {\n  constructor(code, message, data) {\n    if (!Number.isInteger(code)) {\n      throw new Error('\"code\" must be an integer.');\n    }\n    if (!message || typeof message !== \"string\") {\n      throw new Error('\"message\" must be a nonempty string.');\n    }\n    super(message);\n    this.code = code;\n    if (data !== void 0) {\n      this.data = data;\n    }\n  }\n};\nvar EthereumProviderError = class extends EthereumRpcError {\n  /**\n   * Create an Ethereum Provider JSON-RPC error.\n   * `code` must be an integer in the 1000 <= 4999 range.\n   */\n  constructor(code, message, data) {\n    if (!isValidEthProviderCode(code)) {\n      throw new Error('\"code\" must be an integer such that: 1000 <= code <= 4999');\n    }\n    super(code, message, data);\n  }\n};\nfunction isValidEthProviderCode(code) {\n  return Number.isInteger(code) && code >= 1e3 && code <= 4999;\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/core/type/index.js\nfunction OpaqueType() {\n  return (value) => value;\n}\nvar HexString = OpaqueType();\nvar AddressString = OpaqueType();\nvar BigIntString = OpaqueType();\nfunction IntNumber(num) {\n  return Math.floor(num);\n}\nvar RegExpString = OpaqueType();\n\n// node_modules/@coinbase/wallet-sdk/dist/core/type/util.js\nvar INT_STRING_REGEX = /^[0-9]*$/;\nvar HEXADECIMAL_STRING_REGEX = /^[a-f0-9]*$/;\nfunction randomBytesHex(length) {\n  return uint8ArrayToHex(crypto.getRandomValues(new Uint8Array(length)));\n}\nfunction uint8ArrayToHex(value) {\n  return [...value].map((b2) => b2.toString(16).padStart(2, \"0\")).join(\"\");\n}\nfunction hexStringToUint8Array(hexString) {\n  return new Uint8Array(hexString.match(/.{1,2}/g).map((byte) => Number.parseInt(byte, 16)));\n}\nfunction hexStringFromBuffer(buf, includePrefix = false) {\n  const hex = buf.toString(\"hex\");\n  return HexString(includePrefix ? `0x${hex}` : hex);\n}\nfunction encodeToHexString(str) {\n  return hexStringFromBuffer(ensureBuffer(str), true);\n}\nfunction bigIntStringFromBigInt(bi) {\n  return BigIntString(bi.toString(10));\n}\nfunction hexStringFromNumber(num) {\n  return HexString(`0x${BigInt(num).toString(16)}`);\n}\nfunction has0xPrefix(str) {\n  return str.startsWith(\"0x\") || str.startsWith(\"0X\");\n}\nfunction strip0x(hex) {\n  if (has0xPrefix(hex)) {\n    return hex.slice(2);\n  }\n  return hex;\n}\nfunction prepend0x(hex) {\n  if (has0xPrefix(hex)) {\n    return `0x${hex.slice(2)}`;\n  }\n  return `0x${hex}`;\n}\nfunction isHexString(hex) {\n  if (typeof hex !== \"string\") {\n    return false;\n  }\n  const s3 = strip0x(hex).toLowerCase();\n  return HEXADECIMAL_STRING_REGEX.test(s3);\n}\nfunction ensureHexString(hex, includePrefix = false) {\n  if (typeof hex === \"string\") {\n    const s3 = strip0x(hex).toLowerCase();\n    if (HEXADECIMAL_STRING_REGEX.test(s3)) {\n      return HexString(includePrefix ? `0x${s3}` : s3);\n    }\n  }\n  throw standardErrors.rpc.invalidParams(`\"${String(hex)}\" is not a hexadecimal string`);\n}\nfunction ensureEvenLengthHexString(hex, includePrefix = false) {\n  let h3 = ensureHexString(hex, false);\n  if (h3.length % 2 === 1) {\n    h3 = HexString(`0${h3}`);\n  }\n  return includePrefix ? HexString(`0x${h3}`) : h3;\n}\nfunction ensureAddressString(str) {\n  if (typeof str === \"string\") {\n    const s3 = strip0x(str).toLowerCase();\n    if (isHexString(s3) && s3.length === 40) {\n      return AddressString(prepend0x(s3));\n    }\n  }\n  throw standardErrors.rpc.invalidParams(`Invalid Ethereum address: ${String(str)}`);\n}\nfunction ensureBuffer(str) {\n  if (Buffer.isBuffer(str)) {\n    return str;\n  }\n  if (typeof str === \"string\") {\n    if (isHexString(str)) {\n      const s3 = ensureEvenLengthHexString(str, false);\n      return Buffer.from(s3, \"hex\");\n    }\n    return Buffer.from(str, \"utf8\");\n  }\n  throw standardErrors.rpc.invalidParams(`Not binary data: ${String(str)}`);\n}\nfunction ensureIntNumber(num) {\n  if (typeof num === \"number\" && Number.isInteger(num)) {\n    return IntNumber(num);\n  }\n  if (typeof num === \"string\") {\n    if (INT_STRING_REGEX.test(num)) {\n      return IntNumber(Number(num));\n    }\n    if (isHexString(num)) {\n      return IntNumber(Number(BigInt(ensureEvenLengthHexString(num, true))));\n    }\n  }\n  throw standardErrors.rpc.invalidParams(`Not an integer: ${String(num)}`);\n}\nfunction ensureBigInt(val) {\n  if (val !== null && (typeof val === \"bigint\" || isBigNumber(val))) {\n    return BigInt(val.toString(10));\n  }\n  if (typeof val === \"number\") {\n    return BigInt(ensureIntNumber(val));\n  }\n  if (typeof val === \"string\") {\n    if (INT_STRING_REGEX.test(val)) {\n      return BigInt(val);\n    }\n    if (isHexString(val)) {\n      return BigInt(ensureEvenLengthHexString(val, true));\n    }\n  }\n  throw standardErrors.rpc.invalidParams(`Not an integer: ${String(val)}`);\n}\nfunction ensureParsedJSONObject(val) {\n  if (typeof val === \"string\") {\n    return JSON.parse(val);\n  }\n  if (typeof val === \"object\") {\n    return val;\n  }\n  throw standardErrors.rpc.invalidParams(`Not a JSON string or an object: ${String(val)}`);\n}\nfunction isBigNumber(val) {\n  if (val == null || typeof val.constructor !== \"function\") {\n    return false;\n  }\n  const { constructor } = val;\n  return typeof constructor.config === \"function\" && typeof constructor.EUCLID === \"number\";\n}\nfunction getFavicon() {\n  const el = document.querySelector('link[sizes=\"192x192\"]') || document.querySelector('link[sizes=\"180x180\"]') || document.querySelector('link[rel=\"icon\"]') || document.querySelector('link[rel=\"shortcut icon\"]');\n  const { protocol, host } = document.location;\n  const href = el ? el.getAttribute(\"href\") : null;\n  if (!href || href.startsWith(\"javascript:\") || href.startsWith(\"vbscript:\")) {\n    return `${protocol}//${host}/favicon.ico`;\n  }\n  if (href.startsWith(\"http://\") || href.startsWith(\"https://\") || href.startsWith(\"data:\")) {\n    return href;\n  }\n  if (href.startsWith(\"//\")) {\n    return protocol + href;\n  }\n  return `${protocol}//${host}${href}`;\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/util/cipher.js\nasync function generateKeyPair() {\n  return crypto.subtle.generateKey({\n    name: \"ECDH\",\n    namedCurve: \"P-256\"\n  }, true, [\"deriveKey\"]);\n}\nasync function deriveSharedSecret(ownPrivateKey, peerPublicKey) {\n  return crypto.subtle.deriveKey({\n    name: \"ECDH\",\n    public: peerPublicKey\n  }, ownPrivateKey, {\n    name: \"AES-GCM\",\n    length: 256\n  }, false, [\"encrypt\", \"decrypt\"]);\n}\nasync function encrypt(sharedSecret, plainText) {\n  const iv = crypto.getRandomValues(new Uint8Array(12));\n  const cipherText = await crypto.subtle.encrypt({\n    name: \"AES-GCM\",\n    iv\n  }, sharedSecret, new TextEncoder().encode(plainText));\n  return { iv, cipherText };\n}\nasync function decrypt(sharedSecret, { iv, cipherText }) {\n  const plainText = await crypto.subtle.decrypt({\n    name: \"AES-GCM\",\n    iv\n  }, sharedSecret, cipherText);\n  return new TextDecoder().decode(plainText);\n}\nfunction getFormat(keyType) {\n  switch (keyType) {\n    case \"public\":\n      return \"spki\";\n    case \"private\":\n      return \"pkcs8\";\n  }\n}\nasync function exportKeyToHexString(type, key) {\n  const format = getFormat(type);\n  const exported = await crypto.subtle.exportKey(format, key);\n  return uint8ArrayToHex(new Uint8Array(exported));\n}\nasync function importKeyFromHexString(type, hexString) {\n  const format = getFormat(type);\n  const arrayBuffer = hexStringToUint8Array(hexString).buffer;\n  return await crypto.subtle.importKey(format, new Uint8Array(arrayBuffer), {\n    name: \"ECDH\",\n    namedCurve: \"P-256\"\n  }, true, type === \"private\" ? [\"deriveKey\"] : []);\n}\nasync function encryptContent(content, sharedSecret) {\n  const serialized = JSON.stringify(content, (_2, value) => {\n    if (!(value instanceof Error))\n      return value;\n    const error = value;\n    return Object.assign(Object.assign({}, error.code ? { code: error.code } : {}), { message: error.message });\n  });\n  return encrypt(sharedSecret, serialized);\n}\nasync function decryptContent(encryptedData, sharedSecret) {\n  return JSON.parse(await decrypt(sharedSecret, encryptedData));\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/scw/SCWKeyManager.js\nvar OWN_PRIVATE_KEY = {\n  storageKey: \"ownPrivateKey\",\n  keyType: \"private\"\n};\nvar OWN_PUBLIC_KEY = {\n  storageKey: \"ownPublicKey\",\n  keyType: \"public\"\n};\nvar PEER_PUBLIC_KEY = {\n  storageKey: \"peerPublicKey\",\n  keyType: \"public\"\n};\nvar SCWKeyManager = class {\n  constructor() {\n    this.storage = new ScopedLocalStorage(\"CBWSDK\", \"SCWKeyManager\");\n    this.ownPrivateKey = null;\n    this.ownPublicKey = null;\n    this.peerPublicKey = null;\n    this.sharedSecret = null;\n  }\n  async getOwnPublicKey() {\n    await this.loadKeysIfNeeded();\n    return this.ownPublicKey;\n  }\n  // returns null if the shared secret is not yet derived\n  async getSharedSecret() {\n    await this.loadKeysIfNeeded();\n    return this.sharedSecret;\n  }\n  async setPeerPublicKey(key) {\n    this.sharedSecret = null;\n    this.peerPublicKey = key;\n    await this.storeKey(PEER_PUBLIC_KEY, key);\n    await this.loadKeysIfNeeded();\n  }\n  async clear() {\n    this.ownPrivateKey = null;\n    this.ownPublicKey = null;\n    this.peerPublicKey = null;\n    this.sharedSecret = null;\n    this.storage.removeItem(OWN_PUBLIC_KEY.storageKey);\n    this.storage.removeItem(OWN_PRIVATE_KEY.storageKey);\n    this.storage.removeItem(PEER_PUBLIC_KEY.storageKey);\n  }\n  async generateKeyPair() {\n    const newKeyPair = await generateKeyPair();\n    this.ownPrivateKey = newKeyPair.privateKey;\n    this.ownPublicKey = newKeyPair.publicKey;\n    await this.storeKey(OWN_PRIVATE_KEY, newKeyPair.privateKey);\n    await this.storeKey(OWN_PUBLIC_KEY, newKeyPair.publicKey);\n  }\n  async loadKeysIfNeeded() {\n    if (this.ownPrivateKey === null) {\n      this.ownPrivateKey = await this.loadKey(OWN_PRIVATE_KEY);\n    }\n    if (this.ownPublicKey === null) {\n      this.ownPublicKey = await this.loadKey(OWN_PUBLIC_KEY);\n    }\n    if (this.ownPrivateKey === null || this.ownPublicKey === null) {\n      await this.generateKeyPair();\n    }\n    if (this.peerPublicKey === null) {\n      this.peerPublicKey = await this.loadKey(PEER_PUBLIC_KEY);\n    }\n    if (this.sharedSecret === null) {\n      if (this.ownPrivateKey === null || this.peerPublicKey === null)\n        return;\n      this.sharedSecret = await deriveSharedSecret(this.ownPrivateKey, this.peerPublicKey);\n    }\n  }\n  // storage methods\n  async loadKey(item) {\n    const key = this.storage.getItem(item.storageKey);\n    if (!key)\n      return null;\n    return importKeyFromHexString(item.keyType, key);\n  }\n  async storeKey(item, key) {\n    const hexString = await exportKeyToHexString(item.keyType, key);\n    this.storage.setItem(item.storageKey, hexString);\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sdk-info.js\nvar VERSION = \"4.2.2\";\nvar NAME = \"@coinbase/wallet-sdk\";\n\n// node_modules/@coinbase/wallet-sdk/dist/util/provider.js\nasync function fetchRPCRequest(request, rpcUrl) {\n  const requestBody = Object.assign(Object.assign({}, request), { jsonrpc: \"2.0\", id: crypto.randomUUID() });\n  const res = await window.fetch(rpcUrl, {\n    method: \"POST\",\n    body: JSON.stringify(requestBody),\n    mode: \"cors\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"X-Cbw-Sdk-Version\": VERSION,\n      \"X-Cbw-Sdk-Platform\": NAME\n    }\n  });\n  const { result, error } = await res.json();\n  if (error)\n    throw error;\n  return result;\n}\nfunction getCoinbaseInjectedLegacyProvider() {\n  const window2 = globalThis;\n  return window2.coinbaseWalletExtension;\n}\nfunction getInjectedEthereum() {\n  var _a, _b;\n  try {\n    const window2 = globalThis;\n    return (_a = window2.ethereum) !== null && _a !== void 0 ? _a : (_b = window2.top) === null || _b === void 0 ? void 0 : _b.ethereum;\n  } catch (_c) {\n    return void 0;\n  }\n}\nfunction getCoinbaseInjectedProvider({ metadata, preference }) {\n  var _a, _b;\n  const { appName, appLogoUrl, appChainIds } = metadata;\n  if (preference.options !== \"smartWalletOnly\") {\n    const extension = getCoinbaseInjectedLegacyProvider();\n    if (extension) {\n      (_a = extension.setAppInfo) === null || _a === void 0 ? void 0 : _a.call(extension, appName, appLogoUrl, appChainIds, preference);\n      return extension;\n    }\n  }\n  const ethereum = getInjectedEthereum();\n  if (ethereum === null || ethereum === void 0 ? void 0 : ethereum.isCoinbaseBrowser) {\n    (_b = ethereum.setAppInfo) === null || _b === void 0 ? void 0 : _b.call(ethereum, appName, appLogoUrl, appChainIds, preference);\n    return ethereum;\n  }\n  return void 0;\n}\nfunction checkErrorForInvalidRequestArgs(args) {\n  if (!args || typeof args !== \"object\" || Array.isArray(args)) {\n    throw standardErrors.rpc.invalidParams({\n      message: \"Expected a single, non-array, object argument.\",\n      data: args\n    });\n  }\n  const { method, params } = args;\n  if (typeof method !== \"string\" || method.length === 0) {\n    throw standardErrors.rpc.invalidParams({\n      message: \"'args.method' must be a non-empty string.\",\n      data: args\n    });\n  }\n  if (params !== void 0 && !Array.isArray(params) && (typeof params !== \"object\" || params === null)) {\n    throw standardErrors.rpc.invalidParams({\n      message: \"'args.params' must be an object or array if provided.\",\n      data: args\n    });\n  }\n  switch (method) {\n    case \"eth_sign\":\n    case \"eth_signTypedData_v2\":\n    case \"eth_subscribe\":\n    case \"eth_unsubscribe\":\n      throw standardErrors.provider.unsupportedMethod();\n  }\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/scw/SCWSigner.js\nvar ACCOUNTS_KEY = \"accounts\";\nvar ACTIVE_CHAIN_STORAGE_KEY = \"activeChain\";\nvar AVAILABLE_CHAINS_STORAGE_KEY = \"availableChains\";\nvar WALLET_CAPABILITIES_STORAGE_KEY = \"walletCapabilities\";\nvar SCWSigner = class {\n  constructor(params) {\n    var _a, _b, _c;\n    this.metadata = params.metadata;\n    this.communicator = params.communicator;\n    this.callback = params.callback;\n    this.keyManager = new SCWKeyManager();\n    this.storage = new ScopedLocalStorage(\"CBWSDK\", \"SCWStateManager\");\n    this.accounts = (_a = this.storage.loadObject(ACCOUNTS_KEY)) !== null && _a !== void 0 ? _a : [];\n    this.chain = this.storage.loadObject(ACTIVE_CHAIN_STORAGE_KEY) || {\n      id: (_c = (_b = params.metadata.appChainIds) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : 1\n    };\n    this.handshake = this.handshake.bind(this);\n    this.request = this.request.bind(this);\n    this.createRequestMessage = this.createRequestMessage.bind(this);\n    this.decryptResponseMessage = this.decryptResponseMessage.bind(this);\n  }\n  async handshake(args) {\n    var _a, _b;\n    const handshakeMessage = await this.createRequestMessage({\n      handshake: {\n        method: args.method,\n        params: Object.assign({}, this.metadata, (_a = args.params) !== null && _a !== void 0 ? _a : {})\n      }\n    });\n    const response = await this.communicator.postRequestAndWaitForResponse(handshakeMessage);\n    if (\"failure\" in response.content)\n      throw response.content.failure;\n    const peerPublicKey = await importKeyFromHexString(\"public\", response.sender);\n    await this.keyManager.setPeerPublicKey(peerPublicKey);\n    const decrypted = await this.decryptResponseMessage(response);\n    const result = decrypted.result;\n    if (\"error\" in result)\n      throw result.error;\n    const accounts = result.value;\n    this.accounts = accounts;\n    this.storage.storeObject(ACCOUNTS_KEY, accounts);\n    (_b = this.callback) === null || _b === void 0 ? void 0 : _b.call(this, \"accountsChanged\", accounts);\n  }\n  async request(request) {\n    var _a;\n    if (this.accounts.length === 0) {\n      throw standardErrors.provider.unauthorized();\n    }\n    switch (request.method) {\n      case \"eth_requestAccounts\":\n        (_a = this.callback) === null || _a === void 0 ? void 0 : _a.call(this, \"connect\", { chainId: hexStringFromNumber(this.chain.id) });\n        return this.accounts;\n      case \"eth_accounts\":\n        return this.accounts;\n      case \"eth_coinbase\":\n        return this.accounts[0];\n      case \"net_version\":\n        return this.chain.id;\n      case \"eth_chainId\":\n        return hexStringFromNumber(this.chain.id);\n      case \"wallet_getCapabilities\":\n        return this.storage.loadObject(WALLET_CAPABILITIES_STORAGE_KEY);\n      case \"wallet_switchEthereumChain\":\n        return this.handleSwitchChainRequest(request);\n      case \"eth_ecRecover\":\n      case \"personal_sign\":\n      case \"personal_ecRecover\":\n      case \"eth_signTransaction\":\n      case \"eth_sendTransaction\":\n      case \"eth_signTypedData_v1\":\n      case \"eth_signTypedData_v3\":\n      case \"eth_signTypedData_v4\":\n      case \"eth_signTypedData\":\n      case \"wallet_addEthereumChain\":\n      case \"wallet_watchAsset\":\n      case \"wallet_sendCalls\":\n      case \"wallet_showCallsStatus\":\n      case \"wallet_grantPermissions\":\n        return this.sendRequestToPopup(request);\n      default:\n        if (!this.chain.rpcUrl)\n          throw standardErrors.rpc.internal(\"No RPC URL set for chain\");\n        return fetchRPCRequest(request, this.chain.rpcUrl);\n    }\n  }\n  async sendRequestToPopup(request) {\n    var _a, _b;\n    await ((_b = (_a = this.communicator).waitForPopupLoaded) === null || _b === void 0 ? void 0 : _b.call(_a));\n    const response = await this.sendEncryptedRequest(request);\n    const decrypted = await this.decryptResponseMessage(response);\n    const result = decrypted.result;\n    if (\"error\" in result)\n      throw result.error;\n    return result.value;\n  }\n  async cleanup() {\n    var _a, _b;\n    this.storage.clear();\n    await this.keyManager.clear();\n    this.accounts = [];\n    this.chain = {\n      id: (_b = (_a = this.metadata.appChainIds) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : 1\n    };\n  }\n  /**\n   * @returns `null` if the request was successful.\n   * https://eips.ethereum.org/EIPS/eip-3326#wallet_switchethereumchain\n   */\n  async handleSwitchChainRequest(request) {\n    var _a;\n    const params = request.params;\n    if (!params || !((_a = params[0]) === null || _a === void 0 ? void 0 : _a.chainId)) {\n      throw standardErrors.rpc.invalidParams();\n    }\n    const chainId = ensureIntNumber(params[0].chainId);\n    const localResult = this.updateChain(chainId);\n    if (localResult)\n      return null;\n    const popupResult = await this.sendRequestToPopup(request);\n    if (popupResult === null) {\n      this.updateChain(chainId);\n    }\n    return popupResult;\n  }\n  async sendEncryptedRequest(request) {\n    const sharedSecret = await this.keyManager.getSharedSecret();\n    if (!sharedSecret) {\n      throw standardErrors.provider.unauthorized(\"No valid session found, try requestAccounts before other methods\");\n    }\n    const encrypted = await encryptContent({\n      action: request,\n      chainId: this.chain.id\n    }, sharedSecret);\n    const message = await this.createRequestMessage({ encrypted });\n    return this.communicator.postRequestAndWaitForResponse(message);\n  }\n  async createRequestMessage(content) {\n    const publicKey = await exportKeyToHexString(\"public\", await this.keyManager.getOwnPublicKey());\n    return {\n      id: crypto.randomUUID(),\n      sender: publicKey,\n      content,\n      timestamp: /* @__PURE__ */ new Date()\n    };\n  }\n  async decryptResponseMessage(message) {\n    var _a, _b;\n    const content = message.content;\n    if (\"failure\" in content) {\n      throw content.failure;\n    }\n    const sharedSecret = await this.keyManager.getSharedSecret();\n    if (!sharedSecret) {\n      throw standardErrors.provider.unauthorized(\"Invalid session\");\n    }\n    const response = await decryptContent(content.encrypted, sharedSecret);\n    const availableChains = (_a = response.data) === null || _a === void 0 ? void 0 : _a.chains;\n    if (availableChains) {\n      const chains = Object.entries(availableChains).map(([id, rpcUrl]) => ({\n        id: Number(id),\n        rpcUrl\n      }));\n      this.storage.storeObject(AVAILABLE_CHAINS_STORAGE_KEY, chains);\n      this.updateChain(this.chain.id, chains);\n    }\n    const walletCapabilities = (_b = response.data) === null || _b === void 0 ? void 0 : _b.capabilities;\n    if (walletCapabilities) {\n      this.storage.storeObject(WALLET_CAPABILITIES_STORAGE_KEY, walletCapabilities);\n    }\n    return response;\n  }\n  updateChain(chainId, newAvailableChains) {\n    var _a;\n    const chains = newAvailableChains !== null && newAvailableChains !== void 0 ? newAvailableChains : this.storage.loadObject(AVAILABLE_CHAINS_STORAGE_KEY);\n    const chain = chains === null || chains === void 0 ? void 0 : chains.find((chain2) => chain2.id === chainId);\n    if (!chain)\n      return false;\n    if (chain !== this.chain) {\n      this.chain = chain;\n      this.storage.storeObject(ACTIVE_CHAIN_STORAGE_KEY, chain);\n      (_a = this.callback) === null || _a === void 0 ? void 0 : _a.call(this, \"chainChanged\", hexStringFromNumber(chain.id));\n    }\n    return true;\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/WalletLinkSigner.js\nvar import_eth_eip712_util = __toESM(require_eth_eip712_util(), 1);\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/constants.js\nvar WALLET_USER_NAME_KEY = \"walletUsername\";\nvar LOCAL_STORAGE_ADDRESSES_KEY = \"Addresses\";\nvar APP_VERSION_KEY = \"AppVersion\";\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/type/Web3Response.js\nfunction isErrorResponse(response) {\n  return response.errorMessage !== void 0;\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/connection/WalletLinkCipher.js\nvar WalletLinkCipher = class {\n  // @param secret hex representation of 32-byte secret\n  constructor(secret) {\n    this.secret = secret;\n  }\n  /**\n   *\n   * @param plainText string to be encrypted\n   * returns hex string representation of bytes in the order: initialization vector (iv),\n   * auth tag, encrypted plaintext. IV is 12 bytes. Auth tag is 16 bytes. Remaining bytes are the\n   * encrypted plainText.\n   */\n  async encrypt(plainText) {\n    const secret = this.secret;\n    if (secret.length !== 64)\n      throw Error(`secret must be 256 bits`);\n    const ivBytes = crypto.getRandomValues(new Uint8Array(12));\n    const secretKey = await crypto.subtle.importKey(\"raw\", hexStringToUint8Array(secret), { name: \"aes-gcm\" }, false, [\"encrypt\", \"decrypt\"]);\n    const enc = new TextEncoder();\n    const encryptedResult = await window.crypto.subtle.encrypt({\n      name: \"AES-GCM\",\n      iv: ivBytes\n    }, secretKey, enc.encode(plainText));\n    const tagLength = 16;\n    const authTag = encryptedResult.slice(encryptedResult.byteLength - tagLength);\n    const encryptedPlaintext = encryptedResult.slice(0, encryptedResult.byteLength - tagLength);\n    const authTagBytes = new Uint8Array(authTag);\n    const encryptedPlaintextBytes = new Uint8Array(encryptedPlaintext);\n    const concatted = new Uint8Array([...ivBytes, ...authTagBytes, ...encryptedPlaintextBytes]);\n    return uint8ArrayToHex(concatted);\n  }\n  /**\n   *\n   * @param cipherText hex string representation of bytes in the order: initialization vector (iv),\n   * auth tag, encrypted plaintext. IV is 12 bytes. Auth tag is 16 bytes.\n   */\n  async decrypt(cipherText) {\n    const secret = this.secret;\n    if (secret.length !== 64)\n      throw Error(`secret must be 256 bits`);\n    return new Promise((resolve, reject) => {\n      void async function() {\n        const secretKey = await crypto.subtle.importKey(\"raw\", hexStringToUint8Array(secret), { name: \"aes-gcm\" }, false, [\"encrypt\", \"decrypt\"]);\n        const encrypted = hexStringToUint8Array(cipherText);\n        const ivBytes = encrypted.slice(0, 12);\n        const authTagBytes = encrypted.slice(12, 28);\n        const encryptedPlaintextBytes = encrypted.slice(28);\n        const concattedBytes = new Uint8Array([...encryptedPlaintextBytes, ...authTagBytes]);\n        const algo = {\n          name: \"AES-GCM\",\n          iv: new Uint8Array(ivBytes)\n        };\n        try {\n          const decrypted = await window.crypto.subtle.decrypt(algo, secretKey, concattedBytes);\n          const decoder = new TextDecoder();\n          resolve(decoder.decode(decrypted));\n        } catch (err) {\n          reject(err);\n        }\n      }();\n    });\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/connection/WalletLinkHTTP.js\nvar WalletLinkHTTP = class {\n  constructor(linkAPIUrl, sessionId, sessionKey) {\n    this.linkAPIUrl = linkAPIUrl;\n    this.sessionId = sessionId;\n    const credentials = `${sessionId}:${sessionKey}`;\n    this.auth = `Basic ${btoa(credentials)}`;\n  }\n  // mark unseen events as seen\n  async markUnseenEventsAsSeen(events) {\n    return Promise.all(events.map((e3) => fetch(`${this.linkAPIUrl}/events/${e3.eventId}/seen`, {\n      method: \"POST\",\n      headers: {\n        Authorization: this.auth\n      }\n    }))).catch((error) => console.error(\"Unabled to mark event as failed:\", error));\n  }\n  async fetchUnseenEvents() {\n    var _a;\n    const response = await fetch(`${this.linkAPIUrl}/events?unseen=true`, {\n      headers: {\n        Authorization: this.auth\n      }\n    });\n    if (response.ok) {\n      const { events, error } = await response.json();\n      if (error) {\n        throw new Error(`Check unseen events failed: ${error}`);\n      }\n      const responseEvents = (_a = events === null || events === void 0 ? void 0 : events.filter((e3) => e3.event === \"Web3Response\").map((e3) => ({\n        type: \"Event\",\n        sessionId: this.sessionId,\n        eventId: e3.id,\n        event: e3.event,\n        data: e3.data\n      }))) !== null && _a !== void 0 ? _a : [];\n      this.markUnseenEventsAsSeen(responseEvents);\n      return responseEvents;\n    }\n    throw new Error(`Check unseen events failed: ${response.status}`);\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/connection/WalletLinkWebSocket.js\nvar ConnectionState;\n(function(ConnectionState2) {\n  ConnectionState2[ConnectionState2[\"DISCONNECTED\"] = 0] = \"DISCONNECTED\";\n  ConnectionState2[ConnectionState2[\"CONNECTING\"] = 1] = \"CONNECTING\";\n  ConnectionState2[ConnectionState2[\"CONNECTED\"] = 2] = \"CONNECTED\";\n})(ConnectionState || (ConnectionState = {}));\nvar WalletLinkWebSocket = class {\n  setConnectionStateListener(listener) {\n    this.connectionStateListener = listener;\n  }\n  setIncomingDataListener(listener) {\n    this.incomingDataListener = listener;\n  }\n  /**\n   * Constructor\n   * @param url WebSocket server URL\n   * @param [WebSocketClass] Custom WebSocket implementation\n   */\n  constructor(url, WebSocketClass = WebSocket) {\n    this.WebSocketClass = WebSocketClass;\n    this.webSocket = null;\n    this.pendingData = [];\n    this.url = url.replace(/^http/, \"ws\");\n  }\n  /**\n   * Make a websocket connection\n   * @returns a Promise that resolves when connected\n   */\n  async connect() {\n    if (this.webSocket) {\n      throw new Error(\"webSocket object is not null\");\n    }\n    return new Promise((resolve, reject) => {\n      var _a;\n      let webSocket;\n      try {\n        this.webSocket = webSocket = new this.WebSocketClass(this.url);\n      } catch (err) {\n        reject(err);\n        return;\n      }\n      (_a = this.connectionStateListener) === null || _a === void 0 ? void 0 : _a.call(this, ConnectionState.CONNECTING);\n      webSocket.onclose = (evt) => {\n        var _a2;\n        this.clearWebSocket();\n        reject(new Error(`websocket error ${evt.code}: ${evt.reason}`));\n        (_a2 = this.connectionStateListener) === null || _a2 === void 0 ? void 0 : _a2.call(this, ConnectionState.DISCONNECTED);\n      };\n      webSocket.onopen = (_2) => {\n        var _a2;\n        resolve();\n        (_a2 = this.connectionStateListener) === null || _a2 === void 0 ? void 0 : _a2.call(this, ConnectionState.CONNECTED);\n        if (this.pendingData.length > 0) {\n          const pending = [...this.pendingData];\n          pending.forEach((data) => this.sendData(data));\n          this.pendingData = [];\n        }\n      };\n      webSocket.onmessage = (evt) => {\n        var _a2, _b;\n        if (evt.data === \"h\") {\n          (_a2 = this.incomingDataListener) === null || _a2 === void 0 ? void 0 : _a2.call(this, {\n            type: \"Heartbeat\"\n          });\n        } else {\n          try {\n            const message = JSON.parse(evt.data);\n            (_b = this.incomingDataListener) === null || _b === void 0 ? void 0 : _b.call(this, message);\n          } catch (_c) {\n          }\n        }\n      };\n    });\n  }\n  /**\n   * Disconnect from server\n   */\n  disconnect() {\n    var _a;\n    const { webSocket } = this;\n    if (!webSocket) {\n      return;\n    }\n    this.clearWebSocket();\n    (_a = this.connectionStateListener) === null || _a === void 0 ? void 0 : _a.call(this, ConnectionState.DISCONNECTED);\n    this.connectionStateListener = void 0;\n    this.incomingDataListener = void 0;\n    try {\n      webSocket.close();\n    } catch (_b) {\n    }\n  }\n  /**\n   * Send data to server\n   * @param data text to send\n   */\n  sendData(data) {\n    const { webSocket } = this;\n    if (!webSocket) {\n      this.pendingData.push(data);\n      this.connect();\n      return;\n    }\n    webSocket.send(data);\n  }\n  clearWebSocket() {\n    const { webSocket } = this;\n    if (!webSocket) {\n      return;\n    }\n    this.webSocket = null;\n    webSocket.onclose = null;\n    webSocket.onerror = null;\n    webSocket.onmessage = null;\n    webSocket.onopen = null;\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/connection/WalletLinkConnection.js\nvar HEARTBEAT_INTERVAL = 1e4;\nvar REQUEST_TIMEOUT = 6e4;\nvar WalletLinkConnection = class {\n  /**\n   * Constructor\n   * @param session Session\n   * @param linkAPIUrl Coinbase Wallet link server URL\n   * @param listener WalletLinkConnectionUpdateListener\n   * @param [WebSocketClass] Custom WebSocket implementation\n   */\n  constructor({ session, linkAPIUrl, listener }) {\n    this.destroyed = false;\n    this.lastHeartbeatResponse = 0;\n    this.nextReqId = IntNumber(1);\n    this._connected = false;\n    this._linked = false;\n    this.shouldFetchUnseenEventsOnConnect = false;\n    this.requestResolutions = /* @__PURE__ */ new Map();\n    this.handleSessionMetadataUpdated = (metadata) => {\n      if (!metadata)\n        return;\n      const handlers = /* @__PURE__ */ new Map([\n        [\"__destroyed\", this.handleDestroyed],\n        [\"EthereumAddress\", this.handleAccountUpdated],\n        [\"WalletUsername\", this.handleWalletUsernameUpdated],\n        [\"AppVersion\", this.handleAppVersionUpdated],\n        [\n          \"ChainId\",\n          // ChainId and JsonRpcUrl are always updated together\n          (v3) => metadata.JsonRpcUrl && this.handleChainUpdated(v3, metadata.JsonRpcUrl)\n        ]\n      ]);\n      handlers.forEach((handler, key) => {\n        const value = metadata[key];\n        if (value === void 0)\n          return;\n        handler(value);\n      });\n    };\n    this.handleDestroyed = (__destroyed) => {\n      var _a;\n      if (__destroyed !== \"1\")\n        return;\n      (_a = this.listener) === null || _a === void 0 ? void 0 : _a.resetAndReload();\n    };\n    this.handleAccountUpdated = async (encryptedEthereumAddress) => {\n      var _a;\n      const address = await this.cipher.decrypt(encryptedEthereumAddress);\n      (_a = this.listener) === null || _a === void 0 ? void 0 : _a.accountUpdated(address);\n    };\n    this.handleMetadataUpdated = async (key, encryptedMetadataValue) => {\n      var _a;\n      const decryptedValue = await this.cipher.decrypt(encryptedMetadataValue);\n      (_a = this.listener) === null || _a === void 0 ? void 0 : _a.metadataUpdated(key, decryptedValue);\n    };\n    this.handleWalletUsernameUpdated = async (walletUsername) => {\n      this.handleMetadataUpdated(WALLET_USER_NAME_KEY, walletUsername);\n    };\n    this.handleAppVersionUpdated = async (appVersion) => {\n      this.handleMetadataUpdated(APP_VERSION_KEY, appVersion);\n    };\n    this.handleChainUpdated = async (encryptedChainId, encryptedJsonRpcUrl) => {\n      var _a;\n      const chainId = await this.cipher.decrypt(encryptedChainId);\n      const jsonRpcUrl = await this.cipher.decrypt(encryptedJsonRpcUrl);\n      (_a = this.listener) === null || _a === void 0 ? void 0 : _a.chainUpdated(chainId, jsonRpcUrl);\n    };\n    this.session = session;\n    this.cipher = new WalletLinkCipher(session.secret);\n    this.listener = listener;\n    const ws = new WalletLinkWebSocket(`${linkAPIUrl}/rpc`, WebSocket);\n    ws.setConnectionStateListener(async (state) => {\n      let connected = false;\n      switch (state) {\n        case ConnectionState.DISCONNECTED:\n          if (!this.destroyed) {\n            const connect = async () => {\n              await new Promise((resolve) => setTimeout(resolve, 5e3));\n              if (!this.destroyed) {\n                ws.connect().catch(() => {\n                  connect();\n                });\n              }\n            };\n            connect();\n          }\n          break;\n        case ConnectionState.CONNECTED:\n          connected = await this.handleConnected();\n          this.updateLastHeartbeat();\n          setInterval(() => {\n            this.heartbeat();\n          }, HEARTBEAT_INTERVAL);\n          if (this.shouldFetchUnseenEventsOnConnect) {\n            this.fetchUnseenEventsAPI();\n          }\n          break;\n        case ConnectionState.CONNECTING:\n          break;\n      }\n      if (this.connected !== connected) {\n        this.connected = connected;\n      }\n    });\n    ws.setIncomingDataListener((m2) => {\n      var _a;\n      switch (m2.type) {\n        case \"Heartbeat\":\n          this.updateLastHeartbeat();\n          return;\n        case \"IsLinkedOK\":\n        case \"Linked\": {\n          const linked = m2.type === \"IsLinkedOK\" ? m2.linked : void 0;\n          this.linked = linked || m2.onlineGuests > 0;\n          break;\n        }\n        case \"GetSessionConfigOK\":\n        case \"SessionConfigUpdated\": {\n          this.handleSessionMetadataUpdated(m2.metadata);\n          break;\n        }\n        case \"Event\": {\n          this.handleIncomingEvent(m2);\n          break;\n        }\n      }\n      if (m2.id !== void 0) {\n        (_a = this.requestResolutions.get(m2.id)) === null || _a === void 0 ? void 0 : _a(m2);\n      }\n    });\n    this.ws = ws;\n    this.http = new WalletLinkHTTP(linkAPIUrl, session.id, session.key);\n  }\n  /**\n   * Make a connection to the server\n   */\n  connect() {\n    if (this.destroyed) {\n      throw new Error(\"instance is destroyed\");\n    }\n    this.ws.connect();\n  }\n  /**\n   * Terminate connection, and mark as destroyed. To reconnect, create a new\n   * instance of WalletSDKConnection\n   */\n  async destroy() {\n    if (this.destroyed)\n      return;\n    await this.makeRequest({\n      type: \"SetSessionConfig\",\n      id: IntNumber(this.nextReqId++),\n      sessionId: this.session.id,\n      metadata: { __destroyed: \"1\" }\n    }, { timeout: 1e3 });\n    this.destroyed = true;\n    this.ws.disconnect();\n    this.listener = void 0;\n  }\n  get connected() {\n    return this._connected;\n  }\n  set connected(connected) {\n    this._connected = connected;\n  }\n  get linked() {\n    return this._linked;\n  }\n  set linked(linked) {\n    var _a, _b;\n    this._linked = linked;\n    if (linked)\n      (_a = this.onceLinked) === null || _a === void 0 ? void 0 : _a.call(this);\n    (_b = this.listener) === null || _b === void 0 ? void 0 : _b.linkedUpdated(linked);\n  }\n  setOnceLinked(callback) {\n    return new Promise((resolve) => {\n      if (this.linked) {\n        callback().then(resolve);\n      } else {\n        this.onceLinked = () => {\n          callback().then(resolve);\n          this.onceLinked = void 0;\n        };\n      }\n    });\n  }\n  async handleIncomingEvent(m2) {\n    var _a;\n    if (m2.type !== \"Event\" || m2.event !== \"Web3Response\") {\n      return;\n    }\n    const decryptedData = await this.cipher.decrypt(m2.data);\n    const message = JSON.parse(decryptedData);\n    if (message.type !== \"WEB3_RESPONSE\")\n      return;\n    const { id, response } = message;\n    (_a = this.listener) === null || _a === void 0 ? void 0 : _a.handleWeb3ResponseMessage(id, response);\n  }\n  async checkUnseenEvents() {\n    if (!this.connected) {\n      this.shouldFetchUnseenEventsOnConnect = true;\n      return;\n    }\n    await new Promise((resolve) => setTimeout(resolve, 250));\n    try {\n      await this.fetchUnseenEventsAPI();\n    } catch (e3) {\n      console.error(\"Unable to check for unseen events\", e3);\n    }\n  }\n  async fetchUnseenEventsAPI() {\n    this.shouldFetchUnseenEventsOnConnect = false;\n    const responseEvents = await this.http.fetchUnseenEvents();\n    responseEvents.forEach((e3) => this.handleIncomingEvent(e3));\n  }\n  /**\n   * Publish an event and emit event ID when successful\n   * @param event event name\n   * @param unencryptedData unencrypted event data\n   * @param callWebhook whether the webhook should be invoked\n   * @returns a Promise that emits event ID when successful\n   */\n  async publishEvent(event, unencryptedData, callWebhook = false) {\n    const data = await this.cipher.encrypt(JSON.stringify(Object.assign(Object.assign({}, unencryptedData), { origin: location.origin, relaySource: \"coinbaseWalletExtension\" in window && window.coinbaseWalletExtension ? \"injected_sdk\" : \"sdk\" })));\n    const message = {\n      type: \"PublishEvent\",\n      id: IntNumber(this.nextReqId++),\n      sessionId: this.session.id,\n      event,\n      data,\n      callWebhook\n    };\n    return this.setOnceLinked(async () => {\n      const res = await this.makeRequest(message);\n      if (res.type === \"Fail\") {\n        throw new Error(res.error || \"failed to publish event\");\n      }\n      return res.eventId;\n    });\n  }\n  sendData(message) {\n    this.ws.sendData(JSON.stringify(message));\n  }\n  updateLastHeartbeat() {\n    this.lastHeartbeatResponse = Date.now();\n  }\n  heartbeat() {\n    if (Date.now() - this.lastHeartbeatResponse > HEARTBEAT_INTERVAL * 2) {\n      this.ws.disconnect();\n      return;\n    }\n    try {\n      this.ws.sendData(\"h\");\n    } catch (_a) {\n    }\n  }\n  async makeRequest(message, options = { timeout: REQUEST_TIMEOUT }) {\n    const reqId = message.id;\n    this.sendData(message);\n    let timeoutId;\n    return Promise.race([\n      new Promise((_2, reject) => {\n        timeoutId = window.setTimeout(() => {\n          reject(new Error(`request ${reqId} timed out`));\n        }, options.timeout);\n      }),\n      new Promise((resolve) => {\n        this.requestResolutions.set(reqId, (m2) => {\n          clearTimeout(timeoutId);\n          resolve(m2);\n          this.requestResolutions.delete(reqId);\n        });\n      })\n    ]);\n  }\n  async handleConnected() {\n    const res = await this.makeRequest({\n      type: \"HostSession\",\n      id: IntNumber(this.nextReqId++),\n      sessionId: this.session.id,\n      sessionKey: this.session.key\n    });\n    if (res.type === \"Fail\")\n      return false;\n    this.sendData({\n      type: \"IsLinked\",\n      id: IntNumber(this.nextReqId++),\n      sessionId: this.session.id\n    });\n    this.sendData({\n      type: \"GetSessionConfig\",\n      id: IntNumber(this.nextReqId++),\n      sessionId: this.session.id\n    });\n    return true;\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/RelayEventManager.js\nvar RelayEventManager = class {\n  constructor() {\n    this._nextRequestId = 0;\n    this.callbacks = /* @__PURE__ */ new Map();\n  }\n  makeRequestId() {\n    this._nextRequestId = (this._nextRequestId + 1) % 2147483647;\n    const id = this._nextRequestId;\n    const idStr = prepend0x(id.toString(16));\n    const callback = this.callbacks.get(idStr);\n    if (callback) {\n      this.callbacks.delete(idStr);\n    }\n    return id;\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/type/WalletLinkSession.js\nvar STORAGE_KEY_SESSION_ID = \"session:id\";\nvar STORAGE_KEY_SESSION_SECRET = \"session:secret\";\nvar STORAGE_KEY_SESSION_LINKED = \"session:linked\";\nvar WalletLinkSession = class _WalletLinkSession {\n  constructor(storage2, id, secret, linked = false) {\n    this.storage = storage2;\n    this.id = id;\n    this.secret = secret;\n    this.key = bytesToHex(sha256(`${id}, ${secret} WalletLink`));\n    this._linked = !!linked;\n  }\n  static create(storage2) {\n    const id = randomBytesHex(16);\n    const secret = randomBytesHex(32);\n    return new _WalletLinkSession(storage2, id, secret).save();\n  }\n  static load(storage2) {\n    const id = storage2.getItem(STORAGE_KEY_SESSION_ID);\n    const linked = storage2.getItem(STORAGE_KEY_SESSION_LINKED);\n    const secret = storage2.getItem(STORAGE_KEY_SESSION_SECRET);\n    if (id && secret) {\n      return new _WalletLinkSession(storage2, id, secret, linked === \"1\");\n    }\n    return null;\n  }\n  get linked() {\n    return this._linked;\n  }\n  set linked(val) {\n    this._linked = val;\n    this.persistLinked();\n  }\n  save() {\n    this.storage.setItem(STORAGE_KEY_SESSION_ID, this.id);\n    this.storage.setItem(STORAGE_KEY_SESSION_SECRET, this.secret);\n    this.persistLinked();\n    return this;\n  }\n  persistLinked() {\n    this.storage.setItem(STORAGE_KEY_SESSION_LINKED, this._linked ? \"1\" : \"0\");\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/ui/components/util.js\nfunction isInIFrame() {\n  try {\n    return window.frameElement !== null;\n  } catch (e3) {\n    return false;\n  }\n}\nfunction getLocation() {\n  try {\n    if (isInIFrame() && window.top) {\n      return window.top.location;\n    }\n    return window.location;\n  } catch (e3) {\n    return window.location;\n  }\n}\nfunction isMobileWeb() {\n  var _a;\n  return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test((_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent);\n}\nfunction isDarkMode() {\n  var _a, _b;\n  return (_b = (_a = window === null || window === void 0 ? void 0 : window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, \"(prefers-color-scheme: dark)\").matches) !== null && _b !== void 0 ? _b : false;\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/ui/components/cssReset/cssReset-css.js\nvar cssReset_css_default = (() => `@namespace svg \"http://www.w3.org/2000/svg\";.-cbwsdk-css-reset,.-cbwsdk-css-reset *{animation:none;animation-delay:0;animation-direction:normal;animation-duration:0;animation-fill-mode:none;animation-iteration-count:1;animation-name:none;animation-play-state:running;animation-timing-function:ease;backface-visibility:visible;background:0;background-attachment:scroll;background-clip:border-box;background-color:rgba(0,0,0,0);background-image:none;background-origin:padding-box;background-position:0 0;background-position-x:0;background-position-y:0;background-repeat:repeat;background-size:auto auto;border:0;border-style:none;border-width:medium;border-color:inherit;border-bottom:0;border-bottom-color:inherit;border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-style:none;border-bottom-width:medium;border-collapse:separate;border-image:none;border-left:0;border-left-color:inherit;border-left-style:none;border-left-width:medium;border-radius:0;border-right:0;border-right-color:inherit;border-right-style:none;border-right-width:medium;border-spacing:0;border-top:0;border-top-color:inherit;border-top-left-radius:0;border-top-right-radius:0;border-top-style:none;border-top-width:medium;box-shadow:none;box-sizing:border-box;caption-side:top;clear:none;clip:auto;color:inherit;columns:auto;column-count:auto;column-fill:balance;column-gap:normal;column-rule:medium none currentColor;column-rule-color:currentColor;column-rule-style:none;column-rule-width:none;column-span:1;column-width:auto;counter-increment:none;counter-reset:none;direction:ltr;empty-cells:show;float:none;font:normal;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Arial,sans-serif;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;height:auto;hyphens:none;letter-spacing:normal;line-height:normal;list-style:none;list-style-image:none;list-style-position:outside;list-style-type:disc;margin:0;margin-bottom:0;margin-left:0;margin-right:0;margin-top:0;opacity:1;orphans:0;outline:0;outline-color:invert;outline-style:none;outline-width:medium;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;perspective:none;perspective-origin:50% 50%;pointer-events:auto;position:static;quotes:\"\\\\201C\" \"\\\\201D\" \"\\\\2018\" \"\\\\2019\";tab-size:8;table-layout:auto;text-align:inherit;text-align-last:auto;text-decoration:none;text-decoration-color:inherit;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-shadow:none;text-transform:none;transform:none;transform-style:flat;transition:none;transition-delay:0s;transition-duration:0s;transition-property:none;transition-timing-function:ease;unicode-bidi:normal;vertical-align:baseline;visibility:visible;white-space:normal;widows:0;word-spacing:normal;z-index:auto}.-cbwsdk-css-reset strong{font-weight:bold}.-cbwsdk-css-reset *{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Arial,sans-serif;line-height:1}.-cbwsdk-css-reset [class*=container]{margin:0;padding:0}.-cbwsdk-css-reset style{display:none}`)();\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/ui/components/cssReset/cssReset.js\nfunction injectCssReset() {\n  const styleEl = document.createElement(\"style\");\n  styleEl.type = \"text/css\";\n  styleEl.appendChild(document.createTextNode(cssReset_css_default));\n  document.documentElement.appendChild(styleEl);\n}\n\n// node_modules/clsx/dist/clsx.m.js\nfunction r(e3) {\n  var t3, f3, n2 = \"\";\n  if (\"string\" == typeof e3 || \"number\" == typeof e3)\n    n2 += e3;\n  else if (\"object\" == typeof e3)\n    if (Array.isArray(e3))\n      for (t3 = 0; t3 < e3.length; t3++)\n        e3[t3] && (f3 = r(e3[t3])) && (n2 && (n2 += \" \"), n2 += f3);\n    else\n      for (t3 in e3)\n        e3[t3] && (n2 && (n2 += \" \"), n2 += t3);\n  return n2;\n}\nfunction clsx() {\n  for (var e3, t3, f3 = 0, n2 = \"\"; f3 < arguments.length; )\n    (e3 = arguments[f3++]) && (t3 = r(e3)) && (n2 && (n2 += \" \"), n2 += t3);\n  return n2;\n}\n\n// node_modules/preact/dist/preact.module.js\nvar n;\nvar l;\nvar u;\nvar t;\nvar i;\nvar o;\nvar r2;\nvar f;\nvar e;\nvar c;\nvar s;\nvar a;\nvar h = {};\nvar v = [];\nvar p = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\nvar y = Array.isArray;\nfunction d(n2, l3) {\n  for (var u3 in l3)\n    n2[u3] = l3[u3];\n  return n2;\n}\nfunction w(n2) {\n  n2 && n2.parentNode && n2.parentNode.removeChild(n2);\n}\nfunction _(l3, u3, t3) {\n  var i3, o3, r4, f3 = {};\n  for (r4 in u3)\n    \"key\" == r4 ? i3 = u3[r4] : \"ref\" == r4 ? o3 = u3[r4] : f3[r4] = u3[r4];\n  if (arguments.length > 2 && (f3.children = arguments.length > 3 ? n.call(arguments, 2) : t3), \"function\" == typeof l3 && null != l3.defaultProps)\n    for (r4 in l3.defaultProps)\n      void 0 === f3[r4] && (f3[r4] = l3.defaultProps[r4]);\n  return g(l3, f3, i3, o3, null);\n}\nfunction g(n2, t3, i3, o3, r4) {\n  var f3 = { type: n2, props: t3, key: i3, ref: o3, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, constructor: void 0, __v: null == r4 ? ++u : r4, __i: -1, __u: 0 };\n  return null == r4 && null != l.vnode && l.vnode(f3), f3;\n}\nfunction b(n2) {\n  return n2.children;\n}\nfunction k(n2, l3) {\n  this.props = n2, this.context = l3;\n}\nfunction x(n2, l3) {\n  if (null == l3)\n    return n2.__ ? x(n2.__, n2.__i + 1) : null;\n  for (var u3; l3 < n2.__k.length; l3++)\n    if (null != (u3 = n2.__k[l3]) && null != u3.__e)\n      return u3.__e;\n  return \"function\" == typeof n2.type ? x(n2) : null;\n}\nfunction C(n2) {\n  var l3, u3;\n  if (null != (n2 = n2.__) && null != n2.__c) {\n    for (n2.__e = n2.__c.base = null, l3 = 0; l3 < n2.__k.length; l3++)\n      if (null != (u3 = n2.__k[l3]) && null != u3.__e) {\n        n2.__e = n2.__c.base = u3.__e;\n        break;\n      }\n    return C(n2);\n  }\n}\nfunction S(n2) {\n  (!n2.__d && (n2.__d = true) && i.push(n2) && !M.__r++ || o !== l.debounceRendering) && ((o = l.debounceRendering) || r2)(M);\n}\nfunction M() {\n  var n2, u3, t3, o3, r4, e3, c3, s3;\n  for (i.sort(f); n2 = i.shift(); )\n    n2.__d && (u3 = i.length, o3 = void 0, e3 = (r4 = (t3 = n2).__v).__e, c3 = [], s3 = [], t3.__P && ((o3 = d({}, r4)).__v = r4.__v + 1, l.vnode && l.vnode(o3), O(t3.__P, o3, r4, t3.__n, t3.__P.namespaceURI, 32 & r4.__u ? [e3] : null, c3, null == e3 ? x(r4) : e3, !!(32 & r4.__u), s3), o3.__v = r4.__v, o3.__.__k[o3.__i] = o3, j(c3, o3, s3), o3.__e != e3 && C(o3)), i.length > u3 && i.sort(f));\n  M.__r = 0;\n}\nfunction P(n2, l3, u3, t3, i3, o3, r4, f3, e3, c3, s3) {\n  var a3, p3, y3, d3, w3, _2 = t3 && t3.__k || v, g2 = l3.length;\n  for (u3.__d = e3, $(u3, l3, _2), e3 = u3.__d, a3 = 0; a3 < g2; a3++)\n    null != (y3 = u3.__k[a3]) && (p3 = -1 === y3.__i ? h : _2[y3.__i] || h, y3.__i = a3, O(n2, y3, p3, i3, o3, r4, f3, e3, c3, s3), d3 = y3.__e, y3.ref && p3.ref != y3.ref && (p3.ref && N(p3.ref, null, y3), s3.push(y3.ref, y3.__c || d3, y3)), null == w3 && null != d3 && (w3 = d3), 65536 & y3.__u || p3.__k === y3.__k ? e3 = I(y3, e3, n2) : \"function\" == typeof y3.type && void 0 !== y3.__d ? e3 = y3.__d : d3 && (e3 = d3.nextSibling), y3.__d = void 0, y3.__u &= -196609);\n  u3.__d = e3, u3.__e = w3;\n}\nfunction $(n2, l3, u3) {\n  var t3, i3, o3, r4, f3, e3 = l3.length, c3 = u3.length, s3 = c3, a3 = 0;\n  for (n2.__k = [], t3 = 0; t3 < e3; t3++)\n    null != (i3 = l3[t3]) && \"boolean\" != typeof i3 && \"function\" != typeof i3 ? (r4 = t3 + a3, (i3 = n2.__k[t3] = \"string\" == typeof i3 || \"number\" == typeof i3 || \"bigint\" == typeof i3 || i3.constructor == String ? g(null, i3, null, null, null) : y(i3) ? g(b, { children: i3 }, null, null, null) : void 0 === i3.constructor && i3.__b > 0 ? g(i3.type, i3.props, i3.key, i3.ref ? i3.ref : null, i3.__v) : i3).__ = n2, i3.__b = n2.__b + 1, o3 = null, -1 !== (f3 = i3.__i = L(i3, u3, r4, s3)) && (s3--, (o3 = u3[f3]) && (o3.__u |= 131072)), null == o3 || null === o3.__v ? (-1 == f3 && a3--, \"function\" != typeof i3.type && (i3.__u |= 65536)) : f3 !== r4 && (f3 == r4 - 1 ? a3-- : f3 == r4 + 1 ? a3++ : (f3 > r4 ? a3-- : a3++, i3.__u |= 65536))) : i3 = n2.__k[t3] = null;\n  if (s3)\n    for (t3 = 0; t3 < c3; t3++)\n      null != (o3 = u3[t3]) && 0 == (131072 & o3.__u) && (o3.__e == n2.__d && (n2.__d = x(o3)), V(o3, o3));\n}\nfunction I(n2, l3, u3) {\n  var t3, i3;\n  if (\"function\" == typeof n2.type) {\n    for (t3 = n2.__k, i3 = 0; t3 && i3 < t3.length; i3++)\n      t3[i3] && (t3[i3].__ = n2, l3 = I(t3[i3], l3, u3));\n    return l3;\n  }\n  n2.__e != l3 && (l3 && n2.type && !u3.contains(l3) && (l3 = x(n2)), u3.insertBefore(n2.__e, l3 || null), l3 = n2.__e);\n  do {\n    l3 = l3 && l3.nextSibling;\n  } while (null != l3 && 8 === l3.nodeType);\n  return l3;\n}\nfunction L(n2, l3, u3, t3) {\n  var i3 = n2.key, o3 = n2.type, r4 = u3 - 1, f3 = u3 + 1, e3 = l3[u3];\n  if (null === e3 || e3 && i3 == e3.key && o3 === e3.type && 0 == (131072 & e3.__u))\n    return u3;\n  if (t3 > (null != e3 && 0 == (131072 & e3.__u) ? 1 : 0))\n    for (; r4 >= 0 || f3 < l3.length; ) {\n      if (r4 >= 0) {\n        if ((e3 = l3[r4]) && 0 == (131072 & e3.__u) && i3 == e3.key && o3 === e3.type)\n          return r4;\n        r4--;\n      }\n      if (f3 < l3.length) {\n        if ((e3 = l3[f3]) && 0 == (131072 & e3.__u) && i3 == e3.key && o3 === e3.type)\n          return f3;\n        f3++;\n      }\n    }\n  return -1;\n}\nfunction T(n2, l3, u3) {\n  \"-\" === l3[0] ? n2.setProperty(l3, null == u3 ? \"\" : u3) : n2[l3] = null == u3 ? \"\" : \"number\" != typeof u3 || p.test(l3) ? u3 : u3 + \"px\";\n}\nfunction A(n2, l3, u3, t3, i3) {\n  var o3;\n  n:\n    if (\"style\" === l3)\n      if (\"string\" == typeof u3)\n        n2.style.cssText = u3;\n      else {\n        if (\"string\" == typeof t3 && (n2.style.cssText = t3 = \"\"), t3)\n          for (l3 in t3)\n            u3 && l3 in u3 || T(n2.style, l3, \"\");\n        if (u3)\n          for (l3 in u3)\n            t3 && u3[l3] === t3[l3] || T(n2.style, l3, u3[l3]);\n      }\n    else if (\"o\" === l3[0] && \"n\" === l3[1])\n      o3 = l3 !== (l3 = l3.replace(/(PointerCapture)$|Capture$/i, \"$1\")), l3 = l3.toLowerCase() in n2 || \"onFocusOut\" === l3 || \"onFocusIn\" === l3 ? l3.toLowerCase().slice(2) : l3.slice(2), n2.l || (n2.l = {}), n2.l[l3 + o3] = u3, u3 ? t3 ? u3.u = t3.u : (u3.u = e, n2.addEventListener(l3, o3 ? s : c, o3)) : n2.removeEventListener(l3, o3 ? s : c, o3);\n    else {\n      if (\"http://www.w3.org/2000/svg\" == i3)\n        l3 = l3.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");\n      else if (\"width\" != l3 && \"height\" != l3 && \"href\" != l3 && \"list\" != l3 && \"form\" != l3 && \"tabIndex\" != l3 && \"download\" != l3 && \"rowSpan\" != l3 && \"colSpan\" != l3 && \"role\" != l3 && \"popover\" != l3 && l3 in n2)\n        try {\n          n2[l3] = null == u3 ? \"\" : u3;\n          break n;\n        } catch (n3) {\n        }\n      \"function\" == typeof u3 || (null == u3 || false === u3 && \"-\" !== l3[4] ? n2.removeAttribute(l3) : n2.setAttribute(l3, \"popover\" == l3 && 1 == u3 ? \"\" : u3));\n    }\n}\nfunction F(n2) {\n  return function(u3) {\n    if (this.l) {\n      var t3 = this.l[u3.type + n2];\n      if (null == u3.t)\n        u3.t = e++;\n      else if (u3.t < t3.u)\n        return;\n      return t3(l.event ? l.event(u3) : u3);\n    }\n  };\n}\nfunction O(n2, u3, t3, i3, o3, r4, f3, e3, c3, s3) {\n  var a3, h3, v3, p3, w3, _2, g2, m2, x2, C3, S2, M2, $2, I2, H, L2, T2 = u3.type;\n  if (void 0 !== u3.constructor)\n    return null;\n  128 & t3.__u && (c3 = !!(32 & t3.__u), r4 = [e3 = u3.__e = t3.__e]), (a3 = l.__b) && a3(u3);\n  n:\n    if (\"function\" == typeof T2)\n      try {\n        if (m2 = u3.props, x2 = \"prototype\" in T2 && T2.prototype.render, C3 = (a3 = T2.contextType) && i3[a3.__c], S2 = a3 ? C3 ? C3.props.value : a3.__ : i3, t3.__c ? g2 = (h3 = u3.__c = t3.__c).__ = h3.__E : (x2 ? u3.__c = h3 = new T2(m2, S2) : (u3.__c = h3 = new k(m2, S2), h3.constructor = T2, h3.render = q), C3 && C3.sub(h3), h3.props = m2, h3.state || (h3.state = {}), h3.context = S2, h3.__n = i3, v3 = h3.__d = true, h3.__h = [], h3._sb = []), x2 && null == h3.__s && (h3.__s = h3.state), x2 && null != T2.getDerivedStateFromProps && (h3.__s == h3.state && (h3.__s = d({}, h3.__s)), d(h3.__s, T2.getDerivedStateFromProps(m2, h3.__s))), p3 = h3.props, w3 = h3.state, h3.__v = u3, v3)\n          x2 && null == T2.getDerivedStateFromProps && null != h3.componentWillMount && h3.componentWillMount(), x2 && null != h3.componentDidMount && h3.__h.push(h3.componentDidMount);\n        else {\n          if (x2 && null == T2.getDerivedStateFromProps && m2 !== p3 && null != h3.componentWillReceiveProps && h3.componentWillReceiveProps(m2, S2), !h3.__e && (null != h3.shouldComponentUpdate && false === h3.shouldComponentUpdate(m2, h3.__s, S2) || u3.__v === t3.__v)) {\n            for (u3.__v !== t3.__v && (h3.props = m2, h3.state = h3.__s, h3.__d = false), u3.__e = t3.__e, u3.__k = t3.__k, u3.__k.some(function(n3) {\n              n3 && (n3.__ = u3);\n            }), M2 = 0; M2 < h3._sb.length; M2++)\n              h3.__h.push(h3._sb[M2]);\n            h3._sb = [], h3.__h.length && f3.push(h3);\n            break n;\n          }\n          null != h3.componentWillUpdate && h3.componentWillUpdate(m2, h3.__s, S2), x2 && null != h3.componentDidUpdate && h3.__h.push(function() {\n            h3.componentDidUpdate(p3, w3, _2);\n          });\n        }\n        if (h3.context = S2, h3.props = m2, h3.__P = n2, h3.__e = false, $2 = l.__r, I2 = 0, x2) {\n          for (h3.state = h3.__s, h3.__d = false, $2 && $2(u3), a3 = h3.render(h3.props, h3.state, h3.context), H = 0; H < h3._sb.length; H++)\n            h3.__h.push(h3._sb[H]);\n          h3._sb = [];\n        } else\n          do {\n            h3.__d = false, $2 && $2(u3), a3 = h3.render(h3.props, h3.state, h3.context), h3.state = h3.__s;\n          } while (h3.__d && ++I2 < 25);\n        h3.state = h3.__s, null != h3.getChildContext && (i3 = d(d({}, i3), h3.getChildContext())), x2 && !v3 && null != h3.getSnapshotBeforeUpdate && (_2 = h3.getSnapshotBeforeUpdate(p3, w3)), P(n2, y(L2 = null != a3 && a3.type === b && null == a3.key ? a3.props.children : a3) ? L2 : [L2], u3, t3, i3, o3, r4, f3, e3, c3, s3), h3.base = u3.__e, u3.__u &= -161, h3.__h.length && f3.push(h3), g2 && (h3.__E = h3.__ = null);\n      } catch (n3) {\n        if (u3.__v = null, c3 || null != r4) {\n          for (u3.__u |= c3 ? 160 : 128; e3 && 8 === e3.nodeType && e3.nextSibling; )\n            e3 = e3.nextSibling;\n          r4[r4.indexOf(e3)] = null, u3.__e = e3;\n        } else\n          u3.__e = t3.__e, u3.__k = t3.__k;\n        l.__e(n3, u3, t3);\n      }\n    else\n      null == r4 && u3.__v === t3.__v ? (u3.__k = t3.__k, u3.__e = t3.__e) : u3.__e = z(t3.__e, u3, t3, i3, o3, r4, f3, c3, s3);\n  (a3 = l.diffed) && a3(u3);\n}\nfunction j(n2, u3, t3) {\n  u3.__d = void 0;\n  for (var i3 = 0; i3 < t3.length; i3++)\n    N(t3[i3], t3[++i3], t3[++i3]);\n  l.__c && l.__c(u3, n2), n2.some(function(u4) {\n    try {\n      n2 = u4.__h, u4.__h = [], n2.some(function(n3) {\n        n3.call(u4);\n      });\n    } catch (n3) {\n      l.__e(n3, u4.__v);\n    }\n  });\n}\nfunction z(u3, t3, i3, o3, r4, f3, e3, c3, s3) {\n  var a3, v3, p3, d3, _2, g2, m2, b2 = i3.props, k3 = t3.props, C3 = t3.type;\n  if (\"svg\" === C3 ? r4 = \"http://www.w3.org/2000/svg\" : \"math\" === C3 ? r4 = \"http://www.w3.org/1998/Math/MathML\" : r4 || (r4 = \"http://www.w3.org/1999/xhtml\"), null != f3) {\n    for (a3 = 0; a3 < f3.length; a3++)\n      if ((_2 = f3[a3]) && \"setAttribute\" in _2 == !!C3 && (C3 ? _2.localName === C3 : 3 === _2.nodeType)) {\n        u3 = _2, f3[a3] = null;\n        break;\n      }\n  }\n  if (null == u3) {\n    if (null === C3)\n      return document.createTextNode(k3);\n    u3 = document.createElementNS(r4, C3, k3.is && k3), c3 && (l.__m && l.__m(t3, f3), c3 = false), f3 = null;\n  }\n  if (null === C3)\n    b2 === k3 || c3 && u3.data === k3 || (u3.data = k3);\n  else {\n    if (f3 = f3 && n.call(u3.childNodes), b2 = i3.props || h, !c3 && null != f3)\n      for (b2 = {}, a3 = 0; a3 < u3.attributes.length; a3++)\n        b2[(_2 = u3.attributes[a3]).name] = _2.value;\n    for (a3 in b2)\n      if (_2 = b2[a3], \"children\" == a3)\n        ;\n      else if (\"dangerouslySetInnerHTML\" == a3)\n        p3 = _2;\n      else if (!(a3 in k3)) {\n        if (\"value\" == a3 && \"defaultValue\" in k3 || \"checked\" == a3 && \"defaultChecked\" in k3)\n          continue;\n        A(u3, a3, null, _2, r4);\n      }\n    for (a3 in k3)\n      _2 = k3[a3], \"children\" == a3 ? d3 = _2 : \"dangerouslySetInnerHTML\" == a3 ? v3 = _2 : \"value\" == a3 ? g2 = _2 : \"checked\" == a3 ? m2 = _2 : c3 && \"function\" != typeof _2 || b2[a3] === _2 || A(u3, a3, _2, b2[a3], r4);\n    if (v3)\n      c3 || p3 && (v3.__html === p3.__html || v3.__html === u3.innerHTML) || (u3.innerHTML = v3.__html), t3.__k = [];\n    else if (p3 && (u3.innerHTML = \"\"), P(u3, y(d3) ? d3 : [d3], t3, i3, o3, \"foreignObject\" === C3 ? \"http://www.w3.org/1999/xhtml\" : r4, f3, e3, f3 ? f3[0] : i3.__k && x(i3, 0), c3, s3), null != f3)\n      for (a3 = f3.length; a3--; )\n        w(f3[a3]);\n    c3 || (a3 = \"value\", \"progress\" === C3 && null == g2 ? u3.removeAttribute(\"value\") : void 0 !== g2 && (g2 !== u3[a3] || \"progress\" === C3 && !g2 || \"option\" === C3 && g2 !== b2[a3]) && A(u3, a3, g2, b2[a3], r4), a3 = \"checked\", void 0 !== m2 && m2 !== u3[a3] && A(u3, a3, m2, b2[a3], r4));\n  }\n  return u3;\n}\nfunction N(n2, u3, t3) {\n  try {\n    if (\"function\" == typeof n2) {\n      var i3 = \"function\" == typeof n2.__u;\n      i3 && n2.__u(), i3 && null == u3 || (n2.__u = n2(u3));\n    } else\n      n2.current = u3;\n  } catch (n3) {\n    l.__e(n3, t3);\n  }\n}\nfunction V(n2, u3, t3) {\n  var i3, o3;\n  if (l.unmount && l.unmount(n2), (i3 = n2.ref) && (i3.current && i3.current !== n2.__e || N(i3, null, u3)), null != (i3 = n2.__c)) {\n    if (i3.componentWillUnmount)\n      try {\n        i3.componentWillUnmount();\n      } catch (n3) {\n        l.__e(n3, u3);\n      }\n    i3.base = i3.__P = null;\n  }\n  if (i3 = n2.__k)\n    for (o3 = 0; o3 < i3.length; o3++)\n      i3[o3] && V(i3[o3], u3, t3 || \"function\" != typeof n2.type);\n  t3 || w(n2.__e), n2.__c = n2.__ = n2.__e = n2.__d = void 0;\n}\nfunction q(n2, l3, u3) {\n  return this.constructor(n2, u3);\n}\nfunction B(u3, t3, i3) {\n  var o3, r4, f3, e3;\n  l.__ && l.__(u3, t3), r4 = (o3 = \"function\" == typeof i3) ? null : i3 && i3.__k || t3.__k, f3 = [], e3 = [], O(t3, u3 = (!o3 && i3 || t3).__k = _(b, null, [u3]), r4 || h, h, t3.namespaceURI, !o3 && i3 ? [i3] : r4 ? null : t3.firstChild ? n.call(t3.childNodes) : null, f3, !o3 && i3 ? i3 : r4 ? r4.__e : t3.firstChild, o3, e3), j(f3, u3, e3);\n}\nn = v.slice, l = { __e: function(n2, l3, u3, t3) {\n  for (var i3, o3, r4; l3 = l3.__; )\n    if ((i3 = l3.__c) && !i3.__)\n      try {\n        if ((o3 = i3.constructor) && null != o3.getDerivedStateFromError && (i3.setState(o3.getDerivedStateFromError(n2)), r4 = i3.__d), null != i3.componentDidCatch && (i3.componentDidCatch(n2, t3 || {}), r4 = i3.__d), r4)\n          return i3.__E = i3;\n      } catch (l4) {\n        n2 = l4;\n      }\n  throw n2;\n} }, u = 0, t = function(n2) {\n  return null != n2 && null == n2.constructor;\n}, k.prototype.setState = function(n2, l3) {\n  var u3;\n  u3 = null != this.__s && this.__s !== this.state ? this.__s : this.__s = d({}, this.state), \"function\" == typeof n2 && (n2 = n2(d({}, u3), this.props)), n2 && d(u3, n2), null != n2 && this.__v && (l3 && this._sb.push(l3), S(this));\n}, k.prototype.forceUpdate = function(n2) {\n  this.__v && (this.__e = true, n2 && this.__h.push(n2), S(this));\n}, k.prototype.render = b, i = [], r2 = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, f = function(n2, l3) {\n  return n2.__v.__b - l3.__v.__b;\n}, M.__r = 0, e = 0, c = F(false), s = F(true), a = 0;\n\n// node_modules/preact/hooks/dist/hooks.module.js\nvar t2;\nvar r3;\nvar u2;\nvar i2;\nvar o2 = 0;\nvar f2 = [];\nvar c2 = l;\nvar e2 = c2.__b;\nvar a2 = c2.__r;\nvar v2 = c2.diffed;\nvar l2 = c2.__c;\nvar m = c2.unmount;\nvar s2 = c2.__;\nfunction d2(n2, t3) {\n  c2.__h && c2.__h(r3, n2, o2 || t3), o2 = 0;\n  var u3 = r3.__H || (r3.__H = { __: [], __h: [] });\n  return n2 >= u3.__.length && u3.__.push({}), u3.__[n2];\n}\nfunction h2(n2) {\n  return o2 = 1, p2(D, n2);\n}\nfunction p2(n2, u3, i3) {\n  var o3 = d2(t2++, 2);\n  if (o3.t = n2, !o3.__c && (o3.__ = [i3 ? i3(u3) : D(void 0, u3), function(n3) {\n    var t3 = o3.__N ? o3.__N[0] : o3.__[0], r4 = o3.t(t3, n3);\n    t3 !== r4 && (o3.__N = [r4, o3.__[1]], o3.__c.setState({}));\n  }], o3.__c = r3, !r3.u)) {\n    var f3 = function(n3, t3, r4) {\n      if (!o3.__c.__H)\n        return true;\n      var u4 = o3.__c.__H.__.filter(function(n4) {\n        return !!n4.__c;\n      });\n      if (u4.every(function(n4) {\n        return !n4.__N;\n      }))\n        return !c3 || c3.call(this, n3, t3, r4);\n      var i4 = false;\n      return u4.forEach(function(n4) {\n        if (n4.__N) {\n          var t4 = n4.__[0];\n          n4.__ = n4.__N, n4.__N = void 0, t4 !== n4.__[0] && (i4 = true);\n        }\n      }), !(!i4 && o3.__c.props === n3) && (!c3 || c3.call(this, n3, t3, r4));\n    };\n    r3.u = true;\n    var c3 = r3.shouldComponentUpdate, e3 = r3.componentWillUpdate;\n    r3.componentWillUpdate = function(n3, t3, r4) {\n      if (this.__e) {\n        var u4 = c3;\n        c3 = void 0, f3(n3, t3, r4), c3 = u4;\n      }\n      e3 && e3.call(this, n3, t3, r4);\n    }, r3.shouldComponentUpdate = f3;\n  }\n  return o3.__N || o3.__;\n}\nfunction y2(n2, u3) {\n  var i3 = d2(t2++, 3);\n  !c2.__s && C2(i3.__H, u3) && (i3.__ = n2, i3.i = u3, r3.__H.__h.push(i3));\n}\nfunction j2() {\n  for (var n2; n2 = f2.shift(); )\n    if (n2.__P && n2.__H)\n      try {\n        n2.__H.__h.forEach(z2), n2.__H.__h.forEach(B2), n2.__H.__h = [];\n      } catch (t3) {\n        n2.__H.__h = [], c2.__e(t3, n2.__v);\n      }\n}\nc2.__b = function(n2) {\n  r3 = null, e2 && e2(n2);\n}, c2.__ = function(n2, t3) {\n  n2 && t3.__k && t3.__k.__m && (n2.__m = t3.__k.__m), s2 && s2(n2, t3);\n}, c2.__r = function(n2) {\n  a2 && a2(n2), t2 = 0;\n  var i3 = (r3 = n2.__c).__H;\n  i3 && (u2 === r3 ? (i3.__h = [], r3.__h = [], i3.__.forEach(function(n3) {\n    n3.__N && (n3.__ = n3.__N), n3.i = n3.__N = void 0;\n  })) : (i3.__h.forEach(z2), i3.__h.forEach(B2), i3.__h = [], t2 = 0)), u2 = r3;\n}, c2.diffed = function(n2) {\n  v2 && v2(n2);\n  var t3 = n2.__c;\n  t3 && t3.__H && (t3.__H.__h.length && (1 !== f2.push(t3) && i2 === c2.requestAnimationFrame || ((i2 = c2.requestAnimationFrame) || w2)(j2)), t3.__H.__.forEach(function(n3) {\n    n3.i && (n3.__H = n3.i), n3.i = void 0;\n  })), u2 = r3 = null;\n}, c2.__c = function(n2, t3) {\n  t3.some(function(n3) {\n    try {\n      n3.__h.forEach(z2), n3.__h = n3.__h.filter(function(n4) {\n        return !n4.__ || B2(n4);\n      });\n    } catch (r4) {\n      t3.some(function(n4) {\n        n4.__h && (n4.__h = []);\n      }), t3 = [], c2.__e(r4, n3.__v);\n    }\n  }), l2 && l2(n2, t3);\n}, c2.unmount = function(n2) {\n  m && m(n2);\n  var t3, r4 = n2.__c;\n  r4 && r4.__H && (r4.__H.__.forEach(function(n3) {\n    try {\n      z2(n3);\n    } catch (n4) {\n      t3 = n4;\n    }\n  }), r4.__H = void 0, t3 && c2.__e(t3, r4.__v));\n};\nvar k2 = \"function\" == typeof requestAnimationFrame;\nfunction w2(n2) {\n  var t3, r4 = function() {\n    clearTimeout(u3), k2 && cancelAnimationFrame(t3), setTimeout(n2);\n  }, u3 = setTimeout(r4, 100);\n  k2 && (t3 = requestAnimationFrame(r4));\n}\nfunction z2(n2) {\n  var t3 = r3, u3 = n2.__c;\n  \"function\" == typeof u3 && (n2.__c = void 0, u3()), r3 = t3;\n}\nfunction B2(n2) {\n  var t3 = r3;\n  n2.__c = n2.__(), r3 = t3;\n}\nfunction C2(n2, t3) {\n  return !n2 || n2.length !== t3.length || t3.some(function(t4, r4) {\n    return t4 !== n2[r4];\n  });\n}\nfunction D(n2, t3) {\n  return \"function\" == typeof t3 ? t3(n2) : t3;\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/ui/components/Snackbar/Snackbar-css.js\nvar Snackbar_css_default = (() => `.-cbwsdk-css-reset .-gear-container{margin-left:16px !important;margin-right:9px !important;display:flex;align-items:center;justify-content:center;width:24px;height:24px;transition:opacity .25s}.-cbwsdk-css-reset .-gear-container *{user-select:none}.-cbwsdk-css-reset .-gear-container svg{opacity:0;position:absolute}.-cbwsdk-css-reset .-gear-icon{height:12px;width:12px;z-index:10000}.-cbwsdk-css-reset .-cbwsdk-snackbar{align-items:flex-end;display:flex;flex-direction:column;position:fixed;right:0;top:0;z-index:2147483647}.-cbwsdk-css-reset .-cbwsdk-snackbar *{user-select:none}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance{display:flex;flex-direction:column;margin:8px 16px 0 16px;overflow:visible;text-align:left;transform:translateX(0);transition:opacity .25s,transform .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header:hover .-gear-container svg{opacity:1}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header{display:flex;align-items:center;background:#fff;overflow:hidden;border:1px solid #e7ebee;box-sizing:border-box;border-radius:8px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header-cblogo{margin:8px 8px 8px 8px}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header *{cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header-message{color:#000;font-size:13px;line-height:1.5;user-select:none}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu{background:#fff;transition:opacity .25s ease-in-out,transform .25s linear,visibility 0s;visibility:hidden;border:1px solid #e7ebee;box-sizing:border-box;border-radius:8px;opacity:0;flex-direction:column;padding-left:8px;padding-right:8px}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:last-child{margin-bottom:8px !important}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover{background:#f5f7f8;border-radius:6px;transition:background .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover span{color:#050f19;transition:color .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover svg path{fill:#000;transition:fill .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item{visibility:inherit;height:35px;margin-top:8px;margin-bottom:0;display:flex;flex-direction:row;align-items:center;padding:8px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item *{visibility:inherit;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover{background:rgba(223,95,103,.2);transition:background .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover *{cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover svg path{fill:#df5f67;transition:fill .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover span{color:#df5f67;transition:color .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-info{color:#aaa;font-size:13px;margin:0 8px 0 32px;position:absolute}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-hidden{opacity:0;text-align:left;transform:translateX(25%);transition:opacity .5s linear}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-expanded .-cbwsdk-snackbar-instance-menu{opacity:1;display:flex;transform:translateY(8px);visibility:visible}`)();\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/ui/components/Snackbar/Snackbar.js\nvar cblogo = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEuNDkyIDEwLjQxOWE4LjkzIDguOTMgMCAwMTguOTMtOC45M2gxMS4xNjNhOC45MyA4LjkzIDAgMDE4LjkzIDguOTN2MTEuMTYzYTguOTMgOC45MyAwIDAxLTguOTMgOC45M0gxMC40MjJhOC45MyA4LjkzIDAgMDEtOC45My04LjkzVjEwLjQxOXoiIGZpbGw9IiMxNjUyRjAiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjQxOSAwSDIxLjU4QzI3LjMzNSAwIDMyIDQuNjY1IDMyIDEwLjQxOVYyMS41OEMzMiAyNy4zMzUgMjcuMzM1IDMyIDIxLjU4MSAzMkgxMC40MkM0LjY2NSAzMiAwIDI3LjMzNSAwIDIxLjU4MVYxMC40MkMwIDQuNjY1IDQuNjY1IDAgMTAuNDE5IDB6bTAgMS40ODhhOC45MyA4LjkzIDAgMDAtOC45MyA4LjkzdjExLjE2M2E4LjkzIDguOTMgMCAwMDguOTMgOC45M0gyMS41OGE4LjkzIDguOTMgMCAwMDguOTMtOC45M1YxMC40MmE4LjkzIDguOTMgMCAwMC04LjkzLTguOTNIMTAuNDJ6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS45OTggMjYuMDQ5Yy01LjU0OSAwLTEwLjA0Ny00LjQ5OC0xMC4wNDctMTAuMDQ3IDAtNS41NDggNC40OTgtMTAuMDQ2IDEwLjA0Ny0xMC4wNDYgNS41NDggMCAxMC4wNDYgNC40OTggMTAuMDQ2IDEwLjA0NiAwIDUuNTQ5LTQuNDk4IDEwLjA0Ny0xMC4wNDYgMTAuMDQ3eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xMi43NjIgMTQuMjU0YzAtLjgyMi42NjctMS40ODkgMS40ODktMS40ODloMy40OTdjLjgyMiAwIDEuNDg4LjY2NiAxLjQ4OCAxLjQ4OXYzLjQ5N2MwIC44MjItLjY2NiAxLjQ4OC0xLjQ4OCAxLjQ4OGgtMy40OTdhMS40ODggMS40ODggMCAwMS0xLjQ4OS0xLjQ4OHYtMy40OTh6IiBmaWxsPSIjMTY1MkYwIi8+PC9zdmc+`;\nvar gearIcon = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDYuNzV2LTEuNWwtMS43Mi0uNTdjLS4wOC0uMjctLjE5LS41Mi0uMzItLjc3bC44MS0xLjYyLTEuMDYtMS4wNi0xLjYyLjgxYy0uMjQtLjEzLS41LS4yNC0uNzctLjMyTDYuNzUgMGgtMS41bC0uNTcgMS43MmMtLjI3LjA4LS41My4xOS0uNzcuMzJsLTEuNjItLjgxLTEuMDYgMS4wNi44MSAxLjYyYy0uMTMuMjQtLjI0LjUtLjMyLjc3TDAgNS4yNXYxLjVsMS43Mi41N2MuMDguMjcuMTkuNTMuMzIuNzdsLS44MSAxLjYyIDEuMDYgMS4wNiAxLjYyLS44MWMuMjQuMTMuNS4yMy43Ny4zMkw1LjI1IDEyaDEuNWwuNTctMS43MmMuMjctLjA4LjUyLS4xOS43Ny0uMzJsMS42Mi44MSAxLjA2LTEuMDYtLjgxLTEuNjJjLjEzLS4yNC4yMy0uNS4zMi0uNzdMMTIgNi43NXpNNiA4LjVhMi41IDIuNSAwIDAxMC01IDIuNSAyLjUgMCAwMTAgNXoiIGZpbGw9IiMwNTBGMTkiLz48L3N2Zz4=`;\nvar Snackbar = class {\n  constructor() {\n    this.items = /* @__PURE__ */ new Map();\n    this.nextItemKey = 0;\n    this.root = null;\n    this.darkMode = isDarkMode();\n  }\n  attach(el) {\n    this.root = document.createElement(\"div\");\n    this.root.className = \"-cbwsdk-snackbar-root\";\n    el.appendChild(this.root);\n    this.render();\n  }\n  presentItem(itemProps) {\n    const key = this.nextItemKey++;\n    this.items.set(key, itemProps);\n    this.render();\n    return () => {\n      this.items.delete(key);\n      this.render();\n    };\n  }\n  clear() {\n    this.items.clear();\n    this.render();\n  }\n  render() {\n    if (!this.root) {\n      return;\n    }\n    B(_(\n      \"div\",\n      null,\n      _(SnackbarContainer, { darkMode: this.darkMode }, Array.from(this.items.entries()).map(([key, itemProps]) => _(SnackbarInstance, Object.assign({}, itemProps, { key }))))\n    ), this.root);\n  }\n};\nvar SnackbarContainer = (props) => _(\n  \"div\",\n  { class: clsx(\"-cbwsdk-snackbar-container\") },\n  _(\"style\", null, Snackbar_css_default),\n  _(\"div\", { class: \"-cbwsdk-snackbar\" }, props.children)\n);\nvar SnackbarInstance = ({ autoExpand, message, menuItems }) => {\n  const [hidden, setHidden] = h2(true);\n  const [expanded, setExpanded] = h2(autoExpand !== null && autoExpand !== void 0 ? autoExpand : false);\n  y2(() => {\n    const timers = [\n      window.setTimeout(() => {\n        setHidden(false);\n      }, 1),\n      window.setTimeout(() => {\n        setExpanded(true);\n      }, 1e4)\n    ];\n    return () => {\n      timers.forEach(window.clearTimeout);\n    };\n  });\n  const toggleExpanded = () => {\n    setExpanded(!expanded);\n  };\n  return _(\n    \"div\",\n    { class: clsx(\"-cbwsdk-snackbar-instance\", hidden && \"-cbwsdk-snackbar-instance-hidden\", expanded && \"-cbwsdk-snackbar-instance-expanded\") },\n    _(\n      \"div\",\n      { class: \"-cbwsdk-snackbar-instance-header\", onClick: toggleExpanded },\n      _(\"img\", { src: cblogo, class: \"-cbwsdk-snackbar-instance-header-cblogo\" }),\n      \" \",\n      _(\"div\", { class: \"-cbwsdk-snackbar-instance-header-message\" }, message),\n      _(\n        \"div\",\n        { class: \"-gear-container\" },\n        !expanded && _(\n          \"svg\",\n          { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n          _(\"circle\", { cx: \"12\", cy: \"12\", r: \"12\", fill: \"#F5F7F8\" })\n        ),\n        _(\"img\", { src: gearIcon, class: \"-gear-icon\", title: \"Expand\" })\n      )\n    ),\n    menuItems && menuItems.length > 0 && _(\"div\", { class: \"-cbwsdk-snackbar-instance-menu\" }, menuItems.map((action, i3) => _(\n      \"div\",\n      { class: clsx(\"-cbwsdk-snackbar-instance-menu-item\", action.isRed && \"-cbwsdk-snackbar-instance-menu-item-is-red\"), onClick: action.onClick, key: i3 },\n      _(\n        \"svg\",\n        { width: action.svgWidth, height: action.svgHeight, viewBox: \"0 0 10 11\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n        _(\"path\", { \"fill-rule\": action.defaultFillRule, \"clip-rule\": action.defaultClipRule, d: action.path, fill: \"#AAAAAA\" })\n      ),\n      _(\"span\", { class: clsx(\"-cbwsdk-snackbar-instance-menu-item-info\", action.isRed && \"-cbwsdk-snackbar-instance-menu-item-info-is-red\") }, action.info)\n    )))\n  );\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/ui/WalletLinkRelayUI.js\nvar WalletLinkRelayUI = class {\n  constructor() {\n    this.attached = false;\n    this.snackbar = new Snackbar();\n  }\n  attach() {\n    if (this.attached) {\n      throw new Error(\"Coinbase Wallet SDK UI is already attached\");\n    }\n    const el = document.documentElement;\n    const container = document.createElement(\"div\");\n    container.className = \"-cbwsdk-css-reset\";\n    el.appendChild(container);\n    this.snackbar.attach(container);\n    this.attached = true;\n    injectCssReset();\n  }\n  showConnecting(options) {\n    let snackbarProps;\n    if (options.isUnlinkedErrorState) {\n      snackbarProps = {\n        autoExpand: true,\n        message: \"Connection lost\",\n        menuItems: [\n          {\n            isRed: false,\n            info: \"Reset connection\",\n            svgWidth: \"10\",\n            svgHeight: \"11\",\n            path: \"M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z\",\n            defaultFillRule: \"evenodd\",\n            defaultClipRule: \"evenodd\",\n            onClick: options.onResetConnection\n          }\n        ]\n      };\n    } else {\n      snackbarProps = {\n        message: \"Confirm on phone\",\n        menuItems: [\n          {\n            isRed: true,\n            info: \"Cancel transaction\",\n            svgWidth: \"11\",\n            svgHeight: \"11\",\n            path: \"M10.3711 1.52346L9.21775 0.370117L5.37109 4.21022L1.52444 0.370117L0.371094 1.52346L4.2112 5.37012L0.371094 9.21677L1.52444 10.3701L5.37109 6.53001L9.21775 10.3701L10.3711 9.21677L6.53099 5.37012L10.3711 1.52346Z\",\n            defaultFillRule: \"inherit\",\n            defaultClipRule: \"inherit\",\n            onClick: options.onCancel\n          },\n          {\n            isRed: false,\n            info: \"Reset connection\",\n            svgWidth: \"10\",\n            svgHeight: \"11\",\n            path: \"M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z\",\n            defaultFillRule: \"evenodd\",\n            defaultClipRule: \"evenodd\",\n            onClick: options.onResetConnection\n          }\n        ]\n      };\n    }\n    return this.snackbar.presentItem(snackbarProps);\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/ui/components/RedirectDialog/RedirectDialog-css.js\nvar RedirectDialog_css_default = (() => `.-cbwsdk-css-reset .-cbwsdk-redirect-dialog-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;transition:opacity .25s;background-color:rgba(10,11,13,.5)}.-cbwsdk-css-reset .-cbwsdk-redirect-dialog-backdrop-hidden{opacity:0}.-cbwsdk-css-reset .-cbwsdk-redirect-dialog-box{display:block;position:fixed;top:50%;left:50%;transform:translate(-50%, -50%);padding:20px;border-radius:8px;background-color:#fff;color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-redirect-dialog-box p{display:block;font-weight:400;font-size:14px;line-height:20px;padding-bottom:12px;color:#5b636e}.-cbwsdk-css-reset .-cbwsdk-redirect-dialog-box button{appearance:none;border:none;background:none;color:#0052ff;padding:0;text-decoration:none;display:block;font-weight:600;font-size:16px;line-height:24px}.-cbwsdk-css-reset .-cbwsdk-redirect-dialog-box.dark{background-color:#0a0b0d;color:#fff}.-cbwsdk-css-reset .-cbwsdk-redirect-dialog-box.dark button{color:#0052ff}.-cbwsdk-css-reset .-cbwsdk-redirect-dialog-box.light{background-color:#fff;color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-redirect-dialog-box.light button{color:#0052ff}`)();\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/ui/components/RedirectDialog/RedirectDialog.js\nvar RedirectDialog = class {\n  constructor() {\n    this.root = null;\n    this.darkMode = isDarkMode();\n  }\n  attach() {\n    const el = document.documentElement;\n    this.root = document.createElement(\"div\");\n    this.root.className = \"-cbwsdk-css-reset\";\n    el.appendChild(this.root);\n    injectCssReset();\n  }\n  present(props) {\n    this.render(props);\n  }\n  clear() {\n    this.render(null);\n  }\n  render(props) {\n    if (!this.root)\n      return;\n    B(null, this.root);\n    if (!props)\n      return;\n    B(_(RedirectDialogContent, Object.assign({}, props, { onDismiss: () => {\n      this.clear();\n    }, darkMode: this.darkMode })), this.root);\n  }\n};\nvar RedirectDialogContent = ({ title, buttonText, darkMode, onButtonClick, onDismiss }) => {\n  const theme = darkMode ? \"dark\" : \"light\";\n  return _(\n    SnackbarContainer,\n    { darkMode },\n    _(\n      \"div\",\n      { class: \"-cbwsdk-redirect-dialog\" },\n      _(\"style\", null, RedirectDialog_css_default),\n      _(\"div\", { class: \"-cbwsdk-redirect-dialog-backdrop\", onClick: onDismiss }),\n      _(\n        \"div\",\n        { class: clsx(\"-cbwsdk-redirect-dialog-box\", theme) },\n        _(\"p\", null, title),\n        _(\"button\", { onClick: onButtonClick }, buttonText)\n      )\n    )\n  );\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/core/constants.js\nvar CB_KEYS_URL = \"https://keys.coinbase.com/connect\";\nvar WALLETLINK_URL = \"https://www.walletlink.org\";\nvar CBW_MOBILE_DEEPLINK_URL = \"https://go.cb-w.com/walletlink\";\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/ui/WLMobileRelayUI.js\nvar WLMobileRelayUI = class {\n  constructor() {\n    this.attached = false;\n    this.redirectDialog = new RedirectDialog();\n  }\n  attach() {\n    if (this.attached) {\n      throw new Error(\"Coinbase Wallet SDK UI is already attached\");\n    }\n    this.redirectDialog.attach();\n    this.attached = true;\n  }\n  redirectToCoinbaseWallet(walletLinkUrl) {\n    const url = new URL(CBW_MOBILE_DEEPLINK_URL);\n    url.searchParams.append(\"redirect_url\", getLocation().href);\n    if (walletLinkUrl) {\n      url.searchParams.append(\"wl_url\", walletLinkUrl);\n    }\n    const anchorTag = document.createElement(\"a\");\n    anchorTag.target = \"cbw-opener\";\n    anchorTag.href = url.href;\n    anchorTag.rel = \"noreferrer noopener\";\n    anchorTag.click();\n  }\n  openCoinbaseWalletDeeplink(walletLinkUrl) {\n    this.redirectDialog.present({\n      title: \"Redirecting to Coinbase Wallet...\",\n      buttonText: \"Open\",\n      onButtonClick: () => {\n        this.redirectToCoinbaseWallet(walletLinkUrl);\n      }\n    });\n    setTimeout(() => {\n      this.redirectToCoinbaseWallet(walletLinkUrl);\n    }, 99);\n  }\n  showConnecting(_options) {\n    return () => {\n      this.redirectDialog.clear();\n    };\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/relay/WalletLinkRelay.js\nvar WalletLinkRelay = class _WalletLinkRelay {\n  constructor(options) {\n    this.chainCallbackParams = { chainId: \"\", jsonRpcUrl: \"\" };\n    this.isMobileWeb = isMobileWeb();\n    this.linkedUpdated = (linked) => {\n      this.isLinked = linked;\n      const cachedAddresses = this.storage.getItem(LOCAL_STORAGE_ADDRESSES_KEY);\n      if (linked) {\n        this._session.linked = linked;\n      }\n      this.isUnlinkedErrorState = false;\n      if (cachedAddresses) {\n        const addresses = cachedAddresses.split(\" \");\n        const wasConnectedViaStandalone = this.storage.getItem(\"IsStandaloneSigning\") === \"true\";\n        if (addresses[0] !== \"\" && !linked && this._session.linked && !wasConnectedViaStandalone) {\n          this.isUnlinkedErrorState = true;\n        }\n      }\n    };\n    this.metadataUpdated = (key, value) => {\n      this.storage.setItem(key, value);\n    };\n    this.chainUpdated = (chainId, jsonRpcUrl) => {\n      if (this.chainCallbackParams.chainId === chainId && this.chainCallbackParams.jsonRpcUrl === jsonRpcUrl) {\n        return;\n      }\n      this.chainCallbackParams = {\n        chainId,\n        jsonRpcUrl\n      };\n      if (this.chainCallback) {\n        this.chainCallback(jsonRpcUrl, Number.parseInt(chainId, 10));\n      }\n    };\n    this.accountUpdated = (selectedAddress) => {\n      if (this.accountsCallback) {\n        this.accountsCallback([selectedAddress]);\n      }\n      if (_WalletLinkRelay.accountRequestCallbackIds.size > 0) {\n        Array.from(_WalletLinkRelay.accountRequestCallbackIds.values()).forEach((id) => {\n          this.invokeCallback(id, {\n            method: \"requestEthereumAccounts\",\n            result: [selectedAddress]\n          });\n        });\n        _WalletLinkRelay.accountRequestCallbackIds.clear();\n      }\n    };\n    this.resetAndReload = this.resetAndReload.bind(this);\n    this.linkAPIUrl = options.linkAPIUrl;\n    this.storage = options.storage;\n    this.metadata = options.metadata;\n    this.accountsCallback = options.accountsCallback;\n    this.chainCallback = options.chainCallback;\n    const { session, ui, connection } = this.subscribe();\n    this._session = session;\n    this.connection = connection;\n    this.relayEventManager = new RelayEventManager();\n    this.ui = ui;\n    this.ui.attach();\n  }\n  subscribe() {\n    const session = WalletLinkSession.load(this.storage) || WalletLinkSession.create(this.storage);\n    const { linkAPIUrl } = this;\n    const connection = new WalletLinkConnection({\n      session,\n      linkAPIUrl,\n      listener: this\n    });\n    const ui = this.isMobileWeb ? new WLMobileRelayUI() : new WalletLinkRelayUI();\n    connection.connect();\n    return { session, ui, connection };\n  }\n  resetAndReload() {\n    this.connection.destroy().then(() => {\n      const storedSession = WalletLinkSession.load(this.storage);\n      if ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) === this._session.id) {\n        ScopedLocalStorage.clearAll();\n      }\n      document.location.reload();\n    }).catch((_2) => {\n    });\n  }\n  signEthereumTransaction(params) {\n    return this.sendRequest({\n      method: \"signEthereumTransaction\",\n      params: {\n        fromAddress: params.fromAddress,\n        toAddress: params.toAddress,\n        weiValue: bigIntStringFromBigInt(params.weiValue),\n        data: hexStringFromBuffer(params.data, true),\n        nonce: params.nonce,\n        gasPriceInWei: params.gasPriceInWei ? bigIntStringFromBigInt(params.gasPriceInWei) : null,\n        maxFeePerGas: params.gasPriceInWei ? bigIntStringFromBigInt(params.gasPriceInWei) : null,\n        maxPriorityFeePerGas: params.gasPriceInWei ? bigIntStringFromBigInt(params.gasPriceInWei) : null,\n        gasLimit: params.gasLimit ? bigIntStringFromBigInt(params.gasLimit) : null,\n        chainId: params.chainId,\n        shouldSubmit: false\n      }\n    });\n  }\n  signAndSubmitEthereumTransaction(params) {\n    return this.sendRequest({\n      method: \"signEthereumTransaction\",\n      params: {\n        fromAddress: params.fromAddress,\n        toAddress: params.toAddress,\n        weiValue: bigIntStringFromBigInt(params.weiValue),\n        data: hexStringFromBuffer(params.data, true),\n        nonce: params.nonce,\n        gasPriceInWei: params.gasPriceInWei ? bigIntStringFromBigInt(params.gasPriceInWei) : null,\n        maxFeePerGas: params.maxFeePerGas ? bigIntStringFromBigInt(params.maxFeePerGas) : null,\n        maxPriorityFeePerGas: params.maxPriorityFeePerGas ? bigIntStringFromBigInt(params.maxPriorityFeePerGas) : null,\n        gasLimit: params.gasLimit ? bigIntStringFromBigInt(params.gasLimit) : null,\n        chainId: params.chainId,\n        shouldSubmit: true\n      }\n    });\n  }\n  submitEthereumTransaction(signedTransaction, chainId) {\n    return this.sendRequest({\n      method: \"submitEthereumTransaction\",\n      params: {\n        signedTransaction: hexStringFromBuffer(signedTransaction, true),\n        chainId\n      }\n    });\n  }\n  getWalletLinkSession() {\n    return this._session;\n  }\n  sendRequest(request) {\n    let hideSnackbarItem = null;\n    const id = randomBytesHex(8);\n    const cancel = (error) => {\n      this.publishWeb3RequestCanceledEvent(id);\n      this.handleErrorResponse(id, request.method, error);\n      hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n    };\n    return new Promise((resolve, reject) => {\n      {\n        hideSnackbarItem = this.ui.showConnecting({\n          isUnlinkedErrorState: this.isUnlinkedErrorState,\n          onCancel: cancel,\n          onResetConnection: this.resetAndReload\n          // eslint-disable-line @typescript-eslint/unbound-method\n        });\n      }\n      this.relayEventManager.callbacks.set(id, (response) => {\n        hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n        if (isErrorResponse(response)) {\n          return reject(new Error(response.errorMessage));\n        }\n        resolve(response);\n      });\n      this.publishWeb3RequestEvent(id, request);\n    });\n  }\n  publishWeb3RequestEvent(id, request) {\n    const message = { type: \"WEB3_REQUEST\", id, request };\n    this.publishEvent(\"Web3Request\", message, true).then((_2) => {\n    }).catch((err) => {\n      this.handleWeb3ResponseMessage(message.id, {\n        method: request.method,\n        errorMessage: err.message\n      });\n    });\n    if (this.isMobileWeb) {\n      this.openCoinbaseWalletDeeplink(request.method);\n    }\n  }\n  // copied from MobileRelay\n  openCoinbaseWalletDeeplink(method) {\n    if (!(this.ui instanceof WLMobileRelayUI))\n      return;\n    switch (method) {\n      case \"requestEthereumAccounts\":\n      case \"switchEthereumChain\":\n        return;\n      default:\n        window.addEventListener(\"blur\", () => {\n          window.addEventListener(\"focus\", () => {\n            this.connection.checkUnseenEvents();\n          }, { once: true });\n        }, { once: true });\n        this.ui.openCoinbaseWalletDeeplink();\n        break;\n    }\n  }\n  publishWeb3RequestCanceledEvent(id) {\n    const message = {\n      type: \"WEB3_REQUEST_CANCELED\",\n      id\n    };\n    this.publishEvent(\"Web3RequestCanceled\", message, false).then();\n  }\n  publishEvent(event, message, callWebhook) {\n    return this.connection.publishEvent(event, message, callWebhook);\n  }\n  handleWeb3ResponseMessage(id, response) {\n    if (response.method === \"requestEthereumAccounts\") {\n      _WalletLinkRelay.accountRequestCallbackIds.forEach((id2) => this.invokeCallback(id2, response));\n      _WalletLinkRelay.accountRequestCallbackIds.clear();\n      return;\n    }\n    this.invokeCallback(id, response);\n  }\n  handleErrorResponse(id, method, error) {\n    var _a;\n    const errorMessage = (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : \"Unspecified error message.\";\n    this.handleWeb3ResponseMessage(id, {\n      method,\n      errorMessage\n    });\n  }\n  invokeCallback(id, response) {\n    const callback = this.relayEventManager.callbacks.get(id);\n    if (callback) {\n      callback(response);\n      this.relayEventManager.callbacks.delete(id);\n    }\n  }\n  requestEthereumAccounts() {\n    const { appName, appLogoUrl } = this.metadata;\n    const request = {\n      method: \"requestEthereumAccounts\",\n      params: {\n        appName,\n        appLogoUrl\n      }\n    };\n    const hideSnackbarItem = null;\n    const id = randomBytesHex(8);\n    return new Promise((resolve, reject) => {\n      this.relayEventManager.callbacks.set(id, (response) => {\n        hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n        if (isErrorResponse(response)) {\n          return reject(new Error(response.errorMessage));\n        }\n        resolve(response);\n      });\n      _WalletLinkRelay.accountRequestCallbackIds.add(id);\n      this.publishWeb3RequestEvent(id, request);\n    });\n  }\n  watchAsset(type, address, symbol, decimals, image, chainId) {\n    const request = {\n      method: \"watchAsset\",\n      params: {\n        type,\n        options: {\n          address,\n          symbol,\n          decimals,\n          image\n        },\n        chainId\n      }\n    };\n    let hideSnackbarItem = null;\n    const id = randomBytesHex(8);\n    const cancel = (error) => {\n      this.publishWeb3RequestCanceledEvent(id);\n      this.handleErrorResponse(id, request.method, error);\n      hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n    };\n    {\n      hideSnackbarItem = this.ui.showConnecting({\n        isUnlinkedErrorState: this.isUnlinkedErrorState,\n        onCancel: cancel,\n        onResetConnection: this.resetAndReload\n        // eslint-disable-line @typescript-eslint/unbound-method\n      });\n    }\n    return new Promise((resolve, reject) => {\n      this.relayEventManager.callbacks.set(id, (response) => {\n        hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n        if (isErrorResponse(response)) {\n          return reject(new Error(response.errorMessage));\n        }\n        resolve(response);\n      });\n      this.publishWeb3RequestEvent(id, request);\n    });\n  }\n  addEthereumChain(chainId, rpcUrls, iconUrls, blockExplorerUrls, chainName, nativeCurrency) {\n    const request = {\n      method: \"addEthereumChain\",\n      params: {\n        chainId,\n        rpcUrls,\n        blockExplorerUrls,\n        chainName,\n        iconUrls,\n        nativeCurrency\n      }\n    };\n    let hideSnackbarItem = null;\n    const id = randomBytesHex(8);\n    const cancel = (error) => {\n      this.publishWeb3RequestCanceledEvent(id);\n      this.handleErrorResponse(id, request.method, error);\n      hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n    };\n    {\n      hideSnackbarItem = this.ui.showConnecting({\n        isUnlinkedErrorState: this.isUnlinkedErrorState,\n        onCancel: cancel,\n        onResetConnection: this.resetAndReload\n        // eslint-disable-line @typescript-eslint/unbound-method\n      });\n    }\n    return new Promise((resolve, reject) => {\n      this.relayEventManager.callbacks.set(id, (response) => {\n        hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n        if (isErrorResponse(response)) {\n          return reject(new Error(response.errorMessage));\n        }\n        resolve(response);\n      });\n      this.publishWeb3RequestEvent(id, request);\n    });\n  }\n  switchEthereumChain(chainId, address) {\n    const request = {\n      method: \"switchEthereumChain\",\n      params: Object.assign({ chainId }, { address })\n    };\n    let hideSnackbarItem = null;\n    const id = randomBytesHex(8);\n    const cancel = (error) => {\n      this.publishWeb3RequestCanceledEvent(id);\n      this.handleErrorResponse(id, request.method, error);\n      hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n    };\n    {\n      hideSnackbarItem = this.ui.showConnecting({\n        isUnlinkedErrorState: this.isUnlinkedErrorState,\n        onCancel: cancel,\n        onResetConnection: this.resetAndReload\n        // eslint-disable-line @typescript-eslint/unbound-method\n      });\n    }\n    return new Promise((resolve, reject) => {\n      this.relayEventManager.callbacks.set(id, (response) => {\n        hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n        if (isErrorResponse(response) && response.errorCode) {\n          return reject(standardErrors.provider.custom({\n            code: response.errorCode,\n            message: `Unrecognized chain ID. Try adding the chain using addEthereumChain first.`\n          }));\n        } else if (isErrorResponse(response)) {\n          return reject(new Error(response.errorMessage));\n        }\n        resolve(response);\n      });\n      this.publishWeb3RequestEvent(id, request);\n    });\n  }\n};\nWalletLinkRelay.accountRequestCallbackIds = /* @__PURE__ */ new Set();\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/walletlink/WalletLinkSigner.js\nvar DEFAULT_CHAIN_ID_KEY = \"DefaultChainId\";\nvar DEFAULT_JSON_RPC_URL = \"DefaultJsonRpcUrl\";\nvar WalletLinkSigner = class {\n  constructor(options) {\n    this._relay = null;\n    this._addresses = [];\n    this.metadata = options.metadata;\n    this._storage = new ScopedLocalStorage(\"walletlink\", WALLETLINK_URL);\n    this.callback = options.callback || null;\n    const cachedAddresses = this._storage.getItem(LOCAL_STORAGE_ADDRESSES_KEY);\n    if (cachedAddresses) {\n      const addresses = cachedAddresses.split(\" \");\n      if (addresses[0] !== \"\") {\n        this._addresses = addresses.map((address) => ensureAddressString(address));\n      }\n    }\n    this.initializeRelay();\n  }\n  getSession() {\n    const relay = this.initializeRelay();\n    const { id, secret } = relay.getWalletLinkSession();\n    return { id, secret };\n  }\n  async handshake() {\n    await this._eth_requestAccounts();\n  }\n  get selectedAddress() {\n    return this._addresses[0] || void 0;\n  }\n  get jsonRpcUrl() {\n    var _a;\n    return (_a = this._storage.getItem(DEFAULT_JSON_RPC_URL)) !== null && _a !== void 0 ? _a : void 0;\n  }\n  set jsonRpcUrl(value) {\n    this._storage.setItem(DEFAULT_JSON_RPC_URL, value);\n  }\n  updateProviderInfo(jsonRpcUrl, chainId) {\n    var _a;\n    this.jsonRpcUrl = jsonRpcUrl;\n    const originalChainId = this.getChainId();\n    this._storage.setItem(DEFAULT_CHAIN_ID_KEY, chainId.toString(10));\n    const chainChanged = ensureIntNumber(chainId) !== originalChainId;\n    if (chainChanged) {\n      (_a = this.callback) === null || _a === void 0 ? void 0 : _a.call(this, \"chainChanged\", hexStringFromNumber(chainId));\n    }\n  }\n  async watchAsset(params) {\n    const request = Array.isArray(params) ? params[0] : params;\n    if (!request.type) {\n      throw standardErrors.rpc.invalidParams(\"Type is required\");\n    }\n    if ((request === null || request === void 0 ? void 0 : request.type) !== \"ERC20\") {\n      throw standardErrors.rpc.invalidParams(`Asset of type '${request.type}' is not supported`);\n    }\n    if (!(request === null || request === void 0 ? void 0 : request.options)) {\n      throw standardErrors.rpc.invalidParams(\"Options are required\");\n    }\n    if (!(request === null || request === void 0 ? void 0 : request.options.address)) {\n      throw standardErrors.rpc.invalidParams(\"Address is required\");\n    }\n    const chainId = this.getChainId();\n    const { address, symbol, image, decimals } = request.options;\n    const relay = this.initializeRelay();\n    const result = await relay.watchAsset(request.type, address, symbol, decimals, image, chainId === null || chainId === void 0 ? void 0 : chainId.toString());\n    if (isErrorResponse(result))\n      return false;\n    return !!result.result;\n  }\n  async addEthereumChain(params) {\n    var _a, _b;\n    const request = params[0];\n    if (((_a = request.rpcUrls) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n      throw standardErrors.rpc.invalidParams(\"please pass in at least 1 rpcUrl\");\n    }\n    if (!request.chainName || request.chainName.trim() === \"\") {\n      throw standardErrors.rpc.invalidParams(\"chainName is a required field\");\n    }\n    if (!request.nativeCurrency) {\n      throw standardErrors.rpc.invalidParams(\"nativeCurrency is a required field\");\n    }\n    const chainIdNumber = Number.parseInt(request.chainId, 16);\n    if (chainIdNumber === this.getChainId()) {\n      return false;\n    }\n    const relay = this.initializeRelay();\n    const { rpcUrls = [], blockExplorerUrls = [], chainName, iconUrls = [], nativeCurrency } = request;\n    const res = await relay.addEthereumChain(chainIdNumber.toString(), rpcUrls, iconUrls, blockExplorerUrls, chainName, nativeCurrency);\n    if (isErrorResponse(res))\n      return false;\n    if (((_b = res.result) === null || _b === void 0 ? void 0 : _b.isApproved) === true) {\n      this.updateProviderInfo(rpcUrls[0], chainIdNumber);\n      return null;\n    }\n    throw standardErrors.rpc.internal(\"unable to add ethereum chain\");\n  }\n  async switchEthereumChain(params) {\n    const request = params[0];\n    const chainId = Number.parseInt(request.chainId, 16);\n    const relay = this.initializeRelay();\n    const res = await relay.switchEthereumChain(chainId.toString(10), this.selectedAddress || void 0);\n    if (isErrorResponse(res))\n      throw res;\n    const switchResponse = res.result;\n    if (switchResponse.isApproved && switchResponse.rpcUrl.length > 0) {\n      this.updateProviderInfo(switchResponse.rpcUrl, chainId);\n    }\n    return null;\n  }\n  async cleanup() {\n    this.callback = null;\n    if (this._relay) {\n      this._relay.resetAndReload();\n    }\n    this._storage.clear();\n  }\n  _setAddresses(addresses, _2) {\n    var _a;\n    if (!Array.isArray(addresses)) {\n      throw new Error(\"addresses is not an array\");\n    }\n    const newAddresses = addresses.map((address) => ensureAddressString(address));\n    if (JSON.stringify(newAddresses) === JSON.stringify(this._addresses)) {\n      return;\n    }\n    this._addresses = newAddresses;\n    (_a = this.callback) === null || _a === void 0 ? void 0 : _a.call(this, \"accountsChanged\", newAddresses);\n    this._storage.setItem(LOCAL_STORAGE_ADDRESSES_KEY, newAddresses.join(\" \"));\n  }\n  async request(request) {\n    const params = request.params || [];\n    switch (request.method) {\n      case \"eth_accounts\":\n        return [...this._addresses];\n      case \"eth_coinbase\":\n        return this.selectedAddress || null;\n      case \"net_version\":\n        return this.getChainId().toString(10);\n      case \"eth_chainId\":\n        return hexStringFromNumber(this.getChainId());\n      case \"eth_requestAccounts\":\n        return this._eth_requestAccounts();\n      case \"eth_ecRecover\":\n      case \"personal_ecRecover\":\n        return this.ecRecover(request);\n      case \"personal_sign\":\n        return this.personalSign(request);\n      case \"eth_signTransaction\":\n        return this._eth_signTransaction(params);\n      case \"eth_sendRawTransaction\":\n        return this._eth_sendRawTransaction(params);\n      case \"eth_sendTransaction\":\n        return this._eth_sendTransaction(params);\n      case \"eth_signTypedData_v1\":\n      case \"eth_signTypedData_v3\":\n      case \"eth_signTypedData_v4\":\n      case \"eth_signTypedData\":\n        return this.signTypedData(request);\n      case \"wallet_addEthereumChain\":\n        return this.addEthereumChain(params);\n      case \"wallet_switchEthereumChain\":\n        return this.switchEthereumChain(params);\n      case \"wallet_watchAsset\":\n        return this.watchAsset(params);\n      default:\n        if (!this.jsonRpcUrl)\n          throw standardErrors.rpc.internal(\"No RPC URL set for chain\");\n        return fetchRPCRequest(request, this.jsonRpcUrl);\n    }\n  }\n  _ensureKnownAddress(addressString) {\n    const addressStr = ensureAddressString(addressString);\n    const lowercaseAddresses = this._addresses.map((address) => ensureAddressString(address));\n    if (!lowercaseAddresses.includes(addressStr)) {\n      throw new Error(\"Unknown Ethereum address\");\n    }\n  }\n  _prepareTransactionParams(tx) {\n    const fromAddress = tx.from ? ensureAddressString(tx.from) : this.selectedAddress;\n    if (!fromAddress) {\n      throw new Error(\"Ethereum address is unavailable\");\n    }\n    this._ensureKnownAddress(fromAddress);\n    const toAddress = tx.to ? ensureAddressString(tx.to) : null;\n    const weiValue = tx.value != null ? ensureBigInt(tx.value) : BigInt(0);\n    const data = tx.data ? ensureBuffer(tx.data) : Buffer.alloc(0);\n    const nonce = tx.nonce != null ? ensureIntNumber(tx.nonce) : null;\n    const gasPriceInWei = tx.gasPrice != null ? ensureBigInt(tx.gasPrice) : null;\n    const maxFeePerGas = tx.maxFeePerGas != null ? ensureBigInt(tx.maxFeePerGas) : null;\n    const maxPriorityFeePerGas = tx.maxPriorityFeePerGas != null ? ensureBigInt(tx.maxPriorityFeePerGas) : null;\n    const gasLimit = tx.gas != null ? ensureBigInt(tx.gas) : null;\n    const chainId = tx.chainId ? ensureIntNumber(tx.chainId) : this.getChainId();\n    return {\n      fromAddress,\n      toAddress,\n      weiValue,\n      data,\n      nonce,\n      gasPriceInWei,\n      maxFeePerGas,\n      maxPriorityFeePerGas,\n      gasLimit,\n      chainId\n    };\n  }\n  async ecRecover(request) {\n    const { method, params } = request;\n    if (!Array.isArray(params))\n      throw standardErrors.rpc.invalidParams();\n    const relay = this.initializeRelay();\n    const res = await relay.sendRequest({\n      method: \"ethereumAddressFromSignedMessage\",\n      params: {\n        message: encodeToHexString(params[0]),\n        signature: encodeToHexString(params[1]),\n        addPrefix: method === \"personal_ecRecover\"\n      }\n    });\n    if (isErrorResponse(res))\n      throw res;\n    return res.result;\n  }\n  getChainId() {\n    var _a;\n    return Number.parseInt((_a = this._storage.getItem(DEFAULT_CHAIN_ID_KEY)) !== null && _a !== void 0 ? _a : \"1\", 10);\n  }\n  async _eth_requestAccounts() {\n    var _a, _b;\n    if (this._addresses.length > 0) {\n      (_a = this.callback) === null || _a === void 0 ? void 0 : _a.call(this, \"connect\", { chainId: hexStringFromNumber(this.getChainId()) });\n      return this._addresses;\n    }\n    const relay = this.initializeRelay();\n    const res = await relay.requestEthereumAccounts();\n    if (isErrorResponse(res))\n      throw res;\n    if (!res.result) {\n      throw new Error(\"accounts received is empty\");\n    }\n    this._setAddresses(res.result);\n    (_b = this.callback) === null || _b === void 0 ? void 0 : _b.call(this, \"connect\", { chainId: hexStringFromNumber(this.getChainId()) });\n    return this._addresses;\n  }\n  async personalSign({ params }) {\n    if (!Array.isArray(params))\n      throw standardErrors.rpc.invalidParams();\n    const address = params[1];\n    const rawData = params[0];\n    this._ensureKnownAddress(address);\n    const relay = this.initializeRelay();\n    const res = await relay.sendRequest({\n      method: \"signEthereumMessage\",\n      params: {\n        address: ensureAddressString(address),\n        message: encodeToHexString(rawData),\n        addPrefix: true,\n        typedDataJson: null\n      }\n    });\n    if (isErrorResponse(res))\n      throw res;\n    return res.result;\n  }\n  async _eth_signTransaction(params) {\n    const tx = this._prepareTransactionParams(params[0] || {});\n    const relay = this.initializeRelay();\n    const res = await relay.signEthereumTransaction(tx);\n    if (isErrorResponse(res))\n      throw res;\n    return res.result;\n  }\n  async _eth_sendRawTransaction(params) {\n    const signedTransaction = ensureBuffer(params[0]);\n    const relay = this.initializeRelay();\n    const res = await relay.submitEthereumTransaction(signedTransaction, this.getChainId());\n    if (isErrorResponse(res))\n      throw res;\n    return res.result;\n  }\n  async _eth_sendTransaction(params) {\n    const tx = this._prepareTransactionParams(params[0] || {});\n    const relay = this.initializeRelay();\n    const res = await relay.signAndSubmitEthereumTransaction(tx);\n    if (isErrorResponse(res))\n      throw res;\n    return res.result;\n  }\n  async signTypedData(request) {\n    const { method, params } = request;\n    if (!Array.isArray(params))\n      throw standardErrors.rpc.invalidParams();\n    const encode = (input) => {\n      const hashFuncMap = {\n        eth_signTypedData_v1: import_eth_eip712_util.default.hashForSignTypedDataLegacy,\n        eth_signTypedData_v3: import_eth_eip712_util.default.hashForSignTypedData_v3,\n        eth_signTypedData_v4: import_eth_eip712_util.default.hashForSignTypedData_v4,\n        eth_signTypedData: import_eth_eip712_util.default.hashForSignTypedData_v4\n      };\n      return hexStringFromBuffer(hashFuncMap[method]({\n        data: ensureParsedJSONObject(input)\n      }), true);\n    };\n    const address = params[method === \"eth_signTypedData_v1\" ? 1 : 0];\n    const rawData = params[method === \"eth_signTypedData_v1\" ? 0 : 1];\n    this._ensureKnownAddress(address);\n    const relay = this.initializeRelay();\n    const res = await relay.sendRequest({\n      method: \"signEthereumMessage\",\n      params: {\n        address: ensureAddressString(address),\n        message: encode(rawData),\n        typedDataJson: JSON.stringify(rawData, null, 2),\n        addPrefix: false\n      }\n    });\n    if (isErrorResponse(res))\n      throw res;\n    return res.result;\n  }\n  initializeRelay() {\n    if (!this._relay) {\n      this._relay = new WalletLinkRelay({\n        linkAPIUrl: WALLETLINK_URL,\n        storage: this._storage,\n        metadata: this.metadata,\n        accountsCallback: this._setAddresses.bind(this),\n        chainCallback: this.updateProviderInfo.bind(this)\n      });\n    }\n    return this._relay;\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/sign/util.js\nvar SIGNER_TYPE_KEY = \"SignerType\";\nvar storage = new ScopedLocalStorage(\"CBWSDK\", \"SignerConfigurator\");\nfunction loadSignerType() {\n  return storage.getItem(SIGNER_TYPE_KEY);\n}\nfunction storeSignerType(signerType) {\n  storage.setItem(SIGNER_TYPE_KEY, signerType);\n}\nasync function fetchSignerType(params) {\n  const { communicator, metadata, handshakeRequest, callback } = params;\n  listenForWalletLinkSessionRequest(communicator, metadata, callback).catch(() => {\n  });\n  const request = {\n    id: crypto.randomUUID(),\n    event: \"selectSignerType\",\n    data: Object.assign(Object.assign({}, params.preference), { handshakeRequest })\n  };\n  const { data } = await communicator.postRequestAndWaitForResponse(request);\n  return data;\n}\nfunction createSigner(params) {\n  const { signerType, metadata, communicator, callback } = params;\n  switch (signerType) {\n    case \"scw\": {\n      return new SCWSigner({\n        metadata,\n        callback,\n        communicator\n      });\n    }\n    case \"walletlink\": {\n      return new WalletLinkSigner({\n        metadata,\n        callback\n      });\n    }\n  }\n}\nasync function listenForWalletLinkSessionRequest(communicator, metadata, callback) {\n  await communicator.onMessage(({ event }) => event === \"WalletLinkSessionRequest\");\n  const walletlink = new WalletLinkSigner({\n    metadata,\n    callback\n  });\n  communicator.postMessage({\n    event: \"WalletLinkUpdate\",\n    data: { session: walletlink.getSession() }\n  });\n  await walletlink.handshake();\n  communicator.postMessage({\n    event: \"WalletLinkUpdate\",\n    data: { connected: true }\n  });\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/util/checkCrossOriginOpenerPolicy.js\nvar COOP_ERROR_MESSAGE = `Coinbase Wallet SDK requires the Cross-Origin-Opener-Policy header to not be set to 'same-origin'. This is to ensure that the SDK can communicate with the Coinbase Smart Wallet app.\n\nPlease see https://www.smartwallet.dev/guides/tips/popup-tips#cross-origin-opener-policy for more information.`;\nvar createCoopChecker = () => {\n  let crossOriginOpenerPolicy;\n  return {\n    getCrossOriginOpenerPolicy: () => {\n      if (crossOriginOpenerPolicy === void 0) {\n        return \"undefined\";\n      }\n      return crossOriginOpenerPolicy;\n    },\n    checkCrossOriginOpenerPolicy: async () => {\n      if (typeof window === \"undefined\") {\n        crossOriginOpenerPolicy = \"non-browser-env\";\n        return;\n      }\n      try {\n        const url = `${window.location.origin}${window.location.pathname}`;\n        const response = await fetch(url, {\n          method: \"HEAD\"\n        });\n        if (!response.ok) {\n          throw new Error(`HTTP error! status: ${response.status}`);\n        }\n        const result = response.headers.get(\"Cross-Origin-Opener-Policy\");\n        crossOriginOpenerPolicy = result !== null && result !== void 0 ? result : \"null\";\n        if (crossOriginOpenerPolicy === \"same-origin\") {\n          console.error(COOP_ERROR_MESSAGE);\n        }\n      } catch (error) {\n        console.error(\"Error checking Cross-Origin-Opener-Policy:\", error.message);\n        crossOriginOpenerPolicy = \"error\";\n      }\n    }\n  };\n};\nvar { checkCrossOriginOpenerPolicy, getCrossOriginOpenerPolicy } = createCoopChecker();\n\n// node_modules/@coinbase/wallet-sdk/dist/util/web.js\nvar POPUP_WIDTH = 420;\nvar POPUP_HEIGHT = 540;\nfunction openPopup(url) {\n  const left = (window.innerWidth - POPUP_WIDTH) / 2 + window.screenX;\n  const top = (window.innerHeight - POPUP_HEIGHT) / 2 + window.screenY;\n  appendAppInfoQueryParams(url);\n  const popup = window.open(url, \"Smart Wallet\", `width=${POPUP_WIDTH}, height=${POPUP_HEIGHT}, left=${left}, top=${top}`);\n  popup === null || popup === void 0 ? void 0 : popup.focus();\n  if (!popup) {\n    throw standardErrors.rpc.internal(\"Pop up window failed to open\");\n  }\n  return popup;\n}\nfunction closePopup(popup) {\n  if (popup && !popup.closed) {\n    popup.close();\n  }\n}\nfunction appendAppInfoQueryParams(url) {\n  const params = {\n    sdkName: NAME,\n    sdkVersion: VERSION,\n    origin: window.location.origin,\n    coop: getCrossOriginOpenerPolicy()\n  };\n  for (const [key, value] of Object.entries(params)) {\n    url.searchParams.append(key, value.toString());\n  }\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/core/communicator/Communicator.js\nvar Communicator = class {\n  constructor({ url = CB_KEYS_URL, metadata, preference }) {\n    this.popup = null;\n    this.listeners = /* @__PURE__ */ new Map();\n    this.postMessage = async (message) => {\n      const popup = await this.waitForPopupLoaded();\n      popup.postMessage(message, this.url.origin);\n    };\n    this.postRequestAndWaitForResponse = async (request) => {\n      const responsePromise = this.onMessage(({ requestId }) => requestId === request.id);\n      this.postMessage(request);\n      return await responsePromise;\n    };\n    this.onMessage = async (predicate) => {\n      return new Promise((resolve, reject) => {\n        const listener = (event) => {\n          if (event.origin !== this.url.origin)\n            return;\n          const message = event.data;\n          if (predicate(message)) {\n            resolve(message);\n            window.removeEventListener(\"message\", listener);\n            this.listeners.delete(listener);\n          }\n        };\n        window.addEventListener(\"message\", listener);\n        this.listeners.set(listener, { reject });\n      });\n    };\n    this.disconnect = () => {\n      closePopup(this.popup);\n      this.popup = null;\n      this.listeners.forEach(({ reject }, listener) => {\n        reject(standardErrors.provider.userRejectedRequest(\"Request rejected\"));\n        window.removeEventListener(\"message\", listener);\n      });\n      this.listeners.clear();\n    };\n    this.waitForPopupLoaded = async () => {\n      if (this.popup && !this.popup.closed) {\n        this.popup.focus();\n        return this.popup;\n      }\n      this.popup = openPopup(this.url);\n      this.onMessage(({ event }) => event === \"PopupUnload\").then(this.disconnect).catch(() => {\n      });\n      return this.onMessage(({ event }) => event === \"PopupLoaded\").then((message) => {\n        this.postMessage({\n          requestId: message.id,\n          data: {\n            version: VERSION,\n            metadata: this.metadata,\n            preference: this.preference,\n            location: window.location.toString()\n          }\n        });\n      }).then(() => {\n        if (!this.popup)\n          throw standardErrors.rpc.internal();\n        return this.popup;\n      });\n    };\n    this.url = new URL(url);\n    this.metadata = metadata;\n    this.preference = preference;\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/core/error/serialize.js\nfunction serializeError(error) {\n  const serialized = serialize(getErrorObject(error), {\n    shouldIncludeStack: true\n  });\n  const docUrl = new URL(\"https://docs.cloud.coinbase.com/wallet-sdk/docs/errors\");\n  docUrl.searchParams.set(\"version\", VERSION);\n  docUrl.searchParams.set(\"code\", serialized.code.toString());\n  docUrl.searchParams.set(\"message\", serialized.message);\n  return Object.assign(Object.assign({}, serialized), { docUrl: docUrl.href });\n}\nfunction getErrorObject(error) {\n  var _a;\n  if (typeof error === \"string\") {\n    return {\n      message: error,\n      code: standardErrorCodes.rpc.internal\n    };\n  } else if (isErrorResponse(error)) {\n    const message = error.errorMessage;\n    const code = (_a = error.errorCode) !== null && _a !== void 0 ? _a : message.match(/(denied|rejected)/i) ? standardErrorCodes.provider.userRejectedRequest : void 0;\n    return Object.assign(Object.assign({}, error), {\n      message,\n      code,\n      data: { method: error.method }\n    });\n  }\n  return error;\n}\n\n// node_modules/eventemitter3/index.mjs\nvar import_index2 = __toESM(require_eventemitter3(), 1);\n\n// node_modules/@coinbase/wallet-sdk/dist/core/provider/interface.js\nvar ProviderEventEmitter = class extends import_index2.default {\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletProvider.js\nvar __rest = function(s3, e3) {\n  var t3 = {};\n  for (var p3 in s3)\n    if (Object.prototype.hasOwnProperty.call(s3, p3) && e3.indexOf(p3) < 0)\n      t3[p3] = s3[p3];\n  if (s3 != null && typeof Object.getOwnPropertySymbols === \"function\")\n    for (var i3 = 0, p3 = Object.getOwnPropertySymbols(s3); i3 < p3.length; i3++) {\n      if (e3.indexOf(p3[i3]) < 0 && Object.prototype.propertyIsEnumerable.call(s3, p3[i3]))\n        t3[p3[i3]] = s3[p3[i3]];\n    }\n  return t3;\n};\nvar CoinbaseWalletProvider = class extends ProviderEventEmitter {\n  constructor(_a) {\n    var { metadata } = _a, _b = _a.preference, { keysUrl } = _b, preference = __rest(_b, [\"keysUrl\"]);\n    super();\n    this.signer = null;\n    this.isCoinbaseWallet = true;\n    this.metadata = metadata;\n    this.preference = preference;\n    this.communicator = new Communicator({\n      url: keysUrl,\n      metadata,\n      preference\n    });\n    const signerType = loadSignerType();\n    if (signerType) {\n      this.signer = this.initSigner(signerType);\n    }\n  }\n  async request(args) {\n    try {\n      checkErrorForInvalidRequestArgs(args);\n      if (!this.signer) {\n        switch (args.method) {\n          case \"eth_requestAccounts\": {\n            const signerType = await this.requestSignerSelection(args);\n            const signer = this.initSigner(signerType);\n            await signer.handshake(args);\n            this.signer = signer;\n            storeSignerType(signerType);\n            break;\n          }\n          case \"net_version\":\n            return 1;\n          case \"eth_chainId\":\n            return hexStringFromNumber(1);\n          default: {\n            throw standardErrors.provider.unauthorized(\"Must call 'eth_requestAccounts' before other methods\");\n          }\n        }\n      }\n      return this.signer.request(args);\n    } catch (error) {\n      const { code } = error;\n      if (code === standardErrorCodes.provider.unauthorized)\n        this.disconnect();\n      return Promise.reject(serializeError(error));\n    }\n  }\n  /** @deprecated Use `.request({ method: 'eth_requestAccounts' })` instead. */\n  async enable() {\n    console.warn(`.enable() has been deprecated. Please use .request({ method: \"eth_requestAccounts\" }) instead.`);\n    return await this.request({\n      method: \"eth_requestAccounts\"\n    });\n  }\n  async disconnect() {\n    var _a;\n    await ((_a = this.signer) === null || _a === void 0 ? void 0 : _a.cleanup());\n    this.signer = null;\n    ScopedLocalStorage.clearAll();\n    this.emit(\"disconnect\", standardErrors.provider.disconnected(\"User initiated disconnection\"));\n  }\n  requestSignerSelection(handshakeRequest) {\n    return fetchSignerType({\n      communicator: this.communicator,\n      preference: this.preference,\n      metadata: this.metadata,\n      handshakeRequest,\n      callback: this.emit.bind(this)\n    });\n  }\n  initSigner(signerType) {\n    return createSigner({\n      signerType,\n      metadata: this.metadata,\n      communicator: this.communicator,\n      callback: this.emit.bind(this)\n    });\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/util/validatePreferences.js\nfunction validatePreferences(preference) {\n  if (!preference) {\n    return;\n  }\n  if (![\"all\", \"smartWalletOnly\", \"eoaOnly\"].includes(preference.options)) {\n    throw new Error(`Invalid options: ${preference.options}`);\n  }\n  if (preference.attribution) {\n    if (preference.attribution.auto !== void 0 && preference.attribution.dataSuffix !== void 0) {\n      throw new Error(`Attribution cannot contain both auto and dataSuffix properties`);\n    }\n  }\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js\nvar CoinbaseWalletSDK = class {\n  constructor(metadata) {\n    this.metadata = {\n      appName: metadata.appName || \"Dapp\",\n      appLogoUrl: metadata.appLogoUrl || getFavicon(),\n      appChainIds: metadata.appChainIds || []\n    };\n    this.storeLatestVersion();\n    void checkCrossOriginOpenerPolicy();\n  }\n  makeWeb3Provider(preference = { options: \"all\" }) {\n    var _a;\n    validatePreferences(preference);\n    const params = { metadata: this.metadata, preference };\n    return (_a = getCoinbaseInjectedProvider(params)) !== null && _a !== void 0 ? _a : new CoinbaseWalletProvider(params);\n  }\n  /**\n   * Official Coinbase Wallet logo for developers to use on their frontend\n   * @param type Type of wallet logo: \"standard\" | \"circle\" | \"text\" | \"textWithLogo\" | \"textLight\" | \"textWithLogoLight\"\n   * @param width Width of the logo (Optional)\n   * @returns SVG Data URI\n   */\n  getCoinbaseWalletLogo(type, width = 240) {\n    return walletLogo(type, width);\n  }\n  storeLatestVersion() {\n    const versionStorage = new ScopedLocalStorage(\"CBWSDK\");\n    versionStorage.setItem(\"VERSION\", VERSION);\n  }\n};\n\n// node_modules/@coinbase/wallet-sdk/dist/createCoinbaseWalletProvider.js\nfunction createCoinbaseWalletProvider(options) {\n  var _a;\n  const params = {\n    metadata: options.metadata,\n    preference: options.preference\n  };\n  return (_a = getCoinbaseInjectedProvider(params)) !== null && _a !== void 0 ? _a : new CoinbaseWalletProvider(params);\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/createCoinbaseWalletSDK.js\nvar DEFAULT_PREFERENCE = {\n  options: \"all\"\n};\nfunction createCoinbaseWalletSDK(params) {\n  var _a;\n  const versionStorage = new ScopedLocalStorage(\"CBWSDK\");\n  versionStorage.setItem(\"VERSION\", VERSION);\n  void checkCrossOriginOpenerPolicy();\n  const options = {\n    metadata: {\n      appName: params.appName || \"Dapp\",\n      appLogoUrl: params.appLogoUrl || \"\",\n      appChainIds: params.appChainIds || []\n    },\n    preference: Object.assign(DEFAULT_PREFERENCE, (_a = params.preference) !== null && _a !== void 0 ? _a : {})\n  };\n  validatePreferences(options.preference);\n  let provider = null;\n  return {\n    getProvider: () => {\n      if (!provider) {\n        provider = createCoinbaseWalletProvider(options);\n      }\n      return provider;\n    }\n  };\n}\n\n// node_modules/@coinbase/wallet-sdk/dist/index.js\nvar dist_default = CoinbaseWalletSDK;\nexport {\n  CoinbaseWalletSDK,\n  createCoinbaseWalletSDK,\n  dist_default as default\n};\n/*! Bundled license information:\n\n@noble/hashes/utils.js:\n  (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)\n*/\n//# sourceMappingURL=dist-UZFCJX5W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/download-F3MJUB7B.js",
    "content": "import {\n  download\n} from \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  download\n};\n//# sourceMappingURL=download-F3MJUB7B.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/embedded-5JDH6LO6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/embedded/index.js\nvar wallet = {\n  id: \"embedded\",\n  name: \"Social Login\",\n  homepage: \"https://thirdweb.com\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=embedded-5JDH6LO6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/en-BRYFEMZN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/locale/en.js\nvar connectLocaleEn = {\n  id: \"en_US\",\n  signIn: \"Sign in\",\n  defaultButtonTitle: \"Connect\",\n  connecting: \"Connecting\",\n  switchNetwork: \"Switch Network\",\n  switchingNetwork: \"Switching Network\",\n  defaultModalTitle: \"Sign in\",\n  recommended: \"Recommended\",\n  installed: \"Installed\",\n  buy: \"Buy\",\n  continueAsGuest: \"Continue as guest\",\n  connectAWallet: \"Connect a Wallet\",\n  newToWallets: \"New to wallets?\",\n  getStarted: \"Get started\",\n  guest: \"Guest\",\n  send: \"Send\",\n  receive: \"Receive\",\n  currentNetwork: \"Current network\",\n  switchAccount: \"Switch Account\",\n  requestTestnetFunds: \"Request Testnet Funds\",\n  transactions: \"Transactions\",\n  payTransactions: \"Fiat Transactions\",\n  walletTransactions: \"Wallet Transactions\",\n  viewAllTransactions: \"View All Transactions\",\n  backupWallet: \"Backup Wallet\",\n  guestWalletWarning: \"This is a temporary guest wallet. Backup wallet if you don't want to lose access to it\",\n  switchTo: \"Switch to\",\n  // Used in \"Switch to <Wallet-Name>\"\n  connectedToSmartWallet: \"Smart Account\",\n  confirmInWallet: \"Confirm in wallet\",\n  disconnectWallet: \"Disconnect Wallet\",\n  copyAddress: \"Copy Address\",\n  personalWallet: \"Personal Wallet\",\n  smartWallet: \"Smart Wallet\",\n  or: \"OR\",\n  goBackButton: \"Back\",\n  passkeys: {\n    title: \"Passkeys\",\n    linkPasskey: \"Link a Passkey\"\n  },\n  welcomeScreen: {\n    defaultTitle: \"Your gateway to the decentralized world\",\n    defaultSubtitle: \"Connect a wallet to get started\"\n  },\n  agreement: {\n    prefix: \"By connecting, you agree to the\",\n    termsOfService: \"Terms of Service\",\n    and: \"&\",\n    privacyPolicy: \"Privacy Policy\"\n  },\n  networkSelector: {\n    title: \"Select Network\",\n    mainnets: \"Mainnets\",\n    testnets: \"Testnets\",\n    allNetworks: \"All\",\n    addCustomNetwork: \"Add Custom Network\",\n    inputPlaceholder: \"Search Network or Chain ID\",\n    categoryLabel: {\n      recentlyUsed: \"Recently Used\",\n      popular: \"Popular\",\n      others: \"All Networks\"\n    },\n    loading: \"Loading\",\n    failedToSwitch: \"Failed to switch network\"\n  },\n  receiveFundsScreen: {\n    title: \"Receive Funds\",\n    instruction: \"Copy the wallet address to send funds to this wallet\"\n  },\n  sendFundsScreen: {\n    title: \"Send Funds\",\n    submitButton: \"Send\",\n    token: \"Token\",\n    sendTo: \"Send to\",\n    amount: \"Amount\",\n    successMessage: \"Transaction Successful\",\n    invalidAddress: \"Invalid Address\",\n    noTokensFound: \"No Tokens Found\",\n    searchToken: \"Search or Paste token address\",\n    transactionFailed: \"Transaction Failed\",\n    transactionRejected: \"Transaction Rejected\",\n    insufficientFunds: \"Insufficient Funds\",\n    selectTokenTitle: \"Select a Token\",\n    sending: \"Sending\"\n  },\n  signatureScreen: {\n    instructionScreen: {\n      title: \"Sign in\",\n      instruction: \"Please sign the message request in your wallet to continue\",\n      signInButton: \"Sign in\",\n      disconnectWallet: \"Disconnect Wallet\"\n    },\n    signingScreen: {\n      title: \"Signing In\",\n      prompt: \"Signing the signature request in your wallet\",\n      promptForSafe: \"Sign signature request in your wallet & approve transaction in Safe\",\n      approveTransactionInSafe: \"Approve transaction in Safe\",\n      tryAgain: \"Try Again\",\n      failedToSignIn: \"Failed to Sign in\",\n      inProgress: \"Awaiting Confirmation\"\n    }\n  },\n  manageWallet: {\n    title: \"Manage Wallet\",\n    linkedProfiles: \"Linked Profiles\",\n    linkProfile: \"Link a Profile\",\n    connectAnApp: \"Connect an App\",\n    exportPrivateKey: \"Export Private Key\"\n  },\n  viewFunds: {\n    title: \"View Funds\",\n    viewNFTs: \"View NFTs\",\n    viewTokens: \"View Tokens\",\n    viewAssets: \"View Assets\"\n  }\n};\nvar en_default = connectLocaleEn;\nexport {\n  en_default as default\n};\n//# sourceMappingURL=en-BRYFEMZN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/en-GF35UFXC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/injected/locale/en.js\nvar injectedWalletLocaleEn = (wallet) => ({\n  connectionScreen: {\n    inProgress: \"Awaiting Confirmation\",\n    failed: \"Connection failed\",\n    instruction: `Accept the connection request in ${wallet}`,\n    retry: \"Try Again\"\n  },\n  getStartedScreen: {\n    instruction: `Scan the QR code to download the ${wallet} app`\n  },\n  scanScreen: {\n    instruction: `Scan the QR code with the ${wallet} app to connect`\n  },\n  getStartedLink: `Don't have ${wallet}?`,\n  download: {\n    chrome: \"Download Chrome Extension\",\n    android: \"Download on Google Play\",\n    iOS: \"Download on App Store\"\n  }\n});\nvar en_default = injectedWalletLocaleEn;\nexport {\n  en_default as default\n};\n//# sourceMappingURL=en-GF35UFXC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/en-SB77EPNW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/smartWallet/locale/en.js\nvar smartWalletLocalEn = {\n  connecting: \"Connecting to Smart Account\",\n  failedToConnect: \"Failed to connect to Smart Account\",\n  wrongNetworkScreen: {\n    title: \"Wrong Network\",\n    subtitle: \"Your wallet is not connected to the required network\",\n    failedToSwitch: \"Failed to switch network\"\n  }\n};\nvar en_default = smartWalletLocalEn;\nexport {\n  en_default as default\n};\n//# sourceMappingURL=en-SB77EPNW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/en-YMFAQ6ZL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/locale/en.js\nvar en_default = {\n  signInWithGoogle: \"Google\",\n  signInWithFacebook: \"Facebook\",\n  signInWithApple: \"Apple\",\n  signInWithDiscord: \"Discord\",\n  emailPlaceholder: \"Email address\",\n  submitEmail: \"Continue\",\n  signIn: \"Sign in\",\n  or: \"or\",\n  emailRequired: \"Email address is required\",\n  invalidEmail: \"Invalid email address\",\n  maxAccountsExceeded: \"Maximum number of accounts exceeded. Please notify the app developer.\",\n  socialLoginScreen: {\n    title: \"Sign in\",\n    instruction: \"Sign into your account in the pop-up\",\n    failed: \"Failed to sign in\",\n    retry: \"Retry\"\n  },\n  emailLoginScreen: {\n    title: \"Sign in\",\n    enterCodeSendTo: \"Enter the verification code sent to\",\n    newDeviceDetected: \"New device detected\",\n    enterRecoveryCode: \"Enter the recovery code emailed to you when you first signed up\",\n    invalidCode: \"Invalid verification code\",\n    invalidCodeOrRecoveryCode: \"Invalid verification code or Recovery code\",\n    verify: \"Verify\",\n    failedToSendCode: \"Failed to send verification code\",\n    sendingCode: \"Sending verification code\",\n    resendCode: \"Resend verification code\"\n  },\n  createPassword: {\n    title: \"Create Password\",\n    instruction: \"Set a password for your account. You will need this password when connecting from a new device.\",\n    saveInstruction: \"Make sure to save it\",\n    inputPlaceholder: \"Enter your password\",\n    confirmation: \"I have saved my password\",\n    submitButton: \"Set Password\",\n    failedToSetPassword: \"Failed to set password\"\n  },\n  enterPassword: {\n    title: \"Enter Password\",\n    instruction: \"Enter the password for your account\",\n    inputPlaceholder: \"Enter your password\",\n    submitButton: \"Verify\",\n    wrongPassword: \"Wrong password\"\n  },\n  signInWithEmail: \"Sign in with Email\",\n  invalidPhone: \"Invalid phone number\",\n  phonePlaceholder: \"Phone number\",\n  signInWithPhone: \"Sign in with phone number\",\n  phoneRequired: \"Phone number is required\",\n  passkey: \"Passkey\",\n  signInWithWallet: \"Sign in with Wallet\",\n  linkWallet: \"Link a Wallet\",\n  loginAsGuest: \"Continue as guest\"\n};\nexport {\n  en_default as default\n};\n//# sourceMappingURL=en-YMFAQ6ZL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/encode-4DQKNRWC.js",
    "content": "import {\n  encode,\n  getDataFromTx,\n  getExtraCallDataFromTx\n} from \"./chunk-7QDK5KLB.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  encode,\n  getDataFromTx,\n  getExtraCallDataFromTx\n};\n//# sourceMappingURL=encode-4DQKNRWC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/encodeAbiParameters-UF4TQP7R.js",
    "content": "import {\n  encodeAbiParameters,\n  encodeAddress,\n  prepareParam\n} from \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  encodeAbiParameters,\n  encodeAddress,\n  prepareParam\n};\n//# sourceMappingURL=encodeAbiParameters-UF4TQP7R.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/engine-L3LTYQXR.js",
    "content": "import {\n  waitForReceipt\n} from \"./chunk-JBQP4JIV.js\";\nimport \"./chunk-4OCU6WGG.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/transaction/actions/gasless/providers/engine.js\nasync function prepareEngineTransaction({ account, serializableTransaction, transaction, gasless }) {\n  const forrwaderContract = getContract({\n    address: gasless.relayerForwarderAddress,\n    chain: transaction.chain,\n    client: transaction.client\n  });\n  const nonce = await readContract({\n    contract: forrwaderContract,\n    method: \"function getNonce(address) view returns (uint256)\",\n    params: [account.address]\n  });\n  const [signature, message] = await (async () => {\n    if (!serializableTransaction.to) {\n      throw new Error(\"engine transactions must have a 'to' address\");\n    }\n    if (!serializableTransaction.gas) {\n      throw new Error(\"engine transactions must have a 'gas' value\");\n    }\n    if (!serializableTransaction.data) {\n      throw new Error(\"engine transactions must have a 'data' value\");\n    }\n    if (gasless.experimentalChainlessSupport) {\n      const message3 = {\n        from: account.address,\n        to: serializableTransaction.to,\n        value: 0n,\n        gas: serializableTransaction.gas,\n        nonce,\n        data: serializableTransaction.data,\n        chainid: BigInt(transaction.chain.id)\n      };\n      return [\n        await account.signTypedData({\n          domain: {\n            name: \"GSNv2 Forwarder\",\n            version: \"0.0.1\",\n            verifyingContract: forrwaderContract.address\n          },\n          message: message3,\n          primaryType: \"ForwardRequest\",\n          types: { ForwardRequest: ChainAwareForwardRequest }\n        }),\n        message3\n      ];\n    }\n    const message2 = {\n      from: account.address,\n      to: serializableTransaction.to,\n      value: 0n,\n      gas: serializableTransaction.gas,\n      nonce,\n      data: serializableTransaction.data\n    };\n    return [\n      await account.signTypedData({\n        domain: {\n          name: gasless.domainName ?? \"GSNv2 Forwarder\",\n          version: gasless.domainVersion ?? \"0.0.1\",\n          chainId: transaction.chain.id,\n          verifyingContract: forrwaderContract.address\n        },\n        message: message2,\n        primaryType: \"ForwardRequest\",\n        types: { ForwardRequest }\n      }),\n      message2\n    ];\n  })();\n  const messageType = \"forward\";\n  return { message, signature, messageType };\n}\nvar ForwardRequest = [\n  { name: \"from\", type: \"address\" },\n  { name: \"to\", type: \"address\" },\n  { name: \"value\", type: \"uint256\" },\n  { name: \"gas\", type: \"uint256\" },\n  { name: \"nonce\", type: \"uint256\" },\n  { name: \"data\", type: \"bytes\" }\n];\nvar ChainAwareForwardRequest = [\n  { name: \"from\", type: \"address\" },\n  { name: \"to\", type: \"address\" },\n  { name: \"value\", type: \"uint256\" },\n  { name: \"gas\", type: \"uint256\" },\n  { name: \"nonce\", type: \"uint256\" },\n  { name: \"data\", type: \"bytes\" },\n  { name: \"chainid\", type: \"uint256\" }\n];\nasync function relayEngineTransaction(options) {\n  const { message, messageType, signature } = await prepareEngineTransaction(options);\n  const response = await fetch(options.gasless.relayerUrl, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\"\n    },\n    body: stringify({\n      request: message,\n      type: messageType,\n      signature,\n      forwarderAddress: options.gasless.relayerForwarderAddress\n    })\n  });\n  if (!response.ok) {\n    throw new Error(`Failed to send transaction: ${await response.text()}`);\n  }\n  const json = await response.json();\n  if (!json.result) {\n    throw new Error(`Relay transaction failed: ${json.message}`);\n  }\n  const queueId = json.result.queueId;\n  const timeout = 6e4;\n  const interval = 1e3;\n  const endtime = Date.now() + timeout;\n  while (Date.now() < endtime) {\n    const receipt = await fetchReceipt({ options, queueId });\n    if (receipt) {\n      return {\n        transactionHash: receipt.transactionHash,\n        chain: options.transaction.chain,\n        client: options.transaction.client\n      };\n    }\n    await new Promise((resolve) => setTimeout(resolve, interval));\n  }\n  throw new Error(`Failed to find relayed transaction after ${timeout}ms`);\n}\nasync function fetchReceipt(args) {\n  const { options, queueId } = args;\n  const url = options.gasless.relayerUrl.split(\"/relayer/\")[0];\n  const res = await fetch(`${url}/transaction/status/${queueId}`, {\n    method: \"GET\"\n  });\n  const resJson = await res.json();\n  if (!res.ok) {\n    return null;\n  }\n  const result = resJson.result;\n  if (!result) {\n    return null;\n  }\n  switch (result.status) {\n    case \"errored\":\n      throw new Error(`Transaction errored with reason: ${result.errorMessage}`);\n    case \"cancelled\":\n      throw new Error(\"Transaction execution cancelled.\");\n    case \"mined\": {\n      const receipt = await waitForReceipt({\n        client: options.transaction.client,\n        chain: options.transaction.chain,\n        transactionHash: result.transactionHash\n      });\n      return receipt;\n    }\n    default: {\n      return null;\n    }\n  }\n}\nexport {\n  prepareEngineTransaction,\n  relayEngineTransaction\n};\n//# sourceMappingURL=engine-L3LTYQXR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/es-7RULN4RE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/injected/locale/es.js\nvar injectedWalletLocaleEs = (walletName) => ({\n  connectionScreen: {\n    inProgress: \"Esperando confirmación\",\n    failed: \"Conexión fallida\",\n    instruction: `Acepta la solicitud de conexión en tu cartera ${walletName}`,\n    retry: \"Intentar de nuevo\"\n  },\n  getStartedScreen: {\n    instruction: `Escanea el código QR para descargar la aplicación ${walletName}`\n  },\n  scanScreen: {\n    instruction: `Escanea el código QR con la aplicación de cartera ${walletName} para conectarte`\n  },\n  getStartedLink: `¿No tienes la cartera ${walletName}?`,\n  download: {\n    chrome: \"Descargar extensión para Chrome\",\n    android: \"Descargar en Google Play\",\n    iOS: \"Descargar en App Store\"\n  }\n});\nvar es_default = injectedWalletLocaleEs;\nexport {\n  es_default as default\n};\n//# sourceMappingURL=es-7RULN4RE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/es-LKAELXTV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/locale/es.js\nvar es_default = {\n  signInWithGoogle: \"Iniciar sesión con Google\",\n  signInWithFacebook: \"Iniciar sesión con Facebook\",\n  signInWithApple: \"Iniciar sesión con Apple\",\n  signInWithDiscord: \"Iniciar sesión con Discord\",\n  emailPlaceholder: \"Ingresa tu dirección de correo electrónico\",\n  submitEmail: \"Continuar\",\n  signIn: \"Iniciar sesión\",\n  emailRequired: \"Se requiere dirección de correo electrónico\",\n  invalidEmail: \"Dirección de correo electrónico inválida\",\n  maxAccountsExceeded: \"Número máximo de cuentas alcanzado\",\n  or: \"O\",\n  socialLoginScreen: {\n    title: \"Iniciar sesión\",\n    instruction: \"Inicie sesión en su cuenta en la ventana abierta\",\n    failed: \"Error al iniciar sesión\",\n    retry: \"Reintentar\"\n  },\n  emailLoginScreen: {\n    title: \"Iniciar sesión\",\n    enterCodeSendTo: \"Ingresa el código de verificación enviado a\",\n    newDeviceDetected: \"Nuevo dispositivo detectado\",\n    enterRecoveryCode: \"Ingresa el código de recuperación que se te envió por correo electrónico cuando te registraste por primera vez\",\n    invalidCode: \"Código de verificación inválido\",\n    invalidCodeOrRecoveryCode: \"Código de verificación o de recuperación inválido\",\n    verify: \"Verificar\",\n    failedToSendCode: \"Error al enviar el código de verificación\",\n    sendingCode: \"Enviando código de verificación\",\n    resendCode: \"Reenviar código de verificación\"\n  },\n  createPassword: {\n    title: \"Crear contraseña\",\n    instruction: \"Establezca una contraseña para su cuenta. Necesitará esta contraseña cuando se conecte desde un nuevo dispositivo.\",\n    saveInstruction: \"Asegúrese de guardarla\",\n    inputPlaceholder: \"Ingrese su contraseña\",\n    confirmation: \"He guardado mi contraseña\",\n    submitButton: \"Establecer contraseña\",\n    failedToSetPassword: \"Error al establecer la contraseña\"\n  },\n  enterPassword: {\n    title: \"Ingrese la contraseña\",\n    instruction: \"Ingrese la contraseña de su cuenta\",\n    inputPlaceholder: \"Ingrese su contraseña\",\n    submitButton: \"Verificar\",\n    wrongPassword: \"Contraseña incorrecta\"\n  },\n  invalidPhone: \"Número de teléfono inválido\",\n  phonePlaceholder: \"Ingresa tu número de teléfono\",\n  signInWithPhone: \"Iniciar sesión con número de teléfono\",\n  phoneRequired: \"Se requiere número de teléfono\",\n  signInWithEmail: \"Iniciar sesión con correo electrónico\",\n  passkey: \"Clave de acceso\",\n  linkWallet: \"Vincular una billetera\",\n  loginAsGuest: \"Inicia sesión como invitado\",\n  signInWithWallet: \"Iniciar sesión con billetera\"\n};\nexport {\n  es_default as default\n};\n//# sourceMappingURL=es-LKAELXTV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/es-RWVLHLPZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/locale/es.js\nvar connectWalletLocalEs = {\n  id: \"es_ES\",\n  signIn: \"Iniciar sesión\",\n  defaultButtonTitle: \"Conectar cartera\",\n  connecting: \"Conectando\",\n  switchNetwork: \"Cambiar red\",\n  switchingNetwork: \"Cambiando de red\",\n  defaultModalTitle: \"Conectar\",\n  recommended: \"Recomendado\",\n  installed: \"Instalado\",\n  continueAsGuest: \"Continuar como invitado\",\n  connectAWallet: \"Conectar una cartera\",\n  newToWallets: \"¿Nuevo en carteras?\",\n  getStarted: \"Comenzar\",\n  guest: \"Invitado\",\n  send: \"Enviar\",\n  receive: \"Recibir\",\n  buy: \"Comprar\",\n  transactions: \"Transactions\",\n  payTransactions: \"Fiat Transactions\",\n  walletTransactions: \"Wallet Transactions\",\n  viewAllTransactions: \"View All Transactions\",\n  // TODO\n  currentNetwork: \"Red actual\",\n  switchAccount: \"Cambiar cuenta\",\n  requestTestnetFunds: \"Solicitar fondos de Testnet\",\n  backupWallet: \"Respaldar cartera\",\n  guestWalletWarning: \"Esta es una cartera de invitado temporal. Haz una copia de seguridad si no quieres perder el acceso a ella\",\n  switchTo: \"Cambiar a\",\n  connectedToSmartWallet: \"cartera inteligente\",\n  confirmInWallet: \"Confirmar en cartera\",\n  disconnectWallet: \"Desconectar cartera\",\n  copyAddress: \"Copiar dirección\",\n  personalWallet: \"Cartera personal\",\n  smartWallet: \"Cartera inteligente\",\n  or: \"O\",\n  goBackButton: \"Atras\",\n  passkeys: {\n    title: \"Clave de acceso\",\n    linkPasskey: \"Vincular una clave de acceso\"\n  },\n  welcomeScreen: {\n    defaultTitle: \"Tu puerta de entrada al mundo descentralizado\",\n    defaultSubtitle: \"Conecta una cartera para empezar\"\n  },\n  agreement: {\n    prefix: \"Al conectar, aceptas los\",\n    termsOfService: \"Términos de servicio\",\n    and: \"y\",\n    privacyPolicy: \"Política de privacidad\"\n  },\n  networkSelector: {\n    title: \"Seleccionar red\",\n    mainnets: \"Redes principales\",\n    testnets: \"Redes de prueba\",\n    allNetworks: \"Todas\",\n    addCustomNetwork: \"Agregar red personalizada\",\n    inputPlaceholder: \"Buscar red o ID de cadena\",\n    categoryLabel: {\n      recentlyUsed: \"Usadas recientemente\",\n      popular: \"Populares\",\n      others: \"Todas las redes\"\n    },\n    loading: \"Cargando\",\n    failedToSwitch: \"Error al cambiar de red\"\n  },\n  receiveFundsScreen: {\n    title: \"Recibir fondos\",\n    instruction: \"Copia la dirección de la cartera para enviar fondos a esta cartera\"\n  },\n  sendFundsScreen: {\n    title: \"Enviar fondos\",\n    submitButton: \"Enviar\",\n    token: \"Token\",\n    sendTo: \"Enviar a\",\n    amount: \"Cantidad\",\n    successMessage: \"Transacción exitosa\",\n    invalidAddress: \"Dirección inválida\",\n    noTokensFound: \"No se encontraron tokens\",\n    searchToken: \"Buscar o pegar la dirección del token\",\n    transactionFailed: \"Transacción fallida\",\n    transactionRejected: \"Transacción rechazada\",\n    insufficientFunds: \"Fondos insuficientes\",\n    selectTokenTitle: \"Seleccione un Token\",\n    sending: \"Enviando\"\n  },\n  signatureScreen: {\n    instructionScreen: {\n      title: \"Iniciar sesión\",\n      instruction: \"Por favor, firma la solicitud de mensaje en tu cartera para continuar\",\n      signInButton: \"Iniciar sesión\",\n      disconnectWallet: \"Desconectar cartera\"\n    },\n    signingScreen: {\n      title: \"Iniciando sesión\",\n      prompt: \"Firma la solicitud de firma en tu cartera\",\n      promptForSafe: \"Firma la solicitud de firma en tu cartera y aprueba la transacción en Safe\",\n      approveTransactionInSafe: \"Aprobar transacción en Safe\",\n      tryAgain: \"Intentar de nuevo\",\n      failedToSignIn: \"Error al iniciar sesión\",\n      inProgress: \"Esperando confirmación\"\n    }\n  },\n  manageWallet: {\n    title: \"Gestionar Cartera\",\n    linkedProfiles: \"Perfiles vinculados\",\n    linkProfile: \"Vincular un perfil\",\n    connectAnApp: \"Conectar una Aplicación\",\n    exportPrivateKey: \"Exportar Clave Privada\"\n  },\n  viewFunds: {\n    title: \"Ver Fondos\",\n    viewNFTs: \"Ver NFTs\",\n    viewTokens: \"Ver Tokens\",\n    viewAssets: \"Ver Activos\"\n  }\n};\nvar es_default = connectWalletLocalEs;\nexport {\n  es_default as default\n};\n//# sourceMappingURL=es-RWVLHLPZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/es-UEK7RLXG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/smartWallet/locale/es.js\nvar smartWalletLocaleEs = {\n  connecting: \"Conectando a Smart Account\",\n  failedToConnect: \"Error al conectar con Smart Account\",\n  wrongNetworkScreen: {\n    title: \"Red incorrecta\",\n    subtitle: \"Tu cartera no está conectada a la red requerida\",\n    failedToSwitch: \"Error al cambiar de red\"\n  }\n};\nvar es_default = smartWalletLocaleEs;\nexport {\n  es_default as default\n};\n//# sourceMappingURL=es-UEK7RLXG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/estimate-l1-fee-B2LECVR2.js",
    "content": "import {\n  toSerializableTransaction\n} from \"./chunk-JZC47WAY.js\";\nimport \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-7QDK5KLB.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport {\n  serializeTransaction\n} from \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/gas/estimate-l1-fee.js\nvar OPStackGasPriceOracleAddress = \"0x420000000000000000000000000000000000000F\";\nasync function estimateL1Fee(options) {\n  const { transaction, gasPriceOracleAddress } = options;\n  const oracleContract = getContract({\n    client: transaction.client,\n    address: gasPriceOracleAddress || OPStackGasPriceOracleAddress,\n    chain: transaction.chain\n  });\n  const { gasPrice, ...serializableTx } = await toSerializableTransaction({\n    transaction\n  });\n  const serialized = serializeTransaction({\n    ...serializableTx,\n    type: \"eip1559\"\n  });\n  return readContract({\n    contract: oracleContract,\n    method: \"function getL1Fee(bytes memory _data) view returns (uint256)\",\n    params: [serialized]\n  });\n}\nexport {\n  estimateL1Fee\n};\n//# sourceMappingURL=estimate-l1-fee-B2LECVR2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/eth_estimateGas-FTRTBPEZ.js",
    "content": "import {\n  eth_estimateGas\n} from \"./chunk-IMSXM5CF.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  eth_estimateGas\n};\n//# sourceMappingURL=eth_estimateGas-FTRTBPEZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/eth_getTransactionCount-ITCGR7E4.js",
    "content": "import {\n  eth_getTransactionCount\n} from \"./chunk-YXQ5KEQC.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  eth_getTransactionCount\n};\n//# sourceMappingURL=eth_getTransactionCount-ITCGR7E4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/extractIPFS-GFMPIVLN.js",
    "content": "import {\n  hexToBytes\n} from \"./chunk-B7XHB4Z2.js\";\nimport {\n  isHex\n} from \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/utils/base58/alphabet.js\nvar ALPHABET = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\n\n// node_modules/thirdweb/dist/esm/utils/base58/encode.js\nvar BASE = ALPHABET.length;\nvar LEADER = (() => ALPHABET.charAt(0))();\nvar iFACTOR = (() => Math.log(256) / Math.log(BASE))();\nfunction base58Encode(source) {\n  if (!(source instanceof Uint8Array)) {\n    throw new TypeError(\"Expected Uint8Array\");\n  }\n  if (source.length === 0) {\n    return \"\";\n  }\n  let zeroes = 0;\n  let length = 0;\n  let pbegin = 0;\n  const pend = source.length;\n  while (pbegin !== pend && source[pbegin] === 0) {\n    pbegin++;\n    zeroes++;\n  }\n  const size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n  const b58 = new Uint8Array(size);\n  while (pbegin !== pend) {\n    let carry = source[pbegin] || 0;\n    let i = 0;\n    for (let it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n      carry += 256 * (b58[it1] || 0) >>> 0;\n      b58[it1] = carry % BASE >>> 0;\n      carry = carry / BASE >>> 0;\n    }\n    if (carry !== 0) {\n      throw new Error(\"Non-zero carry\");\n    }\n    length = i;\n    pbegin++;\n  }\n  let it2 = size - length;\n  while (it2 !== size && b58[it2] === 0) {\n    it2++;\n  }\n  let str = LEADER.repeat(zeroes);\n  for (; it2 < size; ++it2) {\n    str += ALPHABET.charAt(b58[it2] || 0);\n  }\n  return str;\n}\n\n// node_modules/thirdweb/dist/esm/utils/bytecode/cbor-decode.js\nvar src;\nvar srcEnd;\nvar position = 0;\nvar EMPTY_ARRAY = [];\nvar strings = EMPTY_ARRAY;\nvar stringPosition = 0;\nvar currentDecoder = {};\nvar currentStructures;\nvar srcString;\nvar srcStringStart = 0;\nvar srcStringEnd = 0;\nvar bundledStrings;\nvar referenceMap;\nvar currentExtensions = [];\nvar packedValues;\nvar dataView;\nvar defaultOptions = {\n  useRecords: false,\n  mapsAsObjects: true\n};\nfunction readFixedString(length) {\n  let result;\n  if (length < 16) {\n    if (result = shortStringInJS(length))\n      return result;\n  }\n  if (length > 64 && decoder)\n    return decoder.decode(src.subarray(position, position += length));\n  const end = position + length;\n  const units = [];\n  result = \"\";\n  while (position < end) {\n    const byte1 = src[position++];\n    if ((byte1 & 128) === 0) {\n      units.push(byte1);\n    } else if ((byte1 & 224) === 192) {\n      const byte2 = src[position++] & 63;\n      units.push((byte1 & 31) << 6 | byte2);\n    } else if ((byte1 & 240) === 224) {\n      const byte2 = src[position++] & 63;\n      const byte3 = src[position++] & 63;\n      units.push((byte1 & 31) << 12 | byte2 << 6 | byte3);\n    } else if ((byte1 & 248) === 240) {\n      const byte2 = src[position++] & 63;\n      const byte3 = src[position++] & 63;\n      const byte4 = src[position++] & 63;\n      let unit = (byte1 & 7) << 18 | byte2 << 12 | byte3 << 6 | byte4;\n      if (unit > 65535) {\n        unit -= 65536;\n        units.push(unit >>> 10 & 1023 | 55296);\n        unit = 56320 | unit & 1023;\n      }\n      units.push(unit);\n    } else {\n      units.push(byte1);\n    }\n    if (units.length >= 4096) {\n      result += fromCharCode.apply(String, units);\n      units.length = 0;\n    }\n  }\n  if (units.length > 0) {\n    result += fromCharCode.apply(String, units);\n  }\n  return result;\n}\nvar Decoder = class _Decoder {\n  constructor() {\n    Object.assign(this, defaultOptions);\n  }\n  decodeKey(key) {\n    return key;\n  }\n  decode(source, end = -1) {\n    srcEnd = end > -1 ? end : source.length;\n    position = 0;\n    stringPosition = 0;\n    srcStringEnd = 0;\n    srcString = null;\n    strings = EMPTY_ARRAY;\n    bundledStrings = null;\n    src = source;\n    try {\n      dataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength));\n    } catch (error) {\n      src = null;\n      if (source instanceof Uint8Array) {\n        throw error;\n      }\n      throw new Error(`Source must be a Uint8Array or Buffer but was a ${source && typeof source === \"object\" ? source.constructor.name : typeof source}`);\n    }\n    if (this instanceof _Decoder) {\n      currentDecoder = this;\n      packedValues = this.sharedValues && (this.pack ? new Array(this.maxPrivatePackedValues || 16).concat(this.sharedValues) : this.sharedValues);\n      if (!currentStructures || currentStructures.length > 0) {\n        currentStructures = [];\n      }\n    } else {\n      currentDecoder = defaultOptions;\n      if (!currentStructures || currentStructures.length > 0) {\n        currentStructures = [];\n      }\n      packedValues = null;\n    }\n    return checkedRead();\n  }\n};\nfunction checkedRead() {\n  try {\n    const result = read();\n    if (bundledStrings) {\n      if (position >= bundledStrings.postBundlePosition) {\n        const error = new Error(\"Unexpected bundle position\");\n        error.incomplete = true;\n        throw error;\n      }\n      position = bundledStrings.postBundlePosition;\n      bundledStrings = null;\n    }\n    if (position === srcEnd) {\n      currentStructures = null;\n      src = null;\n      if (referenceMap) {\n        referenceMap = null;\n      }\n    } else if (position > srcEnd) {\n      const error = new Error(\"Unexpected end of CBOR data\");\n      error.incomplete = true;\n      throw error;\n    } else {\n      throw new Error(\"Data read, but end of buffer not reached\");\n    }\n    return result;\n  } catch (error) {\n    clearSource();\n    if (error instanceof RangeError || error.message.startsWith(\"Unexpected end of buffer\")) {\n      error.incomplete = true;\n    }\n    throw error;\n  }\n}\nfunction read() {\n  let token = src[position++];\n  const majorType = token >> 5;\n  token = token & 31;\n  if (token > 23) {\n    switch (token) {\n      case 24:\n        token = src[position++];\n        break;\n      default:\n        throw new Error(`Unknown token ${token}`);\n    }\n  }\n  switch (majorType) {\n    case 0:\n      return token;\n    case 1:\n      return ~token;\n    case 2:\n      return readBin(token);\n    case 3:\n      if (srcStringEnd >= position) {\n        return srcString.slice(position - srcStringStart, (position += token) - srcStringStart);\n      }\n      if (srcStringEnd === 0 && srcEnd < 140 && token < 32) {\n        const string = token < 16 ? shortStringInJS(token) : longStringInJS(token);\n        if (string !== null) {\n          return string;\n        }\n      }\n      return readFixedString(token);\n    case 4: {\n      const array = new Array(token);\n      for (let i = 0; i < token; i++) {\n        array[i] = read();\n      }\n      return array;\n    }\n    case 5: {\n      const object = {};\n      for (let i = 0; i < token; i++) {\n        object[safeKey(read())] = read();\n      }\n      return object;\n    }\n    default:\n      if (Number.isNaN(token)) {\n        const error = new Error(\"Unexpected end of CBOR data\");\n        error.incomplete = true;\n        throw error;\n      }\n      throw new Error(`Unknown CBOR token ${token}`);\n  }\n}\nfunction safeKey(key) {\n  if (typeof key === \"string\") {\n    return key === \"__proto__\" ? \"__proto_\" : key;\n  }\n  if (typeof key !== \"object\") {\n    return key.toString();\n  }\n  throw new Error(`Invalid property name type ${typeof key}`);\n}\nvar fromCharCode = String.fromCharCode;\nfunction longStringInJS(length) {\n  const start = position;\n  const bytes = new Array(length);\n  for (let i = 0; i < length; i++) {\n    const byte = src[position++];\n    if ((byte & 128) > 0) {\n      position = start;\n      return;\n    }\n    bytes[i] = byte;\n  }\n  return fromCharCode.apply(String, bytes);\n}\nfunction shortStringInJS(length) {\n  if (length < 4) {\n    if (length < 2) {\n      if (length === 0) {\n        return \"\";\n      }\n      const a3 = src[position++];\n      if ((a3 & 128) > 1) {\n        position -= 1;\n        return;\n      }\n      return fromCharCode(a3);\n    }\n    const a2 = src[position++];\n    const b2 = src[position++];\n    if ((a2 & 128) > 0 || (b2 & 128) > 0) {\n      position -= 2;\n      return;\n    }\n    if (length < 3) {\n      return fromCharCode(a2, b2);\n    }\n    const c2 = src[position++];\n    if ((c2 & 128) > 0) {\n      position -= 3;\n      return;\n    }\n    return fromCharCode(a2, b2, c2);\n  }\n  const a = src[position++];\n  const b = src[position++];\n  const c = src[position++];\n  const d = src[position++];\n  if ((a & 128) > 0 || (b & 128) > 0 || (c & 128) > 0 || (d & 128) > 0) {\n    position -= 4;\n    return;\n  }\n  if (length < 6) {\n    if (length === 4) {\n      return fromCharCode(a, b, c, d);\n    }\n    const e2 = src[position++];\n    if ((e2 & 128) > 0) {\n      position -= 5;\n      return;\n    }\n    return fromCharCode(a, b, c, d, e2);\n  }\n  if (length < 8) {\n    const e2 = src[position++];\n    const f2 = src[position++];\n    if ((e2 & 128) > 0 || (f2 & 128) > 0) {\n      position -= 6;\n      return;\n    }\n    if (length < 7) {\n      return fromCharCode(a, b, c, d, e2, f2);\n    }\n    const g2 = src[position++];\n    if ((g2 & 128) > 0) {\n      position -= 7;\n      return;\n    }\n    return fromCharCode(a, b, c, d, e2, f2, g2);\n  }\n  const e = src[position++];\n  const f = src[position++];\n  const g = src[position++];\n  const h = src[position++];\n  if ((e & 128) > 0 || (f & 128) > 0 || (g & 128) > 0 || (h & 128) > 0) {\n    position -= 8;\n    return;\n  }\n  if (length < 10) {\n    if (length === 8) {\n      return fromCharCode(a, b, c, d, e, f, g, h);\n    }\n    const i2 = src[position++];\n    if ((i2 & 128) > 0) {\n      position -= 9;\n      return;\n    }\n    return fromCharCode(a, b, c, d, e, f, g, h, i2);\n  }\n  if (length < 12) {\n    const i2 = src[position++];\n    const j2 = src[position++];\n    if ((i2 & 128) > 0 || (j2 & 128) > 0) {\n      position -= 10;\n      return;\n    }\n    if (length < 11) {\n      return fromCharCode(a, b, c, d, e, f, g, h, i2, j2);\n    }\n    const k2 = src[position++];\n    if ((k2 & 128) > 0) {\n      position -= 11;\n      return;\n    }\n    return fromCharCode(a, b, c, d, e, f, g, h, i2, j2, k2);\n  }\n  const i = src[position++];\n  const j = src[position++];\n  const k = src[position++];\n  const l = src[position++];\n  if ((i & 128) > 0 || (j & 128) > 0 || (k & 128) > 0 || (l & 128) > 0) {\n    position -= 12;\n    return;\n  }\n  if (length < 14) {\n    if (length === 12) {\n      return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l);\n    }\n    const m2 = src[position++];\n    if ((m2 & 128) > 0) {\n      position -= 13;\n      return;\n    }\n    return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m2);\n  }\n  const m = src[position++];\n  const n = src[position++];\n  if ((m & 128) > 0 || (n & 128) > 0) {\n    position -= 14;\n    return;\n  }\n  if (length < 15) {\n    return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n);\n  }\n  const o = src[position++];\n  if ((o & 128) > 0) {\n    position -= 15;\n    return;\n  }\n  return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);\n}\nfunction readBin(length) {\n  return currentDecoder.copyBuffers ? (\n    // specifically use the copying slice (not the node one)\n    Uint8Array.prototype.slice.call(src, position, position += length)\n  ) : src.subarray(position, position += length);\n}\nvar glbl = { Error, RegExp };\ncurrentExtensions[27] = (data) => {\n  return (glbl[data[0]] || Error)(data[1], data[2]);\n};\nvar packedTable = (read_) => {\n  if (src[position++] !== 132) {\n    const error = new Error(\"Packed values structure must be followed by a 4 element array\");\n    if (src.length < position) {\n      error.incomplete = true;\n    }\n    throw error;\n  }\n  const newPackedValues = read_();\n  if (!newPackedValues || !newPackedValues.length) {\n    const error = new Error(\"Packed values structure must be followed by a 4 element array\");\n    error.incomplete = true;\n    throw error;\n  }\n  packedValues = packedValues ? newPackedValues.concat(packedValues.slice(newPackedValues.length)) : newPackedValues;\n  packedValues.prefixes = read_();\n  packedValues.suffixes = read_();\n  return read_();\n};\npackedTable.handlesRead = true;\ncurrentExtensions[28] = (read_) => {\n  if (!referenceMap) {\n    referenceMap = /* @__PURE__ */ new Map();\n    referenceMap.id = 0;\n  }\n  const id = referenceMap.id++;\n  const token = src[position];\n  let target;\n  if (token >> 5 === 4) {\n    target = [];\n  } else {\n    target = {};\n  }\n  const refEntry = { target };\n  referenceMap.set(id, refEntry);\n  const targetProperties = read_();\n  if (refEntry.used) {\n    return Object.assign(target, targetProperties);\n  }\n  refEntry.target = targetProperties;\n  return targetProperties;\n};\nfunction clearSource() {\n  src = null;\n  referenceMap = null;\n  currentStructures = null;\n}\nvar mult10 = new Array(147);\nfor (let i = 0; i < 256; i++) {\n  mult10[i] = (() => Number(`1e${Math.floor(45.15 - i * 0.30103)}`))();\n}\nvar defaultDecoder = new Decoder();\nvar decode = defaultDecoder.decode;\n\n// node_modules/thirdweb/dist/esm/utils/bytecode/prefix.js\nfunction ensureBytecodePrefix(bytecode) {\n  if (isHex(bytecode, { strict: false })) {\n    return bytecode;\n  }\n  return `0x${bytecode}`;\n}\n\n// node_modules/thirdweb/dist/esm/utils/bytecode/extractIPFS.js\nfunction extractIPFSUri(bytecode) {\n  const numericBytecode = hexToBytes(ensureBytecodePrefix(bytecode));\n  const cborLength = (\n    // @ts-expect-error - TS doesn't like this, but it's fine\n    numericBytecode[numericBytecode.length - 2] * 256 + // @ts-expect-error - TS doesn't like this, but it's fine\n    numericBytecode[numericBytecode.length - 1]\n  );\n  const cborStart = numericBytecode.length - 2 - cborLength;\n  if (cborStart < 0 || cborStart > numericBytecode.length) {\n    return void 0;\n  }\n  const bytecodeBuffer = numericBytecode.slice(cborStart, -2);\n  const cborData = decode(bytecodeBuffer);\n  if (\"ipfs\" in cborData) {\n    return `ipfs://${base58Encode(cborData.ipfs)}`;\n  }\n  return void 0;\n}\nexport {\n  extractIPFSUri\n};\n//# sourceMappingURL=extractIPFS-GFMPIVLN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/fetch-proofs-for-claimers-NQNU6O2D.js",
    "content": "import {\n  areUint8ArraysEqual,\n  compareUint8Arrays,\n  concatUint8Arrays\n} from \"./chunk-VJOHABJ4.js\";\nimport {\n  toUnits\n} from \"./chunk-UY2SRO54.js\";\nimport {\n  ZERO_ADDRESS,\n  isNativeTokenAddress\n} from \"./chunk-673YCYST.js\";\nimport {\n  download\n} from \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport {\n  encodePacked\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  keccak256\n} from \"./chunk-67BSOYLQ.js\";\nimport {\n  hexToBytes\n} from \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  maxUint256\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport {\n  uint8ArrayToHex\n} from \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/merkletree/MerkleTree.js\nvar MerkleTree = class {\n  constructor(leaves) {\n    Object.defineProperty(this, \"leaves\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: []\n    });\n    Object.defineProperty(this, \"layers\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: []\n    });\n    this.leaves = leaves.map((el) => el instanceof Uint8Array ? el : hexToBytes(el));\n    this.leaves = this.leaves.sort(compareUint8Arrays);\n    this.createHashes(this.leaves);\n  }\n  getHexRoot() {\n    return uint8ArrayToHex(this.getRoot());\n  }\n  getHexProof(leaf, index) {\n    return this.getProof(leaf, index).map((item) => uint8ArrayToHex(item.data));\n  }\n  // private below\n  createHashes(nodes) {\n    this.layers = [nodes];\n    while (nodes.length > 1) {\n      const layerIndex = this.layers.length;\n      this.layers.push([]);\n      const layerLimit = nodes.length;\n      for (let i = 0; i < nodes.length; i += 2) {\n        if (i >= layerLimit) {\n          this.layers[layerIndex].push(...nodes.slice(layerLimit));\n          break;\n        }\n        if (i + 1 === nodes.length) {\n          if (nodes.length % 2 === 1) {\n            this.layers[layerIndex].push(nodes[i]);\n            continue;\n          }\n        }\n        const left = nodes[i];\n        const right = i + 1 === nodes.length ? left : nodes[i + 1];\n        const combined = [left, right];\n        combined.sort(compareUint8Arrays);\n        const hash = keccak256(concatUint8Arrays(combined), \"bytes\");\n        this.layers[layerIndex].push(hash);\n      }\n      nodes = this.layers[layerIndex];\n    }\n  }\n  getRoot() {\n    if (this.layers.length === 0) {\n      return new Uint8Array();\n    }\n    return this.layers[this.layers.length - 1][0] || new Uint8Array();\n  }\n  getProof(leaf, index) {\n    if (typeof leaf === \"undefined\") {\n      throw new Error(\"leaf is required\");\n    }\n    leaf = leaf instanceof Uint8Array ? leaf : hexToBytes(leaf);\n    const proof = [];\n    if (!Number.isInteger(index)) {\n      index = -1;\n      for (let i = 0; i < this.leaves.length; i++) {\n        if (areUint8ArraysEqual(leaf, this.leaves[i])) {\n          index = i;\n        }\n      }\n    }\n    if (index <= -1) {\n      return [];\n    }\n    for (let i = 0; i < this.layers.length; i++) {\n      const layer = this.layers[i];\n      const isRightNode = index % 2;\n      const pairIndex = isRightNode ? (\n        // @ts-expect-error - issue from original code\n        index - 1\n      ) : (\n        // Proof Generation for Non-Bitcoin Trees\n        // @ts-expect-error - issue from original code\n        index + 1\n      );\n      if (pairIndex < layer.length) {\n        proof.push({\n          position: isRightNode ? \"left\" : \"right\",\n          data: layer[pairIndex]\n        });\n      }\n      index = index / 2 | 0;\n    }\n    return proof;\n  }\n};\n\n// node_modules/thirdweb/dist/esm/utils/extensions/drops/convert-quantity.js\nfunction convertQuantity(options) {\n  const { quantity, tokenDecimals } = options;\n  if (quantity === \"unlimited\") {\n    return maxUint256;\n  }\n  return toUnits(quantity, tokenDecimals);\n}\n\n// node_modules/thirdweb/dist/esm/utils/extensions/drops/hash-entry.js\nasync function hashEntry(options) {\n  const currencyAddress = options.entry.currencyAddress || ZERO_ADDRESS;\n  const currencyDecimals = await (async () => {\n    if (isNativeTokenAddress(currencyAddress) || currencyAddress === ZERO_ADDRESS) {\n      return 18;\n    }\n    const [{ getContract }, { decimals: getDecimals }] = await Promise.all([\n      import(\"./contract-GEGWMZWS.js\"),\n      import(\"./decimals-OWVEHM45.js\")\n    ]);\n    const currencyContract = getContract({\n      address: currencyAddress,\n      chain: options.chain,\n      client: options.client\n    });\n    return await getDecimals({ contract: currencyContract });\n  })();\n  return keccak256(encodePacked([\"address\", \"uint256\", \"uint256\", \"address\"], [\n    options.entry.address,\n    convertQuantity({\n      quantity: options.entry.maxClaimable || \"unlimited\",\n      tokenDecimals: options.tokenDecimals\n    }),\n    convertQuantity({\n      quantity: options.entry.price || \"unlimited\",\n      tokenDecimals: currencyDecimals\n    }),\n    currencyAddress\n  ]));\n}\n\n// node_modules/thirdweb/dist/esm/utils/extensions/drops/fetch-proofs-for-claimers.js\nasync function fetchProofsForClaimer(options) {\n  const { contract, merkleTreeUri, claimer } = options;\n  const hashEntryFn = options.hashEntry || hashEntry;\n  const response = await download({\n    client: contract.client,\n    uri: merkleTreeUri\n  });\n  const merkleInfo = await response.json();\n  const shardId = claimer.slice(2, 2 + merkleInfo.shardNybbles).toLowerCase();\n  const uri = merkleInfo.baseUri.endsWith(\"/\") ? merkleInfo.baseUri : `${merkleInfo.baseUri}/`;\n  let shardData;\n  try {\n    const constructedShardUri = `${uri}${shardId}.json`;\n    const shard = await download({\n      client: contract.client,\n      uri: constructedShardUri\n    });\n    shardData = await shard.json();\n  } catch {\n    return null;\n  }\n  const hashedEntries = await Promise.all(shardData.entries.map(async (entry2) => {\n    return hashEntryFn({\n      entry: entry2,\n      chain: contract.chain,\n      client: contract.client,\n      tokenDecimals: options.tokenDecimals\n    });\n  }));\n  const tree = new MerkleTree(hashedEntries);\n  const entry = shardData.entries.find((i) => i.address.toLowerCase() === claimer.toLowerCase());\n  if (!entry) {\n    return null;\n  }\n  const proof = tree.getHexProof(await hashEntryFn({\n    entry,\n    chain: contract.chain,\n    client: contract.client,\n    tokenDecimals: options.tokenDecimals\n  })).concat(shardData.proofs);\n  const currencyAddress = entry.currencyAddress || ZERO_ADDRESS;\n  const currencyDecimals = await (async () => {\n    if (isNativeTokenAddress(currencyAddress) || currencyAddress === ZERO_ADDRESS) {\n      return 18;\n    }\n    const [{ getContract }, { decimals: getDecimals }] = await Promise.all([\n      import(\"./contract-GEGWMZWS.js\"),\n      import(\"./decimals-OWVEHM45.js\")\n    ]);\n    const currencyContract = getContract({\n      address: currencyAddress,\n      chain: contract.chain,\n      client: contract.client\n    });\n    return await getDecimals({ contract: currencyContract });\n  })();\n  return {\n    proof,\n    quantityLimitPerWallet: convertQuantity({\n      quantity: entry.maxClaimable || \"unlimited\",\n      tokenDecimals: options.tokenDecimals\n    }),\n    pricePerToken: convertQuantity({\n      quantity: entry.price || \"unlimited\",\n      tokenDecimals: currencyDecimals\n    }),\n    currency: currencyAddress\n  };\n}\nexport {\n  fetchProofsForClaimer\n};\n//# sourceMappingURL=fetch-proofs-for-claimers-NQNU6O2D.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/fi-AVCNJCZU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/fi.pillar/index.js\nvar wallet = {\n  id: \"fi.pillar\",\n  name: \"Pillar\",\n  homepage: \"https://pillar.fi\",\n  image_id: \"87737170-f79f-4359-338b-7c30856c9f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/apple-store/id1346582238?pt=118878535&ct=pillar.fi&mt=8\",\n    android: \"https://play.google.com/store/apps/details?id=com.pillarproject.wallet&referrer=utm_source%3Dpillar.fi%26utm_medium%3Ddownload%26utm_campaign%3Dandroid\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"pillarwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=fi-AVCNJCZU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/fi-MH46U2IW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/fi.dropmate/index.js\nvar wallet = {\n  id: \"fi.dropmate\",\n  name: \"Dropmate\",\n  homepage: \"https://dropmate.fi\",\n  image_id: \"bf19fe4b-d712-45e8-95f2-b7be36e4c400\",\n  app: {\n    browser: null,\n    ios: \"https://testflight.apple.com/join/KHOMtqE4\",\n    android: \"https://play.google.com/store/apps/details?id=app.dropmate\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"dropmate://app\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=fi-MH46U2IW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/finance-43KN2CYS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.islamicoin/index.js\nvar wallet = {\n  id: \"finance.islamicoin\",\n  name: \"ISLAMIwallet\",\n  homepage: \"https://islamicoin.finance/islamiwallet\",\n  image_id: \"8d723c78-28ad-4610-901f-ea391d7e8d00\",\n  app: {\n    browser: \"https://islamiwallet.com\",\n    ios: \"https://apps.apple.com/lb/app/islamiwallet/id1631212925\",\n    android: \"https://play.google.com/store/apps/details?id=com.islami.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"islamiwallet://islami.com/path/\",\n    universal: \"https://islamicoin.finance/.well-known/assetlinks.json\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=finance-43KN2CYS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/finance-B7FMBRBP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.slingshot/index.js\nvar wallet = {\n  id: \"finance.slingshot\",\n  name: \"Slingshot Wallet\",\n  homepage: \"https://slingshot.finance/\",\n  image_id: \"10c75467-6612-48ad-b97b-63985e922200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/apple-store/id1633406472\",\n    android: \"https://play.google.com/store/apps/details?id=com.slingshot.finance\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"slingshot://\",\n    universal: \"https://app.slingshot.finance\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=finance-B7FMBRBP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/finance-BPBXKFLP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.klever/index.js\nvar wallet = {\n  id: \"finance.klever\",\n  name: \"Klever Wallet\",\n  homepage: \"https://klever.finance/wallet/\",\n  image_id: \"8f5bbad8-6a14-4b2c-5343-cc1fca6e4d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id1525584688\",\n    android: \"https://play.google.com/store/apps/details?id=cash.klever.blockchain.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"kleverwallet://\",\n    universal: \"https://klever.page.link\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=finance-BPBXKFLP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/finance-GAXWYNOQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.openwallet/index.js\nvar wallet = {\n  id: \"finance.openwallet\",\n  name: \"Open Wallet\",\n  homepage: \"https://openwallet.finance\",\n  image_id: \"68a3c433-d944-4bf6-5093-4ac415fd5400\",\n  app: {\n    browser: \"https://openwallet.finance/\",\n    ios: \"https://apps.apple.com/ee/app/open-wallet-keyless-mastery/id6502636684\",\n    android: \"https://play.google.com/store/apps/details?id=com.finverselabs.openwallet&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"x-app-open-wallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=finance-GAXWYNOQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/finance-ROSDRD4N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.voltage/index.js\nvar wallet = {\n  id: \"finance.voltage\",\n  name: \"Volt: DeFi\",\n  homepage: \"https://voltage.finance/app\",\n  image_id: \"51d783cb-0686-4ffa-e661-edca0c380000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/volt-defi/id6444159237\",\n    android: \"https://play.google.com/store/apps/details?id=finance.voltage.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"volt://\",\n    universal: \"https://get.voltage.finance\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=finance-ROSDRD4N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/finance-TUEUOJYQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.plena/index.js\nvar wallet = {\n  id: \"finance.plena\",\n  name: \"Plena-App\",\n  homepage: \"https://plena.finance\",\n  image_id: \"9ba07b43-3db1-4e8d-100e-8c91d8430c00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/plena-smartest-defi-wallet/id1608061460\",\n    android: \"https://play.google.com/store/apps/details?id=com.plena\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"com.plena://auth,org.plenafinance.app://auth\",\n    universal: \"https://plena.page.link/JNPe\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=finance-TUEUOJYQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/finance-XE4OWK2N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.panaroma/index.js\nvar wallet = {\n  id: \"finance.panaroma\",\n  name: \"Panaroma Wallet\",\n  homepage: \"https://panaroma.finance\",\n  image_id: \"4394f728-0c57-4560-acba-48bfd82ddf00\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"http://play.google.com/store/apps/details?id=com.panaroma.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"panaromawallet://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=finance-XE4OWK2N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/finance.soulswap-JBPBKOGF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.soulswap.app/index.js\nvar wallet = {\n  id: \"finance.soulswap.app\",\n  name: \"SoulSwap\",\n  homepage: \"https://app.soulswap.finance\",\n  image_id: \"24fc6e6e-a276-4c95-fa77-91ec1097d600\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/soulwallet-defi-portal/id6469735252\",\n    android: null,\n    mac: \"https://apps.apple.com/us/app/soulwallet-defi-portal/id6469735252\",\n    windows: null,\n    linux: null,\n    chrome: \"https://apps.apple.com/us/app/soulwallet-defi-portal/id6469735252\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"soulwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=finance.soulswap-JBPBKOGF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/fr-2PO34MSK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/injected/locale/fr.js\nvar injectedWalletLocaleEn = (wallet) => ({\n  connectionScreen: {\n    inProgress: \"En attente de confirmation\",\n    failed: \"Connexion échouée\",\n    instruction: `Acceptez la demande de connexion dans ${wallet}`,\n    retry: \"Réessayer\"\n  },\n  getStartedScreen: {\n    instruction: `Scannez le code QR pour télécharger l'application ${wallet}`\n  },\n  scanScreen: {\n    instruction: `Scannez le code QR avec l'application ${wallet} pour vous connecter`\n  },\n  getStartedLink: `Vous n'avez pas ${wallet} ?`,\n  download: {\n    chrome: \"Télécharger l'extension Chrome\",\n    android: \"Télécharger sur Google Play\",\n    iOS: \"Télécharger sur l'App Store\"\n  }\n});\nvar fr_default = injectedWalletLocaleEn;\nexport {\n  fr_default as default\n};\n//# sourceMappingURL=fr-2PO34MSK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/fr-DKOBC2XB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/locale/fr.js\nvar fr_default = {\n  signInWithGoogle: \"Google\",\n  signInWithFacebook: \"Facebook\",\n  signInWithApple: \"Apple\",\n  signInWithDiscord: \"Discord\",\n  emailPlaceholder: \"E-mail\",\n  submitEmail: \"Continuer\",\n  signIn: \"Se connecter\",\n  or: \"Ou\",\n  emailRequired: \"L'adresse e-mail est requise\",\n  invalidEmail: \"Adresse e-mail invalide\",\n  maxAccountsExceeded: \"Nombre maximum de comptes dépassé. Veuillez en informer le développeur de l'application.\",\n  socialLoginScreen: {\n    title: \"Se connecter\",\n    instruction: \"Connectez-vous à votre compte dans la fenêtre pop-up\",\n    failed: \"Échec de la connexion\",\n    retry: \"Réessayer\"\n  },\n  emailLoginScreen: {\n    title: \"Se connecter\",\n    enterCodeSendTo: \"Entrez le code de vérification envoyé à\",\n    newDeviceDetected: \"Nouvel appareil détecté\",\n    enterRecoveryCode: \"Entrez le code de récupération qui vous a été envoyé par e-mail lors de votre inscription\",\n    invalidCode: \"Code de vérification invalide\",\n    invalidCodeOrRecoveryCode: \"Code de vérification ou code de récupération invalide\",\n    verify: \"Vérifier\",\n    failedToSendCode: \"Échec de l'envoi du code de vérification\",\n    sendingCode: \"Envoi du code de vérification\",\n    resendCode: \"Renvoyer le code de vérification\"\n  },\n  createPassword: {\n    title: \"Créer un mot de passe\",\n    instruction: \"Définissez un mot de passe pour votre compte. Vous aurez besoin de ce mot de passe lorsque vous vous connecterez depuis un nouvel appareil.\",\n    saveInstruction: \"Assurez-vous de le sauvegarder\",\n    inputPlaceholder: \"Entrez votre mot de passe\",\n    confirmation: \"J'ai sauvegardé mon mot de passe\",\n    submitButton: \"Définir le mot de passe\",\n    failedToSetPassword: \"Échec de la définition du mot de passe\"\n  },\n  enterPassword: {\n    title: \"Entrer le mot de passe\",\n    instruction: \"Entrez le mot de passe de votre compte\",\n    inputPlaceholder: \"Entrez votre mot de passe\",\n    submitButton: \"Vérifier\",\n    wrongPassword: \"Mot de passe incorrect\"\n  },\n  signInWithEmail: \"Se connecter avec e-mail\",\n  invalidPhone: \"Numéro de téléphone invalide\",\n  phonePlaceholder: \"Téléphone\",\n  signInWithPhone: \"Se connecter avec le numéro de téléphone\",\n  phoneRequired: \"Le numéro de téléphone est requis\",\n  passkey: \"Passkey\",\n  linkWallet: \"Lier un portefeuille\",\n  loginAsGuest: \"Connectez-vous en tant qu'invité\",\n  signInWithWallet: \"Se connecter avec portefeuille\"\n};\nexport {\n  fr_default as default\n};\n//# sourceMappingURL=fr-DKOBC2XB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/fr-HCZLKSNB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/smartWallet/locale/fr.js\nvar smartWalletLocalEn = {\n  connecting: \"Connexion au compte intelligent\",\n  failedToConnect: \"Échec de la connexion au compte intelligent\",\n  wrongNetworkScreen: {\n    title: \"Mauvais réseau\",\n    subtitle: \"Votre portefeuille n'est pas connecté au réseau requis\",\n    failedToSwitch: \"Échec du changement de réseau\"\n  }\n};\nvar fr_default = smartWalletLocalEn;\nexport {\n  fr_default as default\n};\n//# sourceMappingURL=fr-HCZLKSNB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/fr-HZ64NS6B.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/locale/fr.js\nvar connectLocaleFr = {\n  id: \"fr_FR\",\n  signIn: \"S'authentifier\",\n  defaultButtonTitle: \"Se Connecter\",\n  connecting: \"Connexion\",\n  switchNetwork: \"Changer de réseau\",\n  switchingNetwork: \"Changement de réseau\",\n  defaultModalTitle: \"Se connecter\",\n  recommended: \"Recommandé\",\n  installed: \"Installé\",\n  buy: \"Acheter\",\n  continueAsGuest: \"Continuer en tant qu'invité\",\n  connectAWallet: \"Connecter un portefeuille\",\n  newToWallets: \"En savoir plus sur les portefeuilles\",\n  getStarted: \"Commencer\",\n  guest: \"Invité\",\n  send: \"Envoyer\",\n  receive: \"Recevoir\",\n  currentNetwork: \"Réseau actuel\",\n  switchAccount: \"Changer de compte\",\n  requestTestnetFunds: \"Demander des fonds Testnet\",\n  transactions: \"Transactions\",\n  payTransactions: \"Transactions en Euros\",\n  walletTransactions: \"Transactions du portefeuille\",\n  viewAllTransactions: \"Voir toutes les transactions\",\n  backupWallet: \"Sauvegarder le portefeuille\",\n  guestWalletWarning: \"Ceci est un portefeuille invité temporaire. Sauvegardez le portefeuille si vous ne voulez pas perdre l'accès\",\n  switchTo: \"Passer à\",\n  // Used in \"Switch to <Wallet-Name>\"\n  connectedToSmartWallet: \"Compte intelligent\",\n  confirmInWallet: \"Confirmer dans le portefeuille\",\n  disconnectWallet: \"Déconnecter le portefeuille\",\n  copyAddress: \"Copier l'adresse\",\n  personalWallet: \"Portefeuille personnel\",\n  smartWallet: \"Portefeuille intelligent\",\n  or: \"OU\",\n  goBackButton: \"Retour\",\n  passkeys: {\n    title: \"Clés d'accès\",\n    linkPasskey: \"Lier une clé d'accès\"\n  },\n  welcomeScreen: {\n    defaultTitle: \"Votre porte d'entrée vers le monde décentralisé\",\n    defaultSubtitle: \"Connectez un portefeuille pour commencer\"\n  },\n  agreement: {\n    prefix: \"En vous connectant, vous acceptez les\",\n    termsOfService: \"Conditions d'utilisation\",\n    and: \"&\",\n    privacyPolicy: \"Politique de confidentialité\"\n  },\n  networkSelector: {\n    title: \"Sélectionner un réseau\",\n    mainnets: \"Mainnets\",\n    testnets: \"Testnets\",\n    allNetworks: \"Tous\",\n    addCustomNetwork: \"Ajouter un réseau personnalisé\",\n    inputPlaceholder: \"Rechercher un réseau ou un ID de chaîne\",\n    categoryLabel: {\n      recentlyUsed: \"Récemment utilisé\",\n      popular: \"Populaire\",\n      others: \"Tous les réseaux\"\n    },\n    loading: \"Chargement\",\n    failedToSwitch: \"Échec du changement de réseau\"\n  },\n  receiveFundsScreen: {\n    title: \"Recevoir des fonds\",\n    instruction: \"Copiez l'adresse du portefeuille pour envoyer des fonds à ce portefeuille\"\n  },\n  sendFundsScreen: {\n    title: \"Envoyer des fonds\",\n    submitButton: \"Envoyer\",\n    token: \"Token\",\n    sendTo: \"Envoyer à\",\n    amount: \"Montant\",\n    successMessage: \"Transaction réussie\",\n    invalidAddress: \"Adresse invalide\",\n    noTokensFound: \"Aucun token trouvé\",\n    searchToken: \"Rechercher ou coller l'adresse du token\",\n    transactionFailed: \"Échec de la transaction\",\n    transactionRejected: \"Transaction rejetée\",\n    insufficientFunds: \"Fonds insuffisants\",\n    selectTokenTitle: \"Sélectionner un token\",\n    sending: \"Envoi en cours\"\n  },\n  signatureScreen: {\n    instructionScreen: {\n      title: \"Se connecter\",\n      instruction: \"Veuillez signer la demande de message dans votre portefeuille pour continuer\",\n      signInButton: \"Se connecter\",\n      disconnectWallet: \"Déconnecter le portefeuille\"\n    },\n    signingScreen: {\n      title: \"Connexion en cours\",\n      prompt: \"Signez la demande de signature dans votre portefeuille\",\n      promptForSafe: \"Signez la demande de signature dans votre portefeuille et approuvez la transaction dans Safe\",\n      approveTransactionInSafe: \"Approuvez la transaction dans Safe\",\n      tryAgain: \"Réessayer\",\n      failedToSignIn: \"Échec de la connexion\",\n      inProgress: \"En attente de confirmation\"\n    }\n  },\n  manageWallet: {\n    title: \"Gérer le portefeuille\",\n    linkedProfiles: \"Profils liés\",\n    linkProfile: \"Lier un profil\",\n    connectAnApp: \"Connecter une application\",\n    exportPrivateKey: \"Exporter la clé privée\"\n  },\n  viewFunds: {\n    title: \"Voir les fonds\",\n    viewNFTs: \"Voir les NFT\",\n    viewTokens: \"Voir les tokens\",\n    viewAssets: \"Voir les actifs\"\n  }\n};\nvar fr_default = connectLocaleFr;\nexport {\n  fr_default as default\n};\n//# sourceMappingURL=fr-HZ64NS6B.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/fun-LYGVTTTP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/fun.tobi/index.js\nvar wallet = {\n  id: \"fun.tobi\",\n  name: \"Tobi\",\n  homepage: \"https://tobi.fun\",\n  image_id: \"3cd2d066-56f7-4272-4a98-b39b41ea8200\",\n  app: {\n    browser: \"https://t.me/TobiWalletBot\",\n    ios: \"https://t.me/TobiWalletBot\",\n    android: \"https://t.me/TobiWalletBot\",\n    mac: \"https://t.me/TobiWalletBot\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://api.tobiwallet.app/dapp/wallet-connect/redirect\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://api.tobiwallet.app/dapp/wallet-connect/redirect\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=fun-LYGVTTTP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/get-ecosystem-wallet-info-HRASHZ5U.js",
    "content": "import {\n  getEcosystemInfo\n} from \"./chunk-QLJVAXYD.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/ecosystem/get-ecosystem-wallet-info.js\nasync function getEcosystemWalletInfo(walletId) {\n  const data = await getEcosystemInfo(walletId);\n  return {\n    id: walletId,\n    name: data.name,\n    image_id: data.imageUrl || \"\",\n    homepage: data.homepage || \"\",\n    rdns: null,\n    app: {\n      browser: null,\n      ios: null,\n      android: null,\n      mac: null,\n      windows: null,\n      linux: null,\n      opera: null,\n      chrome: null,\n      firefox: null,\n      safari: null,\n      edge: null\n    },\n    mobile: {\n      native: null,\n      universal: null\n    },\n    desktop: {\n      native: null,\n      universal: null\n    }\n  };\n}\nexport {\n  getEcosystemWalletInfo\n};\n//# sourceMappingURL=get-ecosystem-wallet-info-HRASHZ5U.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getActiveClaimCondition-235FYDU5.js",
    "content": "import {\n  getActiveClaimCondition,\n  isGetActiveClaimConditionSupported\n} from \"./chunk-ZDZJSHMF.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getActiveClaimCondition,\n  isGetActiveClaimConditionSupported\n};\n//# sourceMappingURL=getActiveClaimCondition-235FYDU5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getActiveClaimCondition-5NTTTBA4.js",
    "content": "import {\n  getActiveClaimCondition,\n  isGetActiveClaimConditionSupported\n} from \"./chunk-RF65TSG5.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getActiveClaimCondition,\n  isGetActiveClaimConditionSupported\n};\n//# sourceMappingURL=getActiveClaimCondition-5NTTTBA4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getActiveClaimCondition-X4R3SWY5.js",
    "content": "import {\n  getActiveClaimCondition,\n  isGetActiveClaimConditionSupported\n} from \"./chunk-OHYFITXC.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getActiveClaimCondition,\n  isGetActiveClaimConditionSupported\n};\n//# sourceMappingURL=getActiveClaimCondition-X4R3SWY5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getApprovalForTransaction-RG2PM2ZX.js",
    "content": "import {\n  allowance\n} from \"./chunk-NKFQ2LZT.js\";\nimport {\n  approve\n} from \"./chunk-AWMNEQRO.js\";\nimport \"./chunk-6XF6HOWC.js\";\nimport {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/write/getApprovalForTransaction.js\nasync function getApprovalForTransaction(options) {\n  const { transaction, account } = options;\n  if (!account) {\n    return null;\n  }\n  const erc20Value = await resolvePromisedValue(transaction.erc20Value);\n  if (erc20Value) {\n    const target = await resolvePromisedValue(transaction.to);\n    if (!target || !erc20Value.tokenAddress || getAddress(target) === getAddress(erc20Value.tokenAddress)) {\n      return null;\n    }\n    const contract = getContract({\n      address: erc20Value.tokenAddress,\n      chain: transaction.chain,\n      client: transaction.client\n    });\n    const approvedValue = await allowance({\n      contract,\n      owner: account.address,\n      spender: target\n    });\n    if (approvedValue > erc20Value.amountWei) {\n      return null;\n    }\n    return approve({\n      contract,\n      value: erc20Value.amountWei,\n      spender: target\n    });\n  }\n  return null;\n}\nexport {\n  getApprovalForTransaction\n};\n//# sourceMappingURL=getApprovalForTransaction-RG2PM2ZX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getApproved-UMVYKWJJ.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  decodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IERC721A/read/getApproved.js\nvar FN_SELECTOR = \"0x081812fc\";\nvar FN_INPUTS = [\n  {\n    type: \"uint256\",\n    name: \"tokenId\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"address\"\n  }\n];\nfunction isGetApprovedSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction encodeGetApprovedParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.tokenId]);\n}\nfunction encodeGetApproved(options) {\n  return FN_SELECTOR + encodeGetApprovedParams(options).slice(2);\n}\nfunction decodeGetApprovedResult(result) {\n  return decodeAbiParameters(FN_OUTPUTS, result)[0];\n}\nasync function getApproved(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.tokenId]\n  });\n}\nexport {\n  FN_SELECTOR,\n  decodeGetApprovedResult,\n  encodeGetApproved,\n  encodeGetApprovedParams,\n  getApproved,\n  isGetApprovedSupported\n};\n//# sourceMappingURL=getApproved-UMVYKWJJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getBalance-X6K77NBX.js",
    "content": "import {\n  getCurrencyMetadata\n} from \"./chunk-GGVPULQZ.js\";\nimport \"./chunk-6RU56BH7.js\";\nimport \"./chunk-QVNJVROL.js\";\nimport {\n  toTokens\n} from \"./chunk-UY2SRO54.js\";\nimport \"./chunk-673YCYST.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/__generated__/IERC20/read/balanceOf.js\nvar FN_SELECTOR = \"0x70a08231\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"_address\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint256\"\n  }\n];\nasync function balanceOf(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.address]\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/erc20/read/getBalance.js\nasync function getBalance(options) {\n  const [balanceWei, currencyMetadata] = await Promise.all([\n    balanceOf(options),\n    getCurrencyMetadata(options)\n  ]);\n  return {\n    ...currencyMetadata,\n    value: balanceWei,\n    displayValue: toTokens(balanceWei, currencyMetadata.decimals)\n  };\n}\nexport {\n  getBalance\n};\n//# sourceMappingURL=getBalance-X6K77NBX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getContractMetadata-X5DE2MGS.js",
    "content": "import {\n  getContractMetadata,\n  isContractURISupported\n} from \"./chunk-UZVZQZEM.js\";\nimport \"./chunk-6RU56BH7.js\";\nimport \"./chunk-VJFQPB47.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getContractMetadata,\n  isContractURISupported as isGetContractMetadataSupported\n};\n//# sourceMappingURL=getContractMetadata-X5DE2MGS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getCurrencyMetadata-VXZEATQ4.js",
    "content": "import {\n  getCurrencyMetadata\n} from \"./chunk-GGVPULQZ.js\";\nimport \"./chunk-6RU56BH7.js\";\nimport \"./chunk-QVNJVROL.js\";\nimport \"./chunk-673YCYST.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getCurrencyMetadata\n};\n//# sourceMappingURL=getCurrencyMetadata-VXZEATQ4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getInstalledModules-WVGJ43EF.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  decodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/modules/__generated__/IModularCore/read/getInstalledModules.js\nvar FN_SELECTOR = \"0x3e429396\";\nvar FN_INPUTS = [];\nvar FN_OUTPUTS = [\n  {\n    type: \"tuple[]\",\n    components: [\n      {\n        type: \"address\",\n        name: \"implementation\"\n      },\n      {\n        type: \"tuple\",\n        name: \"config\",\n        components: [\n          {\n            type: \"bool\",\n            name: \"registerInstallationCallback\"\n          },\n          {\n            type: \"bytes4[]\",\n            name: \"requiredInterfaces\"\n          },\n          {\n            type: \"bytes4[]\",\n            name: \"supportedInterfaces\"\n          },\n          {\n            type: \"tuple[]\",\n            name: \"callbackFunctions\",\n            components: [\n              {\n                type: \"bytes4\",\n                name: \"selector\"\n              }\n            ]\n          },\n          {\n            type: \"tuple[]\",\n            name: \"fallbackFunctions\",\n            components: [\n              {\n                type: \"bytes4\",\n                name: \"selector\"\n              },\n              {\n                type: \"uint256\",\n                name: \"permissionBits\"\n              }\n            ]\n          }\n        ]\n      }\n    ]\n  }\n];\nfunction isGetInstalledModulesSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction decodeGetInstalledModulesResult(result) {\n  return decodeAbiParameters(FN_OUTPUTS, result)[0];\n}\nasync function getInstalledModules(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: []\n  });\n}\nexport {\n  FN_SELECTOR,\n  decodeGetInstalledModulesResult,\n  getInstalledModules,\n  isGetInstalledModulesSupported\n};\n//# sourceMappingURL=getInstalledModules-WVGJ43EF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getNFT-CWYYXL36.js",
    "content": "import {\n  getNFT,\n  isUriSupported\n} from \"./chunk-7ETS5GH6.js\";\nimport \"./chunk-4U2YWK76.js\";\nimport \"./chunk-VJFQPB47.js\";\nimport \"./chunk-NOA36MVL.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getNFT,\n  isUriSupported as isGetNFTSupported\n};\n//# sourceMappingURL=getNFT-CWYYXL36.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/getNFT-T7TVIXIV.js",
    "content": "import {\n  getNFT,\n  isTokenURISupported\n} from \"./chunk-36FW3ZLE.js\";\nimport \"./chunk-4U2YWK76.js\";\nimport \"./chunk-VJFQPB47.js\";\nimport \"./chunk-NOA36MVL.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getNFT,\n  isTokenURISupported as isGetNFTSupported\n};\n//# sourceMappingURL=getNFT-T7TVIXIV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/gg-7LOCEDJU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/gg.indi/index.js\nvar wallet = {\n  id: \"gg.indi\",\n  name: \"IndiGG\",\n  homepage: \"https://indi.gg\",\n  image_id: \"8e90a32f-130d-4317-7294-4884510aa300\",\n  app: {\n    browser: \"https://indi.gg/\",\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.indiggcommunity&hl=en_US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"indigg://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=gg-7LOCEDJU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/global-ASRTB772.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/global.safe/index.js\nvar wallet = {\n  id: \"global.safe\",\n  name: \"Safe\",\n  homepage: \"https://safe.global/\",\n  image_id: \"3913df81-63c2-4413-d60b-8ff83cbed500\",\n  app: {\n    browser: \"https://app.safe.global/\",\n    ios: \"https://apps.apple.com/app/id1515759131\",\n    android: \"https://play.google.com/store/apps/details?id=io.gnosis.safe\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"safe://\",\n    universal: \"https://app.safe.global/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=global-ASRTB772.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/group.com.flowfoundation-Y5NGFX4Q.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/group.com.flowfoundation.wallet/index.js\nvar wallet = {\n  id: \"group.com.flowfoundation.wallet\",\n  name: \"Flow Wallet\",\n  homepage: \"https://wallet.flow.com/\",\n  image_id: \"f67a1db8-5704-4353-ead8-bd85c02a8700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ca/app/flow-wallet-nfts-and-crypto/id6478996750\",\n    android: \"https://play.google.com/store/apps/details?id=com.flowfoundation.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/flow-reference/hpclkefagolihohboafpheddmmgdffjm\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"group.com.flowfoundation.wallet\",\n  mobile: {\n    native: \"frw://\",\n    universal: \"https://frw-link.lilico.app/wc\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=group.com.flowfoundation-Y5NGFX4Q.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/hashMessage-NHJEFPJB.js",
    "content": "import \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport {\n  keccak256\n} from \"./chunk-67BSOYLQ.js\";\nimport {\n  stringToBytes,\n  toBytes\n} from \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  concat\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/utils/hashing/hashMessage.js\nvar presignMessagePrefix = \"\u0019Ethereum Signed Message:\\n\";\nfunction hashMessage(message, to_) {\n  const messageBytes = (() => {\n    if (typeof message === \"string\") {\n      return stringToBytes(message);\n    }\n    if (message.raw instanceof Uint8Array) {\n      return message.raw;\n    }\n    return toBytes(message.raw);\n  })();\n  const prefixBytes = stringToBytes(`${presignMessagePrefix}${messageBytes.length}`);\n  return keccak256(concat([prefixBytes, messageBytes]), to_);\n}\nexport {\n  hashMessage\n};\n//# sourceMappingURL=hashMessage-NHJEFPJB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/id-JCDDJMLP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/id.competence/index.js\nvar wallet = {\n  id: \"id.competence\",\n  name: \"Competence.id\",\n  homepage: \"https://competence.id\",\n  image_id: \"ac1de66e-a82c-4cc5-f460-86b640e56500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/competenceid/id6448860364\",\n    android: \"https://play.google.com/store/apps/details?id=id.competence\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"competenceid://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=id-JCDDJMLP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/id-UVORZUHE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/id.plumaa/index.js\nvar wallet = {\n  id: \"id.plumaa\",\n  name: \"Plumaa ID\",\n  homepage: \"https://plumaa.id\",\n  image_id: \"dd6271ac-f9ba-4580-4db2-484bf4d0fc00\",\n  app: {\n    browser: \"https://app.plumaa.id\",\n    ios: \"https://apps.apple.com/mx/app/plumaa-id/id6475269207\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"plumaa://\",\n    universal: \"https://api.plumaa.id/app/\"\n  },\n  desktop: {\n    native: \"plumaa://\",\n    universal: \"https://api.plumaa.id/app/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=id-UVORZUHE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/id.co-KFRG5HP3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/id.co.pintu/index.js\nvar wallet = {\n  id: \"id.co.pintu\",\n  name: \"Pintu\",\n  homepage: \"https://pintu.co.id/\",\n  image_id: \"b9c5dfd6-ca26-46c2-bc79-bc2570495800\",\n  app: {\n    browser: \"https://pintu.co.id/\",\n    ios: \"https://apps.apple.com/id/app/pintu-buy-invest-crypto/id1494119678\",\n    android: \"https://play.google.com/store/apps/details?id=com.valar.pintu&hl=en&gl=US\",\n    mac: \"https://apps.apple.com/id/app/pintu-buy-invest-crypto/id1494119678\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"pintu://web3wallet\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=id.co-KFRG5HP3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/im-ALROWXFB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/im.token/index.js\nvar wallet = {\n  id: \"im.token\",\n  name: \"imToken\",\n  homepage: \"https://token.im/\",\n  image_id: \"99520548-525c-49d7-fb2f-5db65293b000\",\n  app: {\n    browser: \"https://token.im/\",\n    ios: \"https://apps.apple.com/us/app/imtoken2/id1384798940\",\n    android: \"https://play.google.com/store/apps/details?id=im.token.app\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"imtokenv2://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=im-ALROWXFB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-22XCL4QC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.beexo/image.js\nvar image = \"data:image/webp;base64,UklGRpgCAABXRUJQVlA4IIwCAAAQEQCdASqAAIAAPm02lkekIyIhKJWpiIANiWkAFtDU01II5ZcfKqhpHk0YuVKRL01UyTu/9IiHJoryTbt5pU+HuiHTc79+uKyrMUo9uA3UTTlE8473Yo3PmItRTCdUFgTHJWAQRuROLQ4x5hPOINnNtXT0wNxZwXFOj+fgKnQkMkT7spRNicddvxzsfp9gypEAAP78rRAvGS6HzaKSWwEJS4ordHPK7qQNgYO6pOOiEXWhra9Z+fQZqTLjiCkw6Oy9jX8pPH8ZCuO6+SzZWF0xoX2Z6xhWVlz2KqCs1Z4YMkwXzim8Tt95SLiHdi8vDzpHj4/Xg8ZW1Ko3X/+lCNx7h4gw8v+ut8tXP1uU/09HNxWs0+P7dAGGMqwqZG+q1yaOvWRaxSEg8+cXLTKbexxZK0aJ2hu4PTlCLA8ICpv1GMYIZD+87FJDUm1upUQRVcgFKRk905Tx5+mkzJ7NM6cxwyAWycWnk33d0POf+YWA+grR4CXFW3szGL+N1b/Pccy+aY8PyrFW3epkutjNXnhh8eugmf6L6rYyy9BlP6O8fxCDfetUDkjNK7liLzVctvRhbEoOKhRAgwNrr2oi6ohUz9GWhNoodQJw49iA6HVgAtivWeQ61FL+Bqzf2i3bLb/kE+afkTbOdKTSZ3POVl3L9mOyaT6MlJICM1AdX3B654s6lfGNVaqUJd1KPyv7+PBTnmz4MHghY1lqudquadG1vaVykZN4B61ZKc/s5qt1/SzB/PQpAbboY86NkAfoq28+t6NreHFGvnzhr79NJeqboVkKmUBvQT08NvvwwQ3h21fA5wFm0j0peTfEjHkxqRik+F4UqJCEcm+diAIFFbwZMNj1ThY/izgAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-22XCL4QC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-24U2WBYW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.bonuz/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-24U2WBYW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-25FYMXPP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.antiersolutions/image.js\nvar image = \"data:image/webp;base64,UklGRrgFAABXRUJQVlA4IKwFAADQHgCdASqAAIAAPm0yk0akIyGhMBIIQIANiWQA1T2JfsfZ0W96J+VX9L/ZXpO9sPDPFzIZ9Tfe/9z90Hv39R3mAfpr/seot5gP14/ZH3h/7l+zPuA/zf9p/wH6gfIB/UP8Z1hXoAfsv6aP7q/C7+z/pVaqv1V7Wv9FImzdm9s+A83dJq0qZkDTmpmet+35X6Odixp0lYccmd/HSKszUqxiIX9uLlKKLjjpmp4A1yoGnj/mkUmsc/4lYZ0v/92D7jPLfl7r1zmNqatMET5bYj+5gOJ6S/iwJoFVLOMkqm+/tHZ8g9xT5FDHiNTpFvvJTTycQ+3oq00fBSBg2aOoJwAA/vqJxRFndp5h6AAAV+VSGvdGu5uJ/GzdzPulfqD98HzFUArpI1XIC/zxrrzm+/s8Ul8HtBZlK3GHic852OAkL0rTY/DHspD3T5GqzSbrH+sJy0l3FDeqYSXfjC/zFeDz+5chYYOdadgoTL5NogGgC2vdoHcJpfsV9QTI+52vffdhPm3r+AH8ATXD2YpzXh0cbNSvmk1yr9xq8T3TKZj6uhvmMaovfBT+Rncg35/zCIIZQMp6pvdqoro3kxP5Pt1I+NFWcK8kLvAkzvTPGFCW9v7epzInrJQTK5Gzaf9/RVAEr7abnvMSKlvMyeDxrAO1rAMuo5sfFL1H+qvwL1s1RAFcNelpDyAGi10xGbWCK2hmFtkuGHTZBV6TydCH+W7SupGL4MxtUkoNIqhmeFur6zUlptJ0+kLdOxq72pzC9JqRhmWC0XYD8+cd7L7fVN4B67S1Phs6VGnzyKwP93OucFXbajJTftNlv+29+wuRwpFNmaq4zhq0MBcggfWrPDKgoTojWvXfqCxO9s4dxMdijgzKcWCO+cdI8QNO9sf689mke71voa6615SwpanH4oOI8pzJbEerhE8CteNm+XxnRBviKrDVlbvaVL9f1Jj+qAr1Jue+QEWzOFovM1vUKH3hxinSuTT8PHozKaWIoddJhEbN15gVKX3BZqg8DqMmIhR6TOat0YyGadABCjQ1xRrSe+wZydc9pfsj/WDYK9n9+Pd0YhbsSZWbtd4SRoiH7kiB1LY5guf9GNYxG0+kHtkL0XtFV6Lm53ajYpsBRoQIjX1oQBks/857kKu6bQE7HzS4QmNvSTiX6aW2/cGLyZuJIMAimVy301bVkdvXT0eRz5WynXEwq/Zz7sbPVeLbTg0FvyNjuYKkXMpNoZtfXb5F4ymKuMP5NE1x0W4scQ1Y431eFX/dQ5vtBZe6UI5i/9GcP9oMJmawBD7H3oeU1U18K42BkuSQRf7+P2ubHM8/YwtuoT8ZI1ia3PFFm1g/ZnTFQiLx3N7eTukPJcfGTmZC8D42xVq22j5PMpWLqg9ir4Dprqkvt/eqlArONGePk3bOnKp3OWuU5IMDjyuwpxzoNK/SRtCbZ47Gh6s0qH8LtRt2oXNGhicxwu4h4NEHV5p860jxFCKIhkg3bJSSBNUWYWCzt54kzJXyh9RH9bdAqn4+kLHZCGp9z5TX++Exq1CeE5fqP4jWFVEWW4XJrNgAL4S25+3Dc/wgkpVVr1ZTYpNUfDQjF0fz7AOFKqiuO5uwCiu/qTuK+33hrkNjNDeGwCz84tRyYS0ZQUUuYyO2gQSR3vbri3GWouBRCTf//KDCqYFar1ceMFAuT77Am56Ddb+AfyIsazm4YEuSjig5DV6TNtQ8n6nfoqebqdqus9nMc1vPvj7AKIUa+Zi+YXvcotXWEKlun8Dz7fjASTlHAgfpl+A0pYK9Am++rr3326wDs+pUEHAyLvbsc0369434gK/XAkNYjPtH48LnW4JWXebfYBOnUGgzHYBq8K7ZeDQVxU0MaOmN1C2fU57jf2hcsstji492pngzCzQHHD5ZaLOa3I4pwiVTx5MCLSdHFE/HsBB6qAAAAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-25FYMXPP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2C6TWMD7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.echooo/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2C6TWMD7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2DLIROHM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.orion/image.js\nvar image = \"data:image/webp;base64,UklGRjoEAABXRUJQVlA4IC4EAAAQGQCdASqAAIAAPm0ylEakIyIhLZXpEIANiWQA1iih/xex+dJXf6/+Muh3RL2V41fUP5gH6q9I3zAftR62P9g/TP3If4j1C/6r1FvoAeW/7Kf7wekzmrUcG7L5YDCTSrtUE5wpCy7mr+PGCVm4c5rZ0A//ldT5gInwQvv3yKZc8CWPqDcJIdNyWd79b+vMvwH4KSKB6NFoblK7/XsEzCeoHXbHOpqYrU1F+VxBpq9D/qBNeAI63lwv2ClWJpatxUDHqzTriVSUQqMujiEClpzSwAD++iGX/QgWpAAAPXNnQrNlJfReOr6Z6LVuAgJ+vgF0v5kdVEOu7nCi45hy0934LIHAvPE6BfgRBcuHXHXInkuAvkfn+lx7TKVmS48cgmwNTfRuleO+BLM183Ffs1srxhLsRLvdgcnncsb8jqXwrc/JNL9k/s6KnIAGFVYTOmwL9lrHNTfWM6uqr9qm7IWItV+8mu+F1dI7Uxd5+f2A9Ql1vgIVtbNOtr/s/i7f0ss/+KBZWya/OtFHuztQrc1GHAc52BTEB5NpBdtXmpPVK9uaM26y6iaVJeSzQEXjRkf3Mn3WhfiOcwcfimWMSG6xLzDDW5bAoYFL/GTRNxLE32Ao6trmn7qu/wLKEGbef0/gGNpyD3qnu79bD4xWmaE5Pw3f44wijR/RnhOhEwgSQi4Qm3qHxn5+z2XUNaJrj+A3Vownkdpid12CMLgf8rdN3S4U9ahz0gTCC9+lAOTpS5hiKHr07p0x5duNayH8wf0ofj/JweFc+SciQLmwoYLgDhWqrRKDIHoqUX1hHNWwppOpm2pNvejlIPmdEw8lxI71xskfylUAuXLyZToddHEcanLIffMmX5BtmyVm0YHMCbdaVqtdQqcZpNNNwkFO5Sr272FWtVrd2+l/aBGAr56Do5Ny/aWgjBtqJEv4zZ9tmQDdMQGDhRbZSpoBYoG1i7JSTziMUERv71tACllYUj/fV8pIXAOHtYDGfRp4kNmnTBqO4ysGgHg0AZ4H3rMeR+v1E1gMQHQbXexRJSrJvWy1xdepdElqy/Ptvq8444L5UGqD7hb+QhJYbf5bAr0jwAuYNnzkG3gueHQBDqUv3k/SCmGzUVqoS8O1O23vo5tgV2PuNjYaYu5R4yexcWdCDKottY5xYtyTpOziIpALEl02erc3wmiYCpu6rG3nUa9mYQ/nLMATdywggGWqoeiC2Gjjid3qorfA3cA0qYUgoaoaL0ZciVwbsYL+JUsFuAUFAlQvu9+TUx+8jVFlnlBdvwTNuGjx11zLaEcoDkuAh8ptuerG45+vL5gUpFzUyr0Jlh725RqQK50vUKt/yK/u0WNxkKePvWgEtl4kPiVGBAFyADdhzAAAbmKp165Yo74Q2I0rMBDewLk4FzysgtkwhGgAP7YDNVihw1fAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2DLIROHM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2DVLCOT5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.dextrade/image.js\nvar image = \"data:image/webp;base64,UklGRnADAABXRUJQVlA4IGQDAAAwFQCdASqAAIAAPm0ylkekIyIhKZNpyIANiUAap7nHlf4Dzga2/aOFYvDnEbYDzAed30gHSl7y3+5/oZ5rN/gJwStBQRW9f6XKOquBLYYZHuXzNZTN3UBJwDW/PklbWzd/ihCNFhFG4ERTuLCvu2tv1Wuo5O8I79oGxIvN6EuzxzTNpML6Kox0hq1MrLd5HjzY3/2TUV//s7krre+SkY5Sy9wpCUqJOa1yE57vvyGxZbRgAP7uCmf9QZ/yDP+QZvYf9xid1cgAB7X1b1PhFasKmMcmiyBV3UTWJzdPovawtTmQ0USLPDr6vOofs4aCR1ceXMyV5hURx+nz4UgNolAihBb4NFYH0AHlDL1DUooLBX/S8tNWrutD/aGs2rwDhGNre4SdcWCkdAKdOXxi/U0V6NMJ8Ca17/7ZQrBKfPfk/Sh/1EYkYJlEjaClkC7dBMsQT4J9aV+kdfyxaWHNQ8SRxi5wj4/2fFJ4VBMHB8yOujW6+hWOivHdnRm00ILHgR/GioYiK6ifow5BFysxylLfvYx+2o+7PltF/nE8ymlv4Pv8+DbaS4AwwpJBm1+Sxj2mz01l75YifXEtGpc58ytwF9qwUipNO8UsN7eP+x/I3AEhUT73dziA8MgteQ5grcvo0W2ZvSYzJdVnmCwct9JpoKw5zp42WZa4nfqxteCJ/HBBpkt+GEntDC0Sjt/A8SaHUKkdZNrthQdc7bvGvnuR5nAvFSb25ZMheLOuuzxRSybljyEOrOljkzNBJvgXLzhpVssZVw+r0fTtWgt0KL8lld+j+/AkTZbqHI8tK1Y8WlIQ5Q9HGSK72RsiWMuBIxYI70f0uuZZiAKrI+A+ayw4R/ioo1xpxIVT4l3AYSj9yUdPNB+Ie39z7XKdk3qwXFTG5bGRVTRJXkKTZ6qKgh9KhZxnhP0WocgVHjopVbtIvzYgAxy75vNG98r/i2SVIrLk39OYHOLEVzX6yj0pZeqSGjUdgAWeOBFJL6QvnQ67j1lMRrrSg6uKqA/Lph9sIrX+vnMBrkKi8ecvzrCN5UFnHMTllFiVfuQQmhEB6dA912lqNYtFOOIAP0BeKnpZ1awSLU8FsN4V1iHMeH2OKwzGP9raLf/vSiA1QC3C0I2lzobbcyKs2KhGt5gSM7uWblAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2DVLCOT5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2MC3OA63.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.daffione/image.js\nvar image = \"data:image/webp;base64,UklGRk4EAABXRUJQVlA4IEIEAADQGACdASqAAIAAPm0ylEckIyIhKRgKQIANiWUA1wVe/y4Fe2i8wHnP6ZT6FfS9ftzAOjLK18vfYn8AwN9bTBgdrQ0NKLoAjwhVMXdUM+jNr0mHXcqwq8pGOSXjoRK0F6rqEHXQsv/+REeCSZQ3kzh8szkWYT7KUY/pptpf3j9mrn/EnXihysZx/NFWyPoyHJtfYHVUbYJG8WiW/zLKH0BlFGLxvWvg/rPqf07WKqRP4JArBsbqcoT0XBFJN5xTr/iGzNyc9y/tANtcH43YP4AA/vyoAL93AuL35Ugiio3TH+nR/HV7aKP29YzYlfd/7DgM5Lq/1fgdmibPri0K+JY425v4D73PyH48Y7A7xL7Ov+q8PkKeK4+Pvx2h2X79f76/qR1RFPfuLTzK6oaATC/WKeyJC45V0QWwzl/XTrR3qfBMUdsgbvk/eXUkZq2nYyGgPP+Mh7jYN4o/mFTm3ko8qZuDgSSyVMKz1DZKBa3GF+jirX/6quyCH9k6pZncPKyIpTMft20kH2P7Pvuz05aD6OmXnPqPWpqZEg/+lbAJ2OiXEd2kHVDCRUPvKbkIxMxJfv8RcwCYPxU0PUjMQrP7DqfaYGMWWticrn2B4OZfG/yqU/EPuBUReT4d22PupzPuv9PZBYDS/YGHtCu/YiPeSr8lUoZf3Ecy49TD1Cgru7GdeEHiXN/ObJZNmvrqLtCbbO6QxkWDdx9qMKrBmSk0m5qqJjpX3WXNJRxvpnQ+ZpJlvmeF2k473HtN4e7eYHHGyb754Ij9h0s3lJGvKaJss2IAPzHZa3xiF3xbOJVh6vJJaKEi80jKCeZbB7v7/WrUKglZElTiFdQmrSU6bAArogdb9SCDF0j5qQwxv+LOqwf3dKKot7GM2EQ/fiqHtbrDzo9oUCCqtslyYRV+gSZLzlz8w5BKJPrOVYi/NTlN3igsRB242iP4G6/GoQgtJ2oz3BrPTmIdJu/gTUEDuZ/tvbZZpFW/PAkvUr6hFEe6bMOh8yfLy4i+qDTBwGd4yOkDacSZfcDXs6vbYTSmFrzXBdc/tJ97fzVukKKQWzj52C82jLs58SjrArBeEDtKorGD/U4YNYkrNIJUTREzDlFUAKM9lZSOxZ/8UCrXK5pMAt/80ltM+kwULa31elTe3GdNBQzxISFjZFBm4JjC2cnZRupbwbRNuRb+hnKo7XiPdvfraCth0zXhOvE8sCKPPvJoC02lH59SeuaDcCl9qFoJkRdQbLAl7bKl4HDbm/+f+ZRJ8RrgqYVPrDxxuCyGxmyVk3KqkNMRo8fpP8ytBT9BR9WScQ4ZpGoOVoIXMSHGt3hu4dvibBGFhF/kszDsRUIFjAHEUKhlInBE/tPM71cK4q4MLWFjFu76fZ+xu2fT+3lTwx4gX3xSZjMESu2xiGSNPAgkPYNNGBUVBBLjAH7Ph+2UUcEgH06F2+HTUYcAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2MC3OA63.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2NWF3JOZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/cc.localtrade.lab/image.js\nvar image = \"data:image/webp;base64,UklGRrYEAABXRUJQVlA4IKoEAAAwGwCdASqAAIAAPm0wk0akIyGhLZaJSIANiUAaXMnsD9RKNjun336NW4f9viTvMB+nfrIehn0AP6h/dOsr9ADy1/ZkwD7sSx6Y0w4eXHprZpnl5hLlEX3pn25hrg5EOpM3iTDZ+hv5uLS8KTHAr5XAfvREcGH6jZJwjRhIcu+H6aZUOOMfClvEqIO97HYp7CQpZqHnB8DrWCX3LdTOHwFxfbTnHKL2Hc4WKmGusrPgsspjPo0B45GhaqzrKoGhjt/d7ZXlfTgv0Df//AWfZqG9um0ord6WJKFIEzC7tvpwoWpgAP746nuNecabqLtxiQE/12Qi4fm9gfnDI3n/+H3mIvx9n+MTtrbtpf5bfXQiarv9EfTxTqiUpBV5EEeINrsY6k8+TPkqmz21deSln/y4/iCfns6In8Cj67yjN4O2QJP+8vhItQRGy/x/xPg9PKcXdeUS70EAhfpO/I24N/mTntvhtZacBIBAp5+AG5WoRQKsbrg7yYD9gZeVri438+aGdFnojUpYVsbry/7tsxNH//0YV67dOd86Ha1QBDPeWPDAWs2+mE0nDvPEfqSTTeary/eZz1Eri7jXfXZEsTKMyDZ7FA3t+tbxkSKI3RHr4HgT43hT3I4l3n3ZSR9W6bvLAYksCcQqpgvLKZpAKRZjuX5p1XMk6Clro2kzooLIHPg/a7wgNBfYBgCkvNc+ndlzTYimue84ygSgMTkbitgBbTE29GwVobHnl8AZwl5wEsXvWwvxURRuB9oOSQFA3jMn7dl9uWJO4MwR2K3p+2rdb9A1n8Nh9nU+bzAyrbwK1/5op1AQhlgOyEVCZAKxZRpAKio1PZl7XoD5ExKoiAVgbt9qrOloUjfiGISD8m443XNvNcq/n5QbmJQ8tBIaq+Z8gdbG/KatQ5g5bZE66p45g6zTwEPvQN32bFja7ydCCkcj8SS8AQgKP2w9QzDAjK/4lrL7TJTmLk2V1RjdGa8bFOs7mACmSimGjFeHGrxujK1AtbuoHsFoRGntoPCE9tTONwpDpycZLx/PlvloPdrET3l5SDpu8BP8yOoeK4jtbvIRG0KeL7Ax9hmCl70CQmZENVxYaPnMvSSQ8c4BLKZmkUWd8GgKf3toudVbwEknwh0/vVU+60tX/NHnhL7ak/xncZEfCq0J0KWng2DLet9e1S2jAzr3YWb+oHyvFPUI/zP9NikARdbuAosRk8CAtotAxUSJI5s3qzcj5/w0O6qy6f/9+QukYIjWrE666z2jsB/KRwXoVxJHeIQWalDF4WetwV9sUg1VkSqWfoMGb9TTo7n/yPXWAa6XOdRu4LnxlEHisEWWN+ZVrIAgm2vnpKLBcs7LGxOUqm2juxIjI1z+Hp+iavOOcLy6fD6YOCSWBy+qBN6AaMWo2iv4xH2orYJSDVq/Efl4pwPH5cEX4O/OuSPIiyHTBwEbJVpFZmzYB5DS9EGhRnIEwvCpv2kkEL9R8C3ES3x2L9cm1/zPDJJfDNC3qVC5o9m5lShg98MqReKAynDZVekrbj9LZMv9hazEK9njhCkbVMjtqAANKULYj+NeLS6XYCdvoJNHthvRSpJaZcigMzCAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2NWF3JOZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2O2NSLAV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.lootrush/image.js\nvar image = \"data:image/webp;base64,UklGRgQEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSGoBAAABgGPb1vLkLiL4BCKVVToWD+5zifb4GNwpSYdU8bRInf9flHnob+u/FRYREwBj/fPlw+ZzX2yz/9Q8KM/7YdV4tSs23anELOCYvhdbv5tymJTvie13MmaEL4XieciweVVIvqwZ49oVolsuA8ZPhOrVpK7xmpCtjetwnQjdS7e2XSG8pWlRKM9rCKuclOBXV0L64ou80M584ujw6jk+zAjx3Id7ZrcAEkI9ClS5FYEetxb8Qt43z262wq54yG6vya7+zO5RZacM2A3k3////v8GOGA3UNkpz+wemuzqh+z2KuyKc+xm/Oy86HJrAhVuBSDCLQrgjtkNAEwxy35wtHl1HR+Q4ZXE5yeszvFlSOWkBL5CntMctG4xWodm1zGfI6c2jNfYXI9B79gxl8tJ6HdtMdlwwtBZhYUyA6ODZxxOAjAx07a/VhLmOvK39naTHYL5kVLLrlrFCKzqnS3uNR779tF/bOwVZz0wFlZQOCB0AgAAkBQAnQEqgACAAD5tMpRHpCKiISuQuPiADYlAGmu9jxA2a7vn4tflHTx/9j9sH079AHiK9KvzI/qT653SAfpn1kvoAeWR+tfwTfs3+tXuK/6f//60R47/mcf/Wfx9JFQYcIfXIS+R5b1NgrlZHlAmRl4fS1kIWlvHkDy8Ndaxd1Iq3B+eaRWdfacndefKscLm0m/qy71Z8C2GyPTrwI2iJ7WvzHvRAOSeVNJEoAAA/u5HtLWwO/NGL+mnR6V35pM2vzRd1J/h8uQwBlyvtyi6qtELvi3xgLK3y+6I8NIBF9DVW8DC2XVmZFvnmoLzVrI8VBqBspaKop2S5eZYuqKkNkWZAwKPVV8272Kn1R0bvblzi2kd632wET+L4VjDTfLiS7iTzIYnaMhG9I1kUWUFxog3ipT9zHhxxRJ/udrB8vl/PbFzfcRb5nAbjWRvLQvMzfbZQZa2cQABZ7nq0BgCNQn3YuB49rWnD2y5/v0U5+9CcViEukasz2BZQmHm2V5GkF/nJ+gy0mX6CeU6boh79z0HGFyfNzd1LmmPQejUwNOdpRA+uXZQrnp2eWw551wWxVBoBmxl7ocxJ47zOjnMdeGuPUChUx8iZ/79I8NceoFIUAXG/7gXLYhpYVUlZ+DyH5VtlecS80xzRTpD1bc9LG12KKRwe3Drdy6491Ep/6OsU46zN8biTajzi5h0/5j8K3nGNmvcFiBuGlUUoP0O4rVoAgiGnlzZcGMhcbspuHCB3+hHUmFWYWaGIsL5Of6cYHiL+ZvAs6cPc3hAanYGuRY6sZ3iG5fnF7ZLC1L50wiW8iHOmXJ+fbF83ThaCQQs1UAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2O2NSLAV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2P2TSVGP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ethos/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2P2TSVGP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2TID5QYA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.haqq/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2TID5QYA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2VBH6P4I.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.moongate.one/image.js\nvar image = \"data:image/webp;base64,UklGRkAFAABXRUJQVlA4IDQFAAAQHACdASqAAIAAPm0ylUckIyIhJpO76IANiWkIcAAsYHwp2Gf1rlcJW5h37K/s/7NxA7xL+Yf5r8hODFAB9WfRv9V8ytIpMu8e/077CPld+yfygDh3q3hgztU4x4Ua/dAkfUlhbvvOifpX9Yt5ddEhQgurDsyiATvkW5EgV7SUKN4UEj+jbUU2mLVyh+6oOeOVIwAKU9sP3z8NTS4f5PYJwFcYjpGatpJ2MNU9a9T8f2R6MWJIdoxdMD2dpcRED4BPkA+/Efliw2Gb+ErjaQvW210CyNO1rpe2BTMo7FHnijkUK3+5fdRmCAD+1croW49Oc8w3d+SMHiXmNBup4jekQg9IajiD1mxb7D/tuyuj86gVOWrONndUUX1DtL/GkLrgzrNbpTMEU14i6xvxS8H/Z9TrRDLA3KUsbeCMxhsmbEkO49W4T6w/x4Y81O162qsNcjTpcCleT9mrIY+vs325KwGH4Ju8LM7UwNVzqwG6aqBnIWq7/ML3tupdLg/BukWktG8f6SMIVwWdxrpNZihwC86U8p475Wv6GRqKtGoKg7G7SJG8+0ZktRNVoTDIjRUwQPp6ba5cKL0j2tQmvuyjGvCrl8rDoJ376QMdEgSs1NYNaXAsN0g6i8eKLLZRjHwywUIzBrQCzvD6Dtn/XELNCJBc4YBzaNiKUiqTA6bGqWHwK823vok1P8JEy8cwfVmh8Mm4TKj/ORdmix4jCFieC938T4GKLvNEYlINSDKzWvDMbMbwCYxGQlDeKikv/PhZZ+GMY903Y2NcNhtlCBFVfO0AmYoCAmNN4xKT6JYH2hXlqrkmN6Y4rdPqtH9jrdbuImXxb6AhscABy5td6eWjNn8MoYq3rVfSlpYF3tERuhypE+AH2wzBUTOA/5/9tmAT37GjC6v65rMFr0tgjgRK22gHka4f/0AlikNlvQQ3EfVBqllHNt2d2rkWo7K4r6tLWzAlQ/of3Siu7wViiPO2cZonnlSUS0qCx1i1EFxlcWIMkZw0hvRe8P+sROjpPtXdZZNd0wIcBFkqyr5w/QFYnEDy6+Qp/cXofu4+2J5OvSZT/k/QyxB/dLNCijTZtOGmExB5KsCj752j7B1Izrt8w7/GaDnG1AOOUnCev2fB1ncAUOGjZuaqUQE9Hk7CW9YcZ+esZL+yv7SsYflrJmhK5W6EvEBs24rHUebJSx1Rct9lxQKHWMz7D4fOpzXIoJiIMa7tmQXDOTRH7k/HUX47coa9RNHwbWrXP6cdsQ9gvkTk/g5MMM4I322bKvVHwnP+/h8Szpbcuct8k92KRG5TbqtPjmQexvv32KbmjWLgn5EPCjN1VjHDJTyL6598Gib222R71/QFKwWAFsbIkG/I+2fopcE8R031f5qP2cysAb1wJm1PmM75va0oa1uZ7gt1i+5QhABFFZD+hkUD5c7I2PjzTgkZQLJSzUdPENOfni6ELna9pfkLkegd0ZAfQLIK0ptIMgj2+bILIbR7GxfkjFa8l/rgxDK14O/nnDcjFvtAwEpUt9aqk5onS3lzf5oemg5Vp8+7XEUxjrDiWPjzTvyUVWbrqVt7TgwRua9Oadn/qDD/SD8Q500PT8Vl7FdGCMzYDMLmYi/U9/ba4k3v270ZpNHdNlLehKh+jX9xkTEFc/J6FZiXBpR15dlPnOudYOs3vKiXx6PS0FoniYb5GC0HpM4La/Vl0k+gvcKaTDUdDL6+VZJzhIgJBXVc1P3K9RLiQTvkB89xwbJnnRAuXVKbdlYHTsRq86IFtRXk+VFIAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2VBH6P4I.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-2XQ227AO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.backpack/image.js\nvar image = \"data:image/webp;base64,UklGRoQDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSEIAAAABZ6Aqsg06PfeBFhTwp4eIiO9JAFqgDkpi24oqfJYEDE1BYnFoFH6PQLMb4Ef0fwLSh5eMq7SmgFL/ddqYtCcxsD1WUDggHAMAADAWAJ0BKoAAgAA+bTaVR6QjIiEqFmgwgA2JQBrjvkex/mORM4ijCO4OaOcB4lvSj8xXnF9IB/WuoY9AD9ZvTb9lv9t/2k9ozVd4X5WzBuqgZcQbMzL39biv4/sPc7xOoYvhJHo23KgOlP+c+yXvcH13owJyPDoq7y50x3JBthvJRoRyksngI8TAN9pWTOaIkXdpLWMVEy89M91VKMq815lMLz8HFhZ4XtFGM2aIzuqZuVVhyc6r9IgGMAD+/KFwXOCQSQ9ryjC41iIU+x7fxryCxallV7uXiPxdW7zbeLBQ351xqzs44tk3+t0b8A/KlEzOpl5y+1FhbBPuZsnr4/Z46914Q5womQkrfJfwSs+vDlfdJayjqpubSuXhqaVXD5PNpOzOvwLkppF/6z5wUxKxfjHL8qs50UF/W0TXKsYRe1peOBA/Hlpw9NYCy1yzO0AsgwQ4vl2SkUU4Ur4J7qlU+Ru3VCZf9paZ5YrooPtuZ9Fafd7zr9k4HnNw89Qup9rqdusYvnoyXuc92GVOsZ1uIZlbMcFUl09LHPLZpEejDRbC4JX1Q9hdf7di4hax2BCaC1LC8nE6eQ7cGsKGM+A9TmTSIaWkkm+ePgmHH6z7abr4NNmx7xjqZrYOmBZyctY/kLXdG1WQfkPmbp276XDZocbirca8okm/P+JQXfpBsSRL3Je6T608k0tui8loC/pHCq2VmW5WLz9yIgVuwppRQ9wIUqvaXHNIz/TkSxTiYTjYZJP3CU11TXQujaQkfUu4uEwJ+nuhTCb7z0P8CQtvREirvrT9mwq8HSHXWdq6fzhLWKH5vSEQDBQjxd8dg6YsIeNLmlcdtlZTQ70Mq41FW/+f0T1hn8v7AP+o9//gmsSR8ys+PfAnh6IbY7tqrXXSRz71PzTBFdw8Fy/nPpP50iooJWaORiY4o+rQrh9/71uCL299F4JXVeLzV8H8ojGEmsFPG4TMfIsyiJ+nLwJ6kUXc/ijRDGDVUa3CVLG3xH+wecr+NwlT6rvrbYTmNsOp/sS8Fosv1k0X7Xz3048DRkF0AAEHwlMAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-2XQ227AO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3BBR6ZUL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ambire/image.js\nvar image = \"data:image/webp;base64,UklGRuwEAABXRUJQVlA4IOAEAACwGgCdASqAAIAAPm00lUckIyIhKhTZcIANiUAazJVxvpUlg/tv4j5MEx/Zj99+7r4Jes/zBv1P6bPmN8GbsAP5b/gOts9AD9s/TX9mf9lv2g9oDVYtjnZjKQ4RaUdp0nf2r63ke3MiUlq3IqaDkFgB8hdIboEL7yxpbJXp1b/CjrjCcz+j2TTduA22NeBamFuDkVdM5sagcv3wTB+yu+dhC7OZ9hcdg6OwEeFNuwi9qKvq5Zw+oXWKwqPTg+lrnJX5t3IELodN8aMJYfUxvM+3oE1IdQ9Aq58vqKLlOAAA/vyoBX89TD48Pb7n3dIVakpqV+wcYRfvVPxPUfyVSP7XILKMm8D7u98Y+oF2sxA6GEzxNfU7Wb8tN2qlAsgJe5UX2c/1r+i3IItBAqvU1y3cG4/TuNjtQl+WP9DXY44fi5hCbjLVLtcxIwwHD/geBuGGZ3zb1i3q1xQpWpny3jhmL9Uwx5rXahJyYwUojErBm2Jrpww5X2YL/qn7oDR3pmmPXUFu847ZU2m/I8KJ5W6+IQFMveOKQ3p5aVrw6BkWZ7Kqq0RsAbxWzAwkkgBAPg6s/Dx+2sdY/1T/YgwlmBoady/v0mqD2OwhOgW072PAteIGdAiXpJC7EO6Wvtln+/iteN9q+lGTWOfZEX0QQCzPQP1ardNHkXgREleM83oiVKHJFAeAmFNHLt8vhbCQGCT2otkCzZ3DSPqFZwTz+po4o8M9yjnGiH0HU5YDwSi1IORkhanG/PW4lE6LQjpEiAIFEpTHnaRVY5pUvNuiEj8WUEH57gi/OLnQ/3oREyt019Cfl0fLrdjg9afhdb8VdwPM5gM1NqCM9dngAQ0lnlsvdRDY6C/tKIjPHaU836Lt6ZHFdWA4Nnf5xwBnGLZUnNu5UBUr39oJWmRl9TLPaQmT52LLffKwCT6TkeAkF5tEwLS8hDYe2OOYepz4U942HE/0vmP4FmivMtW2h4OHLXRM4seJ6gPQzdPdnK82bVHgUIehoV2g3lBHZWRG1pavpcQQPsUCQYVEPqiHehpe5tRFVmcop0uCPumm5kmmIqpBMuLV+B7v8+08n1sLlLcwA1he7Exa3uy1KUS+o9kbt/dqk53tGzSa55ZJDV1QIF862dG1CQrX6bC1WPEEbvhj9cudw5uHHFXc2trfLRjqSOoQJuOjayyNixKooZpFdhdNoEUWVrRc/8Q7EvSQjwLTC14xrNqoJB0xVxrdR8iB7b6dgXIytr3KPz1tavzoeioSHq4T31/ZmGyqspe1K8EsIzPPMNSLuOwib2RNivVMPV4N4fts+zfWxxknlWAKICvsJlMd2k0H6eaKV5wA33jfhYPP84/dtro54IlYLrGPt5D3s5BJzexqzHwlDwovR8pUrz6R57BFHesY522wfEEriQ0gvp3MLC6HFr3h9uwEBB/kq+4la1/FZAgJmJtfTTITfpaOmxHsxHrWEZYCOCOqqQkwm6GpXPkcavD7udI8mALdvITOGItKpVaKaJp/0gExkUB0Gi/ISoYkiM2Eq1Nz4M00KuNLimiIlxIDI2bkYFG94ijolo8WHLONKO0QpuXaFnsffhaLXbvTcJo0SbuB1TO4v2azy0j7fmHNVKmWfWZoVO4arYXnmAT11gRtVB7/TRvljl5O9TMNArjkkj/gAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3BBR6ZUL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3BYLTMYN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.sabay.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRn4CAABXRUJQVlA4IHICAACwEwCdASqAAIAAPm02lkgkIyIhJpToUIANiWNu4XPppv9s/Iz8ZuiF40768HwbzrL/Gfbd2gPMA+y3rK+YD9QOo/+M3uH/ph1qvoHeWX+tPwmft36ShT1gpzjNKGFFlbNJW9euUexiBBGUF537RmW7zaV8r1aT2FdkujM8zw0Mljb7P2/JajQXXfBmbkXVZN9Nz6Lxfky+bZwfObTnqAg8rZpQwoAAAP7/VdQMg/DxIU2JoJTBriSqOClh/08j19rbC+X/9mvS9gfL643FP3/8t+Q0mDNigtDoD9OmhOf8p4sfI1N80ftZz+NV/s3gnuMnFjQ2RFvXvknB/HghZgLp7Itnhtll94Nnf+0W8U59oknnitGP0OvCX01AeQFGlTIO2ZkcliuPgFg3heVWnpzqoR9EpWgOBPuY2iXBHyHxTGJ3V+2GhUjvnDKIJcdhmj1cj6NYC5itiPjanVt0z5cl+b/Ib+V6DsoTej+cwtmYvxbirw/xiBcOAa9YRsg5HOIs4J1Cknkz/+FjTJKcncpTeMyl1uP6YEAcTiEbE83TdqUMngqpdAUdOiaQno3u59GdENzWgeHSpMIFfEMJnIF8aOfSJtqddpkl2+j2vm5mQBuY7S4ABFAxc6N6QR7U9g/4wun+qSuntGYuOBtcgvu4NDPy78GChPMM9UycwOpjRe7I2efc9xbkIIx/XGSGrq4AgElWuIEUN367FwkXvw+06CnreJDruMhjBeYdnvDD4Pz2ezEdVZbeJSAT5ii+4l+P9RTP0VpczeTF7ThhQYRsZv2FmzZamfBuC1/oy56LUSsHUIGDlefiJ/RfgmBjjgAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3BYLTMYN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3J2YWWMT.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.lobstr/image.js\nvar image = \"data:image/webp;base64,UklGRtICAABXRUJQVlA4IMYCAADQEQCdASqAAIAAPm02mEikIqKhJRGpCIANiUFC2Q4bCEovgOQY5bilvAbZrzAboB/UOo13m/9wPRmu8GustpQQG+4R7rM5JCjZEtlIJ4VndsjS1lMVauAeYj/N2yMPrAyBvwCuGM652wTKCxbTjBJAB5x31OrBGoVHU5SiSgFr27OHTnvQt05oNwdWZ8EZ76LA+kh5dmwAAP7eH/52ceXFP/9rQ/6tD/q0PG0AB10Cd3gpGXn3zepFVAM+DbOmFQEOUhuA7bx6J/hgJaLxtaNjydYKRkMHm5UriWQ3jZgs1OvWKgaEk66tUaMIFYSKsqbs3XU9a/Rdf5E0bdd+IYjnmyhXntrOklxIczyj+7cvB4JiZaUApm82N/Y99aFNwdNyF7Notk6KhntxIkZCkAYO7K2Gt8pDsS3fiUIPjVS0N/hLigPZ++8+4nl6Hz3ps/PJIpr97sZsY/f9u3iWayc1Fqa0OQLemzOYu3y4fCYzd+Nps39Ir6/Npcs/hX7KNtJEANuvyAznB95NM6yXQab76jcIH3rgz+LtmA9x++3JuSU656tlgDWOLoKtWasezN9pv9/9IqDoXSsW67xF4nEzcankN4uuqRDy9MA1FQqtDxPRQKg5FVIc1whHvJq7I949nV0o7wx5sg8AGo+yPIzO0cWW/8BuguNbbdWBXgB6osA9VCvnW78fzZiMR/o9wMT+nG8c85OlVZ2DhwdQVgigtUvd56eHsXdNK4bdH7ImXMeop/NHAYgAUO30HqUQTC5pZ+RnmnT97fZBL9UgRHTxQxgu/qkTBRM/cZan/eA1W7zHQ1mRmcL9/A8ynuEv4we23ud1e20Ksk0C6sTOhWLY8hh5V25buwHyn6FZ2UCh/KfdtMfzpEmsJXAXfi7yDQb624KLedMfwk2TMJVEvSO9X9M6rd/XMr7hpGnUQCQgWGDHGUAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3J2YWWMT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3NR45HO4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.cyber.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3NR45HO4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3PHNAY7F.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/im.token/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3PHNAY7F.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3QRD6CSU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.wemix/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3QRD6CSU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3RZJFPYY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.liberawallet/image.js\nvar image = \"data:image/webp;base64,UklGRuQCAABXRUJQVlA4INgCAABwFACdASqAAIAAPm00k0ckIyGhK5eoyIANiUAar0LP4DYcfDfi7w9PdXnDjzdl083bc+YD9gPWK6Ir+q9cz6Fflg+0N5AGq4Q8Y2FGQdexsDWZqBbUOqKPcsieuDt2s/mcppdqPkMiQ6XEOp61Je8CCgu58p/ZRo5oWOv3QEIP6QTztWIaklbKEzSilWZhQeEoHnQHeJZOyDNCqGSusqEtMiAU502JtTFJZWkAAP7tkD/tkL6yF9ZCx0/4+cQiYtvK4BLcK4xFAxvB+B8ru+W3brkYszH0KfX6LcWH2bZtK7+P+ZMfsPcvqoqZeAaiVYFYZ/7WDHlEZ37ZZ7EAwwffOrRiDy9f/Kj967XYOkQ71MFYKr43UN1fv6qDrqPUKjJARYCtVsBXNKMFtaz71d9bfpFccdjgWA8N2QgCsqACWW6HVnriN9+BGg2KRzAQuX+KVL0EbJdoRHTX99AciBNXTfUkXhwrcZikRTWAm+3q/RIqCBlB2Z45nC+MyTqqCjA3l4oYD+2QGHPXihWIDp/g2Jv1W98Rx9+It+XsM2LOygwtSbIC+idOzuESPhD4c/Ya/RIjtb/YvHgpWryce2SyRxiSqeUuy0fJUbwUfDc5W2PGd/3yKBNkW2ctIS0g6W30dIsCByqw21N3Y80nyYc/7iUkfvZAaSsj9RPtFoXFZokBVp5hQPxFnnaVUbJcN1nK6R8/LTud/Ap+LpXtwKod8ng9vEHUP+lJobYQKwa5lL0mzMx+TsH84lKgikAyiEG66drcoNzy0LkU4sKe/bIUe6oD6s+oLryTniBifDRacEdM+t8pM7hJjfNxgITsp/tu61GvwL/jglqapqFztSqCOD1qWsriy9cSwmZaKc8MIwKI25px6rGbJvoAB9JU9yoeIs+5u90oxqCS8K6DhnYDUXH4hi64ZO4o3CvsfOC4nGK5J8X40D5uKqNAiigf2gku5+BwgAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3RZJFPYY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3SSVXVQA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.aktionariat/image.js\nvar image = \"data:image/webp;base64,UklGRgoDAABXRUJQVlA4IP4CAAAwFACdASqAAIAAPm00mEckIyMhKhTZGIANiWkAE98fSuVtPcfzmcs3pj3/YAegHcJ8VrQA8OjRArjlDV8dH+3fxRRTP7GZUwTjey9rRoJqU2gFQfzWNM4zo5kTHpnC2V8xq4qr0TNE/3QaiJ9+IGA0oC0tnG1M29znXxW1cF4K0dHYmGP4adUE4/zGoZoqsOfeOl/zYp2yWPWKSt5CH779kiFhX/JZaCtQAAD+/FzQBlcAZf8tUn0OVzpQ/1k8sNq8t8TMnknM9FvpsXzSKiRaiDWgoLkMMV98CMresoTXJf6v5aEFS5UqmsmDguZ9SdKmAOBtD+J5fSRW6I4kC6UR81ZHmW/avYwR2jcwtEOGU9VrGiJ0P/GvBP3zNUiBea+Q7QXsO0XrqOu/bRzrzcxLxdBa5+s7ZvYTmL2qaUdB6L6w8XxR2S+IhALQ+0JFHWfSPNzo833UOPz7REvhLZASltpA+BnDKZKGXh6bGW94Fv92u5u4J/E3R6mm+S/Z7I8rOfyRUGk+bj6x8Dl5/kl33tjVg/ZJswfSMcX8eNcCe7vuZeImnUx4YAirKCxcNhrjrPb6DacbHhXTqxUmkHBs3f8DHA3usn/ZX8DGbcW0jlkSamuH7gvOuzIodLm8p6VXyuCveZmyx+u+dU+YoIGQf/hS60EC2OAisl0pnM7zhvvMGnOYwA9vlrcXjZbXyt1WXrzC1JXBAGmdj5MalJkkcy7s5n9wP77iesz7GG/J2CEdrpSCe/n/GBp6GrRgVWxAWWegV1LgBsvz6RCOSWZ+dSlZu4+kuNJf2+v+mGdgq2zOYmaTi+Ek7FlwRF8Z9CGUhXszAdNkeyMFfXFz5D9TpRY4FqK3L2EH5gor+HvpRXkcfQLEbsnNWcuM7jLmnVIVFmUqITKB+1ft4w1GffMOoLyqq40j+bEnEQVpQAzoJZmfrZI81tJLdn8nlf69+SHIOrqFOJugeviBUz/MF/2uIWnUEppo5b6fyXH2QM2z39CmiwlAbKpJ08AAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3SSVXVQA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3WCIGCJE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/cc.dropp/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3WCIGCJE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-3XPXEUVI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.dolletwallet/image.js\nvar image = \"data:image/webp;base64,UklGRvABAABXRUJQVlA4IOQBAABQDgCdASqAAIAAPm00l0gkIyIhKBYIgIANiWcAMUA9EnUAKejd3eFphPhAclJW4XG5nWMyxFvwYjHeHx6p7QCPDHL2crUZPOQFfdVU/etWHcwZK1VgASugsUhO1uqjhlf6DVR8vaR6WlQ8SEArUuufQ+0qgpCjyERkJzAA/vmTaJDAUZTMpB3Pn4tv51HN/MjeGmjMv+BRVdZQ6r2x3sKoJYfX8X6f1d8/aCVbMF4Ivb9asU/eqF0fC+OBVlp5EVnDZPvPK//GFb5OPybqYqQrLyYDwjjX+T/mgnmoTbGahPWzIrG6PjvI/VsA/Or1RxWhFJEu0/1abYfHRBSMRV37j79nl0INRskpbkKo0nG4oLFI/+sj7Qho6gm5BL8v9Rqai/D2KezrGCR555V5uIH7vkEnF0OvtCDkMf33SBYqUrNYk7k9n0ODAY6tReJdDCUTaQDQspAyOagLVS2WyaSnYgSsNb+J7AdGOONSVyf9PV+H9ajoeys/cfPaOQmjNYTiyvBJhvzs0tNpK00NQY4JNTOkD28HZEL5U37ysKHML4DgI99se8lsyf9qonmcT9WAaNv10CA+RGNJnFI6qSujZIlKKzp0X35tvg7GObefle7XeMQf+6f+56bejq3MfgAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-3XPXEUVI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-43VCVTQW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.mugambo/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-43VCVTQW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-45QC47QJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.sinohope/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-45QC47QJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-47XQBRNK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.valoraapp/image.js\nvar image = \"data:image/webp;base64,UklGRpgDAABXRUJQVlA4IIwDAAAQFQCdASqAAIAAPm02kUckIyghKZ16UQANiUDhDOWVAjCxGY+evpY0BEfjxJdwlj1XQWsodbzLuBRawjhpIrrWjcSOdnX/+XPILm+r168eall0HkUlj9ALOKdWgxTKGHVmXPW/FvaZTzR0bvDSdSXvTHh32O1TlZqCe2KocyN1Pm+s3k9AD9HIsERRfd7fqS7HhCPU+8Jxm1L4RY62YjCgtGAUGOW20PzK5edF8nH3mAAA/u7Hx3pLZOvn/9S8/+saf/RftuAgah+I+g3dh1RjPGXdqSd0oZb8ErO5itl0jE/naRSK2zEUU1unDgnGo9fj9EB3PiP8sfrfDVoQzTRTr3ABQy/EVtzsD8KCDkdMUnVVNoq/FNj6RUQXxieEG3ZjfSzDdtct1yjhTa1wPQSJEYs7CfO2/RoAEqLeSpGTI6LRrAgNeqSqMuQAUhBMTgS5xEpBnPGo8wxUARZ7xQfAT/MaouoPN1bO/NvTz0aSJyZhr8EpLhdhlPV5HHDwWNP/eGMMBtLRPaP+zrcvoaEDlSo7h2i7UDxCLlK1dw2igXFensDlNVXJqwUO9QwewXcfFSr2IotBb2Ozj4+Gx6nvr+J3S85jcNNlJ7JVk8hxgiHuFyi4YTGgmFz0FzkdAQT4DXt+4LNK17N6wY5rj20rRCGxJWicMCU2N73xZ7zEc68OzkuFfkQ3z5oON59KUAkmfSG3QgIinSj1lEjyd8/wvj3VVB9cvhM9muqERHYUzAtjZpDiSUsWzuzd66r+IltlqvMRtVO/l/w6O1oAnRW5QDaMrNo9jDqbg+KTJ59xXXr2PMOXQDyhux25wX95F1sBL5P8L0xpiKO73+1yrQoimSWyfUTN3NFs8fC57iyJb/R6xozHkMZ1O1r2IYL1/AfaXtihSxbidgQB5q8hhCO8M/tQ6WNUuO+WmgQwAPqe5dcIE2VlJOFfjEDF1SWCMsuSd4foBBq/9xtSt7y2eMpDDbBJhiGloQaKxTT2BVQVcF9ixGA7YW8qpmqZAKRRsnqu0J84YFxXc2uMuQyYoJGhHVCFQN360RTE0QsbWPUVpsM9/mzMwrtGC8eWaLkXr/E0N0kCTIdSDb2TylQPIDLdTMSoYMm2oHN3NVJ/hkqZv1zF6fK51OrBd58njBiOx1s2U+dTuESSCxWw5qMStuJjqdp/HNFQ3H1avyDE4T8JCdmkwB3vdkQxXIAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-47XQBRNK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4B3NOTPE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/world.ixo/image.js\nvar image = \"data:image/webp;base64,UklGRkQJAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSD8EAAABoC3Jtmnb6nOtbR7b9vmAc22bK+6bbS9d27Zt2/fdtr1tzh6xtGdvrc+I+xgRENy2kSQpyWLue3aFdV4g/wMqOWXxwgWGWriwlYz5STWLTEo9dOcdhrrr7pNmUtl47n3GJ7WdyLzb1VgDVzURWfmUWusMkTnXq7X6r62lsfR5tRIeD0EHrk+SWPiKOkGHbgwozHszhIHomxnMfm9MYWA6wM8Ho4oEcmYVfEYUCKivr8Ne471R9YYOXtOEvKM3x9Qf2n/VJEHd5NJXQvWI9l0xFdQrn1f1ifZeNh3Sa55WONCeAeh1jysBVwfXP6qeCbXn8qn2YYDt3ism2a7xuPIA3s9VTTbPcAHCQyye4QOehyx8RZ1A85B5b4Y0GH1zVM+gwekgkme4AeYhETzDDzgPmdAzHAH0kAk8wxNYD6ngGa4Ae0iZZ3gC/Ve41DO4zL1Byb3+cWXWiYUfVLTnou3uVTYNh3Yy3zdt+36Iyqc7ikhLukvjWj8eXC2Fqs/0xJRf90tISVVn+2LJX3tX0IdkbiCGtO1W8S9XkB+MHR27TCRP+bgd7NqxSiYgyPXFis6JRySZ7YnTNXaukghVk+mKzx3tFlGc69PtGsbj981eSYlYTem2WPSP+yclcrWc818M+tuDDBPIpHP+dd9fpxIilp58zn/e55CSsR1s8z/Wbkm3e75GqjD2bnTsIT8eBBjfHvLrfoCp4CFuPcNcFT3EqWeYawIPcekZ2MoPOPQMM749pBMxvj2kbWfARPQQV55hLoOHuPEMc/n2kB/3B4xvD/n2IMD49pCvUgkRap/1J3k+PjAh5NrqMzLPLpaAy/r7hsn8c+E0wJhzBC6h9l0xCQA8RyDkFADQOQIjpwAAzhEoOQUAbI7AySnsYHMETk6BmGg5gqtGHATmCLScAnANXI7AyykAdwTLEXg5Beb3DyZHoOYUiJuE5AjUnALQjByBkNpD9gY894xCQ4J75wfjPKH2XD7V7hneu/eKSVzPcOIhTM9w4yE8z3DkITTP8OQhJM9w5SEcz/DmIQTP8OchcM/w6CFgz/DpIVDP8OshKM/w6yHTpMDGJ+l/S5h96VyRSecolQ8f+UWZ1Z4SmXcL978qB846nZtTnCIy53p2jtBKzSnC44twc4TSnIINP0eoz/SQcZAjVGf7uBBzhMo5BRUXOUKQH2TiJEfIDxBxkiMEuT4eXnKEZLaHBidHiJpTsKDkCJacggIjR7DlFAwIOYI1p/DO16mEPafAQwjuTT25cBAPY2/AeLAND3xvwNwt6XY4vvYGSj0Ejau9gXIPAeNpb6CSh2DxuDeQzA1Acbk3EOQHkTjdG8gPAHG6NxDk+nB43RtIZntguN0bqMl0oXCxN2DxEAQ3ON4baAL8ETxJZPa1Omyp0fCTg3kj0nL2b7YnNT5yrEjDphOOsNRRR21fIzwCmb73cbYndcQ6AFZQOCDeBAAAMB8AnQEqgACAAD5tNJJGpCMhoSyaOTiADYlmANDJ3v7N+VWxN9m/ID8meg34B72/kr0GXG/g/+9/rX9m/a/tQeYB+h3+3/of927EvmA/YfqAegB/Pf8///+wL9AD9YPVQ/037S///5Df20/cb4B/11///WAfv/xsv94+gCmxLmFuD8AcQGkCnoe7RqAdIr0ACkf73wATnwtNUlow46aSpdc7bUbXaCD/nBlwuZ0+rlrAuzn5romp+pcvRapjfi1kz4RSYyFizM4NcvZsHCKX0qdhmCVdVh25VYQCdxH5CX7i9dPxdoPtCC6XAiWalltHQCCLEiD/TbqmZbkQ84OLrw1AAP7n754RibRY9JPK7jRv9/1CG6MdZx9brHqmctItagAQubuHJv+SeT8tv9l/yX5h13vdRqnQVjF+73JcuVxgGZ7VjF7O/WFdX0xEegekgozOIvoncG9wpo93CrWfv/VZ6xfc1nERbg9d5D+g422DaaRBm1ID5///0W//6Jn//6HJGCQgCrsvRDMcIAUfbLTla16XmB9zE++68qucdNrW6N76oDsRYAbU9kOdmOgK2Ysg6+xY1+fbKPFN2gGknWFl43Du1fBWH10B8yzT6vlKqKt1bXs+bKxC9BP8ze0f4HocJu8zqmjC1M5JhwSMeONzx4AgeyrUwlp3+ONWaOGKzHWDu1KwcIvl1pkKHBj6z7en0+8771RMpR4gqlpbt/heFZBuG1QosmmKNeOTk+e2GzXpLxscGXZAAAJCGTJaif3gsl+fE/Q9vdcUyqivRYuIjiqgsnVvVtcotXwCyJITWeDMSEvWcyqU96uVb5XXF8H6dZSjtvpL858CfXGoRSH+3PEw18YZfiKdbFM8uY+n3nfep154Fur7Q95puV8yipYCCKcJ2n0px0z71lLNekvGxjAoRV4Ssmu/wwZFqRkNmqr6ThyFKWZ8gfqeyagkC9qAtX7oF3fkVJpUmqgX9KtpEZXrtlmtEiu1Elq3/jWHn8h5+axYV+LxejjdhDant0klOaGNkopAaOkp2koFb+pYwHVMprR03Wq6HX3iqEiaZ0rRwThB6jjVQI8QTu4P/5fKabh6ROj2SeSG3DhTbIO1hIkyvaMJJ2qMyQLv0lpIE3N1F9Vsu6tS6jQOpUZ0DqRp6ehOjrbf23xLjsq0QrsxWBVX+rgZ2+hQziGEVo+kx5grBzp1edJan6CAaq4PXFtcABiylfFb6ZdoloPfpsJukgDo5OWA44E7sIM1E9tUZkfg8lWeUqeXtNxVh89xpzFVgrOLt3cFDUkMB4vZHB6wC4F8WurJTcZ1Xswf1Rr/rVZyoQ2LFxEcVUFk6t6trlFq+AWRJCazwZiQl6zmVSnvVyrfK67zjffnEohDm/+aJo5LmKo+S1RAlm6ifPE/rQ3MVaf3IeFZBuG05X60dziy6+g2dWf/25UucymAa/BUjNcMYoK6slNxnVey8/mPbVwFsZbpGZlQWTq3q2uUWr4BZEkJrPBmJCXrOZVKe9XKt8rsd/Jf//4X7/8KX//4QsOIgVp8McAodGVP+oEzv1shrYsI2fAjaUAhiCuGVG+lRzf1optr//iFahNZETqHjrnBj61+J56Hm2jEkZYlSuzamX51M/uFqu2VaXZwFgvF+eBOe6KL7I9ep0AAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4B3NOTPE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4BA3AXSR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.cakewallet/image.js\nvar image = \"data:image/webp;base64,UklGRrIHAABXRUJQVlA4IKYHAACwJQCdASqAAIAAPm0wlUYkIyIhKxdLmIANiWwA0MouX75h/dfyP9oGsf1T8Of1Tnip68tbx39C/5n3je+71C/nf/e+4B+ov7DdYnzAftL+0/vYejf++f4/2Hf7J/rusz9FPy1P24+HT9p/209nS8b/GXPr2Syu4e7JZWKuHfh5+An9R4qPPNowqmleJDBvAHYmuGhkt+Kob17LzVz5lNH1BIbFuVOVGofXXE5rvrWDwiCqUU7sUiovoLMjMT4otjkYmo33SSfAYoiofY/d/dRHaMtaWYNofT7FSfpmXkWrKfcfdwdAiXkVRuvVVHd8XLs/0W1NKPD2vQiRNPCfnPWL9aYbPTkWyALa5kQp6vPeE0mLPHq1vy4WktOyqABHUfQGLvpEhiLdmbRJ0RR3C6fnE5f8xm6AAP7+VdBNDnj/vKppmyPzYp6Cafn0x6b7Eb1JBnPH0Dg3aprWMgUoRG6COVNywDZ9NZd+i1AaYfrR3h6oYoPtiLTWJKDj9kbUFt27ji+ppIlFxnlxf5T7yLrmJABeauNx6rBu01sYXrXq7nJtJk6ST1+6NbpHnl0ewElGFATD6Ks44FEhOGF8GBa74QWH5mYjv5G7FNA/jszv6BEPPsRe4fTzbypdv6eYRzMSWeJW7J36fNwTKA47R4BeZ3VOKzqHqqhr384gAXX+UlmweGXvFbKl3lyfkkyHNiPwyYlyeCMM6ITydtXMBDcdySlhGdV3oHN3Y27F11CQXFwBPJgCb/gAMkreB1r0AG0x3lwIspnBqKyAgPApll2fkxE/+fp347V+fVG0rmUymy248B2+oAAnsPgbAOmaLSIora0nkKUj9horOv1VsnyAs/PDI+7Z6pIIObECJERPYaVAajDZlBbCWtCh3ruKCDq0M/Y1H7VjCd+2kQxY5HookGjtSiQwAAuEOp2GEFwXwyAW8hyywT8yHBLITMhbKes86TplAZ/N0t4eTpt2pwXMEQNs2kAQ4lf8XjewZkqzqwEpqZIHtaIxg0mud2Hys8UGmhY+5oGVphx6+/U1y1vECRgjbAB3uwZtd5Q80/DCZ/2IsdvwsBXwn9OJEoRApzUGAp7jHNw+WSo1zG6mvgDx6lvuT8zbOTxrq0Jd+PmnIyn29NsXILVlpnde9uhCB9IbEXJSZPjViM1okL8jEO4SegaewCtOJcUiS0sVGqq2P1cjadOXJEBDWhrdHFORe6uuOA8qyjzOFM7HX7gLXM/o4LRindoKrRom3Wsk/YYul/b9cR+J47wPo8wiRthXh2uHwQ/+emCIgvBy7XiEoeVdzX3+zwIYlR6SjPCpr7sdkd+lINy8Ua5tp9gRNDToz9a4RJ/jeCe6D/FZijI/R9v2wiqOL/g7XhGSe2uqKE+cqcyOnrCdtLTeFRNXeF4x4oUl86PfwWlL4RMxdiCGmhZlut921H9oxJXNtnILmqqW/Ip06bmkMZB+gOAE8uBhC0GfikaE6cqBzpLIhadhpB50ql7pYaJix5xo6sGvfvE98cKhVBO3ehv57FCcAw1eulKk/b82xEjKl8PcO4wAewwWJhtQxyiZQ9ZlrnrFSgoFptdkVQFZD4VBqcRAFhS0O8LEKihEK2UWgKpJdtTwk6VKGvVVkIv30xJMS9v371X0tfhkdx8XKARND2k/7iXRjRo2Y+DNTFIS/XhaxRE5+X7GweWxvzcLbIipXHbSKcF2mvNKk7LvyvCbc0ka0vRspMNXrc7u69Q3BNSgSOwya/SwIUNz3yC0GD9xWJY0Xzb6Y1wndMQeEr+bi3ZHuuZ0QKmFLvDi/Ua3e5PKjZSPxBo4W/z2jVvgz8CL/nA06GRvyk1DnjSMyPhRxWmmtEqOqto1/t8X3laM+IR+S2vmGUu0hXjWhnXdBIj8igNO+pssXcqcGqG/kbevkXj5CtRwGbhv5wLNndGTbuvdRxvLzg6H3GU2jKRYdnYdfJC5euS8s1R0pE7NcOGZabHtYkfSdUXRFnRjpfcwlYRGFToMYSBKR43FkFIaR4lXX9pEW+NivKqosv/G07CEJK6YAhGVY2iAthWtgZnJBwc/TG7AbU9CbXbdciiLoqEZRUUAzUhGezqMxKlCVi9UzEh15uJCoAK8gSOs1GNlFURmvOK9CnxC3M6lftTXR1+H4ZutECldRGyhPQLfcrH7Dn7h0Whj6alGMtwJRnC6gxJuT4IhUEbhMK6FEKiYBfR0aFcgFtMLysx7A2WEnBITbqoOArdp0KcSyFrbQiLuRX0pQr7jvgI+qSDIZnCMSUlndVfwnb+iESnh5kxqoM2CipjnKBw3KOqQ2QhBtSqeUgTQhWjAJ5l8Q78n4ZIycUwP3rX7UK+//t7Tf20Znn+plDSDWX7IDs4K5x3HRsJoBvWcFVwPvXnBYBvhsh2+53aeLwOdcm7kZP/LlwZghrXSoDJeaOIs13H10trMrw0caxhC+9IRzgKIPTIM1v3mcsZ3N6KhiPzQotczw743tnhMNX7/XkAW4pAxzUbWADSZatfPb7D65ti6FiTs/S+SC+TSacK30tbiSZTn6siw4kzukIQJ8+t9rbvOuSte6uvr+bFfV3h2Zi8G4pMIkuxJ7aDNlaYc9LbGToLUIAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4BA3AXSR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4E3QCNWY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pro.tokenpocket/image.js\nvar image = \"data:image/webp;base64,UklGRooDAABXRUJQVlA4IH4DAABwFwCdASqAAIAAPm00lEckIyIhLRToOIANiWIA1fHevo/uP5Jfir8pVS/o38Q/MvF8n46y/033Y+971F+YB+ofST8wH7LesZ/Sf1m9zH+N9Q3+vdQX6CPS0/t9hDzFlvlVTvhi0+9muptPvZmulzmgSnkpKrhoXBH2FOXs2aVkcq4zHyqKnjKh4XJppCcmC4+1FmZLRQACAFvpUC3KbNmqG80031Sbns7vzqedKr6s5yuqMsnu1av+MzlPBMMabnJ17FAAAP7hw3/7ZHXIXIOM/+if9/ueVAAAAQvln5b8zbQxxwZoR/52W3DGDzkJ6nVWm/+1nip5NyBkKVbNVchZkgngytiP3oEepPawiIw6WuCLdiAr2P9P4Nb8l3jWpqimEjL9ArOk+vTy3S4Cw642DODPj2WL1UwO3X0sy0TI3EqVDeWVOG/7rsS5XL8p1D0MNtOBQIThok1UWKjNge/hOuceJCQU3hcXwy6g1diNmRA+OKIfL6KjsQ7P4cIjyAkNh0XYT0SEY5TIiyJzRWIiHjQH3RUCU/mC36vDg9lgLZcxc6RMBOQlCrk5KWZPImWJqncfV1F//K6P7Jr1CeAG/Qnk9OIMRsLHTEAgmA1N6eJNs/3wUL8mYT59hHq9mYNpk+Iqb0TkZaQRSxqiaQQ9My/yI30a98v+sMbvBR7fDqJOpGrDviXhXhhEtCml5F2Pp+r/c1b0CDPDREgo/hN34F09pRR9KqmDpa2gTDc87S/usm2FbV5jFGR7XremqgQOgcpo+cxImznVBJfPU20v9JpW3vhYKgEqZ5hc9okIWbj3k9vcrNRAkJfuaopRlmSfWxpmHueUH6j7VRxZxU4UpiQijYmH8f6pVch5x2aLobXwYpl6kVlzITEcFlrGZqZmiEpq4VGJudi6p56/IRfvTYDZ7XJlKcNtm5BhdefPqAHbU9lmdU358bwKpxKQmJzBg110ILRnTWUxDxbnZ2AqP6POHuJ3PvZEwsiWFH2rSc6xQlciFZwJyItWBLO104eYLjjBva/S0Puf2TqLK207jIxIPxwkxnHtT2kI21N9EvhyENDrrCvBEb3OKHZrAyAKvEh8LVYwLP5Z4N8cPtU1o8Qrg7oCIy4JYWbmbORJV/P/nPwxvhm1C8QPX74VFzGdbTHKXeur7wUWDGyDa2IYQ/fzQAEJ4flQAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4E3QCNWY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4KSYJONE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.dgg/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4KSYJONE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4MUDZ5WJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.bladewallet/image.js\nvar image = \"data:image/webp;base64,UklGRsYDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSCQAAAABJ9D/iAgYSICkCdkD80H0/6ADjOj/BPyan2DOKfMOwOI/wZxWUDggfAMAABAXAJ0BKoAAgAA+bTSYRyQjIqEqGAjogA2JaQAW0D5E6+v7FygPsXk13xv9G8XLwB2Dt5i5H/UO9G/jPQD6payZHr6Aegv6U9g8mbxLqDuI+iHcR5Iz74W/bUliDxLq+66YAJHeNLKEWUS+4ajujBNwLEU+062JaDYLTIk3DylmHWqKBzXNcTNvB6LJREpYsIr1w4vgnoDgiHBoZYo8qCXd5IBNGMTY+ETarl7eWiNV1curOwp/Dhvv5E+P4j6IdOAA/vxc0AA3s6AADrWvW5TzSOqFf6DQ+1WjaRIdIXTCcf+k7ct5c/x3bgir93noPXA3l0sPf5O78KWIqhh5+ZT7nKXdg4vadmB0Q2lxE/VJPLb2g68Yj1DHN9VkT13rpzcG563rUT9LGy41OlNK+UGJNM+jB1lYNkIoBybhKeRK45tRVWkl2mCrcAPLAxJwHVhAh1TDAxX17ZY4Wj/Rqes+ilugYhoy+NiFaA/Yt4ix5p7dydndwQcj1nWksCaLjrsp9jqE6XoO9HBgpYPTtoshFuTrZO+sqP2GSUCpvWJU3x7dX/wt484DIj5/zfi977XkHliRic+GVYuRaDHBnuUjiBITh73Sk2vL7mrtO3dDqXrPzbLvLGR3uYncmqyRR86HmtDzq4dXH/su8vep/NU65y5oZdadKaEVkV0ME34rLGe7jvf0boUEBfPepc7+/3WRH4xD33A7Qn3gCtAtYRWEA2YPdtSvja9be/ajJRd4bfijID8KlsytWKsS3TI/C01Z2f5d5rsK70GO552AJCqzec4nELGnBIl+8ZniH8LM6lKKRH/UYajIG6NV9WMuCBR9wxmiBT8NcHqElLxE+spn/+tMYceJ9XmlXoWEhuTA/lgt5wa2Nh7Pq3F7yt2JHBMx9/0xpheMAYjkpbzEyi/XyXGufYHpnMw4PIddVu2Qk8T7n+l/icK9HnKed6icmFokiNxwHksTJFnmv4/s/5Fw+Oc5qS/yNU9udR6vVN332tHer1ZxHh7zNmm+LCa/aTB7WRUaY+Uoy7tnZqnDwfGxstG+blLL1EUTV+VnA0l9RH7BzdDaDVwZJGUvP59dcY2RvI6q7xGpGLfuL0/afdhTtXoF7xaIouMtPXnumkU32FDL8dhjzBIjpucCL7Xv75llSzPSWgQu/j3gRv05nyTjnyhhp9JyfwAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4MUDZ5WJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4NVIL47X.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tangem/image.js\nvar image = \"data:image/webp;base64,UklGRlYBAABXRUJQVlA4IEoBAAAwDgCdASqAAIAAPm00kEYkI6GhLR2I2IANiWkA1cCrXkktNnqNoVEawpBOdB/wxd0sR0R6oAup87BQpyu9tnETI+98KRc1eqMGNO8rKQYIGXVKNU4X6T4NkMWBxIscSNU4OpLRS2GZmfVji79G4RvGxs5x/Ed01/chwAD++5QABabY9f0cqrNHQPirffW1j3yoe4lWOr+zchwf7TyxI2HYysxvLUISLpmeUGTRLSJ/M3D8jh2paFc+lgi9utZQEVKXw6mKGoGvYsH94L1e+sFuKFQDiA4/7t/bUYRc+EVvzm55Wkbb8fv9iLx/5iutWYn61tk/oJD/4bhQStzXTl6wXbTp4qqE74jx0Oqp6Jk0yC9CM/rQDhKVHavXAbsivd4kpQE2fN57FsZPPylfzxaA9t7K6xuSAD4DfUYDO/cH5XLDwAC8ENAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4NVIL47X.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4R5252N7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/world.dosi.vault/image.js\nvar image = \"data:image/webp;base64,UklGRqYFAABXRUJQVlA4IJoFAABQHgCdASqAAIAAPm0ylkgkIqIhJZRqkIANiWIA11nRPE/x3J69lPRnUnM3+4+6P6CehnzAP0y/w3UA8x37M/oB7Rf/A/yvYAf0D/F9cn6DnSgftn+0nsu6seyH/GeG/ji97n53lzzs8D9rn/Ab4ZxX+l8UenaxxejNooOsrKMkO7+xDP5YFwWFStT8qh5UXKb4IMdyZWFNqNMwfle81GnCAYxEeD0hONtP1sp414gi2DdsfyLqzoJRdkJJDIcyCkvRscpY5rIjrGDJEVMWocTqQU0PBCci10kb/5owHi/5ldExq8Bd/RFEk3AH183y6awT+Ga4dsd3qjIYAAD+/XZwBUOp19l07VE5SvIbiGrIcGBgAsl8RSX+CdVWF9iyvez2d2Nu9LbT8P8Wu+cvq5cyrH38qE39ZR6KfhwBXjXy09yCOz17of+WyP5DMkhJzoxkGqzUuwrBxcRPuhfT2kqktvIqEx+e0Z1L0Hf/K5ddgaALCulZyYOTEPgwOPEhIm+WpqoPyvVE4Vx9gzdHYQHaEztr76Hq7BMiL+YQzQtPiIyHz8leCpnUZVkwiZtCkIq2xC/fphSxXKr4MXyZaVZnl3agvUYNAlZ7xbPX2tg6bsnmHDLivmT+9HKRyAVf6a3lMOEXTl7bNLM2Iy8S61ULY5SgxG2JmF93u66QKsdzuguKCU6BW+lTvh+znnsvKTS8JoKxBL1Slk11Z7jmoHEZShjBJu6RWrc+KQMNt16VHUjPtUZVDDn0/zGPkIuBK/Ct9UnWiYbcp4z++ynqv8nQ86N127UtSjttEGWzifk3+HSuSyQeD0BLYgj0ijuWGMV0Nh/QVx/49U+MNMOGmaqF4Ff77KerPeG+YEsbBRJYUARhin+uIEmHMU6xKOACDZLdEhGXnWGkglAJhi3pu45AsSG1ueFG8VRr7pnIe85DdFVV76+H5wDpU032M8+J6eduF66Aiy4Appu6Mcv3VcJkyLg53o6iGL3pzucE38gvbbPZDZzEf7FWKHqJSvSwmtve66sSBXUhNeKGjP+bx3cCHZNR4n/+gTlO8AAA3HSh8k9SYiXumn1u/5Px+1sh0D9yYQSZ8phvtICMB3ARO/53SePV2avZ7oJoVXGI+z4L/W9jsakRbDPKD1xpw4vr5aOC39tTB2pNfqe+KyM3anhfu5W/+DKNHbskusygJiJwNxo8PULNOY9x3DjXGSn6zF/uWgRIKRYIxWe8XUKYqT07OTsIposzJJD/37oPixBJz5X14dQvGDtDFJHwLRUReHEyCTyLUO+B4vjugpBeToKsiTc4n7LAtAIzXN0Fu8lT/uwv/pyJnaGWSAH+Zxtqb4NGvBTRfDM7HR+/oNgYf3fNzJGK7BkE9M7OC++iTMiDIr1CHsaZTg7/c3ILPylntw2zphlBpndOzqdK79txUJmcRFf+rYA1qYNJM/q5QCuBL83DR1DCAo7nqPJcXhnAK1ZeGglbQGI5wVbmkMJeZuRfNEzD159rjhXqXEO0shy1bVNTZeh3fW+mgQ+lXCjlWJ3+pTTbqvNjDrzlZ7PGfDxnrla+qr3mo+sJ60A/j2ZhLSw+8AYl19NS0VpXQ798AyJY4ekwSoDBQx2GhBg8JKN/8Rg2DRrAXv2WAOeMHjPdbvR/ZtFWJv0er6Y6V6kq+N1a4hxkf5HlP4yyMmoRGAgECKU5aucFagfglvEYy5y3Knk2mwyKG7vFFHdGH9jrYLlkN74jfTN2qr/43gp6AG0Rl/IOTJeuq+g9tmzGm7XNedSwrfKsYTzbXRUlVrcQ9WMoBRc2hliCnYW/6cndVkLZ0iNLTcgQMm6bCF95zZ1IKnnWuNhDhM7sAceyczILJICIH20w15V+3ALrikL7Io7i0p1FG8y1K1ZJ9p2QLGO9p0Iggi5AAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4R5252N7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4TRY3NEW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.blockchain/image.js\nvar image = \"data:image/webp;base64,UklGRm4EAABXRUJQVlA4IGIEAAAwGwCdASqAAIAAPm0yk0akIyGhLhdpGIANiWIIcAGVha7901mzr/5Xc6zupHm3487zw/9g5w/mC/o1+sXWA8wvnO/wD1jf9X1GP9N1G/oV+XR7LPkVxZCmv0T9kcsqKByQVeTeHDGLAtomDurwUXGwtEdS/2CPImwrRbUe31Jjc7DK/7O7a3QiadMqRRHP+tuKwqUvcqv1LncKfLzOf/2QO6rnzo08Pe10bUvKVmwMjrd194SBB++TmuSXShV9Ne84W06QKJiRz4pnaE7GPkkhQ7O5P8Z13WIXf9VIJpZCE3HAAP7VkANV7xctMEQAnDlSz7/B8z8hSmIwFgX9bBj4zFF9DPQmpECBGkAJd/PTaXFElFB3nmXYvD4KF0sijEwyrhZfiHKLozVslL7qeJI2zZdn2HhJ7fqWFkcIBymtLg1cTk4jr9+NNFirTi1F0L646bS4F15Pm9fWiIo0LdnxkC9gL7YRM5MQ7tpegL6owK5/LYKlM7X8hBF5G+OHJoDR5BJ1CdA8XgDT725Hpn98G/QwFE3SH982nKrWRrKp/zrGH2EQixxfvdny4RbGJbPyCaxhljNsZhQP6W6mAiJIVxNy8drPIQjKvP2FjAMTh9g7uSRVcE7TihAR9mvicDmsH+KEFjV+aNcPl3rnfziJiSlDFAYlzcFcD3CtVnEnd2Bq9SopsjOfQNrVk9nV/AFUue78Z0x3diF957z/2FrA21p9uoCYcl5p/FV7a+zFfbBtsjQLg0O9991o92+Wpvp5rspvgQdIwt1yxZfsN7lsylSCqTWpJ09uLS1ZIW/UXQO+EoCbRIvmVZA6VPze1K2jAWfAojjj4QLx28Px8dPOqwbs5t7T9omT6LScsIWoWmx3FKe0z8S2RgHggxQhsl04OVHcOlPS5CUSh3XLKIkOlVGbWkQsmL4ETANqsrcl52zlnXXnFwgdNewN4ypSY3z9UJvcffSnIpq2ZxsNiu9qivgJlf98Q+aKFRNcqgdudT3GGzU92RkUrhtw/1KjZFvNpV5emvv+I+BS2Y56QmbTNkn07wmRU7BO3zoAk98vxYfoDAfiMJG6V/9l4h7k+XDhzpqsscGntnlO6MWYMr9zK3k7zu1qn8k0pQmq4T+XARu3nlUBHeXKXQnujBwkv9NzJl0MjoV90rA9TPRENoRZaBr1w23YBezhcKKjuP+5Q7vlg6YOYiSym478FTLHJGZFuGd+6VoeduSevtNhNQK6Aodc5uEkKmlmCJjPz02h1evLeNrqnBlcM02poL73mfj4x1+Kvkh3GG/mJbVtisCWXsdZcpbMriEKZUVmOKAAAYVYK/7s4HcSSUh+hOCaNSRmMn91LSzL5NU+wHNdFrSXn32TG92ssvMPJfYHf8YKg/nbBOdMno5AgFBzfnJp+lq8UpDkecYGNEG+BZhTVPPy/CPnvJrOWVlyuXWVACe36cgilTAYc+QbeT8MGnAzBaHLEQ6Qn/pt43EgA2Z7AAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4TRY3NEW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4UXLJEY6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pro.fintoken/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4UXLJEY6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4XAPYK5Y.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.stickey/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4XAPYK5Y.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-4ZXADMKV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/land.liker/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-4ZXADMKV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-52SKIAAZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.oxalus/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-52SKIAAZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-53R3T2KM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.mrhb/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-53R3T2KM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-5B72RBCK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.opz/image.js\nvar image = \"data:image/webp;base64,UklGRgwDAABXRUJQVlA4IAADAABQFwCdASqAAIAAPm02lEckIyIhKpkoYIANiUAa6gcKK2aT1z8J746XftSnFeYB+jf6kdarzF+er0gHSzdCv6tv65ft97EGdIxzTsBVXCgJEi/afZVdd+uLyZFbJKTLq9XtoV1EIaQvb/LQaH5NayPWRQsNl6aIW2CzPe5ei5lWrZYFGyVgqhOlX/LN09I5mcltGs7X7huNBUZicsbm2inzRolSwqmM12X/kY3u2x3IQg+MZtgI+Uevqtx3ZFZe0+1Cu8AA/vvPwAEEmF6kfaj/X7P5P4LC17DZ2wBshn8F2yp5LPO/B53gOFdAiWePcRZePBoEzySk+Y9N9rCpTGB4H9f7wSjxUv4goo7sSK7x9Zn4aDdAYpFoEOb2xxrufTufwEZmEQzrCNWpA6KdE5ZFOh67/jfiCYZptBbvZ8rED5QqOccTHL2NZWPCj2UcQRsBZi2f63GfmYMPC/yDN2h1n82egdKdsO0eLDUNXszE6ItrUWvrtdj79H7fU0Vx5aZPNkvIWyQNtFWfN4Iz5f1bI26O6XWaLSUgOInSJxjLV3MfqX4pgYw6AZMNg2mXH/JBCs55+a6sHRRDwuJvDRAEme7LzOBwI4BKtjRq4FmxYI3+JaAk+ilEPBx7NP1MQSpnOwUyh0817zOuk+rl66TePaYsvCGo84QyOYfuPC/3sqwLWIEenenL0e0Zdkg29Fsh1zmaDGpCmnVGWOBJAUkcxvW8e4XM9kRaK1TznZzofUobYRFQmuk3qtQ9F+PDilH9Exq+7oOaYb8V8R0EDhixLx7VQLSqzmUukfc2JPRPclhjZ1QI49vl7ma3zJu74iQC1t4BP3iapNMW08BIHGeQV63dv0W8aoqEI5pwSgsxHSI3uii6v1Hm9+Ig9uCkzzuleKBirnPL9FfWcfzPa8Jo8HeYWZvo2ognmHyJ3Pl7/fu9D/Q6gBVl4DhOW1s6jBdxkG+TlEibN4DuDYWl5ACwrD0d7wlkp9JQ1A8Y42qVR42WzUhc4FhdkiBp4AAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-5B72RBCK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-5C7T5MCW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/so.onekey.app.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-5C7T5MCW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-5DMCMTIS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.alpha-u.wallet.web/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-5DMCMTIS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-5EEVHG37.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.cryptokara/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-5EEVHG37.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-5ESOAIQD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.icewal/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-5ESOAIQD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-5KGJZFSW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.kryptogo/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-5KGJZFSW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-5N5BSRVW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.roninchain.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRk4EAABXRUJQVlA4IEIEAADQGACdASqAAIAAPm0ylkekIqIqqhGp0VANiUL0AwCKABfIq7ou+w/HLpLene+Vt19IX+Q/sG9i8ymPfLIJFASwwYkCh/prCjNPfaEaS9adH8sLtFo7KNVf/15Z9N7Xdr4tdGnOwCevvctEWDrj19sADaABkqXUbsGIG8h7cqdmxUty5ROOFVL+a5/jYqIEZpx8kAl2/hDFtvvL2ICJiA97E2pmF57gPu4Vji374vvZq8bUGxdrvn/2ROh1E8O6zZMoJ8m7foxWrOmsr09a2AAA/uv/FZZ0+xxHV/+wd/Leb9KxCQ//NgNx4BUzjeQnZ+QnErwkegTJ/tbKUKKTpN/9wqwvzBEzoinWG4S067S6EnKqOMVH4qnKvA+nnHOuyLmGHQ7STBbgAvaKipcD3vXwFrIS/eX8RbsLa44R08UtP7++Ra7U9r8tEkUnryADx3eyTu872s8bfkIgtTZxibl9NJ/Yn/SM9rbBcLN3fGODj0v5Z+VhjEdjxBB+GVlKZj5ONacOjLx/jCbZWuk56MvwEYb4kl1TC9nRvb6adqMCYzt2bh3u4XAaxn4R451YuoGtBap0/0tcRQYsITsY9xoHfxUdRwqxUOhcLDJjELJDVxo6i0xNOeS15pRVEPeprYmsLdrV4kiCDZxyrXNdbEZGSpy5thbtres4f2li19Nq0VMwE8SOxtFaNs0RKn/BLkuCe3mIqY2yWV23V+0sPt8rCpImqcCZxhxgIxon9URwuKNn2Qx1ObS+yekPzB8LKaqXJLAkrGGdRLhzE+XgUR/EW3Z5eifuMwrWX7ncurrRFA5LVhGo52b1v4ZtO/z9yFLNDt7l31s4akkfhowEExM+a/9+Z7+vTdG7fSiQYM/mvQlUyv60OfwaiD+kHwX9rJ3J1DGjCNNdTkWeWLymysHfjsOcBDrshfwo17yOSZGMzQssEULvQzRuUDgQFij23gkiN/Ettgr3vlF5KR4Q+YdOZG9DB4Z8zqFOq02OuBJS4OheZlUFon71wKjHkuRIGKY7yps3RWT+McUNCB6UG+y4H/Nc5jBUOMUZRN9NpkjGpypQ+sCyKPqtpWCj7/4BDwzTxKfAcypizTb7SO6a/1/t2DU76QluE7BxSPv2kuocm2qnQfDwDt02PvnbujUNcb9rPsSu3ihZ0H4jV8Aopvmk2/Ybp+tCaJhLkMrH3vDIb82pDwEY0Qvj6f38hOFMaJ1iLw10cAtQcx9RsEvbMDYDkMtycNGiBb6stFI+vR4RnacHOZKq7i/3/yeSMHXyJYNlT5t5OpAQFRlh8cp5dANeh7wFT7UMLo85OyjLX0zDzxKfTaZRcACfMLSht8n3KmDux+Hvauy2lJKZNdTajukWz2z32P5TNvo+AFj+x/YPV2rccSb+fizTn1n0AvQ3JVhnn67INGy3w3UUpkk+IqkpzEXUh9jlMNTUCStiuovINYAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-5N5BSRVW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-5QOWOT7K.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.abs/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-5QOWOT7K.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-5ZJILWQW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/tech.defiantapp/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-5ZJILWQW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-63JBKI3J.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.swopme/image.js\nvar image = \"data:image/webp;base64,UklGRloDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSEEBAAABgGNr29LoO7Rwosgi2ERcmGxjKCOLgIpkB+wlUFMltWvpLsQ9bzsTERNAD3oyRas92x++tTtvl42Mh54vhQqmXRuu3e+1GdYsMx8Sn8SnS9UDxooR55/AyPrggLOry8wjnOIcsDoKd59HnR/QzlXPPd7sAXHWe4v9PWBW2WuMMgc1V5grsnNA7cgXvHbArfFEFO8CG6SJROOAvCRRqAKtGvIUDtgLPyY407DA2eUauHp7CG4034Bbuwfw7uHf///+/wO866KbrcFtOiNwQ7sOrla0wVkZE5zpLYArUKgKrRIiqQTNEInSA2DdOBHxGjCNJyKSHViOTJeMMgc1V5grxKqgVJZuenOQcl6606PO4cxVD93NKQ4YR+HoQUbWu0AGuszQ40LcqIColtI8PVcM5U2rNty4X8tdD2u2WQhJdC8AVlA4IPIBAAAQDgCdASqAAIAAPm02mkikI6KhJBn4KIANiWlu4XSRYuXsHgAauZ8Z+RGfD3gi5n7ILplhR8wb6ODkCQEgJASAkBICQEflLjOq6e3F4h9kOiZ6OENnAKvqOr8+aoGt7e/wtAKPPYG4GtK6lSGl2brnpMOJASAkBGAAAP7/kwgBp+wKefewLJXKjccgmTUU9ZNfaNzuNGYGvoAxNY4C9wTjP+iTI7tdXP0Azb2dCYc66SF4BKoobr4gdGMVnkDf48GwmGsad7z5mLAQlM5oUq9/6bLeH6JC/xVAFJ7H7T04lrlD9VOt81xmN8+jUTpYC2v0TYExp7GJkIZeHn+x1/E7F5GsMxD6RfBn6KiFRoZGgZDkd6zWNtZfBZ6VuP7jwqeXyEGvwxKbIP+Dzs7WJf8NGHX6m9xyv8cuN6pypgIE8Ygb/0x6ZEuAvtjnRDJjcHR/JhFMsfglgH/IQMOdo+5Y49HhxJcuf0n3X9zn3KJ/MK/a/VC+gRehSSs2/hb5m7Wi5Pn/Me1SQSNWn3oVe7JFC2TDwBpdTDOQxmD5BaeZuWDUiMLwSuwoQcmK2Lsy8sLspktYSa1zS1nbHGpD/KZRUL7tVHzFgLc4SCwpCo/icj++SPtLRdNbOv3QDTYnvdB9dLtRIkWEO77ON2zhFgAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-63JBKI3J.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-64EL5CZZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitcoin/image.js\nvar image = \"data:image/webp;base64,UklGRkgEAABXRUJQVlA4IDwEAACQGgCdASqAAIAAPm0wk0WkIyGYC0UAQAbEoIcAGQjellPbgNIvjuEcJ20Ist2szJIfHJoWd+ESBS9/6IRVIbnoNAhC7AC9/s6y5jD9BbCLwNGXE9rIcauADyvld1pZ/fvlGiEE0VUI8lmLS3aJYvZqd4VhsLFK5375ZwTbPt1il8eQB9j/nM5xP3zkTShDmcFBO13P0IrsiskH9WmSD/zmamvFGY6kNVq7IEmGfvbqC8/d257ffPk2os7uYmXARPISuCfn7zdLYVpUxOhNHY9P9mJZNmmDMMB19EKpUAD+yxWxJ+k2IqYFI4KhBpchGgLBcIhyeCXvYuECenxmEt17wvTV0Z0WzWHhxNS6mAE1wuWwzwkah3zxVGsPHrRvT4iQ3z06dX+Z9Du6QDoy+TznU82wgPm/I5aJxKCjoLcOnMXL17fZ+YCOmtYRQWDSvR/bOGZKzBYUNFO8txiGTHEvmUecyClVZh7jYGf6y1/mxDR8quMGMA1xYpq/RvVlJTbCCDrLjPe/zibfe5RW7vAUhn0g5vraWq58C0BefSO8r9zAdgNPhL7yFE6zkRL8zlm/Uq5abehTJdN3JhClWbHkSICL4mtkjl2tzsjrNej7WWLoDY2fw4UEKRhFSnT9k1ORa4QqHDTjsAqUszyXLTLtiFTorPsghDHaluBAZHKRz7DgXerworYyQJ10A4/ucA/ez2HYe4+4DqkC1G+8loKbqZqRG9YMZXxhUlUIdY4gaNGjAqTkGr3HIv1PaGA9b5a4s2sYx6BeJcijIUqvIyOJyLsazPSx2vKeKLMjgwcliG7ah7g8pR9VrqrhsQl15JT8FsSnH/9U5H9tf5NbPPSx7nbEcjJoA3FpX+x7I4d7z6lMW9D3Wl2t4caQNvKNiTW47zx5uJMx3EwUcsB6TSrRxEXyrnwzlVnYbi97l4StfZVBhPwRpl8hUfUIM71vlI0UKCAgVgDI6aUglPJLoW5sZyO0ldrz9eOxSrMuEn3zK/O2AFmjsJy+Rt3PpXfYjheCTr7MWMgIl37ZsW88+HE1fEJ2y6vdBKcP5XajpvdGt3wZY4X2iYbMy6h8upws2qsNdQzFWY4TIZj51rdkPSCLaEXfqKwOf4wUN0zpoFTrvSHZ2l7AQscvXFtBoS0nOX3NLJw9ZarlMoP907QHAz4x7mKOifWHqmGsZVJkcD/8wmO4C6T33Uuo20QjcK4PWtFoKhkGBXPm93204aD9sArdj6IQMhrYMDE+Ad5/Ng1CPd9GUvyWl+aLMTQdbjjofait2t4NMZYdahG8tXiAjUBXfwfsygi0k4w+mau9Ojtc1S0eERkkIGvDkNZeHPUri2A79ws6FzPcevbsrG2WpL47CFgV+B7CAvUoSScn08f+KRGjM6k7AzYf66Y2+uETbGgY09Xj9/8PKjNyWHtSuGlq7wD5WdJCkiEAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-64EL5CZZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-6GWDZO4B.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.gateweb3/image.js\nvar image = \"data:image/webp;base64,UklGRt4EAABXRUJQVlA4INIEAACQGgCdASqAAIAAPm0ylEYkIyIhL5Y4uIANiWIA1E41vu/ufGQ73+HeRPQt2Dzovux9wD9R+lB5gP2M/YD3i/xm92f+N9QD+cdQf6AHlxftV8L37lfst7V+qoeT+yL/HV3m+jK94D6SaaZ5T45kPPjnoSCf8avTGdmhEakweOVFi4fIRA8sS/lo1ajHMuJrU2Mn8oPILAJ0iZcYzbf0LWfkVX7l9w8cmX6117l0OFeC0DRBC6CzIkzO0ofFX5DfTlR6RSqy/0Dr0c4iQHjLkkVe7OUnQJ16nkZ06oDQgAD+/KgAAEJyexZi3l0UNFwG7OP8iShMeWuTeMXNzDbHHsjZIz+n4ecW2FQqwuQ90+4J/1P8J/Y6mgiYKQVPlWVwhwe+5qr6w8R2W+tZawRnaNmLCazoVqWDwQXTrUk34AJ6Op+/JCH1Zw+AUPd7X7OHueAQExsw2rmWMWY9/P3TPKo7lxLOEyptI1Vmq4eoijf3n+zGhS5g/WVTg6qlyx5fzOw1wFzZNJf4p8J4ni89dJwqX4i8xWuCZ2/S1Ejy//XLzXwMa6ATBYXourJ9yl0NOhGSYiuP3L2Wz/1fMsn1miPG0u1Ivm1tgMcNCI5G7k8hA/h2s7qg63RE+yH1wPjEZmG2e+T/CdBKmbpLe8KHMcIjRAp68r9Q8Ys8dvNiM1edtZtTsSBw374d1WN7q+f9LD+3/vbGUvxXXLz87FTmObXW4nmKqVoMx6/VMtf9tZHqSc3ilGW5C95OqjIi1ScvAZjTtRE6gFPWKrZxRDX5kKro5YSi1TWnS8jw4iSveGVgJ9De69u8wzfwnrQTk7Qda3AwdHidQjEc7rqWRRWudL7m3eOhbZN2JMnvuw7C3zierxZLc3UdKomRrMeMzdpszFqHVcX+ED8lddhmfC8WUVvmoShTtCfGgeiubiuUK/00mT6aF6yP7DNEoe6qOZACXI5LQzRMIBJ3UyUim9Af/85jzQy8Q6sj34YaQUZHB63/5EqNlgVkz8vXTYP4v+gmRdBnkooDazKx7AQ8QqBR8fDYHypqoulBqcFqSgQs4b9iPTF9yOJ29B2OjrBBLW3YKOOEaO0Ujyx+DvpqKH/8jKif2V5BaQA5jjcpAPb1eb4K1ihAu388ll1lNuwTyz3rUKy/RiSmEnreV2to1u+3bvfDO63bWdtAp0rovw2YVy6caufRr5oYq5WnkbT53oJWwHriBwJQlfdjwPYhk+MQ5XZe/Rt6n9SirRPqYtVjestvly6L4qRl+Zmu6grk3UqmDnlpuDfQ5liWuKChzF4NnaWul0Y8pV2vvT+Fqj+tIRSiXmNCBuiusT8bAbYfOEC81iW7Cj/wpXMPQ/o5PB67U0mnlWyYrEP1hgyQO0uyXiB5yVTHgshW3bjKUHde+r9e31xTqG6ceiZymMQoNgbs2PijwOPNFxdrpOOW2Z5c9iCrdyfEMFD3nW5dWM9c9IQwFVgnogaGJVX+rdbpu1uVzi2JgFBlu5i1zkv0TGCMXSO+rdzgtbeap4DL0U8cqqDz+y68QUxLQ77+bR8HT9rQDlZm0x/eQyCrETMI8ILoSkuJNH/MI49YGJ3M68dITG+Ui5LAVq08rZUk+ikVRaI9bQJF/ABpUobh2gLmGmp8m6AAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-6GWDZO4B.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-6HQIDK6K.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.gemwallet/image.js\nvar image = \"data:image/webp;base64,UklGRigDAABXRUJQVlA4IBwDAACwFQCdASqAAIAAPm00lkekIyIhKRjpCIANiUAatrXYBf4nl7ONO/XOHHphu+Jb0x/MV54HSAf1XqLd5R/cLCYn3LtDrSOEVxgEj5dSEWrhgxVrjdaAOOsxipg7QuQGM6WRJxXM09AvnmhtgWbn/oqWWTiY9WCrmShCaBvyu2BqqGhP7TiDakM2ag8eYjcyL0GIwRTslyVD1t6sisgPFaBPtnUpIbtC6Nlnr7aRbRl0Jqq8ny6KAAD+7nZ//sB//oD//QH3D//NdN7xxgAAAAQw0u9xFac0FYn8um6G1rXOc/pr3qbOkjbjOsJ4ms6FZSYLpdKIXcNukuBeVNX3dpS09N/1M1f4RQNOXCGbhiXy7mD3TyurumIGAvn+ji06B8Gr/RuPiamt9ZL20jnFtXrz70Sim2R//HbAX7/4yBZtZh8JF0yvFasZHUrOpUHqN1Ai8j7iWhREstHSij2+U1qrRkO+1SO1pa/jYFObCzhsf8V2NwpevZqeT5Q8jhOaVQ1wPiXjFT+YTsXLHzbsefjB1jZtzGQUSkx9MvthCEcENGyAK1rrvqg/a47ulXye8W/M2tQLFIcaLGaD+7F9lvdXYGG14dRVQqD/BPkySgY6AWbKkP3+GHDj+Ukz7wGDuqgIpmyXLaSohO647wne1teWIUPrl/WJC5Js8g+419BwQiLtyus5rTcVH+5iNeoUevlwpskiEzIjjQV7gxBxqRGdvfI7ogQtCvKzAKJ/hs8gEtLHvSuzMEfeMAho/TjPidtqAFHADFEPmnBv+Nx3y6ja5wuDT4C3BzdEz0gLA0oMikhv4334WJew/fzLsVgFL0DXg1htLCBEwbfZLAzvb21wqBBHDQoERSdm3cFIritpdO9OnZDDAkeT9L2u5JI7qPMMjpq/7pn1WfBUFoAiWg9OFhp3bFkOZuxtMwRjMNwXtGoQg9OdDg8OEyLSUNEVTBXc5C4/x785XMAC4kn4lh4cmpRIDZoerqpC1W0wmFyCKi2diKO4Vmbn9ha3Bslan79LhmPxOJi3qIyBXVqkoANWwCwiOuJXtgAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-6HQIDK6K.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-6MCAWLUJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pub.dg/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-6MCAWLUJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-6ORYMNNS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.fxwallet/image.js\nvar image = \"data:image/webp;base64,UklGRsAEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSEgAAAABT6CmkRQ4e9cfYOStMEBEBIKXv6KBUSRJiiwsKSEn/MczQAJQwmhuARvR/wlglaA3pW+s33kCLzvaRcv/68c72uXRir6xfgdWUDggUgQAABAaAJ0BKoAAgAA+bTKTRyQjIaEtExjYgA2JYgDVPgv+wfhnsY/SPxA/JLpVdm/AH5Ec2UiXs0/ceeb1J+YB+m3SI8wH6zfsX76voi9AD+lf73rDfQA8tz2T/3b9HrVXLrCnBzaQDWyPb8cz1G0IkViNfzckjv0kZLe1An9RymMZ+d/l/v0VE2wrFeSIrc+zUanE+6uhSiJ2RjdoJIizr/iMVLPJKkpi8MDoL80YI4LtPOTpkjaEp+5kHpjXzbiDR+Hw2Zs85DaVLM9xAcCOnlRHlU0XWrAJhgAA/tomMmjx5/HKYXxMtTPYAAO+OqfJden3oIXdag9ssu071+aEMHKj9tAi2VtaIMSP4o/VHeOjKzuIn3Z4g559cQ0Tnb+aIOJteXqqu2aUwRiHNptFjHbGFt9auowuaPhO2mYUY0VnBbxljtRDImC0PRdsHOwVhv3B2mGzQkyqdSg//Ub4GJ1JpXhxxjvSv7jUP/rlA9oJHjpLdxujm+NNbQR9bz9rP+gv8O/f1B1/EDulj5bFaUvjB+Aa2zf7hCjawukHix8KSd2i9CjXt6Pz5luYhdpv/1HaHV4xyq7Anl6Y9aBBrS5kYcX7WKs0NXx8O4Lzv+z1ugg/wl3RlsDpS3M8TXippOItL9Ujz9CNv1AdIC9ysOX6GHZyLxxpTt/4ODRcySCwWV+42fpYbMsh9olFkmm+sB9w/RWKSe6pyv9ahL7FePFJ2Wi+zjPUC0ne7OvIpin+iT7py0Fd3gUrlLqOjlq9SgGNXpYE52uHwvN3D5DuBMzDukq071Q8vy4Qz9BpK7sYUvqhOPLE3hZlCAcDTZsJ5d97DpuVAEncEUxGY3ftfd4HeOnjdbfHbV4tlh3K/1NPe6LzzecnBXL1pHwC/q0d3vhQxsqcJakUKK+NfbEXfRUOd6rYY7saguiQnXr4AOSrl8RJ2Gl82teqlslSXl7GaXN/3wh8n3GeYxCPHVapPraz8nEdh/Awa0MNaz3psjRrT17Tv5kATrbo87mqVXkVMB1yqteOiVxQn/Ajm0HvJp1kkWEZUiCar90FnOepVsnXQNyYV5yuYQXxFeZ4YcYH2WXQyxTsIUf+95jQM0GXVe4VIrlPXgNu8K3zlajpMCGv/3gam72J7P9yLODuzmAfOLoqAboFiEEMW73q/cShHn0ObMg28nSzv4IrKRDTJu2G0s1YBtrbW5hBXrkvmuro/RS5SnYYSJMSYll9Y6ACtmwj/Dt5cW8fVMmMpR7K32f/KUHF6Zm9WDOCi8GCE1TPXzYYnLaz1bt6mva+Vqy6TBEGtDyXvEJtkP/68UCE/+w4RDh9Rx19MjuwxqcUI2qqt9Sts37huQcb2f6bYUloQa452YiUiNH4guvRkgZCI6hLab8Q9H4hWhYf8QUpixBEtME5YLp93dIcQd9JLLhGtQBf/53+fGRC2xBAumMJd5bdY9nrP4dJh704rcHplkAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-6ORYMNNS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-6PJHCB7N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/digital.minerva/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-6PJHCB7N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-6UEQME7W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coinomi/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-6UEQME7W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-6V6UQQYW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.hippowallet/image.js\nvar image = \"data:image/webp;base64,UklGRvwHAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSNoDAAABoIDtnyFH+k9PsoNogrVt27Zt27Zt27Zt20acLGMnk1HX7qm6q+p/vnsiYgKAyyJT70URSjns2ug8gKS+WOfFF0OSqRICTs9rW9AJgYzVx5yLI0pHHB1S2UdsLrlbrPIl6r5c0CC7TlSSd5EB51OJ+vFHuhUwiUifvvrSYMLqm1nlvXVi0Rqzdb9kIyynnOiQwSAJQ3ItvziEsP9hdjGDJIZ0PS8lET4TT7bx4E9bYUWQw0F4tTvezi0hcZWx78UIi0x4llO/nehk4sW58VbfGBvh3xLzdG4pHvKMuRKaQkQZ/+FAZ2+2jI3XPA0nQrWGXJtahp38g/e/MxPxRj9a3y4dC+71517+QtSUZW4IkX0PjyolqWRqtuaFjagoy3wRQmKuzaqaRo1i8/2JugIghDwcmVW5KucIgwIgKRsKKVXpMcHyVD5lcj4haMrHTEroDjjwIEnzFZCa2wim4RXoDLcdqKTuodJWtRFcv+ahMc4jyCb2pXG/iI1lO03GYGzsNySKbOHYOF660kRgI/t6Y+fng53v/37zw87x2gO7RzqKzGHohWJjv6mhSPcGG+spoPS4jo1lB43rLmzMC2iMK7FJGkKjH49NQksa55bYRJWikYqZkQlMRwM+72VU7LedqJyP2FExbwO6aTZUYofSaZumovK1Gp0m+zdUXnnRgeaaHRHLYVByvhmRqDGK1I5HJLCcIu5vEbmqUwS2pKARuwCUbRGFhm9NhUzP0DijVwiWJSARORGUrhaMxIOSimlPOVCwrwXle35B4V0LFXwuo7DDQwUYHYHAp26gZvZLCOzJogqMiRbety6gbp4zTMgOnjZlUgn6hrHAdWgTUDvjXsEt8lYNmn8Q2vOKoL5xttD66xiAkhcEtjcXMNk6QlhfKgGbXnOENdzICBQ5L6iDmYFVqd4nIfmW1jAD+qEWAcV1BpZNG8RjX6hlCrLdEM5JL2C8nK9gHuUH5pt/FsrbWsBh3zCB+LcHLsdGCCOoL3A6IVIQIf2A29kxQgjuDRyPCRNAcHfgulcod29bAt+a1m85u1MLeNfWvsbV0XLAv1R6Bz+2ZQVBiDmnhXMSOiwjCNK9230uLrfUgThr7E1kLnJDWRBq5onPGbs72BNE2/BwGEOfdlYFAbuPepDESNy1PgYQc8Hl71IZSH45KxuIu8L2ELNKyX4rCoPYy6wPtciKOcxBi/KD+PPN/uCwK2K3vZyQHXD07nQ6gU6OPtDSDdCUDEVH3zD/poRLA/PqtICppPcoNfDop18I2tuniKtOA+hqjD75G09fP6l+Hi+DBrB2MqXz0MJfvFZQOCD8AwAAsBYAnQEqgACAAD5tMpRGpD+iIS2TmivwDYljEUAi0HyZkKb+z8zyWnLEsx4zbAeYDzpPSd/md853jvAbuolIgdmZYFvjflzx2CeFXcCm6yWhbi3NteApsSpXal/MWkRAnqcHzA87BWnl+70g5YvabalU5K/Kt5N7/OyUngJcANltExMecI5N7Qwva/Jhvhwe7hM+QKLR4FcCP+vwEcnVooHayLj0GFufEGcRaHOHlbuHV1/EAM5k3ZrGjt+gAAD++YX//3sj/+9Y///eWU4JH7+pfOqiM2cE+lqFBHH5/jE/S/mc2oZbuYw3D+qbPLZl+maWG8XHPk3vvUklCwJvJtZWwsBEHr1nAO6C6HmfXb2zOWUOdU+g6tiNnOc+6z5B4UNazN3yf79Z3Cb4/2IxwGWtuTlNnk3wmQpHNknSqorU7UJ9Ox28tHwb/9uK1wPPjhfWByL+wjGnYVKAzr5e63/vommujeA6gCrmT8WqrcVoCGhvwrJoAk8OBnMD0WhKKgfG8igUCKjqEgQJK5mlq0YOs0T1X/9VixvqC218YUjquazgLueRmcANLOnFdnHIA+KZWlxpzwAQWu5yoADgi8TXDv0HYyzPdZbYwxuanIZw0lhVyKhApDKcF+yH1yZpoYF6zVfFQSIkhXyjOvfXpVdIlej04el82qyN25va+zrglT4x7k4ywkNk15kJ+qhzIvBN1f/9Apv0Q88MVK9WG8QHx5+ebg20se6ioI4h2JAvJNIsKnNamP9cpuagAdoZxOUoHbQryNl3yTDZ6x7KKdz75fwqHatUHXEi7hf8/mV1UMHF2lbV0k1p73+CGvLgwUuxq3eAwDUgAh+zFPbICc+KFkuGmqWzXUwW+z8E+WAB1Wxu/iCCKlsGRU87uoA+KEmiS0Z4dAth8hkQ6KP7P1x0I4qzRovWZdRTqatwZ7KCWZo7cDBMjmNjhe80hgSeeISOjh04f39JBsqzt6dUd09r6nGSrVqKjMsXduqwQDB0Oji79TfVsb+4+/MUeM0cv/c0YR1K3shJJdWtfuQM+ENNVoM4kuBIxru4h4TbJVm2llZql9+zzOwPOJgHQ8gtAPraDdBc9YrPG1BbBZE36u88UPakq8ijn3jmKuCMfkgA/B1AVO+lcxCoA8Ym3KMXoknI2zh1SSZCX7yyZo//iI3xfbCtlJQTr/Bh8+3BUPkdORRIW0h/N4ujcAM0DamIWsZ3DqT2Jw1uwtu9yGgO3gsvlQWIf/+3ail50jrvY0/whk+/Gcrs74quk7f4Axp/jzv7B14/M5SKWOWeqZi+2VqM481oSomuwLB3Qb9ARmZmQvfm3lMXPjUkb4KZUmOqusgSku7TN/AqAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-6V6UQQYW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-6VDTM3JY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/one.metapro.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-6VDTM3JY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-6VK7QNZB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.novawallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-6VK7QNZB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-77YEUPFU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.trinity-tech/image.js\nvar image = \"data:image/webp;base64,UklGRg4CAABXRUJQVlA4IAICAAAwEACdASqAAIAAPm02lUckIyIhKhpoYIANiWMA1tfKfM4Edv9yX+ENyy6Jt3HegB0wGRBFERSWNp6Ezx5Pz/b4dL02JI3MVwDe2pftWA4SvgM85DOW/o4KCEshjZKrIbZ9y5e9eIc8/23vnRHZSrV+XwmyFDVBCfq5vwcRZO45f81io489gbmgvUAA/vz4QAQ84VRZ5AZwZSWBqGpwaNBtw+c8AdFMgu6Gd5EfHWu3p2/khqIv8G+KdCMD/gKLgykXBk2lXBu/+TlWp8CndSD1ltJ9v3A+wZuU8PxTnFsfC0DIucft12QTdvSWQBtT8CaDfjf+8dM4hI4X9G3Q/8nJihrXO3yISe8MSG1xPyWm9BDan58kvufGn7iUfRAgthdF5oV8q+tDJQtDdv9GNceoyjMpetWpNlVv8g1Z0GfoRZi3JNUc5mjRxJky/ak5A8AIidGBpSNbJag1lpbNUfiq+YcSN0JeU4ygtU0BjcPlBCRey5ev8OFfizUe2B+AA5h+PWhOTqpsPwauRd4wmM3UcWS/wDmIYVXNygEhzh7Zr0mn7BrBd9y8y4fTf/Rts5rTJ1qRQ9O/TYBZZJ/0gIpl0S1r6B65UmzD5E5jJ2E/+bylUxgQsCAdaXscHQMU8hlhuoJfZFTm8CSgpaqjR2r6pc2JWiqbo9JUSCjM3OQAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-77YEUPFU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7EORRWO4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.finoa/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7EORRWO4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7FZSFD63.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/adapter/image.js\nvar image = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyLjY2NjcgNC42NjY2N1YyLjY2NjY3QzEyLjY2NjcgMi40ODk4NiAxMi41OTY0IDIuMzIwMjkgMTIuNDcxNCAyLjE5NTI2QzEyLjM0NjQgMi4wNzAyNCAxMi4xNzY4IDIgMTIgMkgzLjMzMzMzQzIuOTc5NzEgMiAyLjY0MDU3IDIuMTQwNDggMi4zOTA1MiAyLjM5MDUyQzIuMTQwNDggMi42NDA1NyAyIDIuOTc5NzEgMiAzLjMzMzMzQzIgMy42ODY5NiAyLjE0MDQ4IDQuMDI2MDkgMi4zOTA1MiA0LjI3NjE0QzIuNjQwNTcgNC41MjYxOSAyLjk3OTcxIDQuNjY2NjcgMy4zMzMzMyA0LjY2NjY3SDEzLjMzMzNDMTMuNTEwMSA0LjY2NjY3IDEzLjY3OTcgNC43MzY5IDEzLjgwNDcgNC44NjE5M0MxMy45Mjk4IDQuOTg2OTUgMTQgNS4xNTY1MiAxNCA1LjMzMzMzVjhNMTQgOEgxMkMxMS42NDY0IDggMTEuMzA3MiA4LjE0MDQ4IDExLjA1NzIgOC4zOTA1MkMxMC44MDcxIDguNjQwNTcgMTAuNjY2NyA4Ljk3OTcxIDEwLjY2NjcgOS4zMzMzM0MxMC42NjY3IDkuNjg2OTYgMTAuODA3MSAxMC4wMjYxIDExLjA1NzIgMTAuMjc2MUMxMS4zMDcyIDEwLjUyNjIgMTEuNjQ2NCAxMC42NjY3IDEyIDEwLjY2NjdIMTRDMTQuMTc2OCAxMC42NjY3IDE0LjM0NjQgMTAuNTk2NCAxNC40NzE0IDEwLjQ3MTRDMTQuNTk2NCAxMC4zNDY0IDE0LjY2NjcgMTAuMTc2OCAxNC42NjY3IDEwVjguNjY2NjdDMTQuNjY2NyA4LjQ4OTg2IDE0LjU5NjQgOC4zMjAyOSAxNC40NzE0IDguMTk1MjZDMTQuMzQ2NCA4LjA3MDI0IDE0LjE3NjggOCAxNCA4WiIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTIgMy4zMzM1VjEyLjY2NjhDMiAxMy4wMjA1IDIuMTQwNDggMTMuMzU5NiAyLjM5MDUyIDEzLjYwOTZDMi42NDA1NyAxMy44NTk3IDIuOTc5NzEgMTQuMDAwMiAzLjMzMzMzIDE0LjAwMDJIMTMuMzMzM0MxMy41MTAxIDE0LjAwMDIgMTMuNjc5NyAxMy45Mjk5IDEzLjgwNDcgMTMuODA0OUMxMy45Mjk4IDEzLjY3OTkgMTQgMTMuNTEwMyAxNCAxMy4zMzM1VjEwLjY2NjgiIHN0cm9rZT0iIzMzODVGRiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7FZSFD63.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7KY4GSTR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.3swallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7KY4GSTR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7O3C362W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.rainbow/image.js\nvar image = \"data:image/webp;base64,UklGRngEAABXRUJQVlA4IGwEAABwGgCdASqAAIAAPm00lkakIyIhLZJo4IANiWIGepzpzWVWfAfkz7VNZfrX4XyZfpY5Ve135hP6ydPjxWfVv9GH999QD/D/47rUPQA8tr9qvh98odpITg6KC6MdEPqtq8njJn8YQd8fRyCBjuASoE7gh976be39QP7ZH1EaOy2byZB4+6S1n4J1we4tNWPChOPxxBzZfuYsStcWv/tZNqcra7FT/gy1QnCQAkdw+gUNhMn35RFANgSXPFVHZFoSr9YdNxlhwS/DtBxpj4Yf0Qnyn1ZNu6NIDryzzumAAP71vcpK//N3uTN6/gf/cz+Z/IGl2OP82F2AtGYx70dIV3TDkNq9sgAhCr9IZ0HUhT+7KUeLtkqR+dPCxztN0qMTy/gT7xoQBHTf3pua3S29wTkDmy3Fsy7Lv8PTVtL4d5DjJ3QgT6S/r/RoLpXt5ckfNBuBZ5cD7q6/rSBKVrfLYRlMs8/PW5KR4PMrlV9BNfv/g3x2mjvrkNijQUMjZBeGWL8cm5JtS7/EOF5P9ze4qe1yV5zVSVFt5e+//WL+UiuNvKd6qedKWsisJogbBMgFYrymDXtX7rwy5qpOIKODEdjYEY7CDAkYcvhN9cLylaFJnB822+x+hXMltuGJXS6vpf+DkoddD4V8niiWXvf82VYQvu2agUc4/+HDH9o+hv59V9FWrvk5fNJfTvIgUkH5vCcCwDwre/O/6ftorAm9en57f1mnje373z/a1W3UpDbn5rBQsFfxl2oiKvtNeyc7bILmYZ0iKT2BTOvUMn7M6ICDBaoJqcgXpIDC5rsq6F4u2TteFi4n6sLLvkP/xXiOM3lY5srmZ5aRj/SRoHWQrdrmc+rvWyTUo7cqAq8S3QsPW3gcF09Cnxop1LydqPo8SIb8zKgJqFj+KuMY/BYxfntOPlxAD7Ehx/4fZ/cJtjDj8ZqAeuK4Ps7U3zMMVMXw9cIZE47iuLzaTpJl3avReDg2QmWLRYq3AOdhgvdD5H1IpkqcQMOWiDXt46xdgLbVT2Ae1AcmlYrb6xUGrmGgk2lIehc/Df+MRJdAHc+BmnyfR8P7gx7IJg6R0let/R14Na6KeMthUP59RT9SSo5n3YPARM1Z9nLfjDfDy16iRq10Y+2eaNT9Q1xbOf5+PULDFrojM5ABxLaZHFIu+UTUDacGy/DG/N1tqlJ7ePfOaI4pDt/QZhAb6PIVCPIJIXWgbQ/e0VK+9d2AS18H+V/KcyKz5VciEYdk+H1uB3uzeGMdIhKpR5J2JV+e1urFlNpACGuluMWUwzj6n2L72/fz5uXqrfjel5EhkCXHn77cHXY6Kfl9v28YvKSj5f3vzY+wbv8YHop9bGvu/rhBK18Ooq5RW2Kb7s3/xi+57dh2WcBpctxH2kG+9RoszJAlD07LaWub1vw6EYYsSHALEv0cUo8x53lVOWtxIr+fwYX5Jtnv8LYqeN7cAlkl/gWNhn5kus3rg0Wm7rKPongcsUaxaHrkLbdxjqEA9mX4C/AA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7O3C362W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7OU6UVPL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.shido/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7OU6UVPL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7Q42EE45.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.arculus/image.js\nvar image = \"data:image/webp;base64,UklGRrYCAABXRUJQVlA4IKoCAAAQEQCdASqAAIAAPm02l0ikIqIhIpM6KIANiWkAFthtGft/Q/pG/w3zAc98q7ghcFuhh6kF+QZtw+2ZmYuC3GIh4A3MOtm39THPcKXoZlbEwTF9CmY38qCpEWdKpKwox5/qmDqs6NI0OAVUMsJ2wpqQR/yAaKY/oOn10YoUxvm3cjsu/iO8/2ssp25xqqqyEf3gAP77eQGjrJu2YAyk0n9fOObA1LmQQv6wekaAoTWTXOuOzAGSeo1Oxu7cx4dizPLg5lqDH1M/RNOxHhcaG1/Dh/maFR+FmN+dl9yL5/wwyv8WXlxxzk09DVWyCJUS/+GqP7t/5UyuYDljhAauWHCPNTagZFzHTgFBFg2y3TwZ5A8YM+OtJjLkowL6Sdj+NcDnKjYgO0lPT/MZ/y1D6Q203xXD7JBy93GnhdElP1E4eed8WtgnnIuUIj1x28org5TIxRB0PFTaqD5ln2EKLgYVr73FHZbB+7rFFOKbIavHXIgk2djzt7TliVCnzhyeoe4coZFIIKiW0seyCBoef8KbTIVlO8Yj9p55NesJi+v8OQvXXS4nvFNqSfl/TUYl1isyZXvjMwZF6TPBXY+u/g5pAR4HTz2OXvOLlXfSokW3gf8W/OOpEhlGH9cE7OSu2lgvbN6K3FfC5zGqPZtyNaqnHq1yKCEMklhph8keFMs+YzJubnbhyr7Orot6J8ovV6FMcyDykJV+SWhRb2wnahHDi6v3HnVheexc11R2jOXi+pX3rns5iY64prGB7X4tZfc3g9OVEP7+fKpb5Tg7BBwIGB/AK2yWFTzUutFEd96tL/hJhpaDaI44fP/pY51BfSPFnlRcU+xG/d7H6ETqT6QD1qkELj9QkB7mA+HAG3bZP3NQ6l2i96cvzj5wyYpchf2ueay2xgAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7Q42EE45.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7SUEPBLK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ballet/image.js\nvar image = \"data:image/webp;base64,UklGRtoIAABXRUJQVlA4IM4IAACQJwCdASqAAIAAPm0wk0akIyGhKBMN0IANiWkAFtD+Lv7f2b/1/8qeuA8je3vImeb+2H5D+3/uV7Ad6fxq1AvxH+bf5H8u/zA40wAH1Z/03gG6keQBwGFADyYv6j/5f6jz4/T//n/znwGfzn+5f831yvZT+5ns0JSaoxxm5STSi2e+1iNn5Rk386v/AXB4A3o3tPyW86Ro4Xed6zMPCV9iwTIY9a/0rfTN9f0SE9aSxZnKWjJyPO/JihKp9j4RLXsMdoooX2pAB/X9rCfCTEcShGz07vegU7qJHBDDFAX/u4ZoEpsZB4u/ygo5WKVh5fhm+GxPd31kx4vULlngDHmWjO/yt9guyQRaSRVlFmif2pGKZy/We8QFsBiDAw5eCGxnilcMbuCvxs94P19jf7n0rD/Mz0TBpILMebCoHZO0/YRka3AAAP789Ba1K6c29A4oUWWu/2yrVeb6QkhVR9bZtDqtO4kmqdOGoshqcvHe20jluzR3LfggGA2CX77d3UF7W1qxP9ph6YXhkNcyv3z4gPwguhgCbdsDQUdcyDvgEDkUR9WuZZmswp93fDDW0MT9CEKQlyjFAAkHB5h6eTHk0/cKrtYenX/Vca0o7L/6dKX+HvqMtzOuJ8pg+8308WUv5LlHNTy7eAflilKGyvCzIHQjPKxGq6wXaZMopomqudB+sKYPDdj83a++fMrjYJhJGGa6cBqM6gvN/BFu4O6BP6k/mAEQfB3jjbTQiGkz2mzcM2cqVjQpC8MUN7Wbv7fQnwdDpxMbbLl73u8j7aD7+opoF7yuetaWUIe2Syobb+wTZwNzRoRv/0F5/Jjv9dTGogdzDFMzAFc1JaCJt3BFgKieqnxYkwn8Iv9QHABG/0DsZGrEd+2dn/nzTmSA1giUCn358SGDH68nVONQBaLDiNoN9/xwT8akTv6+Ack+Inzcfhq6ohX/qQiGW5mWlzzJ3X70+cR6Z1CCz4xruoSJgFNiNYT7w4CplqXKDqTwNV2fnI79Ikxk/JQf22eeUVChIGnawQzoSk/COc4Sli1zdLCQv1/0KJ/LIDCwCPH+HdCLLV7DS7d60rfWeX+KxsuhESTZzkhqEjs/1pRf0n/WvwWYv8EjvtBJD9/CqCwgA65LHpQYDewqMW1q9tqfRQOaj2+UQPixkPdqv3Hly9rBy71bq7GvNQUvxihmO3thcBXAw0ag+ryfr19T86KIAqToLdC9j9mkxKkZeFao1NHMZ1qfIOeLzwHSydvObrg+DpXl80MAQWjq+LlU04cWRHRCP7wv2xCGDVogRo+TLYfZ5YQzMYBybKNhWllfq509/AuPc+oSF9cEkZ+unlvG+7hh6G/T15uxuBslaROr0ECmOkhLWypU+u9dY5KyzG3A/N6yUt5fG34ag2/Gc2INQKQMKtx/0dxsWND0VA1U6kPdcJmP+dO0L26bZs74I9bRxjad3Nar6+bNmbuWkxESxLeyJ79VLd9GQOboOjE9I+C5M23qvePpXCXfrugHjQT/oTUZT7+Puqb+rHZXF0XehRN7TVVFh6vuRdosBXpn8fnDA7dyYdmJYlb9q7NftRFSfVfbso1zLMv3B0F/gh4CkiZ/wa/1ZZLn8med/FOb/qnxD8TwJF5AUXDxsvHvUTl5sULbJWkB8zzSMVtaD2dNhpJLNPOAgY4Jvy5gWkZB6OPhgQnRj7AuYd5bWyncftNUU14O9WKKv+LUljMdtcaDibA76hXw8/0sjeb3V00VtO3vzsTSciBeW++phxOB7+97Q+EK0CdWceiHYNZBt74TDzWroGnvDWEbq2wk3m3e8+Z5C5r0x5Ryv11w0db0vK8NEn0Xy6xgj7+2SPs8tmBbmR2oGhRT7uYs8Dej5gwhe7HNSjgYrFP6r2iRgsy0dMOhYTVfIYq4SL6/9kITYUvrTI0XgxvN4H6goIpVqzF7hY+i0eI0+gVdMS2fwM/URxSt4GCj+h0VXurOcX/+KAn+s2Af1aC+cosdaaD78Z/IFY9uFGa1az0UYpEKDO1Lxq2iI70DRWYV0xZhov3QZUplEjqkxHF3cpHLYlLpR42uyfwn886MGkHKwmayE/lfDorvF/37/WaFMHav4hOVu+JIdqDiZ2WqjGLM5+mAGnAyd3iyHS/MlYcLtQ1a3M1HxLybk+20P/B6wJJUMCFTXaSBckxwai3RtUChydifyiEqveMG1IDMviV2LHmD2VKeHC7D69UB1vwzlYEmAXIyGMFpB2ByZVAnFWA3SWwgMLkW1XlE233+jVCbRcjlyit6YL8k8nCgOFTxZHfsyWCSVZV/CW1jMCh26h3HhVBZAThGw5Xm3cCPV89Xshht6l5Cr8dK9fGdIXmFv3F9HsK1tgfRRwWy72FP0w3Xx97kuEc5AMHBWXsIt4Rt2Cp/hweJFFaiaGpHq3V7JDlZbPF7rYfRsPp+mSVBJsTXuZ1gf+Bg3MvalfQ7CzsZX4xwWeMjxpaCPCklX+o+b2RTSSsTiDsHUFFG1Qnm0MuIrjs36iJUO0LKsw5Thg+5+c4JVq6Pkb7hd24XmHvzkF44amaAK2LlUyylbofr7K9zvn9g/wtshGwQWXBT4JaU1NFUHv1LOaDYctuAxaoknEA5HUoIOr2HBvh2j5bzMCR+VpBnfWBgN7nMy8Jj8FfXX7gBUn79b8BjuaC9580RxiC+gse3IR4SNqer5ru1m+TyojrBK1Q9W9YBoJ0s1aSWU4V8pcSKaoth/sp7buUxnA5jirJQf38anUT4ifQNaEkvUz2GV5uxIK9k6pFKJjGMMtQGxKGuSMEiu9iQnueIzozkXdRmY3vX9wM2efywJckN0Faq/DHFcFcGUgHy5hijczpfwblL7MM+f1gcFmwMTQzu9FhSQP69xp/bICJKHEVU89GToOA8rVEFQXTwfZuBE0WidJ3yxk9R3TaHfWdh4i/CNPioYNGORR+TgPu5NpXvTs5t8l3d/CLETJGk+7R2xcIrMnQmX0EkqFtHdqeHQMYqw+iAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7SUEPBLK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7TE6IAEE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.okex.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRpABAABXRUJQVlA4IIQBAAAwDgCdASqAAIAAPm0ukkWkIqGYNABABsS0l9/SBVgAFjP+E5QAzCttSM0Qi44TMzH/cyrEv+NgTwIQex5WkBZoffpxWmkiEDB5TrucOM4n2XSp6GPoHWf7z9TDc+AE3+Qk1Dr5Khz5geUpQPspjzfpPqbYEjGZi3jsQAD+w0wMf+cqbv/42bhd8QJo0+A3JdJeKUgPb40f45lzvm+uTkUe8Gx7mZgPo//q3DApdgxrTJ/OF+5O8IqPEAKfllKneeT/GtrHU+8IMJ8QoMsbEJthGNh4emZAtn/2Hqn3UQA/1X48WT2ZFMkpEuWJL43Sop39CLLLjIJq9pkOvS4xd8FonvzBt2nHw86uDQbDTX4NIgbv2RP5mAnpBTtm7Lv/8gkNYDvIs9x9sLf/9rmIA5o1j0HudW3IVyBfE+p8V/rjKzhbDp5bE7nfNYwTiM55TT0PULoYsdOIUkGUWB06GqD4bqDZxwkOFUML0F0PBdURq7MGdgnZWtUq36i+VP1b4gAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7TE6IAEE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7TSPO7Y6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.dttd/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7TSPO7Y6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7U7UXPGY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.uptn.dapp-web/image.js\nvar image = \"data:image/webp;base64,UklGRigFAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSCEBAAABgFtbe9vmL3BYK2MEbED2OCAXoFehSmxAdmaPMTCA0gKoGZxd5WwrZ321ImICaPNWnE9uP6en/PN2ksdt2nVPJmZYPf+ctJ/namgSyXfSVKmbonSZam4ndD1FWmuxBfPtFK0N2CZeWEzxlqG3jkWPU8SPEVsTFFPMhb9K2ClqK5YaeopbN4hI1cBqRcSzKfKUk3TQnOz0p9iTCwPOXA7ADccluPL2CdzTxze47+nZ/2f/nwH78Q3u+/YJ3NO4BFfmQ3CD2IAz7QRcn6SD5iTxFFrGiVQNrFZE1NDAdIOISFhYVtBKvwBVBLSaRY+QHiO2hrywBFSEHm3IAgvH+ow2F7qGUmtBWzdV5mC4VDVpl1wmZlg9/5y0n+dqaBLZow0BAFZQOCDgAwAAcBkAnQEqgACAAD5tNJNHJCMhoSyT2QiADYlAGtw8P9u1trnX5D/kB1JnAJjF2A8t3aa/Jf+q9RT+19QDzAfrX+2nvx+hj/meoB/hv8z1gHoS+WX+ufwX/tj+6HtH///OWn0Eeg3hYqLGY3Z1SyczDRrMidoRffux+3JxtJneJIhvz0kVVe9PQhmyZfAYPm3pZpFjqwmIhZX56BdnNSArCfUD5eIASFfXDefZTP6Xb6xf1eTLwMqRPw6s3wNgGT2F8LXgo4y9jQP3F8MceZnLgBaX9AAA/u0czG63Dzfha+BMq0muTVj4FnNlVJWF1vuqwAAAwI2fnGGaqH4vtk5vR4xTQA+l0WBfiTpXjmtd77IVZTbe55lr1PNwU83gkWrt8P5BZEZivdXDUlcyZe0mg/bggvaHjHYL4wfQMu7mLjiJnkEV55Kn/a0gcXsjTALRHWVKXAD/4Oc/ztrecGP+pMeByvlh+bZGeWtHS/yKwkkyATPB70jrsnOyeUpVt4IsRsrzDqsfKnlfY4IkOhnACJGZ4bdYKqXP9yPMOu1F7CphdNBtIbXojkkMeXK+4+E4n8fsP2oB9SXkay6Xa6SsBH/17+PSonaiFYFQsEXHAcXSa1i0AzMP7BdIQx45VCNrk+TNscesaE/ugT46X4ayeDjD3sfRWe1KxXVcWfQfy5I1/Qa6bY5aNESiD7z1fLteFMtkhqGH02MTzADHMBr0cawVeQVTvC79w+GE4vX1rnZGQquK+gC5+mIqe4wrYGxkukO+j/zM6nK/0YbXSCHzgkhzs7rqvJ0aHkyC6nmmnfmB1g6kc/xyCNOMTS0FPD1QbWhFnBN5bjuttr020Gr/6snG/igJw1c8WAwzQHXs98U43besMSPvdjTFzef750OVf/7P8TJ2dttIjfoY1oPZNefvTsybR2dXW9gD4IeyVfPrA9lsjhrj0K1ler5N1XXfge0Z1D8ajOp6rQ0LR+5myiOcQSGNAfuEykIf9RwjrlIeKZj8GOR6UE6+3oAwzaiCWovMGn8s++fMue5hARKk0ApciJAjd6D8zSkfQJ32N48JtZtRJ3nhXvqcbT7OxnKND23f9edNrdCJV+1K/HyNWs1D5Kd8Pq2lf4ad9rdSnIbACk63dF+x2a30bn2qWDuv+sDmrNen4oZp9KORqHFEVEY0ZrN44GH6vRZSiVxQqAblt+vwjNyEtm3KrJa+5uYAT8ZoTP3GTM+5/cSHSYVDTZD0FianfqQGf410VsvBu+BlDEPALlDt92u7ZAl62N6NEWA3voOevPuKg9NAnCG387/DW+v/FvXh2N6wBecotAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7U7UXPGY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7YYGXP6N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.krystal/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7YYGXP6N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-7ZYGDOS3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ricewallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-7ZYGDOS3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-A3KPWLYO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.edge/image.js\nvar image = \"data:image/webp;base64,UklGRjQDAABXRUJQVlA4ICgDAACwEgCdASqAAIAAPm0ylUckIyIhLJeoOIANiWMvvcrMX1ydwVQDfOvkN9QG2b3GcNS/kOtGu49DFuDfL0tDUA/OcpE2p3tWyIwhqRDVtI9SzYMY79G9/J6yxkpWepnTs4bFvsavgXSjExvXuLIw1ynb1FKN7lqxbNLgiz+0Sgt4yqUYGD4tL+ihR4lGryPg6gfA3rfLqFFEdR6quOUWAAD++b4X+//V7wrXf+BS0u9QAAtOEdhPdwaB8HcD/HfStGfxcOChuUYaGj1+/ygAHJzx0c2ac5d6mn0FtHzAe79ffS67WXX0zKs8MPZwUCjyrCY2OnPhmq4sqYVpsyWzxafdx1joNP9YhKg/s9CxvWVLEfcpqthMSZFz3mT02gm9WJJw96AHUkXaS4llXEgLFSrBIn32+e4aflAUVYHqfw5FE2d7Bny2QaHV/nz0GImhzBKkzZ4ShG/6uC1U5Du+APkxk/rM7Js7c5iMWAmcvVnv1mKiydCnOgK8E6cIg9t4aLBSu3kMRfS+1nIuRoZpBv0wSkZSnGA6JOLVfcBxcz+o3VC4Nui4ZQ/9epgyERUExoStjfVpxOM8ys7ys/Gp20AITO6sZ7ztiFcIJhWic1xcfaHwcC7SrUz4ZoU/gp60GK1FJd/+YxYKXx88jNMyMksdrnjeC93vcdaWiGG8DKC4bWjJoE4RbZMT2Xm4N4z61Ts1rt4Pdo3bPVBqYSmTIdX7ppHcZLEmglqIXEbEBRCE0hUXcwTlu/RPcHGumQESKqeA2/Dy0wE2yvgDYTAno20XVL6xwhm0XVPT7qM3aX0qYhwZvCXKGkdbNwbYZ6MenwbUulNulklWwfK7TwAyQVQQVxxL0hI2kXtq6H3sSbWq6FblYAdmU6lZciPiEoKeO2F/YpaL06fBxvRI5dxi0R6YZRll50g32PcLdkLN/XYknJ1cgopjVZMFgRJWKG3WdUQlIVwAu37CdmO1t9r4H3dXrdmUxkzD1AZzVtGW/qeRRW+/zY5wWPWR5z+jp56ih93rx3lMBVtBxS8RMHhfm2HLi151Xu4hn/5f7CbgbeRbZ81FyAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-A3KPWLYO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-AHWRIMZI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.argent/image.js\nvar image = \"data:image/webp;base64,UklGRuYCAABXRUJQVlA4INoCAABwEwCdASqAAIAAPm00lkekIyIhKZUY4IANiUAarzgf6TWbPAcpTzJJ5eYccc4DzAP0g6QHmA6BPoE9Ih6AHlsey7+5OUi3M//pdYtXDDboNHYFcisAFnN8cnGSozTdpdHLM3hm+h3w1HpGApDDMuc1vjw7AhX7jXPn0pD7U267vXNAMRglHyvnpPZUt1nGvHny9bY/hIjaFXow9CNNxsWrhhtcAAD+/EoAADx+v85bMvmKfvOowQmkMhNJX8LGl1nfMxA2wQznkavEVHPJFfEL8hXu6VwLMCabkA4n9spulOfqAcl1Mbd+meyDhrTxyEc96cIIvTNfZbo9Smq3q8JXYfl8K+pNvYmHZWJP+7QABMY6ap5yjJT9UVuqjEn4pkahfZOJhYxTPkOfnu0hfWlR6ElJGMFbC0vI6AetFicEYfEW2l6UkRzyp27flkNxfN3EApZMPfTTZD/4Sv+BbfZufmIc+ziCb6PHNnOF3vIFGoODsLHKNhJ24nIB2YaJ52u81YP+4YpRGtJznoYoE9RtTAVpFB4lSom4zzs4rH5UlN7S81FCV2Qg+j9r52r3W59LGtK8FKvdckNHzPkoudYxh1I4FGomuMHe+PKAKOnh/lXFrSUZso+JxjAzWSPkJXAjb68gf1va3Vm6+WhQHb8k055wfKJ3r8KKXN1M7gjdnccyrotiZptrvoKKxFFaQVwma+tpJH8EccOiRDInDuCVdUJ8kRRYiB7YU4JZGhQrP6cQiDhnPzrJS2I18mEUFPZegZmge52ccvAOm0Cungp7S5lYWGBzntCz67KVnR8V3NNTrPTnmOhUlIvb/vgqXn0jZ8IWZNvnqCt8pElGr/zk/h8Z+lqWjSQ3iOEogVIuqdXu43fe3F/qq9vG5kRFYJk0TqxobVS9zVIxXcwECp9ayjLcbpdiTOIDEUe8bCc07og91/STzYb4vERg49QICA+d9DroFQAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-AHWRIMZI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-AI7WZWEM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.onto/image.js\nvar image = \"data:image/webp;base64,UklGRtIDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSCkAAAABL3D//4iIHgoZSWIeoSC8QSNo/mAH8BH9n4Az8C4BdyVwfoC9/0rAHQBWUDggggMAAJAVAJ0BKoAAgAA+bTCWR6QioiEmlOsggA2JaQAW1u2C+x49DvN+U9oHYrKCCdcjVVANI8d2oT0rC+KNfTmgPsWO6m4eI9NcKLfDdlxFdg0ySUdniudcr7IGbGLWhnk8wEfYpVoqwJOOnGcqUKU9u0Q4zWVDPWjuLlYFEWZegL1laLO7yPvC0FgjNf12wkEQWeyYpsMeTgC+XbnT9qPlahpiIN35axjLpOu4qbLuO+L1rjppxAAA/vxKAObrz7ge7zsc+yzv9/DjtZ/iYk7xlo2FjMQBGBAA61NOYvu9bju2ov8R7duvefcwOXAtsxw5WOXnY38ptA+OtovN+M/k2zCiH/28eGc/s2f8DoFOv2Qj9eZpgY+Lyv74EvRuJPPyzhUJjH+Lu175vuJknBMDsya3IfM1jQNaFec63Wl9p/e/P18g+svkiIu7v/vvu3ladn9NwtpnXLGsXLoaf73Qh4IDRKnU8X2PbAmyoV7GNkd5NNXTDIppjhLPrMSo4ht+6e5nxMTdB15FXqore9BtpPl/nJCH6jFJVBV+uIyZ6qQsRgO1JP8La8v84h0WyJAPhStS25eUDXJMUBY+ChNuozyDufVVCX19OPHczjAahAjqN2gTOq13NCXzdHAqsBOMSVGG9PFahNaEf7dpjygc/VX+EzY8tlX/eoAZ6E3RKlvPnzUCFYpGJhkzwQJJP9nJz5WQ5KkpVGlvng2+9B8PSb5y+7nzJ5KMQ99juTYhrkcJfYL50AOrs9b38jlHxfvF8NhIHdGlWoJ3OlOrPWw8ryU9T5wA5uSGkGxFVvSDsvY3bP/kNtNi/HDsQoytjjgQLy73P+kDt1W9qchuihC1p6gClS8cfdJYZSirYzCCWYlyQeYlFV074aEJFSp0bx4sS4dSk9sY4etmhiewgRXHdfjYMWPd5Z5GthV6Qk2keUsin5mAWNQVqQsytwANzPXiZ+MA+YH+cVvq8+cj99Zu6iP58S92TEwdTk/YiCuwvqhTz33+7kjT+7R7Okuzvfpcl7ScPtAuMdcxQ8CFn/Sz8Bg2J/Xw/my13xM0z+juMhTi9Wtx59D07SkeVC24hxu+mngvCW0mj9aGEJwcpMpFePnKRdKv4V6GPoBhumUpAFSdONIxYVPtUVX5s0bvwY8gIklrj8iS8xKLz+uimQ7nUiDICbSMCdzY8dztU3DW9UgAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-AI7WZWEM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-AR3FQDWK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.nicegram/image.js\nvar image = \"data:image/webp;base64,UklGRqQCAABXRUJQVlA4IJgCAABQEgCdASqAAIAAPm0yl0ckIyIhKpPZeIANiWkAFtMtAfx9dbvg7Uu6DDQTIv2J8931Dv/C/FFVI56KDb1KEaCJ27RGG5Fl80CdQ/2dAAa6+cVTd/Iq/Fc2Fze8oo6YjPDYAzNkH59ddI+hshMtzUvMdc9LbHl/OSn+CM5szvZuD+rkSYZkj7bBZveyF9A0dTeQuVHayFSEc3+awAD+/K0QPtPrKOwPydVX8ED/qC2p68EklXyf0ZjVqEtgeswzXCRDzf7G6PXB9qp9i/aG1dLqmOpD2E9v7+5RWZjXMZV8K240Fya7GQe4lDzTmry+oDywOT7O8R2+6NduX3ZwBW9orEu5XMT/rYiysqOt3XIyOKg3iONI79whj48OqB5IauU4uI3wHHvJPyFQy5cMnlt0/l8fg/5F7K9zV383vAbhGA7H/IzYVvXYqrUdc8rPrMlXkxoF19n1TUKv7yHBGJj8SN4p946LKXTY73I9XGKVx6JcciQPju1fKSOMQRj39ZUdwEOY12oqKkZUdsCRisCEBosZcWFYRWbukSJLvIOCleuRKX6aL2AD6sN94Qxgt4PA6EbPBqrMDNpgK4/lzIjfT7rvuhv7imYpjWbyygcP9BR0ZiAgujtQV0eG6U3/ssi09itWHNfByWfR9VkVrlPat+gjJX/0cqykEeyOaY13qJ08E3U04lJnQUiwwuJJcMIjHe2NyJmeQSsadnyQ3vok+PNAEHpgWbKoJ1Wj3qmR4DkOndcAbrTNmbdawCI01SxR26XoTmzODOvU85Rafc3JlR9ibRabO7iQq6F9LMFZvhI/aWAIVbVzIZYIuqV8TfcsgxOeUy2htR+bFYv2FuvP+GhYUcbjpUzeifj1MkAyd25FofQAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-AR3FQDWK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ARHGIDNB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.mewwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ARHGIDNB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ARYWL2OH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.trustwallet.app/image.js\nvar image = \"data:image/webp;base64,UklGRpYEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSAMBAAABCri1bauqTgcvxbIbokU8KeNLGUgP1oJLI98tfSFwQzIi+LizY/a7NyImgAfHH5p/0/nytlv+NR/ictq4X+p+6NnixtFo2y35sRM4bj1c4mTVdY5RxdESqzXqsPRwiZfpQwovEWIW9qVfIsxM71LDJWqqLccscRsK6Y2BTXxhorFEbhMMQmi0qUqEnc99cKb5CY5/GpyezsCZ+T84Rnf/3/1/B7QlOE4NOPOnwenmJzg+98GZVAUcJQih0UqiAc0mSH8CbOwJ6RSBGQpJNYRFJTvTL6CYlr2FF0gsyIHpISCm5WBlRmCsUTzScashENZdR46P+aXuh54tbhyNtt2SH5f9AFZQOCBsAwAAsBgAnQEqgACAAD5tNJZHJCMioSoUCUiADYlAGuPCb8z7LzEHhvx5/Jno+uSfA3JXG/7JfxP3GdrbxH/7p1dvFg/UD3cukA/x3UofsB7AH6zemB+2nwoftR6KSKHzbfy2tObXsbbjX12J/cMwkgWE5Oqmo0C8Uksx4m6wcdREfxe+sMMGTz0xXgmiX0oyiNcOJ5ea94o7Pe7Wc0IHhiPDdtZi8kV4zUHmVAnKVBjVMe0Ja3qHvAEa3LpIJMQVUZC2pJDprH7bvU66Naw+UQAA/vxKAAD33ePM9DPgN44vmeuiUqYLqxzlv8pFTjPGLsY0XnBN18eVB3WcOB11SH5Vvi4A3VyfVy7e9/5uJY3H1q5yfhf0QxAe7Zz8ECV4cei1xUgBkbDQ1DX0lSAiZhQqndcUjoQIuCSn/nSoAkqgCEHlN37Bv9lOBFMqDv9BUzbCQF5+qVd+drJVh743J+HgmbS/h2Pj6xgndoQpP/vzUtBrIcnF4zalkF4hPuDuCmN9++v7GshloQsD0pThsyej3ytl2hwuid7nPIlelIziMH0BM6SL8a7MvHpwmkEB9YuZVUfOGYhlyTdthh+XbQpWZxCMtRZVbpjghc/wSsq8XPSb9nAwLY1zuY6YuUJDlCTlhddPiAnNnQp8y6Hf0dqRBy8UVyb7X/XfwDu9wavfAmgMHcCHKnBKc2dTAKI/e/jt+FN1/eYrphGryLR0blRDBievjAKDO9F4/5sFwa2DDjYPQubmh6j8xDCkgCSyWn0LyX5+3j0T+UJCZPMCCnv/lO2wAT9VIIx9a/gGZHrqD6enDrJ/ckxuRT6X9Mn8ZbfJQRqO/d/OFct4jBB4J+VNQPjj0VeoP8C31Sv5tW4t0vvMgYBORKoyb/lVQXVv3//VwjnUIodglSf8EEAALmoiY12gvLcWsf2EiFjdiLNQlwO4w3/81St1kiadvMGEnMGUowXR1sYvTbFkO8OJDgp3RtkXLB+RfE39jbdmUwUJf8UDkYQxlA1Ez91LdGwI66vJ+tPm3QRT/knxg48c+clZu+FrlH+8LVjgzUnLQGS5ydoGs3jAzRdwsrIUv79PK/g4lbma2bi/kQ/xUoq3K9qcIH3Mkha9If/RjziFukvfyFmmrO+G43LeVbqM4tBnIfIJYn7X8U1J6AAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ARYWL2OH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-AXBX7NPH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.optowallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-AXBX7NPH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-AZATAZUW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/gg.indi/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-AZATAZUW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-B42LGYLK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.cardstack/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-B42LGYLK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BAPZ7ZQ5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.slingshot/image.js\nvar image = \"data:image/webp;base64,UklGRtoCAABXRUJQVlA4IM4CAAAQEQCdASqAAIAAPm02lkekIyIhKRR4sIANiWkAE9B/O+VYPjL2DdFf1TJSvpP+htojO37R+jQRO09gbbsf9GMK3D7/mXl9Nz7/plCus9nNDIQ+O3eo065FX//UYHkBBXrAywUo//IFeR/nXcz7Kgbk6n37GezFHdJNz2QyeHIDv/u7obkohKPFAOh6fnDMODgAAP78rRABPibobXkA55T8K/AbaCc45DZfO6XAjQlUyOuQvijU9W49fih96ve0GFqOX+BpmvOKfaPXjPVkjIou2Tv/GASzxwCEPzXwUTIOtoGdV1ClkhhJtkjRiC4GYUW1dqiDLDhi4ABW35ycHULrmI/586R57l+uJI4490G528G3WjEn4T4eo1iwdTB0MgMo5usuxxxcp9U+F3ZNX8p8UbnMEauxTAqxswfzlbbb8+qXzpMQvOgyRIw5LB7D2M3o/L9w+i2jlA5w28OHbOqmgsOm6XvMqXCHt2u1U4FigGpiqPfOnPe8p8JlUa0GjxqqdPvP+/xPk1aLrwz0dkXquu0ynfs0o3FbW8x0KQ13MBbKdzvVG5H1k535TREWCgYnoz08KF+3/jFaPTys5HN1O5HzFJsLyBey+Q9h7vBTy3GjtoMQId9Rgm24OTQEwxsZiZv1yUfmOzvaU/LjlnDzkM75+ElesDei8WGRw7Qv/uKPLiOnq5tKIDIn+0xkSBkzJ6+VeYhwvXAvkFdQ+zNjIU1cSlZyGhL2vl8vvSrA38NJ16s+L4nYlC4V02bRP7ocHw4JTOqHhItpr7qPReaH/Z2uTL/I7AFzFzWoOxn2nxqxMYLmEdRv7150Vqm5k66rhbZXsGe5S7Onn0I9vx+gz7S5U/44ywkrsOF0ikMzMTc7Dsf7EIVL9FGRltItbfvRvRRTCmMF/NNZ7OaImYlnmC+R9cxVrLKWo28I2XBwzH1z9MD8Fcna+zwAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BAPZ7ZQ5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BAWNJLDB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.getcogni/image.js\nvar image = \"data:image/webp;base64,UklGRh4DAABXRUJQVlA4IBIDAAAQFACdASqAAIAAPm00l0ekIyIhKhWYuIANiWkAFeK/2TtN/yNelvo7wr+ZbyPBnSWTMPI39G8A4pSyD4ASO0Ib5IoZWUVdTDqTK/qsxL+/47zw4NKWMGBmrYCBjenfq6OE7jdkm6jL1zl/0TDtrqLvQbIFsT/j8VAK3C/Sm+UQn6gkoHUkybnLiaMKpC3NlEXigJuqkI7KVPm4Y2mIaVzloZBfYfACY7IAAP78rRAHJb+p72vU50C6lRRBQjlfrk+/6Jx6Bzt4a5WvcYizj7wG98JYaNRLjdRVTurrpe+Cc9C5ZCgSkvMY/k2v4wzzpe3Q+V8BaqOvgBI5ELQg5E4vBJ0+tIcpNFjY1xGRkvybSzeXXk/4avvUSCM+AAJf40rxOaqvvKQeUicxR1BFNkbZNwu2tB4sVB590n3ctIB0luWgAer0apDijXs7/s7wN9UBrrtbCz5vl6iUz07Yc87QkrSAJlmkLLw5j3+8+QwU6ReyuAj/gmYDcjzqKRXm0VS5BX/144rZlgNaxNtRJgbDWhy3lL3LFAHGCiZE8E0jiFNp63jOlyrQOTLFhGXTNI5R5YP47T4e7+jZslUuBUJavJwXcaMtAVj8VUdL3C2pe1xWtEN5ovpNjKqGlA001b8ocvJ8tXgWsRFv/HEkAk8acNWM9ZKWwM17+Ndbw3WDnumzqoEdcuSSmC/ZuMjU7Nsa6XdUkw7Ppn6B1nvbwoXNe9RNviDb7oD7drUIb6vKsUQDY/gcvfzNhFKXprnyQsUGgPASXldv+J7LEYO+p1hkRGgaw8VPKsF3rWXqu///+O5HLzjEbnza+CstrkB1AbFC55v939q0xqmKjltADFzBYIAruhCRr3mPLcFl1nIdVbxQsdwD//KA/kLycvBGncB9fz5SmezcrbrJpYBxg89wFwpsGMGvGuQs9voo53hOQaFArlCilrisalelyWMO/0j/QF2MDSCHSJJOJ/kxXA3H/C3wrDojyGgD59paJk4Yu+tI43jfWSpr3yiEo8rvDHJfVxhmD607xUPAR2knOoAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BAWNJLDB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BAWP6F3E.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.everspace/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BAWP6F3E.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BERR6HPQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.enjin/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BERR6HPQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BFCLTXKV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.m1nty/image.js\nvar image = \"data:image/webp;base64,UklGRhIJAABXRUJQVlA4IAYJAADwKgCdASqAAIAAPm0ylUckIyIhLJM5cIANiWYBBgGkm6t+n+I/ID2WbI/cfvP+TvJuGt6y/xf9Q/HL2Tfb75gH6Q/4v+n/kB3lP5L/jvUB+rX7O+0P/gP4B2AH86/sP/27A79jPYA/Z/1Xv9v+5fwT/td+6ftN5pd/b+0j/b8vL7Q5Rr8/5M99vAC/EP0HvLIAPqpxOaWjQA8mL+08d31D7BP5hdhQ28nXPiGa6KxEkGJbL1sKteeWHPMRHWraTZGrOta9qInociOlOrMvJpaYEdzZ7XHa7s5z4Z3xTQjNIexHdx2AEREs9gaP6wxQLS+uBqUX5Dj3251rc3yqMRhg51abo1CXCCaKAbJ8/pil6W6yCAuGe//cneKcfYnCGPiHc0fcnHSYUOXWqNjujRAaHFGG+xkcZs42sS238TPptuOPUhFSieJnqo7950r+8r8dZHBOHKiz9Byzv2hy/Y/QAP74E+//Ikv5El/IkvIku8ITxaFAABIlMgxtizI1Bv/VrHhfESIlvnDAfpT1dOf5xlksR6QqeFKX/nJ5X4DTyJL5/AdF+35pAM2OYZbJt4e2G5327o5WGDmya8g/h+NUmM2t012LNV1wHXjl5jjkNuRM8GT8kneRDKhYvkHfpAobH7gD8U+58m2bZTeiVlNvU3FJSy2EYkQDKJprDoSxAbE3h2WALxYlRRnixvh1d38A0mB/zbcDeuo1VwBYuBQKBlMtAisp9nSvl80h2GnqMAmuKKwhps7XBm0RvjTuQdgbHg26TzEWLfHdAmma9Sd+ZNetTKWEVwJZ/hIhr8aLMxI3lk9Wfb3HsQTM13gOId7LPAe3NWieMtPavS6fJFdOKJk6MdbwaXGrBdMeLBPGX3D79+aTpwCiFYnRbCbykU7N9SgpZpOyXxI9wAzBUOKogffzyRdryJOaIvjFm2Yfo+oFDjaiH2KnLR31NltuAdp5Icq6XfZtplMWM0TAbtwiwd9WZXfmsqnmXL0D3J/+pk6oapg4epiy9Ad5cqNL0N3tIlp4m2NSa2hcXeXbRTuaDwwf937FJCCKAmuLg9W+Ld/rvNoJcDz/7R/v0/wOxIQRM6VMUMWh5sy/FlNeZO1Vhml9B0THtPZqc8fGz2sV+WZyv9uLfw0lpt+rd0zPkvZXwc3ZRu0dVNzuljVEzA0XzAg/3rfYTwryguoOvHLkT8ajjL7z4hDS8rmRep2SkvQYxfe6pY3A42wAd8ZXoHpYGmGZxUeXieG6NBywHYlaEijhW6IhLc9bLryAk7zTBzCUWTC1RoJsgJvLtjJ7y9JtIEDmubFKUP22DPwEg8vMrQ20gc0CBacrLLHkD3FSCiVSaOlLIqabZFu3WXJ8VhjQgZkyMOBA3v3a81EnhA80bNBFq19cuKVwmRVRlrQvsee2gwj0yoNgxcwbcSme1XTobbwxHYPAyWTzdvVfDOHSD+rSgiZ+ib8b5rCdl3wmq4ysecZ7OBqjYQkbz1P4ISnD8mfodcW0Ng14Z6mi7M6Jyhlms2uaEDrDqBJGfTZZiWve6rK2GlaL2biLhcKfHRfKXzXIUw8kyQznWdWrT5gZagbFDStkCUThtuixVvOl4NTw4dVMszE1sdcKO42D7SfeOtl2qgN+ee+eqMf4ukeAzMDaX9RVHHAZD1digiZ7O3F4aWsoigsBsl7Pu3yi3A+fzqMEK/jSr3z3zblQNK8XxkYvtuKuPwR5XRUsPz/LQQZoSipmqjg34a85g7US3H4GUVc8WqYQ5PTCZKDlWum0ark9z+ltasEf91AwS7/xnqh9JXFuGyfB7RfE5/9MCKPo9rS3kwaApVckK3hkaCeLM9iGXZ5YqkgkVeoiGMVZN+KSxWLiWB2br9AHwRbQ+L/WUfqfKsZ/4688cY5NJ9UkEdAEiehNQwqVlELaj/u9DHX3X2GH8XWJNvKbW8TvL4E/CBs1qMPSkeRtx4wCN8av6JCJ1li/0Btee5fj3CxOYp5n1JLACjBFlcVhsXu4L2ijhgcb//P/u9/zOVf+p0sfat+3RcWe9Z5P99gl6DN5fkHSCgzExZCgVkERq0TxauAPEsgjqE9hB9WusYBDcWX49Jwvw6LzmmGUPR/27CqLH01zvu0lQ7NGBkEk04+u8ufvjLlmCQpwWuCkftu7f7p91XgfqnXU6mmtA9LtWbAHuHlsS0mvuvEKYP6qh1To9D26CxQl8K97AtbHa92/gwawYQRGhUnZAHNqp8nOP6nxx3yH+BZJrXNvotZZvjiYWNfn16jscLspN7HvQwcyLNGrpxCwHnKOLE8f9MFy9TntgdH4v/0udnQf+4ujlnO2SFh6ezYgMxv1o09TiBDX8oVZ7DhcEmNHSWCAZBxCeDrxFPL9Km4Ys484SPVIbxrXq4pA/FpSj8WEtm88Y3XPwP6aUdFtyLXxWGlo3WKUput7EP5WMChnxattkt5fpzv/pkVkZpyQq009Jva0/131zujs73kDQbFppOqT9AdX/+kvr+gLN+loiNyd5VyNAoil420MmiEZaXlIs1G+qi5KBGrOCj+gj4M1iM0t/CdB6fcKmFloUNyAZS4QaNTDehnjUY09kNFev9S3+w/4gukXH7n9dxw9ueUdaf4vhs8YVCGe+bAVAHdUlTpGFbBewuCKc4fSMHDLRgl+OiZ2jWNUlh5l/QF4qkY8XRbIflRI+YVZly7MRr3dwpoMHcRl+4KwiuzLVSmipYoIJn1NBoNik48aaBbXJjRFmJMvW19IlPZczwxRihM52lILOrUdVex4LGtthiDLxAOZY/uKcROr15L3xa1DQp+WslUOyYMHLSo6bz0ZQTLLvUdgu8c0zMFvZDZ+X/Wd8TMMSjVZ9kaDm+xstZBF+5sjX/4+yhREk6RfmYXF4eMBZZw5NihQUhRlPG8dby+sI4sySAYqq3qdcFpP8Thp6YyekdkUNEvZ0VVPQSv00hnL32hqZVS6wTYkUBrUXhknki3jRmKCBk4LJ8XRo2e/oa+EJYtAApiCaPMVlGVKrLjkLLvKjs0QvUxawIvPvz/aWDGcPl5YaNkNQkfKJ9xiyiwwBZIKiJKnPgAg2PQAAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BFCLTXKV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BG36EIFN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.myabcwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BG36EIFN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BG7Q7U5Z.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.paybolt/image.js\nvar image = \"data:image/webp;base64,UklGRo4JAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSBsEAAABCjrT/jtOq7OewSMJlaKyxloPomOsyjnbKkUFn0BkKuzONxFmhCpqC3+BG52zLYIqKsebBTM4J3CSAxP33KCw2j3//nfOPyImAL7ctPVI//iZ2eKLD6uOxIp5UZw9M96fjG0SFDZEd6S6h3NnC78+XCwtrzsSvGwWH/5aOHt6pDu1I9qgtqZEajA3/XBFug2eyh1PJZpUFWntyE6/kfU3yHa0RtQTjCUzt6V3OZOMBZXSuC19fU16e/V62g6rwgrEv5qTfix+0xKAAizRPPZS+vV5Jm7Bd9Ghp9rPbKI+C/T+rh1fQZuegJ/2XvnsSL/j07X9vgkNz29IFWKeQ/7YdfmdViXMLj+k72xodeKO8Vx4dEGr1SDsLTtX0qo1bHsp8YNWMdg7ey5pNRv2iHUwL1WdZ3jBOjAt1Q22PLAnLx1lQee5ftsvSkerG/qiqZf9vVQ9TH3COa1+NnUZLRFgUI/0gqbQpN3bdVvTyMat0GWHCJiQS8PvNJVgdw7Mazqxz43A1Q1CcCXoQs8nSSl6arKivzukwLBVy5Cm1ojqrfhThxhws1VVYEzSmzVVtTwn6GW8mvA3muKTjVXYRZLm7ErBtKbZcIXYdaJMrEJyhajVZLlIRlLNKNN6myxGmXZJd/v/IlnCshBAYoowTgBoe0OYSQlsPiEpH2wQ0QnSTm0RO6ZIY4i2h6RxyupeJW2lyx7RtA8lJ4jL9Z8h7sx4gbjCmV+Jw+xD4ri4SNziixJx5sMycbyyThw7IA6afIA4rDBxbJaJ4xcl4kxxkbjF2YfE8ZlficN4gbjCwBnizhzJETexdYi4EatrhbTVbpF6SBq3iR1TpDHEllOkTURFwyBpJzYLpN4QZtoEkJgijBMAIlnCshAA2glrx/9bb5PFKBPJkMUog+QqUStJUT52nSgTqxBME2W4Auw5koo2KjeeJOmbcBWIvyToeYuoNpAlaMxUZTU/dYgBx62qgCFNrbFE9Vb0d4cUGK4F6PlECnpE7cErG4TgasAF7JsnBAeEq8PvyAALd0OXHSJgQi5h120i2MD19AIJJo06jpYIMBD1DOcIYFMX2N8rD0bUeftF6SgM+qIRdd+Tl46yoPMs6m8dmJbqBlsegHUwr6w8Q3hzzyVFGYZnEz8oCSw8bOdKyjFsw9Ph0QXFGISF19N3NhSCO0b4cNfld8qA2SV8GRqe31AC5jkk/Lr/2ifHd/h8Za/wcaD3d+n4Ctr0BoS/o0NPfcUmCr9biGee++blWLOwfAdYgZZvir6Y+yoegFBk2E5fX/XY2vX0tkaoNBhLZm57iDPJWBDKjbR2ZKffeMAg29EaEYpuSqSO56YerrgGns4NphJNQukN0R2p7pHTZwu/PlwsLa87ErxsFh/+WjibG+5O7Yg2CK8DAFZQOCBMBQAAEBwAnQEqgACAAD5tMpZIJCKiI6YUCnCADYliBnBmxz4tBf+aA/a67WrWOa5X4D8meea4B8Y5SHzDY9/VH5gH6v/rB1nvMB+2v7Ve71/gP1V90PoAf4zqEfQP8uP2Sv2r/cL2l7wk8VA12z6NKVj98m3gGYI14Ney046QjK86NcDUH16npm+jCGd40jWZ+bdi+dvC1jXQ8/tDK6dc/hfRpl+EKe9aT8mHoCqgr+w51K7er2lOXCmcxlf3cDPUxiQJ223QZXCsVXO12feqtHQ9gES6vslIWUvUTLLqFrcL3as28iNxEmPxhAAA/v21AtbuiKbxH3+Rnk9anF1Ykq0EIF89f9E7pg34kHzEj0H9j23yl0cI+UDi49cQlOn3rHOxix19ZESQlP4wiD0iEFL2D3KOUJPedUDAT9mekTM59dMmDBlEuHz3kvyPm/ozQcOzQozOtMWH4NYaCv632LNE8IZ5275+hn5UBzzgNpYhZukcriqwY/ezmyG++HrjcLPQCb0WOyeWeK1Ah5KiLWSl8seN0KKNaTYxagkDDk6DkxisxH6lqorQG+HyPGrld2ljOxO+Mvp4/icLzlfmIMOz4o3ikk4GbYqtcwcUJlV3P7StwTB5otBIn6PSXRENo0ueQwukCnbYPwoEfplq4PsnxDuq8wdv5PLjoW1hII/+bw11tDNWh101Meq04P7fT+ajlEKUOIUhxR7rzoumJtKsK7cMGG6Ppjlo9h4TuI3J739XV5rr/v8gLPEZdGmmunylyQdaFCpKwK9lWjqiNhvPphPDiKh6XmnvFO6kjT3TssRfj7085LjX519zcwIlaNB7BhYivxBj2jfe/ZGE5I4hzbQ6O8CDDkCUiHRSpqU/w+gyHCZpa5nIbmPNA/xx8/IXOErAeEsJt2Cv0mhFqsSMfl7OhF9+QPJ25FvyPxWy/fVam076bGMnL9ju6qLnbZrwnKjyLBO/LVZPaTT2Gmsz3SxWftrkdIuKUBWJpbpTfrSAWJIgeVGR8OaM4q/Cd2ATOt5+RYTdXb08vlrhnimmiAAtgLB/kC4WpZ05rvMUn8w1njD83K6uM2Tut0H+n+QtdraH7yChJ36m3EoetnvNANCDmPwhaFCf5l2Ft5hHQVXU8rPZnR1B5z7zYsX8M1NExak+x7y7gD5K4HATY8PO5eDlsnfoxE0iRAI+DDRSNhLXKGBBVueI4le5wHysiP82UKn2mFuK7++IYSR7znv59bwC0LVxxFHf9uBHQf361aVHq8pmKtwZjASkKfK0EEBwqHuoLJSJSd/cYq8CGz3jTQwLTKRCb/dXgsXnmHc9TN1xNBdE5Ef/Ele2RUb3x4hNpIH/A/hH5Bj64EQfYM/khOPLc2ywT1Lgn13FqQeHbKYYNfnUf4huPkIQ5P3YYVzxE/fTsPhW1fx6MKNy+yY7h2qLik+ifi3E0hV6Djd8rzZmsPh1S50qILmTOped7LaiumLwvh8pUdnG3waO5OvIgUO9wr9msMGCRTsd8e0E2TYBRU7TBDj3GuN6NfcGxgt63LqhktjDr2cGeyoP21Q1oIM7nrJUXPiZRIvD23K0+E2ildX9Jfk6f7gGNX4RKnCLHJlMUg4+gc9FL8h4iqYYQqmrtu//1hJpAAJa4Jz/3XRKscfWD/0VKZXq09lt3/75Higv2kqIaWRZ960oMF1kucoeiyDQUSJiilr9XqobVIclrU0YV08pQpvZpE1ZoUyfHvw1cfa+KR/isMmzgh58AN3mwfSuKfg19CTFWRw6/RXhRJKUiEJiGgHts64C69YNYc6LTyX8trSU3AAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BG7Q7U5Z.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BKAIFC5N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/dev.auroracloud/image.js\nvar image = \"data:image/webp;base64,UklGRtQDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSEkAAAABD9D/iAgojiQpOZznhUAohEbu7vqJ6L/Ctm2b8IDM9gjwiINYHOPQiQQDM9kENpHghiD8Wnrc/4YlEozNJBJgPkFiMLvicgkAAFZQOCBkAwAAUBUAnQEqgACAAD5tNpdIJCMioSSXGVCADYlAGhgEP4nixuMVwHZuzgPMA/RLpAeYD9Zv2A7BvoAfzX+Rf//sAPQA8s/9evhj8oBy0ey3F/vUvgeAGkdagF35MJunyccTX8k+dukSHsNPFN9oVp0HcsW61PHmV1Smq8BFsdqt5BiddUbo6xR4MWbe3EBMVEz9Lri9K60s+0MZy5k5w/hdzuto1BKnzUMRLBcQxabNIYQ35RAA/vi5Z45dpsi+R9B1tuhYg4vCGPdYhDxtBq9rFvv8kMUYl98+svd17uwrSmBb8aj/5YkBUXQ93hGXxSxbrvbBD1Hhi26W1vucg5G0kROT9kSlAQphZB3T1fZ07tZPSKTwl7RtbGDztxdpTPpDr1ik7qoSQhOLWeSjA2ELMXFKI4NKbU6kBK28K3PBLZ8jSo7AXaBp6vqfXlVyJ3myB7o+2LYuThzcjZblOCZz1aj/u7y4CkC9kgDwNU6+pxBoRz03K9Wmf+zvBV4+O7+VdqNp8f+EEb500Img3gw1BwksyS0Shx4QHx+7vbkB7kAxo2a0EAwnzYc+YUjFCdGvHq9UWuZWGZ2L0OPat8pHP8BPDkuYd7fYss/e3rOw595PV9Vav+YGn9bQ9M56wY7rx+FPxybAelVaP/t+0Q1Ik7G7nqT2WjkTuRgpFvX+J0dMx6d+y8ZavfdceUMG+RdZKtr/2yq/T+WNY9aOWbVVgwxrxIxOEvraVlanecf48vzLB6Tl4tfoLqPx4gDij69CgJaYdHr7VtccTc3lt/cPGIXt7n1u+QvYibCz3xctv9bAEi3xeAeJbxuZiTHb04hEeFv0E1hpmQhAlJyx4TCcRZ8h7q3gGYLCwY8CTFjf6BI9YxR5Wmj/ihtAYH/J3AZ3OYldVXw74rwL8xN+Rx+JVT/UDZNAPijMs/oxBLppTQtyzkNnmnHlEyfEuKaQw/JlQ0E98nwpNoOPW53sK31LdJQv6Ojl/6AUMVh6FC0KKpg3zShytX0VoM5ixgamkqveDZps2keyGulSDiK/S7Kc7ewDuYwII/V/4ir0tkGIPdd68m6XjQxmdfTMmuphVUHamawj7Rr3R7n/3ktUeGawj7Rr38er/7yWqRRjDZs622cMOQOtzoABBETsMlfZNtYAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BKAIFC5N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BNSPIEBR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.magiceden.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRpoEAABXRUJQVlA4II4EAABwHACdASqAAIAAPm0ylUckIyIhLBdYmIANiWIS4ALjEY/2X8lvxu+U+xP2P7ufkdzntIeXzzb/i/uq7aP3K+4B+oP+o/qXW28y/6x/tB7y3o19An+Wf7XrR/QA8sn9wvhb/c70g2jdufQG827Nr2Ns82n4FzM+/ApPeKj2/CUWKn1DGDZYR+k63amxuhypxjhP9jJjvDXCm0oKErPVDSD8EbVtJUjV/2hRoJbDLtEV45kgAVah8JoC2kyABHIaqpm9SE89sO890ctMaQACMkWG8w5WQfsz06YdFjhmhsZjGkakZb1mrX8+Bmzy6AD+/Bvd/wBjQKSOepLlQ4AAA6QIYb7bJjl2I7G8LQYhvG+4bR0OPsm///Bih7OADCv2agDLqL6U24nvuCt/v/81n48mz/BjQRTCy7+xnvvxsB0VCKsObTfK0A7oBHamJwfyPKUzsirNFwu0Ys6pl5tKOGNsrXXmSb7yMEPpr+wMyx8P9X9S0LpFHhKEyq7sX/8z/7YgNAcspif/BLrm8FktDbED4n9UU1nJUNVp7y6oY2ukmd7xxhPLGHbTGuJoQqKo8mBEBBrj5kK6wFjhkzFa1w/x2HR+VPghMJgRLEKHabmcPTUPTKHgIGMzBVmCygZYM/t5OUSaDK7zvzS4K05GKZAcMCOh4/eP8YOr9RRT0nf93aGPkDE2I1KzU9MR/qwIOzsCG2f+UT8r3NY/lburrlSSOpZtzMoUSTjNPkuJokgeCYFhpCrG1cGLS3lO8llBSWEc1fsy3+M2PxI488W7njCO9OdJ+etnZO366GAkD1bkt1iwoCIKcQqIaWLO8QZ7b/nIYzxBb4UP3DVkeYjRh0KhheE6lpR8a42mpYgbGSmaHoOmh5cvkFCFriMmr97CS9O4lsptCHrBiIcHtJfowKWAVgVgUUWOImJ1ufV8fV5fgZMk0S30AmdQ6KLvH3HrlSosTGBvZW3pqdWMwUHlhUnjKDv5Sb2oiytsOpsomryhZ/TPJYHja+g/xDcVdK1pd5QzMLywIAKUMezuWRnIaOcDtGsnYKk0r+MG4sN+26LJGfFA1P7ar0VvC4p0t8e5wUxZMd4xwi0eNaC32eBjdYZApCLiXfNCPldCfzaRac3lJ0mIfLAYcslB6mI88om6W80yYP2CblgprxWGsAVKfwuZ9EMUPdgzTb5/An1C2hIp1WuR0xMnIsB7rxTlGQ1v5qRB5fJHXFiYdyuLc8b3hPVMzr1UtgAoQ19pw5EGB6Af7lGzG3SA3sPjzMoRaa/vTT3L7PsDgzVQsRSeS6W5Z8Mj4wJ9WoYV89CAHzh7I7r6nKDV2fF0LMpAuWEQ8OhF6/PFcxKXcbf4IsH70eyVCzDuQR5BYujksdfBgGR0cW5XMn18K5fk89UCsCQGjmIjx58dEBfeMi6t/So7WfMjaNxZFe4J0X3m9yo6+XTsYT/ee5cEffiHgRmHN5Lpch2ioJPv4HUngV6oSzIn/TZBPRAJcdQTA3569e86VX/S3bpqslBo+XL7uu6yR8gD8Z1TegaDbMf9UAH+MAAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BNSPIEBR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BNWDNWZ7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pro.assure/image.js\nvar image = \"data:image/webp;base64,UklGRmwFAABXRUJQVlA4IGAFAADwHQCdASqAAIAAPm0ykkYkIyGhLhiZGIANiWIAyYDkjtfIeddWP8j+M8rD8d/eucB5gH6u9ITzAecB6VPQA/nf+m6xz0APLl9nL9z3EW4T5eTBTSXtJGHez8SQbdwsV2SghY7/kjm+6vCYiw2fXeIjwKMuZEVkVTBle7emFL5BppH7W/iisfA/qb9Z97arKWSteaIFEaAmPuN/uhpgPNjgNzOOL5w9spoxrGiZmwKspgyCc0yFwdEuYKE7SfsUzLTisJvmFhfEPNZJmSRwMZbCWzU8KO5J1ziHsK5s+kg/y7ZGXeoxCCo18ntTPNZoTrmV6dSI7z5yAAD+/LZxm0ZOY0AodV0ZBPRM1fqPLLkv86vaVmWjfk/xGn2cidr5sdw0j16c971N0jp8DnYW4p8NeIESaBKmgmkD+eJ3XjUcvpcEdC71+Alsr+5r8QQ/p2snCcsODDHyP1saySqANdkUtOqVE/3VmrWui+KvrcuB7AitGrCTSRTjp7doftFjec/7/PR+4fXan9o6dir+BCh3hqCn+1U6daxLZLwgFtK1rAwH+/F6Gt+knBvxB/OlPNn46kW9QQtGf/GYYNtZqQF/jsJET37wCzLzSjmMVvKPQRUF6mGUntyfbXNqBHSKK42OUKaFPaW93Jlcdnjpyl3OGTMj4BuEXHHdqlKtpD0HkvO9iXdlHcNhwB38ZZuWlil8lCh+egMj4QkoinvhZRzDaE6BeOq6gV+BPFYvKUUp9xPG+UatzA0rA+T9wlo6ZKlJXud9Zlbm4d7ISNUs0bmNmn59sd+cjCuQmRzmgK/OyZX/fgEEIwld2rVNfheeIro7YB9KSeMlqEWXRRWfiXQbKuuzdrbnsJUFna1qvAk3XUuJZL6AtuiPPw9UdfEkMF3I6cwOhedRFnxdapc9X6NNg7CllcMTA/XLPAGk3BqWmfythT03iOrr/zNQFX9P2XdT+UMguPsZfTUETft+r3q+k1nfa0YrIK2afO7nM1PlMd/ubQVYH/TMX2DZglmkdNyvKQ8PL/zzHRXZ4M7Z+Stpn94g1ySLnRaJanVEchvTjDS3znlPBjpVKv6ax0R31nnsReKV9g9uLaucv3vowe7jvV01nTRV6Upsum4fDMSGDAjzk2fQH5ASf/rXsgWDlPl5AOQ4n/vu8iQOskaaUBWDrzrWoqgAXIVLDo9rfUJ6EPvYkP42o9LLWurueNQ/yRD1hHokTAmZVT/z9DL4CxwIvSOGqi3F3KnORx9vaZtw2d1majEtLttjA8cXYyU8fhogK3TLU8lt0lmb9C4EV6Li5+cEEHc7n6gekL2QWzt9k67CoCDEdAjEuT84tDEm3s4R5rO9pIwAjPH2J6RIB02HkU5VdjXj/L59zT2F6KabGfwSNf9yg8QQJyriZFc4ujYO7sX1K3xJulE/OvsFgKSYBRYAsa2fE9Vg5Rqm1Gwwy9Zuqw42/4HjfwbUBMJwXC15X8vqSdBmDI3LdVnACAKiNxhs2VK2ra+pBy3G/cR4C/oo4N0eKEfESW9e65vUnwV3GuE5eP7QkZAd8ts7c4z1t6sbQuE8TlJUmgUHORHryu1g0dgnOV6xBIC2psxZJ5JzGppzOaXPyVxnNbp5lHhiBg4CAeHKaOb7ojEh2RIIKn7dyfvYdiGwMldLFxuhB/zwkNuHM+bWAbRMgDS4Ty0KcpNScITh29+zRer6o55fTYf46gac0Ut3u2S2tmvmfpoM8OSv6s3yOeoQks65uyUUgekfjgak03sGaWsK2P42mlLQ6e/cipbWUUmIaGSZbQws8cq7I+Dy3MwG8/YdrUofN4x2B3mMfgAAAAJyQlwIAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BNWDNWZ7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BPJ747KI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.bytebank/image.js\nvar image = \"data:image/webp;base64,UklGRqIFAABXRUJQVlA4IJYFAABQHgCdASqAAIAAPm00lUakIyIhKZeaqIANiWgA1mmNvA/xfmbUj+hfjLeFKA89XwX9f5wvmCfon+v3WL8wHRb9AX+kdQT/+/Ul8uf2QP3D/a32QPUA//+y3/q7mtfKUZE6UOwHaH3VgmzJQl/8ivcG+QNMOHdoWs6n9yo3mDtRuiE592SV4+GEX1N38mBH7n+BjX2na5t8FfWlvC2vneDL8J5y+y2VSrc6suppAe/D8v//h/sfJbwr6bc+sUMmsIHvqNjn9EunxE7SOojVc8S5CrR9ZqI5YqMjLUkAG5++ovGpWn1wTkrpjSQ4vLjj0NYFgsgQjFmnkH9jAAD+/KgAAe65RqwSBWXDAJKhq6qFiy8/eA9+YR7uaX93nTOb/C/4tHmTjTSVxeM72TA4zv7j+Ytj/9EYcYxgp8JKUcm9tUtup1aKsX13D7PLC52kperQ2uKx2+wCb3W5i7o+5jvKui2X0i0lcNKGc5XCjpydJ2JO0XZdohXF6R5zYdm9b+AJdTM9TN0ILqq8FCD5HhROx+7qj66CjamU4p2STdXs/R4So5mydLW9caLAZtGSok0ERJ+e2i+g/NngakLhidjwcltGZ0hqpir+l0IYDMqfYZmesJFQg2kPdUszdnFjpBzqmMQRnqw1pq8bC3vmAiVFxoGq91KX/ylr6vK1iygujwN+BVru2r376z6E82yptOdseDTO2w6C/jC0OL0mBF2ku2PmI7DQyHRQfOvZDYSQvNUsnyysLoYSQvNH4sKsmbDmGRgthS9PVx0ICK1NtssxX5XRE7UoHtmPka+k6mFQe5sY8zpW4Fdlj4W6cpo9KmoZHKuOOMP51vqnDxumGZrlc/IpOUh0ojcvF8z3+Jho3X/MEpvsv0kQakkXhobhhMzufkd7YEZlnZBxMwNmqHXS/uq6YGX3AfIOaEN+BOJBMSWug0BE9DXr8hDHxCSaJp1NeoABzqtUVO7BTdiQKjV9N9kYsNfz5K66KSJUbnj9aJRjCNfP1Vp0EHxepFqP/mNVOzkzvjmmpe0nIID46I5q++ODFYnu3UHP1NNfqHY/AcJRzoJtsABUpY+b3+997ZXk05ssa7ZyqDkGnU6+QdI7oOhVcjW2XRNv3AXWCqYyw44NKEZ7WUfHypzfLxYlCTuuX/VlCwo59VlZntzDYCxBcVvA0KLhq8c9TCN9uzKzqQffPf+3CedHr/bLGCx62XmLzNQNruG886jzShEXGHEPdgoeT2wFhp/Oh3JBTAxKFCw7N9Nao4vY9D/CIQSd5RFm1wPMIA/IBcxEGc3g3Q13hlipeqlxo8NytWfH1BdoLfkvW3CqkhKan+S9eOWoBZfAyHa8NBdvg1CiHaBbsAqy5D4rbzILB8HVbHnWZM5Qg+XqvlVv69dIC5oa9zn0So8sfLUPXtwPEHGcKBL/7W4ex0Qi6+Bn3v/RdluR6Pqy63I7r7s1SZDADBOz6HQwqPjgs4NQP71xik0zC1V1F1G4czBBA7S7MVLLW8ZUZ6cpAO0T1qIaTo/BJd4LJ1n1RSEakpzlfaoD/Xkk1Lw9w3DkjXD1Hv8aQzUZe3BIwGuCAS+aosYp+C1rwSL5cX35f/ZNQfiGceURaQxcLbdVY7cNjaAiTTwwvIPLGPmBZr6SqabqFy220PgSQ+eq+SqtL791/vhv3YqC/a0dBv/9qhg2xKLVJjXhPt3ZElfTH4u2s4mR82EAINFc5mCbBNIBEJ5M/5U67PvkqnL7bt2elgEaFm9TXvX6qHzggixGtifA+AmVfYpzNZT35eYFTIY7clWMFQuhoLmVsmF5LOZ9oniiU2QYAN/17srKnLPbvduQViRpstVjiO+prHxzUWV9QWc+f41q+frFQufaA/Gr9D/lXMjQyJAe68W344M1mm3gGYAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BPJ747KI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-BZHOLM24.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.fizzwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-BZHOLM24.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-C3DYJZTD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.altme/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-C3DYJZTD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CFMPEXUH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.dawnwallet/image.js\nvar image = \"data:image/webp;base64,UklGRl4DAABXRUJQVlA4IFIDAABwEgCdASqAAIAAPm0yl0ckIyIhKxaJIIANiWUIcAGSqtfSyt5agAuz99OWVYw4ktKtM/81jiRQkvpCBCSs96LFs7YKozE4e5rEzcBWmFxdg8VhAE4ygLZn3BdxZ8jiHzTYFBXF+mj25W6AAIYZ1CUTzo3JnI7OEOhO39F3hetrWD84A4j2cERj3tcR5nKOHBr61dyq4wjJS06vwkAA/rycoANtvIfOCGyh2c0ecjxcpx9o9Mi/uCMBphb9mdjcIK4VAHgHT5SI4lgUsNlCDfe1VrS16ZZ4FQbcEkCST2QfHAYckx04Lk9A215rsdLqFKL3nU8VL8bgK1ds5jEJwPn06kuBfIBzUj4OyiQRdN6dg+4xEdO19iE1/bwC+fJA3CsqPWTnlR+aOLh1aVjd+EOHejoA1rzamWKHE4JkEuRk6hX9g0Khrwaen5Fio4n/drpBpWV0GfscW/HA/vEWheVk/tBWA4fTKdnOfNHULAqZ6Rg6PSWRrAUmyBY7YMGrTHziXaHFoRvOkgXManjMeYC8+cZFdt4+3uj3cg0ZBuHUvrnf92S3JtB8ARnFefl1R91IRkPL72PpUdrBAy1hsDoZ7Zvu1c9daw3D9uXp+f3Q9bYJIPwuYjoyI5aIa5AnRSu9yKWsRLKdUUCgQ5VPyvaWf1+ZHrc6YbAmlTfVW/a8ZdE6weVbSE0l4conUglFeQwtk/tOY8eXFfDz1GEgr0gGYxHUSa1XQMbxJa6hvUnhwQ5pK6YBOGUqQmXX7wOOrgv/Rq2nWldufCW/4PxJM7wVeZtVxb02DfX/uur+fl4/9NOVmwPpUwqpWcOZKmDTZctyCdAVSbUzg5Aa7eohtKgUQvmZ/p21x1POGFbb8i780xikjKgFaPb69NAu1uB0tkI6/sZjos7BDpbojPO0P91WUrvQ/Iaexh07PoahA1wIwRRNfeOLFuicbiKvzi96BKqnrxc65CxpxtNOKR6blHmOnoWI/ojfRCSwa3WpPBP2JG26s61VOZ4fVrnfW+BDHe7n9jGckdXO+Db9UVteDEciYGidDpnbhMZQyOpbwvJB79pZyAxaYbnXv/67HsS7HY5lXeUocU2fayDKNyw229Pn+pvEPAjzSYKLPvOABBiAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CFMPEXUH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CIXW5BVB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/online.puzzle/image.js\nvar image = \"data:image/webp;base64,UklGRrAEAABXRUJQVlA4IKQEAABQGgCdASqAAIAAPm00lkekIyIhKRcYWIANiWIAeLX3r8gPZApb9c/D2/RGw9MvZLzt+OnaA8wT9aOkN5gPNt/vPqO9An+w/4DrDPQZ/cP03fZW/cf9xvaOzUTszkRyxB93Re08m8Rwn5J06eyrCfKTmh14iYHGsYoWVZCkGkLTtg/MtkBSiV25O5WLNSwmRzg1KXHtk1CL0+FAV+KnrlMWx/UC4nNXKCzc6bS3ZmLJiCG5ugx7k26+E0Ylawwzw7zvKADkdH9VprTR7kKJTdIG5Iyc6WO7xDoeCxAA+47//9L1+L1+L1Ob///j3/49/+Pf+PIAAR8ZwLYL9N5JdFzYw/sXslO1WoEtpLOlnYTNg16+JGheXO6xT4iFN9kYbOG4srLgpiq4t4UxPq3gPdcJSStVFVQ3qxWviko/XPMlw4f+9oUVYybv/xkZ0a3aWNbOCjXlnX9g6po6fpQD6IU3q1QTLm+3peMor14YwWIV68lL86FPvqKgve2KRJKwlmw+2WO1SKgAD/Sva5gkjDDTTa1+8/Bsk+Qv39Qzb4kc4MGNjOA5x4m4feeDel1DvmxJZ9+1DRcAq6Ku0xYS/vF9TOucri4jCgI0FTxA1SwJhrNxBk6wh/04uMzw11BrOpeEtl3y7mrUNeh6qJ8qgUd3pg4xlFkfflLGfx0lxdipTtAhx+bOU1XBvwADOXwFfZuBgFd0jx6X/O0COAkGDjg5ZQSywN11NxiAvXiQ6lpzbsdGB2CuW8XzbYecK2vCB0s7975eSvnMiAOhPyBZcl6iNxysHmkfOeAjGg4JoZWStTseH4P4M6YrTt/WJIJVjC/9XVCZV3L6YdoHUUywb4RPhVhN+LVurUiPTm7KpbmF7TnEBBShe1klX+fcMT6bp96T8SLlloWEpq18Sp5KzbLmBC6OUp5J650lrBjA4wkTpNZIKuIt6dpcUtNbG0q2eh1jd0ihq9T0eKmWWjdskQ3+zLMZz97cvvLBQHWSxZ9hjZW9vf7uQDQbP2JTLRA5EjgyT//TP/xknKEeLd1Tas7I/9yXl4Pw7wSCW+wu565p3i6TuO30qidut4qgFmkg7YN2tGhbGG/wPNCuJqI8jz538p58tX7Nqy5LywMiFBvN4onOBpuf/nIjTJfYJeOAYPWpo17ovXt6Rhx+POP8ssqBMe3mr+SVrCmTcZbKM7UXFry6cMeSkrsbkZtdaZkfLwW9c/xu0Y8RI7x1NIq4FXJ4BPrLJyyQbSXY1xp2ndeVzUDSYXDtQYtXzDMYdpf6q6B8s0jYoDbp0z1yIzWo/6rV4JxYvnaV1YUTIJgFR1CzX2qBF7lq8ambtVhT4SG99PEW/j29Y82ax/US46X6DocOaQC8CWupIkdOtL4bzPiOlhxGvbXyVNO0PfvMlV5rWZm8Ur9xXvY2HIA7zCtEqv67Jp+6Sa8cnmj2eit/AAg+KYXbXtqcB7QnaOsEAOOTg9mXr/SCe9Oze6a8Rn/uKj7/8JG2vfRNDfN3jNHldu3JGRPOmXxnAUhC+9jeJDBNNJJvuOPSa71QGb5y/f7/n6mFmyk0IhCC5xdQT7vQaMKqAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CIXW5BVB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CJLAIZ3U.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.nufinetes/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CJLAIZ3U.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CP6E35DJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.nightly/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CP6E35DJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CPWAGIZP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.neftipedia/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CPWAGIZP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CTC6AICN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.trusteeglobal/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CTC6AICN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CTUNVIGS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.xfun/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CTUNVIGS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CTWYLNEW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/world.qoin/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CTWYLNEW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CVFAIAQD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.pierwallet/image.js\nvar image = \"data:image/webp;base64,UklGRnwDAABXRUJQVlA4IHADAACwFACdASqAAIAAPm0ylkikIqIhJJHJmIANiWkKFshnZx/3roxvD58H+p/Jf8jvivbIb6Ryf+n/7Lv+NSBWaM08nP1KMzSSdE50kjCSwk3sgbEEPwXbKJn4UJs4FiYWgxUe1a8Zzht+ryHq6ix1NU1lM1oLhdu5JWJ1LhimPqh+wKPLDWLh+fFbcuCJ90xV4JBzIcPOlHXY2L1TAOI9A0QXzst8WYkgoFwn5J3dzAAA/v9gGVN3S8AAAptr7sXcykfgYSKzCfKeAKTqSfVBcv55ct9imAZBXLj6ALR/tHA5GbsZ0t3ckWROA+QQKGf8NX/c8eOpxV0vX8U12D+mGgObvfN/lnujPJGfgdKQr4OvXvrHwrBP0Kb+u3Gfsw+nO9xlbTouSVzAiccBYso/5T8E0yYLntTgfEgg1LUfIl1BkOo9RF9JC/V1e6iVvH2jv7gHAdMbEkcyr4Gs5m+cYH3t0cVv7Cw1EK/WKgYHAkk3N4g30X5juuWwCn1xDn9p/ezL/pWiguKeiLVdGYU8XR7dqfIuFz4/NnANz3zOWSrQTUIlXGMl5QimLYog1sf08gW4jAIe/NRCnsJCjhS9ngDxv38Tat83k+Z0f4+w9QbVm1Cl7ktsEd8EBSxerg+MjPTh3s0zahBSyn/79j3E379qJAuljzQf/DNDeLd/dRec+nQU+dXPlNlGn+x6hpY4pSEFRlXNeuiwO2Y6xM8TY0xA2aMJEDVTYxhZSb8RScgziyrwNvyzzh71lmcyxwWVMD7jhiN80Hegg5lDWtwryLT8mnkHC/dCxbX/jL2dj81Oxu3rMcDF6XqSoSWrMmm5KWBy5IWSdhD9PxjaeHcD5YKY7GX9oyp0eYVwYriKAZJCR4rtuvh90HnBZIdULPR8ITGhqWfspsQRnr/AUbeEB5/SlZ2TBp4a0JJXDD/ukBgACaGn+A89LlyDMBiRszMykxTteujeRkszK/ijWLvYCfVJWGn4yxHqpceO3U6/A8IO1GHT00Jb+IOrZPZLGRKbnuC+GtNb45ojQX9aKuNaOIafqnmIiwU9rCOy6UfF9Xo3d5Op6L9itH75sw8bRb4stHFzmSouUTkE+3K4L7U/yhUsMy2qH+XnWc/GiOnu5pFYwaxLE80Ii/ETk3BKWaWPtQuIpuZXi2KjmbEAAAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CVFAIAQD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CVW43WHN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.opera/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CVW43WHN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CWA3VVUM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.unagi.unawallet/image.js\nvar image = \"data:image/webp;base64,UklGRgIDAABXRUJQVlA4IPYCAADwEgCdASqAAIAAPm00lkekIyIhKphoMIANiWkAE+S/jOjU9oID8YbwPxKaSOZv5gfpQbTpLG09d2uogq8u6FN2GJwRr5S1k+Rnor/IVxsatOCAdZW1iQj8AsBjiL5YBbGjnwyvenv0p+4CZhKILTB5NZ5OaGlHTIQpyjx+SxX4apnJNe8IOgmOTls6XsaZ3/6FYpTM+SaHtrY2t9H2uuagAP77/VAJHyBc+vv3WNsL+f+dAVhfwviZgReYQY38Kr1/lIQ+u8K8Z175xcU767jB8CLv31hR1o7yLLyn28567JzA9yMKg522C2W9RIVVyDbwhb0QHtWZSioXv0c4slv3Xq3qw0ueil9c3k8A05rwNTIjVQ/uUoAcfV9R0qb/C8TdgVg5DrS1DktxQV9LJx3Z1v4c0utP6Fw6qDTh2OcjbSFc2xfPnHvGRfjIo7V0OrireJmWlS774TTpcOi63UWA1A2NF9fzU6idk/8pRRxbuQ+iy6fPhfAHY1zO/J6/e0fPhaZ9O+kmsO/4UiEBW3MnzyZQrkUKSTljmdewednFnJGpvmlsALezK5S3BGWxXjLuz7P8R3CEB3CEgSupVzuO+zY/VYAhSuVbsmzxv9fUZUIt/PdxqdBKExtEo7g5VZzAz8+8DrNBNPQIE536bVgv3A+eceK0SU4cxguKbLQpSRjiWk9kOh0e8VLJzy71W3004z+5/3tOIgQhB2KKZHM4Eb/dwUmDGY0e73hUPVHFRM89/cohPVIiSjzqXfD2LouCua0xPEnMLnyRQ+t83xz0NC3Wt/3WIxx9JQazQ7fOGDUHL3jPsEWNjR8xonuUrbnS+6wubaifLb5FvK6vT5g32jPCGIa+wRk1aUKlXrpgoQS1QVO1hPg2tHTOi439ndVU0wHI5UtfVu3pF96QxjZXH9d8nIl2TLfsive//EupXkWwTKiL5LNkWuP2x75DaxMuV7Hsmwu+GtKKZcF/wl0NzmsVpaQx5dFf3esDnDWG4yIAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CWA3VVUM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CX4RMA4S.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.zypto/image.js\nvar image = \"data:image/webp;base64,UklGRmQEAABXRUJQVlA4IFgEAACwGQCdASqAAIAAPm00l0akIyKhKJaaiIANiWJEdyEPOH/Aa4N5bmOuK++vOQnp7AZ6viTdPTzAboB/eeo99CXpWv3G9IDNN+wivJ30ZTDBXSmzTvJ662pTM9hp4v5WptNv6FunzLRbSHaUOiQ+aXFL+OpweHlAqDnqN991mlwWAH6yCyVP6RgpTv9vBFP88MM+DHr6ggbjRFLTUze5EN24CNUYJRdzmHZLZZ5jP7WWtDPxobuOSO+qwv9oVZPAnkOD23LgvR+TrNkWdDc0F7qPyaHt+vwAAP74fLE0eEl7HfwjHIxyImwABBzLFN5ABfE9Xm/6h9N2EHytDvBFSeY3qN7KXjPPx157taod/NEGt3wSdDdY1zFG/ejqSXkexvCFPSrrh2kYII6RyG+2SxzYo9GnGpjfFxYhQdqqCKoxYK9b1jv2EkxmGSREXoIndQnr5KM3lkySHNIN7X/TzcsBzdeakad4WnSEf2k1Ti4GvbaHV9+Sw/a8qRMKWO//D4LlpsnpEblOnyKsZZ3s0Ulvp4mMnl7WY2sZa0KhmcJ//2MOhT8SOOiQAMK9Z35zw7msjdeu99oe6sSnTH9XPkfZJDM/Lqa12kQlIK7R8brfNgUI3NRAkMYaV6sS/P1F7LuahtzdyQBr71F2pjyQgGmVRw9pTrmPlqI0z2NLSDRkp1lXF0KPy4LrJw0GZO4L8zW/mwO/ePEquXDPCj73cKf9Wu6G0dGKnoKgE1PMJeUSVOLFZHq3L5lE7NKo06mLxpe8l/7wPbm+Ffz1aqEBH31MRAvuK3/h8lGoRTivldyDskb57n02A/sypTzwzFb7f74FUObLF7oNw71Uuf3PwD2OTzms6cnb/0o57uXz6Zc8CS1ES4LHY+ioz4eUs3Oa+p2BgWptSRos3FJFWROGqhGjSHiNMxDgoWHCnvA+NmFL2RhR5QdOn2/InA1HKYXKFnL1wsy3WDRh0E+jPx3Ptk0zYXgdD/T6rVNrJax2oeiHp0lZu7tDbpzOXqXN7MU8F2RzSPLOJBlYcBb7W5ueEBEeeq06FWN4nzHlyUQTbWFWa9o0HjhH07Mr7itFn/b9rvVq283qSY+pq++P1c35llHHIF8QGJESt1jQfx8cIApau8+Ydvr0/O1g0OoVsrA+EHoP+N9iLvNQ+cChfGvGMdm1I3h2EjfXkaiP1t0W6NJq2DWP+00rqnhauIBhzw8s4aXSUeiFJQDGvPXZKS+meY70oDoCUUcKmwhKWH/FiSsvn/5KlOOPcz3ed3EGIVEVLJcP7JJocECHn5FDthJ0sxghRaYcmwVlPBEGFfv5MPMXX1h2lNDckGzlP+conIVhr9pvdhX2W/MA/CT+U9tT5NbGpWCIsxOzKAGF6OYk5sAMCyUBik9fqOzTRi+v1yRrOAfw84kAA48AETnb/bDyGNqK4DhMi86DVf1HbUCW3riaC23r6Q1P4Ap3sj86C1qQiG6YUhIAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CX4RMA4S.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-CZEVKSDD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/smart/image.js\nvar image = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwIDEzLjAwMDRDMjAgMTguMDAwNCAxNi41IDIwLjUwMDUgMTIuMzQgMjEuOTUwNUMxMi4xMjIyIDIyLjAyNDMgMTEuODg1NSAyMi4wMjA3IDExLjY3IDIxLjk0MDVDNy41IDIwLjUwMDUgNCAxOC4wMDA0IDQgMTMuMDAwNFY2LjAwMDQ1QzQgNS43MzUyMyA0LjEwNTM2IDUuNDgwODggNC4yOTI4OSA1LjI5MzM0QzQuNDgwNDMgNS4xMDU4MSA0LjczNDc4IDUuMDAwNDUgNSA1LjAwMDQ1QzcgNS4wMDA0NSA5LjUgMy44MDA0NSAxMS4yNCAyLjI4MDQ1QzExLjQ1MTkgMi4wOTk0NSAxMS43MjE0IDIgMTIgMkMxMi4yNzg2IDIgMTIuNTQ4MSAyLjA5OTQ1IDEyLjc2IDIuMjgwNDVDMTQuNTEgMy44MTA0NSAxNyA1LjAwMDQ1IDE5IDUuMDAwNDVDMTkuMjY1MiA1LjAwMDQ1IDE5LjUxOTYgNS4xMDU4MSAxOS43MDcxIDUuMjkzMzRDMTkuODk0NiA1LjQ4MDg4IDIwIDUuNzM1MjMgMjAgNi4wMDA0NVYxMy4wMDA0WiIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNOSAxMkwxMSAxNEwxNSAxMCIgc3Ryb2tlPSIjMzM4NUZGIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-CZEVKSDD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-D2BFLLX6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.enkrypt/image.js\nvar image = \"data:image/webp;base64,UklGRh4EAABXRUJQVlA4IBIEAADwFgCdASqAAIAAPm0wlkgkIqIhJBIL2IANiWIG+IoEA1WH+A6tkb3nPxy6Ufo7v5iFEa/eueYD9m/WA/zPrA8gDrUfQA6XYr0nfU/OgaWYQKGIRTID6R+ueNNqSDoGL9HDzM8oMY3XXQV30V9A1tSlUZIVaG8Dr/8v7mjWVDLcCTYc8ywU3hwe1krGlLDvW6nw1/i9W2ErkFgcLidDR5kFZY3CDsFMUCRKqCeA1eHMkVkpsFrTW4j+kA6f7nqUZAAA/tJ0pCz2P1wH0Hf0LaRXvnpmlLMB1cFV3ixOtn41/Myj9eqFqNXFXW5KSKUyOcqJfhSG5e/aEAGEViUPRYpcXFgDUUH1lFtiq2chmgc6jLWTbJkU3fQNZ+i+RLTlCNv3J+q51RkUItegLTgmGVJGKqlQhQNGziwnzJYgFJmD5MqxMxOKLVMOO+qfZ3djgJ2PtmInqCQ5P5XsflTE/0VbV7D4sPTVv/kGiW+ojpCqPDumc4C11UwY0ePhSgSRWfEUZPwtwERQnwf4ASjs2UJnn/wh7gtTywF+J74NDGhObPOefIfMfJz1mfP9uJzTpVDwwJo/QEsvFpu478QVnWQHb7/Udx/dRqCG1V1jzIG0TQ5RN8OG5qRHT5/ASkhrh/aQza3w7kiWq8OBuWLKGjFjiSEJwBFniJIiNSy4kvuLN7wLmS2iNjRy7DmYy6Wu57ZKW9J9qlXPRFK87bp8tqfuzNENvx6ZcM0p50EivRSO1kBBuZRovNch30SgMPfLHH0HeSOj1YOlD+xfM+aVWf/AqtDMePBJ9sjdze6LkuZUGDWGVxL01Pa1ZstG9fef4AGwfXb5/4lG4Zq5IBFTDq4102heDjc1ofh7qspOIWZSRJ2VgWsEJzNGus/wLzcAk92QmusVjg9g5H3MjGkPtxIITqP+CGbDdeVUFLO5WzLr//dcxf4olr2EClWzjpW3ZJUt/+ykdet9P5oto2nYLYM3SZ3oYUL7oacrl6QVD8ePtOC0VbsdWWfCkwDzgdcsZ/6U+5eL+tSQf/Uy6ISeUzbrVlPJwgwYvVEEXQnnAldb32yF+j6GSBOtdLP0LKN7ojQVB1n5ncaKni2ekijbngjqnGCmvawHvBF5ZTXBq3re0h7DMZzyth7k9+s+Cm+eTgJfq5PYPZot9No1YJ6DrI+OQBESD1rW+CHaWsUsfKUxSBMHF8wUOGOFtMzYQDbTlbSSqtdYYZuvb+me/2Kgx8rN8+ON1gVllfUsp9z77yfxjC75/sKIUsJymDEfiaC5ZXrA+k9UpN2Q+X8TN5y8hC4OyP8KcsvdS7IG6da3zLXw9huitBFCiPutmRqjCVIGp8SmZPw51Sbtpv57tHPuRc6l4KWktQH0Rlw1RDM4LJO6+IAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-D2BFLLX6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-D3PKEAGG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/it.airgap/image.js\nvar image = \"data:image/webp;base64,UklGRlIEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSDYAAAABb0CQbePP/LzTiIgokcsHA5FkiCCCFCpIQgQlJKGBEJJ9ABH9n4Drwd7ywE4lcDY0ef89wABWUDgg9gMAADAbAJ0BKoAAgAA+bTCURiQjIiEtE7rwgA2JQBq0+v4WYAns8BHoc24XPD+dfv1TaAG/uzmYCEftSm2LrgRZZePa7ofpNytPLv5torqa+PZsQ/8eOZRqPCcqSrhHM0Ke9bGX/+TlupPmNLgLSmqXf5Haa8cX4vvthAdACjTRbrmXA3cARxymktCUOdpSk7WTBKBleWrwWYdyMC+nxHdZlmgNgSjhhO0zQxngRHo7o3+GeT5E2JHUAZwT8GTxvCPUP2vojaeec7VMtcz2/evYkY40fSn8+7kAza+cM0HsbWLamAAA/vyoAKDYt4PCLYOS8ARiaF3gP9ss6fQq13QBqkyAh5pFdATbbjdIUTkwLTJUKjljO8OYeyzSu/A7NBcYXCcALserO/pFHyBuWc/apLLKWCdQuo9o/Ne+pm570b2OfNVFajcZEMFArXYWw3DeNIxsFgGJubbFU6CtJd/UPyCHNLvREvoZB1dw2Ro3EbSy2UxAJl6KHVe883r1sCLUFfUgauSXcSO0vEJqH1DMIDGUI4/gMLfl2yJO8fw++Bulk08qf4ME0VRH0IPsLkLeAxP3Pgwxm1EgX75VHYkbyG4p76GgbtCJStQTGC9LULUXmTKsB29Ka01Be+lFzyG9Ouktiib15I55Q/vFG8tMY69nwaDl2XIVrSHz3hiMlQNKfWGvJWYO6oI3RCKqFfbzgjqQSmOKsH+CSURjd6fLrA7wd9baNN4nkh7Hto+0o7HZTqJOIk+jbdSglq4KUd21qMojljwXi6xz8CZDALPXrZuF9Bq84mKiEoWx+OKWWuHpMVEEOngD32LxD3OvADCV9Q9vpz+fryKBkvyQn6nr5IyLh2Mwy+2BPPBY/goKp9gzRf0hb7Zfruke4MV9huQqoA8NZAbVCXQjFChJ8hoomSfD4LUU+v73X2XihU57fV5Hyil3xuLnyYfBtrbJ9K4Dzart5UIV/B50OwbKkE69TKWmsAcrKvaji9wCHQzhQDKnc3OV6KzhrobxIyFKZUmccbwBR2Hg78/8MVgIY2Ff75Nvi61Wh93EXiXwnJ5HeeUEEDy9bf1eq1tLjlT6G9QPqRcdU09nntO3UXC59kG8Mm+GcnFfRitZJQeN15AYzYaBWT5KpN212hTkgnuF+GfFGG9V2DUTmWc4Ifz8s2SToQjCD+fv76sH0AFalsgnO84PXvNRe7U54vtLwzrh1iYmpJAxCWC2s3oSEJ28QN/IfC2qrqVfwligU8TfvDhoSqlrpIrewPWmWFL+SmwwW49VnuE4b3kSnVG7+QhbaJrv0ortsJsc2QXgDRo85YeoBkqBgPp3T71BZrTs+IdR4i3LeFHJwcQAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-D3PKEAGG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-D5ZHP4L6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.clot/image.js\nvar image = \"data:image/webp;base64,UklGRlYDAABXRUJQVlA4IEoDAADwEwCdASqAAIAAPm00lEYkIyIhLpaosIANiWkAE92fcK9TfPlSfVfMjSBTM/J/9UEidAuIBta57O8sIVOoT3pkgn5xdb7iK68lIPIMD2wpMo7awzmxy3t1r7ggeFimSo7ZPMrW0yyH0Ols/ENZdK9Gy+3QYrdQNzuU3H3ZWWCIwJLKeaumxU16Jz3LfB9uM1kM0zhcjuUkn5PHP/tLgfS8BCfxJp1zkAAA/vuUAC78PQt9W9Xexa3U7zdXhE2nbPN051W35GNFz6wz0fCn/yOOzTt7yd62TtuKDm+4GDEEai/1cnS4HNUKcDCPRLoU6psCcNJYZ4Fmoz+OedLTUmpNPcHqvWYbkbfheWxKwLxdZhdXkSg8bMzFSYCGshs+oB7R836tD7/iLo+wZUQr/qzC0gN0/DyGMHOIVkrF/dnjjFkVI/DYnNtOwJL0deyHKMIOtfclpj+S75d/mROwbQqCGsCd82ti6oCXotzNg/QxmZmimowcfTyC7ZL31DoVH17lCKV+oV8BdlTBzyaOUXozsrJnpkusssfu3oJPVlwXLqvqQr6zfe9WHM+2nBIEjYGmF0r/9jpHyl4Qydw9sk5gcH/HdTNiozfoAkrYo1ByDvtLXdAUVqyx1z6vbRhMgw0yYoExVxudED3pUqDGP/s8PEBwm0zegYNcJo6zwNzDnpixUuyNgpWl2gF/hUbq6YacQnWkZ2I2JgvuJa6CpP/Y7jFb+/NskBxOkfYFIJUGrDTLotja5yEw/Zgf//VXohe2YJNTSFTFwqwV5p6LF60WmraFQnMJbXHANEA7/vfExXlLzYDzJOhuUWHZ2NlBr6ze7+pmn6hacrhn8NxnCppoEsnM2BuT+RNoSGkLbMh1Qbcfj5uG+CqQoTi0ip+eKrS67rob6+Nw+/1tf2ZIiDGpoZ18yGznRaJUeM8LYiST2EjmQ0VgypEGQzdENx9hf+AAPIMitdYhj0Mlv5Xga1/bGNC7ACxbq+4QyYNhUR9m4CtXGL19LoBYhQ+8GunHZ8sIfl4zUIWp8HVW5WFbEtIx0Uo2RPPrIzAzPhsf79Bq3ExSGSOPVE7zxg+/Nhum4un60rA48QU2D6WZbGkpLsB/UaTYrZ7XqAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-D5ZHP4L6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-D6HXSW23.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.usecapsule/image.js\nvar image = \"data:image/webp;base64,UklGRrYCAABXRUJQVlA4IKoCAABwEQCdASqAAIAAPm02mEikIyKhIxVZ8IANiWkAFeX9j/9V5S49Z+51wNhw1HVVQznx9fTfAFG5QNOFHJHkQ/BIS+UG0jgOB/GYIUFUV3YCzg/TkaxYtSCO9i0X5kpJy2M5rlhvCfU/aqvGi17/FzWYfrdaC6a4hafKom5N/vGjoDEGZ3pJIZSDuBhfCnGYr0kmsGAAAP78XNAFNh3f4p95edTJnOWjFYjtkNV1b6awNwJTsgSGK80b9iHOIFTbuSU5ScByx2lrqIc6eVUcSIVyruqP3R9h+01RFWCFdJw76qmG0a5t9nPQpZT6twMJO/oyCqhl5WHcQZR4MH/+Sgqkr+YXXJEODO7RSW1TexO2rZgVg+0zEi1TFo4fUk3i/uie6YJ39J5z1W3ItneXnugJfsSF5NS0f4CeW9r+3q6ad1P3H1CxsDsAnZfJIQp9vziLvB85slbtxPKxqiUY29tvsLexkTf8y1j7/Q9RoXC64brLPe3GcMC74N/vIHJEUZ71LEqclgK+Tf7xWOJSYBDE+zmTZqWmExrZkGzDcQsTyO+UNNfvZYA4L4nJwAVdzKzgbiD2HHVtsZ4EgX1g4dTKCzZ2rRfZfPIGu+iVwUDG9Hb7W7X6Mn/Bjx2KNcVa50C4w3sOQC7fpUvZ3rAUAMzqCla7vOtnokmkgU6h0PAWJNuYJP0sFr0aEHdBdOMid4dcGCg2ZgcOD/rPdpweuhV6RQlzIDz3vqgPzwr/DdjCg3uRBUcyEo/bMteKWq7tkBubbg8UBabuCesbzfQ+2q49R6EijFJBEICL9DXDT/ajedlhxHnyCs3zs/f58Ed0aFZDCmhkVrH/ToEvHP6GLnj+KZ0Bj4lMvxJ2ZJQGW4O/DH6KlW/dTyqRfVePU2o+475FGe/2eTgAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-D6HXSW23.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-DFLQ2XFN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/money.unstoppable/image.js\nvar image = \"data:image/webp;base64,UklGRjQFAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSH8BAAABCrnZtr1N9RNkd+QWVJGhxotIlacglXZvBvAIeADiAA4lZoGcc+Y4khWuS295Ll59X0RMAAMcTudL58+t96jls5Ty6WETenLWzRZK+4+1duSwJloqZN3ZZCg9c/NrV+/RfiU61xOYNblUfUeoMslg+p1KjFIdCWIo14xxao6+Ouztd6xq01vn6M47WtFOT7a84xXby9D2O2Llb/0rMWbKT5bbBkXX+mGyEqNW+dazHOMWJZmqAlMhE/PvyDXBmTVoQuNcQqOOZN6xZ9Kr4Jgvg5PiHjg5ugd3/1wDx1YbHOM////5/z/grTY4PtfA8ewJ3GNxH5zmy+AkvQqOIxlwGeNcQqOamTVoQpOYh6YJMlUFpkKyZxnYkpLkZAWWCr9bThOUOvyB/SugKObXoW1ISuPR3gEkNr12jgoc0U5P7LC3wahN43co1wSiOZoA+50KDHWEgVqTy7sQKJOWCbonNb92FXFXoqkehpmcdbOF8t59rR05rN1LuZB1Z5PGJwBWUDggjgMAAPAXAJ0BKoAAgAA+bTSVRqQloiEuFAgAsA2JYgOwboP7S1P5p+M38d3DohOyfjp+KvXcbkd/Mon8J/LP919u3ar8wD9H9wB+zf66eyP/nfYp6AH9d/1XWV+gb+2Hpj/sB8Gf7W/tR7Nf//1nVXuEDbBnUqyPa76W/GNbRmAp7yRtvCUICPzi5/sJJGp854x6djXrqPSFBSIR7fe/ffNbM6p6msAq7hEDinjIBvTWFeY145SUdiC/CbRCJP6aqaV2XRit4eTcgMWAAP70gS6nH8GcBICDC+ZGi3cmfPnseKNAlC5GFKr50eU7EPb7Y1OZ1tZwYMoOsZLjlTyvM+Dr0I2EYZv4lvzqv/1zs5MG07AwPD8fwIy5euo9fnm/0+vee/uWxCmqtHqMcJCh/UrplrqktmUAIH3g/pjdsLD67ndZOie2jGGzdXakWV/xH6WP8xuZ1HfdwPTYSOPCDf6LVcUViFfTnhQ3iV6mSHM+o+NGanb41Cb5osHNK/FdfPhPw/aN/sJ7UFm46zCoLeggZgzbW1dNsgTlCIErIsGegAo5JyW5CG3isoIATKDE4Cv/mBG8lQEHN0hXBnjgANI/1UypJCHmukJACM9/vTJEYv3fPsB7gLeV6+Q4EYfEubclNJH2S9/2GRo+yP7KwNQMJjkhjAFofUYl1fQHzi7BxLo+iv3+1YgI97ly6ZIUxivDgo1E2IDM5u6QdbOnFpZ+nUeT83syzxsF99MPZ4qdZ+kyFgazISKyNviZb7rHQVfejqs+nJMYr8SlbVbFtEbf9klUM+nHu5rpGNUnGCSkAwbem1JjeUm0CZ44ckMclBI8JCV14aqcA+ZqpnMFSMMgsOZh28LR8AzyDGyTyKXyUetcdNq9W8k4LEN3FPTS+a+iV8c82ieyRrBkvuqE2dNtl5fER4D8HygaDk3kcD++6tO9B4/h05jrU7OVBEkmS2ZqFvVvbaQsQr9hAo78CV3CK0vjsTdTVEcaGhPJFmOY/nelhkA7jWsotAffsSc49B/dSqn13qX234+2xAsWiNIt/sGoAYQ15imZ6VPMBnkz4sHxj7UFYAMqZy1R9Ol3Ia/R8kz9pmPSFhB1rXcLDlF777TiTk3YkOeMklPo0aIVfXbv2fKSC0W4Wg49sqx0cQaJGO8OjLUdYSLpJl20zdHJYVV4JFIXM2TWqz8ELsG3iqbd+qI74FQKyp7iAE+NVAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-DFLQ2XFN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-DGAWLDDT.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.zeal/image.js\nvar image = \"data:image/webp;base64,UklGRhYCAABXRUJQVlA4IAoCAAAQDwCdASqAAIAAPm02lUekIyIhK5FoAIANiUAagggGn2/Enh1O8HRote53L+zfsBrQHoAdMNkPY7NraRVYPRcst8XpxduE/mcBRCLba6KAzbWCtGM3RpwwPOK8OSc8RfDcz+Iww8VzpMkhzpPtVPJ7D0cbDwTV+VKEAAjiIwDjXAAA/vAM//Hbmy59W/yVD+Rx/yOPyImU4CBVU4r5/bE7JUPpCir06DUmdvNHskgByyIh9cZ5RPifFOn+Q29L+t6gPlJkeBoUUo2oab+9QteEy7owKVDeL8xv7EHjrGwPSnXdaJ/4IF/p45ifBxvzfE97fr/ibCteRFgAqXG3s/jedEOGVGrOh+degdSD3aiT3FF/jJn/Qf39s57v/oP7lgSbA9GEhvAepVaaFT06kMgGz3UuePHxreLKEDA2vK3qoDDQyDElHVPiQ3dj6/5ndpRk79pgfhVhqzDzhAbaTRh994NsJo4jgQ0N4lWtCPL2+w3tToDv+Y+zxyFJq9+JSRVemKzCo4jTUJFScIHJP/HbY0Tf4/+GjL/8G/VDv+n+f+rjvAcsUgVgvZPStkXYOPs0f4hkWLy/rlM+i7svj+6RA78N83ev6z026NQyYdHZ96NA6GOk/2CH23A1P1ZP3sCRBA3ARm5Zaz1bA9sUf/QddcgedWzCQmoWrG9ZwZRHcU+0wHddAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-DGAWLDDT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-DJJHB4NK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.midoin/image.js\nvar image = \"data:image/webp;base64,UklGRpwDAABXRUJQVlA4IJADAADwGACdASqAAIAAPm02lkckIyIhK5hYMIANiUAaVUs/27s/ugd5/IfoAugo4btvmznffdj7gH619Lf9pPUB9wHvI+lLzXeqP9Eby2PaDR0QyTgnvRvXtSq/pm8v0/tczD/0GCdgSejh07mHofpBh38kM4QQyB1Gp5bbzwEL2ul37Hzi5o6EAxrC8teIUIOHYerICR/hQVuuktnMtTcLemq4x/HrOlwROFfb6VTDAPyFjchhp5jO/CnVkYgrOM9XdmwHO/ZsxqXFipikiDkrzMsAAP7xB1h/2pz9NJ+mk+hz/jMfmH8zqxtkiGHE9zhBnn+uS1W4f7WoB37ZAZOY9jEswugAAE1CQD1IAGtldt7LR+cy5qSApupvu2gib3szMmtq85iRjl1l4k70RGnrz16th7GfbS5JZ3AQcqGW7BHFrMY4xu4LEkK11n6WQ1+UwC9tT88US5ejGax0kfDnYMXVwBqoJNRKJzEsUuXx8vLvedlpN8NJX6lNQV3K29uC2yAfXFDEylPzIbSuw2MyABX2HUCEhawo9ZaPf+rSvpgU0dYQPexdUbIXJTXoNtYWSTt+GxmTWHmkYVyP2lT2Ew2wbrWDlZHjP9TmqKld75ZSzz6QfEbKudQxDyMpovfAo3bST3a/fe9fU/3m9/5r8xUrfZ1/f8c8rSPB+Vu91+w5sez2TLJCSjYDhHPXWYxPFDbtv1rgAeHWYziVc9yruolLQ+F70gXiNe3DfBxPXnKjbCpAWhUNo4bbmValybORTH5wZWUOYeq7nwmlrKn+Mm5At7wPC5MEa7Z2k1euj9TZNNrZF4xgl95OFH6BQtHqUCt8HmEZZu4fWX+/Czq6+f8K9aZR+eXV0KIbT8PTsfwjmZ42aOloelAY8bdWXgTfRmfEjuLvqL5p4R7U7OFa9E56YfDB7uqkhT5s9mgYgh8VG/zbWIvhgUEZdrqo5d4Ayi4YzOjqU9+bwCQYzAKv+qh/aw2rnfYLopAn2mi2FmJiF7rRVCs5Q9lp0hOniQDdCBy8OWXRWO1F0j0R1kLadQtTzLCkaO2UE8IM4JjUETZ2Rv6v/gWcZmyiQcrwys8t87uvCxFDxhlotMgEvhV7IT/VcHBUSbHM0VKpK+QNLgpL2KVelgbfrDlBRwozAVoGT1Yaxm9MiMtb402KyDzRxqvAAfKCeQ2RHizLQrtBrbpOQBLgNzQ7rjAp+I9vG5iAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-DJJHB4NK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-DQRQW2SI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.wallet3/image.js\nvar image = \"data:image/webp;base64,UklGRsIDAABXRUJQVlA4ILYDAADwFgCdASqAAIAAPm0yk0YkIyGhLpyoOIANiUAaergf1ztmMv95/KT8gOqA46lVP/W1fUB+df956O3UA8zX66dWX/O+oB/lepL9BjpbfKc1WxkciB2Kpj+xTAnqKBRa0l2jGzD8hyNING5LAPuPmRWcHMML98tXofozmqHc/T4CQfu7mqS8SJsfF60jN7n0Hfewg/wjbQRbCSh1+EmTytINTNqpFsbBvkfTpmxZmsqOefsXEg4KMJBeLIi1X6Yp26AA/si/+yeMgj88SzxYCexdjXBZI0afhGT28rgeGMR2sWnKkegTfesl61ByzBr0p8yJPIr2uPRlUA+k/dhvacXJvdRD9vhDFOukwspnQAj+VRd4G+MK+K9BbAY1lMb6hN9oB/cyLZV0AVC8lgT0kqKrrtmIibEJRKTUibNj9/Ojv3yf9r5mMagP9v0TC1z+5on9271Dq+ilYD1tku3F21/DYemrpCrtDNimKDaglevPf5AXPLPOHFGqUIvkhnpfBX/ZqHWcy9bWc0+rcvGHCiA9yNW9pQ/a9ZKOIdsN3F6YMPFbvmu2KB4Iej2Ze4xqIDmkkgUIKS/ybR77XyZPk5Jc4LhoX8HTnOjOvK7NeiULuKL+q8v5/r3u4N/p8T40wMoPNHyeNjsA4KmOxniXa92h9b9S0tHYuR38/fidi46y/5/ImMvt2ee6EtOJLrr8mH4exh67fauvcGyT1I6EWA1tRrTtr0w8+bIp95NSFt42Tf5QJ5ovP6GlhCac1mA2cV092oMqTGcwhOU7snlUKwrJzDdupsc9TPsOIM6gs86G0uzvuXCYwc9jAk1AXKVLj2k4eDclbxC+7I2zSB60tLyFihWMUq/n/kMzNcxZ4EriKWXHG0CMA8Xkr5TtHIo9mNv3EI7zlTEmz80Bkgsc72aEsoEdhd1XwsUSHl6HQ5jkVV8EIUPEk9UuADNxAAMOx2gwO7U764xp4dV8nOZaGWOn4RQnzVtjl7dSO5uq5G1E3JkYE1kE0IHCxsFp7PS5LS4MlwIZwoH080Y2ZPRLwXjrskJK60rUWJlqY6p4TemYL9aOTWf1AkC2ABwEk1aGkKyBo07dkvhn9QDVvVLV3LkzEON4/X2zxhqc4tsErBLcSy8cVMNgI4+LTESccxJMDVsI6fqxgrCjnF0v27wy/DwsSw0yIqYDzJAxA4mMSmMFb/pGfpyilNlsbldZ/g6H834EZl+xMGHWiOryFcQaxKdqbDB8ay0y984HRQcq3SUsgAR8AAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-DQRQW2SI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-DX3LHC5E.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/cc.avacus/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-DX3LHC5E.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-DXG4ARNI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.azcoiner/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-DXG4ARNI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-DZDKYDL2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/social.gm2/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-DZDKYDL2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-EA2TAA73.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.broearn/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-EA2TAA73.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-EA6HZGAP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.functionx/image.js\nvar image = \"data:image/webp;base64,UklGRrQEAABXRUJQVlA4IKgEAAAwFwCdASqAAIAAPm0ylkakIyIhK5b5kIANiWMDsB7SX7iwwMAuc+3CfO8oUt2gy3AhXIjVwd3iYAbVkkyov5C5HqCQtTxi1AJotaxObeYQF/ZvS2TH/Xz8OpfGqvjRbW5sMIFoCSgEk3fnXzv+YudsBBbq6aGK8SatNnj2lVksjjbhP8wbDOft//8V+bObDGmUDromNc+I5ewfzSRqKxn+kuGicLbL7Y1ZW3L0ul8EpZL7ADKjUeI3vZpsDAL30b7RgAD++mtWQ65h8G/CDnVAjU/B7HL96hH/OIZrv2NAdFQrMwF8W7Iw7RaJFgPNn4cL795282xHSRGOcOTJ7MxhqeBE3OHMh38+atEO0MSzT8kgUJiJu8tpPbd6feRYgg25LuZa0rtFWqCaDCtgNcuba2Oj75e0oJxpCClz4AB03Hcu3go4IVZAe/v5LzbkazauOPaiWB6dvcikD1tIKzDjFUiQLjLY8+edE91zShwmPPGAzlNvSArMXN0GSrEEiYQLWYCdT4E0qe9832ayfYudtMi0XsYO3yZaZpnsRgmnOg/857c6ck0klfETMrUmDNcHaweWrMZL4mczsB7ybG/Rv8uUPKVuVhRzccC3Xl7GSGVhlzGxC/Uu+feqVk2NpHEQ0fgCQehGoEcULZZ3lqYzcsPEdMgXWpe9lHQ77D9zeXpmXLyxyfGw9iJ0OmTyrXrSriIYjLfVEdQWjDuDfWkB2FzN5WpQfPulsnYT2bGaMBjScj+fVJeN+ss90VBO+apzxfE1/eQkUtAZbL9ZtQ4ENacxcqhaip5y9Hcd9FUe6M2n0U40iDWD8/0ZVWtl9338GOu4cG0cyGlYHdcOnAj3TV+eyjMhfUsrqt9WsZ8gt8XrynofoDKmtOEX5MA91GeMonfn7PqRG3P6lg/tcupY31xmGoJq+f3r+qh9ub5lGFXJt/Qg3kSDJRGoC5pwytfr4wTatI3fL31If3NCp8GFjKmaeQazfAjJNLItHXBKqrYxHBs/2tHNWqfS5gQANOc650L4jJ9DLLTmyhSYZID8VnCEHQllVFDlM4DZZCq2+yzTTcvsRGHJvTJSb9yfeG7xj2EXbhys9pH1Qy6+7Lhi+WeCb4uUvd019pBusKvd47yFxZ/GDSMpXWtASURifB95OoDH0Qc4PffrrnvP8v4nrCFda3FylKcNh55MEydzRUYZB3KfdyvTuQ+fafBoVrz7/i2yp8gDfRAXlm4O/aZ6u7EGj4KPXBZMWUBEly0cXa+Ji8e1ncYYiZShYsd1DR8ZmbwLxXkcESe10fS4f+QL9YA/1AWkTzdQYC6sZCJ6ot3/suN3QV034t1wOmBJmwPxlys5z6Db6oADX221Hz/Ea0VxXwrWFHafB5sSeDbKT73VN3VAUW58N0rhtwT1FyaNZ5VL2UehEWIQ0vKtSJn2PcFuLfV0gF6BWfCnK9VxlvjQOsHi6qCPgKOYM4sd81N8tLbgknFe+54GxbTo2FryIza48c7hhMGYfMvKLvwuJXFJxMsHXTV6kUfn2qBXyuYECAHD2YndWh/DYJiS1HaukOF5OY211AWalKblnPmXRGgxdcJOAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-EA6HZGAP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-EHTA7ND2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/ai.spotonchain.platform/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-EHTA7ND2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-EIETVCAX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.amazewallet/image.js\nvar image = \"data:image/webp;base64,UklGRlYDAABXRUJQVlA4IEoDAADwFQCdASqAAIAAPm00l0ekIyIhJ5M5oIANiWkAFeQ/1/sx/0P854kDOMfSz9n/UK9Ovhal+BL+WcQN8z9QDxNv97zH/RxEUadzCoymsTxGclLMOkLQpGfKZAmzlniRbnjnZH9eqAgdX75CZFoDjvHWPzncgTaFOPhSvFi0/SfMcSZzAltganuP80jKx+2GYNfghbEQNU6n5kEeLcUKO4jOzcHrtycCCA9uKiRW/l5k/TjXzCo1xpHgAP78SgADoVTsT3CtVZ9LKUiFNf/rNFdfIcNNteqzG+PCP57/ZEbqnD/4KB7KC5owFfU5PJpl4FDf0tgNZBWATMAbkNiewHvdri3U3Fx7XzqB3CVqrbKr6TPg/fcE1Ny9OwjboDN4ECDxi6PoWvsvpT58SG+hhqA2EiTd2RbvcYN58gprYFnVfx3fuisv8zI6fza5XFKH7jQXfBTMLsHKJV/0R3JP2I34Qaa1qurwajEvvUl/4P3qwrzBaXGmC7FKSg/Q26E+zf5Y3OtbKXSxC8WjRLitv5nuzfAxZdO5zh6OJQACwN5G6CUy8d8WuwqaH8tauf5u/xV35VlD5uVi7/ZzRHUne9zhwsa/umEaJwB/BsCcN5Ind2ERG8EGMnKAyboldeEIvc7rvNjHEsitRuq+fqlFlGLVG3THb8qtliClVtWie1lDB3KLX/h+9P5rIHlxrUMKxAh5lNfTlbH1AqCmuP+Cwdv8ThO9TyBBhNj+c5Y+sevKdSpgwGwlBuHDNoIBGH3yxnmIUO6HCwE1ShYVF4Go3HVZu5317DFDqEVwOEtBTp8vJYbYjlStJ3Ft6VZek/Wnw8yA2zWdujZlZxAlZZ84mM7uFccFrvgAmO6DjJDPkoBiLAmQhB4l45wbOUpuwQ8ZJ9Dpd/qZlXhtxhPs2ObawTCYLP4or6rL+wZFqB7xpvTzp/q8r9v1WSMzhoVeutJsJplNGQpvcQEpwuuccdzTXJC0a0ZDTtTUlGrT6phzgUd7+wOtADGbAoXSOH1+gyt7OE5jsbhZ2htvJQ2jgpL//05/50N5TP5PLreefi4Q8QMC3MYZB0Dy/GSAa9NKwb+KPO13OX0f7/tnyBe1evCzs0C2kp13LoUrgAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-EIETVCAX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ENIPULMK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.thorwallet/image.js\nvar image = \"data:image/webp;base64,UklGRsADAABXRUJQVlA4ILQDAADQFQCdASqAAIAAPm02lUekIyIhKZlIiIANiUAal4nVX/YvwhiJM6DxDP0w3hH7OdUv/w+oB/a+pV3nvBtcaZLc9iuu9vBGIvVamL/w9H/kB75FqQAhlMbDtbRSvS4/oKB3RbsCt6DCG/ulwzgdm6QSmywQSZBzQ5i//7qFeo1FL4LUX/eIZ0yCLB0QDTtLGgGl7sBJh6J/IStD62R2dCjaBAzFcDLV55YHrVv/BG+h9p/Tsps1ROgA/vuO26evmRmyYaVj6TvXsAwPArUbH/KdG0cbAT+kkkA3Xg2mN1q4S8/+Y+aKk+ni3JF3MZm7K3rDCiO4hXGcvI/LFMd4pPNi/PVRKTx70pc8tj6/nwGaQ+fAaqFYARBdmjz9ovMQE5SLSV/xurzF9vsbrSSb/K3O6lfsNVhkicuHi0086Tw2x5kF0EbnWxXoR8OCmSBabnkY9xBXm+IwegBQNIyO09hF02P75Z1xpC+l0Vt32k6eh5FdPv+Bd0yb05EbArou+Hq/FAL4udufcgq5Xgk4v8cyTunkQ+LO2+GewKOKk9DivzHqLohwPmoSmsKuY+PQpFjM52N3Z0235VGfuUJDF59OURcoum3pOSxRbdTRCSEIaJPAVd+9O61cAQRDU7zZsglkf5AWw6+MmQDBFll/oGjBZI/U4qMsYER3W9yBW7Ao3dANS0h3v1SzAR/Ke+gBg52zn6S47wLcre5Trl+A6aPphr9V3Og/QJC/nFNekwROFVeJ6AxM0In3vPXAuZD/JXGo7eNxvvzkl7ZNkBeO87/kA0jPx40nO/722xrPX5D0Ahm6L+L+mGVgMnmpiRpdpI3tW1WH8RPC8rCY1DyVIq8F4ELmlF2Wd44gBEmv1vMzZXYpiaJQ4rpyOkOnITw1cAcfQqJeFNPQUfKQXdgDr41U33bpWmteYeWUrEXf/VIIJWIutjWg+NMMLi4hGehW0B49qh7YzwPeSVANSGi19EyF74XFCckWSjcAupmua8xj1Bejk4a2B6EU8Y3H7ycnAtHW71ZwY8aLqFLF/DD6swjIQ5PtrVitS3qVvI3Wy39BSWXaiyJmq3qNRNa0FJtV2xQ61EMyUz/gWa39U/PbH0ckl+1trKnVYNtO5v4tyjMInXtCT19R6iT0rVF96a/5wDC9qW59c+kI8ugjqatDwv1Ct8vtGlcPeVZ1Zx+P8IyaX5BvH1NpqyaWwmwM7dHtqcmAoKX8uJfx6Cob6mgwFM34cbid7QHnPcaeJuGl/H6BWxOAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ENIPULMK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-EQG2WO73.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/zone.bitverse/image.js\nvar image = \"data:image/webp;base64,UklGRtoKAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSBkEAAABCjrTtj1Oq28LsEUot7LGkmPFiEqOcmW5yrb+AYzwyQeXWTgBDb3gFzjnbAtGFZVzzjkxjjoJnTH7naCw2v3e/vneNyImAKF0Zi7/cejQ+P13pbKn8Te/uz9+aOj7FTFHUdgUTa7O9g0fLd54NlGa/OZpyCRPPLtRPDLSl12djDaZze1c2Zsfe1HWfuPFmPRywjWV7cgMjn7Qjf9QGMjANU8klu6/7OmgQvrTsYhR2uLd58o62ODueKspHJm//YEOI2+eF3EM4GDOnjc6rNg7Rzmhi+Ze6TALR0M2vee29kIFyz3Tw5Q6+4enw44/zi4NTUvu4ZQ2IWRHazgWnPqiTfn59IIwdF2e0uaEcODadz21ZmW0BWvWcMmalvPxIHXu1ybeJ8FZfNKamSUoywrW1CyBcFIF6xkKllNOAJYUrGdNDctLGpc4aT1rblhONCq+z5p+PzemLa/NL+0N2VUigNGIrqeWQu7yb8FlTaMs8Kv1tEcETrX4lPtsqQT7k3po6RT2I3JmihCcER+yv1tKka3Lid7ySMEtcepATlPLdThzXnnEQOY6NU3fa+kVrmneG4Iwv5bWzZri7W01xB+QxPFqkW5LM0uV2DmiOFYlXSYK6Upuv6YaboWOy2QJKmQ8spD5nzug6R50ASRGCRMGsOoDYR8EaNqkKWeoGXnShJEcIw1JteY5aVjjZMukIRvLadp5xQhx8v1h4o4OFYkrHrpBHMafESf3J4jDuxJx/HWSOCl/I048EAdLPkAcykKclCaJk3cl4vj+BHEYf0acHLpBHIaKxBV/PErc4eXDxI3MzBHHTrZMGrJqzXPSsEYlx0hDUs3IkyaMpk2kMRRWfSDsgwBIjBImDMAdJGzABYCMRxYy6v8dl8kSVHD7yYJbAekyUUiryrFzRHGsSqSbKJYqiD8gieOo3radpM2tNWD+G4IwT9U6fS9BwjU5c195xEDmODXByWlqWdXpRG95pOCWOHUA2d9JQVbVHzkzRQjOiA9IPSREGL7mPpMBVv62nPKIwOlWn7DgMhGyAL53PSWBu9DAXSUCGKqR7XkCpK0hiO833j5WDU6ctJ7BYDmhGr6kYD1jwfIS1XgnVbCeoWA55QQAWFawpmZBQBefNBQLAtu5z0j7RQU4ni8Zh4dnqUC37XpqGEa7CnrX5SmDQFiFcMHpz8b4cmqBCmXrjodTRoDkWlRYl579wwsd/jibUiGe3nNbe6GC5Z7pKtzR3KtQCUcRdkfN2fsmNNgzx0HoACcyb/ODUPD2+RFHGbI13n2uHDBwd7xNmVRi6f7LXmAg/elYRBnX7cgMFD4E4MPoYAauMrRNrOzNj70o+4YXY9LLna4yelM0uTrbN3KkeOPZRGnym6chkzzx7Ebx6HBfdnUy2qSCDgBWUDggmgYAABAfAJ0BKoAAgAA+bTSXSCQioiEmErmwgA2JZCdkWBmT6VSLnVFPbecNUv7N+HPXB4myDevj9f0rPME/Uj9UetF5hfOi9KvoAfsZ1l3oAeW3+2nwn/uv6UeZAduFervlyzX1NE7STTR/J7qQnhzWoIJD+v9Mi8BqfDgcqPgrBUPqgIDgmTQODrmjqGGqDHW+g3NDUiYN5i42ihHWFZlsoDy+EPjDiyckmHGZfpHt27HdD+NlrGPpvokUoYifZgzXgfY7y1bhpw2CEiatMeBrCmKGp4GhBhG7RylhR7VtQ+h32T1NkiK3RFlb1ncQpOyj7YMPBuglGd8qYENAuR6ff7yAAP79tTR3f7/8MHEGVku2BOw/8U5wAeCe1VqiX8ZpiNlUyZuWlbWFswfIxYV/lP9M9D//9M3BVjAuL7xNnVQD2K8AHNag0bzgbIpygVk4i7/G4i9IDvLChc0YLCFA+AACIC1OYWUikraQjgdgPvFHCI4J4SmytziSK1L2VoMct12vioF4JtVghHZ89wl1cReGEBhHYkcEcEsy472yC6/a+Tdg+1Fh2y2q6LBXM/z/Zv/MmYbl7pzVJ9mGProP4mO5uZl8SsYTbudmqEi5cU1hFcLvsx6Id0oWOm8cA+DTSJZtNhDBmMCOJGJWSpZvWE5r93wNQTIwaZ2hWGfzXCpNtDdKEI9+Zr6FfRWWca6agAEDL60zEPYtb1xVffAgx21cLND/HAZ5Bg/gnsAYzQreBW3rgeLcBDSE/8NCsDYrv4Gaxq634SLZhsncR/0iFNJrdLW1pD5oDbXYAIH3bPnbaH7Qtm4Z7H8Dky3vo2vFQKTxPC4cH5MY/1qO/9EAwDdgSR8mVdlC2kCZHdWOaL8qRxSGuVW2AZXuakH9BBwp8gLd056EzJS9+56BheU/+Dy94AFQPG48qH/0g7uHzAJ2o5JaR5ED7i0w0AhhsrI5jcO8xnne/1ITdX4+Xn2sOg/tH5UDb3ab561ruU52n+yMZwZtSMtzXRgNvC/i4DCRtSwtYq1DBjAh0FbFra4pMmoKoocI4IDvKEhDIUmaS6LffET63eIxKAA3J8T9lKjwj/2WWeT7dNe2ldRaAFwQcFrEKSmOKHACByR/5C+Z/wYiVjB4/JgvKoFnVKCPzABUrlBJWA7ZIvePAHVrL8ZOuLqqcz4Iavj1c140ilg7C2kbRDX4t6x5i50lNJPOEOU33cSL1SSUrJiV7H+85JuCgs5yBM7t3YRuFA6RCmK05GdvWkfsSKEArBpWXofF8H55JlZTn0+sDz4JkG5iH6j56ZF7R0KU88zfTQu7Z46D34cpMwGTAh4KhJgrSsxfGqTuqHvv6HNp6naG27IdYbAMoZ+5dyLCCdOQJ4RlbMZdCUYBYv4j382UYz9sSPzUGVC+qTP12G9JOLb03H/PeSKvmVs6GQWaDLqwVVPAhg+IHv9cqUjVeyAKPN9ZuXnppkLuS+2EfslR5D9o6BUND++pQx9d8kxRpKhYurbVYnCC0/zSblKwM28qzY/avq4rcvum9KfaAJSDtggLxSodlOBUiGfVpmP7X/WA5M4xN57c7pBAnHY+aoPNhuEztpqKItHsP1xFp0hK1311AgeINh8O42fiMGhObyVFIx4kFB0f9uoHYRNQ4IFZBpoocdBwOkQH6d1GoUPNzdn9XnS6Y+xozR8Sqo2GegH0Wht7se+5uG2OuLOXApeeD2rNFgZx/wYMZBCjmJnQoMG8Gqm6UuIaUTvrxhTwBd/KSZUoaQPAUwiNwT/eSAC5GP/Qb5cjwLRjZ3IZUvNQ8rdo9JuyGFD3zUYaESmM7vkMXklACSuyeP6RZcLIvX3VYdVom0EAr2b+C7tSey6+VeFZ768tUpjsMOjJYMU0h7QOnYZn/O3dqi0ZXwrgeo6zB460r3fdLgxiRAN3BuI06foPTi/s5P4D3jC9FVTQuNvEgf+I4tayEAps5JVnw6u2hKL2ztbWpuuA981Q7VgyNqwDYWLgSCPqNw5ijyhQAkz2KLECnEUUAstBf25E5gGfJivvlaNVPToRd5Waxs0Yo/zfkI+q3ZcBH3R8OQbGL910U6aIzOK75whPLHZf0SO4vUpjSURlParfzhN7sAGLpm/9NtBpUuSDNWabu0qrLYegtqpuUADLq7Aw3nD/59JP8oUgerRQCsDY5gIvYYIWdkLHn/pLaEzscQSprSThDVByaAFqhTF8AIGI9ldHV8DCNNlP/eC6p/YV2+XtfHX5fCfFAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-EQG2WO73.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-EWL7XSZS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ipmb/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-EWL7XSZS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-EZTUCZIK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.walletconnect.com/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-EZTUCZIK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-F3W3U35F.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.helixid/image.js\nvar image = \"data:image/webp;base64,UklGRsAFAABXRUJQVlA4ILQFAACQIACdASqAAIAAPm0yl0ckIyIhKJS6uIANiWQA09Ym/wHYyb46X+Pn7d9KzuX3o/Iv5AeLmzP0OuQ/9N/Y/xs7XHmAfpx/s+px5iP14/Y73aPwA9zf7Af7T3AP2A6z/0B/47/oPTG/ar4Xv3H/ab2l///rK7NK0/w9yx+EWnpadKqUy7if6daGCOk0CLBOFJ3C32BKtPZsJoG/9aLD/omiyDK1Ul2xekeQY6jl/9wCmtGRyrU54UU6/PKWTzdENT8zgfuKpU1JRzQH0o7+WFgQG1+JymyTN18CjXoVQOalQrWPCOLjAWXwu/VHab0burzwwqy2Lkn+zjuiyZvgygu6SJPbm2uRzFFdYZPyAAD+9muf8Qvgt6k/jAX+T6NbODKnNdmhwClGHm5q6POwqSqnIWtlv/o7T0StJzF229hXXcOP+h8v+rqwmvGR7Qn4ZJRCOPvoeMs6r14I82jgWhx3+WKH75Joo9unVQN54aPfBn36bvTLttMCTK2hxG0SOT093p8uQoisWXdG7Bg+TxHN5Uj0hE3Zp3EhrVRU2GU4U/TlTbEHXPlgyIQHkcf8VEvbMnmex2tBuOV3a4F4RKsHcin8ek9Y8xmqbthjay6EspoLMAfMixrNXiS+QJawj5gyUzHUCV2GiuHn7IIvvI02F967jWcUSdTjjHrketNBu4dQFAfkKSDQHAQBiSMcHhhf+aC1q8/fN6UFFnfJUj0okejg3aJShSjTNTVX/m+U+/K+0WhN9bVk70QXISuJBVFhiQzJu3VxLRBAcC7oAntT4PO/dIvgk/mA23TFm0Mca+3YMs6ce+/YZPF8j8ksdXgJtwqwo3yjEBMwYqjczKz5ptKuUNaHIDvkZ5P+hWR+mFE+zdpNpaKIpEFoP98lTm/1mpJnQIgefx4FDBWWhIMhG4HJ5V6Wxvgeb7qmvUDC/7ynyr275Ysufj5hV9w8BhwxP74F1Vv2V6KdAovptHYxiDtLJcYYXgC5owOp9dniTM8uS6Hf4X1RX/8jeyiNhsRqTlkdcpN58Grgv04ATcBVHsGk4z3OW2R3kI1Q3dVVUW1/1dGxqrozgOzYfIldPRt9gaEAAcijN+xf9oYkrunLoog3y8oVrntqZzPUZ6a5W+bZR5NJgbtd//tJ9xNUguiM5xG9VLGPC+ycALG2gElWSk10l5DlB3FPYqjXy4H3+2OF4Qwvma1FCRqRet056y6YPgxIsLHpExP+w5SCZj4Ds0zF7vllebshASrr2pv+U6zjNFAuEkB8F+WIRxnRM7QdM2UADWeYnZRbl8vf8eCmhe1Zf5XPQUYVRfFzSPej+jQmLG1Ndf3lOAXJKzzG2eGEfRDAQ0kZq5Jt05548PsvRDvWbi66vdJ+mx1tvt9fZ2zEvoJlfpoDhzS4x9G4ZgIL81ayNShh4xpo4/pKjv6eewCNEpx9n7uch6TpSBZfvFfsy2mSPE1EInM74N7e/9u9nEeB5rGAhkDuieArvrDnt5CByVd3fib7XrOVabqbaIU0XMgBppK3VqrMhRmF9lLsHZTJAb7Fg4ntvfVxGvGUE2DDRJRCVHre3kqmzfeGSUyMES/CCVaUBvw3KPAI0dtx1NWOlPPaktu20Hd30VUFOX4NjkCMpTWF1ff0Ev+MlfIGQZi4/GDJAEOlmSutBzdducEy2c5pDgCcBafAm3dPwTvZ6cEKq8O5XbsC7HEUHfOLdTWMu9wmy8qZVd5SoZJfmMjGMWyqe1cFFM1qnNnJRSxTxyFrX3lgM7viOFOEXQDhA5rF7oXxgv6xs9rXOc8YgXeXZyYKxhyQCmFFWzg33mI62ClMDYzySaOe3T+SsMRm/zOTf6ysyZPrdY4WmO/ieBiJnib/PGAIFSsTAXSlfUgZ0aXKZxVH2Ax+f/dAuJmqIJWSKaARNWu1qf/F5tshwYeHo+Wq2JZ2c4WSei0OAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-F3W3U35F.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FAAEH6VN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.burritowallet/image.js\nvar image = \"data:image/webp;base64,UklGRmoEAABXRUJQVlA4IF4EAADwGQCdASqAAIAAPm00lUckIyIhK5WY+IANiWIAlADrBNheW/oHMBb8eFeVsL12Ifp+lD4oHSZ8wH7K+rd/qvVV6AH97/2PWZegB+1XpvezB+5fpGxZypLf/lmRFTTRSLvVF4gaKJBj5oh7lXFPGLUbrQL5uQ8najjn4GJCynX1pQdQ/hi2Gx5PVj5S6f6Dw1VTkyQ+W7ph2hQ5NUnlwRBaLvuIr5NfI8PMhc7CMewWLTipDeq19WgSqbiWGrt9dZt9A+r9Srb/HgempLgLeJ5uKFgHBf/OUAAA/vyoAJDb4OH8qz+auQCCA7/Rtph+JU6xdkjNfqulq+8/sfswjnVCU23LFL7dRySRvf73Jd20d4B/+ZVQIOzJooYPYcG5bmR7RPyQumEqWZOXqWlULKvcVaARiBV8Pyn5C9+BuWr0NIG34r1PA/rLxc1Ry+aj0S8bJHHnvwRv+GLCAdq2bi6KHUYFy4jtABSEM7zFbTCL/+VZ1eB9yoms3CMyot0PLzhLezJTP37QgiVmVTtNPFnlP/cmTJGTMvzJBgX9DspTUEB70WVc9kwbMgnxkaDQ/64TSaY5gUJXZKNpM4VqE3VHpJ7iwffdTIcus6jBPOpT6L6zrSVwXMUtSgvOjfekc9uZPU8Ob+XTd1cR3MKAbE7Kr8yXtsUKrfClrSrF+JHZmg8abwd3mRW1djoYMl5tXD/5Jm1B4C9ufL1Lt6Mxz4/kBoq2mOU8n3JNdrx50H9He3zm1IJwHWaeUI/5odWM8T5JUqLIKWD58thBL226kVMe84TsClPcgaKRW6xaQABsQxv74hbgat/KPiD30Wh6tB+XyLGp8NWG3zQdnweeXA9L+EbL4NZMVtkLtd4JekVwQ9Lqztrvlwag/br/jRlwn1be0YLKoSDwD2U96yBLGj9//s+pL7OhcD9t/82NUH+o1IixSV7rnT3OnM7XB9uc3TW0iDj5BILMr200gohHh8ZOGpzbAoYbUpksirjrOhfVzqkjnsALjYPbwNel6RU/G9+BhnRoWGJmK9rdgIccW/Qtm0v5H+RK+ASZu4q5mVFmu7SdEoso9BRKKEK4wANml+vWtmeU2oQvJZOymfsoCKTtsxBJl9LGwRcavQCBffNNLjB4Zu9mAoAfYECWJ3UOmDTGCfICdTy+Vk8CvN6YM9FhPtULzlEHkvztaZLXpvowtl301G8RD3SqFpYg3KwJFO81FSQjee4c0VHK4at7cjvsXa4nsJSeOR02InTrXfGrg3W32lOeyvew4S6EHIbdb4/GYFWxvk/mxPG6rEODqbXJv5xXlmMoZfZHZcCxakLYeUaFy6SxB1R+tgm663NwhlJQk7A0SKwMVw3e/NtjP0NAw+wiukH4fh/D3l32nmatjkghlVG/CbnYSMp1esYFPKogrJsyMjdtMvfzCH5cCDsS62URF6IyjMQASId8AJyc3bTmYnG9oirxYHJAYsDflfV/TwNEdPoAAAAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FAAEH6VN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FAMMBKWU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.beewallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FAMMBKWU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FC2BPU25.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bee/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FC2BPU25.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FFW5ALAV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bettatrade/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FFW5ALAV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FIGWZRNB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.alphawallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FIGWZRNB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FK2QQOEC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.bitizen/image.js\nvar image = \"data:image/webp;base64,UklGRqYCAABXRUJQVlA4IJoCAAAQFQCdASqAAIAAPm02lkgkI6IhKBgIKIANiWNu3V+q8f+O/EDaXXTOzfdXg97A/1XTD8TD+7boD9mf1V9ADsAP8B1InoO/pX6YXsi/t5+zPtIZq0xZWVxnwZ9AkhTAASQpf5XJXs2Qn4FWpkQsvDayPxENLYrLoUgdBDsHJBOtXDuMcgNUjS0dp6ngLFvm5NSpj0ZnN/WX/Do4ixLMGs0iqcXqOgpU9FbKy8gBJCl/+oAA/svVMjS0hRxv/2nr/7p6jUAADn5K78RbIVJF05UzRhEl5zBEyBWvN4wE9pMCiDoMX9wv9w/RZbg3eZir7Pkic/EEFv9g1/f2u0prf4WD6mUBrNV8Hp+xvKDJ2bw9vwZF9OLoUH7Ldz68GMeXHcgHHUk1zwlWXky9p6TMKbL7UUJ6aZZKmWV7JxkLEeDuPQG88nnx4q4LsOgJ01Rce5Sdno1YvsVacGw70VqfjWdeeQ4/5tGYlt8beYpc/nkJ7ElndJbebzBFH0S8blv5w6+QfpgQeoNzP0s6CuoSpUFHkPjCPeO2OAb+rikuugNiodxg0l+7gg8aqwBZoJxrBdRvAAMe5CKZJjz9OYAMAOGFpe3YKslYwusVPpv2/oGV6fPJLm0+QZvV4rfR9Yiwz2TbRWOvBU3rmKRANHTFws7fZcFheKwAJ5k28X2FS8oCv/a0MdX1JpIjq0iDYnHeQLD63sJviO95F5scYDqvWKKLc5tzSkBaXwygfHxG+HXn4Z4WkOqlCqeYnsn+3IuFlq2Ifyf11LRrOvgubIW8O0XQsquvLrVFaWExtW9u5YQcYiyu0c5uFv+HuvcDHzAh9P/4X8sGroyLtkSUFEkPQ44wOX2phgox9Dfu+M6IwpYYUaui+gHAAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FK2QQOEC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FL2436IW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.zelus/image.js\nvar image = \"data:image/webp;base64,UklGRrAFAABXRUJQVlA4IKQFAABQHgCdASqAAIAAPm0ylkckIyIhLZJpSIANiWQA1bDkhFfIebHU/8fwCyIrAvqj/L3sAeJX6lvMB+0P7ge8B/nPVR/iPUA/yHUMegj0sH7rfuB7WdNO26Eb7IFXx3mzl3mj+zeaX9f6UOIkyJctcj417dsKoWyUresDD8kt/UJphNluY7Di3ZlClvK7RmGuXZhdQe63/ODQ5ScaQRPJskDnzTbepwl2PVlf1EpXrF12Ccs5HcNc10jfvB51//9mesfSbahocLOxS4Wr5GY5y90dEp//+9z6Knwjkoe25YsPxGYZmjzWtx/tub6+gn/6pxhCBjIR9z+uiMcEYAD++CNvoKJJH7ixuDlJRwlYDxMnpgpCcLQuujB5F+NGnDokFZYpAhvmfLAF8abBScb83ld9FjQABIO+WsiElOB90SWbPmzcEYSHdZkaofT8UpkztSY0TE3O2EH7TiaTeDtWFaSN5c34ZbDMiosF4fzkHlnCMaKZgwuSSU1J8/F223eNMbj7nKWVfKom9BieSXQIJBxJrf4ytl2aMvSbY1nBbKI58okfextTeUaEStLBF3gocB12y5+aKwptlZng/F0C/bHGPQhg7Faroup/COq2lJY46BCqPaFuYf/4mO8bS0JXj1Zj5cv+H1juRGxZA9MErI6bi3d3xHnScegs24YUunFs3nN7t1N3n3yYcBoK2efXmgd5tzwArQrRa5rrOL4XHsCh3ynEY9Y6FIkRzvYoFQQMqDZXBkxF+b4swt2gIm/J6fo9uMCXAE17SSi0nlLZQwTDDezh5GeBMbIB/POHCdxLvojge/WtQ131bEXJrU9nJ6q8s91wQgoaMrToiSdIsPqUDrUMtBQoubYYUlKrjisgNxvV3SnAyZu/JPQ1tuoboKY1/jiMiyVuEnX3gCDN35qIl3KxXXp3T6Zdhnm2CvEiTm/pvBF538fFG+R2k/oVEaFZNUoG6ymeSaPe8If7v7CCFGNlFXy4z6AeaF+vkIMfPaGr2SYPDheUtnK+mKY9GgzHOPGfmOfDaPL5mTbCWfNNg5CuXB19ScPOorxsvILwt+yJIyGBOf9ggj7VHdta1OqZ8d1NLpt1IrI2lKB3ioqLfiWflGoiESxXxnkDAMmZcfIwwyUvnoSmN+XD/1J3XSpOL/EbIEVKtdcRdQE0i76S6n/4O3G5eVPdhd1Ubkqmw5Etqrpwou56naYGvEwh/hgniNieJt9OpFanUY+DVo3Lhe7HcT5sNxrAcGvTDn5oddW/ttTuuAY6/a4kkWB2OEh54WvQyu5D4nXI8NAbBf1T0XmDJUWPGB7ckhTwsQRlqYpLh3ps1OlSBDsKVa9V/KOt/bzBjUPr/bwfL4CnP8glmj8+LG2T4LE8S9dbFeIzIZCeqbxY4iU3boUEgKsehzdOcPQi0pRFs3NT4+7Vs+EKQWBbeiIN8w2T72lSb56NTG8qOyhF0pU61EGCOIDs6YfPY0/zXoOAoqBUtnHCmGjvZygGjZwZQ4fXvInkSVQfFsSzan62a34HIddcJpAn4HzdE5jSNZ7yBFQrM9JKRTtBOk9JAWz2ncVsPwwqQwuwadw8znWpNN90FhYeG9UejholChrf5mrLEKmGLBXw4LwJFnKHbWd+fWFfLcURUfhAs8X4lijJk7g9cp+JzY+jbAA5MQ/XGoj0mPITpkxFk+F/iyRudyoKPSrIjjWI/xGIBsV+8jYQRhPVsewgrqxD4IRAe2MNqEpdczyHXW65pPr5oVNkyTk330iBc+rRl5zrzMMp5xPVDjOTR9Kqrp53uAm508IqBwjLvLpJ85kcmpcIqo+NsKXIPUpgReJ/uqb9lKXwpRGf/rxi9amgreT1UfHjNNMKGSaixue+GzCz6UBxCqG75fQ3rO+EgqzM+Q8H3QKmVDaMrDjNf4WH+3gji4AAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FL2436IW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FNGTNT45.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.xdefi/image.js\nvar image = \"data:image/webp;base64,UklGRuAGAABXRUJQVlA4INQGAACwIQCdASqAAIAAPm00lkekIyIhJJcbMIANiWQGhOcS1v8nbq6/AfiBs4ncvyA6A4SLAHn58wfjj2t/2r/aewD8k+wB+p3m5eon9pfUB+yP7O+/B6Lf9R6gH+J/xvWAegn5avst/tx6NP/01p1j/Oye7pYpw31tRQMjt4d/K/89vNmZvTJmgy/ORYaJ5UmWi4+s5FbnAxeXJneqqyULTTyYGr1JAf5UfOjoaA1H6VjiTe0YHzqeBkg3RDOlu3rBcPSMVQsPrmV58kO69nchEjmY02Smz8+R/+4vu0RkkrGXO3oUGyu/bTYrAH3f4FN7J/73/oFvYjQ9e6s/dSQ4xwTEy9VP9YDAcm3093fnypcawXP/b1AmiAD+7RxQgzpfSd/Uf/sFkiez3KyaCsD1FxrInBT0f1l89MfH05F2+IrQGNd85nQ+f7/uMwtd8RZdvJTsXwqvJysPUaxFFHksqrS+UDHRpHShZgs+ghBv1H1PU2ECzSi9kwBkTtF61G52sQy298CKH5OY+R/Ym8eh5YR+AeujkUUj+b4MFqzLvK2C+l8M2DKnlIU2q6PHpujn+YjBGBsqBRoZyHQ6hCrPbH5YHxbHOXaQIGJbVNNaLPmBP1SDaMToLixlG96aeYUSe+uu3IBMOdwY9jxV8pgv4ut/qrCLnNYKV12h2gurkxujTLjmer8nppPI9KDKwFLbjMdRrWJW428hOjNPd3yfTVGtk6c9IkDyyxIjuRHPHva/tEkXHeJamZHICRnGl+9vmbnZ1+taoHPqoDn7jhKf1ovcPmCG2tVZqu4bxbzHyWvjm+q6ESZ09vXsPt3qoTbHQR3TgdCwKzNHOH6p5VjsMmfYpEnaHp7DtWWxHSXLvM0vAdAWtJfSDEBTPJYsrT+cq/UQxHezXqbauI7+ggwu6u0KFz9lvfEbwhk+WbeKPHLwqwsOvr4l92z3KU/doasHBCxkTRk1yqv4vOP7XU2X60lBnkoeFojN4Wz6JloWESL5cuJSXwnuCFA54f9Hp3zc269Lkanak+ZvKHbR5UGNtAQCxMHJfr5xhYby9A1jIY8LKaBlrOWB83van5VvhKV1gT28dKrKF82n5oKZ9baQP2sceJbv++ZrHeTd/8DA25ipaYQzYZKr9ywDqNHe7VnJ6FpmxAldHpYxAMfuk5BYX/FUMs/IVbuCoosZmB5w8A81ykq9q/PMTvO4V95q3iovh7nmFHVzZbfpXXWg3Cqkng9CL7ec0sO2QdkKUsEn0dPYfMQThacH01ZnjOYNMHkurXqpQqt0g76C2ShKEy8LX7CBggmpAtbIIIZ80GnxIiu5lJfhSl3NbybSpOi2jsWLJuykHQ9Q4B6IQ94mUkPVzdnItU1CkA5nlrU8pz3dgRridUTVWJPW360tWcudYTiufhHJp0rLKr0uejmjk+PbMkNFc7/0kuooXkJCyky25e2OP46LAe9eXf7scl4CZFxs4tzoYllV5NYTHy1OlwzjWTfPhNRAY+pgShqTlZmVhcw/lgAJWTe2K+YPKikIwf///sLLjnj0P8SYr9v7/x2dIhSIN/F/39H7FMvp/tmo+sqbNmwaDAB8CmasZacqy78N5JAX6o8sK8VXIBlJUvRKCnZ7fCYb5EU6fsehsuGw0+pO0lPttfIq/HKv0VmCFqP9G+RYK8S6ZCmypU8gWt16zQWBfA/NBz1s6KKgbe+CkohCQ+KQctqzhDdy9XXETQZtWrXLZtjagPZPow+/3tGhrytqc4++bqpq5iO2OadYiCDWN6w6ogMdyJlksMwnnsR6iIMYFHXBQqHlKxMavweQkC2N/YRu1EsqOfFxYBwuNTzp7GP/i6lUbk2qRf9IhEFpg46SPYnTHiF7OvOE6E+c7oJumPg7bbuSaWc7xPmv8rEccyiyDV2dWbJmQZwFpnuicH28SZeI2doLIhngbZfE0RaQVJkPyOeR5jxb/tAY0GnrXqyBk/i3IOwLU4UkIpJXNncU8xm+KRp6613/YbG4eXrUsNfhsn3kmO3BMyfPUWaOvqTnVChqLKBOg6czq5XaUeZ/S9FEytTRGGMQfHT1//hK0L33Kf7jRzOTBEzL13yrdsQylTryg+hTJ/szMHELkTL21BBol5iDWj4mgJoJyHXji3FSiJcKLU0xeGIhxJeSTnzAwxXWEJnqV3cRIqlZHDRduyijhLe5RyaPskJdcfJu7t8pCFvR0sG3BbEz5LK3VK//xkRRw8eQUcncOnpPbkzDGkSDwKXeO90FEInaxgXBHgYORAqqSUz0/XrOhM+9yuQ8M0HoBUBInyKpa4jMdkTla9ErsxdjZperBBY27NDZu3gAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FNGTNT45.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FT5E5S2S.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coin98/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FT5E5S2S.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FUZODB6Q.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/ai.hacken/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FUZODB6Q.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FX3DIZMC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.shinobi-wallet/image.js\nvar image = \"data:image/webp;base64,UklGRpIDAABXRUJQVlA4IIYDAACQFwCdASqAAIAAPm0ulUYkIqIhKhQMWIANiWUFj+hAFyf3mtxt4OeufSIqCyZHmJOtdNg9s6TcjOQtmTKI9myLDoX0tdyKBGphaeidyMaLqAcy4LXWU9LXmLzXHyHMJj2PGk/9RljOZ3R5QQ18a0taKt2yr6XrzNdpsFQ9D2KTTSbLwfLih3zAlsfvQ3r91qcSqUkDEq83hkA/a9zguzW6uUGWfTs8sltmHqkk6v706MkglOP90S8FwPjLXMMr8xnm411wAABou+V//cH6g/iCpORbnhliU39XGpS6EEGWycCBQj2f3JAHPec8EhT3rhh5TLQBB4031WSWTrbji9Hy+QyEgrIlG+LA7aUcFu80ENpepiAMKoZ/eNOugOwBEt5lj5SIv3ZGZBlYCyWgx4u2Jgs90ANddFOCKGlCTgjS8oOH0t1PTwunhiCjiImOjmVtq6REwCPxH9a1zcEN5IHS4BDh9DKPxnfqTSe9bGtTn75i8GPrrEUeiMiLHV7NsdmXLyFiyMZlEeQ0XU6PpXJ4VehcTPYHVBfYt1lcgnRsXC8cnLtGGg4JDTB1OevlNel+y5+kvpUc6v7Y8VwkysL/p5CUlOdSBRQzp0ze4xtuf7shlSWIHizIwRCLfh+KqHNKPXGNrctOj32Fv9dnKDok2nITWdAMJl5cvqXB1/fBOMCzKYHbs0oEKT6nV60rMxEUSFF9fdV6GbrXqPdADwF1woI7SxIIDhSkaXbQJIpspjZXLMMXmoD40pfExrUfPzsKeRtiCtIxZQtJvJUO7stJnSeZ1y4SOpdngUTk8oXs8YYMBnfRodtRtvJn4qaqFSop/jhnFAfUR7GHZap0cj6LEeOtfJIjJD79mgUObu5+11+DHqxjnQvCDTKKUt1trtE9z9Ri94V6hrelTdFGlat4O4QpgZsqg1H+9aH58v7XK39ZxJMa5qcQv0Yu+F1YhMuWg6DHwWwOpSybHtL1OF/0qOkLRsI+o623V1hvCJnPe3vIPSaqN4ZMzASwvsehuRiIhHQHEwbLzpQUhaB5HZWjkKd5/LxAeHzN8T1oZ+3eLhdpiYzEbNifzIgTPHqQL6dyvWNg0EsoAZhPolP1uD2xeu5Am/NxskqaBd8UwU6gAEO8zRImtPhVS2M3xT9dMBJNOrfxluQWkHFSTHwVFwIFMYjxwG3vqeVQDGMr0Igrwsorz7QAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FX3DIZMC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-FY6NEZXX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.itoken/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-FY6NEZXX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-G3UZPUMP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.qubic.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-G3UZPUMP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-G4OOMJFL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.legacynetwork/image.js\nvar image = \"data:image/webp;base64,UklGRgAEAABXRUJQVlA4IPQDAAAQGgCdASqAAIAAPm0yk0ekIy0hKZG7AaANiUDPep6hQ9VYiZ3FCOAUkNJlQbv0vu5iLPJzV8Cf4pmNqMkFtuYC61y0MQ9/XoKc+nk7l/MtgrZdlHa9RhcCu+QHPqHmbEWU7k8uXHB5uyNu5NBUy7TRKBHKQntIREFoPkZKcVD/qsfVvfo/rEP5Dxh5eq3YvuUq8AwmiIaSZs6Reb/6KVKdpd9bo2R1TIthPcSjHkfJWNHz8mxyXIA89TGbpquMJCiMdyD1lzHSvP4KWKJLdoyL7DnJ8oI27wGAAP75+wP/yz/4u/KLgu/iIPh4HgN6wB/Q8Faejsg5zLsr4MnZtwetv3qGRNTRdUwFP1D0K+Bl0cha55uiRRuoUYyHrR36btwLLE+asBwgNwFSHKDF8kaKj6BC771GLXzUgyn1y8Vq3Kc9I00GVEsjSxCaIyvCUz7RNMkkCoTMm2gv1UAVODhhNjWDccOgZhWtrNWPvo2Z9vs0HGdhbcroWYUGxZTwCoVghKIn5WSguxBu5h8785xbRKR1AfYBkMFUYSwFf8Wm31qoHp06FzSdQ+Lt305TFiQocivPJCj2KDuJVBjTp6rRv3W8o7MC8ewNVnmXMbWiZUCDNyv7KeaQTSho5jMbcrY8GTI6tY/9Tqa/0Gvr54km96nfV2GwFAYIhUK3dllUJrWDlfXS6jexlb/U2G5MBoMCfbmgASDbyX+2+GqDC1ikUBnoDATwRBhRGsuWdJBBK1jAqSF2bT7Eu47bR5zSQmkzOVqxoLRf+Uc0V8o9c9KAp5bsc1fXdqgc8XGn8f+HqpwMNIpNZitJnmrsNzzwHUHfc83RAct6NK8GgyBQlXatdIGNLX/0SSfU9tZUEO5BacGgF5kgxLFSjR1tvGBLoD37qfBSNJuGRU+Qz970JueD9E9JMum8ag798pkpzxTxYVURbzh9mcEtczkwv0FjdOEVqr2jaIDGrSYOIwywpLpjTP54c7HK9nV/4iyy2vou1woWyenluvZN3FHXhzF8A9RHq79TkzTXX/Mwuyf3uG9SJl/1/ci338rT5mP/TlbMvG0gmAIhXJhMiojPeQj7ajfDcjP9PaUmF//AvADRwN/VauGuOeKiy3Y64gbVP5GZtwEBuUq8szd1Nb0oQX6yhvxiOllyjFLr//M95To0nOSNQy2iYTaYDxSIVIE5Dqf2ZBysKfcsWTHWz5IBG0IMIxm9V2AVIV8HqFLFB/K8sLho6z0+tFt+6jk3iZ2YDFZ5NoqVeuu3iKlRCcF59FJuF1mpw/nd//iwDPpjYSK2sHHwOMfa7id6i/JAZgwn9h4MsMsVgUc8VE3RHp6G7LIdHQA2kAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-G4OOMJFL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-G4VVMDLA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/id.co.pintu/image.js\nvar image = \"data:image/webp;base64,UklGRq4CAABXRUJQVlA4IKICAABQEgCdASqAAIAAPm00lUakKKIhLZOYcRANiUX3vTAENpSW6B6H8TcU9sr6VfEw6SHmA/Zn1bPRF6AH+K6lz0AOlv/a30gAZBjVK6RDXxqlcegV0MeieTR9nMSJ4eLVZLbCHsZ1auTs7Eav2AE9uxnqqwetXcHdSSPQnB8dqEyEmnrBJ4CbPJjs/vx62PjXwwlHWo1iYO2kCF8qgAD+/KgAAACk+c/1Rmb9ORUHkiO+ooV8f8fwRb3tXXcBWpUew6LGziqh97GXNwk/LUFF9ZrKTGoBbCdPo92VeDlynGA82cz5/9QxeZ/eMk+IOaS79L9Mi5XNLLHDHZB11Xu50/cVS1na4lhhTSCcsJ5eQs3PmCUFKnvG6aTcP6lnzTMC33Sp9p8RbSocluk8ROunTrEbMYuk/ie3/gGcw08+WzOPzyWpstjynUKN+1HYOq4Ufx3CR477qD5XIRyoWEDMzaVzG1U54iGX/KVksinm6GnVti/YkmfCn/8GKwDsgMyu9l5PeJorJ60/Wz3np/WQLnUPP0hMc8FqT+f+IrkxbJkMaaJ1RUf6rCBNslTIBH3ShM2IxiEw3IHgE53oBUXgKuxo8O2CxeIOjDu4Edh9EQOoG2URNkkixU62k+k9eH0mqpWXmIAx0JYQVDQ84/Ke9GxpGZ9pV15Nl1uU/Ev7lhZObWORcltAV+yz9wFVpwCq2b7qzIUo4XmhHc97hzcXXumbC93aJI2LycUj2O6JNTu5eggMzGQpDYaJe772xpT+GkmdmvRccpbCdL16aucSMzP0S9Cma8uEpImyq0eLG2AYU1NKz8yhh+YIDE3PdqOPM2TKYDYYsT5cPpAVwDqEVRAjzo85MeEZC9i5GlLx+ueY+BJByLXtxHMefHoPJ9NoWsoAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-G4VVMDLA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-G566PLZR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coininn/image.js\nvar image = \"data:image/webp;base64,UklGRngCAABXRUJQVlA4IGwCAAAQDwCdASqAAIAAPm02mUekIyKhJ5qoUIANiWcKFqEiRqghnXkh+pBnoEkKQknoPWkXx9ggk1/oPY5SPkLd4DMF5cX7G70m+QL2+HF2eXmuYEvn//fWWakZyfNKYexwt+DrU28R8iLkgR94x6wVJ4zcf4D/9p6Ru1OoEt8K5SFW6CAA/v9rrAOfx6+ZaknxBk7IzWb9LPb/SXud061EEtJ0T1VGB5OYYAFo9z/nGqzIrLFx7dQxK3dI+GoTt9NlrBfiRHh9CNKe8ssNgnHdZQa5KsGsGS9T43B1Sok7+xrB88NaeKdLL9RSqQbZimbB7q0BNp9Pnmp1jB9V3ui3Vh6bq7O6f8xWfq2LV8MR3q/7QV2uffteU0WCGz/4HMXhu3QwTRNFBZ5U8u06M3FpDN4shocnj6TnV8srk9Jb+gVHOUee5C6ERhQSO0K2XoYUCuBAYlduGTLlSG7YlqYTChD3TllWrFyjztRN8t3r6gxVgB8ylqBLKWLYsfcvsbrfMAHz47KBoTwiIJA9pYSVbMUpp9f8aRMyiOeRiUQWCy7M0ZIHfSJnfTC0BJLAcluObENIyu6yl0mvL8PdVOIa2S0cH/YvNnHT/hX8bIcUIIofniJKwX25zFFh0dNQrwH3oYPyGRDjXp6p9hB2sOilUbswNW8z1b71vbb9yFfFVS7WA6oQxD06qjUGS0GzNMnPGvoSl9/uHextDbA2aKfY6aVouM9j7m1w6o4UMJVexNfFqw/oO9/ASK5rWSAomu3yIcs10fgxXUaDK/otS9mO+qetfLr2jvnuV0X9hTxYzSGKIDgFmtXSz/OQgAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-G566PLZR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-G77AOOTY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitget.web3/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-G77AOOTY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-GK45NHUD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.safematrix/image.js\nvar image = \"data:image/webp;base64,UklGRtgEAABXRUJQVlA4IMwEAABQGwCdASqAAIAAPm0ukkWkJSGZO3RMUAbEsgBqJExC092/pfJYcaeGeY9O12h4+/VH+hvYA/VjpQeYn9w/V99M3oHftv1wHod9L5+12UY6+uy+XvEGZPDVxAYsHYmsLKD9LXEwnySerDK6bxB2w4n5EjCZq2MvY3tsGqPrb4kyoij/Fj1hC5aH+P1JKKdugrGnGcqV6KBGzo0JW6Z62tbTEMNJFcJoqOKabtCHlvUjO5dY/jPY5G4KeBI5UrKT8H+9li9cBH+iWqy5jegimYiWnln6PF2HDTkS/EW5kdbkj/NkAAD+/PQAADD0aZ49w/I9JvTtZJI3yozOFhvZyiVOC+/QczjFEnKan+a+s/0+AspqyHcTC5xp5J3X4xFjWejP103X7QrHkhnVWlqL7UoGZReLyZ2aYbnDm0rHpnOhtkI2DsmcbQ82Vv4BOfn8vBQXsookmKZhRxjIX1KLTDGhtJafnHWYOC+c4ongOGTdcSHDp8SU7m4QDn+nih2a0WFZ8tvRZlD91VzAmVn0RZzvJotmmFFTR16lBoMkfUhTOMF8WqSP2Cx9XfgwHB8WavOuUKD27D5uqkpRiV9c3v4bCqB0hDcOSLXkBXVrGZSvyz7YiAcGfTHgYy84c1t+jptMeiFaKYqr3jvHXYJMTudqNb9I5NzLW0LkS5zmZPIDpjzn4pXL1X0o2uFaBrWwj+A4+W8GKaRd0KMYmSnvV+QrWjaRI4A3mkcmgEYNHLnxBk7VEw3yOuG8gU60uMiXwHKhWMnSdmNpjfkGo+vkBbI7E3+NsKO7A07WKpK9hQwNldZyDKW4HT9Q78jkcaGSMnbpkkMNVq2Ep8e8kFUhWE6YUw1HwVKmn31tJ/vRjyGAf91j1rktynzyiZcgFaDpv4sRG9+8Dh6nYnxHx9SwfCn/PMj46RNdiw0owzrWhQbr2BZCaS0ws80W2V0RGexoEN3wsQT8EhxrrQhi2E4BIkfW7kGad47rEGh4hJtUSKizzKD7ctbtNApdWPYGEkb+BP44m5IF+70N8VVnL9/8CfgtJE9YFwc8WrzikHYkGo/YAsxA7bZ5anqLcQmPQkgUCySXs622RMSz195aWXCzRYX64JbG/Y2eNW0vzmV6KBSG9RWJirGijFl211ioafrcfgj5K847JYmqIiOa9CNWcpkDLIlbf32bIKhnPnPZqp0aCsX7tIKWECzQCK9unroG+V7aKCrkLrZsepx7XHzrluZKntP3+V1BKYiBY8ScbLBTQrQJBYl5Xm+7SLbqR3hhfiS0taT2svxHGE2uFaCOcoIWRk0umcA/pup4CGmdW5chDXvYCOogZTZ6eabnJvE//l5oHeZjm+9jhr/SXRcjfRKixXNxz6GBK5igLeV8YTXTK9lczibu/k8n3is8Us6j1WUzM9ikWwJk28jqGa/3UZDwXF1KcIo11qe5VZuebtaE2MJgo5hVq5RoIp/z6ptyoVxeLERCbYwH3cBcCjo9lAdPeTW8urEmOt19wAVBNcMugbaFacTkd5M/CIAi9Jm/VUoivwznMYEvc51CA/UlKl6aUFwDd9bt5knRoQh1AqXrWwGABMIowsJBUhdEdEN1JcBNlVhB5ZuzjR17OuebuUl3utXJ7AAARtDBAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-GK45NHUD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-GN5KL5XH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.kelp/image.js\nvar image = \"data:image/webp;base64,UklGRkIDAABXRUJQVlA4IDYDAABQFwCdASqAAIAAPm02lUikIyIhJxN4eIANiUFC2Qxys+gfkR7JVifq/3V/Izlhzo9f36j7M/fx6ivMA5xHmQ/WP9t/dv6QD9t+th9ADyzvZP/dL0qs1amrKxWWzpI2lhluIUv/0kKX/56fKylg/Z8PIf9Qx9XKQ9SCjedKBgrL3TEX0bU5TR4FbN/IZAA/eLRltVVyJ597LghLEPDxCvvx+yeJQEUiKNc6Fma79s7sD7jvYb7qzDc7FeGMHyWVWWha0AAA/vw5n//whzucVr//8FJ+Ck/BSeCGuFwAyVDgRAUxGwNFbLYhLIjJ0/8AXRIjN0W9gf58uk57CUkB/aY5BrPc53gJeFAyQS4VuNWubugQL5ilIlPGAaofYQDMSYwqXZ1E1+ZvOXfvuM30d9zSZgzj2BYbhzqN9v+6GJAtV2n/Im30JQMTi5BjGrRw9TunfVPF9PsH0pt9N/XAc1zZ2QPS1REZ0jN491vRAyXMNgij7PNQpzlnDST6Xs6Wgc0hk0tj4t0PjPJR1Bc/SoIE5W0AK2J6zEIs+mecG701bUEU8UZTeAoj/KgojuA76fyUXXiQqRcJers6KPnbrAs0J9OBWcIjL2JPtrsQ1P+zm+mHhyo2sr9BVY+sdFB36j6RFvcJxHoiVeGPsDbhJYz0kfwk9g0xaNp11P4+nKFnrTn7sopcMDwKFTucl4NG9p98FbmfvN9dUaBkog64jp4F9GOxCV2/39OIYEv/tiy6/whmXkoujWIL777rQamGyUkgtz4ZDwx77N2Yr1hEv5a/rZgPL2nyPDAKEXU0FPrBuNyG5k+d/zs89qGdjomKJongEXvYVxUjG+7dvN6FjR8abZEKTqPAr+kKvpzbmc6i9Z5/DylxmY1CqQ/Rmr6kf23pGeA/IL5/DflBy7CByAaeKV7g8AITBxIy99gw5mSwJyy6N9z4oTRoEI2vvWTtKMdxeNO49Ro0wff8l1Jo318h22dkPvZriEzEu0wVXzicQj5yyVSCeuQq5ZuUbPEbFMfFB6IsPIKhLOo20gsDK/RT4rvkH/PsoYwwF3wGX+Wtta9gDlnGD2SYXM5ZXM+/rbdAAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-GN5KL5XH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-GNG4HAZI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.crypto.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRloGAABXRUJQVlA4IE4GAADQHgCdASqAAIAAPm0wk0WkJSGYO6TEUAbEsQBqQlNmU+i87O7/5jiUDr2H/Wd4qXTy8y/mvdFB1Um9D/t3MksgL/T+vvsh2r/77vhg6GR8sBmneTD6487c9IA6alpPTJU4rHWCR8eY6+I/Rs0UbN0uCOueemFt9b6uw/jeg/jPaL7Lyra7rCwjtDA5qWCOzQIkfifHTF+rpJMOxgzz6/ievsNRso0kyLT5eycQBBc4q0P+TR6MnS1wy/Sg+x3z+goOax0qphUh5hbgc7B2Qe/Fk+1BP6yDJqNkgFkp3KPlKeE6gY6MuALfsze+4l+1LeJp5otaBPDZz3/O+t/JqQAA/vz0AEJ2w1pLjGypF5050DSfF+FOxVhO+oP/ZiYlRwSEMii+xPSwsat2tKR+BXqYFlpMlkjdKLVwir9W/GZsBCink2cps047ihHF2v33yxxrMgpb900h/Jrwie7kX7abeaw8Fg57Ezid/i+TGY+n9m6vnUymZSSuYjwZrU9P5xCkA76b7qPJ0UZ6/kwRgVOeJ9JgJuL++trAps4o/bOzCGH+gXagPu92ng/xq6ml+vziwmzuCYPBrw7OhBWMDH/8dWUBm5Hs6Fectl4gAWqgTifwu/sT3lXH7IZ7HQECq4w0CUl2WWFqpvrQidNuOJTkhihqfk8sDmz+Y4H7vzZ9SXFkis/BHAMzEJJj74tHzmjt3z3MtyIzGXrYqzsoQ7m+HTWsso21BfrYXnayrgGYtWe6WJTlJUW647Q091/aenYDsBo60TOjJQWwAdfJ0yTucM6pnUGPnCliM8QublUUFJdrsV9r6BZ7/ys6CMqccbjpyKeGh7WMHzlCtWBdJxh93AnDrRXYh4h7CtcVa43yo1vxbwNs8XBfg0XvTZnkPkYYDQz/AiiJVMTL5Wkm37QeYNB9oOkuUGBBJd86Rm0G5D/izhJzKK9M2qVHS3IxsqKqVoaTThTd5lwgLM7HrEN+b9kUbeI2x13Y5KusxzLSCbsZKa7yH/mA/NqTR26KxSKJPXtFpW7aj8HrnSxfMes9rLt5wFX5a+MwP7Hqxq0DjC+LOdjKlnk/Mv+ctGAcugYZk0V+ZyfK9M60iYEQHql7hVQ++fKIgqr4HwhSw3TRaoLS9BS6xgB/0dGtC+33lbGvMvuQAamEhdtgH9lJUu5ti5bSg8iS30FkfB9QnbhW7jEiaTBudcYwY+AKHYLaEqm/rAfIe879CNMq/IXk6SKw9DTC8kHG+q2iLKnNndHADkOaRCe/Y/n/iXpJd0gUUX13w53lOOeSNtgoI+oVxWbp9Q97QwJgkbVnk2QIYZvmt8ssK6O7W2dbcP7zpGhILxYfpSKOonu/V8CqwHM3vhH7x6A/P7YudwGkhIK1SmLBSjYoRFZCSmXnpgxsxfRocF6+29GtzLg5ekX7NOsz06wmYNrU6WWyE1Y3+ykM+0uRYXMLGfegysjMxEMRIZfPJ2QiiNtM/8B/kd52FwsGoAr9R8J5W/PnrlgyKpYWfBBA7yAVzk1KRghWV+mRdkNs1fF7kJ2MRrzs/vmW13zRgWIEDZ0dZti2VdAYS6BDiOn0B17L5eVJmOxzy5MU7VSb3pMBjKnD1/WPFWTZNRnYsnEsCYLuRLNlb3p80pKrzrjYkRUhz1dRcRroZ/Xp3otcgP0zSJPENHFvZf2Q8Ra6EZ3cdpsyV6LR6czOw3wzWF2R6TO7fJfpevwyWssvzl1MPpjQM3VbTrXfHxEnfDqKpzbtfx3+RvwRUCpQHiWlz8x13TBeQlJ3eVGp5EJHlMCBbG1pxiaWD/V6Lrxm42xZbIwV+DOQJtDqJYOf3U2gH2tLyeV1c/vLPjiKAFiG5EhT+lCIZNqiwwvJNUpSHiFio+dgUvmk7aZlPzv5WQ+Gn8i8ZhrWIbsh+eC6nFGRNTYTEltLoh/wvq3Av7gs+Xur9dVD09ci2iOE4GKoAgOfPokItzSdm3FDpWVpqvcki0qmbsXlW5/wJvN+DK+q385K3K7meRyVkQA7O1ixtd1XX4GUy0CYYe+tDNaXe9EoYLrFNJF57n8R375teqpTHr/40dAh2MnjjENhFDWmR9OsHfT529YQVWdHhP7gk2PaAAH3CVyR3bbo6uoRyQ8iNu2efo4n1wtQs+cLKMKGqGAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-GNG4HAZI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-GRZ6ITK5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.loopring.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRgwEAABXRUJQVlA4IAAEAACwGACdASqAAIAAPm00lkgkIyIjqBUI2IANiUAZMBhqs/tuZh6d8KYg5O78T7pFeYDzqukA/oH+q61z0AOls/Z79sFjkggNaYp88ygj2R1HRSAmKIJ7gC1o2OBJqcAPyiEGfCILUnrCkYzHWp2r8HTYrlw+VMcu0V4YLTZyztUygRr+1cBwuPgvxp3zGj1U2Ss0Fmyd0CSoWkL18hrdFlVBtGNqJirdoruGCVtByIEcmeis3lAOv9Xij+qAA5cp7JlC5b1kC+mODc+S1veZ4AD+5xOpqL//bQ//Us/+tD1Hf/5Sv2C9147MBxjKu16fLMktuWc5FRSKhnOt+0wJOy7vFoPqBYNn2R7dkmA0ppGnlS7fat1pgFQC3kH/5YZYOprgl9skZwPbA1K60GI7gP5AghqolAFj3z5RgDm1WTpTjfdFbZgMlgd+u+4I6T+FZb/qYSNSYpIfe97SW7MKaAczREJd/ImBaGugBW4zE4fA9vzjZPbGqbni9+DrffF2fV82oysQBdZXJJb4CR6YKrfw/9e9v0qveA3y0DYhx5kYYcJEN4YQeEV7Y2boc6NxbBKMnntYQZUjAACu+b19re7Fjz0Ca0/Xxwh6BQEGusdztwxGhP1I1rDQ/g2MLhGqYWk6JRF8Z/kAznOxca8ZaDvbzmmGSGgG8NoJDnaFyk6IITWGJxvNiOT1269z/k+eWf9ADmD7IBHYUXQc8AtxGWhVzQ9NAauewga46CPwvXrh8eHntDzD9qek84F89q0vjulpbvvV1psxvmkf8hEX+AOQJOTHM17XT/ThJbFNlKBnjnwFfQJr6IKZq9kwvoKzKc59ZN6H9XESENHHFBp3kngnTrA9Rsvp82UzuoE0OgE1n5w+EoiRIL4sIHM4BCb6SADwHTmcZ2Y+MTy/SFe0Xk9KIP5geuoVzlG3fDW2eVcwQrNGzMjYusdga6ZbeHv2yOFNeExkUgVfXNa48pC7J9X3D5rbSPShPtv4Jr0rrPP5oncAI0+RC4IycgBmFVnagGtq81ZV28T7T2NaumDJIvCXxbRM2sv6hNQXlxsJq8ADlP/we8MMKBcYY/nXd6mbQoOiUIasaFCwd3pgbgvt9EFfMtdK5SAORWKfgk9l6fkjFxRbhqVt3l7+ewc8FDSvENBx4CALyuVKqcil9ZHgDEe2AiJkfRR8Se3bI6OpCKp40314N+BNZYmoCnJiz7RrGl+PidCfrk667MlbEd1fQ8AvLDFDwFg2LLuakRc8uVHXX9JVAt97XMgZaXYYUs4JG8UnBuABfL1HRiTxyGKt58l9BOUTHKg5fiAK8J91MCe5Xz/ifq46z4LhLdb14pVwCpiJNjnBGUPyQpOYzrpgAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-GRZ6ITK5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-GSMGI7VJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.sinum/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-GSMGI7VJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-GSTKM7MD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.paraswap/image.js\nvar image = \"data:image/webp;base64,UklGRiwEAABXRUJQVlA4ICAEAAAwGQCdASqAAIAAPm00mEekIyKhJxgJSIANiWIA0MkAPxA2nTvn5S85Lv94o9Vek48l84DzAOc75jv/H6YH8z9VnoAfsl1mPoAeWh7PS/ims3hmZGq2cCNHn/XPoGBcYkYX1w02nsoPoeHgXLr2zm98eKELngjIluYC0718Hv+Qo5dKdafq/O27FvJYlcJ1jlOPpgw1GHy94lF+3IoMJw6c83L/OWLJSlZQpUx2Bl0cspaJaU8/K7LzzSD9nUzfEk8oi9Lns6k0+RkpYB0Cod+KAdAA/tju2Nn+zCfswm1noceKNdbPOgoAAABAT7tKCjNFyjxT+7pKfQWatGdUhYfXBLUzDRdsKJBQOb9Qh9AOodEoiUmkevuQwxqkDx/cG0hI5SiYqRI+1pLbZ+HScpB6A4nR5EhxusODZMGtC/KCQaZv9PaKr414ZdbIPJG9ag/YOeJBIq3O8rnVJSt8pEJNQCbeD8vgiZGGhWYkWpZQ9yV555UqihjMxCOhcXnlUCuZlM3JAWtbmEJHG5gjebl7hnCh78XcyhVqaRVtt/7I8FJv5Q54qUXEBOaHzsiM6/jqlokhjxRKOV6Asz4A03YR6MIK6Dykb/B4w7tO8+x2Vhg2D3wZaxz//3L4xVsVto9qIsVUbfftFFpguebd1TZnHpv3v09tfvXFSoAJXpRzr6VnqduhAsClc9lwWNYjsYYENqIW3WFr2cop1R2mqSTDypqXyBQQ32rJjCSdXXOqma9bYEQ3GfsoF9BWlkXQbgjvNqR4SWtaWZ2iujhWO4Yt/iv3wfLt9J3m7n4NRrFdwdsOu5OSx6m7ougU+5aiSmcsgwSqp/Db8ahLhkX2cJEYYsYhAzD6jJvvcP2fSE2h+wmf4+nXXTEoU4Z53QqOABF/4741hb6Q29xSWWg04d75sbv9WoKtzOjP7kjNTLrJKuA2oW/GU5+1//1ioHvx4ar9cYP69HJgYzmWZQZhksjWUdGPcvHbcjqKZH4qiedTYWyBaBhLAypgvjwgvQpmx3vz8Dvf2dHF2XYHu33DvGefcEVlczDvmpcnuoH6Zv84QUM+aHywvqcwZ+i+zNsT4dK1zlTB+oitjrg1tzx7x5aGcL4Tdh7QB1bGpWWoza85v3rX2FwGqxDExa+jZ4NHkdEzrdR9XmNAeOLiP/W6bdLpKm15+TstOGiEUAE2TvDKXAN7xFayv7wXI/zySEMEM6CGmbg1oVbOHopXj+xZ9mkmCst3aZBfdwylchPiVg1TSgyP5K5oZYd1kbf7rphw4ctZZNWW27DEZPba5WbRfMH7lJSxLJjaGd9t0eboc+A+CrXzumJX+veAUAW36MWFIRFefTKRNsO/31wEDbc6uZ+P9Oum8plDhHIEonop9c3qSL7+/xwnl7NhrYzY7/IAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-GSTKM7MD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-GTS26XGE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.certhis/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-GTS26XGE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-GXMDZVE7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.mtpelerin/image.js\nvar image = \"data:image/webp;base64,UklGRhgEAABXRUJQVlA4IAwEAADwGACdASqAAIAAPm00l0gkIyIhJZLp+IANiUAPEL6r+QHslU3+t/jHfyZd80Tlz/d9ID6APgA/UzpQeYD9kfWL9Ef+b9QD+tdQX6CPl0ezR+42Ec9lOPTGkWx3VWYIxwR7KryfSD4ASPmN4IBk+Ks7ZBr5qBtr2nZY8PS9DW/pKV5taoCJ/pUkCznDRuiUNHUUR/T/10Qu/LzPtioHpGoU86vS+9tGnHUxcro04b56Z44Sv/yjjM4lxkLMojNLKsG/K7o9eAFMLopq6IAkfSCQAP78SgAADoT9hnjmRp/Uyvf/P2ohg/+QnNqhY2b8HBOVlaD2mtzkz5xrXdbo9NrvcC5pXIeIUnXMbLqUj9+TTJcyKBO2Qj6u54EQmURIPrU+LoIIIqoG4FRJONQTFqK0r+dCo5gexY5pdf5ODmfIjKcw2xNeBQS7UVK1xbasC9S2+8smoYk9fWxitEKqNmVKJn9sVPMzKV+GffC9VuC2xivMQRCbwafo248hNx0yI8SSSySz3O+IGZxLZ61MraOiIeAe2FUZYMx+N91gnfPZqo7Vxj2dLV2ebLML4udv/EggZDVu36PZseTsDTvm2ZZVPemmegIF/yqy+a9cZdfpBAsu6zWq2EwoNc3ON6jkDrW/nbNe8acATtOuSAoxAIZl2xkjwVu6RfORQqDvxqlETms5S8fqte9UH40X9t+8gAD+VuAO0QRoM68TIMJnIRzrsHnLf9LxhF0swgIyT0eUWLUpJDqX2/bnNNpgLr6rZ7W69I+U0Tig1f0j/dR2nJRRZXBNazaXVJRmzeO2QWHVknLH4+gW0TZxv7OYhCElAkms8JR+6aBlWQLErjMFBid1rkLzrV5NXwtTtIcVLQj9bT4r2NVq64SMGuVu0py8klLf3mOTAOFnoYrJDYqgWSY2l0r+SxihuV+HiUS8Bl9Qr52qdvMXxU6fzow7n1Dgm7DHTmKiRT4I87W+9WC1LTDxHedDWdpcE88C9kpWXvmTFhbmdcRfF0gYyRER2AKqGwdqgMegn0lE3ysn7kJZ19pgCxjfrWS7n9ibet6z0F8SI4zeR1CWm1vv3RlWStX4VPImd3hmmGS9gu0lOXvQJHHeZIUOAhbNsOPORFDcvSDwBcWxPfwWB3uxeHUYTb+BP8Sq2gYnToy/3R1JuVV/sW5AgvNL/EhRfyTDfMoDgpc4qtum/gasEKKxSDqZHjaf41jE3BRVMioaieOKVD06RCGkkeAGWL/zcOc7VqhUNEpT4p4QU55mUpZH80NF8oZWj726C8hvikVqRi5wGPlxfXWgmSsPoG+84iNoBqjsVAedXyNLPuihlf4EqqGkhzqDOeBdFkye2aCTI9nUZZP/F4guMFIQiVKJyAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-GXMDZVE7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-H66KD67W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.guardiianwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-H66KD67W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-HN4UT2MP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/fi.dropmate/image.js\nvar image = \"data:image/webp;base64,UklGRtoFAABXRUJQVlA4IM4FAABwIwCdASqAAIAAPm0ukkakIqGhLxGrwIANiWNr/lanCaxz6rDHOjeXV0QudY06rekHBtEKrhg5L9aY8+KX5WA4sjIA/JCTJNmDnDB66mSWMkOAowiRewVod0LMGeU5RGeXM/ZbxUDH86PVsRjDtTQYDtYRHlTvNGrKVzSpKGQt/B/PvJrhXRP//JjngLgIK4+aFQ+NryuguY2pdY65RGoUX/NyWXNLdIaFuuPnIrEbZvu91uV2H6M6oWQuW+CYqFsp1rCn2GXAVLJj10LDSL6YZcDVwbOBuZAIWyRWAiFi0fdO9r8iijqH4rHmmBw64HxhV37Bug5rrfx610ZEQeq2tbd+22oB3l3CnCaFPmbWcCwg2xK20VWy4yu+rfe7Oqfk7sVsAP6lws3/tXM7mzi9A29KXf/5tdvgr7P1hcsES//4je8Y8UVe6/rmo355w8r0PF22xnNMu2WFZK4IhTFa8/OeH9wxdgsipr89hYo/eChaJrd7sX0akTWWF74/dkB6bIVlDSwek4ZZMOO4s+1IFvsG4dr1wGznXNHlWnCy4wMIVgMJTUElHYckFK9q/mwHngyIhcmu/WSuz/QFV2XJb8cYSxZ0nfU24yFwtA83MLKhCPfWp2O4uzzoHpDiqDKt2knPWfrVHmBdM4s/hCK9xsRRmZ/QCOHwI/bv2RR3LTVv3KSpCLBrFSC51iaPh8HsRS3ZgDjabi0HbQKod5Df3T9KJ2RH122hUznltHG2t+cJ+cMVn+AwfYAUYA/VIuX/OwS/6ZbxCSyk3H2gzBUhPS3YP/M/ssrWRXn1aYwFl4x7WWpcFWSqdzdr9nvIu9Fxz4SEsAsp+iQ/JnrUaX6wIr8I5LvOQv7nQDWZpoScnhiuwdYkKLBpMO931m3Cg7FpmPWYqvjZDb/2q0R1kw4FE1gajYgVzGbsMgbGMbDlkTdLXtdcm6xj79fh4d2NTHMaZoZrBFbB1rTNiCLAZTyC3wWiIgS6+LPEHSN+WAq5orgr7Bkpm58hHjYRSJfsFVCWZVn8N3vUZPqQ5Sq01d5i6MukcTPWI42IRR7027nin1AiO5POwJaS6lVnp3sHP0KdSAk2QyK/jaR/GwAKLsWG8IaA8m2TanMgVcWrTxa3zfO0+/DCk9poMiQMQuucBABgOi7Fyq6DFQeJOhl0ZZ608CwDVSBzdxYjTfdq/OXv3Iwv+EMM9bezDCg1bKEr7m+2eXAJBr7Ux7/ux5ZNQDstchNT95nGRjQl37FRNqjc/5fdl+DTfCtYXNlONW3yyg/Ymy0WCVcJRKkX248tJiPv0XRq6POy3YP31HQBrG39Zw2sMEdPsaexTs12aYG78KxrGPRjIoOge12xSwAbiuQmIvpogzV1Eve8Ywp2+5dZF2SNPIlXNuo2fmkJb+A89yFeP5i6ch7oZrdDPJP3YBc4gu1f4Jo8nmxT/OjZmL1yzLBJLLvYRdL0KNFz8to3PRFTpKItEYkiy41AjYkNzKBmaXvRu5ZM109s37Wg6f7nlRT/6e2kpEePRZ05QGdq5jMiVDqA/B0eCewVAJk2giQ8ywbst2UgCeV6DdqYisDZNUVhXAnKXPFi6vER+d0DJGGd8Gq3G6T/b59ygt5NdJ1auuFGOSAmqxCRWF2z3o4DrWCwkIT0U37/hBNuG4UVKC8pdbdomJj6x2Fhs9TvM4exUnwD5tuLh+paQYHFg8lmP70wtSvKM6tTjzTraBPQ9bHufGZfHjO/OLY6QqzWoYpRM3bV6NPctBrpJUG6GHdIKhz6six8vZvAi0peIE1P/V5NbPOnSePah3w8PNeAxPPrqFMr21HdV8A4zwsENujkjTZylK1+I7pIV9aqpyoroIyGxa19r3Mf7s5iR130ZlrbIbvNJgJg+ZoXDvELeTY7IZy+tXnZ5JiqQFF9fkdpBKAqjSW30Z/r5IO726Zdlc1iODvgrOBvXN767Dixusu9TDfZOeoLLx0m1UubcAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-HN4UT2MP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-HNJVUIHP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.1inch.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-HNJVUIHP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-HOZVYDVK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.fizen/image.js\nvar image = \"data:image/webp;base64,UklGRuAEAABXRUJQVlA4INQEAADwHQCdASqAAIAAPm02l0ekIyKhJZRquIANiWIA1Iom/sGyAdu/JX8ZuqA5V7p831bP948gD2AeYB+kv6q9dzzAfrX+t3v4dIB+nf/////aPegB5YH7YfCh+7X7M+13mtnYFXg74Mq7gB3kuFaMl6DnpngJFOs2F3aZZqRvzN1Dop4PRFPCKZwqRlIfq1GJf7v1NaGKM8hJl8fFyFCe8pF0sTmQETLKcq6LBD1gM/eGHH6FwPufUOYDV4KMU/JR0UpmsFbQJkx6G1zBuBrQOiAqzRx2Rx754Y67u9mADqdMZgCP/0jqQjZIPduAR8BONX0Xbu6ZRb4TUAD+9w1v7SzLDEQ3GPW8KDEIYCYzEgzhMZbYGbmc+peaNmsX00M8RQ+gaBx6bFBnJFu7isv29dsrZtBcfIdkQbkEYNT5x1THkhCKIgiUMEsP8NfALDAPSoMx1zZxZ1yCStKWW6xEcvyZDjfmpmEoCpZSIzJaPftjzpMrUPjSlYo95qK/2tXvvEGk3DrbYjnxqpHAphgrtkLYdH1yK09h3jS1nH8UtMlQ8sq9STBbs+0bMhxCxiIPcRvJaxkwid3qm5nFmnlyGR/aNFl9DFoT8LmC4pucqmSqaaRfNK1MMNArdFeZjmE2F1hf9fdLwgWeBhoQvGAT+Tr9pt3O69FJCQOuTUib5/9O0HT7ePQ2AHvzDNk59FOhlWeWLDVUSlIiVmCvFmQU7UUywarCPjVoZ/lFDcCvlm2eDHy0j3m4LIYCN5SoeLe1Kfwk6RBt58bbMP5VXFzaFRx88JtX5z/Amoea8C8NiGozz+ESruyASUIhRS99mjUscbNWm3/zNgrI1d3ZAVUeroZgfUsbfEe3PB2w2eAKEFVdegW5gPpdzRIXh/ddcB3T8dXUfaDmfNqixN+b63ndeBIkXLCJrDkwCGfsAo4FZuPLF2D7XBL4TAc+JDe157lHAcFpICU09I+x8wE4OlfWa/XNL/Jl/jeyu+8ALakEFVyntw1TcssF0463wiqHHVOZFv6plNCh8iG/Si7FNWuMhcVD1u+I4cIcXgkS8tPQ7HuK55bjBLd4KhBpNus8/0GfHTu0606CKUFuey+vxx9YhhfN4fSc+xawpc32/pH9yO/UpgF0d85IUL07cIpKbFQFXnz2L13Hklfi9DYeE/9exKMwn2LNnhoGS67MGX7HW2l+IILbfDnocIDu3HFbaufhLL8RAAc9f78fSLhPO9nfwBhJQmrm9DqGvmq8OYeBc8pB69srch6QfZS6WlFEqdK2wcDK2xTF7b81IZ6Lz/uMvl9eFj2ThBs/5e2FZ5+I4XP4LjDP/0FMMs+y/NfZA92Y7pnicqhaUyIAHV5kOiI8FYyxBJ+bolhgX3BKnsFdIYakiQNVxN9d5U6PvpD43CcaggEjQhmWREEe7OUgh+Zt5SD9XHfGh0kL9Ks0gFE+VU8C7kfaL8gKUOOTfZHeH9jPRg6k+8ncHzSQNa6Cxr2oLx+n4eW6b58HrDX1eAJ0sH8NAyaUrCjL7rIJSkoj5p1osy0K0lpBK+PUlzwYQPovMk6rcPnwUZ56c3EMvj+9Q9wfTLKaPp3YXbqqxTuMHLy6cppRsQ7z/0GyocLimIkkOH5tt9edxNG0Sula+aSvuJxAAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-HOZVYDVK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-HRDDJY2V.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.catecoin/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-HRDDJY2V.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-HTVYZ4M3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.huddln/image.js\nvar image = \"data:image/webp;base64,UklGRkwEAABXRUJQVlA4IEAEAACQGACdASqAAIAAPm0ylkckIyUhJpO7wKANiWMA1mtUgr8l64+5B1Uxd7jH9j9aXlR9CrnV91A9bzowGvsOnXo/0gPTxaAGQBj+sdxi0wRiQCnke+vNRjJUZbGqx5FLiWnhQzemSX8NXVLfIVRupIgPP8RBVrdlpQ467T4xt0wgXG1+em/gkiFsZ8OYOVQm0hp71b9m2nbQokH67vTMnvaAQgUYkZEq2gUbbkg2fa6OHGchcKyL4A/QN8ALpqS2ZGZdac0rvHGB667eqIEAAP78rRABad5u/np/5/j2Rb1fWPYfvEysAMobXucCgh8xYJt4ziOxUIilSO2SWyG8dr1kW0rYI1bYwF6rPNps0z59uJfQRMjr+ogp/hK+VkICjmiwUu8vEij4lkTa5jGIN0kUE91uliDbITiHZc/g2+h7NFDm7enIpGjvYXRa9RL3ToUIP5mWKbs/SEmef/7gz7KSpVS3sWLjyemfcmfKk7Bia2DRFsf6mYVddz/gSm2dd40gGpowHvz8/kKGsShGbrZ5qzUxZdYhu9gtYbvkP5KCIqaWCN6JAdWlivAmHf8t/34zZS/Htcd7CMMygwXihFj3awN6WpI6tBabEJj3vPHUTe9xgsNDSgZ3v8/fuUcQ0H/TjGlp77HLqy1+jDi/6wZzUzB7cFmxVEdHtTz90V2LqxAwZdZr8FGOQ13avpCD+TYUAJ/G0vmpG+yR6tyssIZ5O8bvDYVvDrdE5s4+YBRTmM0pS3fFd/WuBpVnMliAwAx6AB2q/KaS+8c19YnANzptdsNVOKUSrUJqqxQXAAdVf4n2bhCVxTdpVeOSjie2zzXdXAs5euLyJWnQRGibL66NIZnONmfGV/FLQsmsaZPTk7YjwQBuEZ7XExlJGN4gaWFD5RnqT8AcQFN8u7TL5UrJ3yXN3YKWg4ElTTLw5f3vVoihRdX9mWaxUz5+M/j+TH5w3ZRdwL3li9F965BIgVFAlISF54Vy+CyEXiXVazoe+IA4FJ3LlJLsdtPMPVu5BH5INPE9rNs1Hsrn8L7wZFXzGYBZDjtvd2XdyHktxHLu/uo/C+FrNqU047az8B4kA7+eNZvvDxf92G8iHDwgAtlWGiOCD1gWQvvLTLf2+giE1soURu+TouXf5/bGtADMccAwcRaOBBXXomzcMTZ+pVJExITPOYzqDU3x4MCZwKt8dp4qfueLvwI4cXcYBoqgWYKvbIHwItZL0UJaURl5Q/hs0vX8oCjsBIKo80E6A6UdoyqvcJ3hV/HhKQ62lWiOHplZI/uFrxileaYj1aY+JZrLJS46OTN68FrG5Bl0tRycnTdhqEOChweev1wOWm1L6bB+DX7BQ/Al01cLUOM7DgVJRzX6mIqB2bFtRWSPHAcFh6tzBfa1fFitmHXEvOv9zRp687VSTatB7J6L6F5KdHoGHA+3ngDUQjAKvIAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-HTVYZ4M3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-HVHSAD3I.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.sequence/image.js\nvar image = \"data:image/webp;base64,UklGRvgEAABXRUJQVlA4IOwEAACQGwCdASqAAIAAPm0ylUckIyIhKxLqGIANiWQG+OYH4SIKBy+ZVNK+++88e8ODpvyyif5D2QeYB+kXUg8x/7dfrl73vSEf3jqF/QA8s79wPhg/br9vEqxEl1yj9ptm4fQo77PTc6/e/Lcj2WlxBX2l6gayI+AspLVQMjKX/iTRuRdkxWrggi8O+8HeyrbSdNlr7YYS5R2T+coculfJke48MBTvjGNWS268IHUmP7F7N+x/3TH4+9MrvqehW4Ck7i2Pyb0I6qI33xWD9DAcPRXz3wrchD71WJMbFm4Jz8YjY9T///KYAP7wov5qwHXZ/7aH/1LP/YOPvW//i0NjQ5qAwDt0XatMWuwvBVhG4G6FgdkSJW2a375XDqkTPCUKI0t+auk1XadICB2TM6EFcHIlnc3gA7u3o35/1gfNtdvq9ZZ978LH6Bm0RsXPMW8YQrz4LjGhIhvCBLMWoVLRSBvhfpCsWugmiKS4O8UcXPMIOrYOJ/i8WGkMsotSNwsOpB9IPEQnzPeEvwfX/21wUnF48A7L6SP8V8XMD8OnxszpYL/vgmxBAeyeLz8jfkSzolnZ0lfpw3FIDxJEnYiQEZtOvnp6yyEKwhG6IWO88+nHwtTvopQFAGN8FcE6+CqapCSnE7GlvpTa6tPOCVXZCr2kYetJMitGuigmgRT3a3MUl+N17wUBnMyjVq5wMOhJlDCRcfse6fCmTqLg3vCSSoT9nsgYcG20/DWQ7j1Oi4N+mMX3Q4NmBfaRhYSjU0qlittO1EDHLA/XWWLvGaVtxhZu/2Ycs6XrASCbC/0BD4mykPfVhuJ7uMOmM7uAgb5zrl6lUJr37uTnnW8HH9lCHWZJYQWUlnL+zQ/DaEzIzrCGgpMRR70c+KJyUOcOxftc67KWZZnlA46Vc5X1K7ppPnf4H4qpz9QI9uWIJThUhA9CRwY+5wBMNiPmo/ekaV2OeuIdqNV1WhD5L4z3D8+l4HoKgw9JQ1JleSuHcmK22t+JjNARC+QBPKhjc/UrkVAlV85xLIUUSEZwBIYCd7JOW3pWIj+3ODCBHaDR7IG5aDAVU2DlDqXUIfhOxUPPYTbL5it7Z28l+fTxc1lJ9To8XO43mEeXABOpHsVeZ1sAiVWHlOp43Oo7u6t/LLjxOhErMywsw8x38NtK80XnSotVxsKA1ySsu8EHanij/AcxuSKFRlzaATShxCpxVNmzYNwM8AfbYz4woZw1dpfumC/nAlJIptYDyAMo7tWaZJDuwv3fOBjmO/UovtFGl96xQbiHA20VH+eqRtszJp6C9lFHZSH9cphoeVMRF27dxX/M4fopI5uiQ8USpX8f8mp/9JMiXTjYG5rhhzh7KR4hVAYie5lqHfWtNO0OyYlPD/2t2J5Tx84kjQdnIM8RPAXOqViUQk/e3P5hl5d4Idl6J3+zp8T4PnCYoZTyp2GbUSAhyVIqQXZo9MKc/c83RmR30ND1T24Mh1XvJZ+JCW3vDx1TNlj/VxaNKlhf0wPVpptMTnMSlRdXzZ7in0k2uDHhlwx55FCOpB9FZPJ9SgkEnwDfFbUVZYaHz97P1ubibss1IXdyoc0/hwzip8OwC4QWJAaJZcgtxqC0RMO96BGjezptAhkVSi4ck02dvTv7yFDFJYSzbLvMjctuujP3wbXEstKBUV8/8BuFHLgqPD1BBgA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-HVHSAD3I.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-HXAPNAO4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.copiosa/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-HXAPNAO4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-I2EVY3PN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/embedded/image.js\nvar image = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzM1ODlfODY0OSkiPgo8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSI4IiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzU4OV84NjQ5KSIvPgo8cmVjdCB4PSItMSIgeT0iLTEiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgcng9IjkuOCIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM1ODlfODY0OSkiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAxXzM1ODlfODY0OSkiPgo8cGF0aCBkPSJNMjQgMTQuMjVDMTguNjE3MiAxNC4yNSAxNC4yNSAxOC42MTcyIDE0LjI1IDI0QzE0LjI1IDI5LjM4MjggMTguNjE3MiAzMy43NSAyNCAzMy43NUMyNC44OTg4IDMzLjc1IDI1LjYyNSAzNC40NzYyIDI1LjYyNSAzNS4zNzVDMjUuNjI1IDM2LjI3MzggMjQuODk4OCAzNyAyNCAzN0MxNi44MTk1IDM3IDExIDMxLjE4MDUgMTEgMjRDMTEgMTYuODE5NSAxNi44MTk1IDExIDI0IDExQzMxLjE4MDUgMTEgMzcgMTYuODE5NSAzNyAyNFYyNS42MjVDMzcgMjguMzE2NCAzNC44MTY0IDMwLjUgMzIuMTI1IDMwLjVDMzAuNjM3MSAzMC41IDI5LjMwMTYgMjkuODI5NyAyOC40MDc4IDI4Ljc3ODVDMjcuMjUgMjkuODQ0OSAyNS43MDEyIDMwLjUgMjQgMzAuNUMyMC40MDk4IDMwLjUgMTcuNSAyNy41OTAyIDE3LjUgMjRDMTcuNSAyMC40MDk4IDIwLjQwOTggMTcuNSAyNCAxNy41QzI1LjQxNjggMTcuNSAyNi43MjcgMTcuOTUyIDI3Ljc5MzQgMTguNzIzOEMyOC4wODI4IDE4LjQ2OTkgMjguNDU4NiAxOC4zMTI1IDI4Ljg3NSAxOC4zMTI1QzI5Ljc3MzggMTguMzEyNSAzMC41IDE5LjAzODcgMzAuNSAxOS45Mzc1VjI1LjYyNUMzMC41IDI2LjUyMzggMzEuMjI2MiAyNy4yNSAzMi4xMjUgMjcuMjVDMzMuMDIzOCAyNy4yNSAzMy43NSAyNi41MjM4IDMzLjc1IDI1LjYyNVYyNEMzMy43NSAxOC42MTcyIDI5LjM4MjggMTQuMjUgMjQgMTQuMjVaTTI3LjI1IDI0QzI3LjI1IDIzLjEzOCAyNi45MDc2IDIyLjMxMTQgMjYuMjk4MSAyMS43MDE5QzI1LjY4ODYgMjEuMDkyNCAyNC44NjIgMjAuNzUgMjQgMjAuNzVDMjMuMTM4IDIwLjc1IDIyLjMxMTQgMjEuMDkyNCAyMS43MDE5IDIxLjcwMTlDMjEuMDkyNCAyMi4zMTE0IDIwLjc1IDIzLjEzOCAyMC43NSAyNEMyMC43NSAyNC44NjIgMjEuMDkyNCAyNS42ODg2IDIxLjcwMTkgMjYuMjk4MUMyMi4zMTE0IDI2LjkwNzYgMjMuMTM4IDI3LjI1IDI0IDI3LjI1QzI0Ljg2MiAyNy4yNSAyNS42ODg2IDI2LjkwNzYgMjYuMjk4MSAyNi4yOTgxQzI2LjkwNzYgMjUuNjg4NiAyNy4yNSAyNC44NjIgMjcuMjUgMjRaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8zNTg5Xzg2NDkiIHgxPSIyNS41IiB5MT0iLTYuMjk1NzJlLTA2IiB4Mj0iMzAuMjAxNiIgeTI9IjQ3LjUzNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjODM1OEJBIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzdCMUNGNyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfMzU4OV84NjQ5IiB4MT0iMjUuNTYyNSIgeTE9Ii0xLjAwMDAxIiB4Mj0iMzAuNDYiIHkyPSI0OC41MTU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4MzU4QkEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjN0IxQ0Y3Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMzU4OV84NjQ5Ij4KPHJlY3Qgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiByeD0iOCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPGNsaXBQYXRoIGlkPSJjbGlwMV8zNTg5Xzg2NDkiPgo8cmVjdCB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMSAxMSkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-I2EVY3PN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-I2F4TK64.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/inc.tomo/image.js\nvar image = \"data:image/webp;base64,UklGRs4FAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSPEAAAABcFtbe9P8DqRJNIKOVnAcBI4GclxAS0CljloDECpKR+Gc7c8tETEB9GAwnqSVPf5+W6WTcUDPOzxa6GxVA6hXmV5E3HmGycQekdpEsofaQh3xKtG+5/bMEbHpubc6/fKIuex3bghzRG3EFVNH3IoROfKIXDrEY2gxD0ILzYbj5RH7cqLB6TQDl1UrcKt9De5wbPzf+L/x/z9oD+DqagVulWbgsokGp8dLcMsgtNBsSDyGFnNyJDTpEDEFTDEiImFgGUHXnX4Jqux3bpDbM5BMz6W7baEAKdGmR5lMLBSbSEZPOjxa6GxVA6hXmV5E3KHbAFZQOCC2BAAAEBsAnQEqgACAAD5tMpVIJCKiISOSS4CADYlpANOMg86zpS+K/7N2s/3joVvQXspnF/sx+O+Y7n72lP8zvSoAPzHulNTJUnMv/8nl9+m/YO/WvrXlRrpmecSXpGbI8bsFoI/gfrjBEcVVzlTX3Yovvz4dqS6pGKIakNZ7VCSm4S93aIN4wecjiC2zPd9zfmnGPCrC6qyBJYPMURUo/Ag/r4DjxQGpkGPbJoCudYZbOgOMdI1bqOJtVcuRowLtIU+t7mhS7iZkciYMN5ZIepAGrCurt2m7BMtsD71rf/m7q4vgAP78A5bFxHIlS5WAYB+QxEr+/xeJRtpg7S4Ld5MQchl40DxPIuUj++Tkq78B2w+zzIbwLk26kjTBwAHFJMAMbeThGkUsf/9SRgHk/erVHjZJ+LI4ZPD2iLlsV/OifHGSjBI/NK6Y4qsX4nAkfaksHqqX3X06Vj82g9Pt0weYgCO0Ap9clP5wZsbMZ1Jk7ZnQ/kPDdOnDPV3UsjIxeOl16+mGvsK+14envHI+AgWr4mBjO9rttHngtR44MxRxBBrn5BC2NrLM3vhkY/azgKyPuMSU6lxcUSReVuDPS+kLJ2Nlw3c8EwI2aqhnoOQlfX2CePLA3lrUsNnb5j9N97lTDrbVPMStuhle6+cZhCtVuRd/ul8Jtfa2LDkGbzj7+E2IG79335Xt6KUPC95pbCRhozjPlZXcAqR3XOTyURPlxpiYyuxrUYV0tkVzbWw2tdy45bPLQ/4iN2x6tr6JJdehr7qgxtlSAswPBrJjQPXReZZbOmmeeUTa/tKoTT/mir41njR26/7rb6h2zDSwcW1qD9A8S3ju8lXQEQueZwFoM+3+zdPKXM/8XcaBTKLMHVh6D7BVszwzZ/VItWevN3S3rqotvLtTTu9ixVKnhqZTwjTKsmSgGb+39Jl9b9JINEZ7ghrwJFvWbzLqE+GULvMGKrtdsae4ojo61nFf2v8wR1v7caEgX8//BrtCb9lmz7pZPy2guBGu+sVNqzbFHDnsuQTcI2DDUZT+lCi30g2baYdxFef9207sEExitqICDxEthiE/hr857CBvWWfGBHw+MWM5Ld13Vz22iRK4nd5KmqB9ClzYJ6FJxJlmk3qFHzilisN5/5lP8NND8gsqlJlwl4UIyODSnY/xcaQzehVMjirQAbKp1rkR7mHUa0rOb58X1gpESV9JevUj///DIfO6f+YTa57ggvVxGppTjnnB7isW9tKLGIdIyo7T90Hxfa+OWtgUI5RJMKdCU4M0U+WLrrgnv8Vw0tlq5LL4439IhVOxOsjgef2k7w589NI8gRgb71QwmYd/bvCSt4ky6WgWkj3iF9CuhYlMpM3rh6qz58DK/6Mz8gDPIGC4pGdfxdJGe5TJUoy8n5QC6L5bMtzbUzLhMBvx8rOYR8xaTWvg+msAxAK1/+J7/53CMrnloBqeWLPXazUtGMYXmaOQi3OIb+I3/Nvkxa0r7zc3YLiNQzOifqt6paCLBjCT8HT9XyebERulpfD6tqi/ScmpdoKfGm6oM06qx9o2Tja3+oxpG9uclZy4ekXAALKJa+m5OUBKT3AAwEgbEnZkBdn0UCQ2pLYAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-I2F4TK64.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-I63OXZPK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.timelesswallet/image.js\nvar image = \"data:image/webp;base64,UklGRnIFAABXRUJQVlA4IGYFAABwIwCdASqAAIAAPm0ulEekIiIhKxI6eIANiWcA0iaAH4Sv3B0p2ozGAdbKGWOjVPJO+uN5iCNBjYlT2PpglGW/8vBmujeRrNOcRNJdB9PYPuKf5hiFVqe/DsEpA0M4hdkCWwT5mbfQbrxkKrVDAtlb45ltL3eu6nGaJQUMbAJFzNBYwGU8L2uq8nyncy3P6vSKiR59pjQq7PpBecZ9lNpk1ixtA4T+fdyIsAMj+/6j7zjrOXQFJ7egFlm5lnannOY0GJOYWnUZtaDWIzEHve48+FhnsMF75rWdxW19z/n2Z5O4KBTF78z8O1Gqwp88jlfYhDmFEZoa+X9TwETsG1GpBh00//zl9MAbiJwR6XT5XkXqWK/4Ho7q8uFnHGOwwSEQ3hRgAP78ArqQDek0q6n0gO7CK6SjDWyz1nQK0T4n52pGCOUiZCdT2WAc1siBjDwPS/2mhLBRbQCeI444wXoB5eUKihGfOzZKGMjMDdzXn6HxSA9cXS4JigRJQhhuM9/e7gPPnZJWDHKTK01b+wEhesnpXB9KVfLa8KHM6Vyiu7b2K+B9Gsb5hGPcHmFEmGTBUzaLUhmoHjo//TlMRr1CVJ6WdpyxSwbwtt3t9v9Ts/uzqkaMCizJL7Wi7lqaPXvfyo+p6Hv4Lx5DbNYCJLDWAislj80MQp8/7Wc//uF11PalBqRScv8MBuSFSBMc9uVKaOq9fdOF+zbMG4Z+mV04XhULZHBLf7idG0HX93rsDjnNBWI6oWVGi7LmYh1IEY/82JVSq+s3Pi78jA+Wr/9g4X7Q6pCUxppgRVQEtD7VnJdIUKmR4FfT9k8b95ZANEdJzwSqtYcsLdhjQ7jMsnl/P5wad7IpatdyL2G1vMMuU77dG9aefWoKOcKx/SBMc+scmgTFTMkYSXQOSulgI0ktnk+v9TU77VIcgxPILMBcyOm3KlxUI1AvFXfGY/fsOnwvkMDaYz5vQYOjkDQrKeMOgVGg/HoX6FjVdHh19QEAuVZFX/pG2rdMudSxuoldwD1WUjbvh5M2d+j+M4czEbw6q91uXE3j+/z63b31zVPLMOytkOR83KzZT0LG3fp2IDnnRpaukfiixiC2Dgno6c1Owvlw/7UYujrU1OG3tA/XTWDFVYnV8WY3TLqv6vForJ3aJOEzhOEeRg7Msg8/lmH6tXzgDISTgYCqz5cqlvdyqSiC5Rre8sfR58cUZCcFMvo96v2lDgyjBI2A/LxmEu66MuSPMbeMzJXoCHEuvMYonVkIn7+G+m1Wqi9/kC/AZKJpQCZMeQ8CM/QD4NKNORCyADPHo4rVk/a+dGINBRFjl1k7H/AJ1CbzwEDqf7sqUk8R0JYVYu3DJ+MP6UaJxSrqPr6coe9vfXNOq9seeWCvtIXrKj4qWvomuzdFrWVh1xIn+mVxvK5tcMHmKJEca3m3ryg6zgvvmy84t6/1/CdJ9rrycjE4Ayn1Z77k//qNMe+/uf+fzm6sLbTvdSlRs8BIvVEXLTqIPK/wqxbzf6dwpHlt8hwlZQ6xy7d/W/l/zLWohP/weHXf/cfsgymyuhdMzVghRsRMlMcKSd91d83zAw+kVKdO2uWuN8wz1Veaz8zKBLQwU63AUm1fjdZvz+y4AcfcihX57PC7Tv5FwUJvwC6Y7XnJg79Gs0VTJQft5ewXc8qYHLz8P5lmeXaNMJaMb4jWbn29DLNOEkZRlN6omUkLTTellkBPrm9yxl97w18ZX57b7kL/Z4uyzpBeNEepz3Fl45+WmYlooBQwYaFlVw2Bt8+agquB49n7iYki57+VV+v7IjMf89IdOUqwpMZpVtIGwAGR1p8OmuuuGoWz8ABsPeAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-I63OXZPK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-IEQIMBFO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.saitamatoken/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-IEQIMBFO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-IFJOAVNI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.gooddollar/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-IFJOAVNI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-IGUKS27J.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.meld.app/image.js\nvar image = \"data:image/webp;base64,UklGRh4FAABXRUJQVlA4IBIFAAAQHACdASqAAIAAPm02lkckIyIhKxgIwIANiUAaVJhqs9uXOs8Id2uluRp6X+/33f7deAA/R3pweYD9Wv2j7Bn68+wB/PP7f1lPoAeV77IH7hejpd53qZZmvr75jr3/6KAN5i6Wuap5RmuqcoLfigj9Xu0QXXiVt8fDe879Q/a2K0G1G5U6wYM0oxywX9Qdh7fLonkuq1uKB+LfFPs9MUDxWEo7QchJ5yX5uA0xRtouBBUM0sLssMqeviQlBCD7AvzXo8Tg4ah7xpRYOo7Xhoof97NRusbkwnBj9DRuOVSA6R7VMKp8fk4ioAD+7v+f0mRv3cf/75n/7zP/3mfj4RHGQEcCECIUJLet4RrZy6joR722TAQDRS5nnSZMlcA6EEhnmqNTZppk/q1awcmtwXWWv7HzUo7cwOd+QtKFMq86ObRXygEXA/xKanTPYijrTj/59Oo+esUO5vjzVwZK8+8Eyk7v+GDgJmT/N5L88JLYNUZ4rpZl0z5VYgd3kqaSpab3kwIhoOBE1cJjTfYHaPf2OKdaVB0WVaBb5zRBbGXETYx7Dc4oWsz8dmf2EFajsD+HmmHuTDL1n55U5PSgVz5022Ad2kGJ97eXtWFgctXvZ5EizAuUYHK8/3VItsj0WfEARjQDIngeNW2jXfaK7H+7EXYAo1VUqV+ySVnrwbCP51Oz1TErx1v92df884I5PGNEFu30jIBYMfEf9E1A5GMNK57jhSdxJsCrDCSbHt1I6+O8uLkNOS0iduhId0m59IeHcMydnhmW0PZmKeZE5ujFxY4q2Nz5qHYXRRqDckJaDEj86/VPzGHBm2abDSgOy/WOamicScdLWHXjtC5gvH4yyfBUcpAnjDdtS00iTZvZLXg8NWhZqmFB0bZx823iVr8fhWGgsQm2FWhvaXV9condsgOmhlCq7ul9/bI/A2bAmXsxyM9HNGSb4VsuPexD/g85sqj10z67C2ftdikc/OaLPWoH5DL09vJtVIH1zFA86J403db/yuUcMDwvZzijoQZqjoid1LqGRfKz+DqWKifNFL0mHRLGBapbjwvL+tfZh1a86CAshfWv0l/sgQ4PKqOEUhJVqZuru6JIynL9wPOCz4ZborOWrh72QlJK759ZgYDshbrq2hPP2+mCtgMTIiHGqYtww0F9mVQf1tkHwsIWdTDM2U8S/3KSuoDv3VfHfObLJv6l88hcXLpnltZmR7tTjIK/dLYLTrPsrLCAApjmHp0ez7+Rj0wYWtJ0MtiCgIxrw87FSLI5lpuy/z4jNAG2A37Ddv8FccIRqxQbLiPvagbHknv2QHHVqxq+6UIzt99CiH8mB/2DpCYLin0VFKNcV7ANX0KV7f/SYnrYK+uk30ouuS0vIDeYzqsBESMUJJr3h0oHz37kVEnHAAQVXyls24Zy6CfwUSSHve+MpHF5XPB5TEiITVeNl6SetdvkkY3t6unnou75E6yjNBCjvvIuxty8Aue7KQWzYR95xljNq+hOa73oFk2uRSyuQE71jePGAPG4ispbtDe53DfvtBnokHU2g2PHObyViA0gHLn45sYr0/zovpLv2gMEo55VRYdig6pQ8lpyBRngx1xsPWv1bUx0F5WuZwOf6KQ3zePMgPGuKcOYDzlzLkGCbKIbTndpymEfTik77RfdC0ZVoZcdpP+rNXA5e6AExDx5LpRYcaJPP1ZTf4muqNNwBecIsVC8h9Uwz9ScfOxU8SXXVgAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-IGUKS27J.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-IK4KYWSE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.keeper-wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-IK4KYWSE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-IKZ2FUDX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pk.modular/image.js\nvar image = \"data:image/webp;base64,UklGRtQBAABXRUJQVlA4IMgBAACQDwCdASqAAIAAPm0ykkWkI6GYvtwAQAbEtIBqwlSlRmILuxSPIl/b3wVMpgNYRVxV6ilsgeYKR3nAC0ha8I4KptPPvzUlc89l+fg5SdG+b2/fNUUqPNIhpHtb00kaIBKxmhrPdSmHHzlH6WmPGb38xngChO54vebZQd/PYHmxtxZNPoSAAP76eOqiBg/pCfyE9ofPl96tN2Zo62IdqEkno3Gs/t7Mqan7FPIhCSnyKviObXNzOdtMKqNvy13f15oIELs6Cd/1hXGtSLAeW0etMkmU9UbWfPkkPG3R7YRWde9L2XgstSNg+VSPLIIp9jD0Lf60jHD7ec1n1b+rez1gJy8THkr1ZK6ZMQ2occGOmtp/Jzp1FqSQD36b45Rw/KYGkE/f8FJsahP+JRP/u5ldhYL4hrRzDBpRqW1/f/VBnn/T+gNDJi6pQDjJwvWkgVF1bnTSko412+leAlsEIPMeYsnhzpNlaCItxPZnj6xi3Xm+xCo0BD+/prHpOHesGfiHppmgrrmnAv/hT2muJfNigTFi3pk2/PSz+gFgHpRCzjiH9/wLmWViwBscZCESAkIJoZlroM7QirqYVgziRAzcp5/VcgAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-IKZ2FUDX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-IO2WKRLV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.zkape/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-IO2WKRLV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-IW5JZSWC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.cypherwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-IW5JZSWC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-IXHLX5GF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/global.safe/image.js\nvar image = \"data:image/webp;base64,UklGRpoDAABXRUJQVlA4II4DAAAwFwCdASqAAIAAPm00lEakI6IhLpWIAIANiUAagjzP2v8bvDE7J278gPxm38HLSoQ5Gfab8IfV19oG/V8z36o+r56LfJg62b0AP2S61r9zPSOzTw59fCBRK6RDXw+5nkD4wtztXybBJnQmzKtZrPOhSzjIEWPrPwPBr3/u+OCQA768hGjl9jD/0YXRvJMvp/VHAZPtks5In0h1GNTax9wd5Av3VM67YY/uQwDI85HkJkV0Qyi++AOHcrJtPVUXOVbAUAD+7r2FroIqKYqO+91eHP4XAAAUAp6Y6nYXg/wYLXUcTz2uwgBpJoNKPlN/TpOpBXYw5aS8NydfhTXBcsKy/iHa/lU/zCINAHENTrwuvNgIMyFqDQ8JH9oWxmQ8AfIW2oz+pvPIoxxy8WYBzomc1qYDGcAUy4O9jIwjANga/gdEyFtrAKFEn4FiW+GRnN5fPxxiZfVPBOf8mrN9xrxHFn+RW+mXqxW6f1AK2jbRKTc/CNnlqm+yeluCeIjdOdM9QCkYU5RCHbuHuS59+NhFWtpYwFSjTyQeZVmgO+A5eRw6/8Mt9KXDKSjp+SDaLEpSjq+cQF4tAMHlheG0DjPXOJDYATkoz5RW/qklKP1h3O4RHR08uQNecol6fORvavSbAusgtCvTJ5SQ6+BeX1KU8Jm2JRmcHx71E/+mep7YWG1C7Xe1TkO/RMuWwwqzhIEDJMvKSJ5MNHgAaQH0jaBEXB2nXnwsAkA+2jtKYipzxpeW86QqybB5/5zuPvMrC+y4awuU+xnq7aNiPyoq6W9ZsSbaEL6F/vK94t1f4d/bAkg+BlL40wJ1gwdL/q5lTfxsKEGlFIbycemBCINuf55IXve3VT7flWXEQa9aKYluA9JlJKbctHozVBIURmJx8q4GTrTl8s3V4wp9FuFnjkOJXXCOIzDqh+cx9TI0C1WOAoA/9T+dZ4GfZp1QoudZ9U4Zf9qr3cJzwoc6hfeIRx2X8UoOytBwWBeTHEDyfBopcgh7Kh2LlKlFPSVRPRvNAbSbfbszZwNejvzJIsCsKBeo7uIP5i2pXv98EWptLpwWTz8VQWY/ZBnuGDp7D3gOCxKw+KvUzOG9QU8NaHsKGZlbGDTIe3JevKm3p+KMHP0VmB98gbkXDsvECBb0culy0Cz0v3py4DqvgNZl23zR8+llJgFedwOjyaRwYCxfzXmn37K3bhF4n2UwAAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-IXHLX5GF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-J26M6VNU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.panaroma/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-J26M6VNU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-J3BDNCMB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.lif3/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-J3BDNCMB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-J3VWG5MZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/money.keychain/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-J3VWG5MZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-J5PWF63O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.pockie/image.js\nvar image = \"data:image/webp;base64,UklGRmoDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSAoBAAABgFttW9vqP4ch6G8OLCB1GgEW0RY3MgQj2GxgzUClc2gV7CpTCefsr3ZETAAd/Jr3ynG3vO3duOzlr3TaB/ll3SjEGxfDyNkv+XACrky1xFkZxY8RerzEOtbiIJYUS7yDhO1jmV8i9hnbk/olZp/uEoMl6kJscb3ErTkRqTGwsSJ6MEvk5oFkBa2SL19L7F+5BWf7Dpwrh+CG4wAudBFcXN79f/f/HdBdBBfHAVwoh+CGfQfO5Racff0G90WyglZJejDQzAORmgAbKyLiGpjmRESigFUI2pl6UD6l3SzzkHzG9hBLCkBFwuhQocdgxlrQkVyZCkhlFKfjH+SXdaMQb1wMI2e/5APtB1ZQOCA6AgAAsA4AnQEqgACAAD5tNpZIJCMiIScYCHiADYllANSEy+TrUmd8A6VmiaMRhfW7/pIUntryMmfF26clhrqc/9LBlRN93Xa045JvP26DxIvjzMUNPqP2ff43OqXo43UohCZvMtfN5PYMyB2oMhX0Br2FeHCbkFJsyYb50egmxFsAAP78SgAAAlwoMbOKfJN9D3MRgq473d4qAFkB+XZnC9qYpZDTViIM5wr70zRt/hLEyGChiXXyX/M4y3UK25V/UVkd+49XB3SSdR5jBlrp41LOBW/xCRr275/7mwTvw/eoVkEpwQFgnhRnN/Bwzk0AKlNpET1BvARq1VY39KJEqAPDog21N1XS3l+0JOP+8sQ/h7k4pcBeyk1+ZnkaxjihgnoWOZwt8/9Ic1+6/f/BnSeJRp5FXzU3BHlMaq1NvEpQ5SeR4N54SUvsnxeAsg8xU8C/z0OBAF9CtR8ncDN0QiTy3Ov/axL52EmJPRt9WXLj3U298uc/HjobxO8w+HgV5gBmDdVsn5vAEgbnSg3Rtil92wF0AQ+xuszEOSPedbRG2d9e56VdSPMhhD/D+2cx8EQksi62czPJ1AA0+4CTgC6Vs7Bt/ONfOpR65HBL+U9BMzRoGDeeLA+oe+Z9AyDz0ae4kIeqDLJ/ynqGelnaEXemiHSsiSnzXoQifKt5TdXcYwxjrf3G/Fv253gmwAF9L/876EZLS786105M3KININfqsZ4gD8tCjdH8KAG0bkrQAaCPtbtJBwcXEAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-J5PWF63O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-J6OTD3HY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tastycrypto/image.js\nvar image = \"data:image/webp;base64,UklGRhoFAABXRUJQVlA4IA4FAAAwHACdASqAAIAAPm0ylUgkIqIhI5SbyIANiWUAd30k/WDrAbYDzAdADyZuso9ADy0fY9/a/0adV66m9sX+SyFXcj9N+S/JDtZ7oRljiJ0pWOn0NtE71P6ORR/WnkWbejtTyWYY7/qkVORaDa78CXA21uGqmHio0rhd39K39K7jEYS16Do/wViam1QNbT2wEerjpvF3xvFKTqsBeANgShVC74t/CgktVgtuhHRXF9asiTzlr10SYHskg0ufpV3qwHrPU7Rf+lwzRf+qrVkSoHtsK4zLNHXZ3Bh0DP0wf8fq0a289cAp8atB/AAA/vu/AF+hMYwqVDf9UCyrQfA4akFZd5z8cxGj5CQGh37KcnEXfeyUYNuYoZQe8qLn9K0Gh+IsGoT08jttPU/B/RPqQN8XjJTwrykBcmoqTpiqGxZZHsfxSch3cLNyi+boHyBkGXDpP/gdcncH9R9GkwmVKepwZWgvf9Gyrg8aZOKsX/30Ttluni0pNcwULHS7S60t8kEfy2VXBcezlzpEj+7Y+6jjJ33TJMkpGPE9HxG8XyziiRJ0BPNGRDu9lpeOOJchAFamPfQsghGcheVAMy4E94ndY4XTNW3uRV2q+4xfZBjaMGE77V/vxFdoMMbiOz861oK/8xR+K4mO5m7oTcaaneDrogIDD0JjUp+YjSvGZh8G1gO2jOcVgZCBvfiHUpX7UVgVv5cy0Xi0ybS9nNdHopFhK/kcBruGUboNIf9aT3vq1IadVV3cD6IwSEyUgvPm+5wrwjUMjeNTjP6RIF54t8ZWKmB+qXmPEf8jZUx423WEb382LpV9VJWKGcQzrjd2G/SqWbSB8UgcvnaD0HxySeKUhCs3qw0AKarUbU6KNHyCjD2ts9nPJWT/N4LuN0UnFK324C2qlz00UPBb/DCFEpNhsL/9KsXQ4S52B3O2Jwshxp7NFycn31d9kife/Sjme96ey26bs1q1elcnQCi1VGtapUDDH5eudYPqoP3xnTo7mWxvr3Mc/lIBf9zbfBsV9v3Inx0s0fj08IfAqnCePscRpEAL0qoHbRf0HE1v3ncUUNUfNLLJzWsFGr/q6M0ipjV4WMsdq3lQr3MCexgJjxI3aPgjIzf76qUAZXo4pVrLHPhg54+h+Sfoe+Fa8+SFzo6qlZev/2XmUn3b9lF2l8EyftDgAS37mPYIbR2PBzy1sGQ6J/79N41uwBvll2iuKXXYSatv+TiVUNpJqkb5zTy3PYcY4t3kiXLeP3cqasqXf8ahZbCHUh9xJ7gnWS2+KaDkNIXlWUNybWbBvxXzieWIFEOjg8ks6v2PqvhNMjxlNC/+M7Jwg2iWiX/8bo56v5FY83DhLgzEwd6pTP+87OahD9il1O+83kXwcfpsUxqjiAeTzXFUHE62OxhqprsueSDw1ZY0IEOzH/ntCtFPLdLk8xf9WqV8xlHx1U4QLt5fbPbe61Xjav7Z2b0iGtHWD+x9sCEkZS8gllFpxy7qN7POen3Q1MlCMqDTBiWilvHTjTuaEIfXip6ygY80MU6L4zZ/PYB2UxCzvTsC0bNNqyECvQR0tZWy1lL9L9b9xSBUq33GuaH5hntX/9o+76tRu1rAlXxITjqyU8PnHXsJMyIqHsrB5xsbqg0tvniPDENZo+3pI5Pn4nZnjT2Lqm8Rj//dKLYe8j+ptwZf+zDYvi5Jb6Mydbt0vx/fignxGM/2fXtxdax34UfBr8FVCAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-J6OTD3HY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-J72YUI7L.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ukiss/image.js\nvar image = \"data:image/webp;base64,UklGRr4BAABXRUJQVlA4ILIBAAAwDwCdASqAAIAAPm0wkUWkIyGZuXRQQAbEtIP3hY1ynNXXVnXvbb77dcdc1fUVr/Qj01Zg9D8f8H+mwifob6SUj62mn/ogLM0ZlcZAABf9AJSPPgAy4mzoUzTZWgrg4AwP2Vs1AHL6Nup+lC0fVRj59d010KCP9WB8yTr9NrXxw7z4AP779ujwLU/LetI+ESYIGDXFqgAv+GkH2RuM/yNIoCz2tlGNVfAd65ZWQBS8HEVXv0rvLZraionvxVQUseDnTJ03ICkPnhSHK3p1bwOJ8nb+199qv1sc18OmCFJuiwtELTGGfmyPX+aqV5dIGmZ7PH9uzTshqzVlKOqOlqx/0AJ9/iA/7/3kwPt5nZPQbmG9L9foJUt9IO6ubbXHkPNFHSo64RUwgU6Qi2iEy1X1e71ohLTzvAyBxmfaEmWF2D1DOjIGlQhtnbOdroUEv5otxBpS03wZyepghK3uSIvX9Y5Y9vX7w87Zni3Z7ySxYF9qBij8NHHoL/Jh7+ixUUczWG3KdDET4nU5o7QNh4Wnpk5yPuihVnBw3ess4//lS9/56sL/DjAo4O7eJNK43TAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-J72YUI7L.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-JBLGJN6S.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.peakdefi/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-JBLGJN6S.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-JCM4SCK7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ennowallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-JCM4SCK7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-JCMNNBDZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.fastex.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-JCMNNBDZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-JGVAVBEO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.humbl/image.js\nvar image = \"data:image/webp;base64,UklGRkQFAABXRUJQVlA4IDgFAAAwGgCdASqAAIAAPm00lkekIyIhKRcZOIANiUASyv8A1o3rP5S+ynbRFo7YZx/mAc5zzAebT/sv2A90f+A9JnqUfQX6Yp9lmMfMedxwl01s07zcMPRqNPFdP7iRscNgyf2SAdLeC75vI6OWvWxn0edcm4m1MUvv+MQ7tZV2YiIp896Rlv8mrLc3pAA+/5wdWWoNiP5D3zxD0PVPs3U7BzS+72QtZL2StG9OmWd5noNOl+l9ahIBtcEMBNIZO1ZTY0CzwoR856S14ezJsD2wEWuVeMaBD3nRZd7UAAD+tlf83c4R5LfUL/7M//TP/0z/+oed7UKc8QASQCg5qa/HiXZvUO0pMy/7aP2Rlr7NTeWCdKedWf2brvy7OSGD6vc1qV7yydPT8DIBLrhf8sNkJ/2/IHsW3hjtxvLlNUDyds49K77Lt1JVl+kKmF22DuOd+eXEPEDT8d5kLOdIHgiQYPRzUX3YssU0G59jfequf/MwfcPFN+8dJ8ezG2nWMu8qadPbpokpmNfbGJN8LUhccdzi/pNKC7btHeOYCDG7R7VHYrU3ieJtryK9+O88rN/eTN7CG7Mnysg5KxQHYLXe0VC8EqFXSKirrvLfQXMwoNtKXHxNf1dgytsPbJW8o+FE7pB8bj8FGBSlfj//6oTeDn4xeQdf1oiYD+E02VIA7QujMRTkd0J5S7h3IRIHrcFcl2z+dTZBlyZMN+Xe8SPN9WXGjnfjswXWJSkqYc3vRBzjC/Yuy048nSLgFzaaWqxx2W1DXxsvHrD0Clg2X958lqjfnHsQfNpvB5bb9r27NFMQE2bTfiSaNUJUTBMvL8E3C56KWoa6MpLaW/pvrkxHZUVLHyovR4oRBGMK597RXe8S3o+yyC8LSlXfu0VYhrlo6wlb9DfwmvYO9yCnSOz1E7JGJUZ7+d7jQIcGOdef2J+TGVOVq3Ug70dlQ1WQGpwcnoE4+hKOIWopzqjMOR7JG4MQ2t7DJx+1HznJCh6tSai5mlMYmA2zntIeDOtJ+HeUN7T30YEtuQOEdZchJ+PXY2X2JVAFGIfgAdTML1Gu+jYfRm6nCOTGasZ+mh/Uy7eN/o0WJZhuNUo+Uoooqz4iMb8sFINhyJdqdxs9CbmbtqsYDVehcLtbr9+kvObtKs4cCHdgNgfkpw0VVhBBEiZW2lqwXcbufCCIgoU166POUvfJQdja4Iz8H7avIAO+0G0IbXTlcnvWFyvnB+8lh0lEAtJM+m+egj1RLCNyWV9nLxiHvm023N76tnQForuRl5Bx4ovNWzUJ58ZbWe+PSrre9VNsGebcXyHQozzFIn7bVz93qj5w+SjA0pyiQfyzDnJxTIgGm7CdHo11JbhORjnMTq/N1FIxCX1WzNZUS39s43nhzLSIRP02K9ZrzPQu8dXMydTuG1U8EotA9NfoQOeRc84/hc48YjAnkTvwC+J+anPyILTbqydCd4dLubShcgqzBWabX1PXfar5whjj0PK9HMNwHF9c6RTfhuhgn9twiFKDP5v8VwWFfWNiETdD8fAca3gWReO4u7echElbDUe12wdwtta+I4IUynDKzae+jV+mBaDlmjsNf8GhYWgdl4A2SArtZPVIti3fLv1k0w7+Y5HQSB2RuAEZcVdevzUdV2n6g7Tzmge8kNlwTRDHZiMuiOhuMo6bLAK/R+Pba6UswFUY/ckL5ZZKf5ro1e/uSzgzVysI6WWYmZhPWayRy9EphP2mhXnn4QkdSx9fk/Zui0yMeuEkGNb25uHM5i0RQD9CRyAwLgAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-JGVAVBEO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-JIBY7LRH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.uniultra.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-JIBY7LRH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-JRV26T7R.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.binance/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-JRV26T7R.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-JVTGPVY4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.nestwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-JVTGPVY4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-JVUHELHQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/trade.flooz.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRnYDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSBUAAAABD/Dy/4iIDEICwv/TogVKRP+T3ZsAVlA4IDoDAADQFACdASqAAIAAPm02mEgkIyKhJpYooIANiWMKFshwxEHFe5fkBy/XJnbPeS7I+TPeAP9J9mfCA/VD9jOEA/t39r6xr0APK8/a/4N/2v/aX2oLva+3T2EGCQPlQPeYiIFeW8AJIUhJbpF43YnR7fOTBDzq77v7Hbfe7Ann6ST1YFvVGFb2aaS/58UFu0q8avh3GCxiEK1NEpI8WzpJtkau0SVyX2eQK8t4ASQpCSuAAP7+TwB/94z+4z+4z0z9772aRgABQgDoDGhFj985xZx0VfOJTp3b/fqeh9Y4biS1SNfsmQmxhNLZa/U9f0lvuE98mzwCOq5T9pqUIrdf34O0UMUcHbkSt5/Pm/f141EN9KdHswzdH/Zh3z4Z4LsPJ19HF+S9mb1iCgwvi0my23/QnkHX/lt+bIzRmLOT1xBXFQUc5t8TtaX/5EaTLbsfecoooZDHhnjtbPI2MHJ+fFqx14lNxzOsDPeKldzUwszpXLRjmnBP/da/iUGEJIklmnsqTPzuivllnv1x7mx8BgL2GGFB0xgkRaRcJGUm79yJBq+cVS6guNw2JSoZFa1qqvIT+gvOcVnDcD4esIVL5ed2jk337y26MHtH91NU+Zy4yr0P4D5pIlSHKl+K3fde1yjlG2A8LtY6WdXniUyQywVbfPijDyK4eColYNvbO6XuKwQfdPqb9ByPmjrSrN0NZcEeYyBCh6QTe7Rw3/eftvX08Ksddzz7DYrUiR9BgxhmX9QZO+El4BnEbKAtt4nctG7ClIn1LwMaxrq11XNipoQQ+VLUoi8gaW2g399nbpE/6jgVgTgkmtsblbBK2fmggyyXpJ2mll3pNc/Ol+ag59D4G9nQlascbGP98BKNSfos+OY2admVEkpRyr3Ta98q+CWTagJM2UyWmV8Ub+RIR47gU4YisVvePe/rer3HivhYUe1R6sxUZ3qdAeBN//2bQeKCMqkn4Q4QUBUTwaelKGgeQeIDiBj2JBdsXYY1D1FVxbxRnpOi6kRQ5d6IbeySnb13dTnul1AaZBpBXDIhggAycT4E1H+emW5IWgDdE4uoQP+5LV4MoHBrM53os0/VifF10z1WvoAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-JVUHELHQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-K423YJHO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.hyperpay/image.js\nvar image = \"data:image/webp;base64,UklGRogDAABXRUJQVlA4IHwDAACQFwCdASqAAIAAPm02mUekIyKhKBYIqIANiUASvP8l/CvX6+dfjX+SXy72p+S/dz8heljP32G5Bv8B7DfuA9SnpQeYD+N/279Zveq/mf7Ae5j0AP6B1D/oRdK/+5npAXfj37juTqA6SgXCfXnd3d3M9pmo5mmPSPtcc2kaBs5vGRiYUOzDHzvqO2SO3ocYHZoD+W6EufHo9Zn/fKD+2NNDrTSrfAVyEbY5qEnybOcE0cOT/Vhbb5oVo1O0TzA1vSvwnQLZAAD+7qY4+fG63ZE7r7LMw3YAASo1x/Lw/8PgWwqg2BQmleemSZ/4ZpB694GpHu0wB71bLGxDxV7p1i1jnjn61JuOXYy6Lvk4TxgqaOV9CrqTEAaeAWQfy+otWLFgn1I6EYH7y1Cmj3zfIt7c0hI9v1S2N8f5FicKoGNMerTFtInIHQNx4N9meK13R1cH0rfn/Ha9GKdfo4ji9g5QIdBNwlVSDrVT9ysDRquqh7XXiBsUUHTNP773tMlvg4kd67t4s/s6RJdCbED3B2Hdng594AHpZ+0lyIiKTkIYoencQz18YKZfzlnfK3jW2yNqtcbwRVoFg9hw7Kv7zM/U/iIDDTIoAk2bbbRqV6MFKxT69gfTvPU2t8mRTo3apK9C3VEzyFphIvFUzTZKV+nMtdg+1gBUB0263BIPTICDuzcai3xw5LHJWvNe8MXcG71tZI2UckbqOy2zRjv9UgvlFX9XTcwM+T2Y7iAN6uFlTcQk9Mxi/Z+e/Xjs1nRtfP3jUAFxpnJB5n7/sLg8lD3R/fie8XPaO2uqxUmb4u/zDjdG4Fa6l5toPNKKWToBAkAyHcMuIZxQr7d9Oeds30ASqclkeXp0THaRReWDJdYghvbV8n3RHrQ0Ym6Vk1fmQH5JVblfzQSr3sV0thn7qsHvVU4Rx6Tsk2Xc7Dq3DNdzdiwLtpdcia1ZQ8lTrRAmGriCgfxwyXzwaPeIu376Pw8TGISQOHJNrrMy7WW2J/dqBlpCUH/0fL36YXuu0J/Pfx1NBL3t5SOs2ClmrhhZnbbARa6lRlGIniA4C8jJhAYHnM8O6uMLERfnppDg45pNtGp6FyUczxUD0UQvRTnRLPBgAfpxSTwkYiTvWgPjRtgm+mLDB1SR+YI7doA/mun4vzw7OoQ/NGhZwVlu6yr9sJ+dY/H3PZAAAAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-K423YJHO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-K675SLCQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.veworld/image.js\nvar image = \"data:image/webp;base64,UklGRnYEAABXRUJQVlA4IGoEAACQGgCdASqAAIAAPm02lUckIyIhJxkrCIANiWkAFeid9n7Ma6flPnnvg/yX5Q/5ztFbz/ATvH/0Pii6AHiwZ5npTgYF9SDDXwBIS28ep3ScwVANl24t69h+yi6PK93FevM1xvb0D+sh8HvlX9J5ax27cZgu/gSO7Mggg3Q89H7BzYEzNJxC+qNqY0TzxC3FmydPiYq0ogKQ0SDBlk1qfFC7IXi+KfMFnH0oAqCnY5WxG9DMXxjCW7djaF+gyl8fB0rsnTWfV0ksqwmYgtCNA0vucpX5T42GkbB+M2AJAAD+/FBQIR/g3UXlDN6PQ976TocbMbWaSMsUNJUNgCPRm2PzG4wc133pcLmcmq7J1FOa3gdVf/8Lp5ImFubmIeX8MypuzF4gLGSDLlpbVocP7uDB/z5+BU/jzm9kksry6QkH3CY8p8vXGqT0ftArhAOJdg6w1hbpzkLhGWnoWjwI9weGHcvxkZDK1StS9H3R/ikLyDu+14Sak6e5aYNmZPP1zL0d30SiiEMoxZEs3H/Pp5LIRbuKJB15J7Av9NUy6OpkOcTfWbrxy1nkjRIGwTm/7YxMMgt63Qs84v08C9FnU7dT76rK211E+0S99LIfko27OmYXi/JbB9Pyw6TL8Bnbw7e4wu9xMKprTkeS//dvuul2xfM7uA1CQMYUj9Sk5ioMA6gUaUWAd2WQUND3uo6CD92QvueFUfDMqvS9UJKmjyT/z7v47CmgH2rDexneojSW2cDoY3p3ENSmdxaMltiqTe5Z94zYR15KGDvh2xjkM17Tdp5R1z9sjkuyDYX/hQYqX5nvm8OnGZqcDrDIwADX/RCKPg23YwNeKTJG1+JpAIpQ5I4zJx28Kh17+GmNV+SoOgfJVKffVr3NzHJzQwAPvLSThPd/HLx9dvXeAT6bOPEq7vaJzHGbKVw2yxf0SpWhdTy0MLbDNzSK9p8H/QpfeibMNPIqghKOd6HbC/DEAGAg2KpmnU/jCUZ/eos5IDVsgna3+r/0jbxhm/e93iNpjr2gMTBRMu4h+BbhAIkLf0QfrMte8vu6GnlS/HxS2rZZw5kaHEF0tcmGMuwxqItbqHZSuLag3a6LElpvBivT5V3sQmgmvvMdbE1nClo/jqD1KFOzCGkg8fNfRbHFClgkmCdds1ZD7vgAdfMn00eH9BOtvsUqt93dDTb0gi8OSE0cWBFVXctpnXC4jH2GInCea5AgnLnzRa6XlZMvG0flXiuFiRRtBeaR0eBUH+CdFMX2mVvGgQ2aPHGAnkCyq1g5ou3X0FMNYPp0D8OmAJx3EReo7vr0VegPnUEPlYy9DJTThg4GSzr9gDwSpOAW73JzikHtOyCXDNhg7tQ16TKmTWdN8Ugnlixpsb7IdOecrL1PLlEodGPes+9kLAtA/OiAdkqLs1K/8V4obm+2qys0t9KR06ed1wc+9EMtmwyhfURqZTL/6olLd4daGtRNrfEdH3U998XBdB/QkKvThRL3uJXS7sntkDhSAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-K675SLCQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KAKKP25H.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.zerion.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRhgDAABXRUJQVlA4IAwDAADQFACdASqAAIAAPm00lkekIyIhKpVYkIANiUAarzJP4jWmPAfirzjGxnejKc+eycB4mHS28wH7R+sz6Hv856gH936hD0AOlN8iBogrfZZOkCZ7GRV35w5ITDbqrKtIqDUCUtQQ8FVcznGRmtf2+aKTW40tcdzynGy759ODVlM2xjYcBL+w1jKPgKksMV6yMEz7jVUXcsG4xzbJcYEc4ZrMUgykNILKTo4C1zqrv8aAAP7uCmfYGPoGPoGHXf4/BDw02HoDJy0AHzkn3YOPvczvCeq6E3sUmT7KfTk9fH2hlKTSsGu8h4sFQ6lOf6PE1pH6/zxIpgrwrsAjjZsWmOuT0IdHUzPuQsLpP9bLIklaGO311A0KDsSnEUI8thtX1l+7Q/nSCIweUURmNBX0dnjP0/wFjrpg1ssfuCvq7UUc8eW8vVEfvpYPxTPwLhKAfhmgz4Rz7eZd/0YJQP2tCSin63iLgtf/j3Djlt8Q7VHPppk2hH+mYSNBogoJOCbOFgx70j/i9E2jnv4varXZ7GVQ7pm8/LqGaLwky701gWkCG19okYcuawt4J4TB3lb0TkUN4z1990MqbCTsHibpS5dZ3+f8tbuq/x24v3G6ZUnv6CBvxSkXBjBMwifUVocKfnO7oCbWTHH6UifRudgV0azJxAJWkJNQs8Wphy94VnnNVgtpv0wbwaFoAbHiLImOOeIxs79OGnWqlkRZp5QbVbCEqRqK0labnvxWklaN8fz/XH1DaerskjhqGWTqUXBpluUNg3SRuEfsIOo9O3qZfS/mM31jVosJf8a92k5itkT6RMkdOgvNZ5wnsEkXS4/s2fVA+eivp4afThGIguiSJ35xjDyAWsKX8/8QF4qg2aiuJMAEaV9ucn+ZmYEJ1jV+P34aWEr6IBlO4EBAkTdgKJUSMZz9j5m8FbtuQmSl4REc1szKoNsH22KcqKtAJrgSxFbRXrl+4JCvQPnL7vZterDab+/YvYqaNse6MlXgz5JZcJS5i2V3mFIbwoyDox085oiBmE2qDayEt6AAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KAKKP25H.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KBI4EQQC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ledger/image.js\nvar image = \"data:image/webp;base64,UklGRhIDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSD0BAAABgFtbe9vmPxgBNaQKUMNVlPqsRUDOIbs0jxUorGFiDMGpJeWsnPPXWhExAXRotnZn338W1/rnzbarWTqlLOmOdaPx1RqnLu7osjyaaoXDBUIXNtVReH4wWaD8iwr8MOEnC6RJIA5gyizQGsX2Yd7TAm/ssT2UXSCO1S5hFpiN2MaDBWqfbykksJL8hooWuKMcETX+gE1aRDJcIA8llRw0V8roBXZdeQTXacfgrHXg3FsKbvQ9BjdZoJ/Du/n/5v//Ac/R/UzAjd9G4FLrwLl7C87WOuA6GQ1OU2kI7blM8gFaKIlaE2B/DSLKRcAiRUSUT2AlBdrkPqyAbyFhQBlBO1UMySrazbwYUOyxPYgpA8coRvuLIIGS+IIO5oXoD8ZkkOd0TNUMHQQXthQdW5Z1x7p0fLXGIxd3dFnS3gBWUDggrgEAAJAPAJ0BKoAAgAA+bTCURiQjIiEuCACADYlpABbTKuH4c2NP9i/AD8nbMH4T0FXfAPRX+joxIvEFEOM15iQCHe7NARQkn4+d2G6RGVkdyhzvENhCxS1L1ZYknQ6PE1IzIXKwXhBkPgyzHJa3a3aZNIC1Eeq9vbDtWlc9CJIl2t8yzovEDIAA/vucwOxG0gvdXcYo3lE32Bako7A1hkl0hbaL+3aRjo5liGcd60Mv78uff8qVlTPdwzU+z8GbBDY8z0fsoWeomjknIiifWCUMZFfj/gQWpaj2iIf/1SxlyhyNkQsYGtB8EO7ODTVM8EPPxubSYH/SNmTfjBdFs8wo6NXcbpQtx8asQohss0k92qByMWFczfoIwaCRxxPl5z0tq3P3ydJWoqE0wv3IyWV/sx/kjbrPDk75edF/sdAXP2PtJCirZzuae7hEzvbK6ysWnfIWnCgrdoMOxIPTcXzuvxR2LxVhUk6/iOlOCltv99Ng36VEIGOUSGx+Poa/RN3acsEiBwZsXLztW2i+l/YXwLYFgWmhfJaaN29fDakDi2Jrwic1A3AYr+frOQAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KBI4EQQC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KDIH7RV7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.cvl/image.js\nvar image = \"data:image/webp;base64,UklGRkwFAABXRUJQVlA4IEAFAACwIACdASqAAIAAPm0wkkakIyGoLxVZMQANiWMDsB1tXPlb0d9n+tPpc22/igerj6S95I9ADpcmAHu7l1j7rx7gkFFSlguTbKHNx2+e94Sfu74i/mM2HvqA0thDyLtgm4CfHCXuYWZ4gxvWEIgDt9jHDTncp5phJHAd39Cjeu0USYPyngR8gvZXctIjava2Rw/Bfw5xlJSkIXZAC5cP4g8vvUJ/x9FpTQ3cf8adbS1bJa6Oov7yBbA913sGQApgN/yKYpsX7YBFqWZ3GVHwGbnkEO7Uk7z76ur6/r9wp0hFC/ZNzjd9UMfEcg+KlV/nl75DnpYpIF6OZbwIEwcSidVfHZJlD6yLb9nvMub1AAAA/vx2g+h+LENpJqPQFMb1o7wnfDKWcjQSmnQx0ILEvNUgygnb9Q06cFw+B9Tustm1bc9S9ihV5Dkks20oHZLL83CcuOF+F/S8f3ZNAY2Wmqef3X+aVd/wcXQwSD0Xrh9utp72MzvoABEv3vAG+vVYHqXyO4OKSwxB/1KHzl0rNZkIi9m8kMi4O+Z/qo/3HoKsFxGu5RpNpIT9AXdPACcdgBtQyr9u17tmii+0EBgqZgLnVykLEcKFx3ajjj5bG4uD9T5r1RXP4h7iR/I4RFZaOvsiF6czes2hgaz4anGHJrGyQwJFyAnLfzNZg+rsYEXoBuP9bx/bRgvbffaDcKkGINUTgyLil14mSW2d06Be7l0AhFYFE3IHdebtLw8Ni2IpGi406CELX1KqP2BQCHq83R4O3PW0MN/INn68jOMYGTGc4ng6USoF6I0FTDLv6vVI1hY/WEWOwKZhDt7d4pvXiJETaHG7LuyWrKHT0yoqlnH2zjx/t1KZaZ4X6qPvaZD16UrTveLB56yd5ZdG/39gyr1JzUHAY+psDvHxkoTMH09NBqoeOosF0Orv+xW8qzN/MCjQhzFhCiKP2yusvxhzdfq5+FnOpPPQyv68aLGOrS10Vb0HARXpEwvELqB5E2rI/qabAt5pttd1/ZHEcNSj573BBn8WWbvN80LGrzoeFxVQuSMZ9LE9qIPGJ3OLNJ5ecdiPhy1xSjh+v/CCFxX5LAZt/gYfkgFnKOHcS6D/9rffHy2BL3iysyinfNSm2ipikxlCJQbrkrdfWUJfYKHc7g3M5pjtM+urAn/M+7iAZjalaR+Xt7J/12sf3pJba8G9kgFF0HSyRv/b5NqNLkbacohMRoPU37sMLlMx75yO+4ggm6caKAHBtV1/lUxQvBH65yio3Iyb6gwnX6re/t8t56moHP+KUS1KQDs6n5u1p97uI2NkmxxLAwHw0DUN161uJafi05m8HYOTZgNHkOpW+hn3fy4onLEV5dFjHUmP/E8938/36MYx/+PBKMstY1iEeZRO684tYnxuHDoETGeXXShtC6fO1pN/1BTAp0WXqtiM/WixQkVWuePi4aiMShxVPmFy0uM5Ir6PCuVWZZ7IBF4u6GRTq8UxHirTFf+fi5CDi/+Id8Bg38KicA2lIOk/R0LuDGZMGKBd3wpDcMdzuVwUawE8w0ZY0weZbB1vjA/cKFnZy2IZHp7vOB1GDBvDJ2gntLIS43B2P3JXEhoWvHrlUGlJZoF9PzWzLuY9KVZKXrM+t2MPof1hdlaFCOEVHXYYDn/euC5pFdmDC9u4rhq2GLLhXrUkPHQQt6zjnKhiGqKG0uXz5L4WwCUxrOHCxVO1kUq8JYvEIaRrh1iCt50pzzz4kLxZnNwCdPbCZ86R4Sb5rRPU8ceffPFnD8KB2nLo5hhdPIc6/C/rEAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KDIH7RV7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KERZY3VS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.omni/image.js\nvar image = \"data:image/webp;base64,UklGRtQCAABXRUJQVlA4IMgCAACQEQCdASqAAIAAPm00lUckIyIhLJPYAIANiWkAFs6s/vr1eRvg7UW7ZZEtUcy/yOJzYkbcoe86LYHgY/u+V9ejl5Jb50n9ImwzI8+Ucd6wi4jygy0Mjk4/QBSaU91Zlp3szRXn4zBYzl4++TghgoNk61op2urqRQXlNB8edrXBLh6NuZhjVVreXOCZw9pJBw2JG3I4AAD++/1QANF0nd3sS3xI58ShUgsvaM9/3NlKdd+Ne+2nWzEdR9+Fp49XPW+UfpiOvFBCLJ3cGklktVI00WvEvULjD2iSxwjUA9h/ZpTIN7hRBVumlKfxM86w0vKega8X2U8+QT2Q5W1j8BwSHlY3HyCcw/PZW6ijseKk8/o777hkX3hH8LS0vVfzUcvRi5IQqkdoVpw5kpJiZHaDdcFsf6G/otvRSumoiP9nyBBTXmOADQJR5/DQp0b7cj5x2kykDvC9V4Z/+uTDyFuIogcK3iiKqM/IzTtlrpzju4uOH55Np2zga7BQlTE4Q6714mv66eH9zQ6mTeviPWD7I21kBBM103GaMh7HbtgfzOZNa+aEvwfj6q7ApPAam757cAvoNXRP2zJQyqxm+8OCvCoSuSH0e2Xg9DRHWsJddMNMEwGmT+Pu+p1pHKAViqh2JlIhI/JHv5msMLKX0aDb/qPL3oix7kGmcYhlb3JvZ2MPm5gngI4jozlk+KCWXvNHiLQUa21HkyQmwzCzfAz9QTVdYggDI3WQXzQdqeeA58JNNRdVrcRHXlBhtHDDBLTqvM5EmmCX63fOACn+lkxiTxj2pJFaGRxEDrHIfYjE8jGGLL/eayybdIm3+MkDNN8QJ8Cs3dhwm9F6TB1kZXljviLNHQpTEwX5P/qh1TFi+W+I5vUUeun+BTm3oabBIIMS84hPWuefB6pgDQPAVRVZi3DXWGLbQ16TUps2BvbSOv1u6AAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KERZY3VS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KFBVQYIK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.subwallet/image.js\nvar image = \"data:image/webp;base64,UklGRugEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSL4AAAABcFtbe5t8rjUGQQPII2gpcoZZ5AWyp7A61eBalDnTfRUpIiYATxvdoj6cWe42RbeJ14VexW57pHHwLp5q8Yrs2jNf25dPAmXOnI0KHoT5mXUe3rXNmXckAdE9M+8IaEvN6ubozH3ai8nFpSPn6i05fziSO57//v/7/+//d+DDkdxx7cn50pFzvZhc3FiRm0JbalZDdKj1BSAjYkYCQJjTyhXuA2VIGRU8AGSnIlR1JF4Ueho7f6Bx8C6eaoF7VlA4IAQEAAAwFgCdASqAAIAAPm0ylkekIqInLBFZMOANiWUHBqRKRuQK2jarea/TkeZgX/awCGg+Rx4uSEYpofG6xgSqt4iu0/CaxIp+Jd0W4lpdy15YltNykQw1pZHtkIfv/dvwF/Zj+VAQdJIHyb/MMP0HXobGw5JpOwANCLMnUOf/cq4rmQRVEgdJ+2yv3w06ekzdZGSlPl/1OQyG1H971sctX6cYdE/KpAL/1NT6XcG0Ghz+DlwrRRBaocvPNyAA/vvR34/18M9/WWdf5q/aa0VOAAkG92Ljr4C4PVlYaw1UnxX33PkYMDETxF5fmB51iieK4VuaO+y6bwLIaHn1AKNAdmaeeJkhn3wuznz4fEXBr/PzjfPv98i8gWPbubnsTUGOgxAXbwzuxklDagYhzJ8we2Ri+rraiq2EwRnJDJkrLdkH3zwC6pTqcPhAWkhldJLH6ygeRBL4ZkwG24s5NpQDRWb9uf50ZZ4gxrmLIoQUuVAdkY+EhmpvzVUCqnMBE5oqwjpRa2l19Lk9QVAJcH4nhcSafCPnSFcWqXJJszVrzdOiYE20e94WGO6F9zdEzGC4zJ5+Rrxbm+COmGL2u23F7MR4xLR8LN8c1hxvhNKgPFtwXeBK5Evw8O6CWsLF9BJOn4UhSqTAMHf06MNGjRH9gSy89lVYrNeCsjn4KFwGU2SZM4IxvU0HIYUOihYdj7BZq4vXKAlJFsUQjP4sgSaNytkWy1t+Cm0TslvnYE3+Qj/n2cs/AHZjks7xIke5VRwUaryEutZjG6d+F+4cdPTdDNiNY/AYT9cqytmzW3s5ZZ6J0wMOR2JJL04jEXjfWAY8ztQVX3aCLL6fjzV3OirbuJXN4HTXXgrrWjAv+ddQfyC04hY8/8xoin5KNgze5UfnRatGANr0jqQyQ0zJLvPeIliNKSyQbjDYiOzEFJvgHhLrmX9S3DOkJAJNcqDXptfeOhS8+shJABpvlfJfd6kD+gnlaq9QbaPllfU7MSxRoMHIYPg8Bfc59xXOyH+uQLmFEu+GagTIU9sqd5VRKMcGewFuGkRACJaV+05HPZlL+N3zNJ4t6Qs8btqa3KodTD5utkw/NAmjb2+k4CjuY42bmpxKOEU/RDMx8gR2z/XVnI2MmLdNXRzj4JXLdfHv9Rqpu59FjZM9Z7AO/xNABZ6OLPXkvfNkQ8tgRwLwUCNU6PC74PXFckM1apM+unlsCYCyuLMELtrrlk/xpIfiHFFc9XQa6NoWxjhB9n7aoDfccoTh2U3FmRYwSbvU225KbO/gBFAj1C6W1XkF56Q5GhKBAM66Lu17jVddSJ7Ik5qVR4o3LsWjgsfirbQpJNfO3qTkBwkU7UXJJkDJXBolzePkzMsIi4AAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KFBVQYIK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KFCJWUYA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.zelcore/image.js\nvar image = \"data:image/webp;base64,UklGRtgDAABXRUJQVlA4IMwDAAAQFgCdASqAAIAAPm0ylUckIyIhKxXZ6IANiWMA1mCA/HchIPJ6IPM9Hhpg+zfaX+3bhoCHsY1ie3qvceHyGaO/f3cI0Cb2vukeJ9EH4h4ECO6oe2uRFzWP+xWY2jpHDlc6WDKaJwTfKb4vM5oPmYtSNlAQva2feDj40wR9u2H1hBwUUwo99DVDrxA4nXCeoo1zg5iMgzOLrK0+WFkiFUwM6+GJnfEZHuViM9uU/jyOCHMB+v0LiuQxoAD+/LhAoM2IgAAGvpuqOmH6l9yyTZXsETHrnqz9qbgN+P/J+oD5YIqrU8bksFK/Nilv1fndmztauP8rIGctZ6dhxrJdkeCujyJ9PNIdSD89tFmsFbJ58TjacSMMn7bR3R/s6B+UBhLf7Bjd//H7pB7nvhymZeKTxWI6fPSj4jxXD+NE8041INVxwCNZbdcBScF0X95XWl0wH6qPhmVadzGHfzbrhcGFUElDvypey3/3PW+URN7gxvKwXlyULpvc50sJEz89u7Lxf3QAV2vOBIym9e7OKnH71EXKj6+FiVxB/LWJ0fwD+JuZ/7eZjGIIsk4FMO8tLfeOSXGtauKy0LrvHbnGvUb6O0Hl5JD5BH9TkZf7ARK+DHXwKIkWEqMD9V+e1XwpVKvZcykRGp5Km/2zp1MMbDPHzoQ5PXQ6Q08UCrZDGb0xlUUMFb3e443Yfgqvv9nwW37YrylnJ+UNT2eoh5srAb09hlmw56vm3krv+rg1Wqzj+fYXtBwFb+uZl4kR+N9BX5+S5haVM0Nsj/whFCEstXT4ZIF99rFKY9pyPZAFnRoaLbbtvyiomJa26FDK0FafC7R3MiHRCZACoeNEmwbxQtaMIBX5iONP3YYtInfNwrIejyGk6Je6VmCffAmNebWusio2Yv+CNn3OS7IBUnoiRiYWSFtwRJ/+BQ7pPWAUqh4dF02TYakIglfWNP0NTAqKP2gKVC6+dYDTTg+k3bP2K+/waHEP1veTLPIG5RO+ydXtwLRHk5/zOV8gXN40i/DlsdOu7HbSMjBzMXs/qTA6SSv9zW5usHZhrErbPK61L4Y4pzoDXN3MRri75FK+bxwbjW3fXV3YA9ZXyOPjOV3/5qGmO59JeKA3AasswLY9+qo7UYyknGEH04XR2cRtMbs3DoGvz8A1NRSjgr7gH3BuFftRuntiVKqjd6luWYa7K567CXX412Jdoja5d3bEQqHw0QGjNIjx8qwFhyclyLDlQjJ7AwpDE8Tur2ybnwClGGB0BO3sIaSNfD5kY9PBU0bfkQmIrzjYihUYAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KFCJWUYA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KHNJTNG5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.payperless/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KHNJTNG5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KI6G2NXA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/tech.okto/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KI6G2NXA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KLR4DGUS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tellaw/image.js\nvar image = \"data:image/webp;base64,UklGRhoFAABXRUJQVlA4IA4FAABwHACdASqAAIAAPm0ylEckIyIhLBapAIANiWgA1qXvfqv4ga9/1PzVKa/TPwbwMNAeczyr/u/u799P+K9mX5c9gD9Tf8x1FfMB+un7c+0z6nP8t6gH9d/0XWAegZ5Zv7s/B//af936VX//aXW9RIf1ubsSqgXu1/G4/4apKlig3i8F/TkpXJQPULtXvBAeFEZww2Uy07noYtJzbuDJwJEJ/pjp0nzGin8qyWAUmE8fQ5Fh/MR1PF0mrtzfuIBt+MG37eWfq2p4mo75Vd9Z+pH0vEUtFGWi8tM5GviSNfkOK19SNm/P/vyG6bhQ8AD+/PhAbjm5CaPa6jLc3cryKjZI0gAtNqSwBncj7zGKKJFxWXrcKknuhFcA3LvpdRvhxFyW+AtYhqD6oK3JH46TvSJGXQHA0qtfCGgCVAc+jdPFAgO6yNvoA4DZCJmGh/TrMxfSefxn5pwazEbzlBLSJx9lHcTYQW7ev+zsY4zV4mgAxuk6hste66HulbEIWLpyx3qdsOLF9tSp9bomw73Ekrrwgi2NEVE4WJ+pB+6hqWMzBbhN/VsqARE2CByYtClS4DUFHAx1O+pZudYtSNrjPfbJl7PuCeFJHSvaFLU3Y0Oj2L4cOqo5/D/c66+jfsF873kXW0cJptXtZMt0Qwot/Tb/khK9umaGyq9bvjfeK53JVfxZxsFtndT99c04AlxUkEIUbMVnwibPadV2IzUBq43wbHO11oj/8w/ejecOvM2rf7jGFU7i1r9+94abCgbpp+J2WFvCG+21aYlrjTiUhoC5FXUAI1Vqtb+JHKFAyku2yW065torhyL7/+GIYQ5ExfXfksVtWGLDeB0OtBWzDBC+8Yf3mcHZIR1Y7Kts4DpBN8lkF9Hkf4OjQ468q+09CLtg+HYR+hNrakSKcnUypBKeh1WwOr/+RS8iPjpSSCAEwjQ2WFzE2eGVb+PvMXQ3ICt/fRPvqUGagfgZceyYeP7YLsb1C9fj0FEVg3aRE+Q2zX2QvOL/SiI1usvmKdtvSuM2mXv7Z6kHLv/LfmvvPlK4UZtJsILL12mK0Jbdmc8dJsv5x767PJy0V8W7IKdVb5TuWOLU9onMbNGaKMDNuU0TwMvgBLb4ZI1gaavtURv8na+GKV34ceNdGQdZABZg9qn9FGR3IvW9TGRlbVaHd2sJ7+MCczz6RXTDTXZLmCqpL6LB1PrAmhK3RrbO7hJv5X+rK+urOX0G7lvXfw+xd09NJuOYvTBfJ3tX3RCMwYyYP/xcbpLSrvlrGjuMiG3mog3g8JBpo7RQamt2BxY6hSys83T5rDHJQVZP3vyKD52w/Yywna1lDhKjsKDB1TfRUBAeaNjw6XKrv59z1fq4A+lQxNblKe8OsyfFzbp8y5H05dP4GJQoKy29FtrZhkK6eroH6oBfxxQF5zJlqoLnV4VYtWZGp/3W1AxWDf1edgbCnADHST/qQaU01fIIRliHSMJUuqBqVqY9aOt9IXUc0Mwiz8ULY3oXA4iNU3avVC/mKZl0j+84U/qAQSUC+iLWb94lgFwTaEVnX+xOFaezy0gH0RJTdPFFNOJ3Zb3AHvI0YPKJbre9SehL1R+i0lGPrGP79an3k7mM6yl45n7t/BturGnUamS6BBLI843KCtw//BvEa6srh4GBMiUyzZQxmhzW8kiM7TdSJAo4YwrQjDwJ4aVxh77FYrSQLWw3Nb3nd+sNg9Brrdfcuq4AAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KLR4DGUS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KMUGR2JC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.astrox/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KMUGR2JC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KNB5HTQS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.streakk/image.js\nvar image = \"data:image/webp;base64,UklGRgwFAABXRUJQVlA4IAAFAADwGwCdASqAAIAAPm00l0ckIyIhKRVaGIANiWQA05nOfwHZeUt7n+QHNr7o98PyhzFjxH9Q/MHu69En2ze4B+p36zdYDzAft16yP4Ae7L+3+pb/Pv9x1nHogeXB7QH7Q2KLrGdksqeItyZVhbhq3uR3I7kQfv1+aHfItlu4RuQvc2VzIxa2CoD8zE8PyTwHkbxZs9wyrK5nYpGQbzlquqytxTSvcD6nenOCN7Z7A9s/QdM8kECSmFH1cgOww69fw20DhBov9DcTU1PKWL/AmBxJGX429aRff6zpYy0tmUl/qODaGMLfxiEAAP78SgAASUMZYuNBvql6Sve6Qwc6DtNJ7D2hZtHo7P4kkJZUL04P9yTg66CkocGOJANGrcRm3NbcZvO2M3a0Ur4x+7ET9mCPuYNbK9bt/KK7iK+TzNMT+b2nqizrK2mRDd9sBgFp5hVKfTvuVE62tbUbbHKJ95EaVN9F6ZGwKiazcTwVhDsqKH811oR+HI0EXJWPWV9elvfa3f4Kf/6AKGURZwIH3uTsLk0xbytn4NLbgZBOW9v/yqb+u+1LO1IYX7zTK/QCarVEyrAyfSWnew+SSKnm3c8PJMuRT/UVkNdl5aJmqNv+5fR+izXN/arq/eJiQCzW2YrwA1scsBQ+1+pLwrW8Uk1TERBfEXHhc4CE9Aah+Q/WnVVftkCtmRP9pinRjxHjZ3Vx0mvemT+60snHyJkmhSkXsS/z51a0kC8I16VYnkxggZUBcNPPAh8Up1hiS+9IO/zqmNBEsABzKBGvBfjc0Wozbg22iDzRQbOZiVHmX4CnX7nOC4a3X/3MBH8ZaJg+reDHiGbdjUeA231OsL+LkcTWzbb1rOqo6E+altNfFaKKGM/+Cgam/mksyFUZj5jMufp/J8cqW3cbvb1Iyyr5y2fxbcUy/UY++n+aRzyFvV8SiQ28sC+IIvwSE+FMAYRhFvbTdlcEMz7XULJ89Lkx13bwnEPeE9kXNg89bAoUFMl8WFgNMxl0NnZZDpoZd2H6zT1zuEIjvOq1/mPQbOTxCxbx/yFFCstQDNs1D7sh6q6I84w/VcdU6XY44upI/iTEgWB/w/xsSLtQVnVYGHRTBwiEbUZGPNVqdBVn5HppwBQ2b8ABYfJvqCl1kZFy2n4FH0co0ODPUPilpBI4lajbWBQWhrGyB03sm504oCJbkgBGlQXTjPMs11SYRKnLct8dluQXYc/apqEhU9Bgax5Eq0BFbjv87KZh46Cm45Ricb8+vTE1oR6J61yOSxweHx2CwgwkW1AE3aQqR7iw+9Z0hYWRf6RYMsQOXkkAqOPupOFRqbSVQA70LS+hzyNOLXaXqcZEFmBFhvKATcBX/XKgKwKWF2mrxiONSMI3x3p/6/aePeHKCp9hOedyxFbxMPvHN/rBtDt4C0PuOKGlHS6/D7ACsX8N0mxfMsV6oKMPB8XJ4/YSXnDU2T8Qo/K6UOoMCGwsYV8PrXp94aIhHLp/vDhgoOXYlrpHpVuTRqiyOHzpEQf+o9F+i6a66BjMhsy/+PmixIE2aQxHPeEcyZT1yFHl38GLpw8/SNwksQ3Ze2t5k6UWmzIKWHAtY+RQbjBFRaPZxvk4oKHUo9eQkOjY9iHc3W2nsWR6/ZiCTVe+6HzT30PasSK+LduA02Yt/7CPZAQBT4BIXAkI/SnaOlQPz4UGAThKxTkFRsgAuMywAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KNB5HTQS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KRKMGIRW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.holdstation/image.js\nvar image = \"data:image/webp;base64,UklGRiIFAABXRUJQVlA4IBYFAACwGgCdASqAAIAAPm00lUikIqIhJJjqCIANiWcAVYRzk4zoRHFTqR/wHg7+GfFP1j8sNAT+PfW78N5Cf13wt9zeoF6m/y+93gA+oX+o/p/4yc5/ee/n/oJ/gPAw8H9gD9D+gfoV+p/YQ/WUd8cMavN7vNp8IhG+WQE2DRA55UJPEslH7LDqhY5AdySCme9N5rqSDf3a1Ckvjvm5yc/GHofwMI1nzpLIrHLKLfgQTWatqTOajT8UWX81rskvmtqac1GRUChuNi0Jdwl0MgEljgAaPavSg7bPtQSMkSL9pMAA/vz4QADsbZICQNCSJxQYQpC77D7LFHjh49XT6BGF6VsOSNHQB61ART+Jh7mSQ+WFLO8/ze0Qsx+e2NDhtAjzSG4bEWvQR8uqMOq3mahlMTkOZ/8aG1QfY6loHRT7PcqDYoA+BGP7wej3viSefQRp24Qxgz+vHXHN1ivLxPZxWsm1YIE5tOfZpzHzwdK5xzLHiR8olhGr+TWw2MLsItgG212hX6nphqFgTKMjcnalV61EzLtyD/up5XhwsJv3MMvK9vx1h8fRXU6Iw30KGiLwghfQQChcDKP/lyXRWxuzpFmysiGZOKwJyZlZz4tQRbocxNIcQN4HV7I3aOGNkMHqL+FGM3L5HJRBQ9u+ynkX2h1ImetVnFFTOf7FpbmB13EqtKUzf6NqLMeQK1UttyBbzNYvPI6HJEw6y1SNJNVtKzZZTZAcLtq9K++25olU4Or1dK++2UZZC4fRdjH+oLucRVw5XFnD+Azkj7oDfYqFy5Wew0bwq2HgrzdMagFv0PTty3SuiVaznXSMHgvM+qznyXSC6w+/26U0g6rUz+yupkgpTXuL0rG67eI1RVchoFhTg0zertSiV9wnjnM5cVgye31uvZvje6/TShtT/iCTMAadMbXPol/VMmo4Zi7vVm2k8B1HEFbt3bjAYsf67MHti7kSAvr0qU/urF7qqhgpLd0LvNvvb3T1hKAuIDzBuKqrrRlTfkukXriakf+6GUXtv+bbNVF/rqcyVAPaekp9Y53rF5sQyjYksHMqV3YwlniRTVaXCMiu5r8UumQDRINsLgHEk+6WKaNjPgqv7MfyCgGcIJUM9CPjYj9op0p+G172xPK9//1OhDjgNHb3v40rCeVZoqhfzyZmd9M5Q69SHyK2lTKD5wrvNdCwYRXIpK/NBn3vzyQkoJVkM1+ny/1IwPdqNfwZ57qIYijZsqu8uRQfrYA8s71OvB7QMKvUmnDGELKWvW1gY53dXDQF3Jy6tOz5lGDmQOK4ls231DG5c3/2D+/jeLgiiFGwzVZ21yrWAtGY5YeS0xZO3sOai70gs7BZjYE6U7++3anSFpQB+hM23p945u6a/Oc439TkOh3C4dlVeTjU8GVd0wd3BAyH6CyrpDKwDcr5cP/2FchpT+ih8seMjvTEWsZWytgXKyqk9tG4k6bCJ9vX1IUoFLDTDlA5KeCv1qVXDDXMEHS1du1SKWUf6Dv8RmavM9tCEuI05AfHQrOkqh29ab++QO6ADvWnV7mJTko37WNJmu6kIVy0ERsM84QixMRhMf7hwt0gJRW7AR9Gi4HnwsJuZU5hwx/E7+O+YXvp923P1OhuZpReVG+hedBxpZH7uz6q5zyc8xiC3y7ijmnP41RowRqmCSt9vdNET4kjr0bZqxugP69P6ag8VasbYhTAhCXuDoHHHs+D6FOkeqcRtCXNGcxU9bkAAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KRKMGIRW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KTCD3ACC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.xcapit/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KTCD3ACC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KVUL54ZL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.brave.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KVUL54ZL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KWDZM3JO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.transi/image.js\nvar image = \"data:image/webp;base64,UklGRmwFAABXRUJQVlA4IGAFAAAQHQCdASqAAIAAPm00lkekIyIhKBYJ0IANiWgA11ls/wGnx9e80WmPx38Ack2cX1E94P4X9o6gH5u/zPuAfwT+W/sF1gPMB+y/6l+9h6B/8H6gH7MdYB6AH7gemF+5Xwc/td+1ntW+oB//9hS7LpEDtJjTVYrgXtaNg82nBZhG1b3Uqy68aE1SUFLurY3Jm8FqTNZcFE3IWSRq6SRVSIln+WztGsA1aab/ohQC9H6aYqyxzBR1DLKt2bz0LQr845FPb2jgdo2PMnl+hLBZf6CmIE66qjxaRvdGsswSlwOgWyZtbMGWNeN04JM6y2NuXBQAAP77U4AFA+l4p8DIA6oNxirZa/q3Mm2f00DOnBdx8s87Q4i2gFcvKjatFV+eNtHOQvd6ZHhW/jzBbuj/lj5spr56hsFae5XbRuX2n+8Pf43xjUiiUtnl1CeLUN7XCVf6bi7U+/EFWu5TbH+T6eSXb7b8R0VHrZ9ZTHpkHN5gvHGbkmnBe9qG8ox/jGGvxLWxdPRbG2u/7TZeMQOP43d4BV2DqcBLndRHG/luDlxcN2GK959Pry+ZIf6JRwsw71Z1GY6AYZjo5eXSxI1cwXwPbdFBR8Cu3NwDVINjsDl8XmeQxsQYfxMS8o2FxRFusUYHIUBDv/0o7kDCdZeS3DbuHj+pgpU3X0cPHlK1keUAuiNKyaS3FXVlxP2eJIo1jy+FpUwjJIwCN76A7a/HJ5cmkOJ3COcBaEFfPYZdEn/lSyFd5Z8msfm364sKOhqu2ex8QQxhn1690EkDhl2OtQu6/RfnoFYjkl/fS8we8PaSoWTGJvajI7KqTGGwwsA9fujqmVUGBcZ1ASqEo65gssJseS05zYXMLG+5NcdbVUifVk/r95cpT/bhE84UUuNxcfIS47bMCAnSCOxqnI+/MMo+EbJU79LDMCNlVB77TmGe1Ycsi2snm2+ZeP/tFyYnZ8r/sm2K4bibaDlS+p/7UIyS3vNvBInFA2GHQ0Qs40G7p3yB8PXYyExsmuvJmxPMU65NaVvS12MtWuNTXFsgmcBVq/2WbPs6Lyu+D7ouQaCOBHiF4q2Tk2QR5vvnnhKStZSsDFp9GzyQtu3zUdrOsUePKwfZHxz+BKvWTR84vtcftNLcSUyKsEmRo426rrEfM9wL7SQX8Ktfz1TXCqdKAQ4noybQCOt3qlSiJhzcZSr3W8o96ZJuu2YuCn8rDxBLmHtDY3pXgUMuSXExLIWeBCvOPkfVFv/5h/FFrBfZz0S6qSx4ATPBMz+E0qF9fbeqsqzAE/40+29f/blZPE6Ldh5NZegcY/StEwYAtyDeUzI72yvPXwLtTHCI/XDusXweUwMXr7xZXbc+/1OqyJGKuaQKve7boHuFpCdO+uwmTB/dDKi1F7QztJ9wFN0U6UOTx7/XyNjn5pt7JLvC648dioPqqXznAGKRKrwSMWscLVNx+sXccKhGjHo1iT9AqY3xYIrqLUTmfKUL1CnFECtZ73xtM77NMzdsWULcUaROQfva6NCE8WVV8SGjzY417yalrEWwWmqP+XTNWacG3hcStOwP9r3qyweltjOGIkZLU1Z4+yeceNDsqOH8FUqjK+cZDj5RlBC9BHfG9BtuvzpWIFaWdFcHWrhPin4bJmcNj58N8H6ZxUEGyTPUHZoix6jz5yvxIzq9ogdF/x3tRa9a4y36hIjfzLUEwg5bNf9d9z6c4xg4/pQ446+AsZHBoWDAShRcjCR6lslGnwPsAAPXmeK2M+5jg5I625incblnXO0X82oXg4WMpKf5jUiznPXJLtPeV9GlGDU9gO/K7DsgvtGyFssJP/zFL5zSo4AAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KWDZM3JO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KXOZP327.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.spatium.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRsoBAABXRUJQVlA4IL4BAAAwDgCdASqAAIAAPm02l0ckI6IhKhZoMIANiWNu3V8mnQBV/CDhYZNHnydMg9AD9gOta/bQEW5G3d3d3d3d3XtHZckoz3KF20fzfL6Cwp+mPgh36+lr+CnAmIl+MK0NbmxCfaj0HxRp5vHTSZC041aIvMkUlyqqqqqEAAD++1Yjg1XwAABMdsYXdMLgZ+d7ph1NRXMlQ/GT8WFLQufFMmNm+JV91SSyOGDLtAqiB6JSwsjrCoFTZ1NZ33/FhYG/zgwxAZyXNZqDRoGiwl0sJqVVfAAsnNfbNGZdz1l19m2+PUXXprLSL8Tu0Ve2C/Fc+hW7UAAD17Cp3U0/D8AeXYT8ZDKg5lMHk2uIxj/tlXhERagvaB7PydKqFX8HV9xMAJTFuDk3/eLvOz59+9z11pEP1CHaFY03j3Nt/8pYjxz/yfw3IJkHDpNVZSUEggMsbaCI1fAQTLkN9RxAheofwWTGT510aN/uaW8erZXbqWOB1QXr8Vi14HyB7Bqmlbl9+Mx1r4MVvTNUNSyEz8qHwMu1l39iiLaYHJWraexcHuTYhty/VhGXyYRlgrPBBwhdC8q0Triilyr5bagAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KXOZP327.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-KYZRZXTL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.coca/image.js\nvar image = \"data:image/webp;base64,UklGRv4EAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSDUAAAABD9D/iAgoaiRJ2d1DGSflpJ13ZvxE9F9MmrAAfoYADx2UB5bIZAM2EbgyLBG4RXru7/wQAABWUDggogQAANAcAJ0BKoAAgAA+bTaWR6QjIiEpm8hYgA2JYgcQVIPhj9m/IDT7fhL7SFc/nX4I9QHjNy13jvu12edYzzAP4B/IPw77CnmA8/D0cf4f1AP8r1G3oAeWt7Hf7v/s77DDyA6HOwGUEF/5NCoHt9fYkuBMV5WPI9XTSPxK+jv6i49Cn2Bz99gEW/bFY9XxV/o5tjsoh7R2UwLmeJ7i920JTQFVpMd1KZWC7GulzDfQCjNFyZYC2xet0RnO9zfPnjYAwKeb2cEzvqyn3uIq8baL0mEOaLcRKfsrJia1K+GTw0JDnKs2tnlIvCl7/jEcYxUAAP7eQEkLDr9Sz+pZWG50QLG5VvPQ2cwo5AQOnIIvzvkrVaJQBqfQ7I4DdHlq7b2eD3RL5p4NtrjsBUYP6HvYEx9Bc/UI/IF7PbMCHhp+9ZcePC4Ah8S9OQl76FezrUkaHq6F8mk4L2MvbJTYFMV9WCwKkUjdHCg9rWv6ZxmZglzDi8ktche9+1LGqNmLkwFPlg9kGW3PwBZMgPpAb52S7TgVoM0CQA8s8H9MgV1495oICaV5hkSZTOOxVY5VJPq5nRBG0QD0Jv76nTf5VrqAVCQ9p+rXeB9OJztagfWGQJiXG1rNFthR3N7/Y35HOWz2ycDv3P9jcpeTVesD/mPg8rr3PdQFe1bdaxT1jGA6fhJXOam+Z/DWVT0ivJpJYk0JE+EU3w7RY6X7mRt8VcBlE8fKqKjURXj8Xk2H+/+/lpcSc7vZ2asAuJdcOgOhMlXD5HbuLsYO7Iel8NAD7l/a7ZNI7dPI31jAPHFecz5n1lBYTKtfT6uUtJJtZQhoHpOZ3lrCR8rdTomkpxi4rncU6+6nNYYLLv6MXOgMcALPNclUUzkFwtBu6RySuomYG52VM0Ht2vcV+2plEQCE4jyJ6QDvLqVLFaiXva+egFklzxVnIPFK12jFnQfVMwK6xGWob/aTaguMZBlaFkqPx06hyIS4wmBq39MSzFYdhytpzNhkBDtZ2a6KNml1+4ySVJFQSTPn+qprX/C0juTn3oGKO11s3lC+8zcXA3ux8lh6eRcMEGJ0GPTsbN2hsbWmVj+osUa9ENtqDjN/jJ+1TEN3oSfvRW+NbYuy2Y5okosEjw4si4zdvn4ib194WLxTFwQbZ7E+MVfNM2rdgX5XarLx6x+vqb1Q/DBUQkVelTOhpZOjdtizKLp+ghikvLHRRj5UhViOslG2iNxBteYws2ATErQmpICq5RBpEX+4l8o4EQ2oDjd51eHM5DaDRG2YgDgUL+shFDyUbSUX3/mgjkGdvFKuYhQnbSSi0NX3Rf8Vykzv8fq4ewhHH+Zmjr8DCOr3fyveIdYP+kOw5WrnpPKi7uozl87FPhBwcOlmlSV2FiRa18OHQO/iiwDL0yqrKujcPZPDbgFmkWPe6RmNMoqRoQeFZHwDsx8KyTFU9ZpzhMbwV63wZEyBO2EfUN/CDOT9JK6CXeglGbkskLX4eO+9q6+TZD03TS6Nzfou5B4i85wydAC77LMYH4fEMlhwklrWhz0I9EAhJrPpa/mKo7CZtU+gcTLAwvDnRa4xBMMIlyAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-KYZRZXTL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-L64YUXOP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.exodus/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-L64YUXOP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-L7CIHOLP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.feralfile.app/image.js\nvar image = \"data:image/webp;base64,UklGRrYCAABXRUJQVlA4IKoCAADwFACdASqAAIAAPm0ylEWkI6IXjRR4QAbEtIQ4ABYtPTnQyzYv2Acyetf9kHFQYitjd4BzpNQD8tytu0LX04VupbME4V6o7a4+FOXIBf4KnwUkEYpy/PZKflZfD64ApPaIAjl8GoC/n0cgMUOH2/GrH+AepFqjpxNwRrnVICkN0cud63KqEsYcrQpB91yjgoSUpRQPt/+8bddCL+0PENT/MfjPPdBdBg5MjpZwzQm+AAD+x/wC/Pj7QGpFN8fH2mc4UvP9IMjrIJIee+nP/9HQfe55l//Zp8bf89MZ0Vh/vw4n491Jj4C6IIDJXBDxVaTHGE9IpM7KnpfyJZ7YcDhti1iRopOpKMFSiK5w1jbV0zPhXjR67zwOL1RX//s0+Nv+emM6Kw/enajPHHBsTMzf0coAd0GZmTupsB78f0wZUzPsI2tXH6fs1cti3kpO9vlGpUlxwJ8XEodqPRPjhmuhpM2wlRbA8COi8Fkh70ROCsvo0xF2/0V56TFdlcfp4StXCjXhckzKk3mu1X6zAY6hkk06DU+rd+Y2XwcK5reAw9Bxkjebmk+dnYN80Z2dj6oVdT/ZnDAXxTlCNPdh8TABu5K7RrN/s66cgJnB+A9kAEN9rF7Ccz9uI6Wj/Vpayflp56rX4YtvFLRpCbUU5i1iH5tv4hum9mcMBf958avC3JT0qEpOIMI/EsansnpAyVOpmBdXZcVWimn+Ifb9v1iY27iw/+2s5aHatR3phArkceFm/xXEwzifxvdUtVS9kUBcN02RsQouUsCN8wuW1zRhYPbOT30C9dt7AzU/+tD7rRln32Rl6E1Y2YpjRES3aqngASonb4X4Ddxqunr+QKj3oYmdqHiHJCVQxg9AvqRJE/vUBeKwbDOkJqRjo7EJeov+/xG/xtL4AAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-L7CIHOLP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-L7F3ZTNT.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.scramble/image.js\nvar image = \"data:image/webp;base64,UklGRkgDAABXRUJQVlA4IDwDAABwFACdASqAAIAAPm0ylEYkIyIhLpe4sIANiUAamByR9jVeq0a3bym8HLVNwtk4S79K0fpW+mZqF80BLb9H29CEQDAlo2pyWciDq/hbPHR5rrYcJPTmknGxhCX7iF6chautBureHkzrlpPMihwT3yNDJNfq6MMj//5wnYB9FjkP9R7lktiGxMQTH99HC2f2yV77MKNkPX867uJSD7jBw6rPpSBYKDP2jD3SG0wAAP78+FCRrslAjNqn9UcqK+kpd/isvxk57+7GJPSDPtax/AygC2k5uSOD1Mb2tIUsbaQGOhakwwA2IPf+1Iow93+ZiW0TWQLGuqYPn1/QjZB8MEK8mlm/nDVTI1+GQzCWCKq0uACT78jmI03UVKBDruarjFYS2uVXvHtfuXixpFHTu4ae5SB1cSiv9Kk0slqtD8Ygyx0wMblt5Bu2Igyt3zAuPNKgrBL3J8Jsd3GQFAtl/Z3nqJHZBaavLDmunBXylUhxQqzD1ey41jYFfClmnVYRmhFehTnXtHO2EkiwNXcQCFxYJfYvUKbgWIDVz6evaTXNzP0uI1w1gE7IpoVK6LErYzRIZdQoRBuk60v2Yb3rLFegzpgIBkh/dbmRH5fHA/JdkiuBtnmz3UqPemeQO0SdxybiUwfg4oETqwRugW4kPY5w0xrayhRcrOjF6GfGRnJWmd1KucZ2wzrbk31nWqNKDl+qjGP9nPBOGSeSn33v/4L15eEG2tcKGe91HGS4NzJRovdtNJ/hr1U7z/4IaBd6M6efcJ7XzRUCRroV5nTCOGYyp3N2pHf2f0YTzNNVHxKHvD8isFh5BEg6w21Ti1AYtl0dD3aNRaEyI5VDH7674YhherFwFBFNp+76d8VoNFZ/kPbRtpKvogHIidBBFyROv9t4JrfsFgBT2GF5ozVVqLvAbV+ue84563AH+uIz0kwF+7URfZGoW5SQT/e8YQfWITobfkXrZL8xhX7eBfYP+fm6qWAY7vfsPeL1e1+dTGxsLsAajxqmT+DeTCAOgCF1LPSR1LgYH3mMzIBlB6stTO/GTPePOgWKdUtyRiPjHydASp58FaddKy5c4ilm6qn4Up5ciHioO6OfVLFXAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-L7F3ZTNT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-L7XMXCCE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.elrond.maiar.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRmQEAABXRUJQVlA4IFgEAAAwGgCdASqAAIAAPm02lEckIyIhK5poMIANiUASwHWyU/7t+QH5AdFZu14W/Gnj+D5dmk4jzAP0b/sX2k9xXzH/rb+wHvzedN6gH9m6g70APLV/bz4Q/2q/bz2nf//nGP9pfgTkjxFf1nfcCmcjX9LYA9uTOaK4YbdVXmYNLLJBKNZLHvDvXkLcrf3VP/lyAnEy7299QHQYcLeMspcTg9p7/+oS/b5Sqw//5yvX/+AreMRaexPAroQk/HxoqP4/7lB93gtuljFT94NEib9+z6VxizNOXHKkQEjqAAD+/PhAAPjgz37CURPinvC1pw/0pHZL0XpZyf8T1EhWw3/k/igeovDbOqPde/8/uHvYj6Oxd8minsgQ+lv2DlproZicv1QDZENhu+0vs+UFZ7RhXjbFCZoLTJAKB0IJfLZAjpwZKGdiZU3FJ3zbC6ujS3TV16TdQB1gWxQr6cqcVj6lSAiL721aIfVfKXwOYBdkvGSqKzA1PDNzzB6i7PsGHMrmmV4sjCUK9xHFpwVIqGi80wzRGYEiOSSuDkz3j9Ugu4dtLexh+khmHy/mOBsUhy7EbzCCuOnk0q5N1ec7eoi8QQB/eL9GYlTf+LCNyp8hfySK14flJna4YKL7HxMzOtKy/kKXauv6SYir+e0qooLjyCNrmDZZsTZik5POwDQ0c+BAYvmQ5bztx+qZq17QzUc3bB0agJklM2h12m69QhENbSJzdeI/6A9i7vQZS1FQxMBc3/0RdAz9yuV75+PuoT4z2doIk3qFQ34/q1PNm99kBzP/5AGuJh4nwzcMLj8fSUJdjN6tH85El7Oo9SuXE1VxnaqC7zC3+4DP5SUQfIG9tw1p7bW/pHJRX5fCz0+GogFEgWYv2xXb2b9M8w8AwgE/brrRXRcoJR9HxrvSdOIGWmU4lRtwTPcLaLTPd+Qx5Mmlvx5KtvfkuOJxkWPM+PyGdk3lxfseF6CdRQEskEHpNxZsVpTRTLP2nSEX3CwRQOPzfJt1L5IgdZxL/p1dqdxnwGkEt0Bk/dgG4Gm1YjY2nIubn8nBauu5B6SSBeOR9diaUP0S50p8T0q2sN+eieWTQRwIyafX+FrUUtKgZXFd8R57BfwML0vO9u9PaGRZYZ1PZckgSPzLNl5T+0WqlJvVKwBxAff9HfDhSlHyORCDPXGUz0eJL+yvP+ryGBo5zC+hU3APAN5LU5tA7NEkO4J+ZHLR2BaTSO8IWj32KSmNCAzdfwfYGGBWUfnUm5OFj1O7pL3h5zXu0PF99H8XgDOmDnJzCjGsM9NOtvDtLM7TtjGev8zQHNM1UMi6pDvPpFvO2z8UlWjrRQZjia1N9hW0LzLEluQ69e6Fq4j83PqOx/a4KWZ3ktmRIljdIFnYj5i8lzySTmJ+FSFaxjirSIScET6FGTS7pfizfrEbNTJcbFK4UQDe+hMAEXhNepvaCQE/irPmq//EQD6Fds4knDhx4di4AAAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-L7XMXCCE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LDYJOQU6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.keyring/image.js\nvar image = \"data:image/webp;base64,UklGRioFAABXRUJQVlA4IB4FAADQHQCdASqAAIAAPm0ylUYkIyIhKhgLGIANiWYnAA9IT1f9J5p9Xfs26Yl39XPnDQL6PPMM/WLpKeYDzff8z6wf796gH+A6kn0GP2Z9Ob2Z/3ea37sBlchA2T0rtnlvALC7OEJanA3esQZf918M8ARP7NcjvVTt5WDHKRt+HhvCPPDwR8fxqufg0pxH3l7bTTiam4LU/EDX8BoUPt8L5iUZ/DLxZ3nUE4lIYzk10m5AwnZHXuxZKtxqKy6A4PRjGqvT1vt4+Q4u0fJvYnf5UB77DNUR8QoEVar1rgBr7SXIRK3msgPtLoTzxvo8wyL0AtDfI3gtiykAAP78qANK0ZlF2RKebECvRf06kg7CsIBxrxALp3xDqvunkjd9HZMoSfV/5/Y6nv+624H4+XeVRRgx2JFS2i9E2/YmCG0AM/HAhI9hz3Qbo/FU/0mz4G9O32M/Lff669ZtfvEUPJw3UWImjpBYVZju0DUTv0igMTZpeExBigyEHQyfayuV1ThFiqPih9l2ND58uxInU4++osQ5Xhc04pb5ZnnT0zx2tsDhzIvVlFs/c4N4ByaGRZJadYt7P3YV2fE3Iyma/SjFoaurpHEi0p5aORscydXF5u+HaWst8D/HYxvSXCk2k43SgG2tbwHcGX5JhrXqgaJyua0kj4e9NY6bMCcYGkID/INWxp3vxMMIAzbbdW45r/7YumG8/IkQdsEcCEmK83sHywLs9TQwjRoBDeKT+Lmy6DyfIryv7SXLQhFWusUZ+6gIt0g8+CaB9s5YecxRxv4G9gCarGS9i4pc8HtMxhslPOSyQFS3p+C7dgfM0979BeKwwppMioI72S4dbFZgU+xjW8x1zmqng26WF7v70dMKidxjXIoRp8PXOR/U2wOhU9ZrNZnh/Nz4uNHG45DbNJEzygZiCQDyMZ8z2DSRrRIAAXtOxhBGrJ1K6wpgfkHfKx8fonbI9ubYVStSjf9J0kLPaBt41EkqNGXqIC0bygS7zmyEFGlU0SWrqN2XKBieVIcbflX7RgFs5itYQyWGUZxjcguWYRMa6ZP0ov5X8G+EZ5xMMOLn+/Gl5ger7/zXgr/Qh/XStmHWGdH3KKabUHXP6ojYELdT4HD8+4+NxASfjxbJJAuIuovRwLDgqkzqOotg4FvgzpsUDmVLg94Ld7jgwqBTQy5elj/pB8HIJYV7BH9utenX3skBB31oWhGuFv/FtYTjhxJozpctR88pP/K1me/Za6WAd/1qKfzEasVR/U2TjRRirnUe+tfObH+NgxuV6A/oG65HRMeA5rnXKngWiNNM0rt1UjBFgWz3zGSTAWWTB0I906rXh0RnuFUKOfBeebMUK1nnINDZpceWVm3VsxIraFyf6c+/YLlZacstnxqKSE4ogLyi2UnhKgzwMCCrzHMdPhnFWi8von2iVCpwYdhmdhLiOfya1VZwOcUAkaaTNDZSZSvuoIq93dnFzl+Pn9aneypduZFIh1HkJOsWKVVKC31i4G9A7oKHxEbcAbRdPIkVOJZA+xCn2+qzSkeDhsWn+vRZe9zipFJO9uUcT0xjRLzZhNF6/TRld19YEP8rr+cS6GuUpcQ6lsQ89BVJHxDU0Cu0p4SYYxS7L4PJb9FLljYM44wEtDxqCepjwOqI9/VZiiKQRxT7yxz/zF9YN0U4fb890skgk1iLjGF+/kzXvzQiNBwIgF+ylQN6MR1LAGzxp5BNOYGAg+XijiNEgMCgksF0jntqQjQVzyAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LDYJOQU6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LH6FUJDR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.withpaper/image.js\nvar image = \"data:image/webp;base64,UklGRngCAABXRUJQVlA4IGwCAAAQEQCdASqAAIAAPm02mUikIyKhJRmYmIANiWVu4XPqwvM/89yYO/EQV4rbAeYDygP2A9yv+y9KrqK/Qd6VH9z2GwN295JuqIQ+oB4dxBTycMvNi1WXPfqmIjoxGsFCi1vsKBNQeuGnVZ2eMqQXd9QP1watzsz+mbbOjz7veCKThQQMlcg6Yxuc8j5Whl594W7AAP7/YCD+n8mar/66/UljswiihBA+A6A9f8RBSVIjhwtuRcdDFy9z5jtuCL3PZ198Qay3buoesynUDfQVefwMv/7x4eyhDe3FDsla94d9iaD710+/F2IRDeiuDsvid+MwMcoGkT25zOJnspfjWpDTewyrw3ASqo27IikLSMQvzZ/fZv95PGqZff/J3FjDgKhh+3o3HtTNWLBKy//zve5fzMv22GzUR8AyqFRe/qdypMDZ85e4J5eM5H+lfPbASPAt6cSPp+yWyclhd1NCTRjT1vAOdq962Ch1Gf52BoGvCNNslSZByaUO5zWf5EMHkkINZgzhSLm8Ne3o3RCvwZeLfcc4TU9kuIGD0pnOQQ+f79suEdks3Rca7lljreIlUrx5wjgyHf3xNNJn9SFQXd1lurSwLav9HfZJqDZxjv2oPCqxNP/GehTZAu51JVstjHgrvGIzfc9KlcjGQRxf/K9tgqKj0z0P8JUJz93jyF1MOCGtV84NfF17Avs1K/5ixZdP8eV3OX0NxC2q6TJwe0HFZaX3JYJ/g+fSWlivOKxEM3g3MSkK12gmayGs3jW3ixl5wO0l/6PH4lsk7Wf9Lk7cuAMXqQCJWdfiAfjR+Ts2L0UI7ETVT968AAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LH6FUJDR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LIVCGAOB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitpie/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LIVCGAOB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LLODPB4V.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ivirse/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LLODPB4V.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LOHR2RIE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/live.superex/image.js\nvar image = \"data:image/webp;base64,UklGRn4FAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSNsBAAABkCNt/9NGPwdm/v/K4MQFpI4jeHfZ3pG7KKfK8RCilbZ0rBipXC6g1DnhVC5O/Bn+zlbgqzZFxARQf/XF9cPWzUMk4zJ6uGntry/P05Ayw8pVnfalL2JE+Jctx85ZBhuCWTO968m49nbT5tyA1C8bXRnvvR1zagBKonQs4/+kmFT6xVdcidFd5v1hlVuJ8rbC+zCm1QKJU9S1sc+M6Y1QIg2b+tgntKaQWEVD/Rj/EUq0YY19hFeExBtU+HvK0q1EfLusvJN0JWY38ZZalKhL6hvmCazjhVdz2xL3xiwRfe8B65pELC2RpxgZe9B2DbI8aN6anpPYc0s2OHvDAefst8C1W1fgrm58cP6DACci+d////3/+38E70GAEzc+OL91Be7qqAOuteGAcxar4Gw9Dy5HlgfNs8jYg7ZnEEtDSzEiswusZxLR7Aaw7TkiooVjWMff6LVaglVU36CEC+pnkt5Wlm8h3S4r7xCvBICCMqcPsloIJ6wz+rDWEGBEU6OPj+nNEErY0Mc+QWNaXQAJauoYfZ5XbmHclhn1lS+7INwVTn1WksUTAMelhEL9nzJ3ejHX3fii0mDnzPSuF1vebtqcpcEzw8raTuvSD6LYiMSvy7ZTza4ZjD4PAFZQOCB8AwAA8BkAnQEqgACAAD5tMpVHJCMiISmZSWiADYlAGkY73+A1wblf5G84xzP339QG8A7HH7zuAH6Af4DqAeYD/1en/6G/+x6gH+v6gDntPY2+wD2AP//nsP6AWi9pV2Aytv+OSMm0fxO5C+XKdgxAxQiQBuNSaWacg+wB4Jxpafr2N3mlBiim2A7v6NusM5xz0oW1KtffnLVc5I4tS4P/QOnBsVCCdXRoD5Yc46S5Gp5GK4YSQLjq6su3oJiknK5dVKyaXXa1jxsfK+9xkmyQAJOv0oud3ix/6/MAAP741uRaIuc5KiHjlvCSeujDdnCErkXZFu36s1IkGtC8vFKOczVwpvxZMyVmxya1+x+942Lm8LaT+v2S/aiMdbi0e1Uvh/r9ws14ufA99pp9zz4HvtMsQgrclhFQqVjqqiquSg/IYfOy3UwLBiv2qHhobtJmLB3/y3iY5VmH2v7dZPbDgIukNVthUQsNMZYwUGVa5+nb6Fo+71hugEKcRaaso/JViVTGWCzK2UZUccKbfB/z2CqMAhE2YJgWSzfnm0RkCCkEuDyTIIvJT4pwD+XGZ/9uqRwp/GcS77S8TqAOh9saA7DfscS4Q4PDmGLnjVOSyOlCmKo3ke5botON43g3Y5WUD4KlEYQRw0LzIOUN27kBp9CFfr1lxwX5Mmq6XfMZbKoXIXRzaPRHopVKdA+BG3u8FPf/BeMh1iG91eU4wQdRy1330cPmfyIZ7jukJK0hU/bdg/FFPJjtztAaYcKWsLoxU23kWpER4qLFoVX9VfiuuhV70q3BkV98Q0GABRPzJ3y3BXFYE3rx3zA/W0MagXy3Y9E5M3WNDRVl7ns3Gk7ooVdbC6TmsmJFjra0vyVwfRb/6ky5ZogZrE9vrMuyKh6PyGK/BlFjRV7IszPuyIIY/zOoH8MEy1FbZZk93frpwzWandn7uX70L5ZlmAkS2sngcZQnAZnvEAVhW0Wh3PmlMc3Pjk8vSyrpzP4Nd0cgAcz8Gu6OQAOZA06Z4YS71cphcXid0RBE7WAS3LpAW93Jm/cB+ZkU2FaGTwg2PHyWjxXUAGEz7QZTbRnWNCkzSd+clgzjxa7eq04CEk5/E7jdwYHViL28asrEJBJmtWISC2f31h43yZWiNy/FCENZwNneGtRkgBb1DlhjcoJxb0fAAn2qMSmp3Kjmtfzxmg8AAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LOHR2RIE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LPCCHEBL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.trustkeys/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LPCCHEBL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LPMTTLXQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.cryptnox/image.js\nvar image = \"data:image/webp;base64,UklGRoAKAABXRUJQVlA4IHQKAADwJwCdASqAAIAAPm0uk0akIiGhKxgMAIANiUG2ALEIROe+IvKp5h8I+7tVvRnt3+e206OnmfAH9V7S/7T4T+IDzn7k/2TlQxOPj/3O/if3DiL+MmoR+L/yz/Hfl3wPAAvqv/svUV+O83PEC4DCgJ4jf1b6Ffqj9pfgO/XfrTekSicmZlLpoFn/kcNCjLLu7oNYn//+egxTZlrXcQrJ1DUFrnoH+z+efxrzKSpWHMsOjY3bNmhNdqGpIJbKueoUP8gOCx8jzyTwFg1rhk7pZguFQ2lE5k6Q3SoRM+O4M1FIENAKsXehRwfDsgfEKil1y4vL6mRvNPTI8BmNHK0mRZxCZKuwNg6/qL0a1/n/cv/8vLA5bIID89TzEloLphiCZC6EVFPcMo7uxHdu3UPgXmNimz7X8lra7p77tRVwEI2tTddOPQiKTdxAAP78jYf+j+x/KuD+CDaU08UDPTDQdJ5ZsFvN5d4Htcm2Cp8pzryKlD3cZL0u1Fl07mbQoHInn+QhyoYQLY/2Vil3+36dm2/5i0qzS389plW/UE36EYnEsW58lL8RdBSuHO1fVjlkyz/2wjxpHq1ZCQhsabx839IHQGNTdxE/ofgY+XEgzVttPDEI6izZ26ZHc2Sby7tLeVBVyaKCpg1B1snpzIueKK1ISbV3Zjh0KdXaXVKZkM+Kcno+em3JPB5/N8QHoOIv8nV3sqBhgR+nz/KZs7D/EGvgSM3Ng/8W/Rvwsu7jxhLgqkfzl6HamhpnjAkDKHf5PLeAonPacIKkC9UCudNp+ZfngqQXafKWAGhR38y/09sk5eAFJdGPb2th/DXXUo/m1h+7G8z96RlKymbZt3W3hA/MzE3J8maA0PZwBO424CiwaHtU03VBwc2y45g17vJRU+uxRFjL7rXs0hZvnh+/KISG/EAKz4Zkb4fswHRVl9vFDzCDbxGgCOJ/EJ2GSHMAwfyQ1tLZ7dNG4Saf8FSDlkTbGcVSd7gKpGuvTF3PlJraAd+ZdQMZ0qQ7WxbaXw80Or14L9apEjkvl9xhg86/W1aE8qDIVsxtb0hCbO3TEaOg9h709ZFtHRD+vz3vpGXeLj0SWAC4zNf+Cb4ihma/QiHjkfBkHJsdtLyxtj6R5DijoI7zsB1f+fnDpxDgSpkE6q3TAvugTjROcbTMIOBjidebZcvuOJ5UIS2fNp6h6vXVqGXBC5VMetjdpHViWLETZJAr9w8qMWrqJNb2wH6TOULv75zw/j7mqRQV7NknXCO5tDUQ8rLgtny9KfidTbgASeqWVm/2X78N+LStzYqYE39ufVIoUjBcU/l7qtIpJkvRSlXbH9eqUAL/R84Gq2c4KXtXg97SG4jFucBLx6bb9t8CWCVNUmuF1DgTf+SPMoh+oIvbIRs74aWWhrmJdm/LK9Dz7tXDGuNGVVsC7KN6FYRNwwp3fyKazeVMQnp2X+H3Nplhq9J3F1SCP97a+MmkPYVKAPjFRbcaWk+S/XYzeqQ4hc4KkOVS8qZMabAZ8+bNXehHynopooPlm+copJZ/BzXL1Fbf/plkLIC/+1zDP4dag2GApSH3WtVhhzF2fD5hHcxKzqDtu+J7HNlMO7XpGoce3iaJtUfiIsjitN2fzFX39TS9tTzbT2wm7Xa7SDQMQgezE8Go4h67VarJvW3HpjdAiaqNYrYt9atCgYVaQRoyZaadSl6WNwtHdUHAzNe+dWE+HMcbOLHNPgyr/VTG3IwIigNsnAqFV27nhA94i+6E+i34F1uvhfSlGNzrq92Hl+T7864OU5r4qhjF8og9WY2iFiwUM0/bIyKSXjMXQCrO2maxilz/T+VSULtaT1R2DXuiLe/oUg/Dvp0q8/9tP5fnp3qDxkpOTzH233B2Fn9zhEJ4AzVaHg4Gkztj+9k30Zdg24alx9L3iMBHrRHNw/Ngxu27zeuMW75qx7vzzgMAvmoL9p/+VI/L5x+M6XTj1qUCkUr1YO692jztpuPwmzW9Q9aiyDNxnR26n7xySGHVh7YMmlfyMAfIlEZy/Xsm/aCSsPISssSGvx4D3wpAvWfAAAjz7xJqb66zJUHCskcntTH5RouMqZVpIdNj9EoMPZej9XUIFkXKnou/o4Z3LT/DvkMhXx9N1wKrPiyqWLkS6oLUnVLXnOV0ZPqTgnELUi+O7seWEt3GhMDpJk0wR5lE7TpoyQG21VhVlvXtXMMQspO/HlgRHDj8pNOZ7QbmjBBP+/cN0tzuoYFkZs/q9wfi0EL6ODh8IR7MqlnI8dOUI8PFm2EZZSgXiUQZth/pKoPpV/nmBWVyAA6ziNl2XHSL9+F05rSg9p2AZkGXje4iKeV4SMQ6e/4puixX+zh2u3FZ5q0pciwrrMwHD6MX8uPmtGCtodIEDjk02I89V/n/5E7KqnjUOueMtdrOicullT7LXBtDdcDMraXXmAafTsroAMb4IvvnnUDVdq3kuzcYl5rCehOzhXlNnAGLQf2kUwrVSzWuFYh+yLrnBYVfvN2A+Hfcofgr+zW3ZTnkDXT0x+w+GFGb2lXIgdAvn3UEoLYisUl802G+5+Dp79hVr9N+nFp+I7S/9R4CKtmdhjMg3juNCReuFI3iICtFiEY0TxhKPRPwe4lA+KETam2a0OW2zywkrmFZKDK497UlH4ngwfF7WMG/PdYEPpzViBk891ROXjWuZHPTbUAAb66g15cYeSDtYIWjq3FbTO6QHuyjkSpDz0HnNaoeBQDC/y8Mv+XbqKE/a16eKJOtLIrqAt9Nu4Kpy4uWcq5FolbfhQDyk2pez3VUU1hnG2oHLs3idKcTeyDWFX5omg0XZ+XNPBkb1u3q2qw6fHJi00ZUp2x23mli+Ac9vE8AePkqxYvwcrrYapt5IXqhTGD0OsvVh0S/q3oVMpomrB9Utz9chAsfd6DZMyrWzPtUcQqe7tWLWjpFsL41MyhNC72i7eQ/B+PUQ08seV3haSZbUtm0/ttZ8hnLYBe00AbLPXP6/sMWyzEDCcdzjNki/uBlJVL+g5g11C0tgnYGMsd+d8UCyfe9teVC9+y3051e6IxuUgDbj2bJA1GY++eit7fYIZ5GaClMIZl1upMoxeIbuTXMICRYqkRruC8xxM9yQwxQ91Eyrv735zZ9vuCfaD28+Yn/Qwv3osICKXZ5mKjqbT09sfp88TunHh98NahTAOs/e8rMVssWRyJBJj/x9hrAsPV//5nqtZ8FlfwPKOphb/6iK8z96/1B61GVD9xZ1IxDYpNNwFx2Kckw1S21KH7atnD4nipocT24mEl0kqeV7Gc58m0QaD48aeawf8VdLt5WJY7Oz1eXRkIuQoMPpmsfr9GW0dLnrI40lZEPOrgYEZoTUkukYVTgPzwGWPWdPUVrVMmpqZ6qxM1IvwX0s9ZUCERrxrbFwn09nMqPde32RlJn/xNlV4TSBTn+B6gjOcpEcdbvpdNrYWJMbHU7uatCSNceZTmwPbrn4+n0JGtHQcGAk3FUp8QXqOL3U6UXH5N2p5O/Ela18LFs2Z3BFTilWBKKLRVDqTwLOEjcSgYq1Okof+0awQoMg+rLX/8VgR86iobI/AAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LPMTTLXQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LRZBNW6B.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ripio/image.js\nvar image = \"data:image/webp;base64,UklGRq4EAABXRUJQVlA4IKIEAACwGgCdASqAAIAAPm00lEYkI6IhLhgIcIANiWIIcAGQLjh6v9e/KD8jurB3d8B/jp0NiGezTmA7UH6K/3PuAfqn/j+ob5kP2f/ZL3gOkA/sHUoegB0tf7e/sP7Q+qrsG/xNeBvq7Uv933zQfHIaV+N+D7fiq4PPNT/NjPScPkZc3YWcDVORMWkhiMr1CD4apSlmKzW7Mn1BKxCCmvQ8e39oBWJqkL03E5riQCztLjUmEIEDmBLH+AXgaUIwWWnye0VR+tSHEK8zNnVOytYoTqTxQttyEdnJv3ONXLFh04AA/tGAAAALl4w05azmHzQpDsC/29cxUM/IhZV/PCTA5M5xmk7Q9yTSpvSzSTj138J3/DvXR0KkaUy5E7Rf9U7OlVxkxf58XYmlD3jjCzFE9xSTIsvVK/o2mjBCv/jmDexjKivMiYvjV7dYGJhhaQ3Ug41izPmnkWMmsb8A2g6V1su4yrY/nvyY3S5b4UlnD3wJk5YzaJcYVSwrAJHYyUMP/31yj9frQ6yBK/8fdM2j9nQUb3frYRSS5/f2sps3fYje00xhcWbcLrx+btz2LEEDyqlGXgTu39WqbSp9R8L6kMJe4ixD3JEX0atItt1zCfx199iq8n25GKXoJt1WipyuaQB4YAs5DERVaCm4GEp+pbqVYLSR8iMVDuwRPC22+3ph5lAlXkIF7QMyV2nFfqXm3IeUfjg4SUdt7ErQVT2VxPE+Gou7PFr5te2dvKNWRzYbV1KTuXkVfEs5WtXqcJbqq8X3j6l4SDAfvf8m8MZcKN9nkMbkkpR3OIKzW51TYAuEbZO8fhxhYe8XQ1RXFfohQ2mDfSQI43JnIXd4blAEXM7N8ii2ww94Fihipv5UA5VUZPtKLYaOi1H+0dX3vXVYK/oji92KS6zUUXHh++pfOX1ZDfJBL0qLT8mzHf8f3HiIOxHetw7NA2NONF+RZKXpePqcB2BftJt0XfyoCGCzJyHK4SJLgqfNbgCTLlAnm/+e5g4mHAOnp/7BEZvlCSIU4ZRURN7CeRsnuzv2eB93E6L324OpuSgz3/j66pFSWowPzWaexnT4Db2di9C0UOQEnkxpZELNapyNQ375MQGPbdTHzBzBU4+X7rxbYkkAeXVZ+P9K7Lrj+kL923DQE74x1hKfEMa0ewEGTQZw9uefTF8d+sR8XhwW8W+31m+Hds4r2ggiO35vQErgdqeo91ObKHSghKqaJxaKwz29uSfC+M90/f0wUGqpTygEjSQh5vkKZNd0tnjDczcZSOrlXIwxePzlxrcQH7zYVndI5jqlpnF2LI4F60Gtie/zYiuePxR2N449scKgDqkrUNZm9ALxR273sGn++4/uQhgzRqLpybOQ4zhWHBlVV6K+gCTUIYco5k5Zj+LPb2UBz7sVlUnKOLzhFt6fmbK52GMNVVKQxffPfnyoXRcbEfS9IrQJ8oxAwb/XJQIiyj6x4BMom+Q3D9Ca+Qxgn4q6RjsiIAG1L8M5Da2LpMu18bCQbgxbQtEkAwKwOPXqIOSu1AR8j15E0T9eBZPsfj8RPkp/mDkZKr1o27ZqeVrwUZQmhWyYaQ5IAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LRZBNW6B.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LVVWGSGE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.plasma-wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LVVWGSGE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LY3RZ44R.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.wallacy/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LY3RZ44R.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-LZY7JTRH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tiduswallet/image.js\nvar image = \"data:image/webp;base64,UklGRugEAABXRUJQVlA4INwEAAAwGgCdASqAAIAAPm0ylkgkIqIhJhK6KIANiUDOAaRMrbw9iaZXv2MJ5QHaA/O/sAfpz/euqr5hv149bj0m/5v1AP8b1FPoAeW17Kn7f/tn7R+YxvzPczEx5EuvIte3w+trW6tRi+NPd/rtYfx6lb3uhp+wsUk6bQqw3T/+Xae+ie1erjIuqa1ADypr2kozAQwOLc3g+CTFCyFqwY1Zl6Bnvh1HmzR2mzPHoL1zHc2ezMmsuR4JnRvtW99/492egxx1jwiy+e+A1Lj2mGwcqfsyWfYAqf////+FgAD+/EoAAH41eQusgEnsHcJnk+8PuusJAKUoOgl8vnagjV98i5t19Ke2v+MgAa0uFNYv/8zM6XOFmJ+u9u1RCKX9u3Ne0e/Wlmnvi4DtJG87qk3/dqIvZyuUJA5cmq36lR/0uHOHbo2Dazy13Edkm/Zhfcr8e1gweTmSjB3gvEs8mll6IeGiNgrIPAkutcAH5Oa2BQ/at+IJAQdA+B29OvkAn5rDrjMlI8Vsfguag+cd2kc/Nnxa4Tr0PxXh6p8cwj+ZvEYBVe9QCsQ9ZTzw19Wmmp2bO5eHx7VcS8Gvcf9N/Ptj+YI36WqMEKtGXI8mjGCJ4+LuV5OJSXbRNRCWNaidh72aPtYkoMe9P3wjot3YioYeKNISroWcOBzBEOTZB5B3apeTnyltx2V0rPjy12Ar2nJrmruQTXi5DQvesEdSTuIgaaOm7WQo1wc7Envo33E/IWNX+yUP9Q0pyHlH7qADxw3d7dg9lQPRt779ZWnsSUT+O1Hjznv1PX3QnATIqB2DpWi3YuwTGFzGset4THXhLpwUektwgsU1RxETo+CCD0odp9nHCI+qKhHKDkMC0aXEAlxwX6oiuXRopUTtGNH9ojYHI/vKJSKVKkirKNXeEmNRF4mZ48LiX4PuJNFoqHNjqs7Z3pwkLREOw7vZV+ai4yFKXIQOqdmwX/ZbVTauSW3c+Vjui0Qxl+o5jp6/7EudokUCgJTP4diq+RDfjaTXtTv2ZOr8uCMMQ3n71MznYi87luHISJgll1Ojby1xBRm3EBshnc2XobzHqsLDyya8n3DRGBGrNo4o3TdC+DS4oF3YP1scntlF3kuP5O4cMy9wD6Xrao1eO4HGuzaf2t2TxzIPE91Jb+zeo+VUqVLnuc4Hw/+R1KNc91KefVpo7lrA6QWZDD+yBoubCkjSPxteaEgEHDO+6/pclwI6Ey8Gp6iAgFiUALmqJT+mSA2FNf+xy1x/whjqWHQh3ei6A9teeX2qbUY811KbZjfvJjXrbhn42zeF4Fta87yGftaHipOFTUke/4TTxposWd8TNXrpCntB+MSZeVQtcE9wWeJW//TXix10FtpSmYBOtaSj+kMyudIvtkUZzrmx07u5iEY3mD0q3W/sScBC0zAX1da0YApYrONMOE4ueGt25/hxZieaT77sJgwxtLKPQ+2tPs6FeuN3nwgRiHZxPsh8v4lI5F2Prjj6q7mc20gdJIZGgg4yVh/908zP35sEIwb4lmk2PIW25doljo9DSKOO77fzlSCqw35pDE8vA8n1wg8z7O/jvcQki6vYjB5tQ9VRx7MtqYJeh3rCq0ZQWqezQfuA0Y82X5SDMCuOZQQlcBPOzQeL8zSR5mlr2FuLsqGpoAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-LZY7JTRH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-M3IUK3S6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.kraken/image.js\nvar image = \"data:image/webp;base64,UklGRvwEAABXRUJQVlA4IPAEAACwIACdASqAAIAAPm0ulEYkIqIhrpjZYIANiWIDsBu8vv/AdXeCH2XLcd1zQ37Nwn5gPNk/yX7Ae7z0AP8r1E/oLfsz1qf7fftVSyMZs0Jg1pmGoCLLDlbR4cvPuPttMXRF+8UsiFrgixSO5F5CqDfaT+f4iXskJ5QpUa0MR/3qYWlAstoTNq/E7lDas6gS8sCE2UUn/yHhJbUCA688M2+v3SdpOnCxdCptxHEMJVnz/4YcL1P6ibjis+QwItMuib5en2fnxqBP9PDgiarHXDWX2IrBDvl/tsFXKxk+itcBmssd+rEzDFwfmIf9hxeslSn+ghB0Ay1fThZ77DBBL3RexVoWFX6IHmucGc+9iQAA/uvJ0Ap7pCV0128CdZ+5wP9zgf7nA87X5NPSGpyB/2hYTVX4tQj7P8YO3YaaRyVIQUpaLmOrNnm64R+AIyL1TEeAxNRhHUCMv1gCEjctApX4UMgPJo2GCKqms1AmkKww8TvdGjrn6OLKR2UEVCZA33sKt5tmeP/fzttY22sVhgbkeM8JyCcnk62v8usC7s3gb038QvKIuqXsPtSAB6XKwcPQ+I5KOyajZj+qaNQsV5/PLEpIQg+RU73zGbzpJW8bnBRoBIwgrYPE40dRgfMd3QEFybwyX7Z2cA+gHzwJpj4KpDZM8dp14kU3in9FaF7llzP2l8DZJtVBNsqWtRKDU7s+7YAUuZ2HrBXF4ANI6EClvDq3Mg/n5o3kFBs9Vg7wxf6ySarhSIdW4REU8sZdFzUGMGI/FE3V87Z0OzHpiBnso6dniNXJOcxny1/TGVfnwGd4rHpNugqFxqox3Gv/8lSzcpc3V6WwC/FlB2mDaTnJ8vn/RXRIhlsMZGBGTF3RQSPynRJ+cIV43mD3OkwdlHNzfEDxZBhldVKaCI2aVnmvhwjzNTh9rTEAgjNYzHfATOfyiFh6AoVpu2bX5Drt/Fy7Cn6uxlnhHoVXj7tRMUIYJe+mqSMsexNS7272m433wP3kh+vIJ1S5cWIgAqKHmAMmvt8RwTFjYL9kQ3nusNbbFi2/s7ZvYjrkWm3Nm4z1OJSDxj5pfccuMm+Qkl7sJxImRuGc4GshtrtpJJvzcBuC5P7OcjDumu7v0YbV6KMyGU530vSw8PVhQw/EXTY+UiHM2bEDz+W1NDdAJmJXQyCOTfZgbQsP9OP4svuHro7QhoSgCuH/ppeyYSu1MsbboJm9t5X95A2iEyd7rYw6djsAsPsuPiA7FwbCc+3kO4RL1k/lHmy7rdxgGnFF08gzRjz8vbt8By0M2CtklEHL0JHt7YlSzwmR3sry9I8aiwUqT1NFeO+LAHbtM8L67dnE2klsVs4LOzU9VtkERzhbc7HIsRl//8BCFSk2OA3Gc/8FRw9O2OWykDkhT7j/3abdf7/9fBFZV+EjCWsNHIfcdYbYVGTadvU+HMbxrDTUQHdtLi3ikY1iG3MGeUPRYjeLeEYEeJ8Z5VGVlvhwM7IOv1YwGBSNx9pzL+MyKK876oTrmUM0kVQyFvB9gYciJ7GEQTh4g7PlnGUmkMRd7WvKK9UkUqksLBrDdVhzr6dv7YTzFXnv0VCtB8Wa2tnJ99LH4tU5b7uqwe/M5aX7PPqGX/7uUkYEslax1o9eU84uKP2fVrsR9Ruk2sYguQyOwpDuthTR2Tvf4gLcPVGJnXwNIAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-M3IUK3S6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-M4Z3YR4Z.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.talken/image.js\nvar image = \"data:image/webp;base64,UklGRl4EAABXRUJQVlA4IFIEAAAwFQCdASqAAIAAPm02mEgkIyKhJxSZIIANiWUHBIoANaF6yQfPRJnbk+YDcmepVjiXR+oj/1XsJ2BsFhyqmh16nHU4DTOinRTOjgdoQ7CAqsE6DCKvsZzBufBZ3Vlo6F4F8piYJ4EIXtX6uyKBc2mK+hjm+bwgFp94SsfKNsQS6LT3Ai7Qp4qD5mJRPaON9+a6riCqBKWk1Ax1cF1VTOW1S/rubgmCfecTRrt5dM97oNgAAP71Y5B/+N46VulbR//XjNCLxYIuUaVGFMmiauKSoF3/93HyFDwQ+WSiSgx527GJFu5YxIjXEXOA8LpNnrs7HPKJ8M5HTi3sJg3ZgWfa3BWilVOjy3mP+DR2FOEqm6B8vim9oJN7TMBwjAxAH7XSTWhf+BjO2+aDpcKK6p2f6/W44MgmOUp3NRvLe80SUlLGkTdzICKlKE9bUln+u/03/VYePmvXC3vdB0+wzuH2/FgxmdITIRcKWZeSrTabdFl8O/7V9xYAb+mvrqL1t8bQL/FYTcaIRP3D50i/oALWi+jOUJjwfDs10Rs/oYxTTrxI/0uPjuaGw7fWcwArfjNkoz+dGemVPO5ccY7qLrK21tv9ZkHCqP3/0xWFRJ9zYdbSiwEaT1moD0+CthGvvzsHR//z5ekUJL0/WUdIOjb5MoLdqlDAF+GN2hQJty+3CRPyUMbUE/g9j4CH+OExNb3x4SNuYp+KrEgvqLYIW0cCrCFPDze+f5Al2bGIV5wWbxjjzc9NlvGsvA6LOGrVQANPcPYGmo4kQ33PMXKGNVlOKy792QCHBT9lnpSVllnhlikVHttN6lxymXDLEQ/c3tJQkWXBVg2wVsd2duMU7Cj3pakkdvflp36RhfGXDonpzOzbvQ31C1+WDnZXL4+1xm/7KtA2MPcYf1E2PuObZxGKiYbHmx9s2gqEGPzkWg1S9WsaSAw62r97Y9imTDnLmprhV/mRTB0fQbqgx++Y3Y8bJQ5diSXVutR1QVajBJGzAlURKRYgj+rC3FtA/1cKBMkT3Ul9XN7CqQTso73saY2y9UFci/2xixToZn5z1hAyY2DgMTVJghinh0tdBp7JRC/3eVSGZQpb2pd1hvpHv6iSaIDMcrEUZ7ujnQTzL80uvS4BDHfmnrArIW1iHduESjefVG3OXFRUoQ8lOUYTEozR3hGuY1Zr972/xxfXgSThHIOs0Kok54Bgbzc8v4JY85Oh7u48w/yZz9xJQKVFUB6uU1iCMqGHDN0rsd4lvahhYxaA1LkuYdk5/VH0bHi+UH4wK5AX9oezoXLUz9+3KwWxabW/crBcH3KIIIICil+PKTLrHhLieUU0bVra7P01R73ars2Ko5tH7Sed8SSVQfDNymVaKZIxYb1+VbGf7UxpUqr/ktS/QJosje1Pd9b9ZlBMugqURoHC+9igWqrbhHtg4zbnrETxjfLdFjhZ9eBZu+6/rB1mQCFAL2BfD5p5qxlgAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-M4Z3YR4Z.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MBAEXQG7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.foxwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MBAEXQG7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MBFXNJFS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.secuxtech/image.js\nvar image = \"data:image/webp;base64,UklGRg4FAABXRUJQVlA4IAIFAACwGwCdASqAAIAAPm00lkikIqIhI5JKYIANiWkAFtV+AP5L2yf3zwt8bfqmS/3BajXyH7N/c+GXgBfjX8n/z35UcExyb+qf7rwptRTulrdtADxNs+X0p7BX66daf0JSJMG3VV5Pl1IRafMGk2CbDURL3FhpZsQ/gabl/L+GcHg8GRQRa8W6XZJgQ0cb4iOcGOHiwKXqoFFxfp5qLUh55zthuhS+JSWspjKcOcEyp0zjeXP3V0QRYHbDmuPXGp/CopiBS1OmmW0X6hS3U4ypJcxKCulnimRfcyylSupHJrch0rrbqq8nSAD+/K0QAAecv2h2WcnCGFIcW++mRfRWBLOiTlKLR+VQ3osrIfmZA/VUUUo5/2a3HAHPjJlLe4BMQnCHM59U2mQv6e39ALf2QkM8McFeSLd1gXHYpucso9NkOu4UEG5cXPX+/AtP7YPzHltrbhc87YeTEQljdNIVUMSZeYfBJJjA8Q/1lB4mwhFq6OHXh3gTBY+G1N+b2ljephPItEXx5rt1T+v/DN1KPJ5HfmkBJRtDNeEfNeQVebucOXSTQu3ae8oUL6BcJqQNC0S/+7QN4F7zkva634ukuPakJkH0FqpSsyROPQ9o5Pg9mjG/ymYSPkujJH/Bl+e8H06VV1sxfRKrrLqOttonljWYrP+L6kel712IaYF5r/BfIQ3fWl0wC2H3Cmv48T1NYFQHiOKD/6XJbd8XiaZCT7/ezPjpXldphqGRR3v/rmzBQw6tEO6DxLPR4zmAs4iv5fEQr90A9VeHBRuUK3BmonbyP3VVPpX0+8mGacImq0Wqhgu48tyV/NKCltl+O044eUC295Ia1zS/se5tX1jyzrwYPceb+3IT+kf+0h6yfDbb/CReX8/MtQ4pKsDgdmT5SHkrWKVBJpfUwG3mfzw12egtNsM1zg60ZJTPVg0I66kU/fUsnPNVa9g5FQVUkfI1gzu9we5048kkzPolSCNmPCGsyMHasmhvkKVg7pPYjLyeD26Q7Ov7+3Ycc5WVIVxEUOaL3twa4QJ1gA5ZP/5iHzV2SeSjsjkR/IN6DVFM7h0p7I3YS0fFy0cP40rZ2NJ9FsOtjoErW5n7sTocHzcuUomgZ+X8ZgFdJ5UDCKMVQQ4quhP2FS2YhvNkViyPWvolEHIcfSYVtEn444z+NAqlaLKiexcMPLq8sebHLjcTxqxqoJVvK3tYOlSO622ku6cCLNddKHTj/B4z/4Dudqz8WXrKeSUh3gaQcSeAK+rbHHOnYR93nsf5CKydqjpn59OSOVZbLhdPVMZWJnj+M8UGk5R0WdP47Cm8+wpJOVf1gjRu1rLe7DvYIps44j/t9TexlvHb/c9ixg/dcshGnPOat0RHkxxmUa8BY0/qd3Tlab7qCiHVIZtyg17lyOYwUeyd8rEdFyUrYqr2hl40RTF+cdJ2J2oGQessCF1fj5b/zVu0BxKFPjji+3mR9WN/jyzH3lX9Hl2OaHz+KUbn7Dy6MD0eHCdWYdCv9rmncPthak1bjiDu/qt+3s5dlpMdKjRUBo5wc+43fxPYd/Neg9VUw/PKrXXxWU/FEHPN9I1ax3qz1VANf4bmiKuHqgjB3bp8ZmvMn2GjAWYqk81nct0PRjYTER2QDVeUroz7A9NQ+Z2GDZ/QvruUBiaOHt9yE6PQfRXF6t+8mpX6sq1QtaBRg03tSt/Vu3H+5ihJrzsNesAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MBFXNJFS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MDU42EYU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.scramberry/image.js\nvar image = \"data:image/webp;base64,UklGRtoEAABXRUJQVlA4IM4EAABQGgCdASqAAIAAPm00l0gkIyIhJBQKIIANiWkD2ET+I1CDr8h0jXfv2x/Dvmosj/yP9E/Z/5Qdlu1X/jd4Iyr/quNv6v+aH/peQQoAfy//Ceh/oB+nvYP/XDrYkLjQ+t1R+xPmnQndGPTQs5OWO7QKbk/GseEoMUDfNDQ2NibbutLVa5rjZ2uWGkXEs+YyQ0ezHoMN3sJht0OOWeXPDDCM+Uiag5UrNTQXbryW4eoMyjRAOudJUgT+CWYuNQrO+xyhz77rIUp8vkZ09mcO/Gb3iTpOSnjyCsGPmYAA/vsSFW6AdjmsI+QC/bX/ft/YwcFp0/uymW9FXc8zO1ly7vVt8oRlF9tSs6W2St+TIoIzxVNnOljQToS/8wyPsgYdAbxq7/miMYNIlpowLPiXfP8UjBhRsGMIyGkJAxxzTBuDKSlWps7si7yG1KOx5CjrNNX8553MyATyqEuZeiaym47mCnTB7xQV84XeLfwgNP6Oaj6CrejniPq76llMdXC8wAGe3Od7Xr0u20hpn5glXvz8nmgQYgAd8q1d7ZRfURhBBAdGN1KGNgzZEAxJ7BjrkyT9Ew7htq7xOa/jrlaUNJVPrn2+2gPjXyLF9YdY+cSVqtgz6alifhP3QmJTbFsao0LKfKWHa62+3+KQ2kv5KTZlj0SfWKIyJ6ElwgrbfJqS5VchyjcZGo3Z0Uc1bPpDb+h3vbsN3lHpM8DbLKfRUBMSXJiKYMGaStByMqRC2g1Ilx/Uu2y8+HbLQ5xyGJ5fX15R7K+ulpbEXH3sn0z++eCKucRm5kTT3KWd2ecRgXocBKIPuNnDC9rm7WEv6KfHVGTO9tXJCuC04/li2rMZYsBW9wU37seYHSwiz9tJdiIvVNLrvWzH69dewnFNbbFMrOdBC87WSpQaF8Epoe+qSGbZirPiMH/Lie3delHTdkoQQqo+cJ8M8+DK8ZySAg7xS28hZchztYEZwLg+u/o2cZYS4RwSTU6ZR78J25trEH4ZNiByiK3g1t1cDGK2mLPND7ZCc4DKMQpxixY9tGy9ZVfUAxN9Qzwg6LHdpfa+0srsd0wjK4t7rg6ouKrca/4yyyTt4JLbrsHnfFuK2HgnrINntkz9/GtW2RrlbxoqFWaGukuM7l1TA4f9BjgnkFr5eotfEQmHOzfNocPu3dCzUbHu/hwIh6mSVu/7aGLfLH3LWEFGrP91nLmjk3dJ5Thfy34rRfzQHa1hcuyvfptP/xKjTXl6J+EWQPwn/iZYe/HRf/k/qRaWbA1P+kanZ4FDPx2qfKo/lOjU/DgurEpIdh/zrH1N7TMcxQjA4eCCt5t8iV8WTlw+3Emov+FYCKcvBXHvxQyih8WyR6z0enP4K76Nf/tBVLsB74Q2A//RePXZ/xwKyXwnhj2Man4kWmSLti/A+DOp9n/R/UGWQbq0GDB5a6nm4/bul9g7tC6kQCmxlRK/I6ZfU15iOV5Ojy9OY8IThbHD0Gl/8gJDInw5Nuz/bL2Rcn8osBOntgga+evosIerD6M88FhPMNWJP3UldB/QwQldfonEyeoLlpYDABjnysyOv+dWxjSpnkThU5iT/WLTwGb6T77J2icmqnxhRvgv5tDJXloEHVnonjMgglMBXkUlo8atw5pl8kAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MDU42EYU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MJ7T6PNW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.rktechworks/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MJ7T6PNW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MJJT532J.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ttmwallet/image.js\nvar image = \"data:image/webp;base64,UklGRpgFAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSDgBAAABCjjS9j+J/jO0hk3/GQ6Bh4DKgJ5DS9lL0MkJ2LugNZW2m2Nnzjmnr11//v4RMQG0YzxXqnx0prNzTR2uqFxc7F83HT94qQ/P2LDOga8sfU8y5VVnGGuUlHvQDPd3hvPbNbRdInZ4xUqKt7vJ92ZoVf5mm3hxhphpU0RdMStep9k9UMrmNUZ4RU2JFenOcLMkouQPsL+UIN2bISddWDVobN44M+wq64OjUhmcUs/g+LMOrt4ZghtOZxf/X/z//3+C1xmCG6o6uHqZwXGpDE5lfXBPNw64R2HWoLFFugeNdEGpP2A/SUEkXWAsiYgSISwyxKpm90Apm9dQtACKWGyMFyExiS1vCj04im7E1hE7BEOKxY6a4X4D+XUNTewuk14NRJVSUuxXtxw/eKkPp2eLhnUOfGXqYltWUDggOgQAAPAYAJ0BKoAAgAA+bTCSRaQjIZh9pCRABsS0gGmYCAeSBmuWYq+uVkngVfkl2W/1XHaPPXAUl3kWGseSr6lMBoT867NUdYvkmdhwjU1EIlu1YLzzylSXWq6olXkJLcZ7ggd2vnOY+fRXMbUv/aXjOR7wii6UOIDAGrdsDt3USVYqM0G/gEOKcGU4jOvTEpFQDfZnreTE1gGPx29YOeKhUXTcbX4KSY+ckefBKaV6UlMHo7s9tXtut46aO2ps5X3Xp/ZF/aH2lU3vMRArMQijugAA/vU2ZmfKe3fUCBHIeBDG57lPTsFMKwV03d+9vl6090Ur6JnfowHH4tv/TfrJZgGlLzY+mrRh3fNjYZgMgO3woI3Yf6iH09ynrsFNKm5sZH447MUER8VMqTHJ/fF8LYV1eet2UWj5Tx9AZREZJAL3tmYBFd0VC5k2msHDzjHlyFOAVFpbOYWWHzL6oFr7grj9TT36F/pdDQFWRuhrfLQwmX23vrFQ6UUsWM+h6mTxqXX1A11my0hQsopMOdypjGMD+t0ofvd38jiH2E4p9OkQ7PNnAHw01UIka7MkiSCuK4DIhhN9zrjXZgCvLG09NnLi+8G+MbySjuiKyzOE5psOca2bURxzXN7RhnQ/yyE9uBlrEAaH+MK+rDeHQth/oAg/zsgqhTCIa1oqD0MwyK647VIWVVD1CcsU94HyVHb4eYUD6sMZhnVzpfRa4/CCr+hYrZpwqlE0ayqcf6xThcWaoY4LHcCuu5Oh0vGAjZEsr1zNhRjWyFOGYOgm4QvLFDw9WzilCEuKwZcQmV57nLhIDN2Lfc81ks74HqObWz5pdD5Uyz8Lw6xScJEJ6iY83Acm9hyE8nSAvikbZIzlMNMu5EVx/PoIpoAfo0909cFLtN04NO7x3PjvmWvq63PAP/DYcLCIT65zOQ/sCN2UXQ2COkKhnrmfa6HN+1tcQJSN+xjRs9f9HdVz86OaIdQUBdjV8LDu6+zxPSHsyRXuGpdau1vo5cuznXDh4fK2c04b67gLSTA+OJfDNDKlMo6QnsyBGRJH/YymN0jqsDt3KhiXW3/HT/d4N2zWWEOEvIk5aRvXR9n2D42FvJP2jWzoZu+vbF/bod6GuKInq2K/jqrzcAMhSuPfP+YbJ+LlxEnP9ruUL3Xh+37GE9Vrh83MHtYLLUO6MIyE9COE6Gz2A66G40CqlDsuCKygKv6DvAq1vvcy3Y0x9z/UErQjEchS9yNsQULqXF7rXMRaPKpWDjLIe82FrCDHOqzYcyVrCyCv3+yQwyCxZpo9olWGEm7Edb0mVTWa/RR/0x5y5fPS2hj7E1Uzlr7AV8jYpvulU4Uz6/ipZQEEKRRjm6XEPEzq2QAldJO8z291odWRUfbJqqU/xqlb1VrCroALS02aYKVkyRN0FZtLvkjZLTAHQhM9jCke6WaqDNf8AAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MJJT532J.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MO47H6ZA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.noone/image.js\nvar image = \"data:image/webp;base64,UklGRnQEAABXRUJQVlA4IGgEAAAwGwCdASqAAIAAPm0ylUakIyIhK5kJwIANiUASwH8r1ODtXmgWl/D78lO3l84Y+mz1x+KZ05PMB+yPrZ/4D9gPdbvG/oAdLZWiq8vf7lvMEdMe0Vu9DSiAToFxAJ0C4WMPbCy385ZGg1gncCv6lfWDqEg8nHhm4gsxtEDw5m38jSSKAn2pEch+jagubttzEWX/ycUoKD2+2EpJrdq1CxEwxoUprWdWnCshdybyZxamZw06Ek+gJ8sex9DM5r0bs8JhoSMLp8Lh6vCExboPt40UsCz3xlavhDr/C2Jnha+IZoEAAP78qAACO/Ruxd/B9jo92sOrDCfHWMLgVi6JVqAVcyoe7gfIqfbpvUhYJdXb30SCRyNqNK0y89+Dgv2EP0OPZP4/Z+51WFMZlMHgt/Tw2+cvoPPWspuUoYVHdvCAO3S3Nz4rTtGsvh7fH7VAXCEw2pAYvniQqrmlX9cWrS0pekCBEob1a3P7UHu/vUT7M9L6Id4CYZs7G6dYZDHMkUu7zsew1lRkVPrlAUw17/x0tROraVKPzIqSYbem7vN6R0jbaaC5wLvqFvtmWUlDHQuqH+9/+fXFo8bQQQaFYzo7BrE3QWCtBot8KN+pPGggNRCpoWTW/oplXcVmxzhpDIL/QwQdfcRznW0iDJH+ZERvICCMekQBF/yU7OincJR1EjJcFyEwGO7bknbV0hHrnm3kGdXagW2edmwUaOdmIyDPsOH+oxeuorBs8fU5+sQ1e23ciwl5+NHeH1WCthAHMm3j4YATtdLbVwpFrbzBxshkX51KrfgdmbADMhWmfq3WjpzJJT5DHg3Hq9hnI/bCuVKe2FhRT4Bxvn1d9/Ipc5dia+SfsvnQ510ZvKQd8PkMuddTmMqUnkQIePKT5k2NO5oklZ3GMqXxDjCKhU1h3IJ9GUnA/814lSJu+rzwPX4DyYC0fo9KtceERjyc0DZT3HHbCAnhgOJN3iNVhzkA+vtB4ofR2LK7Et7LLq9erm+KE7qaJI+I0KiGgkaamf/piJNFxP8LAa9bCxboGIvL5dX3iCktYeksrm5Kv+L6kjmuWbujhAUo8B/+rE+/7f7+OhuH0wT1G588KfzNXIRz6xqfhdwggjTybMlEyYdVGOoqErGSH2LOJCl4gzUI6yQl1MKDCYrzQP+w9NiB0bSTYpf2D8Exf+cKk/Lpb0xqSdI84G7z7T89rQ7BPvlbqUAMpHLvc3a+ie6sa+8EJ3mCT7cR6ZPH8Ru4Od2+2JHL/ip2hROwDAHVa3SS8XSwvnGIa2w1c6OIS4zVhfCUFDPA9hYv3pYoiSm396rsnshfZzWRN7fNTfcIMpsk+P8x2/3CC9Nq9HVU6mgBMgm8SVQWigJ/CNcpx5XioludbY6/EGcdqNZzrR1iVCc7XeUppfYt6Zae1bokyvyAAZwwGh2THv+oqxHjqI/o1qCXcWF6dTovsss5BKjhOUy9y4jLAYYB7DSZ5v+JRuEFCTztlsCLLzgjNKFK50cAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MO47H6ZA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MOU2RL63.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.apollox/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MOU2RL63.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MRBGWX2E.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ozonewallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MRBGWX2E.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MTJY6UAP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.plutope/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MTJY6UAP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MUVOHF4W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/llc.besc/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MUVOHF4W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-MYNVEIRO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.klever/image.js\nvar image = \"data:image/webp;base64,UklGRkICAABXRUJQVlA4IDYCAACQEQCdASqAAIAAPm00lEgkIyIhKJWpMIANiWMAfcjpf8vybfWsPB53vK+wV5gNzM6mnnxfZe+wDMq4B9beL4TNDe/PACdR8AF6wrtaUC9gE0c1Nr0F0JOzxt0cXfvD3/Lq8jLFEGBme6m1R8aYE8zYD/weafUEoFwWhL3xDpQs30jz3tvnczg08EsbFcQCwYIPgRS2QAD+/KgAd1i1lyf8aSuekbHFqpfX3Dm50PQHTuAFuoCpTbpQDiK4EKq2Z2erP6u9m3eJYWfb4VrBnDkHW/8OL4DOCN2Pp2gSHGO2OSSKn0l1xy9zC/wq//VSV4nJJGbti/3tqHd9It0FGi0A/Ngs20JKzA7bWjwy+0JoCH4Ln8rUVw/jMWUjW/JAdN+FCMgxghRDmYF7CLzT0v9ZJXJnReM0KNSZCeZ+Q5NufJ9sK7vNFAJ+Al7Gh/X/YRwkAn2PRDVnwXHsW6+vSZQMdex3WWehWQs6RVHsZrq5ujYyM1JWNk13d6qGr9ZA3ZuJpxy4HoqKYzVwoU/ylS49ns7/1sexGwuOx1L/5Uyw5Uijx0eJyuWWccL/3+qVWeMp+3o+QXwAC7Ycrvm9wud21gEk2qZarpwCEQ96JlQSouML3FnwOI6NcQz/NlmTKU1HTMnRHWQUn7CNkZQmqt+gfO+Hvrf1gyV+XioqjRd/gD2dKnrze5OOYNCxsdcXyvoGbHcEsejM9weIEpP2+YhjPsCcXrZD8fqZUlDC1nHGszwpuAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-MYNVEIRO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-N53KCP2W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.lifedefi/image.js\nvar image = \"data:image/webp;base64,UklGRpgDAABXRUJQVlA4IIwDAADwEgCdASqAAIAAPm02l0gkIyUhpJjqMKANiWUGgYVDzToRPMB+xWTAL0lXZywNLQ02Oszvz0vssqKmL8FsCFNgyuTXF/UzuzDphNWIUuBnjQ/EZby2kFjqsI8Ak2M4Q50GT+4HTfL3rJTLwvD19I/mKM2jF/zRTX9JeFwx1dfH7BCXsNqQPIOuzgpZY1mBqThY4S1I9ZpS9YkTMSUZLXqAAP73y22/qVmzjJ4ayW+iVNRcAaAPnNnDJqkez7TSJIjbO6CF73tAmeVM8SE96ksc5KnN8sUFNjA+u78wBivipC8b216sXTYaWriVWI4O2vYI4uOcixHCWTsOSVvjU4jSoWeCSt7lPr0XV0JgLcMFp9f0my5/1kWcx3r/962k2ax0BQ0NqkBd5XfuHKs+P/RJiW/cFij9l/le1MWUGsHPNZB5pQixG5bKFPsG214ooK97ddb+YRAkc9b+SNxw1x0gaOCi6gvHZEYlVxDrbZkvZV/+CI/xYCfDhbY6oS9wu6xaVyYlM1fK3h/nLBu/Mb5JQeDDFyABhmGLcMxsrzD1YFikhwWogYgZpeTMH6ACZIT7SSZa09iD/u4tngXb/0Dvw5qd1ZWZhfeg3DHJUux5EfrAzB3ATw8mhZbiDkGC6atyMexOZ3lfFM5LrmCUbnZ+wLLB5Ksio4N95Ka1eYqPwHirn8U6biYEx7Z4Hu9Herpy1cppb1C2A2WxmJP7G5Ma6iwjDvmYUvMO50d3z9z5/3f8C8Bo5yBwKu6NqEcl5JM+36c37boARS3sCy2rXcWpY7WaGK/xbjpQ3p+t8qCNvqmzn/g6NQGRVndRP5kES77x1XHQbA97CHnov/v44kWMLZI5k7oIoqLw08dG95iikA2PBQed9/6Weue3mZTZD7P4sU7TnoE+YxJsPTlGmmgm3W3s+ICAs/S9bme/WdnasjKh+iXdXmsXy+MJzv+6ElawZAjoXwMGD60RJcqB8VPI111PK2VugRpUplh5fXP2mjKlgMcp6aFNV+ywzzuLO3GTCchEsiF/COIWnG72oTuhty/9yixJlYNMvjePxN2IMV6RpMKfJjl1NlTb3cK+sOkS+o6NLf5pxvY6UrZ2RdRirLNEfPX5jxqt3dLitwJDmD6ZEfmgqAl0cwWAcTkUF/ceohpWKGlFxoHQpwSKgB8JtIzgfOwJSAmLlFLGIu++RtiLPKFojnGZBgAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-N53KCP2W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NAO2HSQA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.core/image.js\nvar image = \"data:image/webp;base64,UklGRoIEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSLYAAAABcNvaVhw9iRooBQqABnBfHiE6sskduoI1dDY7MHv2otkiYgLwVNXdmgrLtHa1wuvShXbcZhp5O7ahkq9oPxW+i9dPhImFczTige0L697eqVh4RwVIX5h7iWqmNjkVCvewacg13UBuWHfkdudELpe////+//v/HThlcmndkdt1A7lh05BrVCAX4CZqcwXpqXkJqEgsKgCwPa3e4l6YSCoa8QDQfiE0eY0XZRXacZtp5O3QBidxD1ZQOCCmAwAAMBQAnQEqgACAAD5tNpdIpCMiISGaqfiADYlpChaj6O+vX+s9GN5Gfof13uJvqfIDvV2nP7RvBHLf7D3nupGqCGbeN/6S9gz9aet2LgkTfLp+ZWxvjPe6K7KW57y7YfXJtL+RVVR4AEqryCqx7hcheZXyl/YRTYV2/Csw4W1rMhkukQGfNw716PzVNhnfRc9np1YOfwy0LzVd7bpQkutSs2leOJMd1RN8uhAA/v+hDgD/NBGj0LkkOXquLI9tj7A8z3MSW37dY+bdehL//Qx4iZyxaG914pt2y6iJ/TLSnzvwy10971NjhfwO348cWeeNioRYqw8p4l2tbYW/ndjrHZILhZLKiolrmImYOqPWM2qaHJ3m8zXV6Zn6oyj6qrzsIMe/WAnsWf8CNfW1453XWwXXGTQw1plKBjftQyUIlvns2zt1GMs5qSIepuvOC7GugdmLnZn/h8woi3BpY8JweFDqBsRe0aP9MtPKggetOF6Aca6jBbhrpwboeDe98+WuDd/RAQcO5ze0JieXtxn+6Xp2u/AfwVR0NfoebkPWVrSDnTxVveYMr10tmHLVqhxlZzQwFHPo4CepESGZanvUq8lhi3GqyoCeyZa+OetDI90eFjwkijdZiZV738MCEWXcLp3m+6R6qzZIoGO+Or1Xh/xS1b97vjsjYz0iMJpe/N7qdAHsN//o+HBGLrUf2kxs18bozvhiVyIgj2mLeTMN3RdVrdleNPX94/ZgbhYUGzkF6lYhwiv3LWTBk+Ytxd41uHd8S5lTf1FIXtwNtlBqBALfM3DfVDb2rElumvVLu1Q2fXlewEaY1/cZ9gO6oKC/3pusj3YSZ/KcvA4QtkaFUVla9cb6uNmG7KYuudJ+P9yXFC0nyKVX1r4VxzxKFzPw4U8ZJkOVDOe4lOVzsA/ZnNX3zhIKtr779i8d5FLF5QiR/5XubEasAuuxyLtgXcMWMXLsZY081jSnlf82EB/x3+NhyYFEH6FCd/1lP/8zq4hizlN0INx8vU2cHZNoGOIq+7OWxtOGc6Y/Rywbqf+eFkLcG5JntAbQO7CMI4RzM9lhjNJmaBQai79zC0tZ/tyANXpKAullSuUt297HCEqRGz2X4sn24bMfALcrB2g43S+4iTPhHNMhq+oXhdkslwquh2uXISgY64DO7T+koK3cpFxobz/DSKufc72DZWMZd2mhCKm6uvBu+2w/krLPG/pkeRSPuG2OGqhktjXMNmwwC9aAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NAO2HSQA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NBHYUHD2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitso/image.js\nvar image = \"data:image/webp;base64,UklGRqgCAABXRUJQVlA4IJwCAACQEgCdASqAAIAAPm0yk0WkIyGYPJwAQAbEtIBqpFVTmT7vIgdtUZeqCGj+TD6kK7FvHcUp+HlzijjOoTcpM3M7kOraBUumqyn0/RPE0f84JOKfpMKAbNyc0SiRzPkQqXTbvJo9qnSvg0p8KF6vSu7nRNvleGXEoIeY4J74mxP7ZOuueH7uifdU/8psA8/u8bZIEIuP2sU4dW0PEoNAAP779gAFz02fbKN3vRJhqZFfE5D3yB6rtczvlECV/+Y062c+uxhC0O5N1vOJkKPs36D9mEVcO8/AHfiXS0ZoD/1ecT3ekK+upCjNfVx6TWcf5fZ/arOmhDon0WP69pSk2ZgIt/r600HPSJ0NScT25KiGGNd5hEMYj4RmfX+jc0lyn+bZz7EtjRMoASqehfy1A+DdAAM+qS2hE4iFbtS/qj4de1ut7YtQVlLqR/xYqKiYx0QH3tiGb4BZRoRxCKhZ/zacII9eYZIKNGM8cQv684fi1F/CeqqgKiG/183LtHLMBr2eKFfm6wjgi3ilzXDA6k/hLjs68SVrwct+0spurBPdAE8Lamd+wJxgu2v0u7mq7rRK3gnR8sf4vyM7RyIWg1/MYQc1noxyBMQuL1eW6I4/RV92WYW2uiuztHVcl2s9YwxtAq09Zwx0bi95LmjMXW9LtsYvGSy8N20zIudoMT4tuhv4ja32qVeP2IdPWI/1L4PycmTuU3iVT+hr3t5ONd4YZTjK6MxGOo7muygH4+k8VITjbf1YuTSdHNP0xeJRMQlOCXnp4TsSCnqbvAk0BqfoHmfczAaf5VvkG5LhAZlV/Y+uTKEXfKmGhK4KtSgAopXU0ICnDdgwUKIhVrIjzJrs+JjgE36/cYNDbGeTCsqjxFDE1EC2RMgAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NBHYUHD2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NBPCTXNN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.status/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NBPCTXNN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NDYGNMMC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/tech.levain/image.js\nvar image = \"data:image/webp;base64,UklGRngFAABXRUJQVlA4IGwFAADQGgCdASqAAIAAPm0yl0ckIyIhK5LJwIANiUDPepxJ3CpTK3N+4n+Rv+Bv+/MB+xvrY+hL/Vb6fvKl+m9oX9lsh325icdQ/kz3ZTK/EvpL5nnke+pPYLMNfI30/AjRKZ16fx80YspagsUeu9NfWOl+ruLHdk5Qn2epkYLHm0KRGYVc8sG2+fmrGEFTCm73hqGQ5UPNxXnDMGlwjKqFd63r/2jYvl+28XNXQ8+VFLUWaKKTPT7BCViZgzrId/LZgUaTl+tPIU2MNZrlADxU/gRq06YkTq9UKXrNaxasQz5YAP75OXL//XAf/zgP/5aHix5ScfYCMQvjkEVUUWe5EDZOhZ2mSF2FlIHYF7jE/ONcGMAZiZM92OuJxr7rRN0LQJky1vOJLq//zDc0bmUX8EgQXsMVeqxO3pyuSIAcf8/s7JU2xY24dLPFRvNg3J/EinxGPKjxkNGR0MKcbaX4b4M00Hg+3So8qNDIylok9pWDDxrIr5ICBns8KCUGWwRJThhXSjD15rUoy3EDs8od/zE4KE7WHIFqkvv+/Qj0Tr1ew4GzsW5f2+VXMOD4LLB8Ds14S9ZJ1KsPnxsxh9k7c/O7atg8UWUm9uAPxI+XxYuIosFUPV+/06LbWurWVKBBgx/WRXlt8L8qtb9ZcqqwMFnOYCxek7l9LB8DoJ9IefI2zDRtj2W+yD/3p6+rqqObDbPbyYjIqQsQlfKB+4hEn2IlsbabFxrT/F9SwEtQwTiR0PFvCvTjdHlL4Q5OF+CUBiMJZ7LoBUW4A+qkbd6Vlduw9pHPmI37iLskbOq/gu7OF1rw0Dv0FXSOi+u7wVG9hO0bc2rY9B798E3VMwWCXHiNX5jbrLimY5m5Jq+DUPwTi8/svNeBBOdP/J+RzZ9YJ489TAKRkG5kzUHT0+ioiopZFMSmb2Hyo3qP4Rnig6j1GE+cF1bpiuGyoZqBBZVpzw7iRQTG64Yo4eerQc8t1iE3FFGmSjYD/vdnHo6lV0IU1zPzW18t8ttBCzIkRO0/5a2urnAcuOnXKGbmB19Z6UJrXPV+vYlWj3dBF2gaiDstjBcOhRbWIGF33xh26CnF4OGdopXcYIgqQp1G40m5C/chOtiSrjCAAucoRYTcO5JoP4uw32bDNjitTD86YBWvzpxzsDwCPpa1sT1t2qKf7smGiG5L9l4RZ7I1OCVKDTlKYtsCJbYhcvXBsivijCoa3a3DQyrhT/D3tVbYceFmQ9WesrZl3DeMxi2+RJN6bYTw/il/HwLh2V9cxGUWd5zcKCvfMv8PynUwVuhXUnw+zIF60zBzP1SRWcnU26bhOJsG8/5KH722gMYvKkYLlnFF1tljtShARPglx2SbVFaff4/1yAM3L0tHVGKTiAQp2lSiZXMRAxyTaa3k/xVGr/GnEjVwrXDeW0aVXkyWJ3rTSrlQscJXlIvCv69Cgl5Rw7FMDRRbpueoVZQWEeFYFvAM4hLDuELBF/YurXKRNV7Dx32ohYNG5AZeg/TEeaqodpEhy+B3PI0997ZNL9xDiBDbmKLMnlHKV0NcqM1iut6WMRxKi3dL9CgbPVJZmUrNKHmuZ8CI5cHShl4PDF1eJ24bE7alO6pF/aKQyb9giI1a+2+dmM5GtlIg2SkKQG1uGP6l6UbTYnZrS3edOyo3r/0miPjjg6jgictpjJUJNCrlnj/M9kdAnVdu9phBvTc7e48hC0Avdt2ASY+XNM2uicDDlKjIL3kBZQSaGBnaniz75+X4WjY3wupjlLeW8kZczJLQjLyba3VHXeZUX4loIkPYnDoruISrTx0owduQlv/V/WO5ObcoS2zs2VuT30IvPFHxiTQkrvmvd00LWNKAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NDYGNMMC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NEI5WDWA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.mathwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NEI5WDWA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NFV4FTVS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.hashpack.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRk4FAABXRUJQVlA4IEIFAACQGgCdASqAAIAAPm0ylUekIqIhJZLrwIANiWcA02iqBxR+K5XxQd64/3HsU7O5VllTz2ZjSvAaT5VPq4qmwuhFDVe/5YysM/wSuxj8eJyvdQ1oYgMcqUEY+XvW1jS1lT6GucJlN9C3a4JZLWJU8fFOtkGYhESk5zRhhob4MiAqou8N3KiA7o7njd4OI7dSH0UPD/1LXjBcUcT/CqrXe+OfPwbQgCTA1vVXiOsmmEvt8ZTA1S4OLmpETIfLiLWPOPbSNDQ3+GLMT+w80PERhC5cvwRQQvGHK6GVZd57MAD++oneqv27/+1hOLgBUlSpYo511gDreIMWQ30eZ/+IhZQF5cY+7iHk/t/ELprqpniwDq0LEiZmsuYaUfaogK0NH8Qmh3vPg9ZtAeiU+SnnSitNYMmyLotviYHzfvTBvdvWF5rfc3uITwRE4Dospe6HtlqL3BX4jKbJqa1hUhfg1z+dZ2b/Z/rdqqYKDu5vdecnsiExoQ6fG+UlU8ZW5dilVKtTpEAu3FvrmJ6ar0DSfigtwipG7D5M1u6S+7aujk9ltVYv4S8HQza0oK2VcVTwVmBx/ABGv+F8fr8FZtiN0EzysfQM5G8dhdjBy4BnjKmQQEHoJfwQqd3rRGw5eCelnoK+zhIE4jL6guT9BkPKK6GVOA/Go24i0/OOoZRVZd0Oxx35b6cm2cmfu6oa3X1ygP/UKLTEw1hti/imvivwFezBaJWdUG9rZlP2nAPQXHofugSTlXHkmf5p2SIbP7wXnD3ZRhUf7GshHg/SKDmqksdAQvo8y+9ixxUPJ59jYomkuSTkP+oquXvPt9JzlxvRLIDU8UVUmTf+FotFzp6uXb5//+lHlYBbvGt2A2xiPIZ08HdSaI9+fT2CXScPrlOWmGjpiMree0WSQvqapZ1dRx7XjCHZaA10aOnGlIqUZrCZtxfq10It/8NI//PufQfb8tgprZv8v2nUVMq/v33T5YG7FvWehNuDTnI9DvrJGU/qlXwskX+r1S7JJlwszdBICgCVJ0DPt5XhLMUnjVMdPCEir+nUsgYicftxuZfp21bukoNMBZAyjiQgbyOnGQ+R/xVj/xRMGEsm2OsrB6Si6UIQdp5kWQe7coSwohBmz/9YnX/cdFm4+ypzmFpXxTChLSwaqWPQc2j+0Uz4iIxtZFuwPfk1pGMPbvO580ZIpGWedK8EIeqcYW+xZxupohdHfh+rwUSuw/E3Ecez/nWY+8PfU+5+OylwEMugtDnlWCdsu98ZO9VdxZCvtQ6vwk2Phw5xhnxdzqwZ8+/OqdQvHG9bXR7VApRFUfDxxv8BBQohWLGaPxy2zwWuj9uCnZIXkdfEkrlAdKzqRLd3KEfC4Rks3LHsMlspeHwCm2Pt8DKuwLvkuckv0jofzwc1t2uM7H1fl47I3aiOTuadt09R6banjOXMNlYvzzvBTGSbKLSsivLi97O1aioanv99ayWVPS/ejP8wX/Yuj8FFmH2Ud/2gMbetJGcR/PW/m62MeG6k3jxkf+q7Up4lzLCHClOKqtPBxTenFmQ8D/KGjoLVoy4sZJgmLZ3Lwfzei/SXHhdGl+6OCPEDs63wOveqN7+s/8/FIMDhQq+b2OyTH5tCXUIka8+3bHQYM+iv6/IuCStdTOTdhi9PMISOE8fk7w1cH3CF7x2FopcTBTox+hsJHm7tHYBYjfx4KWMB4p8I2bjdVJqGv6dWyim+z0dnyzcMqbUYr35pZtslGp+3LimZTQtQUewZM4p9E7oeB8pPVPtI+rrBsNBajtTmAZct+m9BIQAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NFV4FTVS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NG66JYBW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.getclave/image.js\nvar image = \"data:image/webp;base64,UklGRsQDAABXRUJQVlA4ILgDAADQFwCdASqAAIAAPm00lUckIyIhLBgIaIANiWIA1QGruq/w35AflH08nEvgzkO7u9HXoI8wD9D/8f+gHYA8wH7Heur6Ov996gH+F6jz0APLc9kX9sP3A9oxo0zi7wBNf/qt3luJJLUpEvUQd8ZaKpdLPXWF2oys1G9/+yXUic+fJwh//D+E3WjzmxgSoYSW7c9esyRZVfbjUxYeDR9hKzH1qD4vIpfGCbPjdrEPI+lez06Dg/N7V1O12SQcxC800N5NzhofUqZYAP75HdnlOsnZAaYgAAD3bAkkotiTZyKdGt5+snFjbkaWbKibvTgtQI08I+DwLvwJ7dwK9ez7NyPi9lq9pRvgPwQlPukS5PLT7GZXwr9yN1A9d/l2MUbazdrbswboQFZox//qLiMpsVOw7Am49gPIGi/+ldSw7jCNPiO1EuLKW9B1c/lwtFeumVMC+OsW+GdO8vy8G7z/PkN0oi7KMeSUursMR6FGgAMjCjCWyaNqfHx6HDqKD9DzP2hTC+CCDUfd4Vbe6WAiW8TkU4uTJRL3qafEZURUy9pN53l7VEnDETBDtLkhxqefcKPT7hyUEJEUWUq1EGMis6BKl2MNjPFnSAmWa3uZwqf+qZ0RoudX2+qP4/4toDvVtfmg1LFdvNBbLoc+TRP7ggH8INqKMarbeZ3KHIEUrbyKSUsMeJ05Ujo52TNgLHn/+mh1xjIMtCGS+ahaGcqZthZPF7XO6PXzC/TQqqdlkuy9XVA70Zvr80T+qQ5uopv8MyursGCo5yX+TQiSToY5rXqv/h9F72enCrc/3ghMWyakaOVhAYmiOQaKqTz01buJ1v+WXnjDcXevb/168vpPj46zmcA08mX2Wcc2CnlAH01A2Sv7CFrjTefwReyG/2LxoAFuu1e8GsbJOlnyQ7vwu3koqGeKS6m4R0Z8mGdB24dI5VkU6eEjQAG+YAGE/XwCrKXKd3TgJcKg4nyUsXUzjZDx1ncUBCITiY10ntS0HbEI/ICUuE36uStVJ47+rP3dmFzaUd1VZFqGf1Q2vWdLQYZb6Ki+Uq46BhGIS97YrTeU9jpsMyDBt4Gwm/Mnac5G0L6sQzHXA/9Od0ueBj8UnYZZfABjVvFKwpdh85TkaTKotmhSuJtHq3KSJ/GJvqC21C90Mw37fgmCFsgGBU+oZ3adCOurgurEkeV7bPzUwk8tJiDmka4ORwtkV90u5IUOqcNSLBlZOEPBCayFhFBW023mYwenCEwNRH0/KdEaWWMnH/Ck+UAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NG66JYBW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NG6MRBT7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/group.com.flowfoundation.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRr4DAABXRUJQVlA4ILIDAACwFQCdASqAAIAAPm0ylEakIyIhLhUoqIANiUBu2dVLPYuu4fkZxMhFX/d+fb1PeKl0pPMB+0frEdIB/UOpa9CDy0/ZL/bvKMroajR5u2LWqvgHbWbwfpeFnGiYy8US5qqMTCGOjgxoIYu+Zk6A2VOQrJlQIkXVw4u0xM3uzDTFXbiWRAUouAehHRpuC7Hw8ZIhVPlCyvZOik5w651EF8Hz5RpwSwZ3CMrE+dWXhqlBKksv42Z3AAD+7PK9YBMIH/7vN9vN9vN+0/becu8Up9oeIoN9tgYOsbkAvLu02R9kd1BneqUud2YX0jie1mG0Wd1VFxU1pxX57EhSTRfCuLBfbG9Oll0bdSlXn0E2W/9TcFhIH7VH47BEIzfpoOwOr9xcF3xJx8l7UhFIFHg+aR22MVK6/7+AR3BvAta5Mdj2A5yn6DO9/kvmuUIC3tBcNoV52GXKyYLzcPwqr9AYP4CcpVgWj+5A/DUNUGyP8/3i9nZePfBYL2uLJ9FWTqwI8LAVSYIQCrhitagMA7vZGOQ7ngrnz5/Vmr5l5e8JNKCKHhQmELIi/GOIcAnLtD98QDHvOdCgwMl7oqD7kYtRARMYxcw5O3T+EfrneMmc9blGw+AoXApfyypWwHVGaZO+ArJjlb/3h8TLyWrsTvgQ80d39v3/+ZUvBKqmX8ndwBLd0eEX7KRyBuTHlvfuDkMOKeBzp3Kd1k/6l36oUqVzA9VdojkZ+4PwWHyKG790+bqvC9hXvyv9H3DfhOIbgBjbE94dNOfYDO/L/fe+Ao+KEHB/TiQxujokdgtFOfD7je2LcoHDL6BlyG4Doc1KY7IqRUBRQlkjekQ/QRP3//n49sWzKyHbJFGlwhXTQAFcidDJZCRFYgvnLceTVrymOp6jWHssmRe8cDbgZDAAFOoqgmYFA1lE362nJKHlXQYJ8ubSdKmpDWANw79WSM2SHja41GHwAAAFxZ8IhPXLyCzaCR2So/U5EK3X7vQ7stsfFHWrfy3N7Q3//hxc0v2m40xmvYaid4+fP7CqmOxr41Wm2dBFh0BF9VM3nj+rVvmUUMTJbYacLvAUvGqgoWPI3oHS+M2TUi7/k6AJldBfs0O64fidzYKW0wpB7h1bTWclczBy+qnx/oSNBDothuXNWSo/xJtPVYRkqAkkxL8a3V95A3hz53KQcCTqNrBiQC12istir0rw5YTILrGbCCj0ueGsX7k180oUk7+Wdx659a07KneEKvQ7V3UUKJFE8fplhxA0iAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NG6MRBT7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NJXZFZEG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.uniswap/image.js\nvar image = \"data:image/webp;base64,UklGRnIHAABXRUJQVlA4IGYHAACwIQCdASqAAIAAPm0ylEckIyIhKhQK6IANiWgG+IcMJ6xf895ttbfxfHcmh7ZMg/qL/OnsAfqT0nfMB+0v7h+8B6Jv8Z6gH9i/3fWVft37AHlw+yp/Zv+f6RjRyXL3UeaysLb/IIfMLKrRFgtDVoUSaTmOoyCnryh0ZkguWlnZ7SGyMDAbwSSNLjizyXUMcfOK+r5HJtKwqEJszCf5J3q3BCAg1ZnxPmlE/t45MYXkjFgm1iGuvEju32VaPTah1s0utFoe213GGGyolMJfe4/nmgbWDlY0Q+7/i18ohkGTEl/SxRoX89GvWJsH7SGvZ4Vf+2X1VdqMLkBEtHqjhrBT5BNtfDRbZ74YHs5AmHEjIyXKo8wwAAD+/KgN0ays1EjBvYK3L4OIEitvRioJbM2AEXc0o1RVKsDtpGmkzhQpeSuOLFX9IFH2k0z5cqq64nPYQfQdI+PCrSbXwKvQVxMU1OHurma29xn1vksGfnU+RbIei8/+jDc31H6CfGsytoidzsVeA6AJy9va6BwPpySskl8ijlL2/ZM3B5OKwplfjUIQchlOZDTkm/l/pFNL2GzCHkAprmRn83gJLDimuSJ+NL4zc9JftN2LshT6dgzmh87Fqe6YPYO8gA6YWo2M4G9Ry4w87sZ26IC3bN7f05+g9mUzoKVC1NLdyovVim3i3JeDIBEdfEHtdJy/leiUlNKaBRULHPp1v5bfV36Ger8Ui4JuuyrNHlKorMxUsyFn65MSgZYXV+sgLQGFYyIADAtqdZWHVDlDCmqMmNme7e0yg30QYRaCOAOyqPn1w0WAaAWUhW+F3RZhi3AYDi0uAjRdhzLKRlbpfu0Y8I38BmTH28NPKY74i+XGg7bxDZwOHu6CCWJ79FhrvFH/fe5hDjAgsOruU2WPwAolyiq9LEGGvuRFy/JXAUwS3VxaO5v82cJ3+zq2JCspXCSlOAmrC0ExK+cXZks//2xV68Y05SiE8GIItS7FJSnvjXKAtXPFhvvUUa8FY032flll5S7JWLPwNAsgvdZCF17WIH9IOcukGY79SaoF7v3H/amLsjJnh08R+PT5MGhUOBiCxPUxBgP8O2GYb3Za7BavSAcnQbn52lzPWsBaNg4N+xgPl+aUPH2jzadoJasKfhy46gzKyyhCuvRV7yP/E11ad8XzFhprtBhpPB5vBEuRJYmfiykB6rT03uyjbxJVQs/uVGr56hqkW6qPwuj2CfH/SEJ/vVcB9lv7W4VtG984uHPE+p69xyrXR+ZCSFIP1A9HekfnbgMdZnmn34iAIQ9ce+MCkUEAhX+Q2MwKZX7H+vo9+cCFRXi7de4mmj0tRTpNgTVosY2fT/ZMtEISAS31ERCE6oeMgSB4zlV7GJf/MOGEXNYIpZ2v57m8MkeW1q+Ws84hp4/9KsIqo3FocItV5DScfXlKKYe6mks3IxnOfqDkw50n+W7J3DTGF+OHIRBSG9h82SmcV5IZPbT4ROIL6i5CNhDILwY1cRqnoabyb0gtjnkAKQWxnLcKGcExfH8XnIwz0CfG7xyQRn/6QqTGPx2VKclCE3LWFrRj2dDyTIrKdESRt7mhZBGh3qC2Ck73ecMN9KNojqgXfqhPencT1hm2AFVdj9IFfMJc2MMIZXko50iUMXsqp/ekdQNnKidd8mYTmSQYAUD3iDOkSM4lMj41viBzcnsLhtrB+o/M6hg+71eOM5wZXgvY+YFr5DRRAWRU4fJ/QGGkO255cWrq1rcCM6sgubJKw5H5aRNxKGDS4FPuyzwvDe21htsZfIGD9KJlQz2EZMmjVOXyx1TMxQuACEK002SirQwxtiwV0rOC4YiTGFe3Kmp4Ao0qMS4/0Ecm/dTgp0fYja3QF3hgJW/So4zlQzqOdKQ9KIyxVqRr3yhUq3b3Tf6L557bzWqmKob/xGglo+4o4sD8h1V32HkcRPMCwr8EjZTx0hlTtzBAWY9YZVTFctNUJeIaJrw3DxzVdW5NdjWpBoDuwIhP7nOquZF9SiZd5AANR4cQOwADUcRoBqRBKevi/TDFxtgkKQi8Q8R1k9XL60qvMsjv0KIfafC5ss5mry/sJr8O1UbDKsYFSq/9i3Nhlo12NDnuoDLtmS6FcVr1jIt6EJ+4pV0lmYTMbHiKs8oC+bKOuNUGbuZUOKzEOcVGsXvviESkNccvYBhwhzPlmQu0diMJDbGyNIl9n63Sxg+GsjEvU94TOWJ7oold2YEFVYvYWqz2y86jxlHXFJFnxqD1jBihSnvklONyEQt2swrvslGsrB1tITazmFiSm4EB2Q2THwsnGVeKILgxCacSZCdcqP+53RSVzd4yGe9/WtJHthgfly0zC7hiRgp+aVZLtBahbCLcyV+wNW/1+NkZqmNEzpa3hIjOIKODkBsKgfpt8GNU7jMBzbBt5+xuCg4O8IqtiwOUe042EQJDIZr+Joh25LczoZEd0PuE9UdgUUhEG735XtizDak1DJiW9OOdiRr6/067aP+HbEPiKbiiSvspg3Mu3r55oEcQ+EwZmaAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NJXZFZEG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-NOPIDNPE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.paliwallet/image.js\nvar image = \"data:image/webp;base64,UklGRoYFAABXRUJQVlA4IHoFAABQIACdASqAAIAAPm0ylUakIyIhLBgKAIANiWQA1bYBfquuDef81SvP3X8N8cigfuLnO/pH2AP0U/wH6Z/rl3fvMv+03rJeeP6gH+q6jjeS/2x9Eb//xlIzHeQ/s3CtEW5X/9JvEQr07AJz2buYOJNblhV3VE8k0s5HamaE3192bwcTMrr0U7wn7XakYlXzs1/j08A497onG3/Ygqp+71mLjl4Quwj+PLvL/MgcYbNNno/VMDkhvwGZYmGgwnT/KhVqvjArgYqJava9d9vjEJoddXxxe1odGKiY8Jy0EcbbhQ/ADv3yPLcZgjmXz+piV/V/2iLFUFfZDpwKUC/i4+HiDNO3ADz5AaYyXgAA/vquCSaxxK8wUKhpcAADBbRlBOQgu3d8B2MHAC+2qhlGG+jxqb4R8TIYfhpOBVuETpnrGS7gQgeZfMBpXtEmj2ZNeH1H2bF06wNW24Q9jRQG67t99p4D/QOtb5z1GtJ0pze2jiRLUc1Gq5Wexdg7w66rtH6U/I26WBYriDjzO5lNmZfhGWPtXOHAVQzCss3QrXrbXmGzbPgCXwy6szfXiEQ5ZKU/H6QQigT+Qlr0hnjWkIvtb6EupP7XwSj2+n6uPBF+wMaHeJrLr/7PW0oXIith+iWPtU659VSxqwb1Gd2JTwJQ0JgYhXktoFUeX3XwP1PwMzkoRFzzolAKgsyG1QUhZz627UTdq5KZxhjzRcQ2AsSOnyC/qpLgDTFmNGV8/jyb2IZ1Rn5YXGVcpje0898pNODo+Wrc1qAxtbTt4/uUHqwu0e3S3xnnXn5O//z2HSmupswuDAJmZhna52MRMmSFOrVVncynKbit7NSpiC7hyO8WAW3pHxn/+BoP73wCNvJJBkRIEM4pyXuSSchaWyTir6WoN7JpVKoJdlxj8Du3NWjg6f41Fd09ZMP92sD6JHBRLHEez9nU0hUqyFIRr3CYVLSvMMnvmDOQDyAN45ks83PKqsw08iaLpLGa3HBfHRaYOQQWnW9h1trti7jiVUdVluglhfM2IYhHBT1Rv8E7V8cj40IOCdxbCrTWgnDK7MFhm7wQF5iHbHUHuagqAJB4vLCK88S9kku4eZaeSJReSzscTAWkEDEIwXSnpaSSDGsnx04/79qAlSykl92wZvhlxtbSkL4lHtBA3v6/f89D9zIL6RAZe/GpM5fP10u/7emG/OXhfBNkZ5sqSYK/zbQPFdkfPmVEJ/HPt5tS965LZGdtW84UB4wZf6XwsWn7i98vyAjaXmBY/40ziaWTuUp+BDsdokh5huJexL1Dq5gUsQqf/nLrlA6FPIZ1zhpZ5V6tzyBsj/gOP6+Nphe9N8fQJTutJ+8lFdxFXRPbJNbUrd4U03nX0MtKvltnQszUymENVhGvMXqbhUxXLjilF9Tho982Ff3xTtfcZhtQ2g/ZvctwSdSBbZNUUjnMK38cOmliGrA+Gl1OUh/65qjpdq5c6zVPj1PijEein1h6V4WG2oZ8+RutC58y14XzXifBzhGzRTcTGac0zm880bUAB2z0wjqPL24zRS4pfPoD2Lcgp4psL/we6h8my3tikBjAe4E+1uOme6RICQKp8K+h0V2Hbjdvy32r9q9l8k5EjpUj0ZmVd+epNMe+gDt+qiJ2r+lWkqLjRLryD/TWVWu5d0JD6WeCWf4czUfaXl9Ui8x4lvhXkenLPzUr52NAJAGcmZmalUQLjJ0VshvA4oN02ZoWEoioJYjy3Ug93ogpoXAG32Tckn/KH64OL/Zqv+S+11GMjPpCswjiK5WeEnTUa/AQ7zjqHlY09jOmrO9zep7BWKWSkUzL4sUUn0gr4GHA3Vv/Dag8O9I0fIcarFYndLGcQ9zMFybACBbAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-NOPIDNPE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-O3FWYAMJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.bharatbox/image.js\nvar image = \"data:image/webp;base64,UklGRtwDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSEAAAAABP6AgbQPGv+l2x0REpEehILZtiAa+CL5AIojw+wew72tE/ycAWe756e8DzE7+fpjsKDsLudHwsfuXchGQLncgVlA4IHYDAABwGQCdASqAAIAAPm00lUckIyIhKpSaOIANiWIA0FIy/zuuZeD/Hr8dOrO4c71/kBmfHI3+m+5331/272S+YB+nHm5fpn7gPMB+y/6k+9V6GPQA/rX9j61X0EPLI/ar4Wf3P/aP2h9VihtlzTo55/rSW7Pwt3douTAfnBD6rvY9VHNyiRxSk/oJA0UUTWfy15b2v5MWzT9HKXbM1w1EPYliE0RLJHH8yrAiGzNy4r063xEiAvzoP4Q8x0zOJId+SiI2VeexEJjAqybozInhV9Mo7h0DTAD+78QbJoxzpiRj+q8+rLo8Vcua6OD6AiphPoNN3gSoUV6xJ+ScTHBmCN/0kDfLnsvzz8qjedd2qu0SGN+1/TOCym3iNYhQ4B2d2BYlUBknTH0r4M6fGXrNDawJgcGqDFVHJPRDcfvZhbtjoT+VW9hPypqsD+lGOQr47306JL8m0By5TklOX+tKyerSLJTOBnaG91WOeN3mulb95JRFNp/WRS0/DBgJ3HyX/iKpX+IS2h/lZOPg+bGwuRbrqY46DujSWHBN5KFqfEgR2XrZFaRh23rNB0NXNDj9KOZshtxVrn2RmhMASGkyniYOIN0c0HR/K1HQp8oGGFgFuK7WyZZ8QhVzattO/DR/yjAn6JGSCiaEaCxFiF45S5Npyp4DFMuMxLCGBBD9G1o4ePNPz0+kMqdXUJ1t1fbk0wSG+HwAk1Ru0p+eTwzXw/rpnCkNcyZSYPnyii5u9AdG360wlWMzIa+FkJNga+E0mfVjrVV4b5tZVuv06anuh47ZPBkk356nzLe7UJbNK6MfAnqRiG8D15oa2IZvuvxbdxANd/fOnMkCxxH8SlkimhqJX5YWwKpDHeKEGSCColT36cfK0+Rn8LIiYRrzsK9MLS/OeE7wr0JjdkSjrElsux/ShJGGfjgVd2/KG/jqWieRcOY8xBhPTKCGy98ca9+e5GH5pVRcVb3I/rcdAmWD/e+PZ6hxxzL9dZl4VsPrCPVjVdWBfPwYi5nMXlhc17dlUx42Py0NvM+7JAYPNxn1i8OS+2+yGBxMEtm7qKwnOlbgAVgHf0HFAR5zoUY7sGl8VZO72I61wow2n+/1KAVGulfUKKImW6WxtgbmRd5JVLRNPq1oAJDUnI1tYMRvVMpGB3m0WXP9ADIQvl5ziWCZWu3zjnxtXgAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-O3FWYAMJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-O63UCCVG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.slavi/image.js\nvar image = \"data:image/webp;base64,UklGRq4EAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSH0AAAABYBtJUpz841ASBIFeE1ffUWeuddTVEQC1rhQREzClI486l4oWPRpqmfOoR0qznKNeCvPo4Qa9zlFlPqRzl3ySO3//fQCb6RUlpxXkACNnzcl5BLno9CPIRXNyDiNnFeRQlJzOJ7kz//77/nYIOUmznKNeCvPo4Qa9zlFlBgBWUDggCgQAAPAVAJ0BKoAAgAA+bTaXR6QjIiEoEwmogA2JQ+gBPDPmRS0l/W8y/vR+gM9t1/MB53umT07l6hJJpmvk9YWx0qrhOZbjeMfjb5up8VcKX8AUNtVqMuakXA+wOrOXoIJTAPs+w3/bHcjQPBFYnv6R4B9iSC8zqdRKZxqAjViWlMKEM3juERHMU257XBPA517kZ9S2acEuD3rUfwdseAvo41FNSBVQNucOn+eoEVz4KlSiWxJXKHBYv2AA/vytEAQPZ/ajwtmmOrBW5wvY1SByCGIfMDnuxvAhbEMJtt9RVRyhzD+PR32NnPO4Z9A/oMN0z6wOcqgdArJt59nXSdlwD1IaysYT5v+m5WItJtJkRU/Dpe8aDIX07eWoclwbcrYaBH9zq3is4vTfmt+tEvaG1jEJW01iX2K3k9KNkB5/xyhrG1xb/qBJp5IqNWz/sXLtWwO3zi3ySWM/NZn0KUQx1MClkT1zpccFlFqXuiwo+YMt9l4OW8art+K5x53v+wGmkgH31f9nixrXRqr8oG1lcAeKW4xcYaztcLUw1ggkSJmxAt7jnTqnnglLd4k0q6I7nfZtij/D6jZ+/FueY+X4eGnzY5I/hAqTITwQnLAv/+M5BSwETpjLsTEJ/dX++rHXm2pnn9SAnoTX5T+8l0f/UFnLqBC+UT1wrzM4YzQDu38SU/0ZhNZU3rFbQcfh/Q+GXNTG78W/oHq6WD0w7XniSflzRGAPZZaQgGZWtarrdlhkgbCx3R14B7trdN41ALfNiOfecgmtHDzFWuJ8R6FD+7L03LuFx3c2rv3XSl5l+3mm1zF2Cr5hTAHPEDCEmZvwMkJKkOchMIYOpZQBOdhDCoWxQH9DEalWkmux/NXNngYGkZqJtD+pgWlbmqHhX+acql6aLNgUtnPjjNW3PkZGnWB9wSeXYH9EFPAch0a88xGOHLFoDltWRfoFCzYDgS/Swe0fZyWUziC9gW6+RqVL4E71Go+RNAtKqMxK3BSWT5S2yGejMQWz4P0yhktt0ThzXf8Hsr73tUlXeLfFG7q56u26AhYAjr/IYsk0euCpG/25+Gq69gPeQ/b5tRd5+hFuLXF9gYXH8aE4XCMyaktrlliKeuvYMZFA0FfH/zKyV2GZuxnCWI24l7ZjkZTMyrVNnTgTDKweo3CDly9EdlZCMV/o5Q9vVSr65x4UsSuC6hhcBUTmD0IU9GDUr88sFv2V7wVhh1HN7khEzC3wLgYVwV78sbXR3X1uPlJFWkvGEymukPS+hbqHr9pYNvuYpsgHeK2fA5gSHmTU2pZy6ne0M7VRGt7e5tTLHBdV3GuwxqwWjYg+MSmoV2h1Bxqk1Srx/gWSwL+/O14aMnV0EVb633vmKuyDCAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-O63UCCVG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OAPLK3NK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.filwallet/image.js\nvar image = \"data:image/webp;base64,UklGRkQEAABXRUJQVlA4IDgEAACwGQCdASqAAIAAPm02lUgkIyIhJxW5IIANiUAa3Dq/4D8QNe07T+RX4q9PjvTCkedcWflH0Afx32deYB+pHSA8wH7CfsR7zPoK/ynqAfsx1ifoAeWL7J/7iekvd4v6Ke3ckZ2E5uWJd9SkTIiIiIh1D+2Ccu565d2iVd3dbbTwC6HEb5oxwPsa+QoTQh9Blubtn0E07ZTCW5b2vrfii/hohf6KAaIxGfLKOFjmezrHo7w/4NPm/UanDkDU8T1/DiYFoPuJ7u9NKnhLJKpJPhw/mZmZmXYAAP62VgHUntq+BzR9747A7ZgAAVFsrHO2OLp/SSoAJU3vG0xoUXowGKFGtFAfLO6slaugBrA+yROklcNl9W5nZ3Bz/dEAQ+6C6tkYAB34Q6g8AOsMSiKYK0On8D/dBtk7BRCjVORshrYX/EPXKn4Elwi70lqtGQ1PLRxw07QwB9gYPAIUciAOudMeSGGRT+ZrZv6LtiQgmTJlW9/ojdcIT/5NVoPMXaXxBvyg72AM7CpYEBy/wqHUzOx1nIA3W1w6VCitxCH0g7VGXL9mHzF5FqkVFi5m4G0rb9qalI+TODgD9VFkuLUiwKEpRjLm8H3J2qwtHa9P26JefTnBZCHHZls/tmh1b2Pii7s2N8KxdSc7dohPAfpbOuCxn25IU+IeZ8O3eh56MoNKIi8FeTKHz6DmcOH47vWP/uUqVzFGDRPWCWsW/0qcAv8X1XYOv0n77tHAKLe9PvL4Ee0nN5MlDFw41CCjBf52M8N/DDoCz6/iauXSkDAq7yZ/pjGpus/+XmwXIyk82SbP5QTEe/sF/A55gKwvQ/3OHPtQu5HCC4fiM+blTcGjXVCNFjsimMhCppeEK2tNy3Dwe+1OSqzv25EyI1Ot3iuzQEXI01ky63ZhbzDB09BeJFjbkU5uWJDzF5kpvdQIC0mk7zM7fEka0RnoLy9Bj52bOTY/PxipB1DpBwBcAeCkNt1w8wl9hOL6oxSYewgzX5sownd/iU7mRKyqiMeTfybSLgycL0E59SW4OX7gAfEGiHmdHbmYsr2943m63B1uc+GCTz650v1mj5QIWGOHxUMlLWmIJTfJJkUUb0swBJRUS7eF/yrtmptgqmjn8iOkZJz+Be+AbJbmBN+peHJylq9bhL9y6U9hReNLOrnup5SYpoGvURIDCs1f4F68KKmsuChFglNmintMSMP7Y7EvREq9P946qM7116BqP/79Q+8oBjXNnXNSZuXT/9sXT8HytAZrgq+ESgmtEZZiWGMh6kfIvD2gehGQf+k7CkV//Ql0pfwvzkTrFmZDsz0oRzKqZ6FnDA0E3EiSoCKdV47ifUuxrTiVbgIuzZe9NOYxghzXQBLZmWMhzTyHFuPk1a4J9SaDNaaxFiNuVYqd6xErv+WuX/j4WRsCpve1pja8eCn7IAqgvNNbyAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OAPLK3NK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OCLQH6ET.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.plena/image.js\nvar image = \"data:image/webp;base64,UklGRgoDAABXRUJQVlA4IP4CAABwEgCdASqAAIAAPm00lkckIyKhKhmYiIANiWUA11SrjDfM4BZ27cI3clHDq66s7QAhmnlL+oCKzavNFApxW+pzP9j32zZZb8U0owarrsH74jg2aNy+Xzzu7RIOf1cewXHn75NPyYlBsdEHwArRsswCGezkpomg4T4EKwOcMPGgF3sZb3Gxl6uQRkzj5PL2lulUOmWVA5WU+1BIzAAA/vsrwAM4etTwZSjQ3m0v9fT4X6vv8HRnFw2PzgA1Ft5nsymmaz0j33OqJ2lcfuQVgwF6+Uje3BiSWRlJuKlMPRCjj95lv2yj42KD6KpkpLenXTAXc+5hWFP3CBtKVYVy3T1f1fHZcwFPwKhP9GBgh8l24EwPy7fNGVkZi5rrJtzPM1kT6C91oY6IAD1NzvhEna2y19M1EFJyjrR5uRdtRvK6izZXRhoJf0Bk27DljL9z7ttSASphCYiG8AEeQLJhw7MnjFkOgV/e0a0NnDofbzt/I4K8rkG/bk80jenvurSYSMVuWgNYGd/ShN73z1YeShPLiUGMD0WTosl89AE5kh545JzXA6aE28yMgSG1+Ktkhu8IRJ4sRAzy2ZLs5+c7GdCXGQ7+/cjT5wyD/VRS1y+oVgdNUEf+mNVBDPPLZdbSUKkg5Yl/wZppojjHQIcQA2IwzY/4vvHydAjoiqpYDDKQtzJE7qs6gkR82E7mIAR0Zyn+WfDv3Y7NfWzpeno6WlLVV5dhJHTYdhqjoqPx0CGhRh8mH7fzWEYjNmE0qS2RKNjODH9nRffyI8bpugoMVGD6jh3YoExDxOFAXrNvH5MNwFlc+7Gr50TY8sbDLEAVVJ2SN6U9OoEb++BIPeU9t+YlL8DR1gve/gJGbOrQmuY3tlWrPwojAGMw+wpdpSOxBTuF/Ui8rEER45cYJixeKEX3dbG1VEe3McWgwYZl6+uBA0wfXS4LIAAW45xJWh4hvzYtLnzP7/1lzKlLreMH2Mg9l+PAdn90wBSWK9wn94awiSvzswNlMEEa5gAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OCLQH6ET.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ODMYDNAD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.ryipay/image.js\nvar image = \"data:image/webp;base64,UklGRiYEAABXRUJQVlA4IBoEAAAQHgCdASqAAIAAPm0wkkWkMqGWi2YZKAbEotgApCnnXg6AIwyFocuFKejbeWvQA6Yf/LA/qEOGAqIiaWoOigeKqBfSiEpmcJEi24AmiMPzfS8mWmM5U/vv+Sl+Sh/Cd5qCi+P+YXPi1XMtiiQIM3dNXoH1N3chLqnDwu4v9fqpMCDfnZYAu7FeOQDXGOXD71nNq6crPjgdyfmw1iaAv+ZOW7WATQ8VgRZ6iwc+G0RbvII+4tfNSDpvSxUaVhgwDEVbBfg/ern0eQd+UIaesBiOTCKHKHYuhweFTgQXL/hQGllMKh9XOSsgZ/2vzQA5cHMWAYQscMYGXgAA/vz0AeXJKBORa4iOggYHlHmv4nK64joTN1L8827dOMWF8zDfhDJKdv/7vvzz+v/W+wgQhflKMoB8DXP34o2AStFRh2j3O/tKO2jfX8fubOxgyAS/nz0AWlXB/wCZz5GRfRSBQVD6Ew63M2hFjesTrnK4lOQdLLmXnlY8TXnj6E0IITjkH/oVmHELjVY//BUCyJf7ZU2aMCTIe/hZJAKnKPSXfArwtrEuKcP9UaGWOMRN9EBZTYIWJPHXQA+7wUSiTEO2jSXT0jfY016roRoz7n4LqrkaZ5jyhtWNrTj+JQmhg4NhwJFEvvFiSc9OzGsB6QShyIwTY2Lycj0uwE/Sf88ul/pmIqqYVWThR5LkIRku6LZn1TwMBuCTTJUyM97FjasdS+NheMyW5FRLbimJ6H4B1gW3l3eJsjM/76sfcDcxyCiwi5AdddnZOeq4t3GaTpUy/39VMxOFS3UIBH7LDYVIdqYP//lq/6xUv4xfJle2ZO4hAC33vCTUBt29W+EdOL/5QV0ROeb7GapwtQZYYOQxFe9kop22YPR7BoagnyKNG++u/zrDrbTIig/z2wM/BFbVgWhLCvak6MPoRN1kgBDvvjmUOQfFoS1Qa8JIA29LvicZcnxti6pAUGGDUuIDEjUHLf308FNjAV0t1aElblTlhcxeWjG74wFmkU/kpUhLAP0nyEYGDFAzxMJVClsgJg1+mBhTuatuQqptiJW8LvCbaNdrwRFeSek3P58zK33C3mTdPjCua9YWvmaVG7/bRVstm42dADO9aHDzIETZysiWVHLFr9FiLvvlb7pQE6wFmrx3F0vIvYphDOGND26BpXh2jMy7ZqLSL35bhkkrsT1ATq7yNGOq2byzcLVq6yr2OSB7uaBv0rZEtXXEg1JLJJ3itdoSlbhis3lMZCJYC+1jT9+1lDjVrYOUC7ysfvZV1fQqa1ZGuCcY8wzHq/7kbPpS+9p/nU6I+Uvt6FLHH1D6mRSQNfb6JG6/HzFZJEQe1vtYmMc/WQTuop+dc9CJ7eT+E0lcj72pQq/pvToVUi8UZOzVsm816308yMuAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ODMYDNAD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OGVGI6IX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.harti/image.js\nvar image = \"data:image/webp;base64,UklGRjADAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSF4AAAABYFTbVpXXAgoQjRkFNIXWIQDUgPF3DupNcKcSERMgos80QTpfRkRZ3x9WIzhlXAHzYu+Ij9gHnwe4d7B/6G3/b/9v//8DXg+71MmNw+Mj9iFqW8C8OFEuDFZP91YBVlA4IKwCAACwEQCdASqAAIAAPm02mEkkIqKhIxVY+IANiWlu4XPhkBf3rosfI3sBx4GUP4zyN7+ZZ9j/vT/530Z0js0Dy7FsdzjucdzjucdzjuO+6zyImn6lD9Lkuuzs1EKfpAnY+Io53rQjVxc+qymxQNCqty+G4FocZ26Zgb2be68iKxLyuyqRcDeBNx6d+qe2wUv8DucdzjucYAAA/v+YLAOZj87rmXYFeis6nD0guvHIm+cXoKi3xf/I3lQrHfzdmivjLT3cP33eUwsRRtSt6blApdAdfeToV48sL367s5G/udnFhxpgv95yDAW/+PvF4mcnfvi/HXtnjsyuhwwGty46bA/qUnFdeLFDAKYsMpx+FFCNks3T7i3+MhGvH9WlSDYEtc2Ec1BhWFkdayEqavXdmajog7rYn0815mZI1768f4vcoidcZHhI7mA/BPw+Nf8SEgxY7PVykSICZ0QWJFK35HAjxdd7fRoZFF21C/mBWMLSFQcDOQYombSpmvhDP03rLfvnfRQqpzyP/FbD9a/dCGTrdUT1VjfPa0m9eLCvi7srJZoP7/37+r7SCZa3SZcv2efHdPP5Jx73y4RjXEqdpr6bLcy6C41mE0qcDnSSi+CiQ/Wf/MiqYumQ+Pgrn+wdxqhTujvENp/OHFqWfB7XmI6nK7Mew8jnyMaOef+mf837FqmDJFt97fSt7O7FQbGCJUNb3x2v8U1QiuoCkGnoM2vMHNucrphPNe8sTrFHuTaRtNl3rzmp2o22/Oi8c6mWICZZBhhwF+my0bZOfq7dZ5fZ6K8fyJLHFJODXRdnzAMibcC36DH9mQ0dJ49LrYI8UHO3g4Ml2gLJP2tg+sRcxbiX+rWij3dmBNsfKVaD0qkU4lz6XBSx6Ro2tYTRLO22xHrqMVGHulXSAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OGVGI6IX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OI2FPOZK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.thetatoken/image.js\nvar image = \"data:image/webp;base64,UklGRogDAABXRUJQVlA4IHwDAAAwFgCdASqAAIAAPm00lUckKKIhLBQIMRANiUDRBoBygMH/lqg/5RHR3hbpR7O8/nov8S/9MOtT5ivN86QD+q+jN6sfPrfrX8MP7dfqeCndACGWsSGASKhopV8rqU0ZgcdLKywkNpCE1i2WxnAIwj7uodx1kzmWpXCG5gaUAjAFgEZK3JHC6TdAoHID9QRC5qNWlyL3lRrwFrj7kdeGjd5EeAIZ/XooAtYZ92KPeXvXbIuW9/G74VHAUAAA/vkN2yMfAkrGDZtJJPpHQdHUJo131cem8GGHQooOJCXQ88lMEPcPbzH4+zmnn6wYgobsDjf/gPZn94CYlIv0MswtiN8Fz9q/qEDplkuqR683zQI+t6CIcK5n6GhcsCkt0OqCjfUB6EtdKOist5+upOPac7ZlZ/O4+upOc/SjGlqrrU0l+5Sr5/lglUeKHO/edYh9fCISk9D7ahHYnoAyyatjIxMl32s2rtUFXQu7MJ9DCvEpUE4Fv3h5XtQsOlLsT00EDX3hGfezdKqfnbE8cRqv1OB7miNskoQ1g8MRl8uOrZT/YjqHUNnFhNLY6hKzOUaQ6rQkcHBGtzTU34PfgQuU2F9P/wIGheRnWOsmH9PzecV3eIUAbQIOsOIX/G3L7HKzC/hRWl+Jp70PVPo5qyDR6dyGwe5gv9gvj9n/iupWlkmXP2sU0kEj12DQTZVyZioV5VwNf1T+Aak0lue8x9nlZlgtg/ywUadhDHaXIPvEQY8nfIMvYnQXpzJR93gWj+6THqB6c6MmTc6J42gAhL+b2zHKKzFiMt7LvdoZw/Kz5lz8F3pTkZ0xKrXpio6CXv5fUbpr6VUtuRyARi/NQfqSzPWZUk9b3VEc+qcuMWof+co7NfRmw34qaQawyAs/JX/sPObWY9t6/yqGfFy0BPklKN3Skci9vX4T9DAEVW/Fk0qHI+zJUMFabqvYzOJ04AlV4VV+dlJZHR80Zis3iefaKamYs69+H5Bj41TUHZjpV3vHKlHH+/2qPBBAFcQ4hWagdZyvFpP6gyuxrIf7T0Mlx8zbNZyaVEnE6cBddwK76GTdKZtkD2VAxTeIQLBwaE1hIomGCrTBYKtwwLWKxO2V5kUCOchFFFFFpQc+TVLSb4lYPXhjm2bIDiK4RmhbqsafBVxdytEV2opC5eHretptU3X/KafNmlHrLAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OI2FPOZK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OMOLG6BP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.kabila/image.js\nvar image = \"data:image/webp;base64,UklGRiYCAABXRUJQVlA4IBoCAADQEACdASqAAIAAPm0ylkYkIyKhLJcKQIANiUAantT/xV3KtUdzGb1evQnpldlFFrdJCvkI9nSy/NU0kVRyUm4J6DM5ooKJuL4ITfe0V9hw40O8bVuxAZqpq5/CAjJMq0SF3s1PJ5azb6EZHCrCO5OrsSy+lckGWXBibHjTMt8u5cwqq/KtXcvlxu7hJJqsgAD+/D4bcvwBhCpMPAIQOunKNtWPIzw8G4jGeJxksMZHYhRD0WdKErgYVy+BSkSRoxH/RuV4U3Itck/d6pEz7GwJy+n53kxaYeIR93IRQidlXI+1qxh1bXvGVbOsaH/wnnkxQhIo30y1d4KUNoMxwAexDAhjHHyHRFoiMXZkOwM8PDYtphM4MpalGzGCzeo3Q8Qf7weX/7QVJYpvD+rWKT19n//i8WdbGMq0sVY5vMg4SZ9QWDVR3N0R+6HRe22XQsgZJYq+0RAaxf/4c3zJP2UOymtjHC99zqHLa8BU8qvyLyc5lNvOKms20pYZsVRiSaHaVqKW9mwymGDHb783fXecDN0FHu+XZKp1f1aMFVn+rwfH4t3n/J+X894Vbnde8mZyQQGax43lMasyCQb6LHhmGxo9a50fwgNNzOyM8XL1Pyo2mypa9hR7dq4Ja2w9j8BpepixJYq7cjydhHrwbakMPWq62BRwpcA41hdPaCvxzTrNw4rFe2aTTQwfPBzKIGJt0AIuIrqAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OMOLG6BP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OMOWTLJH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.herewallet/image.js\nvar image = \"data:image/webp;base64,UklGRugDAABXRUJQVlA4INwDAACwFgCdASqAAIAAPm00lEekIyIhKZUYuIANiUAaxItvb+SN4r8Icx6bnsNnOeKB0xP2Z9QH7M+sT0W/9A64j0AOl8/cH0dJqT22bAZbgS1ilb1K615u8TNPtQSKp145fr5XuST3RGQbdfW5wIMq/8UcikdDE9JJ3cYjopx+8avcFaGqYYSWEh5dptr19ccua5LsKWKqV9MLleo4rJiMWHW184AEyRFMq+DFULg5vViMDAEyy66Bok9YotIqs0mAAP77X0/wwttAbagAAUhZARZq3HOTZgS7Q1+dFjy15obzzyCTJb8Ow1xrvbFvIdZxe6Cbl9RrXdHU7+TxeOKoOZwk6AN3o4Iq+PQ09yw1ZKdj3MCT6Vu/RWbQK+qYNJ7pWT6zs+ie2dU1HaHidVzOg2cwGoj+PrR8v+6NGWiS54+pcoT5tJc6xkGkh9+FhzLmI1CbIoDbiL19m5H2ZUh63D+di8LF2yKwoIeVdZz4/Y5ZuJNgaMgH5kW9lvmcLzWK62q34uSLb2LWpfqDEsKdAZ6IioJfaiBd0P+9UE0gz6B0RxFXQ/aPg2cBtBHvARcYv1Suz8zL0Lsi04aUwiMF8xhL20psnYDPiDMTvu99gmhWZeXHmLH0zMWyOTbW7VTRU2a+ukmJeGsLeMU2R0ljDt3S4g8mKZ3pWE4chHdkxB/ubLSGv7+qmxPhf2lW9aX9IPSrzCOHNEKOOak0NQxtPFLt8ER2c/JeImwTh2D4WD3Y8gNcqJAxV+/JLMtLAa8YqrWlyuY8iPe+//795jkSGFOLNCWsmetlBA32R3EiZz7rgx+wfmNF1x/iPdTYvJBB2MXXReKRANb08Exz73SXIs/i8qlUaxJ5m7NuvsKNDuVA5w+AyIXGkYEo69Mfa0ivm+cOqngxw8TBOdxv1a0K5fPvIpBVTWom2ldcoprGzpG9b8pIKnO+Sje6VRxyXV1b/rak6MTD/9LD+zfELv//FdUOoIsAUfCi97n21fqVqYEfAjQF7KREtAV9YblrxkszoNGdwT6UgDvCN/VLOVHiIHA+YotgXYOZX0TIQ89xByqe96WMmP+BzmscOAhB+oWyYQfE8W/DF6JehvjtZaqJu0keH0HLhvlvdxOuf+WCPjpJXMTi49KTuHx41Diu9XFWWmn+OKPWT0jtRJgFiXeCI9iDyznFd3Jeqa2tvXFy1tk2Vb1uBVXTEwZmGU0GUfOSZR34KEELeMcjj+zD/meLV4CHf1oy9rY6+gpyQqAa09g5Q1safYos0FBpOrpf5tUQBZKOcOY3kpWQdCjgaHD1qyuasZeAgiX09c4AAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OMOWTLJH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OOBSXLNR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.easy/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OOBSXLNR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ORMFBD3D.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coolbitx.cwsapp/image.js\nvar image = \"data:image/webp;base64,UklGRloEAABXRUJQVlA4IE4EAADQGgCdASqAAIAAPm00lkekIyKhJBgLaIANiWQA1ijki1ep8kBy9GgdNcj/6r7gPop6Ovy17AH6N/6HqAeYD9X/2u917/Req30Cv7H/cOsz9A39wPTc/bD4Sv3P9IP//60sxL/KV3eYg3hbH1r9aAJJoVyAviYnM5HI0L/+D+PKf5dqespLQVK3/kq2+YUZ4ftwpVUROgVUwAc64SsTtLIzVk8YI6KUBIhIYL7L+bZ0uSMM6q30iS1ptFX308ZCGgGGfLZACOdeKsxp/ifsXiX0tS+L2Eute+YvZvaam+gAAP75+ub4l1ZR6dv+ekUSU9lQP+12aGIHrxLjOE8sC8q/jpURFeyuLd1VH/+d7Gj4CBSG9x/1GFppBteZkPP9rMHC3m6YW401SZLjrCgJoiqG/r8U3MHm36S9BYI29zHAyzK0F09bhEb9PWNkZTDJlq1zECL37P4BPglAlzBOegp0g8BxBZoGAMOD7JGFBpBUuA7+KefXb9BuQ+oyuXqUqkUKkWCCTxw7v9fxSmU+xRKeEsLc3xIALB+f/bo9PxPKQQbSsaC5cekzLaFJlS22vT7RNiwcLoK4G1cC2nEkq3rPWwSju9qeqMHv3K8WAOM6h/xstwwyYAVUrAP0WT59SLWPME1jljOhmLJOmNnBle8R1/JMiilu1ZdB8o43dQzohffObOa1NSsJfZaMuUo1E/i+4xVb8MQJOYj1TSVEs7XC9TNMPTo0cPkeKpc31lSUXlwN9ZUk/sEkoEUJMJ5JE/8EwSyhIdFR8MfgDJkyAqN215PnMqdFcx+A4w1PwHGW/fA8XSY9MtjjzS4E6Hsg2600xq0v87/89BwzclfvZQX1GzClQMW54dXART8j+opYvWVLMNn00r04kDyD4QEqdGs2Y8Ez2ZEaBf2VROScMUBHnHR47pMy/1da4q8dATysnHFu6Pzg3HOugKXRfB9ko7UkTH6hJTKcKXlu9UW11kCIw5pRN+cPb9+LYgKR3j1XF3wjC4rD9DtI+fnC6NXl04N8zDcwF/yd5S/c4RARzFfpUZlapaAhwerelEU4olZGuMHMUM5IpMo7klVuFHM4ZTqQ7TKDgjq0kkIT5EoeenbG/tsG+dwpzRY3c7j+8x7q4NPnQgZttneF9ccvUtfJTZb8zq6kWaUX6wZdqZZ1aDgE45y+cP7ugN715n1l4BvqnICbtYu+NX8yTnxEFY5/kuBAfg080ZZsApl7Kch+FbmudybXSrqxCdEkj6tLF9/1SKNofhVDgXnVWx0D/Ht5StWF8nEw8FO8ejMVOis5XJvhvFTo43k9dijAuv1Eqm1cq6+meH82qUnqB2jn3LPVagdkSXvh83Vi2i8ldQsQsUBc0HB2IReElrEj0nL2/xp1uZSfyTS1pIiX7RX8wgtnxC1Y9kDEANzfyrycHUWl3CvFP8YGtABa9kpIje46sQKjgueHRxd/ofj0s8QAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ORMFBD3D.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OROPDYCP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.pltwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OROPDYCP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OS6F5ASF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.roam.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRugCAABXRUJQVlA4INwCAAAQFACdASqAAIAAPm00l0gkIqIhJhFZ2IANiWkAFed9g3875QE9x8jf0j0R/u2+Ffxn+t5Kz8l/1+i7ceHFF57/0N6T1VHwAXr86zN2itY6IquwVDWEfE3lNuOUm/myTrcUj9eq9X90ivGbxc4g2KyYb1FIj3GFG7ThyRNbZC5fd3XJG++ETVvm5IeYvYvh0ES3Fan/F1QaECHrqYd37ni2sKXFfnDbqq6QAP78SgAY5C7V/8HrdgR9KEQFTEZ2/rpjbnVpfn0V9aqaSjl3F4OGEm25CY3l/05j9yBQJMYft3IXqSqqXwVxvd3laVJqFhDBq677LPkcq8xEn/8u4mQAFK0yafzHssjnoq2uhzVn9bft2JaSwSVN2teSmmzo0Z6iyXGt8NhH12rG9MR20iypH2q3GqdTpH9C60n5YDjcIf09G9uWFp/FEHN8hg6I2MNnpK7EwxpC1T8f7VpTdS2PStXcpDnGARaq9qsJ0DWl4glUFLAednp9d1E+fEeWfaeB3IzPIlYeyjkhCjBT4Ke8BWwMB7QwV3w8ko5rTIP4I1LOZ+gR4NgkOzB3MQFy9qRE3HDkPogJnfYHfXXU3j/2pTPVPd053lehLJm1L+OF3w6PjHxocGevr2rXB+s6O6JyqxCxPahwCUoUh9nj+ucqoAB0ODHZya5+1F3nKfHItqSx6F/ImFQSf1zzHENPM4+XOV9z642U6wx8fAende+k5MroUfHby24qWkFUbN++zMN//DXy2n8ERv79vjHXL3VwWSXuhsPfcjc3Mc/EOfTzW1Z05M65Uv3tRfQEMVz3J+3zD7OutKZ4MaNDZzsMxmZ5inFdiSenukTZnU1MNz5CHmzFKKtL9Yn6Q5Vz96BgehUkd308srjXrJCXMl6HEoOCoJURBKQwFOdvuP/ilLxDV8cQNFZQGeOKOS0ieyrZR9N0lQAcOSYHTnZ/LI+1RnoiGn6gjZ0bdIAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OS6F5ASF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OX5V2TE5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ready/image.js\nvar image = \"data:image/webp;base64,UklGRiICAABXRUJQVlA4IBYCAAAwEgCdASqAAIAAPm00lUYkIyIhLZjo4IANiUAavRFflMIe0nfu/xvqz8QDcGc93vywKAqzx4wGeitxCrJf60tQ3mA9N0ynCEG06Gkz2z09j8f74A3YQwcR2UwptIMLzSF66Dl+R+O5qMsEkFfSnOwmSH6O07ruabARV4cB14qQly61RvbSgv+nRXKH0nNLccjalCUTplTLqN0wAP78qAACor02fF/Fcnh833r7f1nQF1ceF8NJjqL2qQ61Rx8bgubp01eXQka9gEifYFIIAGnpAwFm6Z6XLlfxWUd9gsfA/G/Z+ZQgoG7gczo2Oo/UuAbJzoHRNsc7+6vqd+o244Kcn5Q98MlhVeVItFHq9tYKaaTUECWvA9SiRN4XvvAOGde0YNTTwc7u86vsJP8NwAQaDtSUS6pdWx/Wy7CFXicCNuiPxQaQStB9eqYB4n77j4odQoczmnEvO1M9212PIqfN1VNe/KT1V7EZA+uw3z1qcQZVfCOqa+jlcVt5yzuiuo1hMHOmjZsutoJpU/beHIZzK51GKwVRikx4fUYVlCnHqiy474G/RlXumUBD+l+h0tsllPFpNeDvRsCYCDfkYV7ut/2wD2ec5xKfGYrwnbryrKdCUIalHg+A53Zec2xad04Ux6gDJsS0ClwjW9xB+Kdg5QEqBR9SstBcpXr776DhJR7oiE6JQgTheUK2aulo1rFOsAHeAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OX5V2TE5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-OYVSS2NW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.nodle/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-OYVSS2NW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-P3F6JWUP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/nl.greenhood.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-P3F6JWUP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-P5CCQF6U.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bybit/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-P5CCQF6U.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-P7A7UY6Q.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.okse/image.js\nvar image = \"data:image/webp;base64,UklGRlYDAABXRUJQVlA4IEoDAADQFwCdASqAAIAAPm0wk0YkIyGhL5QpsIANiUAaesaL+9Gv1vKhAX/F29vPC6bwdst8IjpAIqRMHRB97nNSi8p8ljB1mvvfeK48caf/rbHzygLlk7WxXAHS8bqBS4zpGt+DL35vnMV7EXw70z/pc6V0yBaqAq/3+jeH7GStb0YZ1gmQ50orArGK1IslrHtchihTkYkoZrkvy7MdGLb1OnKtQOZIFxHZhpy+TStnW6zsCeHLpL32f6mogtdUW4umLb/qc9sF82cAAP7vmsf9inayIK/+9gv+7Bf92C/rYAAAOvaJFmIrUXo7hq2/O2XAJdw/l6ep/C//ln5tG+M1e9xnBqDJqvl8bd2XeDay2BOhJIQqlUig8Rt9UT9k7/xtDMp6v+i8ivD1wMIBCEZv9AHmyjfm5KA802B7saRZuIJVV4gXrBBZPEnkvtTLaiW6Y7rIMTGwjvv7+BUJgBGK+PrnN448799Oqt0xNWeKZscqBGM7hO+N/3QLC2+V25OFwZznCtzEAscL2mpq+L1oHhfR3Y2PEPdGIwoOG11zWW5eUvPTm+AuI9GDYuPVAvpZjSPJZ3AiELdZ1xkRozvenCtH5Bq4Fru1Ld7qSMZdLbqlBIK5npESq8leg9kX6Qo5V/Hr4nuLj+75d2CaGd3V5Td5FPBQ3+fDecic/ZBSHzSq1Q6GmgKZQc8o02u7ijl9LLYNu+g42Mc8zSfclkGtj3xMiXHDIdgoKDY3hr1xBPVKkxYc73IenEDtlrt5kPkdLWt2RnLM/J3RGRMUeIghZYTUvwVSFyRPExx6gvxXqmM74SlidNWDMkaTP5zThAhWSa2NO6owyeL1KQNaMOmEDoQJYb7/7uba+KrVwZzVSrRsHRrEjCuf6rbeVD3HAosM74kMh3QgLEPArzOukxvSgcIvb1DpP5s/nk37i3zs66MAexUPKy29GWAIDa+XsP0lmex4TyfdHBKMMwSaKybC4Nd+gqoslgWAIygXnao4S9iqAztyn+ajHJpXUOOy8uJXxprefhNVfI5uTV0mb9AH4CwI5agmDSsBaSIdWKMNOecLtmDsHWmD8g323OPsYUPkOeYubdhPG/Eo4HuvU5Dxp5v67lR8AAAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-P7A7UY6Q.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PFLIBWNB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/vc.uincubator.api/image.js\nvar image = \"data:image/webp;base64,UklGRpwEAABXRUJQVlA4IJAEAADQGQCdASqAAIAAPm0ylUakIyIhLZaJEIANiUAap8F/3LWH/Ecj97d4Hzj59fQt5gHOW8wH7Dfrd7WPqb8ozrXfQw/WbrcPK61Yhk1e5wEyleEnG14cfnHeR8gQKQsz1IpD7TV5KBdqDekstdXluI73aZjNW4IkvX3NvoAJCESl9y/YhPbnQgcGSDHM2Vs1oIgwjHvRSSJZ5GcafeAXPkUvZI6JDHGPoIdKYNkUv6xdNlf8rpC5j5NNGlI7yKGYtkwiXAxt449xSlH9PTcgk2jiK05ryPj5AAD+/K5RxvNKueJC2IG8XMAqmXQBB7WQXo/eYGJO9Binq+9PXPOVI/fIvvdmXLBbSK+xsI9eZT6tdKF03Um/3AHnArJDXxf0ukJyD2wOzVF5vDb7NV5rDG6WpUX3WVQIvi/Wc2c7PgF6p5ERNnuDo+SzyWXL41gBH7Rm1r6A3Y0vPl+A2mEVdJdgWVV5WKs/io06DrfLuObm1WhZodx157DL39OdpxCmg48GEnaNAJJBZ5CTFDyqPGBrCsx9tlHScg2sKXIDOokdMLS3pUNxK5lrejyHUJ4xzifIN92i3x517WYLN8EcYEdhZN+d8GSmDR7PqLtZnUeqx+Z98/3x6sihOR9476a4Z03FsZOwgxikAkJn945lTdgM0VfpSTChP9UZddgyf5OzyIbKHBQEQFN6IDznG5fdvru1i4b09vE5p8UJ/FWW5tHYy2wliOlmugs4AGolrf95yCh9i8A4fU5xjNJHU38SwEp8+cPNkDHniKahfxyc1kXAsiO0g8XOv5zBK6cHzGSxKbcP8nnTXNNBZct7zXDJ4crzH/cEstMn9RXVKDDb5X/FmZR5PUL90DGJCQwYJGmJaak2J5g9tqtNbQt0+DF5UXMd21xTSpPSM3TjHAa5MlAw6OyWD6pboZyUQQgBZ77LNm4/Wph5r/vt6qjS/0enmO9jyNVl+bPyuVHplsiEgUQlWj/iX1PDJ3bV7O0fSm+HwVXBYbq7HrwiWM7InH23nR568krl+DFgERmKJlclDrHPdXpxyVfRXbuRP+t+/2Gt2/UpsrKGVuRYVzJMFIl8mPo35xLf1kCskSbbSwQMsNxOO8PJ2Nq0qxspUyZn9oBH1QHcon4kA28QaQUkxeAVW4jwmyUvSh4IB+lWiMCRUvaHgvQe01sw0USjXq9FfJexRQQDVZ/EhLeS1AtyXzW4KzGmdtXgD1HuIZsJ2QsEMHm3pMJC4D7o0sqEeu/gunZz9YIqchQP8wbNSzNXdnHvnLPyJZjAmboz3R/uqiYoCjXrNE3++1W7Z3uF4Sp66RWZP5qMH+tHS9DyTzlJR/9fhPj/h+Vdco5Oevd/53NOD2FjjT0sp71venLqF3S8ewvczHMLiNOOeSQlytkXO4YO8jSyPspPdqIzHw7R6U3/RR03jLXDCuKIImRQgpuPfH7ZHplGgwe8A4JCMWy7DJ8lVLK5d+7h0rF6O0zlzGV32ZmEo4E4pHWjUJs7fXu6gwy9SO0CPeO9M5U4F3f6lO2dHTeG8CRxNdCLUUAThwAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PFLIBWNB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PG2LM3EN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.clingon/image.js\nvar image = \"data:image/webp;base64,UklGRnwGAABXRUJQVlA4IHAGAABwIACdASqAAIAAPmkskUWkIqGaen10QAaEswBnzHcFq+j85W2P4DyAeTEjqEV5gH6heZn6tfMB56vpr/4vqAf1rqD/QA6WP9xq87X074MtSJIyTfzZiaNY8o2VhxhJuQfGfZhYGPsPW3fucoR9cI+L/1VCPc3+z81o6Al5ILkTHjn4H6zPKRax93ueF9eR91Hr6TPfBK3XpD8JuLKTkUXBk3nuJ+p7M4ANkU//y7ZpfAt0EqpK1Q1+P0gWOpKgUNMmyKHRHTPJk6/25Jp3NeebAptVM+ZC7QCyFn5fT6vjQqvrVA/hJR9O2zrIFCLXKotEFMFRV5+volpXSbCuMT4Lq4URiBhjh1++BAoAAP79OdAs22ReK+pjRfstTvMFWl89IvxNnJxUwoUwpwYLgBrNTQ0wJ666R1h0j6CwThuO/oAo4YjfNScrbdjr6ZhYJ8mk3JgAwOL/fsri3xuA6oAAKx9l6yhzTTGuEWqRGfh7F2pB5VnCb5WmmOM/cSioAS8BVLVjXn37/piqtMA/FHC3aePkY1wKDSDvd1j3mOdO5sbZz5vsh8P3Kz+VdAzwsxiKBw2+8x86Q1z5P/JTaJzZ04mUPZdF+Y6yedvH93HqlAGFyoU0BrPkPy911s0qrGPcjgr1ATrTRL9yvKZ4ptFriDWvQJRD0JsZ7U9Kqp54tm2ZXWI0EaQFXwelO3d/tc9e3c9Vyz/5W3rxqa3I9JwagAMICctQOrdS3b/64k91tgoYuHTjqex5GPUDRz+sPq/CfSiJ5TFNNFwo/0Z9OiDdsZ0Zl+NcG3MTFcnVA3K4+1g2ljqqMKecqOD8GNuiwudelYPaBlt5j2jXYuR1zsG2/I4PYuNSZhCl9Zs+gt6ZTTPPOcpaHkRj4OWT/r2pflzDg3r7+yNUxK6hlEkFos25y+kz95Tn/53+pjtNlYDaU+UKWEoPK9lMcwArhuUrwhUfrj/bsoTnuuZhLLmAzkoUJYIwVW28rzwDiuHcB+QM0qGvVraK/crlf6GiF7oF7p6y2Q2D8RVKm3jU0UP6aXzovdxHodl1e62jG88uR/fMI+4ff+1t/0hmQyvFrWnkUMuWrM8GO/kkkiQXsjcT9NpaBALlRPyS9ZEtBsyJf9GsoHKzD/3d6E63aQ41i4t5lRzJccTXezTMtM7xlfv919D4zkBXrOWu27DR81GiAFsBA/nIHE5KVh3ug/6exbov/hXjVdvHNKnu2/iwqRB8+8K1JLOWrU0lvUa6NF3wEbh8wKkBjW1JyXynJBjlifqocdJHUogirfqokP4FSIY9GqaO6dXkO2yYXD69mticv5/5meYHIQncdMp3mQIiIxO8SB2PNXO9rUTVhkCNRZePn5MdK6SxFII9hRGZHeAYOePHlobDV1tQc0tNO3ObJ7NlzT0kTPHZqWdP8Ndqt3lJqdufDrcmw81PNk1cETg6GBPuVCV4qCHNzmoXihAof6H+PCJNxETvfV0gnTj2AJoE8jNeDGgzDkK3DFKhPkUmrFlM/+LlTOcXi40D4gKOFajNQTYQAsTqOo4egxZfqE9t99jq08rInxrfnkF37jja2pEv5ePHIKFXzO0ziDohi7qYulIQDYxYUTTAhv9V6CpYhYNmofh99uEyWKNPSvj39tsNhMMGHWjKKrp8GIajcge/QLRF5qqh/UVVpWE5+Gj2T1+nfOJYk++Dahe5n1+sfUziW4JyjFXiT1gheV8W3oulUK5xnBchh45t52xefgdIY+BEV1tDZY78qOyk7eeL3XCnzvj2LM79V8e7thrkxymw5DgloXAy5qAVoXF6nYD38g0HD6lZpFrb9SFQ7GnggheKdlrD7QL8gX5ZgCkbXXGVhbz90cUUZGr0BWDKcWpngqu7z7b4NyNa/dxIxrZlzXw+HpVNSl7Mewu7mCFQNzRA89aS7gGii8OQhntUxuKnWBKTF3vCiYqqx/BRwXM5zi7iHD7AaevYHC/uuIGupDyTq1sOXnMOPjjvHOxdkrvwi/rX7fby/j2VChaO6V4GFBMSISSQff5eK9JvWFAsGG3x2wIg/Sp3Zf1P8HT9gHvo1jixWeuT6LJwU2L2ZVarquWtGNHUG/PcFGDG+Q9RH6ShEp6hre3EyrYSmSwvd6vHVM/jG77KkqgslunwOy0eoHzDqfujFgpNgg+CX6Q6U93TBeFWPMcCUzYKqkBL3g9lkAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PG2LM3EN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PIHQFTZW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/money.snowball/image.js\nvar image = \"data:image/webp;base64,UklGRmgDAABXRUJQVlA4IFwDAAAQHACdASqAAIAAPm0ylUakIyIhKRgKyIANiUAan5yR4SzfVkgh8vb5+YDzoOjA6oD0AOl48oBo9zWeRZu1Pm3yzPYf7k/mbVzvGUxzq5yLT3uGdN9yzOomo4d1OtM0Lx8K03EagDW7sEHt/SYJ+nTwJHeJBhriW8czu1xiMtEZrPeZc9YCMT5S1fnchZaQmax0NzQ25rNzF1yr/NutoBDwQQOpQmQmCDoNzlVk2UtwuDI7wi+Gq9PEoLp3vXcDT6MOdzSHVoiLZHg3mghmoyGbEKfruYLjlF7Ij036BE9P/2CX1Gn1xrpEAAD+82mXv+x1HcFUOAAAddaPRj2fhOrDNc76TPELxkLI3eUHDUfmOsx7ZdjIe4SC/Wdg/gnTY8ccQOKoV6MpJi5rpWR+WoAD+2iUQbe2ldK1TM5n/FrhZsAOjuRLKsuDIw9JTs2BzNFrahN+66LCyf5FL5q6q7d8uot540CfrwgwiZ03ZK5fA2gM8ySu56GglGMniz1hkMTZvNdBd8vxMnrPiu1LqrqHBo4g0Mo1DNpWsPrQF+Z4WCP5br0g8YP6U8oUUMkMnjdBi1zM5ioFwW3x2e9NVL67h6X5OPLDtpvFWCLNSIsoiwx+5c7lHhAD7SoWo/MWZj6ViVh1twma31t6PGgYexTuej+5PqipUbYNXJ42pJLlQCGZYf9dNzzjzqoHFioE893VhZ7bJVb2uI73PVceWiB4AycpmtHbNu0E99YBFDnhdkJYPpv2TpaitM0ajBqt6U1B7k+NsQgHlg1XJvx//KCMu9bvmiyTojRIBF62f2jRPdFs1cf/8L3qKv6/wMUX+X8V/dVyLfhy6/WH9wLWe2K6VprMMopH+h6tfDIY10XIinSUAsng9faArARg0tmB8URTzif19HpXiyptEv1GwLKfRQEJNmHjSiC757jr1TuhaveMmowKj8Gv8ZxgnGxhjR2fJ109iyvU3tn/tA/2D6J/vC0VUk1L2nTBjPgnUw/+w/x+w+vMJkoGQAroRpAWfL90LuFYMDHaZsPxs5z6Bwv1DpYj8sk78RJBzFjo45FAEgsJuOerUJFrKfIi0Wr0jGCUjmNUaNiIoG2q9F50FkegntDXzY1b9vywzd00KlaPZOOLB5KCwAAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PIHQFTZW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PJ56ZJZI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.neopin/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PJ56ZJZI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PNENEROM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/world.fncy/image.js\nvar image = \"data:image/webp;base64,UklGRoIDAABXRUJQVlA4IHYDAACwEwCdASqAAIAAPm02mEikIyKhJBgJIIANiUESBGD8mwJTbcl+oDbReYD9h/Wd9De8i+hL5bftJZDFC/KTYHaV9pMVa86Uys6xscj/yO8lCQuw7PXsNiFn0qcrwJ2CLQDNLBi238uTf0PO6E4B88HtkruActC62lJIZivkpVzCpI0hE42P+Nk3LgqaM8sLdCBKXXUD5uIYgksb1yO9W6NR//4pV8UwAP5oU//oSf/wSf/wSfT0ViikpJYkB8qdwPhyWtdeZOKwymnO5u+09LNZDaUQfP2CaA37+hvarlHZgJdowyEIte2ODX7VEJlpkEmdPdZ2HE9mBbvLDYPszGfVk0FbTvYP444+MyVULu9ihRy71FWkaTinZSRbj7VWyheXplvC7CRNlr/+d+SGgrb86Jvaz7q/ALlTr9xEJtdnBcGGNUYhE9n675gzH/ejqvwtHAlxumEzP1cwvQ/PqLKA1punmLKFsVPuVi/erzenLfg98cPuzZcGMOLlSLgUTAY9K3AzKmoPERd0IKS8A3yTPo1YwtTRJYkfUkAF+Xk69ExoNOECw0I77VUZiUlk88T21Kx/mTfWbGPOuQ8iZ/irJGrKPPEQ3UH3gpI2xZNathCR5voPKl9CoaGZCOWq4uXT5z4OK/msoYFvHabGyFzSLuVOPHhJZ6nRnW1fZTziu1HPj27DubuzUz2JG6o26tEFkiMASoOjOaAf4xGbanzujrzsdq4skJhjvp0hbYbGmdRHq0/3uvP4tOn6kh57KJt0In32dBeM2ViQi4B0zMsbpiyGLfMHeOZI7W0n65d8bmERdBBW6gK2n/MofX4PEcf8ChUB44xwRRoZQ9ZELew7qOhUIFac/wyrKncYW93TpZdE6MoEYzhRPC3/NJQFYd7v4quf+FYl5/xGhcQz4ODUdpQJqdo5M4FpxfQLQHwOsW1aJMnW2tRrR6HAMw7Pn4ZYoHCNVI9Vh5wiEPcd00j+U3Qso537gI5E/KV82t7PjMllN+KH1/oM3f82QESNISpmtC86DNNHUEwFsL2QEwM59HX+sFviUSvx3V/c/87kINaM5m+n5+yDGn3jHdYS+BgoIC9SdmsDa4nPEePoA2fvIjBz/5/6BHdi9mqms1tS+g5CI2r/nSxcifyNiiwfryB3K8hloO15KnMDbxY/blWiGv+pBYAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PNENEROM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-POSUEFBS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.klipwallet/image.js\nvar image = \"data:image/webp;base64,UklGRjoDAABXRUJQVlA4IC4DAABQFgCdASqAAIAAPm02mUgkIyKhJZLpMIANiU3bq92dN8B+O/5AdTnztF2dj8a/6r7Vfer6o/MA5wHmA/ZT9gPeS/FX3YegB/Ov9L1qvoJ+WX7MP7eejHmjE1NWPoJTfaizhAwVlI8324u3a671u6mTTawQ18hfAKBERj7LSt5854TzOIQmLYcpIp38zGX6S868+Ctgz0i11S5idALjmhuTfiQdyeO3v6P7w/P9ytRlaMad4Oagvb7gx+gAAP7q1k//2xDc9wc/fi//+PQIDFashiagHoYgAUEHZeKpckXjvIMdbn4xFV110LFbHq7866MSdJFPj6TB0/7px7e5PYkMsZX+jF5WX1M/xGv02IR7IRdJv90RKPRnoGi2irelN2uEeR8g0VxAq/mUyEP35NzPPSK397GMYBbo4d4wTaoZ8tKvYf2aQJN1YrRIt55M1imY1yf2Lm/6boOnrKu14xduD/GE/soVZUMyDTbvFJAoKMOMYslzHe/Zu7vf/kuymaVJtPe0EPNGGr423hxH4Exwh1Er/0KfvJeFmyC9Y9O4aujxfX/tzvpiF6CPOHNj0m4FDdQ5hDtwVKM2GsAqN9Gm9kHLLK67EEmbJbFv6xa+9Xgp6CykRBOSmuEezvDpRFA4qmQrylj4/jWVLkXigS/l7t+HGmhyAm2DG4b3l5y4LX8WAiDKDhn6hvxSzCgbbA/0XAnqC85wAByapSFqlwhMMVHSuBN24MJg8J3pN/BwzK+NXn2GW1rNMUduheLxI9Q7OKpJ2y5H4AVduCKDiyS7PeZ4rp7eMkHUnuVb0wWCGndHjJt/bBjc7lKqX2n6z/4FicKkNnaw1Ar3finl19mS4X05eydGGEdRNIMyTszRXQcLCYEtG87hdelxajnFbNgBintPfXVV0vkmcbuG43dh/80hX0WWiJ4+ENa7YxOEF/5Kzivdo/0MrujHA7Ssz8E7OgrFQEunJAgnqqgyZewud98YvftO5PyAHoXhQUHe0bRyg0X7Kb5zFqbqSaBJ4LlKKitp4a+KMtpMDTWluEdPpomrc4dDLKSWwVidMcsVRzdKHBDkhe6AAAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-POSUEFBS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PPYVKDO3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/technology.obvious/image.js\nvar image = \"data:image/webp;base64,UklGRvIDAABXRUJQVlA4IOYDAABwFQCdASqAAIAAPm00lkekIyIhKhTYuIANiWUAlldb46ryMnRfgNsBdulAZ9iv9srut+OVJwi038zvyhPpxtUgI+AR74ASPCgj7jET3P4XWvnq3jyjMa/yr2EeZ4tRlKoGUQMqtMdZ9c8FgHX8uq5aeieRB/Togkud0phkEGBG7Zz/pBg7rsZh+P9gCCJVvTXQWd+t+w21PZYnflNXG5LqIOwernhVvob92WUbiiyPSD4AR+AA/vXPX/7jOU44njbIrG4AOXjZ9YaTv7j5uXw12kGSvZRYbJz+EYjd2PoqAmFbNs/Kj26jrkongbGen9pjzOeJ81ROwoB5NKQV8ZLRG6L2PiUWyLywzQe14avbGK+7NbN+GmK60aVIKa1+9va45RlXD3cFVtaRJx0mq6J0HtmYX9j7UyYcQNZIgOdrWosE3xXw91+9+cgxWbN80NuSbOxmaBFyei13CebdfD7piYI6IFNffDJc30O+a1obfcWOsKwWtzIoq63mnGeYsNfrPH2EoUkIhrWzd+GkkJpIs7sCVePnes31oJ6Yot79lICLijt4+Iusmi7cAD1T6hK6pnUT37bRAWASFZvzL41XAZivfKykUrxDn3YQj5ds0/jXiaV139rQ+z+D3Pq4MzxC/YrF2k2C1v0eCX9jf0kJP/6SXTmkPmTHOWTZiq+SP6oWcVS/P5PWJ3KH9LwnwI3xXUfbGizNdZfxfrGKx9yRN6rGVjHAR0Pu6s/cnQ1pJLJfyfvOCx8x8IUYGIe+wqmnHvu+xy/pcNjRpNaF/OZXuUmxDA/+TuS3qvXnI+m2jV/qpbS0ZHm/1vdHeXWlb88P05e1uIU46tb53C9BTonEqQlinDp5SY/GbLGifUxajz0CRfOirPTUjs2hSNOgyDeeXw4qCeNl00VkidI1HNjkB0ueAPtS8SLur526HRPto5Al9iPg69cVMA33kP2d/RodIDEVVrRXeTKLXgsym/o4dsWVm7otnnmrm0KeNp5RFJz4Pw7TbTwe4qa0kzj29/UDvg+fF4YZp/fsSiFaD5E9OJjKp67H+Lb56UFPN2J99I6fx0FmDFPiRuzP/MY9i3zHEO5+kqZ5mCmnFXaZJAmiynLiL8mk3XJpvFBOPDHBkYP2HEXvfEEDE73J6cwD+jBdcI2W/3PMTrW6tBKLCpLbwyBytYYBmJYAkXBeLHlH5gwDvwHieZv8lUSrtyMmk8p1T+m1pAuqZ1aTJmvOL86wMaYRP2FxSnrBSC7FjC+DPDltGF/7M1QyHC0sKjuUZ4Vpj25MVebz3Q/KKy/8VOQyht5dKmwzbIKiB0b8usOReEAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PPYVKDO3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PRRYYAGC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.kriptonio/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PRRYYAGC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PX7PII22.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.x9wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PX7PII22.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PXXJ7YGR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.leapwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PXXJ7YGR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PY3RCMKE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.metamask/image.js\nvar image = \"data:image/webp;base64,UklGRsgFAABXRUJQVlA4ILwFAAAwHgCdASqAAIAAPm0ylEWkIyIXTGzMQAbEoAzQSPDffG8qhx7LpfeDUfnDee/tP6gP2u9Yf0a/7L0/+pc3nivc0JlTXBvMVYW1Wt7JbdRJ1a5UhpH9+sdhAvGug20WzG+wRD+P/7/raQ1NqZ5EfcOwosQsP7NRVflPNArBLCbFJWE3EvTLNOmMfR2f+r+E2y6y1lWanc3n9RtF4lYbcW38t3UG/W2jXng4loXFOy3Vjm/r/1KHwXlpAuhAIzK/XF+ChayRFhBD+lbRrgQ3CSVjdmXw6agYPoMQ+tpjPUN/3qdGcvnN1sKWt57OGozQVSjMu0aA58MPKVWiAP77l9VfptKhZ7in3+r1DqZZQEYqO1p+MENah/WS/QQDvPuew8P0OXfahcjbCg7h4QEEEjDyfoFUbQHdw+meAsydryxVs/Ij+eB619Uj/sMgtwIifIyTieCT/hdsDmpLqGD+vOIArZfzSkordRkngojxVgvWRht84IaCHCs5Dn208UHFmyQE4KCxHef1iLYeAEPxnIAovGHIl7rCjiYE12obAM3ZCnt+RFqcT3q2rorCswc4/8f8TOhCSo63/dszpMkNQonGwtyhAFnm1EKqLPDcy99ggKQL95VYePoHcv8sHOG5zJ7lircX7VPpxkloNVWnlp/drJjQrp0h5BsOnqYn756+wcFw5qapAOnYCKUHujsoSz2BlLs1702rFpvi1iVczo2aO9GN1TaM3zBqMX0NN0YEU8pz/3+xwkK5M5q+Qb4FNJeugjdOp2kcYoOCbyAg/0OyGswYHPwDN/opVaDHWj0FcKzLq43uEjUZMG8t7O6BkoK0FmpYOeTQrinuF5F6W6ENly78daVmGPYTU22R9No5+xr8F2ESYTaJzOR3UoouY15xHrsxhDCukfebOiHljS6jUjF0TWaIAb58k57DZ3gdjkpxnJDyEmCsCOlASNWMn1ay3G8PDriQOdwsL7bgx/jZXN6XZHVx2hst/6Qcljnnn4um8eD1NcP1rTV7HMZzAb/d7ntki9zU1IFl695zPs3YT+h0PS4JuQYLzYoxpmMUQ35sVx/3KkL4Pm/TlvuNpnopM0+l2b/0OS6+5GwJYEMpzM4peYZS3qZkz/kxWNPTLv3UcCguDqpGxZ39l/VQJhSImKPZBa1RWCtSj29VCzCEZlX/eAdAKgZwhMKR4C5osznEbxjfRdHHPxjZwstCwugFa5w/WykOTFGAzk0sLSuvxO9kw/f++0WvG5La11GQaqbDDJ/ks7bcELqEGtvLHiJgxOXW9PqCk5Ap9EYelPTmdhHZgzWxtz4idN+JX+DGyYtJYjtW+Ay4kJ4Hol+Iavfje1f/22S69z1XSZ8OOcrDHKQdO1JlGaTkKQmCg5Tr05Qy9NQSfh67Vpui6OyMu38BnbG+cfWPRx/MjGQITY8w8sb1GUGd5hD9eVqycVtz8yFlYrXYQSBkAxMYgkBaiWe6kk24SoOCgt74nNs3pyTWUERw9ENESB6PyO9HjcsUZWIh97RKlf6thPtqxdlfr9i3McON9zvI7M2TtYcneXhOnqN8V4wqqII2J3DQ6/DZFNj5eNkCp2ijt7UWuKduhEmbZlLahfxD8eqBHAZR/H5rulzc4oVlyXr6qPXf9LCEuDRSDE8VNFY4NuTcaRTZO33RrWmWzbXAwpEKeH/Xf78XMoeynLBSyB+pS6y8Fqh7ExdmnvtW2gW3pwNrLc5lXlZJW8VcBzaSpy1Dmqj6Xll9BS8RyWqNx0O3fY8NJpf1exbNYMWA8juddzn2d9lHypEbiym0ASxI/jgGkbis5fecZ60QtJusJgdC8HAJEh64A9EuOCAnnISc5CElwpsvJTdEZhYv3t7MtLDvHp20lAtylt5l9yxqfCy/sqC6qZ/8+tsTAHzziGF6NKoaD0FVhZ2CER5AonJdBz5sg0rcD7arFe96uzujFDCQAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PY3RCMKE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-PYNIXTYI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.dota168/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-PYNIXTYI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-Q5EEGXM4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coinsdo/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-Q5EEGXM4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-QBQHKWYU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.thepulsewallet/image.js\nvar image = \"data:image/webp;base64,UklGRuQJAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSNYCAAABkGTbtmonJwH+i7UAh2I8pT9+J3B3l1J+6nhb4op2wR1KTjy4u+xbeHb/u2ffWCUiGEiSombhYidIgMgTJJVWH2m/9uqnUUqTVzt2L5aSKFe7+dzAneEvf7Ti8/Dd7hOb6gJrBC2t518Z/TRxvq2lwg4rjlwzLHTj+AoLLMr3hCoBLpGp3j2FyjTUrB01RARjXu+rSmnH/iep5f5iVndnT5VV4+kEYHYncG7Nb4PsNwqc82pnnPNj4Z0j5NeFmNRek04s3BMRGhxNdjeZnOOhvObrCeDj6y0iuaLGsRla0hZI7fnk9el25+tk/ahhpolNq0+F44k7TxzuJ0f30CObiKWiu4/fxI2FbXXSfnH4xfuogrS7z2lusttM0wR+Y0HlxAxEgnMHv8wAKOMY6sCtOjywEEj7HMmy9we7UHAuDBCXHtA/zeCRRFCWVGTlx/MvUlDrJpiZP4E+T+DtnFXF8PQh+A8ADyw/k6y/8O0rjU98BGJ4q+5Mm+GL+DzQpw/Y34bJEd3MVxBmAglJegi/fJvM2BMV9KEC74Q6sjrhh2a5RFHrB8C9JWCeDfpOeKDmQMdQn3SB/i0AcBk3IGWFl2FoD+ASatjOIvpOKA1AfcZgmnj1hoZQhiLQ3TdllUOJSDiD0ocg2Qk0qAyViUjZ6QL61gBtDXUKeKL6e6IAao7HPxOfKSSVYsGXG6NMcQMbJYbb75amqL4ygXTc2dVN/i9wYPEJsrqTfiPPyeZXZNUDKZ2vNkvDFVM6axuKRJyvlaBIXUOLOZHmqxmN1YnrzSJSedwYsE48GoiILO8yIO3sXSERKrzO0iZAxyFCjOUlisp9BnAGl174v3ZRDFK1Jxt7oKzu/D9WI5LIBmSXf4ctkfe9zjSHNGB0TUoTqSx0MR2ZnnxO0mn5MZ4CeO3ICrGiyqbilVdGP42eb20JxJaCxi0nuu+OflZ7+P7No4HT62uTZwlWUDgg6AYAAPAeAJ0BKoAAgAA+bTSVSCQroi+nkzmh8A2JaAb45QLq3qvzgaw9Z/c/2u/ID5s7V/oeOARp3TfwfJu9sfmFfpxuAP2q9XD0SegB/KP8x1kPoAftp6an7M/Bx+4X7aezp/9aUNj8b+e1nVi6v8ab5M/p0SjOW+xAp0q3d0sdud3dBfOXK1/Hu2UI2n7bnquAjZh4aPqyKSIDBZQFz1gooeHyKxa68JGYucBDtSRXBosf+ThF3Vdapaq0sBf1K/WvE6Kwi1Gk2nSofI54ImPeKxCkcbI8rtUXJbbFZnh3n+bPwA0a9W19F9cITCZ6ljyiljkZAdpp707Xn9ro///6PuAA/vGmRaq84LMX2SGNGyU95PaaT6ll9xu5VIUqnan6dyMvs+vMYW4/PL+9PlBpAlUa/OwVQv5L6TPJHnGu8cgVqe6ypp+cWxPeGFw9D6SOLbCOjNRptgmoBzea068Qji7NKotTc70J4Vy+BPQaMllliarrANZ/z26gMRbItPetERDmD4bPxCOaLtuRPOvlz+YScsHtKO3/S2mTyu5voqYhyVQdWARNT+X0OC7raVUbGCgWrsszFf0v4XZSKSB8bgebdULMNS0hxUXYxYOxYYUMG5g0RtotmkKaRgQMkYRSwg5N8O4hnqMq+n+x2GCwbOZUDq0uChViUv4chsavDgP/35fH660riATfhoNXPIFdO7D6SCB/bJdpT6Kfzir7FigsrWXngXqxMkf/NgxXwKXxEHqS8UHJXrrLH+b6d+bMGTsPew7qPIHlPueS6RwDrzH8CBR/41ZqJPLmioJh+teFZCiEVbIAPoWy2S4XCC4c8256jhHgjCjdFQVXHf7KvduEuG974LXKCRVpw6LaRVH6lkJIp6TqTAOBngifk3DIpucXLWhD8vxUihs5eL/J+csc4g3Nykduyy6CbW+u6VEQaamFvwvhK4uNmDse3WyOiETIJYt2urXuinQUnQ1rcohQTn2zd/QLdiT/vYXsW7Khk8FdrCQLqpYlrov9saXADicxxvJRXtvrdWqyeya4q777osCqTVb7/xtyhQ4n9vhKdj0Mef5HVoqm3wRddZNPBOyW2XOCdMXVafi2HOl1TI5YTA4nWWPVg4xgYibptqyM1eQDdrzGyJCrJsG276EMRQATiPK4RbBJl2hO9o9DoCkC8lR+wBmT2G4G7Sr3FD460b9zMTaLR7xpCUSlLZgMsPVOmf3XYJBbW0z+SAzQ4YeydVhpesdo7YjJomDP6S/8Rane8JAUBU/AQwFk5f5foPyZaPHUPqWRiSNXNOsjnGj8VQZCEooVw33q2gi/GIfRGMFJ28SIBPCMcxz5kSndYrVpcFCrEpfyKAZrG/qpGwzW5K8wYlqLWHJD3kiHxNAW4dbaojgCaU7kmY6Kufr1XHE1N4E+qbcLiMIfMG/wbi9oNO/HILGpTsL9MN9azUHBxM0F94I0V3mWNv0G7/cTYuHsrPw14p7QFXNbR+RlnQ52OOQqIR/vHuKvUAkFrv+p+PxtVxDg7/uaxvJy+n3UjaMcYtDcfVBeODfekvAG4XPs+nfHlyJvRHizWvVpeYUxJsnHp4eFXZiZvXvn8kcWSs49tv538dbtviPhhXHtNsuzMLIpHva351ROzqBlnbZyb9ZGQVRYrb5xqvIYpzun9jMNjFFXRWIEwKac+GOsFiBn2X1ACzdSiNLptHA0H3lZY8L0Ak4WNyCtP/AF0YN5u2muwLMa1I2eAj5HfVyaZYdWCWIbHtrWyJ1yaal9VWgStJoDSjbxo0/zIVK7MkluggVtbXERwP2IS0mY2f+w63xICSaejzXVwDmvqAZbVbuTfFM51yhqCvrRZtEcvCbmDRtGBXgpYuvj/PKTT+KjqE9ropHbkYTaFrkZeoPrQWa9bvLj7yqWubbJ4rVgwZD18a+KQC55oFN+RFf8fHuMxCyqb+YLJ8u1yN6pr3C/bXtJgVhFZt2lxatLgB/i48nO4Ur1T0qCSI0PQ64pgLGHZrv8/8JpYljR61WM9spY7Z5YWdkAbm87SfbOeK4IdKwgH0l78nmQ/ZeKFe2tniOL4Ph7Pwnc6By6iGrlAYMs5HR6jVjoJ3ifImipNCBC5tH84IcLmSR751v8ixEDJO1Af601GJBf9qlVfIPxChKiJw10cwBLSFLFC9kHmcDUCrSKwERIpsZCa7zjhT9UuT3SYejM5DCxYxcFYhjSDERmsce18F94t3JbGpuxPoDJd1Lnnqwmt0yryoMYXEcihebRw58XB7DB5/NWB4/mvOci00MQFY8XM9ueqOdGcEfzPFk9kUkqNv1lU75F2t2uxBFovOskjFNBLMyHGr+26NuvYEum+ZQ1iWPUAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-QBQHKWYU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-QEGCG76B.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.safepal/image.js\nvar image = \"data:image/webp;base64,UklGRvYDAABXRUJQVlA4IOoDAAAQGgCdASqAAIAAPm0ylUakIyShLZXpEJANiUAaL8eoR/038XOj5017SfkLmVvDf+v/le6Afo/+lvWA8wH2zcIB0gHoAdJD+2X6wezHmun880PI9W+9+0XsBlTxWJAGsKXxt+cu8mVVPuSj509aq2LJMBvEWpN/FY5euoD489ZfFHIEiiRd1qu+agZ34/9TsFPUoSttp8vwaBixe+XfnQVLllTOqcD7JUuQOfE5561NX3wzIFjhDl8jZtxAgk6AEQf49GFRSmkfesX44XEzl+AefENGYRybNvAAAP7zLD/919fa+vtfMIpDoHXSQAAAJm9qJ+IWPQzaLbK6h2/h0os06U/RWvOeg/Z7/4M26wB5o8OENMAv7RbqYU+UYKxfdbFp2g8gM6YzK50uQdIV18EYGsmcMYmfbLuYBxVy+jgOCGZSY/euVK5sI8hZWDFkSoe7OdQPPC+ViM+h/7GgR/patEa2nz/5zoDsLFkzx3vboYlVbF7RONx7FjRivSvZxuSsMyRnOX1wQW5y+tBAbxwHUvLG8tmCySn0Tud08O+JK0QUZSprRFEs4/ohMG93+zkRiQwV//+O8z+9oHgtKdg6rQ9YTUDBMu80U7VTQLs42yqlBPEEjYdJfU/atiij/nLmC6vPMN6APmj1q6Ax9ePiX+7kxqxDZZsQ+PDbVc+9ZtD5HbrMFRsi5hpVSsOLcFY+Pk4KLDl9LINh8k4ZO2wwVunxd6xKxfDZa35fWZQ20AFPZ6YD8vkxSHFsEBPe/fydwbJuwEiYhpN/u/fydwa7mbHDf8yCNsLJuvob3xdgJE0ZpKYvG/1ZpoH3EQdF1C1ve0O9G7tmiymeha0eeRT6IgT1BTUQ2TP4M3LysycpjxZNGvAwM1MbaSRFOJMdGLLeMjt+mc+E6gh3t/CF8sKrMZIu+aOS5Df5zC/3Oxl4qgQgsNDrHu+94W8z7XxaE3hYQb1mGEibcJ4b068T0mPtiUHgbfaMncoysUGMtw19Op2b5Tf7ZQ5iwTT45GXLs/f8xoqBUuP8hEtUuJDta/Duse8olyVHv8oLGYMJSr8B5o8H5tsD0bg/6cPQ9IIT89P0ZkAWdt3wB336mdjEDWH4F8N3ImCuFnK25jQpgcA8f4bPco+cs1ZzO2VCD0WAQ6i9NzdzvFMAZJNVF0u6/+3JVonYYNFKP84yP3oDb6BZ3Uu/8QAPu3zU7326alfvoHJ35FU4thUOwXo/b/HN0algS/eEbUfE8S/NuFxEcnp1AtlrnYOm21jKWMkdLWUyiP+SC+SGyNOHSDKY7XBZW8i+I3E1X6uSScRP8HOXJQB4u4pZNmm3AAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-QEGCG76B.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-QEJ5TH25.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.fireblocks/image.js\nvar image = \"data:image/webp;base64,UklGRv4CAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSCsAAAABHyAQSKZeP42IiBgK2khSzuRJoH9fbJJRwUf0P+G5POP33FnKc8qzTXkLAFZQOCCsAgAA0BAAnQEqgACAAD5tNpZIJCMiISaYmFCADYllbt/41XFde/JXiHCGWEM8wH6Aev/6IN4oUCk6JIbypGf+oY+6/zE4v+f/qC+213HEat42ZgIXBgjEb2Oq2tSsAEZTPC1p8BIRA6loFyxiYSUceN5q/SeKPh1ZTlv8myfWspmueKSfBK6kRpkTP1sNmfRFgAAA/vIp6//nEvDPIOh//5SudBCCrOHgIDZkp2cHoDXb9mi+o3asqyK6ETe5y0oY8trKU/Onx32jfQvWH84ZGErUG5VhLZogrwURvS0PTuhH9LKT+rX2yz3Q/KjFHJ2Gb6urW0rQD74m316d/HC9jXTvJeh7ycF4y+GKHMM2+IB4qvglt8eC9jFcmBTkbddwLRAVlsN4QEeJP2NdJ2K4fYCMcF1CWxOSj49x6vnsBAW9cj4Y8bd/Q8/EGsxZDdCWn2tIH1+644ba5R7Jj6co89bZfD03AbIMG68K1+HzCwD/pKTgzA5Zc8vC8Eq+vA7AbD/8VO0ISwbnPzAyTAqfidbiVG3F6OfbvaKG7j6p7L+y+71kGjqm/gXbiH+eRALb78A/Su93w4cJ1Y60o6O1kUEnS+gFN5qr/rU2guJs7TQ8M3n+b2ayKq39gh81J3tMEQgQZFO3Xv/+orTK8No3CR2YbhnHxuf4MMuzvJBOH+JOj6zinmzAs0xA1e1X5o9fNl8k8AKo/k9WHqC4losGWdunGa0ZxFaTiV6qTwG2EKv7v663+rbi/RA83NzizNgN/6931Asy3WXE/h2naN2EGFYQYBTUGJNscPGwunBNaM94V5Q71GfLpTfGdtYP1XaJ9zZA1h5fT5OThtKVL9FhgCBZIhaFb3QmpF11TxhxaAvGLsh/B2Lwwe4Z2vGyznPP99rT//gzMs0pV3BuAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-QEJ5TH25.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-QFDO4ERO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.pitaka/image.js\nvar image = \"data:image/webp;base64,UklGRp4CAABXRUJQVlA4IJICAADwEACdASqAAIAAPm02mUgkIyKhpJcZAIANiWdtxV7+OZ6QNsBof/UQegB0sDTOW8ZMe0sK8B1a+YTouEeF4d8wolWiV/R/e7YKQ50G8d84DlQkfL0gtW6s7oYyqcHGG37v1KfGVSwh7id974v5ieadNlEopJVzd/ORm9c+BIf6wdCa53Dw20UgdbfpEydu8vgA/viYLwm7Bs5fLR0VPH2Yge3yjs1ZjD5ZimiUupuaLqauYggvL0EjOmDgUL0B+Zq/MEYKfHA0S03KnDtIlQqrnAtwlRsP3M3i+aYA/H027sLKWmdn11X4MZ/EZyz0/Zny5WRguJY5BH0mT1yBsgAc37/wWa+SpjkG8YYNsO/GrGWg0vpaBbUNHW0WCX1h9iIFTQ5X5ngeJCMAqo3aspY80ocvprb8PTZUYk9BMSKdCgDAK+5Tc/MOvqf1zok+5Ha+NGed/P4Kf7ihmJCf77irTJCxuu4ZP9aOu4mTtbawtJxrCf+ZNyxlE29R/HkFOx52Psau3LCm/uKBBIpZXuFs98tDzkr0wbtiVTR+2eHKTRf/eNay89FSVRsQ7PqKoHtHeI7xYN67I6IPWSL6tZ2N5FDWl4Rm/XbFCctGvJ/2YyVq/NUVgrIuGxOPYqdpM0sSN8MjPkD/dvD9914dtVMc3KTtzgeAKGP+kr4qE+zZrIVVLzlHgNa1oV2PjYzZ46ri1AOsGcb+GWnKaYszjUZD9FlsAQlfaRUC91ktZpPyuy0Wxvny+wuHtsZnUYEx+qgL1EpZf4BNGOzaa2R9Sp7UuMODSETK6BUfhb7yo70aT3VwgqApCH2AGXSIM6EHDVgAS9N7MhZPmT0qqLIW3G/N56geeUs06Ykn5zP5GRicBgAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-QFDO4ERO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-QMD3UXYM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.webauth/image.js\nvar image = \"data:image/webp;base64,UklGRj4DAABXRUJQVlA4IDIDAADQFACdASqAAIAAPm00mEekIyKhJZXZ0IANiWkAE9/fSPsz6XZIj9g/t+cx3c+DveS/k3Ep0AP5L/hfRp/0PM99Qjs1ebveTUAxqu0jGuXx15aZbeHRDw3JMyuRFeiO/jQTjeAQcJNveFrXhiF3m7dcjl7cAs3xG5K3PrdOQLmfW7VjLNtN0UojmS6vxfbLA2l2AeSQCaZq2CjHCTl9O9tFelJ52hqWgpGgccMavM0AAP78XNAAM3/rH1Pn+fI3TXTTep4JxL2wemmc9nF+OJ4/eFoRiFfTgAnHjzkiknQSz2UAfrl++Wcxorq7O6c0ozYKdXzaGcuy7iK3/ECbRQE5PgONxvcejTW4/DuAY3UUb4WP2cKB7t3MkNug/yNs39tgidTf8ql5Zo/3iX3S71XEh4y7InV9Y+XrPcRnGn6kj7GX6fYYt0XTetQJzAgXHppUPG1pxKhjsVuj4pDsBHQ8KlgXd7R6E1hOxjnSY+WJxnTvRFNCe3Wm1LA6Q9LhM9VF83/grc8+BHi8GcdylJkGBMWGi1LIviGWALBSHiPPyTf4sC9VlLYCB6P1uC6Im645u1UWABR4IqBZ8uT3BIIIGIeD4zpYx/EXqxS2a4ykS/cPal+6PeHX/7gHhfYKqw5lK0ikJ+U25jss+8Vq31jg073/iZo4ClQdDZPILQawqgcJFv7JavjL7nPTaFTPEzynHcLJ6eDJz1QLgv86lGtP0dP5KVuSIsC16s1U+bbHp1eJw/BYPf5aa475It5J0IzUR6vxq8JWCq+FRYadxQ4e083L8z/Ud97j9FQqsCZui/TWm8bI7YKzYhm5wS3G8X/u/eRducD9IjN/OYhHuWbyu5xlb71SZOkZmoRcE0kpvlp5XsBZZv0VivOfdCEBX23ct8gZJneV1k8mD8CHYCXkXUiYS6BS0ksQ17PzBAyGE48Kat1Oqp6rHiODihFPhvE+CvynAUy6TnS7h0Raf4h2Tc40tP3p6jb44zjr7NupM27lua4iwPmiW+7MG1GYACA0zvu+Xcraci4BS/aAzV+El4ygFfZb5e8Mfv9sJijjpF+1evvhSqG6/wyU3ifcAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-QMD3UXYM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-QTWRL6IY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.ultimate/image.js\nvar image = \"data:image/webp;base64,UklGRkwFAABXRUJQVlA4IEAFAACQHQCdASqAAIAAPm0yk0ekIyIhKxLpiIANiWIGiDQEZ/dHUAL29GvsvnU2D+5fDdzupre0P8990nbL8wD9U/ol7v3mW/XL9VfeG/yX7Ae5D0AP7B/d+sd9B79nPTO9l791vSKo/WWU/CcUc9Ac4rGBnhQF/15UqUeR/br77/iv5Mwa48Mb00Ch0/oNjet8g/7Nwy9CARSX5P47iz9sM0577awCwb7WUf8ZFiChRoFzlZEw6niNZoQ2yXK4yNn1knu/FpRyga/Nox4IO5V/XV0egaUzDk1sYLt64SXutxPhvg+Od/sOHb25FSK98/elxRAQ7l+I0AD++NfdcoDohugAN+L+pkgat8KOr+h27/x9pUWpJ5a8v15PMZiP50I9U8jj/Gd98Y3Cr5Ir1UewmEmL/4PtfEc9p48q+fmFxOt3oHAf448vkvW4PL1CQsZ6A9jxsuaQIEf4W3XeZYXTSMR1zdZT5/2Hllc82Bf/3ajMSLuBvd44+pAXecaJe0iiGtom4Xh/PuoqWramZq4086wS0E4lQUZI23F00KJa3If8mM6IURYl3E2NGJdYXZmDO8/MsKpXJUfXC7jnIh1IjAdI1/9D+iJK/D87fv/ybfDCM2J346/j3MN4o/7TLRO4nWAlFe2TTv4jZqJiQIeI9Ppaxu+qeRKSduGXVGJkwPe8ibiNEdzrkA275xGSWLk8EvGbu2KdJO9Pn1xn7etzYESiJujvO5cYP8ni4ppieMPCiyytk1JTUmnTfptfJIhwlIPpATXbeKC68Qql9t/TCJwtV8EG2XA0y5rSmZ2r2TO+j1KNUuSm+bTds+Bu9fMlnSWtpXi7vDY83+eZ18krbG1pztovhQP9mhaADTgBQV3TvDVASn24mBgXvuQNJ+vMs1TnvjqRdEEgWghiHvxt/nutg6sPpJlhLkrukyqued0YczwxVOakGV8VPb7EcnP5tVTaCsUGPTCkm4t/PtmXrHJhxcxqXcl71T9/i0PB2imMzIly9CFoUpPEF8fnvbA+Rq3NYyaw9lMDZ2u4a2Z3EG+hvNWOTXCuHmJXV+/b0Rmcwcb/JwmfZWrpmLLxa6imoUM6W4LyL+n1K1MIyDkTMTSvyrITM+BWvf0VKzTy29/ZCZwSZiVxX8wS9Rid21tq+BoT/dqxoHni0j+r0zFeD3OwhBcag4TRuWF6WQSVrO+49kt2npNhBIWHZNskQSJ5TlA3ZLTnlzIru7YVKKZJ41cYbS+6vP0g57y7Eunjm98hww1ELQF+cImvT0oA7gnH/ayhK4EGkZwnpMSxdv3k/yGt2XvrXlZjMoq6S/Os8tydxy7TqMy38cMBVp4sY8jCHGFwDBS8NglH+gVj/hyYpn60dxpZDU3o0fHuII0+7K6nXklfwEAjyHyoSTHHW6jLKMvWU8gqX9peuDDCFdXo/fIz9wARXjU5j4krXfAfFL4tLudeP9OQI5tuTBeRshC1xgzWHXxQTYZTRDsHrOkmRn+Qx9AbEC5AYPaJtOlVUlfHzHugB4l468qtMbd2SirzL3l3c+05A0i2r1C/waw8FPEGf43e9anqBbYDy2ILM7t347vLTqPtLNiecHNSLa6TLolDA5eTFh+HcCJtYv9fShtgSf25acZwnUJBoqKeWPN9Sk5kMBLd3Bz5QtyNRPJ1diSblThkLhbiau6rC9s5QS1oCH9tvwUaPDSQCQSo+axcNdH6wOPVfKi2DhOJqTON3xl3k0Xdf8AmeLYP6R/TWP/4B+qk/gmfr0Eg37CbZLoI8sW5SclaR0AABqdo1mYAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-QTWRL6IY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-QZKB4QH2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.komet.app/image.js\nvar image = \"data:image/webp;base64,UklGRpwFAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSO0BAAABkONs/9s2P6f8BaRSEHMDAyoTT0ApbZRG6xxtS+MkaI208QzUzIwuc0zAjZp6Xa3izt/f3ZTAL71ExASQz8qbd5YzmnkyGL3ZyLHev1FoYUUsUzTtrf74hAOCT8b9rS9mMRMTC6Emc7W2DOZ2LadH5qboJVcGuVvSlbmIhNGRQd8xEsK/RyuOROhkH/mlVmYS40FV9Wd5lSVKXo36obkscXJdu9OS1mCJlBva0h2iriexevXl271YY4mWV9XbPP7sSbxe5dFNYuVAIj7Ihm5IOBLzZuK6sCFRG+FrUl1Y3eQVtSxxlyJEpO8Bq+tEIieR5wTFLWi1OKVb0NoZpSCxF9+a4Mx3Njjb2gK3tdkH1x/sgxvPjsGdMINj+d////3/C7DH4HhyDO54OAa3/7UHrm9tgdt6Z4Oz35rgTKUIrkCZNrRWmuIWNCtOIg8tJ4iSdWB7OhFFSsDKKhFRsgurk6KrYQPWJ+UaSjignARdH8oeQDrIhm6gRxUPEFce0S3VdYbDGyrdOup6YDw3Srdf0hoMhRva0h2INJeBsKuRj9E1hsFrUfJVrR6AOKiq5POjrAPByT4i30XC6AZe10gImqeSKruB5paSCs1b1XO1dkC1a/lkhBZRxNIF097qjY85IPh43NuyzWImJshHAFZQOCCIAwAA8BkAnQEqgACAAD5tNpdIpCMiISYYCFCADYllAHgl9P4zvgDcA2wHMwfqB6gHoq9YB6AH6x+lZ+2/wU/tH6QGrYxnT6bhkGcK4/iXQwaSrD338HIrtdNcOWMn0NVLpMqoFACdOkWqnWgLj/gjpY7765CAvKU5nSmBxkkJX1z1HWfVONKxfXTSo48d5YaMhmNURGN4rzzk7w6NZbacFTceIltFEjcIcE+ecfFGWhCmnmJNnLLWjG61WkDx1i8eZCY/pEqC1P609TovtcNErzqgUhP9KgLMG5gAAP77x31jrC/rDkAIoAV3v310F4A8GWyQAGBnhotKZt6N2SDQ7oumFfjTdDunjjNTejv8YDL9MeYxCJdrgEZcdISEyv+Ep8DdflnwkqQF3Vaafft82VZ/HHtSL/dXT7T9MtdantRocT/6O4mgGR0uAfdvgv04zwBkir+Z4d2rdlxeof9ZxJKLvh27wDD9x8CY2oZqxRvok+4qoOLh/MSPp26DNd9/ux5qykg6Zeezf8T4Qq2bRLPrJbX+812xrhAbf9dq2vJOOvP17/izQWQlGJtJNediSSubuVlzwaFeFSIJv4D905ui2I6Z3+M5qXrzYZ8c/kOQWtG4j1ILD/82n4D8GnGPFY4XX5WJ6hCfGo2MuBWavwrKafTebZUTbNyf8upC6Vp3R37bSkvf7xVhspKVn/v5TETDqox/ydX+HXNUOd4jHPOGvnCCD9Me4VDKbv5H5Qq5qavyRPF8z83QTywFDQm4XToP3F/QL+/QUlBQY9zwwaId8gZq04tE4++M6ZXwaUHqbk1lp3K9aqfwPp08rcBm+KF8O7AlVpI4jTaII629giLLWg3FemVEl5LdrRMNZom9NOBFSF2+g0tb+qlQeQiG3KKV91TZjxmiywMtZ/NdyQuCKaDeear1D2KPcc1M+SsfpQUcnd0eEMiOJc8Uz7kwaF6w62lKiWq33SBuAHDAzV/7F2POu/NMcE3zzihyKpkgb5e447n43oElX6hkEAar9iZe1zFpOH+aX0XkB4Gmc5cvHEaVv7fhV6fAYIsn/DrP9cJkkB7Xyvjw0SC5XsW8Qq9nfJk/oKvX2s3iG6+HCcxgEApSn+WsHA2vQUmn26sWAZlsdGfNe7JOlMqy+r3anihNeAA+3cXb4cAjOAV/6hIbAAQGAEAaRQVkwHKVBwHMwgABDb5zYQAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-QZKB4QH2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-R2PA3K44.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.stasis/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-R2PA3K44.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-R3QO5B5O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.voltage/image.js\nvar image = \"data:image/webp;base64,UklGRoADAABXRUJQVlA4IHQDAADQEwCdASqAAIAAPm02mUgkIyKhJZXY6IANiWMA1qYBQI/on5GfjN0vm+XgT8cMXI/Y+wf0NeJX0lfMpugHS38+k8tjMjR9brEfuZeqbGi+T/6oF4VWWhbjLqYedGWUlizM34nlRHBrqzCtxZn6/zcKIONGEAUDY+M0sU7RDJIp7vn59uqNOQqGN8nUXEmyACawwRFNjllBmSQoGvkJb7SZ2IlocA9QIAD+7icf/3ebNs7Ccf/izKMoAQAAJuKqpdSgxBcGwJXHYgKK/xAasHApq539kGo9etE+TksUrEX7adwqG3W8oHqGjoifn3iOkyWXud/zlQiehHOB2s2zumfmo/0KRwBWkaiqCf2V/+nkMw678K0/ikz9RQgUeX7S54q3KH0a/AaNVCe2spnXQC0Z4X9TY1quZjB2DEHFgOv8QLYsnQx0OQ5PgmTzeK8tmSnhhHMCPX3kkrybGLsKxDTLPLdaZdWZ0lBGA0FF1OZRvfZcA9M1x+H8vaLdmt09eNzZJPA6GsdSwClb0HV/pOqjRoknK3e+jp+T0Y4A2FdkGKVB+KGv5+sSW4wIdmf1hgdx0ThDfHpX5Msk85eFP/Iexl0pPaEKArgH3qRA2KPfYAB6hX+/LfF63baNWVwwJNqE3r5FhtyzyWB2gL+PU1sQy+DYCcIDIXzwdCDvxZ1RKvY/xU/CIKrHw3Bo4zisV2YzYEIW/Px0LiIL0IHileL/NL9CKevGNr0axM8BmlOdaUJELUyUfsYUVZUiuBryOTsKso5xQFduZf38dR1HcAusRWS9svfMIOLJlu/ZLe/OH7/7Qbz0UBgGE+znYa8CuXf3UeWLMqWbIaQbPGLTkX5X4PCjJv6O50ldNu6FRW3adLqGZiOH1kVJV5YTyI7U8xcInoVdIsaPv46FNvZXlXExJc+uwaQOdtwZMX07Bz43/ox3P+ftQDLT6A3j/D4Xbg9loIyErmSUhBAYvNA7QbxyHEynell4+XJq5+zGGbDe/fw1TXcD0kPGixJXQtUWqvF6t6zSvpyTlVMTAvixRVzHKVToT/fDLDrdQ6Imp8aikZcJMym4IPvuc0MUW/ntsSbWRaBIGlG4wzW+/nP3idTz/ebWM8K/tOEMGQt+YbT67mgHrLinRX3WQ2xx70kQDA2E+0KRLbonjWgRh2cuoDWAEyQAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-R3QO5B5O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-R5DDRXEO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bitpay/image.js\nvar image = \"data:image/webp;base64,UklGRsIEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSDEAAAABJ/D+/4iIBwUBgCTwgAlMAJ3g/13dGdH/CYAUCWJKFeKuV4S5+b8/cPXk+28DsLk7AFZQOCBqBAAAcBYAnQEqgACAAD5tNJdHJCMiISsV2MCADYljA89p/wT+5Jc5Uv9Bv2m6Jtr/MB5wum4SAz9V+y2yq/zdeTLI0n0yvyuvlh886SMvhPf9xinO0AiKjLNGHX1ww8jRRycQcohVRfm+NWLpJyv+6Ds3GRFY9kGImaYfO2t28OaaTZnmkQPlUi3a3t+AakLdP46GgsDQ8bJCxogW3TLcEBRkrZm5PWsUg0Id4eSWpP8UREkrYoVABeg80GxILgAA/vjWG//yU/Stt3i6+umpduvLIynq+r+z0tES2wpBxjLk9LeBixE5YMLFLoXnxAIGOm0gaKh5pDTVccoXVu0O2zKrY8+wPUHS4Kx6Fjw4Sbq4uYiBR8agb2e//qmbo7opCxopK+qDFKxvUU7Na+H3kp6tKMYkhfeeJZyBXO0leYpjypOHmyD1uYMhctb+WpzZ9hQaY00d0Bd2Ay/elK/ylArFFDW+TTMQqCa7jOX8rpr93glN73w0KSwQOTTcrO8Eig1+GXF4FfiH88sXq+DyouNHukp+4ac1bmNNn545/NsWXjP9ViqMmQ49ZuEYcH17GxVQPr+Rr2SdL9HPuTqgctm0nEqx0uve/jOTKbdtFBnRyGAN4nx7mNAeA1C9xpqIk5hWqA3GUKjKeUqIHVH7GkftrVI9vxpVUUoGh/lT/grZswcROIUqkMgssS60WbNXIhmF/3cDehPbg5bqFxE5rd8sBspRfj/Z4pEPE+crzrwNEAnTn2app/76A/KE79dR/rxdrukkf9CDH2JsyWHHxfPV12Sr/PPt9G+Dfe2+loxT0Plm4UNy7zNJ5nPAx5loQhJVJppXA/2KhM7yqhQjrJrA/PjihzPCe35Zm+zH5Bxc0aUqp4di6BLSsOUbPpMCRF5/BsB3xLaRCy0EIw0g8RlaXdOWKfs6x79el8/Zels573FX2HyY3w/gLjvPtKCSRLuSMwGlDWs0IU9rhFRzaforzPnKbGqYfb3KHuxvCMIppQ5pczFKdtio9Wx8RSJSSk2sHSfg6d/CmM7GCiyEFsir/H/Glo+3QUQCvZIOngFoWLqao7Lwz853/RWhJ2gI8rxFj3uztc1nOW8p++l+0/BY49Tw1jf3v/+hINQhf5i3kqk/6vR3F9GN1ZV5aaVW8Wy5LrHw7A2yuF1Q+IzjzGvshEKMGP30tz+rkyjNqaThE86iIhl5+eY9AARLxXCyUdEnYgEL+vOq0Mjxt2IV4SRQCJphMbzmorHH45m2itlNHmovvP2h+LfMgCr0fekw1t+Uh7Rj96o3WuaLVwf0NGthtE64AI1O/B0rOiAEDK31537usIejKWpN7lwAPUcQ0QaJVGw467ABENDt1rcGVjgWOqmG3i/0C8UFKl7eC75vjLyYXdc8vrAc1RVKIlRVJZVerie0spLqmfFnSWt/Prm3B6wwPPy1iX8/ZNlee4CyYRq4di0nfc0kULrXOwoHNLWBmJ0RbAUurVuin4rBpO+xMn+rkZsjc5b8AAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-R5DDRXEO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-R5MXAYSI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.pluswallet/image.js\nvar image = \"data:image/webp;base64,UklGRqIEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSJwBAAABgONa2zLlHcPlmx53995hAe6tw/+HDTgsYKDTkrg7tDZWUbu7u37oSPI/JSEiJoDMd8tvX17ZPTl65BL6cnx0dHR0cmxsK/IgKyuCs2q6dZsHV7c3L1LydvP99mZH21OXGaywgn1UxfAhl/rD4Yooe0t5l2s5Rm25t0WcEqc4zsl4B/OYcMmRnhe7mKPWcLTNrqaxLo63xdUU1soRN7v85lzNMZc4/JJ6Deos/iffOY56yuebo8Bxl9gRUawR2EIkkUrkyCuUFDoGbTCIso6g7ad71HLsNUU94HratOC0S5vgNlZPwe2d3oI7OLoB9waP43t4QffO//3/7/8/P1/h3eB7eQN3e3AN7lK/A267TQdOV9gDrtejFlwdZR5BO86i0DFoY2GkEqGJKqI4IzBjHBE5CsAERyIi3zlY8770Y8o1qOs02U9OAqhqZ/qVaSC1MjKRdQHqYmSyWgNHoyYzmXAJ5VpgZLZT0hyQ+WQnsqRvlRGEscqXLOwQI44dSd7RmBjjQJa3Ccuq7dFuXT5K0uP1jranLivMhkwHVlA4IOACAACQEQCdASqAAIAAPm0ylkckIyKhK5N5YIANiWUcNHkBCMH7IXv/7TOep51rTUvQAspNWZVkyqnvYR/typnel1r3tWqDTb/bhajNMVly+11h5W04GylriLdCdBjb7lfcGjfg+Pudnqdp1tNN0FKSrUsZ4CLauaTdFefw6XLZ0j3kBu3Kt3Zhjs6yr7JsS/Kh9glKeR1QAAD++8O2X8gBMwuB6P9VjThWukzOUOFAPxIU0lrtHLeZygjPin1SBg0A0i0r/Gb6d8tP/wUpUUP+QsA8XZbujKkaJLRkHHjiYfTH3ik9AFw/n5hcIyuV3YoJvJpx0EjVsf7KFtQOY+NVhlMKuvICJF4hYHJwAwQGwTdu541oCxAekO680GsD3viLZWbigeYep2yWoQrY/AiCXiLvDzNnUAswEhrp03W10sMt4YyOFWtajUrrN/EU8FH1LOUYgakX3ZCgtIYCUY17BhrcvIKGehc2UA2TEx7JrwEmTOPCbN8yGTpTs0BceniGpugJ/mf4J78o4KG71zXrmQXoyEr1QBLO8d6OCwwJK0Ft1ep+fG0AtnrBYA022wJ31FfS1Q1wIW3yovd07iCUYcDHndgzu4P+PY7E23R76piP7mIk2MfufKrKR9jf5TSl3jxQxWq/WdgKJzUJmUGN6Ax+hNUFgw2YNirSK8GUfKS6rwgt46Dxv9fRE0X1sKJK2PCv9t/H/3bt739QBxmOeXg+1NZF/xYXW7UQySNtle/nCLtMs2FtUZt14lFkMPsFZEvN2QTNaru2GEAKL1LCdghp3U93Af0e22A7czhFaC4oVRNgLzHMZsRDOtD2xoKeGtMtSijMBv+zPqJ+dSbl/LPwZ8ZMJ90N94jtK+0dCF6Jib0A78i0eEEaOwp8LBlLQzoBgkJ6y3n8n2TQeNhfgAaaMvEHfp6DOwya6gvJ481KwAGBDLaW/k8fxogCvt2Km/ncVJURcPjJCkDM/+QzAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-R5MXAYSI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-R65TRIAG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/ch.dssecurity/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-R65TRIAG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-R6MZNPDW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.crossmint/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-R6MZNPDW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-R6ZY7ODL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.blackfort/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-R6ZY7ODL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-RBD6CLZB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.muza/image.js\nvar image = \"data:image/webp;base64,UklGRpwFAABXRUJQVlA4IJAFAADQHQCdASqAAIAAPm0ylkckIyIhJxba4IANiWQA1fHAu1/sfm0Vh+17o8enuIzu/5L1Dflf/P+4B+jvSl/ZD1Afrh+zfv5ekf/l+oR/k+oP9ADy5vZa/b39zvaD//+sy+UOy7oDA7xkXfrkK3xEAHhmzd/2lgD4QNwguIBubFA//Q1/l+aerrMkD9HooIQ4J4BgbozVOO/3H22ukA2EdfTP+UWuEcZdD56ETna6OraZhRVJ6yVF6L5Wx2u0O9ldhXzqA4A40Yy8uAHCz0bE52gIwxXVs75wJH4RJdNVu3cf9ZZdFnDGutc3nnb4omlbCFiAFyBzrXIAAP76H0ABszcOXdWQWvvXQiFOfIgL0A+ve0DzkLN+WjyG/TbCw13ZHHJwwSfrjevgBoJ1ey8WoKMnJ0nxkzdhgzkaQGVRrOn2MLOKEQB+DODcERA4GXsLXqUcvTCzzfdO5qYORTTr+2Wah4N6q5TQgzBNpmWcU397FtdMpyn6HqB5PsQGnI91N9ioQzSjnV0m8yoNYelMka92gbIkDjQc5N+6J90hHWZjXtnxjP3cCxem1ALY+j4geS/zmlVBmxL9z5/4TxW/fXCn6EmGZDsUdRf4kFFMkoVbbC90Ekpwu2DWmOaWSnjQEQ3+e2+f+GEijRuq9vdbkPv/4GJ9bfIL33UB0iXH98Sq0qnd4ZxtojtARb21jIAE9Eze/5oDc4ZLISI/t8aEc53sCrVfLKTUZgVJ1SmyALgcxJ/U/m3J/ufoN87/+XVZ6YWUc4SfYgHa2Yz1jzy3XWlEZG1P4SLCqfUzx0lqmvUTOXjpTsUdejJaehLrojV3RIlQZYfPA3VS6vaN7//PlQyHkkNuR8nGppFrR78eHNLnQdPASWcvOpAeAbPm57jZIM7XdXXyioMqSqZQYg6qpVhqxaUvMVvUSfu+29zLJQqfOqw9baGL7qVcCMnkxxEukIkRdjQVYJFwIpP4asKnnN8olljfPIOrWzVabQ5eGx3UYRWm9HGgKyP9BZMoge9r9bLnDD0zNvMFS3t5pOut7i3OFu2Hy4g3iW4Gny15wbY0tTRqg8uGnwlQsnERobGh9l1XqhLYTfd6L0E7qwg98ew5gcesoJUOq/iANyV3uG/RfADU1ocLx/PSNlqsiD07o3h0lpcYQNI/eCdP1Sv7ksxKL+SH+vKLD8yKr7t6gFc7ktrQdBoWoSnJAzcj++OSytAH7cx4egqD0ZcOIySKg1Or3WRCbJPrrazf1Vn5Mfv8SKw2dHkEKJBlkPpPojCxH2dfAnCL3ETA5zK3FIW7yxT/TFAQ6KW+zxR1GEpLbKsuCtmLrDv/MsLpUf7LInF6OhsX7CdYvVNCDN0MVU/PhMeQDNjrmPvVN7fidciuPjrjjCbMHVina9pheUMya6Lst5BECSYf0gsvNT7F+NiyCIsuUnbfmHFyboWl4+chZJJ7jKS51LAB4IcEwWAiTc8W5o58oaA3jb7I5w8A6CJcgq/Xamz47xI3qGZZcTF79LdEAsv5DAA/qHpqfbViPdeyACPnXZaRcb+xsSY42Qe6ImYMLRwrPHfUgSI0O1JjcIdulwj3ukhCSzNkbvwSc1B8Am9DH5Iam03ymilfP9QU8XRGhsYrCdpQXBRieYpGfqrkVr469nmM1aTnddI2FJdRHN4Cl6PcxsaMsWlbovbCr3Lmro3rf1nygl4pOOFV4K3J791wl7j12ovzO/7X1QtN+sHGThwueEPvRg/qfUF3/fMzEGd6OXb1jB+Cp1VOOXwPm3SvQDfSwZEJUnJWo64BAAvGBzIo2LThW+M0rE/WFDOa8G+zE2zjINo7CamL6hFkf9HUAMl0U8oN6/amuDRInc4Y90MOaUBGH1/ISMOMzr9QN7euIwvsmXPmRdAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-RBD6CLZB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-RCPUSQIA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.iopay/image.js\nvar image = \"data:image/webp;base64,UklGRo4EAABXRUJQVlA4IIIEAABwGACdASqAAIAAPm00lUakIy4hLBn5mcANiUEOACAn2ufO+b5an8nvJxm4ZOcT83jTopA81iOzeWUwb0wzR37SFxTM9j72IL9+ZrqwyiQgg6t6jhBP/+7Ae5qEQY8OUt7g3r0QAHLDVRwNq1uhUhVnbl36XPwg1mnpmBCbPIMGJuzN7EvJp/KgNNX6GXP0Zwc5DJPtjgwem43Z/yuZRi6ZnjYDix7k5pHCIh+lKwelWIbGw9Ju04re3yiAe/GJI4yY9f/U+vs0nx+MBAAA/tGAAJnY7cqUsKLv9HMKKOcsADNcYLAL6r/TCMLO3V/ziofHYEJfzaxx3DMb6qQaWF1ytLgZM2YsR5USkj/2f5SMRpfgFYZ6531pOWSLS6rWFYz4Ec5d2ccYNdeEU/+HOkWe05lBYPGCtwScywi+rFDaxq4n83AjbApgcpUD2oiQsUkc3eh3LCfDfa0W+nEoSPmW5vsuG3FzXANZ4IpmITQHnW2TDc+v/OePrT664ADgOmVzwQyXCBdOGzRN/5nvpoNXSmYLrKhCkcJ3hpgGyKpS6XE37rPgMhLYAWeI4zVs+5DQ64K+akNBEo4zQRApYesUyOH1jKMbJqbLqVxHDW0s/OwVU8vZH9WUcgf6M/QQPGxLsAbgB3e/Q+03+cL+P5ZPumPORdZ282YZSY2mvSc5I6U5xyEhOR+D27ZI24dKHKhLZBg+JkkbUGljjnyuuluDAVDVywqhiy38cTzrd3+qkM7JCNIBiYKZ5BrcW0cn4la/zxVFJ5dWMo0sM25ohhffE+YEXg249OGPeM9ueSM7Lb6zSKVN8IOEy6jY9oXZQdcKZjespikroBWWcrXweyXZERBtI9QYKHl5/LeJbcFioBVmLXfEsSVzXjrFhyrqKcwP0eU3BGtLJKB5jShs2D0/+9vMJsumJGeplapxq7x2Cgzk0u1GsIjjdkMDt8bZtMMuU7EwRCJUWTMJllt5lsvTPdvZq8yZzm8g3LTEeyxhZ+TkWO9GlTlKGUDf9KBo/xLkTYfbh33up5kaYsH2IK2Ym9T7hCNdBsRLTtVoh2xN/1r33An9FZBS9ZZ2YcIx7V1c80n7miJFXWaizY5NedG+YyGnNNKlRqjlNv+EPNdTw9sUhwJysCv46GGzH6QKz2QLxSUCFELd7MWLyEZM0i6d/ZkG9XILDeuCPwsruR9NtDocctKG1B65+bU/oYC1JviPeft5OSxcYeylchZrlKohDTHn8iaFygMhLE9dLZ1dc6AYuz3WnQvL8fxJogoprxpinz7pRpbwO6H92IUwFccKrc7Yvkfwqm3+UVDgyfduKKcfJ94cv5CthTKhAyIS9Un2ObdEGrdr7Chy2MBkiPUiQFBg/2+ZV2Tvog7/cMfcXpAFcWZWR69kdHnJrNvoEDerpu0N7U1TsC39ApRSZQFkBiuKoG7DdlFTq78onjmYGce4owMVWwmc9wIiYYvk/MxFIZS6cbcb/r37cD1OLn2r+gklebtyDNLFLwZH8ikTYIzOBZoMCXyovKQRDgAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-RCPUSQIA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-RCVINJ4L.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.owallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-RCVINJ4L.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-RJ6X2NMJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.zengo/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-RJ6X2NMJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-RLLVBJI7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.talkapp/image.js\nvar image = \"data:image/webp;base64,UklGRswEAABXRUJQVlA4IMAEAAAQIQCdASqAAIAAPm0skkWkIrMXyx4NMAbEoBOubFte37N1rn/bjOh37ijvvyxy9wj5qseUMr4ldHy+xeOHQIXVoVcPk9KujJC1Ko2MkodzAvzX7YxkrtFlXf0p5nCQtLvAQQ4iBF7nacSeab62m//DiPSYjHK1kk6eW4ZWpWYwXIrJSSiPE5IYTdJ8BZJtlIZKVr4aw3I4C9NPS/9QAASWFm4dZps3v15TFMrx4dB55gx5ZSn+yr+VmqvbrKuDTEc/Yck8XOFXsxkr87QeEsEn+fnArfrqjwuW/piRfdkRyZej4eOuZ+zPWWH8ejY8ZGVg5AY8BaX+SF/9brv0IDsNdNr1xIquPwbpVBqgQoZ0uAAA/vzSOY/8AfeQgjF2JmMjolj+5lBZAg/1/uL3yx3N3hai2KwphMIN67B8kH7nHFRGXhvRCg0nv7Udky6OYjOyJiHVRx3IE5TG8Nl9d9Hmz2WMfTbBNf+yOKguCdDqGm6jK92rj9B5jzMh5bUdXUod3kU1ZaRHsg+aJZKKCOS6l8o0e3M2AnR8CRP1lynMOJN1bgO0jZ2E+CDuI6n920vy7nFPA/gpz561zZ7b0a6kokfsdvccLehfaWSVCHJS+QMhqGURVxzzjeUjX3fhSiiXoedtUmaVbrTVqm/Y+QLH5/kIJKA4bHDRjSuHpB95RwxQyn1NXJnAZeo/3kvoEpwvx1DGHJzAS2w91VEomDTgtfsT1JzXznI0NlHAT5jlUJ+/PJ1aJhYHBFJ4xSQpoid8pEdJ/1sy4NW00/E8JHX/pNWGDvDot+Ejtqn99KbMD++Bo3a5dBL/pdbcMWGr+LkkCwzMqd47vM5/YPAKOf0iY3fwfGBtSa8TYdkAhIku0Luk7mpkWU8SvXlAWyJqjZlDg5h/0HnqMpEooh6w04ovsrCDQdGov5Z/elewT9q8ngw2YNN6CptYRdafKhZgW8Jj8mbf2c5PobKig9DdzDk6mAIAZG3+MYvGb0i2U5Kc/KnuNaI175/rnp3K7ywAC4wZkbrH4EIitfVRgWqs0//VVaCo2b3ovn36rTsAe4DqVDbsmzsfBqqzfkYlL+JsMt4oGYO7rCebSVVbF/ciZWbFAZclo31JwBHoh7BxaQa8S+lvru8T3uv/sdR7oj1F0h2IPA3LNwDQZ5Ji7/uTcdFVwsXIvzUYt9hfZrusxU8xYQUyTk+9MDbm/mptmeJwcnMvPowOdySJTcVdbhsAqxHhekOBRdnNxXUqU3GwRO3BeVU2GmueX9i9aiLAhiYubtuZA95n1Jl9e+UML8hWfV3PACsTF05xdibx40xLksEtHUQjh9PQJfSfHBVzHJZEQFNu4gEHIkPZoPjLm2sDAJsehyRUoOcPFDP2KtRbsU4p7UiTerhKLK+0HjuD3CVwG4hSuFmCBDZzcLVpROBcdJpC3ZhhRWhLipjWolO/pb2f3V2oT/laq4jM2VIGeimyIEm3eFQhFQKPz3ZoIaLK1aGdtl8zekuMviE/ctP11fOA7B9M2+wDmRoN9RlC7w5EOvgw/nCbPYIqcIArUh0zk5OBnlxAp+4qP149RG4qcv/sW3HO9b4xlVYKrG8tOOvLIdUvzWITYF6CHE3BqJXjjQAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-RLLVBJI7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-RPHSLWEQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.get-verso/image.js\nvar image = \"data:image/webp;base64,UklGRr4CAABXRUJQVlA4ILICAACQEQCdASqAAIAAPm00lkckIyIhKpkoAIANiWkA1uuE+PDnrfoOGfXZ3wzH3evFzfzjZWJvKHKqrEzMzMzCritbb0wRrLsTgD5pmFdZqTfQ2AakVX/N+z+XZMak7VWECqxz4/H/7fSRy8IDJwO5QWePeqzqxymdWga20UW7MocQd3eTN4bSh9ndIvzhmTaT+D23d3d2AAD++nlTvJHcGpoABm+/prclm69EMUdtqQ82VejCS9rLmrHPcPAOzUgTdD8y/tjDN+T+poxOQ/HuCJ4OWBCfwo0abfaaPtvgRD0+3zKalgHnHA+vCIKbt0yqqpo+os7G1NWAjCjK2SzbPy3WAav8inYwp80TEpA5XtyUC0eHy1d7v+0D/035HyAuoP9izfGmXesxz2/V+SsySx/xpfG5KPhD4KRHwRCEKB51o3PxCl9zATlj3E1oAZp4phz5+doOKB1+c9Y1UxIJ5RD0ipuSZSqzWbissfC9IbS1rUCcBx2fA/qLutamPp+2kfONNZGvK1GvhLbnuPqQoO2guZAlorW+KRfcQYx4cgZImyRPjcHcSli+oXEH7kW/Wg8aX1VfZ2UwU097aOtf7azzipaPmWg0158cftvb+HIz/vB8YiLG2ebkXa7DBguKBapp70ql4b9/Khgoz+UbM+Q4PBGCb1VWTvErI2PbeOSQcKWitb5Gp5//Orx/F5iET8HaueSlyEGe6j+4NoZsoRvmFtvT1xh/aay0ZdhsWdBxxG0jpMAuc0Vp0PdYBjHQX74HHGcey7INmFlbOf76cOi1y0D5tn/FhwPcO5JWI8yzNCmGFPnWq1fn5z/2P2eamLjmiZd8QFGEZwtojzKU1nYbwAc36f7vWd88Jt+1pRLHeF094rFz5OqPKIGz53RayR99Za9IuqLuk4hKQu1zCAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-RPHSLWEQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-RUAKVMHJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.rabby/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-RUAKVMHJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-SDS6MUPN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.concordium/image.js\nvar image = \"data:image/webp;base64,UklGRlgFAABXRUJQVlA4IEwFAADQHACdASqAAIAAPm0ylkckIyIqKZKKUUANiWUHB2pYhf9kD+V1390Afivo2YvY265DMCTIZlLC/eeWgP5vKXt97H5bgObkoK5hpHmRem/OgG6RNgECz4+X/i+oPjnKZKp214+k92rE0wyb59Fh+ISD56duiiaNIbXrxGD2Q3Fu5rbzNRJEwyobAFEypteYco1uLykjYOhw0qM1Mfmmd/M/MUYbssci6ZJM3mAJ+AZv7fK0MDX2vAob6/YMMzS55dCIX6QFP04w2AOVtfC+LCBihSGDjXnPXlcOX0nheYzDVJv8FPXsx+4SJ4p4JJd7AAD++lwejSGSdVtPlh3uV6R1NXVzZxkK3vZtl8/HBydJ/r29jzzO+6D5bm1+953+J3hH5TPBOLcNYMNsE+Ajh3wJp4GY36az7bvgE7of1ouv3GdQIcqUx6R8/z5CkquDDTnFyjNAZIcSkDdlWT7I2K2mm+iZO25100GgmSQMEAxADDJPZP/6tbr39CI1I6u9oV/F3wkXJWgzSvMrYx+YorOlXQXXTSaMDv2BPHaW0E071xapUZmkVypGAj5chbv06oqFX5Ha6TMwfmxoXwU6fnn1AKoxh1auYLrtQ85XJu/6eWKGyhdTkcuzkSqYVtd464mZeixhHWsYCavwyQxmUeD8w9QWLZCL4p5BVCvzJ4OSQuCUgn+4FOjBGcncSE9C8mkg80OAe+c0yDFWq7bvN8Kzz5+C1a0/mK9k2rwgLTYsExKcgkobDehGg9Y80EO/mx6UfeXOByH44/WWCqAj8L59/Z2znAtF2Cn6pKuJxI1ADDhQeNccoEY1xkGHMya/AJ+TrHInFud4Db+dnbnXRr5MtJQ7pIEbwHuTq7/AQbZfMTGqxSuowYo/j8UEFaQYiXS8pcMYwHTOkttGyKtg2EQV5mf9zWxhB4AL9Z8/6+UUrcKoOp+6In5Gg/J+Js3NS8MRBwRkhyH475shOlE8TFiavToIW778oi1AbHIwijh/kK3SSMVt0zwWop19u1e8qgQ6UgT/DbQrbw4KSrctniBgTHcULSYRIGWOP8PlPlVJrm4lrsrSvcOn0NY4m4NixAG4XLety0AUQwGhmkUju1N0xRXheX3CqhFDWpJrh5P/fDetcAr6dwEe+MzneEhXGpECAOWJXqx8c0VRcCCNK1nxlKhQKuE/0HmiaKhu7KDjO8m1QiLT8u0HRjzFzFZJvM4EKsm30j4M5a4VR58LlKo51snFTy32La2R2odKJf+z7yC4J77OKVFe8s1u5w9YECAh/z3wjViUmr66WfGJvNKkuXW++GuOgCskTwhbanA+cvHgBNjbrFg6y96rEqlEzdZP4qrmOBwJLqgkbSEM3BqbQvx+yNfbAaRbIPY21xli9f92ZsBIBA8eVpFTGXkhMBJ6NBasWpn+KVRvvslz4NXKNp4bY49iMx8z69AK8CdSYpp4rVPvQrGDjhjTYlx0k6VV60dGRgWxcW2Up8GG/k3n7hJ+yOJ2CBo9s1IAFaxU8PnXNdRzbrHwdEnehe2N+qTGl6NOn32bfBQL7lsERT081v9HGWEfnmUw6oEwRIUl3+oaPg2L28RuzkA/alqdRGObBiBKN28AHXM+yR40ccrmgeCEpqlL7jvoKYHSC2bGu5BlRruao5GSfBvjmwl17c96kIC0h9z0OpOrP6LH7Qz5XGEw3sxNdQKcxCMVuJVrDueC+fG83A+LpPYNIgHlgf7s4XW/arXAHPKOJKL+uf90pG6LXIXNejECfNEfWF08+QIRg/R58BP99EbudN9iYfX19ACXoQP4lQAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-SDS6MUPN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-SFV565LD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.didwallet/image.js\nvar image = \"data:image/webp;base64,UklGRmYFAABXRUJQVlA4IFoFAACwHQCdASqAAIAAPm0wlEakIyIhLhLqOIANiWIAxREVe1XDl7jmIO65mz0583/U+ob849EZ64fMB+z/q3/3f9Sfcn/ffUA/aTrHv2q9iz9Vetj/daxXvUaSaOTM9Hg5/na3Fp02Litk3bW0yZGAr571/WuDMAzGVqAHb/DMSU6PdQxqvM1o5CH+cXRyJeDWZnoF7nrpQ7L1Eqltk+JEnwGayUPxbr2ittHCGMzVEwyv+Bx+1Q4fLn47kI5r+tfvxiOCYgN99W7ngm89t3An6ed6STUTtvVGJXDH7Q13B8ok05TR8f3J17HpAUcu+Zp+wZHR2wgH8AAA/t2Flqv+kQf+Ig/8en6jX/NRf38/fzk6ATAQaHrPlu5yDlFOSKv5RYD1t1gflKIKSw6H8/O39JfUrh37XuBEB3MQiIhtZnkTZV6MfYmQUN+bBAm1LqG8AAKlhxBUtBcds/ocjxlsSHS2JDoQ/Y+CXQMbEAF0VAF0pdk3LlYAo1ll7YhaDyraZvTwQIRwRHNflJSkVPWgbYLOI7IHXK2Sfd6XpKhbd2zR/CmjSBpYXsqeWzt2T+TnIENbM/9j8bGd/1jwbZkF+EEYoamjDtE+OuH2rvoaAiVMQTpLpaIP8xWtvUCCw9FCgC+EOUZCzXFlAtmZdamWmHq95fw+5Ux1n26d/I21suRsTDEwUhx/8s5dm5sdypimy6CRNKsrLeNVzy4qqZi+n/KKicil1ByzxieI/lwETcnrxUzQR2irxN4n6Byfp8JKc7MxoFuMCaiHN10x2MsDN0ev8iEXmHtt89gSvqADcMwcWA/ipeU7/xsclkbJjl+A4QrddeHbFcAUYeHqcihns3gv6URZhC/Qlg6HqZH+DTEg+/jNlOJX7jLfx6CuuaJ2dbnVaENK3nuxtg+Ls4CyAvUJ2V1ctUYxsiBJ+uwXEf9hqrakR7AmqkuM6bZIJdB6Ivq2VIVMHXa9gS92+z0PiOgIqH94Mm1KtOkXk63r8vREc4YUUa8LzlAgwzPvwuwBrc0gSy45PwzqGQNHbb6w08XsikiY/nT5nYUR8KtFpRiTs8qz5jQdIVfLRbmhHN+3IAynCztWxACfLo9Ue2EhILbjOPGb8b0FfZmfA5+royDi4B6UJcO3V0gQ/lwrknCgt8++Bo8NiUh+X+1Tsz5+wgX9dGNI6Mid+znSlzD/Cw+rRupACdP8tRMYdfrko39XCMe2AzA7z6b3UHj9XqeMMljd1hMHWnAhxvriNVH+O98EF0GsJo8G1c0js4H6juu8Bt/T7pnPCa3fUyhZow36OydbdCPgFCWczNCzU3dFSoYs9qlGlXVvlQrwNOwObGeqS4Z9loBscj1h8kdizGdCh0JKYky+92funTmUJxDaIM1oIbqVG/mA/vq18UFPmpZls86yWkpIWTxTb4ij7H34psjwAF5xGyBhilA3CjnziSokxta5IOOXVovB7Tb8kqwl5pwDy+f8VADYCBm5L0S+cz6dtWRttULBXwVrEPtVwVx0yhGxDXkIMmUKRtDgd87vqxs44OWxjJCcSXsDCJC+DPop4tbBxQ+H/YbLGFaQH54gtQ5GUvN8LHgbPY3W4ELYLgXzjhQUQ8HVtR36wR439PVkbTp0O9YxWpAo26j38LSM7Ps9DL7dQtQ8kzirFUD0fxZVZC1i6VT/4Z0b6VB0++K0KIaeKuzG7FDbBVz7Pf32PlbOdlf4yQzMLODe5z+lwrlPh4KMMyauohac6HkOo5GmbiJUDOkW2/c7Iq+odG5JA0eu+m1EtfYDLRmL8blpQ+lMUlS5uX3PfpuFziUz1yjyQudpR+kzygAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-SFV565LD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-SHZEEMLS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.goldbit/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-SHZEEMLS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-SKFBWVXM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.phantom/image.js\nvar image = \"data:image/webp;base64,UklGRs4EAABXRUJQVlA4IMIEAAAwGQCdASqAAIAAPm0ylUakIyIhLZjocIANiUAZGaAiSvr+U26j8IYgtOO8U/p1+YDHZPQr6Zf9pnJC0G9m8s+H9yR1bg1LzIsM5bUpTYwT3cAfdU5l/9CRn4xyCZfi3eOFH0fNipKzp/o/3vmzC7yt3/OwsB8VPOcHqn+Gt8YcyhiZFiSxusyipxRReKZlMnAOc4vG1t5vbdosf4lB/0AVdFq0YNXdSU2ss5SfNp3ClBvcnTcavKO3qqighYokVhodRX/w2H83+UP/U3BHXca6U6AA/u+emf/5mj9AvkeJyKGA7SgoNMZbXYf/m3+HIpAkkXxG46bEexQIiN+aOlcFsF9Pq58tUPDsxfoMYB4W2LjFf5BnchiDbiR9542eUFEYI9cFYVwIpdeAwrqVAxrYQ8NuXxX3R+lIdr8UoDFqfG8zdx7IABj000r5NG2iW0EE+ff9TLw4Gaq0CyXfYxhVMpIf8DZhE2fJqFOw378iwkzyjA8ShDJip93Xa3UijUH2aqnGxRWypmPS00vZih6UyYqD+Cw/2oUgT+P5BDviFjEctdmXjD6NJK8FNRyNwUGHgu2lYcIwas7FtcZYCFQjGLw+3BcVyv67Xt7BuNXb8jMBySbneMkexJXwv/RPy2D5fZFPAosUvoF2tnJKLI8vkHuqwd2l8N+I2iHfiywDP4sq731Z+j/1DP0n0fOjb8SbJVRH1/qE/WO8dgctw/kIlfahyG/Hz4gu+iy2FkH8TUdI0Pfn/fu2p/AaGd62SfwesbAgGk/D32aVKVylIfZfPtb9xslQcNWm/lAaQAG0vIJTwlP5H6JzF73Q6kUGLeYlORTIq/35JLNsxx+LwG7YRfIb1pYzA09sizpVCHoSogTiCJmU3aioORAqbgTnr12V8vq+D0FT3KxFNTlvyizv3Ky9FuepDtXuBVIIpwHztk/yAnUXkm3+NTDnd7JlLKAB5q+JL2jBLzcj1rfz48qC58U/jaZ8PmX/wmwKo0bRugkdSf2tETs44Y0+ZkmPyUxpXRumSfRWO/KFKi9DE1imA8qOCTNyJnMPp0hMbYWo2g/ACz6KTPOIvjWg4RkqEUksKx2doENyp9g3EpYWa2qCSiqAaUd9Cahmv69pFRAPClXGawhJN17qdPptyINW05DVg8sxND1rFzt4tCg9ljXny0QAg/MJVIGcSJROrWD2PJX7wR6C6B87Ncn5UptGU1Di28lTTF8ZoxkoHM3N3eEzQEhpkXhZbjvO3bU5IYGfQIyhT8xRu9RAW4O/bVqs1vWCxooJ2z4JXnNiLNTI2j+ii7S9eNZyjngyC0oovNXvCpJjxbNO07vuSL2MYRGc4FKKXsUgnry/Pk0sB6T0D/NsG+EKRs6oTNqE07xIwUJzXo3mxqwMxyhM8wB/RMUJUNjcGV0Tjh9ceW7O4iFi8iN+U+YNeeKjwmwWyeKRUzxqvGiHLwHHs4yvMUNFZKHdsdsY9d/rKg62XR6/CsOYCcqShUqA+ZgOySsusm7tUFDPE4rwH0F6VvxYeBkTT93O/Xf8Ay0t45tyJZ9hzd/UL7hysfSSJRcVKdEWTTswhdLnCyNQGRiYeLwrpW1Jz+lnH13Y4qCYhR7N0siv490KTNSVAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-SKFBWVXM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-SON77BIL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/baby.smart/image.js\nvar image = \"data:image/webp;base64,UklGRsYFAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSLMAAAABcFrbVlxdNG1kKoAaaIrE0Q0NZLDUAJIGkIkM/Nld9aeImAA8bUafz8ryzH5s8LrUdk5HoVGONFstXxlMqHyDGZ4I5Spnp8QDtVXWm7rrXeXtekCaytxI6Egt6sZW7naayc0+kUt5J7efhVypf////f/3/zvwWciVvJPbfSKXppnc3FhyFjpSixrSUDMS6B0x1wOA2mhtCvdCOVJOiQfAYAKhYAa8KLWd01FolCPNVkvcAwBWUDgg7AQAAFAaAJ0BKoAAgAA+bTaWSCQjIqEkFApogA2JYwDXWdo/Lj/eOgR4DG2d8xvk5er7/SeoB0m3ogeXF7KH7i5Tn1d1M30QoKdab8u8S/k3+J3zTK/EPpOJoXke+qvYO/W4fZSAtPJkzjYsBlsQswaaW9qg13I1SC5guq72eM/d7lSFg7/tgzIykXrZcq+ClDPvK8lQRKK4+R2BuEy2FHOunWbybzVdqkKYtrU0EtC44BG1N4LjwXBL5Al+EuS8eJcm++YKPi9m/olLUhn20N6omEPAKS39MbMhq3NXgAD++5KkcRyN/OVoTpxNSOaO4cSgvtZcjeMvr/3syBbif/AklmHdgRovkX/rwtcf4/7butDdAIIRXd6bgFhQ/M99ELwRqSPChHVlrjnQP9Gu83+qCDmARn/GSEisp+4XM1vTe8hgNHrsuvPiFxiHHfhhVS1agn+Dbg/iA8f8/8ztEJ5KodSnMQeKJJRMh3lrILPZaKh2olk3iVQlZSJCOdjYjPr1/Mb6mK3Xgmszrm/7QiSBVBYOR6CBNb+FBNu0Y4J+cvXNsrG57gADMWwGjOZ/RF/cQ0+ImiZ0Ev5Bsk6nWDYxzgip6h+sjhZpzak+qZNs/P24cvdWWoA7HQVv7C/3W38/7m15/DmUwyYRSN90AukpMQLZx0Vc+X7ZtshPocrS9sCxSfDcFYb6Qx3PJvPB/3VccdF+63Ean2S8ljfPu63RiuzXOhccy3j3Ve1fSSAXwvJ7D/n/qBakz6I+Web/zRsnzvGvGOyMxvNt5UXCPW8c2Hzi+D8aXkjIaTukzjzXvLBzeKN2xGON9Xjt894XNLk+9CQjmjvw6j0vGgZnagFbRuP2t1oV3lbLse3yCzrvn79gv88qHAvytOGO2mzmRQB5DvuoNamFJqGirKTnbo8L5dxRLhgZtynZDxaRq/l5s8aao1jkh4kjSO9OPKTqOs/dw98Ad5sNcq4tnOk2wr/+Z6ZIInx0HK309BF79dHH7KJSlhpEWP62+E1ZdeI24pZ5/3RBCjHSBl5TyB0n3QM29FGzbDghOipPV9e6FkGxe7KQAIVJ+JDNxDXhxWEMk4LXZwePipd6IHavznj+7wCK4Vy23ZRDQ6jfRA4KQYPJLu5dH+T7mL36/pbeyTqFkBnpN3sXw58XjzJRu/FFq4fU/yOYpFsC/8Bp67rnxb0ficpOrzyinbXXOfbIaRUwDElzGH8KM/sQ3KM3BdkXKNEjo3JwjXrRoO6eyP7xTWKrx59eYHApedkDOln+pN/WXiIgx/EC/+/7gNithQq4ttkdiSy/UUPo4BKFMrTNzIsswXsfnq4OsBIkAExvBh1Iz9clSkvTjG56Mb9jdkRGe7CeBKtAAJ8Sonvw9l6UKldOm4bZCY/1Sk97VFfSQW2PfCEohKb6wB8h3lS1L/C0xHShKFHacpH3B+ryXhYAFEojVcsK8JkBzsdPjJrhZmdKIn3SgFgRpNpE0HEx3xd4MHmgtrTJHHwFT//zf6OpRif6/1JNKJbZu4AzLoqw1htNykLwQnJx4E05lOu49UM6uwmnLwnG7xilKPyO1tLnbZjVWm7CwHpQ0Y6OB3WQBDy5YXgpnrUK6qCGfKWoGlJ0oCXkywGKmyrTITqbqDdrcqLemlQfSsBmMi2CMtX9MkSIvBWa2XYI0/8MknnSgQ1AAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-SON77BIL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-SPBIVFWA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.kriptomat/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-SPBIVFWA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-SQEC6SWZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.oasys-wallet/image.js\nvar image = \"data:image/webp;base64,UklGRuoEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSGUAAAABD9D/iAgwjiSpzeAkPQlBoRAauXsPz4j+K2zbBlEOKAyOIOAF9QKuKLAgNiMwLR/oBoElcBmBLZHpXus1mr8WOtz8nxEoIKfbCS84Lff2d2wqsI3mdSqw53/T+e9oAEki0GEPAABWUDggXgQAAJAYAJ0BKoAAgAA+bTaYSKQjIqElFNkIgA2JQBmhI3aJDlxeXjN3sW/SeeP1FfZLvmPMT+wHrOei70AP0R60T0APLL/YD4Uv2q/aP2jGibi/67gztVs3rB8tPHdW/alxHdWnAqY9rE9HFtsuLf/bnzFCzrml/+rOyzon9Ro6GEH6dXiver6j+JEIPYYTZd0fNldc6AE8E2GhfU5ekG3SxyfMHhabJLf8rxfu2aTnpxyXICILbrn1VDdfeEixZMhIOLgCo7p/eMRMMNDr1AAA/qfEbF/Tfej0qk//43d/+RQf/jd38axDdkO7HwZdub+ilzWEtpg7Y/TwNUIfzdkSFfxeDPbLuZNwTkVEmIEsZvd1ykqRz8MTRroWOAAbwizAkfTyT+sdAhR66veFrhpD36KT+x86ic6HS+R2b8UT/KkLey70tDl+uA+zXIx6/WW5rH6b+Qj4uRDiruVswlnYfygCPtmcGrC50qAEwuKyLwgNl1tvKJu/Ed7o2xwCWkn+HK8kfELdzKW3BrSuTcGaqD8tmKh1l2vw/zIaPDBhviqrfIl4/UOrTCNko5m5h3h/7+2S8OcMNfxemicUKXMbrDih/o85zgQ9LD802qM7j9J8R+YdNUBRjQ+Yn0NA9J13c6Ef1uG+CQypA92z7x89dpcEJ/bDMtyv4127h5lYVCvC3GeNcC5cqH6m1SvqKdfc0BI7/iMOVvv7J/YuSX7fNHvjkDMbH08s10A/Yhh11Isbe5l8ZNSQNeld0sY6qalx0jezzkwUmFCWACaJjzprjG/CzpbW+/0EDDa9X98SXr5pUwIcsypF1RSRZLN8uxuI1lsrUTk6AvWj3900wbYjuig7+eNaj+53/dCtquZSufacV0BNIWk4ek8sJ9W2lIbN94T00xqOLpzrfw1cJXCqhuFBK/w+sSYFa5doWr/gXkX+iz09UCl4uQ9Dz1JcfOW5k3XcfUh71YbAruN1In6UVvs29O8wCDuAMH6RADSsVGPQ81wbXHlm0ujUbB08SETQyWSILaprYgvkjAeT7BGZBkxPsDChxSNfiNBnt1rKtLFldSNXeBzOABf+bexuIxga7nqqybh+n+svwEabUFzfFxlVRifJeGQtuDp5F81x+Z1IuQlCR6FbV4w5lKlW/SMfDejj7hmX3StDAuZTH9ns60Mg4mly8DFe71BLqf7GCcLMUVCib/0tBfNx+MILx/Fj0uQeZa+TgKggRRWlgWtjgxUkR7/drcOiGJ0CrYjM+/im0gnyIngT+VIYO8ahD0+TJDb4V4M2n7NpdbkUYZMT+bqT37clRvTg1CDzagDyJmqQCz5rzQlTQ2qv7WX5/C+aPpbknBb61JsciBL7bnGaV/C8OTctcl4iW8qJnVIJDpawTOBMCxIe856Oc0HoZ/MERZ7HgWu/9Gyv7YuhPLoAwuux7HMtzsDLL1vBg8HXTlX9COkL28mta+GPXTcQCD/WTIIR+QskAAAAAAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-SQEC6SWZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-SZ53EEZI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.summonersarena/image.js\nvar image = \"data:image/webp;base64,UklGRjYEAABXRUJQVlA4ICoEAAAQFQCdASqAAIAAPm02l0ikIyIhJBQJcIANiWMB2fyTAHzxWYp9jM7n8tewB+kHS28wHRJ3njefv3GYgs7eXBppJpnmOQa3G/iKPWOlYhsIjT05eSp5xh0+LiY9bUXlc09UP2c+7h14+zYz451RrFJWysTfK40lSsWpPAl/R4VHfARTMiPk+Us5tfpK4GxChFje9MTD59uIDjk3zF83w4F7SRgwYh72Z+P7ci6i4BfsWwAA/vdfP0pnDysxyK4Lhi0Ok8NaMdGZ55t3QLENoEbJg1vberfv8MCrpZIounKtr2fgG0jkCeu1P20ubbFGd7evfK60MIG3KfSmfOCa/v+HeBtiOKBAdz106CivG68tI9zLzz4cqXi+Jo9p+w5e1LGC3tAhmmsPUBWzEzspWAvUd3fqq/FEeEwKWjk6q6NrsmIHZsCH4pXOpuGRHN6ceYkY9AILKA8b9unsP3esl9f0h4oJqwAm7/5c8Jf3lqRGqwyhKKADBN7SesfqiHJ9jnsEp8PytvZ2QZ4wpiN2Lznft76vbzdFIFW5n/7orOMeRvByuZPfWAD5Qz+sm7OKr7+qlDPC8yjXh/SzMOTB8mn4JJoFY//NEetmQCeyQiHRAjs0iAIREoA5XmPWuCRdKb0Dcqjul+scWPggktUwIOaOmdE4VGDpsmlg1lrb6C2oP29yH6M23G7P2MAGiOQBgtbIJu0978ENnV3wk9S5O/4mLNO5fnUl//zaAMfY2HNghR7ETQEYYPm4HzGPLi2sgwKZChWcYYFDngdrm7faOC12+jVvebHw6TJ8S+lMaClILYTkYrxuHAZ0AtJ3pFF/i1vRmJORo7pQK2jAKx+5GwwWBl2Y3z8oEbXZ5KOQou0LLDzyPf9bIzr+m8CWwKM6dRgy7EpC8CQnlghwQo5Q+RTHxc31uO3hgjS+4CZgurWzittbErbuH9wHt3VmAlm8yX4+1r865/+4/VgJvQecMq3QaTJU//X7FzqtofdURiRWUyLiolRAr6oC3Yiu4PhCn2nKy59ZD/LFq/0efor+1/rw178TVSeP8vngZBMoMU0xuaRyiZS234BScX2uk3kesfDO/Ii7mg34rbfjO8rZT9sjsPSzndLRZ2s5dA6//U7ZGCEBR0KWwkp7+7xHcmATaEruDvxoBcXtmirArYiP7/PsT8PutZtv81j14/JH85bDt7q9uo+fNeLJ9YEtp1DT0e81Sddpn7UDlq21lOl49tXlZ1ygmhjehogKE//ZiILwGO89QmOkAlvvhb5GoLQo6bi8X5oF5UYNd1k2o6LPAinNi/VarBZqVOh0Onj/25LCvlkxCrANtGY3DRDzTkFDacBgYDGTSNpx1Y0NQRs/a741gnY8Cj0PD8RFLVa87sD1r+59eyViG3SLvi7mTJ4bowIEYkXYuRA8lAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-SZ53EEZI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-SZDGRZKO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.islamicoin/image.js\nvar image = \"data:image/webp;base64,UklGRvQDAABXRUJQVlA4IOgDAABwFgCdASqAAIAAPm00l0ckIyIhKJeJ4IANiUMSHu3kLuWfoG0HA0eX2hfRf4ofT68yvgq9gd/Veqq9EDpfv2m9FWLDmW9uscgh+UWdGS8ZpPxPb9eirSw3y0D3YNjar4nkBfGd8Pz/RcUFqRXWQOmFPN6jjSNEdWbqep/BazhN15MDQt5ibvEsMOohdt6qTSswZPeA6bRj80pYHj4sD0QOZ77C8Sjfj6/DYUe4OFfSGzPxfawCkk/jrEP4AAD++nk6VZjkhIQAGz0wwXfISuFL0GVtvOdSjDktHh4lTcIp7pXc7AfwY+xk+AIHOD0q8a8jwwe/3xXVByb3zun7syA8v9S5Q/pR6NzIGR7TFn0/Llm+ue3is3GmnXl28zXDEmFnkqrDJ7C23fvHDLWUi3T6+rQQwZlH8u8L+yMWztj1hy80K/qBN3aH8wWeMNzq4MddOk644gxIUcBMfB8XnXchN15c3j4ubgS3niSIxQpvvJrk9ifq3ySU+rPkysFVNcIRt/0crsPsG/iyWlY3P6I3GKzflnxkPzCSuJUelHeMuawDiSEOzGyqfh/FXjnrozLmteZ/S3IWJFF4F93g99wDWar6HpJj4KGDV6HjxM5sj9Ln4yYfRAiyKNnrOxPD66w9IFrkjqjn/rpUQhkJiefIZ6YdQKkbc6vtHmieCpJaNo+pDD/X/RGekbBMBLxgmHeAOZGnaDLLb2w+aFtvwCeRW0gmwbqfbaKrevqrOyeqAaSkTYKYwOIjTvEvnc5BBXE4Z0s0RQ+0DOEqfHLv+9ttX01mD1f5/1J5Fi6pkD7zuainEZI8djxfc34fVRFhT6wvYKrnLTZrlY5zBLjFzzR973LWGU2++Tz5b99H9dJ8swRfQp+Rz4udO9up6Fq9Zc4/Eg8+8BCeRRFlVsBOuoTA3Dl2BsxvHNfigFMwjZlL5iJCQm+nbBfg0CK9zPRaXFJKFPAXbNxhqpLQ62OElbzIJ6pBI6h2JK7xa8AUETK40JD315bF2ujl/maGs7MVyVmld8AAWWMewCK935JmioWjpromPsDKdZqmFJyCVxq0d45V0sUTF6fRAnM48vHMTkj/w6jfXo/8mFtMaTReCn/cy2cCL0ENn5jmXZB4xAJNWd/yVPuVgH/cOUO1/QClbIFmr/qMZ58h91Eg7GRw2Kjn5WagB/e/rsKVKz2cthuAntv9+k5OtggXK3fTsWHhX23pJmeN2zkN/xvGOUv5EoE6SiCSNRa6SYYD4DsMGJCiecKhJr+dEQCe5VDhCRWD3tUQBz41jpaqiQuD2gRdhnY5PPRQFEpRi88LGYMgAXkEcBrVsQlRuQAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-SZDGRZKO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-T4K2HHHO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.myrenegade/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-T4K2HHHO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-T5624ZCD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.earthwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-T5624ZCD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-T7NA4A2Y.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.safemoon/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-T7NA4A2Y.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-TBQHCWRX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.imem/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-TBQHCWRX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-TCNXR5Y6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ullapay/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-TCNXR5Y6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-TGDIBLJ5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/id.plumaa/image.js\nvar image = \"data:image/webp;base64,UklGRsQCAABXRUJQVlA4ILgCAACwEACdASqAAIAAPm02lUikIyIhJJcYSIANiWVu3V3oIB+QGnu+QDqWd+PBGIUfqv5L1ENsBuCt4V9ADpSW/0nBcANMG0YIqJ3xEhNJ3kOl3OeUSseY8W6njKsiE3tgUH1IeuNJhAdVw7Tf5sGnOvz9T+ZTVCviRnSKnasnOxpalLhfOQRy/PKRuwnI2B0AANw8T39kH4MVwuEZ95H2V+7AAAAACfWjkgk+qL83NNxv8KRX2ERG36RPNv31++PRWkEda4er8LWj0jyBGxn2dqNGM/35k+5+en/lUisZlwdXlNzMQ9hB/8o2/h6G4lEGhwy+NbXFzsJzRE8uR6hpf+j0OCi7lbABq6w6T0PRli2uRK7VORkK9QkFtgVPIdaqR6zWbe6i4aV+z9J7FU4b3l7m855uKizf74IGxixqNvvUtvxoEe8OkKNd6Am+R3+OKGptd3Icx8XKmCziScF3U76VsYYUo7GcVQ5Y0VbCFUKCnK+RxDXBnS+GdZ0x3V7f+FdgACY51nIuMv6l1nP+IiNXgb+gfH9rCNyqqbvQIZWQ5yDFLTd52IzqZuaRmVmLPaYIRfJIms66UZOoW5c1VN/sQfJYMs2IBCZimoueMt6qgJxgmcYCnfvnjSeF+tQ/5+P7B5MWBxgIN8nISvloBBjOkVs8WInr3mNpIRt3ypWFDvpWFJ/5f8axTifPPeIfohruX/c+vFrWndfjJNclBoJr8RX1+nOpbj7AXUz7GiegAgZEp2jEFRtAAZxIGxPkI46npAC8q6inJ8/qS/9Zl3xRJ7jd9LCph7plTbb1J48NB5+inyfeDjax70A/M8cp5AWW4BlFC1G6BSo4MxOJv2X0eUE82Q4x2fXNf0m2rJGtQZ7gcGq0rapvZySNfq5EU/wXpHpSJcpYuDGYHuSwPPRdTs7C/2oKgAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-TGDIBLJ5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-TJPXCNVF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.wallypto/image.js\nvar image = \"data:image/webp;base64,UklGRnIEAABXRUJQVlA4IGYEAAAwFwCdASqAAIAAPm02l0ckIyIhKhWYiIANiUAY3ZmVLfkB0o/V5HDngbcXzGboB+zvWU+gB5a3sl/uthGHYhXgb4MoHg3pF5pfke+r/YGJDlun6K5GGmrMKfhLyofvTGbYDVjWirPhud4nHm8r13gwpgDJnDTP545jbrQRa5JmEClrk8tWP+E98QwMSOM1URvblgfHASIyydeF8BUrXx4yv1MMvKbeZWOIlpK869pB///CZgycEsxP+/R3P+iI4HeJeAD+9uVg//7Sz/Us/1LPpH+H7SCYZ8Yk42yDnRKE7ZfvhcTVKtkIpVyiuhxt1tpOP9Gc6D9NvE4U599Z2FnP9sMruSR4s4xgH75Ww8vQtznz9w/4sE00TwWsuVGNoBCsZp4XwZghnbBhxwPPnf+3DHoj4OX184XPrd7LQkaalXaO6ANCiUZgkKFHCwunGEa3/8Nbbe1Fph64H5nfx3+hy2K8kStUbPOj2zNHt8cmyrT45TxVIs7JZAeM+LvdNynbglirDvr8J1zEo9xafO2M4O7iIioCJgOSoAGxlG6Bd/4bND2D7R/0O9Vw1kqr68qI/s6hRmEjBcHnHmKPBo93UC/tWWd35f6IcP+ezcd3MpnuAnpytIEyzEdrouHuLWjUcqKYEGILlAvjfuU2YabCnh/DgMHwbgFEzOhvXV2E5jaYEF9LVktsDLUjHRYPzvVEXj2DMMh1VElBvqaP4mpG2jA10m3kjT/Mr2fBixB3PKit8SPd9/Yma1H+RaFt1EDt6x4kUxsH/Yl6pUrr9v/Hq3g6Il/2Kzdv9m/oB3fqw+GGlZB1Il2YDg6MVs2QHjubwnTF9KKpuLn9NPyFCU/GgQS/lr5AmTg5sP/dEHv8CFngCzq0dmx5/DXqEPTOmc9cwowfhtVJYhMATZNn23vw8rOKHkQIMZD10klJTYJkNPi4tS8YpKVRs/lHIf3zqBSTfMClyXvUhDDq4TE0Fm+eK87Njmv2Vsrm59SeFzOiI24f7aNdKMrXlP64eElw2O0Pr2DUWIKPhePVz55MpR8tPmx2IPv0DC4fdx6b/1UqT78pf1r/ZB2Gr3Xyim42zt+w9/DXfngH7hfxeUoaKIT3v5uV5PS9b+HChejF/KybSmzmZtHl4e8pQRRSR4UvypVXImxgMVe3T48rAD0J64zJnrvLOvDBten4PAGd3nVOjj7qtYL3diEkWBVldrADwhPXr4gpJ/kamZd/QQHgYF80af6jeU+vdhgSVgbjCxbChGUXcTGBWgq3vdHOuWT4QsaRWx0dJ262P2S2QI2z5bIeC2VQVpJltwwBrZqkxhYrjq/uUNfD0+u+uvXoRnqHjJEysL7brj8RkXvRWrCgoZlx1nxgo7qCLcx3tsr/01jOrcGMkmxGyACWPjj6jPONqU1LbISC6Dc4fHSSdjAlK7uZRzpVWm923m4kky90q7sAlbSIy5Oj5bC9q9LvEOM+lFC2ge4VUq3yPz7P+gEYf/tOYDb7VZYA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-TJPXCNVF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-TLCK7IBC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.greengloryglobal/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-TLCK7IBC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-TLL7ZWDJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.soulswap.app/image.js\nvar image = \"data:image/webp;base64,UklGRlAFAABXRUJQVlA4IEQFAAAwHgCdASqAAIAAPm0wlUckIqIhLhCaAIANiWYIcAGW0UuFL3H5VfmQrX99/CfIVU95z3JH+c+5j55+h7zAP1T/WXrHeYX9ruqH6AH6yda7+1/sAftL6an7LfCX+1f7Ue05FpTMGzOOeWfMq+HUU/I9B2i5ne1JmiyDohamFRSv5NpAog/IoVuIZmTvvYR3357g2jqarTBIxVJ6u5hIfEs6tp2Vq5f07bldLK31gBiVu5sMt0uR/KeE6pivwIFuzksxrJHGxoaQhH4pupyn4V9S8WZMHR3hs6wQf4KTqMWEpc64m0847OQOJSX/u7IDgvkTZfqvsic1ZdEwAP7Vya1jXKYrSckmB6XhnhJHa8ybYZr/EMfseLw5J1C+XK6MdQAwvWtzisVCY30hfIeyzeAZgebpPkRNrxZxhrF/d/whem13DCGByvDofsWipp1df+eQzLG1iu0WCPSKHmo2iLz0yDRVhT2e5OjsxqM3uS3l2Fi+H6ZxGLg//g4JnfjFdr7FM7I+UFF4r3m4CJumYw+KWQ/pY4+IfZJwkiwhHfntiQDCiMxdMpZr8hQQVBv9cBXevdHdCk8KpBp+vk1ZkDdnTj9YE+e8ldsXEbibLDI23lu8YO5//a3MBcl0Sc0x/TZ5ZNAEt/zt2hUk5bD/9I0Om7aL5+SrJSJuTGZ6euNsVke/O9boHOW05TF7E/QHSLF52Nx6AuQhCIE+ThWy7Z2GLpohRRBViefKigcAEH7BKFUrjrYDTwMPc5afhBTsTBR4screxTu5elzoUkp+lYZ0hF8X7Fhq5t3GlLMR8CyYPIknq+2vVTcJXVA+bzNQzyaN9iLiOo9yFK2U2lU5ezX2y5ZR4cSHDvgduXqoDWXMuT3O1L0/BCPHqEEeKJWVVnzG14kOJLXq6qtGoUNB6+me2JcWi54qFjOOi4fMHdriNgm126zPjht/BzCmhpSES5y8rhmeACazf8anSQsiu4yeYj/gtqXxEynKxk2F8IBpt62rqbdecU2a+rLAhTOuomoXSiL37P3Xcgen33Z5+AxvzJcNuH9sx09ct3bC5NxR79G1NpLXmLsRx+Xt4LtD9qeifYTaPcMRmLTtDcGL5bSASP1yJ0BCZPZbLG0DZGuzek4Bf/3y8mZ0UL8oQAKvPuPSaABoi3Vp1lciZubyLIXLr9bGO7fu/LMwx6jbIrtEelqFJX94i4hbdsh4/6uZFgKHH7+3AAMZE80KkzW3nOTYzFffu0zhlwxdmbbwHRjucBtL+oY5BZhTiQ53VNqe2AAFLatTwbpjs7Zz8/ZJ4bdpkoO4Uo1710MC0HP+uYcLjSfHMixMHuhM7pwjvOgZQv7gCgRpJz2bt7VYtVdPZRclmT7d7OKswfCEDBYbhTt3VTOmIgeUr7QKkFq+J3Nmyl1WyFhxbpTPrRpsyl6MAW1UPj+FUUTeeshD1a8UdoMSkd52emx4FcwDLZnztdOI//S3FQPBu7e29FxNo86pWgR8mUt0NLV/++h+8zC9Ee2gRRsWoIzyBZUu6H81BYD2gsZEUrXrtGKSgaDosLvvp2sos3aycBjvjW2HgS4kbEsvwYzfwOUWxJRnLVeSh+rZQZTGmDNU0GkNdTytfYVWW9u/pvD1/uFdZa0+EoLhQx33SR1D2EVgqIiY3BhgKhHwdN4PLv0BjvHy6Klc1BQTxI2lSeyxp070TxPpT3YC809swcPoNRZH1zwRtCvCtYFPfllJpRcyeAAB5SC1NRqeZnj0mlxYsd3k7+wjeEKwysFGFFf6YKQIFfh0EIZ0qOoMBVenAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-TLL7ZWDJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-TLQGVZIE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.armana.portal/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-TLQGVZIE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-TVOSPHN4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.shapeshift/image.js\nvar image = \"data:image/webp;base64,UklGRrQFAABXRUJQVlA4IKgFAAAwGgCdASqAAIAAPm00lUgkIqIhJJcaeIANiWcAVLHgf0yL2xaJ/YfCvwreLvbDQE/jv2q/B+UnezwAvxr+U/6T8quBXAB9YP9xxmaSzIB5++et6a9g79bOtiS3VqUiXp9g0PRsFrlpbYuDEm1+/K1m9i1C//zJ8T72f4XKZ0V7lEALebrHWV07vQMhu7dlO6QQndQ4OlN4Gtxkb3J7/zkifNJgYBaFNLwX8v97U7f0HmZzVupAw8rCW6WAamlrfGi7TOfVTGNpJrRl0bg/DAnMeQgSkI6VVxsJIAD++41L/rXn7kYAf0l0uLQAB8/NnxnLrb5+Y3zYF/EIMrHYUvAo8Xj9loIMNOwwU9tHexbAddSs7L6gUv3fMx651G7Pf0P3Ir8OSEkt67k1tWzBY/RCpKUrcx2HT3EmlVCvQUj6FC7b/4CPFM2Y3kFNfMBwiTgOJxG0ifILddaVRAnU+sDDqi32HmRgEs+Ll4VwHqm3gJ72G0g/gsU3v7WNTt3oa5ZbJGYbi5oScR1s9dcZvnS+JKyms38quBNoRAOTYNVRuDR2lmeog5cW/1eI5tnndOEfir+aFDXqGxQJG53iNudLIRvJuFqRr16+KnCitCcjqk4T/mryL7truqah0jyyK9IxESDLPNqp73Ap5BRMYQlvwmEN9DfeGE2zsJh5s0eQkHfrnWBT94wysKys9064CNx+j/mv/rkrZ+SHye1rql24PMGO05b55aY0rC86btAAp1tlgrfIwydbeVMY/BBEZNLgSTZoylM3unJe0x4SLpusoYNfU6y4bG12FTzb4pCm5rxHJktsh4pt2mcagshImf4JMWcqDE4fkdgM1UAw1UZsVWMmDwmTXh+a85V9wlAn4JxuL7c8KXZKfZefrt/PKonqQ1nA+KCyW8Ohvz3LLvYKGkhO7X9s2Bo/zUpYCSUAXHp8Ww0gfLb/zpSVv/3HyTdnYjfTul5ti8YkcfPeeiJ9tbbqgVeD3c0pJAG+EKHQZ+6cnBiDP7dj9+GN6VJ6LdUJb31ELs88G24E11IMfvU7yYtBB8o9i6S/Oir8eymtT5wzxFIZJy/4eMmvm99RlIdrq786BUD5c8kqAVSg1Q0gSvDvdWULhzQoOJPMsQLClMTEmkwMeEib2zLrj+7pAcfoQBNzgm4rCWtkOBNR+MdtnWIUXE1eYkAuctKDOCEkNuwTzrugmXZKRlpYJs9+0nAJTxib23D7dsCz3MENdVXAgQ5PV9eQS96yX8L3gnqf/pUaZVQNJLi1lNkDP8Tuld/sShsSk+GJ9nyeqgro6nsla71JDEM4/h9bBHUGy7MR/rlPikc8g5yH9Rl/uVEVVFbaV93ywNfqkKu6IR4U4QT+QfuGYW2wtOorXZHp3EsadexPF4z4RMXlTbdYJ0KshqlYJcnbfNVQoA5pIS5RxhtDozP6vAhifDeftF+4HVynrnGa6JqkDFv5+4l7K/mCreNQuxDlU3LXsjKhNqGotkOhskkWlHjuK1w/b/N2rfdqt1WjBkD8zbeTephOmVE9wjclVk+5Rq1USmS2JiBwVy6LkKrvT9z7ZH6inIWHXnwaEKtT4CDKcOlHM//RkSiycLyvCPaMj/BJLlJ6D3x+3SU8wdQO1OFzmQ9o9fPUDZch05ro5+tM+bDKum1Xcpbeoce/oct+hyaBKsDE8wvi0m9e8SmIcrqCeSRzYkTFnLRfd/vxOk1qBxXUvDrDgWw+LihGxjciISRLqQyPUMub7DDudjZx8uNWjRH+68KniKnQLmS0zJ37/oTqtPOvdR5g321hQ1vM0kSDWp7cm6NGmpe6CFBwoFrYQNvi2EHdhRjOf0peqwxf6BQAZZscsWesxN98+CwCYOEn0++LIH3uZ0Qk4IreUaeH5MlV2ccVce4oHC9OC9bMswBt6vkH8MPZTxPFO72+QAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-TVOSPHN4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-TW36VKLS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/finance.openwallet/image.js\nvar image = \"data:image/webp;base64,UklGRhIEAABXRUJQVlA4IAYEAAAwGQCdASqAAIAAPm02lUekIyIhKhWYMIANiUAS2WoydZ/Ijm8ePe3H5AZkpxt/rf6H+QHAAfpn/df4B13v4B6AP1e9ID1AegB+y/WAegB+xXpo+xL+2P7i+0zeA/5+vL3wZQPBjSBTSfJcsmRERERERERDr7t34Kule8viSGZhWULYGTHJF7PXdARP+8QHMBKjA3U8RB99EfIcPi7swArKt5zgpwIaF4mJIBL/A8LPIudATew+COqZAUAB74UW0IqUOSDG8rBnxbzMzcCZmZmZlUAA/vxpEAAogMMPlJz+y//RjO7wetGMG/+i5/5MxIpxCC4tcLbd7LmjBPjVj2KDeZdegAU3Mg/oDsipmh4hhLWWqKrtsujAzof6RKs3ETO9b+ZIf8Do+pZ3qPldA6Ckg2DQYjFQO34RGPImhqxXlpdoMQYcEEppWhW8+JW8YQxMiwWIWKHF0wBXJA8Z4YBs8D0CvuDCTJTujpbCkBypb9bRYW85IkhVHBsx+r9yB4WWFjjPkIwR5+1l+QuaS5p3yZXp2cOLvP/vGSVygP8WFH0ltAxMPTV4riZGbO4z/Ag8RbuKnap4MKVz0+y0Yq3mpYtWm1MQHH4xu4jHhzF5eMY2WLv8S/WmfcxF1limjyXcHEgzAypNHyMDRuvZujrXl2+waTnCvGP2NEPOjH5izSpE2/LQ9+meNF7Kp8es5DvIWyF2OE4nVisCu+Kh//kMa8but6AxgH95FaZ5DvhipXYz83Dl918dAUuCzoF4o1MZdIR1aIU2suie+E0ro/1gV5YpwOajQncehCFZE3hA08uz+O9HrcbuG45dvJWR9yFnGaLgHyc2hdMqlZ8bjjyLMjgFvGtVyTjdlett1/fUf3GGdg/6EZpfL/ufqhI+O+p+71jvAy6424VdyGihrDH9zkQVqeDC2N5fTyindazOiohhNDNN0Wh2bAVqhRxiOk4iQeYuLLq5O351iKuHB+/d11tytHwDgdgryRC/N3ID7obXtCRlCRHMTWgxf5BiPhx830UZk+6UQk/+6koRB9+scqcHC8yG75mGWkTsjA66esvbtYtwBXio8Dr/cQ5CCaWfUkDQRbNJZ7ezieH30ldo3atv/N1nIy+Fjmt2uoj2wUdldSO+L2Zcn3n2FZuMlZ8R2ZxtBJaToEoIDeLxqhMJEhU5HJPVSu+P6ENCVVBnyMh9kUGndtKN/jRd+Y+72rFTDnwv6W2yQXvBvCAR1SyOrKau5WVJKggVpkR9ZgMEiDwkc2bOVATuwGgfFlVEQCX21ciQII4pg+Hs+xXN+uGnB+s7OM3Sak8RAnFJFh/zx9ldEB6yVkUnu+XbkNvABWVpFpnLZjfrT534361z6qdkAAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-TW36VKLS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-U2DNOUXB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.chain/image.js\nvar image = \"data:image/webp;base64,UklGRqgDAABXRUJQVlA4IJwDAACQFQCdASqAAIAAPm02lkgkIyIhJZLp+IANiWkAE+Y/d+WmP1P1PsQ7J9qT/Kfk9wqeWLWbNF8jeoL+r/XAI9lV5Po68e5DLfRvBIOFkv/wA4RpXex4kzvdculOs8hqblxDcnn/+Ih/MX/9NjTRH+51HK/S3bELvYk3GfShBsObwLeuO1v4JNsRj9CB/mdYLiMbPe3ChQaP6Ue530BaUTY76K+r9Xewig3mFUmhAXSWOG3VV0gAAP78rRAIYmEI7SqNk07vU3f9Vy9uA2spRhzi1puAQmxycSJWLKAPsg9yyWzGlyroYtpuiYA12SG4bpYP2dUCCSyPK3FWwllUqfwWfw3o3AkJ6banCAsMCKKXNL0eDAe/5Dr0EeuSewNPayEce3PSJlIDm+Ed5EkD1XD7Ro2IBW42DGITprSvWY6a7P0yc7CeIwS2h6mNpkSRA3AJmOLpwFkyLKnIqpTNLYTLjI6ZUhed4HYWHZxTsIU+ih9Yacv2a1GjL1h3ZBEWJv8Zvzw2M8tklrvANiNn7CpwUJPrpcAwCrGX6Fi8bvvr4/iqSxhn7mc1bOhbLlNPqr34KxzArW6ve+/ktMZ9qFjp2LnMmxH5X0UOHv5fjRZob12dJU13A5sFfdvr9LuuvYABLyIoVWq9rphXnKgalUkme5r/KlpisW4Ye+5/9HlRvYuo2C3AiCDz9LGw24Achnn/HL3zm3asABNLVKmqp99tfWI+batYI9xALnhW1lVm3IJwutCLrdXg5bY6H9cfSlOoxMChGyfZAmPqUw3hu773Nyr+U5wbTGxWs/c1T0R0BWx2/JusXgt0metSuLdfZUM9eRwyOFqxnyQ1dhmD3AKaIi8u8C7H/VLz4/TkZEidVfBiywpatflaVUqZ9S948pX0AZHjKLPi59g0RSom7e0HXZk/DnabXYd8gSgieDtapdgrMtPQu8h3xRBoUa88k4MAC4s/cNnKRRBaHJo/+w+p6Gqu/NHg/SA229SVsIAcO1cBAfjo+aFs34wajbNA/tJHqewMRsKxT51WnpUU5A6kR+bMDbIdnkNBXDvTBitz6XgyDkUDcl9y5B9yZywIyiBRkuaH8F7MI2bZRxl3eUKOXS1SPO67Flqz06ZLqj6vlY3mWG3J8KCJJavzNfEuRMrViXcrb5AdfAnv7GufJ6AaAR9IECvAEXw5/BYP6ri7CgaPMyfIKThDXx3UyAElwCZTH4McF6xTMAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-U2DNOUXB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-U74NACFH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.linen/image.js\nvar image = \"data:image/webp;base64,UklGRooDAABXRUJQVlA4IH4DAADQFQCdASqAAIAAPm00mEakIyMhKhc5oIANiWkAE+h+n1gDv4ykOB2kdmT+O76S9g7pIeiAY2QiuBLTa0ZVZclfqKks3ev2MrVvBroEsSyahr2BIvgFTGjQOSMH4+NWCRzKCwIlnJKT3wBWpDl27Q3h5KtVrIktCmYZ/u6Io00i6BJ3aU5u50G+eVVlfuAhS0VXnchDhcprpFCW1O4tNchbykLdYzuwVpGAeSAGYZzybrQJbMy6dAAA/vxc0CHr1XINMZNLylGyKJAF+kqRekj2KXrmQKStMf1oYqVB94hB38iZ+6QmuOVYWWDaBc688YmNy9aTZ640TcrhuBM7+mv/NPvAul/pKvMk5Jr0AH/+n6Bt8NlAuKuu6A3J/N3VKYjG7PdFkZ3RL6uo5JuBKmGRXBIiGKX2P2GLbPWpdFdXCQnqR7j9sJOXTULcYWJ+DmuLNgt9a6pBq0jcck9SYrR07GxAu5TgfAzoMp7icczvs6NjNwGsoWhe3vihd7oUB73JgsKRSea3H3qFKU8gs43KaBwL/U4o2S908jU6llNiy3vUq5TzO6EYGwUSCx13/y4lH6j+7SV8+D2I2+WZTex2Q3/33gw1RqsfceReWxpNhVcFkyeVejLg2dKfhRwyHi+WGiQ08p2StZDPMUxig0+oiv/c9icKByrLLvVUXA7dxO2/iAu/nCvLht7razRi0cH1zpXErz4zBwP/a97P13zLeBCleL9sU28urlVE8r3YL0r7k3/xR/x0sgECZjBk/zgH8rjQBU7nVfFTWHbB/0n7I3/ml1dZ2Zcxvr2rIxwbUQrYmrE0rUxWkLOqwC5idEHaqxC1OWyp6izL9HWQHCpZ4GpYvoT9s+gSxyL7wYCAUzZS6CsklHspOOv99niOekTrQmbn9JGXvB201MsCQAWbJqIQyEW6Y/taSZW5ab2ZpTnqtsYw9BN+pjR/HhB14Wm3GpShPSsJ2BKhKrg/AEoBohzjiLWiYa+Z0Ins3K97+FZIj4wV1fyiUZv4xLD+Jmd6qmjMxsXwFP24jfHXm6hxG/Z0RLQAUbcFbql6nh/9tjK8k4fazY+ZTXkimWCkkYs7NCSQrE5mhIUKQuYFXgbjq7e1k9bK2LclfC7v0gdIOFTBAoxHI7fqIS+7VsdUdzvJlTf/T0rxKdBsmD/8DWZ8H2OkKUG4O182wAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-U74NACFH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-UEMJEQYK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.arianee/image.js\nvar image = \"data:image/webp;base64,UklGRpIDAABXRUJQVlA4IIYDAACQFQCdASqAAIAAPm02mEikIyKhJhaooIANiWkKFqPoA/kHaV/cuhP76pGfsN9yzj/+R3rLLP+W4wPph/dvUl/Pv8tx7HgHsAflz1VP7LyAfTHo0jDg6tfL+zilOrXy/sOs7b7KraTVFivaiCcyEceQKHb+R1iGyOs/yHR5lzYyTg5QPg0v9Pxu6JopZk/IW6f79Pf+Hc5XZvXrOYd7jvjJdq1amxpzszMGNFosp1a+X9nFKdLAAP7/mCwAENQhSItk9Bk2pEiXhDBMBVtp8N6UVGsh+iFR2ij0Hl1NpoCl4+tRSeYcxpx//gSqrzImoDLvjOAP/Pn7M3dgf5i3qvDtlVfDI1jfZ6z8BsMyow0kfXO09OzV+Hti0tzTL1rT5q8LQOdqlIOHt+FECKeNPWyW/hc9IXWPd7Q8qVRjTFdTVE7tiXOVV3DbTHBz2fUXxL8msSuV3nt6N04NpJtxU0RTZkxlik4QSeqdkYPBp3zqMsgQmhV4OFgKIFAKyGu/RyNbtlr+aOPvRU4u3jtSqD7ulJLMEKq8ity/mdStOVV/NgxbMmnWH/T6qEIQro5DLOCZUP9RCYUc8+bweJ7I2rb7JYqEpCSCNROh95PA4UQ10SK2PcIc896qQYvCYB3Ux/gss4x9fCVRR+Fr9JdkOMmCZfPQN9zh1nRAH3tw1peoAnz+I1Da9dNb4ijKU5Odh2/3/8xX0dKf5jIXOcmL5ZXSHq4t9FSqfmICG1Z4M84g0X0LPvU8x3FWv9/JLmeg0t4Bd5NfC3lG0LH3Ze58ORQRI/hy05Wr6LkRbqdoKhdah8CHj7D3MtrCaeEm8b3P2kqRtzN0NwxOoR8lU9lSLBV4bLAa/8BsO4cB72RdcYpte76L1DoEj3gQSRLVctHNKbF5gPvxiZDHxRUUCmVujISrn+pIsK8fhp/WrjIPhgVaPnuvkEr5p+VbO5YZ4k1GP8TjWxu5SQxvPfYDX2AJqshZ0s+I81vO2maA+eXwSfLWVzOkwz3bE0wDLJsieEfLMjy+95p9ZKnRZOdWL1BKVaOvp1vQ3SnAv84/qS7zz6U9bPRZiZBCm9jAp3wZH+WMxllgP7+wblPh53VXuzfqrfCXMbA7TM3tmDWP4YQo99L61/YLb6PK2sDDY1X/fbXqTRnSLkNbBa3d9Koenl93r+reo5tfNYOstWsFoCefkbM3vIQAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-UEMJEQYK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-UFGCOQGW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.moonstake/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-UFGCOQGW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-UGV6XSD5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/id.competence/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-UGV6XSD5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-UHZP3BTN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/social.halo/image.js\nvar image = \"data:image/webp;base64,UklGRr4EAABXRUJQVlA4ILIEAAAQHgCdASqAAIAAPm0wkEWkI6GYvURIQAbEsQA8JPpv5DcoHtn4T4js83U3/A+4ztAeYB+mHSP8wH63/th7yvof/y/qAf0L/T9YZ6CP7Hel7+6Xwfftr+2ntMf//WevEf957Y/9VXnb7O1PvAMJNKm0YczZaWWllDhAivl72ENqa8tZdjmTqhYLySGgVCb0n3y98yjnP6HqrCFhQINAO95RlKUUy26HF8V2qChVWPYb0GzRsuTsXxrNdE8EIGXkKpUbnVxqdj8eVi15ocu1N1xtNeBZlJZ6edVrYWe77NNHcNH1dfrSEnEJQ2mD/3MnvkAzE/c5L+sUZAAAk///w0f4aP8NH8TiCaz2mNRRoDENfcvgn03uVqv+pRGijzAdsU2oFB500cOeDFdRiPeAZy+ptsRI3d/Vx0gd3zlWAt5F5rQnn3RhJ9INvjCs6ssocCq0rD9cYm1rIrgveDvUltpRnkAcaj+WOWsrRdSEKmktDNxApxuR+1E/yCH8makJctbsjzKjYS6m9WxXMtxZPu6iAmNtx49kcVb1FiUFv+grMcksbyt+bHj12WEAZsFZHht2i27XWNIKiEccezX1pQkIIzbDExb965btf+E9DBR3V0qrQAl3nr/Whjez+kqxbGm5JA8aEJPx85xbG8m1nnoV6nhmH/r+oZUl+NQR5Fb6pPJywnIQNODhwGxrhnYr1zjvVHViP3AngXyS4fYIUYYOZIH+Jwo51vtP5J0yW0eB8phho1L3Dc42HO/FeyikO/lzojqxuc6Zivr/KSSoE2U4jlOxFzxnwghjZEaiUoPuDebnDNwjkRhI5hjVJk49W9gVMFJtTO27HTqkW7XX8erMFmkY8Z70Btte+PT7YfwSc6KtDOvnWMwWVTFRfLE0bT0eUup+0KQUCySlawrPCByXBXao+gWDctZQypB3G1mi3Q2MjY/9F9dY+QW/EXITUkD4sJ8i7F+VkdsIX6NvPUwlBlaaKYH4AROOzWeZdC2Vk2hL+jTaydbPdMcjb8YRVgKLJoYP9M8THDajZcMr0DPnscfLsvUihh4UwLXHr7hrtnpda4WvSxrL0uQYmEXXkCeG5sj353bY1zC4JqRlZ+EK0DtLpN8OdheV/StTtvmZZ90+B+Ep9YRR9VFd2gzchDuBiRC5iyYcbEm30UDRAADjjwdaH3z5Co0o4PtgJwGE/wdgToiU9Q4zOGTlFsq0ri2Wr/Ml0C4f88DAYV2FtKJfjbGOfKu5h7sMK/jWH8l6h6bx2epuxhu3/9HIuv9FJzjikh6LPcUa1e4BzDNg2mynGdVXbb2Cw8msKfnSMYMs8rwvQW0TLm3Q0gsOTt7JCWV8SFij8I9ZZ+nWh0n1Uk2+WBPWMqF7kHEfge7ls/jjgYs57mwcTZIIZKHHDllYgKnWzIOy76Zk+l30FnW8OQ6plvfqB5fkqfGeJaxyLK4UGMCQ+DkNco+9n85DhmE7heeR+mSm9b644IcBrfsiaiLAHbs8QaFQ+/m09+rWq7sn9KPGUaUpYK0FwTjT+xh2J6lte8O/y2heUfFtW3xAKGkvo0BiX/34T3jG7zqf5nUMYNOdEBfGWHphFl71RE/AAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-UHZP3BTN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-UR6R66GX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coinbase.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRqYEAABXRUJQVlA4IJoEAABQGwCdASqAAIAAPm0ylUckIyIhLBVZAIANiWIIcAcgn/wwGvdTo53+Sf5S9NHwD2wyi/oB/aex3+Z+onzAP056RPmA/XX9ivd9/wH65e6j/HeoB/Yv9j1l3oH/sl6ZnsmfuH6Rma5dhH+cryt9eVswf0xM0jyep5ewlKwbFnf5v40J/vFU13E+PHqy608njqKIMU25mrGj1AVVDVd/x0YNt4u/w5AnmrUs7MiGCO6orQmYaJVknFgxI387poD4ykRq4yBkZhh3mt50jfaglHNwOAjgR1BxdbezZb2nUzyGkguLAAD+FLl/7mGux1I3Cf/mpTrF70bZXWLbtNuydZdN/0JCSKjn5/nQ/07osyyWH4xLu7REagvyPHEY6WJLN+h9YpPbY/aaFMLjDgyfKWDzQbtNV53DwGvhTc39nVtUC4ohcoAcnfhZRWyOSR9li8BSZYGQIvkLNefmSHtyNBT69U5GPNLAW6JUmBygd2pjgDxyFMwZgzlWikP0xiwKp/8edTjN5LrwdDT/ZpBEZGWwq5r0EibYj/m5zRBA24UKpNGy61+kbFlDKtX0qbTtTMAGrbue+w+0RN1m11WCyY8/QOQWJSl2eYx/JgmYERZDLZA7bnb9QxkyzIVCt/N+fZCnLnvbB7iHGl/UgaJMQzJtHeJnFzaZbssyffoaGShBX3pFip5aYpAmEwkC6IYBtK4RDSOKDm6mYV/U8Q+UBs8kwVYrvz+clT1Rb11h+Cr74h6bDzHmX1TkPEyWKmvhcXJ/J3iLs+GLXaRsi4nkyTo/mxurILkz+RDbcbvSnwXTvMWpPA9o8dEq1Hz8qFJcS9k/lq1FmgLx4I671Q7u8hal3lARrSmRniLpH+EHmN/ZgKLEGPNomQLPdjAAtFHTm+SDlpzVLBMVDs/87bBEQd5udcnbKtfTxNgN1bZ2eXUV3yCfDOpiACF4JJvPZNo8Z7/EZXYdGVj3ypr40dYKHIEqy0k9naZKk/zGSx/a5f2m35yQSM2mSqFYl+SUYpIxjr2eLfAjmJa37Y/83341Wd4DN+kGN6QTeTTrw8ehSB/LOn5VWMBIEc7z2A5bTr7ausrsBtyoYcH6yFWCPoq+Nnmg0qaZNWzBDpSnO+qeU/6T/yUyCzGouNPK+QcicYifoOLe8vEwHf8Xtwnghlll+1n7+dttEbASVeBxgq8YXyVQh9v9G4Cxz1BRSHEsncs5NgwnJnmTrHjFZzhBscFcWCyJvetdsG4z6KDov2wtMYr83cSVEE+dn52ZznLc3+MhYAZ2gjzORDOkd9iw76QWcAiAuqdH7Izor+13V86uT891IxkrsnWgs/4MhxTV4Ayvnj9dTNpiivVxgVAXOUwmH3m3r8+F4ct6qHH/A+Ezohp4jzjmj9VBedLwA+6mxpWmx8KX2VGUyQzdjG51P9/cBQ6p/IXVcgC0pod5enWuP/xkxPEEfn3VGqIn7m4qeOR+syA8rllRozptoWF8RVgczOatjBCR1vrKNkyiqUac9841+VJHwdyfDdZXC9Z3F1sW5G9Nv7EdD7BrRLhmKJ8o6B2RrhyqCZQrZAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-UR6R66GX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-UT6D5LIM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/inApp/image.js\nvar image = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4IiBmaWxsPSJ1cmwoI3BhaW50MF9yYWRpYWxfNTYxNV8xMjQ2NSkiLz4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2MTVfMTI0NjUpIj4KPHBhdGggZD0iTTI0IDI4QzI2LjIwOTEgMjggMjggMjYuMjA5MSAyOCAyNEMyOCAyMS43OTA5IDI2LjIwOTEgMjAgMjQgMjBDMjEuNzkwOSAyMCAyMCAyMS43OTA5IDIwIDI0QzIwIDI2LjIwOTEgMjEuNzkwOSAyOCAyNCAyOFoiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yOCAyMFYyNUMyOCAyNS43OTU3IDI4LjMxNjEgMjYuNTU4NyAyOC44Nzg3IDI3LjEyMTNDMjkuNDQxMyAyNy42ODM5IDMwLjIwNDQgMjggMzEgMjhDMzEuNzk1NyAyOCAzMi41NTg3IDI3LjY4MzkgMzMuMTIxMyAyNy4xMjEzQzMzLjY4MzkgMjYuNTU4NyAzNCAyNS43OTU3IDM0IDI1VjI0QzM0IDIxLjc0NzMgMzMuMjM5NCAxOS41NjA2IDMxLjg0MTQgMTcuNzk0MkMzMC40NDM0IDE2LjAyNzcgMjguNDkgMTQuNzg1MSAyNi4yOTc1IDE0LjI2NzVDMjQuMTA1MSAxMy43NSAyMS44MDIxIDEzLjk4NzggMTkuNzYxOCAxNC45NDI2QzE3LjcyMTQgMTUuODk3MyAxNi4wNjMyIDE3LjUxMyAxNS4wNTU3IDE5LjUyNzlDMTQuMDQ4MyAyMS41NDI3IDEzLjc1MDcgMjMuODM4NyAxNC4yMTExIDI2LjA0MzlDMTQuNjcxNSAyOC4yNDkgMTUuODYzIDMwLjIzNDEgMTcuNTkyNSAzMS42Nzc1QzE5LjMyMiAzMy4xMjA5IDIxLjQ4ODMgMzMuOTM4MSAyMy43NDAyIDMzLjk5NjZDMjUuOTkyMSAzNC4wNTUyIDI4LjE5NzkgMzMuMzUxNiAzMCAzMiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzU2MTVfMTI0NjUiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgMjYuNzUpIHJvdGF0ZSg0NS4zNTU5KSBzY2FsZSgyOC40NjE2KSI+CjxzdG9wIHN0b3AtY29sb3I9IiM5MjU3REYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzEwNUZGIi8+CjwvcmFkaWFsR3JhZGllbnQ+CjxjbGlwUGF0aCBpZD0iY2xpcDBfNTYxNV8xMjQ2NSI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyIDEyKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-UT6D5LIM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-UY6RYQ2N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.neonwallet/image.js\nvar image = \"data:image/webp;base64,UklGRpIFAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSNAAAAABgKpt+/rknbumRW9LG+6QIO8IcNeq0U9gEXd3h7q0yH9HANX9N197GxIRE4CMxubT+68406+7k3oNcvR1r0uP31S+H6SVVmcWRcXyV5zx20yhPE1WHYmzviqRAQhcxAUpEd/zA/aJOPNRI+pi1KI1jsE494HQDLnw0DG5ralrckfTN//++/ffv/9+ArtmN3RMbis0Qy7sGCQ3gNoYtWgNbGPURoxA4CIuSIn4nh+ArDoSZ31VIgMARcXyB6XXuUIZMns71qVHQeX74Xa12QkAVlA4IJwEAAAwHACdASqAAIAAPm0ylEakIyIhLZs4cIANiWIA1Iom/sGwMmz4bfHvgn+Rc5Ta/+w/k/8t6z/mAfoB+jP8l3wHQO/1XqAf3jqAOet/dL4Lf7n/x/1c9knOXbMvOG0udiMut/bkHpsv7qwCGr+Rt9EaBjVK6Dq4oVEby0L74WlNIG7zrzW964dL1JGhiO7+jcOrvJxioGNIp4vW9CtdzEB1y88Lp7Pjy4DI8uGbUzw7+I2EuhXPOI2+A3DteW0nDETbfVYeuJkHLF4uvrociHwCof+c8oYXahoYTlc5At12NHNa5h33aTqiEbAA/vnTf4hDmZGs8PoJox0xgCTSZ91KYHLnALJeDCr5J4Qsjsow6cWcZ6QxmPKxm6398eptiuoUKPDmiBVnC/gEzwu9RoHJVscU9u/kbw/FsQP7eCaM4fNHCykK98Y4CRjUXJK31Esx2dGmyJPOwR8b/4bZOdQ9ZyqLQNrosAUiWRpU7uZJY7aSfmgjc6EAQHKi6vnwNiIcjQ91qS5Wr+2efbq91ZyatHOZWOEvhCnaXMz18uA6ymZEf5hF2eqiEKOkdLGk0eInx6fvCeKePsWLBh592MbEIso++VhLMaH2U3JrLHY+kzYokyLZvMsTDJ9dgTZvXVA/XxUASxApI9Zas4YQDEeafZPRi2hbHGYmztltyzoQxMOhr/GZjD38fUmwa1BUCGXF6DLBB/n4Vs6f5tgkRofb8jXba4sENNrHOc4lRW7RSet9vkDLH59GzEWmY4fu/YAsfV5grME3nl8SDKktz2/jH4X3ykmPnLnXPl0wjj31gu50jm5UU1SniJKl9OwGMjt0GTrb+5m/A6hNPKN7FpLu67MukHh16Ppffiv2PS3OF4YKkuv5qF7VcIvbd8Ve6+s97Lcr8Q//jVfPJ/JA9ngFDyzN9U8EFrw8ZT22TxrkARAhs110UPsaHYbnRcZ6BizHK0r3iYI/Jhz0BGSQghLF5arY4cToHWcDX0Rqp/40tS+ztoh/jBbli0VAR/WrTNCTPuPZ49BxIfC7w3WqOvmqtk09LBYlthQte/WQcqwVr8n343uMoMnazNbV4PPZhlXaOGisTucrNcsPNpOI/YvGMBiGhi+4/HQtDdsxZnSwBAgO+i3oZxngGf8cgEa7XuiJ/MXmFiU4zEs+1khtB8VD3fGX+YjIX01wmyX/gVwN/JQF70N4D/fIyJNErXXVel8YLJMf+yPypW8nAIUFttIAbRI93V1yBh+ldnLppRrT1U7l6c5ysIQ1cNP03Om1Kzelgv0qjimGmsOwZcNiqQIqaXroLY+2xXL5n4cN9qs0gKGUs4vgYvN1A34sbXO9sTWKHEmI4jyFjv5eNz8SeTfRAkc80xx/hRKCVPlEFm9p1rqfDi1madptjZ0jBx3AAAL8l1BRT+tVaQtpkaggJhy6wfTuaA1iE+OJ8RIkgAAIO8yDlHuwrbXzXm/mJ1MwRWzvY57DDaB7WvVjp1aSbp4yK1GweFi0196ga9HGoS6AT72XhLdChj8QORNu/sCtTqNJ8A+8s7s8Pcv+d02LKIlWAAIRh87Ro8fQAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-UY6RYQ2N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-V5HQDG55.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.premanft/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-V5HQDG55.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-V5M6SPNZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.blanqlabs.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRuwDAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSB0AAAABF0CQbePvuu0I14iIOIOQgJD8v22BiP5PgNR/DwBWUDggqAMAADAVAJ0BKoAAgAA+bTSXSCQjIiemErmI8A2JTbwL9ZFJQvjm0OALwM/FXofw369OS/hOOnHALij5OlB+Bp0NCSZlTkZtzdKo79FpDC0/Safm4h6GDQeX/+0uc4TTALR6u50Lf73oHgIaf48IHRpyjoslBaYx1eFtnnc6ULpZKesAUEjvuUPRyekQMRY3a/1+5354L+vqLfU5Cp3KaHepOQQsUn0s8cdympA5RyaWuPSiIUAA/vWfD+InZYmQ/7g9qPiDF0rEupgb1JTTxSdLAQgsdgkuvANZtTOSn5RvNJFypeaHyPnCUcT8Q8kX1iAUmPMOR/dIyagQqXwQDjq/++QGwkxVoFS1ZcqwzPtdadFy68ORAq53/fCS8Az1iykBFdKuesqnJX2bshMlRxF8q9xs0N/CfjK5fsMEQSgkKWqahgY25wtd2nXg+GzFdxti7Cbvo8qvIkgQCeVuIC0nlB0gl4cSGzLhE8/Tnq5v+xLGd0GsAG+xgdM8kDTgm4oOcRdkRnOwbeosZofPtOBCXElNeBrag62DNkBxRI2mJc4jgdQOxrge3rSQ1b70fz8NRZdKN0gqkwAJFo1sSdzYqXcqEWDiFuiI7p1pn7ahZ7KPV3Ei71ylKU7VaygKz1LSrOKejRgalZEaiITkIMb5Of9pIEPfBmCx2bFgJ35LYOCVZ+C/Qtk+76DLrl5JrtRfjzIqoT5tr9YivgvF6aiS0tkvPPHX58cS4a0dOgchzrvIA86nkFgReQec5PjPmGD+m0Q3wv8B9UYNw2FV9o5yRmh21XzaKeOroG/sVymSs4+qp/C/CBtJu786sTioGyRICRTkXaHXoSZeF3mDP8vtYlXUQh8f04ym+VrLSPpPJxNLD+90UmneTM6ZficwyTDGKrSUbv7x9x68zsdndZvwU9enus02naRKMH5GH1Qj9TSpiiaynrXlIneXJECXvNMPvQo4S6pmua/7b8LWjX7g6O4+smd24rKNteHbfwdn9EQI/vKx0naENVtpXuJi+T4+NK5OxtiiZpsh955gIo8B9zVwa94+V1WKgO7kVO0/2aw5c8EgMa9SvEidum/JmvtF99BnKh9NBs4yuFKsMG+KpqlR+umfNKM7v2tWKAc1yQMhrA7iWdRR31h95DRJFeFhP+DP3udaLexpKPfAWP/8ZBSXvtYMo3DIH6b9QDFykoRM7MCdbQ7Iz81wEHRFt4GhyCCHbFm14ut1w/KHJa9ae8mH2hje2LKwAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-V5M6SPNZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-V7OWVN52.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.mpcvault.broswerplugin/image.js\nvar image = \"data:image/webp;base64,UklGRloBAABXRUJQVlA4IE4BAABwDACdASqAAIAAPm02l0gkIyIhJpiYKIANiWlu4XPhtADFBZApmfjr+lt+gJ9vhcmrqB8G2TaDpoQH7YjogbiFrWwAjK0Ob3j9RZNFeANor4zhrSs0Od42oCOhqK5hxAFeYhklEHwbZef+FAAA/v+DYAZ4oJo4MDROzYok/PXGekvWPTzRs0G4z7LGJuM1uHwyTkYQUd4xruoUzoJat/n3y/QByH1U1/Z2tVOTAcs05z9LbYYBMWm9jyLsRkb1/GtL7byW2ZXCd71n8793ZnAh3vtOSD8psis3wJWTS1FoIP+OPhaDz+l5eUVdvlfylyqISU1uhMz52bGXb0LeSwV/kmWm8RwcUPV0tfiPVnleAySgFfpK5+CEUcou9uIeni/mLbeli11ZImqH1RJZjoOVOUVSF8A/BkFxm94OoaLibtIYQsOoeKjDgDPMAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-V7OWVN52.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VB7IUURT.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.authentrend/image.js\nvar image = \"data:image/webp;base64,UklGRrAFAABXRUJQVlA4IKQFAADwHACdASqAAIAAPm0ylkekIqIhJhFbOIANiWIA05n4fwH5AbRl3TluOzYvr4/mrnebb3zEfcB2MvQA/x3Uv+gB5bXszft16RmqnxppVJJP+q4WdrP+x72NyD+d/7TjZ0ok0zyQ/URQyiWe6FmtBvGtvXSW3gyU1O+B/qE2y7iP+K1SkhRnKs9ElDH17nSR908oyiqPrbMQmFY9eqhu9EVel6Q8zKSg2S2Cr1pG9korNewXFwbze5jeEIJcI+ZJAD8YVLgeRKp0nISlcK0x7va2zTC40jgSXBWrXAXVf1w15Q2bzbyf3THWlhiFGP93h0AA/vSIa0TYxmKcT8/frfmcv0atABe4FOUiW+25PD97BCvypRxGMxKVXO2rp9qqTNRo/jGJ/PJMP/MHV0oZMrUH5nvjpTfgC/9GN3Nc1FUVY99SYmV0cdCDsNuP6YencQiR1DwrOkEElMeMvBRecGxmO+2tNZB06Ur6POt74SRPMXznzRhV+GTnWmkHxB0Cs8fk//Nfb5hBJLYir+6SeyJzgjutox2ShOHH47ybt5KtwOkJxuUX6YFBfHte6oKxVT2ZJn2CxMz+/d2C3s4F0yIHru0hHOhD4Zdc4A99Q97er+qdo502ZsKVfzzo/+PoTVauRbv5vIZyA7z5QEmKw4BK9KzDOExE+yk+OgO46A54Nd8LukT+Nd9RafaXMiXfPS4ke6yvVljix+U3tIlAVg8Z4bzt16ock8+F+Wa3jubwVdOry2PZP3iItjMLDGP5dIjjLUgDlqs7Mi9zhyylefAp11x5iusWMEAnS3gz8n8sS6sWMuAXJmWcbV1xebt1JeDukeASKyx/Ai0OR/+80ngvHvWvl6Pxl9sLq1VyArsdQwKVfcYGcvKM3n82YRTEVRqUmVcBjer93X8LX/wlZxD4arvtI9P3hHLCVnqeMZZF8iZh8EH+z2lczbeus2Ntf5j6Njenh+h4cI2FxRoZ7tSKCG4TNWpTbsnvG6Y7uBET+JzLFaE3VgnEay0lRzAEh3nPaakZ1/txDJ/FjwdDeHlEnmPAr9PwXmBxuHRC2vIuXRce/GnVZFXmZTqQOjIPPu/4IG1SkralSaNQsRJ7e0Y40G/sU6B8pIAIU3afHzye1FD5XFNDfR+9TqWD8Hp0kY+YFzNE6shAkseRrfrCNqN3AIUGjB2nVQCvCKNnFabUcZ9T4Qa/+ICSMRvdsEtab9DPTaSmD4kqZIJNuqy+3GzGuXlO63mkCJwYoeIU8er3bxHf+akYBRFspm6VX/440Z01C0MuNaaeTS8eSc/dYM329bn4NTQ/byQdX8ysc29s6pFcoMNXqSKOsrwvF6KGOf6wACV3A2Rq6E4/iXv4WWTuCjT2bdG1Pz5buix1ZcJnA2AASucidlQjffiKp8KboYOfkwmO8W/U6iX6n6FbcVno7DI6g99JcfhnaJjco4Df7OXh14wVV/T1ghpFfX4kCm8v//HNVM2FPlMT13W9gSub8lfUxuCvQkC34NzeOdUTDFvKvhJnA2ImKjBvxHzP1uKh9AaVTeVBJNY+KKyBWgvbBXG+RyT9wV15+K2XNLdmHfYjprOjE0b8KbNImKjrMY2dbRgGf6mHTf7ykw1Gwl+j3d8rcHRtrHZZOBJ0xpdxAtFnTRIw2zAKbui9wkkqQxHi5wcD3EKmiu72vmA+6nHDx0o/FU2gmt3Xiey9t3SYIh3Wn17YYm5aWCyfloZwjQQpEIqqgVsZ1LK/uP+qevNZh8jfSoZkQPhq8+GR00cYWf/qpo3zh5JUdmvNEEv7eeBnk25tZo3Vsf7KVYt6RC6BWNNF2b4jNChgxTy5VzHq8V0tSgQUPXSJjLqDgu+S66WjSJPsiaQ75sy/26vCfF6RCvnfK6vnkhmguZVX+6MwD6+zSD0Ltc7KbJqYk6u5hgAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VB7IUURT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VF6EIX5D.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.tomi/image.js\nvar image = \"data:image/webp;base64,UklGRowFAABXRUJQVlA4IIAFAAAQHgCdASqAAIAAPm0yl0akIyIhK5N5kIANiWIA1BIm/oGtc9T/LL+Ye81Wf7L+Bvx06Zw4vYb+W/qv5M/RD0H+JJ/g/tV7h/mL/W39gOlV9wD+wf3Pre/QX/Yj0xf2++ET9m/2o9oL/75yZ+i3cn/prIxtJjT+7EwY0zc0nyGvTZVfAO1vKjQo/LRZC4RlhVPRBpER14YZjYf4KhZW6FcpDJq9qCkDQtQG2B9eyPn2vCSnM8Pwl4Yg7IXufxDsc6CZP5xiDkPRJf8U/MI40XcW117fsrzBSqu+2tMyftObMRTreJoRttBGPNCTwh9DmyZShAPKVueOBAAA/u92011Hz5z/j4v8fF/j4vjyvfxcjV/O+pgh+FvLlVJETVFGvVlUYGlCYyuC3x+nCNpfcUi6MR0utDRVUoP/fopQ07e71avlXOcCMy201PWy+e/9G7B9yX4X78//LsyVZOEiJkFB1ErBhGo23/xY/Fh/HGlxDv/FT3zKuaRfIiVUV8KWCK+OBEhNbdLgn2RAz9xCGvu8xz98GP41TDeqdbRsTRBtlgf1Wc24PZUjglSbYAc9iS7/nNYWorx0/XIvu/NJDNGa/7j4Zz0tTDaiE5go9BPafWBjtQZJ4xlM/0SVaT40oi69LsxQx2zhTP8WKNLQiqVgHIlBY+fKbvUUwvHiuIrO5tpMoL5VgNNAI/VzwvFVWKba/l/M6HPgBQmT0jqCMaFC9mbUDjYmWRk0Y6MPm0Sacddel/S5zyiwUCIGXstjHGLKDHYYcAwVKMGNhH41/gE0Obim9YDP+bZXFpf/5VvTIqTjJ3f17QL071giBTPT0PPUgfO7Nc/FDI0Dc5B6xrB2FQ9MmNbCfFt5OZalGL+bTJuBIYDa1CQTobdgoQiaKmNN84DC2QSttphtAiqeuvcozJVGRTP0SBEjwZqaAu4n7Fc81Os4ipAxssxNSu4U3rGm3qIwzUAT3RF87j0rSufh0giu+oVFnkN87bVoobxfod9H/lxoJct4fuDxv2qamRuiVuXS9U1us5HYJDiPkwXHbWZXR8DO5Oahx9EI22ysS+BQrXUVR5ynonzsfMX+ln4ObsGJxuaUWvBh3e7SmvfSDP5lRRcbON5Kuov6wyGjAHfMfQgxbpVN3aSbBvmhnr6Ac2LZAQh70kwuV23WLNMa8HdaggZZ6CEJJijTkhOoXfAuU00wHuAP5Fs4QRHni8KAND2CnyphGTbbSZIcnspeM0nDGjis0oAOIm5KR18z1NpoxLSyirjEYrwHg2X9B59HIGOWA+lzTCrdZUWMCwXw9nJksjikIf5V+r5xpPXsjJ/nOf0/zh08c25i0fztHElZmoMIAtLSeVs2P+tV/2ck5JFMzTIal359abfBcfNgskT1suyy3sUP54HyRvp2vWkP53icBLg9vX6Fr62j8k6Ye8Lp1aiVX2f4AxZ0TUoag5rctnhh7LAEvlMEDj19ySyJ7O5T//f/FjzRq1QUW0gaLEakkKJSKCD4kWOCA5+iaVOiGGKyUTsupae2zBqrLEClwx35DRe1giJb6rL3Iipva+ilU4bYvTpVEhK3iDc5lxI5VF0k7nX1k5qB07VLxvbVGvhPqvZjFKfp4V6Oxv8b9daG30Uyl9eYIjSU2ZK/59xo003gcXWPwPnA5qDaoPNA1Y7WOrsvOS06W0UH0BdCx5G+gWyBHMSN6+CsRbpjNnxfGhCBqb91cLZvriC6nZfwMsw+H9z66dJweMkLfumFJTu3tgHUMEPHykUhN5BK53kTG9U2X8fy6Anr785lahyd3lLV2ml9T4Jgr/xFrEEpCP4jdAzhxapH3rQGI59ttZF/OT905SYoonFwdBkdId+rt8fcDCEHpe+/QAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VF6EIX5D.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VKEDKKKR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.wombat/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VKEDKKKR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VLI6ZCKX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.dfinnwallet/image.js\nvar image = \"data:image/webp;base64,UklGRhwFAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSOMBAAABCjnS9j9t9FcYSobZHKGn5BLOieE4zqnUFaCktqsN0iEcr5BtXCk4/DcoIA3fhsqf/r+ImADm/nFhd//07lEXIc3p/u7CRzXSdhAtx/Xj8+ZTIVDOTT1ejgJ7ZLypja8XungpG1PeKJTdMDnTRW0SuuVhORNpWxc5U3GGUvVrt7roKX41v8rSwRghxeRlbd9qjDRWPi/SpkYpfJHHm0Z7jJNiBnvR6GikHXkxiJW2NVamVn+V7aZGK6bSTzXMNN6M0od/oBFTejk1jVmcbuXJDFTGchc31ajpdglbsIS/eYnGbTySU+fAZIq01zVysRl8gSYBowtoNB+Xx9hlPgYX79TBmb1jcOb0HJzcNcHJ4xM4jp/9/+z//4CPT+BoBJycnoOTvWNwZqcOzszH4OKPy+BERRfQaFTwBZoEtNehiU1OnQOTKZJeAsx4JBm2YAnV724Ki26X8mQGKmO5C50aKHHY0z+ARFG9q2EGKKP0wcp2E46YCvu20jYYppYa8EWjA6UjLzjwm0YbCMWoHF+kTRjCFypXa/sWBI2lcq4sHUCgGJV71a/dFh7Fr6phOhNpu9CYiqOGXHbD5KywTEK3rEbQm9r4elFAlI0pT42qHUTLcf34vPlUCJRzU4+Xo8BWuQIAVlA4IBIDAABwFACdASqAAIAAPm02l0ckIyIhJxbaEIANiWkAFs0+Sf7v2m/5L8crJX/JeSHeDvAPzl+QHAEGBKopmfj3+o/YE6TBQ+9mstjZPimSDXWsrcH/i/M/h3GVysIYPr0J/1QKBLwcVox1BoLeLea6dAMlcG3MXV9exvrWIjQuw9XXbAyURF8O817RX+jS2Dq3U+6THU9Cx3uh2+Zq1iWRvfrofVFaK0zzafiYQlEAAP78rRAQ/qr/yjO/c4iHqYY//4ZSqZXoQJkVIJTSJcusb0Ev/5MTdwPVN/+ZardIDW0fpBnHKFSt6uOjG6BtEfH+pfhO8kLhgkHO+BMAS+6+yixEypZxvNfxjKjNgpPflHlbaazkgf9w+rv1NXokwlWUc1bLNlz8pFwfgzC/F5/0+cJwFkf/zC1If29go9hSJf2JzlIjBFREOjbpWSt/NAyBAwO2RUm/zej9/cjrQD1FFFvpH8HsNIKf+8mf75dmWubuSw7KETEm/5dcagu8pQ2bGfA8WEReRKqtnR3FjDqV9XtP+eIy/LhGbUm4wk7V/a89xIL6KVznixVDLEbrBLZ9SVpqLRYogGHG3f2wxZLuZM2FSNcnOwl+XOVbuqh7ptA6IoLomY63m1Pjd3e9qFQLQmLZiq1lzTNf+ZZln9LnN3+eQBttxJgx69b5U5ZdBkzW9ijXjZaF3335M272k7pizlRwEKsN6qQ8q69eUPUpTnfI2Zy91XTFWG7h7gWBd4Xt7MNwtIFud7/ZbGX6SPpg772/SpvTzBWOsTnjsFspfMN8lAkf66fnNf34rIATXlvl7NzTpZ9K/WDDs5I+TuM7VLhPu8QE+8Iw3bOjUYTVFWBQa2q3XiEHPnDO43MW3EGgPI3bpJDYLN2LKRPP+46LvHOOlZtt3HHAedzbuuJFVBKUHMsoymPNAOEsvlWnIQcGB0cC1UBpf8vkrd4q0gGgBxn9dvNJkBwTsjTgrvGDysyKNLy+1io3wWiOENXpiQ0SznM22vH/NF3NuorLUqgHzMsd0P6l6m37CWrOKJi5efgAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VLI6ZCKX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VMYFLQHY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.coinstats/image.js\nvar image = \"data:image/webp;base64,UklGRnAPAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSMIIAAAB8Mf//yol/v89Dj3AIM4oYY7ykrK7A+Vld3d356t8XTB2lxq3247tXrysSazkNmsyu8a4LwckJXQYhDnn8ceBcx7n+Tyv/yNiAoBLn8gpu9/57ld71XMJEaXnVfbfvntvz7RoX/j/2HH25sQTaflFjidOdzNu5xNHUcH5k0lbZg3tYtA1T0/ZTIeE1OLjvNP/nNUvTNAnIaTn6sG+ADChFLV9WvDKwl6hgu74WyZZb+Kx9gAQ9bVG8luvTO0SoCvGiPWZbkTM7w8ArRMYQMTsTd2Mgk4IhujDdmy2bgYAwBw2EB+91CPAQwcEjyhrObb8Lz8A6GNjBLHqzR6eAneWpFJUerYrAHT+kBnEcmsXzgK32VBSVDgGAIy7GEK8u9vI098z6lGlcwUAwDg3S9iQNZ6b4FS7iKpTAgAg8gZTKNqtJj5GX6lDwq9iACDkKFuIdelxPGy9jqR3pgKA/xrWEG9sY858xIG0DbsAAAbWM4fFVjNb0WfrkfodIwC0/4k9rD8bxdKQNKS/0gcAWr3BAWLaIGaEuAzU8N4CAPBdwAWmj2ZEiM9FLZ8fAACIquECs8d5sCDE56OkBX5sAoCgbC4kLBjHQlweSqhpwRAAMCRygRJmj9JucCZKqOWzii8GA4DXVJELlDB9kFYxaSghveiyvTrMGwBA6FjKB0qYFq1Nm3OooSQWbguBFn2uiHwg4jmzJkfqtbixNggUeiU0clNv1WKrA+mr9po8QKnH2OfcYPF2urgbSP9JdwOoND+UuMEbcVRt0pH88TqTAGqFbxr5wXQTkbWOLGukAQj3Ojl6aqWJtyOphA0nIoF0cA1H+HA8hTFDJJGwOqkd0Abc5knKCiLY4UJKCSsSzED9UQNH6NqlSrD8KVFIWP7f1iBQbanmSbrbRVDhmYS01QnBIAB130c8IVo9lQnRpTQNSWYQgNz3B77KewiKDEeQ9kQ4CKDhUSdX+GaAougKmqy/gQBarinlq6qHEuMhJH08AjSOtfGFLwUpiLDTrDNo5XmVM0e3lvzXI+lHJtD8SC1fuCmgBUsmSVV3Qbv5DzjL7tLCBJFkrx9oH/ErZzhFaCYkBQnFGyZg8TPeXg1rpkchyVpPJhKqOLvVu5m5SCgWBgGT0+5whgsFAGibTOHaCmx2zOTt1XAA6H2N4o9QRuAobwX9AWB6DYHzDWB1ZxlnT2cB+OxFwpIRzMT/yhn+0w86HSOQsr2YCf+St9NdYNA1gpoXgN0UibP8oTDjEYF9DEOrHJw9nuWzyU1QEMTQ8GzOxC0Rh1G96zgw3PYUZ5g46ThB6U6W4F8iZyd3fktQNI6puXbOzr+VR/Czham+FzgrSLtNcNHAVOvXOSv65ZE68SywvcHNV/H9SnXOlxmbYOOrqvKZusr9jMV8wZezoUld8TbGAg/x1SSh+odrGYPuh76wufkhvb+ENQiMmbDh9Qt2UTf+nM+cPLjv3H+dynFIunBvCRfytsNXpXz5axlrEsHDtdzIw+N3Hs24XcVSQ5O64m1cyTtOS/js1we1jDRVOtVV7udOHjHfetVW8owB51/V6p5adQEAPGOXv/fDo+oGjap+c6hrOqkXct++Wz66XeNs1KD4QpE6vOCjI/KAwfu++et5o0hU9G4+wc8WnQEAwTw24UqpSJK/5zxB0Tj9AfDw8uk4NTGnVl3atFMEj7frkdzLPyh6wRs/u5SdiHyJwHVcr+S+rdoPXHP0hrull3w2udVhgVHH5IbQqHG7P7TJpM0ws5jgwWidkxs795mT8FWpYxYMziaoPqxTg4e0ViBvHT1+ZkfofIJAyvbSJe8vCj46sLCPUYFcAN99BFgyQpeGVSA23rv89s4pMQEKAGBGLYHzDV161YnNuu58lbxidIRfS31zCfCPcB0KKUKlz347+8/p/dv7yUKsFK4dOrTVpUhem398sCcAwAIK8Tej7hgLRVWIuNpD1vM6AYprPXXGc42IhDd6gDwkheSWWWdMN0lSQ5qBCSIB4l4/XTHsQ0ppAjRvySSp6i7oSWwlSZalBf/1JPiFWUdMnyHpev8WoOs9Etxk0A2/tUj6IAJaDjxAUzZKN4aX0BwyKoDochLMidIFAbplImlFDCg1WGnwXKQOCND+BNJa/RUJkSUSSdMS/gQwJzeQSKVRgiIQXkTST3tzJ0BwQjXSJnqAyk42ik9igXcBgveXo0Ri6yyogS316r6IAv7NCeUoIWX9VlAfcEVU820EyHsv7cZReFI1SkgppgcSQNwDZeLFziCP/bTxbBQ33Y65UEJS+1ggTaxT0pTeAeSRHyPitVH+XBiGZyF1XQrQBl9W0Ph9e5B3/QLlZZtMAnumtSVIfqUVEYz8vYWma2Eg7/wttvhpDwNjhtiPkP76aCDf/KiZpqxwkHe4gAqf7GvjwZCHeV8l0ju2gYbJTkQU09uBvH26qASxaJ2RmaA111HD+iOgpek0Il7oAPKwrCZULomFO0KZCNn2uyhpccakCUSexzQLyEO/b0LVosv2+ghvjbxHvmFziUgvYVo0aDxiU1+Qh2c1IqmzJPvwaCNZqzGHs0vqUUsJMwaD1t4BnrL26U1ILVU/KDi+Pd7iq8LXEr/rZIG9WkJNJcyLA0Y7XRBRU9dj288Xzlj3b12zZMGStdv2W89c+tlW6kKtJcyPF9jw7JuGLLqfVToe3vvz3l/Flc/cyGZuvABsBmxCfc6IE4BR7xHndenbwcBwt9NO3XGdjQamTSkOnSl+uQ2wvuW6pCc3tgGHIy/X6kZdehxwGZz4QNQF0Z5iBl7jrtbrQH3meOA4cKsNJa4k/GOHEfju9EIxV6VJFuBd8IhKLeem4ki0p8AdgGCIOWjnwn4oxiCATgZ2XZchMubOWB9hBD31t0xIucFQYcoEiz/obkjPhdbcWgaqr6XO79kW9FkI7Ttj74mcYpGs8X/fH907vXcI6Lpv5yEzNyeeTMsrcjxxuiVElNzOKsftvG+PH944fVBHX2AdVlA4IIgGAADwHwCdASqAAIAAPm0skkakIiGhL5KboIANiWxuEUgKoTxj7Afo1/AH8A/QD+gIgjZf8z+IHfpUA7V+RntXVd+bfiL+oczYen0y+Cv6nSA+573AP1G/YDrAf0L0Afr9+zPvGf279YPcB6AH9D/4XrH+oB+13sAfsV6Zf7n/A1+4v7efAb+zP//6wD//8TgxgqQJlHzF+lx6AH6qpp8H5PpyoukNvEzzvnVj/IfzIBE0V+Ix4ca++F8dj2aHrC0Jjhim3C09K+yieYoIBIgm79iXwlaZNCPeVVA0+1J5x5b17flc5EFgZZCWZ/9g4vcFFqSy9MzXp+ff1GJH+60HU8kdV+E5CfUSAAAA/v02hbTn//6FLJggfO8uHYYbpzOgWqLem/FECvkcPakg0wgZEvH7dAfFj5YkQGsSI7qm7LU/SxXuaHIptCGAdjS192EPfay6NUjtxFbx0d35ITErqdnjjTsWRmas5Wg6Ja7RDj+c7Wu9E/7ZIq21kZ532NBF4arPorA26n4qiCJY4voOS+R8bxcVkZVlkNGFtFTV4yQilZMsmIIORRmh6652A8//Dkf//LRtWVgcKNJYxrM1V7olZGMv6t+YcvkKgtcNMlW3Maz+R2eN71V5sjQFSr+CLu9dAUiVtwMzW62OTjN0zaQjYohjFeRofNdPPWNKg63RixiwMA2l7d70p6va5Nq1hbtgqIQmWysTRfM8tOmHwsS8I8KoXAKFDSNtYwzUsTKG8TwuSEKOwyTYSTO+yzTeIPZJsUJbvx7X0Wb2nKLHfYQ11OVNduOrK4uioAMtd08Kj6+nZcI8VtnKQUKMzGkeoRhQmF1ePULYGj2OWBaf55zY+jFbmaxeu1tGpb6iwNBdvvUYuj+LLpWpVqGdIpl2d6+gKTJYpD4vtAkPciKRq5DaDiHgHsdwCFpWa1+3qVjnJ6cYp9ZQOanlmnQVFmK6w//mXP//MW//26z/5gBBP3W7+AuLAHDPq2c9j9ZV8elCUU7CgUyIieC3xlCex6dBeSYtehwukXu/P0CKGsZVVolEAITSqWF0yIIHchKSpjL7AoiTZpXRA+phmHsTpO0xxdihvFweZ7r28pyR+1UtrrJjujfDoLkWNkp1B5rWtmdFff/tsJhNNNNQHxUq5bmjI0TM7d5JpadWJPZyBmNlCFTcSJQhEvXMtYbaV6//OmrdTTS6b6S9p1TwApuQyI8EUTBlfLfG/j2+qKOS/mnbZmXLVEtax5aYZ3JUdYljJoABN9nBG4tFTGBweZ2iZlBNx2dgRoX57+K13+YKS15vlGm/HEmzpJv8hvlg7yUiZW0hssod4SmEAl1d6p71Q0gGAaawRf7UHZ3l3JaRZFhD3yZgCnl87UUz1H3bYopnn9tMB/dJjmIARO7L2vmFT7ePvn9a1wYmwwbjvRl8ui+gJnlT/63Re+9TwPqnXeA9zWNvL/9UIQ/jkRRMelciDjNWqWZqMzKiVB8wlGGQV3Q3gIZuYcjPZjr8o5Z3ySM+wxvsvP+5/Y2FAMsAHn4ltVmvF5dOzcHgPoIxMEIT9h0EpLEwaBVaea46BiUgdTyol9kbBdQky2/uA7/swIIZtlpE1y3PFCTJ0mPA3QRLJEXeyXChCdVXOg7xVURyebf6LsJ2CFfzHc3Gwq7hyH6JO7iD3/rVbB8EMnX8uilMrk36SdmCq/tR/umMu9YfN7WCqaD8ofCcxdw7oVAzHXfJbuVD/uS2CEk3exnz8O1b4UN9oojzu5TFjK3a31vtGjlEyhnU9zDnNu1rWKvp7j9VFXP5GtNz2lK1k1V/jDbz6UJOsEGbAuUW01p2GmFAo72j6Nn6bvXRazMMjWj1W6klf/YqGBGAD1nz/OHmL0hb/kS5bEX3eutxGZ0xl752/9qkKLmaCqx68vTOQAcqH05piX5ZBZ95sQXYFT5xqE2rzSiiOyGsehwsfR4MuG6MzBx19d5ptDqVdOtLoRXZxPv6LU+G6MxRGI/E+zYnlgfuPDchXv12wUaK1G0BU4QoNG9cWdv/9Kxy6HwJapgq1CJqjiVxBIn2oBg8wN1OlCdm+1l8R35OqQsBd1Gz1FeLCv8ZXDlC246xlxVDZupCo9TKUjOIGsKGH90vUFWQZCGlp15gczOVA1hmetBJeryTGBEc+JQP0BqT3ZulC8a0zhhFRI3jx97+Yi2p026G+zYnlkazsstmoXIAQEpxiRWvOqhUA2vTYbX5PyAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VMYFLQHY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VNMGUJNB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.unitywallet/image.js\nvar image = \"data:image/webp;base64,UklGRsIEAABXRUJQVlA4ILYEAACQHACdASqAAIAAPm0ylkckIyKhJhVbiIANiWQA08yrfDfjp+KvJqeAOfyNP1hflftm9kDnJf7rugP0z/zP+V93j0PegB+wHWd+gB5Uf7UfB1+z/7Xe0v//9Zp2Mfar+KvnTLIB4slNYg37PAcUd6RmmLFj2dYt3SSnogcIejZRrNp1M7R2cGm/p4ooStxYdyq4KrUMOs7BPe8mvPLsTiq0NQ1AFr4qTmAUKOOarANCL4e2JONJvhOzE5tndcCp+6AxYNsvcNwvmvcA3wZv/NZqxHbYWej+F8pgK+hkA78EMxuuXfS/olqXZVYvg2AA/vyNSpbyAx65Alp+OVu7M/dD6iJsA+1zbjl//tXzXv9aUZ8Kygi2eEa/WfQn481/Qk2xyBMsfx18t+Yv5Zl8lDToN9lw0eha8X5cHAjn6DxUMhsIKNTmsKgXV1Xb79f2ZBQVTjUDMyFlFoxvPwiXtuf//rkgFiVSjW6D5Ng87YGJ0uktlEq9f62uuUyRj+gCjSwW866Zlr/Ogy8ke6vfsGx+EDGwyPjbdGSD+FqmYRUnPD2jJd/Y+7hIksCraiDLj1HeknbJO7ECsVNA9f3VYV0irXqYff4TDDFutnewM4WH+BHDc0YaI7nueydFv70SB5SByLOSIyKl+GIDOl4RaWRrXCCK0tAHbyxgMqdWqtJRATuRNAbxLSyiEl5fVR7rJEB11wZAF/BmBOMbYOX/m9yVcd8qbwa7gD6Sk1f5V6tZHpOM+42L1cIOa3igK8C/OgjuQnhhqNqGJ91QUulpzhZ/PH/Z3kc40b3taJTbKimQ4uATeFH/x1U/ik554Mdyg0o8cBfH9YJQRVtXH4/fFZ32JIG58rtjMZDendVOEKUyo16ZmZAmT3ngwmlQthmSVkJqwZOcoC2/qrl92xMsn699Zim13vCYZlN4+vKt1di2SmOZl2xz9iQSpOkEcetI65SiwBecHflyzUsqyGIY+tW+l4H4drFtCZ7A4q+JV1RxD6JrxCAJOluNFMoqynKIKm2V/95YMxi4vjB2GspkRNxGnLESEzg+WzWvS+dNAv17cDDLMRHWrdkH/ODJc2XopjJVi0Vu7uegDDIIi0dIUf7A3ZoYY8f/8yFvyMfYR7bKF1b5nnaB/1nd+eTi54xIAHWjarmFP0WRAbCSl8bE13NwZc5uCV93zicqulsu9Nh0A6jQKKQi51IJUa5/8E6bp8TUmiJQycb2fD09wHovAJYXtsJ9G8MkVe3nbx+l6Z+o/e7OaJKqzdnpLBiOmJ/sfbZfHX97R2dwbudtzEuY1vgz8NRNt8CsPd9bQKhCPkjNtoQwLJYyZzCLqKwLM9pGjGgYgF1PwWW93VWTyFxzByVaARVi/8+7wX9mfSkv9jQH3AFcBBrWIYKGGGC723YjuQV1hh44E4ZPuHCzi13mpA+gqMP/8t+kUZjg6QzUaTz6Z6g+2OYhLy0nSBOcBLMjZotQrgXAqSAVSk2R0lQ8afq8zvxx6H76hBZ+eZXkY6OR9BgoWtcXj6v1y9MMbfoGsZ0XR4sabIadK2/T8KsHQ1XfCpiQ/beTgwCdG7Jd74I3ahyVMF/t1Fp4I9Wxbg48UaPAHOQAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VNMGUJNB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VTXLRGUL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/is.callback/image.js\nvar image = \"data:image/webp;base64,UklGRsYCAABXRUJQVlA4ILoCAADQDwCdASqAAIAAPm02mUikIyKhJJVYuIANiWlu3QjOfQL+iD7n9Lw0+5vJXvC2ROIDSgzPvIaa+1w0RFw3PkJfTCrhuTiHkckrc98L9zNlbVhv5CLWJvy5CdZfteTAZzacbuRGvVwqXmBxDUHCINSxzaKMjoHLb1fyz++EMjjBtcNERcNz47AA/vxc0Aj8JDWMu9/4g2ghBey/Y48OzGy95/fwG26DZzq31f8i6F8l49peOkNWGnqOS+6NgbOLJWet8zAP4MRQI+6Dxa5HWptomZG3tnGghapKHoY/vY5+DQfunlMtuUjn+0PHIXLvxxUkLK7td76xotR/y2DhJfGP0eZ5CAVwNvr7rh1Ch64gbViwLqoig+v/85gsR3uh9S9cxZqlbeFN05QDyfebjfYiu02XBAbrxvDvE7F4BTOZboxMJWZPWO5pjPb3mChpPnla63jxPITYjhftspcOTFdlA3BvidfwqvQL6MiPvVxVEiBzQUBwKqMlgY5jS5KKXIdrLP8AzMhwk55//5wz93cW+Zs+O7rbLfLmRQFlAGqypv9fCE8YyS5/6r4fDOsxS6Aogdn7/tPak6nDf3kl4x1FtaJwcP3/8WGvVjeu2DTkKDAoEJD3aIWPxQOe4nqmYu//dPHLl18cIvzVGjrnLMilLeXFWXIc4KP5lrNmx7SeBf/WOPi/dh2Pd8Y/wKh7cgqW6l2Yo6V9v5eZYaxGSmS+6fmNMSv3eZgmjavgNGcVTtSuKIQp4IgYTUX582daa46CuqjN4Avr+shzyy5loiwfx1ke4pUKF2+xCfkE3EGLclx+n4BTS4a7nSxRGyPLMZB8F9yjsm/8Eq+rudo+Ur60zUYTD5lqHF/H87DtHTIpknDASspJP6hf3euwRCHH3siSs6jSHdSt6M6ftp8rcWJXrRZpHXcAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VTXLRGUL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VUQ2UL4L.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/one.mixin.messenger/image.js\nvar image = \"data:image/webp;base64,UklGRvQCAABXRUJQVlA4IOgCAABQFACdASqAAIAAPm02lEckI6IhKxdIwIANiUAa47tHu/5H8iuhD5J7s8gGaTsx0D/1X1w+Id+lG8A/af0oOm33wDphf259GAFb1TlBb8WqiOSiAbq7FE+og/+2w2vMoczTYySkZmW/Olf3v91TZZXG70qKjeBZqsNO5bravVkf7EbX56o1YlKQq6LPAadLBUN7v/B8Qx2VX4N1akVErcCFN+VsIv/l7yWpEgAA/vyoAAEcyr545y93Q0x6nsCpdL7f2aaLvKpMuThkb/8qu3Vn9LZKnxzt+MRECWPOMT9aTT2i9vKK6GGjYRbuEzevZoOJmgR2qBn5ES+0C31CcPm+LZcZMf3MyBwx4lI7TOke/jP7DIIZRkZLwnTCLAuvVLgTz7YftJKxBtfFL/IqxpT43pmERBYa6qD+NmrF66je7QcOViBZ3CwZTwiFXEi2ozY6X+S7Z67V91DNk0D4KA7L3La5MKvFQXbQWRtZmzDAToBifIrpMaN8fdYVm3kNdod5ohyMYwH1asugXJUXD1mbr7bG2Jjx1qRjxZmsII0kcFNyTkBGHJLSRJoc277fBiKh0k9x7L07TfBCPByuAN3AkKUWRyieew3nAXKVTLvhX22cPC6cZIDtF0ijoQt2ba//PO+3jMnV+v9xy2M8ZZfrFj+BFBMz9le6PmeD3WFGcNiPwuUQ2d8yJbrkFjyfeusKlfgyBAzhnE5cRNeQRy7ZdYrPddT+uLq1kxMuFxD1VDl0jJevZ1m3FSUOC261i/5kwWiAdQg5kG8Jm2siLLDZx92Wc4JUYGcHTEyrTf3oBnXNadL6HNKUAT79JJClIdvScnNKm3TtXL5SAKkl1SvL0F2Po/hI1DvVO2Q+n2Kl65W4OrzCgMPhrKySMEdsZvKfbxHywgxqVRqCcZP+x6XU90PnOvoDlc0tkBYoZh7irt4aNuwK1MNZqI0QsG/mUGOL2rnAAutJHeRD84dC/rYCyBmoSAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VUQ2UL4L.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VVOWBOZ5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.nabox/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VVOWBOZ5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VW2FN7E5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.leapwallet.CompassWallet/image.js\nvar image = \"data:image/webp;base64,UklGRpAFAABXRUJQVlA4IIQFAACwGgCdASqAAIAAPm0ylUakIyIhKpSamIANiWMGe9VtCPEMypL34TApe3vY7P+Ur0v9Dwv6E/guDQVR00LyAfV3sGmOQh0W8tp3JlCG0Ak2EmCVxrq6r2rlfy5hulHDVp3bNel/NaGCqjbXykVQ0wvlnDKJ4AwWfyFIEHjHT6vNLX/hVRx4a8zxOE4gS6mdZJ+Ou5HPQagDpA16h29RnsdskKzyv/3AeOEqa3j8WeuvTHtBqvFpPQsA+G0PGuXh2Xf3dLN3L2EiF7A1R+x72iiStVQoNheD8AroxgBCb4AA/vqJ3/t44LCd/9eeaGTmM36eA6IVMYjKod1L5Sa6JiXianLeHUPY87iyz/cFq83c2Ojx77kDtEAA8yI8CRN+0b4gjWRFMPE+77p4SDd7vxcQb+7ogYtU1Wh5uFtyB+kz+RB7rcjnMbxd9P9g6ZsMnMb+Q6zM+lHvOcoWiTAQ7E5Cjy6OObQU0wIJFrbHPDNYn6YgVUlF5dkUqHYxgmobw7ibn+yoAh9gKOjsKh0hyYcJcPw7i183RmlJN1WYYnohgmenncScp9646n8IeNE1iMjbbqfnIj/tjWHIahiaqRy+STDeqBjG1jGB0Y2LHGN3sS9/0eky13EjLY9PWOS+/bcfI+I4bt/ivtD/FLuGmBtLftJSmCj+ef/iZhHY3LOSjizcLclUm2y1t6WduuGLR4tPZhbhTPXIRH89B7thMtADWwsi1ZZ/x7eXyYS8RF7p1Dg1F3dABY3wyPTL+kjwxoXjP6u2vT/ktEGVYKLGB28lNzhsVaAK+57XeSEvtJQg0YVnEV8jcwZbnZg5/47dIjpIWuaigpnSgv527vLESDKNq9zPDBnrUvMpT8XDjbHPe2fi5KUlbiyavcvuA6W5wp3rXJP8/7hE9TRGPfXsmW27+QeBrmuor+6EKZc2lqJcP7zeSDL1URS/MtWkxUutcsDVwlVfuAwh4vfueClfyRUXZehmqTi93cjGkEtjQQ4r1YCh0J8id1QrvpAgX/gw9euI6DmQtWOxrREs1DPYPE2f26HslGngklcWmFlLtSBC7nTOSqAeoYK51uVZZSWbP4UY/VXO1RCigsuTV1te6Yog8jY7gej+YkMAr3ElWuRgIFgynb31z4Ibdy2W2YvJHeW+7pIbH4ZtjbxObu1eKfeltqcgA5WtDFIHO91joka4k8qud42EiujcyfA1a5N/k7mG7FDhJYErBAbztVQ8Wro2TVOxaNIBjAupe1TN0t0pSVymOGliBp1TpBpG0WZF50a8M+LVWxpIS3RdcuQ7b+wSuN6WzG6fyJ5fsnHQdffEOb40E/1vZKBftnhps7olbW1+8Ps/OCZHPnTpvXUdkkiqim9EbVIRKKWeZD3n5zw3BD8RU2bJg0OweZf6p8KPgkgX/XYN2TiUKSNtIvQ3Mcmw9XviD+maH2kKC5Pjr0YnjQMGVEfirBrLCsFR5NPqKCmJxz58YI5M6AyL3Ln/l27gurjlAEx/VbV8sAwAcker5C3sh5jLYYS9ayPTZQk0/AUyxTC96KF8htro0jFcGwPfBcN18vuKmkvJtAzh47fOOTeURUsK0LiXtT9ZdHODOaQ7j1sTsR9SdUqVvEA8ononzrwDEnGHfYBhdwPxLe6d3zlkct0DyyRqe8AUG/wGBkRwyaU2F+tf8CWiUqPoqJyaFlKhycjcGJICJKFV+EEDfT6e7EVPT4Xj+Bv7isZMdDkJ7LBFFE2CZrlYX31ln6zoaFtBk7kLmCOG6dtQ7a0F3bh9/UqBoPXQQCvWZtfBw4KK+PRa5z6/zoHxHtdKMigF6BErLrfyjfSNGLtCs+1ubxFQznjhuOuuBtE2kFh3h8+PuiAT4/0u7wC9jaz5IAFMgAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VW2FN7E5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-VYS6PNRX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.frontier.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRgQDAABXRUJQVlA4IPgCAADwEwCdASqAAIAAPm00l0ikIqIhJBYI2IANiWM3AAPlcKvbiG1vXi+b+q9w5ir/mfsA/DHoT7gD9cv2Z92v0J+gB/ROoi9E3y1f2x+FzyTbvJyABUiD5/n6hXQ3Pac+zyMmUpsrliIDCUsWk5VQlWab0cL/LBB47nOjh22DY9HUdjnzS4Cwcon6xaOjcM6hjEwUsLBkvQ3RIfBc3W9NSLyHAHrqr/qP9ngA/umt/+dg/vR+PcEP9Wh/6tD/1aHktP1fRj9X4WAVuu6bxHbD0GelnA2pfxgJpaL1YV0HXr7ajZnaTs+z6v9aJ8aoX8wE9RvwWvxf2qBD5MjnRkGxPtzUYGn0JMC4lOqjEPoxbUNUq/ltIVqMQDvpmKyirVLMNfd9qnbWmgPoJuin3n/tbKqfryjEmQEBKQkYgv/GiVL+Cn+A/71+UCXmGabzHL6WenbxLB64NprtOfFM5njipqjxfEqZaSFJ5dYL9XyYvWJhbqoYV6x2yxlgGARKgrbGHIz7ooCH9vK1Pg3gR7xDuo/Atk4FLJzSnARNJazhN8ONQ55k5YJzAX3GVXPTBq40fTZA+sZH0J60KrLliQ+ydqPmtkw81KnlbrmyYCK0+DyEAdVxQyJSDFdHaOfuXFSP/UWKmzxQcrQji8E324wgVGMM+//yKjri//LtuOxAdfcKcx7tTwlT1eXB3Iyy61kbblHYJjx1DFSzQR8kj2Q/bZIc7wOCub072UvSNUT57sC50ggSHgUW7qgdPInFal0/c2o2if1X8nYjCpKXh10X0BU0BxYNaI039FopcGI9HorpZHEkQ/hLYLVL3NPRZiOPgLK61dS/MmuAlOaYTXw9d2GBumCvZe9Pz/rWZz28IrXVZLCDeHmEGcNgAhacQZIsZiaS20RA4/BUoQZKRVCKfwVeQYOYXBjMVS6VPZ0Hqb/959+J+mLCMg816Ph2+yvMal6uA3QS3fJjYmmLfKBQynQpxlBzSEIRH4nQ2fY1mNj7rxk7KNQEvAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-VYS6PNRX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WAEURFBG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.pandoshi/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WAEURFBG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WCQARS7C.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.gamic/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WCQARS7C.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WD5JWD6U.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.tofee/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WD5JWD6U.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WE7PFB2W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.robinhood.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRtgDAABXRUJQVlA4IMwDAADQEwCdASqAAIAAPm02mEikIyKhJBYJcIANiWMA1x3sQK5FH1f/+BP4kvTq8wGOnbz9gKHYh/gOij1JZRgMrt1jKVU80zyMfVAuMb5dRhBLI/co/qz6wQI4vpzjLBVErW5WaSEcfW+5P99Hiw7Zw46KyrG1iQ1rAMNJ2jFZLPpNYG6sfgbEZd1buq3bg9m6GJeBsxREnP8DHK1jLgmK6m+CYob5oI7ecAD++9Hfw5x/v7dq1ybfrAKozCyRdG0xYr4zQhTBuww/kWXGNXWeatPthYrlx+Q+S/ydaA7OMxGKlUNsDsozW3SJMMid0cOrVp9P+axT1L6b2oj+AFXZrWHu5f5JifOGRAtToUxshPVHPZ8anr8DvtqisDtKs6VzRxK7o6BMSj4Bxhn3OzF1rbmijNaz/Dt/DKKNWB62z7DZsziX9j5PRpnT2Fw2CSSH4qyw2dFf7N5fZyY0cWYoSsaMj6lJSc3et/nGvQ1HHhMqBicOoudi5XELMlahUX3TlrKDAwoCVP6mCW3fZrpIDp7c3oMQBtnxr8e4eHwYztzgSjf+xjFOuwrHNX69baUiIHaJf18oxM18p/FxzRMeEysjLL95TGLMygbQ0neDjJ1LZNCMvL1+bWPpeDkTPQwkEx05yjeXVkwqTa3uZtP88BbuecoJN6tPk8VvHaf+Q4/BuG3U4uRLN+z4V2igWmnf5xivrAAWQCPh4DvPBCa5H5c7/s/kXLy7kasz5+3/Hnbvz3Xz/8m4yVvshFS1ZcdmhKZ70hnzfUoFjrwVqodrrS7scG4ZQFyd6qxcHWq83kwdv33ezHA2lLcHTrhv/HYHeKWKs93w6ru03UBTWlisbhpQGgoEDOmYik4/FMbwbElrOOWBvdEhBoDFldI7R8aX6nHWbIt3mGBXKzJwS0wIp1K5GotnLyrIoz9FxBKYia58qS1nv1YanvT2E77/MKx4p8TZFk0n00Vj2RI0LllJ2vinqj/Rk2iawqid2ABZOygnP0qn5339etFsNwSGIO40zdmr5yAjdXn1OoBBOX0XFBhqqpKiNWie29jst1UxxvXeY/TKJSXlh70iD7V+IFgMeAYJ0flnebLZj8t6un8p6WIoxj1TkiMpH4+4z4aD+jmjrnq7E9qfMT7zJ6D1sSdHsr8ofFqBAodPyZOm7UU3f34aCPqHdZeclAG05Tlm9AD3i/OMdYGJ6pnJXAyFUilsKV3K3b57omviI9HAmGOsEAuJj/2O2cE12fY95evu9s1IAfih8r7vvOo3b+NPLrwTZZ+Q6lAj7bE3UAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WE7PFB2W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WEIHHJID.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.thirdweb/image.js\nvar image = \"data:image/webp;base64,UklGRvQCAABXRUJQVlA4IOgCAAAwFQCdASqAAIAAPm02lUckIyIhKpSYkIANiUAPCr6h+Rv45fJFUf8BuE5+OrP8/93nAAc4rzAeAB7gPQA/R7rGfQJ8tD2cF9matsQrev2pCLvX7UXHu07vXxfP5njq8/iDuUY6U7qgjldjvWS3aGFESsz9hiY9orEPQ3Baf0xBF1PkJHCGTkntIuxblloKE0/KnJHE9q0CbaM8xuyEM+rZ13NarrqHUMxguKIxBIRd69gAAP77nvEnOtAAA6cpaWpBpDVtjQYnbZljOUJ7zMlguhCiziP1NLBmHebwbuj4lIdkH1h/E2pr3Px9JfQg7kE08t9M3mN+PL1yKo+//m5HsAFVhJ2xLrdQX1xFuUurIdarZHtucF61GHQszrhJ28peVyX8MvBtnIJe/kdbqWHlncCYNqtu5FCaSdHDVKNsSvgVeat4HpJtpI5JmEb9lOswYmHojyjxC1C0QWAw3jB88Ls7zKzw90iSx1PuCaw3kIIcuUUT/AbUkYkV5H5jcrJ+b/rVRJ/k8W/CaS9vReG92KV0I5NhlO0QKMD3Q8TVgi7TPkepW+YeOlHiV3ED8vhBFz4p3Yb/54jxtl6SjD3GvSM/d7wIuVp/Gpu+VOYV19QtTKaVzVfJ2Krc6w7Ggq4PwbdsLEn0ACnB+ZPw+yg5dpm9Z4zRIjcNPeCkzBS5z8sukT54vJ8zw/cxvhFh17zqR53monEo08H/5maLy2hcWGnDCeWgfjHEbYV/dx3XEHbMa/odKCn2DONrbtf+okxfBCOkfvJLkv9eXp2s6vmvH+ve8id1X8iRuE//ympC4KwBWB/f6yRi847SZU/3NPdWleH97HU0lH6W91EbCetNZajGvVyFmPnQAkOF7VNJsUnzTpt9DIPmJasunVRXBfs6eRUPPI1/AAGA3+XewY+IZ90kBv4e7tsKD47W5b6iOJd6yWciXXCjfentG1+ueXrMFoJ/7gIrnxrrTbg8bwrk+woAAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WEIHHJID.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WFPL2XOD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.monarchwallet/image.js\nvar image = \"data:image/webp;base64,UklGRqoCAABXRUJQVlA4IJ4CAACwEwCdASqAAIAAPm02lkckI6IhKxl4MIANiUAPKL65vbvebnRyv9TeJb+u+wDxRekB5gP1V/Zz3s/QB6AH67dYf6AH7AemH+4HwyeVPq0nh2arrACIS5GAccMavN3kQw9uLLKZd4oKBFKjlfjYThpIqPfX642oMa/yMz7cYp8zgz3g9M2RwLWLyB+RTkuLQPjmAti6fUW4sUVtgL2bveTUAxq83eAAAP75ewACP9vKZI39JFtQaE//IZbEHNv37/ml7sQ30kyEqo7SsC7oEmupMX+bAvZ3M5KoOp7/BeORUzfDy1eAfXflePpq/7C964N0JKc2BLq//uazSd+ZoALTV5tDrD9zbeyUyLLej/QA0Yr/MnZ2mMlmPpwYFEMozYmiiOwAh16AEeUtG0fKBTkt4RdZWMDN6I4gN0prt3Bi2QL86rGy5kLt58C/+NASvi6OYH3mTJOTHsZhS19sUValgOVf5YDOtJVu/0u2rGwfo/j9zmDExVLWpPPlytXcBOPSFn70UHLCoToyzSDBVJ76gVCvieyIYg6bn+9fAk/uxK+L197PfFou1kbtcKJ7JHUJNYtRYHnMBHgoDDoft6srbezFmjbSiEr7PSpbs96ZcUmHMVLbHSqCnDlysJ99KPgZFNNZWB+HmEECOGWav3Rj+NVGXxRqxc+QwVsIBQbEjsxWqxnc962ATXPkuRLR3XZaYis09D+bZ96fM1S6nR4ccSRFg28B6VbZ5lxXNvIiVAlweV3BqY1fgAw59fZTAfS7O6qZZ9ZtEhdMxNW0k1lfjM1vlv+tpVH6sWaNMxy/iK0Mbyw20sy2jMFgsL4Q7iPz/R2FKVWr0cJ/bOU3/o1AFWxg+FdzeXR+NtK5o6GCKwVi86Z3Uyb+DFAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WFPL2XOD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WFYTTEWO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.keplr/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WFYTTEWO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WGY4E5ZS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.xucre/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WGY4E5ZS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WJBIEWRP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.kigo/image.js\nvar image = \"data:image/webp;base64,UklGRo4DAABXRUJQVlA4IIIDAADwFgCdASqAAIAAPm02mEgkIyKhJJVZwIANiUAa6z2Hq/3bkZuDfBHOjVZ/uekB4jv6m9bzzE/sl6AHUAf0jqEPQA8rz2L/2v/aX2dM6cmOHsk7E5QPA/STTUfImkugRERKkREREOiRyERanzMqnKexzZYDsYYC4Arx+yg5zaQlrUEZPdKzjhe3Fg0WiK966jF5IdWEJBs2j8rI/94/uW8UcOBJJqzGlS47gtIPpUmBolUTJI3Mzed3nBbd3d3dkAAA/uxw3/7aH/1of/Wh3Mfzanc0GQIU94QAOct0ZN3D8/e1iQpMyZRc69DOdUITxwBOfDCP6Y547zlpbr2/ZNisaWzdr1X5ug6MlYTcgpzmM+Noyz1PuaiTPych+npuEK9lrXO1QQsks6V+216VQoP+AVj9xI+8ePN+Oivg495hPhRlMOt+UohbM9PRYA5PUcSzUHYaXk4ReDNDJHYc/1z3ahV49deejZvTAdyMIlnsgRHclvNsRmZmv6u65H5Epw3l5BOXbqTYuBGP7pi+UHM+ii5gSGSTdlGy8Qgij5VgyREx0X/LFf/wbLQGNEOL16Pt56ZdzB+G9GQCcN0QVC2FZ1J0ZB6ZwXMlxPq93uSBkFX5/8XSPUoij4nPhPjIyAw75sRyQtrKPqzGCPhFd/Lh08ryAbUV3FV9HqPqjjLuPXEyZcuzh4Jdfc2HyCf9EYdLbuMbrud3shQbI9CthUmZh/wioCByapj7+C7PsENX0+MUQmDdGz9qXcaXO2Ts2TswArNpkLKudXS2CalDjhXDVtaWMlkZ9X9KLseY6NuUelcmUYx1ofj/WvP08swmBSIWeSz9xFXXPNYGFxnIZiRBCkcbsH3AauFj/kNCuqUpJmN0JeTzpl/T9hlzRaVnQq4GU42HAdokFrLO5KUX3Q5nuhA//9OtYGvYNVmgEDiNvMhuJTRnB3P3RashLR9stP5010+i1fMDrA1ifbPZHtp36ohXsrREj85H1MrR+JEG0f/mkmXu8g0CrVh+YbR0oSEJX+tC9Oe3iGgj27tt6LYRLDt8Sdv8SnRnBQVh/MlozgoKxAMBlMTsGbCjGIurDWhzi/ymaJh1nbm9BogOsphbe5+vVPnf60BZC1WklhrPuNV7NUp1Si2Uc2PVrq/VT91o5PSpG7+/VO0fLC2rqz52oxZ/7gD4lkcziEqkOAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WJBIEWRP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WLVFTPS6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coincircle/image.js\nvar image = \"data:image/webp;base64,UklGRnYGAABXRUJQVlA4IGoGAADwHgCdASqAAIAAPm0wlEakIyIhKhTb0IANiUDOAxyju789Aijvt1L8dZ9MW4P555vQ2hA5NO5fN+D/9VrmGlTTtiXAREzbfUaFNEnt6Zkt/yb52drv71vWpiiEwNeCEj+UYJ8XBRLRzaVOwKp36bpiNJVnXrtcbWrSrnnoCu8aZMJ3/iD/1bVa5f2hHCg/O4JKAGGQvfere+eECMXTcjv5Sl+4TEjZdW5sycUVu2nXeC2N+psHdTREqsVDIPnK3VWlQO/bUG1Y5NJTXGtwRRufp6xWkhKrshsa3DGkCV59WIKZfvxo7sqKRxkwdeP/+5nHkQL9elCYuF19uFJx3/xgAP74Kir8jmIffw/+QY/BX8FcM/INljVC8Xa7djof2ub5dV8n0bmrTpdRzBRN/caAX62aPTzxr6cFB2v7rffXirO3615UwQFE4sK+2Lv+Rs/qUCJZEJGv7/5/pmTEhOu8NSSl8gHuYNMnDvNDr+hv/fh4ZVRaUOdkcvJ6d0bRTU1nS0CeLc3HT1Z+9iYc2Z/hcG0zNJF2nbFGu/3G+bJCxQfLCEPlTAvcWkLQ+UIcq2PmGBP9+y9HGsgVGC6kxgO3eMPdsSgXPEOtPFE+fyOkM5yUPjmcMcRh1Sdr6OXpBdiKLS/emlKTN6krt6QL04i7jULLvURwZK9/+K8DabT3cCHP3/v4uzOaqo99sjEdDuJxvtZAEonMGiZ/PgMGgjDWBT/ntfmO79YU9tXMtJZepTjm/PRrI5DyE7b1aHjSEhqJH2k7FRIkGD4RYXrs1qXzU9JBpXbYvDAGCvn+3/He37AGm+Z+bQHY6QWe0McqT/61alJ3ZV/Z///1+p91YQfh08zXLk6Gzpf9wSqVhAdXgn672b2Tbj84XExAmKhvivYs6lM16bhAgjvu2d2nkO8hb/ptOKt+88knvkMBLy9ufX+ozSBsdbUR8R4az/4rN94sMgdvTEEHXRpdsZr8apjvg+iZDiJGVbX5TtyJIqMXr9pumR9KZPTzMVrppblgLG+zaGVmtaYTTB+MpheXTXDgSDhdGBvzwh47xvfh2E6afTcqkuV6QF0xPmxwkciwTKooQbytVSnD0K6hp7eU+RDLaI5mcOTsYCo9ZWOrGEuWH1AHejtr/k4yFQJe0W8ggZ3GEWJ68sqpWpxzqk4xHT+c+Kr/iNBSlp6SrLJeIXxRUkwnflgMmuwY5CgVZjEqMn7j6xx98ZYFzD6ZNgY3FXU8vhFxo16Du0OoUdUUv/bmKHJfVPuXtFPo0HX/pQgk+KcFfEHnfgwUUz0jjB4t6tsUv9jlogSycNexZDsTr/2fBm7SRKr6kTxVV3E5A87PFMMlpopFffLfp5BJ2QxqCbLjhIRnEX6E63hnXeVe+ZLPaguZuSV+8mhgnNOtNdCfWlmnqqJHu3Lwz91LORGFKw2dO+iwO3zgKOC74UsRT46Ru2K3WAwC75tVYj5OYAXTvaxGOqOkTlfiXzvRxUyRneZAh23Z0SEr3t+5BnGFFupWCS+Y9DAoslsjIoUqYPdLj8iF2xWa54jGMWmGCe9fOpQxAK7o9tDNbAHwTE2y7Ozb6MrBUEn01v4Mka+pnEKQ5CjIzc71K1EghX/9enzJaW4jhV8TGshYTIJCnryjytEO0Jo4mwRTfvQpdsTfzOK24VCqZV07vGOEFWKX7vL3cXrCroFpqdzcP383MBJkSu4jIIf60RrPkHDarEMEerKpeV8gI6siwtVfAXS95qa21esccWAZsNVcbJq6e9HmaDZECv5+LSzcYWweKPeUfSu3baaaMPy73HE/OqhRBqVWpY5jEcVTbe0hmgLaP24HZamwrqGkydqLAYEKSN0yGJISmR8y4HQxWBqIxsLFP4VzIVR8lj/I+QE3KM1CdeuPRqv/ON2eMPvHM4QAA3aUvtjD4t7fFmTboNgMZGlYN98O3mUJjfCV/aWMB5WAr79QXKidDXRe6/LctMD5Ap3QKlqs9KPDCRsOOm7OOgYQUMBScbutNV8EQ7K+dNo9+QtU0JqW6oTGyruu2EYnS3IgP/OLMdLx6ESLGy5VPGb4hJSW1ttw0exu2GxkEwXkOl/UA6BH1vHKDpXn8S9yQFwa5Wr9BH6UgfoVFuFvJMy7y7lFBSsbOiKjQBxRI1BzpufyectEJz1B0aa150pc72gNgGkGGdJt2k5MsxcAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WLVFTPS6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WRJBQNVE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.blocto/image.js\nvar image = \"data:image/webp;base64,UklGRoIFAABXRUJQVlA4IHYFAAAwHwCdASqAAIAAPm0wlkekIqIhJ5EbGIANiWQIcAGYMYH9g6+DIng/5j+wHtIWf+t/ebKR/E/0L/M/dp9DvQB5gH6P/7n+tdZDzAfsV+1Xu5/4b9gPcn/tvUA/qv936yD0AP2u9Mz9u/hN/cn9qval//+svdXe2T/S5CHvNECOivX+CGlBaEKn3glpPM0Dz0JllddluvZfZOHs9iCra/MMLrUi5blYndXxKJggDX6SDwSCD097tplljnbf+02xtYfX6zN0DIrbSfqjNb7qQ9vbO5b6DKrHvuOi9sasQzCEEGFODT9bot32KPhquHb0Eih8mRQTvBCtswACccZws/gs7wAA/sxw+bv+KUBS+DAynF5l4QDTovYUyJ56PrI/UZ7KWhw5OVKE/UASQO0wpvQSw49zHPimE3EvsEBuybwu15w5R6BTa4zLDkSydx+cH0WeDQMlfNIECtU7fJvDF5rz5LjUgyFkUzroDprmLFe67VoJEKcdpB5wqzNs1oncyaOd1bYuQbqDYehNiCJkBrPeASdNvWxFW72F6B6pURxbSnSFteE8oDAdPXxZDcMgSRgOQUKLyUS9QiRhayRxcZK5y/rm3U3d30w3vHKJEgn+FaOS867KpyZVTRCgF6hTIGpsm1ZCQCLqItfg8ciukXnAtYVy8dtnIMxay21VBUk9EYvqia4Qw16yJHT86K8YX1cU9PsJZyfO1cioXTeqK79htUBW69vBMKRTpt3aZbicBmXJOcLMdW9L5m5iMOPQ19qh/pIWhOlK71Jt5qADPggz3aNXoRTf9LB77NzkkrCkb9IPuLT2sdK7j1+1xOHLsAvfjt+g6MNTCRV7OEcsVHr54ppQjCkGDjSWo9bSLhPQYEAjE2KPQPTIAMbgzcheHFoXPA8/cB7ck2Xpv64OMVnmcBzLaZ+Mefz192beYdn9gSB/nBGGesr+/B3eMumH31GwMT5ry2I2hHxFUurekTnp4Hth8X8/LKQaICvZH25ntOhQ4QWUQaF7nXA3Edicppg9FUhyYN5JlpI4rBDxyAieAyl2Tz1BkrgSxj7aaYnOu+zxsVNs1QuklgrMFSxCMoBM8o6XRlSdAcG9PFS3fZnCnHcvyoDHTKVr/sXpdfMWTqrIR/pHbtPuMDPj2yoorSb8yMSBiBWctbEOOeaxMwIBKVO34uUFHwEbD04ovUAvul30M3fySMRdBLXV1X2OR6E7hBZIGi1WjHdsZkZo45THXqUXeVMDkaRzvb2yDMhLuRFTmGa0f036ZhASdeLEiQnoHrfmJwWLAq+RjnSk36LOO/DLfoAGCcxIP3DarZeWwsv1UT4VFyxJm95KX4rsEkrY1dcRmqMd/V+nWm7ctUTdIEepj8DcMr3hqWucfvKbDNAZR2DI2u/NP7pZ0Hxb0vLJCsiGR7JS3SXKcaAv8H7bRuaSbiEvpbffRSeghKGFwqUHGx8W5F+YvmMzF3OAlzRfzw4Pi0Tr1cgFC0yXIxVts7jDejL8M+K2Hqm5LMyR5LxIoMWmlN52o7xVPcyRMpOgeRTZ+ZOkaXWzby25eJKnKl9ACgFVq4HBEUsuhetExO6lzCTKsajGh3Lm8GhotE8t8IDIqs8rEhzu8tkmwmrRvhezd6AWAt2gilobgrz77VR0AOhDc2aFHID4h4sZjt2+MslxHU91AJvxPx+GApepwxTN3ylO74AkHv/empvGO0WtLjMJCKt+8BpbRo0Gbp/p48DnxkbUjfIIqZwWAuvnmNRlUcHlgwvBA7tkiP/yb0wnXntjgAB6GvGvr7zAoU24wIkKGRoyaoPo6hlbdYUx/CLRI19LHmB5eVtl3aAsNvFFsl+sJ3cel1INDq0n9ZrWVgAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WRJBQNVE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WRTS63PY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bmawallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WRTS63PY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WXZTVPXW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/fi.pillar/image.js\nvar image = \"data:image/webp;base64,UklGRhYDAABXRUJQVlA4IAoDAAAwEQCdASqAAIAAPm00lUckJaIhKpnoALANiUDfHPk/+GwvShN9bzmBvh0wQHNjGFcPIfVNuVPaYEHJqCR9rOco/CzeBjYpuBNZrtp9Nq3fLbOZTPVHW2q5As3uun229MeB2sVVOlKfQqZcfIyAavBWpFFiaIUlOG0qWdhM2zo8SDoBvZv///HOdzSjic7/5OcAAAD++ZNv/8bx0rcl1SP4s5ZOA7gJ36XoXxVLwK8ZEzsVupALKj7jkwRWu1/2JUzSImlwV7ulR5lbGQhpqJUdYOqB0EBb5vt/3Yvzm5ehj9TAEKSDCQVrMD+Gwi/AO/xTxRlcsw5cvi8ru+BqiCravdIiZW6SU9n7Wqmtut/da+tulV/q//s+tgnhSc886iZ6ddEFAC1Bv8P/0cWYOtf9i48/9RwaPXNrch5ovpzVgIvg2he4BSNCqZ0rWFvPQdA7dLJordTn9EKrPn5EPHviJ5RzvIKgd9/qqyTub0zMtPWIiOSzK84LQGOFQDJmZ4QU4pIKtLyyMILWSLVaMIDrteWVf0eJHD8a/75qrDvgat8gjYD4h+edx/eo+lcyhI5AEJaqdVJQ0z/NWHTicAuYyY6YV+o8ngmNzyPgigZBqgCGJV4ld8lr1MLETiSjzMsMc54G5BE0c05O6bZYvoT/00LkJHJO2z1/upV19UvHEi53iMdR654GX2SU4krLUv/rJrrLUo+xQWcJ3Hmfbo5H//fD5uv3nnBh/+3Z7IVEvIYK5Gs6I6DYgY1L0H+0GA/W/ruR9nZ4EFQs6d4fgzstpEBJVYTcEJv2t7lb8HlMyGLUr2gt40olXEYP9eAVMGAylJgr40MFQSmA3cHtJ/8a61RKrG/0g1gEDw7qoslGNwPO9Jcq5UvUMuDt/M4hZ3+NSdghtwDHoJ2GsPFS14u1tih2ZA6664syuG6SBASdaKjYAE5O3tWJMg3Qcp1csbLSMoX6Nk9uWX+0doaDXqfdGH6rsLdn2ujDIewRkOABqxC0yEcMYqDmZtDh8RH8gbw593F7jX2mCgAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WXZTVPXW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-WZMMOWKO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.konio/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-WZMMOWKO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-X6M72D7S.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ancrypto/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-X6M72D7S.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-X75OW5JK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.coingrig/image.js\nvar image = \"data:image/webp;base64,UklGRkYCAABXRUJQVlA4IDoCAABwEQCdASqAAIAAPm0yl0ckIyIhKZNp8IANiWkAFeq9O7k3T38g+Gi+T1wEPiHxDnQ6PjwfSXGZzo7l1WhQSxDs5HczWMysDA2TFXjGUQbZ81haY/XfHY8u/rNMZQx8v58zL/6Q27pIYD40+o/FMBHaD5kkaFgL4CMcsgPHr5L/vYFArnXIJW3jRALpXTZ8b609ly5AAP78SgAH07mHa4NE9b5rQ8uSrj0YV/pD7G7p9rkjPmeaD9ULTm6+ll4i5VlU/WOSSID8lf+h2/p/bUt0Df68lHH+k9V4Kef+nnDglNsy+fNvKH3BNNgVGzcdd4Hfq4WI/+TUVf7BhPHXZyDdOuZuJJLE1OyQaqGS7FwFmjkRLbFu1naANJjs3phwyMQlUCHzdn9E3P9wjPjdtFLURNZZbnElS+J3rAde6izXPjgF2W95xu31XifMjfVGLP2eo6g9V4kYoI9oAYBRoV9asRMIudql1wQDgkYTmE/PzhtuaPwAoX5+15U4P3PmFPFoGd58ylHqmKqP3V6mM37n+8E5+4o7/CBKM0bEIZ41qgCt3DGAbr6O0p+d9ux9f+GSQ7UkQ5juj4mp800wOGGbD+YvBQaI74E45sAH3tv32mLoiqSsd1qx8+0fybCLohLOkZI46MJCRYeHHHD/mjl+jtA9u8pNFrB0lDybtRaSmGP9uzkdAIheIDQEXOraewu1LhS81686/NlTgTmkfg76lo0XaXFOPtnXTnho7YsAvPQ011KinQAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-X75OW5JK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XA4X52SC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.trustasset/image.js\nvar image = \"data:image/webp;base64,UklGRjADAABXRUJQVlA4ICQDAACwEwCdASqAAIAAPm00l0ekIyIhJxSaaIANiWMA1aq7eZ1e3Gzt2/5H1L7cXc0XsEjexy4s2xt92krEn/lsg4wHbk6OAGWr0qQQaFqhWCzTaG5GX3Bu4BvK9S/dX/C9HCkn2EwWkvkaOf2vex9LO1AfUTfDtkvsrAwpAqjPchu9WU/bICnhMZfDY7y27mKqjodRYJVlt16JM6CzE3clsLUphd2krCQAAP7yqX/z5fmk2a/+LdTN1/QA2ZqCLV9sujk50LNE+bzP+alz+ZkI3iu8TdtyWMNMoFj2nsn5aIKX1pN4X+NLfgA1alLByiFR5dl6zFiyw2iK4YfWOsVD0z3mrZYo1Tl4deVgtTQ9oGFapE4R5/ZhMv2eHrMteMT1Y8Ibin33wJK9NzgNwH2K/O+3xISUV2FHv7EfdxTa9XRdcRIhMCVkEeuQXcfSwCODwmFRz3vFyyDQWPUnVl9GtU522bxuxY4Uq4B5BFtJE+HM0AXgJf+A+ERjGVz1MVvrbW+9UnkzSMyeoVjwVW37LCRRKLoV4BZOikFpakJp8/sAAlo14dVar9naqvzl7XQqQOOjHmmC7E0Q/RWV3pACIgEIZ1pF7PaeswgDlkM8qEyICxw6UuJrMgkok+Ecp8YVtlQ9WLuNEFlbvctk01uw/kpTLhEJx8zFuCmqNVgOLChY8QODLy5sKF1JHYNG3hPrCTRgzZHz/4r606HA/huF230OEr3H744DVDT1AEMo3zqb3yyfc1OVMHcfRBUyAjRNYD79vxw88hkAx7s7MmzGLMVWKUCcThDj4PVDGzr+OLy1Z0Rys8JSJF8ddKJQoyMnw4BHPNZhJjk/Mel/mJeMe/JKLcA23XDkr3ORr1CcXDVXt6ysm4TIvQxF9oTVbJXRpywkaeR1kPSa8UN7/k3229Kpp+Jrq6vHTIGngW65UXeCWU0xlzITaFc0mMzrpp2G/h0AoYwhPVwGs1WT0/VKgSfH2SR71LfBgIAqHECkQahHiyQ1ay64TmYPNkGc7fMFNY31xYvL+wGTroF+4pHBVL0Qi9/NlSZ2YSOoF1Ax9khMAAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XA4X52SC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XD5TFSHC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.unstoppabledomains/image.js\nvar image = \"data:image/webp;base64,UklGRkYEAABXRUJQVlA4IDoEAAAwGQCdASqAAIAAPm0ylEckIyIhLZTIcIANiWIA1InmPK/qf49+0XYv6/+A+VZNt6X/QU5z9CewB+lH6k9ZLzAftd6RHq8/0fqAf3v/Fdad6Bn8A/2/pv/tp8Kv7j+kpmrnY7/kZEmtiTVlbzewrS3wK6RDVhXszfXzXWpEEQkVG32SMwpZk1sz7IbN4D/yzHyW0XyD/FtIM4qmaH//bjl/qKP3sXof9nb0iffbrTfifpiCSDp+Ax+TrbDL4/yETNr430j16N08/dgdXmxqmv17QkAA/u6mP/7l7+y9/Ze8wv/5871PoRL7dJALGsOBoIDcQpwoiR3Ji2GsUInb4SSeD9rC3GWDbsgIkEIhzCp/qMfMVqLr3Psjdm2lNpLcmnkpyGE9fD7ra0B9n4HpQa8jdpF7pDC+I3Dy79fvkU0F86LtwPSsh9hHYLgYBbhjNqoKc9MqAzBFjFoKiaM0X1byL3fAZ4O4pbpxW09UlKEi90QCUgRoyZ4nzcOK5jMKlnzroeM7w4KIYadfx76+l4hUbjOFLzq5hCcW28wg1U9h4Oy5yGgM05IVCqtarjpK5C0Aiaq2R7arkxAipqXUSR3uvq0Plg4EuvaJcZ5FBJQLbO/cnuFU2kBVr9CzrSk0yIwjLUXob6nrr3a2Wyq8KO0ergwnP6l9iAYkewkUGb74xaiFlPJnHfRjpSdQBIylNQE4M3SUNZoZLiM5kSY8nLTbo+Jv400Q6fxMJMozHxR/7WurItLE0kYJVJdHnhybT8c62kZluvH8Jgl0hMQ9mitI1a89YA2O29zUEx7KJ8E1GrBDqrf8fN2NrP5Vo75RpCm+2uP4XafyCkYkECtZnaZ350CmeeCs8z0rdFqc03E/ZLt3tqxXDffYr75fX9dunMzO9jeCe82EdUhfOI4OzxDugViExIbDltitzxHiWl3Jir6wv6XIqMwXBCCvRBCAMYlA/TT9tq4QRRHIXGTzZtRRYCtAVicTHh+EuAldhfHjmefx062TQkmSxdHskTZAKsDohVKGnAp4mJrA2ntdnK24KpS1MtKBYMI2E7Db66XuvYqOzeAM3iWofiHm1qkp+waSivo1HYEv9rz0ELVStVwPFLzoKyd/8M4VnXwGpJNkLFPMV0e0LgAQa0oQOA5RBuiUzBvR//TlWuXR1OHBDEILnaX3IMf7uldKRbPAGv3ceK/LwzVEfZPEcKFQt1CtsV8JQuUG6i75i8z5IUaIjqBN0szpgTW7el8CE74O7ft0eBF7lXe/q6zN5ASt4Ft26TPEXpJVLXX5O1uQJgZn3C7VYKJWr6UoHuNo/Jzz7VJM8w8BtVk8XENwZIgeYhVnojNm7zTpEdbjnFrubIjI7lG5CfKbGtZf0+TlKBkPtRAaYgmSfRk3p3h8D86+ZAuLYCcwkW/7pNKEFhJD7a0/hNMHbGRSPLAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XD5TFSHC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XFK44ZH7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.core.extension/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XFK44ZH7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XIC6EKNY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.passpay/image.js\nvar image = \"data:image/webp;base64,UklGRugDAABXRUJQVlA4INwDAADwGACdASqAAIAAPm0ylEYkIyIhLxPJ4IANiWQA1MDkg6/EflH0Qm9nfjluDc5s3wA9UX5q/y3qgdJLzF/rx+0vvCfjN1sfUsegB0xf7a+lHqwLKMduNhOKNMMzhahbOCan3Y30cTHYb9miaa/wL7OYhpQb/467/FbzYTxCmIS8XyKCscdhoHm6zumzxuv2osyORCvULn/35KGq/QcNlN00rHiWCciafsB9zg/VtPlRwsZypmOVJVCRF2h0iyYcgyresl1QFlRjH6bg4ljvNpWwAP78qAPYLVMqsIjFXrUed7QNfPWoEYY/Y1N7E6NV1wdTAkVyq7pdRcseZOXsDI7yl1MFzTVq65AT4+MLVqKdGMnQIdQmChSsfqOcXA58CpezebDHdbAbkffDoq44OppI730tiAkWK2eJK9j+wTrSXBXwf+uzTv98/zfxf739fAdYdWNWF5IYuNtGTgTj1KJUsd3Bk+ZYDQchNS3azyvCy48F24BXemRC07qnPIP36Cntjb7EGuBYwkGESIHBGB7VPHHMO09AoBZ+t27IoaqG9VtYeaOZxaqxJSyd6odTvZZ9ndg2lSX/BxurGmAVbSFoApAjXUyvHG0troPT+IvErVvuxpIHWWdpdhhpbeLi/7cqpx7sH8rvM15UXTQSbezJC/6jMUk33zvyWdO9VnDoclxtHgMk8RUBsMooCtTqytER6GN7YIEJScF96YTVqfmK6HmeYKf8sqmnF/rTV5zCNynD9AUAQZWzr98Hwo4whzHQAcX6jS21VvlKr0TIC9/YkRX/Umzqf7D9aSQOtttbgYyYqZwWwxiTiwnoR4g3u6J7lyxfkkqXrAOny2r+eAeO3Wn4FtCofXgwDRa8WESQQTz5xZqit61JejqsxsdK29WhebLdzIKWSJzux61jAP6ZUYOT1ttCws6xKY9boMPweVfzXODpUzZe3e42ZkqDn0QqqCJhP5XaWYR/MzVZQ6ZZPDrjiPzP++fqIc/sW8Bd1A23Jx7VWTAoHeDlYrT+YhvrW2lwx38az8XbFxnfbJzm5tMZXegtK+rIkD1tL32H8/ZnuoLnjt6fCBrix2I7Zp5yrZh5C6vSPIhli89aJKLC9U/crU/S9Qd78tWzOF5t2uZ/adkJOY3z066uNYIsgZyaKfr7fTCJj84n7wygohD3blgsdd8DtJlyC8M0zHsaBkxzHt6EfKnEi7AiEMPOlg8+dr/W09H3jk/dqMoESU1mAnsuOg5H3JA7OPtm9LQ1ny+xIRNiNdbWLlP/p7A/sVRmlS0ogoZUSm0ubtoNSc2zJRbx6eRKSRAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XIC6EKNY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XIG5YKUC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.caesiumlab/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XIG5YKUC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XLAW77N3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/co.xellar/image.js\nvar image = \"data:image/webp;base64,UklGRogFAABXRUJQVlA4IHwFAACQHACdASqAAIAAPm0ylEekIyIhJ5iKwIANiWkAFeb/0btF/x/Qn+cPbTOI/Yn9Z7J+wH4V6gX4x/Jf8/+RXBXgA/Mf67xQaS+db/rPG/9QewB+sH/L7FHpKGPhuGcXDX7r//aUKdx0ggak7j99KGbNS/cXEs4H7P99z1dMACSUWysbgNJ951AOcg1EgSM+c0Nw+je+1BFUDKGmMNOsiI8VYEXtBddoaiYJBYDMXo/y9Z4IgaE70u+raAwSdfrijQc5M/D4PqW5qombpoRCiFH/+0DHiX0M4d+6D2oVFQW9wlzP4k/ZCdOthlhTkAAA/vz4QAMsRAZLJVakrBp38pfIhp04Ugb5pMvxVSOecPRcbXXDwkKeCSWfDuOlchdBgPkKYqwrsBfcpOERKugzas9Y4Sa3aSOBZWtMKP9TQuwsTCKDaYlKWi9KLI8TSujG9Nav+Qqe5ukZIo39Z4N57fmYqlLjvGuAjsyVwDSmLEQVUYV/wNFcGqNyKujB/8SpH666ToJ3DU1qteZ2hw+41mUtgHr/Jx8qmRe9oFvwON6y4DkwbqUnmklrDVWv8EwvekE8dU38Fx0TE1JgGsmT7XwcrRchXv6aVaC8FfVCQXu7c6WGHZhrGXlKaxU2q5ReYsZpJtxGr4pV5rsDhKe5Ez8esknuFv/EWIJl7+MHGg3TKdKRebSukGPbYMb58yfuVsmIV4sxWDN4tVJthrurTvKYAj/PARAUUyGtWngu7/OTUzpf1tHKwt/LPvmj808sYi9UkYF8FD8WDfrdIoZ9wxVdJ8CuwonBu/z+FFX/ljch8cXSjczFq2g+jd3Sb608Y73tz45jo+skHoL2/74CrCWAQiVdBX/OkJSnbSGZQde5IMPbVbuEVnfFkcP/APgCdB2VScdxXyXdq49Zv1YVGbKZUe1Mu+hcunX0o/0tVGvxRtnLk0kDt1Rsjt2XDt+ng9VNRPkFRUXCAUq99YFyMpBvOTGcrGuILJUkPpc1QLZ1MgS/lhzKpupCaVQ33Rghg8fTohLragLG2YZ4fNZp7IotwQVHXP7ZAtjDV7/rVdCEwxfmtmwSYzTIBCsm/8r3jwJQpP4CaQXxClWgltCdEJAQLgi8aoj7Wf8nXXgdSTmErQgGLXWC7H3NPWLEH8VP1wcdP6yfbte61XRRXFXlTuVFyc1AqWzxS2r1UkJBFsgsXDcW2Rc4xM1KyV5r9XaQeG640gofg0oJeYbaYrdEr3T9Fb/5uzCeTlehrso4TcvL9gFMHvcZ2JmtJrogFlaW+wiTp2I5V/6FEzXriNEm90+ocU+WxC5SZRBywyM14YBO0xuC+bnv365rp5sBnQ+r0ITfNg6Efi+YNOa+0DOhFF5B5ImNI/82lxcND+XexoLfR7LFQxL/J8UzWe0b5CArt003qGYoRHiOV1dqqa07vDyLZsJ0FL8YBqQUi/4+kVix1vxRhAs63iUyFIvUyvzKlGRxqSdf4z5r7IBbzxbERHUywvM1Qn4bfe0gxbvmHWC4EbiSXr00KUIbiqn27HkDi43tVDe/dBtwDII2ITuR/d3McOcVyKdx4cNelXe1AnWRh7Qm/Yje9ld8xMokCpIX8zV66BaIN6iBkYe8MXy2l+Scgl8sRHq1HuUJ//yreVvK3x2Hqem0X2jSvH1GF7HV5ECmq0Cyh89gSAR//D5edCsnPHSNqPBcAUUneCaetW855dcTiSjlofuiWDZD3ivAxh88xVPvZbdpQXDvqzFLOq1tGjHrcHpt5m01OpixJ3KaftsOb5ENn2E47q/YtyX2IrtxjnQDAF9VlBttUqOKuN98/RFqCbjKKHsIz1kNqO2bQOHGxDAYCXNoSa2SvI+U+TW9K11axvEaRAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XLAW77N3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XMKRZUH2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.tokoin/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XMKRZUH2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XMXXH2OG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bifrostwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XMXXH2OG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XNCYDJC5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.poolsmobility.wallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XNCYDJC5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XOUIMWYP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.abra/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XOUIMWYP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XPJLKRRI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/walletConnect/image.js\nvar image = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IiMxQzdERkMiLz4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF8xXzQ2KSIvPgo8cGF0aCBkPSJNMjYuNDIyNyAzMS40NzMxQzMzLjkxNzEgMjQuMTc1NiA0Ni4wODI5IDI0LjE3NTYgNTMuNTc3MyAzMS40NzMxTDU0LjQ3OTYgMzIuMzU4QzU0Ljg1OCAzMi43MjA3IDU0Ljg1OCAzMy4zMTU1IDU0LjQ3OTYgMzMuNjc4Mkw1MS4zOTQ1IDM2LjY4MTNDNTEuMjA1MyAzNi44Njk5IDUwLjg5OTcgMzYuODY5OSA1MC43MTA1IDM2LjY4MTNMNDkuNDczNiAzNS40NzcyQzQ0LjIzNDcgMzAuMzg1IDM1Ljc2NTMgMzAuMzg1IDMwLjUyNjQgMzUuNDc3MkwyOS4yMDIxIDM2Ljc2ODRDMjkuMDEzIDM2Ljk1NyAyOC43MDc0IDM2Ljk1NyAyOC41MTgyIDM2Ljc2ODRMMjUuNDMzMSAzMy43NjUzQzI1LjA1NDcgMzMuNDAyNiAyNS4wNTQ3IDMyLjgwNzggMjUuNDMzMSAzMi40NDUxTDI2LjQyMjcgMzEuNDczMVpNNTkuOTY1OCAzNy42ODI0TDYyLjcxNjIgNDAuMzUxOEM2My4wOTQ2IDQwLjcxNDUgNjMuMDk0NiA0MS4zMDkzIDYyLjcxNjIgNDEuNjcyTDUwLjMzMjIgNTMuNzI4QzQ5Ljk1MzggNTQuMDkwNyA0OS4zNDI2IDU0LjA5MDcgNDguOTc4OCA1My43MjhMNDAuMTg5MiA0NS4xNjg0QzQwLjEwMTkgNDUuMDgxMyAzOS45NDE4IDQ1LjA4MTMgMzkuODU0NSA0NS4xNjg0TDMxLjA2NDkgNTMuNzI4QzMwLjY4NjUgNTQuMDkwNyAzMC4wNzUzIDU0LjA5MDcgMjkuNzExNSA1My43MjhMMTcuMjgzOCA0MS42NzJDMTYuOTA1NCA0MS4zMDkzIDE2LjkwNTQgNDAuNzE0NSAxNy4yODM4IDQwLjM1MThMMjAuMDM0MiAzNy42ODI0QzIwLjQxMjUgMzcuMzE5NyAyMS4wMjM3IDM3LjMxOTcgMjEuMzg3NSAzNy42ODI0TDMwLjE3NzIgNDYuMjQyQzMwLjI2NDUgNDYuMzI5IDMwLjQyNDUgNDYuMzI5IDMwLjUxMTkgNDYuMjQyTDM5LjMwMTUgMzcuNjgyNEMzOS42Nzk5IDM3LjMxOTcgNDAuMjkxIDM3LjMxOTcgNDAuNjU0OSAzNy42ODI0TDQ5LjQ0NDUgNDYuMjQyQzQ5LjUzMTggNDYuMzI5IDQ5LjY5MTkgNDYuMzI5IDQ5Ljc3OTIgNDYuMjQyTDU4LjU2ODggMzcuNjgyNEM1OC45NzYzIDM3LjMxOTcgNTkuNTg3NSAzNy4zMTk3IDU5Ljk2NTggMzcuNjgyNFoiIGZpbGw9IndoaXRlIi8+CjxkZWZzPgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50MF9yYWRpYWxfMV80NiIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDI0Nzk1NSA0MC4wMDEyKSBzY2FsZSg4MCkiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNUQ5REY2Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNkZGRiIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XPJLKRRI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XUGPYK2I.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/fun.tobi/image.js\nvar image = \"data:image/webp;base64,UklGRjIFAABXRUJQVlA4ICYFAABQHQCdASqAAIAAPm0wlkgkIqIhJxEq4IANiWIA1tzIBy/Zec1avv05aUzHY/+k+4Dta/cB7gH5Aeir+kvvb8zX6x/sB7sHpT+yX4AP2q62n0IPLY/bv4Uv2m/cP2g9WP/OzbvoE7JZakO59KanWxw40Fzi4gRl6d7VMrcMh/ogjZL85oCOn1bdq98mYAhGVf1z+HJgHsStyRihK2mNzu29sb1Ml01H4mruVTn9L4IsnhXPkcFHbu59dJV1CYKcAuKZcLj2EISvpDcmSbbSESZ9AzldEEhqIcIR3y8IW7HJU3Y22V6fe15HedP6kvxDQWSKpAAA/vnSyyyhBo8KwdKhbEjVL8GEEpX1nj9pV3tYU1OKB/2/DV/L/c+do9/BjcbnFq/5WNFjNy2pOr0oKcRlmC5DCUtQgjzlkvOXG+YUkJg9LHyF53IY9zEYvXTP0qSZbZxQJHO1jkSkGa2odmVOzFmisIPdZ7W8bF6/WA64XUBKe6oSMK11azF1HbftthoXHZm4p9SAlwz775kWiYzDNF3ZUugf65wdqFvxXBLL3k8ulr4hRNqNVMx5zxyNaF25brM4Uc7ySd28wM5ThoIt+/E5UxGqxSFLmETppVaN9uq+CMDCdY2nk3s5yQo/HBhv3RwJp6Z0/sL9u9fm/UKicDrnAZ8iSWUWiroF4EjDiZu1S5F1EHf+6xzvOxd7vc4+45ecYO5M+J7ORypgvfZ3z5VdDjQt517ZRAfU6gBZeR/M/MX2f7CbJ4ywf5ppGi9GXMS7lZA7I6zN9M2FX/D5kF71/f/2gfdJvcdL6y5mYfSOD9SbcFoyNKOXC9z6euHjxC80cmK7K1tWhecDZ+/I5p9TkXf72883OEnd6IEIGvIyU5LhsG5IshizOBqvEboDi48IyHY49ZfEt9/N+VN+kDHFBGT1cQGLdnLkxP/P4cAQ8fxGYGEVHuUDxyxjaH5cm1dsqpnnQv9cnoGebQf9apon4CH703V4lfo+32b8ReHvmFvB4zZJgm9gnOSbL6mYVVbXEgtF7d4Ijg0nv3GEWk8z3XDv7vxBlNFR/owPXE6DTFimwqlui1/v+2abC006Bgxy+CsiAH2oZnN+hHxxF2OaoYxMhHhJxF2ei2d3oPz/mdJICLRotrn1IsN9ZTtm5JwKqbZ/UAjFUmXqY3ApWx1vZz3zcqHOEm1BiutIaakFFHGjmCb/1OzJeMIr0VspvWAfR/77RMU6TFUlG6BN4vWThI/2eQHUruQzAk7/Bf5yZqUv4nADdpONqhFc6kUOPOXO/d1FFJmUGSB+Aa+gUAuPRyftUdNpT1Uq4RMZOaFlk6xH+71w3lGASPFIkZl0X04doyQloE3OpJoGfKRlbbGu57fyf5GhIU3QI6W5BFP5LyUhQcGXKML79d6rPDQUrdjS6aoy/nJi+qRYX1Sz/g5QNbyxI0cQu3mkazYnHsxggIM+k2WubikGJA/m68ndAau+z5okIpRaZ3KP+XO5lVifDpoM03uJlTWLeDi2yrLqFhK9H07Mezc0zcFIgmChPIssuUZAPBP4PZIAaLLOt//rrTC5P2L74PSlu4Oe1Q58m5nqLtMYbqFUHbdeP9YbKWKhtB8Z3AdclJ0mvrIefsI4qMrztoUzmFZL8SbmCDG84wdhYX36D4fA+/Bhl0vjbR+bAmUMiXEmkxJn7/UvsvOLStZNG8Qvoj4U58KpdbKRgGSjUi5zmx0nXRZZtoM5VTvNTmXysw0JRhf5nvkOeEEcAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XUGPYK2I.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-XWTER34E.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.ellipal/image.js\nvar image = \"data:image/webp;base64,UklGRi4FAABXRUJQVlA4ICIFAAAwHACdASqAAIAAPm0ylkckIyIhKJWqOIANiWIA1i4BPC/o/5VeypU37l+JeRiP32e47PUB+g/9V7gH6h/qz1h/2l9RH7c+tj6Ev9B6hH9f6gD0AP1V9Nb9u/hQ/bH9w/ax1V7yjZvxm5tct//G1jTTJPToYgMP2l344wPRdMmRamQYER2Ca+Vfz2a28GiRtHRMKSZSiT3XV4GDBOHdb2z7QJb98XE1yU4ygwCRRLNvKKRLMk6v0oyBqFq47tFr8eQz7cEzcwqPiCLhPMTpSzFxsecbH+odbTUSNTaLnLDPRTXSa6u5Hclqt+AA/uLgv/smf0mf0md1j/+aoO9K2CAAPXbhOvyHOb94Lt2SXQlOVI2NIGrO6DvVwNYk8kQbCGGHL/IOotpwKP53ru/MKoIxMijxltr8REGBaunrB4/udGf7+COYt7Y4h31dMTiBi6s86ccysX7zCvt69EpPfoZZ1q6XZOl9Odo6jcKGse0Az+fVqtFdpUE2IYCrh64Iny7kQEWZw0Qfq3IyodYqcuTvdT3qzc8X4uazocqAIbQCi6TXRt+bUDw5028TP+D04Pamkl5JQBrSls1mr7Kli3r1pt+MbkMWQA/c07xoagkcBa8woVguuUnrKAO1BXPs21+TiipDL4kVaUynlkAbCsTJHMiKoHq/KGtzhdufKKq1GhYddHU9a/iV8ffXOx7J15sCF7aSP1IO1cX9o/f5/46qNOI3mBucG2VosWE3W30JOlm4FThrlofW7tnx7D38bOZXXDtWoC3v6+QkZPIfg9CVrT3Zy39RNTC0mKcQnjSfpKHS9MenT2Y4oL63x82+G5+VSuqGtjAxoCKidVmflx+WxcFqVtWvaqLEnS89I92y2UFDo587cvWPe6tHKuLvzG6uq1kMaw1E+Sfspg2P3WdmmCn4QxuA5cSfN3u9DDVadVqoGfigiqt6q8VIMer5Mct3H2SoFtFtHk+HGPJGQkoE8d5vp73m0mY7RjWZ+BjVGwV0TGsAajfLporrk3s5CGl1v+OkeX5E8d7W/ytrDHpKYTIoX0iFViSL9S1gIggVERxruM8zUl4xS0HsQ6z/yG1AQyjIDJfcn0wXiSKh8D5cZqd+MTxuYhq8IzRoFYHo1NjfcW/2yvrswfcRfKaDXV4B3TpsqWGZr/NHmECiM1Ps+qyNx1Pe5+Q/+K9TYt4n3wfEab+gKVAPCwlcMLmGWj1zC6+Lmi1LoEYIb2xmBodo2WxtS1C34zeNY1K7YDeVDyndYrToyD07Eg1xFuMAUyZfJFaUMwhKOU20Vi+WA2XkOYxyXvpJhYKYu/0Qrelj+X9f6iUdzIp8LIgbnz8bcdA2I4cujss/OkXp3ImDFYJcXadUw+5QR4q3dExu5MOr7hRgupxtP8ohK/sKfqYuJt43X6xGXfIEooi9vJuXEaWljH7WLrBbkcpTD39vLnwAyteDWeuK7iack1jMl9W4znLmr+rwD1xpk0/H00OOZzwfMuDnP/AgUs+BD8RJFWKfnsoK81F2NVbgH/d+6szWPOy3FRj1HOOI+sg7iRfT6633QxOnRQ5s82Ntd3BCDlWte+3tyqXlVxeQ6PcS5eQFJcUcU0QqoUMDm15OchTeYGCra6UHqC45fzBS49XHT5mJnfRToLQVRTSkfgEzo4PHH1kSjyXCtRldmyv3+5NXw4TJukQfAPp9yWb403lOzePpspZKdowhrYUA4YF/NqizXfEWK1AyRCDnNB8kwYrngAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-XWTER34E.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-Y6FK2F2P.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.cosmostation/image.js\nvar image = \"data:image/webp;base64,UklGRooEAABXRUJQVlA4IH4EAAAwHACdASqAAIAAPm02mEekIyKhJJcaeIANiWQA1i3AvR/tn5M/kB8w1Sfrv4R4uY23XT+0+4jtveYB/AP6J0tvMB+yX6we9V6EvQA/WHrEfQA8tL9oPhZ/tn+39NSLAmJ1gV9XJVTKVSvgLsbKojlBXQb3v5sAnD64EbxhuFN+/rbHDlx4t4g87aMeo3yjBX90LSTapskH/OQrqA9y7o8f9CSj4It6wHEg15OCag8Zcu9eReTBQKYZr7XHmv0btOqYHRb/D4NaJVI9RtopYm2U6Lu+1nyWZSwSpFLFpW/Ot/WBavKcSSA6SAAA/vxc0ABjlwalP0rPL6vLM9siaA9vL/4L/0ctjQowWvmoe6c/igs6ihBCBcZPOhl/08QOq5p43o6FjAoyXGpgvRhTTVxCXB4sDFX42PBpbS7NXqLg4jYaAHN9dvzsJv61tdyMN1CYlM3ei43cJEXBtPBGrYL4PU6gPp7JTxcWnUf7N76ik9FrENU7kHgq0kmdxFaecsQAM6iY8bJdHNjvQK5TEfZx3bFJ/7aBTzw1h+Y3iQUf3mFfZ4cgf9gMF8F3tcOU8LtHfgwQU0UcIUf9gK1H+4ZRfuqiADeIcsBBLgnp0SrosoaF3Q0eSxlewa18XWCM1NAlO21b+XEJ5HJ6DPmQRtWAkW674+ZTgnVE9qpCx9EsCp6x3anGlLI608wDaCB/6LBuKqXAN+9Ba/Myfu15iuPKa3iiufxaDd8hrv1DEz9KJYqLJwHvRaIHM3ktNWgNab5KKoWL9S7pKTJ6u6oFrnbMJBnMM975FF6idvNHamySavCnjt3/8Ccz2K+UM5KVfjG5FfdU64XPYgcFmQgN2qYQsHZhmSW0bOXLvfNhD8Yx2J6VXPB6tfbkvOyXI80PBBxW89g1RvlG3CR7XCuzr5TL/xyqpKXUKCs4k51MG/GOttnBDzmOLZ5xYwtr4uJEmXcsMhR9mpUhJMVqOqknmRP9njSpRY7n/+rP5fO8sb1pF+IoM7waBGTYrph6sOig4CdpfcszpX9oBZgHUi8S522a+12No5DcBxGBQbFq+IhvLHWEiQ+pEwv7SgcvotQMkecKraUfyaj/LMWxn/UvzCoXsSlIm1Z67dTAr+TVZVJd59a3jjLDUeHnUm5zeO4BMPrNqD5Z7kHImWrgz3OB157X65GtqSYrQf3V9fcufgH2AH0UhH931sa4fG7hCJOpQ8prWwAgvywrPghNcChYibjL6lN8r2w74HLeHi++GOHmKbp7xOMQXp/IXWssn8ZxBf3wH3fOZlv4e/eyfKvVKQi+8HL2SWw91MKxMZPmanD1v+h8j9UuECW7uP3KnQQyuAP0iEJpO71+X+PDOlMHdD4lD9V/KbqpEk4Qhblr1+EY32Jb9AMCU8YytohOZY8VbZJuGVqAkROVt+MOp9mhKp9PDKoBdnLR7bRErgXqVk0lLYEHlvtSFxjle/5e1HWVtplu80JxgsMRld72k3pTPSo8OfTVwQ7MLmN9yxrFGekK5ziE7UD/s5DMMAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-Y6FK2F2P.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-YA6DLLJV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/us.binance/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-YA6DLLJV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-YB4GRPL2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.tradestrike/image.js\nvar image = \"data:image/webp;base64,UklGRk4DAABXRUJQVlA4IEIDAADwEwCdASqAAIAAPm00lkgkIyIhKBIJWIANiWMA1wwbUz38gegnuAP1i6i3/R9QD/1dSBvMXk8ZhB2hf6Gux3wddPeqOIf0K1iNDkKj4ASPmiOplNyxyX6Zd9yfBkEI+Wa/5Hf2DHsVzzwz/hHV0XXj3qjn25X14hGDUaFfD6+mzXxXqdHTNk+NyK7zZEY7TldanhaRIYywcPXvMwMKbDe6L3Vyrv1FzgAA/vxKAAHtn0JC/ntL29iYZG7gth/BZG1BHmWRPHhiHCR/iQfzP+hZcEfFbLxVzPl2b375K5Uwo2kHLmB4cm06zzT7+obAO93QOl3QmOXvVNrtO38fwRxs+RKRSrz4Ha3S/7Z6IMScnxKmIjjJOXe3zJu1tnuXpd+rldefqaNJ/FB4WEpozjJ3kPFI5k+R16tK6tZJFl4O4KhbpU888fLkN9aXg5Za1cyoQJS+NhBYspxNpitZB8P7Qj0ikeesM2BUu7tu/gJGKkVTDDRUka/QQeqow6iSpZ94Up+j04gGk61ie39lx/DRceY7dMiYYK7/7Z08bUpFLmIZs3IfcnTSlnDwMmT6DiJDPTTlten7haRxrgEpWejAcufC5423usYvyTi/RhjoiMQro0bdN9JqEZyjt8ToP46Jo3avOUlu9au5AKNhYY/rQ2S5qYVFEfyS/xHO9foCx7wjYqok7WwEJlQXxsHQQMZK38LJizXJamKeSO5UlI8KLv89gOpiRhHvl4dfqpYTCN6LsjZe7cOJtVnDlTbEph5wz97rKanvu2u27uXv9B+H7nIYcUj4HrtcpoA7aphnp5dHmrtWt1qDT3OwlrGby5rJ5e3HgVtzGEoZhhHiWR9RV9C8JUsSa86D+fuFz9Lxm4xZr3oNaMXSkKpqAOd3WhaDIGFV0CvUInVtp4Xv8W/TJtVnC+fZfE7FJQX3R0TqnBQkDX+zrZLzr6L+bzzYDmBZNHpppiOlvN/hURzK7AsHVv5lWEwNscm/6ZbQxxGfz1yuRLOFKlt2EAZV7b4Z0HjTP5sZtVDXSMTzQs4ByH64SKAbiXDUkTgmSUHmmA3EVwJ7AdfuXv5jF/UaH/OmAtzOlpcRT3BDREyMmsrTkyRAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-YB4GRPL2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-YBCZSQ3A.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.internetmoney/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-YBCZSQ3A.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-YBPOXOCZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.miraiapp/image.js\nvar image = \"data:image/webp;base64,UklGRpQEAABXRUJQVlA4IIgEAABwGQCdASqAAIAAPm0wkUWkIyGYPFxAQAbEoA0uZT/sGuI945mHhYzs7JZwG2A8wHQQ82bqLfQv6W6vZ0D9SW//KnYGaU1pM1PQutag0YSWW5GJVkQTPQ9Qv8Rzqc1kNd0yvnEJfuQXkm1rzWd9QBBVdx/WP/CdOUBdxSS0mERBmSB/Z/fHFtA3EqZ52jKwZo2fgmmyPD4QeyXDzv+m1I3R3M/PwfBVVTgo2Bkn5PxVzv4f9MP8fdZWEx6fQPbWjCHF6rd+zpSAI8ll6GrJSpQdkBoZgAD+zoL9BK/4Er/gSuCgqEmvUAKjsI4SdhbtPVneI4eMym5H6Wdhd3i0T+P1wKT7k1rQvlrxq6PAWSB0Da7ISLOMAJbagYM3iLoNFaiAGkxAqhKTW2x7anjLZRgDqDPOTdY9YdC32sHkN4aNU2/EgPAcGbRUOLhYO7MOjw/1v01r9P3Hjvuy9UBGIxiWRJZVLwCZLZiDWz2MYNGuAJ4m6R37bQRqTmClNU6iby3EznQvvxH0gCy9xuXXBWIaPIWxNKj2Tq1CTCg/YUgb3JcWnP/Yb/p/ku/HXTQ/V+3G53g0jXAbvOxNO+Q0BR7fmr8ovCLR9LPd5dKo5/U4euX7lfz0u7oR56Sicd6dnzHyEk3scsNw6Sqcc2EbWvJz5lYXg57GChCl/qPDxX65AR1z4mAod16uMR7PWvAR+UI91D16C7WmjT2aV4iYw4arRmEymEJcwWbR+yZfiCY/b10osE6byq0Hwq6LuCe/qAgH8figxrB/rdAcj9Yi02gVc3tIka8aFXgMkg2q/YMj2HCrde0geSpiEHtRIS/9TybTAUgBHcpMptYUsaNIoXD3c/4HyW16Jy+kKnOomG5pAl7iWYYY0yLlQZ/XJpi2NQ7dwZ2ArGUu+Z4dcsfdcLBaoYScDjQt5rxwhDF/CDg5ozWCkd/7l17z2vsToWB4JKvDgykIJ4rPciXMOIBxtQEA/Sbdhl4Q8uK0y9HCYD+/YjoO9TxgdU+gBvSsNFAr49TaWHCwXUrj735oTelalJ79Xw6KJFZd96JzxPyarKllWjPGfqxri7yxh8r+1Blh3pEuktA8amPjXaDhUhI8A/RFkfLC+9yzFONRxch/peBhaY7LVIc1lVV5cJDp3iDa2Lu8xZbf2YnvaYbovBjHMuxCBsCiLG1wudhbwCzVHbxUPzHc/aRLkefSWIxyjyCk2Jy36des3rtcZR6N1CV0JCJdY39PDuDRlRPHbm2pzOzPjvmDsUJdc/169oq6lOiTlYqzGfQP/YKRiONAOfp6/DEaBeHte9GEQWwGn/Z+Kapq3oEAPn7JkgARiL0rbIzVTw//2epOD2kOIvrBY166f+/srydWAP5g7GpRNpliieUB+Zuzcsswb9yDrmauRehzk4JJ9z8ej1U1MLDC6aLWXHymGsqLG0AeYfDTUxh41y7VOwYpBrrDvouB7sebNk1CKf8S31kLbu2lUWmoP3wG7K62iCu/8GZGDfNvovp4Xe7rOuNHdvZm9SKHMcGseeuP5n3WigAAAAAAAA==\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-YBPOXOCZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-YBTBDTUR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.haha/image.js\nvar image = \"data:image/webp;base64,UklGRrwFAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSDQBAAABgGPb1rLmrYWU7vTfAJDavo+WwcSTfwaBKu4yib+PJ517cKni7sGdWxMRE0C1a0PT24mvfCf/Tm1EhI4abfL2LO8k7n872u9DfG22RzgaohXh/TzK83GhrY9J2TzSnMTqUDjlPFrZqahFzaN5vFGurqbgt3nEd1xRxRPNY752VmJyHrXMyrRSHveIhohEFlhOEJlG88gn7MRPoJ1z7WAee29oFdzs2Ba49a0kuPjNK7iHPPpfeF3/d/3fFejnD7ifxD24+90UuMTcHrid0DK4ZV0vuB7yH0Lb95I5Ai1sIgrmgGUFEWkkYJKWiIjJsGRGFV1noKJOqqwI3EG65YoqpObngKJcTTUqXDIc2amg2pmUg5KVGNWtDYaPYJyEhZYaafL3LO+l7n8722tic3UwYKIaAVZQOCBiBAAAEBcAnQEqgACAAD5tLpFFpCKhmH1s8EAGxLIB2A473V/cuoS4D5f8u+niNo+H+kP9V6mHUc8xv66etN6Jf8r6gH+S6h/0APLJ9mX91rDj+1SJ3xnci8Y2W4Cpfq1LvN+F5ZfAhT8J3duV0FkxARRxotv9Iu15meKNIVDZ/816IneL81/rjAk25ZP/78XwVHk0vFUnw6YLj14PyLppIlbjOYc1y6Xu3r+otNijd1lWcH5Ld6z11LnMaUi7uyf/XP1WAAD+4phFWKumcGgWeIXR+YxBjhLkQr8jGornwxyjZvSiVGZ1xXj5G3cfAVEl5D2Yybkqx8ueTpAwLtmgQJ6Xn1S9+JslKuty9RmL6LrkehlsyAZT3QKfBLfIou1fS8/jn44+ZOvCYfOiUv3xB1xBXupl8xXkbEJ68xyviCCL+NSkoacSioqfyx868s4cqwAnrXNsHf1qXqVx0ziOv2mnU+egY7ag4MdtP9LH+UUZgzWzGb3OnP0W0r5v/L7ms8MHUzeN7wzP1RsEbGRfquG5PAEefVaLF30Fg9jn5znrJzOByavn9bOAxgnvwytE+VT1qrTEoVi0W9WMd4ZwZMog87UDoNImbJe73WBAOguhOdrMFYPjm+95qQjNpeWzD4twlB21VrGGwwwjFFmSaXk+JREkfl6+sO+FB3k7onwMIwgQT1d2IhtD+4NndfCWWFs1wY2gAJgxcahh6F6ixS8JkeDWKqWz7lJJCXE5rekDgZjyEGAQHzcbkTAgc/SvH57xQjFIt1RIUKzuUedIH/CxfEoAgC2rjLlEugPTroZcOD5vFmNl9f1QTv4sEj+mqrG1rAoDp0j1CcyV4LrORnCAiOA4hf741dMU03uu/Z6H0pbL74ExrbSv3Ns/gk/JnGkmYhoLKoG84WYk4AtH440D+sMmv8UAoiC+qJrwPHJvjSvgeOTAkrizH60tVyf2koAEwaTt5aY18Pm4HjHRkqGFojK6LXsLlYkH/MA/5srFbSNgHbLirGa0N0sOq8yYlhG4ryvxI50apCl6l6tEJrO7nN3gy7aEsdlJvm7duqQlDl6q6nCT2pxl/gvONxZtEqvdFvXPkylDxk1QL85BgEP5+cgteObyQxew4KJVGtZ58WOQgAYEvYA0orVHq0QAYLiw5tUTtyZ85Q9D8FsVUYuNZL8jG0KCW4WFK4o4L/FjLg+qOdb6W1o9Xf78E6mgXpJvX9usIoZYWHVqZ6edK2PEdjU/wCzkkswSJPH6/bzYce7VAK/lD4JJ4FlEnAAkibsr5IltLwtXh44btpNqYSuHIdYveMvaUcaMBmB/srt3PvFzH8tz9Q9vsLsYX9LlmVwrP5pPFPLHF+ylT3HQxuu6P4abbVEz+HUZe+Rk9wudftjCnrvVGytzsdS/RZ4r4R3s2+iiRHaT+Irq9WgnhU8gMR0G4CEef8dpJeO+xxdY9nDAZUEZ+zdqe0RqWSqXM6ZZfem24/5wHP/P3wWZBVdmgAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-YBTBDTUR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-YCZSZUXE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.alicebob/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-YCZSZUXE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-YFLBT3YJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/technology.jambo/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-YFLBT3YJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-YFUELAZQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.walletnow/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-YFUELAZQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-YJF46UIP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.ammer/image.js\nvar image = \"data:image/webp;base64,UklGRiAEAABXRUJQVlA4IBQEAACQFwCdASqAAIAAPm0ylkikIqIhJJOZ4IANiWkNuEB7U+BfvN7Rco+IX8V+xn4L8qOQHaq/tm8ncg/mna5egHcR/5TjRZC/919lfyW55nqj/l+4b/MP7b/yex2Ptux/yFPsdPy34DFbhZ6Xjx1sp+EawpLB4IHSwgwRlSoE9akTbM4dIEPBrRnSqWEgKOj24VyUyPwwE5M8AGvt7UueQOKchwKzRvDqx9ceTpZIfrIYNv4i0KXleXnljMSz++SteYcLG08oAAD++78AADnDImlA8O6wajpXjjvUGHKb3gyioCbBKqW+ZgpQ1kkgcaHsDO/aT3xL5aMt+ZR9Qttvcyqdi389zsBggfltP0y3G+6tQ2jwC7PKMZmeXSITqJjEUERncuQLv8k7+8ptV+B28bYkgN3eTiQD0rJoVyZ70gqdhjBFkOXtJ+da+iC5sV/gfqdl190S/gZdW/rpBjPZAXF649vDWnhbHeqtVKf5lJjp6q/ZOMBM6fB9T4pvfWmjqXPerLtk+T49VE1S8690vfP5do97G6/sfOsEYimqk/aCPp7bw2TOFbTDP4FlUv2cZwgL+l1P379uJqjjF9rkUxbCH0RMzu4Ap+CtV4jPoehPzIN2Zc5gbDXT/NFk5qd8EmKLIlr+NBSlW2m5fGYit+Dq3uLMnN9xHxzqvlCEuxFtB7QTL9Ym+mQH51FSbEvAvhxVxe/HQsSD0N3RqJJsRfma93NBlrJDidt2KHt7z+TgcjiVI7pmOtVgXL/Df1Y9P+L7fxqDGi7310e8h5vyvz6y+h/9JWJ8tLSiSasoWXhlYYbc8dc1E5g5hqoatciHLa//2/OdiPdi/QIOTPGDY51Gv4G8BBFm/+HK5f5mkjvI87814QfkT0hVb7nK7MiPmbhyozaHF70W1uFaftf0Qta7oFPARw0XI+ygPwISbLnSuNMuVuAsOP4kopDfsFq8+x1ygptfIRbd8AR+iHmPOtkogOTgE55cO6HvvDbE+pShFYwQtON9Qk8leOT01fYuiy2Tm6H0rMw/zXQ54lYE5OLr5/yfliVAnm2O2gKkAC1c8qbd2cq5GHe96zNzX6k0Wv31VAVcErQN8EFjNd0wStQaRew7sttM1+0r/HndO8azX2y98YNTtfNcv2a7oKmHM84+symiQAwP51sMP9d8z1M+EgC4pPsgE8Ewm9jxRAoyUSonS3Thqu3MWmrMBjYCmWM590H6lfiPrUDgw9iUbey8sbcJRMEKpq49XhXqGYnIdt4efVQOMZLATgotm4v2Fl2ui4yi5wTH7fKg93pnKxsYnq0FdoBFldMg4iiEFSMzTLv0vmSrocpKtVBtcMso2/1esGSbvYBGr/xZ6cpvDfJN+a3uowXfSogOriUpITcJ0gAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-YJF46UIP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-Z2CATCDR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.gridlock/image.js\nvar image = \"data:image/webp;base64,UklGRpIFAABXRUJQVlA4IIYFAABQHgCdASqAAIAAPm0ylUckIyIhKJlqiIANiUAaxbaXj+SpZ20mFF8TDcAecR56vpAdTXvLP7jYS7/eu1n+78sWgM/jOHnam/v35VcKLZ2iA9DzPC9T+wX+sP/J7E/pDGabyPkCCZ5ardELa8QLA/fcByG7QsOzu4+qUvY/eZv8xJuo8Pb3HiVpe7MosoYDsMBVJCaeTJvEl920PAE3lxZPkBTkHgUxBE0qx0zqTfM2fVuTh3xqIA9JNwwZHnGQ3mpaDlubYQ+pUwRlJKhJeDZ2TYAjhMAE76530dhF0rPX20AMQUmTDDub8DjDzLxRLV0gpasWslNZ/KCpgAD++9HfI9i3LdefsQEgAA0v1ITwJps9dc9IcceUyhJbqOcqI7o6/6fA6i6oIRVjCN12z29g7jzwZMnlk4qsgkm8b4GI8HuBbB7/Fm/VSdgQGCsK5v5BGwePBk7+HpdXMdcL5RGk2+riw1bh+vLwJYNEbtANfAAHLjEL8QdZZGXlmm6RWHd60mUmCeR8Av/Wwj8KlRmyTTa34Gx/0djiqtsAV/92CMLQRIQvwEYkUlpp52rBIc3ou/zO0XfDt+J5SkJmmag0mcPRl7HJAIW4Scre6hiLPwO9OhqpCddEF9InA457PztGsGXd5K9tgcmCJKa12mkvIQb9WMDn/pVv7aY3q37pwPB6n7K4H+v1vtcKXZ6bj+HJ67d2pgr97OTUSaoeHEvUr97H39g0iOz3aQsj6F0AIiRKgxSgd3/FVW5GrYm192r7vYTgfPPH4DFeGRp+2MDITawt9KO/HpJdmEvnjT5mlQiYi67o58QqPF4maXMQ05qW8HTti5MHn1YQP4Zd4eJPMPmdVkObzzde0lrM/gihVGFKPEtKaj6wV8D6H0uQ3+gA1zDxHhNVn4RFFoFiEnaX+L5KfHnXY2RJGqPdooQTiJyuK3zVSKZaMV/z+f/PqNtQ0X5DkvhR7MxyVPBQcETdlAC0W0lWS1RuV06uHaVk72hBTWFE9rBqr2OV8qdIYLjGPb4ZkXBdQmMA861F87qqLXrAQQ9neKrmqL9L0p7aotM2xJQnBdq0L6ZhaU/2imUqY9SRf3y2CQjyD941/49bl7Mt2fFWpNUi32bkcfmI6Ks7SbXFPfQL46lT5KOrx7w864LA9iB4ZPz5VqLCG4m7MKXPfPxbq826ZwlhOiCE6sNltAul7qmur7G+OYmgGjMEp6ENdtsCIqRHElyjs2J0yP3Mho4eRT0Tgvi5Rkae7xCKQgQ1jMZmO/14EjNfLYAm6D2rqNOXZpDP77h7CVUz5nql7zT9DkaXLW5wdp3A8/CVu7NCuR5c327FdS1WcwHA0uPZDWD3f057R/Zt0DdqRTZjbuQl56rPe9jzWKTi5cqOEx8LRDkPPhYDXlifU+ONx8yFH1iz+C8cghZSrMIHD56mWcsiBItYwd3XLTaQ+gpHQJ56x5Cq5HgOcSaZM7dYUeys8MqSDTT0+nq/PC0jjTH0w5sEJqnCEiJQaxQbcFisGNCnfH9UmRK1aD4Te1fDCDF+b2NZD+N79jK8EqGj3lF/X/lN/9bMbcuXWYMe9yYilbaPIrmt+EHqoYKiI5HcmAWcLxx3SQrggM3Z1Wg2QRnO0tsaa7d6z0t4dR/HbKmFZRabtu5A/aglTexify3MelTMsjB5sSA0Vd1hFsisxCQE08eCHp4SiL5Jsku4eGFsZsKEvcq5umXgvOjjOsfbqS6QIyINSRqkzz7AFae3lod94303UYpm8mdBHCz0X/jtBanW3FPnUBipeNSeMVyu1ny6zSdewpbg2HqCD286NoE27v3AraHGx52W3uKun7Mzls1ENCxP1/umqlUmrZsW0fMyZYZCb9DgZQ89JM/gAAAAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-Z2CATCDR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-Z5YWXRKQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/app.utorg/image.js\nvar image = \"data:image/webp;base64,UklGRpwBAABXRUJQVlA4IJABAADwDACdASqAAIAAPm00lUckIyIhLJR4AIANiWkA1jMulSl8k/0UOmdQdxH45kvHQ4AFaDgzZyBlqOhWlqrLTJ2H8qocIVVG+7TcvCwOS3pkMjT/QwFZBT1qLE82nVWmY46n5cONMc34mza23cSFLDDQAP77lAAAyXZLOt9dIV9xb+NA1qHfaGpI2o0yZoNPp/DQMXmH55BypuhHoZRH8D2KyZVymiEpVS8iUgnZAD3PIMRtLbQWtVzx+8BKeVGG2C482FVph6zxtuQhRftr11zTv7hSOLpYxAx7WQyzAcSm/Iy7wE2WKYhRC30uTcq9zeJ9Hmxoq6pzta9Nmz4WnfAMKe3YjoYDdCLmdGOyaZBm4IgUstOomvYvYRxDkWniuK3huLxFHviiPsoy5SOSZL9LbJODmpyOtJWx9gedN7WokA3nUQ+jer7s/DHwQrAkxiq/3nWryeBuHAZQQyT4vayjN5uo3wuVR+q3qfo1uxh8eo6EnIy3d+94IODszP8JjXwH2LppAlP5GpBwFD8EAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-Z5YWXRKQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ZEXGTQP2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.saakuru.app/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ZEXGTQP2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ZIEWC7ZM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.kresus/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ZIEWC7ZM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ZNKOF6C2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.bestwallet/image.js\nvar image = \"data:image/webp;base64,UklGRkgDAABXRUJQVlA4IDwDAACQFgCdASqAAIAAPm00lEakIyahLBlZaNANiUAakUaP27XJ/QfKB1P48X1dvv5jf2W9aTos+pN3k3yVWi3NVlt/5ddcaNYF+yAqHC/1yNP/rs1oni/qTKog6RGSdcaN3oNS+jpE5uzH0Z59Wd3JDFTEv06V0ITvfxoKrBvl/WovZumrZVhJxXhVDEUhuezPjktfAHkAodOfQVc6mDF74VU9k/Vm0uufJ6vqCvnCWiJWzlF9//8NkM8lY4BmQQAA/ueL/7g496DzzfimlrXExpwQAZs8x2yZLctuEFIxNeP8c21teXKex1hK/kHQNb2dtHDC7oeKYofHULuFMWQiJG0bOExaSHB/K6t/n7yhhf7V2xwNDLMv3/DMXa3p/GvNR+uIPKwedPfMlM9Y5MgfS79SOYnFjlnpV2PZxh1gqFOn6K/fBad0BJQ7JQf/OIZx5lvHr++P4NP4w3LSgWmDJbRxDjmyb884cz34otDu4fnEln+t5+96P3z5w6zq0f/Wg18mE5bI3orgznj4KPS3W/GMNdsS25GY9BlVhk6I704PH7C4ej6fhvVCM3kZi+uQxS+eaaQz9HQY2ZTPVPztsQ6dCKyVWYsnIFkNfDXUQokPJphsy2nNCrPwHujLajuGAghxTGoR5mOLBJUs03vAn+srVMALARLwn9YxeQ1WNkX9FExvCRLAfbawagypKmyKU7desT/6z6qgo+6B3idq3iIzj2jQeW79jHzkiw/S0Et/3EZgumMkwli/zVU+TOuRVQDunf1DiltoU17sQOkrlzl8oVgkUhsviZAcy40smz/7YzwwDEshxEjarsYWqdYYLl5XOORTJXEnL16IgsuAFmd1NCav93fzlthXioo1i2o5zqPgqZCiOst1KTUAhZLIO8klFbv0orcmdbK4GpfrEDQMXwGxGDdBvJAG13r91LcB/9YwgskwLAXJ1qglZJ8Qye/lL7VHleYIWdtNPkVGGZPMULPz89KxojQeQ2cJ2Ppx1UxMUOHmP6waKTRf1Mg+hb6vWLIn1YCSz826RJIztbhODLfAlhNPv8D7eSNBhesy4AOEx/NRH/rsbfIlHNOdNUUD0aTbJz+kQAAAAAA=\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ZNKOF6C2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ZOCXRE6K.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.blazpay.wallet/image.js\nvar image = \"data:image/webp;base64,UklGRqQCAABXRUJQVlA4IJgCAAAQFACdASqAAIAAPm02lUgkIyIhKBQIKIANiUAPFf8l+OXPG6od8t/IIj1tfjPuA7T3mAfqT5qvqz8wHQo8pnrZvQU6YD9mP2d9lUwKJ3C2VVigvwo276H220Zi9WtzNbv+8R1U05PJRtbXNIRPuj0YFRVzQ1bTiRgnjp7U4B4uG48ZGTs07W9D5VorrcQD1Vo3Hp2n9pS8i5e1q1TMbZM9my/DmytlVYkAAP78+EADHBtm1Q+yrUjxsvjqK98Xnf/enhbkzUflG//8Gdp23hnIMFER+g2dlrSG/DycvjR1gIfEgaBfzu7zZouUyKmp78uY8eMl0P/Wnctf7sgny7GCsB7+CQBmSGEDPuVvsASPHxQOWwpjy2Ht/I6UpXT8VxjYaLCvUSv0UOEGKzTGxP9OHuSbjwmh6C7/7OCYz+tjYvPwCH9spOj7W4eJHoNSlGUL7EvWj3KAFa4f3bkHKRe9r4yRfhnu2+lCPZ2jy8BNwSQKHW5Jw2Dj/ZJ8OU1EnLZ9Nrbs9eQZhQnDefw+XDjtRGQCCB6STxhd6cbMPDV4kis5ZpGJCX774Mulrs/aFR6eyFnQbOQEmkqlPqE6x14nZAxVWzylXmE+DOatUB4uD78t2loNt7PuhqiGU04T7wHyLtNd9zUcdeEl0k9oM/zHKXgx7WTMXy0oqrZ1N4LMBPLTJ03+zp8JVu/fbBYzFLNKGiOW/51PoRFHImBLXQYK9Vl5PVfGYapZf8sAkO2y3kcDK/3q/4RJ/2Km/aOfT+3C+mGklPJFdIhJT09nJNNxNSrxrR7C8Zbgpg1lZUQ1V6KYRdlWofYqmnjpV2FnYtaeAbxXx1wW4oiQWkQIVlnAhuBdxiBg+a8Q1nR3oHi2GdFsKYqAAAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ZOCXRE6K.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ZPU7UHI2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.yusetoken/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ZPU7UHI2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ZTVWJS7Y.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/com.dcentwallet/image.js\nvar image = \"data:image/webp;base64,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\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ZTVWJS7Y.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/image-ZZDK3IJV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.spatium/image.js\nvar image = \"data:image/webp;base64,UklGRlYFAABXRUJQVlA4IEoFAAAQHQCdASqAAIAAPm0wlUakIyIhKphqaIANiWMAecn1r8O/yZ343CiFc6ev2nSK8IfqVeYD7VeEP/ZLrlvQA8tX2bfI51Y/8t0hOXB3Qry9Zb7/aM+wHYT3pQgbJrVrjTfLm/CfnW120igd2hDx1XDkheteIL35NoLin5N2rPdAF1oIOKJUo+3ooWsKZ/9rrWHpcEY6ZYfmI2ytf0LGkqQilry+AGxPy6oxdapXeF8bIGy4bKv2EPLVnoNgAaZU/4RGUuTwFi7WKS6vd7b/TpQ71JG8kuqQTuzs2KBlq1XROSUOhuZw7LuopGaLasYmFSL4AP77/WEDGflKa/mPeed2D0YhjXAhcwrvm3FUI1R/T6iyaGj26B9E6ATFe/hOeHrWlyyPmGpJOVB2e2aSUcUuVjvMWNkUNRfylPxhkAOnihfEmBAWDoC0MYybqlY0Y6KCVeuWk75+OpuVbain2dWD+gAic5ejaWP9khDSvwLHapnU1IG4TSsQi3jzF6MpkPURn5UrceAcMWEb2pTFGLIexCl+UKw/c9vFPAW6X12yibvZc7fj0DvECREdcxihAjglhv6zQ0qHZvjDQWi72jbJVOrBtJ634IFELqJrQ913f2Px3iK2gxwIPz6Er9Y2EaGQfVWLL0QutQ693kyNMInLMMFUpeSIQD2/AwEW32ypj3qm3AAd4hAibAuE+SV/oPGYO1r0RPFiS9+hiGVUXEJsGsckmrdnAFIVerBP/vxbb+X3zEDVW98Z8hqs67ntSZz4llw9I7Yw8c8O5Fzk0jawMnkxjMxDGV42SvgdusEJsjEonayWsJSxIZBpFHtGydAI0gDogHfHRd8/ZoGI9ILPp+LWY14kwb9uubjq/4PPi47pDf6/l/hUUI+5BUFP7TETYLhJSvf+KCVECfwunuFD1OCi0qDZGvtcN1XarICeB9Y+R9dnkKWwhFu7Q7cRMN/9+Lbf2/e5xbPjgWzxKeqFbHxRf8WCgdFdIhSDgAcM2AfpJksTp3jJlitDcywUOQkHSTW0o3b2YWbc8B8m9M3rBQlLFTgNMcvEX0f70QR0TWEo3ryPSZjbr77TkhfPlw9Krf0vQNZQHhc+kHFk2IMHb9QBLEPchhRBbkFkfwrvkz0R7Guhuu1mhwTHGVPIXrS53TG6ZguhWLnHmY1FC3UJncZkJHwty81vaR4xkIDIBCG6UFS9KWiWaaWh9Rsu44u1dEJRPfvLchUIBRa5mNbmSSQC8wiz04EtfvxDFiX/EWIXdTePhZPYCzFm17b48WN1IMR33Vd09jPp3FtM+B0y1gCXy0PSz0QA6v/VskoB3WdEqUoXHQsy3vxmC6fL+/4yFHK4GHvs3bwyJz8wIwqD27rcRo2ujKcpoIidHRXk0BCTmnxcWbEtRi5N/QfG1R92u9cxxtCB1UUL6H5zNl/6JWa4Fvv37vCazD0ORqOlGfbZ3w8myxEiwBCkGLIK33zPYTneJXtlUfIU6criohghyFDfeVdPMOkDVos45caKNG7YYwv3ZQBs6aBgcW3VfVx0mg21LY8dCRu0KHLoWISPJTKp41tYUtFxqBsvmxEVH5BRw4C2VZSLWM2YCU+AsULrONr2/2GMCZ3FA7bn5ZYrTqWD7/TOlaTycs2bODF6BmtOjAP4Umb7ic0PLlwwOn0YvFipnG/f5S9DvzONTud7dA4IXObBIeI2a9s4uKkV5Fx1OH2xfz1wUumOerTaG9Yc9xlhO9eLchjHG0h0e+rfKYjgMEgtEnn2LuwDUvaaEnMydnR1/kzidza3v2s5z6/AC9qanRLspAAA\";\nvar image_default = image;\nexport {\n  image_default as default\n};\n//# sourceMappingURL=image-ZZDK3IJV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/in-app-core-HIWEYDMM.js",
    "content": "import {\n  createInAppWallet,\n  getOrCreateInAppWalletConnector\n} from \"./chunk-6WNCTW75.js\";\nimport \"./chunk-QLJVAXYD.js\";\nimport \"./chunk-CLN3QXW2.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  createInAppWallet,\n  getOrCreateInAppWalletConnector\n};\n//# sourceMappingURL=in-app-core-HIWEYDMM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/in-app-wallet-calls-GQSQW7CK.js",
    "content": "import {\n  randomBytesHex\n} from \"./chunk-S6VQW2VI.js\";\nimport {\n  sendBatchTransaction\n} from \"./chunk-VUXPTMXZ.js\";\nimport {\n  sendAndConfirmTransaction\n} from \"./chunk-ADIC4TC2.js\";\nimport \"./chunk-JTR2PIFP.js\";\nimport \"./chunk-JZC47WAY.js\";\nimport \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-7QDK5KLB.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport {\n  eth_getTransactionReceipt\n} from \"./chunk-JBQP4JIV.js\";\nimport \"./chunk-4OCU6WGG.js\";\nimport \"./chunk-3DBHE3NE.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport {\n  LruMap\n} from \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js\nvar bundlesToTransactions = new LruMap(1e3);\nasync function inAppWalletSendCalls(args) {\n  const { account, calls } = args;\n  const hashes = [];\n  const bundleId = randomBytesHex(65);\n  bundlesToTransactions.set(bundleId, hashes);\n  if (account.sendBatchTransaction) {\n    const receipt = await sendBatchTransaction({\n      account,\n      transactions: calls\n    });\n    hashes.push(receipt.transactionHash);\n    bundlesToTransactions.set(bundleId, hashes);\n  } else {\n    for (const tx of calls) {\n      const receipt = await sendAndConfirmTransaction({\n        account,\n        transaction: tx\n      });\n      hashes.push(receipt.transactionHash);\n      bundlesToTransactions.set(bundleId, hashes);\n    }\n  }\n  return bundleId;\n}\nasync function inAppWalletGetCallsStatus(args) {\n  const { wallet, client, bundleId } = args;\n  const chain = wallet.getChain();\n  if (!chain) {\n    throw new Error(\"Failed to get calls status, no active chain found\");\n  }\n  const bundle = bundlesToTransactions.get(bundleId);\n  if (!bundle) {\n    throw new Error(\"Failed to get calls status, unknown bundle id\");\n  }\n  const request = getRpcClient({ client, chain });\n  let status = \"CONFIRMED\";\n  const receipts = await Promise.all(bundle.map((hash) => eth_getTransactionReceipt(request, { hash }).then((receipt) => ({\n    logs: receipt.logs.map((l) => ({\n      address: l.address,\n      data: l.data,\n      topics: l.topics\n    })),\n    status: receipt.status,\n    blockHash: receipt.blockHash,\n    blockNumber: receipt.blockNumber,\n    gasUsed: receipt.gasUsed,\n    transactionHash: receipt.transactionHash\n  })).catch(() => {\n    status = \"PENDING\";\n    return null;\n  })));\n  return {\n    status,\n    receipts: receipts.filter((r) => r !== null)\n    // ts 5.5 please come we need you\n  };\n}\nexport {\n  inAppWalletGetCallsStatus,\n  inAppWalletSendCalls\n};\n//# sourceMappingURL=in-app-wallet-calls-GQSQW7CK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/in-app-wallet-capabilities-4KBZBWHO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js\nfunction inAppWalletGetCapabilities(args) {\n  const { wallet } = args;\n  const chain = wallet.getChain();\n  if (chain === void 0) {\n    return {\n      message: `Can't get capabilities, no active chain found for wallet: ${wallet.id}`\n    };\n  }\n  const account = wallet.getAccount();\n  const config = wallet.getConfig();\n  const sponsorGas = (config == null ? void 0 : config.smartAccount) && \"sponsorGas\" in config.smartAccount ? config.smartAccount.sponsorGas : false;\n  return {\n    [chain.id]: {\n      paymasterService: {\n        supported: sponsorGas\n      },\n      atomicBatch: {\n        supported: (account == null ? void 0 : account.sendBatchTransaction) !== void 0\n      }\n    }\n  };\n}\nexport {\n  inAppWalletGetCapabilities\n};\n//# sourceMappingURL=in-app-wallet-capabilities-4KBZBWHO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/inApp-RQNC3GM2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/inApp/index.js\nvar wallet = {\n  id: \"inApp\",\n  name: \"Social Login\",\n  homepage: \"https://thirdweb.com\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=inApp-RQNC3GM2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/inc-2JDOS23Q.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/inc.tomo/index.js\nvar wallet = {\n  id: \"inc.tomo\",\n  name: \"tomo extension wallet\",\n  homepage: \"https://tomo.inc\",\n  image_id: \"27e33ac7-b846-446d-a126-b0820904f800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/tomo-inc/id6468010287\",\n    android: \"https://play.google.com/store/apps/details?id=tomo.app.unyx\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/tomo-wallet/pfccjkejcgoppjnllalolplgogenfojk\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"inc.tomo\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=inc-2JDOS23Q.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/index.es-AMKWX7QZ.js",
    "content": "import {\n  Dn,\n  L,\n  N,\n  Oe,\n  U,\n  Z,\n  _e,\n  esm_exports,\n  formatJsonRpcError,\n  formatJsonRpcRequest,\n  formatJsonRpcResult,\n  import_pino,\n  isHttpUrl,\n  it,\n  k,\n  mt,\n  o,\n  parseConnectionError,\n  re,\n  require_events,\n  safeJsonParse,\n  safeJsonStringify\n} from \"./chunk-EHYTL2NA.js\";\nimport {\n  __commonJS,\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/lodash/lodash.js\nvar require_lodash = __commonJS({\n  \"node_modules/lodash/lodash.js\"(exports, module) {\n    (function() {\n      var undefined2;\n      var VERSION = \"4.17.21\";\n      var LARGE_ARRAY_SIZE = 200;\n      var CORE_ERROR_TEXT = \"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\", FUNC_ERROR_TEXT = \"Expected a function\", INVALID_TEMPL_VAR_ERROR_TEXT = \"Invalid `variable` option passed into `_.template`\";\n      var HASH_UNDEFINED = \"__lodash_hash_undefined__\";\n      var MAX_MEMOIZE_SIZE = 500;\n      var PLACEHOLDER = \"__lodash_placeholder__\";\n      var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;\n      var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;\n      var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512;\n      var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = \"...\";\n      var HOT_COUNT = 800, HOT_SPAN = 16;\n      var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3;\n      var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0;\n      var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n      var wrapFlags = [\n        [\"ary\", WRAP_ARY_FLAG],\n        [\"bind\", WRAP_BIND_FLAG],\n        [\"bindKey\", WRAP_BIND_KEY_FLAG],\n        [\"curry\", WRAP_CURRY_FLAG],\n        [\"curryRight\", WRAP_CURRY_RIGHT_FLAG],\n        [\"flip\", WRAP_FLIP_FLAG],\n        [\"partial\", WRAP_PARTIAL_FLAG],\n        [\"partialRight\", WRAP_PARTIAL_RIGHT_FLAG],\n        [\"rearg\", WRAP_REARG_FLAG]\n      ];\n      var argsTag = \"[object Arguments]\", arrayTag = \"[object Array]\", asyncTag = \"[object AsyncFunction]\", boolTag = \"[object Boolean]\", dateTag = \"[object Date]\", domExcTag = \"[object DOMException]\", errorTag = \"[object Error]\", funcTag = \"[object Function]\", genTag = \"[object GeneratorFunction]\", mapTag = \"[object Map]\", numberTag = \"[object Number]\", nullTag = \"[object Null]\", objectTag = \"[object Object]\", promiseTag = \"[object Promise]\", proxyTag = \"[object Proxy]\", regexpTag = \"[object RegExp]\", setTag = \"[object Set]\", stringTag = \"[object String]\", symbolTag = \"[object Symbol]\", undefinedTag = \"[object Undefined]\", weakMapTag = \"[object WeakMap]\", weakSetTag = \"[object WeakSet]\";\n      var arrayBufferTag = \"[object ArrayBuffer]\", dataViewTag = \"[object DataView]\", float32Tag = \"[object Float32Array]\", float64Tag = \"[object Float64Array]\", int8Tag = \"[object Int8Array]\", int16Tag = \"[object Int16Array]\", int32Tag = \"[object Int32Array]\", uint8Tag = \"[object Uint8Array]\", uint8ClampedTag = \"[object Uint8ClampedArray]\", uint16Tag = \"[object Uint16Array]\", uint32Tag = \"[object Uint32Array]\";\n      var reEmptyStringLeading = /\\b__p \\+= '';/g, reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g, reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n      var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>\"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n      var reEscape = /<%-([\\s\\S]+?)%>/g, reEvaluate = /<%([\\s\\S]+?)%>/g, reInterpolate = /<%=([\\s\\S]+?)%>/g;\n      var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/, reIsPlainProp = /^\\w*$/, rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n      var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source);\n      var reTrimStart = /^\\s+/;\n      var reWhitespace = /\\s/;\n      var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/, reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/, reSplitDetails = /,? & /;\n      var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n      var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n      var reEscapeChar = /\\\\(\\\\)?/g;\n      var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n      var reFlags = /\\w*$/;\n      var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n      var reIsBinary = /^0b[01]+$/i;\n      var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n      var reIsOctal = /^0o[0-7]+$/i;\n      var reIsUint = /^(?:0|[1-9]\\d*)$/;\n      var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n      var reNoMatch = /($^)/;\n      var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n      var rsAstralRange = \"\\\\ud800-\\\\udfff\", rsComboMarksRange = \"\\\\u0300-\\\\u036f\", reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\", rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = \"\\\\u2700-\\\\u27bf\", rsLowerRange = \"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\", rsMathOpRange = \"\\\\xac\\\\xb1\\\\xd7\\\\xf7\", rsNonCharRange = \"\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\", rsPunctuationRange = \"\\\\u2000-\\\\u206f\", rsSpaceRange = \" \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\", rsUpperRange = \"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\", rsVarRange = \"\\\\ufe0e\\\\ufe0f\", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n      var rsApos = \"['’]\", rsAstral = \"[\" + rsAstralRange + \"]\", rsBreak = \"[\" + rsBreakRange + \"]\", rsCombo = \"[\" + rsComboRange + \"]\", rsDigits = \"\\\\d+\", rsDingbat = \"[\" + rsDingbatRange + \"]\", rsLower = \"[\" + rsLowerRange + \"]\", rsMisc = \"[^\" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + \"]\", rsFitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\", rsModifier = \"(?:\" + rsCombo + \"|\" + rsFitz + \")\", rsNonAstral = \"[^\" + rsAstralRange + \"]\", rsRegional = \"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\", rsSurrPair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\", rsUpper = \"[\" + rsUpperRange + \"]\", rsZWJ = \"\\\\u200d\";\n      var rsMiscLower = \"(?:\" + rsLower + \"|\" + rsMisc + \")\", rsMiscUpper = \"(?:\" + rsUpper + \"|\" + rsMisc + \")\", rsOptContrLower = \"(?:\" + rsApos + \"(?:d|ll|m|re|s|t|ve))?\", rsOptContrUpper = \"(?:\" + rsApos + \"(?:D|LL|M|RE|S|T|VE))?\", reOptMod = rsModifier + \"?\", rsOptVar = \"[\" + rsVarRange + \"]?\", rsOptJoin = \"(?:\" + rsZWJ + \"(?:\" + [rsNonAstral, rsRegional, rsSurrPair].join(\"|\") + \")\" + rsOptVar + reOptMod + \")*\", rsOrdLower = \"\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])\", rsOrdUpper = \"\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])\", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = \"(?:\" + [rsDingbat, rsRegional, rsSurrPair].join(\"|\") + \")\" + rsSeq, rsSymbol = \"(?:\" + [rsNonAstral + rsCombo + \"?\", rsCombo, rsRegional, rsSurrPair, rsAstral].join(\"|\") + \")\";\n      var reApos = RegExp(rsApos, \"g\");\n      var reComboMark = RegExp(rsCombo, \"g\");\n      var reUnicode = RegExp(rsFitz + \"(?=\" + rsFitz + \")|\" + rsSymbol + rsSeq, \"g\");\n      var reUnicodeWord = RegExp([\n        rsUpper + \"?\" + rsLower + \"+\" + rsOptContrLower + \"(?=\" + [rsBreak, rsUpper, \"$\"].join(\"|\") + \")\",\n        rsMiscUpper + \"+\" + rsOptContrUpper + \"(?=\" + [rsBreak, rsUpper + rsMiscLower, \"$\"].join(\"|\") + \")\",\n        rsUpper + \"?\" + rsMiscLower + \"+\" + rsOptContrLower,\n        rsUpper + \"+\" + rsOptContrUpper,\n        rsOrdUpper,\n        rsOrdLower,\n        rsDigits,\n        rsEmoji\n      ].join(\"|\"), \"g\");\n      var reHasUnicode = RegExp(\"[\" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + \"]\");\n      var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n      var contextProps = [\n        \"Array\",\n        \"Buffer\",\n        \"DataView\",\n        \"Date\",\n        \"Error\",\n        \"Float32Array\",\n        \"Float64Array\",\n        \"Function\",\n        \"Int8Array\",\n        \"Int16Array\",\n        \"Int32Array\",\n        \"Map\",\n        \"Math\",\n        \"Object\",\n        \"Promise\",\n        \"RegExp\",\n        \"Set\",\n        \"String\",\n        \"Symbol\",\n        \"TypeError\",\n        \"Uint8Array\",\n        \"Uint8ClampedArray\",\n        \"Uint16Array\",\n        \"Uint32Array\",\n        \"WeakMap\",\n        \"_\",\n        \"clearTimeout\",\n        \"isFinite\",\n        \"parseInt\",\n        \"setTimeout\"\n      ];\n      var templateCounter = -1;\n      var typedArrayTags = {};\n      typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\n      typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n      var cloneableTags = {};\n      cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n      cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;\n      var deburredLetters = {\n        // Latin-1 Supplement block.\n        \"À\": \"A\",\n        \"Á\": \"A\",\n        \"Â\": \"A\",\n        \"Ã\": \"A\",\n        \"Ä\": \"A\",\n        \"Å\": \"A\",\n        \"à\": \"a\",\n        \"á\": \"a\",\n        \"â\": \"a\",\n        \"ã\": \"a\",\n        \"ä\": \"a\",\n        \"å\": \"a\",\n        \"Ç\": \"C\",\n        \"ç\": \"c\",\n        \"Ð\": \"D\",\n        \"ð\": \"d\",\n        \"È\": \"E\",\n        \"É\": \"E\",\n        \"Ê\": \"E\",\n        \"Ë\": \"E\",\n        \"è\": \"e\",\n        \"é\": \"e\",\n        \"ê\": \"e\",\n        \"ë\": \"e\",\n        \"Ì\": \"I\",\n        \"Í\": \"I\",\n        \"Î\": \"I\",\n        \"Ï\": \"I\",\n        \"ì\": \"i\",\n        \"í\": \"i\",\n        \"î\": \"i\",\n        \"ï\": \"i\",\n        \"Ñ\": \"N\",\n        \"ñ\": \"n\",\n        \"Ò\": \"O\",\n        \"Ó\": \"O\",\n        \"Ô\": \"O\",\n        \"Õ\": \"O\",\n        \"Ö\": \"O\",\n        \"Ø\": \"O\",\n        \"ò\": \"o\",\n        \"ó\": \"o\",\n        \"ô\": \"o\",\n        \"õ\": \"o\",\n        \"ö\": \"o\",\n        \"ø\": \"o\",\n        \"Ù\": \"U\",\n        \"Ú\": \"U\",\n        \"Û\": \"U\",\n        \"Ü\": \"U\",\n        \"ù\": \"u\",\n        \"ú\": \"u\",\n        \"û\": \"u\",\n        \"ü\": \"u\",\n        \"Ý\": \"Y\",\n        \"ý\": \"y\",\n        \"ÿ\": \"y\",\n        \"Æ\": \"Ae\",\n        \"æ\": \"ae\",\n        \"Þ\": \"Th\",\n        \"þ\": \"th\",\n        \"ß\": \"ss\",\n        // Latin Extended-A block.\n        \"Ā\": \"A\",\n        \"Ă\": \"A\",\n        \"Ą\": \"A\",\n        \"ā\": \"a\",\n        \"ă\": \"a\",\n        \"ą\": \"a\",\n        \"Ć\": \"C\",\n        \"Ĉ\": \"C\",\n        \"Ċ\": \"C\",\n        \"Č\": \"C\",\n        \"ć\": \"c\",\n        \"ĉ\": \"c\",\n        \"ċ\": \"c\",\n        \"č\": \"c\",\n        \"Ď\": \"D\",\n        \"Đ\": \"D\",\n        \"ď\": \"d\",\n        \"đ\": \"d\",\n        \"Ē\": \"E\",\n        \"Ĕ\": \"E\",\n        \"Ė\": \"E\",\n        \"Ę\": \"E\",\n        \"Ě\": \"E\",\n        \"ē\": \"e\",\n        \"ĕ\": \"e\",\n        \"ė\": \"e\",\n        \"ę\": \"e\",\n        \"ě\": \"e\",\n        \"Ĝ\": \"G\",\n        \"Ğ\": \"G\",\n        \"Ġ\": \"G\",\n        \"Ģ\": \"G\",\n        \"ĝ\": \"g\",\n        \"ğ\": \"g\",\n        \"ġ\": \"g\",\n        \"ģ\": \"g\",\n        \"Ĥ\": \"H\",\n        \"Ħ\": \"H\",\n        \"ĥ\": \"h\",\n        \"ħ\": \"h\",\n        \"Ĩ\": \"I\",\n        \"Ī\": \"I\",\n        \"Ĭ\": \"I\",\n        \"Į\": \"I\",\n        \"İ\": \"I\",\n        \"ĩ\": \"i\",\n        \"ī\": \"i\",\n        \"ĭ\": \"i\",\n        \"į\": \"i\",\n        \"ı\": \"i\",\n        \"Ĵ\": \"J\",\n        \"ĵ\": \"j\",\n        \"Ķ\": \"K\",\n        \"ķ\": \"k\",\n        \"ĸ\": \"k\",\n        \"Ĺ\": \"L\",\n        \"Ļ\": \"L\",\n        \"Ľ\": \"L\",\n        \"Ŀ\": \"L\",\n        \"Ł\": \"L\",\n        \"ĺ\": \"l\",\n        \"ļ\": \"l\",\n        \"ľ\": \"l\",\n        \"ŀ\": \"l\",\n        \"ł\": \"l\",\n        \"Ń\": \"N\",\n        \"Ņ\": \"N\",\n        \"Ň\": \"N\",\n        \"Ŋ\": \"N\",\n        \"ń\": \"n\",\n        \"ņ\": \"n\",\n        \"ň\": \"n\",\n        \"ŋ\": \"n\",\n        \"Ō\": \"O\",\n        \"Ŏ\": \"O\",\n        \"Ő\": \"O\",\n        \"ō\": \"o\",\n        \"ŏ\": \"o\",\n        \"ő\": \"o\",\n        \"Ŕ\": \"R\",\n        \"Ŗ\": \"R\",\n        \"Ř\": \"R\",\n        \"ŕ\": \"r\",\n        \"ŗ\": \"r\",\n        \"ř\": \"r\",\n        \"Ś\": \"S\",\n        \"Ŝ\": \"S\",\n        \"Ş\": \"S\",\n        \"Š\": \"S\",\n        \"ś\": \"s\",\n        \"ŝ\": \"s\",\n        \"ş\": \"s\",\n        \"š\": \"s\",\n        \"Ţ\": \"T\",\n        \"Ť\": \"T\",\n        \"Ŧ\": \"T\",\n        \"ţ\": \"t\",\n        \"ť\": \"t\",\n        \"ŧ\": \"t\",\n        \"Ũ\": \"U\",\n        \"Ū\": \"U\",\n        \"Ŭ\": \"U\",\n        \"Ů\": \"U\",\n        \"Ű\": \"U\",\n        \"Ų\": \"U\",\n        \"ũ\": \"u\",\n        \"ū\": \"u\",\n        \"ŭ\": \"u\",\n        \"ů\": \"u\",\n        \"ű\": \"u\",\n        \"ų\": \"u\",\n        \"Ŵ\": \"W\",\n        \"ŵ\": \"w\",\n        \"Ŷ\": \"Y\",\n        \"ŷ\": \"y\",\n        \"Ÿ\": \"Y\",\n        \"Ź\": \"Z\",\n        \"Ż\": \"Z\",\n        \"Ž\": \"Z\",\n        \"ź\": \"z\",\n        \"ż\": \"z\",\n        \"ž\": \"z\",\n        \"Ĳ\": \"IJ\",\n        \"ĳ\": \"ij\",\n        \"Œ\": \"Oe\",\n        \"œ\": \"oe\",\n        \"ŉ\": \"'n\",\n        \"ſ\": \"s\"\n      };\n      var htmlEscapes = {\n        \"&\": \"&amp;\",\n        \"<\": \"&lt;\",\n        \">\": \"&gt;\",\n        '\"': \"&quot;\",\n        \"'\": \"&#39;\"\n      };\n      var htmlUnescapes = {\n        \"&amp;\": \"&\",\n        \"&lt;\": \"<\",\n        \"&gt;\": \">\",\n        \"&quot;\": '\"',\n        \"&#39;\": \"'\"\n      };\n      var stringEscapes = {\n        \"\\\\\": \"\\\\\",\n        \"'\": \"'\",\n        \"\\n\": \"n\",\n        \"\\r\": \"r\",\n        \"\\u2028\": \"u2028\",\n        \"\\u2029\": \"u2029\"\n      };\n      var freeParseFloat = parseFloat, freeParseInt = parseInt;\n      var freeGlobal = typeof global == \"object\" && global && global.Object === Object && global;\n      var freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\n      var root = freeGlobal || freeSelf || Function(\"return this\")();\n      var freeExports = typeof exports == \"object\" && exports && !exports.nodeType && exports;\n      var freeModule = freeExports && typeof module == \"object\" && module && !module.nodeType && module;\n      var moduleExports = freeModule && freeModule.exports === freeExports;\n      var freeProcess = moduleExports && freeGlobal.process;\n      var nodeUtil = function() {\n        try {\n          var types = freeModule && freeModule.require && freeModule.require(\"util\").types;\n          if (types) {\n            return types;\n          }\n          return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n        } catch (e) {\n        }\n      }();\n      var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n      function apply(func, thisArg, args) {\n        switch (args.length) {\n          case 0:\n            return func.call(thisArg);\n          case 1:\n            return func.call(thisArg, args[0]);\n          case 2:\n            return func.call(thisArg, args[0], args[1]);\n          case 3:\n            return func.call(thisArg, args[0], args[1], args[2]);\n        }\n        return func.apply(thisArg, args);\n      }\n      function arrayAggregator(array, setter, iteratee, accumulator) {\n        var index = -1, length = array == null ? 0 : array.length;\n        while (++index < length) {\n          var value = array[index];\n          setter(accumulator, value, iteratee(value), array);\n        }\n        return accumulator;\n      }\n      function arrayEach(array, iteratee) {\n        var index = -1, length = array == null ? 0 : array.length;\n        while (++index < length) {\n          if (iteratee(array[index], index, array) === false) {\n            break;\n          }\n        }\n        return array;\n      }\n      function arrayEachRight(array, iteratee) {\n        var length = array == null ? 0 : array.length;\n        while (length--) {\n          if (iteratee(array[length], length, array) === false) {\n            break;\n          }\n        }\n        return array;\n      }\n      function arrayEvery(array, predicate) {\n        var index = -1, length = array == null ? 0 : array.length;\n        while (++index < length) {\n          if (!predicate(array[index], index, array)) {\n            return false;\n          }\n        }\n        return true;\n      }\n      function arrayFilter(array, predicate) {\n        var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n        while (++index < length) {\n          var value = array[index];\n          if (predicate(value, index, array)) {\n            result[resIndex++] = value;\n          }\n        }\n        return result;\n      }\n      function arrayIncludes(array, value) {\n        var length = array == null ? 0 : array.length;\n        return !!length && baseIndexOf(array, value, 0) > -1;\n      }\n      function arrayIncludesWith(array, value, comparator) {\n        var index = -1, length = array == null ? 0 : array.length;\n        while (++index < length) {\n          if (comparator(value, array[index])) {\n            return true;\n          }\n        }\n        return false;\n      }\n      function arrayMap(array, iteratee) {\n        var index = -1, length = array == null ? 0 : array.length, result = Array(length);\n        while (++index < length) {\n          result[index] = iteratee(array[index], index, array);\n        }\n        return result;\n      }\n      function arrayPush(array, values) {\n        var index = -1, length = values.length, offset = array.length;\n        while (++index < length) {\n          array[offset + index] = values[index];\n        }\n        return array;\n      }\n      function arrayReduce(array, iteratee, accumulator, initAccum) {\n        var index = -1, length = array == null ? 0 : array.length;\n        if (initAccum && length) {\n          accumulator = array[++index];\n        }\n        while (++index < length) {\n          accumulator = iteratee(accumulator, array[index], index, array);\n        }\n        return accumulator;\n      }\n      function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n        var length = array == null ? 0 : array.length;\n        if (initAccum && length) {\n          accumulator = array[--length];\n        }\n        while (length--) {\n          accumulator = iteratee(accumulator, array[length], length, array);\n        }\n        return accumulator;\n      }\n      function arraySome(array, predicate) {\n        var index = -1, length = array == null ? 0 : array.length;\n        while (++index < length) {\n          if (predicate(array[index], index, array)) {\n            return true;\n          }\n        }\n        return false;\n      }\n      var asciiSize = baseProperty(\"length\");\n      function asciiToArray(string) {\n        return string.split(\"\");\n      }\n      function asciiWords(string) {\n        return string.match(reAsciiWord) || [];\n      }\n      function baseFindKey(collection, predicate, eachFunc) {\n        var result;\n        eachFunc(collection, function(value, key, collection2) {\n          if (predicate(value, key, collection2)) {\n            result = key;\n            return false;\n          }\n        });\n        return result;\n      }\n      function baseFindIndex(array, predicate, fromIndex, fromRight) {\n        var length = array.length, index = fromIndex + (fromRight ? 1 : -1);\n        while (fromRight ? index-- : ++index < length) {\n          if (predicate(array[index], index, array)) {\n            return index;\n          }\n        }\n        return -1;\n      }\n      function baseIndexOf(array, value, fromIndex) {\n        return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n      }\n      function baseIndexOfWith(array, value, fromIndex, comparator) {\n        var index = fromIndex - 1, length = array.length;\n        while (++index < length) {\n          if (comparator(array[index], value)) {\n            return index;\n          }\n        }\n        return -1;\n      }\n      function baseIsNaN(value) {\n        return value !== value;\n      }\n      function baseMean(array, iteratee) {\n        var length = array == null ? 0 : array.length;\n        return length ? baseSum(array, iteratee) / length : NAN;\n      }\n      function baseProperty(key) {\n        return function(object) {\n          return object == null ? undefined2 : object[key];\n        };\n      }\n      function basePropertyOf(object) {\n        return function(key) {\n          return object == null ? undefined2 : object[key];\n        };\n      }\n      function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n        eachFunc(collection, function(value, index, collection2) {\n          accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2);\n        });\n        return accumulator;\n      }\n      function baseSortBy(array, comparer) {\n        var length = array.length;\n        array.sort(comparer);\n        while (length--) {\n          array[length] = array[length].value;\n        }\n        return array;\n      }\n      function baseSum(array, iteratee) {\n        var result, index = -1, length = array.length;\n        while (++index < length) {\n          var current = iteratee(array[index]);\n          if (current !== undefined2) {\n            result = result === undefined2 ? current : result + current;\n          }\n        }\n        return result;\n      }\n      function baseTimes(n, iteratee) {\n        var index = -1, result = Array(n);\n        while (++index < n) {\n          result[index] = iteratee(index);\n        }\n        return result;\n      }\n      function baseToPairs(object, props) {\n        return arrayMap(props, function(key) {\n          return [key, object[key]];\n        });\n      }\n      function baseTrim(string) {\n        return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, \"\") : string;\n      }\n      function baseUnary(func) {\n        return function(value) {\n          return func(value);\n        };\n      }\n      function baseValues(object, props) {\n        return arrayMap(props, function(key) {\n          return object[key];\n        });\n      }\n      function cacheHas(cache, key) {\n        return cache.has(key);\n      }\n      function charsStartIndex(strSymbols, chrSymbols) {\n        var index = -1, length = strSymbols.length;\n        while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {\n        }\n        return index;\n      }\n      function charsEndIndex(strSymbols, chrSymbols) {\n        var index = strSymbols.length;\n        while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {\n        }\n        return index;\n      }\n      function countHolders(array, placeholder) {\n        var length = array.length, result = 0;\n        while (length--) {\n          if (array[length] === placeholder) {\n            ++result;\n          }\n        }\n        return result;\n      }\n      var deburrLetter = basePropertyOf(deburredLetters);\n      var escapeHtmlChar = basePropertyOf(htmlEscapes);\n      function escapeStringChar(chr) {\n        return \"\\\\\" + stringEscapes[chr];\n      }\n      function getValue(object, key) {\n        return object == null ? undefined2 : object[key];\n      }\n      function hasUnicode(string) {\n        return reHasUnicode.test(string);\n      }\n      function hasUnicodeWord(string) {\n        return reHasUnicodeWord.test(string);\n      }\n      function iteratorToArray(iterator) {\n        var data, result = [];\n        while (!(data = iterator.next()).done) {\n          result.push(data.value);\n        }\n        return result;\n      }\n      function mapToArray(map) {\n        var index = -1, result = Array(map.size);\n        map.forEach(function(value, key) {\n          result[++index] = [key, value];\n        });\n        return result;\n      }\n      function overArg(func, transform) {\n        return function(arg) {\n          return func(transform(arg));\n        };\n      }\n      function replaceHolders(array, placeholder) {\n        var index = -1, length = array.length, resIndex = 0, result = [];\n        while (++index < length) {\n          var value = array[index];\n          if (value === placeholder || value === PLACEHOLDER) {\n            array[index] = PLACEHOLDER;\n            result[resIndex++] = index;\n          }\n        }\n        return result;\n      }\n      function setToArray(set) {\n        var index = -1, result = Array(set.size);\n        set.forEach(function(value) {\n          result[++index] = value;\n        });\n        return result;\n      }\n      function setToPairs(set) {\n        var index = -1, result = Array(set.size);\n        set.forEach(function(value) {\n          result[++index] = [value, value];\n        });\n        return result;\n      }\n      function strictIndexOf(array, value, fromIndex) {\n        var index = fromIndex - 1, length = array.length;\n        while (++index < length) {\n          if (array[index] === value) {\n            return index;\n          }\n        }\n        return -1;\n      }\n      function strictLastIndexOf(array, value, fromIndex) {\n        var index = fromIndex + 1;\n        while (index--) {\n          if (array[index] === value) {\n            return index;\n          }\n        }\n        return index;\n      }\n      function stringSize(string) {\n        return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);\n      }\n      function stringToArray(string) {\n        return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);\n      }\n      function trimmedEndIndex(string) {\n        var index = string.length;\n        while (index-- && reWhitespace.test(string.charAt(index))) {\n        }\n        return index;\n      }\n      var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n      function unicodeSize(string) {\n        var result = reUnicode.lastIndex = 0;\n        while (reUnicode.test(string)) {\n          ++result;\n        }\n        return result;\n      }\n      function unicodeToArray(string) {\n        return string.match(reUnicode) || [];\n      }\n      function unicodeWords(string) {\n        return string.match(reUnicodeWord) || [];\n      }\n      var runInContext = function runInContext2(context) {\n        context = context == null ? root : _2.defaults(root.Object(), context, _2.pick(root, contextProps));\n        var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError;\n        var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype;\n        var coreJsData = context[\"__core-js_shared__\"];\n        var funcToString = funcProto.toString;\n        var hasOwnProperty = objectProto.hasOwnProperty;\n        var idCounter = 0;\n        var maskSrcKey = function() {\n          var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || \"\");\n          return uid ? \"Symbol(src)_1.\" + uid : \"\";\n        }();\n        var nativeObjectToString = objectProto.toString;\n        var objectCtorString = funcToString.call(Object2);\n        var oldDash = root._;\n        var reIsNative = RegExp2(\n          \"^\" + funcToString.call(hasOwnProperty).replace(reRegExpChar, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n        );\n        var Buffer = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2;\n        var defineProperty = function() {\n          try {\n            var func = getNative(Object2, \"defineProperty\");\n            func({}, \"\", {});\n            return func;\n          } catch (e) {\n          }\n        }();\n        var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n        var nativeCeil = Math.ceil, nativeFloor = Math.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math.max, nativeMin = Math.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math.random, nativeReverse = arrayProto.reverse;\n        var DataView2 = getNative(context, \"DataView\"), Map = getNative(context, \"Map\"), Promise2 = getNative(context, \"Promise\"), Set2 = getNative(context, \"Set\"), WeakMap = getNative(context, \"WeakMap\"), nativeCreate = getNative(Object2, \"create\");\n        var metaMap = WeakMap && new WeakMap();\n        var realNames = {};\n        var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap);\n        var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2;\n        function lodash(value) {\n          if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n            if (value instanceof LodashWrapper) {\n              return value;\n            }\n            if (hasOwnProperty.call(value, \"__wrapped__\")) {\n              return wrapperClone(value);\n            }\n          }\n          return new LodashWrapper(value);\n        }\n        var baseCreate = function() {\n          function object() {\n          }\n          return function(proto) {\n            if (!isObject(proto)) {\n              return {};\n            }\n            if (objectCreate) {\n              return objectCreate(proto);\n            }\n            object.prototype = proto;\n            var result2 = new object();\n            object.prototype = undefined2;\n            return result2;\n          };\n        }();\n        function baseLodash() {\n        }\n        function LodashWrapper(value, chainAll) {\n          this.__wrapped__ = value;\n          this.__actions__ = [];\n          this.__chain__ = !!chainAll;\n          this.__index__ = 0;\n          this.__values__ = undefined2;\n        }\n        lodash.templateSettings = {\n          /**\n           * Used to detect `data` property values to be HTML-escaped.\n           *\n           * @memberOf _.templateSettings\n           * @type {RegExp}\n           */\n          \"escape\": reEscape,\n          /**\n           * Used to detect code to be evaluated.\n           *\n           * @memberOf _.templateSettings\n           * @type {RegExp}\n           */\n          \"evaluate\": reEvaluate,\n          /**\n           * Used to detect `data` property values to inject.\n           *\n           * @memberOf _.templateSettings\n           * @type {RegExp}\n           */\n          \"interpolate\": reInterpolate,\n          /**\n           * Used to reference the data object in the template text.\n           *\n           * @memberOf _.templateSettings\n           * @type {string}\n           */\n          \"variable\": \"\",\n          /**\n           * Used to import variables into the compiled template.\n           *\n           * @memberOf _.templateSettings\n           * @type {Object}\n           */\n          \"imports\": {\n            /**\n             * A reference to the `lodash` function.\n             *\n             * @memberOf _.templateSettings.imports\n             * @type {Function}\n             */\n            \"_\": lodash\n          }\n        };\n        lodash.prototype = baseLodash.prototype;\n        lodash.prototype.constructor = lodash;\n        LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n        LodashWrapper.prototype.constructor = LodashWrapper;\n        function LazyWrapper(value) {\n          this.__wrapped__ = value;\n          this.__actions__ = [];\n          this.__dir__ = 1;\n          this.__filtered__ = false;\n          this.__iteratees__ = [];\n          this.__takeCount__ = MAX_ARRAY_LENGTH;\n          this.__views__ = [];\n        }\n        function lazyClone() {\n          var result2 = new LazyWrapper(this.__wrapped__);\n          result2.__actions__ = copyArray(this.__actions__);\n          result2.__dir__ = this.__dir__;\n          result2.__filtered__ = this.__filtered__;\n          result2.__iteratees__ = copyArray(this.__iteratees__);\n          result2.__takeCount__ = this.__takeCount__;\n          result2.__views__ = copyArray(this.__views__);\n          return result2;\n        }\n        function lazyReverse() {\n          if (this.__filtered__) {\n            var result2 = new LazyWrapper(this);\n            result2.__dir__ = -1;\n            result2.__filtered__ = true;\n          } else {\n            result2 = this.clone();\n            result2.__dir__ *= -1;\n          }\n          return result2;\n        }\n        function lazyValue() {\n          var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__);\n          if (!isArr || !isRight && arrLength == length && takeCount == length) {\n            return baseWrapperValue(array, this.__actions__);\n          }\n          var result2 = [];\n          outer:\n            while (length-- && resIndex < takeCount) {\n              index += dir;\n              var iterIndex = -1, value = array[index];\n              while (++iterIndex < iterLength) {\n                var data = iteratees[iterIndex], iteratee2 = data.iteratee, type = data.type, computed = iteratee2(value);\n                if (type == LAZY_MAP_FLAG) {\n                  value = computed;\n                } else if (!computed) {\n                  if (type == LAZY_FILTER_FLAG) {\n                    continue outer;\n                  } else {\n                    break outer;\n                  }\n                }\n              }\n              result2[resIndex++] = value;\n            }\n          return result2;\n        }\n        LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n        LazyWrapper.prototype.constructor = LazyWrapper;\n        function Hash(entries) {\n          var index = -1, length = entries == null ? 0 : entries.length;\n          this.clear();\n          while (++index < length) {\n            var entry = entries[index];\n            this.set(entry[0], entry[1]);\n          }\n        }\n        function hashClear() {\n          this.__data__ = nativeCreate ? nativeCreate(null) : {};\n          this.size = 0;\n        }\n        function hashDelete(key) {\n          var result2 = this.has(key) && delete this.__data__[key];\n          this.size -= result2 ? 1 : 0;\n          return result2;\n        }\n        function hashGet(key) {\n          var data = this.__data__;\n          if (nativeCreate) {\n            var result2 = data[key];\n            return result2 === HASH_UNDEFINED ? undefined2 : result2;\n          }\n          return hasOwnProperty.call(data, key) ? data[key] : undefined2;\n        }\n        function hashHas(key) {\n          var data = this.__data__;\n          return nativeCreate ? data[key] !== undefined2 : hasOwnProperty.call(data, key);\n        }\n        function hashSet(key, value) {\n          var data = this.__data__;\n          this.size += this.has(key) ? 0 : 1;\n          data[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value;\n          return this;\n        }\n        Hash.prototype.clear = hashClear;\n        Hash.prototype[\"delete\"] = hashDelete;\n        Hash.prototype.get = hashGet;\n        Hash.prototype.has = hashHas;\n        Hash.prototype.set = hashSet;\n        function ListCache(entries) {\n          var index = -1, length = entries == null ? 0 : entries.length;\n          this.clear();\n          while (++index < length) {\n            var entry = entries[index];\n            this.set(entry[0], entry[1]);\n          }\n        }\n        function listCacheClear() {\n          this.__data__ = [];\n          this.size = 0;\n        }\n        function listCacheDelete(key) {\n          var data = this.__data__, index = assocIndexOf(data, key);\n          if (index < 0) {\n            return false;\n          }\n          var lastIndex = data.length - 1;\n          if (index == lastIndex) {\n            data.pop();\n          } else {\n            splice.call(data, index, 1);\n          }\n          --this.size;\n          return true;\n        }\n        function listCacheGet(key) {\n          var data = this.__data__, index = assocIndexOf(data, key);\n          return index < 0 ? undefined2 : data[index][1];\n        }\n        function listCacheHas(key) {\n          return assocIndexOf(this.__data__, key) > -1;\n        }\n        function listCacheSet(key, value) {\n          var data = this.__data__, index = assocIndexOf(data, key);\n          if (index < 0) {\n            ++this.size;\n            data.push([key, value]);\n          } else {\n            data[index][1] = value;\n          }\n          return this;\n        }\n        ListCache.prototype.clear = listCacheClear;\n        ListCache.prototype[\"delete\"] = listCacheDelete;\n        ListCache.prototype.get = listCacheGet;\n        ListCache.prototype.has = listCacheHas;\n        ListCache.prototype.set = listCacheSet;\n        function MapCache(entries) {\n          var index = -1, length = entries == null ? 0 : entries.length;\n          this.clear();\n          while (++index < length) {\n            var entry = entries[index];\n            this.set(entry[0], entry[1]);\n          }\n        }\n        function mapCacheClear() {\n          this.size = 0;\n          this.__data__ = {\n            \"hash\": new Hash(),\n            \"map\": new (Map || ListCache)(),\n            \"string\": new Hash()\n          };\n        }\n        function mapCacheDelete(key) {\n          var result2 = getMapData(this, key)[\"delete\"](key);\n          this.size -= result2 ? 1 : 0;\n          return result2;\n        }\n        function mapCacheGet(key) {\n          return getMapData(this, key).get(key);\n        }\n        function mapCacheHas(key) {\n          return getMapData(this, key).has(key);\n        }\n        function mapCacheSet(key, value) {\n          var data = getMapData(this, key), size2 = data.size;\n          data.set(key, value);\n          this.size += data.size == size2 ? 0 : 1;\n          return this;\n        }\n        MapCache.prototype.clear = mapCacheClear;\n        MapCache.prototype[\"delete\"] = mapCacheDelete;\n        MapCache.prototype.get = mapCacheGet;\n        MapCache.prototype.has = mapCacheHas;\n        MapCache.prototype.set = mapCacheSet;\n        function SetCache(values2) {\n          var index = -1, length = values2 == null ? 0 : values2.length;\n          this.__data__ = new MapCache();\n          while (++index < length) {\n            this.add(values2[index]);\n          }\n        }\n        function setCacheAdd(value) {\n          this.__data__.set(value, HASH_UNDEFINED);\n          return this;\n        }\n        function setCacheHas(value) {\n          return this.__data__.has(value);\n        }\n        SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n        SetCache.prototype.has = setCacheHas;\n        function Stack(entries) {\n          var data = this.__data__ = new ListCache(entries);\n          this.size = data.size;\n        }\n        function stackClear() {\n          this.__data__ = new ListCache();\n          this.size = 0;\n        }\n        function stackDelete(key) {\n          var data = this.__data__, result2 = data[\"delete\"](key);\n          this.size = data.size;\n          return result2;\n        }\n        function stackGet(key) {\n          return this.__data__.get(key);\n        }\n        function stackHas(key) {\n          return this.__data__.has(key);\n        }\n        function stackSet(key, value) {\n          var data = this.__data__;\n          if (data instanceof ListCache) {\n            var pairs = data.__data__;\n            if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n              pairs.push([key, value]);\n              this.size = ++data.size;\n              return this;\n            }\n            data = this.__data__ = new MapCache(pairs);\n          }\n          data.set(key, value);\n          this.size = data.size;\n          return this;\n        }\n        Stack.prototype.clear = stackClear;\n        Stack.prototype[\"delete\"] = stackDelete;\n        Stack.prototype.get = stackGet;\n        Stack.prototype.has = stackHas;\n        Stack.prototype.set = stackSet;\n        function arrayLikeKeys(value, inherited) {\n          var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length;\n          for (var key in value) {\n            if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.\n            (key == \"length\" || // Node.js 0.10 has enumerable non-index properties on buffers.\n            isBuff && (key == \"offset\" || key == \"parent\") || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n            isType && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || // Skip index properties.\n            isIndex(key, length)))) {\n              result2.push(key);\n            }\n          }\n          return result2;\n        }\n        function arraySample(array) {\n          var length = array.length;\n          return length ? array[baseRandom(0, length - 1)] : undefined2;\n        }\n        function arraySampleSize(array, n) {\n          return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n        }\n        function arrayShuffle(array) {\n          return shuffleSelf(copyArray(array));\n        }\n        function assignMergeValue(object, key, value) {\n          if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) {\n            baseAssignValue(object, key, value);\n          }\n        }\n        function assignValue(object, key, value) {\n          var objValue = object[key];\n          if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) {\n            baseAssignValue(object, key, value);\n          }\n        }\n        function assocIndexOf(array, key) {\n          var length = array.length;\n          while (length--) {\n            if (eq(array[length][0], key)) {\n              return length;\n            }\n          }\n          return -1;\n        }\n        function baseAggregator(collection, setter, iteratee2, accumulator) {\n          baseEach(collection, function(value, key, collection2) {\n            setter(accumulator, value, iteratee2(value), collection2);\n          });\n          return accumulator;\n        }\n        function baseAssign(object, source) {\n          return object && copyObject(source, keys(source), object);\n        }\n        function baseAssignIn(object, source) {\n          return object && copyObject(source, keysIn(source), object);\n        }\n        function baseAssignValue(object, key, value) {\n          if (key == \"__proto__\" && defineProperty) {\n            defineProperty(object, key, {\n              \"configurable\": true,\n              \"enumerable\": true,\n              \"value\": value,\n              \"writable\": true\n            });\n          } else {\n            object[key] = value;\n          }\n        }\n        function baseAt(object, paths) {\n          var index = -1, length = paths.length, result2 = Array2(length), skip = object == null;\n          while (++index < length) {\n            result2[index] = skip ? undefined2 : get(object, paths[index]);\n          }\n          return result2;\n        }\n        function baseClamp(number, lower, upper) {\n          if (number === number) {\n            if (upper !== undefined2) {\n              number = number <= upper ? number : upper;\n            }\n            if (lower !== undefined2) {\n              number = number >= lower ? number : lower;\n            }\n          }\n          return number;\n        }\n        function baseClone(value, bitmask, customizer, key, object, stack) {\n          var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;\n          if (customizer) {\n            result2 = object ? customizer(value, key, object, stack) : customizer(value);\n          }\n          if (result2 !== undefined2) {\n            return result2;\n          }\n          if (!isObject(value)) {\n            return value;\n          }\n          var isArr = isArray(value);\n          if (isArr) {\n            result2 = initCloneArray(value);\n            if (!isDeep) {\n              return copyArray(value, result2);\n            }\n          } else {\n            var tag = getTag(value), isFunc = tag == funcTag || tag == genTag;\n            if (isBuffer(value)) {\n              return cloneBuffer(value, isDeep);\n            }\n            if (tag == objectTag || tag == argsTag || isFunc && !object) {\n              result2 = isFlat || isFunc ? {} : initCloneObject(value);\n              if (!isDeep) {\n                return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value));\n              }\n            } else {\n              if (!cloneableTags[tag]) {\n                return object ? value : {};\n              }\n              result2 = initCloneByTag(value, tag, isDeep);\n            }\n          }\n          stack || (stack = new Stack());\n          var stacked = stack.get(value);\n          if (stacked) {\n            return stacked;\n          }\n          stack.set(value, result2);\n          if (isSet(value)) {\n            value.forEach(function(subValue) {\n              result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n            });\n          } else if (isMap(value)) {\n            value.forEach(function(subValue, key2) {\n              result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n            });\n          }\n          var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;\n          var props = isArr ? undefined2 : keysFunc(value);\n          arrayEach(props || value, function(subValue, key2) {\n            if (props) {\n              key2 = subValue;\n              subValue = value[key2];\n            }\n            assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n          });\n          return result2;\n        }\n        function baseConforms(source) {\n          var props = keys(source);\n          return function(object) {\n            return baseConformsTo(object, source, props);\n          };\n        }\n        function baseConformsTo(object, source, props) {\n          var length = props.length;\n          if (object == null) {\n            return !length;\n          }\n          object = Object2(object);\n          while (length--) {\n            var key = props[length], predicate = source[key], value = object[key];\n            if (value === undefined2 && !(key in object) || !predicate(value)) {\n              return false;\n            }\n          }\n          return true;\n        }\n        function baseDelay(func, wait, args) {\n          if (typeof func != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          return setTimeout(function() {\n            func.apply(undefined2, args);\n          }, wait);\n        }\n        function baseDifference(array, values2, iteratee2, comparator) {\n          var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length;\n          if (!length) {\n            return result2;\n          }\n          if (iteratee2) {\n            values2 = arrayMap(values2, baseUnary(iteratee2));\n          }\n          if (comparator) {\n            includes2 = arrayIncludesWith;\n            isCommon = false;\n          } else if (values2.length >= LARGE_ARRAY_SIZE) {\n            includes2 = cacheHas;\n            isCommon = false;\n            values2 = new SetCache(values2);\n          }\n          outer:\n            while (++index < length) {\n              var value = array[index], computed = iteratee2 == null ? value : iteratee2(value);\n              value = comparator || value !== 0 ? value : 0;\n              if (isCommon && computed === computed) {\n                var valuesIndex = valuesLength;\n                while (valuesIndex--) {\n                  if (values2[valuesIndex] === computed) {\n                    continue outer;\n                  }\n                }\n                result2.push(value);\n              } else if (!includes2(values2, computed, comparator)) {\n                result2.push(value);\n              }\n            }\n          return result2;\n        }\n        var baseEach = createBaseEach(baseForOwn);\n        var baseEachRight = createBaseEach(baseForOwnRight, true);\n        function baseEvery(collection, predicate) {\n          var result2 = true;\n          baseEach(collection, function(value, index, collection2) {\n            result2 = !!predicate(value, index, collection2);\n            return result2;\n          });\n          return result2;\n        }\n        function baseExtremum(array, iteratee2, comparator) {\n          var index = -1, length = array.length;\n          while (++index < length) {\n            var value = array[index], current = iteratee2(value);\n            if (current != null && (computed === undefined2 ? current === current && !isSymbol(current) : comparator(current, computed))) {\n              var computed = current, result2 = value;\n            }\n          }\n          return result2;\n        }\n        function baseFill(array, value, start, end) {\n          var length = array.length;\n          start = toInteger(start);\n          if (start < 0) {\n            start = -start > length ? 0 : length + start;\n          }\n          end = end === undefined2 || end > length ? length : toInteger(end);\n          if (end < 0) {\n            end += length;\n          }\n          end = start > end ? 0 : toLength(end);\n          while (start < end) {\n            array[start++] = value;\n          }\n          return array;\n        }\n        function baseFilter(collection, predicate) {\n          var result2 = [];\n          baseEach(collection, function(value, index, collection2) {\n            if (predicate(value, index, collection2)) {\n              result2.push(value);\n            }\n          });\n          return result2;\n        }\n        function baseFlatten(array, depth, predicate, isStrict, result2) {\n          var index = -1, length = array.length;\n          predicate || (predicate = isFlattenable);\n          result2 || (result2 = []);\n          while (++index < length) {\n            var value = array[index];\n            if (depth > 0 && predicate(value)) {\n              if (depth > 1) {\n                baseFlatten(value, depth - 1, predicate, isStrict, result2);\n              } else {\n                arrayPush(result2, value);\n              }\n            } else if (!isStrict) {\n              result2[result2.length] = value;\n            }\n          }\n          return result2;\n        }\n        var baseFor = createBaseFor();\n        var baseForRight = createBaseFor(true);\n        function baseForOwn(object, iteratee2) {\n          return object && baseFor(object, iteratee2, keys);\n        }\n        function baseForOwnRight(object, iteratee2) {\n          return object && baseForRight(object, iteratee2, keys);\n        }\n        function baseFunctions(object, props) {\n          return arrayFilter(props, function(key) {\n            return isFunction(object[key]);\n          });\n        }\n        function baseGet(object, path) {\n          path = castPath(path, object);\n          var index = 0, length = path.length;\n          while (object != null && index < length) {\n            object = object[toKey(path[index++])];\n          }\n          return index && index == length ? object : undefined2;\n        }\n        function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n          var result2 = keysFunc(object);\n          return isArray(object) ? result2 : arrayPush(result2, symbolsFunc(object));\n        }\n        function baseGetTag(value) {\n          if (value == null) {\n            return value === undefined2 ? undefinedTag : nullTag;\n          }\n          return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value);\n        }\n        function baseGt(value, other) {\n          return value > other;\n        }\n        function baseHas(object, key) {\n          return object != null && hasOwnProperty.call(object, key);\n        }\n        function baseHasIn(object, key) {\n          return object != null && key in Object2(object);\n        }\n        function baseInRange(number, start, end) {\n          return number >= nativeMin(start, end) && number < nativeMax(start, end);\n        }\n        function baseIntersection(arrays, iteratee2, comparator) {\n          var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = [];\n          while (othIndex--) {\n            var array = arrays[othIndex];\n            if (othIndex && iteratee2) {\n              array = arrayMap(array, baseUnary(iteratee2));\n            }\n            maxLength = nativeMin(array.length, maxLength);\n            caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2;\n          }\n          array = arrays[0];\n          var index = -1, seen = caches[0];\n          outer:\n            while (++index < length && result2.length < maxLength) {\n              var value = array[index], computed = iteratee2 ? iteratee2(value) : value;\n              value = comparator || value !== 0 ? value : 0;\n              if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) {\n                othIndex = othLength;\n                while (--othIndex) {\n                  var cache = caches[othIndex];\n                  if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) {\n                    continue outer;\n                  }\n                }\n                if (seen) {\n                  seen.push(computed);\n                }\n                result2.push(value);\n              }\n            }\n          return result2;\n        }\n        function baseInverter(object, setter, iteratee2, accumulator) {\n          baseForOwn(object, function(value, key, object2) {\n            setter(accumulator, iteratee2(value), key, object2);\n          });\n          return accumulator;\n        }\n        function baseInvoke(object, path, args) {\n          path = castPath(path, object);\n          object = parent(object, path);\n          var func = object == null ? object : object[toKey(last(path))];\n          return func == null ? undefined2 : apply(func, object, args);\n        }\n        function baseIsArguments(value) {\n          return isObjectLike(value) && baseGetTag(value) == argsTag;\n        }\n        function baseIsArrayBuffer(value) {\n          return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n        }\n        function baseIsDate(value) {\n          return isObjectLike(value) && baseGetTag(value) == dateTag;\n        }\n        function baseIsEqual(value, other, bitmask, customizer, stack) {\n          if (value === other) {\n            return true;\n          }\n          if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n            return value !== value && other !== other;\n          }\n          return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n        }\n        function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n          var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);\n          objTag = objTag == argsTag ? objectTag : objTag;\n          othTag = othTag == argsTag ? objectTag : othTag;\n          var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;\n          if (isSameTag && isBuffer(object)) {\n            if (!isBuffer(other)) {\n              return false;\n            }\n            objIsArr = true;\n            objIsObj = false;\n          }\n          if (isSameTag && !objIsObj) {\n            stack || (stack = new Stack());\n            return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n          }\n          if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n            var objIsWrapped = objIsObj && hasOwnProperty.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty.call(other, \"__wrapped__\");\n            if (objIsWrapped || othIsWrapped) {\n              var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n              stack || (stack = new Stack());\n              return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n            }\n          }\n          if (!isSameTag) {\n            return false;\n          }\n          stack || (stack = new Stack());\n          return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n        }\n        function baseIsMap(value) {\n          return isObjectLike(value) && getTag(value) == mapTag;\n        }\n        function baseIsMatch(object, source, matchData, customizer) {\n          var index = matchData.length, length = index, noCustomizer = !customizer;\n          if (object == null) {\n            return !length;\n          }\n          object = Object2(object);\n          while (index--) {\n            var data = matchData[index];\n            if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n              return false;\n            }\n          }\n          while (++index < length) {\n            data = matchData[index];\n            var key = data[0], objValue = object[key], srcValue = data[1];\n            if (noCustomizer && data[2]) {\n              if (objValue === undefined2 && !(key in object)) {\n                return false;\n              }\n            } else {\n              var stack = new Stack();\n              if (customizer) {\n                var result2 = customizer(objValue, srcValue, key, object, source, stack);\n              }\n              if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) {\n                return false;\n              }\n            }\n          }\n          return true;\n        }\n        function baseIsNative(value) {\n          if (!isObject(value) || isMasked(value)) {\n            return false;\n          }\n          var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n          return pattern.test(toSource(value));\n        }\n        function baseIsRegExp(value) {\n          return isObjectLike(value) && baseGetTag(value) == regexpTag;\n        }\n        function baseIsSet(value) {\n          return isObjectLike(value) && getTag(value) == setTag;\n        }\n        function baseIsTypedArray(value) {\n          return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n        }\n        function baseIteratee(value) {\n          if (typeof value == \"function\") {\n            return value;\n          }\n          if (value == null) {\n            return identity;\n          }\n          if (typeof value == \"object\") {\n            return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n          }\n          return property(value);\n        }\n        function baseKeys(object) {\n          if (!isPrototype(object)) {\n            return nativeKeys(object);\n          }\n          var result2 = [];\n          for (var key in Object2(object)) {\n            if (hasOwnProperty.call(object, key) && key != \"constructor\") {\n              result2.push(key);\n            }\n          }\n          return result2;\n        }\n        function baseKeysIn(object) {\n          if (!isObject(object)) {\n            return nativeKeysIn(object);\n          }\n          var isProto = isPrototype(object), result2 = [];\n          for (var key in object) {\n            if (!(key == \"constructor\" && (isProto || !hasOwnProperty.call(object, key)))) {\n              result2.push(key);\n            }\n          }\n          return result2;\n        }\n        function baseLt(value, other) {\n          return value < other;\n        }\n        function baseMap(collection, iteratee2) {\n          var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : [];\n          baseEach(collection, function(value, key, collection2) {\n            result2[++index] = iteratee2(value, key, collection2);\n          });\n          return result2;\n        }\n        function baseMatches(source) {\n          var matchData = getMatchData(source);\n          if (matchData.length == 1 && matchData[0][2]) {\n            return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n          }\n          return function(object) {\n            return object === source || baseIsMatch(object, source, matchData);\n          };\n        }\n        function baseMatchesProperty(path, srcValue) {\n          if (isKey(path) && isStrictComparable(srcValue)) {\n            return matchesStrictComparable(toKey(path), srcValue);\n          }\n          return function(object) {\n            var objValue = get(object, path);\n            return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n          };\n        }\n        function baseMerge(object, source, srcIndex, customizer, stack) {\n          if (object === source) {\n            return;\n          }\n          baseFor(source, function(srcValue, key) {\n            stack || (stack = new Stack());\n            if (isObject(srcValue)) {\n              baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n            } else {\n              var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + \"\", object, source, stack) : undefined2;\n              if (newValue === undefined2) {\n                newValue = srcValue;\n              }\n              assignMergeValue(object, key, newValue);\n            }\n          }, keysIn);\n        }\n        function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n          var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);\n          if (stacked) {\n            assignMergeValue(object, key, stacked);\n            return;\n          }\n          var newValue = customizer ? customizer(objValue, srcValue, key + \"\", object, source, stack) : undefined2;\n          var isCommon = newValue === undefined2;\n          if (isCommon) {\n            var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n            newValue = srcValue;\n            if (isArr || isBuff || isTyped) {\n              if (isArray(objValue)) {\n                newValue = objValue;\n              } else if (isArrayLikeObject(objValue)) {\n                newValue = copyArray(objValue);\n              } else if (isBuff) {\n                isCommon = false;\n                newValue = cloneBuffer(srcValue, true);\n              } else if (isTyped) {\n                isCommon = false;\n                newValue = cloneTypedArray(srcValue, true);\n              } else {\n                newValue = [];\n              }\n            } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n              newValue = objValue;\n              if (isArguments(objValue)) {\n                newValue = toPlainObject(objValue);\n              } else if (!isObject(objValue) || isFunction(objValue)) {\n                newValue = initCloneObject(srcValue);\n              }\n            } else {\n              isCommon = false;\n            }\n          }\n          if (isCommon) {\n            stack.set(srcValue, newValue);\n            mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n            stack[\"delete\"](srcValue);\n          }\n          assignMergeValue(object, key, newValue);\n        }\n        function baseNth(array, n) {\n          var length = array.length;\n          if (!length) {\n            return;\n          }\n          n += n < 0 ? length : 0;\n          return isIndex(n, length) ? array[n] : undefined2;\n        }\n        function baseOrderBy(collection, iteratees, orders) {\n          if (iteratees.length) {\n            iteratees = arrayMap(iteratees, function(iteratee2) {\n              if (isArray(iteratee2)) {\n                return function(value) {\n                  return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2);\n                };\n              }\n              return iteratee2;\n            });\n          } else {\n            iteratees = [identity];\n          }\n          var index = -1;\n          iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n          var result2 = baseMap(collection, function(value, key, collection2) {\n            var criteria = arrayMap(iteratees, function(iteratee2) {\n              return iteratee2(value);\n            });\n            return { \"criteria\": criteria, \"index\": ++index, \"value\": value };\n          });\n          return baseSortBy(result2, function(object, other) {\n            return compareMultiple(object, other, orders);\n          });\n        }\n        function basePick(object, paths) {\n          return basePickBy(object, paths, function(value, path) {\n            return hasIn(object, path);\n          });\n        }\n        function basePickBy(object, paths, predicate) {\n          var index = -1, length = paths.length, result2 = {};\n          while (++index < length) {\n            var path = paths[index], value = baseGet(object, path);\n            if (predicate(value, path)) {\n              baseSet(result2, castPath(path, object), value);\n            }\n          }\n          return result2;\n        }\n        function basePropertyDeep(path) {\n          return function(object) {\n            return baseGet(object, path);\n          };\n        }\n        function basePullAll(array, values2, iteratee2, comparator) {\n          var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array;\n          if (array === values2) {\n            values2 = copyArray(values2);\n          }\n          if (iteratee2) {\n            seen = arrayMap(array, baseUnary(iteratee2));\n          }\n          while (++index < length) {\n            var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value;\n            while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) {\n              if (seen !== array) {\n                splice.call(seen, fromIndex, 1);\n              }\n              splice.call(array, fromIndex, 1);\n            }\n          }\n          return array;\n        }\n        function basePullAt(array, indexes) {\n          var length = array ? indexes.length : 0, lastIndex = length - 1;\n          while (length--) {\n            var index = indexes[length];\n            if (length == lastIndex || index !== previous) {\n              var previous = index;\n              if (isIndex(index)) {\n                splice.call(array, index, 1);\n              } else {\n                baseUnset(array, index);\n              }\n            }\n          }\n          return array;\n        }\n        function baseRandom(lower, upper) {\n          return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n        }\n        function baseRange(start, end, step, fromRight) {\n          var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array2(length);\n          while (length--) {\n            result2[fromRight ? length : ++index] = start;\n            start += step;\n          }\n          return result2;\n        }\n        function baseRepeat(string, n) {\n          var result2 = \"\";\n          if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n            return result2;\n          }\n          do {\n            if (n % 2) {\n              result2 += string;\n            }\n            n = nativeFloor(n / 2);\n            if (n) {\n              string += string;\n            }\n          } while (n);\n          return result2;\n        }\n        function baseRest(func, start) {\n          return setToString(overRest(func, start, identity), func + \"\");\n        }\n        function baseSample(collection) {\n          return arraySample(values(collection));\n        }\n        function baseSampleSize(collection, n) {\n          var array = values(collection);\n          return shuffleSelf(array, baseClamp(n, 0, array.length));\n        }\n        function baseSet(object, path, value, customizer) {\n          if (!isObject(object)) {\n            return object;\n          }\n          path = castPath(path, object);\n          var index = -1, length = path.length, lastIndex = length - 1, nested = object;\n          while (nested != null && ++index < length) {\n            var key = toKey(path[index]), newValue = value;\n            if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") {\n              return object;\n            }\n            if (index != lastIndex) {\n              var objValue = nested[key];\n              newValue = customizer ? customizer(objValue, key, nested) : undefined2;\n              if (newValue === undefined2) {\n                newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};\n              }\n            }\n            assignValue(nested, key, newValue);\n            nested = nested[key];\n          }\n          return object;\n        }\n        var baseSetData = !metaMap ? identity : function(func, data) {\n          metaMap.set(func, data);\n          return func;\n        };\n        var baseSetToString = !defineProperty ? identity : function(func, string) {\n          return defineProperty(func, \"toString\", {\n            \"configurable\": true,\n            \"enumerable\": false,\n            \"value\": constant(string),\n            \"writable\": true\n          });\n        };\n        function baseShuffle(collection) {\n          return shuffleSelf(values(collection));\n        }\n        function baseSlice(array, start, end) {\n          var index = -1, length = array.length;\n          if (start < 0) {\n            start = -start > length ? 0 : length + start;\n          }\n          end = end > length ? length : end;\n          if (end < 0) {\n            end += length;\n          }\n          length = start > end ? 0 : end - start >>> 0;\n          start >>>= 0;\n          var result2 = Array2(length);\n          while (++index < length) {\n            result2[index] = array[index + start];\n          }\n          return result2;\n        }\n        function baseSome(collection, predicate) {\n          var result2;\n          baseEach(collection, function(value, index, collection2) {\n            result2 = predicate(value, index, collection2);\n            return !result2;\n          });\n          return !!result2;\n        }\n        function baseSortedIndex(array, value, retHighest) {\n          var low = 0, high = array == null ? low : array.length;\n          if (typeof value == \"number\" && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n            while (low < high) {\n              var mid = low + high >>> 1, computed = array[mid];\n              if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) {\n                low = mid + 1;\n              } else {\n                high = mid;\n              }\n            }\n            return high;\n          }\n          return baseSortedIndexBy(array, value, identity, retHighest);\n        }\n        function baseSortedIndexBy(array, value, iteratee2, retHighest) {\n          var low = 0, high = array == null ? 0 : array.length;\n          if (high === 0) {\n            return 0;\n          }\n          value = iteratee2(value);\n          var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined2;\n          while (low < high) {\n            var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed);\n            if (valIsNaN) {\n              var setLow = retHighest || othIsReflexive;\n            } else if (valIsUndefined) {\n              setLow = othIsReflexive && (retHighest || othIsDefined);\n            } else if (valIsNull) {\n              setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n            } else if (valIsSymbol) {\n              setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n            } else if (othIsNull || othIsSymbol) {\n              setLow = false;\n            } else {\n              setLow = retHighest ? computed <= value : computed < value;\n            }\n            if (setLow) {\n              low = mid + 1;\n            } else {\n              high = mid;\n            }\n          }\n          return nativeMin(high, MAX_ARRAY_INDEX);\n        }\n        function baseSortedUniq(array, iteratee2) {\n          var index = -1, length = array.length, resIndex = 0, result2 = [];\n          while (++index < length) {\n            var value = array[index], computed = iteratee2 ? iteratee2(value) : value;\n            if (!index || !eq(computed, seen)) {\n              var seen = computed;\n              result2[resIndex++] = value === 0 ? 0 : value;\n            }\n          }\n          return result2;\n        }\n        function baseToNumber(value) {\n          if (typeof value == \"number\") {\n            return value;\n          }\n          if (isSymbol(value)) {\n            return NAN;\n          }\n          return +value;\n        }\n        function baseToString(value) {\n          if (typeof value == \"string\") {\n            return value;\n          }\n          if (isArray(value)) {\n            return arrayMap(value, baseToString) + \"\";\n          }\n          if (isSymbol(value)) {\n            return symbolToString ? symbolToString.call(value) : \"\";\n          }\n          var result2 = value + \"\";\n          return result2 == \"0\" && 1 / value == -INFINITY ? \"-0\" : result2;\n        }\n        function baseUniq(array, iteratee2, comparator) {\n          var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2;\n          if (comparator) {\n            isCommon = false;\n            includes2 = arrayIncludesWith;\n          } else if (length >= LARGE_ARRAY_SIZE) {\n            var set2 = iteratee2 ? null : createSet(array);\n            if (set2) {\n              return setToArray(set2);\n            }\n            isCommon = false;\n            includes2 = cacheHas;\n            seen = new SetCache();\n          } else {\n            seen = iteratee2 ? [] : result2;\n          }\n          outer:\n            while (++index < length) {\n              var value = array[index], computed = iteratee2 ? iteratee2(value) : value;\n              value = comparator || value !== 0 ? value : 0;\n              if (isCommon && computed === computed) {\n                var seenIndex = seen.length;\n                while (seenIndex--) {\n                  if (seen[seenIndex] === computed) {\n                    continue outer;\n                  }\n                }\n                if (iteratee2) {\n                  seen.push(computed);\n                }\n                result2.push(value);\n              } else if (!includes2(seen, computed, comparator)) {\n                if (seen !== result2) {\n                  seen.push(computed);\n                }\n                result2.push(value);\n              }\n            }\n          return result2;\n        }\n        function baseUnset(object, path) {\n          path = castPath(path, object);\n          object = parent(object, path);\n          return object == null || delete object[toKey(last(path))];\n        }\n        function baseUpdate(object, path, updater, customizer) {\n          return baseSet(object, path, updater(baseGet(object, path)), customizer);\n        }\n        function baseWhile(array, predicate, isDrop, fromRight) {\n          var length = array.length, index = fromRight ? length : -1;\n          while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {\n          }\n          return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index);\n        }\n        function baseWrapperValue(value, actions) {\n          var result2 = value;\n          if (result2 instanceof LazyWrapper) {\n            result2 = result2.value();\n          }\n          return arrayReduce(actions, function(result3, action) {\n            return action.func.apply(action.thisArg, arrayPush([result3], action.args));\n          }, result2);\n        }\n        function baseXor(arrays, iteratee2, comparator) {\n          var length = arrays.length;\n          if (length < 2) {\n            return length ? baseUniq(arrays[0]) : [];\n          }\n          var index = -1, result2 = Array2(length);\n          while (++index < length) {\n            var array = arrays[index], othIndex = -1;\n            while (++othIndex < length) {\n              if (othIndex != index) {\n                result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator);\n              }\n            }\n          }\n          return baseUniq(baseFlatten(result2, 1), iteratee2, comparator);\n        }\n        function baseZipObject(props, values2, assignFunc) {\n          var index = -1, length = props.length, valsLength = values2.length, result2 = {};\n          while (++index < length) {\n            var value = index < valsLength ? values2[index] : undefined2;\n            assignFunc(result2, props[index], value);\n          }\n          return result2;\n        }\n        function castArrayLikeObject(value) {\n          return isArrayLikeObject(value) ? value : [];\n        }\n        function castFunction(value) {\n          return typeof value == \"function\" ? value : identity;\n        }\n        function castPath(value, object) {\n          if (isArray(value)) {\n            return value;\n          }\n          return isKey(value, object) ? [value] : stringToPath(toString(value));\n        }\n        var castRest = baseRest;\n        function castSlice(array, start, end) {\n          var length = array.length;\n          end = end === undefined2 ? length : end;\n          return !start && end >= length ? array : baseSlice(array, start, end);\n        }\n        var clearTimeout = ctxClearTimeout || function(id) {\n          return root.clearTimeout(id);\n        };\n        function cloneBuffer(buffer, isDeep) {\n          if (isDeep) {\n            return buffer.slice();\n          }\n          var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n          buffer.copy(result2);\n          return result2;\n        }\n        function cloneArrayBuffer(arrayBuffer) {\n          var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength);\n          new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer));\n          return result2;\n        }\n        function cloneDataView(dataView, isDeep) {\n          var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n          return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n        }\n        function cloneRegExp(regexp) {\n          var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n          result2.lastIndex = regexp.lastIndex;\n          return result2;\n        }\n        function cloneSymbol(symbol) {\n          return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {};\n        }\n        function cloneTypedArray(typedArray, isDeep) {\n          var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n          return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n        }\n        function compareAscending(value, other) {\n          if (value !== other) {\n            var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value);\n            var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other);\n            if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {\n              return 1;\n            }\n            if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {\n              return -1;\n            }\n          }\n          return 0;\n        }\n        function compareMultiple(object, other, orders) {\n          var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length;\n          while (++index < length) {\n            var result2 = compareAscending(objCriteria[index], othCriteria[index]);\n            if (result2) {\n              if (index >= ordersLength) {\n                return result2;\n              }\n              var order = orders[index];\n              return result2 * (order == \"desc\" ? -1 : 1);\n            }\n          }\n          return object.index - other.index;\n        }\n        function composeArgs(args, partials, holders, isCurried) {\n          var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried;\n          while (++leftIndex < leftLength) {\n            result2[leftIndex] = partials[leftIndex];\n          }\n          while (++argsIndex < holdersLength) {\n            if (isUncurried || argsIndex < argsLength) {\n              result2[holders[argsIndex]] = args[argsIndex];\n            }\n          }\n          while (rangeLength--) {\n            result2[leftIndex++] = args[argsIndex++];\n          }\n          return result2;\n        }\n        function composeArgsRight(args, partials, holders, isCurried) {\n          var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried;\n          while (++argsIndex < rangeLength) {\n            result2[argsIndex] = args[argsIndex];\n          }\n          var offset = argsIndex;\n          while (++rightIndex < rightLength) {\n            result2[offset + rightIndex] = partials[rightIndex];\n          }\n          while (++holdersIndex < holdersLength) {\n            if (isUncurried || argsIndex < argsLength) {\n              result2[offset + holders[holdersIndex]] = args[argsIndex++];\n            }\n          }\n          return result2;\n        }\n        function copyArray(source, array) {\n          var index = -1, length = source.length;\n          array || (array = Array2(length));\n          while (++index < length) {\n            array[index] = source[index];\n          }\n          return array;\n        }\n        function copyObject(source, props, object, customizer) {\n          var isNew = !object;\n          object || (object = {});\n          var index = -1, length = props.length;\n          while (++index < length) {\n            var key = props[index];\n            var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2;\n            if (newValue === undefined2) {\n              newValue = source[key];\n            }\n            if (isNew) {\n              baseAssignValue(object, key, newValue);\n            } else {\n              assignValue(object, key, newValue);\n            }\n          }\n          return object;\n        }\n        function copySymbols(source, object) {\n          return copyObject(source, getSymbols(source), object);\n        }\n        function copySymbolsIn(source, object) {\n          return copyObject(source, getSymbolsIn(source), object);\n        }\n        function createAggregator(setter, initializer) {\n          return function(collection, iteratee2) {\n            var func = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};\n            return func(collection, setter, getIteratee(iteratee2, 2), accumulator);\n          };\n        }\n        function createAssigner(assigner) {\n          return baseRest(function(object, sources) {\n            var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2;\n            customizer = assigner.length > 3 && typeof customizer == \"function\" ? (length--, customizer) : undefined2;\n            if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n              customizer = length < 3 ? undefined2 : customizer;\n              length = 1;\n            }\n            object = Object2(object);\n            while (++index < length) {\n              var source = sources[index];\n              if (source) {\n                assigner(object, source, index, customizer);\n              }\n            }\n            return object;\n          });\n        }\n        function createBaseEach(eachFunc, fromRight) {\n          return function(collection, iteratee2) {\n            if (collection == null) {\n              return collection;\n            }\n            if (!isArrayLike(collection)) {\n              return eachFunc(collection, iteratee2);\n            }\n            var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection);\n            while (fromRight ? index-- : ++index < length) {\n              if (iteratee2(iterable[index], index, iterable) === false) {\n                break;\n              }\n            }\n            return collection;\n          };\n        }\n        function createBaseFor(fromRight) {\n          return function(object, iteratee2, keysFunc) {\n            var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length;\n            while (length--) {\n              var key = props[fromRight ? length : ++index];\n              if (iteratee2(iterable[key], key, iterable) === false) {\n                break;\n              }\n            }\n            return object;\n          };\n        }\n        function createBind(func, bitmask, thisArg) {\n          var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);\n          function wrapper() {\n            var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n            return fn.apply(isBind ? thisArg : this, arguments);\n          }\n          return wrapper;\n        }\n        function createCaseFirst(methodName) {\n          return function(string) {\n            string = toString(string);\n            var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2;\n            var chr = strSymbols ? strSymbols[0] : string.charAt(0);\n            var trailing = strSymbols ? castSlice(strSymbols, 1).join(\"\") : string.slice(1);\n            return chr[methodName]() + trailing;\n          };\n        }\n        function createCompounder(callback) {\n          return function(string) {\n            return arrayReduce(words(deburr(string).replace(reApos, \"\")), callback, \"\");\n          };\n        }\n        function createCtor(Ctor) {\n          return function() {\n            var args = arguments;\n            switch (args.length) {\n              case 0:\n                return new Ctor();\n              case 1:\n                return new Ctor(args[0]);\n              case 2:\n                return new Ctor(args[0], args[1]);\n              case 3:\n                return new Ctor(args[0], args[1], args[2]);\n              case 4:\n                return new Ctor(args[0], args[1], args[2], args[3]);\n              case 5:\n                return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n              case 6:\n                return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n              case 7:\n                return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n            }\n            var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args);\n            return isObject(result2) ? result2 : thisBinding;\n          };\n        }\n        function createCurry(func, bitmask, arity) {\n          var Ctor = createCtor(func);\n          function wrapper() {\n            var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper);\n            while (index--) {\n              args[index] = arguments[index];\n            }\n            var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);\n            length -= holders.length;\n            if (length < arity) {\n              return createRecurry(\n                func,\n                bitmask,\n                createHybrid,\n                wrapper.placeholder,\n                undefined2,\n                args,\n                holders,\n                undefined2,\n                undefined2,\n                arity - length\n              );\n            }\n            var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n            return apply(fn, this, args);\n          }\n          return wrapper;\n        }\n        function createFind(findIndexFunc) {\n          return function(collection, predicate, fromIndex) {\n            var iterable = Object2(collection);\n            if (!isArrayLike(collection)) {\n              var iteratee2 = getIteratee(predicate, 3);\n              collection = keys(collection);\n              predicate = function(key) {\n                return iteratee2(iterable[key], key, iterable);\n              };\n            }\n            var index = findIndexFunc(collection, predicate, fromIndex);\n            return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined2;\n          };\n        }\n        function createFlow(fromRight) {\n          return flatRest(function(funcs) {\n            var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru;\n            if (fromRight) {\n              funcs.reverse();\n            }\n            while (index--) {\n              var func = funcs[index];\n              if (typeof func != \"function\") {\n                throw new TypeError2(FUNC_ERROR_TEXT);\n              }\n              if (prereq && !wrapper && getFuncName(func) == \"wrapper\") {\n                var wrapper = new LodashWrapper([], true);\n              }\n            }\n            index = wrapper ? index : length;\n            while (++index < length) {\n              func = funcs[index];\n              var funcName = getFuncName(func), data = funcName == \"wrapper\" ? getData(func) : undefined2;\n              if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {\n                wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n              } else {\n                wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);\n              }\n            }\n            return function() {\n              var args = arguments, value = args[0];\n              if (wrapper && args.length == 1 && isArray(value)) {\n                return wrapper.plant(value).value();\n              }\n              var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value;\n              while (++index2 < length) {\n                result2 = funcs[index2].call(this, result2);\n              }\n              return result2;\n            };\n          });\n        }\n        function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) {\n          var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func);\n          function wrapper() {\n            var length = arguments.length, args = Array2(length), index = length;\n            while (index--) {\n              args[index] = arguments[index];\n            }\n            if (isCurried) {\n              var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder);\n            }\n            if (partials) {\n              args = composeArgs(args, partials, holders, isCurried);\n            }\n            if (partialsRight) {\n              args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n            }\n            length -= holdersCount;\n            if (isCurried && length < arity) {\n              var newHolders = replaceHolders(args, placeholder);\n              return createRecurry(\n                func,\n                bitmask,\n                createHybrid,\n                wrapper.placeholder,\n                thisArg,\n                args,\n                newHolders,\n                argPos,\n                ary2,\n                arity - length\n              );\n            }\n            var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func;\n            length = args.length;\n            if (argPos) {\n              args = reorder(args, argPos);\n            } else if (isFlip && length > 1) {\n              args.reverse();\n            }\n            if (isAry && ary2 < length) {\n              args.length = ary2;\n            }\n            if (this && this !== root && this instanceof wrapper) {\n              fn = Ctor || createCtor(fn);\n            }\n            return fn.apply(thisBinding, args);\n          }\n          return wrapper;\n        }\n        function createInverter(setter, toIteratee) {\n          return function(object, iteratee2) {\n            return baseInverter(object, setter, toIteratee(iteratee2), {});\n          };\n        }\n        function createMathOperation(operator, defaultValue) {\n          return function(value, other) {\n            var result2;\n            if (value === undefined2 && other === undefined2) {\n              return defaultValue;\n            }\n            if (value !== undefined2) {\n              result2 = value;\n            }\n            if (other !== undefined2) {\n              if (result2 === undefined2) {\n                return other;\n              }\n              if (typeof value == \"string\" || typeof other == \"string\") {\n                value = baseToString(value);\n                other = baseToString(other);\n              } else {\n                value = baseToNumber(value);\n                other = baseToNumber(other);\n              }\n              result2 = operator(value, other);\n            }\n            return result2;\n          };\n        }\n        function createOver(arrayFunc) {\n          return flatRest(function(iteratees) {\n            iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n            return baseRest(function(args) {\n              var thisArg = this;\n              return arrayFunc(iteratees, function(iteratee2) {\n                return apply(iteratee2, thisArg, args);\n              });\n            });\n          });\n        }\n        function createPadding(length, chars) {\n          chars = chars === undefined2 ? \" \" : baseToString(chars);\n          var charsLength = chars.length;\n          if (charsLength < 2) {\n            return charsLength ? baseRepeat(chars, length) : chars;\n          }\n          var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n          return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join(\"\") : result2.slice(0, length);\n        }\n        function createPartial(func, bitmask, thisArg, partials) {\n          var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func);\n          function wrapper() {\n            var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n            while (++leftIndex < leftLength) {\n              args[leftIndex] = partials[leftIndex];\n            }\n            while (argsLength--) {\n              args[leftIndex++] = arguments[++argsIndex];\n            }\n            return apply(fn, isBind ? thisArg : this, args);\n          }\n          return wrapper;\n        }\n        function createRange(fromRight) {\n          return function(start, end, step) {\n            if (step && typeof step != \"number\" && isIterateeCall(start, end, step)) {\n              end = step = undefined2;\n            }\n            start = toFinite(start);\n            if (end === undefined2) {\n              end = start;\n              start = 0;\n            } else {\n              end = toFinite(end);\n            }\n            step = step === undefined2 ? start < end ? 1 : -1 : toFinite(step);\n            return baseRange(start, end, step, fromRight);\n          };\n        }\n        function createRelationalOperation(operator) {\n          return function(value, other) {\n            if (!(typeof value == \"string\" && typeof other == \"string\")) {\n              value = toNumber(value);\n              other = toNumber(other);\n            }\n            return operator(value, other);\n          };\n        }\n        function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) {\n          var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials;\n          bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;\n          bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n          if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n            bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n          }\n          var newData = [\n            func,\n            bitmask,\n            thisArg,\n            newPartials,\n            newHolders,\n            newPartialsRight,\n            newHoldersRight,\n            argPos,\n            ary2,\n            arity\n          ];\n          var result2 = wrapFunc.apply(undefined2, newData);\n          if (isLaziable(func)) {\n            setData(result2, newData);\n          }\n          result2.placeholder = placeholder;\n          return setWrapToString(result2, func, bitmask);\n        }\n        function createRound(methodName) {\n          var func = Math[methodName];\n          return function(number, precision) {\n            number = toNumber(number);\n            precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n            if (precision && nativeIsFinite(number)) {\n              var pair = (toString(number) + \"e\").split(\"e\"), value = func(pair[0] + \"e\" + (+pair[1] + precision));\n              pair = (toString(value) + \"e\").split(\"e\");\n              return +(pair[0] + \"e\" + (+pair[1] - precision));\n            }\n            return func(number);\n          };\n        }\n        var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values2) {\n          return new Set2(values2);\n        };\n        function createToPairs(keysFunc) {\n          return function(object) {\n            var tag = getTag(object);\n            if (tag == mapTag) {\n              return mapToArray(object);\n            }\n            if (tag == setTag) {\n              return setToPairs(object);\n            }\n            return baseToPairs(object, keysFunc(object));\n          };\n        }\n        function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) {\n          var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n          if (!isBindKey && typeof func != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          var length = partials ? partials.length : 0;\n          if (!length) {\n            bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n            partials = holders = undefined2;\n          }\n          ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0);\n          arity = arity === undefined2 ? arity : toInteger(arity);\n          length -= holders ? holders.length : 0;\n          if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n            var partialsRight = partials, holdersRight = holders;\n            partials = holders = undefined2;\n          }\n          var data = isBindKey ? undefined2 : getData(func);\n          var newData = [\n            func,\n            bitmask,\n            thisArg,\n            partials,\n            holders,\n            partialsRight,\n            holdersRight,\n            argPos,\n            ary2,\n            arity\n          ];\n          if (data) {\n            mergeData(newData, data);\n          }\n          func = newData[0];\n          bitmask = newData[1];\n          thisArg = newData[2];\n          partials = newData[3];\n          holders = newData[4];\n          arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);\n          if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n            bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n          }\n          if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n            var result2 = createBind(func, bitmask, thisArg);\n          } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n            result2 = createCurry(func, bitmask, arity);\n          } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n            result2 = createPartial(func, bitmask, thisArg, partials);\n          } else {\n            result2 = createHybrid.apply(undefined2, newData);\n          }\n          var setter = data ? baseSetData : setData;\n          return setWrapToString(setter(result2, newData), func, bitmask);\n        }\n        function customDefaultsAssignIn(objValue, srcValue, key, object) {\n          if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) {\n            return srcValue;\n          }\n          return objValue;\n        }\n        function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n          if (isObject(objValue) && isObject(srcValue)) {\n            stack.set(srcValue, objValue);\n            baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack);\n            stack[\"delete\"](srcValue);\n          }\n          return objValue;\n        }\n        function customOmitClone(value) {\n          return isPlainObject(value) ? undefined2 : value;\n        }\n        function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length;\n          if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n            return false;\n          }\n          var arrStacked = stack.get(array);\n          var othStacked = stack.get(other);\n          if (arrStacked && othStacked) {\n            return arrStacked == other && othStacked == array;\n          }\n          var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2;\n          stack.set(array, other);\n          stack.set(other, array);\n          while (++index < arrLength) {\n            var arrValue = array[index], othValue = other[index];\n            if (customizer) {\n              var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n            }\n            if (compared !== undefined2) {\n              if (compared) {\n                continue;\n              }\n              result2 = false;\n              break;\n            }\n            if (seen) {\n              if (!arraySome(other, function(othValue2, othIndex) {\n                if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n                result2 = false;\n                break;\n              }\n            } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              result2 = false;\n              break;\n            }\n          }\n          stack[\"delete\"](array);\n          stack[\"delete\"](other);\n          return result2;\n        }\n        function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n          switch (tag) {\n            case dataViewTag:\n              if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n                return false;\n              }\n              object = object.buffer;\n              other = other.buffer;\n            case arrayBufferTag:\n              if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {\n                return false;\n              }\n              return true;\n            case boolTag:\n            case dateTag:\n            case numberTag:\n              return eq(+object, +other);\n            case errorTag:\n              return object.name == other.name && object.message == other.message;\n            case regexpTag:\n            case stringTag:\n              return object == other + \"\";\n            case mapTag:\n              var convert = mapToArray;\n            case setTag:\n              var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n              convert || (convert = setToArray);\n              if (object.size != other.size && !isPartial) {\n                return false;\n              }\n              var stacked = stack.get(object);\n              if (stacked) {\n                return stacked == other;\n              }\n              bitmask |= COMPARE_UNORDERED_FLAG;\n              stack.set(object, other);\n              var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n              stack[\"delete\"](object);\n              return result2;\n            case symbolTag:\n              if (symbolValueOf) {\n                return symbolValueOf.call(object) == symbolValueOf.call(other);\n              }\n          }\n          return false;\n        }\n        function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;\n          if (objLength != othLength && !isPartial) {\n            return false;\n          }\n          var index = objLength;\n          while (index--) {\n            var key = objProps[index];\n            if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n              return false;\n            }\n          }\n          var objStacked = stack.get(object);\n          var othStacked = stack.get(other);\n          if (objStacked && othStacked) {\n            return objStacked == other && othStacked == object;\n          }\n          var result2 = true;\n          stack.set(object, other);\n          stack.set(other, object);\n          var skipCtor = isPartial;\n          while (++index < objLength) {\n            key = objProps[index];\n            var objValue = object[key], othValue = other[key];\n            if (customizer) {\n              var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n            }\n            if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n              result2 = false;\n              break;\n            }\n            skipCtor || (skipCtor = key == \"constructor\");\n          }\n          if (result2 && !skipCtor) {\n            var objCtor = object.constructor, othCtor = other.constructor;\n            if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n              result2 = false;\n            }\n          }\n          stack[\"delete\"](object);\n          stack[\"delete\"](other);\n          return result2;\n        }\n        function flatRest(func) {\n          return setToString(overRest(func, undefined2, flatten), func + \"\");\n        }\n        function getAllKeys(object) {\n          return baseGetAllKeys(object, keys, getSymbols);\n        }\n        function getAllKeysIn(object) {\n          return baseGetAllKeys(object, keysIn, getSymbolsIn);\n        }\n        var getData = !metaMap ? noop : function(func) {\n          return metaMap.get(func);\n        };\n        function getFuncName(func) {\n          var result2 = func.name + \"\", array = realNames[result2], length = hasOwnProperty.call(realNames, result2) ? array.length : 0;\n          while (length--) {\n            var data = array[length], otherFunc = data.func;\n            if (otherFunc == null || otherFunc == func) {\n              return data.name;\n            }\n          }\n          return result2;\n        }\n        function getHolder(func) {\n          var object = hasOwnProperty.call(lodash, \"placeholder\") ? lodash : func;\n          return object.placeholder;\n        }\n        function getIteratee() {\n          var result2 = lodash.iteratee || iteratee;\n          result2 = result2 === iteratee ? baseIteratee : result2;\n          return arguments.length ? result2(arguments[0], arguments[1]) : result2;\n        }\n        function getMapData(map2, key) {\n          var data = map2.__data__;\n          return isKeyable(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n        }\n        function getMatchData(object) {\n          var result2 = keys(object), length = result2.length;\n          while (length--) {\n            var key = result2[length], value = object[key];\n            result2[length] = [key, value, isStrictComparable(value)];\n          }\n          return result2;\n        }\n        function getNative(object, key) {\n          var value = getValue(object, key);\n          return baseIsNative(value) ? value : undefined2;\n        }\n        function getRawTag(value) {\n          var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n          try {\n            value[symToStringTag] = undefined2;\n            var unmasked = true;\n          } catch (e) {\n          }\n          var result2 = nativeObjectToString.call(value);\n          if (unmasked) {\n            if (isOwn) {\n              value[symToStringTag] = tag;\n            } else {\n              delete value[symToStringTag];\n            }\n          }\n          return result2;\n        }\n        var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n          if (object == null) {\n            return [];\n          }\n          object = Object2(object);\n          return arrayFilter(nativeGetSymbols(object), function(symbol) {\n            return propertyIsEnumerable.call(object, symbol);\n          });\n        };\n        var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n          var result2 = [];\n          while (object) {\n            arrayPush(result2, getSymbols(object));\n            object = getPrototype(object);\n          }\n          return result2;\n        };\n        var getTag = baseGetTag;\n        if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n          getTag = function(value) {\n            var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : \"\";\n            if (ctorString) {\n              switch (ctorString) {\n                case dataViewCtorString:\n                  return dataViewTag;\n                case mapCtorString:\n                  return mapTag;\n                case promiseCtorString:\n                  return promiseTag;\n                case setCtorString:\n                  return setTag;\n                case weakMapCtorString:\n                  return weakMapTag;\n              }\n            }\n            return result2;\n          };\n        }\n        function getView(start, end, transforms) {\n          var index = -1, length = transforms.length;\n          while (++index < length) {\n            var data = transforms[index], size2 = data.size;\n            switch (data.type) {\n              case \"drop\":\n                start += size2;\n                break;\n              case \"dropRight\":\n                end -= size2;\n                break;\n              case \"take\":\n                end = nativeMin(end, start + size2);\n                break;\n              case \"takeRight\":\n                start = nativeMax(start, end - size2);\n                break;\n            }\n          }\n          return { \"start\": start, \"end\": end };\n        }\n        function getWrapDetails(source) {\n          var match = source.match(reWrapDetails);\n          return match ? match[1].split(reSplitDetails) : [];\n        }\n        function hasPath(object, path, hasFunc) {\n          path = castPath(path, object);\n          var index = -1, length = path.length, result2 = false;\n          while (++index < length) {\n            var key = toKey(path[index]);\n            if (!(result2 = object != null && hasFunc(object, key))) {\n              break;\n            }\n            object = object[key];\n          }\n          if (result2 || ++index != length) {\n            return result2;\n          }\n          length = object == null ? 0 : object.length;\n          return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n        }\n        function initCloneArray(array) {\n          var length = array.length, result2 = new array.constructor(length);\n          if (length && typeof array[0] == \"string\" && hasOwnProperty.call(array, \"index\")) {\n            result2.index = array.index;\n            result2.input = array.input;\n          }\n          return result2;\n        }\n        function initCloneObject(object) {\n          return typeof object.constructor == \"function\" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n        }\n        function initCloneByTag(object, tag, isDeep) {\n          var Ctor = object.constructor;\n          switch (tag) {\n            case arrayBufferTag:\n              return cloneArrayBuffer(object);\n            case boolTag:\n            case dateTag:\n              return new Ctor(+object);\n            case dataViewTag:\n              return cloneDataView(object, isDeep);\n            case float32Tag:\n            case float64Tag:\n            case int8Tag:\n            case int16Tag:\n            case int32Tag:\n            case uint8Tag:\n            case uint8ClampedTag:\n            case uint16Tag:\n            case uint32Tag:\n              return cloneTypedArray(object, isDeep);\n            case mapTag:\n              return new Ctor();\n            case numberTag:\n            case stringTag:\n              return new Ctor(object);\n            case regexpTag:\n              return cloneRegExp(object);\n            case setTag:\n              return new Ctor();\n            case symbolTag:\n              return cloneSymbol(object);\n          }\n        }\n        function insertWrapDetails(source, details) {\n          var length = details.length;\n          if (!length) {\n            return source;\n          }\n          var lastIndex = length - 1;\n          details[lastIndex] = (length > 1 ? \"& \" : \"\") + details[lastIndex];\n          details = details.join(length > 2 ? \", \" : \" \");\n          return source.replace(reWrapComment, \"{\\n/* [wrapped with \" + details + \"] */\\n\");\n        }\n        function isFlattenable(value) {\n          return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n        }\n        function isIndex(value, length) {\n          var type = typeof value;\n          length = length == null ? MAX_SAFE_INTEGER : length;\n          return !!length && (type == \"number\" || type != \"symbol\" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n        }\n        function isIterateeCall(value, index, object) {\n          if (!isObject(object)) {\n            return false;\n          }\n          var type = typeof index;\n          if (type == \"number\" ? isArrayLike(object) && isIndex(index, object.length) : type == \"string\" && index in object) {\n            return eq(object[index], value);\n          }\n          return false;\n        }\n        function isKey(value, object) {\n          if (isArray(value)) {\n            return false;\n          }\n          var type = typeof value;\n          if (type == \"number\" || type == \"symbol\" || type == \"boolean\" || value == null || isSymbol(value)) {\n            return true;\n          }\n          return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object);\n        }\n        function isKeyable(value) {\n          var type = typeof value;\n          return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n        }\n        function isLaziable(func) {\n          var funcName = getFuncName(func), other = lodash[funcName];\n          if (typeof other != \"function\" || !(funcName in LazyWrapper.prototype)) {\n            return false;\n          }\n          if (func === other) {\n            return true;\n          }\n          var data = getData(other);\n          return !!data && func === data[0];\n        }\n        function isMasked(func) {\n          return !!maskSrcKey && maskSrcKey in func;\n        }\n        var isMaskable = coreJsData ? isFunction : stubFalse;\n        function isPrototype(value) {\n          var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto;\n          return value === proto;\n        }\n        function isStrictComparable(value) {\n          return value === value && !isObject(value);\n        }\n        function matchesStrictComparable(key, srcValue) {\n          return function(object) {\n            if (object == null) {\n              return false;\n            }\n            return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object));\n          };\n        }\n        function memoizeCapped(func) {\n          var result2 = memoize(func, function(key) {\n            if (cache.size === MAX_MEMOIZE_SIZE) {\n              cache.clear();\n            }\n            return key;\n          });\n          var cache = result2.cache;\n          return result2;\n        }\n        function mergeData(data, source) {\n          var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n          var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;\n          if (!(isCommon || isCombo)) {\n            return data;\n          }\n          if (srcBitmask & WRAP_BIND_FLAG) {\n            data[2] = source[2];\n            newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n          }\n          var value = source[3];\n          if (value) {\n            var partials = data[3];\n            data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n            data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n          }\n          value = source[5];\n          if (value) {\n            partials = data[5];\n            data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n            data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n          }\n          value = source[7];\n          if (value) {\n            data[7] = value;\n          }\n          if (srcBitmask & WRAP_ARY_FLAG) {\n            data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n          }\n          if (data[9] == null) {\n            data[9] = source[9];\n          }\n          data[0] = source[0];\n          data[1] = newBitmask;\n          return data;\n        }\n        function nativeKeysIn(object) {\n          var result2 = [];\n          if (object != null) {\n            for (var key in Object2(object)) {\n              result2.push(key);\n            }\n          }\n          return result2;\n        }\n        function objectToString(value) {\n          return nativeObjectToString.call(value);\n        }\n        function overRest(func, start, transform2) {\n          start = nativeMax(start === undefined2 ? func.length - 1 : start, 0);\n          return function() {\n            var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array2(length);\n            while (++index < length) {\n              array[index] = args[start + index];\n            }\n            index = -1;\n            var otherArgs = Array2(start + 1);\n            while (++index < start) {\n              otherArgs[index] = args[index];\n            }\n            otherArgs[start] = transform2(array);\n            return apply(func, this, otherArgs);\n          };\n        }\n        function parent(object, path) {\n          return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n        }\n        function reorder(array, indexes) {\n          var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array);\n          while (length--) {\n            var index = indexes[length];\n            array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2;\n          }\n          return array;\n        }\n        function safeGet(object, key) {\n          if (key === \"constructor\" && typeof object[key] === \"function\") {\n            return;\n          }\n          if (key == \"__proto__\") {\n            return;\n          }\n          return object[key];\n        }\n        var setData = shortOut(baseSetData);\n        var setTimeout = ctxSetTimeout || function(func, wait) {\n          return root.setTimeout(func, wait);\n        };\n        var setToString = shortOut(baseSetToString);\n        function setWrapToString(wrapper, reference, bitmask) {\n          var source = reference + \"\";\n          return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n        }\n        function shortOut(func) {\n          var count = 0, lastCalled = 0;\n          return function() {\n            var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);\n            lastCalled = stamp;\n            if (remaining > 0) {\n              if (++count >= HOT_COUNT) {\n                return arguments[0];\n              }\n            } else {\n              count = 0;\n            }\n            return func.apply(undefined2, arguments);\n          };\n        }\n        function shuffleSelf(array, size2) {\n          var index = -1, length = array.length, lastIndex = length - 1;\n          size2 = size2 === undefined2 ? length : size2;\n          while (++index < size2) {\n            var rand = baseRandom(index, lastIndex), value = array[rand];\n            array[rand] = array[index];\n            array[index] = value;\n          }\n          array.length = size2;\n          return array;\n        }\n        var stringToPath = memoizeCapped(function(string) {\n          var result2 = [];\n          if (string.charCodeAt(0) === 46) {\n            result2.push(\"\");\n          }\n          string.replace(rePropName, function(match, number, quote, subString) {\n            result2.push(quote ? subString.replace(reEscapeChar, \"$1\") : number || match);\n          });\n          return result2;\n        });\n        function toKey(value) {\n          if (typeof value == \"string\" || isSymbol(value)) {\n            return value;\n          }\n          var result2 = value + \"\";\n          return result2 == \"0\" && 1 / value == -INFINITY ? \"-0\" : result2;\n        }\n        function toSource(func) {\n          if (func != null) {\n            try {\n              return funcToString.call(func);\n            } catch (e) {\n            }\n            try {\n              return func + \"\";\n            } catch (e) {\n            }\n          }\n          return \"\";\n        }\n        function updateWrapDetails(details, bitmask) {\n          arrayEach(wrapFlags, function(pair) {\n            var value = \"_.\" + pair[0];\n            if (bitmask & pair[1] && !arrayIncludes(details, value)) {\n              details.push(value);\n            }\n          });\n          return details.sort();\n        }\n        function wrapperClone(wrapper) {\n          if (wrapper instanceof LazyWrapper) {\n            return wrapper.clone();\n          }\n          var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n          result2.__actions__ = copyArray(wrapper.__actions__);\n          result2.__index__ = wrapper.__index__;\n          result2.__values__ = wrapper.__values__;\n          return result2;\n        }\n        function chunk(array, size2, guard) {\n          if (guard ? isIterateeCall(array, size2, guard) : size2 === undefined2) {\n            size2 = 1;\n          } else {\n            size2 = nativeMax(toInteger(size2), 0);\n          }\n          var length = array == null ? 0 : array.length;\n          if (!length || size2 < 1) {\n            return [];\n          }\n          var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2));\n          while (index < length) {\n            result2[resIndex++] = baseSlice(array, index, index += size2);\n          }\n          return result2;\n        }\n        function compact(array) {\n          var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = [];\n          while (++index < length) {\n            var value = array[index];\n            if (value) {\n              result2[resIndex++] = value;\n            }\n          }\n          return result2;\n        }\n        function concat() {\n          var length = arguments.length;\n          if (!length) {\n            return [];\n          }\n          var args = Array2(length - 1), array = arguments[0], index = length;\n          while (index--) {\n            args[index - 1] = arguments[index];\n          }\n          return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n        }\n        var difference = baseRest(function(array, values2) {\n          return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];\n        });\n        var differenceBy = baseRest(function(array, values2) {\n          var iteratee2 = last(values2);\n          if (isArrayLikeObject(iteratee2)) {\n            iteratee2 = undefined2;\n          }\n          return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : [];\n        });\n        var differenceWith = baseRest(function(array, values2) {\n          var comparator = last(values2);\n          if (isArrayLikeObject(comparator)) {\n            comparator = undefined2;\n          }\n          return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : [];\n        });\n        function drop(array, n, guard) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return [];\n          }\n          n = guard || n === undefined2 ? 1 : toInteger(n);\n          return baseSlice(array, n < 0 ? 0 : n, length);\n        }\n        function dropRight(array, n, guard) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return [];\n          }\n          n = guard || n === undefined2 ? 1 : toInteger(n);\n          n = length - n;\n          return baseSlice(array, 0, n < 0 ? 0 : n);\n        }\n        function dropRightWhile(array, predicate) {\n          return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];\n        }\n        function dropWhile(array, predicate) {\n          return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];\n        }\n        function fill(array, value, start, end) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return [];\n          }\n          if (start && typeof start != \"number\" && isIterateeCall(array, value, start)) {\n            start = 0;\n            end = length;\n          }\n          return baseFill(array, value, start, end);\n        }\n        function findIndex(array, predicate, fromIndex) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return -1;\n          }\n          var index = fromIndex == null ? 0 : toInteger(fromIndex);\n          if (index < 0) {\n            index = nativeMax(length + index, 0);\n          }\n          return baseFindIndex(array, getIteratee(predicate, 3), index);\n        }\n        function findLastIndex(array, predicate, fromIndex) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return -1;\n          }\n          var index = length - 1;\n          if (fromIndex !== undefined2) {\n            index = toInteger(fromIndex);\n            index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n          }\n          return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n        }\n        function flatten(array) {\n          var length = array == null ? 0 : array.length;\n          return length ? baseFlatten(array, 1) : [];\n        }\n        function flattenDeep(array) {\n          var length = array == null ? 0 : array.length;\n          return length ? baseFlatten(array, INFINITY) : [];\n        }\n        function flattenDepth(array, depth) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return [];\n          }\n          depth = depth === undefined2 ? 1 : toInteger(depth);\n          return baseFlatten(array, depth);\n        }\n        function fromPairs(pairs) {\n          var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {};\n          while (++index < length) {\n            var pair = pairs[index];\n            result2[pair[0]] = pair[1];\n          }\n          return result2;\n        }\n        function head(array) {\n          return array && array.length ? array[0] : undefined2;\n        }\n        function indexOf(array, value, fromIndex) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return -1;\n          }\n          var index = fromIndex == null ? 0 : toInteger(fromIndex);\n          if (index < 0) {\n            index = nativeMax(length + index, 0);\n          }\n          return baseIndexOf(array, value, index);\n        }\n        function initial(array) {\n          var length = array == null ? 0 : array.length;\n          return length ? baseSlice(array, 0, -1) : [];\n        }\n        var intersection = baseRest(function(arrays) {\n          var mapped = arrayMap(arrays, castArrayLikeObject);\n          return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];\n        });\n        var intersectionBy = baseRest(function(arrays) {\n          var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);\n          if (iteratee2 === last(mapped)) {\n            iteratee2 = undefined2;\n          } else {\n            mapped.pop();\n          }\n          return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : [];\n        });\n        var intersectionWith = baseRest(function(arrays) {\n          var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject);\n          comparator = typeof comparator == \"function\" ? comparator : undefined2;\n          if (comparator) {\n            mapped.pop();\n          }\n          return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];\n        });\n        function join(array, separator) {\n          return array == null ? \"\" : nativeJoin.call(array, separator);\n        }\n        function last(array) {\n          var length = array == null ? 0 : array.length;\n          return length ? array[length - 1] : undefined2;\n        }\n        function lastIndexOf(array, value, fromIndex) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return -1;\n          }\n          var index = length;\n          if (fromIndex !== undefined2) {\n            index = toInteger(fromIndex);\n            index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n          }\n          return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true);\n        }\n        function nth(array, n) {\n          return array && array.length ? baseNth(array, toInteger(n)) : undefined2;\n        }\n        var pull = baseRest(pullAll);\n        function pullAll(array, values2) {\n          return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array;\n        }\n        function pullAllBy(array, values2, iteratee2) {\n          return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array;\n        }\n        function pullAllWith(array, values2, comparator) {\n          return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined2, comparator) : array;\n        }\n        var pullAt = flatRest(function(array, indexes) {\n          var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes);\n          basePullAt(array, arrayMap(indexes, function(index) {\n            return isIndex(index, length) ? +index : index;\n          }).sort(compareAscending));\n          return result2;\n        });\n        function remove(array, predicate) {\n          var result2 = [];\n          if (!(array && array.length)) {\n            return result2;\n          }\n          var index = -1, indexes = [], length = array.length;\n          predicate = getIteratee(predicate, 3);\n          while (++index < length) {\n            var value = array[index];\n            if (predicate(value, index, array)) {\n              result2.push(value);\n              indexes.push(index);\n            }\n          }\n          basePullAt(array, indexes);\n          return result2;\n        }\n        function reverse(array) {\n          return array == null ? array : nativeReverse.call(array);\n        }\n        function slice(array, start, end) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return [];\n          }\n          if (end && typeof end != \"number\" && isIterateeCall(array, start, end)) {\n            start = 0;\n            end = length;\n          } else {\n            start = start == null ? 0 : toInteger(start);\n            end = end === undefined2 ? length : toInteger(end);\n          }\n          return baseSlice(array, start, end);\n        }\n        function sortedIndex(array, value) {\n          return baseSortedIndex(array, value);\n        }\n        function sortedIndexBy(array, value, iteratee2) {\n          return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2));\n        }\n        function sortedIndexOf(array, value) {\n          var length = array == null ? 0 : array.length;\n          if (length) {\n            var index = baseSortedIndex(array, value);\n            if (index < length && eq(array[index], value)) {\n              return index;\n            }\n          }\n          return -1;\n        }\n        function sortedLastIndex(array, value) {\n          return baseSortedIndex(array, value, true);\n        }\n        function sortedLastIndexBy(array, value, iteratee2) {\n          return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true);\n        }\n        function sortedLastIndexOf(array, value) {\n          var length = array == null ? 0 : array.length;\n          if (length) {\n            var index = baseSortedIndex(array, value, true) - 1;\n            if (eq(array[index], value)) {\n              return index;\n            }\n          }\n          return -1;\n        }\n        function sortedUniq(array) {\n          return array && array.length ? baseSortedUniq(array) : [];\n        }\n        function sortedUniqBy(array, iteratee2) {\n          return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : [];\n        }\n        function tail(array) {\n          var length = array == null ? 0 : array.length;\n          return length ? baseSlice(array, 1, length) : [];\n        }\n        function take(array, n, guard) {\n          if (!(array && array.length)) {\n            return [];\n          }\n          n = guard || n === undefined2 ? 1 : toInteger(n);\n          return baseSlice(array, 0, n < 0 ? 0 : n);\n        }\n        function takeRight(array, n, guard) {\n          var length = array == null ? 0 : array.length;\n          if (!length) {\n            return [];\n          }\n          n = guard || n === undefined2 ? 1 : toInteger(n);\n          n = length - n;\n          return baseSlice(array, n < 0 ? 0 : n, length);\n        }\n        function takeRightWhile(array, predicate) {\n          return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];\n        }\n        function takeWhile(array, predicate) {\n          return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];\n        }\n        var union = baseRest(function(arrays) {\n          return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n        });\n        var unionBy = baseRest(function(arrays) {\n          var iteratee2 = last(arrays);\n          if (isArrayLikeObject(iteratee2)) {\n            iteratee2 = undefined2;\n          }\n          return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2));\n        });\n        var unionWith = baseRest(function(arrays) {\n          var comparator = last(arrays);\n          comparator = typeof comparator == \"function\" ? comparator : undefined2;\n          return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator);\n        });\n        function uniq(array) {\n          return array && array.length ? baseUniq(array) : [];\n        }\n        function uniqBy(array, iteratee2) {\n          return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : [];\n        }\n        function uniqWith(array, comparator) {\n          comparator = typeof comparator == \"function\" ? comparator : undefined2;\n          return array && array.length ? baseUniq(array, undefined2, comparator) : [];\n        }\n        function unzip(array) {\n          if (!(array && array.length)) {\n            return [];\n          }\n          var length = 0;\n          array = arrayFilter(array, function(group) {\n            if (isArrayLikeObject(group)) {\n              length = nativeMax(group.length, length);\n              return true;\n            }\n          });\n          return baseTimes(length, function(index) {\n            return arrayMap(array, baseProperty(index));\n          });\n        }\n        function unzipWith(array, iteratee2) {\n          if (!(array && array.length)) {\n            return [];\n          }\n          var result2 = unzip(array);\n          if (iteratee2 == null) {\n            return result2;\n          }\n          return arrayMap(result2, function(group) {\n            return apply(iteratee2, undefined2, group);\n          });\n        }\n        var without = baseRest(function(array, values2) {\n          return isArrayLikeObject(array) ? baseDifference(array, values2) : [];\n        });\n        var xor = baseRest(function(arrays) {\n          return baseXor(arrayFilter(arrays, isArrayLikeObject));\n        });\n        var xorBy = baseRest(function(arrays) {\n          var iteratee2 = last(arrays);\n          if (isArrayLikeObject(iteratee2)) {\n            iteratee2 = undefined2;\n          }\n          return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2));\n        });\n        var xorWith = baseRest(function(arrays) {\n          var comparator = last(arrays);\n          comparator = typeof comparator == \"function\" ? comparator : undefined2;\n          return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator);\n        });\n        var zip = baseRest(unzip);\n        function zipObject(props, values2) {\n          return baseZipObject(props || [], values2 || [], assignValue);\n        }\n        function zipObjectDeep(props, values2) {\n          return baseZipObject(props || [], values2 || [], baseSet);\n        }\n        var zipWith = baseRest(function(arrays) {\n          var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2;\n          iteratee2 = typeof iteratee2 == \"function\" ? (arrays.pop(), iteratee2) : undefined2;\n          return unzipWith(arrays, iteratee2);\n        });\n        function chain(value) {\n          var result2 = lodash(value);\n          result2.__chain__ = true;\n          return result2;\n        }\n        function tap(value, interceptor) {\n          interceptor(value);\n          return value;\n        }\n        function thru(value, interceptor) {\n          return interceptor(value);\n        }\n        var wrapperAt = flatRest(function(paths) {\n          var length = paths.length, start = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) {\n            return baseAt(object, paths);\n          };\n          if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) {\n            return this.thru(interceptor);\n          }\n          value = value.slice(start, +start + (length ? 1 : 0));\n          value.__actions__.push({\n            \"func\": thru,\n            \"args\": [interceptor],\n            \"thisArg\": undefined2\n          });\n          return new LodashWrapper(value, this.__chain__).thru(function(array) {\n            if (length && !array.length) {\n              array.push(undefined2);\n            }\n            return array;\n          });\n        });\n        function wrapperChain() {\n          return chain(this);\n        }\n        function wrapperCommit() {\n          return new LodashWrapper(this.value(), this.__chain__);\n        }\n        function wrapperNext() {\n          if (this.__values__ === undefined2) {\n            this.__values__ = toArray(this.value());\n          }\n          var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++];\n          return { \"done\": done, \"value\": value };\n        }\n        function wrapperToIterator() {\n          return this;\n        }\n        function wrapperPlant(value) {\n          var result2, parent2 = this;\n          while (parent2 instanceof baseLodash) {\n            var clone2 = wrapperClone(parent2);\n            clone2.__index__ = 0;\n            clone2.__values__ = undefined2;\n            if (result2) {\n              previous.__wrapped__ = clone2;\n            } else {\n              result2 = clone2;\n            }\n            var previous = clone2;\n            parent2 = parent2.__wrapped__;\n          }\n          previous.__wrapped__ = value;\n          return result2;\n        }\n        function wrapperReverse() {\n          var value = this.__wrapped__;\n          if (value instanceof LazyWrapper) {\n            var wrapped = value;\n            if (this.__actions__.length) {\n              wrapped = new LazyWrapper(this);\n            }\n            wrapped = wrapped.reverse();\n            wrapped.__actions__.push({\n              \"func\": thru,\n              \"args\": [reverse],\n              \"thisArg\": undefined2\n            });\n            return new LodashWrapper(wrapped, this.__chain__);\n          }\n          return this.thru(reverse);\n        }\n        function wrapperValue() {\n          return baseWrapperValue(this.__wrapped__, this.__actions__);\n        }\n        var countBy = createAggregator(function(result2, value, key) {\n          if (hasOwnProperty.call(result2, key)) {\n            ++result2[key];\n          } else {\n            baseAssignValue(result2, key, 1);\n          }\n        });\n        function every(collection, predicate, guard) {\n          var func = isArray(collection) ? arrayEvery : baseEvery;\n          if (guard && isIterateeCall(collection, predicate, guard)) {\n            predicate = undefined2;\n          }\n          return func(collection, getIteratee(predicate, 3));\n        }\n        function filter(collection, predicate) {\n          var func = isArray(collection) ? arrayFilter : baseFilter;\n          return func(collection, getIteratee(predicate, 3));\n        }\n        var find = createFind(findIndex);\n        var findLast = createFind(findLastIndex);\n        function flatMap(collection, iteratee2) {\n          return baseFlatten(map(collection, iteratee2), 1);\n        }\n        function flatMapDeep(collection, iteratee2) {\n          return baseFlatten(map(collection, iteratee2), INFINITY);\n        }\n        function flatMapDepth(collection, iteratee2, depth) {\n          depth = depth === undefined2 ? 1 : toInteger(depth);\n          return baseFlatten(map(collection, iteratee2), depth);\n        }\n        function forEach(collection, iteratee2) {\n          var func = isArray(collection) ? arrayEach : baseEach;\n          return func(collection, getIteratee(iteratee2, 3));\n        }\n        function forEachRight(collection, iteratee2) {\n          var func = isArray(collection) ? arrayEachRight : baseEachRight;\n          return func(collection, getIteratee(iteratee2, 3));\n        }\n        var groupBy = createAggregator(function(result2, value, key) {\n          if (hasOwnProperty.call(result2, key)) {\n            result2[key].push(value);\n          } else {\n            baseAssignValue(result2, key, [value]);\n          }\n        });\n        function includes(collection, value, fromIndex, guard) {\n          collection = isArrayLike(collection) ? collection : values(collection);\n          fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n          var length = collection.length;\n          if (fromIndex < 0) {\n            fromIndex = nativeMax(length + fromIndex, 0);\n          }\n          return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n        }\n        var invokeMap = baseRest(function(collection, path, args) {\n          var index = -1, isFunc = typeof path == \"function\", result2 = isArrayLike(collection) ? Array2(collection.length) : [];\n          baseEach(collection, function(value) {\n            result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n          });\n          return result2;\n        });\n        var keyBy = createAggregator(function(result2, value, key) {\n          baseAssignValue(result2, key, value);\n        });\n        function map(collection, iteratee2) {\n          var func = isArray(collection) ? arrayMap : baseMap;\n          return func(collection, getIteratee(iteratee2, 3));\n        }\n        function orderBy(collection, iteratees, orders, guard) {\n          if (collection == null) {\n            return [];\n          }\n          if (!isArray(iteratees)) {\n            iteratees = iteratees == null ? [] : [iteratees];\n          }\n          orders = guard ? undefined2 : orders;\n          if (!isArray(orders)) {\n            orders = orders == null ? [] : [orders];\n          }\n          return baseOrderBy(collection, iteratees, orders);\n        }\n        var partition = createAggregator(function(result2, value, key) {\n          result2[key ? 0 : 1].push(value);\n        }, function() {\n          return [[], []];\n        });\n        function reduce(collection, iteratee2, accumulator) {\n          var func = isArray(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3;\n          return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach);\n        }\n        function reduceRight(collection, iteratee2, accumulator) {\n          var func = isArray(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3;\n          return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight);\n        }\n        function reject(collection, predicate) {\n          var func = isArray(collection) ? arrayFilter : baseFilter;\n          return func(collection, negate(getIteratee(predicate, 3)));\n        }\n        function sample(collection) {\n          var func = isArray(collection) ? arraySample : baseSample;\n          return func(collection);\n        }\n        function sampleSize(collection, n, guard) {\n          if (guard ? isIterateeCall(collection, n, guard) : n === undefined2) {\n            n = 1;\n          } else {\n            n = toInteger(n);\n          }\n          var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n          return func(collection, n);\n        }\n        function shuffle(collection) {\n          var func = isArray(collection) ? arrayShuffle : baseShuffle;\n          return func(collection);\n        }\n        function size(collection) {\n          if (collection == null) {\n            return 0;\n          }\n          if (isArrayLike(collection)) {\n            return isString(collection) ? stringSize(collection) : collection.length;\n          }\n          var tag = getTag(collection);\n          if (tag == mapTag || tag == setTag) {\n            return collection.size;\n          }\n          return baseKeys(collection).length;\n        }\n        function some(collection, predicate, guard) {\n          var func = isArray(collection) ? arraySome : baseSome;\n          if (guard && isIterateeCall(collection, predicate, guard)) {\n            predicate = undefined2;\n          }\n          return func(collection, getIteratee(predicate, 3));\n        }\n        var sortBy = baseRest(function(collection, iteratees) {\n          if (collection == null) {\n            return [];\n          }\n          var length = iteratees.length;\n          if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n            iteratees = [];\n          } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n            iteratees = [iteratees[0]];\n          }\n          return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n        });\n        var now = ctxNow || function() {\n          return root.Date.now();\n        };\n        function after(n, func) {\n          if (typeof func != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          n = toInteger(n);\n          return function() {\n            if (--n < 1) {\n              return func.apply(this, arguments);\n            }\n          };\n        }\n        function ary(func, n, guard) {\n          n = guard ? undefined2 : n;\n          n = func && n == null ? func.length : n;\n          return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n);\n        }\n        function before(n, func) {\n          var result2;\n          if (typeof func != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          n = toInteger(n);\n          return function() {\n            if (--n > 0) {\n              result2 = func.apply(this, arguments);\n            }\n            if (n <= 1) {\n              func = undefined2;\n            }\n            return result2;\n          };\n        }\n        var bind = baseRest(function(func, thisArg, partials) {\n          var bitmask = WRAP_BIND_FLAG;\n          if (partials.length) {\n            var holders = replaceHolders(partials, getHolder(bind));\n            bitmask |= WRAP_PARTIAL_FLAG;\n          }\n          return createWrap(func, bitmask, thisArg, partials, holders);\n        });\n        var bindKey = baseRest(function(object, key, partials) {\n          var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n          if (partials.length) {\n            var holders = replaceHolders(partials, getHolder(bindKey));\n            bitmask |= WRAP_PARTIAL_FLAG;\n          }\n          return createWrap(key, bitmask, object, partials, holders);\n        });\n        function curry(func, arity, guard) {\n          arity = guard ? undefined2 : arity;\n          var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity);\n          result2.placeholder = curry.placeholder;\n          return result2;\n        }\n        function curryRight(func, arity, guard) {\n          arity = guard ? undefined2 : arity;\n          var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity);\n          result2.placeholder = curryRight.placeholder;\n          return result2;\n        }\n        function debounce(func, wait, options) {\n          var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n          if (typeof func != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          wait = toNumber(wait) || 0;\n          if (isObject(options)) {\n            leading = !!options.leading;\n            maxing = \"maxWait\" in options;\n            maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n            trailing = \"trailing\" in options ? !!options.trailing : trailing;\n          }\n          function invokeFunc(time) {\n            var args = lastArgs, thisArg = lastThis;\n            lastArgs = lastThis = undefined2;\n            lastInvokeTime = time;\n            result2 = func.apply(thisArg, args);\n            return result2;\n          }\n          function leadingEdge(time) {\n            lastInvokeTime = time;\n            timerId = setTimeout(timerExpired, wait);\n            return leading ? invokeFunc(time) : result2;\n          }\n          function remainingWait(time) {\n            var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;\n            return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n          }\n          function shouldInvoke(time) {\n            var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n            return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n          }\n          function timerExpired() {\n            var time = now();\n            if (shouldInvoke(time)) {\n              return trailingEdge(time);\n            }\n            timerId = setTimeout(timerExpired, remainingWait(time));\n          }\n          function trailingEdge(time) {\n            timerId = undefined2;\n            if (trailing && lastArgs) {\n              return invokeFunc(time);\n            }\n            lastArgs = lastThis = undefined2;\n            return result2;\n          }\n          function cancel() {\n            if (timerId !== undefined2) {\n              clearTimeout(timerId);\n            }\n            lastInvokeTime = 0;\n            lastArgs = lastCallTime = lastThis = timerId = undefined2;\n          }\n          function flush() {\n            return timerId === undefined2 ? result2 : trailingEdge(now());\n          }\n          function debounced() {\n            var time = now(), isInvoking = shouldInvoke(time);\n            lastArgs = arguments;\n            lastThis = this;\n            lastCallTime = time;\n            if (isInvoking) {\n              if (timerId === undefined2) {\n                return leadingEdge(lastCallTime);\n              }\n              if (maxing) {\n                clearTimeout(timerId);\n                timerId = setTimeout(timerExpired, wait);\n                return invokeFunc(lastCallTime);\n              }\n            }\n            if (timerId === undefined2) {\n              timerId = setTimeout(timerExpired, wait);\n            }\n            return result2;\n          }\n          debounced.cancel = cancel;\n          debounced.flush = flush;\n          return debounced;\n        }\n        var defer = baseRest(function(func, args) {\n          return baseDelay(func, 1, args);\n        });\n        var delay = baseRest(function(func, wait, args) {\n          return baseDelay(func, toNumber(wait) || 0, args);\n        });\n        function flip(func) {\n          return createWrap(func, WRAP_FLIP_FLAG);\n        }\n        function memoize(func, resolver) {\n          if (typeof func != \"function\" || resolver != null && typeof resolver != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          var memoized = function() {\n            var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;\n            if (cache.has(key)) {\n              return cache.get(key);\n            }\n            var result2 = func.apply(this, args);\n            memoized.cache = cache.set(key, result2) || cache;\n            return result2;\n          };\n          memoized.cache = new (memoize.Cache || MapCache)();\n          return memoized;\n        }\n        memoize.Cache = MapCache;\n        function negate(predicate) {\n          if (typeof predicate != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          return function() {\n            var args = arguments;\n            switch (args.length) {\n              case 0:\n                return !predicate.call(this);\n              case 1:\n                return !predicate.call(this, args[0]);\n              case 2:\n                return !predicate.call(this, args[0], args[1]);\n              case 3:\n                return !predicate.call(this, args[0], args[1], args[2]);\n            }\n            return !predicate.apply(this, args);\n          };\n        }\n        function once(func) {\n          return before(2, func);\n        }\n        var overArgs = castRest(function(func, transforms) {\n          transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n          var funcsLength = transforms.length;\n          return baseRest(function(args) {\n            var index = -1, length = nativeMin(args.length, funcsLength);\n            while (++index < length) {\n              args[index] = transforms[index].call(this, args[index]);\n            }\n            return apply(func, this, args);\n          });\n        });\n        var partial = baseRest(function(func, partials) {\n          var holders = replaceHolders(partials, getHolder(partial));\n          return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders);\n        });\n        var partialRight = baseRest(function(func, partials) {\n          var holders = replaceHolders(partials, getHolder(partialRight));\n          return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders);\n        });\n        var rearg = flatRest(function(func, indexes) {\n          return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes);\n        });\n        function rest(func, start) {\n          if (typeof func != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          start = start === undefined2 ? start : toInteger(start);\n          return baseRest(func, start);\n        }\n        function spread(func, start) {\n          if (typeof func != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          start = start == null ? 0 : nativeMax(toInteger(start), 0);\n          return baseRest(function(args) {\n            var array = args[start], otherArgs = castSlice(args, 0, start);\n            if (array) {\n              arrayPush(otherArgs, array);\n            }\n            return apply(func, this, otherArgs);\n          });\n        }\n        function throttle(func, wait, options) {\n          var leading = true, trailing = true;\n          if (typeof func != \"function\") {\n            throw new TypeError2(FUNC_ERROR_TEXT);\n          }\n          if (isObject(options)) {\n            leading = \"leading\" in options ? !!options.leading : leading;\n            trailing = \"trailing\" in options ? !!options.trailing : trailing;\n          }\n          return debounce(func, wait, {\n            \"leading\": leading,\n            \"maxWait\": wait,\n            \"trailing\": trailing\n          });\n        }\n        function unary(func) {\n          return ary(func, 1);\n        }\n        function wrap(value, wrapper) {\n          return partial(castFunction(wrapper), value);\n        }\n        function castArray() {\n          if (!arguments.length) {\n            return [];\n          }\n          var value = arguments[0];\n          return isArray(value) ? value : [value];\n        }\n        function clone(value) {\n          return baseClone(value, CLONE_SYMBOLS_FLAG);\n        }\n        function cloneWith(value, customizer) {\n          customizer = typeof customizer == \"function\" ? customizer : undefined2;\n          return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n        }\n        function cloneDeep(value) {\n          return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n        }\n        function cloneDeepWith(value, customizer) {\n          customizer = typeof customizer == \"function\" ? customizer : undefined2;\n          return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n        }\n        function conformsTo(object, source) {\n          return source == null || baseConformsTo(object, source, keys(source));\n        }\n        function eq(value, other) {\n          return value === other || value !== value && other !== other;\n        }\n        var gt2 = createRelationalOperation(baseGt);\n        var gte = createRelationalOperation(function(value, other) {\n          return value >= other;\n        });\n        var isArguments = baseIsArguments(function() {\n          return arguments;\n        }()) ? baseIsArguments : function(value) {\n          return isObjectLike(value) && hasOwnProperty.call(value, \"callee\") && !propertyIsEnumerable.call(value, \"callee\");\n        };\n        var isArray = Array2.isArray;\n        var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n        function isArrayLike(value) {\n          return value != null && isLength(value.length) && !isFunction(value);\n        }\n        function isArrayLikeObject(value) {\n          return isObjectLike(value) && isArrayLike(value);\n        }\n        function isBoolean(value) {\n          return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;\n        }\n        var isBuffer = nativeIsBuffer || stubFalse;\n        var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n        function isElement(value) {\n          return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n        }\n        function isEmpty(value) {\n          if (value == null) {\n            return true;\n          }\n          if (isArrayLike(value) && (isArray(value) || typeof value == \"string\" || typeof value.splice == \"function\" || isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n            return !value.length;\n          }\n          var tag = getTag(value);\n          if (tag == mapTag || tag == setTag) {\n            return !value.size;\n          }\n          if (isPrototype(value)) {\n            return !baseKeys(value).length;\n          }\n          for (var key in value) {\n            if (hasOwnProperty.call(value, key)) {\n              return false;\n            }\n          }\n          return true;\n        }\n        function isEqual(value, other) {\n          return baseIsEqual(value, other);\n        }\n        function isEqualWith(value, other, customizer) {\n          customizer = typeof customizer == \"function\" ? customizer : undefined2;\n          var result2 = customizer ? customizer(value, other) : undefined2;\n          return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2;\n        }\n        function isError(value) {\n          if (!isObjectLike(value)) {\n            return false;\n          }\n          var tag = baseGetTag(value);\n          return tag == errorTag || tag == domExcTag || typeof value.message == \"string\" && typeof value.name == \"string\" && !isPlainObject(value);\n        }\n        function isFinite(value) {\n          return typeof value == \"number\" && nativeIsFinite(value);\n        }\n        function isFunction(value) {\n          if (!isObject(value)) {\n            return false;\n          }\n          var tag = baseGetTag(value);\n          return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n        }\n        function isInteger(value) {\n          return typeof value == \"number\" && value == toInteger(value);\n        }\n        function isLength(value) {\n          return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n        }\n        function isObject(value) {\n          var type = typeof value;\n          return value != null && (type == \"object\" || type == \"function\");\n        }\n        function isObjectLike(value) {\n          return value != null && typeof value == \"object\";\n        }\n        var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n        function isMatch(object, source) {\n          return object === source || baseIsMatch(object, source, getMatchData(source));\n        }\n        function isMatchWith(object, source, customizer) {\n          customizer = typeof customizer == \"function\" ? customizer : undefined2;\n          return baseIsMatch(object, source, getMatchData(source), customizer);\n        }\n        function isNaN2(value) {\n          return isNumber(value) && value != +value;\n        }\n        function isNative(value) {\n          if (isMaskable(value)) {\n            throw new Error2(CORE_ERROR_TEXT);\n          }\n          return baseIsNative(value);\n        }\n        function isNull(value) {\n          return value === null;\n        }\n        function isNil(value) {\n          return value == null;\n        }\n        function isNumber(value) {\n          return typeof value == \"number\" || isObjectLike(value) && baseGetTag(value) == numberTag;\n        }\n        function isPlainObject(value) {\n          if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n            return false;\n          }\n          var proto = getPrototype(value);\n          if (proto === null) {\n            return true;\n          }\n          var Ctor = hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n          return typeof Ctor == \"function\" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n        }\n        var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n        function isSafeInteger(value) {\n          return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n        }\n        var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n        function isString(value) {\n          return typeof value == \"string\" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;\n        }\n        function isSymbol(value) {\n          return typeof value == \"symbol\" || isObjectLike(value) && baseGetTag(value) == symbolTag;\n        }\n        var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n        function isUndefined(value) {\n          return value === undefined2;\n        }\n        function isWeakMap(value) {\n          return isObjectLike(value) && getTag(value) == weakMapTag;\n        }\n        function isWeakSet(value) {\n          return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n        }\n        var lt2 = createRelationalOperation(baseLt);\n        var lte = createRelationalOperation(function(value, other) {\n          return value <= other;\n        });\n        function toArray(value) {\n          if (!value) {\n            return [];\n          }\n          if (isArrayLike(value)) {\n            return isString(value) ? stringToArray(value) : copyArray(value);\n          }\n          if (symIterator && value[symIterator]) {\n            return iteratorToArray(value[symIterator]());\n          }\n          var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;\n          return func(value);\n        }\n        function toFinite(value) {\n          if (!value) {\n            return value === 0 ? value : 0;\n          }\n          value = toNumber(value);\n          if (value === INFINITY || value === -INFINITY) {\n            var sign = value < 0 ? -1 : 1;\n            return sign * MAX_INTEGER;\n          }\n          return value === value ? value : 0;\n        }\n        function toInteger(value) {\n          var result2 = toFinite(value), remainder = result2 % 1;\n          return result2 === result2 ? remainder ? result2 - remainder : result2 : 0;\n        }\n        function toLength(value) {\n          return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n        }\n        function toNumber(value) {\n          if (typeof value == \"number\") {\n            return value;\n          }\n          if (isSymbol(value)) {\n            return NAN;\n          }\n          if (isObject(value)) {\n            var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n            value = isObject(other) ? other + \"\" : other;\n          }\n          if (typeof value != \"string\") {\n            return value === 0 ? value : +value;\n          }\n          value = baseTrim(value);\n          var isBinary = reIsBinary.test(value);\n          return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n        }\n        function toPlainObject(value) {\n          return copyObject(value, keysIn(value));\n        }\n        function toSafeInteger(value) {\n          return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;\n        }\n        function toString(value) {\n          return value == null ? \"\" : baseToString(value);\n        }\n        var assign = createAssigner(function(object, source) {\n          if (isPrototype(source) || isArrayLike(source)) {\n            copyObject(source, keys(source), object);\n            return;\n          }\n          for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n              assignValue(object, key, source[key]);\n            }\n          }\n        });\n        var assignIn = createAssigner(function(object, source) {\n          copyObject(source, keysIn(source), object);\n        });\n        var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n          copyObject(source, keysIn(source), object, customizer);\n        });\n        var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n          copyObject(source, keys(source), object, customizer);\n        });\n        var at2 = flatRest(baseAt);\n        function create(prototype, properties) {\n          var result2 = baseCreate(prototype);\n          return properties == null ? result2 : baseAssign(result2, properties);\n        }\n        var defaults = baseRest(function(object, sources) {\n          object = Object2(object);\n          var index = -1;\n          var length = sources.length;\n          var guard = length > 2 ? sources[2] : undefined2;\n          if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n            length = 1;\n          }\n          while (++index < length) {\n            var source = sources[index];\n            var props = keysIn(source);\n            var propsIndex = -1;\n            var propsLength = props.length;\n            while (++propsIndex < propsLength) {\n              var key = props[propsIndex];\n              var value = object[key];\n              if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {\n                object[key] = source[key];\n              }\n            }\n          }\n          return object;\n        });\n        var defaultsDeep = baseRest(function(args) {\n          args.push(undefined2, customDefaultsMerge);\n          return apply(mergeWith, undefined2, args);\n        });\n        function findKey(object, predicate) {\n          return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n        }\n        function findLastKey(object, predicate) {\n          return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n        }\n        function forIn(object, iteratee2) {\n          return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn);\n        }\n        function forInRight(object, iteratee2) {\n          return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn);\n        }\n        function forOwn(object, iteratee2) {\n          return object && baseForOwn(object, getIteratee(iteratee2, 3));\n        }\n        function forOwnRight(object, iteratee2) {\n          return object && baseForOwnRight(object, getIteratee(iteratee2, 3));\n        }\n        function functions(object) {\n          return object == null ? [] : baseFunctions(object, keys(object));\n        }\n        function functionsIn(object) {\n          return object == null ? [] : baseFunctions(object, keysIn(object));\n        }\n        function get(object, path, defaultValue) {\n          var result2 = object == null ? undefined2 : baseGet(object, path);\n          return result2 === undefined2 ? defaultValue : result2;\n        }\n        function has(object, path) {\n          return object != null && hasPath(object, path, baseHas);\n        }\n        function hasIn(object, path) {\n          return object != null && hasPath(object, path, baseHasIn);\n        }\n        var invert = createInverter(function(result2, value, key) {\n          if (value != null && typeof value.toString != \"function\") {\n            value = nativeObjectToString.call(value);\n          }\n          result2[value] = key;\n        }, constant(identity));\n        var invertBy = createInverter(function(result2, value, key) {\n          if (value != null && typeof value.toString != \"function\") {\n            value = nativeObjectToString.call(value);\n          }\n          if (hasOwnProperty.call(result2, value)) {\n            result2[value].push(key);\n          } else {\n            result2[value] = [key];\n          }\n        }, getIteratee);\n        var invoke = baseRest(baseInvoke);\n        function keys(object) {\n          return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n        }\n        function keysIn(object) {\n          return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n        }\n        function mapKeys(object, iteratee2) {\n          var result2 = {};\n          iteratee2 = getIteratee(iteratee2, 3);\n          baseForOwn(object, function(value, key, object2) {\n            baseAssignValue(result2, iteratee2(value, key, object2), value);\n          });\n          return result2;\n        }\n        function mapValues(object, iteratee2) {\n          var result2 = {};\n          iteratee2 = getIteratee(iteratee2, 3);\n          baseForOwn(object, function(value, key, object2) {\n            baseAssignValue(result2, key, iteratee2(value, key, object2));\n          });\n          return result2;\n        }\n        var merge = createAssigner(function(object, source, srcIndex) {\n          baseMerge(object, source, srcIndex);\n        });\n        var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n          baseMerge(object, source, srcIndex, customizer);\n        });\n        var omit = flatRest(function(object, paths) {\n          var result2 = {};\n          if (object == null) {\n            return result2;\n          }\n          var isDeep = false;\n          paths = arrayMap(paths, function(path) {\n            path = castPath(path, object);\n            isDeep || (isDeep = path.length > 1);\n            return path;\n          });\n          copyObject(object, getAllKeysIn(object), result2);\n          if (isDeep) {\n            result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n          }\n          var length = paths.length;\n          while (length--) {\n            baseUnset(result2, paths[length]);\n          }\n          return result2;\n        });\n        function omitBy(object, predicate) {\n          return pickBy(object, negate(getIteratee(predicate)));\n        }\n        var pick = flatRest(function(object, paths) {\n          return object == null ? {} : basePick(object, paths);\n        });\n        function pickBy(object, predicate) {\n          if (object == null) {\n            return {};\n          }\n          var props = arrayMap(getAllKeysIn(object), function(prop) {\n            return [prop];\n          });\n          predicate = getIteratee(predicate);\n          return basePickBy(object, props, function(value, path) {\n            return predicate(value, path[0]);\n          });\n        }\n        function result(object, path, defaultValue) {\n          path = castPath(path, object);\n          var index = -1, length = path.length;\n          if (!length) {\n            length = 1;\n            object = undefined2;\n          }\n          while (++index < length) {\n            var value = object == null ? undefined2 : object[toKey(path[index])];\n            if (value === undefined2) {\n              index = length;\n              value = defaultValue;\n            }\n            object = isFunction(value) ? value.call(object) : value;\n          }\n          return object;\n        }\n        function set(object, path, value) {\n          return object == null ? object : baseSet(object, path, value);\n        }\n        function setWith(object, path, value, customizer) {\n          customizer = typeof customizer == \"function\" ? customizer : undefined2;\n          return object == null ? object : baseSet(object, path, value, customizer);\n        }\n        var toPairs = createToPairs(keys);\n        var toPairsIn = createToPairs(keysIn);\n        function transform(object, iteratee2, accumulator) {\n          var isArr = isArray(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n          iteratee2 = getIteratee(iteratee2, 4);\n          if (accumulator == null) {\n            var Ctor = object && object.constructor;\n            if (isArrLike) {\n              accumulator = isArr ? new Ctor() : [];\n            } else if (isObject(object)) {\n              accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n            } else {\n              accumulator = {};\n            }\n          }\n          (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) {\n            return iteratee2(accumulator, value, index, object2);\n          });\n          return accumulator;\n        }\n        function unset(object, path) {\n          return object == null ? true : baseUnset(object, path);\n        }\n        function update(object, path, updater) {\n          return object == null ? object : baseUpdate(object, path, castFunction(updater));\n        }\n        function updateWith(object, path, updater, customizer) {\n          customizer = typeof customizer == \"function\" ? customizer : undefined2;\n          return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n        }\n        function values(object) {\n          return object == null ? [] : baseValues(object, keys(object));\n        }\n        function valuesIn(object) {\n          return object == null ? [] : baseValues(object, keysIn(object));\n        }\n        function clamp(number, lower, upper) {\n          if (upper === undefined2) {\n            upper = lower;\n            lower = undefined2;\n          }\n          if (upper !== undefined2) {\n            upper = toNumber(upper);\n            upper = upper === upper ? upper : 0;\n          }\n          if (lower !== undefined2) {\n            lower = toNumber(lower);\n            lower = lower === lower ? lower : 0;\n          }\n          return baseClamp(toNumber(number), lower, upper);\n        }\n        function inRange(number, start, end) {\n          start = toFinite(start);\n          if (end === undefined2) {\n            end = start;\n            start = 0;\n          } else {\n            end = toFinite(end);\n          }\n          number = toNumber(number);\n          return baseInRange(number, start, end);\n        }\n        function random(lower, upper, floating) {\n          if (floating && typeof floating != \"boolean\" && isIterateeCall(lower, upper, floating)) {\n            upper = floating = undefined2;\n          }\n          if (floating === undefined2) {\n            if (typeof upper == \"boolean\") {\n              floating = upper;\n              upper = undefined2;\n            } else if (typeof lower == \"boolean\") {\n              floating = lower;\n              lower = undefined2;\n            }\n          }\n          if (lower === undefined2 && upper === undefined2) {\n            lower = 0;\n            upper = 1;\n          } else {\n            lower = toFinite(lower);\n            if (upper === undefined2) {\n              upper = lower;\n              lower = 0;\n            } else {\n              upper = toFinite(upper);\n            }\n          }\n          if (lower > upper) {\n            var temp = lower;\n            lower = upper;\n            upper = temp;\n          }\n          if (floating || lower % 1 || upper % 1) {\n            var rand = nativeRandom();\n            return nativeMin(lower + rand * (upper - lower + freeParseFloat(\"1e-\" + ((rand + \"\").length - 1))), upper);\n          }\n          return baseRandom(lower, upper);\n        }\n        var camelCase = createCompounder(function(result2, word, index) {\n          word = word.toLowerCase();\n          return result2 + (index ? capitalize(word) : word);\n        });\n        function capitalize(string) {\n          return upperFirst(toString(string).toLowerCase());\n        }\n        function deburr(string) {\n          string = toString(string);\n          return string && string.replace(reLatin, deburrLetter).replace(reComboMark, \"\");\n        }\n        function endsWith(string, target, position) {\n          string = toString(string);\n          target = baseToString(target);\n          var length = string.length;\n          position = position === undefined2 ? length : baseClamp(toInteger(position), 0, length);\n          var end = position;\n          position -= target.length;\n          return position >= 0 && string.slice(position, end) == target;\n        }\n        function escape(string) {\n          string = toString(string);\n          return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;\n        }\n        function escapeRegExp(string) {\n          string = toString(string);\n          return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, \"\\\\$&\") : string;\n        }\n        var kebabCase = createCompounder(function(result2, word, index) {\n          return result2 + (index ? \"-\" : \"\") + word.toLowerCase();\n        });\n        var lowerCase = createCompounder(function(result2, word, index) {\n          return result2 + (index ? \" \" : \"\") + word.toLowerCase();\n        });\n        var lowerFirst = createCaseFirst(\"toLowerCase\");\n        function pad(string, length, chars) {\n          string = toString(string);\n          length = toInteger(length);\n          var strLength = length ? stringSize(string) : 0;\n          if (!length || strLength >= length) {\n            return string;\n          }\n          var mid = (length - strLength) / 2;\n          return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);\n        }\n        function padEnd(string, length, chars) {\n          string = toString(string);\n          length = toInteger(length);\n          var strLength = length ? stringSize(string) : 0;\n          return length && strLength < length ? string + createPadding(length - strLength, chars) : string;\n        }\n        function padStart(string, length, chars) {\n          string = toString(string);\n          length = toInteger(length);\n          var strLength = length ? stringSize(string) : 0;\n          return length && strLength < length ? createPadding(length - strLength, chars) + string : string;\n        }\n        function parseInt2(string, radix, guard) {\n          if (guard || radix == null) {\n            radix = 0;\n          } else if (radix) {\n            radix = +radix;\n          }\n          return nativeParseInt(toString(string).replace(reTrimStart, \"\"), radix || 0);\n        }\n        function repeat(string, n, guard) {\n          if (guard ? isIterateeCall(string, n, guard) : n === undefined2) {\n            n = 1;\n          } else {\n            n = toInteger(n);\n          }\n          return baseRepeat(toString(string), n);\n        }\n        function replace() {\n          var args = arguments, string = toString(args[0]);\n          return args.length < 3 ? string : string.replace(args[1], args[2]);\n        }\n        var snakeCase = createCompounder(function(result2, word, index) {\n          return result2 + (index ? \"_\" : \"\") + word.toLowerCase();\n        });\n        function split(string, separator, limit) {\n          if (limit && typeof limit != \"number\" && isIterateeCall(string, separator, limit)) {\n            separator = limit = undefined2;\n          }\n          limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0;\n          if (!limit) {\n            return [];\n          }\n          string = toString(string);\n          if (string && (typeof separator == \"string\" || separator != null && !isRegExp(separator))) {\n            separator = baseToString(separator);\n            if (!separator && hasUnicode(string)) {\n              return castSlice(stringToArray(string), 0, limit);\n            }\n          }\n          return string.split(separator, limit);\n        }\n        var startCase = createCompounder(function(result2, word, index) {\n          return result2 + (index ? \" \" : \"\") + upperFirst(word);\n        });\n        function startsWith(string, target, position) {\n          string = toString(string);\n          position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);\n          target = baseToString(target);\n          return string.slice(position, position + target.length) == target;\n        }\n        function template(string, options, guard) {\n          var settings = lodash.templateSettings;\n          if (guard && isIterateeCall(string, options, guard)) {\n            options = undefined2;\n          }\n          string = toString(string);\n          options = assignInWith({}, options, settings, customDefaultsAssignIn);\n          var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys);\n          var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = \"__p += '\";\n          var reDelimiters = RegExp2(\n            (options.escape || reNoMatch).source + \"|\" + interpolate.source + \"|\" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + \"|\" + (options.evaluate || reNoMatch).source + \"|$\",\n            \"g\"\n          );\n          var sourceURL = \"//# sourceURL=\" + (hasOwnProperty.call(options, \"sourceURL\") ? (options.sourceURL + \"\").replace(/\\s/g, \" \") : \"lodash.templateSources[\" + ++templateCounter + \"]\") + \"\\n\";\n          string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n            interpolateValue || (interpolateValue = esTemplateValue);\n            source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n            if (escapeValue) {\n              isEscaping = true;\n              source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n            }\n            if (evaluateValue) {\n              isEvaluating = true;\n              source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n            }\n            if (interpolateValue) {\n              source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n            }\n            index = offset + match.length;\n            return match;\n          });\n          source += \"';\\n\";\n          var variable = hasOwnProperty.call(options, \"variable\") && options.variable;\n          if (!variable) {\n            source = \"with (obj) {\\n\" + source + \"\\n}\\n\";\n          } else if (reForbiddenIdentifierChars.test(variable)) {\n            throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT);\n          }\n          source = (isEvaluating ? source.replace(reEmptyStringLeading, \"\") : source).replace(reEmptyStringMiddle, \"$1\").replace(reEmptyStringTrailing, \"$1;\");\n          source = \"function(\" + (variable || \"obj\") + \") {\\n\" + (variable ? \"\" : \"obj || (obj = {});\\n\") + \"var __t, __p = ''\" + (isEscaping ? \", __e = _.escape\" : \"\") + (isEvaluating ? \", __j = Array.prototype.join;\\nfunction print() { __p += __j.call(arguments, '') }\\n\" : \";\\n\") + source + \"return __p\\n}\";\n          var result2 = attempt(function() {\n            return Function2(importsKeys, sourceURL + \"return \" + source).apply(undefined2, importsValues);\n          });\n          result2.source = source;\n          if (isError(result2)) {\n            throw result2;\n          }\n          return result2;\n        }\n        function toLower(value) {\n          return toString(value).toLowerCase();\n        }\n        function toUpper(value) {\n          return toString(value).toUpperCase();\n        }\n        function trim(string, chars, guard) {\n          string = toString(string);\n          if (string && (guard || chars === undefined2)) {\n            return baseTrim(string);\n          }\n          if (!string || !(chars = baseToString(chars))) {\n            return string;\n          }\n          var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1;\n          return castSlice(strSymbols, start, end).join(\"\");\n        }\n        function trimEnd(string, chars, guard) {\n          string = toString(string);\n          if (string && (guard || chars === undefined2)) {\n            return string.slice(0, trimmedEndIndex(string) + 1);\n          }\n          if (!string || !(chars = baseToString(chars))) {\n            return string;\n          }\n          var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n          return castSlice(strSymbols, 0, end).join(\"\");\n        }\n        function trimStart(string, chars, guard) {\n          string = toString(string);\n          if (string && (guard || chars === undefined2)) {\n            return string.replace(reTrimStart, \"\");\n          }\n          if (!string || !(chars = baseToString(chars))) {\n            return string;\n          }\n          var strSymbols = stringToArray(string), start = charsStartIndex(strSymbols, stringToArray(chars));\n          return castSlice(strSymbols, start).join(\"\");\n        }\n        function truncate(string, options) {\n          var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;\n          if (isObject(options)) {\n            var separator = \"separator\" in options ? options.separator : separator;\n            length = \"length\" in options ? toInteger(options.length) : length;\n            omission = \"omission\" in options ? baseToString(options.omission) : omission;\n          }\n          string = toString(string);\n          var strLength = string.length;\n          if (hasUnicode(string)) {\n            var strSymbols = stringToArray(string);\n            strLength = strSymbols.length;\n          }\n          if (length >= strLength) {\n            return string;\n          }\n          var end = length - stringSize(omission);\n          if (end < 1) {\n            return omission;\n          }\n          var result2 = strSymbols ? castSlice(strSymbols, 0, end).join(\"\") : string.slice(0, end);\n          if (separator === undefined2) {\n            return result2 + omission;\n          }\n          if (strSymbols) {\n            end += result2.length - end;\n          }\n          if (isRegExp(separator)) {\n            if (string.slice(end).search(separator)) {\n              var match, substring = result2;\n              if (!separator.global) {\n                separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + \"g\");\n              }\n              separator.lastIndex = 0;\n              while (match = separator.exec(substring)) {\n                var newEnd = match.index;\n              }\n              result2 = result2.slice(0, newEnd === undefined2 ? end : newEnd);\n            }\n          } else if (string.indexOf(baseToString(separator), end) != end) {\n            var index = result2.lastIndexOf(separator);\n            if (index > -1) {\n              result2 = result2.slice(0, index);\n            }\n          }\n          return result2 + omission;\n        }\n        function unescape(string) {\n          string = toString(string);\n          return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;\n        }\n        var upperCase = createCompounder(function(result2, word, index) {\n          return result2 + (index ? \" \" : \"\") + word.toUpperCase();\n        });\n        var upperFirst = createCaseFirst(\"toUpperCase\");\n        function words(string, pattern, guard) {\n          string = toString(string);\n          pattern = guard ? undefined2 : pattern;\n          if (pattern === undefined2) {\n            return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n          }\n          return string.match(pattern) || [];\n        }\n        var attempt = baseRest(function(func, args) {\n          try {\n            return apply(func, undefined2, args);\n          } catch (e) {\n            return isError(e) ? e : new Error2(e);\n          }\n        });\n        var bindAll = flatRest(function(object, methodNames) {\n          arrayEach(methodNames, function(key) {\n            key = toKey(key);\n            baseAssignValue(object, key, bind(object[key], object));\n          });\n          return object;\n        });\n        function cond(pairs) {\n          var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee();\n          pairs = !length ? [] : arrayMap(pairs, function(pair) {\n            if (typeof pair[1] != \"function\") {\n              throw new TypeError2(FUNC_ERROR_TEXT);\n            }\n            return [toIteratee(pair[0]), pair[1]];\n          });\n          return baseRest(function(args) {\n            var index = -1;\n            while (++index < length) {\n              var pair = pairs[index];\n              if (apply(pair[0], this, args)) {\n                return apply(pair[1], this, args);\n              }\n            }\n          });\n        }\n        function conforms(source) {\n          return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n        }\n        function constant(value) {\n          return function() {\n            return value;\n          };\n        }\n        function defaultTo(value, defaultValue) {\n          return value == null || value !== value ? defaultValue : value;\n        }\n        var flow = createFlow();\n        var flowRight = createFlow(true);\n        function identity(value) {\n          return value;\n        }\n        function iteratee(func) {\n          return baseIteratee(typeof func == \"function\" ? func : baseClone(func, CLONE_DEEP_FLAG));\n        }\n        function matches(source) {\n          return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n        }\n        function matchesProperty(path, srcValue) {\n          return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n        }\n        var method = baseRest(function(path, args) {\n          return function(object) {\n            return baseInvoke(object, path, args);\n          };\n        });\n        var methodOf = baseRest(function(object, args) {\n          return function(path) {\n            return baseInvoke(object, path, args);\n          };\n        });\n        function mixin(object, source, options) {\n          var props = keys(source), methodNames = baseFunctions(source, props);\n          if (options == null && !(isObject(source) && (methodNames.length || !props.length))) {\n            options = source;\n            source = object;\n            object = this;\n            methodNames = baseFunctions(source, keys(source));\n          }\n          var chain2 = !(isObject(options) && \"chain\" in options) || !!options.chain, isFunc = isFunction(object);\n          arrayEach(methodNames, function(methodName) {\n            var func = source[methodName];\n            object[methodName] = func;\n            if (isFunc) {\n              object.prototype[methodName] = function() {\n                var chainAll = this.__chain__;\n                if (chain2 || chainAll) {\n                  var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__);\n                  actions.push({ \"func\": func, \"args\": arguments, \"thisArg\": object });\n                  result2.__chain__ = chainAll;\n                  return result2;\n                }\n                return func.apply(object, arrayPush([this.value()], arguments));\n              };\n            }\n          });\n          return object;\n        }\n        function noConflict() {\n          if (root._ === this) {\n            root._ = oldDash;\n          }\n          return this;\n        }\n        function noop() {\n        }\n        function nthArg(n) {\n          n = toInteger(n);\n          return baseRest(function(args) {\n            return baseNth(args, n);\n          });\n        }\n        var over = createOver(arrayMap);\n        var overEvery = createOver(arrayEvery);\n        var overSome = createOver(arraySome);\n        function property(path) {\n          return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n        }\n        function propertyOf(object) {\n          return function(path) {\n            return object == null ? undefined2 : baseGet(object, path);\n          };\n        }\n        var range = createRange();\n        var rangeRight = createRange(true);\n        function stubArray() {\n          return [];\n        }\n        function stubFalse() {\n          return false;\n        }\n        function stubObject() {\n          return {};\n        }\n        function stubString() {\n          return \"\";\n        }\n        function stubTrue() {\n          return true;\n        }\n        function times(n, iteratee2) {\n          n = toInteger(n);\n          if (n < 1 || n > MAX_SAFE_INTEGER) {\n            return [];\n          }\n          var index = MAX_ARRAY_LENGTH, length = nativeMin(n, MAX_ARRAY_LENGTH);\n          iteratee2 = getIteratee(iteratee2);\n          n -= MAX_ARRAY_LENGTH;\n          var result2 = baseTimes(length, iteratee2);\n          while (++index < n) {\n            iteratee2(index);\n          }\n          return result2;\n        }\n        function toPath(value) {\n          if (isArray(value)) {\n            return arrayMap(value, toKey);\n          }\n          return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n        }\n        function uniqueId(prefix) {\n          var id = ++idCounter;\n          return toString(prefix) + id;\n        }\n        var add = createMathOperation(function(augend, addend) {\n          return augend + addend;\n        }, 0);\n        var ceil = createRound(\"ceil\");\n        var divide = createMathOperation(function(dividend, divisor) {\n          return dividend / divisor;\n        }, 1);\n        var floor = createRound(\"floor\");\n        function max(array) {\n          return array && array.length ? baseExtremum(array, identity, baseGt) : undefined2;\n        }\n        function maxBy(array, iteratee2) {\n          return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2;\n        }\n        function mean(array) {\n          return baseMean(array, identity);\n        }\n        function meanBy(array, iteratee2) {\n          return baseMean(array, getIteratee(iteratee2, 2));\n        }\n        function min(array) {\n          return array && array.length ? baseExtremum(array, identity, baseLt) : undefined2;\n        }\n        function minBy(array, iteratee2) {\n          return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2;\n        }\n        var multiply = createMathOperation(function(multiplier, multiplicand) {\n          return multiplier * multiplicand;\n        }, 1);\n        var round = createRound(\"round\");\n        var subtract = createMathOperation(function(minuend, subtrahend) {\n          return minuend - subtrahend;\n        }, 0);\n        function sum(array) {\n          return array && array.length ? baseSum(array, identity) : 0;\n        }\n        function sumBy(array, iteratee2) {\n          return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0;\n        }\n        lodash.after = after;\n        lodash.ary = ary;\n        lodash.assign = assign;\n        lodash.assignIn = assignIn;\n        lodash.assignInWith = assignInWith;\n        lodash.assignWith = assignWith;\n        lodash.at = at2;\n        lodash.before = before;\n        lodash.bind = bind;\n        lodash.bindAll = bindAll;\n        lodash.bindKey = bindKey;\n        lodash.castArray = castArray;\n        lodash.chain = chain;\n        lodash.chunk = chunk;\n        lodash.compact = compact;\n        lodash.concat = concat;\n        lodash.cond = cond;\n        lodash.conforms = conforms;\n        lodash.constant = constant;\n        lodash.countBy = countBy;\n        lodash.create = create;\n        lodash.curry = curry;\n        lodash.curryRight = curryRight;\n        lodash.debounce = debounce;\n        lodash.defaults = defaults;\n        lodash.defaultsDeep = defaultsDeep;\n        lodash.defer = defer;\n        lodash.delay = delay;\n        lodash.difference = difference;\n        lodash.differenceBy = differenceBy;\n        lodash.differenceWith = differenceWith;\n        lodash.drop = drop;\n        lodash.dropRight = dropRight;\n        lodash.dropRightWhile = dropRightWhile;\n        lodash.dropWhile = dropWhile;\n        lodash.fill = fill;\n        lodash.filter = filter;\n        lodash.flatMap = flatMap;\n        lodash.flatMapDeep = flatMapDeep;\n        lodash.flatMapDepth = flatMapDepth;\n        lodash.flatten = flatten;\n        lodash.flattenDeep = flattenDeep;\n        lodash.flattenDepth = flattenDepth;\n        lodash.flip = flip;\n        lodash.flow = flow;\n        lodash.flowRight = flowRight;\n        lodash.fromPairs = fromPairs;\n        lodash.functions = functions;\n        lodash.functionsIn = functionsIn;\n        lodash.groupBy = groupBy;\n        lodash.initial = initial;\n        lodash.intersection = intersection;\n        lodash.intersectionBy = intersectionBy;\n        lodash.intersectionWith = intersectionWith;\n        lodash.invert = invert;\n        lodash.invertBy = invertBy;\n        lodash.invokeMap = invokeMap;\n        lodash.iteratee = iteratee;\n        lodash.keyBy = keyBy;\n        lodash.keys = keys;\n        lodash.keysIn = keysIn;\n        lodash.map = map;\n        lodash.mapKeys = mapKeys;\n        lodash.mapValues = mapValues;\n        lodash.matches = matches;\n        lodash.matchesProperty = matchesProperty;\n        lodash.memoize = memoize;\n        lodash.merge = merge;\n        lodash.mergeWith = mergeWith;\n        lodash.method = method;\n        lodash.methodOf = methodOf;\n        lodash.mixin = mixin;\n        lodash.negate = negate;\n        lodash.nthArg = nthArg;\n        lodash.omit = omit;\n        lodash.omitBy = omitBy;\n        lodash.once = once;\n        lodash.orderBy = orderBy;\n        lodash.over = over;\n        lodash.overArgs = overArgs;\n        lodash.overEvery = overEvery;\n        lodash.overSome = overSome;\n        lodash.partial = partial;\n        lodash.partialRight = partialRight;\n        lodash.partition = partition;\n        lodash.pick = pick;\n        lodash.pickBy = pickBy;\n        lodash.property = property;\n        lodash.propertyOf = propertyOf;\n        lodash.pull = pull;\n        lodash.pullAll = pullAll;\n        lodash.pullAllBy = pullAllBy;\n        lodash.pullAllWith = pullAllWith;\n        lodash.pullAt = pullAt;\n        lodash.range = range;\n        lodash.rangeRight = rangeRight;\n        lodash.rearg = rearg;\n        lodash.reject = reject;\n        lodash.remove = remove;\n        lodash.rest = rest;\n        lodash.reverse = reverse;\n        lodash.sampleSize = sampleSize;\n        lodash.set = set;\n        lodash.setWith = setWith;\n        lodash.shuffle = shuffle;\n        lodash.slice = slice;\n        lodash.sortBy = sortBy;\n        lodash.sortedUniq = sortedUniq;\n        lodash.sortedUniqBy = sortedUniqBy;\n        lodash.split = split;\n        lodash.spread = spread;\n        lodash.tail = tail;\n        lodash.take = take;\n        lodash.takeRight = takeRight;\n        lodash.takeRightWhile = takeRightWhile;\n        lodash.takeWhile = takeWhile;\n        lodash.tap = tap;\n        lodash.throttle = throttle;\n        lodash.thru = thru;\n        lodash.toArray = toArray;\n        lodash.toPairs = toPairs;\n        lodash.toPairsIn = toPairsIn;\n        lodash.toPath = toPath;\n        lodash.toPlainObject = toPlainObject;\n        lodash.transform = transform;\n        lodash.unary = unary;\n        lodash.union = union;\n        lodash.unionBy = unionBy;\n        lodash.unionWith = unionWith;\n        lodash.uniq = uniq;\n        lodash.uniqBy = uniqBy;\n        lodash.uniqWith = uniqWith;\n        lodash.unset = unset;\n        lodash.unzip = unzip;\n        lodash.unzipWith = unzipWith;\n        lodash.update = update;\n        lodash.updateWith = updateWith;\n        lodash.values = values;\n        lodash.valuesIn = valuesIn;\n        lodash.without = without;\n        lodash.words = words;\n        lodash.wrap = wrap;\n        lodash.xor = xor;\n        lodash.xorBy = xorBy;\n        lodash.xorWith = xorWith;\n        lodash.zip = zip;\n        lodash.zipObject = zipObject;\n        lodash.zipObjectDeep = zipObjectDeep;\n        lodash.zipWith = zipWith;\n        lodash.entries = toPairs;\n        lodash.entriesIn = toPairsIn;\n        lodash.extend = assignIn;\n        lodash.extendWith = assignInWith;\n        mixin(lodash, lodash);\n        lodash.add = add;\n        lodash.attempt = attempt;\n        lodash.camelCase = camelCase;\n        lodash.capitalize = capitalize;\n        lodash.ceil = ceil;\n        lodash.clamp = clamp;\n        lodash.clone = clone;\n        lodash.cloneDeep = cloneDeep;\n        lodash.cloneDeepWith = cloneDeepWith;\n        lodash.cloneWith = cloneWith;\n        lodash.conformsTo = conformsTo;\n        lodash.deburr = deburr;\n        lodash.defaultTo = defaultTo;\n        lodash.divide = divide;\n        lodash.endsWith = endsWith;\n        lodash.eq = eq;\n        lodash.escape = escape;\n        lodash.escapeRegExp = escapeRegExp;\n        lodash.every = every;\n        lodash.find = find;\n        lodash.findIndex = findIndex;\n        lodash.findKey = findKey;\n        lodash.findLast = findLast;\n        lodash.findLastIndex = findLastIndex;\n        lodash.findLastKey = findLastKey;\n        lodash.floor = floor;\n        lodash.forEach = forEach;\n        lodash.forEachRight = forEachRight;\n        lodash.forIn = forIn;\n        lodash.forInRight = forInRight;\n        lodash.forOwn = forOwn;\n        lodash.forOwnRight = forOwnRight;\n        lodash.get = get;\n        lodash.gt = gt2;\n        lodash.gte = gte;\n        lodash.has = has;\n        lodash.hasIn = hasIn;\n        lodash.head = head;\n        lodash.identity = identity;\n        lodash.includes = includes;\n        lodash.indexOf = indexOf;\n        lodash.inRange = inRange;\n        lodash.invoke = invoke;\n        lodash.isArguments = isArguments;\n        lodash.isArray = isArray;\n        lodash.isArrayBuffer = isArrayBuffer;\n        lodash.isArrayLike = isArrayLike;\n        lodash.isArrayLikeObject = isArrayLikeObject;\n        lodash.isBoolean = isBoolean;\n        lodash.isBuffer = isBuffer;\n        lodash.isDate = isDate;\n        lodash.isElement = isElement;\n        lodash.isEmpty = isEmpty;\n        lodash.isEqual = isEqual;\n        lodash.isEqualWith = isEqualWith;\n        lodash.isError = isError;\n        lodash.isFinite = isFinite;\n        lodash.isFunction = isFunction;\n        lodash.isInteger = isInteger;\n        lodash.isLength = isLength;\n        lodash.isMap = isMap;\n        lodash.isMatch = isMatch;\n        lodash.isMatchWith = isMatchWith;\n        lodash.isNaN = isNaN2;\n        lodash.isNative = isNative;\n        lodash.isNil = isNil;\n        lodash.isNull = isNull;\n        lodash.isNumber = isNumber;\n        lodash.isObject = isObject;\n        lodash.isObjectLike = isObjectLike;\n        lodash.isPlainObject = isPlainObject;\n        lodash.isRegExp = isRegExp;\n        lodash.isSafeInteger = isSafeInteger;\n        lodash.isSet = isSet;\n        lodash.isString = isString;\n        lodash.isSymbol = isSymbol;\n        lodash.isTypedArray = isTypedArray;\n        lodash.isUndefined = isUndefined;\n        lodash.isWeakMap = isWeakMap;\n        lodash.isWeakSet = isWeakSet;\n        lodash.join = join;\n        lodash.kebabCase = kebabCase;\n        lodash.last = last;\n        lodash.lastIndexOf = lastIndexOf;\n        lodash.lowerCase = lowerCase;\n        lodash.lowerFirst = lowerFirst;\n        lodash.lt = lt2;\n        lodash.lte = lte;\n        lodash.max = max;\n        lodash.maxBy = maxBy;\n        lodash.mean = mean;\n        lodash.meanBy = meanBy;\n        lodash.min = min;\n        lodash.minBy = minBy;\n        lodash.stubArray = stubArray;\n        lodash.stubFalse = stubFalse;\n        lodash.stubObject = stubObject;\n        lodash.stubString = stubString;\n        lodash.stubTrue = stubTrue;\n        lodash.multiply = multiply;\n        lodash.nth = nth;\n        lodash.noConflict = noConflict;\n        lodash.noop = noop;\n        lodash.now = now;\n        lodash.pad = pad;\n        lodash.padEnd = padEnd;\n        lodash.padStart = padStart;\n        lodash.parseInt = parseInt2;\n        lodash.random = random;\n        lodash.reduce = reduce;\n        lodash.reduceRight = reduceRight;\n        lodash.repeat = repeat;\n        lodash.replace = replace;\n        lodash.result = result;\n        lodash.round = round;\n        lodash.runInContext = runInContext2;\n        lodash.sample = sample;\n        lodash.size = size;\n        lodash.snakeCase = snakeCase;\n        lodash.some = some;\n        lodash.sortedIndex = sortedIndex;\n        lodash.sortedIndexBy = sortedIndexBy;\n        lodash.sortedIndexOf = sortedIndexOf;\n        lodash.sortedLastIndex = sortedLastIndex;\n        lodash.sortedLastIndexBy = sortedLastIndexBy;\n        lodash.sortedLastIndexOf = sortedLastIndexOf;\n        lodash.startCase = startCase;\n        lodash.startsWith = startsWith;\n        lodash.subtract = subtract;\n        lodash.sum = sum;\n        lodash.sumBy = sumBy;\n        lodash.template = template;\n        lodash.times = times;\n        lodash.toFinite = toFinite;\n        lodash.toInteger = toInteger;\n        lodash.toLength = toLength;\n        lodash.toLower = toLower;\n        lodash.toNumber = toNumber;\n        lodash.toSafeInteger = toSafeInteger;\n        lodash.toString = toString;\n        lodash.toUpper = toUpper;\n        lodash.trim = trim;\n        lodash.trimEnd = trimEnd;\n        lodash.trimStart = trimStart;\n        lodash.truncate = truncate;\n        lodash.unescape = unescape;\n        lodash.uniqueId = uniqueId;\n        lodash.upperCase = upperCase;\n        lodash.upperFirst = upperFirst;\n        lodash.each = forEach;\n        lodash.eachRight = forEachRight;\n        lodash.first = head;\n        mixin(lodash, function() {\n          var source = {};\n          baseForOwn(lodash, function(func, methodName) {\n            if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n              source[methodName] = func;\n            }\n          });\n          return source;\n        }(), { \"chain\": false });\n        lodash.VERSION = VERSION;\n        arrayEach([\"bind\", \"bindKey\", \"curry\", \"curryRight\", \"partial\", \"partialRight\"], function(methodName) {\n          lodash[methodName].placeholder = lodash;\n        });\n        arrayEach([\"drop\", \"take\"], function(methodName, index) {\n          LazyWrapper.prototype[methodName] = function(n) {\n            n = n === undefined2 ? 1 : nativeMax(toInteger(n), 0);\n            var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone();\n            if (result2.__filtered__) {\n              result2.__takeCount__ = nativeMin(n, result2.__takeCount__);\n            } else {\n              result2.__views__.push({\n                \"size\": nativeMin(n, MAX_ARRAY_LENGTH),\n                \"type\": methodName + (result2.__dir__ < 0 ? \"Right\" : \"\")\n              });\n            }\n            return result2;\n          };\n          LazyWrapper.prototype[methodName + \"Right\"] = function(n) {\n            return this.reverse()[methodName](n).reverse();\n          };\n        });\n        arrayEach([\"filter\", \"map\", \"takeWhile\"], function(methodName, index) {\n          var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n          LazyWrapper.prototype[methodName] = function(iteratee2) {\n            var result2 = this.clone();\n            result2.__iteratees__.push({\n              \"iteratee\": getIteratee(iteratee2, 3),\n              \"type\": type\n            });\n            result2.__filtered__ = result2.__filtered__ || isFilter;\n            return result2;\n          };\n        });\n        arrayEach([\"head\", \"last\"], function(methodName, index) {\n          var takeName = \"take\" + (index ? \"Right\" : \"\");\n          LazyWrapper.prototype[methodName] = function() {\n            return this[takeName](1).value()[0];\n          };\n        });\n        arrayEach([\"initial\", \"tail\"], function(methodName, index) {\n          var dropName = \"drop\" + (index ? \"\" : \"Right\");\n          LazyWrapper.prototype[methodName] = function() {\n            return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n          };\n        });\n        LazyWrapper.prototype.compact = function() {\n          return this.filter(identity);\n        };\n        LazyWrapper.prototype.find = function(predicate) {\n          return this.filter(predicate).head();\n        };\n        LazyWrapper.prototype.findLast = function(predicate) {\n          return this.reverse().find(predicate);\n        };\n        LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n          if (typeof path == \"function\") {\n            return new LazyWrapper(this);\n          }\n          return this.map(function(value) {\n            return baseInvoke(value, path, args);\n          });\n        });\n        LazyWrapper.prototype.reject = function(predicate) {\n          return this.filter(negate(getIteratee(predicate)));\n        };\n        LazyWrapper.prototype.slice = function(start, end) {\n          start = toInteger(start);\n          var result2 = this;\n          if (result2.__filtered__ && (start > 0 || end < 0)) {\n            return new LazyWrapper(result2);\n          }\n          if (start < 0) {\n            result2 = result2.takeRight(-start);\n          } else if (start) {\n            result2 = result2.drop(start);\n          }\n          if (end !== undefined2) {\n            end = toInteger(end);\n            result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start);\n          }\n          return result2;\n        };\n        LazyWrapper.prototype.takeRightWhile = function(predicate) {\n          return this.reverse().takeWhile(predicate).reverse();\n        };\n        LazyWrapper.prototype.toArray = function() {\n          return this.take(MAX_ARRAY_LENGTH);\n        };\n        baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n          var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? \"take\" + (methodName == \"last\" ? \"Right\" : \"\") : methodName], retUnwrapped = isTaker || /^find/.test(methodName);\n          if (!lodashFunc) {\n            return;\n          }\n          lodash.prototype[methodName] = function() {\n            var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray(value);\n            var interceptor = function(value2) {\n              var result3 = lodashFunc.apply(lodash, arrayPush([value2], args));\n              return isTaker && chainAll ? result3[0] : result3;\n            };\n            if (useLazy && checkIteratee && typeof iteratee2 == \"function\" && iteratee2.length != 1) {\n              isLazy = useLazy = false;\n            }\n            var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid;\n            if (!retUnwrapped && useLazy) {\n              value = onlyLazy ? value : new LazyWrapper(this);\n              var result2 = func.apply(value, args);\n              result2.__actions__.push({ \"func\": thru, \"args\": [interceptor], \"thisArg\": undefined2 });\n              return new LodashWrapper(result2, chainAll);\n            }\n            if (isUnwrapped && onlyLazy) {\n              return func.apply(this, args);\n            }\n            result2 = this.thru(interceptor);\n            return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2;\n          };\n        });\n        arrayEach([\"pop\", \"push\", \"shift\", \"sort\", \"splice\", \"unshift\"], function(methodName) {\n          var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? \"tap\" : \"thru\", retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n          lodash.prototype[methodName] = function() {\n            var args = arguments;\n            if (retUnwrapped && !this.__chain__) {\n              var value = this.value();\n              return func.apply(isArray(value) ? value : [], args);\n            }\n            return this[chainName](function(value2) {\n              return func.apply(isArray(value2) ? value2 : [], args);\n            });\n          };\n        });\n        baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n          var lodashFunc = lodash[methodName];\n          if (lodashFunc) {\n            var key = lodashFunc.name + \"\";\n            if (!hasOwnProperty.call(realNames, key)) {\n              realNames[key] = [];\n            }\n            realNames[key].push({ \"name\": methodName, \"func\": lodashFunc });\n          }\n        });\n        realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{\n          \"name\": \"wrapper\",\n          \"func\": undefined2\n        }];\n        LazyWrapper.prototype.clone = lazyClone;\n        LazyWrapper.prototype.reverse = lazyReverse;\n        LazyWrapper.prototype.value = lazyValue;\n        lodash.prototype.at = wrapperAt;\n        lodash.prototype.chain = wrapperChain;\n        lodash.prototype.commit = wrapperCommit;\n        lodash.prototype.next = wrapperNext;\n        lodash.prototype.plant = wrapperPlant;\n        lodash.prototype.reverse = wrapperReverse;\n        lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n        lodash.prototype.first = lodash.prototype.head;\n        if (symIterator) {\n          lodash.prototype[symIterator] = wrapperToIterator;\n        }\n        return lodash;\n      };\n      var _2 = runInContext();\n      if (typeof define == \"function\" && typeof define.amd == \"object\" && define.amd) {\n        root._ = _2;\n        define(function() {\n          return _2;\n        });\n      } else if (freeModule) {\n        (freeModule.exports = _2)._ = _2;\n        freeExports._ = _2;\n      } else {\n        root._ = _2;\n      }\n    }).call(exports);\n  }\n});\n\n// node_modules/cross-fetch/dist/browser-ponyfill.js\nvar require_browser_ponyfill = __commonJS({\n  \"node_modules/cross-fetch/dist/browser-ponyfill.js\"(exports, module) {\n    var global2 = typeof self !== \"undefined\" ? self : exports;\n    var __self__ = function() {\n      function F2() {\n        this.fetch = false;\n        this.DOMException = global2.DOMException;\n      }\n      F2.prototype = global2;\n      return new F2();\n    }();\n    (function(self2) {\n      var irrelevant = function(exports2) {\n        var support = {\n          searchParams: \"URLSearchParams\" in self2,\n          iterable: \"Symbol\" in self2 && \"iterator\" in Symbol,\n          blob: \"FileReader\" in self2 && \"Blob\" in self2 && function() {\n            try {\n              new Blob();\n              return true;\n            } catch (e) {\n              return false;\n            }\n          }(),\n          formData: \"FormData\" in self2,\n          arrayBuffer: \"ArrayBuffer\" in self2\n        };\n        function isDataView(obj) {\n          return obj && DataView.prototype.isPrototypeOf(obj);\n        }\n        if (support.arrayBuffer) {\n          var viewClasses = [\n            \"[object Int8Array]\",\n            \"[object Uint8Array]\",\n            \"[object Uint8ClampedArray]\",\n            \"[object Int16Array]\",\n            \"[object Uint16Array]\",\n            \"[object Int32Array]\",\n            \"[object Uint32Array]\",\n            \"[object Float32Array]\",\n            \"[object Float64Array]\"\n          ];\n          var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n            return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1;\n          };\n        }\n        function normalizeName(name) {\n          if (typeof name !== \"string\") {\n            name = String(name);\n          }\n          if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n            throw new TypeError(\"Invalid character in header field name\");\n          }\n          return name.toLowerCase();\n        }\n        function normalizeValue(value) {\n          if (typeof value !== \"string\") {\n            value = String(value);\n          }\n          return value;\n        }\n        function iteratorFor(items) {\n          var iterator = {\n            next: function() {\n              var value = items.shift();\n              return { done: value === void 0, value };\n            }\n          };\n          if (support.iterable) {\n            iterator[Symbol.iterator] = function() {\n              return iterator;\n            };\n          }\n          return iterator;\n        }\n        function Headers(headers) {\n          this.map = {};\n          if (headers instanceof Headers) {\n            headers.forEach(function(value, name) {\n              this.append(name, value);\n            }, this);\n          } else if (Array.isArray(headers)) {\n            headers.forEach(function(header) {\n              this.append(header[0], header[1]);\n            }, this);\n          } else if (headers) {\n            Object.getOwnPropertyNames(headers).forEach(function(name) {\n              this.append(name, headers[name]);\n            }, this);\n          }\n        }\n        Headers.prototype.append = function(name, value) {\n          name = normalizeName(name);\n          value = normalizeValue(value);\n          var oldValue = this.map[name];\n          this.map[name] = oldValue ? oldValue + \", \" + value : value;\n        };\n        Headers.prototype[\"delete\"] = function(name) {\n          delete this.map[normalizeName(name)];\n        };\n        Headers.prototype.get = function(name) {\n          name = normalizeName(name);\n          return this.has(name) ? this.map[name] : null;\n        };\n        Headers.prototype.has = function(name) {\n          return this.map.hasOwnProperty(normalizeName(name));\n        };\n        Headers.prototype.set = function(name, value) {\n          this.map[normalizeName(name)] = normalizeValue(value);\n        };\n        Headers.prototype.forEach = function(callback, thisArg) {\n          for (var name in this.map) {\n            if (this.map.hasOwnProperty(name)) {\n              callback.call(thisArg, this.map[name], name, this);\n            }\n          }\n        };\n        Headers.prototype.keys = function() {\n          var items = [];\n          this.forEach(function(value, name) {\n            items.push(name);\n          });\n          return iteratorFor(items);\n        };\n        Headers.prototype.values = function() {\n          var items = [];\n          this.forEach(function(value) {\n            items.push(value);\n          });\n          return iteratorFor(items);\n        };\n        Headers.prototype.entries = function() {\n          var items = [];\n          this.forEach(function(value, name) {\n            items.push([name, value]);\n          });\n          return iteratorFor(items);\n        };\n        if (support.iterable) {\n          Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n        }\n        function consumed(body) {\n          if (body.bodyUsed) {\n            return Promise.reject(new TypeError(\"Already read\"));\n          }\n          body.bodyUsed = true;\n        }\n        function fileReaderReady(reader) {\n          return new Promise(function(resolve, reject) {\n            reader.onload = function() {\n              resolve(reader.result);\n            };\n            reader.onerror = function() {\n              reject(reader.error);\n            };\n          });\n        }\n        function readBlobAsArrayBuffer(blob) {\n          var reader = new FileReader();\n          var promise = fileReaderReady(reader);\n          reader.readAsArrayBuffer(blob);\n          return promise;\n        }\n        function readBlobAsText(blob) {\n          var reader = new FileReader();\n          var promise = fileReaderReady(reader);\n          reader.readAsText(blob);\n          return promise;\n        }\n        function readArrayBufferAsText(buf) {\n          var view = new Uint8Array(buf);\n          var chars = new Array(view.length);\n          for (var i = 0; i < view.length; i++) {\n            chars[i] = String.fromCharCode(view[i]);\n          }\n          return chars.join(\"\");\n        }\n        function bufferClone(buf) {\n          if (buf.slice) {\n            return buf.slice(0);\n          } else {\n            var view = new Uint8Array(buf.byteLength);\n            view.set(new Uint8Array(buf));\n            return view.buffer;\n          }\n        }\n        function Body() {\n          this.bodyUsed = false;\n          this._initBody = function(body) {\n            this._bodyInit = body;\n            if (!body) {\n              this._bodyText = \"\";\n            } else if (typeof body === \"string\") {\n              this._bodyText = body;\n            } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n              this._bodyBlob = body;\n            } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n              this._bodyFormData = body;\n            } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n              this._bodyText = body.toString();\n            } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n              this._bodyArrayBuffer = bufferClone(body.buffer);\n              this._bodyInit = new Blob([this._bodyArrayBuffer]);\n            } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n              this._bodyArrayBuffer = bufferClone(body);\n            } else {\n              this._bodyText = body = Object.prototype.toString.call(body);\n            }\n            if (!this.headers.get(\"content-type\")) {\n              if (typeof body === \"string\") {\n                this.headers.set(\"content-type\", \"text/plain;charset=UTF-8\");\n              } else if (this._bodyBlob && this._bodyBlob.type) {\n                this.headers.set(\"content-type\", this._bodyBlob.type);\n              } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n                this.headers.set(\"content-type\", \"application/x-www-form-urlencoded;charset=UTF-8\");\n              }\n            }\n          };\n          if (support.blob) {\n            this.blob = function() {\n              var rejected = consumed(this);\n              if (rejected) {\n                return rejected;\n              }\n              if (this._bodyBlob) {\n                return Promise.resolve(this._bodyBlob);\n              } else if (this._bodyArrayBuffer) {\n                return Promise.resolve(new Blob([this._bodyArrayBuffer]));\n              } else if (this._bodyFormData) {\n                throw new Error(\"could not read FormData body as blob\");\n              } else {\n                return Promise.resolve(new Blob([this._bodyText]));\n              }\n            };\n            this.arrayBuffer = function() {\n              if (this._bodyArrayBuffer) {\n                return consumed(this) || Promise.resolve(this._bodyArrayBuffer);\n              } else {\n                return this.blob().then(readBlobAsArrayBuffer);\n              }\n            };\n          }\n          this.text = function() {\n            var rejected = consumed(this);\n            if (rejected) {\n              return rejected;\n            }\n            if (this._bodyBlob) {\n              return readBlobAsText(this._bodyBlob);\n            } else if (this._bodyArrayBuffer) {\n              return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));\n            } else if (this._bodyFormData) {\n              throw new Error(\"could not read FormData body as text\");\n            } else {\n              return Promise.resolve(this._bodyText);\n            }\n          };\n          if (support.formData) {\n            this.formData = function() {\n              return this.text().then(decode);\n            };\n          }\n          this.json = function() {\n            return this.text().then(JSON.parse);\n          };\n          return this;\n        }\n        var methods = [\"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"POST\", \"PUT\"];\n        function normalizeMethod(method) {\n          var upcased = method.toUpperCase();\n          return methods.indexOf(upcased) > -1 ? upcased : method;\n        }\n        function Request(input, options) {\n          options = options || {};\n          var body = options.body;\n          if (input instanceof Request) {\n            if (input.bodyUsed) {\n              throw new TypeError(\"Already read\");\n            }\n            this.url = input.url;\n            this.credentials = input.credentials;\n            if (!options.headers) {\n              this.headers = new Headers(input.headers);\n            }\n            this.method = input.method;\n            this.mode = input.mode;\n            this.signal = input.signal;\n            if (!body && input._bodyInit != null) {\n              body = input._bodyInit;\n              input.bodyUsed = true;\n            }\n          } else {\n            this.url = String(input);\n          }\n          this.credentials = options.credentials || this.credentials || \"same-origin\";\n          if (options.headers || !this.headers) {\n            this.headers = new Headers(options.headers);\n          }\n          this.method = normalizeMethod(options.method || this.method || \"GET\");\n          this.mode = options.mode || this.mode || null;\n          this.signal = options.signal || this.signal;\n          this.referrer = null;\n          if ((this.method === \"GET\" || this.method === \"HEAD\") && body) {\n            throw new TypeError(\"Body not allowed for GET or HEAD requests\");\n          }\n          this._initBody(body);\n        }\n        Request.prototype.clone = function() {\n          return new Request(this, { body: this._bodyInit });\n        };\n        function decode(body) {\n          var form = new FormData();\n          body.trim().split(\"&\").forEach(function(bytes) {\n            if (bytes) {\n              var split = bytes.split(\"=\");\n              var name = split.shift().replace(/\\+/g, \" \");\n              var value = split.join(\"=\").replace(/\\+/g, \" \");\n              form.append(decodeURIComponent(name), decodeURIComponent(value));\n            }\n          });\n          return form;\n        }\n        function parseHeaders(rawHeaders) {\n          var headers = new Headers();\n          var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, \" \");\n          preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n            var parts = line.split(\":\");\n            var key = parts.shift().trim();\n            if (key) {\n              var value = parts.join(\":\").trim();\n              headers.append(key, value);\n            }\n          });\n          return headers;\n        }\n        Body.call(Request.prototype);\n        function Response(bodyInit, options) {\n          if (!options) {\n            options = {};\n          }\n          this.type = \"default\";\n          this.status = options.status === void 0 ? 200 : options.status;\n          this.ok = this.status >= 200 && this.status < 300;\n          this.statusText = \"statusText\" in options ? options.statusText : \"OK\";\n          this.headers = new Headers(options.headers);\n          this.url = options.url || \"\";\n          this._initBody(bodyInit);\n        }\n        Body.call(Response.prototype);\n        Response.prototype.clone = function() {\n          return new Response(this._bodyInit, {\n            status: this.status,\n            statusText: this.statusText,\n            headers: new Headers(this.headers),\n            url: this.url\n          });\n        };\n        Response.error = function() {\n          var response = new Response(null, { status: 0, statusText: \"\" });\n          response.type = \"error\";\n          return response;\n        };\n        var redirectStatuses = [301, 302, 303, 307, 308];\n        Response.redirect = function(url, status) {\n          if (redirectStatuses.indexOf(status) === -1) {\n            throw new RangeError(\"Invalid status code\");\n          }\n          return new Response(null, { status, headers: { location: url } });\n        };\n        exports2.DOMException = self2.DOMException;\n        try {\n          new exports2.DOMException();\n        } catch (err) {\n          exports2.DOMException = function(message, name) {\n            this.message = message;\n            this.name = name;\n            var error = Error(message);\n            this.stack = error.stack;\n          };\n          exports2.DOMException.prototype = Object.create(Error.prototype);\n          exports2.DOMException.prototype.constructor = exports2.DOMException;\n        }\n        function fetch2(input, init) {\n          return new Promise(function(resolve, reject) {\n            var request = new Request(input, init);\n            if (request.signal && request.signal.aborted) {\n              return reject(new exports2.DOMException(\"Aborted\", \"AbortError\"));\n            }\n            var xhr = new XMLHttpRequest();\n            function abortXhr() {\n              xhr.abort();\n            }\n            xhr.onload = function() {\n              var options = {\n                status: xhr.status,\n                statusText: xhr.statusText,\n                headers: parseHeaders(xhr.getAllResponseHeaders() || \"\")\n              };\n              options.url = \"responseURL\" in xhr ? xhr.responseURL : options.headers.get(\"X-Request-URL\");\n              var body = \"response\" in xhr ? xhr.response : xhr.responseText;\n              resolve(new Response(body, options));\n            };\n            xhr.onerror = function() {\n              reject(new TypeError(\"Network request failed\"));\n            };\n            xhr.ontimeout = function() {\n              reject(new TypeError(\"Network request failed\"));\n            };\n            xhr.onabort = function() {\n              reject(new exports2.DOMException(\"Aborted\", \"AbortError\"));\n            };\n            xhr.open(request.method, request.url, true);\n            if (request.credentials === \"include\") {\n              xhr.withCredentials = true;\n            } else if (request.credentials === \"omit\") {\n              xhr.withCredentials = false;\n            }\n            if (\"responseType\" in xhr && support.blob) {\n              xhr.responseType = \"blob\";\n            }\n            request.headers.forEach(function(value, name) {\n              xhr.setRequestHeader(name, value);\n            });\n            if (request.signal) {\n              request.signal.addEventListener(\"abort\", abortXhr);\n              xhr.onreadystatechange = function() {\n                if (xhr.readyState === 4) {\n                  request.signal.removeEventListener(\"abort\", abortXhr);\n                }\n              };\n            }\n            xhr.send(typeof request._bodyInit === \"undefined\" ? null : request._bodyInit);\n          });\n        }\n        fetch2.polyfill = true;\n        if (!self2.fetch) {\n          self2.fetch = fetch2;\n          self2.Headers = Headers;\n          self2.Request = Request;\n          self2.Response = Response;\n        }\n        exports2.Headers = Headers;\n        exports2.Request = Request;\n        exports2.Response = Response;\n        exports2.fetch = fetch2;\n        Object.defineProperty(exports2, \"__esModule\", { value: true });\n        return exports2;\n      }({});\n    })(__self__);\n    __self__.fetch.ponyfill = true;\n    delete __self__.fetch.polyfill;\n    var ctx = __self__;\n    exports = ctx.fetch;\n    exports.default = ctx.fetch;\n    exports.fetch = ctx.fetch;\n    exports.Headers = ctx.Headers;\n    exports.Request = ctx.Request;\n    exports.Response = ctx.Response;\n    module.exports = exports;\n  }\n});\n\n// node_modules/@walletconnect/ethereum-provider/dist/index.es.js\nvar import_events3 = __toESM(require_events());\n\n// node_modules/@walletconnect/universal-provider/dist/index.es.js\nvar import_lodash = __toESM(require_lodash());\n\n// node_modules/@walletconnect/jsonrpc-http-connection/dist/index.es.js\nvar import_events = __toESM(require_events());\nvar import_cross_fetch = __toESM(require_browser_ponyfill());\nvar P = Object.defineProperty;\nvar w = Object.defineProperties;\nvar E = Object.getOwnPropertyDescriptors;\nvar c = Object.getOwnPropertySymbols;\nvar L2 = Object.prototype.hasOwnProperty;\nvar O = Object.prototype.propertyIsEnumerable;\nvar l = (r, t, e) => t in r ? P(r, t, { enumerable: true, configurable: true, writable: true, value: e }) : r[t] = e;\nvar p = (r, t) => {\n  for (var e in t || (t = {}))\n    L2.call(t, e) && l(r, e, t[e]);\n  if (c)\n    for (var e of c(t))\n      O.call(t, e) && l(r, e, t[e]);\n  return r;\n};\nvar v = (r, t) => w(r, E(t));\nvar j = { Accept: \"application/json\", \"Content-Type\": \"application/json\" };\nvar T = \"POST\";\nvar d = { headers: j, method: T };\nvar g = 10;\nvar f = class {\n  constructor(t, e = false) {\n    if (this.url = t, this.disableProviderPing = e, this.events = new import_events.EventEmitter(), this.isAvailable = false, this.registering = false, !isHttpUrl(t))\n      throw new Error(`Provided URL is not compatible with HTTP connection: ${t}`);\n    this.url = t, this.disableProviderPing = e;\n  }\n  get connected() {\n    return this.isAvailable;\n  }\n  get connecting() {\n    return this.registering;\n  }\n  on(t, e) {\n    this.events.on(t, e);\n  }\n  once(t, e) {\n    this.events.once(t, e);\n  }\n  off(t, e) {\n    this.events.off(t, e);\n  }\n  removeListener(t, e) {\n    this.events.removeListener(t, e);\n  }\n  async open(t = this.url) {\n    await this.register(t);\n  }\n  async close() {\n    if (!this.isAvailable)\n      throw new Error(\"Connection already closed\");\n    this.onClose();\n  }\n  async send(t) {\n    this.isAvailable || await this.register();\n    try {\n      const e = safeJsonStringify(t), s = await (await (0, import_cross_fetch.default)(this.url, v(p({}, d), { body: e }))).json();\n      this.onPayload({ data: s });\n    } catch (e) {\n      this.onError(t.id, e);\n    }\n  }\n  async register(t = this.url) {\n    if (!isHttpUrl(t))\n      throw new Error(`Provided URL is not compatible with HTTP connection: ${t}`);\n    if (this.registering) {\n      const e = this.events.getMaxListeners();\n      return (this.events.listenerCount(\"register_error\") >= e || this.events.listenerCount(\"open\") >= e) && this.events.setMaxListeners(e + 1), new Promise((s, i) => {\n        this.events.once(\"register_error\", (n) => {\n          this.resetMaxListeners(), i(n);\n        }), this.events.once(\"open\", () => {\n          if (this.resetMaxListeners(), typeof this.isAvailable > \"u\")\n            return i(new Error(\"HTTP connection is missing or invalid\"));\n          s();\n        });\n      });\n    }\n    this.url = t, this.registering = true;\n    try {\n      if (!this.disableProviderPing) {\n        const e = safeJsonStringify({ id: 1, jsonrpc: \"2.0\", method: \"test\", params: [] });\n        await (0, import_cross_fetch.default)(t, v(p({}, d), { body: e }));\n      }\n      this.onOpen();\n    } catch (e) {\n      const s = this.parseError(e);\n      throw this.events.emit(\"register_error\", s), this.onClose(), s;\n    }\n  }\n  onOpen() {\n    this.isAvailable = true, this.registering = false, this.events.emit(\"open\");\n  }\n  onClose() {\n    this.isAvailable = false, this.registering = false, this.events.emit(\"close\");\n  }\n  onPayload(t) {\n    if (typeof t.data > \"u\")\n      return;\n    const e = typeof t.data == \"string\" ? safeJsonParse(t.data) : t.data;\n    this.events.emit(\"payload\", e);\n  }\n  onError(t, e) {\n    const s = this.parseError(e), i = s.message || s.toString(), n = formatJsonRpcError(t, i);\n    this.events.emit(\"payload\", n);\n  }\n  parseError(t, e = this.url) {\n    return parseConnectionError(t, e, \"HTTP\");\n  }\n  resetMaxListeners() {\n    this.events.getMaxListeners() > g && this.events.setMaxListeners(g);\n  }\n};\n\n// node_modules/@walletconnect/universal-provider/dist/index.es.js\nvar import_events2 = __toESM(require_events());\nvar D = \"error\";\nvar rt = \"wss://relay.walletconnect.org\";\nvar nt = \"wc\";\nvar at = \"universal_provider\";\nvar S = `${nt}@2:${at}:`;\nvar _ = \"https://rpc.walletconnect.org/v1/\";\nvar f2 = \"generic\";\nvar ot = `${_}bundler`;\nvar p2 = { DEFAULT_CHAIN_CHANGED: \"default_chain_changed\" };\nvar ct = Object.defineProperty;\nvar ht = Object.defineProperties;\nvar pt = Object.getOwnPropertyDescriptors;\nvar j2 = Object.getOwnPropertySymbols;\nvar dt = Object.prototype.hasOwnProperty;\nvar ut = Object.prototype.propertyIsEnumerable;\nvar R = (r, t, e) => t in r ? ct(r, t, { enumerable: true, configurable: true, writable: true, value: e }) : r[t] = e;\nvar g2 = (r, t) => {\n  for (var e in t || (t = {}))\n    dt.call(t, e) && R(r, e, t[e]);\n  if (j2)\n    for (var e of j2(t))\n      ut.call(t, e) && R(r, e, t[e]);\n  return r;\n};\nvar lt = (r, t) => ht(r, pt(t));\nfunction h(r, t, e) {\n  var s;\n  const i = re(r);\n  return ((s = t.rpcMap) == null ? void 0 : s[i.reference]) || `${_}?chainId=${i.namespace}:${i.reference}&projectId=${e}`;\n}\nfunction l2(r) {\n  return r.includes(\":\") ? r.split(\":\")[1] : r;\n}\nfunction U3(r) {\n  return r.map((t) => `${t.split(\":\")[0]}:${t.split(\":\")[1]}`);\n}\nfunction mt2(r, t) {\n  const e = Object.keys(t.namespaces).filter((i) => i.includes(r));\n  if (!e.length)\n    return [];\n  const s = [];\n  return e.forEach((i) => {\n    const n = t.namespaces[i].accounts;\n    s.push(...n);\n  }), s;\n}\nfunction $(r = {}, t = {}) {\n  const e = T2(r), s = T2(t);\n  return (0, import_lodash.merge)(e, s);\n}\nfunction T2(r) {\n  var t, e, s, i;\n  const n = {};\n  if (!Z(r))\n    return n;\n  for (const [a, c2] of Object.entries(r)) {\n    const m3 = Oe(a) ? [a] : c2.chains, I = c2.methods || [], V = c2.events || [], B = c2.rpcMap || {}, v3 = Dn(a);\n    n[v3] = lt(g2(g2({}, n[v3]), c2), { chains: N(m3, (t = n[v3]) == null ? void 0 : t.chains), methods: N(I, (e = n[v3]) == null ? void 0 : e.methods), events: N(V, (s = n[v3]) == null ? void 0 : s.events), rpcMap: g2(g2({}, B), (i = n[v3]) == null ? void 0 : i.rpcMap) });\n  }\n  return n;\n}\nfunction vt(r) {\n  return r.includes(\":\") ? r.split(\":\")[2] : r;\n}\nfunction k2(r) {\n  const t = {};\n  for (const [e, s] of Object.entries(r)) {\n    const i = s.methods || [], n = s.events || [], a = s.accounts || [], c2 = Oe(e) ? [e] : s.chains ? s.chains : U3(s.accounts);\n    t[e] = { chains: c2, methods: i, events: n, accounts: a };\n  }\n  return t;\n}\nfunction E2(r) {\n  return typeof r == \"number\" ? r : r.includes(\"0x\") ? parseInt(r, 16) : (r = r.includes(\":\") ? r.split(\":\")[1] : r, isNaN(Number(r)) ? r : Number(r));\n}\nvar L3 = {};\nvar o3 = (r) => L3[r];\nvar b = (r, t) => {\n  L3[r] = t;\n};\nvar ft = class {\n  constructor(t) {\n    this.name = \"polkadot\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  setDefaultChain(t, e) {\n    this.httpProviders[t] || this.setHttpProvider(t, e), this.chainId = t, this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${t}`);\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]) || [] : [];\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      var s;\n      const i = l2(e);\n      t[i] = this.createHttpProvider(i, (s = this.namespace.rpcMap) == null ? void 0 : s[e]);\n    }), t;\n  }\n  getHttpProvider() {\n    const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(t, this.namespace, this.client.core.projectId);\n    if (!s)\n      throw new Error(`No RPC url provided for chainId: ${t}`);\n    return new o(new f(s, o3(\"disableProviderPing\")));\n  }\n};\nvar Pt = Object.defineProperty;\nvar gt = Object.defineProperties;\nvar wt = Object.getOwnPropertyDescriptors;\nvar F = Object.getOwnPropertySymbols;\nvar Ct = Object.prototype.hasOwnProperty;\nvar It = Object.prototype.propertyIsEnumerable;\nvar G = (r, t, e) => t in r ? Pt(r, t, { enumerable: true, configurable: true, writable: true, value: e }) : r[t] = e;\nvar M = (r, t) => {\n  for (var e in t || (t = {}))\n    Ct.call(t, e) && G(r, e, t[e]);\n  if (F)\n    for (var e of F(t))\n      It.call(t, e) && G(r, e, t[e]);\n  return r;\n};\nvar x = (r, t) => gt(r, wt(t));\nvar Ht = class {\n  constructor(t) {\n    this.name = \"eip155\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.httpProviders = this.createHttpProviders(), this.chainId = parseInt(this.getDefaultChain());\n  }\n  async request(t) {\n    switch (t.request.method) {\n      case \"eth_requestAccounts\":\n        return this.getAccounts();\n      case \"eth_accounts\":\n        return this.getAccounts();\n      case \"wallet_switchEthereumChain\":\n        return await this.handleSwitchChain(t);\n      case \"eth_chainId\":\n        return parseInt(this.getDefaultChain());\n      case \"wallet_getCapabilities\":\n        return await this.getCapabilities(t);\n      case \"wallet_getCallsStatus\":\n        return await this.getCallStatus(t);\n    }\n    return this.namespace.methods.includes(t.request.method) ? await this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  setDefaultChain(t, e) {\n    this.httpProviders[t] || this.setHttpProvider(parseInt(t), e), this.chainId = parseInt(t), this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${t}`);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId.toString();\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(`${this.name}:${t}`, this.namespace, this.client.core.projectId);\n    if (!s)\n      throw new Error(`No RPC url provided for chainId: ${t}`);\n    return new o(new f(s, o3(\"disableProviderPing\")));\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      var s;\n      const i = parseInt(l2(e));\n      t[i] = this.createHttpProvider(i, (s = this.namespace.rpcMap) == null ? void 0 : s[e]);\n    }), t;\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? [...new Set(t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]))] : [];\n  }\n  getHttpProvider() {\n    const t = this.chainId, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  async handleSwitchChain(t) {\n    var e, s;\n    let i = t.request.params ? (e = t.request.params[0]) == null ? void 0 : e.chainId : \"0x0\";\n    i = i.startsWith(\"0x\") ? i : `0x${i}`;\n    const n = parseInt(i, 16);\n    if (this.isChainApproved(n))\n      this.setDefaultChain(`${n}`);\n    else if (this.namespace.methods.includes(\"wallet_switchEthereumChain\"))\n      await this.client.request({ topic: t.topic, request: { method: t.request.method, params: [{ chainId: i }] }, chainId: (s = this.namespace.chains) == null ? void 0 : s[0] }), this.setDefaultChain(`${n}`);\n    else\n      throw new Error(`Failed to switch to chain 'eip155:${n}'. The chain is not approved or the wallet does not support 'wallet_switchEthereumChain' method.`);\n    return null;\n  }\n  isChainApproved(t) {\n    return this.namespace.chains.includes(`${this.name}:${t}`);\n  }\n  async getCapabilities(t) {\n    var e, s, i;\n    const n = (s = (e = t.request) == null ? void 0 : e.params) == null ? void 0 : s[0];\n    if (!n)\n      throw new Error(\"Missing address parameter in `wallet_getCapabilities` request\");\n    const a = this.client.session.get(t.topic), c2 = ((i = a == null ? void 0 : a.sessionProperties) == null ? void 0 : i.capabilities) || {};\n    if (c2 != null && c2[n])\n      return c2 == null ? void 0 : c2[n];\n    const m3 = await this.client.request(t);\n    try {\n      await this.client.session.update(t.topic, { sessionProperties: x(M({}, a.sessionProperties || {}), { capabilities: x(M({}, c2 || {}), { [n]: m3 }) }) });\n    } catch (I) {\n      console.warn(\"Failed to update session with capabilities\", I);\n    }\n    return m3;\n  }\n  async getCallStatus(t) {\n    var e, s;\n    const i = this.client.session.get(t.topic), n = (e = i.sessionProperties) == null ? void 0 : e.bundler_name;\n    if (n) {\n      const c2 = this.getBundlerUrl(t.chainId, n);\n      try {\n        return await this.getUserOperationReceipt(c2, t);\n      } catch (m3) {\n        console.warn(\"Failed to fetch call status from bundler\", m3, c2);\n      }\n    }\n    const a = (s = i.sessionProperties) == null ? void 0 : s.bundler_url;\n    if (a)\n      try {\n        return await this.getUserOperationReceipt(a, t);\n      } catch (c2) {\n        console.warn(\"Failed to fetch call status from custom bundler\", c2, a);\n      }\n    if (this.namespace.methods.includes(t.request.method))\n      return await this.client.request(t);\n    throw new Error(\"Fetching call status not approved by the wallet.\");\n  }\n  async getUserOperationReceipt(t, e) {\n    var s;\n    const i = new URL(t), n = await fetch(i, { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify(formatJsonRpcRequest(\"eth_getUserOperationReceipt\", [(s = e.request.params) == null ? void 0 : s[0]])) });\n    if (!n.ok)\n      throw new Error(`Failed to fetch user operation receipt - ${n.status}`);\n    return await n.json();\n  }\n  getBundlerUrl(t, e) {\n    return `${ot}?projectId=${this.client.core.projectId}&chainId=${t}&bundler=${e}`;\n  }\n};\nvar $t = class {\n  constructor(t) {\n    this.name = \"solana\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  setDefaultChain(t, e) {\n    this.httpProviders[t] || this.setHttpProvider(t, e), this.chainId = t, this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${t}`);\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? [...new Set(t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]))] : [];\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      var s;\n      const i = l2(e);\n      t[i] = this.createHttpProvider(i, (s = this.namespace.rpcMap) == null ? void 0 : s[e]);\n    }), t;\n  }\n  getHttpProvider() {\n    const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(t, this.namespace, this.client.core.projectId);\n    if (!s)\n      throw new Error(`No RPC url provided for chainId: ${t}`);\n    return new o(new f(s, o3(\"disableProviderPing\")));\n  }\n};\nvar Et = class {\n  constructor(t) {\n    this.name = \"cosmos\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  setDefaultChain(t, e) {\n    this.httpProviders[t] || this.setHttpProvider(t, e), this.chainId = t, this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${this.chainId}`);\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? [...new Set(t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]))] : [];\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      var s;\n      const i = l2(e);\n      t[i] = this.createHttpProvider(i, (s = this.namespace.rpcMap) == null ? void 0 : s[e]);\n    }), t;\n  }\n  getHttpProvider() {\n    const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(t, this.namespace, this.client.core.projectId);\n    if (!s)\n      throw new Error(`No RPC url provided for chainId: ${t}`);\n    return new o(new f(s, o3(\"disableProviderPing\")));\n  }\n};\nvar bt = class {\n  constructor(t) {\n    this.name = \"algorand\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  setDefaultChain(t, e) {\n    if (!this.httpProviders[t]) {\n      const s = e || h(`${this.name}:${t}`, this.namespace, this.client.core.projectId);\n      if (!s)\n        throw new Error(`No RPC url provided for chainId: ${t}`);\n      this.setHttpProvider(t, s);\n    }\n    this.chainId = t, this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${this.chainId}`);\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? [...new Set(t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]))] : [];\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      var s;\n      t[e] = this.createHttpProvider(e, (s = this.namespace.rpcMap) == null ? void 0 : s[e]);\n    }), t;\n  }\n  getHttpProvider() {\n    const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(t, this.namespace, this.client.core.projectId);\n    return typeof s > \"u\" ? void 0 : new o(new f(s, o3(\"disableProviderPing\")));\n  }\n};\nvar At = class {\n  constructor(t) {\n    this.name = \"cip34\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  setDefaultChain(t, e) {\n    this.httpProviders[t] || this.setHttpProvider(t, e), this.chainId = t, this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${this.chainId}`);\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? [...new Set(t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]))] : [];\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      const s = this.getCardanoRPCUrl(e), i = l2(e);\n      t[i] = this.createHttpProvider(i, s);\n    }), t;\n  }\n  getHttpProvider() {\n    const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  getCardanoRPCUrl(t) {\n    const e = this.namespace.rpcMap;\n    if (e)\n      return e[t];\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || this.getCardanoRPCUrl(t);\n    if (!s)\n      throw new Error(`No RPC url provided for chainId: ${t}`);\n    return new o(new f(s, o3(\"disableProviderPing\")));\n  }\n};\nvar Nt = class {\n  constructor(t) {\n    this.name = \"elrond\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  setDefaultChain(t, e) {\n    this.httpProviders[t] || this.setHttpProvider(t, e), this.chainId = t, this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${t}`);\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? [...new Set(t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]))] : [];\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      var s;\n      const i = l2(e);\n      t[i] = this.createHttpProvider(i, (s = this.namespace.rpcMap) == null ? void 0 : s[e]);\n    }), t;\n  }\n  getHttpProvider() {\n    const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(t, this.namespace, this.client.core.projectId);\n    if (!s)\n      throw new Error(`No RPC url provided for chainId: ${t}`);\n    return new o(new f(s, o3(\"disableProviderPing\")));\n  }\n};\nvar yt = class {\n  constructor(t) {\n    this.name = \"multiversx\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  setDefaultChain(t, e) {\n    this.httpProviders[t] || this.setHttpProvider(t, e), this.chainId = t, this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${t}`);\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? [...new Set(t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]))] : [];\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      var s;\n      const i = l2(e);\n      t[i] = this.createHttpProvider(i, (s = this.namespace.rpcMap) == null ? void 0 : s[e]);\n    }), t;\n  }\n  getHttpProvider() {\n    const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(t, this.namespace, this.client.core.projectId);\n    if (!s)\n      throw new Error(`No RPC url provided for chainId: ${t}`);\n    return new o(new f(s, o3(\"disableProviderPing\")));\n  }\n};\nvar Ot = class {\n  constructor(t) {\n    this.name = \"near\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  setDefaultChain(t, e) {\n    if (this.chainId = t, !this.httpProviders[t]) {\n      const s = e || h(`${this.name}:${t}`, this.namespace);\n      if (!s)\n        throw new Error(`No RPC url provided for chainId: ${t}`);\n      this.setHttpProvider(t, s);\n    }\n    this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${this.chainId}`);\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]) || [] : [];\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      var s;\n      t[e] = this.createHttpProvider(e, (s = this.namespace.rpcMap) == null ? void 0 : s[e]);\n    }), t;\n  }\n  getHttpProvider() {\n    const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(t, this.namespace);\n    return typeof s > \"u\" ? void 0 : new o(new f(s, o3(\"disableProviderPing\")));\n  }\n};\nvar qt = class {\n  constructor(t) {\n    this.name = \"tezos\", this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace = Object.assign(this.namespace, t);\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider().request(t.request);\n  }\n  setDefaultChain(t, e) {\n    if (this.chainId = t, !this.httpProviders[t]) {\n      const s = e || h(`${this.name}:${t}`, this.namespace);\n      if (!s)\n        throw new Error(`No RPC url provided for chainId: ${t}`);\n      this.setHttpProvider(t, s);\n    }\n    this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${this.chainId}`);\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]) || [] : [];\n  }\n  createHttpProviders() {\n    const t = {};\n    return this.namespace.chains.forEach((e) => {\n      t[e] = this.createHttpProvider(e);\n    }), t;\n  }\n  getHttpProvider() {\n    const t = `${this.name}:${this.chainId}`, e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(t, this.namespace);\n    return typeof s > \"u\" ? void 0 : new o(new f(s));\n  }\n};\nvar Dt = class {\n  constructor(t) {\n    this.name = f2, this.namespace = t.namespace, this.events = o3(\"events\"), this.client = o3(\"client\"), this.chainId = this.getDefaultChain(), this.httpProviders = this.createHttpProviders();\n  }\n  updateNamespace(t) {\n    this.namespace.chains = [...new Set((this.namespace.chains || []).concat(t.chains || []))], this.namespace.accounts = [...new Set((this.namespace.accounts || []).concat(t.accounts || []))], this.namespace.methods = [...new Set((this.namespace.methods || []).concat(t.methods || []))], this.namespace.events = [...new Set((this.namespace.events || []).concat(t.events || []))], this.httpProviders = this.createHttpProviders();\n  }\n  requestAccounts() {\n    return this.getAccounts();\n  }\n  request(t) {\n    return this.namespace.methods.includes(t.request.method) ? this.client.request(t) : this.getHttpProvider(t.chainId).request(t.request);\n  }\n  setDefaultChain(t, e) {\n    this.httpProviders[t] || this.setHttpProvider(t, e), this.chainId = t, this.events.emit(p2.DEFAULT_CHAIN_CHANGED, `${this.name}:${t}`);\n  }\n  getDefaultChain() {\n    if (this.chainId)\n      return this.chainId;\n    if (this.namespace.defaultChain)\n      return this.namespace.defaultChain;\n    const t = this.namespace.chains[0];\n    if (!t)\n      throw new Error(\"ChainId not found\");\n    return t.split(\":\")[1];\n  }\n  getAccounts() {\n    const t = this.namespace.accounts;\n    return t ? [...new Set(t.filter((e) => e.split(\":\")[1] === this.chainId.toString()).map((e) => e.split(\":\")[2]))] : [];\n  }\n  createHttpProviders() {\n    var t, e;\n    const s = {};\n    return (e = (t = this.namespace) == null ? void 0 : t.accounts) == null || e.forEach((i) => {\n      const n = re(i);\n      s[`${n.namespace}:${n.reference}`] = this.createHttpProvider(i);\n    }), s;\n  }\n  getHttpProvider(t) {\n    const e = this.httpProviders[t];\n    if (typeof e > \"u\")\n      throw new Error(`JSON-RPC provider for ${t} not found`);\n    return e;\n  }\n  setHttpProvider(t, e) {\n    const s = this.createHttpProvider(t, e);\n    s && (this.httpProviders[t] = s);\n  }\n  createHttpProvider(t, e) {\n    const s = e || h(t, this.namespace, this.client.core.projectId);\n    if (!s)\n      throw new Error(`No RPC url provided for chainId: ${t}`);\n    return new o(new f(s, o3(\"disableProviderPing\")));\n  }\n};\nvar St = Object.defineProperty;\nvar _t = Object.defineProperties;\nvar jt = Object.getOwnPropertyDescriptors;\nvar J = Object.getOwnPropertySymbols;\nvar Rt = Object.prototype.hasOwnProperty;\nvar Ut = Object.prototype.propertyIsEnumerable;\nvar z = (r, t, e) => t in r ? St(r, t, { enumerable: true, configurable: true, writable: true, value: e }) : r[t] = e;\nvar w2 = (r, t) => {\n  for (var e in t || (t = {}))\n    Rt.call(t, e) && z(r, e, t[e]);\n  if (J)\n    for (var e of J(t))\n      Ut.call(t, e) && z(r, e, t[e]);\n  return r;\n};\nvar A = (r, t) => _t(r, jt(t));\nvar C = class _C {\n  constructor(t) {\n    this.events = new import_events2.default(), this.rpcProviders = {}, this.shouldAbortPairingAttempt = false, this.maxPairingAttempts = 10, this.disableProviderPing = false, this.providerOpts = t, this.logger = typeof (t == null ? void 0 : t.logger) < \"u\" && typeof (t == null ? void 0 : t.logger) != \"string\" ? t.logger : (0, import_pino.default)(k({ level: (t == null ? void 0 : t.logger) || D })), this.disableProviderPing = (t == null ? void 0 : t.disableProviderPing) || false;\n  }\n  static async init(t) {\n    const e = new _C(t);\n    return await e.initialize(), e;\n  }\n  async request(t, e, s) {\n    const [i, n] = this.validateChain(e);\n    if (!this.session)\n      throw new Error(\"Please call connect() before request()\");\n    return await this.getProvider(i).request({ request: w2({}, t), chainId: `${i}:${n}`, topic: this.session.topic, expiry: s });\n  }\n  sendAsync(t, e, s, i) {\n    const n = (/* @__PURE__ */ new Date()).getTime();\n    this.request(t, s, i).then((a) => e(null, formatJsonRpcResult(n, a))).catch((a) => e(a, void 0));\n  }\n  async enable() {\n    if (!this.client)\n      throw new Error(\"Sign Client not initialized\");\n    return this.session || await this.connect({ namespaces: this.namespaces, optionalNamespaces: this.optionalNamespaces, sessionProperties: this.sessionProperties }), await this.requestAccounts();\n  }\n  async disconnect() {\n    var t;\n    if (!this.session)\n      throw new Error(\"Please call connect() before enable()\");\n    await this.client.disconnect({ topic: (t = this.session) == null ? void 0 : t.topic, reason: U(\"USER_DISCONNECTED\") }), await this.cleanup();\n  }\n  async connect(t) {\n    if (!this.client)\n      throw new Error(\"Sign Client not initialized\");\n    if (this.setNamespaces(t), await this.cleanupPendingPairings(), !t.skipPairing)\n      return await this.pair(t.pairingTopic);\n  }\n  async authenticate(t, e) {\n    if (!this.client)\n      throw new Error(\"Sign Client not initialized\");\n    this.setNamespaces(t), await this.cleanupPendingPairings();\n    const { uri: s, response: i } = await this.client.authenticate(t, e);\n    s && (this.uri = s, this.events.emit(\"display_uri\", s));\n    const n = await i();\n    if (this.session = n.session, this.session) {\n      const a = k2(this.session.namespaces);\n      this.namespaces = $(this.namespaces, a), this.persist(\"namespaces\", this.namespaces), this.onConnect();\n    }\n    return n;\n  }\n  on(t, e) {\n    this.events.on(t, e);\n  }\n  once(t, e) {\n    this.events.once(t, e);\n  }\n  removeListener(t, e) {\n    this.events.removeListener(t, e);\n  }\n  off(t, e) {\n    this.events.off(t, e);\n  }\n  get isWalletConnect() {\n    return true;\n  }\n  async pair(t) {\n    this.shouldAbortPairingAttempt = false;\n    let e = 0;\n    do {\n      if (this.shouldAbortPairingAttempt)\n        throw new Error(\"Pairing aborted\");\n      if (e >= this.maxPairingAttempts)\n        throw new Error(\"Max auto pairing attempts reached\");\n      const { uri: s, approval: i } = await this.client.connect({ pairingTopic: t, requiredNamespaces: this.namespaces, optionalNamespaces: this.optionalNamespaces, sessionProperties: this.sessionProperties });\n      s && (this.uri = s, this.events.emit(\"display_uri\", s)), await i().then((n) => {\n        this.session = n;\n        const a = k2(n.namespaces);\n        this.namespaces = $(this.namespaces, a), this.persist(\"namespaces\", this.namespaces);\n      }).catch((n) => {\n        if (n.message !== it)\n          throw n;\n        e++;\n      });\n    } while (!this.session);\n    return this.onConnect(), this.session;\n  }\n  setDefaultChain(t, e) {\n    try {\n      if (!this.session)\n        return;\n      const [s, i] = this.validateChain(t), n = this.getProvider(s);\n      n.name === f2 ? n.setDefaultChain(`${s}:${i}`, e) : n.setDefaultChain(i, e);\n    } catch (s) {\n      if (!/Please call connect/.test(s.message))\n        throw s;\n    }\n  }\n  async cleanupPendingPairings(t = {}) {\n    this.logger.info(\"Cleaning up inactive pairings...\");\n    const e = this.client.pairing.getAll();\n    if (L(e)) {\n      for (const s of e)\n        t.deletePairings ? this.client.core.expirer.set(s.topic, 0) : await this.client.core.relayer.subscriber.unsubscribe(s.topic);\n      this.logger.info(`Inactive pairings cleared: ${e.length}`);\n    }\n  }\n  abortPairingAttempt() {\n    this.shouldAbortPairingAttempt = true;\n  }\n  async checkStorage() {\n    if (this.namespaces = await this.getFromStore(\"namespaces\"), this.optionalNamespaces = await this.getFromStore(\"optionalNamespaces\") || {}, this.client.session.length) {\n      const t = this.client.session.keys.length - 1;\n      this.session = this.client.session.get(this.client.session.keys[t]), this.createProviders();\n    }\n  }\n  async initialize() {\n    this.logger.trace(\"Initialized\"), await this.createClient(), await this.checkStorage(), this.registerEventListeners();\n  }\n  async createClient() {\n    this.client = this.providerOpts.client || await _e.init({ core: this.providerOpts.core, logger: this.providerOpts.logger || D, relayUrl: this.providerOpts.relayUrl || rt, projectId: this.providerOpts.projectId, metadata: this.providerOpts.metadata, storageOptions: this.providerOpts.storageOptions, storage: this.providerOpts.storage, name: this.providerOpts.name, customStoragePrefix: this.providerOpts.customStoragePrefix, telemetryEnabled: this.providerOpts.telemetryEnabled }), this.logger.trace(\"SignClient Initialized\");\n  }\n  createProviders() {\n    if (!this.client)\n      throw new Error(\"Sign Client not initialized\");\n    if (!this.session)\n      throw new Error(\"Session not initialized. Please call connect() before enable()\");\n    const t = [...new Set(Object.keys(this.session.namespaces).map((e) => Dn(e)))];\n    b(\"client\", this.client), b(\"events\", this.events), b(\"disableProviderPing\", this.disableProviderPing), t.forEach((e) => {\n      if (!this.session)\n        return;\n      const s = mt2(e, this.session), i = U3(s), n = $(this.namespaces, this.optionalNamespaces), a = A(w2({}, n[e]), { accounts: s, chains: i });\n      switch (e) {\n        case \"eip155\":\n          this.rpcProviders[e] = new Ht({ namespace: a });\n          break;\n        case \"algorand\":\n          this.rpcProviders[e] = new bt({ namespace: a });\n          break;\n        case \"solana\":\n          this.rpcProviders[e] = new $t({ namespace: a });\n          break;\n        case \"cosmos\":\n          this.rpcProviders[e] = new Et({ namespace: a });\n          break;\n        case \"polkadot\":\n          this.rpcProviders[e] = new ft({ namespace: a });\n          break;\n        case \"cip34\":\n          this.rpcProviders[e] = new At({ namespace: a });\n          break;\n        case \"elrond\":\n          this.rpcProviders[e] = new Nt({ namespace: a });\n          break;\n        case \"multiversx\":\n          this.rpcProviders[e] = new yt({ namespace: a });\n          break;\n        case \"near\":\n          this.rpcProviders[e] = new Ot({ namespace: a });\n          break;\n        case \"tezos\":\n          this.rpcProviders[e] = new qt({ namespace: a });\n          break;\n        default:\n          this.rpcProviders[f2] ? this.rpcProviders[f2].updateNamespace(a) : this.rpcProviders[f2] = new Dt({ namespace: a });\n      }\n    });\n  }\n  registerEventListeners() {\n    if (typeof this.client > \"u\")\n      throw new Error(\"Sign Client is not initialized\");\n    this.client.on(\"session_ping\", (t) => {\n      this.events.emit(\"session_ping\", t);\n    }), this.client.on(\"session_event\", (t) => {\n      const { params: e } = t, { event: s } = e;\n      if (s.name === \"accountsChanged\") {\n        const i = s.data;\n        i && L(i) && this.events.emit(\"accountsChanged\", i.map(vt));\n      } else if (s.name === \"chainChanged\") {\n        const i = e.chainId, n = e.event.data, a = Dn(i), c2 = E2(i) !== E2(n) ? `${a}:${E2(n)}` : i;\n        this.onChainChanged(c2);\n      } else\n        this.events.emit(s.name, s.data);\n      this.events.emit(\"session_event\", t);\n    }), this.client.on(\"session_update\", ({ topic: t, params: e }) => {\n      var s;\n      const { namespaces: i } = e, n = (s = this.client) == null ? void 0 : s.session.get(t);\n      this.session = A(w2({}, n), { namespaces: i }), this.onSessionUpdate(), this.events.emit(\"session_update\", { topic: t, params: e });\n    }), this.client.on(\"session_delete\", async (t) => {\n      await this.cleanup(), this.events.emit(\"session_delete\", t), this.events.emit(\"disconnect\", A(w2({}, U(\"USER_DISCONNECTED\")), { data: t.topic }));\n    }), this.on(p2.DEFAULT_CHAIN_CHANGED, (t) => {\n      this.onChainChanged(t, true);\n    });\n  }\n  getProvider(t) {\n    return this.rpcProviders[t] || this.rpcProviders[f2];\n  }\n  onSessionUpdate() {\n    Object.keys(this.rpcProviders).forEach((t) => {\n      var e;\n      this.getProvider(t).updateNamespace((e = this.session) == null ? void 0 : e.namespaces[t]);\n    });\n  }\n  setNamespaces(t) {\n    const { namespaces: e, optionalNamespaces: s, sessionProperties: i } = t;\n    e && Object.keys(e).length && (this.namespaces = e), s && Object.keys(s).length && (this.optionalNamespaces = s), this.sessionProperties = i, this.persist(\"namespaces\", e), this.persist(\"optionalNamespaces\", s);\n  }\n  validateChain(t) {\n    const [e, s] = (t == null ? void 0 : t.split(\":\")) || [\"\", \"\"];\n    if (!this.namespaces || !Object.keys(this.namespaces).length)\n      return [e, s];\n    if (e && !Object.keys(this.namespaces || {}).map((a) => Dn(a)).includes(e))\n      throw new Error(`Namespace '${e}' is not configured. Please call connect() first with namespace config.`);\n    if (e && s)\n      return [e, s];\n    const i = Dn(Object.keys(this.namespaces)[0]), n = this.rpcProviders[i].getDefaultChain();\n    return [i, n];\n  }\n  async requestAccounts() {\n    const [t] = this.validateChain();\n    return await this.getProvider(t).requestAccounts();\n  }\n  onChainChanged(t, e = false) {\n    if (!this.namespaces)\n      return;\n    const [s, i] = this.validateChain(t);\n    i && (e || this.getProvider(s).setDefaultChain(i), this.namespaces[s] ? this.namespaces[s].defaultChain = i : this.namespaces[`${s}:${i}`] ? this.namespaces[`${s}:${i}`].defaultChain = i : this.namespaces[`${s}:${i}`] = { defaultChain: i }, this.persist(\"namespaces\", this.namespaces), this.events.emit(\"chainChanged\", i));\n  }\n  onConnect() {\n    this.createProviders(), this.events.emit(\"connect\", { session: this.session });\n  }\n  async cleanup() {\n    this.session = void 0, this.namespaces = void 0, this.optionalNamespaces = void 0, this.sessionProperties = void 0, this.persist(\"namespaces\", void 0), this.persist(\"optionalNamespaces\", void 0), this.persist(\"sessionProperties\", void 0), await this.cleanupPendingPairings({ deletePairings: true });\n  }\n  persist(t, e) {\n    this.client.core.storage.setItem(`${S}/${t}`, e);\n  }\n  async getFromStore(t) {\n    return await this.client.core.storage.getItem(`${S}/${t}`);\n  }\n};\nvar Tt = C;\n\n// node_modules/@walletconnect/ethereum-provider/dist/index.es.js\nvar R2 = \"wc\";\nvar T3 = \"ethereum_provider\";\nvar $2 = `${R2}@2:${T3}:`;\nvar j3 = \"https://rpc.walletconnect.org/v1/\";\nvar u = [\"eth_sendTransaction\", \"personal_sign\"];\nvar y = [\"eth_accounts\", \"eth_requestAccounts\", \"eth_sendRawTransaction\", \"eth_sign\", \"eth_signTransaction\", \"eth_signTypedData\", \"eth_signTypedData_v3\", \"eth_signTypedData_v4\", \"eth_sendTransaction\", \"personal_sign\", \"wallet_switchEthereumChain\", \"wallet_addEthereumChain\", \"wallet_getPermissions\", \"wallet_requestPermissions\", \"wallet_registerOnboarding\", \"wallet_watchAsset\", \"wallet_scanQRCode\", \"wallet_sendCalls\", \"wallet_getCapabilities\", \"wallet_getCallsStatus\", \"wallet_showCallsStatus\"];\nvar g3 = [\"chainChanged\", \"accountsChanged\"];\nvar b2 = [\"chainChanged\", \"accountsChanged\", \"message\", \"disconnect\", \"connect\"];\nvar q = Object.defineProperty;\nvar N2 = Object.defineProperties;\nvar D2 = Object.getOwnPropertyDescriptors;\nvar M2 = Object.getOwnPropertySymbols;\nvar U4 = Object.prototype.hasOwnProperty;\nvar Q = Object.prototype.propertyIsEnumerable;\nvar O2 = (r, t, s) => t in r ? q(r, t, { enumerable: true, configurable: true, writable: true, value: s }) : r[t] = s;\nvar p3 = (r, t) => {\n  for (var s in t || (t = {}))\n    U4.call(t, s) && O2(r, s, t[s]);\n  if (M2)\n    for (var s of M2(t))\n      Q.call(t, s) && O2(r, s, t[s]);\n  return r;\n};\nvar E3 = (r, t) => N2(r, D2(t));\nfunction m2(r) {\n  return Number(r[0].split(\":\")[1]);\n}\nfunction v2(r) {\n  return `0x${r.toString(16)}`;\n}\nfunction L4(r) {\n  const { chains: t, optionalChains: s, methods: i, optionalMethods: e, events: n, optionalEvents: o4, rpcMap: c2 } = r;\n  if (!L(t))\n    throw new Error(\"Invalid chains\");\n  const a = { chains: t, methods: i || u, events: n || g3, rpcMap: p3({}, t.length ? { [m2(t)]: c2[m2(t)] } : {}) }, h2 = n == null ? void 0 : n.filter((l3) => !g3.includes(l3)), d2 = i == null ? void 0 : i.filter((l3) => !u.includes(l3));\n  if (!s && !o4 && !e && !(h2 != null && h2.length) && !(d2 != null && d2.length))\n    return { required: t.length ? a : void 0 };\n  const w3 = (h2 == null ? void 0 : h2.length) && (d2 == null ? void 0 : d2.length) || !s, I = { chains: [...new Set(w3 ? a.chains.concat(s || []) : s)], methods: [...new Set(a.methods.concat(e != null && e.length ? e : y))], events: [...new Set(a.events.concat(o4 != null && o4.length ? o4 : b2))], rpcMap: c2 };\n  return { required: t.length ? a : void 0, optional: s.length ? I : void 0 };\n}\nvar C2 = class _C {\n  constructor() {\n    this.events = new import_events3.EventEmitter(), this.namespace = \"eip155\", this.accounts = [], this.chainId = 1, this.STORAGE_KEY = $2, this.on = (t, s) => (this.events.on(t, s), this), this.once = (t, s) => (this.events.once(t, s), this), this.removeListener = (t, s) => (this.events.removeListener(t, s), this), this.off = (t, s) => (this.events.off(t, s), this), this.parseAccount = (t) => this.isCompatibleChainId(t) ? this.parseAccountId(t).address : t, this.signer = {}, this.rpc = {};\n  }\n  static async init(t) {\n    const s = new _C();\n    return await s.initialize(t), s;\n  }\n  async request(t, s) {\n    return await this.signer.request(t, this.formatChainId(this.chainId), s);\n  }\n  sendAsync(t, s, i) {\n    this.signer.sendAsync(t, s, this.formatChainId(this.chainId), i);\n  }\n  get connected() {\n    return this.signer.client ? this.signer.client.core.relayer.connected : false;\n  }\n  get connecting() {\n    return this.signer.client ? this.signer.client.core.relayer.connecting : false;\n  }\n  async enable() {\n    return this.session || await this.connect(), await this.request({ method: \"eth_requestAccounts\" });\n  }\n  async connect(t) {\n    if (!this.signer.client)\n      throw new Error(\"Provider not initialized. Call init() first\");\n    this.loadConnectOpts(t);\n    const { required: s, optional: i } = L4(this.rpc);\n    try {\n      const e = await new Promise(async (o4, c2) => {\n        var a;\n        this.rpc.showQrModal && ((a = this.modal) == null || a.subscribeModal((h2) => {\n          !h2.open && !this.signer.session && (this.signer.abortPairingAttempt(), c2(new Error(\"Connection request reset. Please try again.\")));\n        })), await this.signer.connect(E3(p3({ namespaces: p3({}, s && { [this.namespace]: s }) }, i && { optionalNamespaces: { [this.namespace]: i } }), { pairingTopic: t == null ? void 0 : t.pairingTopic })).then((h2) => {\n          o4(h2);\n        }).catch((h2) => {\n          c2(new Error(h2.message));\n        });\n      });\n      if (!e)\n        return;\n      const n = mt(e.namespaces, [this.namespace]);\n      this.setChainIds(this.rpc.chains.length ? this.rpc.chains : n), this.setAccounts(n), this.events.emit(\"connect\", { chainId: v2(this.chainId) });\n    } catch (e) {\n      throw this.signer.logger.error(e), e;\n    } finally {\n      this.modal && this.modal.closeModal();\n    }\n  }\n  async authenticate(t, s) {\n    if (!this.signer.client)\n      throw new Error(\"Provider not initialized. Call init() first\");\n    this.loadConnectOpts({ chains: t == null ? void 0 : t.chains });\n    try {\n      const i = await new Promise(async (n, o4) => {\n        var c2;\n        this.rpc.showQrModal && ((c2 = this.modal) == null || c2.subscribeModal((a) => {\n          !a.open && !this.signer.session && (this.signer.abortPairingAttempt(), o4(new Error(\"Connection request reset. Please try again.\")));\n        })), await this.signer.authenticate(E3(p3({}, t), { chains: this.rpc.chains }), s).then((a) => {\n          n(a);\n        }).catch((a) => {\n          o4(new Error(a.message));\n        });\n      }), e = i.session;\n      if (e) {\n        const n = mt(e.namespaces, [this.namespace]);\n        this.setChainIds(this.rpc.chains.length ? this.rpc.chains : n), this.setAccounts(n), this.events.emit(\"connect\", { chainId: v2(this.chainId) });\n      }\n      return i;\n    } catch (i) {\n      throw this.signer.logger.error(i), i;\n    } finally {\n      this.modal && this.modal.closeModal();\n    }\n  }\n  async disconnect() {\n    this.session && await this.signer.disconnect(), this.reset();\n  }\n  get isWalletConnect() {\n    return true;\n  }\n  get session() {\n    return this.signer.session;\n  }\n  registerEventListeners() {\n    this.signer.on(\"session_event\", (t) => {\n      const { params: s } = t, { event: i } = s;\n      i.name === \"accountsChanged\" ? (this.accounts = this.parseAccounts(i.data), this.events.emit(\"accountsChanged\", this.accounts)) : i.name === \"chainChanged\" ? this.setChainId(this.formatChainId(i.data)) : this.events.emit(i.name, i.data), this.events.emit(\"session_event\", t);\n    }), this.signer.on(\"chainChanged\", (t) => {\n      const s = parseInt(t);\n      this.chainId = s, this.events.emit(\"chainChanged\", v2(this.chainId)), this.persist();\n    }), this.signer.on(\"session_update\", (t) => {\n      this.events.emit(\"session_update\", t);\n    }), this.signer.on(\"session_delete\", (t) => {\n      this.reset(), this.events.emit(\"session_delete\", t), this.events.emit(\"disconnect\", E3(p3({}, U(\"USER_DISCONNECTED\")), { data: t.topic, name: \"USER_DISCONNECTED\" }));\n    }), this.signer.on(\"display_uri\", (t) => {\n      var s, i;\n      this.rpc.showQrModal && ((s = this.modal) == null || s.closeModal(), (i = this.modal) == null || i.openModal({ uri: t })), this.events.emit(\"display_uri\", t);\n    });\n  }\n  switchEthereumChain(t) {\n    this.request({ method: \"wallet_switchEthereumChain\", params: [{ chainId: t.toString(16) }] });\n  }\n  isCompatibleChainId(t) {\n    return typeof t == \"string\" ? t.startsWith(`${this.namespace}:`) : false;\n  }\n  formatChainId(t) {\n    return `${this.namespace}:${t}`;\n  }\n  parseChainId(t) {\n    return Number(t.split(\":\")[1]);\n  }\n  setChainIds(t) {\n    const s = t.filter((i) => this.isCompatibleChainId(i)).map((i) => this.parseChainId(i));\n    s.length && (this.chainId = s[0], this.events.emit(\"chainChanged\", v2(this.chainId)), this.persist());\n  }\n  setChainId(t) {\n    if (this.isCompatibleChainId(t)) {\n      const s = this.parseChainId(t);\n      this.chainId = s, this.switchEthereumChain(s);\n    }\n  }\n  parseAccountId(t) {\n    const [s, i, e] = t.split(\":\");\n    return { chainId: `${s}:${i}`, address: e };\n  }\n  setAccounts(t) {\n    this.accounts = t.filter((s) => this.parseChainId(this.parseAccountId(s).chainId) === this.chainId).map((s) => this.parseAccountId(s).address), this.events.emit(\"accountsChanged\", this.accounts);\n  }\n  getRpcConfig(t) {\n    var s, i;\n    const e = (s = t == null ? void 0 : t.chains) != null ? s : [], n = (i = t == null ? void 0 : t.optionalChains) != null ? i : [], o4 = e.concat(n);\n    if (!o4.length)\n      throw new Error(\"No chains specified in either `chains` or `optionalChains`\");\n    const c2 = e.length ? (t == null ? void 0 : t.methods) || u : [], a = e.length ? (t == null ? void 0 : t.events) || g3 : [], h2 = (t == null ? void 0 : t.optionalMethods) || [], d2 = (t == null ? void 0 : t.optionalEvents) || [], w3 = (t == null ? void 0 : t.rpcMap) || this.buildRpcMap(o4, t.projectId), I = (t == null ? void 0 : t.qrModalOptions) || void 0;\n    return { chains: e == null ? void 0 : e.map((l3) => this.formatChainId(l3)), optionalChains: n.map((l3) => this.formatChainId(l3)), methods: c2, events: a, optionalMethods: h2, optionalEvents: d2, rpcMap: w3, showQrModal: !!(t != null && t.showQrModal), qrModalOptions: I, projectId: t.projectId, metadata: t.metadata };\n  }\n  buildRpcMap(t, s) {\n    const i = {};\n    return t.forEach((e) => {\n      i[e] = this.getRpcUrl(e, s);\n    }), i;\n  }\n  async initialize(t) {\n    if (this.rpc = this.getRpcConfig(t), this.chainId = this.rpc.chains.length ? m2(this.rpc.chains) : m2(this.rpc.optionalChains), this.signer = await Tt.init({ projectId: this.rpc.projectId, metadata: this.rpc.metadata, disableProviderPing: t.disableProviderPing, relayUrl: t.relayUrl, storageOptions: t.storageOptions, customStoragePrefix: t.customStoragePrefix, telemetryEnabled: t.telemetryEnabled }), this.registerEventListeners(), await this.loadPersistedSession(), this.rpc.showQrModal) {\n      let s;\n      try {\n        const { WalletConnectModal: i } = await import(\"./dist-JQ3EDHJY.js\");\n        s = i;\n      } catch {\n        throw new Error(\"To use QR modal, please install @walletconnect/modal package\");\n      }\n      if (s)\n        try {\n          this.modal = new s(p3({ projectId: this.rpc.projectId }, this.rpc.qrModalOptions));\n        } catch (i) {\n          throw this.signer.logger.error(i), new Error(\"Could not generate WalletConnectModal Instance\");\n        }\n    }\n  }\n  loadConnectOpts(t) {\n    if (!t)\n      return;\n    const { chains: s, optionalChains: i, rpcMap: e } = t;\n    s && L(s) && (this.rpc.chains = s.map((n) => this.formatChainId(n)), s.forEach((n) => {\n      this.rpc.rpcMap[n] = (e == null ? void 0 : e[n]) || this.getRpcUrl(n);\n    })), i && L(i) && (this.rpc.optionalChains = [], this.rpc.optionalChains = i == null ? void 0 : i.map((n) => this.formatChainId(n)), i.forEach((n) => {\n      this.rpc.rpcMap[n] = (e == null ? void 0 : e[n]) || this.getRpcUrl(n);\n    }));\n  }\n  getRpcUrl(t, s) {\n    var i;\n    return ((i = this.rpc.rpcMap) == null ? void 0 : i[t]) || `${j3}?chainId=eip155:${t}&projectId=${s || this.rpc.projectId}`;\n  }\n  async loadPersistedSession() {\n    if (this.session)\n      try {\n        const t = await this.signer.client.core.storage.getItem(`${this.STORAGE_KEY}/chainId`), s = this.session.namespaces[`${this.namespace}:${t}`] ? this.session.namespaces[`${this.namespace}:${t}`] : this.session.namespaces[this.namespace];\n        this.setChainIds(t ? [this.formatChainId(t)] : s == null ? void 0 : s.accounts), this.setAccounts(s == null ? void 0 : s.accounts);\n      } catch (t) {\n        this.signer.logger.error(\"Failed to load persisted session, clearing state...\"), this.signer.logger.error(t), await this.disconnect().catch((s) => this.signer.logger.warn(s));\n      }\n  }\n  reset() {\n    this.chainId = 1, this.accounts = [];\n  }\n  persist() {\n    this.session && this.signer.client.core.storage.setItem(`${this.STORAGE_KEY}/chainId`, this.chainId);\n  }\n  parseAccounts(t) {\n    return typeof t == \"string\" || t instanceof String ? [this.parseAccount(t)] : t.map((s) => this.parseAccount(s));\n  }\n};\nvar x2 = C2;\nexport {\n  x2 as EthereumProvider,\n  b2 as OPTIONAL_EVENTS,\n  y as OPTIONAL_METHODS,\n  g3 as REQUIRED_EVENTS,\n  u as REQUIRED_METHODS,\n  C2 as default\n};\n/*! Bundled license information:\n\nlodash/lodash.js:\n  (**\n   * @license\n   * Lodash <https://lodash.com/>\n   * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n   * Released under MIT license <https://lodash.com/license>\n   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n   * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n   *)\n*/\n//# sourceMappingURL=index.es-AMKWX7QZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/injected-LISAWEIO.js",
    "content": "import {\n  autoConnectEip1193Wallet,\n  connectEip1193Wallet,\n  getInjectedProvider\n} from \"./chunk-FXBAO7K3.js\";\nimport \"./chunk-PWFRCBEK.js\";\nimport \"./chunk-7AY3QZZV.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-I2GEMA2B.js\";\nimport \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  autoConnectEip1193Wallet,\n  connectEip1193Wallet,\n  getInjectedProvider\n};\n//# sourceMappingURL=injected-LISAWEIO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-24QRWA4Y.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.noone/index.js\nvar wallet = {\n  id: \"io.noone\",\n  name: \"Noone Wallet\",\n  homepage: \"https://noone.io/\",\n  image_id: \"fbae89d3-d6cb-4b98-bd1c-b2007b61ed00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/noone-wallet/id1668333995\",\n    android: \"https://play.google.com/store/apps/details?id=io.noone.androidwallet&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/noone-wallet/bgfhmafjampalkbjicjcjiikhlaggdnm\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"<root>://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-24QRWA4Y.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-24YA5BRN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.didwallet/index.js\nvar wallet = {\n  id: \"io.didwallet\",\n  name: \"DIDWallet\",\n  homepage: \"https://www.didwallet.io/\",\n  image_id: \"bc66fa57-46f4-4e17-6cb7-5f2d9af9c000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/id1460083542\",\n    android: \"https://play.google.com/store/apps/details?id=com.arcblock.wallet.app.product\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"abt://didwallet.io/i\",\n    universal: \"https://didwallet.io/i\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-24YA5BRN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-2GPQFRQF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ttmwallet/index.js\nvar wallet = {\n  id: \"io.ttmwallet\",\n  name: \"MDAO Wallet\",\n  homepage: \"https://ttmwallet.io/\",\n  image_id: \"82014e92-838b-4e75-e77e-76cdc5539d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ru/app/ttm-wallet/id1540851562\",\n    android: \"https://play.google.com/store/apps/details?id=com.ttmbank.wallet.app&hl=ru&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ttmwalletapp://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-2GPQFRQF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-2OUEZVZU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.trustasset/index.js\nvar wallet = {\n  id: \"io.trustasset\",\n  name: \"Trust Asset Wallet\",\n  homepage: \"https://trustasset.io/\",\n  image_id: \"f64fabc5-1e3f-4ad4-7362-747abd1bc000\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.trustassetapp&hl=en_IN&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"trustassetapp://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-2OUEZVZU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-2ZBQUD2Z.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.moonstake/index.js\nvar wallet = {\n  id: \"io.moonstake\",\n  name: \"MOONSTAKE\",\n  homepage: \"https://moonstake.io\",\n  image_id: \"22374fae-244c-4224-2e3d-c14912f98a00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/moonstake-wallet/id1502532651\",\n    android: \"https://play.google.com/store/apps/details?id=io.moonstake.wallet&hl=en\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"moonstake://\",\n    universal: \"https://moonstake.io/launchApp\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-2ZBQUD2Z.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-3FD4NDEY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.earthwallet/index.js\nvar wallet = {\n  id: \"io.earthwallet\",\n  name: \"Earth Wallet\",\n  homepage: \"https://www.earthwallet.io/\",\n  image_id: \"d3f724c4-f99b-476f-10f8-12aa4af13800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/earth-wallet/id1638414929\",\n    android: \"https://play.google.com/store/apps/details?id=earth.wallet.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/earth-wallet/agkfnefiabmfpanochlcakggnkdfmmjd\",\n    firefox: \"https://chrome.google.com/webstore/detail/earth-wallet/agkfnefiabmfpanochlcakggnkdfmmjd\",\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"earthwallet://\",\n    universal: \"https://wallet.earth\"\n  },\n  desktop: {\n    native: \"earthwallet://\",\n    universal: \"https://wallet.earth\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-3FD4NDEY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-3SGNGSBU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.internetmoney/index.js\nvar wallet = {\n  id: \"io.internetmoney\",\n  name: \"Internet Money Wallet\",\n  homepage: \"https://internetmoney.io\",\n  image_id: \"204b2240-5ce4-4996-6ec4-f06a22726900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id1641771042\",\n    android: \"https://play.google.com/store/apps/details?id=com.internetmoneywallet.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/ckklhkaabbmdjkahiaaplikpdddkenic\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"internetmoney://\",\n    universal: \"https://internetmoney.io\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://internetmoney.io\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-3SGNGSBU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-3U2SLLGY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.goldbit/index.js\nvar wallet = {\n  id: \"io.goldbit\",\n  name: \"GoldBit\",\n  homepage: \"http://goldbit.io/gbapp.php\",\n  image_id: \"11974ef1-21ab-4806-a2b1-362c31499900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/tw/app/goldbit錢包/id1551914030\",\n    android: \"https://play.google.com/store/apps/details?id=com.goldbitpro.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"goldbit://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-3U2SLLGY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-4K37O2UO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.plutope/index.js\nvar wallet = {\n  id: \"io.plutope\",\n  name: \"Plutope\",\n  homepage: \"https://www.plutope.io/\",\n  image_id: \"77aab1ef-28e8-4473-b91a-a566fd910900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/in/app/plutope-crypto-wallet/id6466782831\",\n    android: \"https://play.google.com/store/apps/details?id=com.app.plutope&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"plutope://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-4K37O2UO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-57PCDAYK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.blocto/index.js\nvar wallet = {\n  id: \"io.blocto\",\n  name: \"Blocto\",\n  homepage: \"https://blocto.io/\",\n  image_id: \"374258d3-c749-4f37-7815-77e61f798c00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/id1481181682\",\n    android: \"https://play.google.com/store/apps/details?id=com.portto.blocto&hl=en&gl=US\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"blocto://\",\n    universal: \"https://blocto.app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-57PCDAYK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-5FGKYHDW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.talken/index.js\nvar wallet = {\n  id: \"io.talken\",\n  name: \"Talken Wallet\",\n  homepage: \"https://talken.io/\",\n  image_id: \"3c49e8e7-a4d8-4810-23ef-0a0102cce100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/kr/app/talken-web3-wallet-nft-suite/id1459475831\",\n    android: \"https://play.google.com/store/search?q=talken&c=apps&hl=en-KR\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"talken-wallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-5FGKYHDW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-6HD3H3FJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.rabby/index.js\nvar wallet = {\n  id: \"io.rabby\",\n  name: \"Rabby\",\n  homepage: \"https://rabby.io/\",\n  image_id: \"255e6ba2-8dfd-43ad-e88e-57cbb98f6800\",\n  app: {\n    browser: \"https://chrome.google.com/webstore/detail/rabby/acmacodkjbdgmoleebolmdjonilkdbch\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/rabby-wallet/acmacodkjbdgmoleebolmdjonilkdbch\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"io.rabby\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-6HD3H3FJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-6JQ4CHJH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.wallet3/index.js\nvar wallet = {\n  id: \"io.wallet3\",\n  name: \"Wallet 3\",\n  homepage: \"https://wallet3.io\",\n  image_id: \"34ab7558-9e64-4436-f4e6-9069f2533d00\",\n  app: {\n    browser: \"https://wallet3.io\",\n    ios: \"https://itunes.apple.com/us/app/wallet-3/id1597395741\",\n    android: \"https://play.google.com/store/apps/details?id=jp.co.chainbow.wallet3.mobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wallet3://\",\n    universal: null\n  },\n  desktop: {\n    native: \"wallet3://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-6JQ4CHJH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-6LSXSNGH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.helixid/index.js\nvar wallet = {\n  id: \"io.helixid\",\n  name: \"helix id\",\n  homepage: \"https://helixid.io/\",\n  image_id: \"4083ef71-8389-4682-ded6-0099236d2e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/de/app/helix-id/id1469238013?l=en\",\n    android: \"https://play.google.com/store/apps/details?id=com.io.helix.id&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"helix-id://helix-id.com\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-6LSXSNGH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-7F2E4V7R.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.yusetoken/index.js\nvar wallet = {\n  id: \"io.yusetoken\",\n  name: \"Yuse Wallet\",\n  homepage: \"https://yusetoken.io/\",\n  image_id: \"2cd61458-59c2-4208-c8ee-98b5e0076b00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/yuse-wallet/id6449364813\",\n    android: \"https://play.google.com/store/apps/details?id=com.yuse.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"yuse://wallet://\",\n    universal: \"https://yusewallet.page.link/tobR\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-7F2E4V7R.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-ANOLLYWK.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.fizen/index.js\nvar wallet = {\n  id: \"io.fizen\",\n  name: \"Fizen Wallet\",\n  homepage: \"https://fizen.io\",\n  image_id: \"4beaa3f0-c807-4de0-dae3-c1b677fc9600\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/fizen-wallet/id1621269508\",\n    android: \"https://play.google.com/store/apps/details?id=com.fizen.io.wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"fw://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-ANOLLYWK.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-B43YO5G7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ancrypto/index.js\nvar wallet = {\n  id: \"io.ancrypto\",\n  name: \"Ancrypto\",\n  homepage: \"https://www.ancrypto.io/\",\n  image_id: \"8dee1c33-b277-4a5a-5ddd-5e70fd9d1800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/in/app/ancrypto/id1660898349\",\n    android: \"https://play.google.com/store/apps/details?id=com.ancryptoWallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ancrypto://app\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-B43YO5G7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-BH2JNQLL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.dttd/index.js\nvar wallet = {\n  id: \"io.dttd\",\n  name: \"DTTD\",\n  homepage: \"https://www.dttd.io/\",\n  image_id: \"4a1da9d0-1a81-4e51-4758-b2157f4e6000\",\n  app: {\n    browser: null,\n    ios: \"https://hop.dttd.app/appstoredownload\",\n    android: \"https://hop.dttd.app/googleplaydownload\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"dotted://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-BH2JNQLL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-CTRCTP32.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.getclave/index.js\nvar wallet = {\n  id: \"io.getclave\",\n  name: \"Clave\",\n  homepage: \"https://getclave.io\",\n  image_id: \"f1c538df-15d9-4448-542f-b7b358e95d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/gr/app/clave-smart-wallet/id6449253761\",\n    android: \"https://play.google.com/store/apps/details?id=com.clave.mobile\",\n    mac: \"https://apps.apple.com/gr/app/clave-smart-wallet/id6449253761\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"clave://link/wc/\",\n    universal: \"https://getclave.io/link/wc\"\n  },\n  desktop: {\n    native: \"clave://link/wc/\",\n    universal: \"https://getclave.io/link\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-CTRCTP32.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-CWMDB2MU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.owallet/index.js\nvar wallet = {\n  id: \"io.owallet\",\n  name: \"OWallet\",\n  homepage: \"https://owallet.io\",\n  image_id: \"68489978-9f79-47f4-fd59-86a29df9bf00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/owallet/id1626035069\",\n    android: \"https://play.google.com/store/apps/details?id=com.io.owallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/owallet/hhejbopdnpbjgomhpmegemnjogflenga\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"owallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-CWMDB2MU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-D255FR7U.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.paraswap/index.js\nvar wallet = {\n  id: \"io.paraswap\",\n  name: \"ParaSwap Wallet\",\n  homepage: \"https://paraswap.io\",\n  image_id: \"73dc6b30-b644-46e6-020c-5926851df600\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/paraswap-multichain-wallet/id1584610690\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"paraswap://\",\n    universal: \"https://wallet.paraswap.io/#/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-D255FR7U.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-D6Z3AKMH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.xdefi/index.js\nvar wallet = {\n  id: \"io.xdefi\",\n  name: \"XDEFI Wallet\",\n  homepage: \"https://www.xdefi.io/\",\n  image_id: \"efec6318-7f96-4b30-9287-6c287660cd00\",\n  app: {\n    browser: \"https://www.xdefi.io/\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/xdefi-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf?hl=en\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"io.xdefi\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-D6Z3AKMH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-DIWAXNTD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.guardiianwallet/index.js\nvar wallet = {\n  id: \"io.guardiianwallet\",\n  name: \"GUARDIIAN Wallet\",\n  homepage: \"https://guardiianwallet.io/\",\n  image_id: \"4f095c1d-8a31-4af8-ab58-57e82a398e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/pk/app/guardiian-wallet/id6478384338\",\n    android: \"https://play.google.com/store/apps/details?id=com.gardianwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"guardiianwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-DIWAXNTD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-DK5QUX7W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.cosmostation/index.js\nvar wallet = {\n  id: \"io.cosmostation\",\n  name: \"Cosmostation\",\n  homepage: \"https://www.cosmostation.io/\",\n  image_id: \"ea26c3c8-adb6-4dc4-ee02-35d6eee02800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/kr/app/cosmostation/id1459830339\",\n    android: \"https://play.google.com/store/apps/details?id=wannabit.io.cosmostaion\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"cosmostation://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-DK5QUX7W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-DNXFQ4K2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.huddln/index.js\nvar wallet = {\n  id: \"io.huddln\",\n  name: \"Huddln\",\n  homepage: \"https://www.huddln.io\",\n  image_id: \"7ba1571c-10c4-4284-b438-04dac27cb700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/huddln-nft-social-network/id1503825604\",\n    android: \"https://play.google.com/store/apps/details?id=com.huddln&hl=en_US&gl=US\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"huddln://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-DNXFQ4K2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-DXHXE7IX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.finoa/index.js\nvar wallet = {\n  id: \"io.finoa\",\n  name: \"FinoaConnect\",\n  homepage: \"https://app.finoa.io/\",\n  image_id: \"b7a0c6fe-10bd-423c-6aa5-0637bd2b9900\",\n  app: {\n    browser: \"https://app.finoa.io/\",\n    ios: \"https://apps.apple.com/us/app/finoa-2fa/id1484058524\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"io.finoa\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-DXHXE7IX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-E2M2HE5Z.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.tradestrike/index.js\nvar wallet = {\n  id: \"io.tradestrike\",\n  name: \"StrikeX Wallet\",\n  homepage: \"https://tradestrike.io/\",\n  image_id: \"f81642e4-2355-454a-25f5-72e27f2c6f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/strikex-wallet/id6443517613\",\n    android: \"https://play.google.com/store/apps/details?id=com.tradestrike\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"strikex://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-E2M2HE5Z.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-E6S6IBUY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.legacynetwork/index.js\nvar wallet = {\n  id: \"io.legacynetwork\",\n  name: \"Legacy Wallet\",\n  homepage: \"https://www.legacynetwork.io/\",\n  image_id: \"ed181b1b-e4c0-4a2e-4a4c-f380a9f13c00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/legacy-wallet/id6443578674\",\n    android: \"https://play.google.com/store/apps/details?id=io.legacynetwork.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/legacy-wallet/ammjlinfekkoockogfhdkgcohjlbhmff\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"legacy://network.io\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-E6S6IBUY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-EA2JOUTZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.summonersarena/index.js\nvar wallet = {\n  id: \"io.summonersarena\",\n  name: \"SA ASSISTANT\",\n  homepage: \"https://summonersarena.io/\",\n  image_id: \"7954b508-9ff0-4416-9aba-16209b571000\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.onechain.saas&hl=en-VN\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"saas://success\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-EA2JOUTZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-FVLW4E3K.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.xucre/index.js\nvar wallet = {\n  id: \"io.xucre\",\n  name: \"Xucre\",\n  homepage: \"https://www.xucre.io\",\n  image_id: \"6a560c0d-817d-4f62-ef21-b91636b30f00\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=xucre.expo.client\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"xucre.expo.client://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-FVLW4E3K.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-GQDRISAH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.myabcwallet/index.js\nvar wallet = {\n  id: \"io.myabcwallet\",\n  name: \"ABC Wallet\",\n  homepage: \"https://myabcwallet.io/\",\n  image_id: \"e689ea2b-cd49-4a1d-7812-424a0e0d9200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/abc-wallet-safe-web3-wallet/id1642837445\",\n    android: \"https://play.google.com/store/apps/details?id=io.myabcwallet.mpc&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"abc-wallet://abcwc\",\n    universal: \"https://abcwalletconnect.page.link/?apn=io.myabcwallet.mpc&ibi=io.myabcwallet.mpc&isi=1642837445&efr=1&ofl=https://myabcwallet.io/download&link=https://myabcwallet.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-GQDRISAH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-H2C73JK2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.transi/index.js\nvar wallet = {\n  id: \"io.transi\",\n  name: \"Transi\",\n  homepage: \"https://www.transi.io/\",\n  image_id: \"a567089d-69d5-47f6-fd99-db47a448ab00\",\n  app: {\n    browser: \"https://www.transi.io/TransiWallet\",\n    ios: \"https://apps.apple.com/us/app/transi-chat/id1662471884\",\n    android: \"https://www.transi.io/TransiWallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"transi://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-H2C73JK2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-H454JI3W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.neopin/index.js\nvar wallet = {\n  id: \"io.neopin\",\n  name: \"NEOPIN\",\n  homepage: \"https://neopin.io/\",\n  image_id: \"424c54b5-b786-4c14-871f-61d5c5ded800\",\n  app: {\n    browser: null,\n    ios: \"https://itunes.apple.com/app/id1600381072\",\n    android: \"https://play.google.com/store/apps/details?id=com.blockchain.crypto.wallet.neopin\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"nptwc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-H454JI3W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-HBM5KOQE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.certhis/index.js\nvar wallet = {\n  id: \"io.certhis\",\n  name: \"Certhis\",\n  homepage: \"https://certhis.io\",\n  image_id: \"fbd441cc-e861-46dc-48ae-a04228ddb500\",\n  app: {\n    browser: \"https://explorer.certhis.io\",\n    ios: null,\n    android: null,\n    mac: \"\",\n    windows: null,\n    linux: \"https://certhis.io/\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://certhis.io/\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://certhis.io\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-HBM5KOQE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-J7ET3CPL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.scramberry/index.js\nvar wallet = {\n  id: \"io.scramberry\",\n  name: \"ScramberryWallet\",\n  homepage: \"https://scramberry.io/ja/wallet/\",\n  image_id: \"2398a924-62b4-4f64-4a59-7ae7a293ce00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/jp/app/scramberry-wallet/id6468808512\",\n    android: \"https://play.google.com/store/apps/details?id=io.scramberry.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"io.scramberry.v7bmfgda1vo42ue385xc://deeplink\",\n    universal: \"https://link1.bsg.scramberry.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-J7ET3CPL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-JGARBW27.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.hyperpay/index.js\nvar wallet = {\n  id: \"io.hyperpay\",\n  name: \"HyperPay\",\n  homepage: \"https://www.hyperpay.io/\",\n  image_id: \"44abbf25-f8c4-4d04-0ce7-a695e00d8e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ae/app/hyperpay-bitcoin-crypto-wallet/id1354755812\",\n    android: \"https://play.google.com/store/apps/details?id=com.legendwd.hyperpayW&hl&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"hyperPay://\",\n    universal: null\n  },\n  desktop: {\n    native: \"hyperPay://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-JGARBW27.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-JWG2DSVL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.oxalus/index.js\nvar wallet = {\n  id: \"io.oxalus\",\n  name: \"Oxalus Wallet\",\n  homepage: \"https://oxalus.io/wallet\",\n  image_id: \"a6e22fcb-6b69-45d2-b52d-a4a347a21e00\",\n  app: {\n    browser: \"https://oxalus.io/\",\n    ios: \"https://apps.apple.com/vn/app/oxalus-wallet/id1620111723\",\n    android: \"https://play.google.com/store/apps/details?id=io.oxalus.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"oxalus://\",\n    universal: \"https://oxalus.page.link/?apn=io.oxalus.wallet&isi=1620111723&ibi=io.oxalus.wallet&link=https://deeplink.oxalus.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-JWG2DSVL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-K5M75KPN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.kriptomat/index.js\nvar wallet = {\n  id: \"io.kriptomat\",\n  name: \"Kriptomat\",\n  homepage: \"https://kriptomat.io/web3/\",\n  image_id: \"774110aa-70f6-4d0c-210f-ab434838fa00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/id1440135740\",\n    android: \"https://play.google.com/store/apps/details?id=io.kriptomat.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"kriptomatapp://wallet-connect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-K5M75KPN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-KUZCCGFO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.nabox/index.js\nvar wallet = {\n  id: \"io.nabox\",\n  name: \"Nabox\",\n  homepage: \"https://nabox.io/\",\n  image_id: \"3b75e9f7-2ca8-4a33-ed2b-4e8a0c048d00\",\n  app: {\n    browser: \"https://chrome.google.com/webstore/detail/nabox-wallet/nknhiehlklippafakaeklbeglecifhad?hl=en\",\n    ios: \"https://testflight.apple.com/join/Ux18h5Nv\",\n    android: \"https://play.google.com/store/apps/details?id=com.wallet.nabox\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://nabox.io/app/*\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-KUZCCGFO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-KZJ22VPA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.safematrix/index.js\nvar wallet = {\n  id: \"io.safematrix\",\n  name: \"Safematrix\",\n  homepage: \"https://safematrix.io/\",\n  image_id: \"48ea5de9-869a-4994-2402-97afba060900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/sg/app/safematrix/id1613333481\",\n    android: \"https://download.safematrix.io/abm/safematrix.apk\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://safematrix.io/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-KZJ22VPA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-L6UQ2STJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.harti/index.js\nvar wallet = {\n  id: \"io.harti\",\n  name: \"HARTi Wallet\",\n  homepage: \"https://harti.io/\",\n  image_id: \"d0407f26-fe0b-4f3c-43c3-69bc8fef2e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/jp/app/harti/id1599921940?l=en\",\n    android: \"https://play.google.com/store/apps/details?id=app.harti&hl=ja&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"HARTi://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-L6UQ2STJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-LVXFK7U5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.konio/index.js\nvar wallet = {\n  id: \"io.konio\",\n  name: \"Konio\",\n  homepage: \"https://konio.io\",\n  image_id: \"305dadb1-395e-4ca8-d4d0-d8ad0cc37000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/konio/id6453561342\",\n    android: \"https://play.google.com/store/apps/details?id=com.adrihoke.konio\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"konio://\",\n    universal: \"https://konio.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-LVXFK7U5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-LX45HK7A.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.trinity-tech/index.js\nvar wallet = {\n  id: \"io.trinity-tech\",\n  name: \"Essentials\",\n  homepage: \"https://www.trinity-tech.io/essentials\",\n  image_id: \"058878f4-7364-4e01-434f-2cc09a15cf00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/elastos-essentials/id1568931743\",\n    android: \"https://play.google.com/store/apps/details?id=org.elastos.essentials.app\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://essentials.web3essentials.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-LX45HK7A.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-MMDEOZ3N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.xfun/index.js\nvar wallet = {\n  id: \"io.xfun\",\n  name: \"XFUN Wallet\",\n  homepage: \"https://xfun.io\",\n  image_id: \"a665f8f3-09ef-4d17-2bd0-26dca4518400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/xfun-wallet/id1612225910\",\n    android: \"https://play.google.com/store/apps/details?id=com.xfun.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"xfunwallet://\",\n    universal: \"https://xfun.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-MMDEOZ3N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-N5RGMBCH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.pitaka/index.js\nvar wallet = {\n  id: \"io.pitaka\",\n  name: \"Pitaka\",\n  homepage: \"https://pitaka.io\",\n  image_id: \"c816aeae-e0d1-4c52-f37a-efde6df1ee00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ph/app/pitaka-blockchain-wallet/id1644341925\",\n    android: \"https://play.google.com/store/apps/details?id=com.pitakamobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"pitaka://\",\n    universal: \"https://app.pitaka.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-N5RGMBCH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-NH2GD2IR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.tokoin/index.js\nvar wallet = {\n  id: \"io.tokoin\",\n  name: \"Tokoin | My-T Wallet\",\n  homepage: \"https://tokoin.io\",\n  image_id: \"88a2518c-16c2-4ee3-4699-1a1c6903bc00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/my/app/tokow/id1489276175\",\n    android: \"https://play.google.com/store/apps/details?id=com.tokoin.wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"mtwallet://app\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-NH2GD2IR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-NVBZJAWM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.cypherwallet/index.js\nvar wallet = {\n  id: \"io.cypherwallet\",\n  name: \"Cypher Wallet\",\n  homepage: \"https://cypherwallet.io\",\n  image_id: \"7bce0965-a4cc-4aad-6217-009d51017500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/cypherd-wallet/id1604120414\",\n    android: \"https://play.google.com/store/apps/details?id=com.cypherd.androidwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/cypher-wallet/niiaamnmgebpeejeemoifgdndgeaekhe\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"cypherwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-NVBZJAWM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-O7JBQJEM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.enjin/index.js\nvar wallet = {\n  id: \"io.enjin\",\n  name: \"Enjin Wallet\",\n  homepage: \"https://enjin.io/products/wallet\",\n  image_id: \"add9626b-a5fa-4c12-178c-e5584e6dcd00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/enjin-nft-crypto-wallet/id1349078375\",\n    android: \"https://play.google.com/store/apps/details?id=com.enjin.mobile.wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"enjinwallet://\",\n    universal: \"https://deeplink.wallet.enjin.io/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-O7JBQJEM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-PJ4YO55N.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.clingon/index.js\nvar wallet = {\n  id: \"io.clingon\",\n  name: \"Cling Wallet\",\n  homepage: \"https://clingon.io\",\n  image_id: \"2d8006c3-852b-458a-d6b0-916c5ba76800\",\n  app: {\n    browser: \"https://chrome.google.com/webstore/detail/cling-wallet/kppgpfphbmbcgeglphjnhnhibonmebkn?hl=ko\",\n    ios: \"https://apps.apple.com/us/app/cling-wallet/id6443952504\",\n    android: \"https://play.google.com/store/apps/details?id=com.carrieverse.cling.wallet&hl=en_US&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"cling://\",\n    universal: \"https://cling.carrieverse.com/apple-app-site-association\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-PJ4YO55N.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-PV6OW5YR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.miraiapp/index.js\nvar wallet = {\n  id: \"io.miraiapp\",\n  name: \"Mirai App\",\n  homepage: \"https://miraiapp.io\",\n  image_id: \"0c8022b0-d5a3-4561-64d5-a3e60d1ed500\",\n  app: {\n    browser: \"https://miraiapp.io\",\n    ios: \"https://apps.apple.com/vn/app/mirai-app-mpc-powered-wallet/id6472134236\",\n    android: \"https://play.google.com/store/apps/details?id=co.mirailabs.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"miraiapp://\",\n    universal: \"https://go.miraiapp.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-PV6OW5YR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-PVGHQBA3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.passpay/index.js\nvar wallet = {\n  id: \"io.passpay\",\n  name: \"PassPay Wallet\",\n  homepage: \"https://www.passpay.io/\",\n  image_id: \"a1c337f5-c156-4ce8-763b-b4cc65f1c200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/US/app/passpay-wallet-nft-%E4%BB%AE%E6%83%B3%E9%80%9A%E8%B2%A8-%E3%82%A6%E3%82%A9%E3%83%AC%E3%83%83%E3%83%88/id1645009398\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"com.wallet.passpay://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-PVGHQBA3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-QLQLOVVJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.functionx/index.js\nvar wallet = {\n  id: \"io.functionx\",\n  name: \"f(x)Wallet\",\n  homepage: \"https://functionx.io/home\",\n  image_id: \"bdd2f39b-98fa-485d-b180-bf4a42fa6100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/f-x-wallet-by-function-x-labs/id1504798360\",\n    android: \"https://play.google.com/store/apps/details?id=com.pundix.functionx\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"fxwallet://\",\n    universal: \"https://fx.wallet/wc\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-QLQLOVVJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-RSWIM3NG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.leapwallet/index.js\nvar wallet = {\n  id: \"io.leapwallet\",\n  name: \"Leap Cosmos Wallet\",\n  homepage: \"https://leapwallet.io/\",\n  image_id: \"73e6b2b2-8c02-42e9-84f5-82a859978200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/in/app/leap-cosmos/id1642465549/\",\n    android: \"https://play.google.com/store/apps/details?id=io.leapwallet.cosmos\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/leap-cosmos-wallet/fcfcfllfndlomdhbehjjcoimbgofdncg\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"leapcosmos://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-RSWIM3NG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-RZ7W5PGA.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.zelus/index.js\nvar wallet = {\n  id: \"io.zelus\",\n  name: \"Zelus\",\n  homepage: \"https://zelus.io\",\n  image_id: \"aeba2105-6c84-4642-f441-b3f5817ac400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/zelus/id1588430343\",\n    android: \"https://play.google.com/store/apps/details?id=com.zelus.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"zeluswallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-RZ7W5PGA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-S3TORZWD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.streakk/index.js\nvar wallet = {\n  id: \"io.streakk\",\n  name: \"Streakk Wallet\",\n  homepage: \"https://streakk.io/\",\n  image_id: \"45ec6eb9-d7fe-4b9b-6dbf-cc675c5d1d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/in/app/streakk-wallet/id1636671089\",\n    android: \"https://play.google.com/store/apps/details?id=com.streakk\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"streakk://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-S3TORZWD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-T6NWZUPR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ethos/index.js\nvar wallet = {\n  id: \"io.ethos\",\n  name: \"Ethos Self-Custody Vault\",\n  homepage: \"https://www.ethos.io/\",\n  image_id: \"8bc7fb62-6f6b-4473-2e4a-5691a646fc00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/ethos-self-custody-vault/id6450948705\",\n    android: \"https://play.google.com/store/apps/details?id=com.ethos2.prod&hl=en_US&gl=US&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"myapp://home\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-T6NWZUPR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-TLH32OUQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ready/index.js\nvar wallet = {\n  id: \"io.ready\",\n  name: \"Ready\",\n  homepage: \"https://ready.io/\",\n  image_id: \"00ba080d-fb0a-4a31-940e-f75388500500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/ready-next-gen-messenger/id1668536401\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"readywallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-TLH32OUQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-TLTTCINM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.okse/index.js\nvar wallet = {\n  id: \"io.okse\",\n  name: \"Okse Wallet\",\n  homepage: \"https://okse.io\",\n  image_id: \"8a1b36d5-7f40-403a-7000-5d30f9181200\",\n  app: {\n    browser: \"https://okse.io\",\n    ios: \"https://apps.apple.com/us/app/okse-wallet-card/id1555914591\",\n    android: \"https://play.google.com/store/apps/details?id=wallet.okse.io\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"oksewallet://\",\n    universal: \"https://okse.io/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-TLTTCINM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-TRTOW6FM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ukiss/index.js\nvar wallet = {\n  id: \"io.ukiss\",\n  name: \"UKISS Hub\",\n  homepage: \"https://www.ukiss.io\",\n  image_id: \"23f4c933-68e6-46f9-75b6-2d2905ca1300\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=io.ukiss.uhub.mobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ukisshub://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-TRTOW6FM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-TRUR62J5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.hippowallet/index.js\nvar wallet = {\n  id: \"io.hippowallet\",\n  name: \"Hippo Wallet\",\n  homepage: \"https://hippowallet.io\",\n  image_id: \"f9570968-45f7-47c1-3189-98cf60e25c00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ae/app/hippo-wallet/id1613041499\",\n    android: \"https://play.google.com/store/apps/details?id=com.blockchaincommodities.hippo_wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/hippo-wallet/hddkffjleepiafmkhcneldjipkfkkofk\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"hippowallet://\",\n    universal: \"https://hippowallet.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-TRUR62J5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-TZCRE2KR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.pockie/index.js\nvar wallet = {\n  id: \"io.pockie\",\n  name: \"pockie\",\n  homepage: \"https://www.pockie.io/ko\",\n  image_id: \"a761beae-1e7e-4402-bcc5-a896a92bfb00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/kr/app/pockie/id6448715234\",\n    android: \"https://play.google.com/store/apps/details?id=com.pilab.pockie&hl=en-KR\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"pockie://\",\n    universal: \"https://pockie.app.link\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-TZCRE2KR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-UP4NGDBV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.slavi/index.js\nvar wallet = {\n  id: \"io.slavi\",\n  name: \"Slavi Wallet\",\n  homepage: \"https://slavi.io/\",\n  image_id: \"282ce060-0beb-4236-b7b0-1b34cc6c8f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/en/app/slavi-wallet/id1610125496?l=en\",\n    android: \"https://play.google.com/store/apps/details?id=com.defiwalletmobile\",\n    mac: \"https://apps.apple.com/en/app/slavi-wallet/id1610125496?l=en\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"slaviwallet://\",\n    universal: \"https://www.slaviwallet.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-UP4NGDBV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-UTHDBEVN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.pltwallet/index.js\nvar wallet = {\n  id: \"io.pltwallet\",\n  name: \"PLTwallet\",\n  homepage: \"https://pltwallet.io/\",\n  image_id: \"a5d9dd15-8cef-42de-8bed-09e01a8b0200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/id1581055631\",\n    android: \"https://play.google.com/store/apps/details?id=com.palettechain.wallet&hl=ja&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"pltwallet://\",\n    universal: \"https://pltwallet.io/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-UTHDBEVN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-WHYZVMCN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.kigo/index.js\nvar wallet = {\n  id: \"io.kigo\",\n  name: \"Kigo\",\n  homepage: \"https://kigo.io\",\n  image_id: \"ad83d869-de11-4685-2a24-d3ce93a86400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/kigo-digital/id6449599872\",\n    android: \"https://play.google.com/store/apps/details?id=com.augeo.kigo\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"kigo-mobile-app://\",\n    universal: \"https://kigo-digital.app.link/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-WHYZVMCN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-WTWNTQY2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.bladewallet/index.js\nvar wallet = {\n  id: \"io.bladewallet\",\n  name: \"Blade Wallet\",\n  homepage: \"https://bladewallet.io\",\n  image_id: \"8fa87652-b043-4992-3a45-78e438d1cd00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/apple-store/id1623849951\",\n    android: \"https://play.google.com/store/apps/details?id=org.bladelabs.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/blade-%E2%80%93-hedera-web3-digit/abogmiocnneedmmepnohnhlijcjpcifd\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"org.bladelabs.bladewallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: \"https://welcome.bladewallet.io/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-WTWNTQY2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-X4AWA27Q.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.shido/index.js\nvar wallet = {\n  id: \"io.shido\",\n  name: \"Shido App\",\n  homepage: \"https://www.shido.io/\",\n  image_id: \"673b4fdc-8c65-41e0-d0f8-c2eb6c8e5500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/shido-app/id6473452165\",\n    android: \"https://play.google.com/store/apps/details?id=com.shido.wallet&hl=en&gl=US&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"shido://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-X4AWA27Q.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-X54FGMH5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.bharatbox/index.js\nvar wallet = {\n  id: \"io.bharatbox\",\n  name: \"BharatBox App\",\n  homepage: \"https://bharatbox.io/\",\n  image_id: \"8bef836e-9d6a-4318-ebda-930c39246300\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/bharatbox/id6472478382\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bharatbox://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-X54FGMH5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-XAR6YN2H.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.zkape/index.js\nvar wallet = {\n  id: \"io.zkape\",\n  name: \"Ape Wallet\",\n  homepage: \"https://www.zkape.io\",\n  image_id: \"ea66f627-cc46-41c4-8287-dae2f379f700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/ape-layer2-wallet/id6450944029\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ape://\",\n    universal: \"https://zkape.io\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-XAR6YN2H.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-XEVP2DVS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ricewallet/index.js\nvar wallet = {\n  id: \"io.ricewallet\",\n  name: \"RiceWallet\",\n  homepage: \"https://ricewallet.io/\",\n  image_id: \"df94578e-19be-4f00-258f-2470343e7b00\",\n  app: {\n    browser: \"https://ricewallet.io\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"ricewallet://\",\n    universal: \"https://ricewallet.io\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://ricewallet.io\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-XEVP2DVS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-XFMVSGBX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.ozonewallet/index.js\nvar wallet = {\n  id: \"io.ozonewallet\",\n  name: \"OzoneWallet\",\n  homepage: \"https://ozonewallet.io/\",\n  image_id: \"4eb57479-515a-463a-9fcb-c20e9cc60c00\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.chiatk.apps.ozone1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"chiawallet://ozonewallet.io\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-XFMVSGBX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-XMCECLIZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.copiosa/index.js\nvar wallet = {\n  id: \"io.copiosa\",\n  name: \"Copiosa\",\n  homepage: \"https://copiosa.io\",\n  image_id: \"cae1be94-9f53-4eba-b915-f6e381d5a500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/gb/app/copiosa-crypto-wallet/id6443951470\",\n    android: \"https://play.google.com/store/apps/details?id=io.copiosa.exchange\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"copiosa://\",\n    universal: \"https://copiosa.io/action/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-XMCECLIZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-XXPRYPG2.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.altme/index.js\nvar wallet = {\n  id: \"io.altme\",\n  name: \"Altme\",\n  homepage: \"https://altme.io/\",\n  image_id: \"7eeac6e8-6852-4d09-8579-e229fd6b9a00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/fr/app/altme/id1633216869\",\n    android: \"https://play.google.com/store/apps/details?id=co.altme.alt.me.altme\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wc-altme://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-XXPRYPG2.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-YAK5FOPT.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.metamask/index.js\nvar wallet = {\n  id: \"io.metamask\",\n  name: \"MetaMask\",\n  homepage: \"https://metamask.io/\",\n  image_id: \"018b2d52-10e9-4158-1fde-a5d5bac5aa00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/metamask/id1438144202\",\n    android: \"https://play.google.com/store/apps/details?id=io.metamask\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn\",\n    firefox: \"https://addons.mozilla.org/en-US/firefox/addon/ether-metamask/\",\n    safari: null,\n    edge: \"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US\",\n    opera: \"https://addons.opera.com/en-gb/extensions/details/metamask-10/\"\n  },\n  rdns: \"io.metamask\",\n  mobile: {\n    native: \"metamask://\",\n    universal: \"https://metamask.app.link\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  },\n  deepLink: {\n    mobile: \"https://metamask.app.link/dapp/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-YAK5FOPT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-YKR37A4G.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.wallacy/index.js\nvar wallet = {\n  id: \"io.wallacy\",\n  name: \"Wallacy\",\n  homepage: \"https://wallacy.io\",\n  image_id: \"9496c3d8-8b60-495f-bd55-c3af19519d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/wallacy-crypto-btc-wallet/id6448592576\",\n    android: \"https://play.google.com/store/apps/details?id=io.wallacy.cryptowallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wallacy://\",\n    universal: null\n  },\n  desktop: {\n    native: \"wallacy://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-YKR37A4G.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-YSSN6F3W.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.zelcore/index.js\nvar wallet = {\n  id: \"io.zelcore\",\n  name: \"Zelcore\",\n  homepage: \"https://zelcore.io\",\n  image_id: \"1b9e652e-1667-425a-f828-707bf9b05400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/zelcore/id1436296839\",\n    android: \"https://play.google.com/store/apps/details?id=com.zelcash.zelcore\",\n    mac: null,\n    windows: null,\n    linux: \"https://zelcore.io/downloads/\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"zel://\",\n    universal: null\n  },\n  desktop: {\n    native: \"zel://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-YSSN6F3W.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-Z5GSMWWC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.wallypto/index.js\nvar wallet = {\n  id: \"io.wallypto\",\n  name: \"Wallypto\",\n  homepage: \"https://wallypto.io\",\n  image_id: \"00684f38-f9f9-40b6-6b6e-33891434f400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/wallypto-blockchain-wallet/id1639302472\",\n    android: \"https://play.google.com/store/apps/details?id=xyz.wallypto\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wallypto://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-Z5GSMWWC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io-ZIBKO2EM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.novawallet/index.js\nvar wallet = {\n  id: \"io.novawallet\",\n  name: \"Nova Wallet\",\n  homepage: \"https://novawallet.io\",\n  image_id: \"4f159b10-419b-483a-f2bf-da3d17855e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/nova-polkadot-kusama-wallet/id1597119355\",\n    android: \"https://play.google.com/store/apps/details?id=io.novafoundation.nova.market\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"novawallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io-ZIBKO2EM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io.1inch-3Q4NZZ2L.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.1inch.wallet/index.js\nvar wallet = {\n  id: \"io.1inch.wallet\",\n  name: \"1inch Wallet\",\n  homepage: \"http://wallet.1inch.io\",\n  image_id: \"52b1da3c-9e72-40ae-5dac-6142addd9c00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/1inch-defi-wallet/id1546049391\",\n    android: \"https://play.google.com/store/apps/details?id=io.oneinch.android\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"oneinch://\",\n    universal: \"https://wallet.1inch.io/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io.1inch-3Q4NZZ2L.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io.alpha-u.wallet-RANY436R.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.alpha-u.wallet.web/index.js\nvar wallet = {\n  id: \"io.alpha-u.wallet.web\",\n  name: \"αU wallet\",\n  homepage: \"https://web.wallet.alpha-u.io/intro.html\",\n  image_id: \"40489ba1-6eb0-49a1-a9d4-439fefe52000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/jp/app/%CE%B1u-wallet/id6444401106\",\n    android: \"https://play.google.com/store/apps/details?id=com.kddi.wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: \"nothing\",\n    firefox: \"nothing\",\n    safari: \"nothing\",\n    edge: \"nothing\",\n    opera: \"nothing\"\n  },\n  rdns: null,\n  mobile: {\n    native: \"alpha-u-wallet://\",\n    universal: \"https://alphauwallet.page.link/?apn=com.kddi.wallet&ibi=com.kddi.wallet&isi=6444401106&link=https://web.wallet.alpha-u.io/intro.html\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io.alpha-u.wallet-RANY436R.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io.armana-FQHHA7CM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.armana.portal/index.js\nvar wallet = {\n  id: \"io.armana.portal\",\n  name: \"Armana Portal\",\n  homepage: \"https://portal.armana.io\",\n  image_id: \"fe3c264d-b595-437d-e5f9-5e5833dd4300\",\n  app: {\n    browser: \"https://arman.io/mint\",\n    ios: \"https://apps.apple.com/us/app/armana-portal/id6448726023\",\n    android: \"https://play.google.com/store/apps/details?id=io.armana.portal\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"armanaportal://\",\n    universal: \"https://portal.armana.io/wc?uri=\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io.armana-FQHHA7CM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io.leapwallet-GH33NGTJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.leapwallet.CompassWallet/index.js\nvar wallet = {\n  id: \"io.leapwallet.CompassWallet\",\n  name: \"Compass Wallet\",\n  homepage: \"https://compasswallet.io/\",\n  image_id: \"1d7dea00-96be-4ce8-ca15-d14bddbb5000\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/compass-wallet-for-sei/anokgmphncpekkhclmingpimjmcooifb\",\n    firefox: null,\n    safari: null,\n    edge: \"https://chromewebstore.google.com/detail/compass-wallet-for-sei/anokgmphncpekkhclmingpimjmcooifb\",\n    opera: null\n  },\n  rdns: \"io.leapwallet.CompassWallet\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io.leapwallet-GH33NGTJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io.loopring-BX5AMZUR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.loopring.wallet/index.js\nvar wallet = {\n  id: \"io.loopring.wallet\",\n  name: \"Loopring\",\n  homepage: \"https://loopring.io/\",\n  image_id: \"2103feda-4fc8-4635-76a7-02a4ed998000\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/loopring-smart-wallet/id1550921126\",\n    android: \"https://play.google.com/store/apps/details?id=loopring.defi.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"io.loopring.wallet\",\n  mobile: {\n    native: \"loopring://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io.loopring-BX5AMZUR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io.magiceden-H3CGBW6M.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.magiceden.wallet/index.js\nvar wallet = {\n  id: \"io.magiceden.wallet\",\n  name: \"Magic Eden\",\n  homepage: \"https://wallet.magiceden.io/\",\n  image_id: \"62040f22-2ffd-4942-92fc-71ce68c64300\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/magic-eden-wallet/id6478631482\",\n    android: \"https://play.google.com/store/apps/details?id=com.magiceden.wallet&hl=en_US?utm_source=website&utm_medium=internal&utm_campaign=mobile-wallet-ga&utm_content=button\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/magic-eden-wallet/mkpegjkblkkefacfnmkajcjmabijhclg\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"io.magiceden.wallet\",\n  mobile: {\n    native: \"magiceden://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io.magiceden-H3CGBW6M.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io.unagi-YSJDUHMV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.unagi.unawallet/index.js\nvar wallet = {\n  id: \"io.unagi.unawallet\",\n  name: \"una Wallet\",\n  homepage: \"https://unawallet.unagi.io\",\n  image_id: \"78118aa8-8dfc-4742-86f7-b51d34e7cf00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/una-wallet/id6456397239\",\n    android: \"https://play.google.com/store/apps/details?id=app.unawallet.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"unaWallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io.unagi-YSJDUHMV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io.uptn-GWS6HTWS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.uptn.dapp-web/index.js\nvar wallet = {\n  id: \"io.uptn.dapp-web\",\n  name: \"UPTN\",\n  homepage: \"https://dapp-web.uptn.io\",\n  image_id: \"5e656c3e-96ae-484f-c0c6-37bc908daa00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/kr/app/id6444606758\",\n    android: \"https://play.google.com/store/apps/details?id=io.uptn.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"uptn://dapp-web.uptn.io/\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io.uptn-GWS6HTWS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/io.zerion-DKRTCZVY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/io.zerion.wallet/index.js\nvar wallet = {\n  id: \"io.zerion.wallet\",\n  name: \"Zerion\",\n  homepage: \"https://zerion.io/\",\n  image_id: \"73f6f52f-7862-49e7-bb85-ba93ab72cc00\",\n  app: {\n    browser: \"https://app.zerion.io\",\n    ios: \"https://apps.apple.com/app/id1456732565\",\n    android: \"https://play.google.com/store/apps/details?id=io.zerion.android&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/zerion-wallet-for-web3-nf/klghhnkeealcohjjanjjdaeeggmfmlpl\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"io.zerion.wallet\",\n  mobile: {\n    native: \"zerion://\",\n    universal: \"https://wallet.zerion.io/wc\"\n  },\n  desktop: {\n    native: \"zerion://\",\n    universal: \"https://wallet.zerion.io\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=io.zerion-DKRTCZVY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/is-UU4FXVPC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/is.callback/index.js\nvar wallet = {\n  id: \"is.callback\",\n  name: \"Callback\",\n  homepage: \"https://callback.is\",\n  image_id: \"9f50c7a7-2384-4efe-89c3-01e0fec2b700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/en/app/callback-original-stickers/id1543659456\",\n    android: \"https://play.google.com/store/apps/details?id=com.thebasicsmeishi\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"callback://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=is-UU4FXVPC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/is-contract-deployed-AZVYEI5B.js",
    "content": "import {\n  isContractDeployed\n} from \"./chunk-Q3TN3POE.js\";\nimport \"./chunk-PB7CMXGP.js\";\nimport \"./chunk-NPXNISXJ.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  isContractDeployed\n};\n//# sourceMappingURL=is-contract-deployed-AZVYEI5B.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/isApprovedForAll-CG3FQCVQ.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  decodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IERC721A/read/isApprovedForAll.js\nvar FN_SELECTOR = \"0xe985e9c5\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"owner\"\n  },\n  {\n    type: \"address\",\n    name: \"operator\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"bool\"\n  }\n];\nfunction isIsApprovedForAllSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction encodeIsApprovedForAllParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.owner, options.operator]);\n}\nfunction encodeIsApprovedForAll(options) {\n  return FN_SELECTOR + encodeIsApprovedForAllParams(options).slice(2);\n}\nfunction decodeIsApprovedForAllResult(result) {\n  return decodeAbiParameters(FN_OUTPUTS, result)[0];\n}\nasync function isApprovedForAll(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.owner, options.operator]\n  });\n}\nexport {\n  FN_SELECTOR,\n  decodeIsApprovedForAllResult,\n  encodeIsApprovedForAll,\n  encodeIsApprovedForAllParams,\n  isApprovedForAll,\n  isIsApprovedForAllSupported\n};\n//# sourceMappingURL=isApprovedForAll-CG3FQCVQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/isApprovedForAll-JGBKL36G.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  decodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IERC1155/read/isApprovedForAll.js\nvar FN_SELECTOR = \"0xe985e9c5\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"_owner\"\n  },\n  {\n    type: \"address\",\n    name: \"_operator\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"bool\"\n  }\n];\nfunction isIsApprovedForAllSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction encodeIsApprovedForAllParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.owner, options.operator]);\n}\nfunction encodeIsApprovedForAll(options) {\n  return FN_SELECTOR + encodeIsApprovedForAllParams(options).slice(2);\n}\nfunction decodeIsApprovedForAllResult(result) {\n  return decodeAbiParameters(FN_OUTPUTS, result)[0];\n}\nasync function isApprovedForAll(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.owner, options.operator]\n  });\n}\nexport {\n  FN_SELECTOR,\n  decodeIsApprovedForAllResult,\n  encodeIsApprovedForAll,\n  encodeIsApprovedForAllParams,\n  isApprovedForAll,\n  isIsApprovedForAllSupported\n};\n//# sourceMappingURL=isApprovedForAll-JGBKL36G.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/it-Y3SJTOXS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/it.airgap/index.js\nvar wallet = {\n  id: \"it.airgap\",\n  name: \"AirGap Wallet\",\n  homepage: \"https://airgap.it\",\n  image_id: \"76bfe8cd-cf3f-4341-c33c-60da01065000\",\n  app: {\n    browser: \"https://wallet.airgap.it\",\n    ios: \"https://itunes.apple.com/us/app/airgap-wallet/id1420996542?l=de&ls=1&mt=8\",\n    android: \"https://play.google.com/store/apps/details?id=it.airgap.wallet\",\n    mac: \"https://github.com/airgap-it/airgap-wallet/releases\",\n    windows: \"https://github.com/airgap-it/airgap-wallet/releases\",\n    linux: \"https://github.com/airgap-it/airgap-wallet/releases\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"airgap-wallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=it-Y3SJTOXS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ja-6MH4WP2Z.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/smartWallet/locale/ja.js\nvar smartWalletLocale = {\n  connecting: \"スマートアカウントに接続中\",\n  failedToConnect: \"スマートアカウントへの接続に失敗しました\",\n  wrongNetworkScreen: {\n    title: \"ネットワークが違います\",\n    subtitle: \"ウォレットが必要なネットワークに接続されていません\",\n    failedToSwitch: \"ネットワークの切り替えに失敗しました\"\n  }\n};\nvar ja_default = smartWalletLocale;\nexport {\n  ja_default as default\n};\n//# sourceMappingURL=ja-6MH4WP2Z.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ja-HG2757OL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/injected/locale/ja.js\nvar injectedWalletLocale = (wallet) => ({\n  connectionScreen: {\n    inProgress: \"確認を待っています\",\n    failed: \"接続に失敗しました\",\n    instruction: `${wallet}で接続リクエストを承認してください`,\n    retry: \"再試行\"\n  },\n  getStartedScreen: {\n    instruction: `QRコードをスキャンして${wallet}アプリをダウンロードしてください`\n  },\n  scanScreen: {\n    instruction: `${wallet}アプリでQRコードをスキャンして接続してください`\n  },\n  getStartedLink: `${wallet}をお持ちではありませんか？`,\n  download: {\n    chrome: \"Chrome拡張機能をダウンロード\",\n    android: \"Google Playでダウンロード\",\n    iOS: \"App Storeでダウンロード\"\n  }\n});\nvar ja_default = injectedWalletLocale;\nexport {\n  ja_default as default\n};\n//# sourceMappingURL=ja-HG2757OL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ja-MCXBRC6G.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/locale/ja.js\nvar connectWalletLocalJa = {\n  id: \"ja_JP\",\n  signIn: \"サインイン\",\n  defaultButtonTitle: \"ウォレット接続\",\n  connecting: \"接続中\",\n  switchNetwork: \"ネットワークを切り替える\",\n  switchingNetwork: \"ネットワークの切替中\",\n  defaultModalTitle: \"接続\",\n  recommended: \"推奨\",\n  installed: \"インストール済み\",\n  continueAsGuest: \"ゲストとして続ける\",\n  connectAWallet: \"ウォレットを接続する\",\n  newToWallets: \"ウォレットは初めてですか？\",\n  getStarted: \"始める\",\n  guest: \"ゲスト\",\n  send: \"送る\",\n  receive: \"受け取る\",\n  currentNetwork: \"現在のネットワーク\",\n  switchAccount: \"アカウントを切り替える\",\n  requestTestnetFunds: \"テストネットの資金をリクエストする\",\n  buy: \"購入\",\n  transactions: \"取引\",\n  payTransactions: \"支払い取引\",\n  walletTransactions: \"ウォレット取引\",\n  viewAllTransactions: \"全ての取引を表示\",\n  backupWallet: \"ウォレットのバックアップ\",\n  guestWalletWarning: \"これは一時的なゲストウォレットです。アクセスできなくなることを防ぐため、バックアップをしてください\",\n  switchTo: \"切り替え先\",\n  // Used in \"Switch to <Wallet-Name>\"\n  connectedToSmartWallet: \"スマートウォレットに接続済み\",\n  confirmInWallet: \"ウォレットで確認\",\n  disconnectWallet: \"ウォレットの切断\",\n  copyAddress: \"アドレスをコピー\",\n  personalWallet: \"パーソナルウォレット\",\n  smartWallet: \"スマートウォレット\",\n  or: \"または\",\n  goBackButton: \"戻る\",\n  // TODO - check translation\n  passkeys: {\n    linkPasskey: \"パスキーをリンクする\",\n    title: \"パスキー\"\n  },\n  welcomeScreen: {\n    defaultTitle: \"分散型世界へのゲートウェイ\",\n    defaultSubtitle: \"始めるためにウォレットを接続してください\"\n  },\n  agreement: {\n    prefix: \"接続することで、以下に同意したことになります：\",\n    termsOfService: \"利用規約\",\n    and: \"および\",\n    privacyPolicy: \"プライバシーポリシー\"\n  },\n  networkSelector: {\n    title: \"ネットワークの選択\",\n    mainnets: \"メインネット\",\n    testnets: \"テストネット\",\n    allNetworks: \"すべて\",\n    addCustomNetwork: \"カスタムネットワークを追加\",\n    inputPlaceholder: \"ネットワーク名またはチェーンIDを検索\",\n    categoryLabel: {\n      recentlyUsed: \"最近使用したもの\",\n      popular: \"人気\",\n      others: \"全てのネットワーク\"\n    },\n    loading: \"読み込み中\",\n    failedToSwitch: \"ネットワークの切替に失敗しました\"\n  },\n  receiveFundsScreen: {\n    title: \"資金を受け取る\",\n    instruction: \"このウォレットに資金を送るためのウォレットアドレスをコピーしてください\"\n  },\n  sendFundsScreen: {\n    title: \"資金の送付\",\n    submitButton: \"送信\",\n    token: \"トークン\",\n    sendTo: \"送信先\",\n    amount: \"金額\",\n    successMessage: \"取引成功\",\n    invalidAddress: \"無効なアドレス\",\n    noTokensFound: \"トークンが見つかりません\",\n    searchToken: \"トークンのアドレスを検索するか、貼り付けてください\",\n    transactionFailed: \"取引に失敗しました\",\n    transactionRejected: \"取引が拒否されました\",\n    insufficientFunds: \"資金が不足しています\",\n    selectTokenTitle: \"トークンを選択\",\n    sending: \"送信中\"\n  },\n  signatureScreen: {\n    instructionScreen: {\n      title: \"サインイン\",\n      instruction: \"続行するためにウォレットでメッセージリクエストにサインしてください\",\n      signInButton: \"サインイン\",\n      disconnectWallet: \"ウォレットの切断\"\n    },\n    signingScreen: {\n      title: \"サインイン中\",\n      prompt: \"ウォレットで署名リクエストにサインしてください\",\n      promptForSafe: \"ウォレットで署名リクエストにサインし、Safeで取引を承認してください\",\n      approveTransactionInSafe: \"Safeで取引を承認\",\n      tryAgain: \"再試行\",\n      failedToSignIn: \"サインインに失敗しました\",\n      inProgress: \"確認待ち\"\n    }\n  },\n  manageWallet: {\n    title: \"ウォレットを管理\",\n    linkedProfiles: \"リンクされたプロファイル\",\n    linkProfile: \"プロフィールをリンクする\",\n    connectAnApp: \"アプリを接続\",\n    exportPrivateKey: \"秘密鍵をエクスポート\"\n  },\n  viewFunds: {\n    title: \"資金を表示\",\n    viewNFTs: \"NFTを表示\",\n    viewTokens: \"トークンを表示\",\n    viewAssets: \"資産を表示\"\n  }\n};\nvar ja_default = connectWalletLocalJa;\nexport {\n  ja_default as default\n};\n//# sourceMappingURL=ja-MCXBRC6G.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ja-PZYAXXAL.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/locale/ja.js\nvar ja_default = {\n  signInWithGoogle: \"Google\",\n  signInWithFacebook: \"Facebook\",\n  signInWithApple: \"Apple\",\n  signInWithDiscord: \"Discord\",\n  emailPlaceholder: \"メールアドレス\",\n  submitEmail: \"続行\",\n  signIn: \"サインイン\",\n  or: \"または\",\n  emailRequired: \"メールアドレスは必須です\",\n  invalidEmail: \"無効なメールアドレス\",\n  maxAccountsExceeded: \"アカウントの最大数を超えました。アプリ開発者に通知してください。\",\n  socialLoginScreen: {\n    title: \"サインイン\",\n    instruction: \"ポップアップでアカウントにサインインしてください\",\n    failed: \"サインインに失敗しました\",\n    retry: \"再試行\"\n  },\n  emailLoginScreen: {\n    title: \"サインイン\",\n    enterCodeSendTo: \"送信された確認コードを入力してください\",\n    newDeviceDetected: \"新しいデバイスが検出されました\",\n    enterRecoveryCode: \"初回サインアップ時に送信されたリカバリーコードを入力してください\",\n    invalidCode: \"無効な確認コード\",\n    invalidCodeOrRecoveryCode: \"無効な確認コードまたはリカバリーコード\",\n    verify: \"確認\",\n    failedToSendCode: \"確認コードの送信に失敗しました\",\n    sendingCode: \"確認コードを送信中\",\n    resendCode: \"確認コードを再送\"\n  },\n  createPassword: {\n    title: \"パスワードを作成\",\n    instruction: \"アカウントのパスワードを設定してください。新しいデバイスから接続する際にこのパスワードが必要です。\",\n    saveInstruction: \"必ず保存してください\",\n    inputPlaceholder: \"パスワードを入力してください\",\n    confirmation: \"パスワードを保存しました\",\n    submitButton: \"パスワードを設定\",\n    failedToSetPassword: \"パスワードの設定に失敗しました\"\n  },\n  enterPassword: {\n    title: \"パスワードを入力\",\n    instruction: \"アカウントのパスワードを入力してください\",\n    inputPlaceholder: \"パスワードを入力してください\",\n    submitButton: \"確認\",\n    wrongPassword: \"パスワードが間違っています\"\n  },\n  signInWithEmail: \"メールでサインイン\",\n  invalidPhone: \"無効な電話番号\",\n  phonePlaceholder: \"電話番号\",\n  signInWithPhone: \"電話番号でサインイン\",\n  phoneRequired: \"電話番号は必須です\",\n  passkey: \"パスキー\",\n  linkWallet: \"ウォレットをリンクする\",\n  loginAsGuest: \"ゲストとしてログイン\",\n  signInWithWallet: \"ウォレットでログイン\"\n};\nexport {\n  ja_default as default\n};\n//# sourceMappingURL=ja-PZYAXXAL.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/kr-LSVS4UQW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/smartWallet/locale/kr.js\nvar smartWalletLocale = {\n  connecting: \"스마트 계정에 연결 중\",\n  failedToConnect: \"스마트 계정에 연결하지 못했습니다\",\n  wrongNetworkScreen: {\n    title: \"잘못된 네트워크\",\n    subtitle: \"지갑이 필요한 네트워크에 연결되어 있지 않습니다\",\n    failedToSwitch: \"네트워크 전환 실패\"\n  }\n};\nvar kr_default = smartWalletLocale;\nexport {\n  kr_default as default\n};\n//# sourceMappingURL=kr-LSVS4UQW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/kr-O56ZYU3R.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/locale/kr.js\nvar connectLocaleKr = {\n  id: \"ko_KR\",\n  signIn: \"로그인\",\n  defaultButtonTitle: \"지갑 연결\",\n  connecting: \"연결 중\",\n  switchNetwork: \"네트워크 전환\",\n  switchingNetwork: \"네트워크 전환 중\",\n  defaultModalTitle: \"로그인\",\n  recommended: \"추천\",\n  installed: \"설치됨\",\n  buy: \"구매\",\n  continueAsGuest: \"게스트로 계속\",\n  connectAWallet: \"지갑 연결\",\n  newToWallets: \"지갑 사용이 처음이신가요?\",\n  getStarted: \"시작하기\",\n  guest: \"게스트\",\n  send: \"보내기\",\n  receive: \"받기\",\n  currentNetwork: \"현재 네트워크\",\n  switchAccount: \"계정 전환\",\n  requestTestnetFunds: \"테스트넷 자금 요청\",\n  transactions: \"거래\",\n  payTransactions: \"법정화폐 거래\",\n  walletTransactions: \"지갑 거래\",\n  viewAllTransactions: \"모든 거래 보기\",\n  backupWallet: \"지갑 백업\",\n  guestWalletWarning: \"이것은 임시 게스트 지갑입니다. 접근을 잃지 않으려면 지갑을 백업하십시오\",\n  switchTo: \"전환\",\n  // Used in \"<Wallet-Name> 으로 전환\"\n  connectedToSmartWallet: \"스마트 계정\",\n  confirmInWallet: \"지갑에서 확인\",\n  disconnectWallet: \"지갑 연결 해제\",\n  copyAddress: \"주소 복사\",\n  personalWallet: \"개인 지갑\",\n  smartWallet: \"스마트 지갑\",\n  or: \"또는\",\n  goBackButton: \"뒤로\",\n  passkeys: {\n    title: \"패스키\",\n    linkPasskey: \"패스키 연결\"\n  },\n  welcomeScreen: {\n    defaultTitle: \"분산된 세계로의 게이트웨이\",\n    defaultSubtitle: \"시작하려면 지갑을 연결하십시오\"\n  },\n  agreement: {\n    prefix: \"연결함으로써 귀하는 다음에 동의하게 됩니다\",\n    termsOfService: \"서비스 약관\",\n    and: \"&\",\n    privacyPolicy: \"개인정보 보호정책\"\n  },\n  networkSelector: {\n    title: \"네트워크 선택\",\n    mainnets: \"메인넷\",\n    testnets: \"테스트넷\",\n    allNetworks: \"모두\",\n    addCustomNetwork: \"맞춤 네트워크 추가\",\n    inputPlaceholder: \"네트워크 또는 체인 ID 검색\",\n    categoryLabel: {\n      recentlyUsed: \"최근 사용\",\n      popular: \"인기\",\n      others: \"모든 네트워크\"\n    },\n    loading: \"로딩 중\",\n    failedToSwitch: \"네트워크 전환 실패\"\n  },\n  receiveFundsScreen: {\n    title: \"자금 수신\",\n    instruction: \"자금을 이 지갑으로 보내려면 지갑 주소를 복사하십시오\"\n  },\n  sendFundsScreen: {\n    title: \"자금 송금\",\n    submitButton: \"보내기\",\n    token: \"토큰\",\n    sendTo: \"보낼 곳\",\n    amount: \"금액\",\n    successMessage: \"거래 성공\",\n    invalidAddress: \"유효하지 않은 주소\",\n    noTokensFound: \"토큰을 찾을 수 없음\",\n    searchToken: \"토큰 주소 검색 또는 붙여넣기\",\n    transactionFailed: \"거래 실패\",\n    transactionRejected: \"거래 거부됨\",\n    insufficientFunds: \"자금 부족\",\n    selectTokenTitle: \"토큰 선택\",\n    sending: \"보내는 중\"\n  },\n  signatureScreen: {\n    instructionScreen: {\n      title: \"로그인\",\n      instruction: \"계속하려면 지갑에서 메시지 요청에 서명하십시오\",\n      signInButton: \"로그인\",\n      disconnectWallet: \"지갑 연결 해제\"\n    },\n    signingScreen: {\n      title: \"로그인 중\",\n      prompt: \"지갑에서 서명 요청에 서명하십시오\",\n      promptForSafe: \"지갑에서 서명 요청에 서명하고 Safe에서 거래를 승인하십시오\",\n      approveTransactionInSafe: \"Safe에서 거래 승인\",\n      tryAgain: \"다시 시도\",\n      failedToSignIn: \"로그인 실패\",\n      inProgress: \"확인 대기 중\"\n    }\n  },\n  manageWallet: {\n    title: \"지갑 관리\",\n    linkedProfiles: \"연결된 프로필\",\n    linkProfile: \"링크 프로필\",\n    connectAnApp: \"앱 연결\",\n    exportPrivateKey: \"개인 키 내보내기\"\n  },\n  viewFunds: {\n    title: \"자금 보기\",\n    viewNFTs: \"NFT 보기\",\n    viewTokens: \"토큰 보기\",\n    viewAssets: \"자산 보기\"\n  }\n};\nvar kr_default = connectLocaleKr;\nexport {\n  kr_default as default\n};\n//# sourceMappingURL=kr-O56ZYU3R.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/kr-QIL3MJCP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/locale/kr.js\nvar kr_default = {\n  signInWithGoogle: \"Google\",\n  signInWithFacebook: \"Facebook\",\n  signInWithApple: \"Apple\",\n  signInWithDiscord: \"Discord\",\n  emailPlaceholder: \"이메일 주소\",\n  submitEmail: \"계속하기\",\n  signIn: \"로그인\",\n  or: \"Or\",\n  emailRequired: \"이메일 주소가 필요합니다\",\n  invalidEmail: \"잘못된 이메일 주소\",\n  maxAccountsExceeded: \"계정 최대 수를 초과했습니다. 앱 개발자에게 알려주세요.\",\n  socialLoginScreen: {\n    title: \"로그인\",\n    instruction: \"팝업 창에서 계정에 로그인하세요\",\n    failed: \"로그인에 실패했습니다\",\n    retry: \"다시 시도\"\n  },\n  emailLoginScreen: {\n    title: \"로그인\",\n    enterCodeSendTo: \"전송된 인증 코드를 입력하세요\",\n    newDeviceDetected: \"새 기기가 감지되었습니다\",\n    enterRecoveryCode: \"처음 가입할 때 이메일로 전송된 복구 코드를 입력하세요\",\n    invalidCode: \"잘못된 인증 코드\",\n    invalidCodeOrRecoveryCode: \"잘못된 인증 코드 또는 복구 코드\",\n    verify: \"확인\",\n    failedToSendCode: \"인증 코드 전송에 실패했습니다\",\n    sendingCode: \"인증 코드 전송 중\",\n    resendCode: \"인증 코드 다시 보내기\"\n  },\n  createPassword: {\n    title: \"비밀번호 생성\",\n    instruction: \"계정의 비밀번호를 설정하세요. 새 기기에서 연결할 때 이 비밀번호가 필요합니다.\",\n    saveInstruction: \"반드시 저장하세요\",\n    inputPlaceholder: \"비밀번호를 입력하세요\",\n    confirmation: \"비밀번호를 저장했습니다\",\n    submitButton: \"비밀번호 설정\",\n    failedToSetPassword: \"비밀번호 설정 실패\"\n  },\n  enterPassword: {\n    title: \"비밀번호를 입력하세요\",\n    instruction: \"계정의 비밀번호를 입력하세요\",\n    inputPlaceholder: \"비밀번호를 입력하세요\",\n    submitButton: \"확인\",\n    wrongPassword: \"잘못된 비밀번호\"\n  },\n  signInWithEmail: \"이메일로 로그인\",\n  invalidPhone: \"잘못된 전화번호\",\n  phonePlaceholder: \"전화번호\",\n  signInWithPhone: \"전화번호로 로그인\",\n  phoneRequired: \"전화번호가 필요합니다\",\n  passkey: \"비밀번호\",\n  linkWallet: \"지갑 연결\",\n  loginAsGuest: \"게스트로 로그인\",\n  signInWithWallet: \"지갑으로 로그인\"\n};\nexport {\n  kr_default as default\n};\n//# sourceMappingURL=kr-QIL3MJCP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/kr-XDCZ7IIG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/injected/locale/kr.js\nvar injectedWalletLocale = (wallet) => ({\n  connectionScreen: {\n    inProgress: \"확인 대기 중\",\n    failed: \"연결 실패\",\n    instruction: `${wallet}에서 연결 요청을 수락하세요`,\n    retry: \"다시 시도하세요\"\n  },\n  getStartedScreen: {\n    instruction: `Scan the QR code to download the ${wallet} app`\n  },\n  scanScreen: {\n    instruction: `Scan the QR code with the ${wallet} app to connect`\n  },\n  getStartedLink: `Don't have ${wallet}?`,\n  download: {\n    chrome: \"Chrome 확장 프로그램 다운로드\",\n    android: \"Google Play에서 다운로드\",\n    iOS: \"App Store에서 다운로드\"\n  }\n});\nvar kr_default = injectedWalletLocale;\nexport {\n  kr_default as default\n};\n//# sourceMappingURL=kr-XDCZ7IIG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/land-CKBS6ZRZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/land.liker/index.js\nvar wallet = {\n  id: \"land.liker\",\n  name: \"LikerLand App\",\n  homepage: \"https://liker.land/getapp\",\n  image_id: \"501fa316-f0df-4a1b-ead6-5523251b7100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/liker-land/id1248232355\",\n    android: \"https://play.google.com/store/apps/details?id=com.oice\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"com.oice://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=land-CKBS6ZRZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/live-5DC3MAHO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/live.superex/index.js\nvar wallet = {\n  id: \"live.superex\",\n  name: \"SuperWallet\",\n  homepage: \"https://superex.live\",\n  image_id: \"e8f30122-5537-4b38-d6d5-9cae46771800\",\n  app: {\n    browser: \"https://superex.com\",\n    ios: \"https://apps.apple.com/us/app/superex/id1601589888\",\n    android: \"https://play.google.com/store/apps/details?id=com.superex.ex\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"superwallet://\",\n    universal: \"https://www.superex.live\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=live-5DC3MAHO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/llc-JHHSY2C6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/llc.besc/index.js\nvar wallet = {\n  id: \"llc.besc\",\n  name: \"BeanBag\",\n  homepage: \"https://besc.llc\",\n  image_id: \"5fad49d2-a138-47bb-ac87-6368d8bd9000\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.beanbag.wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"beanbag://wallet/connect\",\n    universal: \"https://play.google.com/store/apps/details?id=com.beanbag.wallet\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=llc-JHHSY2C6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/me-3MEDDZC5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.easy/index.js\nvar wallet = {\n  id: \"me.easy\",\n  name: \"EASY\",\n  homepage: \"https://easy.me\",\n  image_id: \"62feb41a-be1f-4b1c-e089-27f97c0e8d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/easy-web3-social-wallet/id1641192503\",\n    android: \"https://play.google.com/store/apps/details?id=co.theeasy.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"co.theeasy.app://\",\n    universal: \"https://link.easy.me\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=me-3MEDDZC5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/me-KVZQT25O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.haha/index.js\nvar wallet = {\n  id: \"me.haha\",\n  name: \"HaHa\",\n  homepage: \"https://www.haha.me\",\n  image_id: \"79285c9f-2630-451e-0680-c71b42fb7400\",\n  app: {\n    browser: \"https://www.haha.me\",\n    ios: \"https://apps.apple.com/us/app/haha-crypto-portfolio-tracker/id1591158244\",\n    android: \"https://play.google.com/store/apps/details?id=com.permutize.haha\",\n    mac: \"https://apps.apple.com/us/app/haha-crypto-portfolio-tracker/id1591158244\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"haha://\",\n    universal: \"https://haha.me\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=me-KVZQT25O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/me-KZ3JFV6V.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.astrox/index.js\nvar wallet = {\n  id: \"me.astrox\",\n  name: \"Me Wallet\",\n  homepage: \"https://astrox.me/\",\n  image_id: \"e9666b15-4296-4384-3661-7e99a5f2a900\",\n  app: {\n    browser: \"https://app.astrox.me/\",\n    ios: \"https://apps.apple.com/us/app/astrox-me-wallet/id1634031707\",\n    android: \"https://play.google.com/store/apps/details?id=com.astrox.me\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"astrox://me/wcx\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=me-KZ3JFV6V.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/me-N5NHUYM7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.iopay/index.js\nvar wallet = {\n  id: \"me.iopay\",\n  name: \"ioPay\",\n  homepage: \"https://iopay.me/\",\n  image_id: \"411d80d0-3a75-4932-560f-565d8c715e00\",\n  app: {\n    browser: \"https://iopay.me/\",\n    ios: \"https://apps.apple.com/app/apple-store/id1478086371\",\n    android: \"https://play.google.com/store/apps/details?id=io.iotex.iopay.gp\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"iopay://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=me-N5NHUYM7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/me-NGGLTLQU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.rainbow/index.js\nvar wallet = {\n  id: \"me.rainbow\",\n  name: \"Rainbow\",\n  homepage: \"https://rainbow.me/\",\n  image_id: \"7a33d7f1-3d12-4b5c-f3ee-5cd83cb1b500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/apple-store/id1457119021?pt=119997837&ct=wc&mt=8\",\n    android: \"https://play.google.com/store/apps/details?id=me.rainbow&referrer=utm_source%3Dwc%26utm_medium%3Dconnector%26utm_campaign%3Dwc\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/rainbow/opfgelmcmbiajamepnmloijbpoleiama?utm_source=wc&utm_medium=connector&utm_campaign=wc\",\n    firefox: \"https://addons.mozilla.org/en-US/firefox/addon/rainbow-extension/?utm_source=wc&utm_medium=connector&utm_campaign=wc\",\n    safari: null,\n    edge: \"https://microsoftedge.microsoft.com/addons/detail/rainbow/cpojfbodiccabbabgimdeohkkpjfpbnf?utm_source=wc&utm_medium=connector&utm_campaign=wc\",\n    opera: null\n  },\n  rdns: \"me.rainbow\",\n  mobile: {\n    native: \"rainbow://\",\n    universal: \"https://rnbwapp.com\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=me-NGGLTLQU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/me.komet-E7D6F2JB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/me.komet.app/index.js\nvar wallet = {\n  id: \"me.komet.app\",\n  name: \"Komet\",\n  homepage: \"https://komet.me\",\n  image_id: \"a2e9aaed-20f6-4da9-3ca3-448a1fc00b00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/in/app/komet/id6448238558\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/komet-wallet/anmkkggohcdelhaholjialcfgdbcegbo\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"me.komet.app\",\n  mobile: {\n    native: \"komet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=me.komet-E7D6F2JB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/mipdStore-HEJSLGN7.js",
    "content": "import {\n  getInstalledWalletProviders,\n  injectedProvider\n} from \"./chunk-PWFRCBEK.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getInstalledWalletProviders,\n  injectedProvider\n};\n//# sourceMappingURL=mipdStore-HEJSLGN7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/money-5LMST26O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/money.keychain/index.js\nvar wallet = {\n  id: \"money.keychain\",\n  name: \"Keychain\",\n  homepage: \"http://keychain.money/\",\n  image_id: \"2b6e9e4b-7dca-45dd-45d5-d96f45010200\",\n  app: {\n    browser: \"https://app.keychain.money/\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://app.keychain.money/\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://app.keychain.money/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=money-5LMST26O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/money-E4VOZHJR.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/money.unstoppable/index.js\nvar wallet = {\n  id: \"money.unstoppable\",\n  name: \"Unstoppable Wallet\",\n  homepage: \"https://unstoppable.money/\",\n  image_id: \"a63cbfce-0726-4f94-9187-a761afb94400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/unstoppable-crypto-wallet/id1447619907\",\n    android: \"https://play.google.com/store/apps/details?id=io.horizontalsystems.bankwallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"unstoppable.money://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=money-E4VOZHJR.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/money-SUJPFHWI.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/money.snowball/index.js\nvar wallet = {\n  id: \"money.snowball\",\n  name: \"Snowball\",\n  homepage: \"https://snowball.money/\",\n  image_id: \"313faea4-af8c-41f4-0ed8-98be5d048e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/snowball-smart-defi-wallet/id1449662311\",\n    android: \"https://play.google.com/store/apps/details?id=money.snowball.defi\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://app.snowball.exchange/app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=money-SUJPFHWI.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/native-NEGONUYD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/isows/_esm/utils.js\nfunction getNativeWebSocket() {\n  if (typeof WebSocket !== \"undefined\")\n    return WebSocket;\n  if (typeof global.WebSocket !== \"undefined\")\n    return global.WebSocket;\n  if (typeof window.WebSocket !== \"undefined\")\n    return window.WebSocket;\n  if (typeof self.WebSocket !== \"undefined\")\n    return self.WebSocket;\n  throw new Error(\"`WebSocket` is not supported in this environment\");\n}\n\n// node_modules/isows/_esm/native.js\nvar WebSocket2 = getNativeWebSocket();\nexport {\n  WebSocket2 as WebSocket\n};\n//# sourceMappingURL=native-NEGONUYD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/net-4I6DBKNS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.myrenegade/index.js\nvar wallet = {\n  id: \"net.myrenegade\",\n  name: \"Renegade\",\n  homepage: \"https://www.myrenegade.net\",\n  image_id: \"6ce2caa3-c597-445a-b61f-0b46b5c15000\",\n  app: {\n    browser: \"https://wallet.myrenegade.net\",\n    ios: \"https://apps.apple.com/us/app/myrenegade/id1670346221\",\n    android: \"https://play.google.com/store/apps/details?id=com.app.renegade\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"renegade-web3wallet://\",\n    universal: \"https://webapp.myrenegade.net\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=net-4I6DBKNS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/net-KQRWOTI5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.spatium/index.js\nvar wallet = {\n  id: \"net.spatium\",\n  name: \"Spatium\",\n  homepage: \"https://spatium.net\",\n  image_id: \"51867bee-2963-4071-d67a-1fdcaa451f00\",\n  app: {\n    browser: \"https://spatium.net\",\n    ios: \"https://apps.apple.com/ru/app/spatium/id1404844195\",\n    android: \"https://play.google.com/store/apps/details?id=capital.spatium.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"spatium://\",\n    universal: \"https://link.spatium.net\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=net-KQRWOTI5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/net-Q5SVTUAO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.gateweb3/index.js\nvar wallet = {\n  id: \"net.gateweb3\",\n  name: \"GateWallet\",\n  homepage: \"https://www.gateweb3.net/web3\",\n  image_id: \"6e528abf-7a7d-47bd-d84d-481f169b1200\",\n  app: {\n    browser: null,\n    ios: \"https://www.gate.io/mobileapp\",\n    android: \"https://www.gate.io/mobileapp\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"gtweb3wallet://\",\n    universal: null\n  },\n  desktop: {\n    native: \"gtweb3wallet://\",\n    universal: \"https://www.gateweb3.net/web3\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=net-Q5SVTUAO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/net-TAG5PSHX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.shinobi-wallet/index.js\nvar wallet = {\n  id: \"net.shinobi-wallet\",\n  name: \"Shinobi-Wallet\",\n  homepage: \"https://shinobi-wallet.net/\",\n  image_id: \"685c986c-3e80-4701-cec6-cd247ba1a700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/fgraph/id1572609905\",\n    android: \"https://play.google.com/store/apps/details?id=io.fgraph.shinobiwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"shinobi-wallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=net-TAG5PSHX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/net-Z743Z374.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.stasis/index.js\nvar wallet = {\n  id: \"net.stasis\",\n  name: \"Stasis Wallet\",\n  homepage: \"https://stasis.net/\",\n  image_id: \"d83223cf-f29a-4757-a21e-8913b12f9f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/stasis-wallet/id1371949230\",\n    android: \"https://play.google.com/store/apps/details?id=com.stasis.stasiswallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"stasis://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=net-Z743Z374.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/net.spatium-EBSLJIM4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/net.spatium.wallet/index.js\nvar wallet = {\n  id: \"net.spatium.wallet\",\n  name: \"Spatium\",\n  homepage: \"https://wallet.spatium.net\",\n  image_id: \"8b966926-cdcf-4eae-1432-b400fe014700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ru/app/spatium/id6476919875\",\n    android: \"https://play.google.com/store/apps/details?id=net.spatium.next\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"spatium-next://\",\n    universal: \"https://link.spatium.net\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=net.spatium-EBSLJIM4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/network-3HZ5XME7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.dgg/index.js\nvar wallet = {\n  id: \"network.dgg\",\n  name: \"DGG Wallet\",\n  homepage: \"https://dgg.network\",\n  image_id: \"e4cbed08-8839-4bce-875f-d8917ceb7e00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/nl/app/dgg-wallet-nfts-games/id1659618218\",\n    android: \"https://play.google.com/store/apps/details?id=network.dgg.wallet&hl=en_US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://apps.apple.com/nl/app/dgg-wallet-nfts-games/id1659618218\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"dgg://\",\n    universal: \"https://dggnetwork.app.link\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=network-3HZ5XME7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/network-64V4ODDY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.cvl/index.js\nvar wallet = {\n  id: \"network.cvl\",\n  name: \"CVL Wallet\",\n  homepage: \"https://cvl.network\",\n  image_id: \"e4eff15a-35d5-49fe-047f-33e331f46400\",\n  app: {\n    browser: \"https://app.cvl.network/\",\n    ios: \"https://apps.apple.com/ru/app/cvl-wallet/id6444357628\",\n    android: \"https://play.google.com/store/apps/details?id=llp.bc_group.cvl_wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://app.cvl.network/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=network-64V4ODDY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/network-7CN3ZGB5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.gridlock/index.js\nvar wallet = {\n  id: \"network.gridlock\",\n  name: \"Gridlock Wallet\",\n  homepage: \"https://gridlock.network/\",\n  image_id: \"471e6f61-b95a-453c-670c-029ef3b2bd00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/gridlock-secure-crypto-wallet/id1567057330\",\n    android: \"https://play.google.com/store/apps/details?id=network.gridlock.AppGridlock\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"network.gridlock.AppGridlock://\",\n    universal: \"https://gridlock.page.link/Fihx\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=network-7CN3ZGB5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/network-FCNDYIML.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.haqq/index.js\nvar wallet = {\n  id: \"network.haqq\",\n  name: \"HAQQ Wallet\",\n  homepage: \"https://haqq.network/wallet\",\n  image_id: \"99fe539d-6a2a-4f52-2211-42fd04a9f300\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/haqq-wallet-by-bored-gen/id6443843352\",\n    android: \"https://play.google.com/store/apps/details?id=com.haqq.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"haqq://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=network-FCNDYIML.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/network-FHGUIPWM.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.blackfort/index.js\nvar wallet = {\n  id: \"network.blackfort\",\n  name: \"BlackFort Wallet\",\n  homepage: \"https://blackfort.network\",\n  image_id: \"f2cf0909-3e1e-4f67-8c3f-2b69f7a5eb00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/pl/app/blackfort-wallet/id6447954137\",\n    android: \"https://play.google.com/store/apps/details?id=exchange.blackfort.blackfortwallet&hl=en_US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"blackfortwc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=network-FHGUIPWM.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/network-OTQ66RXU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.trustkeys/index.js\nvar wallet = {\n  id: \"network.trustkeys\",\n  name: \"TK Finance\",\n  homepage: \"https://trustkeys.network/\",\n  image_id: \"c4066f68-2247-49bf-ac8a-a677bfa81800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/vn/app/tk-finance/id1601968967\",\n    android: \"https://play.google.com/store/apps/details?id=com.trustkeysnetwork\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"tk://\",\n    universal: \"https://trustkeys.network\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=network-OTQ66RXU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/network-WFECV2ZU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/network.mrhb/index.js\nvar wallet = {\n  id: \"network.mrhb\",\n  name: \"Sahal Wallet\",\n  homepage: \"https://mrhb.network\",\n  image_id: \"afa1e46a-331a-418f-ef1f-a29f76def100\",\n  app: {\n    browser: \"https://mrhb.network\",\n    ios: \"https://apps.apple.com/gb/app/sahal-wallet/id1602366920\",\n    android: \"https://play.google.com/store/apps/details?id=sahal.wallet.app&gl=GB\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"sahalwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: \"sahalwallet://\",\n    universal: \"https://sahalwallet.app\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=network-WFECV2ZU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/nl.greenhood-2VCIICQQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/nl.greenhood.wallet/index.js\nvar wallet = {\n  id: \"nl.greenhood.wallet\",\n  name: \"Greenhood\",\n  homepage: \"https://www.greenhood.nl\",\n  image_id: \"7b6aaa4d-fa17-4cc6-71e1-79f2e68c0900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/greenhood-wallet/id1661248135\",\n    android: \"https://play.google.com/store/apps/details?id=com.greehood.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"nl.greenhood.wallet\",\n  mobile: {\n    native: \"greenhood://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=nl.greenhood-2VCIICQQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/one.metapro-JZZTCOTQ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/one.metapro.wallet/index.js\nvar wallet = {\n  id: \"one.metapro.wallet\",\n  name: \"metapro wallet\",\n  homepage: \"https://wallet.metapro.one\",\n  image_id: \"20775b9e-c38f-4173-509f-896a84593b00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/metapro-wallet/id1628087356\",\n    android: \"https://play.google.com/store/apps/details?id=com.metapro.app&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"metapro://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=one.metapro-JZZTCOTQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/one.mixin-AYEP2MDG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/one.mixin.messenger/index.js\nvar wallet = {\n  id: \"one.mixin.messenger\",\n  name: \"Mixin Messenger\",\n  homepage: \"https://messenger.mixin.one\",\n  image_id: \"c5516ab5-57c3-45ec-09e2-b149c9709600\",\n  app: {\n    browser: \"https://mixin.one\",\n    ios: \"https://apps.apple.com/app/mixin/id1322324266\",\n    android: \"https://play.google.com/store/apps/details?id=one.mixin.messenger\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"one.mixin.messenger\",\n  mobile: {\n    native: \"mixin://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=one.mixin-AYEP2MDG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/online-4UBMQVRH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/online.puzzle/index.js\nvar wallet = {\n  id: \"online.puzzle\",\n  name: \"Puzzle Wallet\",\n  homepage: \"https://puzzle.online\",\n  image_id: \"08cb0a68-6271-4e25-90c3-bcc3c0226a00\",\n  app: {\n    browser: \"https://jigsaw-dev.puzzle.online\",\n    ios: \"https://apps.apple.com/au/app/puzzle-aleo-wallet/id6450268321\",\n    android: \"https://play.google.com/store/apps/details?id=online.puzzle\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/puzzle-aleo-wallet/fdchdcpieegfofnofhgdombfckhbcokj\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"puzzleapp://\",\n    universal: \"https://jigsaw-dev.puzzle.online/\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://walletconnect.puzzle.online\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=online-4UBMQVRH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/openzeppelin-3CQYP2BQ.js",
    "content": "import {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport {\n  isHex\n} from \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/transaction/actions/gasless/providers/openzeppelin.js\nasync function prepareOpenZeppelinTransaction({ account, serializableTransaction, transaction, gasless }) {\n  const forrwaderContract = getContract({\n    address: gasless.relayerForwarderAddress,\n    chain: transaction.chain,\n    client: transaction.client\n  });\n  const nonce = await readContract({\n    contract: forrwaderContract,\n    method: \"function getNonce(address) view returns (uint256)\",\n    params: [account.address]\n  });\n  const [signature, message] = await (async () => {\n    if (!serializableTransaction.to) {\n      throw new Error(\"OpenZeppelin transactions must have a 'to' address\");\n    }\n    if (!serializableTransaction.gas) {\n      throw new Error(\"OpenZeppelin transactions must have a 'gas' value\");\n    }\n    if (!serializableTransaction.data) {\n      throw new Error(\"OpenZeppelin transactions must have a 'data' value\");\n    }\n    if (gasless.experimentalChainlessSupport) {\n      const message3 = {\n        from: account.address,\n        to: serializableTransaction.to,\n        value: 0n,\n        gas: serializableTransaction.gas,\n        nonce,\n        data: serializableTransaction.data,\n        chainid: BigInt(transaction.chain.id)\n      };\n      return [\n        await account.signTypedData({\n          domain: {\n            name: \"GSNv2 Forwarder\",\n            version: \"0.0.1\",\n            verifyingContract: forrwaderContract.address\n          },\n          message: message3,\n          primaryType: \"ForwardRequest\",\n          types: { ForwardRequest: ChainAwareForwardRequest }\n        }),\n        message3\n      ];\n    }\n    const message2 = {\n      from: account.address,\n      to: serializableTransaction.to,\n      value: 0n,\n      gas: serializableTransaction.gas,\n      nonce,\n      data: serializableTransaction.data\n    };\n    return [\n      await account.signTypedData({\n        domain: {\n          name: gasless.domainName ?? \"GSNv2 Forwarder\",\n          version: gasless.domainVersion ?? \"0.0.1\",\n          chainId: transaction.chain.id,\n          verifyingContract: forrwaderContract.address\n        },\n        message: message2,\n        primaryType: \"ForwardRequest\",\n        types: { ForwardRequest }\n      }),\n      message2\n    ];\n  })();\n  const messageType = \"forward\";\n  return { message, signature, messageType };\n}\nvar ForwardRequest = [\n  { name: \"from\", type: \"address\" },\n  { name: \"to\", type: \"address\" },\n  { name: \"value\", type: \"uint256\" },\n  { name: \"gas\", type: \"uint256\" },\n  { name: \"nonce\", type: \"uint256\" },\n  { name: \"data\", type: \"bytes\" }\n];\nvar ChainAwareForwardRequest = [\n  { name: \"from\", type: \"address\" },\n  { name: \"to\", type: \"address\" },\n  { name: \"value\", type: \"uint256\" },\n  { name: \"gas\", type: \"uint256\" },\n  { name: \"nonce\", type: \"uint256\" },\n  { name: \"data\", type: \"bytes\" },\n  { name: \"chainid\", type: \"uint256\" }\n];\nasync function relayOpenZeppelinTransaction(options) {\n  var _a;\n  const { message, messageType, signature } = await prepareOpenZeppelinTransaction(options);\n  const response = await fetch(options.gasless.relayerUrl, {\n    method: \"POST\",\n    body: stringify({\n      request: message,\n      type: messageType,\n      signature,\n      forwarderAddress: options.gasless.relayerForwarderAddress\n    })\n  });\n  if (!response.ok) {\n    (_a = response.body) == null ? void 0 : _a.cancel();\n    throw new Error(`Failed to send transaction: ${await response.text()}`);\n  }\n  const json = await response.json();\n  if (!json.result) {\n    throw new Error(`Relay transaction failed: ${json.message}`);\n  }\n  const transactionHash = JSON.parse(json.result).txHash;\n  if (isHex(transactionHash)) {\n    return {\n      transactionHash,\n      chain: options.transaction.chain,\n      client: options.transaction.client\n    };\n  }\n  throw new Error(`Failed to send transaction: ${stringify(json)}`);\n}\nexport {\n  prepareOpenZeppelinTransaction,\n  relayOpenZeppelinTransaction\n};\n//# sourceMappingURL=openzeppelin-3CQYP2BQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-3WSS4ISS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.kelp/index.js\nvar wallet = {\n  id: \"org.kelp\",\n  name: \"Kelp\",\n  homepage: \"https://kelp.org\",\n  image_id: \"1854e47d-3804-4e92-e455-06829b64b100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/kelp/id1632857274\",\n    android: \"https://play.google.com/store/apps/details?id=com.app.kelpa\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"link.kelp.finance://walletconnect\",\n    universal: \"https://link.kelp.finance/walletconnect\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-3WSS4ISS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-5JOGDD4T.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.mugambo/index.js\nvar wallet = {\n  id: \"org.mugambo\",\n  name: \"rss wallet\",\n  homepage: \"https://mugambo.org\",\n  image_id: \"920c743d-950f-4d53-64ec-d342e272e500\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://bo.centapey.com/rsswallet_2.0.2.3.apk\",\n    mac: null,\n    windows: null,\n    linux: \"https://bo.centapey.com/rsswallet_2.0.2.3.apk\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"rsswallet://rss.app.link\",\n    universal: \"https://rss.app.link/rsswallet\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-5JOGDD4T.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-6JIS4GGD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.arianee/index.js\nvar wallet = {\n  id: \"org.arianee\",\n  name: \"Arianee Wallet\",\n  homepage: \"https://arianee.org\",\n  image_id: \"ace938a9-c906-4b9e-f683-b85f1ab72800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/fr/app/arianee-wallet/id1435782507\",\n    android: \"https://play.google.com/store/apps/details?id=com.arianee.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"com.arianee.wallet://\",\n    universal: \"https://arianee.net\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-6JIS4GGD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-BHEY6VU5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.gooddollar/index.js\nvar wallet = {\n  id: \"org.gooddollar\",\n  name: \"GoodDollar\",\n  homepage: \"https://gooddollar.org\",\n  image_id: \"371ab65b-e2c8-4843-f18a-cbcf2ba2ed00\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=org.gooddollar\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"gooddollar://\",\n    universal: \"https://wallet.gooddollar.org/\"\n  },\n  desktop: {\n    native: \"gooddollar://\",\n    universal: \"https://wallet.gooddollar.org/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-BHEY6VU5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-DASW2CEB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.thetatoken/index.js\nvar wallet = {\n  id: \"org.thetatoken\",\n  name: \"Theta Wallet\",\n  homepage: \"https://www.thetatoken.org/wallet\",\n  image_id: \"d4afb810-5925-4f00-4ebb-d180fcf29000\",\n  app: {\n    browser: \"https://wallet.thetatoken.org\",\n    ios: \"https://apps.apple.com/app/theta-wallet/id1451094550\",\n    android: \"https://play.google.com/store/apps/details?id=org.theta.wallet&pli=1\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wc://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-DASW2CEB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-IQR2KWLE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.talkapp/index.js\nvar wallet = {\n  id: \"org.talkapp\",\n  name: \"T+ Wallet \",\n  homepage: \"https://www.talkapp.org/\",\n  image_id: \"c08ff28f-5a52-4bf2-e63a-205905fd5800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/hk/app/talk-%E5%8A%A0%E5%AF%86%E8%B2%A8%E5%B9%A3%E4%BA%A4%E6%98%93%E5%8F%8Aai%E8%81%8A%E5%A4%A9%E9%80%9A%E8%A8%8A%E8%BB%9F%E4%BB%B6/id1547227377\",\n    android: \"https://play.google.com/store/apps/details?id=org.talkapp&hl=en&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"talkapp://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-IQR2KWLE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-JCLIAWVT.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.mathwallet/index.js\nvar wallet = {\n  id: \"org.mathwallet\",\n  name: \"MathWallet\",\n  homepage: \"https://mathwallet.org/\",\n  image_id: \"26a8f588-3231-4411-60ce-5bb6b805a700\",\n  app: {\n    browser: \"https://chrome.google.com/webstore/detail/math-wallet/afbcbjpbpfadlkmhmclhkeeodmamcflc\",\n    ios: \"https://apps.apple.com/us/app/mathwallet5/id1582612388\",\n    android: \"https://play.google.com/store/apps/details?id=com.mathwallet.android\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/math-wallet/afbcbjpbpfadlkmhmclhkeeodmamcflc\",\n    firefox: null,\n    safari: null,\n    edge: \"https://microsoftedge.microsoft.com/addons/detail/math-wallet/dfeccadlilpndjjohbjdblepmjeahlmm\",\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"mathwallet://\",\n    universal: \"https://www.mathwallet.org\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-JCLIAWVT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-NOFWJHNU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.dota168/index.js\nvar wallet = {\n  id: \"org.dota168\",\n  name: \"MetaWallet\",\n  homepage: \"http://www.dota168.org/\",\n  image_id: \"a18337ad-433f-47c0-ea57-8a6199835e00\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"http://www.dota168.org/\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"http://www.dota168.org/\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"metawallet://com.metawallet.client\",\n    universal: \"http://www.dota168.org/\"\n  },\n  desktop: {\n    native: \"metawallet://\",\n    universal: \"http://www.dota168.org/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-NOFWJHNU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-PJ6LCHSF.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.thepulsewallet/index.js\nvar wallet = {\n  id: \"org.thepulsewallet\",\n  name: \"The Pulse Wallet\",\n  homepage: \"https://thepulsewallet.org/\",\n  image_id: \"1f3d46b8-2569-4601-5084-845f7e64da00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/vn/app/pulse-wallet/id6458346951\",\n    android: \"https://play.google.com/store/apps/details?id=com.wallet.thepulse\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wallet.pulse://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-PJ6LCHSF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-Q7GOFRGY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.uniswap/index.js\nvar wallet = {\n  id: \"org.uniswap\",\n  name: \"Uniswap Wallet\",\n  homepage: \"https://uniswap.org\",\n  image_id: \"bff9cf1f-df19-42ce-f62a-87f04df13c00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/uniswap-wallet/id6443944476\",\n    android: \"https://play.google.com/store/apps/details?id=com.uniswap.mobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"uniswap://\",\n    universal: \"https://uniswap.org/app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-Q7GOFRGY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-RVVOAAYD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.bitizen/index.js\nvar wallet = {\n  id: \"org.bitizen\",\n  name: \"Bitizen\",\n  homepage: \"https://bitizen.org/\",\n  image_id: \"75dd1471-77e9-4811-ce57-ec8fc980ec00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/bitizen-defi-web3-eth-wallet/id1598283542\",\n    android: \"https://play.google.com/store/apps/details?id=org.bitizen.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://bitizen.org/\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bitizen://wallet/\",\n    universal: \"https://bitizen.org/wallet/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-RVVOAAYD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-U6MXPNQX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.bytebank/index.js\nvar wallet = {\n  id: \"org.bytebank\",\n  name: \"ByteBank\",\n  homepage: \"https://www.bytebank.org/\",\n  image_id: \"bc7aacd6-b2e2-4146-7d21-06e0c5d44f00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/sg/app/hideout-wallet/id1620315192?l=zh\",\n    android: \"https://play.google.com/store/apps/details?id=com.hideout.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"hideoutWallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-U6MXPNQX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/org-XS7DVMFS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/org.thorwallet/index.js\nvar wallet = {\n  id: \"org.thorwallet\",\n  name: \"THORWallet\",\n  homepage: \"https://www.thorwallet.org/\",\n  image_id: \"45165bea-fdae-454e-7caa-31681f255200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/ch/app/thorwallet-defi-wallet/id1592064324\",\n    android: \"https://play.google.com/store/apps/details?id=defisuisse.thorwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"thorwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=org-XS7DVMFS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/ownerOf-JJ32SN7R.js",
    "content": "import {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  decodeAbiParameters\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IERC721A/read/ownerOf.js\nvar FN_SELECTOR = \"0x6352211e\";\nvar FN_INPUTS = [\n  {\n    type: \"uint256\",\n    name: \"tokenId\"\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"address\"\n  }\n];\nfunction isOwnerOfSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction encodeOwnerOfParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.tokenId]);\n}\nfunction encodeOwnerOf(options) {\n  return FN_SELECTOR + encodeOwnerOfParams(options).slice(2);\n}\nfunction decodeOwnerOfResult(result) {\n  return decodeAbiParameters(FN_OUTPUTS, result)[0];\n}\nasync function ownerOf(options) {\n  return readContract({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: [options.tokenId]\n  });\n}\nexport {\n  FN_SELECTOR,\n  decodeOwnerOfResult,\n  encodeOwnerOf,\n  encodeOwnerOfParams,\n  isOwnerOfSupported,\n  ownerOf\n};\n//# sourceMappingURL=ownerOf-JJ32SN7R.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/package.json",
    "content": "{\n  \"type\": \"module\"\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/passkeys-TWQKIUUE.js",
    "content": "import {\n  PasskeyWebClient,\n  hasStoredPasskey\n} from \"./chunk-XTOEMUZK.js\";\nimport \"./chunk-CYVKJMZE.js\";\nimport \"./chunk-VIBS7Y3M.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  PasskeyWebClient,\n  hasStoredPasskey\n};\n//# sourceMappingURL=passkeys-TWQKIUUE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/pk-OX3FADHO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pk.modular/index.js\nvar wallet = {\n  id: \"pk.modular\",\n  name: \"Modular Wallet Prod\",\n  homepage: \"https://modular.pk\",\n  image_id: \"70485da2-2568-463d-722c-25082997cc00\",\n  app: {\n    browser: \"https://modular.pk\",\n    ios: \"https://testflight.apple.com/join/Zbf6wZaP\",\n    android: \"https://play.google.com/store/apps/details?id=com.modular\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"modularwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=pk-OX3FADHO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/prepare-transaction-ENVXVTJF.js",
    "content": "import {\n  prepareTransaction\n} from \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  prepareTransaction\n};\n//# sourceMappingURL=prepare-transaction-ENVXVTJF.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/pro-GX6XLDQ3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pro.assure/index.js\nvar wallet = {\n  id: \"pro.assure\",\n  name: \"Assure\",\n  homepage: \"https://www.assure.pro\",\n  image_id: \"64db7104-c8b7-44ea-e102-11ce87124200\",\n  app: {\n    browser: null,\n    ios: \"http://itunes.apple.com/app/id1604825026\",\n    android: \"https://play.google.com/store/apps/details?id=com.neuxs.assure\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"assure://\",\n    universal: \"https://www.assure.pro/Official\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=pro-GX6XLDQ3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/pro-PKIFCXCH.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pro.tokenpocket/index.js\nvar wallet = {\n  id: \"pro.tokenpocket\",\n  name: \"TokenPocket\",\n  homepage: \"https://tokenpocket.pro/\",\n  image_id: \"f3119826-4ef5-4d31-4789-d4ae5c18e400\",\n  app: {\n    browser: \"https://chrome.google.com/webstore/detail/tokenpocket/mfgccjchihfkkindfppnaooecgfneiii\",\n    ios: \"https://apps.apple.com/us/app/tp-wallet/id6444625622?l=en\",\n    android: \"https://play.google.com/store/apps/details?id=vip.mytokenpocket\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/tokenpocket/mfgccjchihfkkindfppnaooecgfneiii\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"pro.tokenpocket\",\n  mobile: {\n    native: \"tpoutside://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=pro-PKIFCXCH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/pro-VKWWWAVU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pro.fintoken/index.js\nvar wallet = {\n  id: \"pro.fintoken\",\n  name: \"FINTOKEN\",\n  homepage: \"https://fintoken.pro/\",\n  image_id: \"420ababa-3c29-4711-4487-84b93bfa5900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/fintoken-web3-crypto-wallet/id6447503215\",\n    android: \"https://play.google.com/store/apps/details?id=com.digitalasset.fintoken&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"fintoken://\",\n    universal: \"https://ios.fintoken.pro/app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=pro-VKWWWAVU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/pub-BCM6XBN4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/pub.dg/index.js\nvar wallet = {\n  id: \"pub.dg\",\n  name: \"DGPub App\",\n  homepage: \"https://dg.pub\",\n  image_id: \"9d9a2700-4ab0-4c1c-4acf-8ed0037cc500\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/jo/app/dg-pub-a-gateway-to-web3/id6478573535\",\n    android: \"https://play.google.com/store/apps/details?id=pub.dg.wallet&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"dgpub://\",\n    universal: \"https://dgpub.app.link\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=pub-BCM6XBN4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/react-dom_client.js",
    "content": "import {\n  require_react_dom\n} from \"./chunk-SJKAB62J.js\";\nimport \"./chunk-2MTJELC7.js\";\nimport {\n  __commonJS\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/react-dom/client.js\nvar require_client = __commonJS({\n  \"node_modules/react-dom/client.js\"(exports) {\n    var m = require_react_dom();\n    if (false) {\n      exports.createRoot = m.createRoot;\n      exports.hydrateRoot = m.hydrateRoot;\n    } else {\n      i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n      exports.createRoot = function(c, o) {\n        i.usingClientEntryPoint = true;\n        try {\n          return m.createRoot(c, o);\n        } finally {\n          i.usingClientEntryPoint = false;\n        }\n      };\n      exports.hydrateRoot = function(c, h, o) {\n        i.usingClientEntryPoint = true;\n        try {\n          return m.hydrateRoot(c, h, o);\n        } finally {\n          i.usingClientEntryPoint = false;\n        }\n      };\n    }\n    var i;\n  }\n});\nexport default require_client();\n//# sourceMappingURL=react-dom_client.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/react-router-dom.js",
    "content": "import {\n  require_react_dom\n} from \"./chunk-SJKAB62J.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/react-router-dom/dist/index.js\nvar React2 = __toESM(require_react());\nvar ReactDOM = __toESM(require_react_dom());\n\n// node_modules/react-router/dist/index.js\nvar React = __toESM(require_react());\n\n// node_modules/@remix-run/router/dist/router.js\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nvar Action;\n(function(Action2) {\n  Action2[\"Pop\"] = \"POP\";\n  Action2[\"Push\"] = \"PUSH\";\n  Action2[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nvar PopStateEventType = \"popstate\";\nfunction createMemoryHistory(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  let {\n    initialEntries = [\"/\"],\n    initialIndex,\n    v5Compat = false\n  } = options;\n  let entries;\n  entries = initialEntries.map((entry, index2) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index2 === 0 ? \"default\" : void 0));\n  let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n  let action = Action.Pop;\n  let listener = null;\n  function clampIndex(n) {\n    return Math.min(Math.max(n, 0), entries.length - 1);\n  }\n  function getCurrentLocation() {\n    return entries[index];\n  }\n  function createMemoryLocation(to, state, key) {\n    if (state === void 0) {\n      state = null;\n    }\n    let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n    warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n    return location;\n  }\n  function createHref(to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  let history = {\n    get index() {\n      return index;\n    },\n    get action() {\n      return action;\n    },\n    get location() {\n      return getCurrentLocation();\n    },\n    createHref,\n    createURL(to) {\n      return new URL(createHref(to), \"http://localhost\");\n    },\n    encodeLocation(to) {\n      let path = typeof to === \"string\" ? parsePath(to) : to;\n      return {\n        pathname: path.pathname || \"\",\n        search: path.search || \"\",\n        hash: path.hash || \"\"\n      };\n    },\n    push(to, state) {\n      action = Action.Push;\n      let nextLocation = createMemoryLocation(to, state);\n      index += 1;\n      entries.splice(index, entries.length, nextLocation);\n      if (v5Compat && listener) {\n        listener({\n          action,\n          location: nextLocation,\n          delta: 1\n        });\n      }\n    },\n    replace(to, state) {\n      action = Action.Replace;\n      let nextLocation = createMemoryLocation(to, state);\n      entries[index] = nextLocation;\n      if (v5Compat && listener) {\n        listener({\n          action,\n          location: nextLocation,\n          delta: 0\n        });\n      }\n    },\n    go(delta) {\n      action = Action.Pop;\n      let nextIndex = clampIndex(index + delta);\n      let nextLocation = entries[nextIndex];\n      index = nextIndex;\n      if (listener) {\n        listener({\n          action,\n          location: nextLocation,\n          delta\n        });\n      }\n    },\n    listen(fn) {\n      listener = fn;\n      return () => {\n        listener = null;\n      };\n    }\n  };\n  return history;\n}\nfunction createBrowserHistory(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  function createBrowserLocation(window2, globalHistory) {\n    let {\n      pathname,\n      search,\n      hash\n    } = window2.location;\n    return createLocation(\n      \"\",\n      {\n        pathname,\n        search,\n        hash\n      },\n      // state defaults to `null` because `window.history.state` does\n      globalHistory.state && globalHistory.state.usr || null,\n      globalHistory.state && globalHistory.state.key || \"default\"\n    );\n  }\n  function createBrowserHref(window2, to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\nfunction createHashHistory(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  function createHashLocation(window2, globalHistory) {\n    let {\n      pathname = \"/\",\n      search = \"\",\n      hash = \"\"\n    } = parsePath(window2.location.hash.substr(1));\n    if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n      pathname = \"/\" + pathname;\n    }\n    return createLocation(\n      \"\",\n      {\n        pathname,\n        search,\n        hash\n      },\n      // state defaults to `null` because `window.history.state` does\n      globalHistory.state && globalHistory.state.usr || null,\n      globalHistory.state && globalHistory.state.key || \"default\"\n    );\n  }\n  function createHashHref(window2, to) {\n    let base = window2.document.querySelector(\"base\");\n    let href = \"\";\n    if (base && base.getAttribute(\"href\")) {\n      let url = window2.location.href;\n      let hashIndex = url.indexOf(\"#\");\n      href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n    }\n    return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n  }\n  function validateHashLocation(location, to) {\n    warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n  }\n  return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\nfunction warning(cond, message) {\n  if (!cond) {\n    if (typeof console !== \"undefined\")\n      console.warn(message);\n    try {\n      throw new Error(message);\n    } catch (e) {\n    }\n  }\n}\nfunction createKey() {\n  return Math.random().toString(36).substr(2, 8);\n}\nfunction getHistoryState(location, index) {\n  return {\n    usr: location.state,\n    key: location.key,\n    idx: index\n  };\n}\nfunction createLocation(current, to, state, key) {\n  if (state === void 0) {\n    state = null;\n  }\n  let location = _extends({\n    pathname: typeof current === \"string\" ? current : current.pathname,\n    search: \"\",\n    hash: \"\"\n  }, typeof to === \"string\" ? parsePath(to) : to, {\n    state,\n    // TODO: This could be cleaned up.  push/replace should probably just take\n    // full Locations now and avoid the need to run through this flow at all\n    // But that's a pretty big refactor to the current test suite so going to\n    // keep as is for the time being and just let any incoming keys take precedence\n    key: to && to.key || key || createKey()\n  });\n  return location;\n}\nfunction createPath(_ref) {\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\"\n  } = _ref;\n  if (search && search !== \"?\")\n    pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n  if (hash && hash !== \"#\")\n    pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n  return pathname;\n}\nfunction parsePath(path) {\n  let parsedPath = {};\n  if (path) {\n    let hashIndex = path.indexOf(\"#\");\n    if (hashIndex >= 0) {\n      parsedPath.hash = path.substr(hashIndex);\n      path = path.substr(0, hashIndex);\n    }\n    let searchIndex = path.indexOf(\"?\");\n    if (searchIndex >= 0) {\n      parsedPath.search = path.substr(searchIndex);\n      path = path.substr(0, searchIndex);\n    }\n    if (path) {\n      parsedPath.pathname = path;\n    }\n  }\n  return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  let {\n    window: window2 = document.defaultView,\n    v5Compat = false\n  } = options;\n  let globalHistory = window2.history;\n  let action = Action.Pop;\n  let listener = null;\n  let index = getIndex();\n  if (index == null) {\n    index = 0;\n    globalHistory.replaceState(_extends({}, globalHistory.state, {\n      idx: index\n    }), \"\");\n  }\n  function getIndex() {\n    let state = globalHistory.state || {\n      idx: null\n    };\n    return state.idx;\n  }\n  function handlePop() {\n    action = Action.Pop;\n    let nextIndex = getIndex();\n    let delta = nextIndex == null ? null : nextIndex - index;\n    index = nextIndex;\n    if (listener) {\n      listener({\n        action,\n        location: history.location,\n        delta\n      });\n    }\n  }\n  function push(to, state) {\n    action = Action.Push;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation)\n      validateLocation(location, to);\n    index = getIndex() + 1;\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n    try {\n      globalHistory.pushState(historyState, \"\", url);\n    } catch (error) {\n      if (error instanceof DOMException && error.name === \"DataCloneError\") {\n        throw error;\n      }\n      window2.location.assign(url);\n    }\n    if (v5Compat && listener) {\n      listener({\n        action,\n        location: history.location,\n        delta: 1\n      });\n    }\n  }\n  function replace2(to, state) {\n    action = Action.Replace;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation)\n      validateLocation(location, to);\n    index = getIndex();\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location);\n    globalHistory.replaceState(historyState, \"\", url);\n    if (v5Compat && listener) {\n      listener({\n        action,\n        location: history.location,\n        delta: 0\n      });\n    }\n  }\n  function createURL(to) {\n    let base = window2.location.origin !== \"null\" ? window2.location.origin : window2.location.href;\n    let href = typeof to === \"string\" ? to : createPath(to);\n    href = href.replace(/ $/, \"%20\");\n    invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n    return new URL(href, base);\n  }\n  let history = {\n    get action() {\n      return action;\n    },\n    get location() {\n      return getLocation(window2, globalHistory);\n    },\n    listen(fn) {\n      if (listener) {\n        throw new Error(\"A history only accepts one active listener\");\n      }\n      window2.addEventListener(PopStateEventType, handlePop);\n      listener = fn;\n      return () => {\n        window2.removeEventListener(PopStateEventType, handlePop);\n        listener = null;\n      };\n    },\n    createHref(to) {\n      return createHref(window2, to);\n    },\n    createURL,\n    encodeLocation(to) {\n      let url = createURL(to);\n      return {\n        pathname: url.pathname,\n        search: url.search,\n        hash: url.hash\n      };\n    },\n    push,\n    replace: replace2,\n    go(n) {\n      return globalHistory.go(n);\n    }\n  };\n  return history;\n}\nvar ResultType;\n(function(ResultType2) {\n  ResultType2[\"data\"] = \"data\";\n  ResultType2[\"deferred\"] = \"deferred\";\n  ResultType2[\"redirect\"] = \"redirect\";\n  ResultType2[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nvar immutableRouteKeys = /* @__PURE__ */ new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n  return route.index === true;\n}\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties2, parentPath, manifest) {\n  if (parentPath === void 0) {\n    parentPath = [];\n  }\n  if (manifest === void 0) {\n    manifest = {};\n  }\n  return routes.map((route, index) => {\n    let treePath = [...parentPath, String(index)];\n    let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n    invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n    invariant(!manifest[id], 'Found a route id collision on id \"' + id + `\".  Route id's must be globally unique within Data Router usages`);\n    if (isIndexRoute(route)) {\n      let indexRoute = _extends({}, route, mapRouteProperties2(route), {\n        id\n      });\n      manifest[id] = indexRoute;\n      return indexRoute;\n    } else {\n      let pathOrLayoutRoute = _extends({}, route, mapRouteProperties2(route), {\n        id,\n        children: void 0\n      });\n      manifest[id] = pathOrLayoutRoute;\n      if (route.children) {\n        pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties2, treePath, manifest);\n      }\n      return pathOrLayoutRoute;\n    }\n  });\n}\nfunction matchRoutes(routes, locationArg, basename) {\n  if (basename === void 0) {\n    basename = \"/\";\n  }\n  return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial) {\n  let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n  let pathname = stripBasename(location.pathname || \"/\", basename);\n  if (pathname == null) {\n    return null;\n  }\n  let branches = flattenRoutes(routes);\n  rankRouteBranches(branches);\n  let matches = null;\n  for (let i = 0; matches == null && i < branches.length; ++i) {\n    let decoded = decodePath(pathname);\n    matches = matchRouteBranch(branches[i], decoded, allowPartial);\n  }\n  return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n  let {\n    route,\n    pathname,\n    params\n  } = match;\n  return {\n    id: route.id,\n    pathname,\n    params,\n    data: loaderData[route.id],\n    handle: route.handle\n  };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n  if (branches === void 0) {\n    branches = [];\n  }\n  if (parentsMeta === void 0) {\n    parentsMeta = [];\n  }\n  if (parentPath === void 0) {\n    parentPath = \"\";\n  }\n  let flattenRoute = (route, index, relativePath) => {\n    let meta = {\n      relativePath: relativePath === void 0 ? route.path || \"\" : relativePath,\n      caseSensitive: route.caseSensitive === true,\n      childrenIndex: index,\n      route\n    };\n    if (meta.relativePath.startsWith(\"/\")) {\n      invariant(meta.relativePath.startsWith(parentPath), 'Absolute route path \"' + meta.relativePath + '\" nested under path ' + ('\"' + parentPath + '\" is not valid. An absolute child route path ') + \"must start with the combined path of all its parent routes.\");\n      meta.relativePath = meta.relativePath.slice(parentPath.length);\n    }\n    let path = joinPaths([parentPath, meta.relativePath]);\n    let routesMeta = parentsMeta.concat(meta);\n    if (route.children && route.children.length > 0) {\n      invariant(\n        // Our types know better, but runtime JS may not!\n        // @ts-expect-error\n        route.index !== true,\n        \"Index routes must not have child routes. Please remove \" + ('all child routes from route path \"' + path + '\".')\n      );\n      flattenRoutes(route.children, branches, routesMeta, path);\n    }\n    if (route.path == null && !route.index) {\n      return;\n    }\n    branches.push({\n      path,\n      score: computeScore(path, route.index),\n      routesMeta\n    });\n  };\n  routes.forEach((route, index) => {\n    var _route$path;\n    if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n      flattenRoute(route, index);\n    } else {\n      for (let exploded of explodeOptionalSegments(route.path)) {\n        flattenRoute(route, index, exploded);\n      }\n    }\n  });\n  return branches;\n}\nfunction explodeOptionalSegments(path) {\n  let segments = path.split(\"/\");\n  if (segments.length === 0)\n    return [];\n  let [first, ...rest] = segments;\n  let isOptional = first.endsWith(\"?\");\n  let required = first.replace(/\\?$/, \"\");\n  if (rest.length === 0) {\n    return isOptional ? [required, \"\"] : [required];\n  }\n  let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n  let result = [];\n  result.push(...restExploded.map((subpath) => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n  if (isOptional) {\n    result.push(...restExploded);\n  }\n  return result.map((exploded) => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n  branches.sort((a, b) => a.score !== b.score ? b.score - a.score : compareIndexes(a.routesMeta.map((meta) => meta.childrenIndex), b.routesMeta.map((meta) => meta.childrenIndex)));\n}\nvar paramRe = /^:[\\w-]+$/;\nvar dynamicSegmentValue = 3;\nvar indexRouteValue = 2;\nvar emptySegmentValue = 1;\nvar staticSegmentValue = 10;\nvar splatPenalty = -2;\nvar isSplat = (s) => s === \"*\";\nfunction computeScore(path, index) {\n  let segments = path.split(\"/\");\n  let initialScore = segments.length;\n  if (segments.some(isSplat)) {\n    initialScore += splatPenalty;\n  }\n  if (index) {\n    initialScore += indexRouteValue;\n  }\n  return segments.filter((s) => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n  let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n  return siblings ? (\n    // If two routes are siblings, we should try to match the earlier sibling\n    // first. This allows people to have fine-grained control over the matching\n    // behavior by simply putting routes with identical paths in the order they\n    // want them tried.\n    a[a.length - 1] - b[b.length - 1]\n  ) : (\n    // Otherwise, it doesn't really make sense to rank non-siblings by index,\n    // so they sort equally.\n    0\n  );\n}\nfunction matchRouteBranch(branch, pathname, allowPartial) {\n  if (allowPartial === void 0) {\n    allowPartial = false;\n  }\n  let {\n    routesMeta\n  } = branch;\n  let matchedParams = {};\n  let matchedPathname = \"/\";\n  let matches = [];\n  for (let i = 0; i < routesMeta.length; ++i) {\n    let meta = routesMeta[i];\n    let end = i === routesMeta.length - 1;\n    let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n    let match = matchPath({\n      path: meta.relativePath,\n      caseSensitive: meta.caseSensitive,\n      end\n    }, remainingPathname);\n    let route = meta.route;\n    if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n      match = matchPath({\n        path: meta.relativePath,\n        caseSensitive: meta.caseSensitive,\n        end: false\n      }, remainingPathname);\n    }\n    if (!match) {\n      return null;\n    }\n    Object.assign(matchedParams, match.params);\n    matches.push({\n      // TODO: Can this as be avoided?\n      params: matchedParams,\n      pathname: joinPaths([matchedPathname, match.pathname]),\n      pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n      route\n    });\n    if (match.pathnameBase !== \"/\") {\n      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n    }\n  }\n  return matches;\n}\nfunction generatePath(originalPath, params) {\n  if (params === void 0) {\n    params = {};\n  }\n  let path = originalPath;\n  if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n    warning(false, 'Route path \"' + path + '\" will be treated as if it were ' + ('\"' + path.replace(/\\*$/, \"/*\") + '\" because the `*` character must ') + \"always follow a `/` in the pattern. To get rid of this warning, \" + ('please change the route path to \"' + path.replace(/\\*$/, \"/*\") + '\".'));\n    path = path.replace(/\\*$/, \"/*\");\n  }\n  const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n  const stringify = (p) => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n  const segments = path.split(/\\/+/).map((segment, index, array) => {\n    const isLastSegment = index === array.length - 1;\n    if (isLastSegment && segment === \"*\") {\n      const star = \"*\";\n      return stringify(params[star]);\n    }\n    const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n    if (keyMatch) {\n      const [, key, optional] = keyMatch;\n      let param = params[key];\n      invariant(optional === \"?\" || param != null, 'Missing \":' + key + '\" param');\n      return stringify(param);\n    }\n    return segment.replace(/\\?$/g, \"\");\n  }).filter((segment) => !!segment);\n  return prefix + segments.join(\"/\");\n}\nfunction matchPath(pattern, pathname) {\n  if (typeof pattern === \"string\") {\n    pattern = {\n      path: pattern,\n      caseSensitive: false,\n      end: true\n    };\n  }\n  let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n  let match = pathname.match(matcher);\n  if (!match)\n    return null;\n  let matchedPathname = match[0];\n  let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n  let captureGroups = match.slice(1);\n  let params = compiledParams.reduce((memo2, _ref, index) => {\n    let {\n      paramName,\n      isOptional\n    } = _ref;\n    if (paramName === \"*\") {\n      let splatValue = captureGroups[index] || \"\";\n      pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n    }\n    const value = captureGroups[index];\n    if (isOptional && !value) {\n      memo2[paramName] = void 0;\n    } else {\n      memo2[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n    }\n    return memo2;\n  }, {});\n  return {\n    params,\n    pathname: matchedPathname,\n    pathnameBase,\n    pattern\n  };\n}\nfunction compilePath(path, caseSensitive, end) {\n  if (caseSensitive === void 0) {\n    caseSensitive = false;\n  }\n  if (end === void 0) {\n    end = true;\n  }\n  warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), 'Route path \"' + path + '\" will be treated as if it were ' + ('\"' + path.replace(/\\*$/, \"/*\") + '\" because the `*` character must ') + \"always follow a `/` in the pattern. To get rid of this warning, \" + ('please change the route path to \"' + path.replace(/\\*$/, \"/*\") + '\".'));\n  let params = [];\n  let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\").replace(/^\\/*/, \"/\").replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\").replace(/\\/:([\\w-]+)(\\?)?/g, (_, paramName, isOptional) => {\n    params.push({\n      paramName,\n      isOptional: isOptional != null\n    });\n    return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n  });\n  if (path.endsWith(\"*\")) {\n    params.push({\n      paramName: \"*\"\n    });\n    regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" : \"(?:\\\\/(.+)|\\\\/*)$\";\n  } else if (end) {\n    regexpSource += \"\\\\/*$\";\n  } else if (path !== \"\" && path !== \"/\") {\n    regexpSource += \"(?:(?=\\\\/|$))\";\n  } else\n    ;\n  let matcher = new RegExp(regexpSource, caseSensitive ? void 0 : \"i\");\n  return [matcher, params];\n}\nfunction decodePath(value) {\n  try {\n    return value.split(\"/\").map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n  } catch (error) {\n    warning(false, 'The URL path \"' + value + '\" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent ' + (\"encoding (\" + error + \").\"));\n    return value;\n  }\n}\nfunction stripBasename(pathname, basename) {\n  if (basename === \"/\")\n    return pathname;\n  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n    return null;\n  }\n  let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n  let nextChar = pathname.charAt(startIndex);\n  if (nextChar && nextChar !== \"/\") {\n    return null;\n  }\n  return pathname.slice(startIndex) || \"/\";\n}\nfunction resolvePath(to, fromPathname) {\n  if (fromPathname === void 0) {\n    fromPathname = \"/\";\n  }\n  let {\n    pathname: toPathname,\n    search = \"\",\n    hash = \"\"\n  } = typeof to === \"string\" ? parsePath(to) : to;\n  let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n  return {\n    pathname,\n    search: normalizeSearch(search),\n    hash: normalizeHash(hash)\n  };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n  let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n  let relativeSegments = relativePath.split(\"/\");\n  relativeSegments.forEach((segment) => {\n    if (segment === \"..\") {\n      if (segments.length > 1)\n        segments.pop();\n    } else if (segment !== \".\") {\n      segments.push(segment);\n    }\n  });\n  return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n  return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"].  Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + 'a string in <Link to=\"...\"> and the router will parse it for you.';\n}\nfunction getPathContributingMatches(matches) {\n  return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\nfunction getResolveToMatches(matches, v7_relativeSplatPath) {\n  let pathMatches = getPathContributingMatches(matches);\n  if (v7_relativeSplatPath) {\n    return pathMatches.map((match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase);\n  }\n  return pathMatches.map((match) => match.pathnameBase);\n}\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n  if (isPathRelative === void 0) {\n    isPathRelative = false;\n  }\n  let to;\n  if (typeof toArg === \"string\") {\n    to = parsePath(toArg);\n  } else {\n    to = _extends({}, toArg);\n    invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n    invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n    invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n  }\n  let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n  let toPathname = isEmptyPath ? \"/\" : to.pathname;\n  let from;\n  if (toPathname == null) {\n    from = locationPathname;\n  } else {\n    let routePathnameIndex = routePathnames.length - 1;\n    if (!isPathRelative && toPathname.startsWith(\"..\")) {\n      let toSegments = toPathname.split(\"/\");\n      while (toSegments[0] === \"..\") {\n        toSegments.shift();\n        routePathnameIndex -= 1;\n      }\n      to.pathname = toSegments.join(\"/\");\n    }\n    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n  }\n  let path = resolvePath(to, from);\n  let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n  let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n  if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n    path.pathname += \"/\";\n  }\n  return path;\n}\nvar joinPaths = (paths) => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\nvar normalizePathname = (pathname) => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\nvar normalizeSearch = (search) => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\nvar normalizeHash = (hash) => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\nvar json = function json2(data, init) {\n  if (init === void 0) {\n    init = {};\n  }\n  let responseInit = typeof init === \"number\" ? {\n    status: init\n  } : init;\n  let headers = new Headers(responseInit.headers);\n  if (!headers.has(\"Content-Type\")) {\n    headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n  }\n  return new Response(JSON.stringify(data), _extends({}, responseInit, {\n    headers\n  }));\n};\nvar AbortedDeferredError = class extends Error {\n};\nvar DeferredData = class {\n  constructor(data, responseInit) {\n    this.pendingKeysSet = /* @__PURE__ */ new Set();\n    this.subscribers = /* @__PURE__ */ new Set();\n    this.deferredKeys = [];\n    invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n    let reject;\n    this.abortPromise = new Promise((_, r) => reject = r);\n    this.controller = new AbortController();\n    let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n    this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n    this.controller.signal.addEventListener(\"abort\", onAbort);\n    this.data = Object.entries(data).reduce((acc, _ref2) => {\n      let [key, value] = _ref2;\n      return Object.assign(acc, {\n        [key]: this.trackPromise(key, value)\n      });\n    }, {});\n    if (this.done) {\n      this.unlistenAbortSignal();\n    }\n    this.init = responseInit;\n  }\n  trackPromise(key, value) {\n    if (!(value instanceof Promise)) {\n      return value;\n    }\n    this.deferredKeys.push(key);\n    this.pendingKeysSet.add(key);\n    let promise = Promise.race([value, this.abortPromise]).then((data) => this.onSettle(promise, key, void 0, data), (error) => this.onSettle(promise, key, error));\n    promise.catch(() => {\n    });\n    Object.defineProperty(promise, \"_tracked\", {\n      get: () => true\n    });\n    return promise;\n  }\n  onSettle(promise, key, error, data) {\n    if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n      this.unlistenAbortSignal();\n      Object.defineProperty(promise, \"_error\", {\n        get: () => error\n      });\n      return Promise.reject(error);\n    }\n    this.pendingKeysSet.delete(key);\n    if (this.done) {\n      this.unlistenAbortSignal();\n    }\n    if (error === void 0 && data === void 0) {\n      let undefinedError = new Error('Deferred data for key \"' + key + '\" resolved/rejected with `undefined`, you must resolve/reject with a value or `null`.');\n      Object.defineProperty(promise, \"_error\", {\n        get: () => undefinedError\n      });\n      this.emit(false, key);\n      return Promise.reject(undefinedError);\n    }\n    if (data === void 0) {\n      Object.defineProperty(promise, \"_error\", {\n        get: () => error\n      });\n      this.emit(false, key);\n      return Promise.reject(error);\n    }\n    Object.defineProperty(promise, \"_data\", {\n      get: () => data\n    });\n    this.emit(false, key);\n    return data;\n  }\n  emit(aborted, settledKey) {\n    this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n  }\n  subscribe(fn) {\n    this.subscribers.add(fn);\n    return () => this.subscribers.delete(fn);\n  }\n  cancel() {\n    this.controller.abort();\n    this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n    this.emit(true);\n  }\n  async resolveData(signal) {\n    let aborted = false;\n    if (!this.done) {\n      let onAbort = () => this.cancel();\n      signal.addEventListener(\"abort\", onAbort);\n      aborted = await new Promise((resolve) => {\n        this.subscribe((aborted2) => {\n          signal.removeEventListener(\"abort\", onAbort);\n          if (aborted2 || this.done) {\n            resolve(aborted2);\n          }\n        });\n      });\n    }\n    return aborted;\n  }\n  get done() {\n    return this.pendingKeysSet.size === 0;\n  }\n  get unwrappedData() {\n    invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n    return Object.entries(this.data).reduce((acc, _ref3) => {\n      let [key, value] = _ref3;\n      return Object.assign(acc, {\n        [key]: unwrapTrackedPromise(value)\n      });\n    }, {});\n  }\n  get pendingKeys() {\n    return Array.from(this.pendingKeysSet);\n  }\n};\nfunction isTrackedPromise(value) {\n  return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n  if (!isTrackedPromise(value)) {\n    return value;\n  }\n  if (value._error) {\n    throw value._error;\n  }\n  return value._data;\n}\nvar defer = function defer2(data, init) {\n  if (init === void 0) {\n    init = {};\n  }\n  let responseInit = typeof init === \"number\" ? {\n    status: init\n  } : init;\n  return new DeferredData(data, responseInit);\n};\nvar redirect = function redirect2(url, init) {\n  if (init === void 0) {\n    init = 302;\n  }\n  let responseInit = init;\n  if (typeof responseInit === \"number\") {\n    responseInit = {\n      status: responseInit\n    };\n  } else if (typeof responseInit.status === \"undefined\") {\n    responseInit.status = 302;\n  }\n  let headers = new Headers(responseInit.headers);\n  headers.set(\"Location\", url);\n  return new Response(null, _extends({}, responseInit, {\n    headers\n  }));\n};\nvar redirectDocument = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n  return response;\n};\nvar replace = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Replace\", \"true\");\n  return response;\n};\nvar ErrorResponseImpl = class {\n  constructor(status, statusText, data, internal) {\n    if (internal === void 0) {\n      internal = false;\n    }\n    this.status = status;\n    this.statusText = statusText || \"\";\n    this.internal = internal;\n    if (data instanceof Error) {\n      this.data = data.toString();\n      this.error = data;\n    } else {\n      this.data = data;\n    }\n  }\n};\nfunction isRouteErrorResponse(error) {\n  return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\nvar validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nvar validMutationMethods = new Set(validMutationMethodsArr);\nvar validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nvar validRequestMethods = new Set(validRequestMethodsArr);\nvar redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);\nvar redirectPreserveMethodStatusCodes = /* @__PURE__ */ new Set([307, 308]);\nvar IDLE_NAVIGATION = {\n  state: \"idle\",\n  location: void 0,\n  formMethod: void 0,\n  formAction: void 0,\n  formEncType: void 0,\n  formData: void 0,\n  json: void 0,\n  text: void 0\n};\nvar IDLE_FETCHER = {\n  state: \"idle\",\n  data: void 0,\n  formMethod: void 0,\n  formAction: void 0,\n  formEncType: void 0,\n  formData: void 0,\n  json: void 0,\n  text: void 0\n};\nvar IDLE_BLOCKER = {\n  state: \"unblocked\",\n  proceed: void 0,\n  reset: void 0,\n  location: void 0\n};\nvar ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar defaultMapRouteProperties = (route) => ({\n  hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nvar TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\nfunction createRouter(init) {\n  const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : void 0;\n  const isBrowser2 = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n  const isServer = !isBrowser2;\n  invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n  let mapRouteProperties2;\n  if (init.mapRouteProperties) {\n    mapRouteProperties2 = init.mapRouteProperties;\n  } else if (init.detectErrorBoundary) {\n    let detectErrorBoundary = init.detectErrorBoundary;\n    mapRouteProperties2 = (route) => ({\n      hasErrorBoundary: detectErrorBoundary(route)\n    });\n  } else {\n    mapRouteProperties2 = defaultMapRouteProperties;\n  }\n  let manifest = {};\n  let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties2, void 0, manifest);\n  let inFlightDataRoutes;\n  let basename = init.basename || \"/\";\n  let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n  let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n  let future = _extends({\n    v7_fetcherPersist: false,\n    v7_normalizeFormMethod: false,\n    v7_partialHydration: false,\n    v7_prependBasename: false,\n    v7_relativeSplatPath: false,\n    v7_skipActionErrorRevalidation: false\n  }, init.future);\n  let unlistenHistory = null;\n  let subscribers = /* @__PURE__ */ new Set();\n  let savedScrollPositions2 = null;\n  let getScrollRestorationKey = null;\n  let getScrollPosition = null;\n  let initialScrollRestored = init.hydrationData != null;\n  let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n  let initialErrors = null;\n  if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n    let error = getInternalRouterError(404, {\n      pathname: init.history.location.pathname\n    });\n    let {\n      matches,\n      route\n    } = getShortCircuitMatches(dataRoutes);\n    initialMatches = matches;\n    initialErrors = {\n      [route.id]: error\n    };\n  }\n  if (initialMatches && !init.hydrationData) {\n    let fogOfWar = checkFogOfWar(initialMatches, dataRoutes, init.history.location.pathname);\n    if (fogOfWar.active) {\n      initialMatches = null;\n    }\n  }\n  let initialized;\n  if (!initialMatches) {\n    initialized = false;\n    initialMatches = [];\n    if (future.v7_partialHydration) {\n      let fogOfWar = checkFogOfWar(null, dataRoutes, init.history.location.pathname);\n      if (fogOfWar.active && fogOfWar.matches) {\n        initialMatches = fogOfWar.matches;\n      }\n    }\n  } else if (initialMatches.some((m) => m.route.lazy)) {\n    initialized = false;\n  } else if (!initialMatches.some((m) => m.route.loader)) {\n    initialized = true;\n  } else if (future.v7_partialHydration) {\n    let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n    let errors = init.hydrationData ? init.hydrationData.errors : null;\n    if (errors) {\n      let idx = initialMatches.findIndex((m) => errors[m.route.id] !== void 0);\n      initialized = initialMatches.slice(0, idx + 1).every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n    } else {\n      initialized = initialMatches.every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n    }\n  } else {\n    initialized = init.hydrationData != null;\n  }\n  let router;\n  let state = {\n    historyAction: init.history.action,\n    location: init.history.location,\n    matches: initialMatches,\n    initialized,\n    navigation: IDLE_NAVIGATION,\n    // Don't restore on initial updateState() if we were SSR'd\n    restoreScrollPosition: init.hydrationData != null ? false : null,\n    preventScrollReset: false,\n    revalidation: \"idle\",\n    loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n    actionData: init.hydrationData && init.hydrationData.actionData || null,\n    errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n    fetchers: /* @__PURE__ */ new Map(),\n    blockers: /* @__PURE__ */ new Map()\n  };\n  let pendingAction = Action.Pop;\n  let pendingPreventScrollReset = false;\n  let pendingNavigationController;\n  let pendingViewTransitionEnabled = false;\n  let appliedViewTransitions = /* @__PURE__ */ new Map();\n  let removePageHideEventListener = null;\n  let isUninterruptedRevalidation = false;\n  let isRevalidationRequired = false;\n  let cancelledDeferredRoutes = [];\n  let cancelledFetcherLoads = /* @__PURE__ */ new Set();\n  let fetchControllers = /* @__PURE__ */ new Map();\n  let incrementingLoadId = 0;\n  let pendingNavigationLoadId = -1;\n  let fetchReloadIds = /* @__PURE__ */ new Map();\n  let fetchRedirectIds = /* @__PURE__ */ new Set();\n  let fetchLoadMatches = /* @__PURE__ */ new Map();\n  let activeFetchers = /* @__PURE__ */ new Map();\n  let deletedFetchers = /* @__PURE__ */ new Set();\n  let activeDeferreds = /* @__PURE__ */ new Map();\n  let blockerFunctions = /* @__PURE__ */ new Map();\n  let unblockBlockerHistoryUpdate = void 0;\n  function initialize() {\n    unlistenHistory = init.history.listen((_ref) => {\n      let {\n        action: historyAction,\n        location,\n        delta\n      } = _ref;\n      if (unblockBlockerHistoryUpdate) {\n        unblockBlockerHistoryUpdate();\n        unblockBlockerHistoryUpdate = void 0;\n        return;\n      }\n      warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs.  This can also happen if you are using createHashRouter and the user manually changes the URL.\");\n      let blockerKey = shouldBlockNavigation({\n        currentLocation: state.location,\n        nextLocation: location,\n        historyAction\n      });\n      if (blockerKey && delta != null) {\n        let nextHistoryUpdatePromise = new Promise((resolve) => {\n          unblockBlockerHistoryUpdate = resolve;\n        });\n        init.history.go(delta * -1);\n        updateBlocker(blockerKey, {\n          state: \"blocked\",\n          location,\n          proceed() {\n            updateBlocker(blockerKey, {\n              state: \"proceeding\",\n              proceed: void 0,\n              reset: void 0,\n              location\n            });\n            nextHistoryUpdatePromise.then(() => init.history.go(delta));\n          },\n          reset() {\n            let blockers = new Map(state.blockers);\n            blockers.set(blockerKey, IDLE_BLOCKER);\n            updateState({\n              blockers\n            });\n          }\n        });\n        return;\n      }\n      return startNavigation(historyAction, location);\n    });\n    if (isBrowser2) {\n      restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n      let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n      routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n      removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n    }\n    if (!state.initialized) {\n      startNavigation(Action.Pop, state.location, {\n        initialHydration: true\n      });\n    }\n    return router;\n  }\n  function dispose() {\n    if (unlistenHistory) {\n      unlistenHistory();\n    }\n    if (removePageHideEventListener) {\n      removePageHideEventListener();\n    }\n    subscribers.clear();\n    pendingNavigationController && pendingNavigationController.abort();\n    state.fetchers.forEach((_, key) => deleteFetcher(key));\n    state.blockers.forEach((_, key) => deleteBlocker(key));\n  }\n  function subscribe(fn) {\n    subscribers.add(fn);\n    return () => subscribers.delete(fn);\n  }\n  function updateState(newState, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    state = _extends({}, state, newState);\n    let completedFetchers = [];\n    let deletedFetchersKeys = [];\n    if (future.v7_fetcherPersist) {\n      state.fetchers.forEach((fetcher, key) => {\n        if (fetcher.state === \"idle\") {\n          if (deletedFetchers.has(key)) {\n            deletedFetchersKeys.push(key);\n          } else {\n            completedFetchers.push(key);\n          }\n        }\n      });\n    }\n    [...subscribers].forEach((subscriber) => subscriber(state, {\n      deletedFetchers: deletedFetchersKeys,\n      viewTransitionOpts: opts.viewTransitionOpts,\n      flushSync: opts.flushSync === true\n    }));\n    if (future.v7_fetcherPersist) {\n      completedFetchers.forEach((key) => state.fetchers.delete(key));\n      deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n    }\n  }\n  function completeNavigation(location, newState, _temp) {\n    var _location$state, _location$state2;\n    let {\n      flushSync\n    } = _temp === void 0 ? {} : _temp;\n    let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n    let actionData;\n    if (newState.actionData) {\n      if (Object.keys(newState.actionData).length > 0) {\n        actionData = newState.actionData;\n      } else {\n        actionData = null;\n      }\n    } else if (isActionReload) {\n      actionData = state.actionData;\n    } else {\n      actionData = null;\n    }\n    let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n    let blockers = state.blockers;\n    if (blockers.size > 0) {\n      blockers = new Map(blockers);\n      blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n    }\n    let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n    if (inFlightDataRoutes) {\n      dataRoutes = inFlightDataRoutes;\n      inFlightDataRoutes = void 0;\n    }\n    if (isUninterruptedRevalidation)\n      ;\n    else if (pendingAction === Action.Pop)\n      ;\n    else if (pendingAction === Action.Push) {\n      init.history.push(location, location.state);\n    } else if (pendingAction === Action.Replace) {\n      init.history.replace(location, location.state);\n    }\n    let viewTransitionOpts;\n    if (pendingAction === Action.Pop) {\n      let priorPaths = appliedViewTransitions.get(state.location.pathname);\n      if (priorPaths && priorPaths.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: state.location,\n          nextLocation: location\n        };\n      } else if (appliedViewTransitions.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: location,\n          nextLocation: state.location\n        };\n      }\n    } else if (pendingViewTransitionEnabled) {\n      let toPaths = appliedViewTransitions.get(state.location.pathname);\n      if (toPaths) {\n        toPaths.add(location.pathname);\n      } else {\n        toPaths = /* @__PURE__ */ new Set([location.pathname]);\n        appliedViewTransitions.set(state.location.pathname, toPaths);\n      }\n      viewTransitionOpts = {\n        currentLocation: state.location,\n        nextLocation: location\n      };\n    }\n    updateState(_extends({}, newState, {\n      actionData,\n      loaderData,\n      historyAction: pendingAction,\n      location,\n      initialized: true,\n      navigation: IDLE_NAVIGATION,\n      revalidation: \"idle\",\n      restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n      preventScrollReset,\n      blockers\n    }), {\n      viewTransitionOpts,\n      flushSync: flushSync === true\n    });\n    pendingAction = Action.Pop;\n    pendingPreventScrollReset = false;\n    pendingViewTransitionEnabled = false;\n    isUninterruptedRevalidation = false;\n    isRevalidationRequired = false;\n    cancelledDeferredRoutes = [];\n  }\n  async function navigate(to, opts) {\n    if (typeof to === \"number\") {\n      init.history.go(to);\n      return;\n    }\n    let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n    let {\n      path,\n      submission,\n      error\n    } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n    let currentLocation = state.location;\n    let nextLocation = createLocation(state.location, path, opts && opts.state);\n    nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n    let userReplace = opts && opts.replace != null ? opts.replace : void 0;\n    let historyAction = Action.Push;\n    if (userReplace === true) {\n      historyAction = Action.Replace;\n    } else if (userReplace === false)\n      ;\n    else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n      historyAction = Action.Replace;\n    }\n    let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : void 0;\n    let flushSync = (opts && opts.flushSync) === true;\n    let blockerKey = shouldBlockNavigation({\n      currentLocation,\n      nextLocation,\n      historyAction\n    });\n    if (blockerKey) {\n      updateBlocker(blockerKey, {\n        state: \"blocked\",\n        location: nextLocation,\n        proceed() {\n          updateBlocker(blockerKey, {\n            state: \"proceeding\",\n            proceed: void 0,\n            reset: void 0,\n            location: nextLocation\n          });\n          navigate(to, opts);\n        },\n        reset() {\n          let blockers = new Map(state.blockers);\n          blockers.set(blockerKey, IDLE_BLOCKER);\n          updateState({\n            blockers\n          });\n        }\n      });\n      return;\n    }\n    return await startNavigation(historyAction, nextLocation, {\n      submission,\n      // Send through the formData serialization error if we have one so we can\n      // render at the right error boundary after we match routes\n      pendingError: error,\n      preventScrollReset,\n      replace: opts && opts.replace,\n      enableViewTransition: opts && opts.viewTransition,\n      flushSync\n    });\n  }\n  function revalidate() {\n    interruptActiveLoads();\n    updateState({\n      revalidation: \"loading\"\n    });\n    if (state.navigation.state === \"submitting\") {\n      return;\n    }\n    if (state.navigation.state === \"idle\") {\n      startNavigation(state.historyAction, state.location, {\n        startUninterruptedRevalidation: true\n      });\n      return;\n    }\n    startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n      overrideNavigation: state.navigation,\n      // Proxy through any rending view transition\n      enableViewTransition: pendingViewTransitionEnabled === true\n    });\n  }\n  async function startNavigation(historyAction, location, opts) {\n    pendingNavigationController && pendingNavigationController.abort();\n    pendingNavigationController = null;\n    pendingAction = historyAction;\n    isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n    saveScrollPosition(state.location, state.matches);\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n    pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let loadingNavigation = opts && opts.overrideNavigation;\n    let matches = matchRoutes(routesToUse, location, basename);\n    let flushSync = (opts && opts.flushSync) === true;\n    let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    if (!matches) {\n      let {\n        error,\n        notFoundMatches,\n        route\n      } = handleNavigational404(location.pathname);\n      completeNavigation(location, {\n        matches: notFoundMatches,\n        loaderData: {},\n        errors: {\n          [route.id]: error\n        }\n      }, {\n        flushSync\n      });\n      return;\n    }\n    if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n      completeNavigation(location, {\n        matches\n      }, {\n        flushSync\n      });\n      return;\n    }\n    pendingNavigationController = new AbortController();\n    let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n    let pendingActionResult;\n    if (opts && opts.pendingError) {\n      pendingActionResult = [findNearestBoundary(matches).route.id, {\n        type: ResultType.error,\n        error: opts.pendingError\n      }];\n    } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n      let actionResult = await handleAction(request, location, opts.submission, matches, fogOfWar.active, {\n        replace: opts.replace,\n        flushSync\n      });\n      if (actionResult.shortCircuited) {\n        return;\n      }\n      if (actionResult.pendingActionResult) {\n        let [routeId, result] = actionResult.pendingActionResult;\n        if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n          pendingNavigationController = null;\n          completeNavigation(location, {\n            matches: actionResult.matches,\n            loaderData: {},\n            errors: {\n              [routeId]: result.error\n            }\n          });\n          return;\n        }\n      }\n      matches = actionResult.matches || matches;\n      pendingActionResult = actionResult.pendingActionResult;\n      loadingNavigation = getLoadingNavigation(location, opts.submission);\n      flushSync = false;\n      fogOfWar.active = false;\n      request = createClientSideRequest(init.history, request.url, request.signal);\n    }\n    let {\n      shortCircuited,\n      matches: updatedMatches,\n      loaderData,\n      errors\n    } = await handleLoaders(request, location, matches, fogOfWar.active, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionResult);\n    if (shortCircuited) {\n      return;\n    }\n    pendingNavigationController = null;\n    completeNavigation(location, _extends({\n      matches: updatedMatches || matches\n    }, getActionDataForCommit(pendingActionResult), {\n      loaderData,\n      errors\n    }));\n  }\n  async function handleAction(request, location, submission, matches, isFogOfWar, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    interruptActiveLoads();\n    let navigation = getSubmittingNavigation(location, submission);\n    updateState({\n      navigation\n    }, {\n      flushSync: opts.flushSync === true\n    });\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);\n      if (discoverResult.type === \"aborted\") {\n        return {\n          shortCircuited: true\n        };\n      } else if (discoverResult.type === \"error\") {\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          pendingActionResult: [boundaryId, {\n            type: ResultType.error,\n            error: discoverResult.error\n          }]\n        };\n      } else if (!discoverResult.matches) {\n        let {\n          notFoundMatches,\n          error,\n          route\n        } = handleNavigational404(location.pathname);\n        return {\n          matches: notFoundMatches,\n          pendingActionResult: [route.id, {\n            type: ResultType.error,\n            error\n          }]\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let result;\n    let actionMatch = getTargetMatch(matches, location);\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      result = {\n        type: ResultType.error,\n        error: getInternalRouterError(405, {\n          method: request.method,\n          pathname: location.pathname,\n          routeId: actionMatch.route.id\n        })\n      };\n    } else {\n      let results = await callDataStrategy(\"action\", state, request, [actionMatch], matches, null);\n      result = results[actionMatch.route.id];\n      if (request.signal.aborted) {\n        return {\n          shortCircuited: true\n        };\n      }\n    }\n    if (isRedirectResult(result)) {\n      let replace2;\n      if (opts && opts.replace != null) {\n        replace2 = opts.replace;\n      } else {\n        let location2 = normalizeRedirectLocation(result.response.headers.get(\"Location\"), new URL(request.url), basename);\n        replace2 = location2 === state.location.pathname + state.location.search;\n      }\n      await startRedirectNavigation(request, result, true, {\n        submission,\n        replace: replace2\n      });\n      return {\n        shortCircuited: true\n      };\n    }\n    if (isDeferredResult(result)) {\n      throw getInternalRouterError(400, {\n        type: \"defer-action\"\n      });\n    }\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n      if ((opts && opts.replace) !== true) {\n        pendingAction = Action.Push;\n      }\n      return {\n        matches,\n        pendingActionResult: [boundaryMatch.route.id, result]\n      };\n    }\n    return {\n      matches,\n      pendingActionResult: [actionMatch.route.id, result]\n    };\n  }\n  async function handleLoaders(request, location, matches, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace2, initialHydration, flushSync, pendingActionResult) {\n    let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n    let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n    let shouldUpdateNavigationState = !isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration);\n    if (isFogOfWar) {\n      if (shouldUpdateNavigationState) {\n        let actionData = getUpdatedActionData(pendingActionResult);\n        updateState(_extends({\n          navigation: loadingNavigation\n        }, actionData !== void 0 ? {\n          actionData\n        } : {}), {\n          flushSync\n        });\n      }\n      let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);\n      if (discoverResult.type === \"aborted\") {\n        return {\n          shortCircuited: true\n        };\n      } else if (discoverResult.type === \"error\") {\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          loaderData: {},\n          errors: {\n            [boundaryId]: discoverResult.error\n          }\n        };\n      } else if (!discoverResult.matches) {\n        let {\n          error,\n          notFoundMatches,\n          route\n        } = handleNavigational404(location.pathname);\n        return {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error\n          }\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult);\n    cancelActiveDeferreds((routeId) => !(matches && matches.some((m) => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId));\n    pendingNavigationLoadId = ++incrementingLoadId;\n    if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n      let updatedFetchers2 = markFetchRedirectsDone();\n      completeNavigation(location, _extends({\n        matches,\n        loaderData: {},\n        // Commit pending error if we're short circuiting\n        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n          [pendingActionResult[0]]: pendingActionResult[1].error\n        } : null\n      }, getActionDataForCommit(pendingActionResult), updatedFetchers2 ? {\n        fetchers: new Map(state.fetchers)\n      } : {}), {\n        flushSync\n      });\n      return {\n        shortCircuited: true\n      };\n    }\n    if (shouldUpdateNavigationState) {\n      let updates = {};\n      if (!isFogOfWar) {\n        updates.navigation = loadingNavigation;\n        let actionData = getUpdatedActionData(pendingActionResult);\n        if (actionData !== void 0) {\n          updates.actionData = actionData;\n        }\n      }\n      if (revalidatingFetchers.length > 0) {\n        updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n      }\n      updateState(updates, {\n        flushSync\n      });\n    }\n    revalidatingFetchers.forEach((rf) => {\n      abortFetcher(rf.key);\n      if (rf.controller) {\n        fetchControllers.set(rf.key, rf.controller);\n      }\n    });\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n    }\n    let {\n      loaderResults,\n      fetcherResults\n    } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, request);\n    if (request.signal.aborted) {\n      return {\n        shortCircuited: true\n      };\n    }\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n    }\n    revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n    let redirect3 = findRedirect(loaderResults);\n    if (redirect3) {\n      await startRedirectNavigation(request, redirect3.result, true, {\n        replace: replace2\n      });\n      return {\n        shortCircuited: true\n      };\n    }\n    redirect3 = findRedirect(fetcherResults);\n    if (redirect3) {\n      fetchRedirectIds.add(redirect3.key);\n      await startRedirectNavigation(request, redirect3.result, true, {\n        replace: replace2\n      });\n      return {\n        shortCircuited: true\n      };\n    }\n    let {\n      loaderData,\n      errors\n    } = processLoaderData(state, matches, loaderResults, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds);\n    activeDeferreds.forEach((deferredData, routeId) => {\n      deferredData.subscribe((aborted) => {\n        if (aborted || deferredData.done) {\n          activeDeferreds.delete(routeId);\n        }\n      });\n    });\n    if (future.v7_partialHydration && initialHydration && state.errors) {\n      errors = _extends({}, state.errors, errors);\n    }\n    let updatedFetchers = markFetchRedirectsDone();\n    let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n    let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n    return _extends({\n      matches,\n      loaderData,\n      errors\n    }, shouldUpdateFetchers ? {\n      fetchers: new Map(state.fetchers)\n    } : {});\n  }\n  function getUpdatedActionData(pendingActionResult) {\n    if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n      return {\n        [pendingActionResult[0]]: pendingActionResult[1].data\n      };\n    } else if (state.actionData) {\n      if (Object.keys(state.actionData).length === 0) {\n        return null;\n      } else {\n        return state.actionData;\n      }\n    }\n  }\n  function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n    revalidatingFetchers.forEach((rf) => {\n      let fetcher = state.fetchers.get(rf.key);\n      let revalidatingFetcher = getLoadingFetcher(void 0, fetcher ? fetcher.data : void 0);\n      state.fetchers.set(rf.key, revalidatingFetcher);\n    });\n    return new Map(state.fetchers);\n  }\n  function fetch(key, routeId, href, opts) {\n    if (isServer) {\n      throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.\");\n    }\n    abortFetcher(key);\n    let flushSync = (opts && opts.flushSync) === true;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);\n    let matches = matchRoutes(routesToUse, normalizedPath, basename);\n    let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    if (!matches) {\n      setFetcherError(key, routeId, getInternalRouterError(404, {\n        pathname: normalizedPath\n      }), {\n        flushSync\n      });\n      return;\n    }\n    let {\n      path,\n      submission,\n      error\n    } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n    if (error) {\n      setFetcherError(key, routeId, error, {\n        flushSync\n      });\n      return;\n    }\n    let match = getTargetMatch(matches, path);\n    let preventScrollReset = (opts && opts.preventScrollReset) === true;\n    if (submission && isMutationMethod(submission.formMethod)) {\n      handleFetcherAction(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);\n      return;\n    }\n    fetchLoadMatches.set(key, {\n      routeId,\n      path\n    });\n    handleFetcherLoader(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);\n  }\n  async function handleFetcherAction(key, routeId, path, match, requestMatches, isFogOfWar, flushSync, preventScrollReset, submission) {\n    interruptActiveLoads();\n    fetchLoadMatches.delete(key);\n    function detectAndHandle405Error(m) {\n      if (!m.route.action && !m.route.lazy) {\n        let error = getInternalRouterError(405, {\n          method: submission.formMethod,\n          pathname: path,\n          routeId\n        });\n        setFetcherError(key, routeId, error, {\n          flushSync\n        });\n        return true;\n      }\n      return false;\n    }\n    if (!isFogOfWar && detectAndHandle405Error(match)) {\n      return;\n    }\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n      flushSync\n    });\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(requestMatches, path, fetchRequest.signal);\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, {\n          flushSync\n        });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(key, routeId, getInternalRouterError(404, {\n          pathname: path\n        }), {\n          flushSync\n        });\n        return;\n      } else {\n        requestMatches = discoverResult.matches;\n        match = getTargetMatch(requestMatches, path);\n        if (detectAndHandle405Error(match)) {\n          return;\n        }\n      }\n    }\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let actionResults = await callDataStrategy(\"action\", state, fetchRequest, [match], requestMatches, key);\n    let actionResult = actionResults[match.route.id];\n    if (fetchRequest.signal.aborted) {\n      if (fetchControllers.get(key) === abortController) {\n        fetchControllers.delete(key);\n      }\n      return;\n    }\n    if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n      if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n        updateFetcherState(key, getDoneFetcher(void 0));\n        return;\n      }\n    } else {\n      if (isRedirectResult(actionResult)) {\n        fetchControllers.delete(key);\n        if (pendingNavigationLoadId > originatingLoadId) {\n          updateFetcherState(key, getDoneFetcher(void 0));\n          return;\n        } else {\n          fetchRedirectIds.add(key);\n          updateFetcherState(key, getLoadingFetcher(submission));\n          return startRedirectNavigation(fetchRequest, actionResult, false, {\n            fetcherSubmission: submission,\n            preventScrollReset\n          });\n        }\n      }\n      if (isErrorResult(actionResult)) {\n        setFetcherError(key, routeId, actionResult.error);\n        return;\n      }\n    }\n    if (isDeferredResult(actionResult)) {\n      throw getInternalRouterError(400, {\n        type: \"defer-action\"\n      });\n    }\n    let nextLocation = state.navigation.location || state.location;\n    let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n    invariant(matches, \"Didn't find any matches after fetcher action\");\n    let loadId = ++incrementingLoadId;\n    fetchReloadIds.set(key, loadId);\n    let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n    state.fetchers.set(key, loadFetcher);\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, [match.route.id, actionResult]);\n    revalidatingFetchers.filter((rf) => rf.key !== key).forEach((rf) => {\n      let staleKey = rf.key;\n      let existingFetcher2 = state.fetchers.get(staleKey);\n      let revalidatingFetcher = getLoadingFetcher(void 0, existingFetcher2 ? existingFetcher2.data : void 0);\n      state.fetchers.set(staleKey, revalidatingFetcher);\n      abortFetcher(staleKey);\n      if (rf.controller) {\n        fetchControllers.set(staleKey, rf.controller);\n      }\n    });\n    updateState({\n      fetchers: new Map(state.fetchers)\n    });\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n    abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n    let {\n      loaderResults,\n      fetcherResults\n    } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n    if (abortController.signal.aborted) {\n      return;\n    }\n    abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n    fetchReloadIds.delete(key);\n    fetchControllers.delete(key);\n    revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n    let redirect3 = findRedirect(loaderResults);\n    if (redirect3) {\n      return startRedirectNavigation(revalidationRequest, redirect3.result, false, {\n        preventScrollReset\n      });\n    }\n    redirect3 = findRedirect(fetcherResults);\n    if (redirect3) {\n      fetchRedirectIds.add(redirect3.key);\n      return startRedirectNavigation(revalidationRequest, redirect3.result, false, {\n        preventScrollReset\n      });\n    }\n    let {\n      loaderData,\n      errors\n    } = processLoaderData(state, matches, loaderResults, void 0, revalidatingFetchers, fetcherResults, activeDeferreds);\n    if (state.fetchers.has(key)) {\n      let doneFetcher = getDoneFetcher(actionResult.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n    abortStaleFetchLoads(loadId);\n    if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n      invariant(pendingAction, \"Expected pending action\");\n      pendingNavigationController && pendingNavigationController.abort();\n      completeNavigation(state.navigation.location, {\n        matches,\n        loaderData,\n        errors,\n        fetchers: new Map(state.fetchers)\n      });\n    } else {\n      updateState({\n        errors,\n        loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n        fetchers: new Map(state.fetchers)\n      });\n      isRevalidationRequired = false;\n    }\n  }\n  async function handleFetcherLoader(key, routeId, path, match, matches, isFogOfWar, flushSync, preventScrollReset, submission) {\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : void 0), {\n      flushSync\n    });\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(matches, path, fetchRequest.signal);\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, {\n          flushSync\n        });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(key, routeId, getInternalRouterError(404, {\n          pathname: path\n        }), {\n          flushSync\n        });\n        return;\n      } else {\n        matches = discoverResult.matches;\n        match = getTargetMatch(matches, path);\n      }\n    }\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let results = await callDataStrategy(\"loader\", state, fetchRequest, [match], matches, key);\n    let result = results[match.route.id];\n    if (isDeferredResult(result)) {\n      result = await resolveDeferredData(result, fetchRequest.signal, true) || result;\n    }\n    if (fetchControllers.get(key) === abortController) {\n      fetchControllers.delete(key);\n    }\n    if (fetchRequest.signal.aborted) {\n      return;\n    }\n    if (deletedFetchers.has(key)) {\n      updateFetcherState(key, getDoneFetcher(void 0));\n      return;\n    }\n    if (isRedirectResult(result)) {\n      if (pendingNavigationLoadId > originatingLoadId) {\n        updateFetcherState(key, getDoneFetcher(void 0));\n        return;\n      } else {\n        fetchRedirectIds.add(key);\n        await startRedirectNavigation(fetchRequest, result, false, {\n          preventScrollReset\n        });\n        return;\n      }\n    }\n    if (isErrorResult(result)) {\n      setFetcherError(key, routeId, result.error);\n      return;\n    }\n    invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n    updateFetcherState(key, getDoneFetcher(result.data));\n  }\n  async function startRedirectNavigation(request, redirect3, isNavigation, _temp2) {\n    let {\n      submission,\n      fetcherSubmission,\n      preventScrollReset,\n      replace: replace2\n    } = _temp2 === void 0 ? {} : _temp2;\n    if (redirect3.response.headers.has(\"X-Remix-Revalidate\")) {\n      isRevalidationRequired = true;\n    }\n    let location = redirect3.response.headers.get(\"Location\");\n    invariant(location, \"Expected a Location header on the redirect Response\");\n    location = normalizeRedirectLocation(location, new URL(request.url), basename);\n    let redirectLocation = createLocation(state.location, location, {\n      _isRedirect: true\n    });\n    if (isBrowser2) {\n      let isDocumentReload = false;\n      if (redirect3.response.headers.has(\"X-Remix-Reload-Document\")) {\n        isDocumentReload = true;\n      } else if (ABSOLUTE_URL_REGEX.test(location)) {\n        const url = init.history.createURL(location);\n        isDocumentReload = // Hard reload if it's an absolute URL to a new origin\n        url.origin !== routerWindow.location.origin || // Hard reload if it's an absolute URL that does not match our basename\n        stripBasename(url.pathname, basename) == null;\n      }\n      if (isDocumentReload) {\n        if (replace2) {\n          routerWindow.location.replace(location);\n        } else {\n          routerWindow.location.assign(location);\n        }\n        return;\n      }\n    }\n    pendingNavigationController = null;\n    let redirectHistoryAction = replace2 === true || redirect3.response.headers.has(\"X-Remix-Replace\") ? Action.Replace : Action.Push;\n    let {\n      formMethod,\n      formAction,\n      formEncType\n    } = state.navigation;\n    if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n      submission = getSubmissionFromNavigation(state.navigation);\n    }\n    let activeSubmission = submission || fetcherSubmission;\n    if (redirectPreserveMethodStatusCodes.has(redirect3.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        submission: _extends({}, activeSubmission, {\n          formAction: location\n        }),\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n      });\n    } else {\n      let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        overrideNavigation,\n        // Send fetcher submissions through for shouldRevalidate\n        fetcherSubmission,\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n      });\n    }\n  }\n  async function callDataStrategy(type, state2, request, matchesToLoad, matches, fetcherKey) {\n    let results;\n    let dataResults = {};\n    try {\n      results = await callDataStrategyImpl(dataStrategyImpl, type, state2, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties2);\n    } catch (e) {\n      matchesToLoad.forEach((m) => {\n        dataResults[m.route.id] = {\n          type: ResultType.error,\n          error: e\n        };\n      });\n      return dataResults;\n    }\n    for (let [routeId, result] of Object.entries(results)) {\n      if (isRedirectDataStrategyResultResult(result)) {\n        let response = result.result;\n        dataResults[routeId] = {\n          type: ResultType.redirect,\n          response: normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, future.v7_relativeSplatPath)\n        };\n      } else {\n        dataResults[routeId] = await convertDataStrategyResultToDataResult(result);\n      }\n    }\n    return dataResults;\n  }\n  async function callLoadersAndMaybeResolveData(state2, matches, matchesToLoad, fetchersToLoad, request) {\n    let currentMatches = state2.matches;\n    let loaderResultsPromise = callDataStrategy(\"loader\", state2, request, matchesToLoad, matches, null);\n    let fetcherResultsPromise = Promise.all(fetchersToLoad.map(async (f) => {\n      if (f.matches && f.match && f.controller) {\n        let results = await callDataStrategy(\"loader\", state2, createClientSideRequest(init.history, f.path, f.controller.signal), [f.match], f.matches, f.key);\n        let result = results[f.match.route.id];\n        return {\n          [f.key]: result\n        };\n      } else {\n        return Promise.resolve({\n          [f.key]: {\n            type: ResultType.error,\n            error: getInternalRouterError(404, {\n              pathname: f.path\n            })\n          }\n        });\n      }\n    }));\n    let loaderResults = await loaderResultsPromise;\n    let fetcherResults = (await fetcherResultsPromise).reduce((acc, r) => Object.assign(acc, r), {});\n    await Promise.all([resolveNavigationDeferredResults(matches, loaderResults, request.signal, currentMatches, state2.loaderData), resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad)]);\n    return {\n      loaderResults,\n      fetcherResults\n    };\n  }\n  function interruptActiveLoads() {\n    isRevalidationRequired = true;\n    cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n    fetchLoadMatches.forEach((_, key) => {\n      if (fetchControllers.has(key)) {\n        cancelledFetcherLoads.add(key);\n      }\n      abortFetcher(key);\n    });\n  }\n  function updateFetcherState(key, fetcher, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    state.fetchers.set(key, fetcher);\n    updateState({\n      fetchers: new Map(state.fetchers)\n    }, {\n      flushSync: (opts && opts.flushSync) === true\n    });\n  }\n  function setFetcherError(key, routeId, error, opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n    let boundaryMatch = findNearestBoundary(state.matches, routeId);\n    deleteFetcher(key);\n    updateState({\n      errors: {\n        [boundaryMatch.route.id]: error\n      },\n      fetchers: new Map(state.fetchers)\n    }, {\n      flushSync: (opts && opts.flushSync) === true\n    });\n  }\n  function getFetcher(key) {\n    if (future.v7_fetcherPersist) {\n      activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n      if (deletedFetchers.has(key)) {\n        deletedFetchers.delete(key);\n      }\n    }\n    return state.fetchers.get(key) || IDLE_FETCHER;\n  }\n  function deleteFetcher(key) {\n    let fetcher = state.fetchers.get(key);\n    if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n      abortFetcher(key);\n    }\n    fetchLoadMatches.delete(key);\n    fetchReloadIds.delete(key);\n    fetchRedirectIds.delete(key);\n    deletedFetchers.delete(key);\n    cancelledFetcherLoads.delete(key);\n    state.fetchers.delete(key);\n  }\n  function deleteFetcherAndUpdateState(key) {\n    if (future.v7_fetcherPersist) {\n      let count = (activeFetchers.get(key) || 0) - 1;\n      if (count <= 0) {\n        activeFetchers.delete(key);\n        deletedFetchers.add(key);\n      } else {\n        activeFetchers.set(key, count);\n      }\n    } else {\n      deleteFetcher(key);\n    }\n    updateState({\n      fetchers: new Map(state.fetchers)\n    });\n  }\n  function abortFetcher(key) {\n    let controller = fetchControllers.get(key);\n    if (controller) {\n      controller.abort();\n      fetchControllers.delete(key);\n    }\n  }\n  function markFetchersDone(keys) {\n    for (let key of keys) {\n      let fetcher = getFetcher(key);\n      let doneFetcher = getDoneFetcher(fetcher.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n  function markFetchRedirectsDone() {\n    let doneKeys = [];\n    let updatedFetchers = false;\n    for (let key of fetchRedirectIds) {\n      let fetcher = state.fetchers.get(key);\n      invariant(fetcher, \"Expected fetcher: \" + key);\n      if (fetcher.state === \"loading\") {\n        fetchRedirectIds.delete(key);\n        doneKeys.push(key);\n        updatedFetchers = true;\n      }\n    }\n    markFetchersDone(doneKeys);\n    return updatedFetchers;\n  }\n  function abortStaleFetchLoads(landedId) {\n    let yeetedKeys = [];\n    for (let [key, id] of fetchReloadIds) {\n      if (id < landedId) {\n        let fetcher = state.fetchers.get(key);\n        invariant(fetcher, \"Expected fetcher: \" + key);\n        if (fetcher.state === \"loading\") {\n          abortFetcher(key);\n          fetchReloadIds.delete(key);\n          yeetedKeys.push(key);\n        }\n      }\n    }\n    markFetchersDone(yeetedKeys);\n    return yeetedKeys.length > 0;\n  }\n  function getBlocker(key, fn) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    if (blockerFunctions.get(key) !== fn) {\n      blockerFunctions.set(key, fn);\n    }\n    return blocker;\n  }\n  function deleteBlocker(key) {\n    state.blockers.delete(key);\n    blockerFunctions.delete(key);\n  }\n  function updateBlocker(key, newBlocker) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n    let blockers = new Map(state.blockers);\n    blockers.set(key, newBlocker);\n    updateState({\n      blockers\n    });\n  }\n  function shouldBlockNavigation(_ref2) {\n    let {\n      currentLocation,\n      nextLocation,\n      historyAction\n    } = _ref2;\n    if (blockerFunctions.size === 0) {\n      return;\n    }\n    if (blockerFunctions.size > 1) {\n      warning(false, \"A router only supports one blocker at a time\");\n    }\n    let entries = Array.from(blockerFunctions.entries());\n    let [blockerKey, blockerFunction] = entries[entries.length - 1];\n    let blocker = state.blockers.get(blockerKey);\n    if (blocker && blocker.state === \"proceeding\") {\n      return;\n    }\n    if (blockerFunction({\n      currentLocation,\n      nextLocation,\n      historyAction\n    })) {\n      return blockerKey;\n    }\n  }\n  function handleNavigational404(pathname) {\n    let error = getInternalRouterError(404, {\n      pathname\n    });\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    let {\n      matches,\n      route\n    } = getShortCircuitMatches(routesToUse);\n    cancelActiveDeferreds();\n    return {\n      notFoundMatches: matches,\n      route,\n      error\n    };\n  }\n  function cancelActiveDeferreds(predicate) {\n    let cancelledRouteIds = [];\n    activeDeferreds.forEach((dfd, routeId) => {\n      if (!predicate || predicate(routeId)) {\n        dfd.cancel();\n        cancelledRouteIds.push(routeId);\n        activeDeferreds.delete(routeId);\n      }\n    });\n    return cancelledRouteIds;\n  }\n  function enableScrollRestoration(positions, getPosition, getKey) {\n    savedScrollPositions2 = positions;\n    getScrollPosition = getPosition;\n    getScrollRestorationKey = getKey || null;\n    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n      initialScrollRestored = true;\n      let y = getSavedScrollPosition(state.location, state.matches);\n      if (y != null) {\n        updateState({\n          restoreScrollPosition: y\n        });\n      }\n    }\n    return () => {\n      savedScrollPositions2 = null;\n      getScrollPosition = null;\n      getScrollRestorationKey = null;\n    };\n  }\n  function getScrollKey(location, matches) {\n    if (getScrollRestorationKey) {\n      let key = getScrollRestorationKey(location, matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData)));\n      return key || location.key;\n    }\n    return location.key;\n  }\n  function saveScrollPosition(location, matches) {\n    if (savedScrollPositions2 && getScrollPosition) {\n      let key = getScrollKey(location, matches);\n      savedScrollPositions2[key] = getScrollPosition();\n    }\n  }\n  function getSavedScrollPosition(location, matches) {\n    if (savedScrollPositions2) {\n      let key = getScrollKey(location, matches);\n      let y = savedScrollPositions2[key];\n      if (typeof y === \"number\") {\n        return y;\n      }\n    }\n    return null;\n  }\n  function checkFogOfWar(matches, routesToUse, pathname) {\n    if (patchRoutesOnNavigationImpl) {\n      if (!matches) {\n        let fogMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n        return {\n          active: true,\n          matches: fogMatches || []\n        };\n      } else {\n        if (Object.keys(matches[0].params).length > 0) {\n          let partialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n          return {\n            active: true,\n            matches: partialMatches\n          };\n        }\n      }\n    }\n    return {\n      active: false,\n      matches: null\n    };\n  }\n  async function discoverRoutes(matches, pathname, signal) {\n    if (!patchRoutesOnNavigationImpl) {\n      return {\n        type: \"success\",\n        matches\n      };\n    }\n    let partialMatches = matches;\n    while (true) {\n      let isNonHMR = inFlightDataRoutes == null;\n      let routesToUse = inFlightDataRoutes || dataRoutes;\n      let localManifest = manifest;\n      try {\n        await patchRoutesOnNavigationImpl({\n          path: pathname,\n          matches: partialMatches,\n          patch: (routeId, children) => {\n            if (signal.aborted)\n              return;\n            patchRoutesImpl(routeId, children, routesToUse, localManifest, mapRouteProperties2);\n          }\n        });\n      } catch (e) {\n        return {\n          type: \"error\",\n          error: e,\n          partialMatches\n        };\n      } finally {\n        if (isNonHMR && !signal.aborted) {\n          dataRoutes = [...dataRoutes];\n        }\n      }\n      if (signal.aborted) {\n        return {\n          type: \"aborted\"\n        };\n      }\n      let newMatches = matchRoutes(routesToUse, pathname, basename);\n      if (newMatches) {\n        return {\n          type: \"success\",\n          matches: newMatches\n        };\n      }\n      let newPartialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);\n      if (!newPartialMatches || partialMatches.length === newPartialMatches.length && partialMatches.every((m, i) => m.route.id === newPartialMatches[i].route.id)) {\n        return {\n          type: \"success\",\n          matches: null\n        };\n      }\n      partialMatches = newPartialMatches;\n    }\n  }\n  function _internalSetRoutes(newRoutes) {\n    manifest = {};\n    inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties2, void 0, manifest);\n  }\n  function patchRoutes(routeId, children) {\n    let isNonHMR = inFlightDataRoutes == null;\n    let routesToUse = inFlightDataRoutes || dataRoutes;\n    patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties2);\n    if (isNonHMR) {\n      dataRoutes = [...dataRoutes];\n      updateState({});\n    }\n  }\n  router = {\n    get basename() {\n      return basename;\n    },\n    get future() {\n      return future;\n    },\n    get state() {\n      return state;\n    },\n    get routes() {\n      return dataRoutes;\n    },\n    get window() {\n      return routerWindow;\n    },\n    initialize,\n    subscribe,\n    enableScrollRestoration,\n    navigate,\n    fetch,\n    revalidate,\n    // Passthrough to history-aware createHref used by useHref so we get proper\n    // hash-aware URLs in DOM paths\n    createHref: (to) => init.history.createHref(to),\n    encodeLocation: (to) => init.history.encodeLocation(to),\n    getFetcher,\n    deleteFetcher: deleteFetcherAndUpdateState,\n    dispose,\n    getBlocker,\n    deleteBlocker,\n    patchRoutes,\n    _internalFetchControllers: fetchControllers,\n    _internalActiveDeferreds: activeDeferreds,\n    // TODO: Remove setRoutes, it's temporary to avoid dealing with\n    // updating the tree while validating the update algorithm.\n    _internalSetRoutes\n  };\n  return router;\n}\nvar UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction isSubmissionNavigation(opts) {\n  return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== void 0);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {\n  let contextualMatches;\n  let activeRouteMatch;\n  if (fromRouteId) {\n    contextualMatches = [];\n    for (let match of matches) {\n      contextualMatches.push(match);\n      if (match.route.id === fromRouteId) {\n        activeRouteMatch = match;\n        break;\n      }\n    }\n  } else {\n    contextualMatches = matches;\n    activeRouteMatch = matches[matches.length - 1];\n  }\n  let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n  if (to == null) {\n    path.search = location.search;\n    path.hash = location.hash;\n  }\n  if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n    let nakedIndex = hasNakedIndexQuery(path.search);\n    if (activeRouteMatch.route.index && !nakedIndex) {\n      path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n    } else if (!activeRouteMatch.route.index && nakedIndex) {\n      let params = new URLSearchParams(path.search);\n      let indexValues = params.getAll(\"index\");\n      params.delete(\"index\");\n      indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? \"?\" + qs : \"\";\n    }\n  }\n  if (prependBasename && basename !== \"/\") {\n    path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n  return createPath(path);\n}\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n  if (!opts || !isSubmissionNavigation(opts)) {\n    return {\n      path\n    };\n  }\n  if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n    return {\n      path,\n      error: getInternalRouterError(405, {\n        method: opts.formMethod\n      })\n    };\n  }\n  let getInvalidBodyError = () => ({\n    path,\n    error: getInternalRouterError(400, {\n      type: \"invalid-body\"\n    })\n  });\n  let rawFormMethod = opts.formMethod || \"get\";\n  let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n  let formAction = stripHashFromPath(path);\n  if (opts.body !== void 0) {\n    if (opts.formEncType === \"text/plain\") {\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ? (\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n        Array.from(opts.body.entries()).reduce((acc, _ref3) => {\n          let [name, value] = _ref3;\n          return \"\" + acc + name + \"=\" + value + \"\\n\";\n        }, \"\")\n      ) : String(opts.body);\n      return {\n        path,\n        submission: {\n          formMethod,\n          formAction,\n          formEncType: opts.formEncType,\n          formData: void 0,\n          json: void 0,\n          text\n        }\n      };\n    } else if (opts.formEncType === \"application/json\") {\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      try {\n        let json3 = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n        return {\n          path,\n          submission: {\n            formMethod,\n            formAction,\n            formEncType: opts.formEncType,\n            formData: void 0,\n            json: json3,\n            text: void 0\n          }\n        };\n      } catch (e) {\n        return getInvalidBodyError();\n      }\n    }\n  }\n  invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n  let searchParams;\n  let formData;\n  if (opts.formData) {\n    searchParams = convertFormDataToSearchParams(opts.formData);\n    formData = opts.formData;\n  } else if (opts.body instanceof FormData) {\n    searchParams = convertFormDataToSearchParams(opts.body);\n    formData = opts.body;\n  } else if (opts.body instanceof URLSearchParams) {\n    searchParams = opts.body;\n    formData = convertSearchParamsToFormData(searchParams);\n  } else if (opts.body == null) {\n    searchParams = new URLSearchParams();\n    formData = new FormData();\n  } else {\n    try {\n      searchParams = new URLSearchParams(opts.body);\n      formData = convertSearchParamsToFormData(searchParams);\n    } catch (e) {\n      return getInvalidBodyError();\n    }\n  }\n  let submission = {\n    formMethod,\n    formAction,\n    formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n    formData,\n    json: void 0,\n    text: void 0\n  };\n  if (isMutationMethod(submission.formMethod)) {\n    return {\n      path,\n      submission\n    };\n  }\n  let parsedPath = parsePath(path);\n  if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n    searchParams.append(\"index\", \"\");\n  }\n  parsedPath.search = \"?\" + searchParams;\n  return {\n    path: createPath(parsedPath),\n    submission\n  };\n}\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId, includeBoundary) {\n  if (includeBoundary === void 0) {\n    includeBoundary = false;\n  }\n  let index = matches.findIndex((m) => m.route.id === boundaryId);\n  if (index >= 0) {\n    return matches.slice(0, includeBoundary ? index + 1 : index);\n  }\n  return matches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, initialHydration, skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {\n  let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : void 0;\n  let currentUrl = history.createURL(state.location);\n  let nextUrl = history.createURL(location);\n  let boundaryMatches = matches;\n  if (initialHydration && state.errors) {\n    boundaryMatches = getLoaderMatchesUntilBoundary(matches, Object.keys(state.errors)[0], true);\n  } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n    boundaryMatches = getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]);\n  }\n  let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : void 0;\n  let shouldSkipRevalidation = skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n  let navigationMatches = boundaryMatches.filter((match, index) => {\n    let {\n      route\n    } = match;\n    if (route.lazy) {\n      return true;\n    }\n    if (route.loader == null) {\n      return false;\n    }\n    if (initialHydration) {\n      return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n    }\n    if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some((id) => id === match.route.id)) {\n      return true;\n    }\n    let currentRouteMatch = state.matches[index];\n    let nextRouteMatch = match;\n    return shouldRevalidateLoader(match, _extends({\n      currentUrl,\n      currentParams: currentRouteMatch.params,\n      nextUrl,\n      nextParams: nextRouteMatch.params\n    }, submission, {\n      actionResult,\n      actionStatus,\n      defaultShouldRevalidate: shouldSkipRevalidation ? false : (\n        // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n        isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search || // Search params affect all loaders\n        currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n      )\n    }));\n  });\n  let revalidatingFetchers = [];\n  fetchLoadMatches.forEach((f, key) => {\n    if (initialHydration || !matches.some((m) => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n      return;\n    }\n    let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n    if (!fetcherMatches) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: null,\n        match: null,\n        controller: null\n      });\n      return;\n    }\n    let fetcher = state.fetchers.get(key);\n    let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n    let shouldRevalidate = false;\n    if (fetchRedirectIds.has(key)) {\n      shouldRevalidate = false;\n    } else if (cancelledFetcherLoads.has(key)) {\n      cancelledFetcherLoads.delete(key);\n      shouldRevalidate = true;\n    } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === void 0) {\n      shouldRevalidate = isRevalidationRequired;\n    } else {\n      shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n        currentUrl,\n        currentParams: state.matches[state.matches.length - 1].params,\n        nextUrl,\n        nextParams: matches[matches.length - 1].params\n      }, submission, {\n        actionResult,\n        actionStatus,\n        defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired\n      }));\n    }\n    if (shouldRevalidate) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: fetcherMatches,\n        match: fetcherMatch,\n        controller: new AbortController()\n      });\n    }\n  });\n  return [navigationMatches, revalidatingFetchers];\n}\nfunction shouldLoadRouteOnHydration(route, loaderData, errors) {\n  if (route.lazy) {\n    return true;\n  }\n  if (!route.loader) {\n    return false;\n  }\n  let hasData = loaderData != null && loaderData[route.id] !== void 0;\n  let hasError = errors != null && errors[route.id] !== void 0;\n  if (!hasData && hasError) {\n    return false;\n  }\n  if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n    return true;\n  }\n  return !hasData && !hasError;\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n  let isNew = (\n    // [a] -> [a, b]\n    !currentMatch || // [a, b] -> [a, c]\n    match.route.id !== currentMatch.route.id\n  );\n  let isMissingData = currentLoaderData[match.route.id] === void 0;\n  return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n  let currentPath = currentMatch.route.path;\n  return (\n    // param change for this match, /users/123 -> /users/456\n    currentMatch.pathname !== match.pathname || // splat param changed, which is not present in match.path\n    // e.g. /files/images/avatar.jpg -> files/finances.xls\n    currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n  );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n  if (loaderMatch.route.shouldRevalidate) {\n    let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n    if (typeof routeChoice === \"boolean\") {\n      return routeChoice;\n    }\n  }\n  return arg.defaultShouldRevalidate;\n}\nfunction patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties2) {\n  var _childrenToPatch;\n  let childrenToPatch;\n  if (routeId) {\n    let route = manifest[routeId];\n    invariant(route, \"No route found to patch children into: routeId = \" + routeId);\n    if (!route.children) {\n      route.children = [];\n    }\n    childrenToPatch = route.children;\n  } else {\n    childrenToPatch = routesToUse;\n  }\n  let uniqueChildren = children.filter((newRoute) => !childrenToPatch.some((existingRoute) => isSameRoute(newRoute, existingRoute)));\n  let newRoutes = convertRoutesToDataRoutes(uniqueChildren, mapRouteProperties2, [routeId || \"_\", \"patch\", String(((_childrenToPatch = childrenToPatch) == null ? void 0 : _childrenToPatch.length) || \"0\")], manifest);\n  childrenToPatch.push(...newRoutes);\n}\nfunction isSameRoute(newRoute, existingRoute) {\n  if (\"id\" in newRoute && \"id\" in existingRoute && newRoute.id === existingRoute.id) {\n    return true;\n  }\n  if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {\n    return false;\n  }\n  if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {\n    return true;\n  }\n  return newRoute.children.every((aChild, i) => {\n    var _existingRoute$childr;\n    return (_existingRoute$childr = existingRoute.children) == null ? void 0 : _existingRoute$childr.some((bChild) => isSameRoute(aChild, bChild));\n  });\n}\nasync function loadLazyRouteModule(route, mapRouteProperties2, manifest) {\n  if (!route.lazy) {\n    return;\n  }\n  let lazyRoute = await route.lazy();\n  if (!route.lazy) {\n    return;\n  }\n  let routeToUpdate = manifest[route.id];\n  invariant(routeToUpdate, \"No route found in manifest\");\n  let routeUpdates = {};\n  for (let lazyRouteProperty in lazyRoute) {\n    let staticRouteValue = routeToUpdate[lazyRouteProperty];\n    let isPropertyStaticallyDefined = staticRouteValue !== void 0 && // This property isn't static since it should always be updated based\n    // on the route updates\n    lazyRouteProperty !== \"hasErrorBoundary\";\n    warning(!isPropertyStaticallyDefined, 'Route \"' + routeToUpdate.id + '\" has a static property \"' + lazyRouteProperty + '\" defined but its lazy function is also returning a value for this property. ' + ('The lazy route property \"' + lazyRouteProperty + '\" will be ignored.'));\n    if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n      routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n    }\n  }\n  Object.assign(routeToUpdate, routeUpdates);\n  Object.assign(routeToUpdate, _extends({}, mapRouteProperties2(routeToUpdate), {\n    lazy: void 0\n  }));\n}\nasync function defaultDataStrategy(_ref4) {\n  let {\n    matches\n  } = _ref4;\n  let matchesToLoad = matches.filter((m) => m.shouldLoad);\n  let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n  return results.reduce((acc, result, i) => Object.assign(acc, {\n    [matchesToLoad[i].route.id]: result\n  }), {});\n}\nasync function callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties2, requestContext) {\n  let loadRouteDefinitionsPromises = matches.map((m) => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties2, manifest) : void 0);\n  let dsMatches = matches.map((match, i) => {\n    let loadRoutePromise = loadRouteDefinitionsPromises[i];\n    let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n    let resolve = async (handlerOverride) => {\n      if (handlerOverride && request.method === \"GET\" && (match.route.lazy || match.route.loader)) {\n        shouldLoad = true;\n      }\n      return shouldLoad ? callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, requestContext) : Promise.resolve({\n        type: ResultType.data,\n        result: void 0\n      });\n    };\n    return _extends({}, match, {\n      shouldLoad,\n      resolve\n    });\n  });\n  let results = await dataStrategyImpl({\n    matches: dsMatches,\n    request,\n    params: matches[0].params,\n    fetcherKey,\n    context: requestContext\n  });\n  try {\n    await Promise.all(loadRouteDefinitionsPromises);\n  } catch (e) {\n  }\n  return results;\n}\nasync function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, staticContext) {\n  let result;\n  let onReject;\n  let runHandler = (handler) => {\n    let reject;\n    let abortPromise = new Promise((_, r) => reject = r);\n    onReject = () => reject();\n    request.signal.addEventListener(\"abort\", onReject);\n    let actualHandler = (ctx) => {\n      if (typeof handler !== \"function\") {\n        return Promise.reject(new Error(\"You cannot call the handler for a route which defines a boolean \" + ('\"' + type + '\" [routeId: ' + match.route.id + \"]\")));\n      }\n      return handler({\n        request,\n        params: match.params,\n        context: staticContext\n      }, ...ctx !== void 0 ? [ctx] : []);\n    };\n    let handlerPromise = (async () => {\n      try {\n        let val = await (handlerOverride ? handlerOverride((ctx) => actualHandler(ctx)) : actualHandler());\n        return {\n          type: \"data\",\n          result: val\n        };\n      } catch (e) {\n        return {\n          type: \"error\",\n          result: e\n        };\n      }\n    })();\n    return Promise.race([handlerPromise, abortPromise]);\n  };\n  try {\n    let handler = match.route[type];\n    if (loadRoutePromise) {\n      if (handler) {\n        let handlerError;\n        let [value] = await Promise.all([\n          // If the handler throws, don't let it immediately bubble out,\n          // since we need to let the lazy() execution finish so we know if this\n          // route has a boundary that can handle the error\n          runHandler(handler).catch((e) => {\n            handlerError = e;\n          }),\n          loadRoutePromise\n        ]);\n        if (handlerError !== void 0) {\n          throw handlerError;\n        }\n        result = value;\n      } else {\n        await loadRoutePromise;\n        handler = match.route[type];\n        if (handler) {\n          result = await runHandler(handler);\n        } else if (type === \"action\") {\n          let url = new URL(request.url);\n          let pathname = url.pathname + url.search;\n          throw getInternalRouterError(405, {\n            method: request.method,\n            pathname,\n            routeId: match.route.id\n          });\n        } else {\n          return {\n            type: ResultType.data,\n            result: void 0\n          };\n        }\n      }\n    } else if (!handler) {\n      let url = new URL(request.url);\n      let pathname = url.pathname + url.search;\n      throw getInternalRouterError(404, {\n        pathname\n      });\n    } else {\n      result = await runHandler(handler);\n    }\n    invariant(result.result !== void 0, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + ('\"' + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n  } catch (e) {\n    return {\n      type: ResultType.error,\n      result: e\n    };\n  } finally {\n    if (onReject) {\n      request.signal.removeEventListener(\"abort\", onReject);\n    }\n  }\n  return result;\n}\nasync function convertDataStrategyResultToDataResult(dataStrategyResult) {\n  let {\n    result,\n    type\n  } = dataStrategyResult;\n  if (isResponse(result)) {\n    let data;\n    try {\n      let contentType = result.headers.get(\"Content-Type\");\n      if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n        if (result.body == null) {\n          data = null;\n        } else {\n          data = await result.json();\n        }\n      } else {\n        data = await result.text();\n      }\n    } catch (e) {\n      return {\n        type: ResultType.error,\n        error: e\n      };\n    }\n    if (type === ResultType.error) {\n      return {\n        type: ResultType.error,\n        error: new ErrorResponseImpl(result.status, result.statusText, data),\n        statusCode: result.status,\n        headers: result.headers\n      };\n    }\n    return {\n      type: ResultType.data,\n      data,\n      statusCode: result.status,\n      headers: result.headers\n    };\n  }\n  if (type === ResultType.error) {\n    if (isDataWithResponseInit(result)) {\n      var _result$init2;\n      if (result.data instanceof Error) {\n        var _result$init;\n        return {\n          type: ResultType.error,\n          error: result.data,\n          statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status\n        };\n      }\n      result = new ErrorResponseImpl(((_result$init2 = result.init) == null ? void 0 : _result$init2.status) || 500, void 0, result.data);\n    }\n    return {\n      type: ResultType.error,\n      error: result,\n      statusCode: isRouteErrorResponse(result) ? result.status : void 0\n    };\n  }\n  if (isDeferredData(result)) {\n    var _result$init3, _result$init4;\n    return {\n      type: ResultType.deferred,\n      deferredData: result,\n      statusCode: (_result$init3 = result.init) == null ? void 0 : _result$init3.status,\n      headers: ((_result$init4 = result.init) == null ? void 0 : _result$init4.headers) && new Headers(result.init.headers)\n    };\n  }\n  if (isDataWithResponseInit(result)) {\n    var _result$init5, _result$init6;\n    return {\n      type: ResultType.data,\n      data: result.data,\n      statusCode: (_result$init5 = result.init) == null ? void 0 : _result$init5.status,\n      headers: (_result$init6 = result.init) != null && _result$init6.headers ? new Headers(result.init.headers) : void 0\n    };\n  }\n  return {\n    type: ResultType.data,\n    data: result\n  };\n}\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, v7_relativeSplatPath) {\n  let location = response.headers.get(\"Location\");\n  invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n  if (!ABSOLUTE_URL_REGEX.test(location)) {\n    let trimmedMatches = matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1);\n    location = normalizeTo(new URL(request.url), trimmedMatches, basename, true, location, v7_relativeSplatPath);\n    response.headers.set(\"Location\", location);\n  }\n  return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename) {\n  if (ABSOLUTE_URL_REGEX.test(location)) {\n    let normalizedLocation = location;\n    let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n    let isSameBasename = stripBasename(url.pathname, basename) != null;\n    if (url.origin === currentUrl.origin && isSameBasename) {\n      return url.pathname + url.search + url.hash;\n    }\n  }\n  return location;\n}\nfunction createClientSideRequest(history, location, signal, submission) {\n  let url = history.createURL(stripHashFromPath(location)).toString();\n  let init = {\n    signal\n  };\n  if (submission && isMutationMethod(submission.formMethod)) {\n    let {\n      formMethod,\n      formEncType\n    } = submission;\n    init.method = formMethod.toUpperCase();\n    if (formEncType === \"application/json\") {\n      init.headers = new Headers({\n        \"Content-Type\": formEncType\n      });\n      init.body = JSON.stringify(submission.json);\n    } else if (formEncType === \"text/plain\") {\n      init.body = submission.text;\n    } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n      init.body = convertFormDataToSearchParams(submission.formData);\n    } else {\n      init.body = submission.formData;\n    }\n  }\n  return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n  let searchParams = new URLSearchParams();\n  for (let [key, value] of formData.entries()) {\n    searchParams.append(key, typeof value === \"string\" ? value : value.name);\n  }\n  return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n  let formData = new FormData();\n  for (let [key, value] of searchParams.entries()) {\n    formData.append(key, value);\n  }\n  return formData;\n}\nfunction processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling) {\n  let loaderData = {};\n  let errors = null;\n  let statusCode;\n  let foundError = false;\n  let loaderHeaders = {};\n  let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : void 0;\n  matches.forEach((match) => {\n    if (!(match.route.id in results)) {\n      return;\n    }\n    let id = match.route.id;\n    let result = results[id];\n    invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n    if (isErrorResult(result)) {\n      let error = result.error;\n      if (pendingError !== void 0) {\n        error = pendingError;\n        pendingError = void 0;\n      }\n      errors = errors || {};\n      if (skipLoaderErrorBubbling) {\n        errors[id] = error;\n      } else {\n        let boundaryMatch = findNearestBoundary(matches, id);\n        if (errors[boundaryMatch.route.id] == null) {\n          errors[boundaryMatch.route.id] = error;\n        }\n      }\n      loaderData[id] = void 0;\n      if (!foundError) {\n        foundError = true;\n        statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    } else {\n      if (isDeferredResult(result)) {\n        activeDeferreds.set(id, result.deferredData);\n        loaderData[id] = result.deferredData.data;\n        if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n          statusCode = result.statusCode;\n        }\n        if (result.headers) {\n          loaderHeaders[id] = result.headers;\n        }\n      } else {\n        loaderData[id] = result.data;\n        if (result.statusCode && result.statusCode !== 200 && !foundError) {\n          statusCode = result.statusCode;\n        }\n        if (result.headers) {\n          loaderHeaders[id] = result.headers;\n        }\n      }\n    }\n  });\n  if (pendingError !== void 0 && pendingActionResult) {\n    errors = {\n      [pendingActionResult[0]]: pendingError\n    };\n    loaderData[pendingActionResult[0]] = void 0;\n  }\n  return {\n    loaderData,\n    errors,\n    statusCode: statusCode || 200,\n    loaderHeaders\n  };\n}\nfunction processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds) {\n  let {\n    loaderData,\n    errors\n  } = processRouteLoaderData(\n    matches,\n    results,\n    pendingActionResult,\n    activeDeferreds,\n    false\n    // This method is only called client side so we always want to bubble\n  );\n  revalidatingFetchers.forEach((rf) => {\n    let {\n      key,\n      match,\n      controller\n    } = rf;\n    let result = fetcherResults[key];\n    invariant(result, \"Did not find corresponding fetcher result\");\n    if (controller && controller.signal.aborted) {\n      return;\n    } else if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n      if (!(errors && errors[boundaryMatch.route.id])) {\n        errors = _extends({}, errors, {\n          [boundaryMatch.route.id]: result.error\n        });\n      }\n      state.fetchers.delete(key);\n    } else if (isRedirectResult(result)) {\n      invariant(false, \"Unhandled fetcher revalidation redirect\");\n    } else if (isDeferredResult(result)) {\n      invariant(false, \"Unhandled fetcher deferred data\");\n    } else {\n      let doneFetcher = getDoneFetcher(result.data);\n      state.fetchers.set(key, doneFetcher);\n    }\n  });\n  return {\n    loaderData,\n    errors\n  };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n  let mergedLoaderData = _extends({}, newLoaderData);\n  for (let match of matches) {\n    let id = match.route.id;\n    if (newLoaderData.hasOwnProperty(id)) {\n      if (newLoaderData[id] !== void 0) {\n        mergedLoaderData[id] = newLoaderData[id];\n      }\n    } else if (loaderData[id] !== void 0 && match.route.loader) {\n      mergedLoaderData[id] = loaderData[id];\n    }\n    if (errors && errors.hasOwnProperty(id)) {\n      break;\n    }\n  }\n  return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n  if (!pendingActionResult) {\n    return {};\n  }\n  return isErrorResult(pendingActionResult[1]) ? {\n    // Clear out prior actionData on errors\n    actionData: {}\n  } : {\n    actionData: {\n      [pendingActionResult[0]]: pendingActionResult[1].data\n    }\n  };\n}\nfunction findNearestBoundary(matches, routeId) {\n  let eligibleMatches = routeId ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1) : [...matches];\n  return eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n  let route = routes.length === 1 ? routes[0] : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n    id: \"__shim-error-route__\"\n  };\n  return {\n    matches: [{\n      params: {},\n      pathname: \"\",\n      pathnameBase: \"\",\n      route\n    }],\n    route\n  };\n}\nfunction getInternalRouterError(status, _temp5) {\n  let {\n    pathname,\n    routeId,\n    method,\n    type,\n    message\n  } = _temp5 === void 0 ? {} : _temp5;\n  let statusText = \"Unknown Server Error\";\n  let errorMessage = \"Unknown @remix-run/router error\";\n  if (status === 400) {\n    statusText = \"Bad Request\";\n    if (method && pathname && routeId) {\n      errorMessage = \"You made a \" + method + ' request to \"' + pathname + '\" but ' + ('did not provide a `loader` for route \"' + routeId + '\", ') + \"so there is no way to handle the request.\";\n    } else if (type === \"defer-action\") {\n      errorMessage = \"defer() is not supported in actions\";\n    } else if (type === \"invalid-body\") {\n      errorMessage = \"Unable to encode submission body\";\n    }\n  } else if (status === 403) {\n    statusText = \"Forbidden\";\n    errorMessage = 'Route \"' + routeId + '\" does not match URL \"' + pathname + '\"';\n  } else if (status === 404) {\n    statusText = \"Not Found\";\n    errorMessage = 'No route matches URL \"' + pathname + '\"';\n  } else if (status === 405) {\n    statusText = \"Method Not Allowed\";\n    if (method && pathname && routeId) {\n      errorMessage = \"You made a \" + method.toUpperCase() + ' request to \"' + pathname + '\" but ' + ('did not provide an `action` for route \"' + routeId + '\", ') + \"so there is no way to handle the request.\";\n    } else if (method) {\n      errorMessage = 'Invalid request method \"' + method.toUpperCase() + '\"';\n    }\n  }\n  return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\nfunction findRedirect(results) {\n  let entries = Object.entries(results);\n  for (let i = entries.length - 1; i >= 0; i--) {\n    let [key, result] = entries[i];\n    if (isRedirectResult(result)) {\n      return {\n        key,\n        result\n      };\n    }\n  }\n}\nfunction stripHashFromPath(path) {\n  let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n  return createPath(_extends({}, parsedPath, {\n    hash: \"\"\n  }));\n}\nfunction isHashChangeOnly(a, b) {\n  if (a.pathname !== b.pathname || a.search !== b.search) {\n    return false;\n  }\n  if (a.hash === \"\") {\n    return b.hash !== \"\";\n  } else if (a.hash === b.hash) {\n    return true;\n  } else if (b.hash !== \"\") {\n    return true;\n  }\n  return false;\n}\nfunction isRedirectDataStrategyResultResult(result) {\n  return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isDeferredResult(result) {\n  return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n  return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n  return (result && result.type) === ResultType.redirect;\n}\nfunction isDataWithResponseInit(value) {\n  return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\n}\nfunction isDeferredData(value) {\n  let deferred = value;\n  return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n  return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isValidMethod(method) {\n  return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n  return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveNavigationDeferredResults(matches, results, signal, currentMatches, currentLoaderData) {\n  let entries = Object.entries(results);\n  for (let index = 0; index < entries.length; index++) {\n    let [routeId, result] = entries[index];\n    let match = matches.find((m) => (m == null ? void 0 : m.route.id) === routeId);\n    if (!match) {\n      continue;\n    }\n    let currentMatch = currentMatches.find((m) => m.route.id === match.route.id);\n    let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== void 0;\n    if (isDeferredResult(result) && isRevalidatingLoader) {\n      await resolveDeferredData(result, signal, false).then((result2) => {\n        if (result2) {\n          results[routeId] = result2;\n        }\n      });\n    }\n  }\n}\nasync function resolveFetcherDeferredResults(matches, results, revalidatingFetchers) {\n  for (let index = 0; index < revalidatingFetchers.length; index++) {\n    let {\n      key,\n      routeId,\n      controller\n    } = revalidatingFetchers[index];\n    let result = results[key];\n    let match = matches.find((m) => (m == null ? void 0 : m.route.id) === routeId);\n    if (!match) {\n      continue;\n    }\n    if (isDeferredResult(result)) {\n      invariant(controller, \"Expected an AbortController for revalidating fetcher deferred result\");\n      await resolveDeferredData(result, controller.signal, true).then((result2) => {\n        if (result2) {\n          results[key] = result2;\n        }\n      });\n    }\n  }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n  if (unwrap === void 0) {\n    unwrap = false;\n  }\n  let aborted = await result.deferredData.resolveData(signal);\n  if (aborted) {\n    return;\n  }\n  if (unwrap) {\n    try {\n      return {\n        type: ResultType.data,\n        data: result.deferredData.unwrappedData\n      };\n    } catch (e) {\n      return {\n        type: ResultType.error,\n        error: e\n      };\n    }\n  }\n  return {\n    type: ResultType.data,\n    data: result.deferredData.data\n  };\n}\nfunction hasNakedIndexQuery(search) {\n  return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n  let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n  if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n    return matches[matches.length - 1];\n  }\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n  let {\n    formMethod,\n    formAction,\n    formEncType,\n    text,\n    formData,\n    json: json3\n  } = navigation;\n  if (!formMethod || !formAction || !formEncType) {\n    return;\n  }\n  if (text != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: void 0,\n      json: void 0,\n      text\n    };\n  } else if (formData != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData,\n      json: void 0,\n      text: void 0\n    };\n  } else if (json3 !== void 0) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: void 0,\n      json: json3,\n      text: void 0\n    };\n  }\n}\nfunction getLoadingNavigation(location, submission) {\n  if (submission) {\n    let navigation = {\n      state: \"loading\",\n      location,\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text\n    };\n    return navigation;\n  } else {\n    let navigation = {\n      state: \"loading\",\n      location,\n      formMethod: void 0,\n      formAction: void 0,\n      formEncType: void 0,\n      formData: void 0,\n      json: void 0,\n      text: void 0\n    };\n    return navigation;\n  }\n}\nfunction getSubmittingNavigation(location, submission) {\n  let navigation = {\n    state: \"submitting\",\n    location,\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text\n  };\n  return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n  if (submission) {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text,\n      data\n    };\n    return fetcher;\n  } else {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: void 0,\n      formAction: void 0,\n      formEncType: void 0,\n      formData: void 0,\n      json: void 0,\n      text: void 0,\n      data\n    };\n    return fetcher;\n  }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n  let fetcher = {\n    state: \"submitting\",\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text,\n    data: existingFetcher ? existingFetcher.data : void 0\n  };\n  return fetcher;\n}\nfunction getDoneFetcher(data) {\n  let fetcher = {\n    state: \"idle\",\n    formMethod: void 0,\n    formAction: void 0,\n    formEncType: void 0,\n    formData: void 0,\n    json: void 0,\n    text: void 0,\n    data\n  };\n  return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n  try {\n    let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n    if (sessionPositions) {\n      let json3 = JSON.parse(sessionPositions);\n      for (let [k, v] of Object.entries(json3 || {})) {\n        if (v && Array.isArray(v)) {\n          transitions.set(k, new Set(v || []));\n        }\n      }\n    }\n  } catch (e) {\n  }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n  if (transitions.size > 0) {\n    let json3 = {};\n    for (let [k, v] of transitions) {\n      json3[k] = [...v];\n    }\n    try {\n      _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json3));\n    } catch (error) {\n      warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n    }\n  }\n}\n\n// node_modules/react-router/dist/index.js\nfunction _extends2() {\n  _extends2 = Object.assign ? Object.assign.bind() : function(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends2.apply(this, arguments);\n}\nvar DataRouterContext = React.createContext(null);\nif (true) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\nvar DataRouterStateContext = React.createContext(null);\nif (true) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\nvar AwaitContext = React.createContext(null);\nif (true) {\n  AwaitContext.displayName = \"Await\";\n}\nvar NavigationContext = React.createContext(null);\nif (true) {\n  NavigationContext.displayName = \"Navigation\";\n}\nvar LocationContext = React.createContext(null);\nif (true) {\n  LocationContext.displayName = \"Location\";\n}\nvar RouteContext = React.createContext({\n  outlet: null,\n  matches: [],\n  isDataRoute: false\n});\nif (true) {\n  RouteContext.displayName = \"Route\";\n}\nvar RouteErrorContext = React.createContext(null);\nif (true) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\nfunction useHref(to, _temp) {\n  let {\n    relative\n  } = _temp === void 0 ? {} : _temp;\n  !useInRouterContext() ? true ? invariant(\n    false,\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    \"useHref() may be used only in the context of a <Router> component.\"\n  ) : invariant(false) : void 0;\n  let {\n    basename,\n    navigator\n  } = React.useContext(NavigationContext);\n  let {\n    hash,\n    pathname,\n    search\n  } = useResolvedPath(to, {\n    relative\n  });\n  let joinedPathname = pathname;\n  if (basename !== \"/\") {\n    joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n  return navigator.createHref({\n    pathname: joinedPathname,\n    search,\n    hash\n  });\n}\nfunction useInRouterContext() {\n  return React.useContext(LocationContext) != null;\n}\nfunction useLocation() {\n  !useInRouterContext() ? true ? invariant(\n    false,\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    \"useLocation() may be used only in the context of a <Router> component.\"\n  ) : invariant(false) : void 0;\n  return React.useContext(LocationContext).location;\n}\nfunction useNavigationType() {\n  return React.useContext(LocationContext).navigationType;\n}\nfunction useMatch(pattern) {\n  !useInRouterContext() ? true ? invariant(\n    false,\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    \"useMatch() may be used only in the context of a <Router> component.\"\n  ) : invariant(false) : void 0;\n  let {\n    pathname\n  } = useLocation();\n  return React.useMemo(() => matchPath(pattern, decodePath(pathname)), [pathname, pattern]);\n}\nvar navigateEffectWarning = \"You should call navigate() in a React.useEffect(), not when your component is first rendered.\";\nfunction useIsomorphicLayoutEffect(cb) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    React.useLayoutEffect(cb);\n  }\n}\nfunction useNavigate() {\n  let {\n    isDataRoute\n  } = React.useContext(RouteContext);\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n  !useInRouterContext() ? true ? invariant(\n    false,\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    \"useNavigate() may be used only in the context of a <Router> component.\"\n  ) : invariant(false) : void 0;\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let {\n    basename,\n    future,\n    navigator\n  } = React.useContext(NavigationContext);\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let {\n    pathname: locationPathname\n  } = useLocation();\n  let routePathnamesJson = JSON.stringify(getResolveToMatches(matches, future.v7_relativeSplatPath));\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React.useCallback(function(to, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    true ? warning(activeRef.current, navigateEffectWarning) : void 0;\n    if (!activeRef.current)\n      return;\n    if (typeof to === \"number\") {\n      navigator.go(to);\n      return;\n    }\n    let path = resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, options.relative === \"path\");\n    if (dataRouterContext == null && basename !== \"/\") {\n      path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n    }\n    (!!options.replace ? navigator.replace : navigator.push)(path, options.state, options);\n  }, [basename, navigator, routePathnamesJson, locationPathname, dataRouterContext]);\n  return navigate;\n}\nvar OutletContext = React.createContext(null);\nfunction useOutletContext() {\n  return React.useContext(OutletContext);\n}\nfunction useOutlet(context) {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return React.createElement(OutletContext.Provider, {\n      value: context\n    }, outlet);\n  }\n  return outlet;\n}\nfunction useParams() {\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? routeMatch.params : {};\n}\nfunction useResolvedPath(to, _temp2) {\n  let {\n    relative\n  } = _temp2 === void 0 ? {} : _temp2;\n  let {\n    future\n  } = React.useContext(NavigationContext);\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let {\n    pathname: locationPathname\n  } = useLocation();\n  let routePathnamesJson = JSON.stringify(getResolveToMatches(matches, future.v7_relativeSplatPath));\n  return React.useMemo(() => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname, relative === \"path\"), [to, routePathnamesJson, locationPathname, relative]);\n}\nfunction useRoutes(routes, locationArg) {\n  return useRoutesImpl(routes, locationArg);\n}\nfunction useRoutesImpl(routes, locationArg, dataRouterState, future) {\n  !useInRouterContext() ? true ? invariant(\n    false,\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    \"useRoutes() may be used only in the context of a <Router> component.\"\n  ) : invariant(false) : void 0;\n  let {\n    navigator\n  } = React.useContext(NavigationContext);\n  let {\n    matches: parentMatches\n  } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n  if (true) {\n    let parentPath = parentRoute && parentRoute.path || \"\";\n    warningOnce(parentPathname, !parentRoute || parentPath.endsWith(\"*\"), \"You rendered descendant <Routes> (or called `useRoutes()`) at \" + ('\"' + parentPathname + '\" (under <Route path=\"' + parentPath + '\">) but the ') + `parent route path has no trailing \"*\". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.\n\n` + ('Please change the parent <Route path=\"' + parentPath + '\"> to <Route ') + ('path=\"' + (parentPath === \"/\" ? \"*\" : parentPath + \"/*\") + '\">.'));\n  }\n  let locationFromContext = useLocation();\n  let location;\n  if (locationArg) {\n    var _parsedLocationArg$pa;\n    let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n    !(parentPathnameBase === \"/\" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ? true ? invariant(false, \"When overriding the location using `<Routes location>` or `useRoutes(routes, location)`, the location pathname must begin with the portion of the URL pathname that was \" + ('matched by all parent routes. The current pathname base is \"' + parentPathnameBase + '\" ') + ('but pathname \"' + parsedLocationArg.pathname + '\" was given in the `location` prop.')) : invariant(false) : void 0;\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n  let pathname = location.pathname || \"/\";\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n  let matches = matchRoutes(routes, {\n    pathname: remainingPathname\n  });\n  if (true) {\n    true ? warning(parentRoute || matches != null, 'No routes matched location \"' + location.pathname + location.search + location.hash + '\" ') : void 0;\n    true ? warning(matches == null || matches[matches.length - 1].route.element !== void 0 || matches[matches.length - 1].route.Component !== void 0 || matches[matches.length - 1].route.lazy !== void 0, 'Matched leaf route at location \"' + location.pathname + location.search + location.hash + '\" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.') : void 0;\n  }\n  let renderedMatches = _renderMatches(matches && matches.map((match) => Object.assign({}, match, {\n    params: Object.assign({}, parentParams, match.params),\n    pathname: joinPaths([\n      parentPathnameBase,\n      // Re-encode pathnames that were decoded inside matchRoutes\n      navigator.encodeLocation ? navigator.encodeLocation(match.pathname).pathname : match.pathname\n    ]),\n    pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([\n      parentPathnameBase,\n      // Re-encode pathnames that were decoded inside matchRoutes\n      navigator.encodeLocation ? navigator.encodeLocation(match.pathnameBase).pathname : match.pathnameBase\n    ])\n  })), parentMatches, dataRouterState, future);\n  if (locationArg && renderedMatches) {\n    return React.createElement(LocationContext.Provider, {\n      value: {\n        location: _extends2({\n          pathname: \"/\",\n          search: \"\",\n          hash: \"\",\n          state: null,\n          key: \"default\"\n        }, location),\n        navigationType: Action.Pop\n      }\n    }, renderedMatches);\n  }\n  return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error) ? error.status + \" \" + error.statusText : error instanceof Error ? error.message : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = {\n    padding: \"0.5rem\",\n    backgroundColor: lightgrey\n  };\n  let codeStyles = {\n    padding: \"2px 4px\",\n    backgroundColor: lightgrey\n  };\n  let devInfo = null;\n  if (true) {\n    console.error(\"Error handled by React Router default ErrorBoundary:\", error);\n    devInfo = React.createElement(React.Fragment, null, React.createElement(\"p\", null, \"💿 Hey developer 👋\"), React.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", React.createElement(\"code\", {\n      style: codeStyles\n    }, \"ErrorBoundary\"), \" or\", \" \", React.createElement(\"code\", {\n      style: codeStyles\n    }, \"errorElement\"), \" prop on your route.\"));\n  }\n  return React.createElement(React.Fragment, null, React.createElement(\"h2\", null, \"Unexpected Application Error!\"), React.createElement(\"h3\", {\n    style: {\n      fontStyle: \"italic\"\n    }\n  }, message), stack ? React.createElement(\"pre\", {\n    style: preStyles\n  }, stack) : null, devInfo);\n}\nvar defaultErrorElement = React.createElement(DefaultErrorComponent, null);\nvar RenderErrorBoundary = class extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error\n    };\n  }\n  static getDerivedStateFromError(error) {\n    return {\n      error\n    };\n  }\n  static getDerivedStateFromProps(props, state) {\n    if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation\n      };\n    }\n    return {\n      error: props.error !== void 0 ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation\n    };\n  }\n  componentDidCatch(error, errorInfo) {\n    console.error(\"React Router caught the following error during render\", error, errorInfo);\n  }\n  render() {\n    return this.state.error !== void 0 ? React.createElement(RouteContext.Provider, {\n      value: this.props.routeContext\n    }, React.createElement(RouteErrorContext.Provider, {\n      value: this.state.error,\n      children: this.props.component\n    })) : this.props.children;\n  }\n};\nfunction RenderedRoute(_ref) {\n  let {\n    routeContext,\n    match,\n    children\n  } = _ref;\n  let dataRouterContext = React.useContext(DataRouterContext);\n  if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n  return React.createElement(RouteContext.Provider, {\n    value: routeContext\n  }, children);\n}\nfunction _renderMatches(matches, parentMatches, dataRouterState, future) {\n  var _dataRouterState;\n  if (parentMatches === void 0) {\n    parentMatches = [];\n  }\n  if (dataRouterState === void 0) {\n    dataRouterState = null;\n  }\n  if (future === void 0) {\n    future = null;\n  }\n  if (matches == null) {\n    var _future;\n    if (!dataRouterState) {\n      return null;\n    }\n    if (dataRouterState.errors) {\n      matches = dataRouterState.matches;\n    } else if ((_future = future) != null && _future.v7_partialHydration && parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n      matches = dataRouterState.matches;\n    } else {\n      return null;\n    }\n  }\n  let renderedMatches = matches;\n  let errors = (_dataRouterState = dataRouterState) == null ? void 0 : _dataRouterState.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex((m) => m.route.id && (errors == null ? void 0 : errors[m.route.id]) !== void 0);\n    !(errorIndex >= 0) ? true ? invariant(false, \"Could not find a matching route for errors on route IDs: \" + Object.keys(errors).join(\",\")) : invariant(false) : void 0;\n    renderedMatches = renderedMatches.slice(0, Math.min(renderedMatches.length, errorIndex + 1));\n  }\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n      if (match.route.id) {\n        let {\n          loaderData,\n          errors: errors2\n        } = dataRouterState;\n        let needsToRunLoader = match.route.loader && loaderData[match.route.id] === void 0 && (!errors2 || errors2[match.route.id] === void 0);\n        if (match.route.lazy || needsToRunLoader) {\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    let error;\n    let shouldRenderHydrateFallback = false;\n    let errorElement = null;\n    let hydrateFallbackElement = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : void 0;\n      errorElement = match.route.errorElement || defaultErrorElement;\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\"route-fallback\", false, \"No `HydrateFallback` element provided to render during initial hydration\");\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n    let matches2 = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        children = React.createElement(match.route.Component, null);\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return React.createElement(RenderedRoute, {\n        match,\n        routeContext: {\n          outlet,\n          matches: matches2,\n          isDataRoute: dataRouterState != null\n        },\n        children\n      });\n    };\n    return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? React.createElement(RenderErrorBoundary, {\n      location: dataRouterState.location,\n      revalidation: dataRouterState.revalidation,\n      component: errorElement,\n      error,\n      children: getChildren(),\n      routeContext: {\n        outlet: null,\n        matches: matches2,\n        isDataRoute: true\n      }\n    }) : getChildren();\n  }, null);\n}\nvar DataRouterHook = function(DataRouterHook3) {\n  DataRouterHook3[\"UseBlocker\"] = \"useBlocker\";\n  DataRouterHook3[\"UseRevalidator\"] = \"useRevalidator\";\n  DataRouterHook3[\"UseNavigateStable\"] = \"useNavigate\";\n  return DataRouterHook3;\n}(DataRouterHook || {});\nvar DataRouterStateHook = function(DataRouterStateHook3) {\n  DataRouterStateHook3[\"UseBlocker\"] = \"useBlocker\";\n  DataRouterStateHook3[\"UseLoaderData\"] = \"useLoaderData\";\n  DataRouterStateHook3[\"UseActionData\"] = \"useActionData\";\n  DataRouterStateHook3[\"UseRouteError\"] = \"useRouteError\";\n  DataRouterStateHook3[\"UseNavigation\"] = \"useNavigation\";\n  DataRouterStateHook3[\"UseRouteLoaderData\"] = \"useRouteLoaderData\";\n  DataRouterStateHook3[\"UseMatches\"] = \"useMatches\";\n  DataRouterStateHook3[\"UseRevalidator\"] = \"useRevalidator\";\n  DataRouterStateHook3[\"UseNavigateStable\"] = \"useNavigate\";\n  DataRouterStateHook3[\"UseRouteId\"] = \"useRouteId\";\n  return DataRouterStateHook3;\n}(DataRouterStateHook || {});\nfunction getDataRouterConsoleError(hookName) {\n  return hookName + \" must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.\";\n}\nfunction useDataRouterContext(hookName) {\n  let ctx = React.useContext(DataRouterContext);\n  !ctx ? true ? invariant(false, getDataRouterConsoleError(hookName)) : invariant(false) : void 0;\n  return ctx;\n}\nfunction useDataRouterState(hookName) {\n  let state = React.useContext(DataRouterStateContext);\n  !state ? true ? invariant(false, getDataRouterConsoleError(hookName)) : invariant(false) : void 0;\n  return state;\n}\nfunction useRouteContext(hookName) {\n  let route = React.useContext(RouteContext);\n  !route ? true ? invariant(false, getDataRouterConsoleError(hookName)) : invariant(false) : void 0;\n  return route;\n}\nfunction useCurrentRouteId(hookName) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  !thisRoute.route.id ? true ? invariant(false, hookName + ' can only be used on routes that contain a unique \"id\"') : invariant(false) : void 0;\n  return thisRoute.route.id;\n}\nfunction useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\nfunction useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\nfunction useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(() => ({\n    revalidate: dataRouterContext.router.revalidate,\n    state: state.revalidation\n  }), [dataRouterContext.router.revalidate, state.revalidation]);\n}\nfunction useMatches() {\n  let {\n    matches,\n    loaderData\n  } = useDataRouterState(DataRouterStateHook.UseMatches);\n  return React.useMemo(() => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)), [matches, loaderData]);\n}\nfunction useLoaderData() {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\"You cannot `useLoaderData` in an errorElement (routeId: \" + routeId + \")\");\n    return void 0;\n  }\n  return state.loaderData[routeId];\n}\nfunction useRouteLoaderData(routeId) {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\nfunction useActionData() {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : void 0;\n}\nfunction useRouteError() {\n  var _state$errors;\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n  if (error !== void 0) {\n    return error;\n  }\n  return (_state$errors = state.errors) == null ? void 0 : _state$errors[routeId];\n}\nfunction useAsyncValue() {\n  let value = React.useContext(AwaitContext);\n  return value == null ? void 0 : value._data;\n}\nfunction useAsyncError() {\n  let value = React.useContext(AwaitContext);\n  return value == null ? void 0 : value._error;\n}\nvar blockerId = 0;\nfunction useBlocker(shouldBlock) {\n  let {\n    router,\n    basename\n  } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback((arg) => {\n    if (typeof shouldBlock !== \"function\") {\n      return !!shouldBlock;\n    }\n    if (basename === \"/\") {\n      return shouldBlock(arg);\n    }\n    let {\n      currentLocation,\n      nextLocation,\n      historyAction\n    } = arg;\n    return shouldBlock({\n      currentLocation: _extends2({}, currentLocation, {\n        pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n      }),\n      nextLocation: _extends2({}, nextLocation, {\n        pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n      }),\n      historyAction\n    });\n  }, [basename, shouldBlock]);\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n  return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\nfunction useNavigateStable() {\n  let {\n    router\n  } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React.useCallback(function(to, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    true ? warning(activeRef.current, navigateEffectWarning) : void 0;\n    if (!activeRef.current)\n      return;\n    if (typeof to === \"number\") {\n      router.navigate(to);\n    } else {\n      router.navigate(to, _extends2({\n        fromRouteId: id\n      }, options));\n    }\n  }, [router, id]);\n  return navigate;\n}\nvar alreadyWarned$1 = {};\nfunction warningOnce(key, cond, message) {\n  if (!cond && !alreadyWarned$1[key]) {\n    alreadyWarned$1[key] = true;\n    true ? warning(false, message) : void 0;\n  }\n}\nvar alreadyWarned = {};\nfunction warnOnce(key, message) {\n  if (!alreadyWarned[message]) {\n    alreadyWarned[message] = true;\n    console.warn(message);\n  }\n}\nvar logDeprecation = (flag, msg, link) => warnOnce(flag, \"⚠️ React Router Future Flag Warning: \" + msg + \". \" + (\"You can use the `\" + flag + \"` future flag to opt-in early. \") + (\"For more information, see \" + link + \".\"));\nfunction logV6DeprecationWarnings(renderFuture, routerFuture) {\n  if (!(renderFuture != null && renderFuture.v7_startTransition)) {\n    logDeprecation(\"v7_startTransition\", \"React Router will begin wrapping state updates in `React.startTransition` in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\");\n  }\n  if (!(renderFuture != null && renderFuture.v7_relativeSplatPath) && (!routerFuture || !routerFuture.v7_relativeSplatPath)) {\n    logDeprecation(\"v7_relativeSplatPath\", \"Relative route resolution within Splat routes is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\");\n  }\n  if (routerFuture) {\n    if (!routerFuture.v7_fetcherPersist) {\n      logDeprecation(\"v7_fetcherPersist\", \"The persistence behavior of fetchers is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\");\n    }\n    if (!routerFuture.v7_normalizeFormMethod) {\n      logDeprecation(\"v7_normalizeFormMethod\", \"Casing of `formMethod` fields is being normalized to uppercase in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\");\n    }\n    if (!routerFuture.v7_partialHydration) {\n      logDeprecation(\"v7_partialHydration\", \"`RouterProvider` hydration behavior is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\");\n    }\n    if (!routerFuture.v7_skipActionErrorRevalidation) {\n      logDeprecation(\"v7_skipActionErrorRevalidation\", \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\", \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\");\n    }\n  }\n}\nvar START_TRANSITION = \"startTransition\";\nvar startTransitionImpl = React[START_TRANSITION];\nfunction MemoryRouter(_ref3) {\n  let {\n    basename,\n    children,\n    initialEntries,\n    initialIndex,\n    future\n  } = _ref3;\n  let historyRef = React.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true\n    });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location\n  });\n  let {\n    v7_startTransition\n  } = future || {};\n  let setState = React.useCallback((newState) => {\n    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);\n  }, [setStateImpl, v7_startTransition]);\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n  return React.createElement(Router, {\n    basename,\n    children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history,\n    future\n  });\n}\nfunction Navigate(_ref4) {\n  let {\n    to,\n    replace: replace2,\n    state,\n    relative\n  } = _ref4;\n  !useInRouterContext() ? true ? invariant(\n    false,\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    \"<Navigate> may be used only in the context of a <Router> component.\"\n  ) : invariant(false) : void 0;\n  let {\n    future,\n    static: isStatic\n  } = React.useContext(NavigationContext);\n  true ? warning(!isStatic, \"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.\") : void 0;\n  let {\n    matches\n  } = React.useContext(RouteContext);\n  let {\n    pathname: locationPathname\n  } = useLocation();\n  let navigate = useNavigate();\n  let path = resolveTo(to, getResolveToMatches(matches, future.v7_relativeSplatPath), locationPathname, relative === \"path\");\n  let jsonPath = JSON.stringify(path);\n  React.useEffect(() => navigate(JSON.parse(jsonPath), {\n    replace: replace2,\n    state,\n    relative\n  }), [navigate, jsonPath, relative, replace2, state]);\n  return null;\n}\nfunction Outlet(props) {\n  return useOutlet(props.context);\n}\nfunction Route(_props) {\n  true ? invariant(false, \"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.\") : invariant(false);\n}\nfunction Router(_ref5) {\n  let {\n    basename: basenameProp = \"/\",\n    children = null,\n    location: locationProp,\n    navigationType = Action.Pop,\n    navigator,\n    static: staticProp = false,\n    future\n  } = _ref5;\n  !!useInRouterContext() ? true ? invariant(false, \"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.\") : invariant(false) : void 0;\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(() => ({\n    basename,\n    navigator,\n    static: staticProp,\n    future: _extends2({\n      v7_relativeSplatPath: false\n    }, future)\n  }), [basename, future, navigator, staticProp]);\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\"\n  } = locationProp;\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n    if (trailingPathname == null) {\n      return null;\n    }\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key\n      },\n      navigationType\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n  true ? warning(locationContext != null, '<Router basename=\"' + basename + '\"> is not able to match the URL ' + ('\"' + pathname + search + hash + '\" because it does not start with the ') + \"basename, so the <Router> won't render anything.\") : void 0;\n  if (locationContext == null) {\n    return null;\n  }\n  return React.createElement(NavigationContext.Provider, {\n    value: navigationContext\n  }, React.createElement(LocationContext.Provider, {\n    children,\n    value: locationContext\n  }));\n}\nfunction Routes(_ref6) {\n  let {\n    children,\n    location\n  } = _ref6;\n  return useRoutes(createRoutesFromChildren(children), location);\n}\nfunction Await(_ref7) {\n  let {\n    children,\n    errorElement,\n    resolve\n  } = _ref7;\n  return React.createElement(AwaitErrorBoundary, {\n    resolve,\n    errorElement\n  }, React.createElement(ResolveAwait, null, children));\n}\nvar AwaitRenderStatus = function(AwaitRenderStatus2) {\n  AwaitRenderStatus2[AwaitRenderStatus2[\"pending\"] = 0] = \"pending\";\n  AwaitRenderStatus2[AwaitRenderStatus2[\"success\"] = 1] = \"success\";\n  AwaitRenderStatus2[AwaitRenderStatus2[\"error\"] = 2] = \"error\";\n  return AwaitRenderStatus2;\n}(AwaitRenderStatus || {});\nvar neverSettledPromise = new Promise(() => {\n});\nvar AwaitErrorBoundary = class extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      error: null\n    };\n  }\n  static getDerivedStateFromError(error) {\n    return {\n      error\n    };\n  }\n  componentDidCatch(error, errorInfo) {\n    console.error(\"<Await> caught the following error during render\", error, errorInfo);\n  }\n  render() {\n    let {\n      children,\n      errorElement,\n      resolve\n    } = this.props;\n    let promise = null;\n    let status = AwaitRenderStatus.pending;\n    if (!(resolve instanceof Promise)) {\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", {\n        get: () => true\n      });\n      Object.defineProperty(promise, \"_data\", {\n        get: () => resolve\n      });\n    } else if (this.state.error) {\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {\n      });\n      Object.defineProperty(promise, \"_tracked\", {\n        get: () => true\n      });\n      Object.defineProperty(promise, \"_error\", {\n        get: () => renderError\n      });\n    } else if (resolve._tracked) {\n      promise = resolve;\n      status = \"_error\" in promise ? AwaitRenderStatus.error : \"_data\" in promise ? AwaitRenderStatus.success : AwaitRenderStatus.pending;\n    } else {\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", {\n        get: () => true\n      });\n      promise = resolve.then((data) => Object.defineProperty(resolve, \"_data\", {\n        get: () => data\n      }), (error) => Object.defineProperty(resolve, \"_error\", {\n        get: () => error\n      }));\n    }\n    if (status === AwaitRenderStatus.error && promise._error instanceof AbortedDeferredError) {\n      throw neverSettledPromise;\n    }\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      throw promise._error;\n    }\n    if (status === AwaitRenderStatus.error) {\n      return React.createElement(AwaitContext.Provider, {\n        value: promise,\n        children: errorElement\n      });\n    }\n    if (status === AwaitRenderStatus.success) {\n      return React.createElement(AwaitContext.Provider, {\n        value: promise,\n        children\n      });\n    }\n    throw promise;\n  }\n};\nfunction ResolveAwait(_ref8) {\n  let {\n    children\n  } = _ref8;\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return React.createElement(React.Fragment, null, toRender);\n}\nfunction createRoutesFromChildren(children, parentPath) {\n  if (parentPath === void 0) {\n    parentPath = [];\n  }\n  let routes = [];\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      return;\n    }\n    let treePath = [...parentPath, index];\n    if (element.type === React.Fragment) {\n      routes.push.apply(routes, createRoutesFromChildren(element.props.children, treePath));\n      return;\n    }\n    !(element.type === Route) ? true ? invariant(false, \"[\" + (typeof element.type === \"string\" ? element.type : element.type.name) + \"] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>\") : invariant(false) : void 0;\n    !(!element.props.index || !element.props.children) ? true ? invariant(false, \"An index route cannot have child routes.\") : invariant(false) : void 0;\n    let route = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary: element.props.ErrorBoundary != null || element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy\n    };\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(element.props.children, treePath);\n    }\n    routes.push(route);\n  });\n  return routes;\n}\nfunction renderMatches(matches) {\n  return _renderMatches(matches);\n}\nfunction mapRouteProperties(route) {\n  let updates = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null\n  };\n  if (route.Component) {\n    if (true) {\n      if (route.element) {\n        true ? warning(false, \"You should not include both `Component` and `element` on your route - `Component` will be used.\") : void 0;\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: void 0\n    });\n  }\n  if (route.HydrateFallback) {\n    if (true) {\n      if (route.hydrateFallbackElement) {\n        true ? warning(false, \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used.\") : void 0;\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: void 0\n    });\n  }\n  if (route.ErrorBoundary) {\n    if (true) {\n      if (route.errorElement) {\n        true ? warning(false, \"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used.\") : void 0;\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: void 0\n    });\n  }\n  return updates;\n}\nfunction createMemoryRouter(routes, opts) {\n  return createRouter({\n    basename: opts == null ? void 0 : opts.basename,\n    future: _extends2({}, opts == null ? void 0 : opts.future, {\n      v7_prependBasename: true\n    }),\n    history: createMemoryHistory({\n      initialEntries: opts == null ? void 0 : opts.initialEntries,\n      initialIndex: opts == null ? void 0 : opts.initialIndex\n    }),\n    hydrationData: opts == null ? void 0 : opts.hydrationData,\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts == null ? void 0 : opts.dataStrategy,\n    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation\n  }).initialize();\n}\n\n// node_modules/react-router-dom/dist/index.js\nfunction _extends3() {\n  _extends3 = Object.assign ? Object.assign.bind() : function(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends3.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null)\n    return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0)\n      continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nvar defaultMethod = \"get\";\nvar defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n  return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n  return event.button === 0 && // Ignore everything but left clicks\n  (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n  !isModifiedEvent(event);\n}\nfunction createSearchParams(init) {\n  if (init === void 0) {\n    init = \"\";\n  }\n  return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo2, key) => {\n    let value = init[key];\n    return memo2.concat(Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]);\n  }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n  let searchParams = createSearchParams(locationSearch);\n  if (defaultSearchParams) {\n    defaultSearchParams.forEach((_, key) => {\n      if (!searchParams.has(key)) {\n        defaultSearchParams.getAll(key).forEach((value) => {\n          searchParams.append(key, value);\n        });\n      }\n    });\n  }\n  return searchParams;\n}\nvar _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n  if (_formDataSupportsSubmitter === null) {\n    try {\n      new FormData(\n        document.createElement(\"form\"),\n        // @ts-expect-error if FormData supports the submitter parameter, this will throw\n        0\n      );\n      _formDataSupportsSubmitter = false;\n    } catch (e) {\n      _formDataSupportsSubmitter = true;\n    }\n  }\n  return _formDataSupportsSubmitter;\n}\nvar supportedFormEncTypes = /* @__PURE__ */ new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n  if (encType != null && !supportedFormEncTypes.has(encType)) {\n    true ? warning(false, '\"' + encType + '\" is not a valid `encType` for `<Form>`/`<fetcher.Form>` ' + ('and will default to \"' + defaultEncType + '\"')) : void 0;\n    return null;\n  }\n  return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n  let method;\n  let action;\n  let encType;\n  let formData;\n  let body;\n  if (isFormElement(target)) {\n    let attr = target.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n    formData = new FormData(target);\n  } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n    let form = target.form;\n    if (form == null) {\n      throw new Error('Cannot submit a <button> or <input type=\"submit\"> without a <form>');\n    }\n    let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n    formData = new FormData(form, target);\n    if (!isFormDataSubmitterSupported()) {\n      let {\n        name,\n        type,\n        value\n      } = target;\n      if (type === \"image\") {\n        let prefix = name ? name + \".\" : \"\";\n        formData.append(prefix + \"x\", \"0\");\n        formData.append(prefix + \"y\", \"0\");\n      } else if (name) {\n        formData.append(name, value);\n      }\n    }\n  } else if (isHtmlElement(target)) {\n    throw new Error('Cannot submit element that is not <form>, <button>, or <input type=\"submit|image\">');\n  } else {\n    method = defaultMethod;\n    action = null;\n    encType = defaultEncType;\n    body = target;\n  }\n  if (formData && encType === \"text/plain\") {\n    body = formData;\n    formData = void 0;\n  }\n  return {\n    action,\n    method: method.toLowerCase(),\n    encType,\n    formData,\n    body\n  };\n}\nvar _excluded = [\"onClick\", \"relative\", \"reloadDocument\", \"replace\", \"state\", \"target\", \"to\", \"preventScrollReset\", \"viewTransition\"];\nvar _excluded2 = [\"aria-current\", \"caseSensitive\", \"className\", \"end\", \"style\", \"to\", \"viewTransition\", \"children\"];\nvar _excluded3 = [\"fetcherKey\", \"navigate\", \"reloadDocument\", \"replace\", \"state\", \"method\", \"action\", \"onSubmit\", \"relative\", \"preventScrollReset\", \"viewTransition\"];\nvar REACT_ROUTER_VERSION = \"6\";\ntry {\n  window.__reactRouterVersion = REACT_ROUTER_VERSION;\n} catch (e) {\n}\nfunction createBrowserRouter(routes, opts) {\n  return createRouter({\n    basename: opts == null ? void 0 : opts.basename,\n    future: _extends3({}, opts == null ? void 0 : opts.future, {\n      v7_prependBasename: true\n    }),\n    history: createBrowserHistory({\n      window: opts == null ? void 0 : opts.window\n    }),\n    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts == null ? void 0 : opts.dataStrategy,\n    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,\n    window: opts == null ? void 0 : opts.window\n  }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n  return createRouter({\n    basename: opts == null ? void 0 : opts.basename,\n    future: _extends3({}, opts == null ? void 0 : opts.future, {\n      v7_prependBasename: true\n    }),\n    history: createHashHistory({\n      window: opts == null ? void 0 : opts.window\n    }),\n    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts == null ? void 0 : opts.dataStrategy,\n    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,\n    window: opts == null ? void 0 : opts.window\n  }).initialize();\n}\nfunction parseHydrationData() {\n  var _window;\n  let state = (_window = window) == null ? void 0 : _window.__staticRouterHydrationData;\n  if (state && state.errors) {\n    state = _extends3({}, state, {\n      errors: deserializeErrors(state.errors)\n    });\n  }\n  return state;\n}\nfunction deserializeErrors(errors) {\n  if (!errors)\n    return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponseImpl(val.status, val.statusText, val.data, val.internal === true);\n    } else if (val && val.__type === \"Error\") {\n      if (val.__subType) {\n        let ErrorConstructor = window[val.__subType];\n        if (typeof ErrorConstructor === \"function\") {\n          try {\n            let error = new ErrorConstructor(val.message);\n            error.stack = \"\";\n            serialized[key] = error;\n          } catch (e) {\n          }\n        }\n      }\n      if (serialized[key] == null) {\n        let error = new Error(val.message);\n        error.stack = \"\";\n        serialized[key] = error;\n      }\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\nvar ViewTransitionContext = React2.createContext({\n  isTransitioning: false\n});\nif (true) {\n  ViewTransitionContext.displayName = \"ViewTransition\";\n}\nvar FetchersContext = React2.createContext(/* @__PURE__ */ new Map());\nif (true) {\n  FetchersContext.displayName = \"Fetchers\";\n}\nvar START_TRANSITION2 = \"startTransition\";\nvar startTransitionImpl2 = React2[START_TRANSITION2];\nvar FLUSH_SYNC = \"flushSync\";\nvar flushSyncImpl = ReactDOM[FLUSH_SYNC];\nvar USE_ID = \"useId\";\nvar useIdImpl = React2[USE_ID];\nfunction startTransitionSafe(cb) {\n  if (startTransitionImpl2) {\n    startTransitionImpl2(cb);\n  } else {\n    cb();\n  }\n}\nfunction flushSyncSafe(cb) {\n  if (flushSyncImpl) {\n    flushSyncImpl(cb);\n  } else {\n    cb();\n  }\n}\nvar Deferred = class {\n  constructor() {\n    this.status = \"pending\";\n    this.promise = new Promise((resolve, reject) => {\n      this.resolve = (value) => {\n        if (this.status === \"pending\") {\n          this.status = \"resolved\";\n          resolve(value);\n        }\n      };\n      this.reject = (reason) => {\n        if (this.status === \"pending\") {\n          this.status = \"rejected\";\n          reject(reason);\n        }\n      };\n    });\n  }\n};\nfunction RouterProvider(_ref) {\n  let {\n    fallbackElement,\n    router,\n    future\n  } = _ref;\n  let [state, setStateImpl] = React2.useState(router.state);\n  let [pendingState, setPendingState] = React2.useState();\n  let [vtContext, setVtContext] = React2.useState({\n    isTransitioning: false\n  });\n  let [renderDfd, setRenderDfd] = React2.useState();\n  let [transition, setTransition] = React2.useState();\n  let [interruption, setInterruption] = React2.useState();\n  let fetcherData = React2.useRef(/* @__PURE__ */ new Map());\n  let {\n    v7_startTransition\n  } = future || {};\n  let optInStartTransition = React2.useCallback((cb) => {\n    if (v7_startTransition) {\n      startTransitionSafe(cb);\n    } else {\n      cb();\n    }\n  }, [v7_startTransition]);\n  let setState = React2.useCallback((newState, _ref2) => {\n    let {\n      deletedFetchers,\n      flushSync,\n      viewTransitionOpts\n    } = _ref2;\n    deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n    newState.fetchers.forEach((fetcher, key) => {\n      if (fetcher.data !== void 0) {\n        fetcherData.current.set(key, fetcher.data);\n      }\n    });\n    let isViewTransitionUnavailable = router.window == null || router.window.document == null || typeof router.window.document.startViewTransition !== \"function\";\n    if (!viewTransitionOpts || isViewTransitionUnavailable) {\n      if (flushSync) {\n        flushSyncSafe(() => setStateImpl(newState));\n      } else {\n        optInStartTransition(() => setStateImpl(newState));\n      }\n      return;\n    }\n    if (flushSync) {\n      flushSyncSafe(() => {\n        if (transition) {\n          renderDfd && renderDfd.resolve();\n          transition.skipTransition();\n        }\n        setVtContext({\n          isTransitioning: true,\n          flushSync: true,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation\n        });\n      });\n      let t = router.window.document.startViewTransition(() => {\n        flushSyncSafe(() => setStateImpl(newState));\n      });\n      t.finished.finally(() => {\n        flushSyncSafe(() => {\n          setRenderDfd(void 0);\n          setTransition(void 0);\n          setPendingState(void 0);\n          setVtContext({\n            isTransitioning: false\n          });\n        });\n      });\n      flushSyncSafe(() => setTransition(t));\n      return;\n    }\n    if (transition) {\n      renderDfd && renderDfd.resolve();\n      transition.skipTransition();\n      setInterruption({\n        state: newState,\n        currentLocation: viewTransitionOpts.currentLocation,\n        nextLocation: viewTransitionOpts.nextLocation\n      });\n    } else {\n      setPendingState(newState);\n      setVtContext({\n        isTransitioning: true,\n        flushSync: false,\n        currentLocation: viewTransitionOpts.currentLocation,\n        nextLocation: viewTransitionOpts.nextLocation\n      });\n    }\n  }, [router.window, transition, renderDfd, fetcherData, optInStartTransition]);\n  React2.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n  React2.useEffect(() => {\n    if (vtContext.isTransitioning && !vtContext.flushSync) {\n      setRenderDfd(new Deferred());\n    }\n  }, [vtContext]);\n  React2.useEffect(() => {\n    if (renderDfd && pendingState && router.window) {\n      let newState = pendingState;\n      let renderPromise = renderDfd.promise;\n      let transition2 = router.window.document.startViewTransition(async () => {\n        optInStartTransition(() => setStateImpl(newState));\n        await renderPromise;\n      });\n      transition2.finished.finally(() => {\n        setRenderDfd(void 0);\n        setTransition(void 0);\n        setPendingState(void 0);\n        setVtContext({\n          isTransitioning: false\n        });\n      });\n      setTransition(transition2);\n    }\n  }, [optInStartTransition, pendingState, renderDfd, router.window]);\n  React2.useEffect(() => {\n    if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n      renderDfd.resolve();\n    }\n  }, [renderDfd, transition, state.location, pendingState]);\n  React2.useEffect(() => {\n    if (!vtContext.isTransitioning && interruption) {\n      setPendingState(interruption.state);\n      setVtContext({\n        isTransitioning: true,\n        flushSync: false,\n        currentLocation: interruption.currentLocation,\n        nextLocation: interruption.nextLocation\n      });\n      setInterruption(void 0);\n    }\n  }, [vtContext.isTransitioning, interruption]);\n  React2.useEffect(() => {\n    true ? warning(fallbackElement == null || !router.future.v7_partialHydration, \"`<RouterProvider fallbackElement>` is deprecated when using `v7_partialHydration`, use a `HydrateFallback` component instead\") : void 0;\n  }, []);\n  let navigator = React2.useMemo(() => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state2, opts) => router.navigate(to, {\n        state: state2,\n        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n      }),\n      replace: (to, state2, opts) => router.navigate(to, {\n        replace: true,\n        state: state2,\n        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset\n      })\n    };\n  }, [router]);\n  let basename = router.basename || \"/\";\n  let dataRouterContext = React2.useMemo(() => ({\n    router,\n    navigator,\n    static: false,\n    basename\n  }), [router, navigator, basename]);\n  let routerFuture = React2.useMemo(() => ({\n    v7_relativeSplatPath: router.future.v7_relativeSplatPath\n  }), [router.future.v7_relativeSplatPath]);\n  React2.useEffect(() => logV6DeprecationWarnings(future, router.future), [future, router.future]);\n  return React2.createElement(React2.Fragment, null, React2.createElement(DataRouterContext.Provider, {\n    value: dataRouterContext\n  }, React2.createElement(DataRouterStateContext.Provider, {\n    value: state\n  }, React2.createElement(FetchersContext.Provider, {\n    value: fetcherData.current\n  }, React2.createElement(ViewTransitionContext.Provider, {\n    value: vtContext\n  }, React2.createElement(Router, {\n    basename,\n    location: state.location,\n    navigationType: state.historyAction,\n    navigator,\n    future: routerFuture\n  }, state.initialized || router.future.v7_partialHydration ? React2.createElement(MemoizedDataRoutes, {\n    routes: router.routes,\n    future: router.future,\n    state\n  }) : fallbackElement))))), null);\n}\nvar MemoizedDataRoutes = React2.memo(DataRoutes);\nfunction DataRoutes(_ref3) {\n  let {\n    routes,\n    future,\n    state\n  } = _ref3;\n  return useRoutesImpl(routes, void 0, state, future);\n}\nfunction BrowserRouter(_ref4) {\n  let {\n    basename,\n    children,\n    future,\n    window: window2\n  } = _ref4;\n  let historyRef = React2.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createBrowserHistory({\n      window: window2,\n      v5Compat: true\n    });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React2.useState({\n    action: history.action,\n    location: history.location\n  });\n  let {\n    v7_startTransition\n  } = future || {};\n  let setState = React2.useCallback((newState) => {\n    v7_startTransition && startTransitionImpl2 ? startTransitionImpl2(() => setStateImpl(newState)) : setStateImpl(newState);\n  }, [setStateImpl, v7_startTransition]);\n  React2.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  React2.useEffect(() => logV6DeprecationWarnings(future), [future]);\n  return React2.createElement(Router, {\n    basename,\n    children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history,\n    future\n  });\n}\nfunction HashRouter(_ref5) {\n  let {\n    basename,\n    children,\n    future,\n    window: window2\n  } = _ref5;\n  let historyRef = React2.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createHashHistory({\n      window: window2,\n      v5Compat: true\n    });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React2.useState({\n    action: history.action,\n    location: history.location\n  });\n  let {\n    v7_startTransition\n  } = future || {};\n  let setState = React2.useCallback((newState) => {\n    v7_startTransition && startTransitionImpl2 ? startTransitionImpl2(() => setStateImpl(newState)) : setStateImpl(newState);\n  }, [setStateImpl, v7_startTransition]);\n  React2.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  React2.useEffect(() => logV6DeprecationWarnings(future), [future]);\n  return React2.createElement(Router, {\n    basename,\n    children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history,\n    future\n  });\n}\nfunction HistoryRouter(_ref6) {\n  let {\n    basename,\n    children,\n    future,\n    history\n  } = _ref6;\n  let [state, setStateImpl] = React2.useState({\n    action: history.action,\n    location: history.location\n  });\n  let {\n    v7_startTransition\n  } = future || {};\n  let setState = React2.useCallback((newState) => {\n    v7_startTransition && startTransitionImpl2 ? startTransitionImpl2(() => setStateImpl(newState)) : setStateImpl(newState);\n  }, [setStateImpl, v7_startTransition]);\n  React2.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  React2.useEffect(() => logV6DeprecationWarnings(future), [future]);\n  return React2.createElement(Router, {\n    basename,\n    children,\n    location: state.location,\n    navigationType: state.action,\n    navigator: history,\n    future\n  });\n}\nif (true) {\n  HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\nvar isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nvar ABSOLUTE_URL_REGEX2 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar Link = React2.forwardRef(function LinkWithRef(_ref7, ref) {\n  let {\n    onClick,\n    relative,\n    reloadDocument,\n    replace: replace2,\n    state,\n    target,\n    to,\n    preventScrollReset,\n    viewTransition\n  } = _ref7, rest = _objectWithoutPropertiesLoose(_ref7, _excluded);\n  let {\n    basename\n  } = React2.useContext(NavigationContext);\n  let absoluteHref;\n  let isExternal = false;\n  if (typeof to === \"string\" && ABSOLUTE_URL_REGEX2.test(to)) {\n    absoluteHref = to;\n    if (isBrowser) {\n      try {\n        let currentUrl = new URL(window.location.href);\n        let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n        let path = stripBasename(targetUrl.pathname, basename);\n        if (targetUrl.origin === currentUrl.origin && path != null) {\n          to = path + targetUrl.search + targetUrl.hash;\n        } else {\n          isExternal = true;\n        }\n      } catch (e) {\n        true ? warning(false, '<Link to=\"' + to + '\"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.') : void 0;\n      }\n    }\n  }\n  let href = useHref(to, {\n    relative\n  });\n  let internalOnClick = useLinkClickHandler(to, {\n    replace: replace2,\n    state,\n    target,\n    preventScrollReset,\n    relative,\n    viewTransition\n  });\n  function handleClick(event) {\n    if (onClick)\n      onClick(event);\n    if (!event.defaultPrevented) {\n      internalOnClick(event);\n    }\n  }\n  return (\n    // eslint-disable-next-line jsx-a11y/anchor-has-content\n    React2.createElement(\"a\", _extends3({}, rest, {\n      href: absoluteHref || href,\n      onClick: isExternal || reloadDocument ? onClick : handleClick,\n      ref,\n      target\n    }))\n  );\n});\nif (true) {\n  Link.displayName = \"Link\";\n}\nvar NavLink = React2.forwardRef(function NavLinkWithRef(_ref8, ref) {\n  let {\n    \"aria-current\": ariaCurrentProp = \"page\",\n    caseSensitive = false,\n    className: classNameProp = \"\",\n    end = false,\n    style: styleProp,\n    to,\n    viewTransition,\n    children\n  } = _ref8, rest = _objectWithoutPropertiesLoose(_ref8, _excluded2);\n  let path = useResolvedPath(to, {\n    relative: rest.relative\n  });\n  let location = useLocation();\n  let routerState = React2.useContext(DataRouterStateContext);\n  let {\n    navigator,\n    basename\n  } = React2.useContext(NavigationContext);\n  let isTransitioning = routerState != null && // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  useViewTransitionState(path) && viewTransition === true;\n  let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n  let locationPathname = location.pathname;\n  let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n  if (!caseSensitive) {\n    locationPathname = locationPathname.toLowerCase();\n    nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n    toPathname = toPathname.toLowerCase();\n  }\n  if (nextLocationPathname && basename) {\n    nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n  }\n  const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n  let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n  let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n  let renderProps = {\n    isActive,\n    isPending,\n    isTransitioning\n  };\n  let ariaCurrent = isActive ? ariaCurrentProp : void 0;\n  let className;\n  if (typeof classNameProp === \"function\") {\n    className = classNameProp(renderProps);\n  } else {\n    className = [classNameProp, isActive ? \"active\" : null, isPending ? \"pending\" : null, isTransitioning ? \"transitioning\" : null].filter(Boolean).join(\" \");\n  }\n  let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n  return React2.createElement(Link, _extends3({}, rest, {\n    \"aria-current\": ariaCurrent,\n    className,\n    ref,\n    style,\n    to,\n    viewTransition\n  }), typeof children === \"function\" ? children(renderProps) : children);\n});\nif (true) {\n  NavLink.displayName = \"NavLink\";\n}\nvar Form = React2.forwardRef((_ref9, forwardedRef) => {\n  let {\n    fetcherKey,\n    navigate,\n    reloadDocument,\n    replace: replace2,\n    state,\n    method = defaultMethod,\n    action,\n    onSubmit,\n    relative,\n    preventScrollReset,\n    viewTransition\n  } = _ref9, props = _objectWithoutPropertiesLoose(_ref9, _excluded3);\n  let submit = useSubmit();\n  let formAction = useFormAction(action, {\n    relative\n  });\n  let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n  let submitHandler = (event) => {\n    onSubmit && onSubmit(event);\n    if (event.defaultPrevented)\n      return;\n    event.preventDefault();\n    let submitter = event.nativeEvent.submitter;\n    let submitMethod = (submitter == null ? void 0 : submitter.getAttribute(\"formmethod\")) || method;\n    submit(submitter || event.currentTarget, {\n      fetcherKey,\n      method: submitMethod,\n      navigate,\n      replace: replace2,\n      state,\n      relative,\n      preventScrollReset,\n      viewTransition\n    });\n  };\n  return React2.createElement(\"form\", _extends3({\n    ref: forwardedRef,\n    method: formMethod,\n    action: formAction,\n    onSubmit: reloadDocument ? onSubmit : submitHandler\n  }, props));\n});\nif (true) {\n  Form.displayName = \"Form\";\n}\nfunction ScrollRestoration(_ref10) {\n  let {\n    getKey,\n    storageKey\n  } = _ref10;\n  useScrollRestoration({\n    getKey,\n    storageKey\n  });\n  return null;\n}\nif (true) {\n  ScrollRestoration.displayName = \"ScrollRestoration\";\n}\nvar DataRouterHook2;\n(function(DataRouterHook3) {\n  DataRouterHook3[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n  DataRouterHook3[\"UseSubmit\"] = \"useSubmit\";\n  DataRouterHook3[\"UseSubmitFetcher\"] = \"useSubmitFetcher\";\n  DataRouterHook3[\"UseFetcher\"] = \"useFetcher\";\n  DataRouterHook3[\"useViewTransitionState\"] = \"useViewTransitionState\";\n})(DataRouterHook2 || (DataRouterHook2 = {}));\nvar DataRouterStateHook2;\n(function(DataRouterStateHook3) {\n  DataRouterStateHook3[\"UseFetcher\"] = \"useFetcher\";\n  DataRouterStateHook3[\"UseFetchers\"] = \"useFetchers\";\n  DataRouterStateHook3[\"UseScrollRestoration\"] = \"useScrollRestoration\";\n})(DataRouterStateHook2 || (DataRouterStateHook2 = {}));\nfunction getDataRouterConsoleError2(hookName) {\n  return hookName + \" must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.\";\n}\nfunction useDataRouterContext2(hookName) {\n  let ctx = React2.useContext(DataRouterContext);\n  !ctx ? true ? invariant(false, getDataRouterConsoleError2(hookName)) : invariant(false) : void 0;\n  return ctx;\n}\nfunction useDataRouterState2(hookName) {\n  let state = React2.useContext(DataRouterStateContext);\n  !state ? true ? invariant(false, getDataRouterConsoleError2(hookName)) : invariant(false) : void 0;\n  return state;\n}\nfunction useLinkClickHandler(to, _temp) {\n  let {\n    target,\n    replace: replaceProp,\n    state,\n    preventScrollReset,\n    relative,\n    viewTransition\n  } = _temp === void 0 ? {} : _temp;\n  let navigate = useNavigate();\n  let location = useLocation();\n  let path = useResolvedPath(to, {\n    relative\n  });\n  return React2.useCallback((event) => {\n    if (shouldProcessLinkClick(event, target)) {\n      event.preventDefault();\n      let replace2 = replaceProp !== void 0 ? replaceProp : createPath(location) === createPath(path);\n      navigate(to, {\n        replace: replace2,\n        state,\n        preventScrollReset,\n        relative,\n        viewTransition\n      });\n    }\n  }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative, viewTransition]);\n}\nfunction useSearchParams(defaultInit) {\n  true ? warning(typeof URLSearchParams !== \"undefined\", \"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.\") : void 0;\n  let defaultSearchParamsRef = React2.useRef(createSearchParams(defaultInit));\n  let hasSetSearchParamsRef = React2.useRef(false);\n  let location = useLocation();\n  let searchParams = React2.useMemo(() => (\n    // Only merge in the defaults if we haven't yet called setSearchParams.\n    // Once we call that we want those to take precedence, otherwise you can't\n    // remove a param with setSearchParams({}) if it has an initial value\n    getSearchParamsForLocation(location.search, hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current)\n  ), [location.search]);\n  let navigate = useNavigate();\n  let setSearchParams = React2.useCallback((nextInit, navigateOptions) => {\n    const newSearchParams = createSearchParams(typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit);\n    hasSetSearchParamsRef.current = true;\n    navigate(\"?\" + newSearchParams, navigateOptions);\n  }, [navigate, searchParams]);\n  return [searchParams, setSearchParams];\n}\nfunction validateClientSideSubmission() {\n  if (typeof document === \"undefined\") {\n    throw new Error(\"You are calling submit during the server render. Try calling submit within a `useEffect` or callback instead.\");\n  }\n}\nvar fetcherId = 0;\nvar getUniqueFetcherId = () => \"__\" + String(++fetcherId) + \"__\";\nfunction useSubmit() {\n  let {\n    router\n  } = useDataRouterContext2(DataRouterHook2.UseSubmit);\n  let {\n    basename\n  } = React2.useContext(NavigationContext);\n  let currentRouteId = useRouteId();\n  return React2.useCallback(function(target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    validateClientSideSubmission();\n    let {\n      action,\n      method,\n      encType,\n      formData,\n      body\n    } = getFormSubmissionInfo(target, basename);\n    if (options.navigate === false) {\n      let key = options.fetcherKey || getUniqueFetcherId();\n      router.fetch(key, currentRouteId, options.action || action, {\n        preventScrollReset: options.preventScrollReset,\n        formData,\n        body,\n        formMethod: options.method || method,\n        formEncType: options.encType || encType,\n        flushSync: options.flushSync\n      });\n    } else {\n      router.navigate(options.action || action, {\n        preventScrollReset: options.preventScrollReset,\n        formData,\n        body,\n        formMethod: options.method || method,\n        formEncType: options.encType || encType,\n        replace: options.replace,\n        state: options.state,\n        fromRouteId: currentRouteId,\n        flushSync: options.flushSync,\n        viewTransition: options.viewTransition\n      });\n    }\n  }, [router, basename, currentRouteId]);\n}\nfunction useFormAction(action, _temp2) {\n  let {\n    relative\n  } = _temp2 === void 0 ? {} : _temp2;\n  let {\n    basename\n  } = React2.useContext(NavigationContext);\n  let routeContext = React2.useContext(RouteContext);\n  !routeContext ? true ? invariant(false, \"useFormAction must be used inside a RouteContext\") : invariant(false) : void 0;\n  let [match] = routeContext.matches.slice(-1);\n  let path = _extends3({}, useResolvedPath(action ? action : \".\", {\n    relative\n  }));\n  let location = useLocation();\n  if (action == null) {\n    path.search = location.search;\n    let params = new URLSearchParams(path.search);\n    let indexValues = params.getAll(\"index\");\n    let hasNakedIndexParam = indexValues.some((v) => v === \"\");\n    if (hasNakedIndexParam) {\n      params.delete(\"index\");\n      indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? \"?\" + qs : \"\";\n    }\n  }\n  if ((!action || action === \".\") && match.route.index) {\n    path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n  }\n  if (basename !== \"/\") {\n    path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n  return createPath(path);\n}\nfunction useFetcher(_temp3) {\n  var _route$matches;\n  let {\n    key\n  } = _temp3 === void 0 ? {} : _temp3;\n  let {\n    router\n  } = useDataRouterContext2(DataRouterHook2.UseFetcher);\n  let state = useDataRouterState2(DataRouterStateHook2.UseFetcher);\n  let fetcherData = React2.useContext(FetchersContext);\n  let route = React2.useContext(RouteContext);\n  let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id;\n  !fetcherData ? true ? invariant(false, \"useFetcher must be used inside a FetchersContext\") : invariant(false) : void 0;\n  !route ? true ? invariant(false, \"useFetcher must be used inside a RouteContext\") : invariant(false) : void 0;\n  !(routeId != null) ? true ? invariant(false, 'useFetcher can only be used on routes that contain a unique \"id\"') : invariant(false) : void 0;\n  let defaultKey = useIdImpl ? useIdImpl() : \"\";\n  let [fetcherKey, setFetcherKey] = React2.useState(key || defaultKey);\n  if (key && key !== fetcherKey) {\n    setFetcherKey(key);\n  } else if (!fetcherKey) {\n    setFetcherKey(getUniqueFetcherId());\n  }\n  React2.useEffect(() => {\n    router.getFetcher(fetcherKey);\n    return () => {\n      router.deleteFetcher(fetcherKey);\n    };\n  }, [router, fetcherKey]);\n  let load = React2.useCallback((href, opts) => {\n    !routeId ? true ? invariant(false, \"No routeId available for fetcher.load()\") : invariant(false) : void 0;\n    router.fetch(fetcherKey, routeId, href, opts);\n  }, [fetcherKey, routeId, router]);\n  let submitImpl = useSubmit();\n  let submit = React2.useCallback((target, opts) => {\n    submitImpl(target, _extends3({}, opts, {\n      navigate: false,\n      fetcherKey\n    }));\n  }, [fetcherKey, submitImpl]);\n  let FetcherForm = React2.useMemo(() => {\n    let FetcherForm2 = React2.forwardRef((props, ref) => {\n      return React2.createElement(Form, _extends3({}, props, {\n        navigate: false,\n        fetcherKey,\n        ref\n      }));\n    });\n    if (true) {\n      FetcherForm2.displayName = \"fetcher.Form\";\n    }\n    return FetcherForm2;\n  }, [fetcherKey]);\n  let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n  let data = fetcherData.get(fetcherKey);\n  let fetcherWithComponents = React2.useMemo(() => _extends3({\n    Form: FetcherForm,\n    submit,\n    load\n  }, fetcher, {\n    data\n  }), [FetcherForm, submit, load, fetcher, data]);\n  return fetcherWithComponents;\n}\nfunction useFetchers() {\n  let state = useDataRouterState2(DataRouterStateHook2.UseFetchers);\n  return Array.from(state.fetchers.entries()).map((_ref11) => {\n    let [key, fetcher] = _ref11;\n    return _extends3({}, fetcher, {\n      key\n    });\n  });\n}\nvar SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nvar savedScrollPositions = {};\nfunction useScrollRestoration(_temp4) {\n  let {\n    getKey,\n    storageKey\n  } = _temp4 === void 0 ? {} : _temp4;\n  let {\n    router\n  } = useDataRouterContext2(DataRouterHook2.UseScrollRestoration);\n  let {\n    restoreScrollPosition,\n    preventScrollReset\n  } = useDataRouterState2(DataRouterStateHook2.UseScrollRestoration);\n  let {\n    basename\n  } = React2.useContext(NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  let navigation = useNavigation();\n  React2.useEffect(() => {\n    window.history.scrollRestoration = \"manual\";\n    return () => {\n      window.history.scrollRestoration = \"auto\";\n    };\n  }, []);\n  usePageHide(React2.useCallback(() => {\n    if (navigation.state === \"idle\") {\n      let key = (getKey ? getKey(location, matches) : null) || location.key;\n      savedScrollPositions[key] = window.scrollY;\n    }\n    try {\n      sessionStorage.setItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY, JSON.stringify(savedScrollPositions));\n    } catch (error) {\n      true ? warning(false, \"Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (\" + error + \").\") : void 0;\n    }\n    window.history.scrollRestoration = \"auto\";\n  }, [storageKey, getKey, navigation.state, location, matches]));\n  if (typeof document !== \"undefined\") {\n    React2.useLayoutEffect(() => {\n      try {\n        let sessionPositions = sessionStorage.getItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY);\n        if (sessionPositions) {\n          savedScrollPositions = JSON.parse(sessionPositions);\n        }\n      } catch (e) {\n      }\n    }, [storageKey]);\n    React2.useLayoutEffect(() => {\n      let getKeyWithoutBasename = getKey && basename !== \"/\" ? (location2, matches2) => getKey(\n        // Strip the basename to match useLocation()\n        _extends3({}, location2, {\n          pathname: stripBasename(location2.pathname, basename) || location2.pathname\n        }),\n        matches2\n      ) : getKey;\n      let disableScrollRestoration = router == null ? void 0 : router.enableScrollRestoration(savedScrollPositions, () => window.scrollY, getKeyWithoutBasename);\n      return () => disableScrollRestoration && disableScrollRestoration();\n    }, [router, basename, getKey]);\n    React2.useLayoutEffect(() => {\n      if (restoreScrollPosition === false) {\n        return;\n      }\n      if (typeof restoreScrollPosition === \"number\") {\n        window.scrollTo(0, restoreScrollPosition);\n        return;\n      }\n      if (location.hash) {\n        let el = document.getElementById(decodeURIComponent(location.hash.slice(1)));\n        if (el) {\n          el.scrollIntoView();\n          return;\n        }\n      }\n      if (preventScrollReset === true) {\n        return;\n      }\n      window.scrollTo(0, 0);\n    }, [location, restoreScrollPosition, preventScrollReset]);\n  }\n}\nfunction useBeforeUnload(callback, options) {\n  let {\n    capture\n  } = options || {};\n  React2.useEffect(() => {\n    let opts = capture != null ? {\n      capture\n    } : void 0;\n    window.addEventListener(\"beforeunload\", callback, opts);\n    return () => {\n      window.removeEventListener(\"beforeunload\", callback, opts);\n    };\n  }, [callback, capture]);\n}\nfunction usePageHide(callback, options) {\n  let {\n    capture\n  } = options || {};\n  React2.useEffect(() => {\n    let opts = capture != null ? {\n      capture\n    } : void 0;\n    window.addEventListener(\"pagehide\", callback, opts);\n    return () => {\n      window.removeEventListener(\"pagehide\", callback, opts);\n    };\n  }, [callback, capture]);\n}\nfunction usePrompt(_ref12) {\n  let {\n    when,\n    message\n  } = _ref12;\n  let blocker = useBlocker(when);\n  React2.useEffect(() => {\n    if (blocker.state === \"blocked\") {\n      let proceed = window.confirm(message);\n      if (proceed) {\n        setTimeout(blocker.proceed, 0);\n      } else {\n        blocker.reset();\n      }\n    }\n  }, [blocker, message]);\n  React2.useEffect(() => {\n    if (blocker.state === \"blocked\" && !when) {\n      blocker.reset();\n    }\n  }, [blocker, when]);\n}\nfunction useViewTransitionState(to, opts) {\n  if (opts === void 0) {\n    opts = {};\n  }\n  let vtContext = React2.useContext(ViewTransitionContext);\n  !(vtContext != null) ? true ? invariant(false, \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  Did you accidentally import `RouterProvider` from `react-router`?\") : invariant(false) : void 0;\n  let {\n    basename\n  } = useDataRouterContext2(DataRouterHook2.useViewTransitionState);\n  let path = useResolvedPath(to, {\n    relative: opts.relative\n  });\n  if (!vtContext.isTransitioning) {\n    return false;\n  }\n  let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n  let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n  return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\nexport {\n  AbortedDeferredError,\n  Await,\n  BrowserRouter,\n  Form,\n  HashRouter,\n  Link,\n  MemoryRouter,\n  NavLink,\n  Navigate,\n  Action as NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  ScrollRestoration,\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  ErrorResponseImpl as UNSAFE_ErrorResponseImpl,\n  FetchersContext as UNSAFE_FetchersContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  ViewTransitionContext as UNSAFE_ViewTransitionContext,\n  useRouteId as UNSAFE_useRouteId,\n  useScrollRestoration as UNSAFE_useScrollRestoration,\n  createBrowserRouter,\n  createHashRouter,\n  createMemoryRouter,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  createSearchParams,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  renderMatches,\n  replace,\n  resolvePath,\n  HistoryRouter as unstable_HistoryRouter,\n  usePrompt as unstable_usePrompt,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBeforeUnload,\n  useBlocker,\n  useFetcher,\n  useFetchers,\n  useFormAction,\n  useHref,\n  useInRouterContext,\n  useLinkClickHandler,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n  useSearchParams,\n  useSubmit,\n  useViewTransitionState\n};\n/*! Bundled license information:\n\n@remix-run/router/dist/router.js:\n  (**\n   * @remix-run/router v1.21.0\n   *\n   * Copyright (c) Remix Software Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE.md file in the root directory of this source tree.\n   *\n   * @license MIT\n   *)\n\nreact-router/dist/index.js:\n  (**\n   * React Router v6.28.0\n   *\n   * Copyright (c) Remix Software Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE.md file in the root directory of this source tree.\n   *\n   * @license MIT\n   *)\n\nreact-router-dom/dist/index.js:\n  (**\n   * React Router DOM v6.28.0\n   *\n   * Copyright (c) Remix Software Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE.md file in the root directory of this source tree.\n   *\n   * @license MIT\n   *)\n*/\n//# sourceMappingURL=react-router-dom.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/react.js",
    "content": "import {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport default require_react();\n//# sourceMappingURL=react.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/read-contract-EXVZZYXE.js",
    "content": "import {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  readContract\n};\n//# sourceMappingURL=read-contract-EXVZZYXE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/resolveImplementation-EUNLHKQW.js",
    "content": "import {\n  eth_getStorageAt\n} from \"./chunk-HL2TAEA2.js\";\nimport {\n  getBytecode\n} from \"./chunk-PB7CMXGP.js\";\nimport \"./chunk-NPXNISXJ.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport {\n  isAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/utils/bytecode/extractMnimalProxyImplementationAddress.js\nfunction extractMinimalProxyImplementationAddress(bytecode) {\n  if (!bytecode.startsWith(\"0x\")) {\n    bytecode = `0x${bytecode}`;\n  }\n  if (bytecode.startsWith(\"0x363d3d373d3d3d363d73\")) {\n    const implementationAddress = bytecode.slice(22, 62);\n    return `0x${implementationAddress}`;\n  }\n  if (bytecode.startsWith(\"0x36603057343d5230\")) {\n    const implementationAddress = bytecode.slice(122, 122 + 40);\n    return `0x${implementationAddress}`;\n  }\n  if (bytecode.startsWith(\"0x3d3d3d3d363d3d37363d73\")) {\n    const implementationAddress = bytecode.slice(24, 24 + 40);\n    return `0x${implementationAddress}`;\n  }\n  if (bytecode.startsWith(\"0x366000600037611000600036600073\")) {\n    const implementationAddress = bytecode.slice(32, 32 + 40);\n    return `0x${implementationAddress}`;\n  }\n  if (bytecode.startsWith(\"0x36600080376020600036600073\")) {\n    const implementationAddress = bytecode.slice(28, 28 + 40);\n    return `0x${implementationAddress}`;\n  }\n  if (bytecode.startsWith(\"0x365f5f375f5f365f73\")) {\n    const implementationAddress = bytecode.slice(20, 60);\n    return `0x${implementationAddress}`;\n  }\n  return void 0;\n}\n\n// node_modules/thirdweb/dist/esm/utils/bytecode/resolveImplementation.js\nvar AddressZero = \"0x0000000000000000000000000000000000000000\";\nvar ZERO_BYTES32 = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nasync function resolveImplementation(contract) {\n  const [originalBytecode, beacon] = await Promise.all([\n    getBytecode(contract),\n    getBeaconFromStorageSlot(contract)\n  ]);\n  const minimalProxyImplementationAddress = extractMinimalProxyImplementationAddress(originalBytecode);\n  if (minimalProxyImplementationAddress) {\n    return {\n      address: minimalProxyImplementationAddress,\n      bytecode: await getBytecode({\n        ...contract,\n        address: minimalProxyImplementationAddress\n      })\n    };\n  }\n  let implementationAddress;\n  if (beacon && beacon !== AddressZero) {\n    contract = { ...contract, address: beacon };\n    implementationAddress = await getImplementationFromContractCall(contract);\n  } else {\n    implementationAddress = await getImplementationFromStorageSlot(contract);\n  }\n  if (implementationAddress && isAddress(implementationAddress) && implementationAddress !== AddressZero) {\n    const implementationBytecode = await getBytecode({\n      ...contract,\n      address: implementationAddress\n    });\n    if (implementationBytecode === \"0x\") {\n      return {\n        address: contract.address,\n        bytecode: originalBytecode\n      };\n    }\n    return {\n      address: implementationAddress,\n      bytecode: implementationBytecode\n    };\n  }\n  return { address: contract.address, bytecode: originalBytecode };\n}\nasync function getBeaconFromStorageSlot(contract) {\n  const rpcRequest = getRpcClient({\n    client: contract.client,\n    chain: contract.chain\n  });\n  try {\n    const proxyStorage = await eth_getStorageAt(rpcRequest, {\n      address: contract.address,\n      position: \"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50\"\n    });\n    return `0x${proxyStorage.slice(-40)}`;\n  } catch {\n    return void 0;\n  }\n}\nasync function getImplementationFromStorageSlot(contract) {\n  const rpcRequest = getRpcClient({\n    client: contract.client,\n    chain: contract.chain\n  });\n  try {\n    const proxyStoragePromises = [\n      eth_getStorageAt(rpcRequest, {\n        address: contract.address,\n        position: \"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\"\n      }),\n      eth_getStorageAt(rpcRequest, {\n        address: contract.address,\n        position: (\n          // keccak256(\"matic.network.proxy.implementation\") - used in polygon USDT proxy: https://polygonscan.com/address/0xc2132d05d31c914a87c6611c10748aeb04b58e8f#code\n          \"0xbaab7dbf64751104133af04abc7d9979f0fda3b059a322a8333f533d3f32bf7f\"\n        )\n      }),\n      eth_getStorageAt(rpcRequest, {\n        address: contract.address,\n        position: (\n          // keccak256(\"org.zeppelinos.proxy.implementation\") - e.g. base USDC proxy: https://basescan.org/address/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913#code\n          \"0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3\"\n        )\n      })\n    ];\n    const proxyStorages = await Promise.all(proxyStoragePromises);\n    const proxyStorage = proxyStorages.find((storage) => storage !== ZERO_BYTES32);\n    return proxyStorage ? `0x${proxyStorage.slice(-40)}` : AddressZero;\n  } catch {\n    return void 0;\n  }\n}\nvar UPGRADEABLE_PROXY_ABI = {\n  type: \"function\",\n  name: \"implementation\",\n  inputs: [],\n  outputs: [\n    {\n      type: \"address\",\n      name: \"\",\n      internalType: \"address\"\n    }\n  ],\n  stateMutability: \"view\"\n};\nasync function getImplementationFromContractCall(contract) {\n  try {\n    return await readContract({ contract, method: UPGRADEABLE_PROXY_ABI });\n  } catch {\n    return void 0;\n  }\n}\nexport {\n  resolveImplementation\n};\n//# sourceMappingURL=resolveImplementation-EUNLHKQW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/rpc-TW3OP7F4.js",
    "content": "import {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getRpcClient\n};\n//# sourceMappingURL=rpc-TW3OP7F4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/secp256k1-AHVFPDVA.js",
    "content": "import {\n  encodeToCurve,\n  hashToCurve,\n  schnorr,\n  secp256k1\n} from \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  encodeToCurve,\n  hashToCurve,\n  schnorr,\n  secp256k1\n};\n//# sourceMappingURL=secp256k1-AHVFPDVA.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/send-eip712-transaction-GJNL63UQ.js",
    "content": "import {\n  getZkGasFees,\n  populateEip712Transaction,\n  sendEip712Transaction,\n  signEip712Transaction\n} from \"./chunk-5EFACFVF.js\";\nimport \"./chunk-MWAIX6LF.js\";\nimport \"./chunk-JZC47WAY.js\";\nimport \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-7QDK5KLB.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-4BCIASJM.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  getZkGasFees,\n  populateEip712Transaction,\n  sendEip712Transaction,\n  signEip712Transaction\n};\n//# sourceMappingURL=send-eip712-transaction-GJNL63UQ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/send-gasless-transaction-VPJQYCQ5.js",
    "content": "import {\n  addTransactionToStore\n} from \"./chunk-3DBHE3NE.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/transaction/actions/gasless/send-gasless-transaction.js\nasync function sendGaslessTransaction({ account, transaction, serializableTransaction, gasless }) {\n  if (serializableTransaction.value && serializableTransaction.value > 0n) {\n    throw new Error(\"Gasless transactions cannot have a value\");\n  }\n  let result;\n  if (gasless.provider === \"biconomy\") {\n    const { relayBiconomyTransaction } = await import(\"./biconomy-PIJEZ3DY.js\");\n    result = await relayBiconomyTransaction({\n      account,\n      transaction,\n      serializableTransaction,\n      gasless\n    });\n  }\n  if (gasless.provider === \"openzeppelin\") {\n    const { relayOpenZeppelinTransaction } = await import(\"./openzeppelin-3CQYP2BQ.js\");\n    result = await relayOpenZeppelinTransaction({\n      account,\n      transaction,\n      serializableTransaction,\n      gasless\n    });\n  }\n  if (gasless.provider === \"engine\") {\n    const { relayEngineTransaction } = await import(\"./engine-L3LTYQXR.js\");\n    result = await relayEngineTransaction({\n      account,\n      transaction,\n      serializableTransaction,\n      gasless\n    });\n  }\n  if (!result) {\n    throw new Error(\"Unsupported gasless provider\");\n  }\n  addTransactionToStore({\n    address: account.address,\n    transactionHash: result.transactionHash,\n    chainId: transaction.chain.id\n  });\n  return result;\n}\nexport {\n  sendGaslessTransaction\n};\n//# sourceMappingURL=send-gasless-transaction-VPJQYCQ5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/send-transaction-3VCDCFKW.js",
    "content": "import {\n  sendTransaction\n} from \"./chunk-JTR2PIFP.js\";\nimport \"./chunk-JZC47WAY.js\";\nimport \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-7QDK5KLB.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-3DBHE3NE.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  sendTransaction\n};\n//# sourceMappingURL=send-transaction-3VCDCFKW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/session-proposal-FKZO7EJB.js",
    "content": "import {\n  disconnectWalletConnectSession,\n  getSessions,\n  saveSession\n} from \"./chunk-YG7T4W43.js\";\nimport \"./chunk-R554PO5S.js\";\nimport \"./chunk-5THTWD2M.js\";\nimport \"./chunk-EHYTL2NA.js\";\nimport \"./chunk-XB34LHR5.js\";\nimport \"./chunk-G26WKBGM.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-CYVKJMZE.js\";\nimport \"./chunk-JTR2PIFP.js\";\nimport \"./chunk-JZC47WAY.js\";\nimport \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-7QDK5KLB.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-3DBHE3NE.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/session-proposal.js\nasync function onSessionProposal(options) {\n  var _a, _b;\n  const { wallet, walletConnectClient, event, chains, onConnect } = options;\n  const account = wallet.getAccount();\n  if (!account) {\n    throw new Error(\"No account connected to provided wallet\");\n  }\n  const origin = (_b = (_a = event.verifyContext) == null ? void 0 : _a.verified) == null ? void 0 : _b.origin;\n  if (origin) {\n    await disconnectExistingSessions({ origin, walletConnectClient });\n  }\n  const session = await acceptSessionProposal({\n    account,\n    walletConnectClient,\n    sessionProposal: event,\n    chains\n  });\n  await saveSession(session);\n  wallet.subscribe(\"disconnect\", () => {\n    disconnectWalletConnectSession({ session, walletConnectClient });\n  });\n  onConnect == null ? void 0 : onConnect(session);\n}\nasync function disconnectExistingSessions({ walletConnectClient, origin }) {\n  const sessions = await getSessions();\n  for (const session of sessions) {\n    if (session.origin === origin) {\n      await disconnectWalletConnectSession({ session, walletConnectClient });\n    }\n  }\n}\nasync function acceptSessionProposal({ account, walletConnectClient, sessionProposal, chains }) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\n  if (!((_a = sessionProposal.params.requiredNamespaces) == null ? void 0 : _a.eip155) && !((_b = sessionProposal.params.optionalNamespaces) == null ? void 0 : _b.eip155)) {\n    throw new Error(\"No EIP155 namespace found in Wallet Connect session proposal\");\n  }\n  const namespaces = {\n    chains: [\n      ...Array.from(/* @__PURE__ */ new Set([\n        ...((_e = (_d = (_c = sessionProposal.params.requiredNamespaces) == null ? void 0 : _c.eip155) == null ? void 0 : _d.chains) == null ? void 0 : _e.map((chain) => `${chain}:${account.address}`)) ?? [],\n        ...((_h = (_g = (_f = sessionProposal.params.optionalNamespaces) == null ? void 0 : _f.eip155) == null ? void 0 : _g.chains) == null ? void 0 : _h.map((chain) => `${chain}:${account.address}`)) ?? [],\n        ...(chains == null ? void 0 : chains.map((chain) => `eip155:${chain.id}:${account.address}`)) ?? []\n      ]))\n    ],\n    methods: [\n      ...((_j = (_i = sessionProposal.params.requiredNamespaces) == null ? void 0 : _i.eip155) == null ? void 0 : _j.methods) ?? [],\n      ...((_l = (_k = sessionProposal.params.optionalNamespaces) == null ? void 0 : _k.eip155) == null ? void 0 : _l.methods) ?? []\n    ],\n    events: [\n      ...((_n = (_m = sessionProposal.params.requiredNamespaces) == null ? void 0 : _m.eip155) == null ? void 0 : _n.events) ?? [],\n      ...((_p = (_o = sessionProposal.params.optionalNamespaces) == null ? void 0 : _o.eip155) == null ? void 0 : _p.events) ?? []\n    ]\n  };\n  const approval = await walletConnectClient.approve({\n    id: sessionProposal.id,\n    namespaces: {\n      eip155: {\n        accounts: namespaces.chains,\n        methods: namespaces.methods,\n        events: namespaces.events\n      }\n    }\n  });\n  const session = await approval.acknowledged();\n  return {\n    topic: session.topic,\n    origin: ((_r = (_q = sessionProposal.verifyContext) == null ? void 0 : _q.verified) == null ? void 0 : _r.origin) || \"Unknown origin\"\n  };\n}\nexport {\n  acceptSessionProposal,\n  disconnectExistingSessions,\n  onSessionProposal\n};\n//# sourceMappingURL=session-proposal-FKZO7EJB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/session-request-E5B34J42.js",
    "content": "import {\n  handleSendRawTransactionRequest,\n  handleSendTransactionRequest,\n  handleSignRequest,\n  handleSignTransactionRequest,\n  handleSignTypedDataRequest,\n  parseEip155ChainId\n} from \"./chunk-5THTWD2M.js\";\nimport \"./chunk-JTR2PIFP.js\";\nimport \"./chunk-JZC47WAY.js\";\nimport \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-7QDK5KLB.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-3DBHE3NE.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/wallet-connect/receiver/session-request.js\nasync function fulfillRequest(options) {\n  const { wallet, walletConnectClient, thirdwebClient, event: { topic, id, params: { chainId: rawChainId, request } }, handlers } = options;\n  const account = wallet.getAccount();\n  if (!account) {\n    throw new Error(\"No account connected to provided wallet\");\n  }\n  let result;\n  try {\n    switch (request.method) {\n      case \"personal_sign\": {\n        if (handlers == null ? void 0 : handlers.personal_sign) {\n          result = await handlers.personal_sign({\n            account,\n            params: request.params\n          });\n        } else {\n          result = await handleSignRequest({\n            account,\n            params: request.params\n          });\n        }\n        break;\n      }\n      case \"eth_sign\": {\n        if (handlers == null ? void 0 : handlers.eth_sign) {\n          result = await handlers.eth_sign({\n            account,\n            params: request.params\n          });\n        } else {\n          result = await handleSignRequest({\n            account,\n            params: request.params\n          });\n        }\n        break;\n      }\n      case \"eth_signTypedData\": {\n        if (handlers == null ? void 0 : handlers.eth_signTypedData) {\n          result = await handlers.eth_signTypedData({\n            account,\n            params: request.params\n          });\n        } else {\n          result = await handleSignTypedDataRequest({\n            account,\n            params: request.params\n          });\n        }\n        break;\n      }\n      case \"eth_signTypedData_v4\": {\n        if (handlers == null ? void 0 : handlers.eth_signTypedData_v4) {\n          result = await handlers.eth_signTypedData_v4({\n            account,\n            params: request.params\n          });\n        } else {\n          result = await handleSignTypedDataRequest({\n            account,\n            params: request.params\n          });\n        }\n        break;\n      }\n      case \"eth_signTransaction\": {\n        if (handlers == null ? void 0 : handlers.eth_signTransaction) {\n          result = await handlers.eth_signTransaction({\n            account,\n            params: request.params\n          });\n        } else {\n          result = await handleSignTransactionRequest({\n            account,\n            params: request.params\n          });\n        }\n        break;\n      }\n      case \"eth_sendTransaction\": {\n        const chainId = parseEip155ChainId(rawChainId);\n        if (handlers == null ? void 0 : handlers.eth_sendTransaction) {\n          result = await handlers.eth_sendTransaction({\n            account,\n            chainId,\n            params: request.params\n          });\n        } else {\n          result = await handleSendTransactionRequest({\n            account,\n            chainId,\n            thirdwebClient,\n            params: request.params\n          });\n        }\n        break;\n      }\n      case \"eth_sendRawTransaction\": {\n        const chainId = parseEip155ChainId(rawChainId);\n        if (handlers == null ? void 0 : handlers.eth_sendRawTransaction) {\n          result = await handlers.eth_sendRawTransaction({\n            account,\n            chainId,\n            params: request.params\n          });\n        } else {\n          result = await handleSendRawTransactionRequest({\n            account,\n            chainId,\n            params: request.params\n          });\n        }\n        break;\n      }\n      case \"wallet_addEthereumChain\": {\n        if (handlers == null ? void 0 : handlers.wallet_addEthereumChain) {\n          result = await handlers.wallet_addEthereumChain({\n            wallet,\n            params: request.params\n          });\n        } else {\n          throw new Error(\"Unsupported request method: wallet_addEthereumChain\");\n        }\n        break;\n      }\n      case \"wallet_switchEthereumChain\": {\n        if (handlers == null ? void 0 : handlers.wallet_switchEthereumChain) {\n          result = await handlers.wallet_switchEthereumChain({\n            wallet,\n            params: request.params\n          });\n        } else {\n          const { handleSwitchChain } = await import(\"./switch-chain-UAQT4AB6.js\");\n          result = await handleSwitchChain({\n            wallet,\n            params: request.params\n          });\n        }\n        break;\n      }\n      default: {\n        const potentialHandler = handlers == null ? void 0 : handlers[request.method];\n        if (potentialHandler) {\n          result = await potentialHandler({\n            account,\n            chainId: parseEip155ChainId(rawChainId),\n            params: request.params\n          });\n        } else {\n          throw new Error(`Unsupported request method: ${request.method}`);\n        }\n      }\n    }\n  } catch (error) {\n    result = {\n      code: typeof error === \"object\" && error !== null && \"code\" in error ? error.code : 500,\n      message: typeof error === \"object\" && error !== null && \"message\" in error ? error.message : \"Unknown error\"\n    };\n  }\n  walletConnectClient.respond({\n    topic,\n    response: {\n      id,\n      jsonrpc: \"2.0\",\n      result\n    }\n  });\n}\nexport {\n  fulfillRequest\n};\n//# sourceMappingURL=session-request-E5B34J42.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/setApprovalForAll-WRU2AIHP.js",
    "content": "import {\n  once,\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc1155/__generated__/IERC1155/write/setApprovalForAll.js\nvar FN_SELECTOR = \"0xa22cb465\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"_operator\"\n  },\n  {\n    type: \"bool\",\n    name: \"_approved\"\n  }\n];\nvar FN_OUTPUTS = [];\nfunction isSetApprovalForAllSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction encodeSetApprovalForAllParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.operator, options.approved]);\n}\nfunction encodeSetApprovalForAll(options) {\n  return FN_SELECTOR + encodeSetApprovalForAllParams(options).slice(2);\n}\nfunction setApprovalForAll(options) {\n  const asyncOptions = once(async () => {\n    return \"asyncParams\" in options ? await options.asyncParams() : options;\n  });\n  return prepareContractCall({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: async () => {\n      const resolvedOptions = await asyncOptions();\n      return [resolvedOptions.operator, resolvedOptions.approved];\n    },\n    value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.value;\n    },\n    accessList: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.accessList;\n    },\n    gas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gas;\n    },\n    gasPrice: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gasPrice;\n    },\n    maxFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxFeePerGas;\n    },\n    maxPriorityFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxPriorityFeePerGas;\n    },\n    nonce: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.nonce;\n    },\n    extraGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.extraGas;\n    },\n    erc20Value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.erc20Value;\n    }\n  });\n}\nexport {\n  FN_SELECTOR,\n  encodeSetApprovalForAll,\n  encodeSetApprovalForAllParams,\n  isSetApprovalForAllSupported,\n  setApprovalForAll\n};\n//# sourceMappingURL=setApprovalForAll-WRU2AIHP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/setApprovalForAll-YKTONSHG.js",
    "content": "import {\n  once,\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport {\n  detectMethod\n} from \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/extensions/erc721/__generated__/IERC721A/write/setApprovalForAll.js\nvar FN_SELECTOR = \"0xa22cb465\";\nvar FN_INPUTS = [\n  {\n    type: \"address\",\n    name: \"operator\"\n  },\n  {\n    type: \"bool\",\n    name: \"_approved\"\n  }\n];\nvar FN_OUTPUTS = [];\nfunction isSetApprovalForAllSupported(availableSelectors) {\n  return detectMethod({\n    availableSelectors,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS]\n  });\n}\nfunction encodeSetApprovalForAllParams(options) {\n  return encodeAbiParameters(FN_INPUTS, [options.operator, options.approved]);\n}\nfunction encodeSetApprovalForAll(options) {\n  return FN_SELECTOR + encodeSetApprovalForAllParams(options).slice(2);\n}\nfunction setApprovalForAll(options) {\n  const asyncOptions = once(async () => {\n    return \"asyncParams\" in options ? await options.asyncParams() : options;\n  });\n  return prepareContractCall({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: async () => {\n      const resolvedOptions = await asyncOptions();\n      return [resolvedOptions.operator, resolvedOptions.approved];\n    },\n    value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.value;\n    },\n    accessList: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.accessList;\n    },\n    gas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gas;\n    },\n    gasPrice: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gasPrice;\n    },\n    maxFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxFeePerGas;\n    },\n    maxPriorityFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxPriorityFeePerGas;\n    },\n    nonce: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.nonce;\n    },\n    extraGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.extraGas;\n    },\n    erc20Value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.erc20Value;\n    }\n  });\n}\nexport {\n  FN_SELECTOR,\n  encodeSetApprovalForAll,\n  encodeSetApprovalForAllParams,\n  isSetApprovalForAllSupported,\n  setApprovalForAll\n};\n//# sourceMappingURL=setApprovalForAll-YKTONSHG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/sign-login-payload-EEOP3RDN.js",
    "content": "import {\n  signLoginPayload\n} from \"./chunk-GHAZ34ED.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  signLoginPayload\n};\n//# sourceMappingURL=sign-login-payload-EEOP3RDN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/smart-7AYCEGLU.js",
    "content": "import {\n  connectSmartWallet,\n  disconnectSmartWallet,\n  isSmartWallet\n} from \"./chunk-F2BEZVSV.js\";\nimport \"./chunk-NKFQ2LZT.js\";\nimport \"./chunk-FNI7M3UI.js\";\nimport \"./chunk-Q3TN3POE.js\";\nimport \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-5EFACFVF.js\";\nimport \"./chunk-PB7CMXGP.js\";\nimport \"./chunk-DYKFWRMQ.js\";\nimport \"./chunk-TTOANXGP.js\";\nimport \"./chunk-AWMNEQRO.js\";\nimport \"./chunk-6XF6HOWC.js\";\nimport \"./chunk-MWAIX6LF.js\";\nimport \"./chunk-JZC47WAY.js\";\nimport \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-7QDK5KLB.js\";\nimport \"./chunk-UY2SRO54.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-NPXNISXJ.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-4BCIASJM.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  connectSmartWallet,\n  disconnectSmartWallet,\n  isSmartWallet\n};\n//# sourceMappingURL=smart-7AYCEGLU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/smart-GOSZ6KLE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/smart/index.js\nvar wallet = {\n  id: \"smart\",\n  name: \"SmartWallet\",\n  homepage: \"https://thirdweb.com\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=smart-GOSZ6KLE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/smart-wallet-5WA47S2O.js",
    "content": "import {\n  smartWallet\n} from \"./chunk-2HYPHUAF.js\";\nimport \"./chunk-FNI7M3UI.js\";\nimport \"./chunk-Q3TN3POE.js\";\nimport \"./chunk-CLN3QXW2.js\";\nimport \"./chunk-N24CESYN.js\";\nimport \"./chunk-PB7CMXGP.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport \"./chunk-NPXNISXJ.js\";\nimport \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  smartWallet\n};\n//# sourceMappingURL=smart-wallet-5WA47S2O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/smart-wallet-capabilities-TZBEJHWD.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js\nfunction smartWalletGetCapabilities(args) {\n  const { wallet } = args;\n  const chain = wallet.getChain();\n  if (chain === void 0) {\n    return {\n      message: `Can't get capabilities, no active chain found for wallet: ${wallet.id}`\n    };\n  }\n  const account = wallet.getAccount();\n  const config = wallet.getConfig() ?? {};\n  return {\n    [chain.id]: {\n      paymasterService: {\n        supported: \"sponsorGas\" in config ? config.sponsorGas : false\n      },\n      atomicBatch: {\n        supported: (account == null ? void 0 : account.sendBatchTransaction) !== void 0\n      }\n    }\n  };\n}\nexport {\n  smartWalletGetCapabilities\n};\n//# sourceMappingURL=smart-wallet-capabilities-TZBEJHWD.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/so.onekey.app-3NGOLXP4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/so.onekey.app.wallet/index.js\nvar wallet = {\n  id: \"so.onekey.app.wallet\",\n  name: \"OneKey\",\n  homepage: \"https://onekey.so\",\n  image_id: \"0720d396-1d61-4985-e240-3194484f3100\",\n  app: {\n    browser: \"https://onekey.so\",\n    ios: \"https://apps.apple.com/us/app/onekey-open-source-wallet/id1609559473\",\n    android: \"https://play.google.com/store/apps/details?id=so.onekey.app.wallet&hl=en_US&gl=US\",\n    mac: \"https://github.com/OneKeyHQ/app-monorepo/releases\",\n    windows: \"https://github.com/OneKeyHQ/app-monorepo/releases\",\n    linux: \"https://github.com/OneKeyHQ/app-monorepo/releases\",\n    chrome: \"https://chrome.google.com/webstore/detail/onekey/jnmbobjmhlngoefaiojfljckilhhlhcj\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"so.onekey.app.wallet\",\n  mobile: {\n    native: \"onekey-wallet://\",\n    universal: \"https://app.onekey.so/wc/connect\"\n  },\n  desktop: {\n    native: \"onekey-wallet://\",\n    universal: \"https://app.onekey.so/wc/connect\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=so.onekey.app-3NGOLXP4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/social-IGLKXP3O.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/social.gm2/index.js\nvar wallet = {\n  id: \"social.gm2\",\n  name: \"GM² Social\",\n  homepage: \"https://gm2.social/\",\n  image_id: \"f5c2218d-56b4-4fc8-63bf-0ece7276d600\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/gm-social/id6502584673\",\n    android: \"https://play.google.com/store/apps/details?id=com.gm2.app.prod&hl=en\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"gm2://home\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=social-IGLKXP3O.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/social-WQVOUPQP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/social.halo/index.js\nvar wallet = {\n  id: \"social.halo\",\n  name: \"Halo Wallet\",\n  homepage: \"https://halo.social/\",\n  image_id: \"80583973-8b44-4bef-0af9-099cfdbed600\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/hk/app/id1633572905\",\n    android: \"https://play.google.com/store/apps/details?id=com.kucoin.wallet\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/halo-wallet/nbdpmlhambbdkhkmbfpljckjcmgibalo\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"halowallet://\",\n    universal: \"https://link.kuwallet.com/universallink\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=social-WQVOUPQP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/supported-sms-countries-MILFNFSC.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/in-app/supported-sms-countries.js\nvar supportedSmsCountries = [\n  {\n    countryIsoCode: \"AD\",\n    countryName: \"Andorra\",\n    phoneNumberCode: \"376\"\n  },\n  {\n    countryIsoCode: \"AE\",\n    countryName: \"United Arab Emirates\",\n    phoneNumberCode: \"971\"\n  },\n  {\n    countryIsoCode: \"AF\",\n    countryName: \"Afghanistan\",\n    phoneNumberCode: \"93\"\n  },\n  {\n    countryIsoCode: \"AG\",\n    countryName: \"Antigua and Barbuda\",\n    phoneNumberCode: \"1268\"\n  },\n  {\n    countryIsoCode: \"AI\",\n    countryName: \"Anguilla\",\n    phoneNumberCode: \"1264\"\n  },\n  {\n    countryIsoCode: \"AL\",\n    countryName: \"Albania\",\n    phoneNumberCode: \"355\"\n  },\n  {\n    countryIsoCode: \"AM\",\n    countryName: \"Armenia\",\n    phoneNumberCode: \"374\"\n  },\n  {\n    countryIsoCode: \"AN\",\n    countryName: \"Netherlands Antilles\",\n    phoneNumberCode: \"599\"\n  },\n  {\n    countryIsoCode: \"AO\",\n    countryName: \"Angola\",\n    phoneNumberCode: \"244\"\n  },\n  {\n    countryIsoCode: \"AQ\",\n    countryName: \"Antarctica\",\n    phoneNumberCode: \"672\"\n  },\n  {\n    countryIsoCode: \"AR\",\n    countryName: \"Argentina\",\n    phoneNumberCode: \"54\"\n  },\n  {\n    countryIsoCode: \"AS\",\n    countryName: \"American Samoa\",\n    phoneNumberCode: \"1684\"\n  },\n  {\n    countryIsoCode: \"AT\",\n    countryName: \"Austria\",\n    phoneNumberCode: \"43\"\n  },\n  {\n    countryIsoCode: \"AU\",\n    countryName: \"Australia\",\n    phoneNumberCode: \"61\"\n  },\n  {\n    countryIsoCode: \"AW\",\n    countryName: \"Aruba\",\n    phoneNumberCode: \"297\"\n  },\n  {\n    countryIsoCode: \"AX\",\n    countryName: \"Aland Islands\",\n    phoneNumberCode: \"35818\"\n  },\n  {\n    countryIsoCode: \"AZ\",\n    countryName: \"Azerbaijan\",\n    phoneNumberCode: \"994\"\n  },\n  {\n    countryIsoCode: \"BA\",\n    countryName: \"Bosnia and Herzegovina\",\n    phoneNumberCode: \"387\"\n  },\n  {\n    countryIsoCode: \"BB\",\n    countryName: \"Barbados\",\n    phoneNumberCode: \"1246\"\n  },\n  {\n    countryIsoCode: \"BD\",\n    countryName: \"Bangladesh\",\n    phoneNumberCode: \"880\"\n  },\n  {\n    countryIsoCode: \"BE\",\n    countryName: \"Belgium\",\n    phoneNumberCode: \"32\"\n  },\n  {\n    countryIsoCode: \"BF\",\n    countryName: \"Burkina Faso\",\n    phoneNumberCode: \"226\"\n  },\n  {\n    countryIsoCode: \"BG\",\n    countryName: \"Bulgaria\",\n    phoneNumberCode: \"359\"\n  },\n  {\n    countryIsoCode: \"BH\",\n    countryName: \"Bahrain\",\n    phoneNumberCode: \"973\"\n  },\n  {\n    countryIsoCode: \"BI\",\n    countryName: \"Burundi\",\n    phoneNumberCode: \"257\"\n  },\n  {\n    countryIsoCode: \"BJ\",\n    countryName: \"Benin\",\n    phoneNumberCode: \"229\"\n  },\n  {\n    countryIsoCode: \"BL\",\n    countryName: \"Saint Barthelemy\",\n    phoneNumberCode: \"590\"\n  },\n  {\n    countryIsoCode: \"BM\",\n    countryName: \"Bermuda\",\n    phoneNumberCode: \"1441\"\n  },\n  {\n    countryIsoCode: \"BN\",\n    countryName: \"Brunei Darussalam\",\n    phoneNumberCode: \"673\"\n  },\n  {\n    countryIsoCode: \"BO\",\n    countryName: \"Bolivia\",\n    phoneNumberCode: \"591\"\n  },\n  {\n    countryIsoCode: \"BR\",\n    countryName: \"Brazil\",\n    phoneNumberCode: \"55\"\n  },\n  {\n    countryIsoCode: \"BS\",\n    countryName: \"Bahamas\",\n    phoneNumberCode: \"1242\"\n  },\n  {\n    countryIsoCode: \"BT\",\n    countryName: \"Bhutan\",\n    phoneNumberCode: \"975\"\n  },\n  {\n    countryIsoCode: \"BV\",\n    countryName: \"Bouvet Island\",\n    phoneNumberCode: \"47\"\n  },\n  {\n    countryIsoCode: \"BW\",\n    countryName: \"Botswana\",\n    phoneNumberCode: \"267\"\n  },\n  {\n    countryIsoCode: \"BY\",\n    countryName: \"Belarus\",\n    phoneNumberCode: \"375\"\n  },\n  {\n    countryIsoCode: \"BZ\",\n    countryName: \"Belize\",\n    phoneNumberCode: \"501\"\n  },\n  {\n    countryIsoCode: \"CA\",\n    countryName: \"Canada\",\n    phoneNumberCode: \"1\"\n  },\n  {\n    countryIsoCode: \"CC\",\n    countryName: \"Cocos (Keeling) Islands\",\n    phoneNumberCode: \"672\"\n  },\n  {\n    countryIsoCode: \"CF\",\n    countryName: \"Central African Republic\",\n    phoneNumberCode: \"236\"\n  },\n  {\n    countryIsoCode: \"CG\",\n    countryName: \"Congo\",\n    phoneNumberCode: \"242\"\n  },\n  {\n    countryIsoCode: \"CH\",\n    countryName: \"Switzerland\",\n    phoneNumberCode: \"41\"\n  },\n  {\n    countryIsoCode: \"CI\",\n    countryName: \"Cote d`Ivoire\",\n    phoneNumberCode: \"225\"\n  },\n  {\n    countryIsoCode: \"CK\",\n    countryName: \"Cook Islands\",\n    phoneNumberCode: \"682\"\n  },\n  {\n    countryIsoCode: \"CL\",\n    countryName: \"Chile\",\n    phoneNumberCode: \"56\"\n  },\n  {\n    countryIsoCode: \"CM\",\n    countryName: \"Cameroon\",\n    phoneNumberCode: \"237\"\n  },\n  {\n    countryIsoCode: \"CN\",\n    countryName: \"China\",\n    phoneNumberCode: \"86\"\n  },\n  {\n    countryIsoCode: \"CO\",\n    countryName: \"Colombia\",\n    phoneNumberCode: \"57\"\n  },\n  {\n    countryIsoCode: \"CR\",\n    countryName: \"Costa Rica\",\n    phoneNumberCode: \"506\"\n  },\n  {\n    countryIsoCode: \"CU\",\n    countryName: \"Cuba\",\n    phoneNumberCode: \"53\"\n  },\n  {\n    countryIsoCode: \"CV\",\n    countryName: \"Cape Verde\",\n    phoneNumberCode: \"238\"\n  },\n  {\n    countryIsoCode: \"CW\",\n    countryName: \"Curacao\",\n    phoneNumberCode: \"5999\"\n  },\n  {\n    countryIsoCode: \"CX\",\n    countryName: \"Christmas Island\",\n    phoneNumberCode: \"6189164\"\n  },\n  {\n    countryIsoCode: \"CY\",\n    countryName: \"Cyprus\",\n    phoneNumberCode: \"357\"\n  },\n  {\n    countryIsoCode: \"CZ\",\n    countryName: \"Czechia\",\n    phoneNumberCode: \"420\"\n  },\n  {\n    countryIsoCode: \"DE\",\n    countryName: \"Germany\",\n    phoneNumberCode: \"49\"\n  },\n  {\n    countryIsoCode: \"DJ\",\n    countryName: \"Djibouti\",\n    phoneNumberCode: \"253\"\n  },\n  {\n    countryIsoCode: \"DK\",\n    countryName: \"Denmark\",\n    phoneNumberCode: \"45\"\n  },\n  {\n    countryIsoCode: \"DM\",\n    countryName: \"Dominica\",\n    phoneNumberCode: \"1767\"\n  },\n  {\n    countryIsoCode: \"DO\",\n    countryName: \"Dominican Republic\",\n    phoneNumberCode: \"1809\"\n  },\n  {\n    countryIsoCode: \"DZ\",\n    countryName: \"Algeria\",\n    phoneNumberCode: \"213\"\n  },\n  {\n    countryIsoCode: \"EC\",\n    countryName: \"Ecuador\",\n    phoneNumberCode: \"593\"\n  },\n  {\n    countryIsoCode: \"EE\",\n    countryName: \"Estonia\",\n    phoneNumberCode: \"372\"\n  },\n  {\n    countryIsoCode: \"EG\",\n    countryName: \"Egypt\",\n    phoneNumberCode: \"20\"\n  },\n  {\n    countryIsoCode: \"EH\",\n    countryName: \"Western Sahara\",\n    phoneNumberCode: \"212\"\n  },\n  {\n    countryIsoCode: \"ER\",\n    countryName: \"Eritrea\",\n    phoneNumberCode: \"291\"\n  },\n  {\n    countryIsoCode: \"ES\",\n    countryName: \"Spain\",\n    phoneNumberCode: \"34\"\n  },\n  {\n    countryIsoCode: \"ET\",\n    countryName: \"Ethiopia\",\n    phoneNumberCode: \"251\"\n  },\n  {\n    countryIsoCode: \"FI\",\n    countryName: \"Finland\",\n    phoneNumberCode: \"358\"\n  },\n  {\n    countryIsoCode: \"FJ\",\n    countryName: \"Fiji\",\n    phoneNumberCode: \"679\"\n  },\n  {\n    countryIsoCode: \"FO\",\n    countryName: \"Faroe Islands\",\n    phoneNumberCode: \"298\"\n  },\n  {\n    countryIsoCode: \"FR\",\n    countryName: \"France\",\n    phoneNumberCode: \"33\"\n  },\n  {\n    countryIsoCode: \"GA\",\n    countryName: \"Gabon\",\n    phoneNumberCode: \"241\"\n  },\n  {\n    countryIsoCode: \"GB\",\n    countryName: \"United Kingdom\",\n    phoneNumberCode: \"44\"\n  },\n  {\n    countryIsoCode: \"GD\",\n    countryName: \"Grenada\",\n    phoneNumberCode: \"1473\"\n  },\n  {\n    countryIsoCode: \"GE\",\n    countryName: \"Georgia\",\n    phoneNumberCode: \"995\"\n  },\n  {\n    countryIsoCode: \"GF\",\n    countryName: \"French Guiana\",\n    phoneNumberCode: \"594\"\n  },\n  {\n    countryIsoCode: \"GG\",\n    countryName: \"Guernsey\",\n    phoneNumberCode: \"441481\"\n  },\n  {\n    countryIsoCode: \"GH\",\n    countryName: \"Ghana\",\n    phoneNumberCode: \"233\"\n  },\n  {\n    countryIsoCode: \"GI\",\n    countryName: \"Gibraltar\",\n    phoneNumberCode: \"350\"\n  },\n  {\n    countryIsoCode: \"GL\",\n    countryName: \"Greenland\",\n    phoneNumberCode: \"299\"\n  },\n  {\n    countryIsoCode: \"GM\",\n    countryName: \"Gambia\",\n    phoneNumberCode: \"220\"\n  },\n  {\n    countryIsoCode: \"GN\",\n    countryName: \"Guinea\",\n    phoneNumberCode: \"224\"\n  },\n  {\n    countryIsoCode: \"GP\",\n    countryName: \"Guadeloupe\",\n    phoneNumberCode: \"590\"\n  },\n  {\n    countryIsoCode: \"GQ\",\n    countryName: \"Equatorial Guinea\",\n    phoneNumberCode: \"240\"\n  },\n  {\n    countryIsoCode: \"GR\",\n    countryName: \"Greece\",\n    phoneNumberCode: \"30\"\n  },\n  {\n    countryIsoCode: \"GT\",\n    countryName: \"Guatemala\",\n    phoneNumberCode: \"502\"\n  },\n  {\n    countryIsoCode: \"GU\",\n    countryName: \"Guam\",\n    phoneNumberCode: \"1671\"\n  },\n  {\n    countryIsoCode: \"GW\",\n    countryName: \"Guinea-Bissau\",\n    phoneNumberCode: \"245\"\n  },\n  {\n    countryIsoCode: \"GY\",\n    countryName: \"Guyana\",\n    phoneNumberCode: \"592\"\n  },\n  {\n    countryIsoCode: \"HN\",\n    countryName: \"Honduras\",\n    phoneNumberCode: \"504\"\n  },\n  {\n    countryIsoCode: \"HR\",\n    countryName: \"Croatia\",\n    phoneNumberCode: \"385\"\n  },\n  {\n    countryIsoCode: \"HT\",\n    countryName: \"Haiti\",\n    phoneNumberCode: \"509\"\n  },\n  {\n    countryIsoCode: \"HU\",\n    countryName: \"Hungary\",\n    phoneNumberCode: \"36\"\n  },\n  {\n    countryIsoCode: \"ID\",\n    countryName: \"Indonesia\",\n    phoneNumberCode: \"62\"\n  },\n  {\n    countryIsoCode: \"IE\",\n    countryName: \"Ireland\",\n    phoneNumberCode: \"353\"\n  },\n  {\n    countryIsoCode: \"IL\",\n    countryName: \"Israel\",\n    phoneNumberCode: \"972\"\n  },\n  {\n    countryIsoCode: \"IM\",\n    countryName: \"Isle Of Man\",\n    phoneNumberCode: \"441624\"\n  },\n  {\n    countryIsoCode: \"IN\",\n    countryName: \"India\",\n    phoneNumberCode: \"91\"\n  },\n  {\n    countryIsoCode: \"IO\",\n    countryName: \"British Indian Ocean Territory\",\n    phoneNumberCode: \"246\"\n  },\n  {\n    countryIsoCode: \"IQ\",\n    countryName: \"Iraq\",\n    phoneNumberCode: \"964\"\n  },\n  {\n    countryIsoCode: \"IR\",\n    countryName: \"Iran (Islamic Republic of)\",\n    phoneNumberCode: \"98\"\n  },\n  {\n    countryIsoCode: \"IS\",\n    countryName: \"Iceland\",\n    phoneNumberCode: \"354\"\n  },\n  {\n    countryIsoCode: \"IT\",\n    countryName: \"Italy\",\n    phoneNumberCode: \"39\"\n  },\n  {\n    countryIsoCode: \"JE\",\n    countryName: \"Jersey\",\n    phoneNumberCode: \"441534\"\n  },\n  {\n    countryIsoCode: \"JM\",\n    countryName: \"Jamaica\",\n    phoneNumberCode: \"1876\"\n  },\n  {\n    countryIsoCode: \"JO\",\n    countryName: \"Jordan\",\n    phoneNumberCode: \"962\"\n  },\n  {\n    countryIsoCode: \"JP\",\n    countryName: \"Japan\",\n    phoneNumberCode: \"81\"\n  },\n  {\n    countryIsoCode: \"KE\",\n    countryName: \"Kenya\",\n    phoneNumberCode: \"254\"\n  },\n  {\n    countryIsoCode: \"KG\",\n    countryName: \"Kyrgyzstan\",\n    phoneNumberCode: \"996\"\n  },\n  {\n    countryIsoCode: \"KH\",\n    countryName: \"Cambodia\",\n    phoneNumberCode: \"855\"\n  },\n  {\n    countryIsoCode: \"KI\",\n    countryName: \"Kiribati\",\n    phoneNumberCode: \"686\"\n  },\n  {\n    countryIsoCode: \"KM\",\n    countryName: \"Comoros\",\n    phoneNumberCode: \"269\"\n  },\n  {\n    countryIsoCode: \"KN\",\n    countryName: \"Saint Kitts and Nevis\",\n    phoneNumberCode: \"1869\"\n  },\n  {\n    countryIsoCode: \"KR\",\n    countryName: \"Republic of Korea\",\n    phoneNumberCode: \"82\"\n  },\n  {\n    countryIsoCode: \"KW\",\n    countryName: \"Kuwait\",\n    phoneNumberCode: \"965\"\n  },\n  {\n    countryIsoCode: \"KY\",\n    countryName: \"Cayman Islands\",\n    phoneNumberCode: \"1345\"\n  },\n  {\n    countryIsoCode: \"KZ\",\n    countryName: \"Kazakhstan\",\n    phoneNumberCode: \"7\"\n  },\n  {\n    countryIsoCode: \"LB\",\n    countryName: \"Lebanon\",\n    phoneNumberCode: \"961\"\n  },\n  {\n    countryIsoCode: \"LC\",\n    countryName: \"Saint Lucia\",\n    phoneNumberCode: \"1758\"\n  },\n  {\n    countryIsoCode: \"LI\",\n    countryName: \"Liechtenstein\",\n    phoneNumberCode: \"423\"\n  },\n  {\n    countryIsoCode: \"LK\",\n    countryName: \"Sri Lanka\",\n    phoneNumberCode: \"94\"\n  },\n  {\n    countryIsoCode: \"LR\",\n    countryName: \"Liberia\",\n    phoneNumberCode: \"231\"\n  },\n  {\n    countryIsoCode: \"LS\",\n    countryName: \"Lesotho\",\n    phoneNumberCode: \"266\"\n  },\n  {\n    countryIsoCode: \"LT\",\n    countryName: \"Lithuania\",\n    phoneNumberCode: \"370\"\n  },\n  {\n    countryIsoCode: \"LU\",\n    countryName: \"Luxembourg\",\n    phoneNumberCode: \"352\"\n  },\n  {\n    countryIsoCode: \"LV\",\n    countryName: \"Latvia\",\n    phoneNumberCode: \"371\"\n  },\n  {\n    countryIsoCode: \"LY\",\n    countryName: \"Libyan Arab Jamahiriya\",\n    phoneNumberCode: \"218\"\n  },\n  {\n    countryIsoCode: \"MA\",\n    countryName: \"Morocco\",\n    phoneNumberCode: \"212\"\n  },\n  {\n    countryIsoCode: \"MC\",\n    countryName: \"Monaco\",\n    phoneNumberCode: \"377\"\n  },\n  {\n    countryIsoCode: \"MD\",\n    countryName: \"Moldova (Republic of)\",\n    phoneNumberCode: \"373\"\n  },\n  {\n    countryIsoCode: \"ME\",\n    countryName: \"Montenegro\",\n    phoneNumberCode: \"382\"\n  },\n  {\n    countryIsoCode: \"MF\",\n    countryName: \"Saint Martin French\",\n    phoneNumberCode: \"590\"\n  },\n  {\n    countryIsoCode: \"MG\",\n    countryName: \"Madagascar\",\n    phoneNumberCode: \"261\"\n  },\n  {\n    countryIsoCode: \"MH\",\n    countryName: \"Marshall Islands\",\n    phoneNumberCode: \"692\"\n  },\n  {\n    countryIsoCode: \"ML\",\n    countryName: \"Mali\",\n    phoneNumberCode: \"223\"\n  },\n  {\n    countryIsoCode: \"MM\",\n    countryName: \"Myanmar\",\n    phoneNumberCode: \"95\"\n  },\n  {\n    countryIsoCode: \"MN\",\n    countryName: \"Mongolia\",\n    phoneNumberCode: \"976\"\n  },\n  {\n    countryIsoCode: \"MP\",\n    countryName: \"Northern Mariana Islands\",\n    phoneNumberCode: \"1670\"\n  },\n  {\n    countryIsoCode: \"MQ\",\n    countryName: \"Martinique\",\n    phoneNumberCode: \"596\"\n  },\n  {\n    countryIsoCode: \"MR\",\n    countryName: \"Mauritania\",\n    phoneNumberCode: \"222\"\n  },\n  {\n    countryIsoCode: \"MS\",\n    countryName: \"Montserrat\",\n    phoneNumberCode: \"1664\"\n  },\n  {\n    countryIsoCode: \"MT\",\n    countryName: \"Malta\",\n    phoneNumberCode: \"356\"\n  },\n  {\n    countryIsoCode: \"MU\",\n    countryName: \"Mauritius\",\n    phoneNumberCode: \"230\"\n  },\n  {\n    countryIsoCode: \"MV\",\n    countryName: \"Maldives\",\n    phoneNumberCode: \"960\"\n  },\n  {\n    countryIsoCode: \"MW\",\n    countryName: \"Malawi\",\n    phoneNumberCode: \"265\"\n  },\n  {\n    countryIsoCode: \"MX\",\n    countryName: \"Mexico\",\n    phoneNumberCode: \"52\"\n  },\n  {\n    countryIsoCode: \"MY\",\n    countryName: \"Malaysia\",\n    phoneNumberCode: \"60\"\n  },\n  {\n    countryIsoCode: \"MZ\",\n    countryName: \"Mozambique\",\n    phoneNumberCode: \"258\"\n  },\n  {\n    countryIsoCode: \"NA\",\n    countryName: \"Namibia\",\n    phoneNumberCode: \"264\"\n  },\n  {\n    countryIsoCode: \"NC\",\n    countryName: \"New Caledonia\",\n    phoneNumberCode: \"687\"\n  },\n  {\n    countryIsoCode: \"NE\",\n    countryName: \"Niger\",\n    phoneNumberCode: \"227\"\n  },\n  {\n    countryIsoCode: \"NF\",\n    countryName: \"Norfolk Island\",\n    phoneNumberCode: \"672\"\n  },\n  {\n    countryIsoCode: \"NG\",\n    countryName: \"Nigeria\",\n    phoneNumberCode: \"234\"\n  },\n  {\n    countryIsoCode: \"NI\",\n    countryName: \"Nicaragua\",\n    phoneNumberCode: \"505\"\n  },\n  {\n    countryIsoCode: \"NL\",\n    countryName: \"Netherlands\",\n    phoneNumberCode: \"31\"\n  },\n  {\n    countryIsoCode: \"NO\",\n    countryName: \"Norway\",\n    phoneNumberCode: \"47\"\n  },\n  {\n    countryIsoCode: \"NP\",\n    countryName: \"Nepal\",\n    phoneNumberCode: \"977\"\n  },\n  {\n    countryIsoCode: \"NR\",\n    countryName: \"Nauru\",\n    phoneNumberCode: \"674\"\n  },\n  {\n    countryIsoCode: \"NU\",\n    countryName: \"Niue\",\n    phoneNumberCode: \"683\"\n  },\n  {\n    countryIsoCode: \"NZ\",\n    countryName: \"New Zealand\",\n    phoneNumberCode: \"64\"\n  },\n  {\n    countryIsoCode: \"OM\",\n    countryName: \"Oman\",\n    phoneNumberCode: \"968\"\n  },\n  {\n    countryIsoCode: \"PA\",\n    countryName: \"Panama\",\n    phoneNumberCode: \"507\"\n  },\n  {\n    countryIsoCode: \"PE\",\n    countryName: \"Peru\",\n    phoneNumberCode: \"51\"\n  },\n  {\n    countryIsoCode: \"PF\",\n    countryName: \"French Polynesia\",\n    phoneNumberCode: \"689\"\n  },\n  {\n    countryIsoCode: \"PG\",\n    countryName: \"Papua New Guinea\",\n    phoneNumberCode: \"675\"\n  },\n  {\n    countryIsoCode: \"PH\",\n    countryName: \"Philippines\",\n    phoneNumberCode: \"63\"\n  },\n  {\n    countryIsoCode: \"PK\",\n    countryName: \"Pakistan\",\n    phoneNumberCode: \"92\"\n  },\n  {\n    countryIsoCode: \"PL\",\n    countryName: \"Poland\",\n    phoneNumberCode: \"48\"\n  },\n  {\n    countryIsoCode: \"PM\",\n    countryName: \"Saint Pierre and Miquelon\",\n    phoneNumberCode: \"508\"\n  },\n  {\n    countryIsoCode: \"PN\",\n    countryName: \"Pitcairn\",\n    phoneNumberCode: \"64\"\n  },\n  {\n    countryIsoCode: \"PR\",\n    countryName: \"Puerto Rico\",\n    phoneNumberCode: \"1787\"\n  },\n  {\n    countryIsoCode: \"PT\",\n    countryName: \"Portugal\",\n    phoneNumberCode: \"351\"\n  },\n  {\n    countryIsoCode: \"PW\",\n    countryName: \"Palau\",\n    phoneNumberCode: \"680\"\n  },\n  {\n    countryIsoCode: \"PY\",\n    countryName: \"Paraguay\",\n    phoneNumberCode: \"595\"\n  },\n  {\n    countryIsoCode: \"QA\",\n    countryName: \"Qatar\",\n    phoneNumberCode: \"974\"\n  },\n  {\n    countryIsoCode: \"RE\",\n    countryName: \"Reunion\",\n    phoneNumberCode: \"262\"\n  },\n  {\n    countryIsoCode: \"RO\",\n    countryName: \"Romania\",\n    phoneNumberCode: \"40\"\n  },\n  {\n    countryIsoCode: \"RS\",\n    countryName: \"Serbia\",\n    phoneNumberCode: \"381\"\n  },\n  {\n    countryIsoCode: \"RU\",\n    countryName: \"Russian Federation\",\n    phoneNumberCode: \"7\"\n  },\n  {\n    countryIsoCode: \"RW\",\n    countryName: \"Rwanda\",\n    phoneNumberCode: \"250\"\n  },\n  {\n    countryIsoCode: \"SA\",\n    countryName: \"Saudi Arabia\",\n    phoneNumberCode: \"966\"\n  },\n  {\n    countryIsoCode: \"SB\",\n    countryName: \"Solomon Islands\",\n    phoneNumberCode: \"677\"\n  },\n  {\n    countryIsoCode: \"SC\",\n    countryName: \"Seychelles\",\n    phoneNumberCode: \"248\"\n  },\n  {\n    countryIsoCode: \"SD\",\n    countryName: \"Sudan\",\n    phoneNumberCode: \"249\"\n  },\n  {\n    countryIsoCode: \"SE\",\n    countryName: \"Sweden\",\n    phoneNumberCode: \"46\"\n  },\n  {\n    countryIsoCode: \"SG\",\n    countryName: \"Singapore\",\n    phoneNumberCode: \"65\"\n  },\n  {\n    countryIsoCode: \"SH\",\n    countryName: \"Saint Helena\",\n    phoneNumberCode: \"290\"\n  },\n  {\n    countryIsoCode: \"SI\",\n    countryName: \"Slovenia\",\n    phoneNumberCode: \"386\"\n  },\n  {\n    countryIsoCode: \"SK\",\n    countryName: \"Slovakia\",\n    phoneNumberCode: \"421\"\n  },\n  {\n    countryIsoCode: \"SL\",\n    countryName: \"Sierra Leone\",\n    phoneNumberCode: \"232\"\n  },\n  {\n    countryIsoCode: \"SM\",\n    countryName: \"San Marino\",\n    phoneNumberCode: \"378\"\n  },\n  {\n    countryIsoCode: \"SN\",\n    countryName: \"Senegal\",\n    phoneNumberCode: \"221\"\n  },\n  {\n    countryIsoCode: \"SO\",\n    countryName: \"Somalia\",\n    phoneNumberCode: \"252\"\n  },\n  {\n    countryIsoCode: \"SR\",\n    countryName: \"Suriname\",\n    phoneNumberCode: \"597\"\n  },\n  {\n    countryIsoCode: \"SS\",\n    countryName: \"South Sudan\",\n    phoneNumberCode: \"211\"\n  },\n  {\n    countryIsoCode: \"ST\",\n    countryName: \"Sao Tome and Principe\",\n    phoneNumberCode: \"239\"\n  },\n  {\n    countryIsoCode: \"SV\",\n    countryName: \"El Salvador\",\n    phoneNumberCode: \"503\"\n  },\n  {\n    countryIsoCode: \"SX\",\n    countryName: \"Sint Maarten Dutch\",\n    phoneNumberCode: \"1721\"\n  },\n  {\n    countryIsoCode: \"SY\",\n    countryName: \"Syrian Arab Republic\",\n    phoneNumberCode: \"963\"\n  },\n  {\n    countryIsoCode: \"SZ\",\n    countryName: \"Swaziland\",\n    phoneNumberCode: \"268\"\n  },\n  {\n    countryIsoCode: \"TC\",\n    countryName: \"Turks and Caicos Islands\",\n    phoneNumberCode: \"1649\"\n  },\n  {\n    countryIsoCode: \"TD\",\n    countryName: \"Chad\",\n    phoneNumberCode: \"235\"\n  },\n  {\n    countryIsoCode: \"TF\",\n    countryName: \"French Southern Territories\",\n    phoneNumberCode: \"1\"\n  },\n  {\n    countryIsoCode: \"TG\",\n    countryName: \"Togo\",\n    phoneNumberCode: \"228\"\n  },\n  {\n    countryIsoCode: \"TH\",\n    countryName: \"Thailand\",\n    phoneNumberCode: \"66\"\n  },\n  {\n    countryIsoCode: \"TJ\",\n    countryName: \"Tajikistan\",\n    phoneNumberCode: \"992\"\n  },\n  {\n    countryIsoCode: \"TK\",\n    countryName: \"Tokelau\",\n    phoneNumberCode: \"690\"\n  },\n  {\n    countryIsoCode: \"TL\",\n    countryName: \"Timor-Leste (East Timor)\",\n    phoneNumberCode: \"670\"\n  },\n  {\n    countryIsoCode: \"TM\",\n    countryName: \"Turkmenistan\",\n    phoneNumberCode: \"993\"\n  },\n  {\n    countryIsoCode: \"TN\",\n    countryName: \"Tunisia\",\n    phoneNumberCode: \"216\"\n  },\n  {\n    countryIsoCode: \"TO\",\n    countryName: \"Tonga\",\n    phoneNumberCode: \"676\"\n  },\n  {\n    countryIsoCode: \"TR\",\n    countryName: \"Turkey\",\n    phoneNumberCode: \"90\"\n  },\n  {\n    countryIsoCode: \"TT\",\n    countryName: \"Trinidad and Tobago\",\n    phoneNumberCode: \"1868\"\n  },\n  {\n    countryIsoCode: \"TV\",\n    countryName: \"Tuvalu\",\n    phoneNumberCode: \"688\"\n  },\n  {\n    countryIsoCode: \"TW\",\n    countryName: \"Taiwan (Province of China)\",\n    phoneNumberCode: \"886\"\n  },\n  {\n    countryIsoCode: \"TZ\",\n    countryName: \"Tanzania (United Republic of)\",\n    phoneNumberCode: \"255\"\n  },\n  {\n    countryIsoCode: \"UA\",\n    countryName: \"Ukraine\",\n    phoneNumberCode: \"380\"\n  },\n  {\n    countryIsoCode: \"UG\",\n    countryName: \"Uganda\",\n    phoneNumberCode: \"256\"\n  },\n  {\n    countryIsoCode: \"US\",\n    countryName: \"United States\",\n    phoneNumberCode: \"1\"\n  },\n  {\n    countryIsoCode: \"UY\",\n    countryName: \"Uruguay\",\n    phoneNumberCode: \"598\"\n  },\n  {\n    countryIsoCode: \"UZ\",\n    countryName: \"Uzbekistan\",\n    phoneNumberCode: \"998\"\n  },\n  {\n    countryIsoCode: \"VE\",\n    countryName: \"Venezuela\",\n    phoneNumberCode: \"58\"\n  },\n  {\n    countryIsoCode: \"VG\",\n    countryName: \"Virgin Islands British\",\n    phoneNumberCode: \"1284\"\n  },\n  {\n    countryIsoCode: \"VI\",\n    countryName: \"Virgin Islands US\",\n    phoneNumberCode: \"1340\"\n  },\n  {\n    countryIsoCode: \"VN\",\n    countryName: \"Vietnam\",\n    phoneNumberCode: \"84\"\n  },\n  {\n    countryIsoCode: \"VU\",\n    countryName: \"Vanuatu\",\n    phoneNumberCode: \"678\"\n  },\n  {\n    countryIsoCode: \"WF\",\n    countryName: \"Wallis and Futuna Islands\",\n    phoneNumberCode: \"681\"\n  },\n  {\n    countryIsoCode: \"WS\",\n    countryName: \"Samoa\",\n    phoneNumberCode: \"685\"\n  },\n  {\n    countryIsoCode: \"XK\",\n    countryName: \"Kosovo\",\n    phoneNumberCode: \"383\"\n  },\n  {\n    countryIsoCode: \"YE\",\n    countryName: \"Yemen\",\n    phoneNumberCode: \"967\"\n  },\n  {\n    countryIsoCode: \"YT\",\n    countryName: \"Mayotte\",\n    phoneNumberCode: \"262269\"\n  },\n  {\n    countryIsoCode: \"YU\",\n    countryName: \"Yugoslavia\",\n    phoneNumberCode: \"38\"\n  },\n  {\n    countryIsoCode: \"ZA\",\n    countryName: \"South Africa\",\n    phoneNumberCode: \"27\"\n  },\n  {\n    countryIsoCode: \"ZM\",\n    countryName: \"Zambia\",\n    phoneNumberCode: \"260\"\n  },\n  {\n    countryIsoCode: \"ZW\",\n    countryName: \"Zimbabwe\",\n    phoneNumberCode: \"263\"\n  }\n];\nexport {\n  supportedSmsCountries\n};\n//# sourceMappingURL=supported-sms-countries-MILFNFSC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/switch-chain-UAQT4AB6.js",
    "content": "import {\n  handleSwitchChain\n} from \"./chunk-R554PO5S.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  handleSwitchChain\n};\n//# sourceMappingURL=switch-chain-UAQT4AB6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/tech-4UEY76KS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/tech.okto/index.js\nvar wallet = {\n  id: \"tech.okto\",\n  name: \"Okto\",\n  homepage: \"https://okto.tech/\",\n  image_id: \"154c69b7-9bb1-4010-5b4c-6b37eeda8900\",\n  app: {\n    browser: \"https://okto.go.link/?adj_t=j39b9kp&adj_fallback=https%3A%2F%2Fokto.tech&adj_redirect_macos=https%3A%2F%2Fokto.tech\",\n    ios: \"https://apps.apple.com/in/app/okto-wallet/id6450688229\",\n    android: \"https://play.google.com/store/apps/details?id=com.coindcx.okto&hl=en_IN&gl=US\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: \"https://okto.tech/\",\n    firefox: null,\n    safari: \"https://okto.tech/\",\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"okto://\",\n    universal: \"https://okto.go.link/?adj_t=j39b9kp&adj_fallback=https%3A%2F%2Fokto.tech&adj_redirect_macos=https%3A%2F%2Fokto.tech\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://okto.tech/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=tech-4UEY76KS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/tech-C727ACOE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/tech.levain/index.js\nvar wallet = {\n  id: \"tech.levain\",\n  name: \"Levain\",\n  homepage: \"https://levain.tech/\",\n  image_id: \"504f6043-9d47-4dd9-5332-49ea67e93100\",\n  app: {\n    browser: \"https://app.levain.tech/\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"tech.levain\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: \"https://app.levain.tech/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=tech-C727ACOE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/tech-NOIENMRJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/tech.defiantapp/index.js\nvar wallet = {\n  id: \"tech.defiantapp\",\n  name: \"Defiant\",\n  homepage: \"https://www.defiantapp.tech/\",\n  image_id: \"11a96ca4-3592-42ae-c781-2b7265ec9200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/defiant-wallet/id1559622756\",\n    android: \"https://play.google.com/store/apps/details?id=ar.com.andinasmart.defiant&hl=en\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"defiantapp://\",\n    universal: \"https://defiantapp.tech/\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=tech-NOIENMRJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/technology-4ON2FUI4.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/technology.jambo/index.js\nvar wallet = {\n  id: \"technology.jambo\",\n  name: \"Jambo\",\n  homepage: \"https://www.jambo.technology/\",\n  image_id: \"b0fd39a1-d147-4bf7-4cb5-68a294b26f00\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://play.google.com/store/apps/details?id=com.jambo\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"jbw://walletconnect\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=technology-4ON2FUI4.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/technology-NIZQELB7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/technology.obvious/index.js\nvar wallet = {\n  id: \"technology.obvious\",\n  name: \"Obvious\",\n  homepage: \"https://obvious.technology\",\n  image_id: \"fe1b9394-55af-4828-a70d-5c5b7de6b200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/in/app/obvious-crypto-wallet/id1643088398\",\n    android: \"https://play.google.com/store/apps/details?id=com.hashhalli.obvious\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"obvious://\",\n    universal: \"https://wallet.obvious.technology\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=technology-NIZQELB7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/thirdweb.js",
    "content": "import {\n  isValidSignature\n} from \"./chunk-U55JVTZU.js\";\nimport {\n  eth_getStorageAt\n} from \"./chunk-HL2TAEA2.js\";\nimport {\n  eth_getTransactionCount\n} from \"./chunk-YXQ5KEQC.js\";\nimport {\n  eth_getLogs,\n  getBuyWithCryptoHistory,\n  getContractEvents,\n  isBaseTransactionOptions,\n  simulateTransaction,\n  watchContractEvents\n} from \"./chunk-S4ZGHGPT.js\";\nimport {\n  sendBatchTransaction\n} from \"./chunk-VUXPTMXZ.js\";\nimport {\n  estimateGasCost,\n  getBuyWithCryptoQuote,\n  getBuyWithCryptoStatus,\n  getBuyWithCryptoTransfer\n} from \"./chunk-PHVX3XOV.js\";\nimport {\n  sendAndConfirmTransaction\n} from \"./chunk-ADIC4TC2.js\";\nimport {\n  eth_getBalance\n} from \"./chunk-4PEUWIWY.js\";\nimport {\n  parseEventLogs,\n  prepareEvent\n} from \"./chunk-DYKFWRMQ.js\";\nimport \"./chunk-TTOANXGP.js\";\nimport \"./chunk-AWMNEQRO.js\";\nimport {\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport {\n  sendTransaction\n} from \"./chunk-JTR2PIFP.js\";\nimport {\n  eth_sendRawTransaction\n} from \"./chunk-MWAIX6LF.js\";\nimport {\n  estimateGas,\n  eth_gasPrice,\n  eth_maxPriorityFeePerGas,\n  getGasPrice,\n  resolveContractAbi,\n  toSerializableTransaction\n} from \"./chunk-JZC47WAY.js\";\nimport {\n  eth_getBlockByNumber\n} from \"./chunk-CXAZLQ2Z.js\";\nimport \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport {\n  encode\n} from \"./chunk-7QDK5KLB.js\";\nimport {\n  fromGwei,\n  toEther,\n  toTokens,\n  toUnits,\n  toWei\n} from \"./chunk-UY2SRO54.js\";\nimport {\n  NATIVE_TOKEN_ADDRESS,\n  ZERO_ADDRESS\n} from \"./chunk-673YCYST.js\";\nimport {\n  eth_blockNumber,\n  eth_getTransactionReceipt,\n  waitForReceipt,\n  watchBlockNumber\n} from \"./chunk-JBQP4JIV.js\";\nimport \"./chunk-4OCU6WGG.js\";\nimport \"./chunk-3DBHE3NE.js\";\nimport \"./chunk-3ZOYRTTJ.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport {\n  eth_getCode\n} from \"./chunk-NPXNISXJ.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport {\n  concatHex\n} from \"./chunk-4BCIASJM.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport {\n  prepareTransaction\n} from \"./chunk-CNLOA7AS.js\";\nimport {\n  eth_call,\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport {\n  serializeSignature\n} from \"./chunk-YPFLLHK6.js\";\nimport {\n  secp256k1\n} from \"./chunk-7EY5MWB2.js\";\nimport {\n  encodeAbiParameters\n} from \"./chunk-U7TO6S3N.js\";\nimport {\n  formatBlock,\n  formatTransaction,\n  hashTypedData,\n  serializeTransaction\n} from \"./chunk-LO5SQBMX.js\";\nimport {\n  getAddress,\n  isAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport {\n  keccak256\n} from \"./chunk-67BSOYLQ.js\";\nimport {\n  boolToBytes,\n  hexToBytes,\n  numberToBytes,\n  stringToBytes,\n  toBytes\n} from \"./chunk-B7XHB4Z2.js\";\nimport {\n  sha256\n} from \"./chunk-O6UZ65WN.js\";\nimport {\n  encodeDeployData,\n  parseAbiItem,\n  sliceHex,\n  universalSignatureValidatorAbi,\n  universalSignatureValidatorByteCode\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport \"./chunk-NJUWOGZE.js\";\nimport {\n  defineChain\n} from \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport {\n  getThirdwebBaseUrl\n} from \"./chunk-QHKZ43P6.js\";\nimport {\n  getClientFetch,\n  isJWT\n} from \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport {\n  LruMap\n} from \"./chunk-SNQ54XRM.js\";\nimport {\n  eth_estimateGas\n} from \"./chunk-IMSXM5CF.js\";\nimport {\n  boolToHex,\n  fromHex,\n  hexToBigInt,\n  hexToBool,\n  hexToNumber,\n  hexToString,\n  hexToUint8Array,\n  isHex,\n  numberToHex,\n  padHex,\n  stringToHex,\n  toHex,\n  uint8ArrayToHex\n} from \"./chunk-BBNNHC5G.js\";\nimport {\n  toBigInt2 as toBigInt,\n  toBoolean2 as toBoolean,\n  toNumber2 as toNumber,\n  toString2 as toString\n} from \"./chunk-Y3WKETHV.js\";\nimport {\n  equalBytes\n} from \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/utils/hashing/sha256.js\nfunction sha2562(value, to) {\n  const bytes = sha256(isHex(value, { strict: false }) ? hexToUint8Array(value) : value);\n  if (to === \"bytes\") {\n    return bytes;\n  }\n  return uint8ArrayToHex(bytes);\n}\n\n// node_modules/thirdweb/dist/esm/utils/client-id.js\nvar cache = new LruMap(4096);\nfunction computeClientIdFromSecretKey(secretKey) {\n  if (cache.has(secretKey)) {\n    return cache.get(secretKey);\n  }\n  const cId = sha2562(stringToBytes(secretKey)).slice(2, 34);\n  cache.set(secretKey, cId);\n  return cId;\n}\n\n// node_modules/thirdweb/dist/esm/client/client.js\nfunction createThirdwebClient(options) {\n  const { clientId, secretKey, ...rest } = options;\n  let realClientId = clientId;\n  if (secretKey) {\n    if (isJWT(secretKey)) {\n      if (!clientId) {\n        throw new Error(\"clientId must be provided when using a JWT secretKey\");\n      }\n    } else {\n      realClientId = computeClientIdFromSecretKey(secretKey);\n    }\n  }\n  if (!realClientId) {\n    throw new Error(\"clientId or secretKey must be provided\");\n  }\n  return {\n    ...rest,\n    clientId: realClientId,\n    secretKey\n  };\n}\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_getBlockByHash.js\nasync function eth_getBlockByHash(request, params) {\n  const includeTransactions = params.includeTransactions ?? false;\n  const block = await request({\n    method: \"eth_getBlockByHash\",\n    params: [params.blockHash, includeTransactions]\n  });\n  if (!block) {\n    throw new Error(\"Block not found\");\n  }\n  return formatBlock(block);\n}\n\n// node_modules/thirdweb/dist/esm/rpc/actions/eth_getTransactionByHash.js\nasync function eth_getTransactionByHash(request, params) {\n  const receipt = await request({\n    method: \"eth_getTransactionByHash\",\n    params: [params.hash]\n  });\n  if (!receipt) {\n    throw new Error(\"Transaction not found.\");\n  }\n  return formatTransaction(receipt);\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/users/getUser.js\nasync function getUser({ client, walletAddress, email, phone, id, externalWalletAddress, ecosystem }) {\n  if (!client.secretKey) {\n    throw new Error(\"A secret key is required to query for users. If you're making this request from the server, please add a secret key to your client.\");\n  }\n  const url = new URL(`${getThirdwebBaseUrl(\"inAppWallet\")}/api/2023-11-30/embedded-wallet/user-details`);\n  if (walletAddress) {\n    url.searchParams.set(\"queryBy\", \"walletAddress\");\n    url.searchParams.set(\"walletAddress\", walletAddress);\n  } else if (email) {\n    url.searchParams.set(\"queryBy\", \"email\");\n    url.searchParams.set(\"email\", email);\n  } else if (phone) {\n    url.searchParams.set(\"queryBy\", \"phone\");\n    url.searchParams.set(\"phone\", phone);\n  } else if (id) {\n    url.searchParams.set(\"queryBy\", \"id\");\n    url.searchParams.set(\"id\", id);\n  } else if (externalWalletAddress) {\n    url.searchParams.set(\"queryBy\", \"externalWalletAddress\");\n    url.searchParams.set(\"externalWalletAddress\", externalWalletAddress);\n  } else {\n    throw new Error(\"Please provide a walletAddress, email, phone, id, or externalWalletAddress to query for users.\");\n  }\n  const clientFetch = getClientFetch(client, ecosystem);\n  const res = await clientFetch(url.toString());\n  if (!res.ok) {\n    throw new Error(\"Failed to get profiles\");\n  }\n  const data = await res.json();\n  return data.map((item) => ({\n    userId: item.userId,\n    walletAddress: item.walletAddress,\n    email: item.email,\n    phone: item.phone,\n    createdAt: item.createdAt,\n    profiles: item.linkedAccounts\n  }))[0] || null;\n}\n\n// node_modules/thirdweb/dist/esm/transaction/resolve-method.js\nfunction resolveMethod(method) {\n  return async (contract) => {\n    var _a;\n    if (typeof method === \"string\" && method.startsWith(\"function \")) {\n      return parseAbiItem(method);\n    }\n    const resolvedAbi = ((_a = contract.abi) == null ? void 0 : _a.length) ? contract.abi : await resolveContractAbi(contract);\n    const abiFunction = resolvedAbi.find((item) => {\n      if (item.type !== \"function\") {\n        return false;\n      }\n      return item.name === method;\n    });\n    if (!abiFunction) {\n      throw new Error(`could not find function with name \"${method}\" in abi`);\n    }\n    return abiFunction;\n  };\n}\n\n// node_modules/thirdweb/dist/esm/utils/signatures/sign.js\nfunction sign({ hash, privateKey }) {\n  const { r, s, recovery } = secp256k1.sign(hash.slice(2), privateKey.slice(2));\n  return {\n    r: toHex(r, { size: 32 }),\n    s: toHex(s, { size: 32 }),\n    v: recovery ? 28n : 27n,\n    yParity: recovery\n  };\n}\n\n// node_modules/thirdweb/dist/esm/transaction/serialize-transaction.js\nfunction serializeTransaction2(options) {\n  const { transaction } = options;\n  const signature = (() => {\n    if (options.signature)\n      return options.signature;\n    if (transaction.v === void 0 && transaction.yParity === void 0) {\n      return void 0;\n    }\n    if (transaction.r === void 0 || transaction.s === void 0) {\n      throw new Error(\"Invalid signature provided with transaction\");\n    }\n    return {\n      v: transaction.v,\n      r: transaction.r,\n      s: transaction.s,\n      yParity: transaction.yParity\n    };\n  })();\n  return serializeTransaction(transaction, signature);\n}\n\n// node_modules/thirdweb/dist/esm/transaction/actions/sign-transaction.js\nfunction signTransaction({ transaction, privateKey }) {\n  if (transaction.type === \"eip4844\") {\n    transaction = { ...transaction, sidecars: false };\n  }\n  const serializedTransaction = serializeTransaction2({ transaction });\n  const signature = sign({\n    hash: keccak256(serializedTransaction),\n    privateKey\n  });\n  return serializeTransaction2({\n    transaction: { ...transaction, ...signature }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/utils/encoding/from-bytes.js\nfunction fromBytes(bytes, toOrOpts) {\n  const opts = typeof toOrOpts === \"string\" ? { to: toOrOpts } : toOrOpts;\n  switch (opts.to) {\n    case \"number\":\n      return bytesToNumber(bytes, opts);\n    case \"bigint\":\n      return bytesToBigInt(bytes, opts);\n    case \"boolean\":\n      return bytesToBool(bytes, opts);\n    case \"string\":\n      return bytesToString(bytes, opts);\n    default:\n      return uint8ArrayToHex(bytes, opts);\n  }\n}\nfunction bytesToBigInt(bytes, opts = {}) {\n  return toBigInt(bytes, opts);\n}\nfunction bytesToBool(bytes_, opts = {}) {\n  return toBoolean(bytes_, opts);\n}\nfunction bytesToNumber(bytes, opts = {}) {\n  return toNumber(bytes, opts);\n}\nfunction bytesToString(bytes_, opts = {}) {\n  return toString(bytes_, opts);\n}\n\n// node_modules/thirdweb/dist/esm/auth/constants.js\nvar ERC_6492_MAGIC_VALUE = \"0x6492649264926492649264926492649264926492649264926492649264926492\";\n\n// node_modules/thirdweb/dist/esm/auth/is-erc6492-signature.js\nfunction isErc6492Signature(signature) {\n  return sliceHex(signature, -32) === ERC_6492_MAGIC_VALUE;\n}\n\n// node_modules/thirdweb/dist/esm/auth/serialize-erc6492-signature.js\nfunction serializeErc6492Signature({ address, data, signature }) {\n  return concatHex([\n    encodeAbiParameters([{ type: \"address\" }, { type: \"bytes\" }, { type: \"bytes\" }], [address, data, signature]),\n    ERC_6492_MAGIC_VALUE\n  ]);\n}\n\n// node_modules/thirdweb/dist/esm/auth/verify-hash.js\nasync function verifyHash({ hash, signature, address, client, chain, accountFactory }) {\n  const signatureHex = (() => {\n    if (isHex(signature))\n      return signature;\n    if (typeof signature === \"object\" && \"r\" in signature && \"s\" in signature)\n      return serializeSignature(signature);\n    if (signature instanceof Uint8Array)\n      return fromBytes(signature, \"hex\");\n    throw new Error(`Invalid signature type for signature ${signature}: ${typeof signature}`);\n  })();\n  const wrappedSignature = await (async () => {\n    if (!accountFactory)\n      return signatureHex;\n    if (isErc6492Signature(signatureHex))\n      return signatureHex;\n    return serializeErc6492Signature({\n      address: accountFactory.address,\n      data: accountFactory.verificationCalldata,\n      signature: signatureHex\n    });\n  })();\n  const verificationData = encodeDeployData({\n    abi: universalSignatureValidatorAbi,\n    args: [address, hash, wrappedSignature],\n    bytecode: universalSignatureValidatorByteCode\n  });\n  const rpcRequest = getRpcClient({\n    chain,\n    client\n  });\n  try {\n    const result = await eth_call(rpcRequest, {\n      data: verificationData\n    });\n    const hexResult = isHex(result) ? toBytes(result) : result;\n    return equalBytes(hexResult, toBytes(true));\n  } catch {\n    const validEip1271 = await verifyEip1271Signature({\n      hash,\n      signature: signatureHex,\n      contract: getContract({\n        chain,\n        address,\n        client\n      })\n    }).catch(() => false);\n    if (validEip1271) {\n      return true;\n    }\n    return false;\n  }\n}\nvar EIP_1271_MAGIC_VALUE = \"0x1626ba7e\";\nasync function verifyEip1271Signature({ hash, signature, contract }) {\n  const result = await isValidSignature({\n    hash,\n    signature,\n    contract\n  });\n  return result === EIP_1271_MAGIC_VALUE;\n}\n\n// node_modules/thirdweb/dist/esm/auth/verify-typed-data.js\nasync function verifyTypedData({ address, signature, client, chain, accountFactory, message, domain, primaryType, types }) {\n  const messageHash = hashTypedData({\n    message,\n    domain,\n    primaryType,\n    types\n  });\n  return verifyHash({\n    hash: messageHash,\n    signature,\n    address,\n    chain,\n    client,\n    accountFactory\n  });\n}\nexport {\n  ZERO_ADDRESS as ADDRESS_ZERO,\n  NATIVE_TOKEN_ADDRESS,\n  ZERO_ADDRESS,\n  boolToBytes,\n  boolToHex,\n  bytesToBigInt,\n  bytesToBool,\n  bytesToNumber,\n  bytesToString,\n  concatHex,\n  createThirdwebClient,\n  defineChain,\n  encode,\n  estimateGas,\n  estimateGasCost,\n  eth_blockNumber,\n  eth_call,\n  eth_estimateGas,\n  eth_gasPrice,\n  eth_getBalance,\n  eth_getBlockByHash,\n  eth_getBlockByNumber,\n  eth_getCode,\n  eth_getLogs,\n  eth_getStorageAt,\n  eth_getTransactionByHash,\n  eth_getTransactionCount,\n  eth_getTransactionReceipt,\n  eth_maxPriorityFeePerGas,\n  eth_sendRawTransaction,\n  fromBytes,\n  fromGwei,\n  fromHex,\n  getAddress,\n  getBuyWithCryptoHistory,\n  getBuyWithCryptoQuote,\n  getBuyWithCryptoStatus,\n  getBuyWithCryptoTransfer,\n  getContract,\n  getContractEvents,\n  getGasPrice,\n  getRpcClient,\n  getUser,\n  hexToBigInt,\n  hexToBool,\n  hexToBytes,\n  hexToNumber,\n  hexToString,\n  hexToUint8Array,\n  isAddress,\n  isBaseTransactionOptions,\n  isHex,\n  keccak256,\n  numberToBytes,\n  numberToHex,\n  padHex,\n  parseEventLogs,\n  prepareContractCall,\n  prepareEvent,\n  prepareTransaction,\n  readContract,\n  resolveMethod,\n  sendAndConfirmTransaction,\n  sendBatchTransaction,\n  sendTransaction,\n  serializeTransaction2 as serializeTransaction,\n  sha2562 as sha256,\n  signTransaction,\n  simulateTransaction,\n  stringToBytes,\n  stringToHex,\n  toBytes,\n  toEther,\n  toHex,\n  toSerializableTransaction,\n  toTokens,\n  toUnits,\n  toWei,\n  uint8ArrayToHex,\n  verifyTypedData,\n  waitForReceipt,\n  watchBlockNumber,\n  watchContractEvents\n};\n//# sourceMappingURL=thirdweb.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/thirdweb_react.js",
    "content": "import {\n  getListing\n} from \"./chunk-M3WBOOWW.js\";\nimport {\n  getContractMetadata\n} from \"./chunk-UZVZQZEM.js\";\nimport {\n  AutoConnect,\n  Blobbie,\n  BuyScreen,\n  ConnectButton,\n  ConnectModalContent,\n  ConnectModal_default,\n  DynamicHeight,\n  LazyBuyScreen,\n  MediaRenderer,\n  Modal,\n  SetRootElementContext,\n  canFitWideModal,\n  createConnectionManager,\n  defaultTokens,\n  fetchBuySupportedDestinations,\n  getConnectLocale,\n  getDefaultToken,\n  getPostOnRampQuote,\n  getTokenBalance,\n  invalidateWalletBalance,\n  trackPayEvent,\n  useActiveWalletChain,\n  useActiveWalletConnectionStatus,\n  useAdminWallet,\n  useAutoConnect,\n  useBuyHistory,\n  useBuyWithCryptoQuote,\n  useBuyWithCryptoStatus,\n  useBuyWithFiatQuote,\n  useBuyWithFiatStatus,\n  useChainExplorers,\n  useChainMetadata,\n  useConnect,\n  useConnectLocale,\n  useConnectedWallets,\n  useDisconnect,\n  useNetworkSwitcherModal,\n  usePreloadWalletProviders,\n  useProfiles,\n  useSetActiveWallet,\n  useSetActiveWalletConnectionStatus,\n  useSiweAuth,\n  useSwitchActiveWalletChain,\n  useWaitForReceipt,\n  useWalletDetailsModal\n} from \"./chunk-FHZU65JA.js\";\nimport {\n  isERC1155,\n  isERC721\n} from \"./chunk-QLCPWJYR.js\";\nimport \"./chunk-EGJT3UEX.js\";\nimport \"./chunk-YG7T4W43.js\";\nimport \"./chunk-R554PO5S.js\";\nimport \"./chunk-5THTWD2M.js\";\nimport {\n  AccentFailIcon,\n  getDefaultWallets\n} from \"./chunk-7ZNEOXS2.js\";\nimport {\n  LoadingScreen,\n  modalMaxWidthCompact,\n  modalMaxWidthWide,\n  reservedScreens,\n  useActiveAccount,\n  useSetupScreen,\n  wideModalMaxHeight\n} from \"./chunk-KWA5PGSC.js\";\nimport \"./chunk-MGEBXLXC.js\";\nimport {\n  linkProfile\n} from \"./chunk-65EUCVOP.js\";\nimport \"./chunk-HO57TQQM.js\";\nimport {\n  Spinner,\n  WalletUIStatesProvider\n} from \"./chunk-AARWH2GQ.js\";\nimport {\n  Button,\n  ButtonLink,\n  CheckCircledIcon,\n  ConnectionManagerCtx,\n  Container,\n  CustomThemeProvider,\n  ExternalLinkIcon,\n  ModalHeader,\n  QueryClient,\n  QueryClientProvider,\n  Spacer,\n  StyledDiv,\n  Text,\n  darkTheme,\n  getLastAuthProvider,\n  getWalletBalance,\n  hasSponsoredTransactionsEnabled,\n  iconSize,\n  lightTheme,\n  queryOptions,\n  radius,\n  replaceEqualDeep,\n  useActiveWallet,\n  useConnectionManager,\n  useConnectionManagerCtx,\n  useCustomTheme,\n  useEnsAvatar,\n  useEnsName,\n  useMutation,\n  useQuery,\n  useQueryClient,\n  useSocialProfiles,\n  useSuspenseQuery,\n  useWalletBalance,\n  useWalletImage,\n  useWalletInfo\n} from \"./chunk-HI6IFF64.js\";\nimport {\n  require_jsx_runtime\n} from \"./chunk-U3QNWT4A.js\";\nimport \"./chunk-GGVPULQZ.js\";\nimport \"./chunk-6RU56BH7.js\";\nimport \"./chunk-EHYTL2NA.js\";\nimport {\n  isWalletConnect\n} from \"./chunk-RC344ZND.js\";\nimport \"./chunk-YGRUPXVB.js\";\nimport \"./chunk-XB34LHR5.js\";\nimport {\n  formatExplorerTxUrl\n} from \"./chunk-5U5XBS6S.js\";\nimport {\n  isEcosystemWallet\n} from \"./chunk-XC5J5ANL.js\";\nimport {\n  getNFT\n} from \"./chunk-36FW3ZLE.js\";\nimport {\n  getNFT as getNFT2\n} from \"./chunk-7ETS5GH6.js\";\nimport \"./chunk-4U2YWK76.js\";\nimport \"./chunk-VJFQPB47.js\";\nimport \"./chunk-NOA36MVL.js\";\nimport {\n  getInjectedProvider\n} from \"./chunk-FXBAO7K3.js\";\nimport \"./chunk-PWFRCBEK.js\";\nimport {\n  isSmartWallet\n} from \"./chunk-F2BEZVSV.js\";\nimport \"./chunk-NKFQ2LZT.js\";\nimport \"./chunk-2HYPHUAF.js\";\nimport \"./chunk-FNI7M3UI.js\";\nimport \"./chunk-Q3TN3POE.js\";\nimport {\n  isInAppWallet\n} from \"./chunk-O6KA6WKL.js\";\nimport \"./chunk-ZLJ6VYSG.js\";\nimport \"./chunk-6WNCTW75.js\";\nimport \"./chunk-QLJVAXYD.js\";\nimport \"./chunk-CLN3QXW2.js\";\nimport \"./chunk-4RRAU5V7.js\";\nimport \"./chunk-QVNJVROL.js\";\nimport {\n  isCoinbaseSDKWallet\n} from \"./chunk-R76ND7QY.js\";\nimport \"./chunk-G26WKBGM.js\";\nimport \"./chunk-7AY3QZZV.js\";\nimport \"./chunk-BZXRHH4X.js\";\nimport \"./chunk-QIUEWTOP.js\";\nimport \"./chunk-2RRVHQYX.js\";\nimport \"./chunk-XTOEMUZK.js\";\nimport {\n  randomBytesHex\n} from \"./chunk-S6VQW2VI.js\";\nimport \"./chunk-J7FYPWA5.js\";\nimport \"./chunk-EIBOABXT.js\";\nimport \"./chunk-I2GEMA2B.js\";\nimport \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-N24CESYN.js\";\nimport {\n  ClientScopedStorage\n} from \"./chunk-CYVKJMZE.js\";\nimport {\n  webLocalStorage\n} from \"./chunk-VIBS7Y3M.js\";\nimport \"./chunk-5EFACFVF.js\";\nimport \"./chunk-VJOHABJ4.js\";\nimport \"./chunk-6FLJU7W7.js\";\nimport \"./chunk-PB7CMXGP.js\";\nimport \"./chunk-SJKAB62J.js\";\nimport {\n  require_react\n} from \"./chunk-2MTJELC7.js\";\nimport {\n  getBuyWithCryptoHistory,\n  getContractEvents,\n  isBaseTransactionOptions,\n  simulateTransaction,\n  watchContractEvents\n} from \"./chunk-S4ZGHGPT.js\";\nimport {\n  sendBatchTransaction\n} from \"./chunk-VUXPTMXZ.js\";\nimport {\n  estimateGasCost,\n  getPayBuyWithFiatHistoryEndpoint\n} from \"./chunk-PHVX3XOV.js\";\nimport {\n  sendAndConfirmTransaction\n} from \"./chunk-ADIC4TC2.js\";\nimport \"./chunk-4PEUWIWY.js\";\nimport \"./chunk-DYKFWRMQ.js\";\nimport \"./chunk-TTOANXGP.js\";\nimport \"./chunk-AWMNEQRO.js\";\nimport {\n  once,\n  prepareContractCall\n} from \"./chunk-6XF6HOWC.js\";\nimport {\n  sendTransaction\n} from \"./chunk-JTR2PIFP.js\";\nimport \"./chunk-MWAIX6LF.js\";\nimport {\n  estimateGas,\n  getGasPrice\n} from \"./chunk-JZC47WAY.js\";\nimport {\n  eth_getBlockByNumber\n} from \"./chunk-CXAZLQ2Z.js\";\nimport {\n  resolvePromisedValue\n} from \"./chunk-QC3K2OKT.js\";\nimport \"./chunk-7ZCK2FX5.js\";\nimport {\n  encode\n} from \"./chunk-7QDK5KLB.js\";\nimport {\n  toUnits\n} from \"./chunk-UY2SRO54.js\";\nimport {\n  NATIVE_TOKEN_ADDRESS,\n  isNativeTokenAddress\n} from \"./chunk-673YCYST.js\";\nimport {\n  eth_blockNumber,\n  waitForReceipt,\n  watchBlockNumber\n} from \"./chunk-JBQP4JIV.js\";\nimport \"./chunk-4OCU6WGG.js\";\nimport \"./chunk-3DBHE3NE.js\";\nimport {\n  isObjectWithKeys\n} from \"./chunk-3ZOYRTTJ.js\";\nimport \"./chunk-5CO5G7XZ.js\";\nimport \"./chunk-ZNEQLT5Q.js\";\nimport \"./chunk-NPXNISXJ.js\";\nimport \"./chunk-PK5NRJAC.js\";\nimport \"./chunk-4BCIASJM.js\";\nimport {\n  getContract\n} from \"./chunk-7VZHRFCE.js\";\nimport \"./chunk-CNLOA7AS.js\";\nimport {\n  readContract\n} from \"./chunk-AG4NO6K6.js\";\nimport \"./chunk-NPJBMLFY.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-U7TO6S3N.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport {\n  numberToHex\n} from \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport {\n  __toESM\n} from \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js\nvar import_jsx_runtime = __toESM(require_jsx_runtime(), 1);\nvar import_react2 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useIsAutoConnecting.js\nvar import_react = __toESM(require_react(), 1);\nfunction useIsAutoConnecting() {\n  const manager = useConnectionManagerCtx(\"useIsAutoConnecting\");\n  const store = manager.isAutoConnecting;\n  return (0, import_react.useSyncExternalStore)(store.subscribe, store.getValue, store.getValue);\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js\nfunction ConnectEmbed(props) {\n  var _a, _b, _c;\n  const activeWallet = useActiveWallet();\n  const activeAccount = useActiveAccount();\n  const siweAuth = useSiweAuth(activeWallet, activeAccount, props.auth);\n  const show = !activeAccount || siweAuth.requiresAuth && !siweAuth.isLoggedIn;\n  const connectionManager = useConnectionManager();\n  (0, import_react2.useEffect)(() => {\n    if (props.chain) {\n      connectionManager.defineChains([props.chain]);\n    }\n  }, [props.chain, connectionManager]);\n  (0, import_react2.useEffect)(() => {\n    if (props.chains) {\n      connectionManager.defineChains(props.chains);\n    }\n  }, [props.chains, connectionManager]);\n  const wallets = (0, import_react2.useMemo)(() => props.wallets || getDefaultWallets({\n    appMetadata: props.appMetadata,\n    chains: props.chains\n  }), [props.wallets, props.appMetadata, props.chains]);\n  const localeId = props.locale || \"en_US\";\n  const localeQuery = useConnectLocale(localeId);\n  usePreloadWalletProviders({\n    wallets,\n    client: props.client\n  });\n  const modalSize = (0, import_react2.useMemo)(() => {\n    return !canFitWideModal() || wallets.length === 1 ? \"compact\" : props.modalSize || \"compact\";\n  }, [wallets.length, props.modalSize]);\n  const meta = (0, import_react2.useMemo)(() => {\n    return {\n      privacyPolicyUrl: props.privacyPolicyUrl,\n      showThirdwebBranding: props.showThirdwebBranding !== false,\n      termsOfServiceUrl: props.termsOfServiceUrl,\n      title: void 0,\n      titleIconUrl: void 0,\n      requireApproval: props.requireApproval\n    };\n  }, [\n    props.privacyPolicyUrl,\n    props.showThirdwebBranding,\n    props.termsOfServiceUrl,\n    props.requireApproval\n  ]);\n  const preferredChain = ((_a = props.accountAbstraction) == null ? void 0 : _a.chain) || props.chain || ((_b = props.chains) == null ? void 0 : _b[0]);\n  const autoConnectComp = props.autoConnect !== false && (0, import_jsx_runtime.jsx)(AutoConnect, { chain: preferredChain, appMetadata: props.appMetadata, client: props.client, wallets, accountAbstraction: props.accountAbstraction, timeout: typeof props.autoConnect === \"boolean\" ? void 0 : (_c = props.autoConnect) == null ? void 0 : _c.timeout, onConnect: props.onConnect });\n  if (show) {\n    if (!localeQuery.data) {\n      return (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [autoConnectComp, (0, import_jsx_runtime.jsx)(CustomThemeProvider, { theme: props.theme, children: (0, import_jsx_runtime.jsx)(EmbedContainer, { modalSize, children: (0, import_jsx_runtime.jsx)(LoadingScreen, {}) }) })] });\n    }\n    return (0, import_jsx_runtime.jsxs)(WalletUIStatesProvider, { theme: props.theme, isOpen: true, children: [(0, import_jsx_runtime.jsx)(ConnectEmbedContent, { auth: props.auth, accountAbstraction: props.accountAbstraction, chain: preferredChain, chains: props.chains, client: props.client, connectLocale: localeQuery.data, size: modalSize, meta, header: props.header, localeId: props.locale || \"en_US\", onConnect: props.onConnect, recommendedWallets: props.recommendedWallets, showAllWallets: props.showAllWallets, walletConnect: props.walletConnect, wallets, className: props.className, modalSize, style: props.style, welcomeScreen: props.welcomeScreen }), autoConnectComp] });\n  }\n  return (0, import_jsx_runtime.jsx)(\"div\", { children: autoConnectComp });\n}\nvar ConnectEmbedContent = (props) => {\n  const screenSetup = useSetupScreen({\n    size: props.size,\n    welcomeScreen: void 0,\n    wallets: props.wallets\n  });\n  const { setScreen, initialScreen, screen } = screenSetup;\n  const activeWallet = useActiveWallet();\n  const activeAccount = useActiveAccount();\n  const siweAuth = useSiweAuth(activeWallet, activeAccount, props.auth);\n  const isAutoConnecting = useIsAutoConnecting();\n  let content = null;\n  (0, import_react2.useEffect)(() => {\n    if (siweAuth.requiresAuth && !siweAuth.isLoggedIn && activeAccount && screen === initialScreen) {\n      setScreen(reservedScreens.signIn);\n    }\n  }, [siweAuth, setScreen, activeAccount, screen, initialScreen]);\n  const modalSize = !canFitWideModal() ? \"compact\" : props.modalSize || \"compact\";\n  if (isAutoConnecting) {\n    content = (0, import_jsx_runtime.jsx)(LoadingScreen, {});\n  } else {\n    content = (0, import_jsx_runtime.jsx)(ConnectModalContent, { shouldSetActive: true, screenSetup, isOpen: true, onClose: () => {\n      setScreen(initialScreen);\n    }, setModalVisibility: () => {\n    }, accountAbstraction: props.accountAbstraction, auth: props.auth, chain: props.chain, chains: props.chains, client: props.client, connectLocale: props.connectLocale, meta: {\n      ...props.meta,\n      title: typeof props.header === \"object\" ? props.header.title : void 0,\n      titleIconUrl: typeof props.header === \"object\" ? props.header.titleIcon : void 0\n    }, size: props.size, welcomeScreen: props.welcomeScreen, hideHeader: !props.header, onConnect: props.onConnect, recommendedWallets: props.recommendedWallets, showAllWallets: props.showAllWallets, walletConnect: props.walletConnect, wallets: props.wallets, modalHeader: void 0, walletIdsToHide: void 0 });\n  }\n  return (0, import_jsx_runtime.jsx)(EmbedContainer, { modalSize, className: props.className, style: props.style, children: modalSize === \"wide\" ? content : (0, import_jsx_runtime.jsxs)(DynamicHeight, { children: [\" \", content, \" \"] }) });\n};\nvar EmbedContainer = StyledDiv((props) => {\n  const { modalSize } = props;\n  const theme = useCustomTheme();\n  return {\n    color: theme.colors.primaryText,\n    background: theme.colors.modalBg,\n    height: modalSize === \"compact\" ? \"auto\" : wideModalMaxHeight,\n    width: modalSize === \"compact\" ? modalMaxWidthCompact : modalMaxWidthWide,\n    boxSizing: \"border-box\",\n    position: \"relative\",\n    lineHeight: \"normal\",\n    borderRadius: radius.xl,\n    border: `1px solid ${theme.colors.borderColor}`,\n    overflow: \"hidden\",\n    fontFamily: theme.fontFamily,\n    \"& *::selection\": {\n      backgroundColor: theme.colors.selectedTextBg,\n      color: theme.colors.selectedTextColor\n    },\n    \"& *\": {\n      boxSizing: \"border-box\"\n    }\n  };\n});\n\n// node_modules/thirdweb/dist/esm/react/web/ui/TransactionButton/index.js\nvar import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/transaction/transaction-button-utils.js\nvar useTransactionButtonMutation = (props, sendTransactionFn) => {\n  const { transaction, onTransactionSent, onTransactionConfirmed, onError, onClick } = props;\n  return useMutation({\n    mutationFn: async () => {\n      if (onClick) {\n        onClick();\n      }\n      try {\n        const resolvedTx = await transaction();\n        const result = await sendTransactionFn(resolvedTx);\n        if (onTransactionSent) {\n          onTransactionSent(result);\n        }\n        if (onTransactionConfirmed) {\n          const receipt = await waitForReceipt(result);\n          if (receipt.status === \"reverted\") {\n            throw new Error(`Execution reverted: ${stringify(receipt, null, 2)}`);\n          }\n          onTransactionConfirmed(receipt);\n        }\n      } catch (error) {\n        if (onError) {\n          onError(error);\n        }\n      } finally {\n      }\n    }\n  });\n};\n\n// node_modules/thirdweb/dist/esm/react/web/hooks/transaction/useSendTransaction.js\nvar import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);\nvar import_react5 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/transaction/useSendTransaction.js\nfunction useSendTransactionCore(args) {\n  const { showPayModal, gasless, wallet, switchChain } = args;\n  let _account = wallet == null ? void 0 : wallet.getAccount();\n  return useMutation({\n    mutationFn: async (tx) => {\n      var _a;\n      if (wallet && tx.chain.id !== ((_a = wallet.getChain()) == null ? void 0 : _a.id)) {\n        await switchChain(tx.chain);\n        _account = wallet.getAccount();\n      }\n      const account = _account;\n      if (!account) {\n        throw new Error(\"No active account\");\n      }\n      if (!showPayModal) {\n        return sendTransaction({\n          transaction: tx,\n          account,\n          gasless\n        });\n      }\n      return new Promise((resolve, reject) => {\n        const sendTx = async () => {\n          try {\n            const res = await sendTransaction({\n              transaction: tx,\n              account,\n              gasless\n            });\n            resolve(res);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        (async () => {\n          try {\n            const [_nativeValue, _erc20Value, supportedDestinations] = await Promise.all([\n              resolvePromisedValue(tx.value),\n              resolvePromisedValue(tx.erc20Value),\n              fetchBuySupportedDestinations(tx.client).catch(() => null)\n            ]);\n            if (!supportedDestinations) {\n              sendTx();\n              return;\n            }\n            if (!supportedDestinations.map((x) => x.chain.id).includes(tx.chain.id) || _erc20Value && !supportedDestinations.some((x) => x.chain.id === tx.chain.id && x.tokens.find((t) => t.address.toLowerCase() === _erc20Value.tokenAddress.toLowerCase()))) {\n              sendTx();\n              return;\n            }\n            const nativeValue = _nativeValue || 0n;\n            const erc20Value = (_erc20Value == null ? void 0 : _erc20Value.amountWei) || 0n;\n            const [nativeBalance, erc20Balance, gasCost] = await Promise.all([\n              getWalletBalance({\n                client: tx.client,\n                address: account.address,\n                chain: tx.chain\n              }),\n              (_erc20Value == null ? void 0 : _erc20Value.tokenAddress) ? getTokenBalance({\n                client: tx.client,\n                account,\n                chain: tx.chain,\n                tokenAddress: _erc20Value.tokenAddress\n              }) : void 0,\n              getTotalTxCostForBuy(tx, account.address)\n            ]);\n            const gasSponsored = hasSponsoredTransactionsEnabled(wallet);\n            const txGasCost = gasSponsored ? 0n : gasCost;\n            const nativeCost = nativeValue + txGasCost;\n            const shouldShowModal = erc20Value > 0n && erc20Balance && erc20Balance.value < erc20Value || nativeCost > 0n && nativeBalance.value < nativeCost;\n            if (shouldShowModal) {\n              showPayModal({\n                tx,\n                sendTx,\n                rejectTx: reject,\n                resolveTx: resolve\n              });\n            } else {\n              sendTx();\n            }\n          } catch (e) {\n            console.error(\"Failed to estimate cost\", e);\n            sendTx();\n          }\n        })();\n      });\n    }\n  });\n}\nasync function getTotalTxCostForBuy(tx, from) {\n  try {\n    const gasCost = await estimateGasCost({\n      transaction: tx,\n      from\n    });\n    const bufferCost = gasCost.wei / 10n;\n    const txValue = await resolvePromisedValue(tx.value);\n    return gasCost.wei + bufferCost + (txValue || 0n);\n  } catch {\n    if (from) {\n      return await getTotalTxCostForBuy(tx);\n    }\n    const value = await resolvePromisedValue(tx.value);\n    const gasPrice = await getGasPrice({\n      client: tx.client,\n      chain: tx.chain\n    });\n    const buffer = 2000000n * gasPrice;\n    if (!value) {\n      return 0n + buffer;\n    }\n    return value + buffer;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/TransactionButton/TransactionModal.js\nvar import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);\nvar import_react4 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/web/ui/TransactionButton/ExecutingScreen.js\nvar import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);\nvar import_react3 = __toESM(require_react(), 1);\nfunction ExecutingTxScreen(props) {\n  var _a;\n  const sendTxCore = useSendTransaction({\n    payModal: false\n  });\n  const [txHash, setTxHash] = (0, import_react3.useState)();\n  const chainExplorers = useChainExplorers(props.tx.chain);\n  const [status, setStatus] = (0, import_react3.useState)(\"loading\");\n  const sendTx = (0, import_react3.useCallback)(async () => {\n    setStatus(\"loading\");\n    try {\n      const txData = await sendTxCore.mutateAsync(props.tx);\n      setTxHash(txData.transactionHash);\n      props.onTxSent(txData);\n      setStatus(\"sent\");\n    } catch (e) {\n      console.error(e);\n      setStatus(\"failed\");\n    }\n  }, [sendTxCore, props.tx, props.onTxSent]);\n  const done = (0, import_react3.useRef)(false);\n  (0, import_react3.useEffect)(() => {\n    if (done.current) {\n      return;\n    }\n    done.current = true;\n    sendTx();\n  }, [sendTx]);\n  return (0, import_jsx_runtime2.jsxs)(Container, { p: \"lg\", children: [(0, import_jsx_runtime2.jsx)(ModalHeader, { title: \"Transaction\", onBack: props.onBack }), (0, import_jsx_runtime2.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime2.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime2.jsxs)(Container, { flex: \"row\", center: \"x\", children: [status === \"loading\" && (0, import_jsx_runtime2.jsx)(Spinner, { size: \"xxl\", color: \"accentText\" }), status === \"failed\" && (0, import_jsx_runtime2.jsx)(AccentFailIcon, { size: iconSize[\"3xl\"] }), status === \"sent\" && (0, import_jsx_runtime2.jsx)(Container, { color: \"success\", flex: \"row\", center: \"both\", children: (0, import_jsx_runtime2.jsx)(CheckCircledIcon, { width: iconSize[\"3xl\"], height: iconSize[\"3xl\"] }) })] }), (0, import_jsx_runtime2.jsx)(Spacer, { y: \"lg\" }), (0, import_jsx_runtime2.jsxs)(Text, { color: \"primaryText\", center: true, size: \"lg\", children: [status === \"loading\" && \"Sending transaction\", status === \"failed\" && \"Transaction failed\", status === \"sent\" && \"Transaction sent\"] }), (0, import_jsx_runtime2.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime2.jsx)(Text, { color: \"danger\", center: true, size: \"sm\", children: status === \"failed\" && sendTxCore.error ? sendTxCore.error.message : \"\" }), (0, import_jsx_runtime2.jsx)(Spacer, { y: \"xxl\" }), (0, import_jsx_runtime2.jsx)(Spacer, { y: \"xxl\" }), status === \"failed\" && (0, import_jsx_runtime2.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: sendTx, children: \"Try Again\" }), status === \"sent\" && (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [(0, import_jsx_runtime2.jsx)(Button, { variant: \"accent\", fullWidth: true, onClick: props.closeModal, children: \"Done\" }), txHash && (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [(0, import_jsx_runtime2.jsx)(Spacer, { y: \"sm\" }), (0, import_jsx_runtime2.jsxs)(ButtonLink, { fullWidth: true, variant: \"outline\", href: formatExplorerTxUrl(((_a = chainExplorers.explorers[0]) == null ? void 0 : _a.url) ?? \"\", txHash), target: \"_blank\", as: \"a\", gap: \"xs\", style: {\n    textDecoration: \"none\",\n    color: \"inherit\"\n  }, children: [\"View on Explorer\", (0, import_jsx_runtime2.jsx)(ExternalLinkIcon, { width: iconSize.sm, height: iconSize.sm })] })] })] })] });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/TransactionButton/TransactionModal.js\nfunction TransactionModal(props) {\n  const account = useActiveAccount();\n  const wallet = useActiveWallet();\n  useQuery({\n    queryKey: [\"transaction-modal-event\"],\n    queryFn: () => {\n      if (!account || !wallet)\n        return;\n      trackPayEvent({\n        client: props.client,\n        walletAddress: account.address,\n        walletType: wallet.id,\n        dstChainId: props.tx.chain.id,\n        event: \"open_pay_transaction_modal\"\n      });\n    },\n    enabled: !!wallet\n  });\n  return (0, import_jsx_runtime3.jsx)(CustomThemeProvider, { theme: props.theme, children: (0, import_jsx_runtime3.jsx)(Modal, { open: true, size: \"compact\", setOpen: (_open) => {\n    if (!_open) {\n      props.onClose();\n    }\n  }, children: (0, import_jsx_runtime3.jsx)(TransactionModalContent, { ...props }) }) });\n}\nfunction TransactionModalContent(props) {\n  const localeQuery = useConnectLocale(props.localeId);\n  const [screen, setScreen] = (0, import_react4.useState)(\"buy\");\n  if (!localeQuery.data) {\n    return (0, import_jsx_runtime3.jsx)(LoadingScreen, {});\n  }\n  if (screen === \"execute-tx\") {\n    return (0, import_jsx_runtime3.jsx)(ExecutingTxScreen, { tx: props.tx, closeModal: props.onClose, onTxSent: props.onTxSent });\n  }\n  return (0, import_jsx_runtime3.jsx)(LazyBuyScreen, { title: props.title, isEmbed: false, client: props.client, onBack: props.onBack, supportedTokens: props.supportedTokens, connectLocale: localeQuery.data, theme: typeof props.theme === \"string\" ? props.theme : props.theme.type, payOptions: props.payOptions, onDone: () => {\n    setScreen(\"execute-tx\");\n  }, connectOptions: void 0 });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/hooks/transaction/useSendTransaction.js\nfunction useSendTransaction(config = {}) {\n  const switchChain = useSwitchActiveWalletChain();\n  const wallet = useActiveWallet();\n  const setRootEl = (0, import_react5.useContext)(SetRootElementContext);\n  const payModal = config.payModal;\n  let payModalEnabled = true;\n  if (payModal === false || config.gasless) {\n    payModalEnabled = false;\n  }\n  const showPayModal = (data) => {\n    var _a;\n    if (payModal === false)\n      return;\n    setRootEl((0, import_jsx_runtime4.jsx)(TransactionModal, { title: ((_a = payModal == null ? void 0 : payModal.metadata) == null ? void 0 : _a.name) || \"Transaction\", tx: data.tx, onComplete: data.sendTx, onClose: () => {\n      setRootEl(null);\n      data.rejectTx(new Error(\"User rejected transaction by closing modal\"));\n    }, onTxSent: data.resolveTx, client: data.tx.client, localeId: (payModal == null ? void 0 : payModal.locale) || \"en_US\", supportedTokens: payModal == null ? void 0 : payModal.supportedTokens, theme: (payModal == null ? void 0 : payModal.theme) || \"dark\", payOptions: {\n      buyWithCrypto: payModal == null ? void 0 : payModal.buyWithCrypto,\n      buyWithFiat: payModal == null ? void 0 : payModal.buyWithFiat,\n      purchaseData: payModal == null ? void 0 : payModal.purchaseData,\n      mode: \"transaction\",\n      transaction: data.tx,\n      metadata: payModal == null ? void 0 : payModal.metadata,\n      onPurchaseSuccess: payModal == null ? void 0 : payModal.onPurchaseSuccess\n    } }));\n  };\n  return useSendTransactionCore({\n    showPayModal: !payModalEnabled || payModal === false ? void 0 : showPayModal,\n    gasless: config.gasless,\n    switchChain,\n    wallet\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/TransactionButton/index.js\nfunction TransactionButton(props) {\n  const { children, transaction, onTransactionSent, onTransactionConfirmed, onError, onClick, gasless, payModal, disabled, unstyled, ...buttonProps } = props;\n  const account = useActiveAccount();\n  const sendTransaction2 = useSendTransaction({ gasless, payModal });\n  const { mutate: handleClick, isPending } = useTransactionButtonMutation(props, sendTransaction2.mutateAsync);\n  return (0, import_jsx_runtime5.jsx)(CustomThemeProvider, { theme: props.theme, children: (0, import_jsx_runtime5.jsxs)(Button, { gap: \"xs\", disabled: !account || disabled || isPending, variant: \"primary\", unstyled, \"data-is-loading\": isPending, onClick: () => handleClick(), ...buttonProps, style: !unstyled ? {\n    opacity: !account || disabled ? 0.5 : 1,\n    minWidth: \"165px\",\n    position: \"relative\",\n    ...buttonProps.style\n  } : {\n    position: \"relative\",\n    ...buttonProps.style\n  }, children: [(0, import_jsx_runtime5.jsx)(\"span\", { style: { visibility: isPending ? \"hidden\" : \"visible\" }, children }), isPending && (0, import_jsx_runtime5.jsx)(\"div\", { style: {\n    position: \"absolute\",\n    display: \"flex\",\n    alignItems: \"center\",\n    height: \"100%\",\n    top: 0,\n    bottom: 0,\n    margin: \"auto\"\n  }, children: (0, import_jsx_runtime5.jsx)(Spinner, { size: \"md\", color: \"primaryButtonText\" }) })] }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/providers/thirdweb-provider.js\nvar import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);\nvar import_react7 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/providers/thirdweb-provider.js\nvar import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);\nvar import_react6 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/react/core/utils/structuralSharing.js\nfunction deepEqual(a, b) {\n  if (a === b)\n    return true;\n  if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n    if (a.constructor !== b.constructor)\n      return false;\n    let length;\n    let i;\n    if (Array.isArray(a) && Array.isArray(b)) {\n      length = a.length;\n      if (length !== b.length)\n        return false;\n      for (i = length; i-- !== 0; )\n        if (!deepEqual(a[i], b[i]))\n          return false;\n      return true;\n    }\n    if (a.valueOf !== Object.prototype.valueOf)\n      return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString)\n      return a.toString() === b.toString();\n    const keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length)\n      return false;\n    for (i = length; i-- !== 0; )\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\n        return false;\n    for (i = length; i-- !== 0; ) {\n      const key = keys[i];\n      if (key && !deepEqual(a[key], b[key]))\n        return false;\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\nfunction structuralSharing(oldData, newData) {\n  if (deepEqual(oldData, newData)) {\n    return oldData;\n  }\n  return replaceEqualDeep(oldData, newData);\n}\n\n// node_modules/thirdweb/dist/esm/react/core/providers/thirdweb-provider.js\nfunction ThirdwebProviderCore(props) {\n  const [el, setEl] = (0, import_react6.useState)(null);\n  const [queryClient] = (0, import_react6.useState)(() => new QueryClient({\n    defaultOptions: {\n      mutations: {\n        onSettled: (data, _error, variables) => {\n          if (isBaseTransactionOptions(variables)) {\n            if (isObjectWithKeys(data, [\"transactionHash\"]) && isObjectWithKeys(variables, [\"client\", \"chain\"])) {\n              waitForReceipt({\n                transactionHash: data.transactionHash,\n                // We know it exists from the if\n                client: variables.client,\n                chain: variables.chain\n              }).catch((e) => {\n                console.error(\"[Transaction Error]\", e);\n              }).then(() => {\n                var _a, _b, _c;\n                return Promise.all([\n                  queryClient.invalidateQueries({\n                    queryKey: (\n                      // invalidate any readContract queries for this chainId:contractAddress\n                      [\n                        \"readContract\",\n                        (_a = variables.__contract) == null ? void 0 : _a.chain.id,\n                        (_b = variables.__contract) == null ? void 0 : _b.address\n                      ]\n                    )\n                  }),\n                  invalidateWalletBalance(queryClient, (_c = variables.__contract) == null ? void 0 : _c.chain.id)\n                ]);\n              });\n            }\n          }\n        }\n      },\n      queries: {\n        // With SSR, we usually want to set some default staleTime\n        // above 0 to avoid refetching immediately on the client\n        staleTime: 60 * 1e3,\n        structuralSharing\n      }\n    }\n  }));\n  return (0, import_jsx_runtime6.jsx)(ConnectionManagerCtx.Provider, { value: props.manager, children: (0, import_jsx_runtime6.jsxs)(QueryClientProvider, { client: queryClient, children: [(0, import_jsx_runtime6.jsx)(SetRootElementContext.Provider, { value: setEl, children: props.children }), el] }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/providers/thirdweb-provider.js\nfunction ThirdwebProvider(props) {\n  const connectionManager = (0, import_react7.useMemo)(() => props.connectionManager || createConnectionManager(webLocalStorage), [props.connectionManager]);\n  return (0, import_jsx_runtime7.jsx)(ThirdwebProviderCore, { manager: connectionManager, children: props.children });\n}\n\n// node_modules/thirdweb/dist/esm/wallets/eip5792/get-capabilities.js\nasync function getCapabilities({ wallet }) {\n  const account = wallet.getAccount();\n  if (!account) {\n    return {\n      message: `Can't get capabilities, no account connected for wallet: ${wallet.id}`\n    };\n  }\n  if (isSmartWallet(wallet)) {\n    const { smartWalletGetCapabilities } = await import(\"./smart-wallet-capabilities-TZBEJHWD.js\");\n    return smartWalletGetCapabilities({ wallet });\n  }\n  if (isInAppWallet(wallet)) {\n    const { inAppWalletGetCapabilities } = await import(\"./in-app-wallet-capabilities-4KBZBWHO.js\");\n    return inAppWalletGetCapabilities({ wallet });\n  }\n  if (isCoinbaseSDKWallet(wallet)) {\n    const { coinbaseSDKWalletGetCapabilities } = await import(\"./coinbaseWebSDK-RVHYUQN6.js\");\n    return coinbaseSDKWalletGetCapabilities({ wallet });\n  }\n  if (isWalletConnect(wallet)) {\n    return {\n      message: \"getCapabilities is not yet supported with Wallet Connect\"\n    };\n  }\n  const provider = getInjectedProvider(wallet.id);\n  try {\n    return await provider.request({\n      method: \"wallet_getCapabilities\",\n      params: [account.address]\n    });\n  } catch (error) {\n    if (/unsupport|not support|not available/i.test(error.message)) {\n      return {\n        message: `${wallet.id} does not support wallet_getCapabilities, reach out to them directly to request EIP-5792 support.`\n      };\n    }\n    throw error;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useCapabilities.js\nfunction useCapabilities(options) {\n  var _a;\n  const wallet = useActiveWallet();\n  return useQuery({\n    queryKey: [\n      \"getCapabilities\",\n      ((_a = wallet == null ? void 0 : wallet.getChain()) == null ? void 0 : _a.id) || -1,\n      wallet == null ? void 0 : wallet.id\n    ],\n    queryFn: async () => {\n      if (!wallet) {\n        return {\n          message: \"Can't get capabilities, no wallet connected\"\n        };\n      }\n      return getCapabilities({ wallet });\n    },\n    retry: false,\n    ...options == null ? void 0 : options.queryOptions\n  });\n}\n\n// node_modules/thirdweb/dist/esm/wallets/eip5792/send-calls.js\nasync function sendCalls(options) {\n  const { wallet, calls, capabilities, version = \"1.0\", chain = wallet.getChain() } = options;\n  if (!chain) {\n    throw new Error(`Cannot send calls, no active chain found for wallet: ${wallet.id}`);\n  }\n  const account = wallet.getAccount();\n  if (!account) {\n    throw new Error(`Cannot send calls, no account connected for wallet: ${wallet.id}`);\n  }\n  if (isSmartWallet(wallet) || isInAppWallet(wallet)) {\n    const { inAppWalletSendCalls } = await import(\"./in-app-wallet-calls-GQSQW7CK.js\");\n    return inAppWalletSendCalls({ account, calls });\n  }\n  const preparedCalls = await Promise.all(calls.map(async (call) => {\n    const { to, value } = call;\n    if (to === void 0 && call.data === void 0) {\n      throw new Error(\"Cannot send call, `to` or `data` must be provided.\");\n    }\n    const [_to, _data, _value] = await Promise.all([\n      resolvePromisedValue(to),\n      encode(call),\n      resolvePromisedValue(value)\n    ]);\n    return {\n      to: _to,\n      data: _data,\n      value: typeof _value === \"bigint\" || typeof _value === \"number\" ? numberToHex(_value) : void 0\n    };\n  }));\n  const injectedWalletCallParams = [\n    {\n      from: getAddress(account.address),\n      calls: preparedCalls,\n      capabilities,\n      version,\n      chainId: numberToHex(chain.id)\n    }\n  ];\n  if (isCoinbaseSDKWallet(wallet)) {\n    const { coinbaseSDKWalletSendCalls } = await import(\"./coinbaseWebSDK-RVHYUQN6.js\");\n    return coinbaseSDKWalletSendCalls({\n      wallet,\n      params: injectedWalletCallParams\n    });\n  }\n  if (isWalletConnect(wallet)) {\n    throw new Error(\"sendCalls is not yet supported for Wallet Connect\");\n  }\n  const provider = getInjectedProvider(wallet.id);\n  try {\n    return await provider.request({\n      method: \"wallet_sendCalls\",\n      params: injectedWalletCallParams\n      // The viem type definition is slightly different\n    });\n  } catch (error) {\n    if (/unsupport|not support/i.test(error.message)) {\n      throw new Error(`${wallet.id} does not support wallet_sendCalls, reach out to them directly to request EIP-5792 support.`);\n    }\n    throw error;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/wallets/eip5792/get-calls-status.js\nasync function getCallsStatus({ wallet, client, bundleId }) {\n  const account = wallet.getAccount();\n  if (!account) {\n    throw new Error(`Failed to get call status, no account found for wallet ${wallet.id}`);\n  }\n  if (isSmartWallet(wallet) || isInAppWallet(wallet)) {\n    const { inAppWalletGetCallsStatus } = await import(\"./in-app-wallet-calls-GQSQW7CK.js\");\n    return inAppWalletGetCallsStatus({ wallet, client, bundleId });\n  }\n  if (isCoinbaseSDKWallet(wallet)) {\n    const { coinbaseSDKWalletGetCallsStatus } = await import(\"./coinbaseWebSDK-RVHYUQN6.js\");\n    return coinbaseSDKWalletGetCallsStatus({ wallet, bundleId });\n  }\n  if (isWalletConnect(wallet)) {\n    throw new Error(\"getCallsStatus is not yet supported for Wallet Connect\");\n  }\n  const provider = getInjectedProvider(wallet.id);\n  try {\n    return await provider.request({\n      method: \"wallet_getCallsStatus\",\n      params: [bundleId]\n    });\n  } catch (error) {\n    if (/unsupport|not support/i.test(error.message)) {\n      throw new Error(`${wallet.id} does not support wallet_getCallsStatus, reach out to them directly to request EIP-5792 support.`);\n    }\n    throw error;\n  }\n}\n\n// node_modules/thirdweb/dist/esm/wallets/eip5792/wait-for-bundle.js\nvar DEFAULT_MAX_BLOCKS_WAIT_TIME = 100;\nvar map = /* @__PURE__ */ new Map();\nfunction waitForBundle(options) {\n  const { bundleId, chain, wallet, client } = options;\n  const chainId = chain.id;\n  const key = `${chainId}:calls_${bundleId}`;\n  const maxBlocksWaitTime = options.maxBlocksWaitTime ?? DEFAULT_MAX_BLOCKS_WAIT_TIME;\n  if (map.has(key)) {\n    return map.get(key);\n  }\n  const promise = new Promise((resolve, reject) => {\n    let blocksWaited = -1;\n    const unwatch = watchBlockNumber({\n      client,\n      chain,\n      onNewBlockNumber: async () => {\n        blocksWaited++;\n        if (blocksWaited >= maxBlocksWaitTime) {\n          unwatch();\n          reject(new Error(`Bundle not confirmed after ${maxBlocksWaitTime} blocks`));\n          return;\n        }\n        try {\n          const result = await getCallsStatus({\n            wallet,\n            client,\n            bundleId\n          });\n          if (result.status === \"CONFIRMED\") {\n            unwatch();\n            resolve(result);\n          }\n        } catch {\n        }\n      }\n    });\n  }).finally(() => {\n    map.delete(key);\n  });\n  map.set(key, promise);\n  return promise;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useSendCalls.js\nfunction useSendCalls({ client, waitForResult = true }) {\n  const activeWallet = useActiveWallet();\n  const queryClient = useQueryClient();\n  return useMutation({\n    mutationFn: async (options) => {\n      const { wallet = activeWallet } = options;\n      const chain = wallet == null ? void 0 : wallet.getChain();\n      if (!wallet || !chain) {\n        throw new Error(\"Failed to send transactions, no connected wallet found.\");\n      }\n      const callsPromise = sendCalls({ ...options, wallet });\n      if (!waitForResult) {\n        return callsPromise;\n      }\n      const result = await waitForBundle({\n        bundleId: await callsPromise,\n        wallet,\n        client,\n        chain\n      });\n      return result;\n    },\n    onSettled: async (_result, _error, variables) => {\n      var _a, _b;\n      const chain = activeWallet == null ? void 0 : activeWallet.getChain();\n      if (!_result || !activeWallet || !chain) {\n        return;\n      }\n      if (typeof _result === \"string\") {\n        await waitForBundle({\n          bundleId: _result,\n          wallet: activeWallet,\n          client,\n          chain\n        }).catch((error) => {\n          console.error(\"Failed to confirm sent bundle and invalidate queries\", _result, error);\n          return void 0;\n        });\n      }\n      for (const call of variables.calls) {\n        queryClient.invalidateQueries({\n          queryKey: [\n            \"readContract\",\n            (_a = call.__contract) == null ? void 0 : _a.chain.id,\n            (_b = call.__contract) == null ? void 0 : _b.address\n          ]\n        });\n      }\n      invalidateWalletBalance(queryClient, chain.id);\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/wallets/useCallsStatus.js\nfunction useCallsStatus(options) {\n  var _a;\n  const { client, bundleId } = options;\n  const wallet = useActiveWallet();\n  return useQuery({\n    queryKey: [\n      \"getCapabilities\",\n      ((_a = wallet == null ? void 0 : wallet.getChain()) == null ? void 0 : _a.id) || -1,\n      wallet == null ? void 0 : wallet.id\n    ],\n    queryFn: async () => {\n      if (!wallet) {\n        throw new Error(\"Failed to get calls status, no wallet connected\");\n      }\n      return getCallsStatus({ wallet, client, bundleId });\n    },\n    retry: false,\n    enabled: !!bundleId && wallet !== void 0,\n    ...options.queryOptions\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/hooks/wallets/useLinkProfile.js\nfunction useLinkProfile() {\n  const wallet = useAdminWallet();\n  return useMutation({\n    mutationKey: [\"profiles\"],\n    mutationFn: async (options) => {\n      var _a;\n      const ecosystem = wallet && isEcosystemWallet(wallet) ? { id: wallet.id, partnerId: (_a = wallet.getConfig()) == null ? void 0 : _a.partnerId } : void 0;\n      const optionsWithEcosystem = { ...options, ecosystem };\n      return linkProfile(optionsWithEcosystem);\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/utils/function-id.js\nvar functionIdCache = /* @__PURE__ */ new Map();\nfunction getFunctionId(fn) {\n  if (functionIdCache.has(fn)) {\n    return functionIdCache.get(fn);\n  }\n  const id = randomBytesHex();\n  functionIdCache.set(fn, id);\n  return id;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/contract/useReadContract.js\nfunction useReadContract(extensionOrOptions, options) {\n  if (typeof extensionOrOptions === \"function\") {\n    if (!options) {\n      throw new Error(`Missing second argument for \"useReadContract(<extension>, <options>)\" hook.`);\n    }\n    const { queryOptions: queryOptions2, contract, ...params } = options;\n    const query = queryOptions({\n      queryKey: [\n        \"readContract\",\n        contract.chain.id,\n        contract.address,\n        getFunctionId(extensionOrOptions),\n        stringify(params)\n      ],\n      // @ts-expect-error - TODO: clean up the type issues here\n      queryFn: () => extensionOrOptions({ ...params, contract }),\n      ...queryOptions2\n    });\n    return useQuery(query);\n  }\n  if (\"method\" in extensionOrOptions) {\n    const { queryOptions: queryOptions2, ...tx } = extensionOrOptions;\n    const query = queryOptions({\n      queryKey: [\n        \"readContract\",\n        tx.contract.chain.id,\n        tx.contract.address,\n        tx.method,\n        stringify(tx.params)\n      ],\n      queryFn: () => readContract(extensionOrOptions),\n      ...queryOptions2\n    });\n    return useQuery(query);\n  }\n  throw new Error(`Invalid \"useReadContract\" options. Expected either a read extension or a transaction object.`);\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/contract/useContractEvents.js\nvar import_react8 = __toESM(require_react(), 1);\nfunction useContractEvents(options) {\n  const { contract, events, blockRange = 2e3, enabled = true, watch = true } = options;\n  const latestBlockNumber = (0, import_react8.useRef)(void 0);\n  const queryClient = useQueryClient();\n  const eventsKey = (0, import_react8.useMemo)(() => (events == null ? void 0 : events.reduce((acc, curr) => {\n    return `${acc}${curr.hash}_`;\n  }, \"\")) || \"__all__\", [events]);\n  const queryKey = (0, import_react8.useMemo)(() => [contract.chain.id, contract.address, \"logs\", eventsKey], [contract.address, contract.chain, eventsKey]);\n  const query = useQuery({\n    queryKey,\n    queryFn: async () => {\n      const rpcRequest = getRpcClient(contract);\n      const currentBlockNumber = await eth_blockNumber(rpcRequest);\n      latestBlockNumber.current = currentBlockNumber;\n      const initialEvents = await getContractEvents({\n        contract,\n        events,\n        fromBlock: currentBlockNumber - BigInt(blockRange)\n      });\n      return initialEvents;\n    },\n    enabled\n  });\n  (0, import_react8.useEffect)(() => {\n    if (!enabled || !watch) {\n      return;\n    }\n    return watchContractEvents({\n      contract,\n      onEvents: (newEvents) => {\n        if (newEvents.length > 0 && newEvents[0]) {\n          latestBlockNumber.current = newEvents[0].blockNumber;\n        }\n        queryClient.setQueryData(queryKey, (oldEvents = []) => [\n          ...oldEvents,\n          ...newEvents\n        ]);\n      },\n      events,\n      latestBlockNumber: latestBlockNumber.current\n    });\n  }, [contract, enabled, events, queryClient, queryKey, watch]);\n  return query;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/transaction/useSimulateTransaction.js\nfunction useSimulateTransaction() {\n  return useMutation({\n    mutationFn: (options) => simulateTransaction(options)\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/transaction/useSendBatchTransaction.js\nfunction useSendBatchTransaction() {\n  const account = useActiveAccount();\n  return useMutation({\n    mutationFn: async (transactions) => {\n      if (!account) {\n        throw new Error(\"No active account\");\n      }\n      return await sendBatchTransaction({\n        transactions,\n        account\n      });\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/transaction/useSendAndConfirmTransaction.js\nfunction useSendAndConfirmTransaction(config = {}) {\n  const account = useActiveAccount();\n  const { gasless } = config;\n  return useMutation({\n    mutationFn: async (transaction) => {\n      if (!account) {\n        throw new Error(\"No active account\");\n      }\n      return await sendAndConfirmTransaction({\n        transaction,\n        account,\n        gasless\n      });\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/transaction/useEstimateGas.js\nfunction useEstimateGas() {\n  const account = useActiveAccount();\n  return useMutation({\n    mutationFn: (transaction) => estimateGas({ transaction, account })\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/transaction/useEstimateGasCost.js\nfunction useEstimateGasCost() {\n  const account = useActiveAccount();\n  return useMutation({\n    mutationFn: (transaction) => estimateGasCost({ transaction, account })\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/rpc/useBlockNumber.js\nvar import_react9 = __toESM(require_react(), 1);\nfunction useBlockNumber(options) {\n  const { client, chain, enabled = true, watch = true } = options;\n  const queryClient = useQueryClient();\n  const queryKey = (0, import_react9.useMemo)(() => [chain.id, \"blockNumber\"], [chain]);\n  const query = useQuery({\n    // TODO: technically client should be part of the queryKey here...\n    queryKey,\n    queryFn: async () => {\n      const rpcRequest = getRpcClient({ client, chain });\n      return await eth_blockNumber(rpcRequest);\n    },\n    enabled\n  });\n  (0, import_react9.useEffect)(() => {\n    if (!enabled || !watch) {\n      return;\n    }\n    return watchBlockNumber({\n      client,\n      chain,\n      onNewBlockNumber: (newBlockNumber) => {\n        queryClient.setQueryData(queryKey, newBlockNumber);\n      }\n    });\n  }, [client, chain, enabled, queryClient, queryKey, watch]);\n  return query.data;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/utils/createQuery.js\nvar CONTRACT_QUERY_CACHE = /* @__PURE__ */ new WeakMap();\nfunction createContractQuery(readCall) {\n  if (CONTRACT_QUERY_CACHE.has(readCall)) {\n    return CONTRACT_QUERY_CACHE.get(readCall);\n  }\n  function useRead(options) {\n    const { contract, queryOptions: queryOptions2, ...params } = options;\n    return useQuery({\n      queryKey: [\n        \"readContract\",\n        contract.chain.id,\n        contract.address,\n        getFunctionId(readCall),\n        stringify(params)\n      ],\n      queryFn: () => readCall(options),\n      ...queryOptions2\n    });\n  }\n  CONTRACT_QUERY_CACHE.set(readCall, useRead);\n  return useRead;\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/others/useInvalidateQueries.js\nfunction useInvalidateContractQuery() {\n  const queryClient = useQueryClient();\n  return ({ chainId, contractAddress }) => {\n    queryClient.invalidateQueries({\n      queryKey: [\"readContract\", chainId, contractAddress]\n    });\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/pay/useBuyWithCryptoHistory.js\nfunction useBuyWithCryptoHistory(params, queryParams) {\n  return useQuery({\n    ...queryParams,\n    queryKey: [\"getBuyWithCryptoHistory\", params],\n    queryFn: () => {\n      if (!params) {\n        throw new Error(\"Swap params are required\");\n      }\n      return getBuyWithCryptoHistory(params);\n    },\n    enabled: !!params\n  });\n}\n\n// node_modules/thirdweb/dist/esm/pay/buyWithFiat/getHistory.js\nasync function getBuyWithFiatHistory(params) {\n  var _a;\n  try {\n    const queryParams = new URLSearchParams();\n    queryParams.append(\"walletAddress\", params.walletAddress);\n    queryParams.append(\"start\", params.start.toString());\n    queryParams.append(\"count\", params.count.toString());\n    const queryString = queryParams.toString();\n    const url = `${getPayBuyWithFiatHistoryEndpoint()}?${queryString}`;\n    const response = await getClientFetch(params.client)(url);\n    if (!response.ok) {\n      (_a = response.body) == null ? void 0 : _a.cancel();\n      throw new Error(`HTTP error! status: ${response.status}`);\n    }\n    const data = (await response.json()).result;\n    return data;\n  } catch (error) {\n    throw new Error(`Fetch failed: ${error}`);\n  }\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/pay/useBuyWithFiatHistory.js\nfunction useBuyWithFiatHistory(params, queryParams) {\n  return useQuery({\n    ...queryParams,\n    queryKey: [\"buyWithFiatHistory\", params],\n    queryFn: () => {\n      if (!params) {\n        throw new Error(\"params are required\");\n      }\n      return getBuyWithFiatHistory(params);\n    },\n    enabled: !!params\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/core/hooks/pay/usePostOnrampQuote.js\nfunction usePostOnRampQuote(params, queryOptions2) {\n  return useQuery({\n    ...queryOptions2,\n    queryKey: [\"getPostOnRampQuote\", params],\n    queryFn: async () => {\n      if (!params) {\n        throw new Error(\"No params provided\");\n      }\n      return getPostOnRampQuote(params);\n    },\n    enabled: !!params\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/PayEmbed.js\nvar import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);\nvar import_react10 = __toESM(require_react(), 1);\nfunction PayEmbed(props) {\n  var _a, _b, _c;\n  const localeQuery = useConnectLocale(props.locale || \"en_US\");\n  const [screen, setScreen] = (0, import_react10.useState)(\"buy\");\n  const theme = props.theme || \"dark\";\n  const connectionManager = useConnectionManager();\n  (0, import_react10.useEffect)(() => {\n    var _a2, _b2;\n    if ((_a2 = props.connectOptions) == null ? void 0 : _a2.chain) {\n      connectionManager.defineChains([(_b2 = props.connectOptions) == null ? void 0 : _b2.chain]);\n    }\n  }, [(_a = props.connectOptions) == null ? void 0 : _a.chain, connectionManager]);\n  (0, import_react10.useEffect)(() => {\n    var _a2, _b2;\n    if ((_a2 = props.connectOptions) == null ? void 0 : _a2.chains) {\n      connectionManager.defineChains((_b2 = props.connectOptions) == null ? void 0 : _b2.chains);\n    }\n  }, [(_b = props.connectOptions) == null ? void 0 : _b.chains, connectionManager]);\n  let content = null;\n  const metadata = props.payOptions && \"metadata\" in props.payOptions ? props.payOptions.metadata : null;\n  if (!localeQuery.data) {\n    content = (0, import_jsx_runtime8.jsx)(\"div\", { style: {\n      minHeight: \"350px\",\n      display: \"flex\",\n      justifyContent: \"center\",\n      alignItems: \"center\"\n    }, children: (0, import_jsx_runtime8.jsx)(Spinner, { size: \"xl\", color: \"secondaryText\" }) });\n  } else {\n    content = (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [screen === \"buy\" && (0, import_jsx_runtime8.jsx)(BuyScreen, { title: (metadata == null ? void 0 : metadata.name) || \"Buy\", isEmbed: true, supportedTokens: props.supportedTokens, theme, client: props.client, connectLocale: localeQuery.data, hiddenWallets: props.hiddenWallets, payOptions: props.payOptions || {\n      mode: \"fund_wallet\"\n    }, onDone: () => {\n      var _a2;\n      if (((_a2 = props.payOptions) == null ? void 0 : _a2.mode) === \"transaction\") {\n        setScreen(\"execute-tx\");\n      }\n    }, connectOptions: props.connectOptions, onBack: void 0 }), screen === \"execute-tx\" && ((_c = props.payOptions) == null ? void 0 : _c.mode) === \"transaction\" && props.payOptions.transaction && (0, import_jsx_runtime8.jsx)(ExecutingTxScreen, { tx: props.payOptions.transaction, closeModal: () => {\n      setScreen(\"buy\");\n    }, onBack: () => {\n      setScreen(\"buy\");\n    }, onTxSent: () => {\n    } })] });\n  }\n  return (0, import_jsx_runtime8.jsx)(CustomThemeProvider, { theme, children: (0, import_jsx_runtime8.jsx)(EmbedContainer, { modalSize: \"compact\", style: props.style, className: props.className, children: (0, import_jsx_runtime8.jsx)(DynamicHeight, { children: content }) }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/useConnectModal.js\nvar import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);\nvar import_react11 = __toESM(require_react(), 1);\nfunction useConnectModal() {\n  const setRootEl = (0, import_react11.useContext)(SetRootElementContext);\n  const [isConnecting, setIsConnecting] = (0, import_react11.useState)(false);\n  const connect = (0, import_react11.useCallback)((props) => {\n    function cleanup() {\n      setIsConnecting(false);\n      setRootEl(void 0);\n    }\n    return new Promise((resolve, reject) => {\n      setIsConnecting(true);\n      getConnectLocale(props.locale || \"en_US\").then((locale) => {\n        setRootEl((0, import_jsx_runtime9.jsx)(Modal2, { ...props, onConnect: (w) => {\n          resolve(w);\n          cleanup();\n        }, onClose: () => {\n          reject();\n          cleanup();\n        }, connectLocale: locale }));\n      }).catch(() => {\n        reject();\n        cleanup();\n      });\n    });\n  }, [setRootEl]);\n  return { connect, isConnecting };\n}\nfunction Modal2(props) {\n  const wallets = (0, import_react11.useMemo)(() => props.wallets || getDefaultWallets({\n    appMetadata: props.appMetadata,\n    chains: props.chains\n  }), [props.wallets, props.appMetadata, props.chains]);\n  const size = (0, import_react11.useMemo)(() => {\n    return !canFitWideModal() || wallets.length === 1 ? \"compact\" : props.size || \"wide\";\n  }, [props.size, wallets.length]);\n  const meta = (0, import_react11.useMemo)(() => {\n    return {\n      privacyPolicyUrl: props.privacyPolicyUrl,\n      showThirdwebBranding: props.showThirdwebBranding,\n      termsOfServiceUrl: props.termsOfServiceUrl,\n      title: props.title,\n      titleIconUrl: props.titleIcon\n    };\n  }, [\n    props.privacyPolicyUrl,\n    props.showThirdwebBranding,\n    props.termsOfServiceUrl,\n    props.title,\n    props.titleIcon\n  ]);\n  return (0, import_jsx_runtime9.jsx)(WalletUIStatesProvider, { theme: props.theme, isOpen: true, children: (0, import_jsx_runtime9.jsx)(ConnectModal_default, {\n    onClose: props.onClose,\n    shouldSetActive: props.setActive === void 0 ? true : props.setActive,\n    accountAbstraction: props.accountAbstraction,\n    // TODO: not set up in `useConnectModal` for some reason?\n    auth: void 0,\n    chain: props.chain,\n    client: props.client,\n    connectLocale: props.connectLocale,\n    meta,\n    size,\n    welcomeScreen: props.welcomeScreen,\n    localeId: props.locale || \"en_US\",\n    onConnect: props.onConnect,\n    recommendedWallets: props.recommendedWallets,\n    showAllWallets: props.showAllWallets,\n    wallets,\n    chains: props.chains,\n    walletConnect: props.walletConnect\n  }) });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js\nvar import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);\nfunction ClaimButton(props) {\n  const { children, contractAddress, client, chain, claimParams, payModal } = props;\n  const defaultPayModalMetadata = payModal ? payModal.metadata : void 0;\n  const contract = getContract({\n    address: contractAddress,\n    client,\n    chain\n  });\n  const { data: payMetadata } = useReadContract(getPayMetadata, {\n    contract,\n    tokenId: claimParams.type === \"ERC1155\" ? claimParams.tokenId : void 0,\n    queryOptions: {\n      enabled: !defaultPayModalMetadata\n    }\n  });\n  const account = useActiveAccount();\n  const { mutateAsync } = useSendAndConfirmTransaction();\n  return (0, import_jsx_runtime10.jsx)(TransactionButton, { payModal: {\n    metadata: defaultPayModalMetadata || payMetadata,\n    ...payModal\n  }, transaction: async () => {\n    if (!account) {\n      throw new Error(\"No account detected\");\n    }\n    const [claimTx, { getApprovalForTransaction }] = await Promise.all([\n      getClaimTransaction({\n        contract,\n        account,\n        claimParams\n      }),\n      import(\"./getApprovalForTransaction-RG2PM2ZX.js\")\n    ]);\n    const approveTx = await getApprovalForTransaction({\n      transaction: claimTx,\n      account\n    });\n    if (approveTx) {\n      await mutateAsync(approveTx);\n    }\n    return claimTx;\n  }, ...props, children });\n}\nasync function getPayMetadata(options) {\n  var _a, _b;\n  const { contract, tokenId } = options;\n  const [contractMetadata, nft] = await Promise.all([\n    getContractMetadata(options),\n    tokenId ? getNFT2({ contract, tokenId }) : void 0\n  ]);\n  if (tokenId) {\n    return {\n      image: (_a = nft == null ? void 0 : nft.metadata) == null ? void 0 : _a.image,\n      name: (_b = nft == null ? void 0 : nft.metadata) == null ? void 0 : _b.name\n    };\n  }\n  return {\n    image: contractMetadata == null ? void 0 : contractMetadata.image,\n    name: contractMetadata == null ? void 0 : contractMetadata.name\n  };\n}\nasync function getClaimTransaction({ contract, account, claimParams }) {\n  switch (claimParams.type) {\n    case \"ERC721\":\n      return await getERC721ClaimTo({ contract, account, claimParams });\n    case \"ERC1155\":\n      return await getERC1155ClaimTo({ contract, account, claimParams });\n    case \"ERC20\": {\n      return await getERC20ClaimTo({ contract, account, claimParams });\n    }\n    default:\n      throw new Error(\"Invalid contract type. Must be either NFT Drop (ERC721), Edition Drop (ERC1155) or Token Drop (ERC20)\");\n  }\n}\nasync function getERC721ClaimTo({ contract, account, claimParams }) {\n  const { claimTo } = await import(\"./claimTo-LNJZHHT3.js\");\n  return claimTo({\n    contract,\n    to: claimParams.to || (account == null ? void 0 : account.address) || \"\",\n    quantity: claimParams.quantity,\n    from: claimParams.from\n  });\n}\nasync function getERC1155ClaimTo({ contract, account, claimParams }) {\n  const { claimTo } = await import(\"./claimTo-3OGSZAGD.js\");\n  return claimTo({\n    contract,\n    to: claimParams.to || (account == null ? void 0 : account.address) || \"\",\n    quantity: claimParams.quantity,\n    tokenId: claimParams.tokenId,\n    from: claimParams.from\n  });\n}\nasync function getERC20ClaimTo({ contract, account, claimParams }) {\n  const { claimTo } = await import(\"./claimTo-7N7PJK5O.js\");\n  if (\"quantity\" in claimParams) {\n    return claimTo({\n      contract,\n      to: claimParams.to || (account == null ? void 0 : account.address) || \"\",\n      quantity: claimParams.quantity,\n      from: claimParams.from\n    });\n  }\n  if (\"quantityInWei\" in claimParams) {\n    return claimTo({\n      contract,\n      to: claimParams.to || (account == null ? void 0 : account.address) || \"\",\n      quantityInWei: claimParams.quantityInWei,\n      from: claimParams.from\n    });\n  }\n  throw new Error(\"Missing quantity or quantityInWei\");\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.js\nvar import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);\nvar import_react12 = __toESM(require_react(), 1);\nfunction BuyDirectListingButton(props) {\n  const { contractAddress, listingId, children, chain, client, quantity, payModal } = props;\n  const defaultPayModalMetadata = payModal ? payModal.metadata : void 0;\n  const account = useActiveAccount();\n  const contract = getContract({\n    address: contractAddress,\n    client,\n    chain\n  });\n  const { data: payMetadata } = useReadContract(getPayMetadata2, {\n    contract,\n    listingId,\n    queryOptions: {\n      enabled: !defaultPayModalMetadata\n    }\n  });\n  const { mutateAsync } = useSendAndConfirmTransaction();\n  const prepareBuyTransaction = (0, import_react12.useCallback)(async () => {\n    if (!account) {\n      throw new Error(\"No account detected\");\n    }\n    const [listing, { getApprovalForTransaction }, { buyFromListing }] = await Promise.all([\n      getListing({\n        contract,\n        listingId\n      }),\n      import(\"./getApprovalForTransaction-RG2PM2ZX.js\"),\n      import(\"./buyFromListing-NAQIOY7I.js\")\n    ]);\n    if (!listing) {\n      throw new Error(`Could not retrieve listing with ID: ${listingId}`);\n    }\n    let _quantity = 1n;\n    if (listing.asset.type === \"ERC721\") {\n      if (typeof quantity === \"bigint\" && (quantity !== 1n || quantity < 0n)) {\n        throw new Error(\"Invalid quantity. This is an ERC721 listing & quantity is always `1n`\");\n      }\n    } else if (listing.asset.type === \"ERC1155\") {\n      if (typeof quantity === \"bigint\") {\n        if (quantity > listing.quantity) {\n          throw new Error(`quantity exceeds available amount. Available: ${listing.quantity.toString()}`);\n        }\n        if (quantity < 0n) {\n          throw new Error(\"Invalid quantity. Should be at least 1n\");\n        }\n        _quantity = quantity;\n      }\n      _quantity = listing.quantity;\n    }\n    const buyTx = buyFromListing({\n      contract,\n      listingId,\n      quantity: _quantity,\n      recipient: (account == null ? void 0 : account.address) || \"\"\n    });\n    const approveTx = await getApprovalForTransaction({\n      transaction: buyTx,\n      account\n    });\n    if (approveTx) {\n      await mutateAsync(approveTx);\n    }\n    return buyTx;\n  }, [account, contract, quantity, listingId, mutateAsync]);\n  return (0, import_jsx_runtime11.jsx)(TransactionButton, { payModal: {\n    metadata: defaultPayModalMetadata || payMetadata,\n    ...payModal\n  }, transaction: () => prepareBuyTransaction(), ...props, children });\n}\nasync function getPayMetadata2(options) {\n  var _a, _b, _c, _d;\n  const listing = await getListing(options);\n  if (!listing) {\n    return { name: void 0, image: void 0 };\n  }\n  return {\n    name: (_b = (_a = listing.asset) == null ? void 0 : _a.metadata) == null ? void 0 : _b.name,\n    image: (_d = (_c = listing.asset) == null ? void 0 : _c.metadata) == null ? void 0 : _d.image\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js\nvar import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);\nvar import_react13 = __toESM(require_react(), 1);\n\n// node_modules/thirdweb/dist/esm/extensions/marketplace/__generated__/IDirectListings/write/createListing.js\nvar FN_SELECTOR = \"0x746415b5\";\nvar FN_INPUTS = [\n  {\n    type: \"tuple\",\n    name: \"_params\",\n    components: [\n      {\n        type: \"address\",\n        name: \"assetContract\"\n      },\n      {\n        type: \"uint256\",\n        name: \"tokenId\"\n      },\n      {\n        type: \"uint256\",\n        name: \"quantity\"\n      },\n      {\n        type: \"address\",\n        name: \"currency\"\n      },\n      {\n        type: \"uint256\",\n        name: \"pricePerToken\"\n      },\n      {\n        type: \"uint128\",\n        name: \"startTimestamp\"\n      },\n      {\n        type: \"uint128\",\n        name: \"endTimestamp\"\n      },\n      {\n        type: \"bool\",\n        name: \"reserved\"\n      }\n    ]\n  }\n];\nvar FN_OUTPUTS = [\n  {\n    type: \"uint256\",\n    name: \"listingId\"\n  }\n];\nfunction createListing(options) {\n  const asyncOptions = once(async () => {\n    return \"asyncParams\" in options ? await options.asyncParams() : options;\n  });\n  return prepareContractCall({\n    contract: options.contract,\n    method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],\n    params: async () => {\n      const resolvedOptions = await asyncOptions();\n      return [resolvedOptions.params];\n    },\n    value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.value;\n    },\n    accessList: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.accessList;\n    },\n    gas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gas;\n    },\n    gasPrice: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.gasPrice;\n    },\n    maxFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxFeePerGas;\n    },\n    maxPriorityFeePerGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.maxPriorityFeePerGas;\n    },\n    nonce: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.nonce;\n    },\n    extraGas: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.extraGas;\n    },\n    erc20Value: async () => {\n      var _a;\n      return (_a = (await asyncOptions()).overrides) == null ? void 0 : _a.erc20Value;\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/extensions/marketplace/direct-listings/write/createListing.js\nfunction createListing2(options) {\n  return createListing({\n    contract: options.contract,\n    asyncParams: async () => {\n      const assetContract = getContract({\n        ...options.contract,\n        address: options.assetContractAddress\n      });\n      const rpcClient = getRpcClient(options.contract);\n      const [assetIsERC721, assetIsERC1155, lastestBlock] = await Promise.all([\n        isERC721({ contract: assetContract }),\n        isERC1155({ contract: assetContract }),\n        eth_getBlockByNumber(rpcClient, { blockTag: \"latest\" })\n      ]);\n      if (!assetIsERC721 && !assetIsERC1155) {\n        throw new Error(\"AssetContract must implement ERC 1155 or ERC 721.\");\n      }\n      let startTimestamp = BigInt(Math.floor((options.startTimestamp ?? /* @__PURE__ */ new Date()).getTime() / 1e3));\n      const endTimestamp = BigInt(Math.floor((options.endTimestamp ?? new Date(Date.now() + 10 * 365 * 24 * 60 * 60 * 1e3)).getTime() / 1e3));\n      if (startTimestamp <= lastestBlock.timestamp) {\n        startTimestamp = lastestBlock.timestamp + 1n;\n      }\n      if (startTimestamp >= endTimestamp) {\n        throw new Error(\"Start time must be before end time.\");\n      }\n      let quantity;\n      if (assetIsERC721) {\n        quantity = 1n;\n      } else {\n        quantity = options.quantity ?? 1n;\n      }\n      const currencyAddress = options.currencyContractAddress ?? NATIVE_TOKEN_ADDRESS;\n      let pricePerToken;\n      if (\"pricePerToken\" in options) {\n        if (isNativeTokenAddress(currencyAddress)) {\n          pricePerToken = toUnits(options.pricePerToken, 18);\n        } else {\n          const currencyContract = getContract({\n            ...options.contract,\n            address: currencyAddress\n          });\n          const { decimals } = await import(\"./decimals-OWVEHM45.js\");\n          const currencyDecimals = await decimals({\n            contract: currencyContract\n          });\n          pricePerToken = toUnits(options.pricePerToken, currencyDecimals);\n        }\n      } else {\n        pricePerToken = BigInt(options.pricePerTokenWei);\n      }\n      return {\n        params: {\n          assetContract: options.assetContractAddress,\n          tokenId: options.tokenId,\n          currency: options.currencyContractAddress ?? NATIVE_TOKEN_ADDRESS,\n          quantity,\n          pricePerToken,\n          startTimestamp,\n          endTimestamp,\n          reserved: options.isReservedListing ?? false\n        },\n        overrides: {\n          extraGas: 50000n\n          // add extra gas to account for router call\n        }\n      };\n    }\n  });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js\nfunction CreateDirectListingButton(props) {\n  const { contractAddress, chain, client, children, payModal, assetContractAddress, tokenId } = props;\n  const marketplaceContract = getContract({\n    address: contractAddress,\n    chain,\n    client\n  });\n  const account = useActiveAccount();\n  const defaultPayModalMetadata = payModal ? payModal.metadata : void 0;\n  const nftContract = getContract({\n    address: assetContractAddress,\n    chain,\n    client\n  });\n  const { data: payMetadata } = useReadContract(getPayMetadata3, {\n    contract: nftContract,\n    tokenId,\n    queryOptions: {\n      enabled: !defaultPayModalMetadata\n    }\n  });\n  const { mutateAsync } = useSendAndConfirmTransaction();\n  const prepareTransaction = (0, import_react13.useCallback)(async () => {\n    if (!account) {\n      throw new Error(\"No account detected\");\n    }\n    const [is721, is1155] = await Promise.all([\n      isERC721({ contract: nftContract }),\n      isERC1155({ contract: nftContract })\n    ]);\n    if (!is1155 && !is721) {\n      throw new Error(\"Asset must either be ERC721 or ERC1155\");\n    }\n    if (is1155) {\n      const [{ isApprovedForAll }, { setApprovalForAll }] = await Promise.all([\n        import(\"./isApprovedForAll-JGBKL36G.js\"),\n        import(\"./setApprovalForAll-WRU2AIHP.js\")\n      ]);\n      const isApproved = await isApprovedForAll({\n        contract: nftContract,\n        operator: marketplaceContract.address,\n        owner: account.address\n      });\n      if (!isApproved) {\n        const transaction = setApprovalForAll({\n          contract: nftContract,\n          operator: marketplaceContract.address,\n          approved: true\n        });\n        await mutateAsync(transaction);\n      }\n    } else {\n      const [{ isApprovedForAll }, { setApprovalForAll }, { getApproved }] = await Promise.all([\n        import(\"./isApprovedForAll-CG3FQCVQ.js\"),\n        import(\"./setApprovalForAll-YKTONSHG.js\"),\n        import(\"./getApproved-UMVYKWJJ.js\")\n      ]);\n      const [isApproved, tokenApproved] = await Promise.all([\n        isApprovedForAll({\n          contract: nftContract,\n          operator: marketplaceContract.address,\n          owner: account.address\n        }),\n        getApproved({ contract: nftContract, tokenId: props.tokenId })\n      ]);\n      if (!isApproved && tokenApproved.toLowerCase() !== marketplaceContract.address.toLowerCase()) {\n        const transaction = setApprovalForAll({\n          contract: nftContract,\n          operator: marketplaceContract.address,\n          approved: true\n        });\n        await mutateAsync(transaction);\n      }\n    }\n    const listingTx = createListing2({\n      contract: marketplaceContract,\n      ...props\n    });\n    return listingTx;\n  }, [marketplaceContract, props, account, mutateAsync, nftContract]);\n  return (0, import_jsx_runtime12.jsx)(TransactionButton, { transaction: () => prepareTransaction(), payModal: {\n    metadata: defaultPayModalMetadata || payMetadata,\n    ...payModal\n  }, ...props, children });\n}\nasync function getPayMetadata3(options) {\n  var _a, _b, _c, _d;\n  const [{ getContractMetadata: getContractMetadata2 }, { getNFT: getERC721 }, { getNFT: getERC1155 }] = await Promise.all([\n    import(\"./getContractMetadata-X5DE2MGS.js\"),\n    import(\"./getNFT-T7TVIXIV.js\"),\n    import(\"./getNFT-CWYYXL36.js\")\n  ]);\n  const [is721, is1155, contractMetadata] = await Promise.all([\n    isERC721(options),\n    isERC1155(options),\n    getContractMetadata2(options)\n  ]);\n  if (is721) {\n    const nft = await getERC721(options);\n    return {\n      image: (_a = nft == null ? void 0 : nft.metadata) == null ? void 0 : _a.image,\n      name: (_b = nft == null ? void 0 : nft.metadata) == null ? void 0 : _b.name\n    };\n  }\n  if (is1155) {\n    const nft = await getERC1155(options);\n    return {\n      image: (_c = nft == null ? void 0 : nft.metadata) == null ? void 0 : _c.image,\n      name: (_d = nft == null ? void 0 : nft.metadata) == null ? void 0 : _d.name\n    };\n  }\n  return {\n    image: contractMetadata == null ? void 0 : contractMetadata.image,\n    name: contractMetadata == null ? void 0 : contractMetadata.name\n  };\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/prebuilt/NFT/NFT.js\nvar import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);\nvar import_react14 = __toESM(require_react(), 1);\nvar NFTProviderContext = (0, import_react14.createContext)(void 0);\nfunction NFT(props) {\n  return (0, import_jsx_runtime13.jsx)(NFTProviderContext.Provider, { value: props, children: props.children });\n}\nfunction useNFTContext() {\n  const ctx = (0, import_react14.useContext)(NFTProviderContext);\n  if (!ctx) {\n    throw new Error(\"NFTProviderContext not found. Make sure you are using NFT.Media, NFT.Description, etc. inside a <NFT /> component\");\n  }\n  return ctx;\n}\nNFT.Media = (props) => {\n  var _a, _b, _c;\n  const { contract, tokenId } = useNFTContext();\n  const nftQuery = useSuspenseQuery({\n    queryKey: [\n      \"__nft_info_internal__\",\n      contract.chain.id,\n      contract.address,\n      tokenId.toString()\n    ],\n    queryFn: () => getNFTInfo({ contract, tokenId })\n  });\n  const animation_url = (_a = nftQuery.data) == null ? void 0 : _a.metadata.animation_url;\n  const image = ((_b = nftQuery.data) == null ? void 0 : _b.metadata.image) || ((_c = nftQuery.data) == null ? void 0 : _c.metadata.image_url);\n  return (0, import_jsx_runtime13.jsx)(MediaRenderer, { client: contract.client, src: animation_url || image, poster: image, ...props });\n};\nNFT.Name = (props) => {\n  var _a;\n  const { contract, tokenId } = useNFTContext();\n  const nftQuery = useSuspenseQuery({\n    queryKey: [\n      \"__nft_info_internal__\",\n      contract.chain.id,\n      contract.address,\n      tokenId.toString()\n    ],\n    queryFn: () => getNFTInfo({ contract, tokenId })\n  });\n  const name = ((_a = nftQuery.data) == null ? void 0 : _a.metadata.name) || \"\";\n  return (0, import_jsx_runtime13.jsx)(\"span\", { ...props, children: name });\n};\nNFT.Description = (props) => {\n  var _a;\n  const { contract, tokenId } = useNFTContext();\n  const nftQuery = useSuspenseQuery({\n    queryKey: [\n      \"__nft_info_internal__\",\n      contract.chain.id,\n      contract.address,\n      tokenId.toString()\n    ],\n    queryFn: () => getNFTInfo({ contract, tokenId })\n  });\n  const description = ((_a = nftQuery.data) == null ? void 0 : _a.metadata.description) || \"\";\n  return (0, import_jsx_runtime13.jsx)(\"span\", { ...props, children: description });\n};\nasync function getNFTInfo(options) {\n  const nft = await Promise.allSettled([\n    getNFT(options),\n    getNFT2(options)\n  ]).then(([possibleNFT721, possibleNFT1155]) => {\n    if (possibleNFT721.status === \"fulfilled\" && possibleNFT721.value.tokenURI) {\n      return possibleNFT721.value;\n    }\n    if (possibleNFT1155.status === \"fulfilled\" && possibleNFT1155.value.tokenURI) {\n      return possibleNFT1155.value;\n    }\n    throw new Error(\"Failed to load NFT metadata\");\n  });\n  return nft;\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/SiteEmbed.js\nvar import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);\nfunction SiteEmbed({ src, client, ecosystem, ...props }) {\n  if (!client.clientId) {\n    throw new Error(\"The SiteEmbed client must have a clientId\");\n  }\n  const activeWallet = useActiveWallet();\n  const walletId = activeWallet == null ? void 0 : activeWallet.id;\n  const { data: { authProvider, authCookie } = {} } = useQuery({\n    queryKey: [\"site-embed\", walletId, src, client.clientId, ecosystem],\n    enabled: activeWallet && (isEcosystemWallet(activeWallet) || walletId === \"inApp\"),\n    queryFn: async () => {\n      const storage = new ClientScopedStorage({\n        storage: webLocalStorage,\n        clientId: client.clientId,\n        ecosystem\n      });\n      const authProvider2 = await getLastAuthProvider(webLocalStorage);\n      const authCookie2 = await storage.getAuthCookie();\n      return { authProvider: authProvider2, authCookie: authCookie2 };\n    }\n  });\n  const url = new URL(src);\n  if (walletId) {\n    url.searchParams.set(\"walletId\", walletId);\n  }\n  if (authProvider) {\n    url.searchParams.set(\"authProvider\", authProvider);\n  }\n  if (authCookie) {\n    url.searchParams.set(\"authCookie\", authCookie);\n  }\n  return (0, import_jsx_runtime14.jsx)(\"iframe\", { src: encodeURI(url.toString()), width: \"100%\", height: \"100%\", allowFullScreen: true, ...props });\n}\n\n// node_modules/thirdweb/dist/esm/react/web/ui/SiteLink.js\nvar import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);\nfunction SiteLink({ href, client, ecosystem, children, ...props }) {\n  if (!client.clientId) {\n    throw new Error(\"The SiteLink client must have a clientId\");\n  }\n  const activeWallet = useActiveWallet();\n  const walletId = activeWallet == null ? void 0 : activeWallet.id;\n  const { data: { authProvider, authCookie } = {} } = useQuery({\n    queryKey: [\"site-link\", walletId, href, client.clientId, ecosystem],\n    enabled: activeWallet && (isEcosystemWallet(activeWallet) || walletId === \"inApp\"),\n    queryFn: async () => {\n      const storage = new ClientScopedStorage({\n        storage: webLocalStorage,\n        clientId: client.clientId,\n        ecosystem\n      });\n      const authProvider2 = await getLastAuthProvider(webLocalStorage);\n      const authCookie2 = await storage.getAuthCookie();\n      return { authProvider: authProvider2, authCookie: authCookie2 };\n    }\n  });\n  const url = new URL(href);\n  if (walletId) {\n    url.searchParams.set(\"walletId\", walletId);\n  }\n  if (authProvider) {\n    url.searchParams.set(\"authProvider\", authProvider);\n  }\n  if (authCookie) {\n    url.searchParams.set(\"authCookie\", authCookie);\n  }\n  return (0, import_jsx_runtime15.jsx)(\"a\", { href: encodeURI(url.toString()), ...props, children });\n}\nexport {\n  AutoConnect,\n  Blobbie,\n  BuyDirectListingButton,\n  ClaimButton,\n  ConnectButton,\n  ConnectEmbed,\n  CreateDirectListingButton,\n  MediaRenderer,\n  NFT,\n  PayEmbed,\n  SiteEmbed,\n  SiteLink,\n  ThirdwebProvider,\n  TransactionButton,\n  createContractQuery,\n  darkTheme,\n  defaultTokens,\n  getDefaultToken,\n  lightTheme,\n  useActiveAccount,\n  useActiveWallet,\n  useActiveWalletChain,\n  useActiveWalletConnectionStatus,\n  useAdminWallet,\n  useAutoConnect,\n  useBlockNumber,\n  useBuyHistory,\n  useBuyWithCryptoHistory,\n  useBuyWithCryptoQuote,\n  useBuyWithCryptoStatus,\n  useBuyWithFiatHistory,\n  useBuyWithFiatQuote,\n  useBuyWithFiatStatus,\n  useCallsStatus,\n  useCapabilities,\n  useChainMetadata,\n  useConnect,\n  useConnectModal,\n  useConnectedWallets,\n  useConnectionManager,\n  useContractEvents,\n  useDisconnect,\n  useEnsAvatar,\n  useEnsName,\n  useEstimateGas,\n  useEstimateGasCost,\n  useInvalidateContractQuery,\n  useIsAutoConnecting,\n  useLinkProfile,\n  useNetworkSwitcherModal,\n  usePostOnRampQuote,\n  useProfiles,\n  useReadContract,\n  useSendAndConfirmTransaction,\n  useSendBatchTransaction,\n  useSendCalls,\n  useSendTransaction,\n  useSetActiveWallet,\n  useSetActiveWalletConnectionStatus,\n  useSimulateTransaction,\n  useSiweAuth,\n  useSocialProfiles,\n  useSwitchActiveWalletChain,\n  useWaitForReceipt,\n  useWalletBalance,\n  useWalletDetailsModal,\n  useWalletImage,\n  useWalletInfo\n};\n//# sourceMappingURL=thirdweb_react.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/tl-AVOH7Y5Z.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/injected/locale/tl.js\nvar injectedWalletLocaleTl = (walletName) => ({\n  connectionScreen: {\n    inProgress: \"Naghihintay ng Kumpirmasyon\",\n    failed: \"Nabigo ang Pagkakonekta\",\n    instruction: `Tanggapin ang connection request sa ${walletName} wallet`,\n    retry: \"Subukan Muli\"\n  },\n  getStartedScreen: {\n    instruction: `I-scan ang QR code para ma-download ang ${walletName} app`\n  },\n  scanScreen: {\n    instruction: `I-scan ang QR code gamit ang ${walletName} app para makonekta`\n  },\n  getStartedLink: `Wala kang ${walletName} wallet?`,\n  download: {\n    chrome: \"I-download ang Chrome Extension\",\n    android: \"I-download sa Google Play\",\n    iOS: \"I-download sa App Store\"\n  }\n});\nvar tl_default = injectedWalletLocaleTl;\nexport {\n  tl_default as default\n};\n//# sourceMappingURL=tl-AVOH7Y5Z.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/tl-B6Y73PTZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/locale/tl.js\nvar tl_default = {\n  signInWithGoogle: \"Mag-sign in gamit ang Google\",\n  signInWithFacebook: \"Mag-sign in gamit ang Facebook\",\n  signInWithApple: \"Mag-sign in gamit ang Apple\",\n  signInWithDiscord: \"Mag-sign in gamit ang Discord\",\n  emailPlaceholder: \"Ilagay ang iyong email address\",\n  submitEmail: \"Magpatuloy\",\n  signIn: \"Mag-sign in\",\n  emailRequired: \"Kinakailangan ang email address\",\n  invalidEmail: \"Hindi wastong email address\",\n  maxAccountsExceeded: \"Naabot mo na ang maximum na bilang ng accounts\",\n  or: \"O\",\n  socialLoginScreen: {\n    title: \"Mag-sign in\",\n    instruction: \"Mag-sign in sa iyong account sa pop-up\",\n    failed: \"Hindi nagawa ang pag-sign in\",\n    retry: \"Subukan muli\"\n  },\n  emailLoginScreen: {\n    title: \"Mag-sign in\",\n    enterCodeSendTo: \"Ilagay ang verification code na ipinadala sa\",\n    newDeviceDetected: \"Natuklasan ang bagong device\",\n    enterRecoveryCode: \"Ilagay ang recovery code na ipinadala sa iyo noong unang pag-sign up\",\n    invalidCode: \"Hindi wastong verification code\",\n    invalidCodeOrRecoveryCode: \"Hindi wastong verification code o recovery code\",\n    verify: \"Patunayan\",\n    failedToSendCode: \"Hindi nagawa ang pagpapadala ng verification code\",\n    sendingCode: \"Nagpapadala ng verification code\",\n    resendCode: \"Ipadala muli ang verification code\"\n  },\n  createPassword: {\n    title: \"Lumikha ng Password\",\n    instruction: \"Itakda ang isang password para sa iyong account. Kakailanganin mo ang password na ito kapag kumokonekta mula sa isang bagong device.\",\n    saveInstruction: \"Siguraduhing ito ay na-save\",\n    inputPlaceholder: \"Ilagay ang iyong password\",\n    confirmation: \"Na-save ko na ang aking password\",\n    submitButton: \"Itakda ang Password\",\n    failedToSetPassword: \"Hindi nagawa ang pagtakda ng password\"\n  },\n  enterPassword: {\n    title: \"Ilagay ang Password\",\n    instruction: \"Ilagay ang password para sa iyong account\",\n    inputPlaceholder: \"Ilagay ang iyong password\",\n    submitButton: \"Patunayan\",\n    wrongPassword: \"Maling password\"\n  },\n  signInWithEmail: \"Mag-sign in gamit ang email\",\n  invalidPhone: \"Hindi wastong numero ng telepono\",\n  phonePlaceholder: \"Ilagay ang iyong numero ng telepono\",\n  signInWithPhone: \"Mag-login gamit ang numero ng telepono\",\n  phoneRequired: \"Kinakailangan ang numero ng telepono\",\n  passkey: \"Passkey\",\n  linkWallet: \"Mag-link ng Wallet\",\n  loginAsGuest: \"Mag-login bilang bisita\",\n  signInWithWallet: \"Mag-login gamit ang Wallet\"\n};\nexport {\n  tl_default as default\n};\n//# sourceMappingURL=tl-B6Y73PTZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/tl-DDFVDALG.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/smartWallet/locale/tl.js\nvar smartWalletLocaleTl = {\n  connecting: \"Kumokonekta sa Smart Account\",\n  failedToConnect: \"Hindi nagawa ang pagkonekta sa Smart Account\",\n  wrongNetworkScreen: {\n    title: \"Maling Network\",\n    subtitle: \"Hindi konektado ang iyong wallet sa kinakailangang network\",\n    failedToSwitch: \"Hindi nagawa ang pagpapalit ng network\"\n  }\n};\nvar tl_default = smartWalletLocaleTl;\nexport {\n  tl_default as default\n};\n//# sourceMappingURL=tl-DDFVDALG.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/tl-O6CWFXUB.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/locale/tl.js\nvar connectWalletLocalTl = {\n  id: \"tl_PH\",\n  signIn: \"Mag-sign in\",\n  defaultButtonTitle: \"Ikonekta ang Wallet\",\n  connecting: \"Kumokonekta\",\n  switchNetwork: \"Palitan ang Network\",\n  switchingNetwork: \"Papalitan ang Network\",\n  defaultModalTitle: \"Kumonekta\",\n  recommended: \"Inirerekomenda\",\n  installed: \"Naka-install\",\n  continueAsGuest: \"Magpatuloy bilang guest\",\n  connectAWallet: \"Kumonekta ng wallet\",\n  newToWallets: \"Bago sa mga wallet?\",\n  getStarted: \"Simulan\",\n  guest: \"Guest\",\n  buy: \"Bumili\",\n  transactions: \"Mga Transaksyon\",\n  payTransactions: \"Mga Transaksyong Fiat\",\n  walletTransactions: \"Mga Transaksyon sa Wallet\",\n  viewAllTransactions: \"Tingnan ang Lahat ng Transaksyon\",\n  send: \"Ipadala\",\n  receive: \"Matanggap\",\n  currentNetwork: \"Kasalukuyang network\",\n  switchAccount: \"Palitan ang Account\",\n  requestTestnetFunds: \"Humingi ng Testnet Funds\",\n  backupWallet: \"I-backup ang Wallet\",\n  guestWalletWarning: \"Ito ay isang pansamantalang guest wallet. I-download mo ang backup para hindi ka mawalan ng access dito.\",\n  switchTo: \"Palitan ang\",\n  // Used in \"Switch to <Wallet-Name>\"\n  connectedToSmartWallet: \"Smart Account\",\n  confirmInWallet: \"Kumpirmahin sa wallet\",\n  disconnectWallet: \"I-disconnect ang Wallet\",\n  copyAddress: \"Kopyahin ang Address\",\n  personalWallet: \"Personal na Wallet\",\n  smartWallet: \"Smart Wallet\",\n  or: \"O\",\n  goBackButton: \"Bumalik\",\n  passkeys: {\n    title: \"Mga Passkey\",\n    linkPasskey: \"I-link ang Passkey\"\n  },\n  welcomeScreen: {\n    defaultTitle: \"Ang iyong daan patungo sa decentralized na mundo\",\n    defaultSubtitle: \"Kumonekta ng wallet para magsimula\"\n  },\n  agreement: {\n    prefix: \"Sa pamamagitan ng pagkonekta, sumasang-ayon ka sa\",\n    termsOfService: \"Mga Tuntunin ng Serbisyo\",\n    and: \"&\",\n    privacyPolicy: \"Patakaran sa Privacy\"\n  },\n  networkSelector: {\n    title: \"Pumili ng Network\",\n    mainnets: \"Mainnets\",\n    testnets: \"Testnets\",\n    allNetworks: \"Lahat\",\n    addCustomNetwork: \"Magdagdag ng Custom Network\",\n    inputPlaceholder: \"Maghanap ng Network o Chain ID\",\n    categoryLabel: {\n      recentlyUsed: \"Kamakailang Ginamit\",\n      popular: \"Sikat\",\n      others: \"Lahat ng Networks\"\n    },\n    loading: \"Loading\",\n    failedToSwitch: \"Hindi nagawa ang pagpapalit ng network\"\n  },\n  receiveFundsScreen: {\n    title: \"Matanggap ang Pondo\",\n    instruction: \"Kopyahin ang address ng wallet para ipadala ang pondo dito\"\n  },\n  sendFundsScreen: {\n    title: \"Ipadala ang Pondo\",\n    submitButton: \"Ipadala\",\n    token: \"Token\",\n    sendTo: \"Ipadala sa\",\n    amount: \"Halaga\",\n    successMessage: \"Tagumpay ang Transaksyon\",\n    invalidAddress: \"Hindi wastong Address\",\n    noTokensFound: \"Walang Nakitang Tokens\",\n    searchToken: \"Maghanap o I-paste ang token address\",\n    transactionFailed: \"Nabigo ang Transaksyon\",\n    transactionRejected: \"Tinanggihan ang Transaksyon\",\n    insufficientFunds: \"Kulang ang Pondo\",\n    selectTokenTitle: \"Pumili ng Token\",\n    sending: \"Ipinapadala\"\n  },\n  signatureScreen: {\n    instructionScreen: {\n      title: \"Mag-sign in\",\n      instruction: \"Mangyaring pirmahan ang kahilingan ng mensahe sa iyong wallet para magpatuloy\",\n      signInButton: \"Mag-sign in\",\n      disconnectWallet: \"I-disconnect ang Wallet\"\n    },\n    signingScreen: {\n      title: \"Pagsisign-in\",\n      prompt: \"Pirmahan ang kahilingan ng signature sa iyong wallet\",\n      promptForSafe: \"Pirmahan ang kahilingan ng signature sa iyong wallet at aprubahan ang transaksyon sa Safe\",\n      approveTransactionInSafe: \"Aprubahan ang transaksyon sa Safe\",\n      tryAgain: \"Subukan muli\",\n      failedToSignIn: \"Hindi nagawa ang pagsisign-in\",\n      inProgress: \"Naghihintay ng Kumpirmasyon\"\n    }\n  },\n  manageWallet: {\n    title: \"Pamahalaan ang Wallet\",\n    linkedProfiles: \"Linked Profiles\",\n    linkProfile: \"Link a Profile\",\n    connectAnApp: \"Ikonekta ang isang App\",\n    exportPrivateKey: \"I-export ang Pribadong Susi\"\n  },\n  viewFunds: {\n    title: \"Tingnan ang Pondo\",\n    viewNFTs: \"Tingnan ang mga NFT\",\n    viewTokens: \"Tingnan ang mga Token\",\n    viewAssets: \"Tingnan ang mga Asset\"\n  }\n};\nvar tl_default = connectWalletLocalTl;\nexport {\n  tl_default as default\n};\n//# sourceMappingURL=tl-O6CWFXUB.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/trade.flooz-RHPEJ2TY.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/trade.flooz.wallet/index.js\nvar wallet = {\n  id: \"trade.flooz.wallet\",\n  name: \"Flooz\",\n  homepage: \"https://wallet.flooz.trade\",\n  image_id: \"0a04f368-4f56-4c12-0bfa-93b14bb20800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/id1621027074\",\n    android: \"https://play.google.com/store/apps/details?id=wallet.flooz.mobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"floozwallet://\",\n    universal: \"https://wallet.flooz.trade/wc\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://wallet.flooz.trade/\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=trade.flooz-RHPEJ2TY.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/units-OLWSIMOC.js",
    "content": "import {\n  fromGwei,\n  toEther,\n  toTokens,\n  toUnits,\n  toWei\n} from \"./chunk-UY2SRO54.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  fromGwei,\n  toEther,\n  toTokens,\n  toUnits,\n  toWei\n};\n//# sourceMappingURL=units-OLWSIMOC.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/upload-U3ZHZXSH.js",
    "content": "import {\n  areUint8ArraysEqual,\n  isUint8Array\n} from \"./chunk-VJOHABJ4.js\";\nimport {\n  isObjectWithKeys\n} from \"./chunk-3ZOYRTTJ.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  detectPlatform\n} from \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/storage/upload/helpers.js\nfunction isFileInstance(data) {\n  return globalThis.File && data instanceof File;\n}\nfunction isBufferOrStringWithName(data) {\n  if (!data) {\n    return false;\n  }\n  if (!isObjectWithKeys(data, [\"data\", \"name\"])) {\n    return false;\n  }\n  return !!(typeof data.name === \"string\" && (typeof data.data === \"string\" || isUint8Array(data.data)));\n}\nfunction isFileBufferOrStringEqual(input1, input2) {\n  if (isFileInstance(input1) && isFileInstance(input2)) {\n    if (input1.name === input2.name && input1.lastModified === input2.lastModified && input1.size === input2.size) {\n      return true;\n    }\n  } else if (isUint8Array(input1) && isUint8Array(input2)) {\n    return areUint8ArraysEqual(input1, input2);\n  } else if (isBufferOrStringWithName(input1) && isBufferOrStringWithName(input2)) {\n    if (input1.name === input2.name) {\n      if (typeof input1.data === \"string\" && typeof input2.data === \"string\") {\n        return input1.data === input2.data;\n      }\n      if (isUint8Array(input1.data) && isUint8Array(input2.data)) {\n        return areUint8ArraysEqual(input1.data, input2.data);\n      }\n    }\n  }\n  return false;\n}\nfunction buildFormData(form, files, options) {\n  const fileNameToFileMap = /* @__PURE__ */ new Map();\n  const fileNames = [];\n  for (let i = 0; i < files.length; i++) {\n    const file = files[i];\n    let fileName = \"\";\n    let fileData = file;\n    if (isFileInstance(file)) {\n      if (options == null ? void 0 : options.rewriteFileNames) {\n        let extensions = \"\";\n        if (file.name) {\n          const extensionStartIndex = file.name.lastIndexOf(\".\");\n          if (extensionStartIndex > -1) {\n            extensions = file.name.substring(extensionStartIndex);\n          }\n        }\n        fileName = `${i + options.rewriteFileNames.fileStartNumber}${extensions}`;\n      } else {\n        fileName = `${file.name}`;\n      }\n    } else if (isBufferOrStringWithName(file)) {\n      fileData = file.data;\n      if (options == null ? void 0 : options.rewriteFileNames) {\n        fileName = `${i + options.rewriteFileNames.fileStartNumber}`;\n      } else {\n        fileName = `${file.name}`;\n      }\n    } else {\n      if (options == null ? void 0 : options.rewriteFileNames) {\n        fileName = `${i + options.rewriteFileNames.fileStartNumber}`;\n      } else {\n        fileName = `${i}`;\n      }\n    }\n    const filepath = (options == null ? void 0 : options.uploadWithoutDirectory) ? \"files\" : `files/${fileName}`;\n    if (fileNameToFileMap.has(fileName)) {\n      if (isFileBufferOrStringEqual(fileNameToFileMap.get(fileName), file)) {\n        fileNames.push(fileName);\n        continue;\n      }\n      throw new Error(`[DUPLICATE_FILE_NAME_ERROR] File name ${fileName} was passed for more than one different file.`);\n    }\n    fileNameToFileMap.set(fileName, file);\n    fileNames.push(fileName);\n    form.append(\"file\", new Blob([fileData]), filepath);\n  }\n  const metadata = {\n    name: \"Storage SDK\",\n    keyvalues: { ...options == null ? void 0 : options.metadata }\n  };\n  form.append(\"pinataMetadata\", JSON.stringify(metadata));\n  if (options == null ? void 0 : options.uploadWithoutDirectory) {\n    form.append(\"pinataOptions\", JSON.stringify({\n      wrapWithDirectory: false\n    }));\n  }\n  return {\n    form,\n    // encode the file names on the way out (which is what the upload backend expects)\n    fileNames: fileNames.map((fName) => encodeURIComponent(fName))\n  };\n}\nfunction isFileOrUint8Array(data) {\n  return isFileInstance(data) || isUint8Array(data) || isBufferOrStringWithName(data);\n}\nfunction extractObjectFiles(data, files = []) {\n  if (isFileOrUint8Array(data)) {\n    files.push(data);\n    return files;\n  }\n  if (typeof data === \"object\") {\n    if (!data) {\n      return files;\n    }\n    if (Array.isArray(data)) {\n      for (const entry of data) {\n        extractObjectFiles(entry, files);\n      }\n    } else {\n      Object.keys(data).map((key) => extractObjectFiles(data[key], files));\n    }\n  }\n  return files;\n}\nfunction replaceObjectFilesWithUris(data, uris) {\n  if (isFileOrUint8Array(data)) {\n    if (uris.length) {\n      return uris.shift();\n    }\n    console.warn(\"Not enough URIs to replace all files in object.\");\n  }\n  if (typeof data === \"object\") {\n    if (!data) {\n      return data;\n    }\n    if (Array.isArray(data)) {\n      return data.map((entry) => replaceObjectFilesWithUris(entry, uris));\n    }\n    return Object.fromEntries(Object.entries(data).map(([key, value]) => [\n      key,\n      replaceObjectFilesWithUris(value, uris)\n    ]));\n  }\n  return data;\n}\nfunction replaceGatewayUrlWithScheme(url) {\n  if (url.includes(\"/ipfs/\")) {\n    const hash = url.split(\"/ipfs/\")[1];\n    return `ipfs://${hash}`;\n  }\n  return url;\n}\nfunction replaceObjectGatewayUrlsWithSchemes(data) {\n  if (typeof data === \"string\") {\n    return replaceGatewayUrlWithScheme(data);\n  }\n  if (typeof data === \"object\") {\n    if (!data) {\n      return data;\n    }\n    if (isFileOrUint8Array(data)) {\n      return data;\n    }\n    if (Array.isArray(data)) {\n      return data.map((entry) => replaceObjectGatewayUrlsWithSchemes(entry));\n    }\n    return Object.fromEntries(Object.entries(data).map(([key, value]) => [\n      key,\n      replaceObjectGatewayUrlsWithSchemes(value)\n    ]));\n  }\n  return data;\n}\n\n// node_modules/thirdweb/dist/esm/storage/upload.js\nasync function upload(options) {\n  if (options.files.length === 0) {\n    return null;\n  }\n  const isFileArray = options.files.map((item) => isFileOrUint8Array(item) || typeof item === \"string\").every((item) => !!item);\n  let uris;\n  if (isFileArray) {\n    uris = options.files;\n  } else {\n    let cleaned = options.files;\n    cleaned = replaceObjectGatewayUrlsWithSchemes(cleaned);\n    const files = extractObjectFiles(cleaned);\n    if (files.length) {\n      const uris_ = await upload({ ...options, files });\n      cleaned = replaceObjectFilesWithUris(\n        cleaned,\n        // always pass an array even if the underlying upload returns a single uri\n        Array.isArray(uris_) ? uris_ : [uris_]\n      );\n    }\n    uris = cleaned.map((item) => {\n      if (typeof item === \"string\") {\n        return item;\n      }\n      return stringify(item);\n    });\n  }\n  const form_ = new FormData();\n  const { fileNames, form } = buildFormData(form_, uris, options);\n  const platform = detectPlatform();\n  if (platform === \"browser\" || platform === \"node\") {\n    const { uploadBatch } = await import(\"./web-node-NK4RL5GU.js\");\n    const uris2 = await uploadBatch(options.client, form, fileNames, options);\n    if (options.files.length === 1) {\n      return uris2[0];\n    }\n    return uris2;\n  }\n  throw new Error(\"Please, use the uploadMobile function in mobile environments.\");\n}\nexport {\n  upload\n};\n//# sourceMappingURL=upload-U3ZHZXSH.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/us-A63RIC6G.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/us.binance/index.js\nvar wallet = {\n  id: \"us.binance\",\n  name: \"Binance.US\",\n  homepage: \"https://binance.us\",\n  image_id: \"48aa1a7d-c5fe-4ad6-c2f2-e5684b296900\",\n  app: {\n    browser: null,\n    ios: \"https://itunes.apple.com/app/id1492670702\",\n    android: \"https://play.google.com/store/apps/details?id=com.binance.us\",\n    mac: \"\",\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bncus://binance.us\",\n    universal: \"https://binance.us/universal_JHHGDSKDJ\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=us-A63RIC6G.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/utils-QE6HZ2TS.js",
    "content": "import {\n  showCoinbasePopup\n} from \"./chunk-2RRVHQYX.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  showCoinbasePopup\n};\n//# sourceMappingURL=utils-QE6HZ2TS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/utils-RIDKW7H5.js",
    "content": "import {\n  CUSTOM_CHAIN_MAP,\n  cacheChains,\n  convertApiChainToChain,\n  convertLegacyChain,\n  defineChain,\n  getCachedChain,\n  getCachedChainIfExists,\n  getChainDecimals,\n  getChainMetadata,\n  getChainNativeCurrencyName,\n  getChainSymbol,\n  getRpcUrlForChain\n} from \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  CUSTOM_CHAIN_MAP,\n  cacheChains,\n  convertApiChainToChain,\n  convertLegacyChain,\n  defineChain,\n  getCachedChain,\n  getCachedChainIfExists,\n  getChainDecimals,\n  getChainMetadata,\n  getChainNativeCurrencyName,\n  getChainSymbol,\n  getRpcUrlForChain\n};\n//# sourceMappingURL=utils-RIDKW7H5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/vc.uincubator-4WN5IZUJ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/vc.uincubator.api/index.js\nvar wallet = {\n  id: \"vc.uincubator.api\",\n  name: \"UIIC\",\n  homepage: \"https://api.uincubator.vc/download/?company_id=NTU2NjIwMDA=\",\n  image_id: \"cdd77592-c1ba-4dc2-f2a6-c454e2c19800\",\n  app: {\n    browser: null,\n    ios: null,\n    android: \"https://api.uincubator.vc/download/?company_id=NTU2NjIwMDA=\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"uiwallet://?uri=\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=vc.uincubator-4WN5IZUJ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/vi-4HLVRM5V.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/smartWallet/locale/vi.js\nvar smartWalletLocalVi = {\n  connecting: \"Đang kết nối Tài Khoản Thông Minh\",\n  failedToConnect: \"Kết nối Tài Khoản Thông Minh thất bại\",\n  wrongNetworkScreen: {\n    title: \"Sai mạng lưới\",\n    subtitle: \"Vui lòng chuyển sang mạng lưới được yêu cầu\",\n    failedToSwitch: \"Chuyển mạng lưới thất bại\"\n  }\n};\nvar vi_default = smartWalletLocalVi;\nexport {\n  vi_default as default\n};\n//# sourceMappingURL=vi-4HLVRM5V.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/vi-6NOSFFF7.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/shared/locale/vi.js\nvar vi_default = {\n  signInWithGoogle: \"Google\",\n  signInWithFacebook: \"Facebook\",\n  signInWithApple: \"Apple\",\n  signInWithDiscord: \"Discord\",\n  emailPlaceholder: \"Địa chỉ email\",\n  submitEmail: \"Tiếp tục\",\n  signIn: \"Đăng nhập\",\n  or: \"Hoặc\",\n  emailRequired: \"Vui lòng nhập địa chỉ email\",\n  invalidEmail: \"Địa chỉ email không hợp lệ\",\n  maxAccountsExceeded: \"Số tài khoản vượt quá mức quy định. Vui lòng liên hệ với lập trình viên của ứng dụng này\",\n  socialLoginScreen: {\n    title: \"Đăng nhập\",\n    instruction: \"Đăng nhập ở cửa sổ hiện lên\",\n    failed: \"Đăng nhập thất bại\",\n    retry: \"Thử lại\"\n  },\n  emailLoginScreen: {\n    title: \"Đăng nhập\",\n    enterCodeSendTo: \"Nhập mã xác nhận được gửi tới\",\n    newDeviceDetected: \"Bạn đang đăng nhập trên một thiết bị mới\",\n    enterRecoveryCode: \"Nhập mã khôi phục mà bạn nhận được khi đăng nhập lần đầu\",\n    invalidCode: \"Mã xác nhận không hợp lệ\",\n    invalidCodeOrRecoveryCode: \"Mã xác nhận hoặc mã khôi phục bị sai\",\n    verify: \"Xác nhận\",\n    failedToSendCode: \"Gửi mã xác nhận thất bại\",\n    sendingCode: \"Đang gửi mã xác nhận\",\n    resendCode: \"Gửi lại mã xác nhận\"\n  },\n  createPassword: {\n    title: \"Tạo mật khẩu\",\n    instruction: \"Đặt mật khẩu cho tài khoản của bạn. Bạn cần mật khẩu này mỗi khi đăng nhập trên một thiết bị mới\",\n    saveInstruction: \"Vui lòng sao lưu mật khẩu\",\n    inputPlaceholder: \"Nhập mật khẩu của bạn\",\n    confirmation: \"Tôi đã sao lưu mật khẩu\",\n    submitButton: \"Đặt mật khẩu\",\n    failedToSetPassword: \"Đặt mật khẩu thất bại\"\n  },\n  enterPassword: {\n    title: \"Nhập mật khẩu\",\n    instruction: \"Nhập mật khẩu cho tài khoản của bạn\",\n    inputPlaceholder: \"Nhập mật khẩu của bạn\",\n    submitButton: \"Xác nhân\",\n    wrongPassword: \"Sai mật khẩu\"\n  },\n  signInWithEmail: \"Đăng nhập bằng email\",\n  invalidPhone: \"Số điện thoại không hợp lệ\",\n  phonePlaceholder: \"Số điện thoại\",\n  signInWithPhone: \"Đăng nhập bằng số điện thoại\",\n  phoneRequired: \"Vui lòng nhập số điện thoại\",\n  passkey: \"Passkey\",\n  linkWallet: \"Link a Wallet\",\n  loginAsGuest: \"Đăng nhập với tư cách khách\",\n  signInWithWallet: \"Đăng nhập bằng Wallet\"\n};\nexport {\n  vi_default as default\n};\n//# sourceMappingURL=vi-6NOSFFF7.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/vi-7VOZ2AS3.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/ui/ConnectWallet/locale/vi.js\nvar connectLocaleVi = {\n  id: \"vi_VN\",\n  signIn: \"Đăng nhập\",\n  defaultButtonTitle: \"Kết nối ví\",\n  connecting: \"Đang kết nối\",\n  switchNetwork: \"Chuyển mạng\",\n  switchingNetwork: \"Đang chuyển mạng\",\n  defaultModalTitle: \"Đăng nhập\",\n  recommended: \"Khuyên dùng\",\n  installed: \"Đã cài đặt\",\n  buy: \"Mua\",\n  continueAsGuest: \"Continue as guest\",\n  connectAWallet: \"Kết nối ví\",\n  newToWallets: \"Tìm hiểu về ví điện tử\",\n  getStarted: \"Bắt đầu\",\n  guest: \"Guest\",\n  send: \"Gửi\",\n  receive: \"Nhận\",\n  currentNetwork: \"Mạng lưới hiện tại\",\n  switchAccount: \"Chuyển tài khoản\",\n  requestTestnetFunds: \"Nhận Testnet Funds\",\n  transactions: \"Transactions\",\n  payTransactions: \"Fiat Transactions\",\n  walletTransactions: \"Wallet Transactions\",\n  viewAllTransactions: \"Tất cả giao dịch\",\n  backupWallet: \"Sao lưu ví\",\n  guestWalletWarning: \"Đây là ví tạm thời cho phiên đăng nhập của bạn. Vui lòng sao lưu ví nếu bạn không muốn dánh mất thông tin\",\n  switchTo: \"Đổi qua ví\",\n  // Used in \"Switch to <Wallet-Name>\"\n  connectedToSmartWallet: \"Ví Thông Minh\",\n  confirmInWallet: \"Xác nhận bằng ví\",\n  disconnectWallet: \"Ngắt kết nối ví\",\n  copyAddress: \"Sao chép địa chỉ\",\n  personalWallet: \"Ví cá nhân\",\n  smartWallet: \"Ví Thông Minh\",\n  or: \"hoặc\",\n  goBackButton: \"Quay lại\",\n  passkeys: {\n    title: \"Khóa truy cập\",\n    linkPasskey: \"Liên kết khóa truy cập\"\n  },\n  welcomeScreen: {\n    defaultTitle: \"Cánh cổng dẫn tới thế giới phi tập trung\",\n    defaultSubtitle: \"Kết nối ví để bắt đầu\"\n  },\n  agreement: {\n    prefix: \"Bằng việc kết nối, bạn đồng ý với\",\n    termsOfService: \"Điều khoản dịch vụ\",\n    and: \"và\",\n    privacyPolicy: \"Chính sách bảo mật\"\n  },\n  networkSelector: {\n    title: \"Chọn mạng lưới\",\n    mainnets: \"Mainnets\",\n    testnets: \"Testnets\",\n    allNetworks: \"Tất cả\",\n    addCustomNetwork: \"Thêm mạng lưới\",\n    inputPlaceholder: \"Tìm theo tên hoặc ID\",\n    categoryLabel: {\n      recentlyUsed: \"Gần đây\",\n      popular: \"Thông dụng\",\n      others: \"Tất cả mạng lưới\"\n    },\n    loading: \"Đang tải\",\n    failedToSwitch: \"Không thể đổi mạng lưới\"\n  },\n  receiveFundsScreen: {\n    title: \"Nhận tiền\",\n    instruction: \"Sử dụng địa chỉ ví này để nhận tiền\"\n  },\n  sendFundsScreen: {\n    title: \"Gửi tiền\",\n    submitButton: \"Gửi\",\n    token: \"Token\",\n    sendTo: \"Gửi tới\",\n    amount: \"Số lượng\",\n    successMessage: \"Giao dịch thành công\",\n    invalidAddress: \"Địa chỉ không hợp lệ\",\n    noTokensFound: \"Không tìm thấy token\",\n    searchToken: \"Tìm kiếm hoặc dán địa chỉ token\",\n    transactionFailed: \"Giao dịch thất baị\",\n    transactionRejected: \"Giao dịch bị huỷ\",\n    insufficientFunds: \"Không đủ vốn\",\n    selectTokenTitle: \"Chọn Token\",\n    sending: \"Đang gửi\"\n  },\n  signatureScreen: {\n    instructionScreen: {\n      title: \"Đăng nhập\",\n      instruction: \"Kí vào yêu cầu tin nhắn trong ví của bạn để tiếp tục\",\n      signInButton: \"Đăng nhập\",\n      disconnectWallet: \"Ngắt kết nối ví\"\n    },\n    signingScreen: {\n      title: \"Đang đăng nhập\",\n      prompt: \"Ký vào yêu cầu tin nhắn trong ví của bạn\",\n      promptForSafe: \"Kí vào yêu cầu tin nhắn trong ví của bạn và chấp nhận giao dịch trong ứng dụng Safe\",\n      approveTransactionInSafe: \"Xác nhận giao dịch bằng ví Safe\",\n      tryAgain: \"Thử lại\",\n      failedToSignIn: \"Đăng nhập thất bại\",\n      inProgress: \"Đang đợi xác nhận\"\n    }\n  },\n  manageWallet: {\n    title: \"Quản lý ví\",\n    linkedProfiles: \"Tài khoản\",\n    linkProfile: \"Thêm tính năng xác thực\",\n    connectAnApp: \"Kết nối ứng dụng\",\n    exportPrivateKey: \"Sao lưu private key\"\n  },\n  viewFunds: {\n    title: \"Tài sản\",\n    viewTokens: \"Tokens\",\n    viewNFTs: \"NFTs\",\n    viewAssets: \"Tài sản\"\n  }\n};\nvar vi_default = connectLocaleVi;\nexport {\n  vi_default as default\n};\n//# sourceMappingURL=vi-7VOZ2AS3.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/vi-JLTPQX3P.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/react/web/wallets/injected/locale/vi.js\nvar injectedWalletLocaleVi = (wallet) => ({\n  connectionScreen: {\n    inProgress: \"Đang đợi xác nhận\",\n    failed: \"Kết nối thất bại\",\n    instruction: `Kết nối bằng ứng dụng ${wallet}`,\n    retry: \"Thử lại\"\n  },\n  getStartedScreen: {\n    instruction: `Quét mã QR để tải ứng dụng ${wallet}`\n  },\n  scanScreen: {\n    instruction: `Quét mã QR bằng ứng dụng ${wallet} để kết nối`\n  },\n  getStartedLink: `Tôi không có ứng dụng ${wallet}`,\n  download: {\n    chrome: \"Tải cho trình duyệt Chrome\",\n    android: \"Tải trên Google Play\",\n    iOS: \"Tải trên App Store\"\n  }\n});\nvar vi_default = injectedWalletLocaleVi;\nexport {\n  vi_default as default\n};\n//# sourceMappingURL=vi-JLTPQX3P.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/wallet-ZUZOMGPE.js",
    "content": "import {\n  autoConnectInAppWallet,\n  connectInAppWallet,\n  isInAppWallet\n} from \"./chunk-O6KA6WKL.js\";\nimport \"./chunk-ZLJ6VYSG.js\";\nimport \"./chunk-EIBOABXT.js\";\nimport \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport \"./chunk-QHKZ43P6.js\";\nimport \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-SEVZ5PBP.js\";\nexport {\n  autoConnectInAppWallet,\n  connectInAppWallet,\n  isInAppWallet\n};\n//# sourceMappingURL=wallet-ZUZOMGPE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/walletConnect-4SOZLMQZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/custom/walletConnect/index.js\nvar wallet = {\n  id: \"walletConnect\",\n  name: \"WalletConnect\",\n  homepage: \"https://walletconnect.com\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=walletConnect-4SOZLMQZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/web-connector-5CMXT4ED.js",
    "content": "import {\n  signLoginPayload\n} from \"./chunk-GHAZ34ED.js\";\nimport {\n  randomBytesHex\n} from \"./chunk-S6VQW2VI.js\";\nimport {\n  getLoginCallbackUrl,\n  getLoginUrl,\n  loginWithOauth,\n  loginWithOauthRedirect\n} from \"./chunk-J7FYPWA5.js\";\nimport \"./chunk-EIBOABXT.js\";\nimport {\n  trackTransaction\n} from \"./chunk-I2GEMA2B.js\";\nimport {\n  parseTypedData\n} from \"./chunk-SWMZXE3E.js\";\nimport \"./chunk-N24CESYN.js\";\nimport {\n  ClientScopedStorage,\n  IN_APP_WALLET_PATH\n} from \"./chunk-CYVKJMZE.js\";\nimport {\n  webLocalStorage\n} from \"./chunk-VIBS7Y3M.js\";\nimport {\n  eth_sendRawTransaction\n} from \"./chunk-MWAIX6LF.js\";\nimport {\n  sleep\n} from \"./chunk-4OCU6WGG.js\";\nimport \"./chunk-YPFLLHK6.js\";\nimport \"./chunk-7EY5MWB2.js\";\nimport \"./chunk-LO5SQBMX.js\";\nimport {\n  getAddress\n} from \"./chunk-EIVAOYE5.js\";\nimport \"./chunk-67BSOYLQ.js\";\nimport \"./chunk-B7XHB4Z2.js\";\nimport \"./chunk-O6UZ65WN.js\";\nimport {\n  bytesToHex\n} from \"./chunk-GINVHONX.js\";\nimport \"./chunk-O6LGEXJ4.js\";\nimport \"./chunk-ME5GAE4N.js\";\nimport {\n  getRpcClient\n} from \"./chunk-I5DK3TWY.js\";\nimport {\n  stringify\n} from \"./chunk-NJUWOGZE.js\";\nimport {\n  getCachedChain\n} from \"./chunk-TFBEDS4S.js\";\nimport \"./chunk-GOA7IGSB.js\";\nimport {\n  getThirdwebBaseUrl,\n  getThirdwebDomains\n} from \"./chunk-QHKZ43P6.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport {\n  hexToString,\n  toHex\n} from \"./chunk-BBNNHC5G.js\";\nimport \"./chunk-Y3WKETHV.js\";\nimport \"./chunk-SPELR2RL.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/actions/get-enclave-user-status.js\nasync function getUserStatus({ authToken, client, ecosystem }) {\n  const clientFetch = getClientFetch(client, ecosystem);\n  const response = await clientFetch(`${getThirdwebBaseUrl(\"inAppWallet\")}/api/2024-05-05/accounts`, {\n    method: \"GET\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"x-thirdweb-client-id\": client.clientId,\n      Authorization: `Bearer embedded-wallet-token:${authToken}`\n    }\n  });\n  if (!response.ok) {\n    if (response.status === 401) {\n      return void 0;\n    }\n    const result = await response.json();\n    throw new Error(`Failed to get user status: ${result.error}`);\n  }\n  return await response.json();\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/native/helpers/constants.js\nvar AUTH_SHARE_ID = 3;\nvar AUTH_SHARE_INDEX = AUTH_SHARE_ID - 1;\nvar DEVICE_SHARE_ID = 1;\nvar DEVICE_SHARE_INDEX = DEVICE_SHARE_ID - 1;\nvar RECOVERY_SHARE_ID = 2;\nvar RECOVERY_SHARE_INDEX = RECOVERY_SHARE_ID - 1;\nvar AWS_REGION = \"us-west-2\";\nvar COGNITO_USER_POOL_ID = \"us-west-2_UFwLcZIpq\";\nvar DOMAIN_URL_2023 = getThirdwebBaseUrl(\"inAppWallet\");\nvar BASE_URL_2023 = `${DOMAIN_URL_2023}/`;\nvar ROUTE_2023_10_20_API_BASE_PATH = `${BASE_URL_2023}api/2023-10-20`;\nvar ROUTE_2024_05_05_API_BASE_PATH = `${BASE_URL_2023}api/2024-05-05`;\nvar ROUTE_EMBEDDED_WALLET_DETAILS = `${ROUTE_2023_10_20_API_BASE_PATH}/embedded-wallet/embedded-wallet-user-details`;\nvar ROUTE_COGNITO_IDENTITY_POOL_URL = `cognito-idp.${AWS_REGION}.amazonaws.com/${COGNITO_USER_POOL_ID}`;\nvar ROUTE_STORE_USER_SHARES = `${ROUTE_2023_10_20_API_BASE_PATH}/embedded-wallet/embedded-wallet-shares`;\nvar ROUTE_GET_USER_SHARES = `${ROUTE_2023_10_20_API_BASE_PATH}/embedded-wallet/embedded-wallet-shares`;\nvar ROUTE_VERIFY_THIRDWEB_CLIENT_ID = `${ROUTE_2023_10_20_API_BASE_PATH}/embedded-wallet/verify-thirdweb-client-id`;\nvar ROUTE_AUTH_JWT_CALLBACK = `${ROUTE_2023_10_20_API_BASE_PATH}/embedded-wallet/validate-custom-jwt`;\nvar ROUTE_AUTH_ENDPOINT_CALLBACK = `${ROUTE_2023_10_20_API_BASE_PATH}/embedded-wallet/validate-custom-auth-endpoint`;\nvar ROUTE_AUTH_COGNITO_ID_TOKEN_V1 = `${ROUTE_2023_10_20_API_BASE_PATH}/embedded-wallet/cognito-id-token`;\nvar ROUTE_AUTH_COGNITO_ID_TOKEN_V2 = `${ROUTE_2024_05_05_API_BASE_PATH}/login/web-token-exchange`;\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/native/helpers/errors.js\nvar createErrorMessage = (message, error) => {\n  if (error instanceof Error) {\n    return `${message}: ${error.message}`;\n  }\n  return `${message}: ${stringify(error)}`;\n};\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/authentication/authEndpoint.js\nasync function authEndpoint(args) {\n  const clientFetch = getClientFetch(args.client, args.ecosystem);\n  const res = await clientFetch(ROUTE_AUTH_ENDPOINT_CALLBACK, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\"\n    },\n    body: stringify({\n      payload: args.payload,\n      developerClientId: args.client.clientId\n    })\n  });\n  if (!res.ok) {\n    const error = await res.json();\n    throw new Error(`Custom auth endpoint authentication error: ${error.message}`);\n  }\n  try {\n    const { verifiedToken } = await res.json();\n    return { storedToken: verifiedToken };\n  } catch (e) {\n    throw new Error(createErrorMessage(\"Malformed response from post auth_endpoint authentication\", e));\n  }\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/authentication/guest.js\nasync function guestAuthenticate(args) {\n  const storage = new ClientScopedStorage({\n    storage: args.storage,\n    clientId: args.client.clientId,\n    ecosystem: args.ecosystem\n  });\n  let sessionId = await storage.getGuestSessionId();\n  if (!sessionId) {\n    sessionId = randomBytesHex(32);\n    storage.saveGuestSessionId(sessionId);\n  }\n  const clientFetch = getClientFetch(args.client, args.ecosystem);\n  const path = getLoginCallbackUrl({\n    authOption: \"guest\",\n    client: args.client,\n    ecosystem: args.ecosystem\n  });\n  const res = await clientFetch(`${path}`, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\"\n    },\n    body: stringify({\n      sessionId\n    })\n  });\n  if (!res.ok)\n    throw new Error(\"Failed to generate guest account\");\n  return await res.json();\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/authentication/jwt.js\nasync function customJwt(args) {\n  const clientFetch = getClientFetch(args.client, args.ecosystem);\n  const res = await clientFetch(ROUTE_AUTH_JWT_CALLBACK, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\"\n    },\n    body: stringify({\n      jwt: args.jwt,\n      developerClientId: args.client.clientId\n    })\n  });\n  if (!res.ok) {\n    const error = await res.json();\n    throw new Error(`JWT authentication error: ${error.message}`);\n  }\n  try {\n    const { verifiedToken } = await res.json();\n    return { storedToken: verifiedToken };\n  } catch (e) {\n    throw new Error(createErrorMessage(\"Malformed response from post jwt authentication\", e));\n  }\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/authentication/linkAccount.js\nasync function linkAccount({ client, ecosystem, tokenToLink, storage }) {\n  const clientFetch = getClientFetch(client, ecosystem);\n  const IN_APP_URL = getThirdwebBaseUrl(\"inAppWallet\");\n  const currentAccountToken = await storage.getAuthCookie();\n  if (!currentAccountToken) {\n    throw new Error(\"Failed to link account, no user logged in\");\n  }\n  const headers = {\n    Authorization: `Bearer iaw-auth-token:${currentAccountToken}`,\n    \"Content-Type\": \"application/json\"\n  };\n  const linkedDetailsResp = await clientFetch(`${IN_APP_URL}/api/2024-05-05/account/connect`, {\n    method: \"POST\",\n    headers,\n    body: stringify({\n      accountAuthTokenToConnect: tokenToLink\n    })\n  });\n  if (!linkedDetailsResp.ok) {\n    const body = await linkedDetailsResp.json();\n    throw new Error(body.message || \"Failed to link account.\");\n  }\n  const { linkedAccounts } = await linkedDetailsResp.json();\n  return linkedAccounts ?? [];\n}\nasync function getLinkedProfilesInternal({ client, ecosystem, storage }) {\n  const clientFetch = getClientFetch(client, ecosystem);\n  const IN_APP_URL = getThirdwebBaseUrl(\"inAppWallet\");\n  const currentAccountToken = await storage.getAuthCookie();\n  if (!currentAccountToken) {\n    throw new Error(\"Failed to get linked accounts, no user logged in\");\n  }\n  const headers = {\n    Authorization: `Bearer iaw-auth-token:${currentAccountToken}`,\n    \"Content-Type\": \"application/json\"\n  };\n  const linkedAccountsResp = await clientFetch(`${IN_APP_URL}/api/2024-05-05/accounts`, {\n    method: \"GET\",\n    headers\n  });\n  if (!linkedAccountsResp.ok) {\n    const body = await linkedAccountsResp.json();\n    throw new Error(body.message || \"Failed to get linked accounts.\");\n  }\n  const { linkedAccounts } = await linkedAccountsResp.json();\n  return linkedAccounts ?? [];\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/authentication/passkeys.js\nfunction getVerificationPath() {\n  return `${getThirdwebBaseUrl(\"inAppWallet\")}/api/2024-05-05/login/passkey/callback`;\n}\nfunction getChallengePath(type, username) {\n  return `${getThirdwebBaseUrl(\"inAppWallet\")}/api/2024-05-05/login/passkey?type=${type}${username ? `&username=${username}` : \"\"}`;\n}\nasync function registerPasskey(options) {\n  var _a, _b, _c;\n  if (!options.passkeyClient.isAvailable()) {\n    throw new Error(\"Passkeys are not available on this device\");\n  }\n  const fetchWithId = getClientFetch(options.client, options.ecosystem);\n  const generatedName = options.username ?? generateUsername(options.ecosystem);\n  const res = await fetchWithId(getChallengePath(\"sign-up\", generatedName));\n  const challengeData = await res.json();\n  if (!challengeData.challenge) {\n    throw new Error(\"No challenge received\");\n  }\n  const challenge = challengeData.challenge;\n  const registration = await options.passkeyClient.register({\n    name: generatedName,\n    challenge,\n    rp: options.rp\n  });\n  const customHeaders = {};\n  if ((_a = options.ecosystem) == null ? void 0 : _a.partnerId) {\n    customHeaders[\"x-ecosystem-partner-id\"] = options.ecosystem.partnerId;\n  }\n  if ((_b = options.ecosystem) == null ? void 0 : _b.id) {\n    customHeaders[\"x-ecosystem-id\"] = options.ecosystem.id;\n  }\n  const verifRes = await fetchWithId(getVerificationPath(), {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      ...customHeaders\n    },\n    body: stringify({\n      type: \"sign-up\",\n      authenticatorData: registration.authenticatorData,\n      credentialId: registration.credentialId,\n      serverVerificationId: challengeData.serverVerificationId,\n      clientData: registration.clientData,\n      username: generatedName,\n      credential: {\n        publicKey: registration.credential.publicKey,\n        algorithm: registration.credential.algorithm\n      },\n      origin: registration.origin,\n      rpId: options.rp.id\n    })\n  });\n  const verifData = await verifRes.json();\n  if (!verifData || !verifData.storedToken) {\n    throw new Error(`Error verifying passkey: ${verifData.message ?? \"unknown error\"}`);\n  }\n  await ((_c = options.storage) == null ? void 0 : _c.savePasskeyCredentialId(registration.credentialId));\n  return verifData;\n}\nasync function loginWithPasskey(options) {\n  var _a, _b, _c, _d;\n  if (!options.passkeyClient.isAvailable()) {\n    throw new Error(\"Passkeys are not available on this device\");\n  }\n  const fetchWithId = getClientFetch(options.client, options.ecosystem);\n  const [challengeData, credentialId] = await Promise.all([\n    fetchWithId(getChallengePath(\"sign-in\")).then((r) => r.json()),\n    (_a = options.storage) == null ? void 0 : _a.getPasskeyCredentialId()\n  ]);\n  if (!challengeData.challenge) {\n    throw new Error(\"No challenge received\");\n  }\n  const challenge = challengeData.challenge;\n  const authentication = await options.passkeyClient.authenticate({\n    credentialId: credentialId ?? void 0,\n    challenge,\n    rp: options.rp\n  });\n  const customHeaders = {};\n  if ((_b = options.ecosystem) == null ? void 0 : _b.partnerId) {\n    customHeaders[\"x-ecosystem-partner-id\"] = options.ecosystem.partnerId;\n  }\n  if ((_c = options.ecosystem) == null ? void 0 : _c.id) {\n    customHeaders[\"x-ecosystem-id\"] = options.ecosystem.id;\n  }\n  const verifRes = await fetchWithId(getVerificationPath(), {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      ...customHeaders\n    },\n    body: stringify({\n      type: \"sign-in\",\n      authenticatorData: authentication.authenticatorData,\n      credentialId: authentication.credentialId,\n      serverVerificationId: challengeData.serverVerificationId,\n      clientData: authentication.clientData,\n      signature: authentication.signature,\n      origin: authentication.origin,\n      rpId: options.rp.id\n    })\n  });\n  const verifData = await verifRes.json();\n  if (!verifData || !verifData.storedToken) {\n    throw new Error(`Error verifying passkey: ${verifData.message ?? \"unknown error\"}`);\n  }\n  await ((_d = options.storage) == null ? void 0 : _d.savePasskeyCredentialId(authentication.credentialId));\n  return verifData;\n}\nfunction generateUsername(ecosystem) {\n  return `${(ecosystem == null ? void 0 : ecosystem.id) ?? \"wallet\"}-${(/* @__PURE__ */ new Date()).toISOString()}`;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/authentication/siwe.js\nasync function siweAuthenticate(args) {\n  const { wallet, chain } = args;\n  const account = await wallet.connect({ client: args.client });\n  const clientFetch = getClientFetch(args.client, args.ecosystem);\n  const payload = await (async () => {\n    const path = getLoginUrl({\n      authOption: \"wallet\",\n      client: args.client,\n      ecosystem: args.ecosystem\n    });\n    const res = await clientFetch(`${path}&address=${account.address}&chainId=${chain.id}`);\n    if (!res.ok)\n      throw new Error(\"Failed to generate SIWE login payload\");\n    return await res.json();\n  })();\n  const { signature } = await signLoginPayload({ payload, account });\n  const authResult = await (async () => {\n    const path = getLoginCallbackUrl({\n      authOption: \"wallet\",\n      client: args.client,\n      ecosystem: args.ecosystem\n    });\n    const res = await clientFetch(`${path}&signature=${signature}&payload=${encodeURIComponent(payload)}`, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\"\n      },\n      body: stringify({\n        signature,\n        payload\n      })\n    });\n    if (!res.ok)\n      throw new Error(\"Failed to verify SIWE signature\");\n    return await res.json();\n  })();\n  return authResult;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/actions/sign-message.enclave.js\nasync function signMessage({ client, payload: { message, isRaw }, storage }) {\n  const authToken = await storage.getAuthCookie();\n  const ecosystem = storage.ecosystem;\n  const clientFetch = getClientFetch(client, ecosystem);\n  if (!authToken) {\n    throw new Error(\"No auth token found when signing message\");\n  }\n  const response = await clientFetch(`${getThirdwebBaseUrl(\"inAppWallet\")}/api/v1/enclave-wallet/sign-message`, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"x-thirdweb-client-id\": client.clientId,\n      Authorization: `Bearer embedded-wallet-token:${authToken}`\n    },\n    body: stringify({\n      messagePayload: {\n        message,\n        isRaw\n      }\n    })\n  });\n  if (!response.ok) {\n    throw new Error(\"Failed to sign message\");\n  }\n  const signedMessage = await response.json();\n  return signedMessage;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/actions/sign-transaction.enclave.js\nasync function signTransaction({ client, payload, storage }) {\n  const authToken = await storage.getAuthCookie();\n  const ecosystem = storage.ecosystem;\n  const clientFetch = getClientFetch(client, ecosystem);\n  if (!authToken) {\n    throw new Error(\"No auth token found when signing transaction\");\n  }\n  const response = await clientFetch(`${getThirdwebBaseUrl(\"inAppWallet\")}/api/v1/enclave-wallet/sign-transaction`, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"x-thirdweb-client-id\": client.clientId,\n      Authorization: `Bearer embedded-wallet-token:${authToken}`\n    },\n    body: stringify({\n      transactionPayload: payload\n    })\n  });\n  if (!response.ok) {\n    throw new Error(\"Failed to sign transaction\");\n  }\n  const signedTransaction = await response.json();\n  return signedTransaction.signature;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/actions/sign-typed-data.enclave.js\nasync function signTypedData({ client, payload, storage }) {\n  const authToken = await storage.getAuthCookie();\n  const ecosystem = storage.ecosystem;\n  const clientFetch = getClientFetch(client, ecosystem);\n  if (!authToken) {\n    throw new Error(\"No auth token found when signing typed data\");\n  }\n  const response = await clientFetch(`${getThirdwebBaseUrl(\"inAppWallet\")}/api/v1/enclave-wallet/sign-typed-data`, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"x-thirdweb-client-id\": client.clientId,\n      Authorization: `Bearer embedded-wallet-token:${authToken}`\n    },\n    body: stringify({\n      ...payload\n    })\n  });\n  if (!response.ok) {\n    throw new Error(\"Failed to sign typed data\");\n  }\n  const signedTypedData = await response.json();\n  return signedTypedData;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js\nvar EnclaveWallet = class {\n  constructor({ client, ecosystem, address, storage }) {\n    Object.defineProperty(this, \"client\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"ecosystem\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"address\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"localStorage\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.client = client;\n    this.ecosystem = ecosystem;\n    this.address = address;\n    this.localStorage = storage;\n  }\n  /**\n   * Store the auth token for use\n   * @returns `{walletAddress: string }` The user's wallet details\n   * @internal\n   */\n  async postWalletSetUp(authResult) {\n    await this.localStorage.saveAuthCookie(authResult.storedToken.cookieString);\n  }\n  /**\n   * Gets the current user's details\n   * @internal\n   */\n  async getUserWalletStatus() {\n    var _a, _b;\n    const token = await this.localStorage.getAuthCookie();\n    if (!token) {\n      return { status: \"Logged Out\" };\n    }\n    const userStatus = await getUserStatus({\n      authToken: token,\n      client: this.client,\n      ecosystem: this.ecosystem\n    });\n    if (!userStatus) {\n      return { status: \"Logged Out\" };\n    }\n    const wallet = userStatus.wallets[0];\n    const authDetails = {\n      email: (_a = userStatus.linkedAccounts.find((account) => account.details.email !== void 0)) == null ? void 0 : _a.details.email,\n      phoneNumber: (_b = userStatus.linkedAccounts.find((account) => account.details.phone !== void 0)) == null ? void 0 : _b.details.phone,\n      userWalletId: userStatus.id || \"\",\n      recoveryShareManagement: \"ENCLAVE\"\n    };\n    if (!wallet) {\n      return {\n        status: \"Logged In, Wallet Uninitialized\",\n        authDetails\n      };\n    }\n    return {\n      status: \"Logged In, Wallet Initialized\",\n      walletAddress: wallet.address,\n      authDetails,\n      account: await this.getAccount()\n    };\n  }\n  /**\n   * Returns an account to perform wallet operations\n   * @internal\n   */\n  async getAccount() {\n    const client = this.client;\n    const storage = this.localStorage;\n    const address = this.address;\n    const ecosystem = this.ecosystem;\n    const _signTransaction = async (tx) => {\n      const rpcRequest = getRpcClient({\n        client,\n        chain: getCachedChain(tx.chainId)\n      });\n      const transaction = {\n        to: tx.to ? getAddress(tx.to) : void 0,\n        data: tx.data,\n        value: typeof tx.value === \"bigint\" ? toHex(tx.value) : void 0,\n        gas: typeof tx.gas === \"bigint\" ? toHex(tx.gas + tx.gas / BigInt(10)) : void 0,\n        // Add a 10% buffer to gas\n        nonce: typeof tx.nonce === \"number\" ? toHex(tx.nonce) : toHex(await import(\"./eth_getTransactionCount-ITCGR7E4.js\").then(({ eth_getTransactionCount }) => eth_getTransactionCount(rpcRequest, {\n          address: this.address,\n          blockTag: \"pending\"\n        }))),\n        chainId: toHex(tx.chainId)\n      };\n      if (tx.maxFeePerGas) {\n        transaction.maxFeePerGas = toHex(tx.maxFeePerGas);\n        transaction.maxPriorityFeePerGas = typeof tx.maxPriorityFeePerGas === \"bigint\" ? toHex(tx.maxPriorityFeePerGas) : void 0;\n        transaction.type = 2;\n      } else {\n        transaction.gasPrice = typeof tx.gasPrice === \"bigint\" ? toHex(tx.gasPrice) : void 0;\n        transaction.type = 0;\n      }\n      return signTransaction({\n        client,\n        storage,\n        payload: transaction\n      });\n    };\n    return {\n      address: getAddress(address),\n      async signTransaction(tx) {\n        if (!tx.chainId) {\n          throw new Error(\"chainId required in tx to sign\");\n        }\n        return _signTransaction({\n          chainId: tx.chainId,\n          ...tx\n        });\n      },\n      async sendTransaction(tx) {\n        const rpcRequest = getRpcClient({\n          client,\n          chain: getCachedChain(tx.chainId)\n        });\n        const signedTx = await _signTransaction(tx);\n        const transactionHash = await eth_sendRawTransaction(rpcRequest, signedTx);\n        trackTransaction({\n          client,\n          ecosystem,\n          chainId: tx.chainId,\n          walletAddress: address,\n          walletType: \"inApp\",\n          transactionHash,\n          contractAddress: tx.to ?? void 0,\n          gasPrice: tx.gasPrice\n        });\n        return { transactionHash };\n      },\n      async signMessage({ message }) {\n        const messagePayload = (() => {\n          if (typeof message === \"string\") {\n            return { message, isRaw: false };\n          }\n          return {\n            message: typeof message.raw === \"string\" ? message.raw : bytesToHex(message.raw),\n            isRaw: true\n          };\n        })();\n        const { signature } = await signMessage({\n          client,\n          payload: messagePayload,\n          storage\n        });\n        return signature;\n      },\n      async signTypedData(_typedData) {\n        const parsedTypedData = parseTypedData(_typedData);\n        const { signature } = await signTypedData({\n          client,\n          payload: parsedTypedData,\n          storage\n        });\n        return signature;\n      }\n    };\n  }\n};\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.js\nvar iframeBaseStyle = {\n  height: \"100%\",\n  width: \"100%\",\n  border: \"none\",\n  backgroundColor: \"transparent\",\n  colorScheme: \"light\",\n  position: \"fixed\",\n  top: \"0px\",\n  right: \"0px\",\n  zIndex: \"2147483646\",\n  display: \"none\",\n  pointerEvents: \"all\"\n};\nvar isIframeLoaded = /* @__PURE__ */ new Map();\nvar IframeCommunicator = class {\n  /**\n   * @internal\n   */\n  constructor({ link, baseUrl, iframeId, container = document.body, onIframeInitialize, localStorage, clientId, ecosystem }) {\n    Object.defineProperty(this, \"iframe\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"POLLING_INTERVAL_SECONDS\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: 1.4\n    });\n    Object.defineProperty(this, \"iframeBaseUrl\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"localStorage\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"clientId\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"ecosystem\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.localStorage = localStorage;\n    this.clientId = clientId;\n    this.ecosystem = ecosystem;\n    this.iframeBaseUrl = baseUrl;\n    let iframe = document.getElementById(iframeId);\n    const hrefLink = new URL(link);\n    if (!iframe || iframe.src !== hrefLink.href) {\n      iframe = document.createElement(\"iframe\");\n      const mergedIframeStyles = {\n        ...iframeBaseStyle\n      };\n      Object.assign(iframe.style, mergedIframeStyles);\n      iframe.setAttribute(\"id\", iframeId);\n      iframe.setAttribute(\"fetchpriority\", \"high\");\n      container.appendChild(iframe);\n      iframe.src = hrefLink.href;\n      const onIframeLoaded = (event) => {\n        if (event.data.eventType === \"ewsIframeLoaded\") {\n          window.removeEventListener(\"message\", onIframeLoaded);\n          if (!iframe) {\n            console.warn(\"thirdweb iFrame not found\");\n            return;\n          }\n          this.onIframeLoadHandler(iframe, onIframeInitialize)();\n        }\n      };\n      window.addEventListener(\"message\", onIframeLoaded);\n    }\n    this.iframe = iframe;\n  }\n  // biome-ignore lint/suspicious/noExplicitAny: TODO: fix later\n  async onIframeLoadedInitVariables() {\n    var _a, _b;\n    return {\n      authCookie: await this.localStorage.getAuthCookie(),\n      deviceShareStored: await this.localStorage.getDeviceShare(),\n      walletUserId: await this.localStorage.getWalletUserId(),\n      clientId: this.clientId,\n      partnerId: (_a = this.ecosystem) == null ? void 0 : _a.partnerId,\n      ecosystemId: (_b = this.ecosystem) == null ? void 0 : _b.id\n    };\n  }\n  /**\n   * @internal\n   */\n  onIframeLoadHandler(iframe, onIframeInitialize) {\n    return async () => {\n      var _a;\n      const channel = new MessageChannel();\n      const promise = new Promise((res, rej) => {\n        channel.port1.onmessage = (event) => {\n          const { data } = event;\n          channel.port1.close();\n          if (!data.success) {\n            rej(new Error(data.error));\n          }\n          isIframeLoaded.set(iframe.src, true);\n          if (onIframeInitialize) {\n            onIframeInitialize();\n          }\n          res(true);\n        };\n      });\n      (_a = iframe == null ? void 0 : iframe.contentWindow) == null ? void 0 : _a.postMessage({\n        eventType: \"initIframe\",\n        data: await this.onIframeLoadedInitVariables()\n      }, this.iframeBaseUrl, [channel.port2]);\n      await promise;\n    };\n  }\n  /**\n   * @internal\n   */\n  async call({ procedureName, params, showIframe = false }) {\n    var _a;\n    while (!isIframeLoaded.get(this.iframe.src)) {\n      await sleep(this.POLLING_INTERVAL_SECONDS * 1e3);\n    }\n    if (showIframe) {\n      this.iframe.style.display = \"block\";\n      await sleep(5e-3 * 1e3);\n    }\n    const channel = new MessageChannel();\n    const promise = new Promise((res, rej) => {\n      channel.port1.onmessage = async (event) => {\n        const { data } = event;\n        channel.port1.close();\n        if (showIframe) {\n          await sleep(0.1 * 1e3);\n          this.iframe.style.display = \"none\";\n        }\n        if (!data.success) {\n          rej(new Error(data.error));\n        } else {\n          res(data.data);\n        }\n      };\n    });\n    (_a = this.iframe.contentWindow) == null ? void 0 : _a.postMessage({\n      eventType: procedureName,\n      // Pass the initialization data on every request in case the iframe storage was reset (can happen in some environments such as iOS PWAs)\n      data: {\n        ...params,\n        ...await this.onIframeLoadedInitVariables()\n      }\n    }, this.iframeBaseUrl, [channel.port2]);\n    return promise;\n  }\n  /**\n   * This has to be called by any iframe that will be removed from the DOM.\n   * Use to make sure that we reset the global loaded state of the particular iframe.src\n   * @internal\n   */\n  destroy() {\n    isIframeLoaded.delete(this.iframe.src);\n  }\n};\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.js\nvar InAppWalletIframeCommunicator = class extends IframeCommunicator {\n  /**\n   * @internal\n   */\n  constructor({ clientId, baseUrl, ecosystem }) {\n    super({\n      iframeId: IN_APP_WALLET_IFRAME_ID + ((ecosystem == null ? void 0 : ecosystem.id) || \"\"),\n      link: createInAppWalletIframeLink({\n        clientId,\n        path: IN_APP_WALLET_PATH,\n        ecosystem,\n        baseUrl\n      }).href,\n      baseUrl,\n      container: document.body,\n      localStorage: new ClientScopedStorage({\n        storage: webLocalStorage,\n        clientId,\n        ecosystem\n      }),\n      clientId,\n      ecosystem\n    });\n    this.clientId = clientId;\n    this.ecosystem = ecosystem;\n  }\n};\nfunction createInAppWalletIframeLink({ clientId, baseUrl, path, ecosystem, queryParams }) {\n  var _a;\n  const inAppWalletUrl = new URL(`${path}`, baseUrl);\n  if (queryParams) {\n    for (const queryKey of Object.keys(queryParams)) {\n      inAppWalletUrl.searchParams.set(queryKey, ((_a = queryParams[queryKey]) == null ? void 0 : _a.toString()) || \"\");\n    }\n  }\n  inAppWalletUrl.searchParams.set(\"clientId\", clientId);\n  if ((ecosystem == null ? void 0 : ecosystem.partnerId) !== void 0) {\n    inAppWalletUrl.searchParams.set(\"partnerId\", ecosystem.partnerId);\n  }\n  if ((ecosystem == null ? void 0 : ecosystem.id) !== void 0) {\n    inAppWalletUrl.searchParams.set(\"ecosystemId\", ecosystem.id);\n  }\n  return inAppWalletUrl;\n}\nvar IN_APP_WALLET_IFRAME_ID = \"thirdweb-in-app-wallet-iframe\";\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/core/actions/generate-wallet.enclave.js\nasync function generateWallet({ client, ecosystem, authToken }) {\n  const clientFetch = getClientFetch(client, ecosystem);\n  const response = await clientFetch(`${getThirdwebBaseUrl(\"inAppWallet\")}/api/v1/enclave-wallet/generate`, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"x-thirdweb-client-id\": client.clientId,\n      Authorization: `Bearer embedded-wallet-token:${authToken}`\n    }\n  });\n  if (!response.ok) {\n    throw new Error(\"Failed to generate wallet\");\n  }\n  const { wallet } = await response.json();\n  return wallet;\n}\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/auth/abstract-login.js\nvar AbstractLogin = class {\n  /**\n   * Used to manage the user's auth states. This should not be instantiated directly.\n   * @internal\n   */\n  constructor({ baseUrl, querier, preLogin, postLogin, client, ecosystem }) {\n    Object.defineProperty(this, \"LoginQuerier\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"preLogin\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"postLogin\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"client\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"baseUrl\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"ecosystem\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.baseUrl = baseUrl;\n    this.LoginQuerier = querier;\n    this.preLogin = preLogin;\n    this.postLogin = postLogin;\n    this.client = client;\n    this.ecosystem = ecosystem;\n  }\n  /**\n   * @internal\n   */\n  async sendEmailLoginOtp({ email }) {\n    const result = await this.LoginQuerier.call({\n      procedureName: \"sendThirdwebEmailLoginOtp\",\n      params: { email }\n    });\n    return result;\n  }\n  /**\n   *\n   * @internal\n   */\n  async sendSmsLoginOtp({ phoneNumber }) {\n    const result = await this.LoginQuerier.call({\n      procedureName: \"sendThirdwebSmsLoginOtp\",\n      params: { phoneNumber }\n    });\n    return result;\n  }\n};\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/auth/base-login.js\nvar BaseLogin = class extends AbstractLogin {\n  async authenticateWithModal() {\n    return this.LoginQuerier.call({\n      procedureName: \"loginWithThirdwebModal\",\n      params: void 0,\n      showIframe: true\n    });\n  }\n  /**\n   * @internal\n   */\n  async loginWithModal() {\n    await this.preLogin();\n    const result = await this.authenticateWithModal();\n    return this.postLogin(result);\n  }\n  async authenticateWithIframe({ email }) {\n    return this.LoginQuerier.call({\n      procedureName: \"loginWithThirdwebModal\",\n      params: { email },\n      showIframe: true\n    });\n  }\n  /**\n   * @internal\n   */\n  async loginWithIframe({ email }) {\n    await this.preLogin();\n    const result = await this.authenticateWithIframe({ email });\n    return this.postLogin(result);\n  }\n  async authenticateWithCustomJwt({ encryptionKey, jwt }) {\n    if (!encryptionKey || encryptionKey.length === 0) {\n      throw new Error(\"Encryption key is required for custom jwt auth\");\n    }\n    return this.LoginQuerier.call({\n      procedureName: \"loginWithCustomJwt\",\n      params: { encryptionKey, jwt }\n    });\n  }\n  /**\n   * @internal\n   */\n  async loginWithCustomJwt({ encryptionKey, jwt }) {\n    if (!encryptionKey || encryptionKey.length === 0) {\n      throw new Error(\"Encryption key is required for custom jwt auth\");\n    }\n    await this.preLogin();\n    const result = await this.authenticateWithCustomJwt({ encryptionKey, jwt });\n    return this.postLogin(result);\n  }\n  async authenticateWithCustomAuthEndpoint({ encryptionKey, payload }) {\n    return this.LoginQuerier.call({\n      procedureName: \"loginWithCustomAuthEndpoint\",\n      params: { encryptionKey, payload }\n    });\n  }\n  /**\n   * @internal\n   */\n  async loginWithCustomAuthEndpoint({ encryptionKey, payload }) {\n    if (!encryptionKey || encryptionKey.length === 0) {\n      throw new Error(\"Encryption key is required for custom auth\");\n    }\n    await this.preLogin();\n    const result = await this.authenticateWithCustomAuthEndpoint({\n      encryptionKey,\n      payload\n    });\n    return this.postLogin(result);\n  }\n  async authenticateWithEmailOtp({ email, otp, recoveryCode }) {\n    return this.LoginQuerier.call({\n      procedureName: \"verifyThirdwebEmailLoginOtp\",\n      params: { email, otp, recoveryCode }\n    });\n  }\n  /**\n   * @internal\n   */\n  async loginWithEmailOtp({ email, otp, recoveryCode }) {\n    const result = await this.authenticateWithEmailOtp({\n      email,\n      otp,\n      recoveryCode\n    });\n    return this.postLogin(result);\n  }\n  async authenticateWithSmsOtp({ phoneNumber, otp, recoveryCode }) {\n    return this.LoginQuerier.call({\n      procedureName: \"verifyThirdwebSmsLoginOtp\",\n      params: { phoneNumber, otp, recoveryCode }\n    });\n  }\n  /**\n   * @internal\n   */\n  async loginWithSmsOtp({ phoneNumber, otp, recoveryCode }) {\n    const result = await this.authenticateWithSmsOtp({\n      phoneNumber,\n      otp,\n      recoveryCode\n    });\n    return this.postLogin(result);\n  }\n};\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/auth/iframe-auth.js\nvar Auth = class {\n  /**\n   * Used to manage the user's auth states. This should not be instantiated directly.\n   * @internal\n   */\n  constructor({ client, querier, onAuthSuccess, ecosystem, baseUrl, localStorage }) {\n    Object.defineProperty(this, \"client\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"ecosystem\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"AuthQuerier\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"localStorage\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"onAuthSuccess\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"BaseLogin\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.client = client;\n    this.ecosystem = ecosystem;\n    this.AuthQuerier = querier;\n    this.localStorage = localStorage;\n    this.onAuthSuccess = onAuthSuccess;\n    this.BaseLogin = new BaseLogin({\n      postLogin: async (result) => {\n        return this.postLogin(result);\n      },\n      preLogin: async () => {\n        await this.preLogin();\n      },\n      ecosystem,\n      querier,\n      client,\n      baseUrl\n    });\n  }\n  async preLogin() {\n    await this.logout();\n  }\n  async postLogin({ storedToken, walletDetails }) {\n    if (storedToken.shouldStoreCookieString) {\n      await this.localStorage.saveAuthCookie(storedToken.cookieString);\n    }\n    const initializedUser = await this.onAuthSuccess({\n      storedToken,\n      walletDetails\n    });\n    return initializedUser;\n  }\n  async loginWithAuthToken(authToken, recoveryCode) {\n    var _a;\n    await this.preLogin();\n    const user = await getUserStatus({\n      authToken: authToken.storedToken.cookieString,\n      client: this.client,\n      ecosystem: this.ecosystem\n    });\n    if (!user) {\n      throw new Error(\"Cannot login, no user found for auth token\");\n    }\n    if (user.wallets.length > 0 && ((_a = user.wallets[0]) == null ? void 0 : _a.type) === \"enclave\") {\n      return this.postLogin({\n        storedToken: authToken.storedToken,\n        walletDetails: {\n          walletAddress: user.wallets[0].address\n        }\n      });\n    }\n    if (user.wallets.length === 0) {\n      const result2 = await generateWallet({\n        authToken: authToken.storedToken.cookieString,\n        client: this.client,\n        ecosystem: this.ecosystem\n      });\n      return this.postLogin({\n        storedToken: authToken.storedToken,\n        walletDetails: {\n          walletAddress: result2.address\n        }\n      });\n    }\n    const result = await this.AuthQuerier.call({\n      procedureName: \"loginWithStoredTokenDetails\",\n      params: {\n        storedToken: authToken.storedToken,\n        recoveryCode\n      }\n    });\n    return this.postLogin(result);\n  }\n  /**\n   * Used to log the user into their thirdweb wallet on your platform via a myriad of auth providers\n   * @example\n   * ```typescript\n   * const thirdwebInAppWallet = new InAppWalletSdk({clientId: \"YOUR_CLIENT_ID\", chain: \"Polygon\"})\n   * try {\n   *   const user = await thirdwebInAppWallet.auth.loginWithModal();\n   *   // user is now logged in\n   * } catch (e) {\n   *   // User closed modal or something else went wrong during the authentication process\n   *   console.error(e)\n   * }\n   * ```\n   * @returns `{{user: InitializedUser}}` An InitializedUser object.\n   */\n  async loginWithModal() {\n    return this.BaseLogin.loginWithModal();\n  }\n  async authenticateWithModal() {\n    return this.BaseLogin.authenticateWithModal();\n  }\n  /**\n   * Used to log the user into their thirdweb wallet using email OTP\n   * @example\n   * ```typescript\n   *  // Basic Flow\n   *  const thirdwebInAppWallet = new InAppWalletSdk({clientId: \"\", chain: \"Polygon\"});\n   *  try {\n   *    // prompts user to enter the code they received\n   *    const user = await thirdwebInAppWallet.auth.loginWithThirdwebEmailOtp({ email : \"you@example.com\" });\n   *    // user is now logged in\n   *  } catch (e) {\n   *    // User closed the OTP modal or something else went wrong during the authentication process\n   *    console.error(e)\n   *  }\n   * ```\n   * @param args - args.email: We will send the email an OTP that needs to be entered in order for them to be logged in.\n   * @returns `{{user: InitializedUser}}` An InitializedUser object. See {@link InAppWalletSdk.getUser} for more\n   */\n  async loginWithIframe(args) {\n    return this.BaseLogin.loginWithIframe(args);\n  }\n  async authenticateWithIframe(args) {\n    return this.BaseLogin.authenticateWithIframe(args);\n  }\n  /**\n   * @internal\n   */\n  async loginWithCustomJwt(args) {\n    return this.BaseLogin.loginWithCustomJwt(args);\n  }\n  async authenticateWithCustomJwt(args) {\n    return this.BaseLogin.authenticateWithCustomJwt(args);\n  }\n  /**\n   * @internal\n   */\n  async loginWithCustomAuthEndpoint(args) {\n    return this.BaseLogin.loginWithCustomAuthEndpoint(args);\n  }\n  async authenticateWithCustomAuthEndpoint(args) {\n    return this.BaseLogin.authenticateWithCustomAuthEndpoint(args);\n  }\n  /**\n   * A headless way to send the users at the passed email an OTP code.\n   * You need to then call {@link Auth.loginWithEmailOtp} in order to complete the login process\n   * @example\n   * @param param0.email\n   * ```typescript\n   *  const thirdwebInAppWallet = new InAppWalletSdk({clientId: \"\", chain: \"Polygon\"});\n   *  // sends user an OTP code\n   * try {\n   *    await thirdwebInAppWallet.auth.sendEmailLoginOtp({ email : \"you@example.com\" });\n   * } catch(e) {\n   *    // Error Sending user's email an OTP code\n   *    console.error(e);\n   * }\n   *\n   * // Then when your user is ready to verify their OTP\n   * try {\n   *    const user = await thirdwebInAppWallet.auth.verifyEmailLoginOtp({ email: \"you@example.com\", otp: \"6-DIGIT_CODE_HERE\" });\n   * } catch(e) {\n   *    // Error verifying the OTP code\n   *    console.error(e)\n   * }\n   * ```\n   * @param param0 - param0.email We will send the email an OTP that needs to be entered in order for them to be logged in.\n   * @returns `{{ isNewUser: boolean }}` IsNewUser indicates if the user is a new user to your platform\n   * @internal\n   */\n  async sendEmailLoginOtp({ email }) {\n    return this.BaseLogin.sendEmailLoginOtp({\n      email\n    });\n  }\n  /**\n   * @internal\n   */\n  async sendSmsLoginOtp({ phoneNumber }) {\n    return this.BaseLogin.sendSmsLoginOtp({\n      phoneNumber\n    });\n  }\n  /**\n   * Used to verify the otp that the user receives from thirdweb\n   *\n   * See {@link Auth.sendEmailLoginOtp} for how the headless call flow looks like. Simply swap out the calls to `loginWithThirdwebEmailOtp` with `verifyThirdwebEmailLoginOtp`\n   * @param args - props.email We will send the email an OTP that needs to be entered in order for them to be logged in.\n   * props.otp The code that the user received in their email\n   * @returns `{{user: InitializedUser}}` An InitializedUser object containing the user's status, wallet, authDetails, and more\n   * @internal\n   */\n  async loginWithEmailOtp(args) {\n    await this.preLogin();\n    return this.BaseLogin.loginWithEmailOtp(args);\n  }\n  async authenticateWithEmailOtp(args) {\n    return this.BaseLogin.authenticateWithEmailOtp(args);\n  }\n  /**\n   * @internal\n   */\n  async loginWithSmsOtp(args) {\n    await this.preLogin();\n    return this.BaseLogin.loginWithSmsOtp(args);\n  }\n  async authenticateWithSmsOtp(args) {\n    return this.BaseLogin.authenticateWithSmsOtp(args);\n  }\n  /**\n   * Logs any existing user out of their wallet.\n   * @returns `{{success: boolean}}` true if a user is successfully logged out. false if there's no user currently logged in.\n   * @internal\n   */\n  async logout() {\n    if (this.AuthQuerier) {\n      await this.AuthQuerier.call({\n        procedureName: \"logout\",\n        params: void 0\n      });\n    }\n    const isRemoveAuthCookie = await this.localStorage.removeAuthCookie();\n    const isRemoveUserId = await this.localStorage.removeWalletUserId();\n    return {\n      success: isRemoveAuthCookie || isRemoveUserId\n    };\n  }\n};\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/auth/otp.js\nvar sendOtp = async (args) => {\n  const { client, ecosystem } = args;\n  const url = getLoginUrl({ client, ecosystem, authOption: args.strategy });\n  const headers = {\n    \"Content-Type\": \"application/json\",\n    \"x-client-id\": client.clientId\n  };\n  if (ecosystem == null ? void 0 : ecosystem.id) {\n    headers[\"x-ecosystem-id\"] = ecosystem.id;\n  }\n  if (ecosystem == null ? void 0 : ecosystem.partnerId) {\n    headers[\"x-ecosystem-partner-id\"] = ecosystem.partnerId;\n  }\n  const body = (() => {\n    switch (args.strategy) {\n      case \"email\":\n        return {\n          email: args.email\n        };\n      case \"phone\":\n        return {\n          phone: args.phoneNumber\n        };\n    }\n  })();\n  const response = await fetch(url, {\n    method: \"POST\",\n    headers,\n    body: stringify(body)\n  });\n  if (!response.ok) {\n    throw new Error(\"Failed to send verification code\");\n  }\n  return await response.json();\n};\nvar verifyOtp = async (args) => {\n  const { client, ecosystem } = args;\n  const url = getLoginCallbackUrl({\n    authOption: args.strategy,\n    client: args.client,\n    ecosystem: args.ecosystem\n  });\n  const headers = {\n    \"Content-Type\": \"application/json\",\n    \"x-client-id\": client.clientId\n  };\n  if (ecosystem == null ? void 0 : ecosystem.id) {\n    headers[\"x-ecosystem-id\"] = ecosystem.id;\n  }\n  if (ecosystem == null ? void 0 : ecosystem.partnerId) {\n    headers[\"x-ecosystem-partner-id\"] = ecosystem.partnerId;\n  }\n  const body = (() => {\n    switch (args.strategy) {\n      case \"email\":\n        return {\n          email: args.email,\n          code: args.verificationCode\n        };\n      case \"phone\":\n        return {\n          phone: args.phoneNumber,\n          code: args.verificationCode\n        };\n    }\n  })();\n  const response = await fetch(url, {\n    method: \"POST\",\n    headers,\n    body: stringify(body)\n  });\n  if (!response.ok) {\n    throw new Error(\"Failed to verify verification code\");\n  }\n  return await response.json();\n};\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/iframe-wallet.js\nvar IFrameWallet = class {\n  /**\n   * Not meant to be initialized directly. Call {@link initializeUser} to get an instance\n   * @internal\n   */\n  constructor({ client, ecosystem, querier, localStorage }) {\n    Object.defineProperty(this, \"client\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"ecosystem\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"walletManagerQuerier\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"localStorage\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    this.client = client;\n    this.ecosystem = ecosystem;\n    this.walletManagerQuerier = querier;\n    this.localStorage = localStorage;\n  }\n  /**\n   * Used to set-up the user device in the case that they are using incognito\n   * @returns `{walletAddress : string }` The user's wallet details\n   * @internal\n   */\n  async postWalletSetUp(authResult) {\n    if (authResult.deviceShareStored) {\n      await this.localStorage.saveDeviceShare(authResult.deviceShareStored, authResult.storedToken.authDetails.userWalletId);\n    }\n  }\n  /**\n   * Gets the various status states of the user\n   * @example\n   * ```typescript\n   *  const userStatus = await Paper.getUserWalletStatus();\n   *  switch (userStatus.status) {\n   *  case UserWalletStatus.LOGGED_OUT: {\n   *    // User is logged out, call one of the auth methods on Paper.auth to authenticate the user\n   *    break;\n   *  }\n   *  case UserWalletStatus.LOGGED_IN_WALLET_UNINITIALIZED: {\n   *    // User is logged in, but does not have a wallet associated with it\n   *    // you also have access to the user's details\n   *    userStatus.user.authDetails;\n   *    break;\n   *  }\n   *  case UserWalletStatus.LOGGED_IN_NEW_DEVICE: {\n   *    // User is logged in and created a wallet already, but is missing the device shard\n   *    // You have access to:\n   *    userStatus.user.authDetails;\n   *    userStatus.user.walletAddress;\n   *    break;\n   *  }\n   *  case UserWalletStatus.LOGGED_IN_WALLET_INITIALIZED: {\n   *    // user is logged in and wallet is all set up.\n   *    // You have access to:\n   *    userStatus.user.authDetails;\n   *    userStatus.user.walletAddress;\n   *    userStatus.user.wallet;\n   *    break;\n   *  }\n   *}\n   *```\n   * @returns `{GetUserWalletStatusFnReturnType}` an object to containing various information on the user statuses\n   * @internal\n   */\n  async getUserWalletStatus() {\n    const userStatus = await this.walletManagerQuerier.call({\n      procedureName: \"getUserStatus\",\n      params: void 0\n    });\n    if (userStatus.status === \"Logged In, Wallet Initialized\") {\n      return {\n        status: \"Logged In, Wallet Initialized\",\n        ...userStatus.user,\n        account: await this.getAccount()\n      };\n    }\n    if (userStatus.status === \"Logged In, New Device\") {\n      return {\n        status: \"Logged In, New Device\",\n        ...userStatus.user\n      };\n    }\n    if (userStatus.status === \"Logged In, Wallet Uninitialized\") {\n      return {\n        status: \"Logged In, Wallet Uninitialized\",\n        ...userStatus.user\n      };\n    }\n    return { status: userStatus.status };\n  }\n  /**\n   * Returns an account that communicates with the iFrame for signing operations\n   * @internal\n   */\n  async getAccount() {\n    var _a;\n    const querier = this.walletManagerQuerier;\n    const client = this.client;\n    const partnerId = (_a = this.ecosystem) == null ? void 0 : _a.partnerId;\n    const { address } = await querier.call({\n      procedureName: \"getAddress\",\n      params: void 0\n    });\n    const _signTransaction = async (tx) => {\n      const transaction = {\n        to: tx.to ?? void 0,\n        data: tx.data,\n        value: tx.value,\n        gasLimit: tx.gas,\n        nonce: tx.nonce,\n        chainId: tx.chainId\n      };\n      if (tx.maxFeePerGas) {\n        transaction.accessList = tx.accessList;\n        transaction.maxFeePerGas = tx.maxFeePerGas;\n        transaction.maxPriorityFeePerGas = tx.maxPriorityFeePerGas;\n        transaction.type = 2;\n      } else {\n        transaction.gasPrice = tx.gasPrice;\n        transaction.type = 0;\n      }\n      const RPC_URL = getThirdwebDomains().rpc;\n      const { signedTransaction } = await querier.call({\n        procedureName: \"signTransaction\",\n        params: {\n          transaction,\n          chainId: tx.chainId,\n          partnerId,\n          rpcEndpoint: `https://${tx.chainId}.${RPC_URL}`\n          // TODO (ew) shouldnt be needed\n        }\n      });\n      return signedTransaction;\n    };\n    return {\n      address: getAddress(address),\n      async signTransaction(tx) {\n        if (!tx.chainId) {\n          throw new Error(\"chainId required in tx to sign\");\n        }\n        return _signTransaction({\n          ...tx,\n          chainId: tx.chainId\n        });\n      },\n      async sendTransaction(tx) {\n        const rpcRequest = getRpcClient({\n          client,\n          chain: getCachedChain(tx.chainId)\n        });\n        const signedTx = await _signTransaction(tx);\n        const transactionHash = await eth_sendRawTransaction(rpcRequest, signedTx);\n        trackTransaction({\n          client,\n          chainId: tx.chainId,\n          walletAddress: address,\n          walletType: \"inApp\",\n          transactionHash,\n          contractAddress: tx.to ?? void 0,\n          gasPrice: tx.gasPrice\n        });\n        return { transactionHash };\n      },\n      async signMessage({ message }) {\n        const messageDecoded = (() => {\n          if (typeof message === \"string\") {\n            return message;\n          }\n          if (message.raw instanceof Uint8Array) {\n            return message.raw;\n          }\n          return hexToString(message.raw);\n        })();\n        const { signedMessage } = await querier.call({\n          procedureName: \"signMessage\",\n          params: {\n            // biome-ignore lint/suspicious/noExplicitAny: ethers tx transformation\n            message: messageDecoded,\n            // needs bytes or string\n            partnerId,\n            chainId: 1\n            // TODO check if we need this\n          }\n        });\n        return signedMessage;\n      },\n      async signTypedData(_typedData) {\n        var _a2;\n        const parsedTypedData = parseTypedData(_typedData);\n        if ((_a2 = parsedTypedData.types) == null ? void 0 : _a2.EIP712Domain) {\n          parsedTypedData.types.EIP712Domain = void 0;\n        }\n        const domain = parsedTypedData.domain;\n        const chainId = domain == null ? void 0 : domain.chainId;\n        const verifyingContract = (domain == null ? void 0 : domain.verifyingContract) ? { verifyingContract: domain == null ? void 0 : domain.verifyingContract } : {};\n        const domainData = {\n          ...verifyingContract,\n          name: domain == null ? void 0 : domain.name,\n          version: domain == null ? void 0 : domain.version\n        };\n        if (chainId) {\n          domainData.chainId = chainId;\n        }\n        const RPC_URL = getThirdwebDomains().rpc;\n        const { signedTypedData } = await querier.call({\n          procedureName: \"signTypedDataV4\",\n          params: {\n            domain: domainData,\n            types: parsedTypedData.types,\n            message: parsedTypedData.message,\n            chainId: chainId || 1,\n            partnerId,\n            rpcEndpoint: `https://${chainId}.${RPC_URL}`\n            // TODO (ew) shouldnt be needed\n          }\n        });\n        return signedTypedData;\n      }\n    };\n  }\n};\n\n// node_modules/thirdweb/dist/esm/wallets/in-app/web/lib/web-connector.js\nvar InAppWebConnector = class {\n  isClientIdLegacyPaper(clientId) {\n    if (clientId.indexOf(\"-\") > 0 && clientId.length === 36) {\n      return true;\n    }\n    return false;\n  }\n  /**\n   * @example\n   * `const thirdwebInAppWallet = new InAppWalletSdk({ clientId: \"\", chain: \"Goerli\" });`\n   * @internal\n   */\n  constructor({ client, onAuthSuccess, ecosystem, passkeyDomain }) {\n    Object.defineProperty(this, \"client\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"ecosystem\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"querier\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"storage\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"wallet\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"auth\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    Object.defineProperty(this, \"passkeyDomain\", {\n      enumerable: true,\n      configurable: true,\n      writable: true,\n      value: void 0\n    });\n    if (this.isClientIdLegacyPaper(client.clientId)) {\n      throw new Error(\"You are using a legacy clientId. Please use the clientId found on the thirdweb dashboard settings page\");\n    }\n    const baseUrl = getThirdwebBaseUrl(\"inAppWallet\");\n    this.client = client;\n    this.ecosystem = ecosystem;\n    this.passkeyDomain = passkeyDomain;\n    this.storage = new ClientScopedStorage({\n      storage: webLocalStorage,\n      clientId: client.clientId,\n      ecosystem\n    });\n    this.querier = new InAppWalletIframeCommunicator({\n      clientId: client.clientId,\n      ecosystem,\n      baseUrl\n    });\n    this.auth = new Auth({\n      client,\n      querier: this.querier,\n      baseUrl,\n      localStorage: this.storage,\n      ecosystem,\n      onAuthSuccess: async (authResult) => {\n        onAuthSuccess == null ? void 0 : onAuthSuccess(authResult);\n        if (authResult.storedToken.authDetails.walletType === \"sharded\") {\n          const result = await this.querier.call({\n            procedureName: \"migrateFromShardToEnclave\",\n            params: {\n              storedToken: authResult.storedToken\n            }\n          });\n          if (!result) {\n            console.warn(\"Failed to migrate from sharded to enclave wallet, continuing with sharded wallet\");\n          }\n        }\n        this.wallet = await this.initializeWallet(authResult.storedToken.cookieString);\n        if (!this.wallet) {\n          throw new Error(\"Failed to initialize wallet\");\n        }\n        const deviceShareStored = \"deviceShareStored\" in authResult.walletDetails ? authResult.walletDetails.deviceShareStored : void 0;\n        await this.wallet.postWalletSetUp({\n          storedToken: authResult.storedToken,\n          deviceShareStored\n        });\n        if (this.wallet instanceof IFrameWallet) {\n          await this.querier.call({\n            procedureName: \"initIframe\",\n            params: {\n              partnerId: ecosystem == null ? void 0 : ecosystem.partnerId,\n              ecosystemId: ecosystem == null ? void 0 : ecosystem.id,\n              clientId: this.client.clientId,\n              // For enclave wallets we won't have a device share\n              deviceShareStored: \"deviceShareStored\" in authResult.walletDetails ? authResult.walletDetails.deviceShareStored : null,\n              walletUserId: authResult.storedToken.authDetails.userWalletId,\n              authCookie: authResult.storedToken.cookieString\n            }\n          });\n        }\n        return {\n          user: {\n            status: \"Logged In, Wallet Initialized\",\n            authDetails: authResult.storedToken.authDetails,\n            account: await this.wallet.getAccount(),\n            walletAddress: authResult.walletDetails.walletAddress\n          }\n        };\n      }\n    });\n  }\n  async initializeWallet(authToken) {\n    var _a;\n    const storedAuthToken = await this.storage.getAuthCookie();\n    if (!authToken && storedAuthToken === null) {\n      throw new Error(\"No auth token provided and no stored auth token found to initialize the wallet\");\n    }\n    const user = await getUserStatus({\n      authToken: authToken || storedAuthToken,\n      client: this.client,\n      ecosystem: this.ecosystem\n    });\n    if (!user) {\n      throw new Error(\"Cannot initialize wallet, no user logged in\");\n    }\n    if (user.wallets.length === 0) {\n      throw new Error(\"Cannot initialize wallet, this user does not have a wallet generated yet\");\n    }\n    if (((_a = user.wallets[0]) == null ? void 0 : _a.type) === \"enclave\") {\n      return new EnclaveWallet({\n        client: this.client,\n        ecosystem: this.ecosystem,\n        address: user.wallets[0].address,\n        storage: this.storage\n      });\n    }\n    return new IFrameWallet({\n      client: this.client,\n      ecosystem: this.ecosystem,\n      querier: this.querier,\n      localStorage: this.storage\n    });\n  }\n  /**\n   * Gets the user if they're logged in\n   * @example\n   * ```js\n   *  const user = await thirdwebInAppWallet.getUser();\n   *  switch (user.status) {\n   *     case UserWalletStatus.LOGGED_OUT: {\n   *       // User is logged out, call one of the auth methods on thirdwebInAppWallet.auth to authenticate the user\n   *       break;\n   *     }\n   *     case UserWalletStatus.LOGGED_IN_WALLET_INITIALIZED: {\n   *       // user is logged in and wallet is all set up.\n   *       // You have access to:\n   *       user.status;\n   *       user.authDetails;\n   *       user.walletAddress;\n   *       user.wallet;\n   *       break;\n   *     }\n   * }\n   * ```\n   * @returns GetUser - an object to containing various information on the user statuses\n   */\n  async getUser() {\n    if (!this.wallet) {\n      const localAuthToken = await this.storage.getAuthCookie();\n      if (!localAuthToken) {\n        return { status: \"Logged Out\" };\n      }\n      this.wallet = await this.initializeWallet(localAuthToken);\n    }\n    if (!this.wallet) {\n      throw new Error(\"Wallet not initialized\");\n    }\n    return await this.wallet.getUserWalletStatus();\n  }\n  getAccount() {\n    if (!this.wallet) {\n      throw new Error(\"Wallet not initialized\");\n    }\n    return this.wallet.getAccount();\n  }\n  async preAuthenticate(args) {\n    return sendOtp({\n      ...args,\n      client: this.client,\n      ecosystem: this.ecosystem\n    });\n  }\n  authenticateWithRedirect(strategy, mode, redirectUrl) {\n    loginWithOauthRedirect({\n      authOption: strategy,\n      client: this.client,\n      ecosystem: this.ecosystem,\n      redirectUrl,\n      mode\n    });\n  }\n  async loginWithAuthToken(authResult, recoveryCode) {\n    return this.auth.loginWithAuthToken(authResult, recoveryCode);\n  }\n  /**\n   * Authenticates the user and returns the auth token, but does not instantiate their wallet\n   */\n  async authenticate(args) {\n    const strategy = args.strategy;\n    switch (strategy) {\n      case \"email\":\n        return verifyOtp({\n          ...args,\n          client: this.client,\n          ecosystem: this.ecosystem\n        });\n      case \"phone\":\n        return verifyOtp({\n          ...args,\n          client: this.client,\n          ecosystem: this.ecosystem\n        });\n      case \"auth_endpoint\": {\n        return authEndpoint({\n          payload: args.payload,\n          client: this.client,\n          ecosystem: this.ecosystem\n        });\n      }\n      case \"jwt\":\n        return customJwt({\n          jwt: args.jwt,\n          client: this.client,\n          ecosystem: this.ecosystem\n        });\n      case \"passkey\": {\n        return this.passkeyAuth(args);\n      }\n      case \"iframe_email_verification\": {\n        return this.auth.authenticateWithIframe({\n          email: args.email\n        });\n      }\n      case \"iframe\": {\n        return this.auth.authenticateWithModal();\n      }\n      case \"apple\":\n      case \"facebook\":\n      case \"google\":\n      case \"telegram\":\n      case \"github\":\n      case \"twitch\":\n      case \"farcaster\":\n      case \"line\":\n      case \"x\":\n      case \"coinbase\":\n      case \"discord\": {\n        return loginWithOauth({\n          authOption: strategy,\n          client: this.client,\n          ecosystem: this.ecosystem,\n          closeOpenedWindow: args.closeOpenedWindow,\n          openedWindow: args.openedWindow\n        });\n      }\n      case \"guest\": {\n        return guestAuthenticate({\n          client: this.client,\n          ecosystem: this.ecosystem,\n          storage: webLocalStorage\n        });\n      }\n      case \"wallet\": {\n        return siweAuthenticate({\n          ecosystem: this.ecosystem,\n          client: this.client,\n          wallet: args.wallet,\n          chain: args.chain\n        });\n      }\n    }\n  }\n  /**\n   * Authenticates the user then instantiates their wallet using the resulting auth token\n   */\n  async connect(args) {\n    const strategy = args.strategy;\n    switch (strategy) {\n      case \"auth_endpoint\":\n      case \"jwt\": {\n        const authToken = await this.authenticate(args);\n        return await this.loginWithAuthToken(authToken, args.encryptionKey);\n      }\n      case \"iframe_email_verification\": {\n        return this.auth.loginWithIframe({\n          email: args.email\n        });\n      }\n      case \"iframe\": {\n        return this.auth.loginWithModal();\n      }\n      case \"passkey\": {\n        const authToken = await this.passkeyAuth(args);\n        return this.loginWithAuthToken(authToken);\n      }\n      case \"phone\":\n      case \"email\":\n      case \"wallet\":\n      case \"apple\":\n      case \"facebook\":\n      case \"google\":\n      case \"farcaster\":\n      case \"telegram\":\n      case \"github\":\n      case \"line\":\n      case \"x\":\n      case \"guest\":\n      case \"coinbase\":\n      case \"twitch\":\n      case \"discord\": {\n        const authToken = await this.authenticate(args);\n        return await this.auth.loginWithAuthToken(authToken);\n      }\n      default:\n        assertUnreachable(strategy);\n    }\n  }\n  async logout() {\n    return await this.auth.logout();\n  }\n  async passkeyAuth(args) {\n    const { PasskeyWebClient } = await import(\"./passkeys-TWQKIUUE.js\");\n    const { passkeyName, storeLastUsedPasskey = true } = args;\n    const passkeyClient = new PasskeyWebClient();\n    const storage = this.storage;\n    if (args.type === \"sign-up\") {\n      return registerPasskey({\n        client: this.client,\n        ecosystem: this.ecosystem,\n        username: passkeyName,\n        passkeyClient,\n        storage: storeLastUsedPasskey ? storage : void 0,\n        rp: {\n          id: this.passkeyDomain ?? window.location.hostname,\n          name: this.passkeyDomain ?? window.document.title\n        }\n      });\n    }\n    return loginWithPasskey({\n      client: this.client,\n      ecosystem: this.ecosystem,\n      passkeyClient,\n      storage: storeLastUsedPasskey ? storage : void 0,\n      rp: {\n        id: this.passkeyDomain ?? window.location.hostname,\n        name: this.passkeyDomain ?? window.document.title\n      }\n    });\n  }\n  async linkProfile(args) {\n    const { storedToken } = await this.authenticate(args);\n    return await linkAccount({\n      client: args.client,\n      tokenToLink: storedToken.cookieString,\n      storage: this.storage,\n      ecosystem: args.ecosystem || this.ecosystem\n    });\n  }\n  async getProfiles() {\n    return getLinkedProfilesInternal({\n      client: this.client,\n      ecosystem: this.ecosystem,\n      storage: this.storage\n    });\n  }\n};\nfunction assertUnreachable(x, message) {\n  throw new Error(message ?? `Invalid param: ${x}`);\n}\nexport {\n  InAppWebConnector\n};\n//# sourceMappingURL=web-connector-5CMXT4ED.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/web-node-NK4RL5GU.js",
    "content": "import {\n  getThirdwebDomains\n} from \"./chunk-QHKZ43P6.js\";\nimport {\n  getClientFetch\n} from \"./chunk-3GSJ2FQJ.js\";\nimport \"./chunk-P7ZDTV2E.js\";\nimport \"./chunk-SNQ54XRM.js\";\nimport \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/storage/upload/web-node.js\nasync function uploadBatch(client, form, fileNames, options) {\n  var _a;\n  const headers = {};\n  const res = await getClientFetch(client)(`https://${getThirdwebDomains().storage}/ipfs/upload`, {\n    method: \"POST\",\n    headers,\n    body: form\n  });\n  if (!res.ok) {\n    (_a = res.body) == null ? void 0 : _a.cancel();\n    if (res.status === 401) {\n      throw new Error(\"Unauthorized - You don't have permission to use this service.\");\n    }\n    if (res.status === 402) {\n      throw new Error(\"You have reached your storage limit. Please add a valid payment method to continue using the service.\");\n    }\n    if (res.status === 403) {\n      throw new Error(\"Forbidden - You don't have permission to use this service.\");\n    }\n    throw new Error(`Failed to upload files to IPFS - ${res.status} - ${res.statusText}`);\n  }\n  const body = await res.json();\n  const cid = body.IpfsHash;\n  if (!cid) {\n    throw new Error(\"Failed to upload files to IPFS - Bad CID\");\n  }\n  if (options == null ? void 0 : options.uploadWithoutDirectory) {\n    return [`ipfs://${cid}`];\n  }\n  return fileNames.map((name) => `ipfs://${cid}/${name}`);\n}\nexport {\n  uploadBatch\n};\n//# sourceMappingURL=web-node-NK4RL5GU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/world-AAINEXQX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/world.ixo/index.js\nvar wallet = {\n  id: \"world.ixo\",\n  name: \"Impact Wallet\",\n  homepage: \"https://www.ixo.world/\",\n  image_id: \"afc85418-2ca6-46cf-cfb9-daf6bc43e400\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/impacts-x/id6444948058\",\n    android: \"https://play.google.com/store/apps/details?id=com.ixo.mobile\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"impactsx://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=world-AAINEXQX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/world-IQ7VTL27.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/world.qoin/index.js\nvar wallet = {\n  id: \"world.qoin\",\n  name: \"Qoin Wallet\",\n  homepage: \"https://qoin.world\",\n  image_id: \"0490da30-b59c-4365-fef8-33a3e0aa4700\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/au/app/qoin-wallet/id1483718254\",\n    android: \"https://play.google.com/store/apps/details?id=com.qoin.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wcqoin://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=world-IQ7VTL27.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/world-ZNOYGYAZ.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/world.fncy/index.js\nvar wallet = {\n  id: \"world.fncy\",\n  name: \"Fncy Mobile Wallet\",\n  homepage: \"https://fncy.world\",\n  image_id: \"c1c8d374-dff3-419c-96af-3515d0192100\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/fncy-blockchain-platform/id1613707166\",\n    android: \"https://play.google.com/store/apps/details?id=com.metaverse.world.cube&hl=en_US&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"metaCubeWallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=world-ZNOYGYAZ.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/world.dosi-Y2A7IFAO.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/world.dosi.vault/index.js\nvar wallet = {\n  id: \"world.dosi.vault\",\n  name: \"DOSI Vault\",\n  homepage: \"https://vault.dosi.world/\",\n  image_id: \"0a0d223e-6bf7-4e12-a5b4-1720deb02000\",\n  app: {\n    browser: \"https://vault.dosi.world/\",\n    ios: \"https://apps.apple.com/kr/app/dosi-vault/id1664013594\",\n    android: \"https://play.google.com/store/apps/details?id=world.dosi.vault\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/dosi-vault/blpiicikpimmklhoiploliaenjmecabp?hl=en\",\n    firefox: \"https://addons.mozilla.org/ko/firefox/addon/dosi-vault/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search\",\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"app.dosivault://\",\n    universal: \"https://dosivault.page.link/qL6j\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=world.dosi-Y2A7IFAO.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-3DUFJPG6.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.dawnwallet/index.js\nvar wallet = {\n  id: \"xyz.dawnwallet\",\n  name: \"Dawn Wallet\",\n  homepage: \"https://www.dawnwallet.xyz\",\n  image_id: \"dawn.svg\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/dawn-ethereum-wallet/id1673143782\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: \"https://apps.apple.com/us/app/dawn-ethereum-wallet/id1673143782\",\n    edge: null,\n    opera: null\n  },\n  rdns: \"xyz.dawnwallet\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-3DUFJPG6.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-6TGRCCCS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.nestwallet/index.js\nvar wallet = {\n  id: \"xyz.nestwallet\",\n  name: \"Nest Wallet\",\n  homepage: \"https://nestwallet.xyz\",\n  image_id: \"f8240c0b-97dd-4853-6a58-d10dadb2e800\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/nest-wallet/id6451122334\",\n    android: \"https://play.google.com/store/apps/details?id=xyz.nestwallet.nestwallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/nest-wallet/cmoakldedjfnjofgbbfenefcagmedlga\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"xyz.nestwallet\",\n  mobile: {\n    native: \"nestwallet://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-6TGRCCCS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-C2SGGGJN.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.sequence/index.js\nvar wallet = {\n  id: \"xyz.sequence\",\n  name: \"Sequence Wallet\",\n  homepage: \"https://sequence.xyz/\",\n  image_id: \"b2d5c39c-a485-4efa-5736-a782204e4a00\",\n  app: {\n    browser: \"https://sequence.app\",\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: \"https://sequence.app/\",\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: null,\n    universal: \"https://sequence.app\"\n  },\n  desktop: {\n    native: null,\n    universal: \"https://sequence.app\"\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-C2SGGGJN.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-H7ZRM2VE.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.timelesswallet/index.js\nvar wallet = {\n  id: \"xyz.timelesswallet\",\n  name: \"Timeless X\",\n  homepage: \"https://timelesswallet.xyz\",\n  image_id: \"92f1ead4-0bc4-4932-10d3-761c509b4d00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/timeless-x/id6470180600\",\n    android: \"https://play.google.com/store/apps/details?id=xyz.timelesswallet.aa\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/ifcpkdgcgcepjdkfcogehpnhpipejgho\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"timeless-x://connect\",\n    universal: \"https://timelesswallet.xyz/x\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-H7ZRM2VE.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-JTTBORVS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.echooo/index.js\nvar wallet = {\n  id: \"xyz.echooo\",\n  name: \"Echooo Wallet\",\n  homepage: \"https://www.echooo.xyz/\",\n  image_id: \"a7b1de20-bafd-4ab9-c31d-7d398cc90a00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/echooo-crypto-aa-wallet-defi/id6446883725\",\n    android: \"https://play.google.com/store/apps/details?id=com.smartwallet.app&hl=en_US&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chromewebstore.google.com/detail/echooo-wallet/lcmncloheoekhbmljjlhdlaobkedjbgd\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"echooo://echooo.valleysound.xyz/vss/walletconnect\",\n    universal: \"https://api.valleysound.xyz/vss/*\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-JTTBORVS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-N4RTWSXS.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.argent/index.js\nvar wallet = {\n  id: \"xyz.argent\",\n  name: \"Argent\",\n  homepage: \"https://www.argent.xyz\",\n  image_id: \"215158d2-614b-49c9-410f-77aa661c3900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/us/app/argent-defi-in-a-tap/id1358741926\",\n    android: \"https://play.google.com/store/apps/details?id=im.argent.contractwalletclient&hl=en&gl=US&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"argent://app/\",\n    universal: \"https://www.argent.xyz/app\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-N4RTWSXS.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-P3VWILEP.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.coca/index.js\nvar wallet = {\n  id: \"xyz.coca\",\n  name: \"COCA Wallet\",\n  homepage: \"https://www.coca.xyz/\",\n  image_id: \"34c9a3a1-a331-4c30-f7bc-182861ccca00\",\n  app: {\n    browser: \"https://wirexapp.com/wirex-wallet\",\n    ios: \"https://apps.apple.com/app/id1594165139\",\n    android: \"https://play.google.com/store/apps/details?id=com.wirex.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"wirexwallet://\",\n    universal: \"https://wwallet.app.link/wc?uri=wc:00e46b69-d0cc-4b3e-b6a2-cee442f97188@1?bridge=https%3A%2F%2Fbridge.walletconnect.org&key=91303dedf64285cbbaf9120f6e9d160a5c8aa3deb67017a3874cd272323f48ae\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-P3VWILEP.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-QSKGFGJW.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.bonuz/index.js\nvar wallet = {\n  id: \"xyz.bonuz\",\n  name: \"Bonuz Social Smart Wallet\",\n  homepage: \"https://bonuz.xyz\",\n  image_id: \"eb376138-c5b9-4d82-c610-c98c9c218a00\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/eg/app/bonuz-social-smart-wallet/id1637687439\",\n    android: \"https://play.google.com/store/apps/details?id=market.bonuz.app\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bonuzapp://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-QSKGFGJW.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-WOO5ZF56.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.abs/index.js\nvar wallet = {\n  id: \"xyz.abs\",\n  name: \"Abstract Global Wallet\",\n  homepage: \"https://abs.xyz/\",\n  image_id: \"abstract.png\",\n  app: {\n    browser: null,\n    ios: null,\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: \"xyz.abs\",\n  mobile: {\n    native: null,\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-WOO5ZF56.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz-ZHYDMTP5.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.orion/index.js\nvar wallet = {\n  id: \"xyz.orion\",\n  name: \"Orion\",\n  homepage: \"https://orion.xyz\",\n  image_id: \"85007828-9522-4517-6a55-6f376de8a500\",\n  app: {\n    browser: null,\n    ios: \"https://itunes.apple.com/app/id1659758160\",\n    android: null,\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: null,\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"orion://wc?\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz-ZHYDMTP5.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz.frontier-GCK2SAXV.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.frontier.wallet/index.js\nvar wallet = {\n  id: \"xyz.frontier.wallet\",\n  name: \"Frontier\",\n  homepage: \"https://www.frontier.xyz\",\n  image_id: \"a78c4d48-32c1-4a9d-52f2-ec7ee08ce200\",\n  app: {\n    browser: \"https://www.frontier.xyz/download\",\n    ios: \"https://apps.apple.com/us/app/frontier-defi-wallet/id1482380988\",\n    android: \"https://play.google.com/store/apps/details?id=com.frontierwallet&hl=en_IN&gl=US\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/frontier-wallet/kppfdiipphfccemcignhifpjkapfbihd\",\n    firefox: null,\n    safari: null,\n    edge: \"https://chrome.google.com/webstore/detail/frontier-wallet/kppfdiipphfccemcignhifpjkapfbihd\",\n    opera: null\n  },\n  rdns: \"xyz.frontier.wallet\",\n  mobile: {\n    native: \"frontier://\",\n    universal: null\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz.frontier-GCK2SAXV.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz.roam-5PWBMVLT.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.roam.wallet/index.js\nvar wallet = {\n  id: \"xyz.roam.wallet\",\n  name: \"Roam\",\n  homepage: \"https://roam.xyz\",\n  image_id: \"a4500b0c-47e3-4c4a-207e-d72a57f1ca00\",\n  app: {\n    browser: null,\n    ios: \"https://testflight.apple.com/join/hM8Ba1Qd\",\n    android: \"https://google.com\",\n    mac: \"https://google.com\",\n    windows: \"https://google.com\",\n    linux: \"https://google.com\",\n    chrome: \"Roam.xyz\",\n    firefox: \"https://google.com\",\n    safari: \"https://google.com\",\n    edge: \"https://google.com\",\n    opera: \"https://google.com\"\n  },\n  rdns: \"xyz.roam.wallet\",\n  mobile: {\n    native: \"roam://\",\n    universal: null\n  },\n  desktop: {\n    native: \"roam://\",\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz.roam-5PWBMVLT.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/xyz.uniultra-YQ7QTAVX.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/xyz.uniultra.wallet/index.js\nvar wallet = {\n  id: \"xyz.uniultra.wallet\",\n  name: \"U2U Wallet\",\n  homepage: \"https://wallet.uniultra.xyz/\",\n  image_id: \"03bca3fc-c191-4877-592d-0b0d6557c900\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/vn/app/u2u-wallet/id6446194312?l=vi\",\n    android: \"https://play.google.com/store/apps/details?id=org.u2u.wallet\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/u2u-wallet/ebjfhkbnnbjhcedilbedghedfgiaioed\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"u2uwc://\",\n    universal: \"https://u2u.page.link/?apn=org.u2u.wallet&isi=6446194312&ibi=org.uniultra.wallet&link=https://uniultra.xyz/?referrer%3D\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=xyz.uniultra-YQ7QTAVX.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/.vite/deps_temp_6cf5ba4c/zone-DAJ2TSNU.js",
    "content": "import \"./chunk-SEVZ5PBP.js\";\n\n// node_modules/thirdweb/dist/esm/wallets/__generated__/wallet/zone.bitverse/index.js\nvar wallet = {\n  id: \"zone.bitverse\",\n  name: \"Bitverse\",\n  homepage: \"https://www.bitverse.zone\",\n  image_id: \"5851c585-0f2b-41a1-a36a-221a18af5200\",\n  app: {\n    browser: null,\n    ios: \"https://apps.apple.com/app/1645515614\",\n    android: \"https://play.google.com/store/apps/details?id=com.bitverse.app&pli=1\",\n    mac: null,\n    windows: null,\n    linux: null,\n    chrome: \"https://chrome.google.com/webstore/detail/bitverse-wallet/gkeelndblnomfmjnophbhfhcjbcnemka\",\n    firefox: null,\n    safari: null,\n    edge: null,\n    opera: null\n  },\n  rdns: null,\n  mobile: {\n    native: \"bitverseapp://open/wallet\",\n    universal: \"https://bitverseapp.page.link/?apn=com.bitverse.app&afl=https://bitverse.zone/download?deeplink%3Dbitverseapp://open/wallet&isi=1645515614&ibi=com.bitverse.app&link=https://bitverse.zone/download?deeplink%3Dbitverseapp://open/wallet?uri=\"\n  },\n  desktop: {\n    native: null,\n    universal: null\n  }\n};\nexport {\n  wallet\n};\n//# sourceMappingURL=zone-DAJ2TSNU.js.map\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/LICENSE.md",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1.  Definitions.\n\n    \"License\" shall mean the terms and conditions for use, reproduction,\n    and distribution as defined by Sections 1 through 9 of this document.\n\n    \"Licensor\" shall mean the copyright owner or entity authorized by\n    the copyright owner that is granting the License.\n\n    \"Legal Entity\" shall mean the union of the acting entity and all\n    other entities that control, are controlled by, or are under common\n    control with that entity. For the purposes of this definition,\n    \"control\" means (i) the power, direct or indirect, to cause the\n    direction or management of such entity, whether by contract or\n    otherwise, or (ii) ownership of fifty percent (50%) or more of the\n    outstanding shares, or (iii) beneficial ownership of such entity.\n\n    \"You\" (or \"Your\") shall mean an individual or Legal Entity\n    exercising permissions granted by this License.\n\n    \"Source\" form shall mean the preferred form for making modifications,\n    including but not limited to software source code, documentation\n    source, and configuration files.\n\n    \"Object\" form shall mean any form resulting from mechanical\n    transformation or translation of a Source form, including but\n    not limited to compiled object code, generated documentation,\n    and conversions to other media types.\n\n    \"Work\" shall mean the work of authorship, whether in Source or\n    Object form, made available under the License, as indicated by a\n    copyright notice that is included in or attached to the work\n    (an example is provided in the Appendix below).\n\n    \"Derivative Works\" shall mean any work, whether in Source or Object\n    form, that is based on (or derived from) the Work and for which the\n    editorial revisions, annotations, elaborations, or other modifications\n    represent, as a whole, an original work of authorship. For the purposes\n    of this License, Derivative Works shall not include works that remain\n    separable from, or merely link (or bind by name) to the interfaces of,\n    the Work and Derivative Works thereof.\n\n    \"Contribution\" shall mean any work of authorship, including\n    the original version of the Work and any modifications or additions\n    to that Work or Derivative Works thereof, that is intentionally\n    submitted to Licensor for inclusion in the Work by the copyright owner\n    or by an individual or Legal Entity authorized to submit on behalf of\n    the copyright owner. For the purposes of this definition, \"submitted\"\n    means any form of electronic, verbal, or written communication sent\n    to the Licensor or its representatives, including but not limited to\n    communication on electronic mailing lists, source code control systems,\n    and issue tracking systems that are managed by, or on behalf of, the\n    Licensor for the purpose of discussing and improving the Work, but\n    excluding communication that is conspicuously marked or otherwise\n    designated in writing by the copyright owner as \"Not a Contribution.\"\n\n    \"Contributor\" shall mean Licensor and any individual or Legal Entity\n    on behalf of whom a Contribution has been received by Licensor and\n    subsequently incorporated within the Work.\n\n2.  Grant of Copyright License. Subject to the terms and conditions of\n    this License, each Contributor hereby grants to You a perpetual,\n    worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n    copyright license to reproduce, prepare Derivative Works of,\n    publicly display, publicly perform, sublicense, and distribute the\n    Work and such Derivative Works in Source or Object form.\n\n3.  Grant of Patent License. Subject to the terms and conditions of\n    this License, each Contributor hereby grants to You a perpetual,\n    worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n    (except as stated in this section) patent license to make, have made,\n    use, offer to sell, sell, import, and otherwise transfer the Work,\n    where such license applies only to those patent claims licensable\n    by such Contributor that are necessarily infringed by their\n    Contribution(s) alone or by combination of their Contribution(s)\n    with the Work to which such Contribution(s) was submitted. If You\n    institute patent litigation against any entity (including a\n    cross-claim or counterclaim in a lawsuit) alleging that the Work\n    or a Contribution incorporated within the Work constitutes direct\n    or contributory patent infringement, then any patent licenses\n    granted to You under this License for that Work shall terminate\n    as of the date such litigation is filed.\n\n4.  Redistribution. You may reproduce and distribute copies of the\n    Work or Derivative Works thereof in any medium, with or without\n    modifications, and in Source or Object form, provided that You\n    meet the following conditions:\n\n    (a) You must give any other recipients of the Work or\n    Derivative Works a copy of this License; and\n\n    (b) You must cause any modified files to carry prominent notices\n    stating that You changed the files; and\n\n    (c) You must retain, in the Source form of any Derivative Works\n    that You distribute, all copyright, patent, trademark, and\n    attribution notices from the Source form of the Work,\n    excluding those notices that do not pertain to any part of\n    the Derivative Works; and\n\n    (d) If the Work includes a \"NOTICE\" text file as part of its\n    distribution, then any Derivative Works that You distribute must\n    include a readable copy of the attribution notices contained\n    within such NOTICE file, excluding those notices that do not\n    pertain to any part of the Derivative Works, in at least one\n    of the following places: within a NOTICE text file distributed\n    as part of the Derivative Works; within the Source form or\n    documentation, if provided along with the Derivative Works; or,\n    within a display generated by the Derivative Works, if and\n    wherever such third-party notices normally appear. The contents\n    of the NOTICE file are for informational purposes only and\n    do not modify the License. You may add Your own attribution\n    notices within Derivative Works that You distribute, alongside\n    or as an addendum to the NOTICE text from the Work, provided\n    that such additional attribution notices cannot be construed\n    as modifying the License.\n\n    You may add Your own copyright statement to Your modifications and\n    may provide additional or different license terms and conditions\n    for use, reproduction, or distribution of Your modifications, or\n    for any such Derivative Works as a whole, provided Your use,\n    reproduction, and distribution of the Work otherwise complies with\n    the conditions stated in this License.\n\n5.  Submission of Contributions. Unless You explicitly state otherwise,\n    any Contribution intentionally submitted for inclusion in the Work\n    by You to the Licensor shall be under the terms and conditions of\n    this License, without any additional terms or conditions.\n    Notwithstanding the above, nothing herein shall supersede or modify\n    the terms of any separate license agreement you may have executed\n    with Licensor regarding such Contributions.\n\n6.  Trademarks. This License does not grant permission to use the trade\n    names, trademarks, service marks, or product names of the Licensor,\n    except as required for reasonable and customary use in describing the\n    origin of the Work and reproducing the content of the NOTICE file.\n\n7.  Disclaimer of Warranty. Unless required by applicable law or\n    agreed to in writing, Licensor provides the Work (and each\n    Contributor provides its Contributions) on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n    implied, including, without limitation, any warranties or conditions\n    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n    PARTICULAR PURPOSE. You are solely responsible for determining the\n    appropriateness of using or redistributing the Work and assume any\n    risks associated with Your exercise of permissions under this License.\n\n8.  Limitation of Liability. In no event and under no legal theory,\n    whether in tort (including negligence), contract, or otherwise,\n    unless required by applicable law (such as deliberate and grossly\n    negligent acts) or agreed to in writing, shall any Contributor be\n    liable to You for damages, including any direct, indirect, special,\n    incidental, or consequential damages of any character arising as a\n    result of this License or out of the use or inability to use the\n    Work (including but not limited to damages for loss of goodwill,\n    work stoppage, computer failure or malfunction, or any and all\n    other commercial damages or losses), even if such Contributor\n    has been advised of the possibility of such damages.\n\n9.  Accepting Warranty or Additional Liability. While redistributing\n    the Work or Derivative Works thereof, You may choose to offer,\n    and charge a fee for, acceptance of support, warranty, indemnity,\n    or other liability obligations and/or rights consistent with this\n    License. However, in accepting such obligations, You may act only\n    on Your own behalf and on Your sole responsibility, not on behalf\n    of any other Contributor, and only if You agree to indemnify,\n    defend, and hold each Contributor harmless for any liability\n    incurred by, or claims asserted against, such Contributor by reason\n    of your accepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\nCopyright 2021 Non-Fungible Labs, Inc\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/src/assets/logo.png\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>CrowdFunding</title>\n    <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n    <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin />\n    <link\n      href=\"https://fonts.googleapis.com/css2?family=Inter:slnt,wght@-10..0,100..900&display=swap\"\n      rel=\"stylesheet\"\n    />\n    <script>\n      if (global === undefined) {\n        var global = window;\n      }\n    </script>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/package.json",
    "content": "{\n  \"name\": \"crowdfunding\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"tsc && vite build\",\n    \"preview\": \"vite preview\",\n    \"lint\": \"eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^17.2.2\",\n    \"react\": \"^18.3\",\n    \"react-dom\": \"^18.3\",\n    \"react-router-dom\": \"^6.28.0\",\n    \"thirdweb\": \"^5\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"24.3.1\",\n    \"@types/react\": \"18.2.56\",\n    \"@types/react-dom\": \"18.2.19\",\n    \"@typescript-eslint/eslint-plugin\": \"7.0.2\",\n    \"@typescript-eslint/parser\": \"7.0.2\",\n    \"@vitejs/plugin-react\": \"4.2.1\",\n    \"autoprefixer\": \"10.4.17\",\n    \"eslint\": \"8.56.0\",\n    \"eslint-plugin-react-hooks\": \"4.6.0\",\n    \"eslint-plugin-react-refresh\": \"0.4.5\",\n    \"postcss\": \"8.4.35\",\n    \"tailwindcss\": \"3.4.1\",\n    \"typescript\": \"5.2.2\",\n    \"vite\": \"^4\"\n  },\n  \"main\": \"postcss.config.js\",\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"description\": \"\"\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/App.tsx",
    "content": "import React from \"react\";\nimport { Routes, Route } from \"react-router-dom\";  // Import Routes and Route\nimport Navbar from \"./components/Navbar\";\nimport Home from \"./components/Home\";\n\nimport CampaignPage from \"./Campaign/[campainAddress]/Page\";\nimport Dashboard from \"./dashboard/[walletAddress]/page\";\nimport CreateCampaign from \"./components/CreateCampaign\";\n\n\nexport default function App() {\n  return (\n    <div>\n      <Navbar />\n      <Routes> {/* Use Routes to define your route paths */}\n        <Route path=\"/\" element={<Home />} />\n        <Route path=\"/Campaign/:campaignAddress\" element={<CampaignPage/>} />\n        <Route path=\"/dashboard/:id\" element={<Dashboard/>} />\n        <Route path=\"/create-campaign\" element={<CreateCampaign/>} />\n      </Routes>\n    </div>\n  );\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/Campaign/[campainAddress]/Page.tsx",
    "content": "import React, { useState } from \"react\";\nimport { getContract, ThirdwebContract } from \"thirdweb\";\nimport { client } from \"../../client\";\nimport { useParams } from \"react-router-dom\";\nimport {\n  lightTheme,\n  TransactionButton,\n  useActiveAccount,\n  useReadContract,\n} from \"thirdweb/react\";\nimport { sendTransaction } from \"thirdweb\";\nimport TierCard from \"../../components/TierCard\";\nimport { tcore2 } from \"../../chains\";\nimport { prepareContractCall } from \"thirdweb\";\nimport { useEffect } from \"react\";\n\nfunction CampaignPage() {\n  const formatFromWei = (value: string, decimals = 18): string => {\n    if (!value || !/^\\d+$/.test(value)) return \"0\";\n    if (value.length <= decimals) {\n      const padded = value.padStart(decimals + 1, \"0\");\n      const whole = padded.slice(0, padded.length - decimals);\n      const frac = padded.slice(padded.length - decimals).replace(/0+$/, \"\");\n      return frac ? `${whole}.${frac}` : whole;\n    }\n    const whole = value.slice(0, value.length - decimals);\n    const frac = value.slice(value.length - decimals).replace(/0+$/, \"\");\n    return frac ? `${whole}.${frac}` : whole;\n  };\n  const { campaignAddress } = useParams();\n  const [isEditing, setIsEditing] = useState(false);\n  const [isModelOpen, setIsModelOpen] = useState(false);\n  const [daysToExtend, setDaysToExtend] = useState(0); // New state for days to extend\n  const [deadlineUpdated, setDeadlineUpdated] = useState(false);\n  const account = useActiveAccount();\n  const contract = getContract({\n    client: client,\n    chain: tcore2,\n    address: campaignAddress as string,\n  });\n\n  const { data: name, isLoading: isLoadName } = useReadContract({\n    contract,\n    method: \"function name() view returns (string)\",\n    params: [],\n  });\n\n  const { data: deadLine, isLoading: isLoadDeadline } = useReadContract({\n    contract,\n    method: \"function deadLine() view returns (uint256)\",\n    params: [],\n  });\n  let deadLineDate = new Date(parseInt(deadLine?.toString() as string) * 1000);\n  const deadLinePasses = deadLineDate < new Date();\nfunction abc(){   deadLineDate = new Date(parseInt(deadLine?.toString() as string) * 1000);\n  const deadLinePasses = deadLineDate < new Date();\n}\n\n\n\n  const { data: description } = useReadContract({\n    contract,\n    method: \"function description() view returns (string)\",\n    params: [],\n  });\n\n  const { data: goal, isLoading: isLoadGoal } = useReadContract({\n    contract,\n    method: \"function goal() view returns (uint256)\",\n    params: [],\n  });\n\n  const { data: balance, isLoading: isLoadBalance } = useReadContract({\n    contract,\n    method: \"function getcontractBalance() view returns (uint256)\",\n    params: [],\n  });\n\n  const totalBalance = balance?.toString() || \"0\";\n  const totalGoal = goal?.toString() || \"1\";\n  let balancePercentage = (parseInt(totalBalance) / parseInt(totalGoal)) * 100;\n  if (balancePercentage > 100) {\n    balancePercentage = 100;\n  }\n\n  const { data: tiers, isLoading: isLoadingTiers } = useReadContract({\n    contract,\n    method: \"function getTiers() view returns ((string name, uint256 amount, uint256 backers)[])\",\n    params: [],\n  });\n\n  const { data: owner, isLoading: isLoadOwner } = useReadContract({\n    contract,\n    method: \"function owner() view returns (address)\",\n    params: [],\n  });\n\n  const { data: status, isPending } = useReadContract({\n    contract,\n    method: \"function state() view returns (uint8)\",\n    params: [],\n  });\n\n  // const handleWithdraw = async () => {\n  //   const transaction = await prepareContractCall({\n  //     contract,\n  //     method: \"function withdraw()\",\n  //     params: [],\n  //   });\n  //   await sendTransaction({\n  //     transaction,\n  //     account: account!,\n  //   });\n  //   setDeadlineUpdated(!deadlineUpdated);\n  // };\n\n  // useEffect(() => {\n  // abc();\n  // }, [deadlineUpdated]);\n\n  // const handleExtendDeadline = async () => {\n  //   const transaction = await prepareContractCall({\n  //     contract,\n  //     method: \"function extendDeadLine(uint256 _daysAdded)\",\n  //     params: [BigInt(daysToExtend)],\n  //   });\n  //   await sendTransaction({\n  //     transaction,\n  //     account: account!,\n  //   });\n  // };\n  // const getStatusText = (status: number): string => {\n  //   switch (status) {\n  //     case 0:\n  //       return \"Active\";\n  //     case 1:\n  //       return \"Completed\";\n  //     case 2:\n  //       return \"Rejected\";\n  //     default:\n  //       return \"Unknown\";\n  //   }\n  // };\n  \n  const handleWithdraw = async () => {\n    return prepareContractCall({\n      contract,\n      method: \"function withdraw()\",\n      params: [],\n    });\n  };\n  \n  const handleExtendDeadline = async () => {\n    return prepareContractCall({\n      contract,\n      method: \"function extendDeadLine(uint256 _daysAdded)\",\n      params: [BigInt(daysToExtend)],\n    });\n  };\n  \n  const getStatusText = (status: number): string => {\n    switch (status) {\n      case 0:\n        return \"Active\";\n      case 1:\n        return \"Completed\";\n      case 2:\n        return \"Rejected\";\n      default:\n        return \"Unknown\";\n    }\n  };\n  \n  // useEffect example\n  useEffect(() => {\n    const deadLineDate = new Date(parseInt(deadLine?.toString() || \"0\") * 1000);\n    const deadLinePasses = deadLineDate < new Date();\n  }, [deadlineUpdated, deadLine]);\n  \n\n  return (\n    <div className=\"mx-auto max-w-5xl px-4 mt-8 sm:px-6 lg:px-8\">\n      <div className=\"flex justify-between items-center mb-6\">\n        <div className=\"flex items-center space-x-4\">\n          {!isLoadName && <p className=\"text-3xl font-semibold text-gray-900 dark:text-gray-100\">{name}</p>}\n        </div>\n        {owner === account?.address && (\n          <div className=\"flex items-center space-x-3\">\n            <button\n              className=\"rounded-lg px-4 py-2 text-white bg-blue-600 hover:bg-blue-700 transition\"\n              onClick={() => setIsEditing(!isEditing)}\n            >\n              {isEditing ? \"Done\" : \"Edit\"}\n            </button>\n            {goal === balance && (\n              <TransactionButton transaction={handleWithdraw} theme={lightTheme()}>\n                Withdraw\n              </TransactionButton>\n            )}\n          </div>\n        )}\n      </div>\n\n      <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n        <div className=\"bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 rounded-xl p-5\">\n          <p className=\"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-2\">Description</p>\n          <p className=\"text-gray-700 dark:text-gray-300\">{description}</p>\n        </div>\n\n        <div className=\"bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 rounded-xl p-5\">\n          <p className=\"text-lg font-semibold text-gray-900 dark:text-gray-100 mb-2\">Deadline</p>\n          <p className=\"text-gray-700 dark:text-gray-300\">{deadLineDate.toDateString()}</p>\n        </div>\n      </div>\n\n      <div className=\"bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 rounded-xl p-5 mt-6\">\n        <p className=\"text-lg font-semibold text-gray-900 dark:text-gray-100\">Campaign Goal</p>\n        <p className=\"text-gray-700 dark:text-gray-300\">tCORE2 {formatFromWei(totalGoal)}</p>\n        <div className=\"w-full mt-3 space-y-2\">\n          <div className=\"w-full h-2 bg-gray-200 dark:bg-zinc-800 rounded-full overflow-hidden\">\n            <div className=\"h-2 bg-gradient-to-r from-blue-500 to-indigo-600\" style={{ width: `${balancePercentage}%` }} />\n          </div>\n          <div className=\"flex justify-between text-sm text-gray-700 dark:text-gray-300\">\n            <span className=\"whitespace-nowrap\">tCORE2 {formatFromWei(totalBalance)}</span>\n            <span className=\"whitespace-nowrap\">{balancePercentage >= 100 ? \"Goal Achieved\" : `${balancePercentage.toFixed(2)}%`}</span>\n          </div>\n        </div>\n      </div>\n\n      <div className=\"bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 rounded-xl p-5 mt-6\">\n        <div className=\"flex items-center justify-between\">\n          <p className=\"text-lg font-semibold text-gray-900 dark:text-gray-100\">Tiers</p>\n          {isEditing && (\n            <button\n              className=\"text-white bg-blue-600 hover:bg-blue-700 font-semibold rounded-lg px-4 py-2\"\n              onClick={() => setIsModelOpen(true)}\n            >\n              + Add Tier\n            </button>\n          )}\n        </div>\n        <div className=\"mt-4\">\n          {isLoadingTiers ? (\n            <p className=\"text-gray-600 dark:text-gray-300\">Loading...</p>\n          ) : (\n            tiers && tiers.length > 0 ? (\n              tiers.map((tier, index) => (\n                <TierCard\n                  isEditing={isEditing}\n                  key={index}\n                  index={index}\n                  tier={tier}\n                  contract={contract}\n                />\n              ))\n            ) : (\n              <p className=\"text-gray-600 dark:text-gray-300\">No Tiers Available</p>\n            )\n          )}\n        </div>\n      </div>\n\n      {isModelOpen && (\n        <CreateTierModal setIsModelOpen={setIsModelOpen} contract={contract} />\n      )}\n    </div>\n  );\n}\n\n\n\nexport default CampaignPage;\n\ntype CreateTierModelP = {\n  setIsModelOpen: (value: boolean) => void;\n  contract: ThirdwebContract;\n};\n\nconst CreateTierModal = ({ setIsModelOpen, contract }: CreateTierModelP) => {\n  const [tierName, setTierName] = useState<string>(\"\");\n  const [tierAmount, setTierAmount] = useState<bigint>(1n);\n  \n  return (\n    <div className=\"fixed inset-0 bg-black/70 flex justify-center items-center backdrop-blur-sm\">\n      <div className=\"w-11/12 sm:w-3/4 md:w-1/2 bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 p-6 rounded-xl shadow-lg\">\n        <div className=\"flex justify-between items-center mb-4\">\n          <p className=\"text-lg font-semibold text-gray-900 dark:text-gray-100\">Create a Funding Tier</p>\n          <button\n            className=\"text-sm px-4 py-2 bg-slate-200 hover:bg-slate-300 dark:bg-zinc-800 dark:hover:bg-zinc-700 text-gray-800 dark:text-gray-100 rounded-md\"\n            onClick={() => setIsModelOpen(false)}\n          >\n            Close\n          </button>\n        </div>\n        <div className=\"flex flex-col\">\n          <label className=\"mb-1 text-sm text-gray-700 dark:text-gray-300\">Tier Name</label>\n          <input\n            type=\"text\"\n            value={tierName}\n            onChange={(e) => setTierName(e.target.value)}\n            placeholder=\"Tier Name\"\n            className=\"mb-4 px-4 py-2 rounded-lg border border-gray-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n          />\n          <label className=\"mb-1 text-sm text-gray-700 dark:text-gray-300\">Tier Amount (tCORE2)</label>\n          <input\n            type=\"number\"\n            value={parseInt(tierAmount.toString())}\n            onChange={(e) => setTierAmount(BigInt(e.target.value))}\n            placeholder=\"Amount\"\n            className=\"mb-4 px-4 py-2 rounded-lg border border-gray-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n          />\n        </div>\n        <TransactionButton\n          transaction={() =>\n            prepareContractCall({\n              contract,\n              method: \"function addTier(string _name, uint256 _amount)\",\n              params: [tierName, tierAmount],\n            })\n          }\n          theme={lightTheme()}\n          className=\"w-full sm:w-auto mt-2 rounded-lg bg-blue-600 hover:bg-blue-700 text-white px-4 py-2\"\n          onTransactionConfirmed={()=>{alert(\"Tier Added Succesfully\"); setIsModelOpen(false)}}>\n          Create Tier\n        </TransactionButton>\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/chains.ts",
    "content": "import { defineChain } from \"thirdweb\";\n\nexport const tcore2 = defineChain({\n  id: 1114,\n  name: \"Core Blockchain Testnet 2\",\n  nativeCurrency: {\n    name: \"Core Testnet\",\n    symbol: \"tCORE2\",\n    decimals: 18,\n  },\n  rpc: `https://1114.rpc.thirdweb.com/${import.meta.env.VITE_THIRDWEB_CLIENT_ID} `,\n  blockExplorers: [\n    {\n      name: \"Core Testnet 2 Explorer\",\n      url: \"https://scan.test2.btcs.network\",\n    },\n  ],\n});\n\n\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/client.ts",
    "content": "import { createThirdwebClient } from \"thirdweb\";\n\n// Environment variable usage\nconst clientId = import.meta.env.VITE_THIRDWEB_CLIENT_ID as string;\n\nexport const client = createThirdwebClient({\n  clientId: clientId,\n});\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/components/Campaign.tsx",
    "content": "import React from \"react\";\nimport { getContract } from \"thirdweb\";\nimport { client } from \"../client\";\nimport { useReadContract } from \"thirdweb/react\";\nimport { Link } from \"react-router-dom\";\nimport { tcore2 } from \"../chains\";\n\ntype CampaignCardProps = {\n  campaignAddress: string;\n};\n\nexport default function Campaign({ campaignAddress }: CampaignCardProps) {\n  const formatFromWei = (value: string, decimals = 18): string => {\n    if (!value || !/^\\d+$/.test(value)) return \"0\";\n    if (value.length <= decimals) {\n      const padded = value.padStart(decimals + 1, \"0\");\n      const whole = padded.slice(0, padded.length - decimals);\n      const frac = padded.slice(padded.length - decimals).replace(/0+$/, \"\");\n      return frac ? `${whole}.${frac}` : whole;\n    }\n    const whole = value.slice(0, value.length - decimals);\n    const frac = value.slice(value.length - decimals).replace(/0+$/, \"\");\n    return frac ? `${whole}.${frac}` : whole;\n  };\n  const contract = getContract({\n    client: client,\n    chain: tcore2,\n    address: campaignAddress,\n  });\n\n  const { data: campaignName } = useReadContract({\n    contract,\n    method: \"function name() view returns (string)\",\n    params: [],\n  });\n  const { data: campaignDescription } = useReadContract({\n    contract,\n    method: \"function description() view returns (string)\",\n    params: [],\n  });\n  const { data: goal, isLoading: isLoadGoal } = useReadContract({\n    contract,\n    method: \"function goal() view returns (uint256)\",\n    params: [],\n  });\n  const { data: balance, isLoading: isLoadBalance } = useReadContract({\n    contract,\n    method: \"function getcontractBalance() view returns (uint256)\",\n    params: [],\n  });\n  const { data: status, isPending } = useReadContract({\n    contract,\n    method: \"function state() view returns (uint8)\",\n    params: [],\n  });\n\n  // Convert status to a readable format\n  const getStatusText = (status: number): string => {\n    switch (status) {\n      case 0:\n        return \"Active\";\n      case 1:\n        return \"Completed\";\n      case 2:\n        return \"Rejected\";\n      default:\n        return \"Unknown\";\n    }\n  };\n\n  const totalBalance = balance?.toString() || \"0\";\n  const totalGoal = goal?.toString() || \"1\"; // Prevent division by zero\n  let balancePercentage = (parseInt(totalBalance) / parseInt(totalGoal)) * 100;\n  if (balancePercentage > 100) balancePercentage = 100;\n\n  return (\n    <div className=\"flex flex-col p-6 bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 rounded-xl shadow-sm\">\n      <h2 className=\"text-xl font-semibold text-gray-900 dark:text-gray-100 mb-1\">{campaignName || \"Campaign Name\"}</h2>\n      <p className=\"text-gray-600 dark:text-gray-400 mb-4 line-clamp-2\">{campaignDescription || \"No description available.\"}</p>\n      <p className=\"text-gray-600 dark:text-gray-400 mb-4\">\n        Status: {status !== undefined ? getStatusText(status) : \"Loading...\"}\n      </p>\n      {!isLoadBalance && !isLoadGoal && (\n        <div className=\"w-full mt-2 space-y-2\">\n          <div className=\"w-full h-2 bg-gray-200 dark:bg-zinc-800 rounded-full overflow-hidden\">\n            <div\n              className=\"h-2 bg-gradient-to-r from-blue-500 to-indigo-600\"\n              style={{ width: `${balancePercentage}%` }}\n            />\n          </div>\n          <div className=\"flex justify-between text-xs text-gray-700 dark:text-gray-300\">\n            <span className=\"whitespace-nowrap\">tCORE2 {formatFromWei(totalBalance)}</span>\n            <span className=\"whitespace-nowrap\">{balancePercentage >= 100 ? \"Goal Achieved\" : `${balancePercentage.toFixed(2)}%`}</span>\n          </div>\n        </div>\n      )}\n      <div className=\"flex items-center justify-between mt-4\">\n        <p className=\"text-gray-700 dark:text-gray-300\">Goal: tCORE2 {formatFromWei(totalGoal)}</p>\n        <p className=\"text-gray-700 dark:text-gray-300\">Balance: tCORE2 {formatFromWei(totalBalance)}</p>\n      </div>\n      \n      <Link to={`/Campaign/${campaignAddress}`}>\n        <p className=\"inline-flex items-center px-3 py-2 text-sm font-medium text-center text-white bg-blue-600 hover:bg-blue-700 rounded-lg mt-4\">\n          View Campaign\n        </p>\n      </Link>\n    </div>\n  );\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/components/CampaignDetail.tsx",
    "content": "import React from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nexport default function CampaignDetail() {\n  const { campaignAddress } = useParams();\n\n  return <div>Details for Campaign {campaignAddress}</div>;\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/components/CreateCampaign.tsx",
    "content": "import React, { useState } from \"react\";\nimport { useActiveAccount } from \"thirdweb/react\";\nimport { tcore2 } from \"../chains\";\nimport { client } from \"../client\";\nimport { getContract, prepareContractCall, sendTransaction } from \"thirdweb\";\nimport { CROWDFUNDING_FACTORY } from \"../contants/contract\";\nimport { useNavigate } from \"react-router-dom\";\n\ninterface Errors {\n  campaignName?: string;\n  campaignDescription?: string;\n  campaignGoal?: string;\n  campaignDeadline?: string;\n}\n\nfunction CreateCampaign() {\n  const account = useActiveAccount();\n  const [campaignName, setCampaignName] = useState<string>(\"\");\n  const [campaignDescription, setCampaignDescription] = useState<string>(\"\");\n  const [campaignGoal, setCampaignGoal] = useState<string>(\"\");\n  const [campaignDeadline, setCampaignDeadline] = useState<string>(\"\");\n  const [isDeploying, setIsDeploying] = useState(false);\n  const [errors, setErrors] = useState<Errors>({});\n  const navigate = useNavigate();\n\n  // Function to validate form fields\n  const validateForm = () => {\n    const newErrors: Errors = {};\n    \n    if (!campaignName) newErrors.campaignName = \"Campaign name is required.\";\n    if (!campaignDescription) newErrors.campaignDescription = \"Campaign description is required.\";\n    \n    if (!campaignGoal || Number(campaignGoal) <= 0) {\n      newErrors.campaignGoal = \"Campaign goal must be a positive number.\";\n    }\n    \n    if (!campaignDeadline || Number(campaignDeadline) <= 0) {\n      newErrors.campaignDeadline = \"Campaign deadline must be a valid number.\";\n    }\n    \n    setErrors(newErrors);\n    return Object.keys(newErrors).length === 0;\n  };\n\n  const handleDeployContract = async () => {\n    if (!validateForm()) {\n      return; // Stop submission if validation fails\n    }\n\n    setIsDeploying(true);\n    try {\n      // Convert user-entered tCORE2 (18 decimals) to wei BigInt\n      const parseToWei = (amount: string, decimals: number): bigint => {\n        const [whole, frac = \"\"] = amount.split(\".\");\n        const fracPadded = (frac + \"0\".repeat(decimals)).slice(0, decimals);\n        const normalized = `${whole || \"0\"}${fracPadded}`.replace(/^0+(?=\\d)/, \"\");\n        return BigInt(normalized || \"0\");\n      };\n      const goalWei = parseToWei(campaignGoal, 18);\n\n      const factory = getContract({ client, chain: tcore2, address: CROWDFUNDING_FACTORY });\n      const transaction = await prepareContractCall({\n        contract: factory,\n        method: \"function createCampaign(string _name, string _description, uint256 _goal, uint256 _duration)\",\n        params: [campaignName, campaignDescription, goalWei, BigInt(Number(campaignDeadline))],\n      });\n      await sendTransaction({ transaction, account: account! });\n      alert(\"Campaign created successfully!\");\n      navigate(\"/dashboard/:id\"); // Redirect to Dashboard after creation\n    } catch (err) {\n      console.error(err);\n    } finally {\n      setIsDeploying(false);\n    }\n  };\n\n  return (\n    <div className=\"mx-auto max-w-3xl px-4 py-8\">\n      <div className=\"bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 rounded-xl shadow-sm p-6\">\n        <h2 className=\"text-2xl font-semibold mb-6 text-gray-900 dark:text-gray-100\">Create a Campaign</h2>\n\n        <div className=\"grid grid-cols-1 gap-5\">\n          <div>\n            <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">Campaign Name</label>\n            <input\n              type=\"text\"\n              placeholder=\"e.g. Build a community garden\"\n              className=\"w-full rounded-lg border border-gray-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-gray-900 dark:text-gray-100 px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n              value={campaignName}\n              onChange={(e) => setCampaignName(e.target.value)}\n            />\n            {errors.campaignName && <p className=\"mt-1 text-sm text-red-500\">{errors.campaignName}</p>}\n          </div>\n\n          <div>\n            <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">Campaign Description</label>\n            <input\n              type=\"text\"\n              placeholder=\"What are you raising funds for?\"\n              className=\"w-full rounded-lg border border-gray-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-gray-900 dark:text-gray-100 px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n              value={campaignDescription}\n              onChange={(e) => setCampaignDescription(e.target.value)}\n            />\n            {errors.campaignDescription && <p className=\"mt-1 text-sm text-red-500\">{errors.campaignDescription}</p>}\n          </div>\n\n          <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-5\">\n            <div>\n              <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">Goal (tCORE2)</label>\n              <input\n                type=\"number\"\n                placeholder=\"e.g. 1.5\"\n                className=\"w-full rounded-lg border border-gray-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-gray-900 dark:text-gray-100 px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n                value={campaignGoal}\n                onChange={(e) => setCampaignGoal(e.target.value)}\n              />\n              <p className=\"mt-1 text-xs text-gray-500 dark:text-gray-400\">Enter amount in tCORE2. We will convert to wei on-chain.</p>\n              {errors.campaignGoal && <p className=\"mt-1 text-sm text-red-500\">{errors.campaignGoal}</p>}\n            </div>\n\n            <div>\n              <label className=\"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\">Duration (days)</label>\n              <input\n                type=\"number\"\n                placeholder=\"e.g. 30\"\n                className=\"w-full rounded-lg border border-gray-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-gray-900 dark:text-gray-100 px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n                value={campaignDeadline}\n                onChange={(e) => setCampaignDeadline(e.target.value)}\n              />\n              {errors.campaignDeadline && <p className=\"mt-1 text-sm text-red-500\">{errors.campaignDeadline}</p>}\n            </div>\n          </div>\n\n          <div className=\"flex justify-end\">\n            <button\n              className=\"inline-flex items-center gap-2 px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg disabled:opacity-60\"\n              onClick={handleDeployContract}\n              disabled={isDeploying}\n            >\n              {isDeploying ? \"Creating...\" : \"Create Campaign\"}\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport default CreateCampaign;\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/components/Home.tsx",
    "content": "import React, { useState } from \"react\";\nimport { getContract } from \"thirdweb\";\nimport { client } from \"../client\";\nimport { CROWDFUNDING_FACTORY } from \"../contants/contract\";\nimport { useReadContract } from \"thirdweb/react\";\nimport Campaign from \"./Campaign\";\nimport { tcore2 } from \"../chains\";\n\nfunction Home() {\n  const [filterStatus, setFilterStatus] = useState(\"all\"); // State to store filter criteria\n\n  const contract = getContract({\n    client: client,\n    chain: tcore2,\n    address: CROWDFUNDING_FACTORY,\n  });\n\n  const { data: campaigns, isPending } = useReadContract({\n    contract,\n    method: \"function getAllCampaigns() view returns ((address campaignAddress, address owner, string name, uint256 creationTime)[])\",\n    params: [],\n  });\n  const { data:status, isPending:abc } = useReadContract({\n    contract,\n    method:\n      \"function getCampaignStatus() view returns (uint8)\",\n    params: [],\n  });\n  // const { data, isPending } = useReadContract({\n  //   contract,\n  //   method:\n  //     \"function getCampaignStatus() view returns (uint8)\",\n  //   params: [],\n  // });\n\n  // Filter campaigns based on selected status\n  const filteredCampaigns =\n    campaigns &&\n    campaigns.filter((campaign) => {\n      if (filterStatus === \"all\") return true;\n      return status === parseInt(filterStatus);\n    });\n\n  return (\n    <div className=\"container mx-auto max-w-7xl px-4 mt-8 sm:px-6 lg:px-8\">\n      <div className=\"flex flex-col items-start space-y-6\">\n        <h1 className=\"text-black-700 text-2xl font-medium \">All Campaigns</h1>\n        \n        <div className=\"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-6 w-full\">\n          {!isPending && filteredCampaigns ? (\n            filteredCampaigns.length > 0 ? (\n              filteredCampaigns.map((campaign) => (\n                <Campaign\n                  key={campaign.campaignAddress}\n                  campaignAddress={campaign.campaignAddress}\n                />\n              ))\n            ) : (\n              <p className=\"text-gray-500\">No Campaigns Found</p>\n            )\n          ) : (\n            <p className=\"text-gray-500\">Loading...</p>\n          )}\n        </div>\n      </div>\n      \n    </div>\n  );\n}\n\nexport default Home;\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/components/Navbar.tsx",
    "content": "\nimport React, { useEffect, useState } from \"react\";\n\nimport { Link } from \"react-router-dom\";\nimport { ConnectButton, lightTheme, useActiveAccount } from \"thirdweb/react\";\nimport { client } from \"../client\";\nimport { tcore2 } from \"../chains\";\n\nfunction Navbar() {\n    const [isOpen, setIsOpen] = useState(false);\n    const [theme, setTheme] = useState<string>(() => localStorage.getItem(\"theme\") || \"light\");\n    const account = useActiveAccount();\n\n    const toggleMenu = () => setIsOpen(!isOpen);\n\n    useEffect(() => {\n        const root = window.document.documentElement;\n        if (theme === \"dark\") {\n            root.classList.add(\"dark\");\n        } else {\n            root.classList.remove(\"dark\");\n        }\n        localStorage.setItem(\"theme\", theme);\n    }, [theme]);\n\n    const toggleTheme = () => setTheme(theme === \"dark\" ? \"light\" : \"dark\");\n\n    return (\n        <nav className=\"bg-slate-100 dark:bg-zinc-900 dark:border-zinc-800 border-b-2 z-0 border-b-slate-300 shadow-md text-gray-900 dark:text-gray-100\">\n            <div className=\"mx-auto max-w-7xl px-4 sm:px-6 lg:px-8\">\n                <div className=\"flex h-16 items-center justify-between\">\n                    \n                    {/* Logo and Campaigns Link */}\n                    <div className=\"flex items-end\">\n  <h1 className=\"text-3xl font-bold\">\n    <span className=\"text-gray-900 dark:text-gray-100\">Crowd</span>\n    <span className=\"text-blue-600\">Funding</span>\n  </h1>\n</div>\n\n\n                    {/* Right Section with Connect Button and Menu Icon */}\n                    <div className=\"flex items-center space-x-4\">\n                        {/* Links and Connect Button for larger screens */}\n                        <div className=\"hidden md:flex items-center space-x-6\">\n                        <Link to=\"/\" className=\"text-gray-700 dark:text-gray-200 text-sm font-medium hover:text-purple-600\">\n                            Campaigns\n                        </Link>\n                            {account && (\n                                <Link to={`/dashboard/${account.address}`} className=\"text-gray-700 dark:text-gray-200 text-sm font-medium hover:text-purple-600\">\n                                    Dashboard\n                                </Link>\n                            )}\n                            <button onClick={toggleTheme} className=\"rounded-md px-3 py-2 text-sm font-medium bg-slate-200 hover:bg-slate-300 dark:bg-zinc-800 dark:hover:bg-zinc-700 text-gray-800 dark:text-gray-100\">\n                                {theme === \"dark\" ? (\n                                    <span className=\"flex items-center gap-2\">\n\n                                        Light\n                                    </span>\n                                ) : (\n                                    <span className=\"flex items-center gap-2\">\n\n                                        Dark\n                                    </span>\n                                )}\n                            </button>\n                            <ConnectButton \n                                client={client} \n                                theme={lightTheme()} \n                                chains={[tcore2]}\n                                detailsButton={{ style: { maxHeight: \"50px\" } } } \n                            />\n                        </div>\n\n                        {/* Hamburger Icon for mobile view */}\n                        <button \n                            onClick={toggleMenu} \n                            className=\"md:hidden text-gray-700 focus:outline-none\"\n                        >\n                            <svg className=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n                                <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M4 6h16M4 12h16m-7 6h7\" />\n                            </svg>\n                        </button>\n                    </div>\n                </div>\n\n                {/* Mobile Menu */}\n                {isOpen && (\n                    <div className=\"md:hidden\">\n                        <div className=\"space-y-1 pt-2 pb-3\">\n                            <Link to=\"/\" className=\"block px-3 py-2 rounded-md text-base font-medium text-gray-700 dark:text-gray-200 hover:bg-slate-200 dark:hover:bg-zinc-800\">\n                                Campaigns\n                            </Link>\n                            {account && (\n                                <Link to={`/dashboard/${account.address}`} className=\"block px-3 py-2 rounded-md text-base font-medium text-gray-700 dark:text-gray-200 hover:bg-slate-200 dark:hover:bg-zinc-800\">\n                                    Dashboard\n                                </Link>\n                            )}\n                         <div className=\"block px-3 py-2 rounded-md text-base font-medium text-gray-700 dark:text-gray-200 hover:bg-slate-200 dark:hover:bg-zinc-800\">\n    <button onClick={toggleTheme} className=\"w-full text-left mb-2 rounded-md px-3 py-2 text-base font-medium bg-slate-200 hover:bg-slate-300 dark:bg-zinc-800 dark:hover:bg-zinc-700 text-gray-800 dark:text-gray-100\">\n      {theme === \"dark\" ? (\n        <span className=\"inline-flex items-center gap-2\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"h-5 w-5 text-yellow-400\" aria-hidden=\"true\"><path d=\"M12 18a6 6 0 1 0 0-12 6 6 0 0 0 0 12Zm0 4a1 1 0 0 1-1-1v-1a1 1 0 1 1 2 0v1a1 1 0 0 1-1 1Zm0-20a1 1 0 0 1 1 1v1a1 1 0 1 1-2 0V3a1 1 0 0 1 1-1ZM4.222 5.636a1 1 0 0 1 1.414 0l.707.707A1 1 0 1 1 5.636 8.05l-.707-.707a1 1 0 0 1 0-1.414Zm12.728 12.728a1 1 0 0 1 1.414 0l.707.707a1 1 0 0 1-1.414 1.414l-.707-.707a1 1 0 0 1 0-1.414ZM1 13a1 1 0 1 1 0-2h1a1 1 0 1 1 0 2H1Zm20 0a1 1 0 1 1 0-2h1a1 1 0 1 1 0 2h-1ZM4.222 18.364a1 1 0 0 1 0-1.414l.707-.707a1 1 0 1 1 1.414 1.414l-.707.707a1 1 0 0 1-1.414 0ZM16.95 5.636a1 1 0 0 1 1.414-1.414l.707.707A1 1 0 0 1 17.657 6.343l-.707-.707Z\"/></svg>\n          Light\n        </span>\n      ) : (\n        <span className=\"inline-flex items-center gap-2\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"h-5 w-5 text-indigo-600\" aria-hidden=\"true\"><path d=\"M21.752 15.002A9 9 0 0 1 9.002 2.252a9.003 9.003 0 1 0 12.75 12.75Z\"/></svg>\n          Dark\n        </span>\n      )}\n    </button>\n    <ConnectButton \n        client={client} \n        theme={lightTheme()} \n        chains={[tcore2]}\n        detailsButton={{ style: { maxHeight: \"40px\" } }} \n    />\n</div>\n                        </div>\n                    </div>\n                )}\n            </div>\n        </nav>\n    );\n}\n\nexport default Navbar;\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/components/TierCard.tsx",
    "content": "import React from \"react\";\nimport { prepareContractCall, ThirdwebContract } from \"thirdweb\";\nimport { TransactionButton } from \"thirdweb/react\";\nimport { useReadContract } from \"thirdweb/react\";\n\n\ntype Tier = {\n  name: string;\n  amount: bigint;\n  backers: bigint;\n};\n\ntype TierCardProps = {\n  tier: Tier;\n  contract: ThirdwebContract;\n  index:number;\n  isEditing:boolean;\n};\n\nfunction TierCard({ tier, contract ,index,isEditing }: TierCardProps) \n{\n  const formatFromWei = (value: string, decimals = 18): string => {\n    if (!value || !/^\\d+$/.test(value)) return \"0\";\n    if (value.length <= decimals) {\n      const padded = value.padStart(decimals + 1, \"0\");\n      const whole = padded.slice(0, padded.length - decimals);\n      const frac = padded.slice(padded.length - decimals).replace(/0+$/, \"\");\n      return frac ? `${whole}.${frac}` : whole;\n    }\n    const whole = value.slice(0, value.length - decimals);\n    const frac = value.slice(value.length - decimals).replace(/0+$/, \"\");\n    return frac ? `${whole}.${frac}` : whole;\n  };\n  const { data:status, isPending:isloadingstatus } = useReadContract({\n    contract,\n    method:\n      \"function getCampaignStatus() view returns (uint8)\",\n    params: [],\n  });\n  const isActive = !isloadingstatus && status === 0;\n\n  return (\n    <div className=\"max-w-sm mb-4 p-5 bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 rounded-xl shadow-sm\">\n      <div className=\"flex items-start justify-between gap-3\">\n        <div>\n          <p className=\"text-lg font-semibold text-gray-900 dark:text-gray-100\">{tier.name}</p>\n          <p className=\"mt-1 text-xs text-gray-600 dark:text-gray-400\">Total Backers: {tier.backers.toString()}</p>\n        </div>\n        <span className=\"shrink-0 inline-flex items-center rounded-full bg-blue-50 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300 px-2 py-0.5 text-xs font-medium\">tCORE2 {formatFromWei(tier.amount.toString())}</span>\n      </div>\n\n      <div className=\"mt-4 flex items-center justify-between\">\n        <span className={`text-xs font-medium ${isActive ? \"text-green-700 bg-green-100 dark:text-green-300 dark:bg-green-900/30\" : \"text-yellow-700 bg-yellow-100 dark:text-yellow-300 dark:bg-yellow-900/30\"} px-2 py-1 rounded-full`}>\n          {isActive ? \"Active\" : \"Unavailable\"}\n        </span>\n        <div className=\"flex items-center gap-1 flex-wrap justify-end\">\n          {isEditing && (\n            <TransactionButton\n              transaction={() => prepareContractCall({\n                contract,\n                method: \"function removeTier(uint256 _index)\",\n                params: [BigInt(index)]\n              })}\n              onTransactionConfirmed={async => alert(\"Removed\")}\n              className=\"bg-red-600 hover:bg-red-700 text-white px-1.5 py-0.5 text-[10px] leading-none rounded\"\n            >\n              Remove\n            </TransactionButton>\n          )}\n          {isActive && (\n            <TransactionButton\n              transaction={() => prepareContractCall({\n                contract,\n                method: \"function fund(uint256 _tierIndex) payable\",\n                params: [BigInt(index)],\n                value: tier.amount,\n              })}\n              onTransactionConfirmed={async () => alert(\"Transaction Successful\")}\n              className=\"bg-blue-600 hover:bg-blue-700 text-white px-2 py-0.5 text-[10px] leading-none rounded\"\n            >\n              Select\n            </TransactionButton>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport default TierCard;\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/contants/contract.tsx",
    "content": "//enter Your Factory contract address here\nexport const CROWDFUNDING_FACTORY = \"0xfff653b65ec5517af15d416f9336b604ff3458aa\";"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/dashboard/[walletAddress]/page.tsx",
    "content": "// import { CROWDFUNDING_FACTORY } from \"../../contants/contract\";\n// import { client } from \"../../client\";\n// import { baseSepolia } from \"thirdweb/chains\";\n// import { getContract } from \"thirdweb\";\n// import { useActiveAccount, useReadContract } from \"thirdweb/react\";\n// import Campaign from \"../../components/Campaign\";\n// import { useEffect, useState } from \"react\";\n// import { deployPublishedContract } from \"thirdweb/deploys\";\n\n// function Dashboard() {\n//   const [modelOpen, setModelOpen] = useState(false);\n//   const account = useActiveAccount();\n//   const [campaigns, setCampaigns] = useState([]);\n  \n//   const contract = getContract({\n//     client: client,\n//     chain: baseSepolia,\n//     address: CROWDFUNDING_FACTORY,\n//   });\n\n//   const { data, isLoading, refetch } = useReadContract({\n//     contract,\n//     method:\n//       \"function getUserCampaigns(address _user) view returns ((address campaignAddress, address owner, string name, uint256 creationTime)[])\",\n//     params: [account?.address as string],\n//   });\n\n//   // Fetch campaigns when data is available or refetched\n//   useEffect(() => {\n//     if (data) {\n//       setCampaigns(data);\n//     }\n//   }, [data]);\n\n//   const refreshCampaigns = async () => {\n//     await refetch();\n//   };\n\n//   return (\n//     <div className=\"mx-auto max-w-7xl px-4 mt-16 sm:px-6 lg:px-8\">\n//       <div className=\"flex flex-row justify-between items-center mb-8\">\n//         <p className=\"text-4xl font-semibold\">Dashboard</p>\n//         <button\n//           className=\"px-4 py-2 bg-blue-500 text-white rounded-md\"\n//           onClick={() => setModelOpen(true)}\n//         >\n//           Create Campaign\n//         </button>\n//       </div>\n\n//       <p className=\"text-2xl font-semibold mb-4\">Your Campaigns</p>\n\n//       <div className=\"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-6 w-full\">\n//         {isLoading ? (\n//           <p>Loading campaigns...</p>\n//         ) : campaigns.length > 0 ? (\n//           campaigns.map((campaign, index) => (\n//             <Campaign key={index} campaignAddress={campaign.campaignAddress} />\n//           ))\n//         ) : (\n//           <p>No Campaigns Found!</p>\n//         )}\n//       </div>\n\n//       {modelOpen && (\n//         <CreateCampaignModal ismodelOpen={setModelOpen} onCampaignCreated={refreshCampaigns} />\n//       )}\n//     </div>\n//   );\n// }\n\n// export default Dashboard;\n// const CreateCampaignModal = ({ ismodelOpen, onCampaignCreated }) => {\n//   const account = useActiveAccount();\n//   const [campaignName, setCampaignName] = useState<string>(\"\");\n//   const [campaignDescription, setCampaignDescription] = useState<string>(\"\");\n//   const [campaignGoal, setCampaignGoal] = useState<number>(1);\n//   const [campaignDeadline, setCampaignDeadline] = useState<number>(1);\n//   const [isDeploying, setIsDeploying] = useState(false);\n\n//   const handleDeployContract = async () => {\n//     setIsDeploying(true);\n//     try {\n//       const contractAddress = await deployPublishedContract({\n//         client: client,\n//         chain: baseSepolia,\n//         account: account!,\n//         contractParams: { \n//           name: campaignName,\n//           description: campaignDescription,\n//           goal: campaignGoal,\n//           duration: campaignDeadline,\n//         },\n//         contractId: \"CrowdFunding\",\n//         publisher: \"0x561c8D54eD5433a229B91654B4927f043782CCF0\",\n//         version: \"1.0.3\",\n//       });\n//       alert(\"Campaign created successfully!\");\n\n//       // Trigger a refresh of campaigns in the Dashboard\n//       onCampaignCreated();\n//     } catch (err) {\n//       console.log(err);\n//     } finally {\n//       setIsDeploying(false);\n//       ismodelOpen(false);\n//     }\n//   };\n\n//   return (\n//     <div className=\"fixed inset-0 bg-black bg-opacity-75 flex justify-center items-center backdrop-blur-md\">\n//       <div className=\"bg-white p-6 rounded-lg w-1/3\">\n//         <div className=\"flex justify-between items-center mb-4\">\n//           <p className=\"text-lg font-semibold\">Create a Campaign</p>\n//           <button\n//             className=\"text-sm px-4 py-2 bg-slate-600 text-white rounded-md\"\n//             onClick={() => ismodelOpen(false)}\n//           >\n//             Close\n//           </button>\n//         </div>\n//         <input\n//           type=\"text\"\n//           placeholder=\"Campaign Name\"\n//           className=\"w-full p-2 mb-4 border\"\n//           value={campaignName}\n//           onChange={(e) => setCampaignName(e.target.value)}\n//         />\n//         <input\n//           type=\"text\"\n//           placeholder=\"Campaign Description\"\n//           className=\"w-full p-2 mb-4 border\"\n//           value={campaignDescription}\n//           onChange={(e) => setCampaignDescription(e.target.value)}\n//         />\n//         <input\n//           type=\"number\"\n//           placeholder=\"Campaign Goal\"\n//           className=\"w-full p-2 mb-4 border\"\n//           value={campaignGoal}\n//           onChange={(e) => setCampaignGoal(Number(e.target.value))}\n//         />\n//         <input\n//           type=\"number\"\n//           placeholder=\"Campaign Deadline\"\n//           className=\"w-full p-2 mb-4 border\"\n//           value={campaignDeadline}\n//           onChange={(e) => setCampaignDeadline(Number(e.target.value))}\n//         />\n//         <button\n//           className=\"px-4 py-2 bg-blue-500 text-white rounded-md\"\n//           onClick={handleDeployContract}\n//           disabled={isDeploying}\n//         >\n//           {isDeploying ? \"Creating...\" : \"Create Campaign\"}\n//         </button>\n//       </div>\n//     </div>\n//   );\n// };\nimport { CROWDFUNDING_FACTORY } from \"../../contants/contract\";\nimport { client } from \"../../client\";\nimport { tcore2 } from \"../../chains\";\nimport { getContract } from \"thirdweb\";\nimport { useActiveAccount, useReadContract } from \"thirdweb/react\";\nimport Campaign from \"../../components/Campaign\";\nimport { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\n// function Dashboard() {\n//   const account = useActiveAccount();\n//   const [campaigns, setCampaigns] = useState([]);\n//   const navigate = useNavigate();\n\n//   const contract = getContract({\n//     client: client,\n//     chain: baseSepolia,\n//     address: CROWDFUNDING_FACTORY,\n//   });\n\n//   const { data, isLoading, refetch } = useReadContract({\n//     contract,\n//     method:\n//       \"function getUserCampaigns(address _user) view returns ((address campaignAddress, address owner, string name, uint256 creationTime)[])\",\n//     params: [account?.address as string],\n//   });\n\n//   // Fetch campaigns when data is available or refetched\n//   useEffect(() => {\n//     if (data) {\n//       setCampaigns(data);\n//     }\n//   }, [data]);\n\n//   const refreshCampaigns = async () => {\n//     await refetch();\n//   };\n\n//   return (\n//     <div className=\"mx-auto max-w-7xl px-4 mt-16 sm:px-6 lg:px-8\">\n//       <div className=\"flex flex-row justify-between items-center mb-8\">\n//         <p className=\"text-4xl font-semibold\">Dashboard</p>\n//         <button\n//           className=\"px-4 py-2 bg-blue-500 text-white rounded-md\"\n//           onClick={() => navigate(\"/create-campaign\")}\n//         >\n//           Create Campaign\n//         </button>\n//       </div>\n\n//       <p className=\"text-2xl font-semibold mb-4\">Your Campaigns</p>\n\n//       <div className=\"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-6 w-full\">\n//         {isLoading ? (\n//           <p>Loading campaigns...</p>\n//         ) : campaigns.length > 0 ? (\n//           campaigns.map((campaign, index) => (\n//             <Campaign key={index} campaignAddress={campaign.campaignAddress} />\n//           ))\n//         ) : (\n//           <p>No Campaigns Found!</p>\n//         )}\n//       </div>\n//     </div>\n//   );\n// }\n\n// export default Dashboard;\n\n\nfunction Dashboard() {\n  const [filterStatus, setFilterStatus] = useState(\"all\"); // State to store filter criteria\n\n  const contract = getContract({\n    client: client,\n    chain: tcore2,\n    address: CROWDFUNDING_FACTORY,\n  });\n  const account = useActiveAccount();\n    //  const [campaigns, setCampaigns] = useState([]);\n  const navigate = useNavigate();\n\n  // const { data: campaigns, isPending } = useReadContract({\n  //   contract,\n  //   method: \"function getAllCampaigns() view returns ((address campaignAddress, address owner, string name, uint256 creationTime)[])\",\n  //   params: [],\n  // });\n    const { data:campaigns, isPending, refetch } = useReadContract({\n    contract,\n    method:\n      \"function getUserCampaigns(address _user) view returns ((address campaignAddress, address owner, string name, uint256 creationTime)[])\",\n    params: [account?.address as string],\n  });\n  const { data:status, isPending:abc } = useReadContract({\n    contract,\n    method:\n      \"function getCampaignStatus() view returns (uint8)\",\n    params: [],\n  });\n  // const { data, isPending } = useReadContract({\n  //   contract,\n  //   method:\n  //     \"function getCampaignStatus() view returns (uint8)\",\n  //   params: [],\n  // });\n\n  // Filter campaigns based on selected status\n  const filteredCampaigns =\n    campaigns &&\n    campaigns.filter((campaign) => {\n      if (filterStatus === \"all\") return true;\n      return status === parseInt(filterStatus);\n    });\n\n    return (\n      <div className=\"container mx-auto max-w-7xl px-4 mt-8 sm:px-6 lg:px-8\">\n        <div className=\"flex flex-col space-y-6\">\n          <div className=\"flex flex-row justify-between items-center\">\n            <h1 className=\"text-black-700 text-2xl font-medium\">Dashboard</h1>\n            <button\n              className=\"px-4 py-2 bg-blue-500 text-white rounded-md\"\n              onClick={() => navigate(\"/create-campaign\")}\n            >\n              Create Campaign\n            </button>\n          </div>\n        \n          <div className=\"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-6 w-full\">\n            {!isPending && filteredCampaigns ? (\n              filteredCampaigns.length > 0 ? (\n                filteredCampaigns.map((campaign) => (\n                  <Campaign\n                    key={campaign.campaignAddress}\n                    campaignAddress={campaign.campaignAddress}\n                  />\n                ))\n              ) : (\n                <p className=\"text-gray-500\">No Campaigns Found</p>\n              )\n            ) : (\n              <p className=\"text-gray-500\">Loading...</p>\n            )}\n          </div>\n        </div>\n      </div>\n    );\n    \n}\n\nexport default Dashboard;\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/index.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n:root {\n  line-height: 1.5;\n  font-weight: 400;\n  font-synthesis: none;\n  text-rendering: optimizeLegibility;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  font-family: \"Inter\", sans-serif;\n  font-optical-sizing: auto;\n  font-style: normal;\n  font-variation-settings: \"slnt\" 0;\n}\n\n@layer base {\n  body {\n    @apply bg-white text-gray-900 dark:bg-zinc-950 dark:text-neutral-200;\n  }\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/main.tsx",
    "content": "import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { BrowserRouter } from \"react-router-dom\";  // Import BrowserRouter\nimport App from \"./App\";\nimport { ThirdwebProvider } from \"thirdweb/react\";\nimport \"./index.css\";\n\ncreateRoot(document.getElementById(\"root\")!).render(\n  <React.StrictMode>\n    <ThirdwebProvider>\n      <BrowserRouter>  {/* Wrap App in BrowserRouter */}\n        <App />\n      </BrowserRouter>\n    </ThirdwebProvider>\n  </React.StrictMode>\n);\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  darkMode: \"class\",\n  content: [\"./index.html\", \"./src/**/*.{js,ts,jsx,tsx}\"],\n  theme: {\n    extend: {},\n  },\n  plugins: [],\n};\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"DOM\", \"DOM.Iterable\", \"ESNext\"],\n    \"allowJs\": false,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": false,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\"\n  },\n  \"include\": [\"src\"],\n  \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"skipLibCheck\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/Frontend/vite.config.ts",
    "content": "import { defineConfig } from \"vite\";\nimport react from \"@vitejs/plugin-react\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [react()],\n});\n"
  },
  {
    "path": "17-Crowd-Funding-Dapp/README.md",
    "content": "# CrowdFunding DApp\n\nA decentralized crowdfunding platform built with modern web3 technologies, enabling users to create funding campaigns with multiple tiers and interact with them seamlessly.\n\n## 🚀 Features\n\n- **Campaign Creation**: Create crowdfunding campaigns with custom goals and descriptions\n- **Tier System**: Multi-tier funding structure for flexible contribution options\n- **Web3 Integration**: Full blockchain integration with wallet connectivity\n- **Responsive Design**: Modern UI with dark/light theme support\n- **Real-time Updates**: Live campaign data and funding progress\n- **Decentralized**: Powered by smart contracts on Core Testnet 2\n\n## 🛠 Tech Stack\n\n- **Frontend**: React 18 + TypeScript + Vite\n- **Styling**: Tailwind CSS\n- **Web3**: thirdweb v5 SDK\n- **Blockchain**: Core Testnet 2 (tCORE2)\n- **Smart Contracts**: Solidity with Factory Pattern\n\n## 📋 Prerequisites\n\nBefore you begin, ensure you have the following installed and configured:\n\n### Required Software\n- **Node.js** 18.0.0 or higher\n- **npm** or **yarn** package manager\n- **Git** for version control\n- **Thirdweb CLI** for smart contract deployment and management\n\n#### Install Thirdweb CLI\n```bash\nnpm install -g @thirdweb-dev/cli\n```\n\nVerify installation:\n```bash\nthirdweb --version\n```\n\n### Blockchain Setup\n- **MetaMask** wallet extension\n- **Core Testnet 2** network added to your wallet\n- **Test tokens** (tCORE2) for transactions\n\n### Third-party Services\n- **Thirdweb Account** with project setup\n- **Thirdweb Client ID** and **Secret Key**\n\n## 🌐 Network Configuration\n\nAdd Core Testnet 2 to your wallet with these parameters:\n\n```\nNetwork Name: Core Testnet 2\nChain ID: 1114\nRPC URL: https://rpc.test2.btcs.network\nCurrency Symbol: tCORE2\nBlock Explorer: https://scan.test2.btcs.network\n```\n\n## 🔧 Installation & Setup\n\n### Step 1: Clone the Repository\n\n```bash\ngit clone <your-repository-url>\ncd crowdfunding-dapp\n```\n\n### Step 2: Install Dependencies\n\n```bash\ncd Frontend\nnpm install\n\ncd Contract\nnpm install\n```\n\n### Step 3: Thirdweb Configuration\n\n#### 3.1 Create Thirdweb Account\n1. Visit [thirdweb.com](https://thirdweb.com)\n2. Sign up for a new account\n3. Verify your email address\n\n#### 3.2 Create New Project\n1. Navigate to the dashboard\n2. Click \"Create Project\"\n3. Save your **Client ID** and **Secret Key**\n\n![Thirdweb Project Creation](https://github.com/user-attachments/assets/709a2b90-4fa5-47f9-91de-acb71e08c7ca)\n\n![Client ID and Secret](https://github.com/user-attachments/assets/9cdbf85f-83a8-41c7-817d-1636341a9055)\n\n### Step 4: Smart Contract Deployment\n\n#### 4.1 Deploy Factory Contract\n```bash\nnpx thirdweb deploy -k <your-secret-key>\n```\n- Select **CrowdFundingFactory** when prompted\n- Complete the deployment process\n- Save the deployed contract address\n\n![Factory Deployment](https://github.com/user-attachments/assets/21ef6e95-760b-4fa0-bbc2-25bd93365cfb)\n\n![Deployment Success](https://github.com/user-attachments/assets/dc01fbd7-57a0-4a44-bfde-3428480478ee)\n\n#### 4.2 Publish Campaign Contract\n```bash\nnpx thirdweb publish -k <your-secret-key>\n```\n- Select **CrowdFunding** when prompted\n- Enter your Factory contract address when requested\n\n![Contract Publishing](https://github.com/user-attachments/assets/c266b2f9-a6d1-4f41-aa6c-cf13c04b93ef)\n\n![Factory Address Input](https://github.com/user-attachments/assets/f8ff0163-8e17-4f8a-b158-11680e1664d3)\n\n### Step 5: Environment Configuration\n\nCreate a `.env` file in the project root:\n\n```env\nVITE_THIRDWEB_CLIENT_ID=your_thirdweb_client_id_here\n```\n\n**Important**: Restart your development server after modifying the `.env` file.\n\n### Step 6: Contract Address Configuration\n\nUpdate the factory contract address in `src/constants/contract.tsx`:\n\n```typescript\nexport const CROWDFUNDING_FACTORY = \"0xYourDeployedFactoryAddress\";\n```\n\n## 🚀 Running the Application\n\n### Development Server\n```bash\nnpm run dev\n```\nAccess the application at `http://localhost:5173`\n\n### Production Build\n```bash\nnpm run build\nnpm run preview\n```\n\n## 📁 Project Structure\n\n```\nsrc/\n├── client.ts                    # Thirdweb client configuration\n├── chains.ts                    # Custom Core Testnet 2 chain config\n├── constants/\n│   └── contract.tsx            # Contract addresses and ABIs\n├── components/\n│   ├── CreateCampaign.tsx      # Campaign creation interface\n│   ├── Campaign.tsx            # Campaign listing component\n│   ├── TierCard.tsx            # Funding tier display\n│   └── Navbar.tsx              # Navigation with wallet connect\n└── Campaign/\n    └── [campaignAddress]/\n        └── Page.tsx            # Individual campaign details\n```\n\n### Key Components Explained\n\n#### `client.ts`\nInitializes the thirdweb client using your environment variables.\n\n#### `chains.ts`\nDefines the Core Testnet 2 blockchain configuration for the application.\n\n#### `CreateCampaign.tsx`\nHandles the campaign creation workflow, interfacing with the factory contract's `createCampaign` function.\n\n#### `Campaign.tsx`\nDisplays a list of all campaigns with essential information and navigation.\n\n#### `TierCard.tsx`\nShows individual funding tiers with options to contribute or remove funds.\n\n#### `Navbar.tsx`\nProvides wallet connectivity and theme switching functionality.\n\n## 🔗 Smart Contract Integration\n\n### Factory Contract\n- **Purpose**: Deploys and manages campaign contracts\n- **Key Functions**: \n  - `createCampaign()`: Creates new campaign instances\n  - `getCampaigns()`: Retrieves all campaign addresses\n\n### Campaign Contract\n- **Purpose**: Manages individual campaign logic\n- **Key Functions**:\n  - `fund()`: Accept contributions to tiers\n  - `withdraw()`: Campaign owner withdrawals\n  - `getTiers()`: Retrieve funding tiers\n\n## 🎨 UI/UX Features\n\n- **Responsive Design**: Works seamlessly across desktop and mobile devices\n- **Dark/Light Mode**: Toggle between themes for user preference\n- **Real-time Data**: Live updates of campaign progress and blockchain state\n- **Wallet Integration**: Seamless MetaMask connection and transaction handling\n- **Loading States**: User-friendly feedback during blockchain operations\n\n## 🔍 Troubleshooting\n\n### Common Issues\n\n**Thirdweb CLI Issues**\n- Ensure you have the latest version: `npm update -g @thirdweb-dev/cli`\n- Check your Node.js version is 18.0.0 or higher\n- Run `thirdweb login` to authenticate if needed\n\n**Environment Variables Not Loading**\n- Ensure your `.env` file is in the project root\n- Restart the development server after changes\n- Verify variable names start with `VITE_`\n\n**Contract Interaction Failures**\n- Confirm you're connected to Core Testnet 2\n- Check your wallet has sufficient tCORE2 tokens\n- Verify contract addresses are correctly configured\n\n**MetaMask Connection Issues**\n- Clear browser cache and cookies\n- Reset MetaMask account if necessary\n- Ensure Core Testnet 2 is properly added to your wallet\n\n### Getting Help\n\nIf you encounter issues:\n1. Check the browser console for detailed error messages\n2. Verify all prerequisites are properly installed\n3. Ensure your wallet is connected to the correct network\n4. Review the transaction history on the Core Testnet 2 explorer\n\n## 🔗 Useful Links\n\n- [Core Testnet 2 Explorer](https://scan.test2.btcs.network)\n- [Thirdweb Documentation](https://portal.thirdweb.com)\n- [Thirdweb CLI Documentation](https://portal.thirdweb.com/cli)\n- [React Documentation](https://react.dev)\n- [Vite Documentation](https://vitejs.dev)\n- [Tailwind CSS Documentation](https://tailwindcss.com)\n\n---\n\n**Note**: This is a testnet application. Do not use real funds or deploy to mainnet without proper security audits and testing.\n"
  },
  {
    "path": "README.md",
    "content": "# Building on Core\n\nWelcome to the Building on Core tutorial repository! This repository is designed to provide developers with ready-to-use boilerplates and comprehensive guidebooks for building various dApps on the Core blockchain.\n\n## Overview\n\nIn this repository, you will find a variety of boilerplates tailored for different use cases, along with detailed guidebooks to help you get started with developing, deploying, and managing your dApps on Core.\n\n## Organization\n\n- **[Simple Storage Full Stack Dapp](./01-Simple%20Storage%20Full%20Stack%20Dapp/README.md):** boilerplate for deploying a simple smart contract on the Core blockchain and integrating frontend to read/write data from/to the smart contracts.\n\n- **[Basic Staking Full Stack Dapp](./02-Basic%20Staking%20Full%20Stack%20Dapp/README.md):** a simple staking dapp that uses custom ERC20 tokens for staking and rewarding users. It uses Hardhat for development, Solidity for smart contracts, and React for the frontend.\n\n- **[Decentralized Guestbook](./03-Decentralized%20Guestbook/README.md):** a decentralized guestbook application using Hardhat for development, Solidity for smart contracts, and React for the frontend.\n\n- **[Pyth Pull Oracles](./04-Pyth%20Pull%20Oracles/README.md):** integration example for using Pyth Network oracles to fetch real-time price data on the Core blockchain with smart contracts and frontend integration.\n\n- **[Hello World Dapp](./05-Hello-World-Dapp/README.md):** a beginner-friendly \"Hello World\" dApp demonstrating basic smart contract deployment and frontend interaction on Core blockchain.\n\n- **[Subgraphs on Core](./06-Subgraphs-on-Core/README.md):** guide for creating and deploying Graph Protocol subgraphs to index blockchain data from Core network with query examples.\n\n- **[NFT Minting dApp on Core](./07-NFT%20Mintng%20dApp%20on%20Core/README.md):** complete NFT minting application with smart contracts for creating and managing non-fungible tokens on Core blockchain.\n\n- **[Guess Game](./08-Guess-Game/README.md):** Guess game allows players to guess a secret number on the Core blockchain. The first player to guess the correct number is rewarded with tokens.\n\n- **[Token Swap Dapp](./09-Token-swap-Dapp/README.md):** Decentralized token swapping application allowing users to exchange different ERC20 tokens on the Core.\n\n- **[Advanced Stake Dapp](./10-Advanced-Stake-Dapp/README.md):** Staking application with advanced features including multiple staking pools, reward calculations, and comprehensive frontend dashboard.\n\n- **[Bridge Token Using Chainlink](./11-Bridge-Token-Using-Chainlink/README.md):** Cross-chain token bridging solution using Chainlink's CCIP (Cross-Chain Interoperability Protocol) for secure token transfers between blockchains.\n\n- **[Core MultiSig](./12-Core-MultiSig/README.md):** Multi-signature wallet implementation for Core blockchain enabling secure multi-party transaction approvals and asset management.\n\n- **[Core Test Token Faucet](./13-Core-Test-Token-Faucet/README.md):** Testnet token faucet application for distributing test tokens to developers and users on Core testnet networks.\n\n- **[Corelend](./14-Corelend/README.md):** Decentralized lending protocol built on Core blockchain allowing users to borrow and lend digital assets with smart contracts.\n\n- **[DNS Protocol](./15-dns-protocol/README.md):** Decentralized naming service (DNS) protocol on the CORE blockchain, inspired by Ethereum Name Service (ENS). This project lets users register human-readable `.core` domains, map them to on-chain and off-chain resources, and manage ownership through smart contracts.\n\n- **[Pump.Core](./16-Pump.Core/README.md):** MemeLaunch is a dynamic, pump.fun-inspired DApp built on the Core Blockchain, enabling users to **easily launch tokens**, **view all launched tokens**, **buy any token**, and **track token balances** in their wallets. It is **modular**, **extensible**, and ready for builders who want to expand functionality like adding a **creator dashboard**, **liquidity tools**, and more.\n"
  }
]